diff --git a/.golangci.yml b/.golangci.yml index 64dd191..5ee74d8 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -41,7 +41,7 @@ linters-settings: - prefix(cosmossdk.io) - prefix(github.com/cosmos/cosmos-sdk) - prefix(github.com/strangelove-ventures/poa) - - prefix(github.com/reecepbcups/tokenfactory) + - prefix(github.com/strangelove-ventures/tokenfactory) - prefix(github.com/liftedinit/manifest-ledger) gosec: excludes: diff --git a/app/app.go b/app/app.go index 8cb571f..9bd86c0 100644 --- a/app/app.go +++ b/app/app.go @@ -133,9 +133,9 @@ import ( poakeeper "github.com/strangelove-ventures/poa/keeper" poamodule "github.com/strangelove-ventures/poa/module" - "github.com/reecepbcups/tokenfactory/x/tokenfactory" - tokenfactorykeeper "github.com/reecepbcups/tokenfactory/x/tokenfactory/keeper" - tokenfactorytypes "github.com/reecepbcups/tokenfactory/x/tokenfactory/types" + "github.com/strangelove-ventures/tokenfactory/x/tokenfactory" + tokenfactorykeeper "github.com/strangelove-ventures/tokenfactory/x/tokenfactory/keeper" + tokenfactorytypes "github.com/strangelove-ventures/tokenfactory/x/tokenfactory/types" manifest "github.com/liftedinit/manifest-ledger/x/manifest" manifestkeeper "github.com/liftedinit/manifest-ledger/x/manifest/keeper" diff --git a/go.mod b/go.mod index 2a2a23d..929ecd6 100644 --- a/go.mod +++ b/go.mod @@ -12,6 +12,9 @@ replace ( // https://github.com/liftedinit/cosmos-sdk/pull/1 github.com/cosmos/cosmos-sdk => github.com/liftedinit/cosmos-sdk v0.50.5-0.20240222003859-24d6e6cf46be + // TODO: testnet only + github.com/cosmos/ibc-go/v8 => github.com/cosmos/ibc-go/v8 v8.0.0 + // Fix upstream GHSA-h395-qcrw-5vmq vulnerability. github.com/gin-gonic/gin => github.com/gin-gonic/gin v1.7.0 github.com/spf13/viper => github.com/spf13/viper v1.17.0 // v1.18+ breaks app overrides @@ -42,16 +45,16 @@ require ( github.com/cosmos/cosmos-sdk v0.50.4 github.com/cosmos/gogoproto v1.4.11 github.com/cosmos/ibc-go/modules/capability v1.0.0 - github.com/cosmos/ibc-go/v8 v8.0.0 + github.com/cosmos/ibc-go/v8 v8.1.0 github.com/golang/protobuf v1.5.3 github.com/gorilla/mux v1.8.1 github.com/grpc-ecosystem/grpc-gateway v1.16.0 - github.com/reecepbcups/tokenfactory v0.50.0-alpha.3 github.com/spf13/cast v1.6.0 github.com/spf13/cobra v1.8.0 github.com/spf13/pflag v1.0.5 github.com/spf13/viper v1.18.2 github.com/strangelove-ventures/poa v0.0.1-alpha.3 + github.com/strangelove-ventures/tokenfactory v0.50.0 github.com/stretchr/testify v1.8.4 google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f google.golang.org/grpc v1.60.1 diff --git a/go.sum b/go.sum index 758e030..1861cda 100644 --- a/go.sum +++ b/go.sum @@ -1618,8 +1618,6 @@ github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3c github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/reecepbcups/tokenfactory v0.50.0-alpha.3 h1:BNB22IzvbB9VDuvbvyr7Cke62uMDQgUXkYWJWKlI2oQ= -github.com/reecepbcups/tokenfactory v0.50.0-alpha.3/go.mod h1:qPchGcgRjxe1b6rnQOl+Rr2ruZmq8T4FcRBuLEuPICo= github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= @@ -1691,6 +1689,8 @@ github.com/spf13/viper v1.17.0 h1:I5txKw7MJasPL/BrfkbA0Jyo/oELqVmux4pR/UxOMfI= github.com/spf13/viper v1.17.0/go.mod h1:BmMMMLQXSbcHK6KAOiFLz0l5JHrU89OdIRHvsk0+yVI= github.com/strangelove-ventures/poa v0.0.1-alpha.3 h1:BtmF6nJDBARDNefO0axuMD82+nkZQWa2OkZXQaQTwpI= github.com/strangelove-ventures/poa v0.0.1-alpha.3/go.mod h1:LcmorSGWRyn/M5hch7dAW7l0aYL+VSw28uzdsjdOduc= +github.com/strangelove-ventures/tokenfactory v0.50.0 h1:r5ja0CDrACAeCdP/LMhfdXZQFK6YEXE7yfNZ1+jZyg4= +github.com/strangelove-ventures/tokenfactory v0.50.0/go.mod h1:tiTj1dTlSM5p6dquGIggAZSClx/gnBT9DXIYxhHcEEE= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= diff --git a/interchaintest/go.mod b/interchaintest/go.mod index 8d337c7..51c9719 100644 --- a/interchaintest/go.mod +++ b/interchaintest/go.mod @@ -14,11 +14,11 @@ replace ( require ( cosmossdk.io/math v1.2.0 github.com/cosmos/cosmos-sdk v0.50.4 - github.com/cosmos/ibc-go/v8 v8.0.0 + github.com/cosmos/ibc-go/v8 v8.1.0 github.com/liftedinit/manifest-ledger v0.0.0-00000000000000-000000000000 - github.com/reecepbcups/tokenfactory v0.50.0-alpha.3 github.com/strangelove-ventures/interchaintest/v8 v8.1.0 github.com/strangelove-ventures/poa v0.0.1-alpha.3 + github.com/strangelove-ventures/tokenfactory v0.50.0 github.com/stretchr/testify v1.8.4 go.uber.org/zap v1.26.0 ) diff --git a/interchaintest/go.sum b/interchaintest/go.sum index d070684..d5e6e22 100644 --- a/interchaintest/go.sum +++ b/interchaintest/go.sum @@ -385,8 +385,8 @@ github.com/cosmos/iavl v1.0.1 h1:D+mYbcRO2wptYzOM1Hxl9cpmmHU1ZEt9T2Wv5nZTeUw= github.com/cosmos/iavl v1.0.1/go.mod h1:8xIUkgVvwvVrBu81scdPty+/Dx9GqwHnAvXz4cwF7RY= github.com/cosmos/ibc-go/modules/capability v1.0.0 h1:r/l++byFtn7jHYa09zlAdSeevo8ci1mVZNO9+V0xsLE= github.com/cosmos/ibc-go/modules/capability v1.0.0/go.mod h1:D81ZxzjZAe0ZO5ambnvn1qedsFQ8lOwtqicG6liLBco= -github.com/cosmos/ibc-go/v8 v8.0.0 h1:QKipnr/NGwc+9L7NZipURvmSIu+nw9jOIWTJuDBqOhg= -github.com/cosmos/ibc-go/v8 v8.0.0/go.mod h1:C6IiJom0F3cIQCD5fKwVPDrDK9j/xTu563AWuOmXois= +github.com/cosmos/ibc-go/v8 v8.1.0 h1:pf1106wl0Cf+p1+FjXzV6odlS9DnqVunPVWCH1Uz+lQ= +github.com/cosmos/ibc-go/v8 v8.1.0/go.mod h1:o1ipS95xpdjqNcB8Drq0eI3Sn4FRLigjll42ec1ECuU= github.com/cosmos/ics23/go v0.10.0 h1:iXqLLgp2Lp+EdpIuwXTYIQU+AiHj9mOC2X9ab++bZDM= github.com/cosmos/ics23/go v0.10.0/go.mod h1:ZfJSmng/TBNTBkFemHHHj5YY7VAU/MBU980F4VU1NG0= github.com/cosmos/ledger-cosmos-go v0.13.3 h1:7ehuBGuyIytsXbd4MP43mLeoN2LTOEnk5nvue4rK+yM= @@ -982,8 +982,6 @@ github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3c github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/reecepbcups/tokenfactory v0.50.0-alpha.3 h1:BNB22IzvbB9VDuvbvyr7Cke62uMDQgUXkYWJWKlI2oQ= -github.com/reecepbcups/tokenfactory v0.50.0-alpha.3/go.mod h1:qPchGcgRjxe1b6rnQOl+Rr2ruZmq8T4FcRBuLEuPICo= github.com/regen-network/protobuf v1.3.3-alpha.regen.1 h1:OHEc+q5iIAXpqiqFKeLpu5NwTIkVXUs48vFMwzqpqY4= github.com/regen-network/protobuf v1.3.3-alpha.regen.1/go.mod h1:2DjTFR1HhMQhiWC5sZ4OhQ3+NtdbZ6oBDKQwq5Ou+FI= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= @@ -1052,6 +1050,8 @@ github.com/strangelove-ventures/interchaintest/v8 v8.1.0 h1:+VOGGR2sEP2gLvx0ojRO github.com/strangelove-ventures/interchaintest/v8 v8.1.0/go.mod h1:kXw3vLQdEEcvyJ3ZindGPigpHgIdwrywNsQKkARb+qM= github.com/strangelove-ventures/poa v0.0.1-alpha.3 h1:BtmF6nJDBARDNefO0axuMD82+nkZQWa2OkZXQaQTwpI= github.com/strangelove-ventures/poa v0.0.1-alpha.3/go.mod h1:LcmorSGWRyn/M5hch7dAW7l0aYL+VSw28uzdsjdOduc= +github.com/strangelove-ventures/tokenfactory v0.50.0 h1:r5ja0CDrACAeCdP/LMhfdXZQFK6YEXE7yfNZ1+jZyg4= +github.com/strangelove-ventures/tokenfactory v0.50.0/go.mod h1:tiTj1dTlSM5p6dquGIggAZSClx/gnBT9DXIYxhHcEEE= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= diff --git a/interchaintest/setup.go b/interchaintest/setup.go index cc62544..84fc3aa 100644 --- a/interchaintest/setup.go +++ b/interchaintest/setup.go @@ -1,8 +1,8 @@ package interchaintest import ( - tokenfactorytypes "github.com/reecepbcups/tokenfactory/x/tokenfactory/types" poatypes "github.com/strangelove-ventures/poa" + tokenfactorytypes "github.com/strangelove-ventures/tokenfactory/x/tokenfactory/types" types "github.com/liftedinit/manifest-ledger/x/manifest/types" diff --git a/network/manifest-1/README.md b/network/manifest-1/README.md index de07c28..4639cd8 100644 --- a/network/manifest-1/README.md +++ b/network/manifest-1/README.md @@ -76,7 +76,7 @@ rm $HOME/.manifest/config/gentx/*.json # Give yourself 1POASTAKE for the genesis Tx signed manifestd init "$MONIKER" --chain-id $CHAIN_ID --staking-bond-denom poastake -manifestd add-genesis-account $KEYNAME_ADDR 1000000poastake +manifestd add-genesis-account $KEYNAME_ADDR 1000000poastake --append # genesis transaction using all above variables manifestd gentx $KEYNAME 1000000poastake \ diff --git a/network/manifest-1/from_scratch.sh b/network/manifest-1/from_scratch.sh index 523664b..613091e 100644 --- a/network/manifest-1/from_scratch.sh +++ b/network/manifest-1/from_scratch.sh @@ -1,12 +1,14 @@ # Takes a default genesis from manifestd and creates a new genesis file. +CHAIN_ID=manifest-1 + make install export HOME_DIR=$(eval echo "${HOME_DIR:-"~/.manifest"}") rm -rf $HOME_DIR && echo "Removed $HOME_DIR" -manifestd init moniker --chain-id=manifest-1 --default-denom=umfx +manifestd init moniker --chain-id=$CHAIN_ID --default-denom=umfx update_genesis () { cat $HOME_DIR/config/genesis.json | jq "$1" > $HOME_DIR/config/tmp_genesis.json && mv $HOME_DIR/config/tmp_genesis.json $HOME_DIR/config/genesis.json @@ -77,6 +79,11 @@ update_genesis '.app_state["staking"]["params"]["bond_denom"]="poastake"' update_genesis '.app_state["tokenfactory"]["params"]["denom_creation_fee"]=[]' update_genesis '.app_state["tokenfactory"]["params"]["denom_creation_gas_consume"]="250000"' +# TODO: gov,multisig +# update_genesis '.app_state["poa"]["params"]["admins"]=["manifest10d07y265gmmuvt4z0w9aw880jnsr700jmq3jzm","MULTISIG-HERE"]' + # add genesis accounts # TODO: -manifestd genesis add-genesis-account manifest1hj5fveer5cjtn4wd6wstzugjfdxzl0xp8ws9ct 1umfx --append \ No newline at end of file +manifestd genesis add-genesis-account manifest1hj5fveer5cjtn4wd6wstzugjfdxzl0xp8ws9ct 1umfx --append + +cp ~/.manifest/config/genesis.json ./network/$CHAIN_ID/genesis.json \ No newline at end of file diff --git a/network/obvious-1/POST_GENESIS.md b/network/obvious-1/POST_GENESIS.md new file mode 100644 index 0000000..0ebc653 --- /dev/null +++ b/network/obvious-1/POST_GENESIS.md @@ -0,0 +1,28 @@ +# Post-Genesis + +### Become a validator +* Install the manifest binary +* manifestd init --chain-id obvious-1 --default-denom poastake +* Replace your genesis with the public one found in this repo +* Find peers and seeds here. +* Update your minimum-gas-prices in the app.toml +* Start the node and sync up +* Once completed, `manifestd tx poa create-validator path/to/validator.json --from keyname`. This command shows the JSON needed. +```json +{ + "pubkey": {"@type":"/cosmos.crypto.ed25519.PubKey","key":"oWg2ISpLF405Jcm2vXV+2v4fnjodh6aafuIdeoW+rUw="}, + "amount": "1poastake", # ignored + "moniker": "myvalidator", + "identity": "keybase-identity", + "website": "validator's (optional) website", + "security": "validator's (optional) security contact email", + "details": "validator's (optional) details", + "commission-rate": "0.1", + "commission-max-rate": "0.2", + "commission-max-change-rate": "0.01", + "min-self-delegation": "1" # ignored +} +``` + +Following these instructions, your validator will be put into a queue for the chain admins to accept or reject. Once accepted, you will be a validator on the network. +The chain admin's will set your amount if they accept. \ No newline at end of file diff --git a/network/obvious-1/README.md b/network/obvious-1/README.md new file mode 100644 index 0000000..8f5b029 --- /dev/null +++ b/network/obvious-1/README.md @@ -0,0 +1,151 @@ +# Testnet Genesis + +## Cosmos Multisig (testnet) + +```sh +CHAIN_ID='obvious-1' + +# Add keys for multisig +manifestd keys add chandrastation --pubkey '{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"A9hZjm7++QBixsH4QTQadXPrnhVBDk+MPLE74U0/GoJp"}' # manifest1wxjfftrc0emj5f7ldcvtpj05lxtz3t2npghwsf +manifestd keys add reece-testnet --pubkey '{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"A57Cxv5vgwE6pAJ9oYtnOdU4ehKixMj6gufF8jBRq4IC"}' # manifest1aucdev30u9505dx9t6q5fkcm70sjg4rh7rn5nf + +# Create multisig with those keys and name it +manifestd keys add obvious-1-multisig --multisig reece-testnet,chandrastation --multisig-threshold 1 + +# - address: manifest1nzpct7tq52rckgnvr55e2m0kmyr0asdrgayq9p +# name: obvious-1-multisig +# pubkey: '{"@type":"/cosmos.crypto.multisig.LegacyAminoPubKey","threshold":1,"public_keys":[{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"A9hZjm7++QBixsH4QTQadXPrnhVBDk+MPLE74U0/GoJp"},{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"A57Cxv5vgwE6pAJ9oYtnOdU4ehKixMj6gufF8jBRq4IC"}]}' +# type: multi + +# Generate a Tx +manifestd tx bank send $(manifestd keys show obvious-1-multisig -a) manifest1aucdev30u9505dx9t6q5fkcm70sjg4rh7rn5nf 10000000umfx --generate-only --chain-id=$CHAIN_ID | jq . > tx.json + +# both sign +manifestd tx sign --from $(manifestd keys show -a reece-testnet) --multisig $(manifestd keys show -a obvious-1-multisig) tx.json --sign-mode amino-json --chain-id=$CHAIN_ID >> tx-signed-reece.json +# and for chandra station + +# combine into a single Tx +manifestd tx multisign --from obvious-1-multisig tx.json obvious-1-multisig tx-signed-reece.json tx-signed-chandra.json --chain-id=$CHAIN_ID > tx_ms.json + +# Anyone can Broadcast tx +manifestd tx broadcast tx_ms.json --chain-id=$CHAIN_ID +``` + + +# Post Genesis Validators +If you are a validator joining the network after the initial genesis launch, follow the [post genesis document here](./POST_GENESIS.md). + +## Hardware Requirements +**Minimal** +* 4 GB RAM +* 100 GB SSD +* 3.2 x4 GHz CPU + +**Recommended** +* 8 GB RAM +* 100 GB NVME SSD +* 4.2 GHz x6 CPU + +**Operating System** +* Linux (x86_64) or Linux (amd64) Recommended Arch Linux + +### Dependencies +>Prerequisite: go1.21+, git, gcc, make, jq + +**Arch Linux:** +``` +pacman -S go git gcc make +``` + +**Ubuntu Linux:** +``` +sudo snap install go --classic +sudo apt-get install git gcc make jq +``` + +## manifestd Installation Steps + +```bash +# Clone git repository +git clone https://github.com/liftedinit/manifest-ledger.git +cd manifest-ledger +git checkout v0.0.1-alpha.1 + +make install # go install ./... +# For ledger support `go install -tags ledger ./...` + +manifestd config set client chain-id obvious-1 +``` + +### Generate keys +* `manifestd keys add [key_name]` +* `manifestd keys add [key_name] --recover` to regenerate keys with your BIP39 mnemonic to add ledger key +* `manifestd keys add [key_name] --ledger` to add a ledger key + +# Validator setup instructions +## Genesis Tx: +```bash +# Validator variables +KEYNAME='validator' # your keyname +MONIKER='pbcups' +SECURITY_CONTACT="email@domain.com" +WEBSITE="https://domain.com" +MAX_RATE='0.20' # 20% +COMMISSION_RATE='0.00' # 0% +MAX_CHANGE='0.01' # 1% +CHAIN_ID='obvious-1' +PROJECT_HOME="${HOME}/.manifest" +KEYNAME_ADDR=$(manifestd keys show $KEYNAME -a) + +# Remove old files if they exist +manifestd tendermint unsafe-reset-all +rm $HOME/.manifest/config/genesis.json +rm $HOME/.manifest/config/gentx/*.json + +# Give yourself 1POASTAKE for the genesis Tx signed +manifestd init "$MONIKER" --chain-id $CHAIN_ID --default-denom poastake +manifestd genesis add-genesis-account $KEYNAME_ADDR 1000000poastake --append + +# genesis transaction using all above variables +manifestd genesis gentx $KEYNAME 1000000poastake \ + --home=$PROJECT_HOME \ + --chain-id=$CHAIN_ID \ + --moniker="$MONIKER" \ + --commission-max-change-rate=$MAX_CHANGE \ + --commission-max-rate=$MAX_RATE \ + --commission-rate=$COMMISSION_RATE \ + --security-contact=$SECURITY_CONTACT \ + --website=$WEBSITE \ + --details="" + +# Get that gentx data easily -> your home directory +cat ${PROJECT_HOME}/config/gentx/gentx-*.json + +# get your peer +echo $(manifestd tendermint show-node-id)@$(curl -s ifconfig.me):26656 +``` + + +maintainer only: +```bash + +cd networks/obvious-1 + +cp genesis.json $HOME/.manifest/config + +# iterate through the gentx directory, print the files +# https://github.com/strangelove-ventures/bech32cli +for filename in gentx/*.json; do + addr=`cat $filename | jq -r .body.messages[0].validator_address | xargs -I {} bech32 transform {} manifest` + raw_coin=`cat $filename | jq -r .body.messages[0].value` # { "denom": "poastake", "amount": "1000000" } + coin=$(echo $raw_coin | jq -r '.amount + .denom') # make coin = 1000000poastake + manifestd genesis add-genesis-account $addr $coin --append +done + +manifestd genesis collect-gentxs --gentx-dir gentx --home $HOME/.manifest + +cp $HOME/.manifest/config/genesis.json live_genesis.json + +# curl https://raw.githubusercontent.com/liftedinit/manifest-ledger/reece/test-network-launch/network/obvious-1/live_genesis.json > $HOME/.manifest/config/genesis.json + +``` \ No newline at end of file diff --git a/network/obvious-1/from_scratch.sh b/network/obvious-1/from_scratch.sh new file mode 100644 index 0000000..e089521 --- /dev/null +++ b/network/obvious-1/from_scratch.sh @@ -0,0 +1,93 @@ +# Takes a default genesis from manifestd and creates a new genesis file. + +CHAIN_ID=obvious-1 + +make install + +export HOME_DIR=$(eval echo "${HOME_DIR:-"~/.manifest"}") + +rm -rf $HOME_DIR && echo "Removed $HOME_DIR" + +manifestd init moniker --chain-id=$CHAIN_ID --default-denom=umfx + +update_genesis () { + cat $HOME_DIR/config/genesis.json | jq "$1" > $HOME_DIR/config/tmp_genesis.json && mv $HOME_DIR/config/tmp_genesis.json $HOME_DIR/config/genesis.json +} + +update_genesis '.consensus["params"]["block"]["max_gas"]="-1"' +update_genesis '.consensus["params"]["abci"]["vote_extensions_enable_height"]="1"' + +# auth +update_genesis '.app_state["auth"]["params"]["max_memo_characters"]="512"' + +update_genesis '.app_state["bank"]["denom_metadata"]=[ + { + "base": "umfx", + "denom_units": [ + { + "aliases": [], + "denom": "umfx", + "exponent": 0 + }, + { + "aliases": [], + "denom": "MFX", + "exponent": 6 + } + ], + "description": "Denom metadata for MFX (umfx)", + "display": "MFX", + "name": "MFX", + "symbol": "MFX" + } +]' + +update_genesis '.app_state["crisis"]["constant_fee"]={"denom": "umfx","amount": "100000000"}' + +update_genesis '.app_state["distribution"]["params"]["community_tax"]="0.000000000000000000"' + +update_genesis '.app_state["gov"]["params"]["min_deposit"]=[{"denom":"umfx","amount":"100000000"}]' +update_genesis '.app_state["gov"]["params"]["max_deposit_period"]="259200s"' +update_genesis '.app_state["gov"]["params"]["voting_period"]="259200s"' +update_genesis '.app_state["gov"]["params"]["expedited_min_deposit"]=[{"denom":"umfx","amount":"250000000"}]' +update_genesis '.app_state["gov"]["params"]["min_deposit_ratio"]="0.100000000000000000"' # 10% +# update_genesis '.app_state["gov"]["params"]["constitution"]=""' # ? + +# TODO: +# update_genesis '.app_state["manifest"]["params"]["stake_holders"]=[{"address":"manifest1hj5fveer5cjtn4wd6wstzugjfdxzl0xp8ws9ct","percentage":100000000}]' # TODO: +update_genesis '.app_state["manifest"]["params"]["inflation"]["automatic_enabled"]=false' +update_genesis '.app_state["manifest"]["params"]["inflation"]["yearly_amount"]="365000000"' # in micro format (1MFX = 10**6) +update_genesis '.app_state["manifest"]["params"]["inflation"]["mint_denom"]="umfx"' + +# not used +update_genesis '.app_state["mint"]["minter"]["inflation"]="0.000000000000000000"' +update_genesis '.app_state["mint"]["minter"]["annual_provisions"]="0.000000000000000000"' +update_genesis '.app_state["mint"]["params"]["mint_denom"]="notused"' +update_genesis '.app_state["mint"]["params"]["inflation_rate_change"]="0.000000000000000000"' +update_genesis '.app_state["mint"]["params"]["inflation_max"]="0.000000000000000000"' +update_genesis '.app_state["mint"]["params"]["inflation_min"]="0.000000000000000000"' +update_genesis '.app_state["mint"]["params"]["blocks_per_year"]="6311520"' # default 6s blocks + +update_genesis '.app_state["slashing"]["params"]["signed_blocks_window"]="10000"' +update_genesis '.app_state["slashing"]["params"]["min_signed_per_window"]="0.050000000000000000"' +update_genesis '.app_state["slashing"]["params"]["downtime_jail_duration"]="60s"' +update_genesis '.app_state["slashing"]["params"]["slash_fraction_double_sign"]="1.000000000000000000"' +update_genesis '.app_state["slashing"]["params"]["slash_fraction_downtime"]="0.000000000000000000"' + +update_genesis '.app_state["staking"]["params"]["bond_denom"]="poastake"' + +update_genesis '.app_state["tokenfactory"]["params"]["denom_creation_fee"]=[]' +update_genesis '.app_state["tokenfactory"]["params"]["denom_creation_gas_consume"]="250000"' + +# TODO: chalabi / the multisig +# gov, reece-testnet, chandrastation, chandra-reece-multisig +update_genesis '.app_state["poa"]["params"]["admins"]=["manifest10d07y265gmmuvt4z0w9aw880jnsr700jmq3jzm","manifest1aucdev30u9505dx9t6q5fkcm70sjg4rh7rn5nf","manifest1wxjfftrc0emj5f7ldcvtpj05lxtz3t2npghwsf","manifest1nzpct7tq52rckgnvr55e2m0kmyr0asdrgayq9p"]' + +# add genesis accounts +# TODO: +manifestd genesis add-genesis-account manifest1hj5fveer5cjtn4wd6wstzugjfdxzl0xp8ws9ct 1umfx --append +manifestd genesis add-genesis-account manifest1aucdev30u9505dx9t6q5fkcm70sjg4rh7rn5nf 5000000000000umfx --append # reece-testnet (5m UMFX). Is a validator +manifestd genesis add-genesis-account manifest1wxjfftrc0emj5f7ldcvtpj05lxtz3t2npghwsf 5000000000000umfx --append # chandrastation +manifestd genesis add-genesis-account manifest1nzpct7tq52rckgnvr55e2m0kmyr0asdrgayq9p 5000000000000umfx --append # multisig + +cp ~/.manifest/config/genesis.json ./network/$CHAIN_ID/genesis.json \ No newline at end of file diff --git a/network/obvious-1/genesis.json b/network/obvious-1/genesis.json new file mode 100644 index 0000000..0177c64 --- /dev/null +++ b/network/obvious-1/genesis.json @@ -0,0 +1,390 @@ +{ + "app_name": "manifestd", + "app_version": "", + "genesis_time": "2024-03-04T17:46:08.223086086Z", + "chain_id": "obvious-1", + "initial_height": 1, + "app_hash": null, + "app_state": { + "07-tendermint": null, + "auth": { + "params": { + "max_memo_characters": "512", + "tx_sig_limit": "7", + "tx_size_cost_per_byte": "10", + "sig_verify_cost_ed25519": "590", + "sig_verify_cost_secp256k1": "1000" + }, + "accounts": [ + { + "@type": "/cosmos.auth.v1beta1.BaseAccount", + "address": "manifest1hj5fveer5cjtn4wd6wstzugjfdxzl0xp8ws9ct", + "pub_key": null, + "account_number": "0", + "sequence": "0" + }, + { + "@type": "/cosmos.auth.v1beta1.BaseAccount", + "address": "manifest1aucdev30u9505dx9t6q5fkcm70sjg4rh7rn5nf", + "pub_key": null, + "account_number": "1", + "sequence": "0" + }, + { + "@type": "/cosmos.auth.v1beta1.BaseAccount", + "address": "manifest1wxjfftrc0emj5f7ldcvtpj05lxtz3t2npghwsf", + "pub_key": null, + "account_number": "2", + "sequence": "0" + }, + { + "@type": "/cosmos.auth.v1beta1.BaseAccount", + "address": "manifest1nzpct7tq52rckgnvr55e2m0kmyr0asdrgayq9p", + "pub_key": null, + "account_number": "3", + "sequence": "0" + } + ] + }, + "authz": { + "authorization": [] + }, + "bank": { + "params": { + "send_enabled": [], + "default_send_enabled": true + }, + "balances": [ + { + "address": "manifest1wxjfftrc0emj5f7ldcvtpj05lxtz3t2npghwsf", + "coins": [ + { + "denom": "umfx", + "amount": "5000000000000" + } + ] + }, + { + "address": "manifest1nzpct7tq52rckgnvr55e2m0kmyr0asdrgayq9p", + "coins": [ + { + "denom": "umfx", + "amount": "5000000000000" + } + ] + }, + { + "address": "manifest1hj5fveer5cjtn4wd6wstzugjfdxzl0xp8ws9ct", + "coins": [ + { + "denom": "umfx", + "amount": "1" + } + ] + }, + { + "address": "manifest1aucdev30u9505dx9t6q5fkcm70sjg4rh7rn5nf", + "coins": [ + { + "denom": "umfx", + "amount": "5000000000000" + } + ] + } + ], + "supply": [ + { + "denom": "umfx", + "amount": "15000000000001" + } + ], + "denom_metadata": [ + { + "description": "Denom metadata for MFX (umfx)", + "denom_units": [ + { + "denom": "umfx", + "exponent": 0, + "aliases": [] + }, + { + "denom": "MFX", + "exponent": 6, + "aliases": [] + } + ], + "base": "umfx", + "display": "MFX", + "name": "MFX", + "symbol": "MFX", + "uri": "", + "uri_hash": "" + } + ], + "send_enabled": [] + }, + "capability": { + "index": "1", + "owners": [] + }, + "circuit": { + "account_permissions": [], + "disabled_type_urls": [] + }, + "consensus": null, + "crisis": { + "constant_fee": { + "denom": "umfx", + "amount": "100000000" + } + }, + "distribution": { + "params": { + "community_tax": "0.000000000000000000", + "base_proposer_reward": "0.000000000000000000", + "bonus_proposer_reward": "0.000000000000000000", + "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": [] + }, + "feegrant": { + "allowances": [] + }, + "feeibc": { + "identified_fees": [], + "fee_enabled_channels": [], + "registered_payees": [], + "registered_counterparty_payees": [], + "forward_relayers": [] + }, + "genutil": { + "gen_txs": [] + }, + "gov": { + "starting_proposal_id": "1", + "deposits": [], + "votes": [], + "proposals": [], + "deposit_params": null, + "voting_params": null, + "tally_params": null, + "params": { + "min_deposit": [ + { + "denom": "umfx", + "amount": "100000000" + } + ], + "max_deposit_period": "259200s", + "voting_period": "259200s", + "quorum": "0.334000000000000000", + "threshold": "0.500000000000000000", + "veto_threshold": "0.334000000000000000", + "min_initial_deposit_ratio": "0.000000000000000000", + "proposal_cancel_ratio": "0.500000000000000000", + "proposal_cancel_dest": "", + "expedited_voting_period": "86400s", + "expedited_threshold": "0.667000000000000000", + "expedited_min_deposit": [ + { + "denom": "umfx", + "amount": "250000000" + } + ], + "burn_vote_quorum": false, + "burn_proposal_deposit_prevote": false, + "burn_vote_veto": true, + "min_deposit_ratio": "0.100000000000000000" + }, + "constitution": "" + }, + "group": { + "group_seq": "0", + "groups": [], + "group_members": [], + "group_policy_seq": "0", + "group_policies": [], + "proposal_seq": "0", + "proposals": [], + "votes": [] + }, + "ibc": { + "client_genesis": { + "clients": [], + "clients_consensus": [], + "clients_metadata": [], + "params": { + "allowed_clients": [ + "06-solomachine", + "07-tendermint", + "09-localhost" + ] + }, + "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" + } + }, + "interchainaccounts": { + "controller_genesis_state": { + "active_channels": [], + "interchain_accounts": [], + "ports": [], + "params": { + "controller_enabled": true + } + }, + "host_genesis_state": { + "active_channels": [], + "interchain_accounts": [], + "port": "icahost", + "params": { + "host_enabled": true, + "allow_messages": [ + "*" + ] + } + } + }, + "manifest": { + "params": { + "stake_holders": [], + "inflation": { + "automatic_enabled": false, + "yearly_amount": "365000000", + "mint_denom": "umfx" + } + } + }, + "mint": { + "minter": { + "inflation": "0.000000000000000000", + "annual_provisions": "0.000000000000000000" + }, + "params": { + "mint_denom": "notused", + "inflation_rate_change": "0.000000000000000000", + "inflation_max": "0.000000000000000000", + "inflation_min": "0.000000000000000000", + "goal_bonded": "0.670000000000000000", + "blocks_per_year": "6311520" + } + }, + "nft": { + "classes": [], + "entries": [] + }, + "params": null, + "poa": { + "params": { + "admins": [ + "manifest10d07y265gmmuvt4z0w9aw880jnsr700jmq3jzm", + "manifest1aucdev30u9505dx9t6q5fkcm70sjg4rh7rn5nf", + "manifest1wxjfftrc0emj5f7ldcvtpj05lxtz3t2npghwsf", + "manifest1nzpct7tq52rckgnvr55e2m0kmyr0asdrgayq9p" + ], + "allow_validator_self_exit": true + } + }, + "slashing": { + "params": { + "signed_blocks_window": "10000", + "min_signed_per_window": "0.050000000000000000", + "downtime_jail_duration": "60s", + "slash_fraction_double_sign": "1.000000000000000000", + "slash_fraction_downtime": "0.000000000000000000" + }, + "signing_infos": [], + "missed_blocks": [] + }, + "staking": { + "params": { + "unbonding_time": "1814400s", + "max_validators": 100, + "max_entries": 7, + "historical_entries": 10000, + "bond_denom": "poastake", + "min_commission_rate": "0.000000000000000000" + }, + "last_total_power": "0", + "last_validator_powers": [], + "validators": [], + "delegations": [], + "unbonding_delegations": [], + "redelegations": [], + "exported": false + }, + "tokenfactory": { + "params": { + "denom_creation_fee": [], + "denom_creation_gas_consume": "250000" + }, + "factory_denoms": [] + }, + "transfer": { + "port_id": "transfer", + "denom_traces": [], + "params": { + "send_enabled": true, + "receive_enabled": true + }, + "total_escrowed": [] + }, + "upgrade": {}, + "vesting": {} + }, + "consensus": { + "params": { + "block": { + "max_bytes": "22020096", + "max_gas": "-1" + }, + "evidence": { + "max_age_num_blocks": "100000", + "max_age_duration": "172800000000000", + "max_bytes": "1048576" + }, + "validator": { + "pub_key_types": [ + "ed25519" + ] + }, + "version": { + "app": "0" + }, + "abci": { + "vote_extensions_enable_height": "1" + } + } + } +} \ No newline at end of file diff --git a/network/obvious-1/gentx/PEERS.txt b/network/obvious-1/gentx/PEERS.txt new file mode 100644 index 0000000..4fad4fa --- /dev/null +++ b/network/obvious-1/gentx/PEERS.txt @@ -0,0 +1,2 @@ +pbcups: cf641df39cce560d43c9889ff0883772de2e8a59@15.204.143.232:26656 +chandra: dddb7b8ad73be43f3dc96922d6708d53e847685d@66.172.36.142:21156 diff --git a/network/obvious-1/gentx/chandra.json b/network/obvious-1/gentx/chandra.json new file mode 100644 index 0000000..8e897bc --- /dev/null +++ b/network/obvious-1/gentx/chandra.json @@ -0,0 +1,62 @@ +{ + "body": { + "messages": [ + { + "@type": "/cosmos.staking.v1beta1.MsgCreateValidator", + "description": { + "moniker": "Chandra Station", + "identity": "", + "website": "https://chandrastation.com", + "security_contact": "", + "details": "" + }, + "commission": { + "rate": "0.100000000000000000", + "max_rate": "0.200000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "", + "validator_address": "manifestvaloper1wxjfftrc0emj5f7ldcvtpj05lxtz3t2nag26um", + "pubkey": { + "@type": "/cosmos.crypto.ed25519.PubKey", + "key": "ifQkpbC53GTxQzia7Xa2YUPks41SQZrO1FZQ+SKYjmw=" + }, + "value": { + "denom": "poastake", + "amount": "1000000" + } + } + ], + "memo": "dddb7b8ad73be43f3dc96922d6708d53e847685d@66.172.36.142:21156", + "timeout_height": "0", + "extension_options": [], + "non_critical_extension_options": [] + }, + "auth_info": { + "signer_infos": [ + { + "public_key": { + "@type": "/cosmos.crypto.secp256k1.PubKey", + "key": "A9hZjm7++QBixsH4QTQadXPrnhVBDk+MPLE74U0/GoJp" + }, + "mode_info": { + "single": { + "mode": "SIGN_MODE_DIRECT" + } + }, + "sequence": "0" + } + ], + "fee": { + "amount": [], + "gas_limit": "200000", + "payer": "", + "granter": "" + }, + "tip": null + }, + "signatures": [ + "4Z2wgbQe1cPCe9TTuObN0SQj+BVgkSIi9JDOMCN8UPQT034fdpoCN3ocq0cnxjAQuc+7NZi7ZemMdq58keVzMA==" + ] +} \ No newline at end of file diff --git a/network/obvious-1/gentx/pbcups.json b/network/obvious-1/gentx/pbcups.json new file mode 100644 index 0000000..15d8594 --- /dev/null +++ b/network/obvious-1/gentx/pbcups.json @@ -0,0 +1,62 @@ +{ + "body": { + "messages": [ + { + "@type": "/cosmos.staking.v1beta1.MsgCreateValidator", + "description": { + "moniker": "pbcups", + "identity": "", + "website": "https://domain.com", + "security_contact": "email@domain.com", + "details": "" + }, + "commission": { + "rate": "0.000000000000000000", + "max_rate": "0.200000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "", + "validator_address": "manifestvaloper1aucdev30u9505dx9t6q5fkcm70sjg4rhzrwqlm", + "pubkey": { + "@type": "/cosmos.crypto.ed25519.PubKey", + "key": "6j0yWKUuXvIXBR1YCwAXGnIr+mRgm6v4YxnjvasE9Jg=" + }, + "value": { + "denom": "poastake", + "amount": "1000000" + } + } + ], + "memo": "cf641df39cce560d43c9889ff0883772de2e8a59@15.204.143.232:26656", + "timeout_height": "0", + "extension_options": [], + "non_critical_extension_options": [] + }, + "auth_info": { + "signer_infos": [ + { + "public_key": { + "@type": "/cosmos.crypto.secp256k1.PubKey", + "key": "A57Cxv5vgwE6pAJ9oYtnOdU4ehKixMj6gufF8jBRq4IC" + }, + "mode_info": { + "single": { + "mode": "SIGN_MODE_DIRECT" + } + }, + "sequence": "0" + } + ], + "fee": { + "amount": [], + "gas_limit": "200000", + "payer": "", + "granter": "" + }, + "tip": null + }, + "signatures": [ + "QZRILQK92GBGNFPhMJZjoO5M3JFs5zKVn5ROWaimhJIYP6D3YoA7BRYSrsYA9keUhuKWlK8v7aLjBo65UVBj4g==" + ] +} \ No newline at end of file diff --git a/network/obvious-1/live_genesis.json b/network/obvious-1/live_genesis.json new file mode 100644 index 0000000..1a72307 --- /dev/null +++ b/network/obvious-1/live_genesis.json @@ -0,0 +1,527 @@ +{ + "app_name": "manifestd", + "app_version": "", + "genesis_time": "2024-03-04T17:46:08.223086086Z", + "chain_id": "obvious-1", + "initial_height": 1, + "app_hash": null, + "app_state": { + "07-tendermint": null, + "auth": { + "params": { + "max_memo_characters": "512", + "tx_sig_limit": "7", + "tx_size_cost_per_byte": "10", + "sig_verify_cost_ed25519": "590", + "sig_verify_cost_secp256k1": "1000" + }, + "accounts": [ + { + "@type": "/cosmos.auth.v1beta1.BaseAccount", + "address": "manifest1hj5fveer5cjtn4wd6wstzugjfdxzl0xp8ws9ct", + "pub_key": null, + "account_number": "0", + "sequence": "0" + }, + { + "@type": "/cosmos.auth.v1beta1.BaseAccount", + "address": "manifest1aucdev30u9505dx9t6q5fkcm70sjg4rh7rn5nf", + "pub_key": null, + "account_number": "1", + "sequence": "0" + }, + { + "@type": "/cosmos.auth.v1beta1.BaseAccount", + "address": "manifest1wxjfftrc0emj5f7ldcvtpj05lxtz3t2npghwsf", + "pub_key": null, + "account_number": "2", + "sequence": "0" + }, + { + "@type": "/cosmos.auth.v1beta1.BaseAccount", + "address": "manifest1nzpct7tq52rckgnvr55e2m0kmyr0asdrgayq9p", + "pub_key": null, + "account_number": "3", + "sequence": "0" + } + ] + }, + "authz": { + "authorization": [] + }, + "bank": { + "params": { + "send_enabled": [], + "default_send_enabled": true + }, + "balances": [ + { + "address": "manifest1wxjfftrc0emj5f7ldcvtpj05lxtz3t2npghwsf", + "coins": [ + { + "denom": "poastake", + "amount": "1000000" + }, + { + "denom": "umfx", + "amount": "5000000000000" + } + ] + }, + { + "address": "manifest1nzpct7tq52rckgnvr55e2m0kmyr0asdrgayq9p", + "coins": [ + { + "denom": "umfx", + "amount": "5000000000000" + } + ] + }, + { + "address": "manifest1hj5fveer5cjtn4wd6wstzugjfdxzl0xp8ws9ct", + "coins": [ + { + "denom": "umfx", + "amount": "1" + } + ] + }, + { + "address": "manifest1aucdev30u9505dx9t6q5fkcm70sjg4rh7rn5nf", + "coins": [ + { + "denom": "poastake", + "amount": "1000000" + }, + { + "denom": "umfx", + "amount": "5000000000000" + } + ] + } + ], + "supply": [ + { + "denom": "poastake", + "amount": "2000000" + }, + { + "denom": "umfx", + "amount": "15000000000001" + } + ], + "denom_metadata": [ + { + "description": "Denom metadata for MFX (umfx)", + "denom_units": [ + { + "denom": "umfx", + "exponent": 0, + "aliases": [] + }, + { + "denom": "MFX", + "exponent": 6, + "aliases": [] + } + ], + "base": "umfx", + "display": "MFX", + "name": "MFX", + "symbol": "MFX", + "uri": "", + "uri_hash": "" + } + ], + "send_enabled": [] + }, + "capability": { + "index": "1", + "owners": [] + }, + "circuit": { + "account_permissions": [], + "disabled_type_urls": [] + }, + "consensus": null, + "crisis": { + "constant_fee": { + "denom": "umfx", + "amount": "100000000" + } + }, + "distribution": { + "params": { + "community_tax": "0.000000000000000000", + "base_proposer_reward": "0.000000000000000000", + "bonus_proposer_reward": "0.000000000000000000", + "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": [] + }, + "feegrant": { + "allowances": [] + }, + "feeibc": { + "identified_fees": [], + "fee_enabled_channels": [], + "registered_payees": [], + "registered_counterparty_payees": [], + "forward_relayers": [] + }, + "genutil": { + "gen_txs": [ + { + "body": { + "messages": [ + { + "@type": "/cosmos.staking.v1beta1.MsgCreateValidator", + "description": { + "moniker": "Chandra Station", + "identity": "", + "website": "https://chandrastation.com", + "security_contact": "", + "details": "" + }, + "commission": { + "rate": "0.100000000000000000", + "max_rate": "0.200000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "", + "validator_address": "manifestvaloper1wxjfftrc0emj5f7ldcvtpj05lxtz3t2nag26um", + "pubkey": { + "@type": "/cosmos.crypto.ed25519.PubKey", + "key": "ifQkpbC53GTxQzia7Xa2YUPks41SQZrO1FZQ+SKYjmw=" + }, + "value": { + "denom": "poastake", + "amount": "1000000" + } + } + ], + "memo": "dddb7b8ad73be43f3dc96922d6708d53e847685d@66.172.36.142:21156", + "timeout_height": "0", + "extension_options": [], + "non_critical_extension_options": [] + }, + "auth_info": { + "signer_infos": [ + { + "public_key": { + "@type": "/cosmos.crypto.secp256k1.PubKey", + "key": "A9hZjm7++QBixsH4QTQadXPrnhVBDk+MPLE74U0/GoJp" + }, + "mode_info": { + "single": { + "mode": "SIGN_MODE_DIRECT" + } + }, + "sequence": "0" + } + ], + "fee": { + "amount": [], + "gas_limit": "200000", + "payer": "", + "granter": "" + }, + "tip": null + }, + "signatures": [ + "4Z2wgbQe1cPCe9TTuObN0SQj+BVgkSIi9JDOMCN8UPQT034fdpoCN3ocq0cnxjAQuc+7NZi7ZemMdq58keVzMA==" + ] + }, + { + "body": { + "messages": [ + { + "@type": "/cosmos.staking.v1beta1.MsgCreateValidator", + "description": { + "moniker": "pbcups", + "identity": "", + "website": "https://domain.com", + "security_contact": "email@domain.com", + "details": "" + }, + "commission": { + "rate": "0.000000000000000000", + "max_rate": "0.200000000000000000", + "max_change_rate": "0.010000000000000000" + }, + "min_self_delegation": "1", + "delegator_address": "", + "validator_address": "manifestvaloper1aucdev30u9505dx9t6q5fkcm70sjg4rhzrwqlm", + "pubkey": { + "@type": "/cosmos.crypto.ed25519.PubKey", + "key": "6j0yWKUuXvIXBR1YCwAXGnIr+mRgm6v4YxnjvasE9Jg=" + }, + "value": { + "denom": "poastake", + "amount": "1000000" + } + } + ], + "memo": "cf641df39cce560d43c9889ff0883772de2e8a59@15.204.143.232:26656", + "timeout_height": "0", + "extension_options": [], + "non_critical_extension_options": [] + }, + "auth_info": { + "signer_infos": [ + { + "public_key": { + "@type": "/cosmos.crypto.secp256k1.PubKey", + "key": "A57Cxv5vgwE6pAJ9oYtnOdU4ehKixMj6gufF8jBRq4IC" + }, + "mode_info": { + "single": { + "mode": "SIGN_MODE_DIRECT" + } + }, + "sequence": "0" + } + ], + "fee": { + "amount": [], + "gas_limit": "200000", + "payer": "", + "granter": "" + }, + "tip": null + }, + "signatures": [ + "QZRILQK92GBGNFPhMJZjoO5M3JFs5zKVn5ROWaimhJIYP6D3YoA7BRYSrsYA9keUhuKWlK8v7aLjBo65UVBj4g==" + ] + } + ] + }, + "gov": { + "starting_proposal_id": "1", + "deposits": [], + "votes": [], + "proposals": [], + "deposit_params": null, + "voting_params": null, + "tally_params": null, + "params": { + "min_deposit": [ + { + "denom": "umfx", + "amount": "100000000" + } + ], + "max_deposit_period": "259200s", + "voting_period": "259200s", + "quorum": "0.334000000000000000", + "threshold": "0.500000000000000000", + "veto_threshold": "0.334000000000000000", + "min_initial_deposit_ratio": "0.000000000000000000", + "proposal_cancel_ratio": "0.500000000000000000", + "proposal_cancel_dest": "", + "expedited_voting_period": "86400s", + "expedited_threshold": "0.667000000000000000", + "expedited_min_deposit": [ + { + "denom": "umfx", + "amount": "250000000" + } + ], + "burn_vote_quorum": false, + "burn_proposal_deposit_prevote": false, + "burn_vote_veto": true, + "min_deposit_ratio": "0.100000000000000000" + }, + "constitution": "" + }, + "group": { + "group_seq": "0", + "groups": [], + "group_members": [], + "group_policy_seq": "0", + "group_policies": [], + "proposal_seq": "0", + "proposals": [], + "votes": [] + }, + "ibc": { + "client_genesis": { + "clients": [], + "clients_consensus": [], + "clients_metadata": [], + "params": { + "allowed_clients": [ + "06-solomachine", + "07-tendermint", + "09-localhost" + ] + }, + "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" + } + }, + "interchainaccounts": { + "controller_genesis_state": { + "active_channels": [], + "interchain_accounts": [], + "ports": [], + "params": { + "controller_enabled": true + } + }, + "host_genesis_state": { + "active_channels": [], + "interchain_accounts": [], + "port": "icahost", + "params": { + "host_enabled": true, + "allow_messages": [ + "*" + ] + } + } + }, + "manifest": { + "params": { + "stake_holders": [], + "inflation": { + "automatic_enabled": false, + "yearly_amount": "365000000", + "mint_denom": "umfx" + } + } + }, + "mint": { + "minter": { + "inflation": "0.000000000000000000", + "annual_provisions": "0.000000000000000000" + }, + "params": { + "mint_denom": "notused", + "inflation_rate_change": "0.000000000000000000", + "inflation_max": "0.000000000000000000", + "inflation_min": "0.000000000000000000", + "goal_bonded": "0.670000000000000000", + "blocks_per_year": "6311520" + } + }, + "nft": { + "classes": [], + "entries": [] + }, + "params": null, + "poa": { + "params": { + "admins": [ + "manifest10d07y265gmmuvt4z0w9aw880jnsr700jmq3jzm", + "manifest1aucdev30u9505dx9t6q5fkcm70sjg4rh7rn5nf", + "manifest1wxjfftrc0emj5f7ldcvtpj05lxtz3t2npghwsf", + "manifest1nzpct7tq52rckgnvr55e2m0kmyr0asdrgayq9p" + ], + "allow_validator_self_exit": true + } + }, + "slashing": { + "params": { + "signed_blocks_window": "10000", + "min_signed_per_window": "0.050000000000000000", + "downtime_jail_duration": "60s", + "slash_fraction_double_sign": "1.000000000000000000", + "slash_fraction_downtime": "0.000000000000000000" + }, + "signing_infos": [], + "missed_blocks": [] + }, + "staking": { + "params": { + "unbonding_time": "1814400s", + "max_validators": 100, + "max_entries": 7, + "historical_entries": 10000, + "bond_denom": "poastake", + "min_commission_rate": "0.000000000000000000" + }, + "last_total_power": "0", + "last_validator_powers": [], + "validators": [], + "delegations": [], + "unbonding_delegations": [], + "redelegations": [], + "exported": false + }, + "tokenfactory": { + "params": { + "denom_creation_fee": [], + "denom_creation_gas_consume": "250000" + }, + "factory_denoms": [] + }, + "transfer": { + "port_id": "transfer", + "denom_traces": [], + "params": { + "send_enabled": true, + "receive_enabled": true + }, + "total_escrowed": [] + }, + "upgrade": {}, + "vesting": {} + }, + "consensus": { + "params": { + "block": { + "max_bytes": "22020096", + "max_gas": "-1" + }, + "evidence": { + "max_age_num_blocks": "100000", + "max_age_duration": "172800000000000", + "max_bytes": "1048576" + }, + "validator": { + "pub_key_types": [ + "ed25519" + ] + }, + "version": { + "app": "0" + }, + "abci": { + "vote_extensions_enable_height": "1" + } + } + } +} \ No newline at end of file