diff --git a/.github/workflows/gentx_format.yml b/.github/workflows/gentx_format.yml new file mode 100644 index 000000000..637a79df0 --- /dev/null +++ b/.github/workflows/gentx_format.yml @@ -0,0 +1,28 @@ +name: Gentx Format +on: + push: + branches: + - main + pull_request: + branches: + - main +jobs: + verify-gentx: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-go@v2 + with: + go-version: '^1.17' + - run: go version + - name: gentx-validation + run: | + bash -x ./scripts/validate-gentxs.sh + env: + DAEMON: evmosd + CHAIN_ID: evmos_9000-2 + DENOM: aphoton + GH_URL: https://github.com/tharsis/evmos + BINARY_VERSION: v0.2.0 + PRELAUNCH_GENESIS_URL: https://raw.githubusercontent.com/tharsis/testnets/main/olympus_mons/genesis.json + GENTXS_DIR: ${{ github.workspace }}/olympus_mons/gentxs \ No newline at end of file diff --git a/.github/workflows/retrigger_workflows.yml b/.github/workflows/retrigger_workflows.yml new file mode 100644 index 000000000..3086681ad --- /dev/null +++ b/.github/workflows/retrigger_workflows.yml @@ -0,0 +1,15 @@ +name: "Re-trigger Workflows on open PRs" + +on: + push: + branches: + - main + +jobs: + retrigger-workflows-on-open-prs: + runs-on: ubuntu-latest + + steps: + - uses: vanstinator/re-run-open-prs-on-base-update@v1.2.0 + with: + github_token: ${{ secrets.GENTX }} diff --git a/README.md b/README.md index 69922c372..009a3f2ce 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,9 @@ -![cover](https://user-images.githubusercontent.com/8366960/136831207-5621f14c-1505-4ada-8b1e-13d0515709a4.png) - # Testnets -This repo contains genesis files for the Evmos Testnets. - -The latest testnet is Arsia Mons. +This repo contains genesis files for the [Evmos](https://github.com/tharsis/evmos) Testnets. -[Join the testnet](https://evmos.dev/testnet/join.html). +The latest testnet is [Olympus Mons](./olympus_mons). You can find a list of [seeds](https://docs.tendermint.com/master/tendermint-core/using-tendermint.html#seed) and [peers](https://docs.tendermint.com/master/tendermint-core/using-tendermint.html#persistent-peer) to connect to in the respective directory. -## Seeds +[Arsia Mons](./arsia_mons) is the deprecated testnet which ran from 2021-10-07 to 2021-11-17. -- c36cec90ded95d162b85f8ecd00ecd7c8849ca75@arsiamons.seed.evmos.org:26656 +For the full instructions on how to [join the testnet](https://evmos.dev/testnet/join.html), please refer to the official [documentation](https://evmos.dev). diff --git a/arsia_mons/README.md b/arsia_mons/README.md new file mode 100644 index 000000000..6593a7fc8 --- /dev/null +++ b/arsia_mons/README.md @@ -0,0 +1,20 @@ +# Arsia Mons Testnet + +![cover](https://user-images.githubusercontent.com/8366960/136831207-5621f14c-1505-4ada-8b1e-13d0515709a4.png) + +## Instructions + +Follow the instructions on the official documentation to [join the testnet](https://evmos.dev/testnet/join.html) and how to obtain tokens using the [faucet](https://evmos.dev/testnet/faucet.html). + +## Details + +- Network Chain ID: `evmos_9000-1` +- EIP155 Chain ID: `9000` +- `evmosd` version: [`v0.1.x`](https://github.com/tharsis/evmos/releases) +- Faucet: [faucet.evmos.org](https://faucet.evmos.org) +- EVM explorer: [evm.evmos.org](https://evm.evmos.org) +- Cosmos explorer: [explorer.evmos.org](https://explorer.evmos.org) + +## Seeds & Peers + +You can find seeds & peers on the [seeds.txt](./seeds.txt) and [peers.txt](./peers.txt) files, respectively. If you want to share your seed or peer, please fork this repo and and add it to the bottom of the corresponding `.txt` file. diff --git a/arsia_mons/peers.txt b/arsia_mons/peers.txt new file mode 100644 index 000000000..69510be55 --- /dev/null +++ b/arsia_mons/peers.txt @@ -0,0 +1,15 @@ +be7593d1d2cae15a574537f9107f525200824767@194.163.187.94:26656 +78605eed3018a74d9c8c3a912cd8e6d5c9a9ca4b@65.21.232.149:26726 +3bd90caf48ddd2d6b290550ecccd63348fc51da0@95.217.107.96:26658 +f8da50943569f160854ac21c9ffb46fb4ff7bc0d@144.217.252.197:26626 +1c4c38243893889a17fd3e677999f896b2b18586@95.217.35.111:26666 +0e4dec8dd2cb74277bae3a9e7f1816603e97ce60@161.97.178.48:26656 +3e7b138c766dc6da32decca8665da1afb2b6bb88@207.244.249.17:26656 +5502b008356087cb689211bb3c4285b7ce7f6571@95.217.154.12:26656 +8227d17c3cf123108c69bf671295e5fb22d9beb3@161.97.115.68:26656 +56de4d8fe7421f5a4fb6ba75b20d749be3eecf22@95.217.84.54:26656 +06e3dfce2d729250e810bd5605ad7f05f3b1fc2c@75.119.155.119:26656 +7cb1576a6ed3dbdc62bc30908ff7d7e910c5b08f@78.46.52.20:46656 +5502b008356087cb689211bb3c4285b7ce7f6571@95.217.154.12:26656 +5576b0160761fe81ccdf88e06031a01bc8643d51@195.201.108.97:24656 +13e850d14610f966de38fc2f925f6dc35c7f4bf4@176.9.60.27:26656 diff --git a/arsia_mons/seeds.txt b/arsia_mons/seeds.txt new file mode 100644 index 000000000..23650e0c3 --- /dev/null +++ b/arsia_mons/seeds.txt @@ -0,0 +1,3 @@ +c36cec90ded95d162b85f8ecd00ecd7c8849ca75@arsiamons.seed.evmos.org:26656 +3787335176bbb91bf14a67724ebe0f0940ca5afb@evmos-seed.artifact-staking.io:26656 +faa31510d9280e74e7f2e767a62023bd5c896c27@evmos-testnet.mercury-nodes.net:29447 \ No newline at end of file diff --git a/img/olympus_mons.png b/img/olympus_mons.png new file mode 100644 index 000000000..3aba48c16 Binary files /dev/null and b/img/olympus_mons.png differ diff --git a/olympus_mons/README.md b/olympus_mons/README.md new file mode 100644 index 000000000..f5626aae1 --- /dev/null +++ b/olympus_mons/README.md @@ -0,0 +1,32 @@ +# Olympus Mons Testnet + +![cover](/img/olympus_mons.png) + +## Instructions + +Follow the instructions on the official documentation to [join the testnet](https://evmos.dev/testnet/join.html) and how to obtain tokens using the [faucet](https://evmos.dev/testnet/faucet.html). + +## Details + +- Network Chain ID: `evmos_9000-2` +- EIP155 Chain ID: `9000` +- `evmosd` version: [`v0.2.x`](https://github.com/tharsis/evmos/releases) +- Faucet: [faucet.evmos.org](https://faucet.evmos.org) +- EVM explorer: [evm.evmos.org](https://evm.evmos.org) +- Cosmos explorer: [explorer.evmos.org](https://explorer.evmos.org) + +## Schedule + +### Application Period + +Submissions open on November 17, 2021 14:00 PST, participants are required to [submit gentx](./gentx.md). + +Submissions close on November 18, 2021 17:00 PST. + +### Genesis Launch + +November 19, 2021 08:00 PST. + +## Seeds & Peers + +You can find seeds & peers on the [seeds.txt](./seeds.txt) and [peers.txt](./peers.txt) files, respectively. If you want to share your seed or peer, please fork this repo and and add it to the bottom of the corresponding `.txt` file. diff --git a/olympus_mons/genesis.json b/olympus_mons/genesis.json new file mode 100644 index 000000000..8897c89bb --- /dev/null +++ b/olympus_mons/genesis.json @@ -0,0 +1,238 @@ +{ + "genesis_time": "2021-11-17T20:40:37.067401Z", + "chain_id": "evmos_9000-2", + "initial_height": "1", + "consensus_params": { + "block": { + "max_bytes": "22020096", + "max_gas": "-1", + "time_iota_ms": "1000" + }, + "evidence": { + "max_age_num_blocks": "100000", + "max_age_duration": "172800000000000", + "max_bytes": "1048576" + }, + "validator": { + "pub_key_types": [ + "ed25519" + ] + }, + "version": {} + }, + "app_hash": "", + "app_state": { + "auth": { + "params": { + "max_memo_characters": "256", + "tx_sig_limit": "7", + "tx_size_cost_per_byte": "10", + "sig_verify_cost_ed25519": "590", + "sig_verify_cost_secp256k1": "1000" + }, + "accounts": [] + }, + "authz": { + "authorization": [] + }, + "bank": { + "params": { + "send_enabled": [], + "default_send_enabled": true + }, + "balances": [], + "supply": [], + "denom_metadata": [] + }, + "capability": { + "index": "1", + "owners": [] + }, + "crisis": { + "constant_fee": { + "denom": "aphoton", + "amount": "1000" + } + }, + "distribution": { + "params": { + "community_tax": "0.020000000000000000", + "base_proposer_reward": "0.010000000000000000", + "bonus_proposer_reward": "0.040000000000000000", + "withdraw_addr_enabled": true + }, + "fee_pool": { + "community_pool": [] + }, + "delegator_withdraw_infos": [], + "previous_proposer": "", + "outstanding_rewards": [], + "validator_accumulated_commissions": [], + "validator_historical_rewards": [], + "validator_current_rewards": [], + "delegator_starting_infos": [], + "validator_slash_events": [] + }, + "evidence": { + "evidence": [] + }, + "evm": { + "accounts": [], + "params": { + "evm_denom": "aphoton", + "enable_create": true, + "enable_call": true, + "extra_eips": [], + "chain_config": { + "homestead_block": "0", + "dao_fork_block": "0", + "dao_fork_support": true, + "eip150_block": "0", + "eip150_hash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "eip155_block": "0", + "eip158_block": "0", + "byzantium_block": "0", + "constantinople_block": "0", + "petersburg_block": "0", + "istanbul_block": "0", + "muir_glacier_block": "0", + "berlin_block": "0", + "london_block": "0" + } + } + }, + "feegrant": { + "allowances": [] + }, + "feemarket": { + "params": { + "no_base_fee": true, + "base_fee_change_denominator": 8, + "elasticity_multiplier": 2, + "initial_base_fee": "1000000000", + "enable_height": "9223372036854775807" + }, + "base_fee": "0", + "block_gas": "0" + }, + "genutil": { + "gen_txs": [] + }, + "gov": { + "starting_proposal_id": "1", + "deposits": [], + "votes": [], + "proposals": [], + "deposit_params": { + "min_deposit": [ + { + "denom": "aphoton", + "amount": "10000000" + } + ], + "max_deposit_period": "172800s" + }, + "voting_params": { + "voting_period": "172800s" + }, + "tally_params": { + "quorum": "0.334000000000000000", + "threshold": "0.500000000000000000", + "veto_threshold": "0.334000000000000000" + } + }, + "ibc": { + "client_genesis": { + "clients": [], + "clients_consensus": [], + "clients_metadata": [], + "params": { + "allowed_clients": [ + "06-solomachine", + "07-tendermint" + ] + }, + "create_localhost": false, + "next_client_sequence": "0" + }, + "connection_genesis": { + "connections": [], + "client_connection_paths": [], + "next_connection_sequence": "0", + "params": { + "max_expected_time_per_block": "30000000000" + } + }, + "channel_genesis": { + "channels": [], + "acknowledgements": [], + "commitments": [], + "receipts": [], + "send_sequences": [], + "recv_sequences": [], + "ack_sequences": [], + "next_channel_sequence": "0" + } + }, + "intrarelayer": { + "params": { + "enable_intrarelayer": true, + "token_pair_voting_period": "172800s", + "enable_e_v_m_hook": true + }, + "token_pairs": [] + }, + "mint": { + "minter": { + "inflation": "0.130000000000000000", + "annual_provisions": "0.000000000000000000" + }, + "params": { + "mint_denom": "aphoton", + "inflation_rate_change": "0.130000000000000000", + "inflation_max": "0.200000000000000000", + "inflation_min": "0.070000000000000000", + "goal_bonded": "0.670000000000000000", + "blocks_per_year": "6311520" + } + }, + "params": null, + "slashing": { + "params": { + "signed_blocks_window": "100", + "min_signed_per_window": "0.500000000000000000", + "downtime_jail_duration": "600s", + "slash_fraction_double_sign": "0.050000000000000000", + "slash_fraction_downtime": "0.010000000000000000" + }, + "signing_infos": [], + "missed_blocks": [] + }, + "staking": { + "params": { + "unbonding_time": "1814400s", + "max_validators": 100, + "max_entries": 7, + "historical_entries": 10000, + "bond_denom": "aphoton" + }, + "last_total_power": "0", + "last_validator_powers": [], + "validators": [], + "delegations": [], + "unbonding_delegations": [], + "redelegations": [], + "exported": false + }, + "transfer": { + "port_id": "transfer", + "denom_traces": [], + "params": { + "send_enabled": true, + "receive_enabled": true + } + }, + "upgrade": {}, + "vesting": {} + } +} \ No newline at end of file diff --git a/olympus_mons/gentx.md b/olympus_mons/gentx.md new file mode 100644 index 000000000..c817d59dd --- /dev/null +++ b/olympus_mons/gentx.md @@ -0,0 +1,80 @@ +# Evmos Incentivized Testnet + +Thank you for becoming a genesis validator on Evmos! This guide will provide instructions on setting up a node, submitting a gentx, and other tasks needed to participate in the launch of the Evmos Olympus Mons incentivized testnet. + +A `gentx` does three things: + +- Registers the validator account you created as a validator operator account (i.e. the account that controls the validator). +- Self-delegates the provided amount of staking tokens. +- Links the operator account with a Tendermint node pubkey that will be used for signing blocks. If no `--pubkey` flag is provided, it defaults to the local node pubkey created via the `evmosd init` command. + +## Setup + +Software: + +- Go version: [v1.17+](https://golang.org/dl/) +- Evmos version: [v0.2.x](https://github.com/tharsis/evmos/releases) + +To verify that Go is installed: + +```sh +go version +# Should return go version go1.17 linux/amd64 +``` + +## Instructions (Until November 19, 2021 12:00 PST) + +These instructions are written targeting an Ubuntu 20.04 system. Relevant changes to commands should be made depending on the OS/architecture you are running on. + +1. Install `evmosd` + + ```bash + git clone https://github.com/tharsis/evmos + cd evmos && git checkout tags/v0.2.x -b + make install + ``` + + Make sure to checkout to some `v0.2.x` tag. + + Verify that everything is OK. If you get something *like* the following, you've successfully installed Evmos on your system. + + ```sh + evmosd version --long + + name: evmos + server_name: evmosd + version: '"0.1.3"' + commit: 7ad7715c59ec38fd19c06de54d03a982afebf961 + build_tags: netgo,ledger + go: go version go1.17 darwin/amd64 + ``` + +2. Initialize the `evmosd` directories and create the local file with the correct chain-id + + ```bash + evmosd init --chain-id=evmos_9000-2 + ``` + +3. Create a local key pair in the keybase + + ```bash + evmosd keys add + ``` + + Make sure to keep mnemonic seed which will be used to receive rewards at the time of mainnet launch. + +4. Add the account to your local genesis file with a given amount and key you just created. + + ```bash + evmosd add-genesis-account $(evmosd keys show -a) 1000000000000aphoton + ``` + + Make sure to use `aphoton` denom, not `photon`. + +5. Create the gentx + + ```bash + evmosd gentx 1000000000000aphoton --commission-rate=0.1 --commission-max-rate=1 --commission-max-change-rate=0.1 --pubkey $(evmosd tendermint show-validator) --chain-id=evmos_9000-2 + ``` + +6. Create Pull Request to this repository ([evmos/gentxs](./gentxs)) with the file `.json`. diff --git a/olympus_mons/gentxs/.gitkeep b/olympus_mons/gentxs/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/olympus_mons/peers.txt b/olympus_mons/peers.txt new file mode 100644 index 000000000..16989b99a --- /dev/null +++ b/olympus_mons/peers.txt @@ -0,0 +1,17 @@ +78605eed3018a74d9c8c3a912cd8e6d5c9a9ca4b@65.21.232.149:26726 +3bd90caf48ddd2d6b290550ecccd63348fc51da0@95.217.107.96:26658 +f8da50943569f160854ac21c9ffb46fb4ff7bc0d@144.217.252.197:26626 +1c4c38243893889a17fd3e677999f896b2b18586@95.217.35.111:26666 +0e4dec8dd2cb74277bae3a9e7f1816603e97ce60@161.97.178.48:26656 +3e7b138c766dc6da32decca8665da1afb2b6bb88@207.244.249.17:26656 +5502b008356087cb689211bb3c4285b7ce7f6571@95.217.154.12:26656 +8227d17c3cf123108c69bf671295e5fb22d9beb3@161.97.115.68:26656 +56de4d8fe7421f5a4fb6ba75b20d749be3eecf22@95.217.84.54:26656 +06e3dfce2d729250e810bd5605ad7f05f3b1fc2c@75.119.155.119:26656 +7cb1576a6ed3dbdc62bc30908ff7d7e910c5b08f@78.46.52.20:46656 +5502b008356087cb689211bb3c4285b7ce7f6571@95.217.154.12:26656 +5576b0160761fe81ccdf88e06031a01bc8643d51@195.201.108.97:24656 +13e850d14610f966de38fc2f925f6dc35c7f4bf4@176.9.60.27:26656 +38eb4984f89899a5d8d1f04a79b356f15681bb78@18.169.155.159:26656 +59c4351009223b3652674bd5ee4324926a5a11aa@51.15.133.26:26656 +3a5a9022c8aa2214a7af26ebbfac49b77e34e5c5@65.108.1.46:26656 diff --git a/olympus_mons/seeds.txt b/olympus_mons/seeds.txt new file mode 100644 index 000000000..23650e0c3 --- /dev/null +++ b/olympus_mons/seeds.txt @@ -0,0 +1,3 @@ +c36cec90ded95d162b85f8ecd00ecd7c8849ca75@arsiamons.seed.evmos.org:26656 +3787335176bbb91bf14a67724ebe0f0940ca5afb@evmos-seed.artifact-staking.io:26656 +faa31510d9280e74e7f2e767a62023bd5c896c27@evmos-testnet.mercury-nodes.net:29447 \ No newline at end of file diff --git a/scripts/validate-gentxs.sh b/scripts/validate-gentxs.sh new file mode 100644 index 000000000..72efb4e16 --- /dev/null +++ b/scripts/validate-gentxs.sh @@ -0,0 +1,117 @@ +#!/bin/sh +EVMOS_HOME="/tmp/evmosd$(date +%s)" +RANDOM_KEY="randomevmosvalidatorkey" +# CHAIN_ID=evmos_9000-2 +# DENOM=aphoton +MAXBOND=50000000000000 # 500 Million PHOTON + +# GENTX_FILE=$(find ./$CHAIN_ID/gentxs -iname "*.json") +GENTX_FILE=$(find $GENTXS_DIR -iname "*.json") +LEN_GENTX=$(echo ${#GENTX_FILE}) + +# Gentx Start date +start="2021-11-17 22:00:00Z" +# Compute the seconds since epoch for start date +stTime=$(date --date="$start" +%s) + +# Gentx End date +end="2021-11-19 20:00:00Z" +# Compute the seconds since epoch for end date +endTime=$(date --date="$end" +%s) + +# Current date +current=$(date +%Y-%m-%d\ %H:%M:%S) +# Compute the seconds since epoch for current date +curTime=$(date --date="$current" +%s) + +if [[ $curTime < $stTime ]]; then + echo "start=$stTime:curent=$curTime:endTime=$endTime" + echo "Gentx submission is not open yet. Please close the PR and raise a new PR after 04-June-2021 23:59:59" + exit 0 +else + if [[ $curTime > $endTime ]]; then + echo "start=$stTime:curent=$curTime:endTime=$endTime" + echo "Gentx submission is closed" + exit 0 + else + echo "Gentx is now open" + echo "start=$stTime:curent=$curTime:endTime=$endTime" + fi +fi + +if [ $LEN_GENTX -eq 0 ]; then + echo "No new gentx file found." +else + set -e + + echo "GentxFile::::" + echo $GENTX_FILE + + echo "...........Init Evmos.............." + + git clone $GH_URL + cd evmos + git checkout tags/v0.2.0 + make build + chmod +x ./build/evmosd + + ./build/evmosd keys add $RANDOM_KEY --keyring-backend test --home $EVMOS_HOME + + ./build/evmosd init --chain-id $CHAIN_ID validator --home $EVMOS_HOME + + echo "..........Fetching genesis......." + rm -rf $EVMOS_HOME/config/genesis.json + curl -s $PRELAUNCH_GENESIS_URL > $EVMOS_HOME/config/genesis.json + + # this genesis time is different from original genesis time, just for validating gentx. + # sed -i '/genesis_time/c\ \"genesis_time\" : \"2021-03-29T00:00:00Z\",' $EVMOS_HOME/config/genesis.json + + GENACC=$(cat $GENTX_FILE | sed -n 's|.*"delegator_address":"\([^"]*\)".*|\1|p') + denomquery=$(jq -r '.body.messages[0].value.denom' $GENTX_FILE) + amountquery=$(jq -r '.body.messages[0].value.amount' $GENTX_FILE) + + echo $GENACC + echo $amountquery + echo $denomquery + + # only allow $DENOM tokens to be bonded + if [ $denomquery != $DENOM ]; then + echo "invalid denomination" + exit 1 + fi + + # limit the amount that can be bonded + if [ $amountquery -gt $MAXBOND ]; then + echo "bonded too much: $amountquery > $MAXBOND" + exit 1 + fi + + ./build/evmosd add-genesis-account $GENACC 1000000000000000$DENOM --home $EVMOS_HOME + + ./build/evmosd add-genesis-account $RANDOM_KEY 100000000000000$DENOM --home $EVMOS_HOME \ + --keyring-backend test + + ./build/evmosd gentx $RANDOM_KEY 90000000000000$DENOM --home $EVMOS_HOME \ + --keyring-backend test --chain-id $CHAIN_ID + + cp $GENTX_FILE $EVMOS_HOME/config/gentx/ + + echo "..........Collecting gentxs......." + ./build/evmosd collect-gentxs --home $EVMOS_HOME + sed -i '/persistent_peers =/c\persistent_peers = ""' $EVMOS_HOME/config/config.toml + + ./build/evmosd validate-genesis --home $EVMOS_HOME + + # echo "..........Starting node......." + # ./build/evmosd start --home $EVMOS_HOME & + + # sleep 180s + + # echo "...checking network status.." + + # ./build/evmosd status --node http://localhost:26657 + + echo "...Cleaning the stuff..." + # killall evmosd >/dev/null 2>&1 + rm -rf $EVMOS_HOME >/dev/null 2>&1 +fi diff --git a/sheva.json b/sheva.json new file mode 100644 index 000000000..4627bf3b1 --- /dev/null +++ b/sheva.json @@ -0,0 +1 @@ +{"body":{"messages":[{"@type":"/cosmos.staking.v1beta1.MsgCreateValidator","description":{"moniker":"sheva","identity":"","website":"","security_contact":"","details":""},"commission":{"rate":"0.100000000000000000","max_rate":"1.000000000000000000","max_change_rate":"0.100000000000000000"},"min_self_delegation":"1","delegator_address":"evmos10ed5jr9pskv29nkcrlec42wujhkv9vhcwjnv4t","validator_address":"evmosvaloper10ed5jr9pskv29nkcrlec42wujhkv9vhcruuu5k","pubkey":{"@type":"/cosmos.crypto.ed25519.PubKey","key":"RYy0aqxR8uLKv2IndDPM4uw+9wgP5W451DwrJB7Vu1o="},"value":{"denom":"aphoton","amount":"1000000000000"}}],"memo":"9215dc41f6521ee141c6af1bb8eee4865a4b1afe@161.97.137.18:26656","timeout_height":"0","extension_options":[],"non_critical_extension_options":[]},"auth_info":{"signer_infos":[{"public_key":{"@type":"/ethermint.crypto.v1.ethsecp256k1.PubKey","key":"AoP/sM9MBd14vCd2etFSLZhEViUrbW2YQuQm57a6vLFH"},"mode_info":{"single":{"mode":"SIGN_MODE_DIRECT"}},"sequence":"0"}],"fee":{"amount":[],"gas_limit":"200000","payer":"","granter":""}},"signatures":["AgsBhdwr7VuiAbhyDFKm8t1OpOX94veXu16R4mPXw+AQd9nNGjOaHNLzPgNxLHT7V4lDw+ORMGJGBAd+vGuztAE="]}