From bb16b99b64f85965c07d83b87d6564d0b16e35d8 Mon Sep 17 00:00:00 2001
From: Marty <149421156+ffe9f8@users.noreply.github.com>
Date: Tue, 10 Sep 2024 19:44:01 +0200
Subject: [PATCH] feat: non-evm chain integration gov proposals (#1124)
---
.../governance-proposals.mdx | 148 +++++++++++++++++-
1 file changed, 140 insertions(+), 8 deletions(-)
diff --git a/src/pages/dev/amplifier/chain-integration/governance-proposals.mdx b/src/pages/dev/amplifier/chain-integration/governance-proposals.mdx
index 5416c7be..3197d237 100644
--- a/src/pages/dev/amplifier/chain-integration/governance-proposals.mdx
+++ b/src/pages/dev/amplifier/chain-integration/governance-proposals.mdx
@@ -39,12 +39,11 @@ Examples were created with contracts on the `ethereum-sepolia` chain. Please ref
-
If you are integrating an EVM chain, you can submit a proposal to instantiate the pre-deployed voting verifier contract with the [proper instantiation parameters](https://github.com/axelarnetwork/axelar-amplifier/blob/deab56a75209a158c082cbf9b77caf500eb4ec7c/contracts/voting-verifier/src/msg.rs#L9) using its existing `code_id` (`626`):
```bash
export CODE_ID=626
-export INTERCHAIN_GOV_ADDRESS="axelar10d07y265gmmuvt4z0w9aw880jnsr700j7v9daj"
+export INTERCHAIN_GOV_ADDRESS="axelar1zlr7e5qf3sz7yf890rkh9tcnu87234k6k7ytd9"
export AXELAR_SERVICE_REGISTRY_ADDRESS="axelar1c9fkszt5lq34vvvlat3fxj6yv7ejtqapz04e97vtc9m5z9cwnamq8zjlhz"
export SOURCE_GATEWAY_ADDRESS="0xeE9E463Fd8bE9AF266e1B143C27F7D42648f4006"
export SOURCE_CHAIN_NAME="ethereum-sepolia"
@@ -69,7 +68,7 @@ axelard tx gov submit-proposal instantiate-contract $CODE_ID \
"source_chain":"'"$SOURCE_CHAIN_NAME"'",
"rewards_address":"'"$REWARDS_ADDRESS"'",
"msg_id_format":"'"$MSG_ID_FORMAT"'",
- "address_format":"'"$ADDRESS_FORMAT"'"
+ "address_format": "'"$ADDRESS_FORMAT"'"
}' \
--title="Instantiate verifier contract for $CHAIN_NAME" \
--description="Instantiate verifier contract for $CHAIN_NAME" \
@@ -85,20 +84,70 @@ axelard tx gov submit-proposal instantiate-contract $CODE_ID \
```
+
+Once the feedback period has passed, submit the proposal with the [proper instantiation parameters](https://github.com/axelarnetwork/axelar-amplifier/blob/deab56a75209a158c082cbf9b77caf500eb4ec7c/contracts/voting-verifier/src/msg.rs#L9):
+```bash
+export INTERCHAIN_GOV_ADDRESS="axelar1zlr7e5qf3sz7yf890rkh9tcnu87234k6k7ytd9"
+export AXELAR_SERVICE_REGISTRY_ADDRESS="axelar1c9fkszt5lq34vvvlat3fxj6yv7ejtqapz04e97vtc9m5z9cwnamq8zjlhz"
+export SOURCE_GATEWAY_ADDRESS="0xeE9E463Fd8bE9AF266e1B143C27F7D42648f4006"
+export SOURCE_CHAIN_NAME="ethereum-sepolia"
+export REWARDS_ADDRESS="axelar1vaj9sfzc3z0gpel90wu4ljutncutv0wuhvvwfsh30rqxq422z89qnd989l"
+export MSG_ID_FORMAT="hex_tx_hash_and_event_index"
+export ADDRESS_FORMAT="eip55"
+export CHAIN_NAME="AmplifiedChain"
+export NETWORK_GOV_ADDRESS="axelar10d07y265gmmuvt4z0w9aw880jnsr700j7v9daj"
+export RPC="http://devnet-amplifier.axelar.dev:26657"
+export CODE_SOURCE_URL="https://github.com/axelarnetwork/axelar-amplifier/tree/service-registry-v0.4.1/contracts/voting-verifier"
+export BUILDER="cosmwasm/optimizer:0.16.0"
+export CODE_HASH="4e6a37e923a48d97fa85d03911728ceee81490f4c869e64eb2bd68152bfc6448" # shasum -a 256 [path to verifier contract as wasm binary or gzip]
+```
+
+```bash
+axelard tx gov submit-proposal store-instantiate [path to verifier contract as wasm binary or gzip] \
+ '{
+ "governance_address": "'"$INTERCHAIN_GOV_ADDRESS"'",
+ "service_registry_address": "'"$AXELAR_SERVICE_REGISTRY_ADDRESS"'",
+ "service_name":"validators",
+ "source_gateway_address":"'"$SOURCE_GATEWAY_ADDRESS"'",
+ "voting_threshold":["1","1"],
+ "block_expiry":"10",
+ "confirmation_height":1,
+ "source_chain":"'"$SOURCE_CHAIN_NAME"'",
+ "rewards_address":"'"$REWARDS_ADDRESS"'",
+ "msg_id_format":"'"$MSG_ID_FORMAT"'",
+ "address_format": "'"$ADDRESS_FORMAT"'"
+ }' \
+ --title="Store and instantiate verifier contract for $CHAIN_NAME" \
+ --description="Store and instantiate verifier contract for $CHAIN_NAME" \
+ --run-as $NETWORK_GOV_ADDRESS \
+ --label "$CHAIN_NAME" \
+ --deposit=100000000uamplifier \
+ --keyring-backend test \
+ --from wallet \
+ --gas auto --gas-adjustment 1.5 --gas-prices 0.007uamplifier \
+ --chain-id=devnet-amplifier \
+ --no-admin \
+ --node $RPC \
+ --code-source-url $CODE_SOURCE_URL \
+ --builder $BUILDER \
+ --code-hash $CODE_HASH
+```
+
## Proposal to instantiate the gateway contract
-
If you are integrating an EVM chain, you can submit a proposal to instantiate the pre-deployed gateway contract with the [proper instantiation parameters](https://github.com/axelarnetwork/axelar-amplifier/blob/deab56a75209a158c082cbf9b77caf500eb4ec7c/contracts/gateway/src/msg.rs#L4) using its existing `code_id` (`616`):
```bash
export CODE_ID=616
-export VOTING_VERIFIER_ADDRESS="axelar1e6jnuljng6aljk0tjct6f0hl9tye6l0n9p067pwx2374h82dmr0s9qcqy9"
+export VOTING_VERIFIER_ADDRESS="axelar1x3960tw9cml6xsqtvzt4gmw3scauaxdd83rhs9dmlpjfjf9z9s7qjx8g0j"
export AXELAR_ROUTER_ADDRESS="axelar14jjdxqhuxk803e9pq64w4fgf385y86xxhkpzswe9crmu6vxycezst0zq8y"
+export CHAIN_NAME="AmplifiedChain"
+export RPC="http://devnet-amplifier.axelar.dev:26657"
```
```bash
@@ -121,19 +170,52 @@ axelard tx gov submit-proposal instantiate-contract $CODE_ID \
```
+
+Once the feedback period has passed, submit the proposal with the [proper instantiation parameters](https://github.com/axelarnetwork/axelar-amplifier/blob/deab56a75209a158c082cbf9b77caf500eb4ec7c/contracts/gateway/src/msg.rs#L4):
+
+```bash
+export VOTING_VERIFIER_ADDRESS="axelar1x3960tw9cml6xsqtvzt4gmw3scauaxdd83rhs9dmlpjfjf9z9s7qjx8g0j"
+export AXELAR_ROUTER_ADDRESS="axelar14jjdxqhuxk803e9pq64w4fgf385y86xxhkpzswe9crmu6vxycezst0zq8y"
+export CHAIN_NAME="AmplifiedChain"
+export RPC="http://devnet-amplifier.axelar.dev:26657"
+export CODE_SOURCE_URL="https://github.com/axelarnetwork/axelar-amplifier/tree/service-registry-v0.4.1/contracts/gateway"
+export BUILDER="cosmwasm/optimizer:0.16.0"
+export CODE_HASH="c2c627899e00ac9ee2631b22c13866078e200774e15931d565c7b9c40cab9d53" # shasum -a 256 [path to gateway contract as wasm binary or gzip]
+```
+
+```bash
+axelard tx gov submit-proposal store-instantiate [path to gateway contract as wasm binary or gzip] \
+ '{
+ "verifier_address": "'"$VOTING_VERIFIER_ADDRESS"'",
+ "router_address": "'"$AXELAR_ROUTER_ADDRESS"'"
+ }' \
+ --title="Store and instantiate gateway contract for $CHAIN_NAME" \
+ --description="Store and instantiate gateway contract for $CHAIN_NAME" \
+ --run-as $NETWORK_GOV_ADDRESS \
+ --label "$CHAIN_NAME" \
+ --deposit=100000000uamplifier \
+ --keyring-backend test \
+ --from wallet \
+ --gas auto --gas-adjustment 1.5 --gas-prices 0.007uamplifier \
+ --chain-id=devnet-amplifier \
+ --no-admin \
+ --node $RPC \
+ --code-source-url $CODE_SOURCE_URL \
+ --builder $BUILDER \
+ --code-hash $CODE_HASH
+```
+
## Proposal to instantiate the prover contract
-
If you are integrating an EVM chain, you can submit a proposal to instantiate the pre-deployed prover contract with the [proper instantiation parameters](https://github.com/axelarnetwork/axelar-amplifier/blob/deab56a75209a158c082cbf9b77caf500eb4ec7c/contracts/multisig-prover/src/msg.rs#L12) using its existing `code_id` (`618`):
```bash
export CODE_ID=618
export MULTISIG_PROVER_ADMIN_ADDRESS="axelar1zlr7e5qf3sz7yf890rkh9tcnu87234k6k7ytd9"
-MULTISIG_PROVER_GOV_ADDRESS="axelar1zlr7e5qf3sz7yf890rkh9tcnu87234k6k7ytd9"
export SOURCE_GATEWAY_ADDRESS="axelar1hdx49xndyxzrs3t5jkzart00taqysu6kmaf77waxv8regwxxpp4qcsea2w"
export MULTISIG_PROVER_ADDRESS="axelar19jxy26z0qnnspa45y5nru0l5rmy9d637z5km2ndjxthfxf5qaswst9290r"
export AXELAR_COORDINATOR_ADDRESS="axelar1m2498n4h2tskcsmssjnzswl5e6eflmqnh487ds47yxyu6y5h4zuqr9zk4g"
@@ -147,7 +229,7 @@ axelard tx gov submit-proposal instantiate-contract $CODE_ID \
"admin_address": "'"$MULTISIG_PROVER_ADMIN_ADDRESS"'",
"governance_address": "'"$MULTISIG_PROVER_GOV_ADDRESS"'",
"gateway_address": "'"$SOURCE_GATEWAY_ADDRESS"'",
- "multisig_address": "'"MULTISIG_PROVER_ADDRESS"'",
+ "multisig_address": "'"$MULTISIG_PROVER_ADDRESS"'",
"coordinator_address":"'"$AXELAR_COORDINATOR_ADDRESS"'",
"service_registry_address":"'"$AXELAR_SERVICE_REGISTRY_ADDRESS"'",
"voting_verifier_address": "'"$SOURCE_VERIFIER_GOV_ADDRESS"'",
@@ -173,6 +255,56 @@ axelard tx gov submit-proposal instantiate-contract $CODE_ID \
```
+
+Once the feedback period has passed, submit the proposal with the [proper instantiation parameters](https://github.com/axelarnetwork/axelar-amplifier/blob/deab56a75209a158c082cbf9b77caf500eb4ec7c/contracts/multisig-prover/src/msg.rs#L12):
+
+```bash
+export MULTISIG_PROVER_ADMIN_ADDRESS="axelar1zlr7e5qf3sz7yf890rkh9tcnu87234k6k7ytd9"
+export MULTISIG_PROVER_GOV_ADDRESS="axelar1zlr7e5qf3sz7yf890rkh9tcnu87234k6k7ytd9"
+export SOURCE_GATEWAY_ADDRESS="axelar1hdx49xndyxzrs3t5jkzart00taqysu6kmaf77waxv8regwxxpp4qcsea2w"
+export MULTISIG_PROVER_ADDRESS="axelar19jxy26z0qnnspa45y5nru0l5rmy9d637z5km2ndjxthfxf5qaswst9290r"
+export AXELAR_COORDINATOR_ADDRESS="axelar1m2498n4h2tskcsmssjnzswl5e6eflmqnh487ds47yxyu6y5h4zuqr9zk4g"
+export SOURCE_VERIFIER_GOV_ADDRESS="axelar1zlr7e5qf3sz7yf890rkh9tcnu87234k6k7ytd9"
+export DOMAIN_SEPARATOR="6973c72935604464b28827141b0a463af8e3487616de69c5aa0c785392c9fb9f" # Hash of chain name, admin address, and code ID. Value must be a String in hex format without `0x`.
+export CODE_SOURCE_URL="https://github.com/axelarnetwork/axelar-amplifier/tree/service-registry-v0.4.1/contracts/multisig-prover"
+export BUILDER="cosmwasm/optimizer:0.16.0"
+export CODE_HASH="bb1b731be9d900c6a8535d3c6007e15b606ea302d361007a5c50021d0adcd07f" # shasum -a 256 [path to prover contract as wasm binary or gzip]
+```
+
+```bash
+axelard tx gov submit-proposal store-instantiate [path to prover contract as wasm binary or gzip] \
+ '{
+ "admin_address": "'"$MULTISIG_PROVER_ADMIN_ADDRESS"'",
+ "governance_address": "'"$MULTISIG_PROVER_GOV_ADDRESS"'",
+ "gateway_address": "'"$SOURCE_GATEWAY_ADDRESS"'",
+ "multisig_address": "'"$MULTISIG_PROVER_ADDRESS"'",
+ "coordinator_address":"'"$AXELAR_COORDINATOR_ADDRESS"'",
+ "service_registry_address":"'"$AXELAR_SERVICE_REGISTRY_ADDRESS"'",
+ "voting_verifier_address": "'"$SOURCE_VERIFIER_GOV_ADDRESS"'",
+ "signing_threshold": ["1","1"],
+ "service_name": "validators",
+ "chain_name": "'"$CHAIN_NAME"'",
+ "verifier_set_diff_threshold": 1,
+ "encoder": "abi",
+ "key_type": "ecdsa",
+ "domain_separator": "'"$DOMAIN_SEPARATOR"'"
+ }' \
+ --title="Store and instantiate prover contract for $CHAIN_NAME" \
+ --description="Store and instantiate prover contract for $CHAIN_NAME" \
+ --run-as $NETWORK_GOV_ADDRESS \
+ --label $CHAIN_NAME \
+ --deposit=100000000uamplifier \
+ --keyring-backend test \
+ --from wallet \
+ --gas auto --gas-adjustment 1.5 --gas-prices 0.007uamplifier \
+ --chain-id=devnet-amplifier \
+ --admin="axelar1zlr7e5qf3sz7yf890rkh9tcnu87234k6k7ytd9" \
+ --node $RPC \
+ --code-source-url $CODE_SOURCE_URL \
+ --builder $BUILDER \
+ --code-hash $CODE_HASH
+```
+
## Register your chain with the router