---
tags: game-of-chains
---
Working genesis: https://paste.c-net.org/ChoosesPinata
Getting tokens for the provider chain:
https://provider-faucet.goc.earthball.xyz/
Submitting a proposal:
https://github.com/hyphacoop/ics-testnets/blob/main/docs/Consumer-Chain-Start-Process.md#consumer-chain-start-process
Block explorers:
https://testnet.ping.pub/provider/gov
https://testnet.mintscan.io/goc-provider/proposals
# Duality sync
## Requirements for consumer chain launch
- Binary
- Build instructions
- Release/tag/commit
- Genesis file
- denom
- chain id
- funded accounts
- relayer: Hypha's Game of Chains account is `cosmos1rhvj25tutkld9p43y6w8pdfhcfzk270dc76tmn`
From Sputnik:
```
"accounts": [
{
"@type": "/cosmos.auth.v1beta1.BaseAccount",
"address": "cosmos1kxrs67wldxeg8w2wwmxr4xkdg5vve5c866dnnh",
"pub_key": null,
"account_number": "0",
"sequence": "0"
}
]
```
```
"balances": [
{
"address": "cosmos1rhvj25tutkld9p43y6w8pdfhcfzk270dc76tmn",
"coins": [
{
"denom": "uprov",
"amount": "1000000000000"
}
]
},
```
- signed_blocks_window: maybe set to 8640 or something higher than 100
- admin module? will need address(es)
```
"app_state": {
"adminmodule": { "admins": [
"cosmos10rrplkj8s8z8gvu950aq3qlvrrltxr09r2z5um"
] },
"auth": {
"accounts": [
{
```
- Proposal
- Link to a repo/site for genesis and code review (something like this: https://github.com/hyphacoop/ics-testnets/tree/main/game-of-chains-2022/neutron)
- https://github.com/hyphacoop/ics-testnets/blob/main/docs/Consumer-Chain-Start-Process.md
- https://github.com/hyphacoop/ics-testnets/tree/main/docs/proposals
- Binary hash
- Genesis file hash (without CCV state)
- Spawn time
- Initial height: content will change depending on the chain id
For chain id `neutron`:
```
"initial_height": {
"revision_height": 1
},
```
For chain id `hero-1`:
```
"initial_height": {
"revision_height": 1,
"revision_number": 1
},
```
- Coordination with other validators
- Discord
- Relayer info
Multisig creation:
## Description
This guide demonstrates how to create a multisig account using three public keys.
## Preparation
* The public key for all the multisig parties must be available.
## Procedure
1. Add the keys for each multisig party to the keyring.
```
gaiad keys add alpha-multisig --pubkey '{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"AknThsOo1Bhlye962pSlfgQymtZ/fBCX5zTXYes2aGEY"}'
- name: alpha-multisig
type: offline
address: cosmos15vglqlazd97ch6qtlqavmas8wh4wwpktvh7s3h
pubkey: '{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"AknThsOo1Bhlye962pSlfgQymtZ/fBCX5zTXYes2aGEY"}'
mnemonic: ""
```
```
gaiad keys add beta-multisig --pubkey '{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"A+9WsdM/Wv/8XIjnpwSP/fUbZZPnfH3TDg2j+cYl8are"}'
- name: beta-multisig
type: offline
address: cosmos1mn8l6wy6wz3ujkrpz5rhvedfgpyscqcwgh39a3
pubkey: '{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"A+9WsdM/Wv/8XIjnpwSP/fUbZZPnfH3TDg2j+cYl8are"}'
mnemonic: ""
```
```
gaiad keys add gamma-multisig --pubkey '{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"Avl1KpZeR9VNVmKqMnoGC+0pI4DrLxd2cwFB6tmLGoG5"}'
- name: gamma-multisig
type: offline
address: cosmos126dex6axfu84plee22fll4llm08v5ygmaxpf67
pubkey: '{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"Avl1KpZeR9VNVmKqMnoGC+0pI4DrLxd2cwFB6tmLGoG5"}'
mnemonic: ""
```
2. Create mulsitig account. The following command sets the threshold to 2, so only two keys are required to sign a transaction.
```
gaiad keys add multisig-abc --multisig alpha-multisig,beta-multisig,gamma-multisig --multisig-threshold 2
- name: multisig-abc
type: multi
address: cosmos1229h3e0hnp78gvs7jcnspjpc5pghmsyv89226g
pubkey: '{"@type":"/cosmos.crypto.multisig.LegacyAminoPubKey","threshold":2,"public_keys":[{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"Avl1KpZeR9VNVmKqMnoGC+0pI4DrLxd2cwFB6tmLGoG5"},{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"AknThsOo1Bhlye962pSlfgQymtZ/fBCX5zTXYes2aGEY"},{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"A+9WsdM/Wv/8XIjnpwSP/fUbZZPnfH3TDg2j+cYl8are"}]}'
mnemonic: ""
```
Transaction with multisig:
## Description
This guide demonstrates how to sign and broadcast a `bank send` transaction via a multisig account of three keys that has a threshold of two.
## Preparation
* A multisig account with appropriate funds must be available. In this example, the multisig account has address `cosmos1229h3e0hnp78gvs7jcnspjpc5pghmsyv89226g`.
* The private keys of enough accounts to meet the multisig threshold must be available for signing the transaction. In this example, `multisig-a` and `multisig-b` will sign the transaction.
* A synced node must be available. In this example, the remote node is `sentry-01.theta-testnet.polypore.xyz`.
* The recipient for the send transaction in this example is `cosmos1j7qzunvzx4cdqya80wvnrsmzyt9069d3gwhu5p`.
## Procedure
1. Generate JSON file for unsigned transaction: `multisig-tx.json`.
```
gaiad tx bank send cosmos1229h3e0hnp78gvs7jcnspjpc5pghmsyv89226g cosmos1j7qzunvzx4cdqya80wvnrsmzyt9069d3gwhu5p 1000uatom --generate-only --chain-id theta-testnet-001 > multisig-tx.json
```
2. Sign transaction with `multisig-a`.
```
gaiad tx sign multisig-tx.json --multisig=cosmos1229h3e0hnp78gvs7jcnspjpc5pghmsyv89226g --from multisig-a --output-document=signed-tx-a.json --chain-id theta-testnet-001 --node http://sentry-01.theta-testnet.polypore.xyz:26657
```
3. Sign transaction with `multisig-b`.
```
gaiad tx sign multisig-tx.json --multisig=cosmos1229h3e0hnp78gvs7jcnspjpc5pghmsyv89226g --from multisig-b --output-document=signed-tx-b.json --chain-id theta-testnet-001 --node http://sentry-01.theta-testnet.polypore.xyz:26657
```
4. Multisign transaction: `signed-tx.json`.
```
gaiad tx multisign multisig-tx.json multisig-abc signed-tx-a.json signed-tx-b.json --node http://sentry-01.theta-testnet.polypore.xyz:26657 --chain-id theta-testnet-001 &> signed-tx.json
```
5. Broadcast transaction.
```
gaiad tx broadcast signed-tx.json --chain-id theta-testnet-001 --node http://sentry-01.theta-testnet.polypore.xyz:26657 --gas auto --fees 250uatom
```