Skip to content
Merged
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
7d051b3
feat(cosmwasm): support coordinator v2
nbayindirli Aug 22, 2025
b0a740e
add deployed-contracts support
nbayindirli Aug 22, 2025
64a8381
prettier
nbayindirli Aug 22, 2025
18c022a
update README
nbayindirli Aug 22, 2025
e136c4d
store and log proposalId
nbayindirli Aug 22, 2025
fb61b6b
clean up query.js
nbayindirli Aug 25, 2025
118f7a9
remove deploymentName as key, address comments, and cleanup
nbayindirli Aug 26, 2025
27f7ece
update README
nbayindirli Aug 26, 2025
fc98955
small name change
nbayindirli Aug 26, 2025
4c713b8
include contract_admin in chain contract objects
nbayindirli Aug 26, 2025
43d66ee
Merge branch 'main' into feat/coordinator-v2
nbayindirli Aug 26, 2025
8a46fcb
address comments
nbayindirli Aug 26, 2025
ef443a7
docs(releases): update template for coordinator v2
nbayindirli Aug 26, 2025
7e4c51f
Merge branch 'main' into feat/coordinator-v2
nbayindirli Aug 26, 2025
7480f46
Merge branch 'feat/coordinator-v2' into docs/coordinator-v2
nbayindirli Aug 26, 2025
77e4bda
Merge branch 'main' into feat/coordinator-v2
nbayindirli Aug 27, 2025
a00ccd1
remove actions handled by coordinator v2
nbayindirli Aug 27, 2025
958f2c7
address comments
nbayindirli Aug 27, 2025
fd5c07f
Merge branch 'feat/coordinator-v2' into docs/coordinator-v2
nbayindirli Aug 27, 2025
6e5d665
Merge branch 'main' into feat/coordinator-v2
nbayindirli Sep 2, 2025
5d5eb69
update programHandler command to be consistent with main
nbayindirli Sep 2, 2025
c4990b7
update README
nbayindirli Sep 2, 2025
89a4aab
set instantiateOptions on addAmplifierOptions
nbayindirli Sep 3, 2025
1ecc64c
Merge branch 'feat/coordinator-v2' into docs/coordinator-v2
nbayindirli Sep 3, 2025
f904edc
also store salt to config
nbayindirli Sep 4, 2025
12143b7
add serviceRegistryAddress to verifier instantiate msg
nbayindirli Sep 4, 2025
652e6db
Merge branch 'main' into feat/coordinator-v2
nbayindirli Sep 4, 2025
12c4c1b
Merge branch 'feat/coordinator-v2' into docs/coordinator-v2
nbayindirli Sep 4, 2025
814dd93
update salt to use version number
nbayindirli Sep 4, 2025
1736858
Merge branch 'main' into docs/coordinator-v2
nbayindirli Sep 4, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
103 changes: 32 additions & 71 deletions releases/cosmwasm/EVM-CosmWasm-Release-Template.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ These are the instructions for deploying Amplifier contracts for `<ChainName>` c

### Pre-requisites

Predict the [External Gateway](../evm/path-to-GMP-release-doc) address, as `VotingVerifier` deployment requires the `sourceGatewayAddress` which is the External Gateway address.
1. Predict the [External Gateway](../evm/path-to-GMP-release-doc) address, as `VotingVerifier` deployment requires the `sourceGatewayAddress` which is the External Gateway address.

| Network | `minimumRotationDelay` | `deploymentType` | `deployer` |
| -------------------- | ---------------------- | ---------------- | -------------------------------------------- |
Expand All @@ -36,6 +36,8 @@ Predict the [External Gateway](../evm/path-to-GMP-release-doc) address, as `Voti
ts-node evm/deploy-amplifier-gateway.js -m [deploymentType] --minimumRotationDelay [minimumRotationDelay] --predictOnly
```

2. Coordinator contract must be deployed and configured in `$ENV.json`

## Deployment

- Create an `.env` config
Expand Down Expand Up @@ -113,25 +115,31 @@ MultisigProver (v1.1.1) -> "storeCodeProposalCodeHash": "00428ef0483f103a6e1a585

`CONTRACT_ADMIN` is the wasm contract admin address for contract upgrades.

1. Instantiate `VotingVerifier`

```bash
ts-node ./cosmwasm/deploy-contract.js instantiate -c VotingVerifier --fetchCodeId --instantiate2 --admin $CONTRACT_ADMIN
```
| Network | Salt |
| -------------------- | -------- |
| **Devnet-amplifier** | `v1.0.0` |
| **Stagenet** | `v1.0.0` |
| **Testnet** | `v1.0.0` |
| **Mainnet** | `v1.0.0` |

2. Instantiate `Gateway`
1. Instantiate Gateway, VotingVerifier and MultisigProver contracts via Coordinator

```bash
ts-node ./cosmwasm/deploy-contract.js instantiate -c Gateway --fetchCodeId --instantiate2 --admin $CONTRACT_ADMIN
ts-node cosmwasm/submit-proposal.js instantiate-chain-contracts \
-n $CHAIN \
-s "$SALT" \
--fetchCodeId \
-t "Instantiate contracts for $CHAIN" \
-d "Instantiate Gateway, VotingVerifier and MultisigProver contracts for $CHAIN via Coordinator"
```

3. Instantiate `MultisigProver`
2. Wait for proposal to pass and query deployed contract addresses

```bash
ts-node ./cosmwasm/deploy-contract.js instantiate -c MultisigProver --fetchCodeId --instantiate2 --admin $CONTRACT_ADMIN
ts-node cosmwasm/query.js save-deployed-contracts -n $CHAIN
```

4. Set environment variables
3. Set environment variables

- These variables are network-specific

Expand Down Expand Up @@ -159,58 +167,11 @@ REWARD_AMOUNT=[reward amount]
EPOCH_DURATION=[epoch duration according to the environment]
```

- Add a community post for the mainnet proposal. i.e: https://community.axelar.network/t/proposal-add-its-hub-to-mainnet/3227
- Add a community post for the mainnet proposal. i.e: <https://community.axelar.network/t/proposal-add-its-hub-to-mainnet/3227>

- Note: all the following governance proposals should be submitted at one time so deployment doesn't get held up while waiting for voting. [ITS proposal](../evm/EVM-ITS-Release-Template.md) should also be submitted at this time if possible.

5. Register Gateway at the Router

```bash
ts-node cosmwasm/submit-proposal.js execute \
-c Router \
-t "Register Gateway for $CHAIN" \
-d "Register Gateway address for $CHAIN at Router contract" \
--msg "{
\"register_chain\": {
\"chain\": \"$CHAIN\",
\"gateway_address\": \"$GATEWAY\",
\"msg_id_format\": \"hex_tx_hash_and_event_index\"
}
}"
```

6. Register prover contract on coordinator

```bash
ts-node cosmwasm/submit-proposal.js execute \
-c Coordinator \
-t "Register Multisig Prover for $CHAIN" \
-d "Register Multisig Prover address for $CHAIN at Coordinator contract" \
--msg "{
\"register_prover_contract\": {
\"chain_name\": \"$CHAIN\",
\"new_prover_addr\": \"$MULTISIG_PROVER\"
}
}"
```

7. Authorize `$CHAIN` Multisig Prover on Multisig

```bash
ts-node cosmwasm/submit-proposal.js execute \
-c Multisig \
-t "Authorize Multisig Prover for $CHAIN" \
-d "Authorize Multisig Prover address for $CHAIN at Multisig contract" \
--msg "{
\"authorize_callers\": {
\"contracts\": {
\"$MULTISIG_PROVER\": \"$CHAIN\"
}
}
}"
```

8. Create reward pool for voting verifier
4. Create reward pool for voting verifier

#### Rewards

Expand Down Expand Up @@ -241,7 +202,7 @@ ts-node cosmwasm/submit-proposal.js execute \
}"
```

9. Create reward pool for multisig
5. Create reward pool for multisig

```bash
ts-node cosmwasm/submit-proposal.js execute \
Expand All @@ -263,7 +224,7 @@ ts-node cosmwasm/submit-proposal.js execute \
}"
```

10. Register ITS edge contract on ITS Hub
6. Register ITS edge contract on ITS Hub

Proceed with this step only if ITS deployment on $CHAIN is confirmed. Add the following to `contracts` in the `$CHAIN` config within `ENV.json`:

Expand Down Expand Up @@ -291,25 +252,24 @@ ts-node cosmwasm/submit-proposal.js \

- Please remove this temporary config after submitting the proposal and reset contracts to an empty object.

11. Add funds to reward pools from a wallet containing the reward funds `$REWARD_AMOUNT`
7. Add funds to reward pools from a wallet containing the reward funds `$REWARD_AMOUNT`

```bash
axelard tx wasm execute $REWARDS "{ \"add_rewards\": { \"pool_id\": { \"chain_name\": \"$CHAIN\", \"contract\": \"$MULTISIG\" } } }" --amount $REWARD_AMOUNT --from $WALLET

axelard tx wasm execute $REWARDS "{ \"add_rewards\": { \"pool_id\": { \"chain_name\": \"$CHAIN\", \"contract\": \"$VOTING_VERIFIER\" } } }" --amount $REWARD_AMOUNT --from $WALLET
```

12. Confirm proposals have passed
8. Confirm proposals have passed

- Check proposals on block explorer (i.e. https://axelarscan.io/proposals)
- "Register Gateway for `$CHAIN`"
- "Register Multisig Prover for `$CHAIN`"
- "Authorize Multisig Prover for `$CHAIN`"
- Check proposals on block explorer (i.e. <https://axelarscan.io/proposals>)
- "Instantiate contracts for `$CHAIN`"
- "Create pool for `$CHAIN` in `$CHAIN` voting verifier"
- "Create pool for `$CHAIN` in axelar multisig"
- (optional) "Register `$CHAIN` on ITS Hub"

- Check Gateway registered at Router

```bash
axelard q wasm contract-state smart $ROUTER "{\"chain_info\": \"$CHAIN\"}" --output json | jq .
# You should see something like this:
Expand All @@ -326,6 +286,7 @@ axelard q wasm contract-state smart $ROUTER "{\"chain_info\": \"$CHAIN\"}" --out
```

- Check Multisig Prover authorized on Multisig

```bash
axelard q wasm contract-state smart $MULTISIG "{\"is_caller_authorized\": {\"contract_address\": \"$MULTISIG_PROVER\", \"chain_name\": \"$CHAIN\"}}" --output json | jq .
# Result should look like:
Expand All @@ -340,7 +301,7 @@ axelard q wasm contract-state smart $MULTISIG "{\"is_caller_authorized\": {\"con
ts-node cosmwasm/query.js rewards $CHAIN
```

13. Update `ampd` with the `$CHAIN` chain configuration. Verifiers should use their own `$CHAIN` RPC node for the `http_url` in production.
9. Update `ampd` with the `$CHAIN` chain configuration. Verifiers should use their own `$CHAIN` RPC node for the `http_url` in production.

| Network | `http_url` |
| -------------------- | ----------------- |
Expand Down Expand Up @@ -370,13 +331,13 @@ cosmwasm_contract="$VOTING_VERIFIER"
type="EvmVerifierSetVerifier"
```

14. Update `ampd` with the `$CHAIN` chain configuration.
10. Update `ampd` with the `$CHAIN` chain configuration.

```bash
ampd register-chain-support "[service name]" $CHAIN
```

15. Create genesis verifier set
11. Create genesis verifier set

Note that this step can only be run once a sufficient number of verifiers have registered.

Expand Down