Security News
ESLint is Now Language-Agnostic: Linting JSON, Markdown, and Beyond
ESLint has added JSON and Markdown linting support with new officially-supported plugins, expanding its versatility beyond JavaScript.
@confio/relayer
Advanced tools
Typescript implementation of an IBC Relayer.
The blockchain must be based on Cosmos SDK v0.41.1+
. In particular it must have
PR 8458 merged (if you are using a fork)
in order for the relayer to work properly. ibc-setup
should work on v0.40.0+
The chain must have a large value for staking.params.historical_entries
(often set in genesis).
The default is "10000" and this should work with "1000", but no relayer will work if it is set to 0.
Ideally you are in control of the node that the relayer connects to. If not, it should be run by a known and trusted party, whom you can check the configuration with. Note that a malicious node could cause the relayer to send invalid packets and waste tokens on gas (but not create invalid state).
The indexer should be enabled (tx_index.indexer = "kv"
in config.toml
),
and all events should be indexed (index-events = []
in app.toml
).
The node must support historical queries. --pruning=nothing
will definitely work, but will use an
enormous amount of disk space. You can also trim it to 3 weeks of data with
--pruning=custom --pruning-keep-recent=362880 --pruning-keep-every=0 --pruning-interval=100
, which has been
tested. It is likely you could reduce pruning-keep-recent
to as low as, say, 3600, but that would need testing.
Refer to the specification page.
Install the latest release.
npm i -g @confio/relayer
Alternatively, install from the main
branch.
npm i -g @confio/relayer@main
NOTE: We do a manual release after completing a predefined milestone or when it feels right. No release schedule is in place yet. To utilize the latest changes, use the
main
tag during the installation.
After installation, ibc-setup
and ibc-relayer
executables are available.
Collection of commands to quickly setup a relayer and query IBC/chain data.
ibc-setup --help
to print usageReads the configuration and starts relaying packets.
ibc-relayer --help
to print usageInit the configuration
ibc-setup init --src relayer_test_1 --dest relayer_test_2
creates relayer's home directory at ~/.ibc-setup
creates app.yaml
inside relayer's home with src
, dest
and newly generated mnemonic
pulls default registry.yaml
to relayer's home
funds addresses on both sides so relayer can pay the fee while relaying packets
NOTE: Test blockchains
relayer_test_1
andrelayer_test_2
are running in the public. You do not need to start any blockchain locally to complete the quick start guide.
NOTE: Run
ibc-setup balances
to see the amount of tokens on each address.
Create ics20
channel
ibc-setup ics20
app.yaml
fileStart the relayer in the verbose mode and 10s frequency polling
ibc-relayer start -v --poll 10
Make sure wasmd
binary is installed on your system
$PATH
includes Go binaries (you may need to restart your terminal session)wasmd
:
git clone https://github.com/CosmWasm/wasmd.git
cd wasmd
git checkout v0.15.1
make install
Create a new account and fund it
wasmd keys add sender
JSON=$(jq -n --arg addr $(wasmd keys show -a sender) '{"denom":"umuon","address":$addr}')
curl -X POST --header "Content-Type: application/json" --data "$JSON" http://49.12.73.189:8001/credit
Create another account to send tokens to
wasmd keys add receiver
Send tokens
wasmd tx ibc-transfer transfer transfer <channel-id> $(wasmd keys show -a receiver) 200umuon --from $(wasmd keys show -a sender) --node http://168.119.254.205:26657 --chain-id network-1 --fees 2000umuon
<channel-id>
with the channel id obtained while configuring the relayer (2nd point)# replace `connection-id` with value of `srcConnection` property from `~/.ibc-setup/app.yaml` file
ibc-setup channels --chain relayer_test_1 --connection <connection-id>
Observe the relayer output
The relayer configuration is stored under relayer's home directory. By default, it's located at $HOME/.ibc-setup
, however, can be customized with home
option, e.g.:
# initialize the configuration at /home/user/relayer_custom_home
ibc-setup init --home /home/user/relayer_custom_home
# read the configuration from /home/user/relayer_custom_home
ibc-relayer start --home /home/user/relayer_custom_home
There are 3 files that live in the relayer's home.
registry.yaml (required)
Contains a list of available chains with corresponding information. The chains from the registry can be referenced by ibc-setup
binary or within the app.yaml
file. View an example of registry.yaml file.
app.yaml (optional)
Holds the relayer-specific options such as source or destination chains. These options can be overridden with CLI flags or environment variables.
last-queried-heights.json (optional)
Stores last queried heights for better performance on relayer startup. It's constantly overwritten with new heights when relayer is running. Simply delete this file to scan the events since forever.
Learn more about configuration.
FAQs
IBC Relayer in TypeScript
The npm package @confio/relayer receives a total of 1,564 weekly downloads. As such, @confio/relayer popularity was classified as popular.
We found that @confio/relayer demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
ESLint has added JSON and Markdown linting support with new officially-supported plugins, expanding its versatility beyond JavaScript.
Security News
Members Hub is conducting large-scale campaigns to artificially boost Discord server metrics, undermining community trust and platform integrity.
Security News
NIST has failed to meet its self-imposed deadline of clearing the NVD's backlog by the end of the fiscal year. Meanwhile, CVE's awaiting analysis have increased by 33% since June.