Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs(releases): add Stellar GMP and ITS release #523

Open
wants to merge 46 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
1ea0b4d
feat(releases): add Stellar GMP and ITS release
ahramy Jan 30, 2025
1e28779
Merge branch 'main' into chore/add-stellar-release
ahramy Jan 30, 2025
473db2e
update
ahramy Feb 4, 2025
10ed0f0
updated GMP
ahramy Feb 4, 2025
25756e7
Update 2025-01-ITS-v1.0.0.md
ahramy Feb 5, 2025
bc767c9
updated
ahramy Feb 5, 2025
624268b
Update 2025-01-ITS-v1.0.0.md
ahramy Feb 5, 2025
d19e65e
Merge branch 'main' into chore/add-stellar-release
ahramy Feb 5, 2025
940ab13
Merge branch 'main' into chore/add-stellar-release
talalashraf Feb 5, 2025
bd0e433
updated
ahramy Feb 5, 2025
27047b7
Update 2025-01-STELLAR-GMP-v1.0.0.md
ahramy Feb 5, 2025
89a469d
Update 2025-01-ITS-v1.0.0.md
ahramy Feb 5, 2025
e89219e
updated
ahramy Feb 5, 2025
0578489
Update releases/cosmwasm/2025-01-STELLAR-GMP-v1.0.0.md
ahramy Feb 6, 2025
c69be06
Update releases/cosmwasm/2025-01-STELLAR-GMP-v1.0.0.md
ahramy Feb 6, 2025
3f3b020
Update releases/cosmwasm/2025-01-STELLAR-GMP-v1.0.0.md
ahramy Feb 6, 2025
3335c14
Update releases/cosmwasm/2025-01-STELLAR-GMP-v1.0.0.md
ahramy Feb 6, 2025
03d55f8
Apply suggestions from code review
ahramy Feb 6, 2025
f510de8
update
ahramy Feb 6, 2025
0e33521
updateed
ahramy Feb 7, 2025
6676244
updated
ahramy Feb 7, 2025
fa71cde
Update releases/stellar/2025-01-ITS-v1.0.0.md
ahramy Feb 7, 2025
301000b
update
ahramy Feb 7, 2025
f05ab7f
rename
ahramy Feb 7, 2025
f33bd92
Merge branch 'main' into chore/add-stellar-release
ahramy Feb 8, 2025
1cd9572
update
ahramy Feb 8, 2025
29a450f
updated
ahramy Feb 8, 2025
9eb8a86
Apply suggestions from code review
ahramy Feb 9, 2025
a0fcffc
Merge branch 'main' into chore/add-stellar-release
ahramy Feb 9, 2025
ef2fe64
update
ahramy Feb 9, 2025
7d7af00
Merge branch 'chore/add-stellar-release' of https://github.com/axelar…
ahramy Feb 9, 2025
0a4276c
Apply suggestions from code review
ahramy Feb 9, 2025
7fa2c46
updated
ahramy Feb 9, 2025
e2dcbc5
Merge branch 'chore/add-stellar-release' of https://github.com/axelar…
ahramy Feb 9, 2025
3c5c40d
Update 2025-01-ITS-v1.0.0.md
ahramy Feb 9, 2025
7075eb6
Merge branch 'main' into chore/add-stellar-release
ahramy Feb 10, 2025
2c608df
Apply suggestions from code review
ahramy Feb 10, 2025
8c5ec6b
update
ahramy Feb 10, 2025
4458a30
Merge branch 'main' into chore/add-stellar-release
ahramy Feb 10, 2025
b63627c
update
ahramy Feb 10, 2025
3602e91
Merge branch 'chore/add-stellar-release' of https://github.com/axelar…
ahramy Feb 10, 2025
90943b4
Update 2025-01-ITS-v1.0.0.md
ahramy Feb 10, 2025
1906469
Update 2025-01-Stellar-GMP-v1.0.0.md
ahramy Feb 10, 2025
59a0371
Update 2025-01-Stellar-GMP-v1.0.0.md
ahramy Feb 10, 2025
9456db5
Apply suggestions from code review
ahramy Feb 11, 2025
9ac56ae
Update 2025-01-Stellar-GMP-v1.0.0.md
ahramy Feb 11, 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
300 changes: 300 additions & 0 deletions releases/cosmwasm/2025-01-Stellar-GMP-v1.0.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,300 @@
# Stellar GMP Amplifier

| | **Owner** |
| -------------- | ------------------------------------ |
| **Created By** | @ahramy <[email protected]> |
| **Deployment** | @RiceAndMeet <[email protected]> |

| **Network** | **Deployment Status** | **Date** |
| -------------------- | --------------------- | -------- |
| **Devnet Amplifier** | - | TBD |
| **Stagenet** | - | TBD |
| **Testnet** | - | TBD |
| **Mainnet** | - | TBD |

- [Amplifier Releases](https://github.com/axelarnetwork/axelar-amplifier/releases)
- [VotingVerifier v1.1.0](https://github.com/axelarnetwork/axelar-amplifier/releases/tag/voting-verifier-v1.1.0)
- [Gateway v1.1.1](https://github.com/axelarnetwork/axelar-amplifier/releases/tag/gateway-v1.1.1)
- [MultisigProver v1.1.1](https://github.com/axelarnetwork/axelar-amplifier/releases/tag/multisig-prover-v1.1.1)
ahramy marked this conversation as resolved.
Show resolved Hide resolved
Comment on lines +15 to +18
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@milapsheth should we capture codeIDs used per network to capture the deployment version in the doc? I understand it is already done in the config, but this will help ensure some parameters to be used during cosmwasm contract deployments.

For instance, a release is needed in the wasm contracts to make stellar work, that way we should document the expected codeID to be available before we can deploy?

Alternatively, we can have a CI/CD check in place to make sure the deployed contract and the codeID mentioned are same and we do not depricated to an obsolete codeID.


## Background

1. These are the instructions for deploying Amplifier contracts for Stellar connection.

### Pre-requisites
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can divide the prereqs in different MD files as per requirement.


- Ensure that the [External Gateway](../stellar/2025-01-Stellar-GMP-v1.0.0.md) is deployed first, as `VotingVerifier` needs the `sourceGatewayAddress` which is the External Gateway address.

## Deployment

- Create an `.env` config. `CHAIN` should be set to `stellar` for mainnet, and `stellar-2024-q4` for all other networks.
ahramy marked this conversation as resolved.
Show resolved Hide resolved
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Decision behind the naming for other networks should be documented, since it differs from other chains.


```yaml
MNEMONIC=xyz
ENV=xyz
CHAIN=xyz
```

- Confirm `VotingVerifier(v1.1.0)`, `Gateway(v1.1.1)` and `MultisigProver(v1.1.1)` contracts are already stored in `$ENV.json`

```bash
VotingVerifier(v1.1.0) -> "storeCodeProposalCodeHash": "d9412440820a51bc48bf41a77ae39cfb33101ddc6562323845627ea2042bf708"
Gateway(v1.1.1) -> "storeCodeProposalCodeHash": "2ba600ee0d162184c9387eaf6fad655f1d75db548f93e379f0565cb2042d856f"
MultisigProver(v1.1.1) -> "storeCodeProposalCodeHash": "00428ef0483f103a6e1a5853c4b29466a83e5b180cc53a00d1ff9d022bc2f03a"
```

- Add config in `$ENV.json` to deploy Amplifier contracts.

| Network | `serviceName` | `votingThreshold` | `signingThreshold` | `confirmationHeight` |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we mention gov address per chain here, since it is fixed per chain?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

admin address as well

| -------------------- | ------------- | ----------------- | ------------------ | -------------------- |
| **Devnet-amplifier** | `validators` | `["6", "10"]` | `["6", "10"]` | `1` |
| **Stagenet** | `amplifier` | `["51", "100"]` | `["51", "100"]` | `1` |
| **Testnet** | `amplifier` | `["51", "100"]` | `["51", "100"]` | `1` |
| **Mainnet** | `amplifier` | `["2", "3"]` | `["2", "3"]` | `1` |

```bash
# Add under `config.axelar.contracts.VotingVerifier` based on Network
\"$CHAIN\" : {
"governanceAddress": "[governance address]",
"serviceName": "[service name]",
"sourceGatewayAddress": "[external gateway address]",
"votingThreshold": "[voting threshold]",
"blockExpiry": 10,
"confirmationHeight": 1,
"msgIdFormat": "hex_tx_hash_and_event_index",
"addressFormat": "stellar"
}

# Add under `config.axelar.contracts.MultisigProver` based on Network
\"$CHAIN\" : {
"governanceAddress": "[governance address]",
"adminAddress": "[admin address]",
"signingThreshold": "[signing threshold]",
"serviceName": "[service name]",
"verifierSetDiffThreshold": 0,
"encoder": "stellar_xdr",
"keyType": "ed25519"
}
```

### Instantiate Amplifier contracts

```bash
CONTRACT_ADMIN=[wasm contract admin address for the upgrade and migration]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add a table with the addresses per network

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

asked @eguajardo to see the CONTRACT_ADMIN is different based on network

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe these are the CONTRACT_ADMIN (Multisig Governance Key) on Gateway, VotingVerifier and MultisigProver

Stagnet: axelar12qvsvse32cjyw60ztysd3v655aj5urqeup82ky
Testnet: axelar12f2qn005d4vl03ssjq07quz6cja72w5ukuchv7
Mainnet: axelar1nctnr9x0qexemeld5w7w752rmqdsqqv92dw9am

```

1. Instantiate `VotingVerifier`

```bash
node ./cosmwasm/deploy-contract.js instantiate -c VotingVerifier --fetchCodeId --instantiate2 --admin $CONTRACT_ADMIN
```

2. Instantiate `Gateway`

```bash
node ./cosmwasm/deploy-contract.js instantiate -c Gateway --fetchCodeId --instantiate2 --admin $CONTRACT_ADMIN
```

3. Instantiate `MultisigProver`

```bash
node ./cosmwasm/deploy-contract.js instantiate -c MultisigProver --fetchCodeId --instantiate2 --admin $CONTRACT_ADMIN
Comment on lines +89 to +101
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No salt is specified in these commands and the contract admin should be picked up from the config, see here: https://www.notion.so/bright-ambert-2bd/Amplifier-SUI-Onboarding-509a654917aa4363857c7806fb98efa2?pvs=4#13dc53fccb7780cc9021e9f99c9c4936

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We will need salt in case we want to redeploy.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And to generate same address on different networks, for testnet/mainnet.


```

4. Set environment variables

- Network-specific environment variables: These variables need to be updated by the network.

```bash
VOTING_VERIFIER=$(cat ./axelar-chains-config/info/$ENV.json | jq ".axelar.contracts.VotingVerifier[\"$CHAIN\"].address" | tr -d '"')
GATEWAY=$(cat ./axelar-chains-config/info/$ENV.json | jq ".axelar.contracts.Gateway[\"$CHAIN\"].address" | tr -d '"')
MULTISIG_PROVER=$(cat ./axelar-chains-config/info/$ENV.json | jq ".axelar.contracts.MultisigProver[\"$CHAIN\"].address" | tr -d '"')
MULTISIG=$(cat ./axelar-chains-config/info/$ENV.json | jq .axelar.contracts.Multisig.address | tr -d '"')
REWARDS=$(cat ./axelar-chains-config/info/$ENV.json | jq .axelar.contracts.Rewards.address | tr -d '"')
```

- Gov proposal environment variables. Update these for each network

| Network | `DEPOSIT_VALUE` | `REWARD_AMOUNT` |
| -------------------- | --------------- | ------------------- |
| **Devnet-amplifier** | `100000000` | `1000000uamplifier` |
| **Stagenet** | `100000000` | `1000000uaxl` |
| **Testnet** | `2000000000` | `1000000uaxl` |
| **Mainnet** | `2000000000` | `1000000uaxl` |
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 AXL is not sufficient for rewards. Maybe ask Ayush/Canh what value should be used for stagnet/testnet/mainnet. Rewards need to be topped up regularly. Can be updated in a follow-up PR, but let's not forget about it, cc @RiceAndMeet

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For testnetet, stagenet and devnet-amplifier, we add 100uaxl as rewards per epoch, and use 1 AXL to kickoff the reward pool, and it has worked so far. @milapsheth if you want we can increase the initial reward pool top up to 100 AXL, which should be enough to start. For mainnet, @canhtrinh will need to calculate based on the price of the asset being added on the week of deployment, so it would be best to leave it as TBD for rewards_per_epoch and rewards amount.


```bash
RUN_AS_ACCOUNT=[wasm deployer/governance address]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do we need it? Can we ignore RUN_AS_ACCOUNT as it is picked up as governance automatically? Not sure if this is needed on devnets.

PROVER_ADMIN=[prover admin who is responsible for the contract's operations]
Comment on lines +127 to +128
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add a table

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

asked @eguajardo about the PROVER_ADMIN values

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also see the Flow contract setting by network?

DEPOSIT_VALUE=[deposit value]
REWARD_AMOUNT=[reward amount]
```
5. Register stellar gateway at the Router
```bash
node cosmwasm/submit-proposal.js execute \
-c Router \
-t "Register Gateway for stellar" \
-d "Register Gateway address for stellar at Router contract" \
--deposit $DEPOSIT_VALUE \
--runAs $RUN_AS_ACCOUNT \
--msg "{
\"register_chain\": {
\"chain\": \"$CHAIN\",
\"gateway_address\": \"$GATEWAY\",
\"msg_id_format\": \"hex_tx_hash_and_event_index\"
}
}"
```
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should add a query command to check proposal was successful.

For example:

# Verify by executing this on genesis pod
axelard q wasm contract-state smart <router-address> '{"chain_info": "sui"}' --output json | jq .

# You should see something like this:
{
  "data": {
    "name": "sui",
    "gateway": {
      "address": "axelar1hzz0s0ucrhdp6tue2lxk3c03nj6f60qy463we7lgx0wudd72ctmsee8enx"
    },
    "frozen_status": 0,
    "msg_id_format": "base58_tx_digest_and_event_index"
  }
}

6. Update ampd with the Stellar chain configuration. Verifiers should use their own Stellar RPC node for the `http_url` in production.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be best to move this step after all proposals pass, because we need to make an announcement to the verifiers to update their config.

| Network | `http_url` |
| -------------------- | -------------------------------------- |
| **Devnet-amplifier** | `https://horizon-testnet.stellar.org/` |
| **Stagenet** | `https://horizon-testnet.stellar.org/` |
| **Testnet** | `https://horizon-testnet.stellar.org/` |
| **Mainnet** | `https://horizon.stellar.org` |
```bash
[[handlers]]
type="StellarMsgVerifier"
ahramy marked this conversation as resolved.
Show resolved Hide resolved
http_url=[http url]
cosmwasm_contract="$VOTING_VERIFIER"
[[handlers]]
type="StellarVerifierSetVerifier"
http_url=[http url]
cosmwasm_contract="$VOTING_VERIFIER"
```
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should add ampd command to register here.

Also add a note to update infrastructure repo.

Look at the instructions here: https://www.notion.so/bright-ambert-2bd/Amplifier-SUI-Onboarding-509a654917aa4363857c7806fb98efa2?pvs=4#14ac53fccb77803aaf15dbdc390fe6f3

7. Register prover contract on coordinator
```bash
node cosmwasm/submit-proposal.js execute \
-c Coordinator \
-t "Register Multisig Prover for stellar" \
-d "Register Multisig Prover address for stellar at Coordinator contract" \
--deposit $DEPOSIT_VALUE \
--runAs $RUN_AS_ACCOUNT \
--msg "{
\"register_prover_contract\": {
\"chain_name\": \"$CHAIN\",
\"new_prover_addr\": \"$MULTISIG_PROVER\"
}
}"
```
8. Authorize Stellar Multisig prover on Multisig
```bash
node cosmwasm/submit-proposal.js execute \
-c Multisig \
-t "Authorize Multisig Prover for stellar" \
-d "Authorize Multisig Prover address for stellar at Multisig contract" \
--runAs $RUN_AS_ACCOUNT \
--deposit $DEPOSIT_VALUE \
--msg "{
\"authorize_callers\": {
\"contracts\": {
\"$MULTISIG_PROVER\": \"$CHAIN\"
}
}
}"
```
9. Create reward pool for voting verifier
#### Voting Verifier Reward
ahramy marked this conversation as resolved.
Show resolved Hide resolved
| Network | `epoch_duration` | `participation_threshold` | `rewards_per_epoch` |
| -------------------- | ---------------- | ------------------------- | ------------------- |
| **Devnet-amplifier** | `"100"` | `["8", "10"]` | `"100"` |
| **Stagenet** | `"100"` | `["7", "10"]` | `"100"` |
| **Testnet** | `"100"` | `["7", "10"]` | `"100"` |
| **Mainnet** | `TBD` | `TBD` | `TBD` |
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mainnet is still missing

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Those values for Mainnet is TBD, as it needs to be checked with BD or Canh. https://www.notion.so/bright-ambert-2bd/Stellar-ITS-Release-doc-Review-Temp-196c53fccb77800f8865ca39c464e134?pvs=4#196c53fccb7780dd8aa8fa324a6e91e8 Should I ask BD or Canh about this value?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can ask Canh + Talal (when in doubt, ask both or whoever you think might know lol to unblock)

```bash
node cosmwasm/submit-proposal.js execute \
-c Rewards \
-t "Create pool for stellar in stellar voting verifier" \
-d "Create pool for stellar in stellar voting verifier" \
--runAs $RUN_AS_ACCOUNT \
--deposit $DEPOSIT_VALUE \
--msg "{
\"create_pool\": {
\"params\": {
\"epoch_duration\": [epoch duration],
\"participation_threshold\": [participation threshold],
\"rewards_per_epoch\": [rewards per epoch]
},
\"pool_id\": {
\"chain_name\": \"$CHAIN\",
\"contract\": \"$VOTING_VERIFIER\"
}
}
}"
```
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

query commands should be added for other proposals as well.

10. Create reward pool for multisig
#### Multisig Reward
| Network | `epoch_duration` | `participation_threshold` | `rewards_per_epoch` |
| -------------------- | ---------------- | ------------------------- | ------------------- |
| **Devnet-amplifier** | `"100"` | `["8", "10"]` | `"100"` |
| **Stagenet** | `"100"` | `["8", "10"]` | `"100"` |
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

participation threshold is off vs stagenet above. double check these values for flow on each network, you can see the values on different networks on axelarscan
https://devnet-amplifier.axelarscan.io/amplifier-rewards/flow

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I referenced values from the notion, @RiceAndMeet Could you double check those values?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These values are based off configs from SUI multisig reward pools, which has different participation threshold compare to SUI voting verifier pool.

Can change these values to match flow reward pool configs if thats the correct reference.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure why we have these misc inconsistencies. Let's use Flow as reference, since the original params were decided for that, unless there's a good reason for an exception
cc @blockchainguyy

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

| **Testnet** | `"100"` | `["7", "10"]` | `"100"` |
| **Mainnet** | `TBD` | `TBD` | `TBD` |
```bash
node cosmwasm/submit-proposal.js execute \
-c Rewards \
-t "Create pool for stellar in axelar multisig" \
-d "Create pool for stellar in axelar multisig" \
--runAs $RUN_AS_ACCOUNT \
--deposit $DEPOSIT_VALUE \
--msg "{
\"create_pool\": {
\"params\": {
\"epoch_duration\": [epoch duration],
\"participation_threshold\": [participation threshold],
\"rewards_per_epoch\": [rewards per epoch]
},
\"pool_id\": {
\"chain_name\": \"$CHAIN\",
\"contract\": \"$MULTISIG\"
}
}
}"
```
11. Add funds to reward pools from a wallet containing the reward funds `$REWARD_AMOUNT`
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

More funds need to be added later if we just start with 1 AXL

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@RiceAndMeet Could you double check this value?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I figured we can start off with 1AXL on mainnet and add more funds later once we have clarity from BD.

For testnet/stagenet, I suppose we can do start off with more , maybe 100AXL.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@RiceAndMeet Please get clarity from BD parallely, so we don't have issues later in the onboarding process

```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. Update ampd with the Stellar chain configuration.
```bash
ampd register-public-key ed25519
ampd register-chain-support "[service name]" $CHAIN
```
13. Create genesis verifier set
Note that this step can only be run once a sufficient number of verifiers have registered.
```bash
axelard tx wasm execute $MULTISIG_PROVER '"update_verifier_set"' --from $PROVER_ADMIN --gas auto --gas-adjustment 1.2
```
## Checklist
The [Stellar GMP checklist](../stellar/2025-01-GMP-v1.0.0.md) will test GMP call.
Loading