-
Notifications
You must be signed in to change notification settings - Fork 371
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
494 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,153 @@ | ||
#!/bin/bash | ||
|
||
# This script executes simple transfers between Namada instances locally | ||
# `make build-release` and `make build-wasm-scripts` on Namada directory in advance | ||
# Run with `namada-simple-transfers ${namada_dir}` | ||
|
||
set -e | ||
|
||
NAMADA_DIR=$1 | ||
if [ -z "${NAMADA_DIR}" ] | ||
then | ||
echo "ERROR: Namada directory should be given" | ||
exit 1 | ||
fi | ||
cd $(dirname $0) | ||
HERMES_DIR=${PWD%/e2e*} | ||
|
||
NAMADAC="${NAMADA_DIR}/target/release/namadac" | ||
NAMADAW="${NAMADA_DIR}/target/release/namadaw" | ||
DATA_DIR="${HERMES_DIR}/data" | ||
# IbcToken from `transfer/channel-0/#apfel` | ||
IBC_TOKEN="atest1d93xxw36xqckvdn9vgcxyv3jvyurqdrr89jrwvmxxcexxdnpx5cnyv3ex93kvepnxdjnqvrzucsc73" | ||
|
||
LEDGER_ADDR_A="127.0.0.1:27657" | ||
LEDGER_ADDR_B="127.0.0.1:28657" | ||
INITIAL_BALANCE=5000 | ||
|
||
function init_relayer_balance() { | ||
local suffix=$1 | ||
local ledger_addr=$2 | ||
|
||
local base_dir=${DATA_DIR}/namada-${suffix}/.namada | ||
|
||
${NAMADAC} --base-dir ${base_dir} \ | ||
transfer \ | ||
--source albert \ | ||
--target relayer \ | ||
--token nam \ | ||
--amount ${INITIAL_BALANCE} \ | ||
--node ${ledger_addr} | ||
} | ||
|
||
# ==== main ==== | ||
|
||
# Run 2 Namada chains | ||
${HERMES_DIR}/scripts/setup-namada ${NAMADA_DIR} | ||
|
||
cd ${HERMES_DIR} | ||
ids=$(grep "id" config_for_namada.toml | awk -F"'" '/^id/ {print $2}') | ||
chain_a=$(echo ${ids} | awk '{print $1}') | ||
chain_b=$(echo ${ids} | awk '{print $2}') | ||
|
||
# Initialize the balances | ||
init_relayer_balance "a" ${LEDGER_ADDR_A} | ||
init_relayer_balance "b" ${LEDGER_ADDR_B} | ||
|
||
# Create a channel | ||
cargo run --bin hermes -- --config config_for_namada.toml \ | ||
create channel \ | ||
--a-chain ${chain_a} \ | ||
--b-chain ${chain_b} \ | ||
--a-port transfer \ | ||
--b-port transfer \ | ||
--new-client-connection --yes | ||
|
||
# faucet apfel on chain_a | ||
base_dir_a=${DATA_DIR}/namada-a/.namada | ||
${NAMADAC} --base-dir ${base_dir_a} transfer \ | ||
--source albert \ | ||
--target relayer \ | ||
--token apfel \ | ||
--amount 1000 \ | ||
--signing-keys albert-key \ | ||
--node ${LEDGER_ADDR_A} | ||
|
||
# Get the receiver addresses | ||
receiver_a=$(${NAMADAW} --base-dir ${base_dir_a} address find --alias relayer | awk '{print $4}') | ||
base_dir_b=${DATA_DIR}/namada-b/.namada | ||
receiver_b=$(${NAMADAW} --base-dir ${base_dir_b} address find --alias relayer | awk '{print $4}') | ||
|
||
# transfer 100 apfel from chain_a to chain_b | ||
${NAMADAC} --base-dir ${base_dir_a} ibc-transfer \ | ||
--source relayer \ | ||
--receiver ${receiver_b} \ | ||
--token apfel \ | ||
--amount 100 \ | ||
--signing-keys relayer \ | ||
--channel-id channel-0 \ | ||
--node ${LEDGER_ADDR_A} | ||
|
||
# packet-recv | ||
cargo run --bin hermes -- --config config_for_namada.toml \ | ||
tx packet-recv \ | ||
--dst-chain ${chain_b} \ | ||
--src-chain ${chain_a} \ | ||
--src-port transfer \ | ||
--src-channel channel-0 | ||
|
||
# packet-ack | ||
cargo run --bin hermes -- --config config_for_namada.toml \ | ||
tx packet-ack \ | ||
--dst-chain ${chain_a} \ | ||
--src-chain ${chain_b} \ | ||
--src-port transfer \ | ||
--src-channel channel-0 | ||
|
||
echo "Balances on chain A" | ||
${NAMADAC} --base-dir ${base_dir_a} balance \ | ||
--owner relayer \ | ||
--node ${LEDGER_ADDR_A} | ||
|
||
echo "Balances on chain B" | ||
${NAMADAC} --base-dir ${base_dir_b} balance \ | ||
--owner relayer \ | ||
--node ${LEDGER_ADDR_B} | ||
|
||
# transfer back 50 apfel from chain_b to chain_a | ||
${NAMADAC} --base-dir ${base_dir_b} ibc-transfer \ | ||
--source relayer \ | ||
--receiver ${receiver_a} \ | ||
--token ${IBC_TOKEN} \ | ||
--amount 50 \ | ||
--signing-keys relayer \ | ||
--channel-id channel-0 \ | ||
--node ${LEDGER_ADDR_B} | ||
|
||
# packet-recv | ||
cargo run --bin hermes -- --config config_for_namada.toml \ | ||
tx packet-recv \ | ||
--dst-chain ${chain_a} \ | ||
--src-chain ${chain_b} \ | ||
--src-port transfer \ | ||
--src-channel channel-0 | ||
|
||
# packet-ack | ||
cargo run --bin hermes -- --config config_for_namada.toml \ | ||
tx packet-ack \ | ||
--dst-chain ${chain_b} \ | ||
--src-chain ${chain_a} \ | ||
--src-port transfer \ | ||
--src-channel channel-0 | ||
|
||
echo "Balances on chain A" | ||
${NAMADAC} --base-dir ${base_dir_a} balance \ | ||
--owner relayer \ | ||
--node ${LEDGER_ADDR_A} | ||
|
||
echo "Balances on chain B" | ||
${NAMADAC} --base-dir ${base_dir_b} balance \ | ||
--owner relayer \ | ||
--node ${LEDGER_ADDR_B} | ||
|
||
killall namadan |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,187 @@ | ||
#!/bin/bash | ||
|
||
# This script sets up 2 Namada chains locally | ||
# `make build-release` and `make build-wasm-scripts` on Namada directory in advance | ||
# Run with `setup-namada.sh ${namada_dir}` | ||
|
||
set -e | ||
|
||
|
||
# Get absolute path to Namada directory | ||
SCRIPT_DIR=$(cd $(dirname $0) && pwd) | ||
NAMADA_DIR=$(cd $1 && pwd) | ||
cd $SCRIPT_DIR | ||
if [ -z "${NAMADA_DIR}" ] | ||
then | ||
echo "ERROR: Namada directory should be given" | ||
exit 1 | ||
fi | ||
|
||
HERMES_DIR=${PWD%/scripts*} | ||
|
||
# edit for your environment | ||
NAMADAC="${NAMADA_DIR}/target/release/namadac" | ||
NAMADAN="${NAMADA_DIR}/target/release/namadan" | ||
NAMADAW="${NAMADA_DIR}/target/release/namadaw" | ||
BASE_GENESIS_PATH="${NAMADA_DIR}/genesis/e2e-tests-single-node.toml" | ||
CHECKSUM_PATH="${NAMADA_DIR}/wasm/checksums.json" | ||
DATA_DIR="${HERMES_DIR}/data" | ||
GENESIS_PATH_A="${DATA_DIR}/e2e-tests-single-node-a.toml" | ||
GENESIS_PATH_B="${DATA_DIR}/e2e-tests-single-node-b.toml" | ||
|
||
NET_ADDR_A="127.0.0.1:27656" | ||
NET_ADDR_B="127.0.0.1:28656" | ||
LEDGER_ADDR_A="127.0.0.1:27657" | ||
LEDGER_ADDR_B="127.0.0.1:28657" | ||
|
||
HERMES_CONFIG_TEMPLATE=" | ||
[global] | ||
log_level = 'info' | ||
[mode] | ||
[mode.clients] | ||
enabled = true | ||
refresh = true | ||
misbehaviour = true | ||
[mode.connections] | ||
enabled = false | ||
[mode.channels] | ||
enabled = false | ||
[mode.packets] | ||
enabled = true | ||
clear_interval = 10 | ||
clear_on_start = false | ||
tx_confirmation = true | ||
[telemetry] | ||
enabled = false | ||
host = '127.0.0.1' | ||
port = 3001 | ||
[[chains]] | ||
id = '_CHAIN_ID_A_' | ||
type = 'namada' | ||
rpc_addr = 'http://127.0.0.1:27657' | ||
grpc_addr = 'http://127.0.0.1:9090' | ||
event_source = { mode = 'push', url = 'ws://127.0.0.1:27657/websocket', batch_delay = '500ms' } | ||
account_prefix = '' | ||
key_name = 'relayer' | ||
store_prefix = 'ibc' | ||
gas_price = { price = 0.001, denom = 'nam' } | ||
[[chains]] | ||
id = '_CHAIN_ID_B_' | ||
type = 'namada' | ||
rpc_addr = 'http://127.0.0.1:28657' | ||
grpc_addr = 'http://127.0.0.1:9090' | ||
event_source = { mode = 'push', url = 'ws://127.0.0.1:28657/websocket', batch_delay = '500ms' } | ||
account_prefix = '' | ||
key_name = 'relayer' | ||
store_prefix = 'ibc' | ||
gas_price = { price = 0.001, denom = 'nam' } | ||
" | ||
|
||
function make_genesis() { | ||
local suffix=$1 | ||
|
||
if [ "${suffix}" == "a" ] | ||
then | ||
sed "s/epochs_per_year = .*/epochs_per_year = 31536/g" \ | ||
${BASE_GENESIS_PATH} > ${GENESIS_PATH_A} | ||
else | ||
sed -e "s/${NET_ADDR_A}/${NET_ADDR_B}/g" \ | ||
-e "s/epochs_per_year = .*/epochs_per_year = 31536/g" \ | ||
${BASE_GENESIS_PATH} > ${GENESIS_PATH_B} | ||
fi | ||
} | ||
|
||
function init_network() { | ||
local suffix=$1 | ||
local genesis_path=$2 | ||
|
||
mkdir -p ${DATA_DIR}/namada-${suffix} | ||
NAMADA_BASE_DIR=${DATA_DIR}/namada-${suffix}/.namada \ | ||
${NAMADAC} utils init-network \ | ||
--unsafe-dont-encrypt \ | ||
--genesis-path ${genesis_path} \ | ||
--chain-prefix namada-test \ | ||
--localhost \ | ||
--dont-archive \ | ||
--wasm-checksums-path ${CHECKSUM_PATH} \ | ||
| awk '$1 == "Derived" {print $4}' | ||
} | ||
|
||
function copy_wasm() { | ||
local suffix=$1 | ||
local chain_id=$2 | ||
|
||
local base_dir=${DATA_DIR}/namada-${suffix}/.namada | ||
|
||
cp ${NAMADA_DIR}/wasm/checksums.json ${base_dir}/${chain_id}/setup/validator-0/.namada/${chain_id}/wasm/ | ||
cp ${NAMADA_DIR}/wasm/*.wasm ${base_dir}/${chain_id}/setup/validator-0/.namada/${chain_id}/wasm/ | ||
} | ||
|
||
function init_relayer_acc() { | ||
local suffix=$1 | ||
local chain_id=$2 | ||
local ledger_addr=$3 | ||
|
||
local base_dir=${DATA_DIR}/namada-${suffix}/.namada | ||
local wallet_dir=${HERMES_DIR}/namada_wallet/${chain_id} | ||
|
||
cp ${base_dir}/${chain_id}/setup/other/wallet.toml ${base_dir}/${chain_id}/wallet.toml | ||
|
||
${NAMADAW} --base-dir ${base_dir} \ | ||
key gen --alias relayer --unsafe-dont-encrypt | ||
|
||
mkdir -p ${wallet_dir} | ||
cp ${base_dir}/${chain_id}/wallet.toml ${wallet_dir} | ||
} | ||
|
||
# ==== main ==== | ||
|
||
mkdir -p ${DATA_DIR} | ||
|
||
# for chain A | ||
make_genesis "a" | ||
chain_id_a=$(init_network "a" ${GENESIS_PATH_A}) | ||
|
||
copy_wasm "a" ${chain_id_a} | ||
|
||
${NAMADAN} --base-dir ${DATA_DIR}/namada-a/.namada/${chain_id_a}/setup/validator-0/.namada/ \ | ||
ledger run > ${DATA_DIR}/namada-a/namada.log 2>&1 & | ||
echo "Namada chain A's PID = $!" | ||
sleep 5 | ||
|
||
init_relayer_acc "a" ${chain_id_a} ${LEDGER_ADDR_A} | ||
|
||
# for chain B | ||
make_genesis "b" | ||
chain_id_b=$(init_network "b" ${GENESIS_PATH_B}) | ||
|
||
copy_wasm "b" ${chain_id_b} | ||
|
||
|
||
${NAMADAN} --base-dir ${DATA_DIR}/namada-b/.namada/${chain_id_b}/setup/validator-0/.namada/ \ | ||
ledger run > ${DATA_DIR}/namada-b/namada.log 2>&1 & | ||
echo "Namada chain B's PID = $!" | ||
sleep 5 | ||
|
||
init_relayer_acc "b" ${chain_id_b} ${LEDGER_ADDR_B} | ||
|
||
# for the relayer | ||
cd ${HERMES_DIR} | ||
echo "${HERMES_CONFIG_TEMPLATE}" \ | ||
| sed -e "s/_CHAIN_ID_A_/${chain_id_a}/g" -e "s/_CHAIN_ID_B_/${chain_id_b}/g" \ | ||
> ${HERMES_DIR}/config_for_namada.toml | ||
|
||
echo "2 Namada chains are running" | ||
echo "You can use Hermes with ${HERMES_DIR}/config_for_namada.toml" | ||
|
||
echo "You also want to run the following lines:" | ||
echo "export CHAIN_A_ID=${chain_id_a}" | ||
echo "export CHAIN_B_ID=${chain_id_b}" |
Oops, something went wrong.