Skip to content
Draft
136 changes: 136 additions & 0 deletions axelar-chains-config/info/stagenet.json
Original file line number Diff line number Diff line change
Expand Up @@ -2488,6 +2488,89 @@
"initializeArgs": {}
}
}
},
"stacks": {
"name": "Stacks",
"axelarId": "stacks",
"rpc": "https://api.testnet.hiro.so",
"tokenSymbol": "STX",
"networkType": "testnet",
"chainType": "stacks",
"finality": "6",
"decimals": 6,
"approxFinalityWaitTime": 1,
"explorer": {
"name": "Stacks Explorer",
"url": "https://explorer.hiro.so/?chain=testnet"
},
"contracts": {
"ClarityStacks": {
"address": "ST1K9DDVX1X3PZFPWCAKNYF7F4DDAVVPW89QGV2JY.clarity-stacks",
"deployer": "ST1K9DDVX1X3PZFPWCAKNYF7F4DDAVVPW89QGV2JY"
},
"GasStorage": {
"address": "ST1K9DDVX1X3PZFPWCAKNYF7F4DDAVVPW89QGV2JY.gas-storage",
"deployer": "ST1K9DDVX1X3PZFPWCAKNYF7F4DDAVVPW89QGV2JY"
},
"Traits": {
"address": "ST1K9DDVX1X3PZFPWCAKNYF7F4DDAVVPW89QGV2JY.traits",
"deployer": "ST1K9DDVX1X3PZFPWCAKNYF7F4DDAVVPW89QGV2JY"
},
"GasImpl": {
"address": "ST1K9DDVX1X3PZFPWCAKNYF7F4DDAVVPW89QGV2JY.gas-impl",
"deployer": "ST1K9DDVX1X3PZFPWCAKNYF7F4DDAVVPW89QGV2JY",
"version": "1.3.0"
},
"GatewayStorage": {
"address": "ST1K9DDVX1X3PZFPWCAKNYF7F4DDAVVPW89QGV2JY.gateway-storage",
"deployer": "ST1K9DDVX1X3PZFPWCAKNYF7F4DDAVVPW89QGV2JY"
},
"AxelarGasService": {
"address": "ST1K9DDVX1X3PZFPWCAKNYF7F4DDAVVPW89QGV2JY.gas-service",
"deployer": "ST1K9DDVX1X3PZFPWCAKNYF7F4DDAVVPW89QGV2JY"
},
"GatewayImpl": {
"address": "ST1K9DDVX1X3PZFPWCAKNYF7F4DDAVVPW89QGV2JY.gateway-impl",
"deployer": "ST1K9DDVX1X3PZFPWCAKNYF7F4DDAVVPW89QGV2JY",
"version": "1.3.0"
},
"AxelarGateway": {
"address": "ST1K9DDVX1X3PZFPWCAKNYF7F4DDAVVPW89QGV2JY.gateway",
"deployer": "ST1K9DDVX1X3PZFPWCAKNYF7F4DDAVVPW89QGV2JY",
"connectionType": "amplifier"
},
"InterchainTokenServiceStorage": {
"address": "ST1K9DDVX1X3PZFPWCAKNYF7F4DDAVVPW89QGV2JY.interchain-token-service-storage",
"deployer": "ST1K9DDVX1X3PZFPWCAKNYF7F4DDAVVPW89QGV2JY"
},
"InterchainTokenFactory": {
"address": "ST1K9DDVX1X3PZFPWCAKNYF7F4DDAVVPW89QGV2JY.interchain-token-factory",
"deployer": "ST1K9DDVX1X3PZFPWCAKNYF7F4DDAVVPW89QGV2JY"
},
"InterchainTokenService": {
"address": "ST1K9DDVX1X3PZFPWCAKNYF7F4DDAVVPW89QGV2JY.interchain-token-service",
"deployer": "ST1K9DDVX1X3PZFPWCAKNYF7F4DDAVVPW89QGV2JY"
},
"InterchainTokenFactoryImpl": {
"address": "ST1K9DDVX1X3PZFPWCAKNYF7F4DDAVVPW89QGV2JY.interchain-token-factory-impl",
"deployer": "ST1K9DDVX1X3PZFPWCAKNYF7F4DDAVVPW89QGV2JY",
"version": "1.3.0"
},
"VerifyOnchain": {
"address": "ST1K9DDVX1X3PZFPWCAKNYF7F4DDAVVPW89QGV2JY.verify-onchain",
"deployer": "ST1K9DDVX1X3PZFPWCAKNYF7F4DDAVVPW89QGV2JY"
},
"InterchainTokenServiceImpl": {
"address": "ST1K9DDVX1X3PZFPWCAKNYF7F4DDAVVPW89QGV2JY.interchain-token-service-impl",
"deployer": "ST1K9DDVX1X3PZFPWCAKNYF7F4DDAVVPW89QGV2JY",
"version": "1.3.0"
},
"NativeInterchainToken": {
"address": "ST1K9DDVX1X3PZFPWCAKNYF7F4DDAVVPW89QGV2JY.native-interchain-token",
"deployer": "ST1K9DDVX1X3PZFPWCAKNYF7F4DDAVVPW89QGV2JY"
}
},
"initialContractsDeployer": "STB2BYNQSKZ0M9RQ4FAPH046RT3N8J3PR3FW85A8"
}
},
"axelar": {
Expand Down Expand Up @@ -2753,6 +2836,10 @@
"stellar-2025-q3": {
"codeId": 58,
"address": "axelar1gd24uar2nmqwzdda7u2refv9ff64ylwmcsm9mc7fr70asjlq0l2slzn36a"
},
"stacks": {
"codeId": 58,
"address": "axelar1p2qndluxmx2c40qqn3r5yzukvchfkhct040u45s4yz0rf479stpq69y9fn"
}
},
"VotingVerifier": {
Expand Down Expand Up @@ -2974,6 +3061,55 @@
"codeId": 62,
"instantiateProposalId": "241",
"address": "axelar1sx63v929qf6n5c88uwhjsfktlrwg2a8pvnrqejnylzwm7h9mtw8s8x4wmc"
},
"ItsStacksTranslator": {
"stacks": {
"codeId": 63,
"address": "axelar1m9sppngus5sqhu5m46ztqa00f69jg4284symlacrrwxrpnr6w25q3zr60q"
},
"storeCodeProposalId": "249",
"storeCodeProposalCodeHash": "89c52311e1f76bf88523092f34d06f5bcc1d8e8f955bf423fbfee4c90ec32a53",
"lastUploadedCodeId": 63
},
"StacksVotingVerifier": {
"stacks": {
"governanceAddress": "axelar10d07y265gmmuvt4z0w9aw880jnsr700j7v9daj",
"serviceName": "amplifier",
"sourceGatewayAddress": "ST1K9DDVX1X3PZFPWCAKNYF7F4DDAVVPW89QGV2JY.gateway-storage",
"votingThreshold": [
"51",
"100"
],
"blockExpiry": 10,
"confirmationHeight": 6,
"msgIdFormat": "hex_tx_hash_and_event_index",
"addressFormat": "stacks",
"codeId": 64,
"address": "axelar16mq0q43g0d86zxgpaxag0mrjks4zvqg82ex5eez3c7madueudy7qum3axh"
},
"storeCodeProposalId": "250",
"storeCodeProposalCodeHash": "d9ba807799694d7b0564ec95e885aadb4a4aea78a37004cb118f490635cc78cb",
"lastUploadedCodeId": 64
},
"StacksMultisigProver": {
"stacks": {
"governanceAddress": "axelar10d07y265gmmuvt4z0w9aw880jnsr700j7v9daj",
"adminAddress": "axelar1l7vz4m5g92kvga050vk9ycjynywdlk4zhs07dv",
"signingThreshold": [
"51",
"100"
],
"serviceName": "amplifier",
"verifierSetDiffThreshold": 1,
"encoder": "stacks",
"keyType": "ecdsa",
"codeId": 65,
"domainSeparator": "0x79bda3786ee446a150368462571c9184dfa4ae603b89f46f172aac7b0b4f0c35",
"address": "axelar130ddhw25j98uc6h4sx5utgpj52msw7gxuv0uu8sphq50n5gsg76sz4f5cq"
},
"storeCodeProposalId": "251",
"storeCodeProposalCodeHash": "ecf6f5b4c0ad67f7d4971e87d6ceb907eaeccb6796d364e25bc32f6c5fe86814",
"lastUploadedCodeId": 65
}
},
"axelarId": "axelar",
Expand Down
4 changes: 3 additions & 1 deletion cosmwasm/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -375,12 +375,14 @@ const makeXrplVotingVerifierInstantiateMsg = (config, options, contractConfig) =

const makeVotingVerifierInstantiateMsg = (config, options, contractConfig) => {
const { chainName } = options;
const axelarGatewayContract = chainName === 'stacks' ? 'GatewayStorage' : 'AxelarGateway';

const {
axelar: { contracts },
chains: {
[chainName]: {
contracts: {
AxelarGateway: { address: gatewayAddress },
[axelarGatewayContract]: { address: gatewayAddress },
},
},
},
Expand Down
42 changes: 32 additions & 10 deletions releases/cosmwasm/2025-07-Stacks-v1.0.0.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
| **Network** | **Deployment Status** | **Date** |
|----------------------|-----------------------|------------|
| **Devnet Amplifier** | Deployed | 2025-05-09 |
| **Stagenet** | - | TBD |
| **Stagenet** | Deployed | 2025-08-15 |
| **Testnet** | - | TBD |
| **Mainnet** | - | TBD |

Expand Down Expand Up @@ -104,8 +104,8 @@ DEPOSIT_VALUE=

```bash
mkdir $ARTIFACT_PATH
wget $RELEASES_BASE_URL/releases/cosmwasm/voting-verifier/1.0.0/voting_verifier.wasm --directory-prefix=$ARTIFACT_PATH
wget $RELEASES_BASE_URL/releases/cosmwasm/multisig-prover/1.0.0/multisig_prover.wasm --directory-prefix=$ARTIFACT_PATH
wget $RELEASES_BASE_URL/releases/cosmwasm/stacks-voting-verifier/1.0.0/voting_verifier.wasm -O $ARTIFACT_PATH/stacks_voting_verifier.wasm
wget $RELEASES_BASE_URL/releases/cosmwasm/stacks-multisig-prover/1.0.0/multisig_prover.wasm -O $ARTIFACT_PATH/stacks_multisig_prover.wasm
wget $RELEASES_BASE_URL/releases/cosmwasm/its-stacks-translator/1.0.0/its_stacks_translator.wasm --directory-prefix=$ARTIFACT_PATH
```

Expand All @@ -114,11 +114,11 @@ wget $RELEASES_BASE_URL/releases/cosmwasm/its-stacks-translator/1.0.0/its_stacks
```bash
wget -O checksums.txt $RELEASES_BASE_URL/releases/cosmwasm/voting-verifier/1.0.0/checksums.txt
CHECKSUM=$(cat checksums.txt | grep voting_verifier.wasm | awk '{print $1}')
shasum -a 256 $ARTIFACT_PATH/voting_verifier.wasm | grep $CHECKSUM
shasum -a 256 $ARTIFACT_PATH/stacks_voting_verifier.wasm | grep $CHECKSUM

wget -O checksums.txt $RELEASES_BASE_URL/releases/cosmwasm/multisig-prover/1.0.0/checksums.txt
CHECKSUM=$(cat checksums.txt | grep multisig_prover.wasm | awk '{print $1}')
shasum -a 256 $ARTIFACT_PATH/multisig_prover.wasm | grep $CHECKSUM
shasum -a 256 $ARTIFACT_PATH/stacks_multisig_prover.wasm | grep $CHECKSUM

wget -O checksums.txt $RELEASES_BASE_URL/releases/cosmwasm/its-stacks-translator/1.0.0/checksums.txt
CHECKSUM=$(cat checksums.txt | grep its_stacks_translator.wasm | awk '{print $1}')
Expand All @@ -128,33 +128,55 @@ shasum -a 256 $ARTIFACT_PATH/its_stacks_translator.wasm | grep $CHECKSUM
3. Make sure your output matches with the following expected output before proceeding.

```
d9ba807799694d7b0564ec95e885aadb4a4aea78a37004cb118f490635cc78cb wasm/voting_verifier.wasm
ecf6f5b4c0ad67f7d4971e87d6ceb907eaeccb6796d364e25bc32f6c5fe86814 wasm/multisig_prover.wasm
d9ba807799694d7b0564ec95e885aadb4a4aea78a37004cb118f490635cc78cb wasm/stacks_voting_verifier.wasm
ecf6f5b4c0ad67f7d4971e87d6ceb907eaeccb6796d364e25bc32f6c5fe86814 wasm/stacks_multisig_prover.wasm
89c52311e1f76bf88523092f34d06f5bcc1d8e8f955bf423fbfee4c90ec32a53 wasm/its_stacks_translator.wasm
```

4. Store `ItsStacksTranslator`

| Network | `INIT_ADDRESSES` | `RUN_AS_ACCOUNT` | `DEPOSIT_VALUE` |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------- | --------------- |
| devnet-amplifier | `axelar10d07y265gmmuvt4z0w9aw880jnsr700j7v9daj,axelar1zlr7e5qf3sz7yf890rkh9tcnu87234k6k7ytd9` | `axelar10d07y265gmmuvt4z0w9aw880jnsr700j7v9daj` | `100000000` |
| stagenet | `axelar1pumrull7z8y5kc9q4azfrmcaxd8w0779kg6anm,axelar10d07y265gmmuvt4z0w9aw880jnsr700j7v9daj,axelar12qvsvse32cjyw60ztysd3v655aj5urqeup82ky` | `axelar10d07y265gmmuvt4z0w9aw880jnsr700j7v9daj` | `100000000` |
| testnet | `axelar1uk66drc8t9hwnddnejjp92t22plup0xd036uc2,axelar10d07y265gmmuvt4z0w9aw880jnsr700j7v9daj,axelar12f2qn005d4vl03ssjq07quz6cja72w5ukuchv7` | `axelar10d07y265gmmuvt4z0w9aw880jnsr700j7v9daj` | `2000000000` |
| mainnet | `axelar1uk66drc8t9hwnddnejjp92t22plup0xd036uc2,axelar10d07y265gmmuvt4z0w9aw880jnsr700j7v9daj,axelar1nctnr9x0qexemeld5w7w752rmqdsqqv92dw9am` | `axelar10d07y265gmmuvt4z0w9aw880jnsr700j7v9daj` | `2000000000` |

```bash
ts-node cosmwasm/submit-proposal.js store \
-c ItsStacksTranslator \
-a "$ARTIFACT_PATH/its_stacks_translator.wasm"
-t "Upload ItsStacksTranslator contract v1.0.0" \
-d "Upload ItsStacksTranslator contract v1.0.0" \
-a "$ARTIFACT_PATH" \
-r $RUN_AS_ACCOUNT \
--deposit $DEPOSIT_VALUE \
--instantiateAddresses $INIT_ADDRESSES
```

5. Store `StacksVotingVerifier`.

```bash
ts-node cosmwasm/submit-proposal.js store \
-c StacksVotingVerifier \
-a "$ARTIFACT_PATH/voting_verifier.wasm"
-t "Upload StacksVotingVerifier contract v1.0.0" \
-d "Upload StacksVotingVerifier contract v1.0.0" \
-a "$ARTIFACT_PATH" \
-r $RUN_AS_ACCOUNT \
--deposit $DEPOSIT_VALUE \
--instantiateAddresses $INIT_ADDRESSES
```

6. Store `StacksMultisigProver`.

```bash
ts-node cosmwasm/submit-proposal.js store \
-c StacksMultisigProver \
-a "$ARTIFACT_PATH/multisig_prover.wasm"
-t "Upload StacksMultisigProver contract v1.0.0" \
-d "Upload StacksMultisigProver contract v1.0.0" \
-a "$ARTIFACT_PATH" \
-r $RUN_AS_ACCOUNT \
--deposit $DEPOSIT_VALUE \
--instantiateAddresses $INIT_ADDRESSES
```

### Instantiate Amplifier contracts
Expand Down
5 changes: 2 additions & 3 deletions stacks/check-contracts.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,9 @@ const CONTRACTS_TO_CHECK = [
'traits',
'gas-impl',
'gateway-storage',
'gas-service',
'axelar-gas-service',
'gateway-impl',
'gateway',
'governance',
'axelar-gateway',
'interchain-token-service-storage',
'interchain-token-factory',
'interchain-token-service',
Expand Down