Science Score: 54.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
    Links to: arxiv.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.1%) to scientific vocabulary
Last synced: 10 months ago · JSON representation ·

Repository

Basic Info
  • Host: GitHub
  • Owner: KunPengRen
  • License: apache-2.0
  • Language: Python
  • Default Branch: main
  • Size: 47.9 KB
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created about 2 years ago · Last pushed about 2 years ago
Metadata Files
Readme License Citation

README.md

This repository contains the evaluation tool developed as part of the paper "Analyzing the Performance of the Inter-Blockchain Communication Protocol". This paper has been published at the 53rd Annual IEEE/IFIP International Conference on Dependable Systems and Networks (DSN'23).

A full version is available online: https://arxiv.org/abs/2303.10844

The dataset generated through the experiments discussed in the paper are available online: https://drive.google.com/drive/folders/1f3t4Qf_mC2atcgpafTHk4qv9vWesjfwQ?usp=sharing

Prerequisites:

For the blockchains:

  • Go v1.17.5
  • Cosmos Hub (Gaia) v7.0.2

For the IBC relayer:

  • Rust compiler v1.6.0
  • Hermes Relayer v0.15.0 (https://github.com/informalsystems/hermes)

Those prerequisites can be installed by running the install.sh script.

Scripts:

setup_chains.sh

First, this script sets up two Cosmos Gaia blockchains with funded user accounts. Then, it uses ssh to run a set of validator nodes for each of them on remote machines. After starting the blockchains and synchronizing the nodes it establishes an unordered IBC channel between both blockchains using the Hermes Relayer.

OBS: This file needs to be modified to include the address of the remote machines used for validator nodes. The prerequisites for the blockchains must be installed in all remote machines.

Usage: ./setupchains.sh -n <NUMBEROFNODES> -a <FUNDEDACCOUNTS> -t [TIMEOUT_COMMIT]

Options:

--nodes | -n  Number of consensus nodes to run for each chain.
--accounts | -a  Number of funded accounts initialized in the source chain's genesis.
--timeout-commit | -t  Minimum block interval in seconds (default: 5 seconds).

Example: ./setup_chains.sh -n 5 -a 10 -t 5

benchmark.sh:

This script conducts a performance evaluation of cross-chain communication using the previously established IBC channel. The evaluation workload is composed of cross-chain fungible token transfers (https://github.com/cosmos/ibc/blob/main/spec/app/ics-020-fungible-token-transfer/README.md). This script must be executed in a machine together with one validator node for each blockchain. This is required to retrieve transaction data through RPC.

Usage: ./benchmark.sh -S -D -u -t -m -o

Options:

-S | --source-addr  RPC address of the source chain.
-D | --destination-addr  RPC address of the destination chain.
-u | --users  Number of users to be used for submitting transactions.
-t | --transactions  Number of transactions submitted per user.
-m | --messages  Number of cross-chain transfer messages inside each transaction (max: 100).
-o | --output-dir  Directory in which to store benchmark working files.
-w | --wait-for-blocks  [Optional] Stop waiting for transactions to complete/timeout and start analyzing data after this many empty blocks have been produced in a row (default: 5).
--tx-timeout  [Optional] Specify how many new blocks can be created before a cross-chain transfer times out (default: 25).
--transaction-analysis  [Optional] Enables analysis of transaction and IBC message sizes (slower).

OBS: --transaction-analysis is currently unavailable in favor of decreasing the overall time to complete the default benchmarking mode.

Example: ./benchmark.sh -S 'localhost:26657' -D 'localhost:36657' -u 10 -t 25 -m 20 -o 'benchmarking_test'

Outputs:

The tool generates a file called "benchmarking_report.txt" in the specified output directory. This file contains a performance report generated based on the execution of the specified workload.

Owner

  • Name: Vincent
  • Login: KunPengRen
  • Kind: user
  • Location: Singapore
  • Company: National University of Singapore

Citation (citation.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "Chervinski"
  given-names: "João Otávio"
- family-names: "Kreutz"
  given-names: "Diego"
- family-names: "Yu"
  given-names: "Jiangshan"
- family-names: "Xu"
  given-names: "Xiwei"
  
title: "IBC Performance Analysis Tool"
version: 1.0.0
date-released: 14-Apr-2023
url: "https://github.com/joaotav/ibc-benchmarking"

GitHub Events

Total
Last Year