Установка hermes Neutron , запуск validator_test !!!
Ретранслятор IBC - это автономный процесс, ответственный за ретрансляцию дейтаграмм IBC между любыми двумя цепочками. Способ, которым это делается, заключается в сканировании состояний цепочки, построении транзакций на основе этих состояний и отправке транзакций в цепочки, участвующие в сети.
переходим по ссылке и загружаем артифакт на свой сервер
https://github.com/neutron-org/neutron-contracts/blob/neutron_audit_oak_19_09_2022_fixes/artifacts/neutron_validators_test.wasm
загружаем и запускаем контракт
wget https://raw.githubusercontent.com/neutron-org/neutron-contracts/neutron_audit_oak_19_09_2022_fixes/validator_test_upload_contract.sh
chmod +x validator_test_upload_contract.sh
./validator_test_upload_contract.sh
./validator_test_upload_contract.sh /root/neutron_validators_test.wasm
пополняем баланс и сохраняем адрес контракта
curl -L "https://github.com/informalsystems/hermes/releases/download/v1.0.0/hermes-v1.0.0-x86_64-unknown-linux-gnu.tar.gz" > hermes.tar.gz && \
tar -C ./ -vxzf hermes.tar.gz && \
rm -f hermes.tar.gz && \
sudo mv ./hermes /usr/local/bin/ && \
sudo chgrp root /usr/local/bin/hermes && \
sudo chown root /usr/local/bin/hermeshermes --version
cd ~/ mkdir ~/.hermes
правим и создаем конфигурационный файл ( не забудьте указать свой контракт)
sudo tee $HOME/.hermes/config.toml > /dev/null <<EOF
# The global section has parameters that apply globally to the relayer operation.
[global]
# Specify the verbosity for the relayer logging output. Default: 'info'
# Valid options are 'error', 'warn', 'info', 'debug', 'trace'.
log_level = 'debug'
# Specify the mode to be used by the relayer. [Required]
[mode]
# Specify the client mode.
[mode.clients]
# Whether or not to enable the client workers. [Required]
enabled = true
# Whether or not to enable periodic refresh of clients. [Default: true]
# Note: Even if this is disabled, clients will be refreshed automatically if
# there is activity on a connection or channel they are involved with.
refresh = true
# Whether or not to enable misbehaviour detection for clients. [Default: false]
misbehaviour = true
# Specify the connections mode.
[mode.connections]
# Whether or not to enable the connection workers for handshake completion. [Required]
enabled = true
# Specify the channels mode.
[mode.channels]
# Whether or not to enable the channel workers for handshake completion. [Required]
enabled = true
# Specify the packets mode.
[mode.packets]
# Whether or not to enable the packet workers. [Required]
enabled = true
# Parametrize the periodic packet clearing feature.
# Interval (in number of blocks) at which pending packets
# should be eagerly cleared. A value of '0' will disable
# periodic packet clearing. [Default: 100]
clear_interval = 100
# Whether or not to clear packets on start. [Default: false]
clear_on_start = true
# Toggle the transaction confirmation mechanism.
# The tx confirmation mechanism periodically queries the `/tx_search` RPC
# endpoint to check that previously-submitted transactions
# (to any chain in this config file) have delivered successfully.
# Experimental feature. Affects telemetry if set to false.
# [Default: true]
tx_confirmation = true
# The REST section defines parameters for Hermes' built-in RESTful API.
# https://hermes.informal.systems/rest.html
[rest]
# Whether or not to enable the REST service. Default: false
enabled = true
# Specify the IPv4/6 host over which the built-in HTTP server will serve the RESTful
# API requests. Default: 127.0.0.1
host = '127.0.0.1'
# Specify the port over which the built-in HTTP server will serve the restful API
# requests. Default: 3000
port = 3000
# The telemetry section defines parameters for Hermes' built-in telemetry capabilities.
# https://hermes.informal.systems/telemetry.html
[telemetry]
# Whether or not to enable the telemetry service. Default: false
enabled = false
# Specify the IPv4/6 host over which the built-in HTTP server will serve the metrics
# gathered by the telemetry service. Default: 127.0.0.1
host = '127.0.0.1'
# Specify the port over which the built-in HTTP server will serve the metrics gathered
# by the telemetry service. Default: 3001
port = 3001
# neutron quark-1 testnet
[[chains]]
id = 'quark-1'
# TODO: Enter your node's public RPC ADDRESS (ip OR host)
rpc_addr = 'http://127.0.0.1:26657'
# TODO: Enter your node's public GRPC ADDRESS (ip OR host)
grpc_addr = 'http://127.0.0.1:9090'
# TODO: Enter your node's public websocket ADDRESS (usually equals to ws://[rpc_addr]/websocket)
websocket_addr = 'ws://127.0.0.1:26657/websocket'
rpc_timeout = '10s'
account_prefix = 'neutron'
key_name = 'neutron-ibc-relayer'
store_prefix = 'ibc'
default_gas = 5000000
max_gas = 15000000
gas_price = { price = 0.004, denom = 'untrn' }
gas_multiplier = 1.1
max_msg_num = 30
max_tx_size = 2097152
clock_drift = '20s'
max_block_time = '10s'
trusting_period = '14days'
trust_threshold = { numerator = '1', denominator = '3' }
address_type = { derivation = 'cosmos' }
# cosmos hub testnet
[[chains]]
id = 'theta-testnet-001'
rpc_addr = 'http://164.90.146.43:26657/'
grpc_addr = 'http://164.90.146.43:9090/'
websocket_addr = 'ws://164.90.146.43:26657/websocket'
rpc_timeout = '10s'
account_prefix = 'cosmos'
key_name = 'cosmoshub-ibc-relayer'
store_prefix = 'ibc'
default_gas = 100000
max_gas = 3000000
gas_price = { price = 0.0025, denom = 'uatom' }
gas_multiplier = 1.1
max_msg_num = 30
max_tx_size = 180000
clock_drift = '5s'
max_block_time = '10s'
trusting_period = '32hours'
trust_threshold = { numerator = '1', denominator = '3' }
address_type = { derivation = 'cosmos' }
# juno: comment out cosmoshub chain and uncomment block below to connect with it
[[chains]]
id = 'uni-5'
rpc_addr = 'https://juno-testnet-rpc.polkachu.com/'
grpc_addr = 'http://juno-testnet-grpc.polkachu.com:12690'
websocket_addr = 'wss://juno-testnet-rpc.polkachu.com/websocket'
rpc_timeout = '10s'
account_prefix = 'juno'
key_name = 'juno-ibc-relayer'
store_prefix = 'ibc'
default_gas = 100000
max_gas = 3000000
gas_price = { price = 0.1, denom = 'ujunox' }
gas_multiplier = 1.1
max_msg_num = 30
max_tx_size = 180000
clock_drift = '5s'
max_block_time = '10s'
trusting_period = '18days'
trust_threshold = { numerator = '1', denominator = '3' }
address_type = { derivation = 'cosmos' }
[chains.packet_filter]
policy = 'allow'
list = [
# allow relaying only for channels created by a certain contract
# TODO: fill in your INTERCHAIN_TXS_CONTRACT_ADDRESS below AFTER you run the test script (not the updload contract script,
# the tesRACT_ADDRESS below AFTER you run the test script (not the updload contract scripRACT_ADDRESS below AFTER you run the test script (not the updload contract script script) and rааestart the relayer.
# will be something like `['icacontroller-neutron14hj2tavq8fpesdwxxcu44rty3hh90vhujrvcmstl4zr3txmfvw9s5c2epq*', '*'],`
['*', '*'],
]
EOFhermes health-check
добавляем ключи в ретранслятор
export NEUTRON_MNEMONIC="mnemonic" export COSMOS_MNEMONIC="mnemonic" export JUNO_MNEMONIC="mnemonic" export NEUTRON_CHAIN_ID="quark-1" export COSMOS_CHAIN_ID="theta-testnet-001" export JUNO_CHAIN_ID="uni-5" export NEUTRON_KEY_NAME="neutron-ibc-relayer" export COSMOS_KEY_NAME="cosmoshub-ibc-relayer" export JUNO_KEY_NAME="juno-ibc-relayer" hermes keys add --chain quark-1 --mnemonic-file <(echo "$NEUTRON_MNEMONIC") --key-name neutron-ibc-relayer hermes keys add --chain theta-testnet-001 --mnemonic-file <(echo "$COSMOS_MNEMONIC") --key-name cosmoshub-ibc-relayer hermes keys add --chain uni-5 --mnemonic-file <(echo "$JUNO_MNEMONIC") --key-name juno-ibc-relayer
sudo tee /etc/systemd/system/neutron-ibc-cosmoshub-relayer.service > /dev/null <<EOF [Unit] Description=Neutron IBC CosmosHub Relayer After=network.target
[Service] User=$USER ExecStart=/usr/local/bin/hermes start Restart=on-failure RestartSec=3 LimitNOFILE=65535
[Install] WantedBy=multi-user.target EOF
создаем связь между сетями ,выбираем одну (интересует только connection_id ( в связке а)
hermes create connection --a-chain quark-1 --b-chain theta-testnet-001
hermes create connection --a-chain quark-1 --b-chain uni-5
Сохраните где-нибудь вновь созданный нейтрон `connection_id` — он необходим для запуска тестового скрипта
стоп сервис ( использовать опционально)
systemctl stop neutron-ibc-cosmoshub-relayer.service
sudo systemctl daemon-reload sudo systemctl enable neutron-ibc-cosmoshub-relayer.service sudo systemctl start neutron-ibc-cosmoshub-relayer.service && journalctl -u neutron-ibc-cosmoshub-relayer -f -o cat
sudo systemctl status neutron-ibc-cosmoshub-relayer.service
https://teletype.in/@aktiv2332/8RjCKiOOcom
wget https://raw.githubusercontent.com/neutron-org/neutron-contracts/neutron_audit_oak_19_09_2022_fixes/validator_test.sh
chmod +x validator_test.sh
./validator_test.sh <YOUR_CONNECTION_ID>
если все прошло успешно , получаем 6 хешей , заполняем форму
systemctl stop neutron-ibc-cosmoshub-relayer.service && \ systemctl disable neutron-ibc-cosmoshub-relayer.service && \ rm -rf /etc/systemd/system/neutron-ibc-cosmoshub-relayer.service && \ systemctl daemon-reload && \ cd $HOME && \ rm -rf /root/.hermes && \ rm -rf /usr/local/bin/hermes