This guide covers all configuration steps from initial binary setup through genesis file preparation. Complete these steps before launching your network.
Overview
Building a Cosmos EVM chain involves two main configuration phases:
Pre-Genesis Setup - Configure binary and source code before initialization
Genesis Configuration - Set genesis parameters and prepare for network launch
Most pre-genesis parameters cannot easily be changed after launch. Plan carefully.
Planning Your Configuration
Before you begin, decide on these parameters. Use the links to jump to detailed configuration instructions for each item.
Pre-Genesis Parameters (Set Before init)
These parameters are compiled into your binary and must be set before running yourchain init:
View All Pre-Genesis Parameters
Genesis Parameters (Set After init)
These parameters are configured in genesis.json after initialization:
View All Genesis Parameters
Cosmos Chain ID Format : String (e.g., mychain-1)
Common Practice : {name}-{version} format
Genesis Time Format : RFC3339 UTC timestamp
Common Practice : Coordinated launch time for validators
Bank Denomination Metadata Required : Base denom, display denom, decimals
Common Practice : Must match your chosen precision
VM Parameters Includes : evm_denom, extended_denom_options, gas settings
Common Practice : Configure EVM gas token and options
Active Precompiles Default : All enabled
Common Practice : Enable only what you need or leave all enabled
ERC20 Module Required : Native token pair configuration
Common Practice : Configure STRv2 native token representation
Fee Market (EIP-1559) Default : Enabled with 1 gwei base fee
Common Practice : Standard EIP-1559 for EVM chains
EVM Access Control Default : Permissionless
Common Practice : Permissionless for public chains
Staking Parameters Includes : Bond denom, unbonding time, max validators
Common Practice : 21-day unbonding, 100+ validators
Slashing Parameters Includes : Downtime window, slash fractions
Common Practice : Cosmos defaults (5% double-sign, 0.01% downtime)
Governance Parameters Includes : Voting period, quorum, threshold
Common Practice : 2-7 day voting period
Initial Accounts & Validators Required : Genesis accounts and gentx collection
Common Practice : Fund accounts and collect validator gentxs
Pre-Genesis Setup
Confirm these parameters before running yourchain init. These parameters are compiled into your binary, and determine how the genesis file is generated.
Chain Name
Parameter Details Description The name of your compiled blockchain executable Default evmdFile Location Directory name and all Go imports Why Change It Brand your chain and avoid confusion with the reference implementation
Simplest approach using find-and-replace: # 1. Navigate to evm repository
cd /path/to/evm
# 2. IMPORTANT: Create a backup or commit current state
git add -A
git commit -m "Pre-rename checkpoint" || echo "Skipping commit (no changes or not a git repo)"
# 3. Verify you're in the correct directory
if [ ! -f "go.mod" ] || [ ! -d "evmd" ]; then
echo "ERROR: Not in evm repository root. Expected go.mod and evmd/ directory"
exit 1
fi
# 4. Use your editor's find-and-replace (VSCode, etc.) to replace:
# 'evmd' → 'yourchain' (across all files, excluding .git/)
# '.evmd' → '.yourchain' (for home directories)
#
# OR use sed commands:
find . -type f ! -path "*/.git/*" ! -path "*/vendor/*" -exec sed -i '' 's/evmd/yourchain/g' {} \;
find . -type f ! -path "*/.git/*" ! -path "*/vendor/*" -exec sed -i '' 's/\.evmd/.yourchain/g' {} \;
# 5. Verify sed completed successfully
if [ $? -ne 0 ]; then
echo "ERROR: Find-and-replace failed. Restore from backup/git"
exit 1
fi
# 6. Manually rename directories and files:
[ -d "evmd" ] && mv evmd yourchain
[ -d "yourchain/cmd/evmd" ] && mv yourchain/cmd/evmd yourchain/cmd/yourchain
[ -f "config/evmd_config.go" ] && mv config/evmd_config.go config/yourchain_config.go
# 7. Update go.mod module path (if changing from cosmos/evm):
# Edit yourchain/go.mod first line:
# From: module github.com/cosmos/evm/evmd
# To: module github.com/your-org/your-chain/yourchain
# 8. Tidy and build
go mod tidy
cd yourchain && go mod tidy && cd ..
# 9. Build to verify everything works
make build
# 10. Verify binary was created and runs
if [ ! -f "./build/yourchain" ]; then
echo "ERROR: Build failed - binary not found at ./build/yourchain"
exit 1
fi
./build/yourchain version
echo "SUCCESS: Binary renamed from evmd to yourchain"
Validation Checklist before proceeding:
✅ Backup created or changes committed to git
✅ Running from repository root (go.mod present)
✅ evmd directory exists before rename
✅ Build succeeds without errors
✅ Binary executes and shows version
Result : Your binary will be named yourchain and all commands will use this name (e.g., yourchain start, yourchain init).
Bech32 Address Prefix
Attribute Value Description Your chain’s address format (e.g., cosmos1..., evmos1..., yourchain1...) Default cosmosType String (lowercase alphanumeric) File Location config/config.go:62Adjustable Immutable (requires rebuild before init) Why Change It Create unique, recognizable addresses for your chain
Must be changed before running yourchain init. Changing after genesis requires a hard fork.
Configuration
Address Formats
Verification
Edit config/config.go and change the Bech32Prefix constant: const (
// Bech32Prefix defines the Bech32 prefix for your chain
Bech32Prefix = "yourchain" // Change this line
// Bech32PrefixAccAddr defines account addresses
Bech32PrefixAccAddr = Bech32Prefix
// Bech32PrefixAccPub defines account public keys
Bech32PrefixAccPub = Bech32Prefix + sdk . PrefixPublic
// Bech32PrefixValAddr defines validator operator addresses
Bech32PrefixValAddr = Bech32Prefix + sdk . PrefixValidator + sdk . PrefixOperator
// Bech32PrefixValPub defines validator operator public keys
Bech32PrefixValPub = Bech32Prefix + sdk . PrefixValidator + sdk . PrefixOperator + sdk . PrefixPublic
// Bech32PrefixConsAddr defines consensus node addresses
Bech32PrefixConsAddr = Bech32Prefix + sdk . PrefixValidator + sdk . PrefixConsensus
// Bech32PrefixConsPub defines consensus node public keys
Bech32PrefixConsPub = Bech32Prefix + sdk . PrefixValidator + sdk . PrefixConsensus + sdk . PrefixPublic
)
See all 16 lines
After changing, rebuild: Source : config/config.go:60-74
BIP44 Coin Type
Attribute Value Description The HD wallet derivation path for key generation according to BIP-44 Default 60 (Ethereum)Type uint32 File Location crypto/hd/hdpath.go:9Adjustable Immutable (requires rebuild before init) Standard SLIP-0044 Why Change It For Cosmos SDK chains wanting non-Ethereum derivation paths, or to register a unique coin type
For EVM-compatible chains, use the default: var (
// Bip44CoinType satisfies EIP84 for Ethereum compatibility
Bip44CoinType uint32 = 60
)
Benefits:
Compatible with Ethereum wallets (MetaMask, Ledger, etc.)
Standard for EVM chains
No additional registration needed
Derivation Path: m/44'/60'/0'/0/0Recommendation: Keep 60 for EVM chains unless you have specific requirements.Source : crypto/hd/hdpath.go:7-13
EVM Chain ID
Attribute Value Description The EIP-155 chain ID used for Ethereum transaction replay protection Default 262144Type uint64 File Location config/config.go:78Adjustable Immutable (must be set in source before building binary) Standard EIP-155 Why Change It Must be unique for your network to prevent transaction replay attacks
The EVM Chain ID must be set before building the application . It cannot be changed after your binary is built. Choose carefully.
Configuration Steps
Choosing a Chain ID
What This Controls
1. Edit config/config.go and change the EVMChainID constant: const (
// ... other constants ...
// EVMChainID defines the EIP-155 replay-protection chain id for the current ethereum chain config.
EVMChainID = 123456 // Change from 262144 to your unique chain ID
)
2. Rebuild the binary: 3. Initialize your chain: ./build/yourchain init mynode --chain-id mychain-1
4. Verify the chain ID was set correctly: grep 'evm-chain-id' ~/.yourchain/config/app.toml
# Should show: evm-chain-id = 123456
Do not edit app.toml to change the EVM chain ID after initialization. The chain ID must be set in source code before building. Editing app.toml will not properly configure the chain.
Source : config/config.go:78
Token Decimal Precision
Attribute Value Description Determines whether your native token uses 18 decimals (like ETH) or another precision (like ATOM’s 6 decimals) Default 18 decimals Type Architecture decision (affects bank metadata and module configuration) Adjustable Immutable (cannot be changed after genesis) Why Choose Affects EVM compatibility and module requirements
This decision affects your entire architecture and cannot be changed after genesis. Choose based on your compatibility needs.
Direct EVM Compatibility - Simplest Setup Configuration:
Base denom: atoken (atto-prefix, 10^-18)
Display denom: token
Exponent: 18
No additional modules required
Benefits:
Native 1:1 EVM compatibility
Uses standard x/bank module
Simpler architecture
No precision conversion needed
Standard for EVM ecosystems
Example: 1 token = 1,000,000,000,000,000,000 atoken
= 10^18 atoken
In Genesis: {
"app_state" : {
"bank" : {
"denom_metadata" : [{
"base" : "atoken" ,
"display" : "token" ,
"denom_units" : [
{ "denom" : "atoken" , "exponent" : 0 },
{ "denom" : "token" , "exponent" : 18 }
]
}]
},
"evm" : {
"params" : {
"evm_denom" : "atoken"
// No extended_denom_options needed
}
}
}
}
See all 20 lines
Further Reading:
Default Denomination in Source
Attribute Value Description Default token denominations hardcoded in source files that are used when generating configuration files Default aatom (extended), uatom (base), atom (display)Type String Files server/config/migration/v0.50-app.toml:11, x/vm/types/params.go:21-25, config/constants.go:5-8Adjustable Pre-Genesis (must be changed before init) Why Change It So that generated config files use your token name instead of the default
This step must be completed before running yourchain init. The defaults are compiled into the binary and written to generated files during initialization.
Files to Modify
Quick Setup
Verification
Three source files contain default denomination values: 1. Server Configuration Template
File : server/config/migration/v0.50-app.toml:11Change: # From:
minimum-gas-prices = "0aatom"
# To:
minimum-gas-prices = "0atoken"
2. EVM Module Defaults
File : x/vm/types/params.go:21-25Change: // From:
var (
DefaultEVMDenom = "uatom"
DefaultEVMExtendedDenom = "aatom"
DefaultEVMDisplayDenom = "atom"
)
// To:
var (
DefaultEVMDenom = "atoken" // Your base denom
DefaultEVMExtendedDenom = "atoken" // Same if 18 decimals
DefaultEVMDisplayDenom = "token" // Display name
)
See all 13 lines
3. Example Chain Constants
File : config/constants.go:5-8Change: // From:
const (
ExampleChainDenom = "aatom"
ExampleDisplayDenom = "atom"
)
// To:
const (
ExampleChainDenom = "atoken"
ExampleDisplayDenom = "token"
)
See all 11 lines
Token Denomination Guidelines: For 18-decimal tokens:
Base denom: atoken (atto-token)
Display denom: token
Example: 1 token = 1,000,000,000,000,000,000 atoken
For 6-decimal tokens:
Base denom: utoken (micro-token)
Display denom: token
Extended denom: atoken (for EVM)
Example: 1 token = 1,000,000 utoken
Source References:
Genesis Configuration
After completing Pre-Genesis Setup and running yourchain init, configure your genesis file. The genesis file is located at ~/.yourchain/config/genesis.json.
Genesis parameters can be modified until you distribute the genesis file to validators. After the network launches, most parameters can only be changed through governance proposals.
Initialize Your Chain
For Production Chains : Before running init, ensure you have completed all Pre-Genesis Setup steps, especially Binary Name configuration. Organizations deploying their own chain should rename the binary from evmd to their own chain name (e.g., yourchain) to brand their network and avoid confusion with the reference implementation.First, initialize the chain to create the default genesis file: yourchain init < monike r > --chain-id < chain-i d >
Example: yourchain init mynode --chain-id mychain-1
This creates:
~/.yourchain/config/genesis.json - Genesis state file
~/.yourchain/config/app.toml - Application configuration
~/.yourchain/config/config.toml - CometBFT configuration
~/.yourchain/config/client.toml - Client configuration
Now proceed with genesis configuration below.
Cosmos Chain ID
Attribute Value Description The unique string identifier for your blockchain in the Cosmos ecosystem Genesis Path chain_id (root level)Type String Format Flexible string, commonly {name}-{version} Adjustable Immutable (cannot be changed after genesis without coordinated upgrade) Why Important Used for IBC connections, CometBFT consensus, and client identification
Set During Init
Modify After Init
Naming Conventions
The Cosmos Chain ID is typically set during initialization: yourchain init mynode --chain-id mychain-1
This writes the chain ID to genesis.json. You must also set it in client.toml: yourchain config set client chain-id mychain-1
Important Notes:
All validators must use the exact same chain ID
Chain ID is included in all transactions and blocks
Cannot be changed after genesis without coordinated upgrade
Genesis Time
Attribute Value Description UTC timestamp when the chain starts producing blocks Genesis Path genesis_time (root level)Type RFC3339 timestamp Format "2024-12-01T00:00:00Z"Adjustable Immutable (must be set before network launch) Why Important Coordinates synchronized network launch across all validators
Set the genesis time: jq '.genesis_time = "2024-12-01T00:00:00Z"' ~/.yourchain/config/genesis.json > tmp && \
mv tmp ~/.yourchain/config/genesis.json
Verify: jq '.genesis_time' ~/.yourchain/config/genesis.json
Timing Recommendations:
Testnet : 1-2 hours ahead (allows validator setup)
Mainnet : 24-48 hours ahead (allows thorough preparation)
Local Dev : Use past time (starts immediately)
Network Launch Details : For complete launch coordination procedures, validator startup instructions, and timing best practices, see Coordinate Launch Time in the Runtime Configuration & Network Launch guide.Important : All validators must have identical genesis_time in their genesis files.
Attribute Value Description Your token’s base denomination, decimal precision, and display properties Genesis Path app_state.bank.denom_metadataType Array of metadata objects Adjustable Governance Why Important Controls how tokens are displayed and handled across the chain
Decimal Precision Decision : Your choice of 18 vs 6 decimals (configured in Token Decimal Precision ) determines the values below. See that section for detailed explanation. Configuration
Verification
Configure denomination metadata for your chosen precision: # For 18-decimal tokens (base denom: atoken)
jq '.app_state.bank.denom_metadata=[{
"description": "The native staking and gas token",
"denom_units": [
{"denom": "atoken", "exponent": 0, "aliases": ["attotoken"]},
{"denom": "token", "exponent": 18, "aliases": []}
],
"base": "atoken",
"display": "token",
"name": "My Token",
"symbol": "TKN",
"uri": "",
"uri_hash": ""
}]' ~/.yourchain/config/genesis.json > tmp && mv tmp ~/.yourchain/config/genesis.json
# For 6-decimal tokens (base denom: utoken)
# Change "atoken" → "utoken" and exponent: 18 → 6
See all 17 lines
Fields:
base: Smallest unit stored on-chain (must match staking bond_denom)
display: Human-readable unit
exponent: Decimal places (18 or 6 based on your choice)
name: Full token name displayed in wallets
symbol: Ticker symbol (e.g., TKN, ATOM, ETH)
Critical : The following must all use the same base denomination:
app_state.bank.denom_metadata[0].base
app_state.staking.params.bond_denom
app_state.mint.params.mint_denom
app_state.evm.params.evm_denom
app_state.gov.params.min_deposit[0].denom
VM Parameters
Attribute Value Description Core EVM module configuration including gas token, extended denom options, and chain behavior Genesis Path app_state.evm.paramsType Object containing multiple EVM configuration parameters Adjustable Governance Why Important Defines how the EVM layer interacts with Cosmos SDK
evm_denom (Required)
extended_denom_options
history_serve_window
Sets which bank denomination is used for EVM gas: jq '.app_state.evm.params.evm_denom = "atoken"' \
~/.yourchain/config/genesis.json > tmp && mv tmp ~/.yourchain/config/genesis.json
See all 2 lines
Must match your bank metadata base denomination.Source : x/vm/types/params.go:21
Active Precompiles
Attribute Value Description Enabled precompiled contracts that expose Cosmos SDK functionality to EVM smart contracts Genesis Path app_state.evm.params.active_static_precompilesType Array of hex addresses (must be sorted) Default [] (empty - no precompiles enabled)Adjustable Governance Source x/vm/types/precompiles.go:22-32
This list represents the currently available static precompiles in the codebase. Precompiles are extensible - you can add custom precompiles to your chain. See the authoritative source for the latest available precompiles. Available Precompiles
Enable All (Recommended)
Enable Selective
Disable All
Address Name Purpose 0x0100P256 Cryptographic operations for Web3 auth 0x0400Bech32 Cosmos ↔ Ethereum address conversion 0x0800Staking Validator staking operations 0x0801Distribution Reward distribution and claiming 0x0802ICS20 IBC token transfers 0x0803Vesting Token vesting operations 0x0804Bank Bank module operations 0x0805Governance Submit/vote on proposals 0x0806Slashing Slashing queries
Important : The array must be sorted in ascending order for determinism.Can be changed : Precompiles can be enabled/disabled after genesis through governance proposals.Source : x/vm/types/precompiles.go:22-32
ERC20 Module
Attribute Value Description Configured token pairs between Cosmos bank denoms and ERC20 representations, implementing Single Token Representation v2 (STRv2) Genesis Path app_state.erc20Type Object containing token pairs and configuration Adjustable Governance Why Important Allows native tokens to be used in EVM contracts as ERC20
Native Token Pair
Registration Permissions
Complete Configuration
Configure the native token’s ERC20 representation: # Set native precompile address
jq '.app_state.erc20.native_precompiles = ["0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"]' \
~/.yourchain/config/genesis.json > tmp && mv tmp ~/.yourchain/config/genesis.json
# Set token pair
jq '.app_state.erc20.token_pairs = [{
"erc20_address": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
"denom": "atoken",
"enabled": true,
"contract_owner": 1
}]' ~/.yourchain/config/genesis.json > tmp && mv tmp ~/.yourchain/config/genesis.json
See all 11 lines
Fields:
erc20_address: Special address 0xEeeee...EEeE for native token
denom: Your base denomination (must match bank metadata)
enabled: Whether the pair is active
contract_owner: 1 = module-owned (standard for native token)
Fee Market (EIP-1559)
Attribute Value Description Dynamic fee pricing mechanism based on EIP-1559, controlling how transaction fees adjust based on network congestion Genesis Path app_state.feemarket.paramsType Object containing fee market parameters Default EIP-1559 enabled with 1 gwei base fee Adjustable Governance Source x/feemarket/types/params.go:13-21
jq '.app_state.feemarket.params = {
"no_base_fee": false,
"base_fee": "1000000000",
"base_fee_change_denominator": 8,
"elasticity_multiplier": 2,
"min_gas_price": "0",
"min_gas_multiplier": "0.5",
"enable_height": 0
}' ~/.yourchain/config/genesis.json > tmp && mv tmp ~/.yourchain/config/genesis.json
See all 9 lines
Parameters:
no_base_fee: false = EIP-1559 enabled
base_fee: "1000000000" = 1 gwei initial base fee
base_fee_change_denominator: 8 = ±12.5% max change per block
elasticity_multiplier: 2 = target is 50% of max gas
min_gas_price: "0" = no minimum floor
min_gas_multiplier: "0.5" = 50% of base fee minimum
enable_height: 0 = enabled from genesis
Use case : Standard Ethereum-compatible chainsSource : x/feemarket/types/params.go:13-21
EVM Access Control
Attribute Value Description Permissions for deploying and calling smart contracts Genesis Path app_state.evm.params.access_controlType Object with create and call access controls Default Permissionless (type 0 - anyone can deploy and call contracts) Adjustable Governance Source x/vm/types/params.go:160-165
jq '.app_state.evm.params.access_control = {
"create": {
"access_type": 0,
"access_control_list": []
},
"call": {
"access_type": 0,
"access_control_list": []
}
}' ~/.yourchain/config/genesis.json > tmp && mv tmp ~/.yourchain/config/genesis.json
See all 10 lines
Access Type 0 = PERMISSIONLESSUse case : Public chains, testnets, open ecosystemsSource : x/vm/types/params.go:160-165
Staking Parameters
Attribute Value Description Staking module behavior, including bond denom, unbonding time, and validator set size Genesis Path app_state.staking.paramsType Object containing staking configuration parameters Adjustable Governance
Quick Configuration
Parameter Details
Complete Configuration
# Set bond denomination
jq '.app_state.staking.params.bond_denom = "atoken"' \
~/.yourchain/config/genesis.json > tmp && mv tmp ~/.yourchain/config/genesis.json
# Set unbonding time (21 days is Cosmos standard)
jq '.app_state.staking.params.unbonding_time = "1814400s"' \
~/.yourchain/config/genesis.json > tmp && mv tmp ~/.yourchain/config/genesis.json
# Set max validators
jq '.app_state.staking.params.max_validators = 100' \
~/.yourchain/config/genesis.json > tmp && mv tmp ~/.yourchain/config/genesis.json
See all 11 lines
Slashing Parameters
Attribute Value Description Thresholds and penalties for validator downtime or misbehavior Genesis Path app_state.slashing.paramsType Object containing slashing configuration parameters Adjustable Governance
Standard Configuration
Parameter Details
How Slashing Works
jq '.app_state.slashing.params = {
"signed_blocks_window": "10000",
"min_signed_per_window": "0.500000000000000000",
"downtime_jail_duration": "600s",
"slash_fraction_double_sign": "0.050000000000000000",
"slash_fraction_downtime": "0.010000000000000000"
}' ~/.yourchain/config/genesis.json > tmp && mv tmp ~/.yourchain/config/genesis.json
See all 7 lines
Cosmos Defaults:
Signed blocks window : 10,000 blocks (~22 hours at 8s blocks)
Min signed : 50% of blocks in window
Downtime jail : 10 minutes
Double-sign slash : 5% of stake
Downtime slash : 1% of stake
Governance Parameters
Attribute Value Description Settings for on-chain governance including voting periods, quorum, and deposit requirements Genesis Path app_state.gov.paramsType Object containing governance configuration parameters Adjustable Governance
Standard Configuration
Parameter Details
Setting Min Deposit
jq '.app_state.gov.params = {
"min_deposit": [{
"denom": "atoken",
"amount": "10000000000000000000"
}],
"max_deposit_period": "172800s",
"voting_period": "172800s",
"expedited_voting_period": "86400s",
"quorum": "0.334",
"threshold": "0.5",
"veto_threshold": "0.334",
"min_initial_deposit_ratio": "0.0",
"expedited_threshold": "0.667",
"expedited_min_deposit": [{
"denom": "atoken",
"amount": "50000000000000000000"
}]
}' ~/.yourchain/config/genesis.json > tmp && mv tmp ~/.yourchain/config/genesis.json
See all 18 lines
Mint Parameters
Parameter Details Description Token inflation and minting schedule Genesis Location app_state.mint.params
jq '.app_state.mint.params = {
"mint_denom": "atoken",
"inflation_rate_change": "0.130000000000000000",
"inflation_max": "0.200000000000000000",
"inflation_min": "0.070000000000000000",
"goal_bonded": "0.670000000000000000",
"blocks_per_year": "6311520"
}' ~/.yourchain/config/genesis.json > tmp && mv tmp ~/.yourchain/config/genesis.json
See all 8 lines
Distribution Parameters
Parameter Details Description Token / reward distribution including community tax and proposer rewards Genesis Location app_state.distribution.params
jq '.app_state.distribution.params = {
"community_tax": "0.020000000000000000",
"base_proposer_reward": "0.000000000000000000",
"bonus_proposer_reward": "0.000000000000000000",
"withdraw_addr_enabled": true
}' ~/.yourchain/config/genesis.json > tmp && mv tmp ~/.yourchain/config/genesis.json
See all 6 lines
Note : Proposer rewards (base_proposer_reward and bonus_proposer_reward) are deprecated in recent Cosmos SDK versions and should be set to "0.000000000000000000".
Initial Accounts and Validators
Overview Details When After configuring all genesis parameters Purpose Add initial accounts and collect validator gentxs
Add Genesis Accounts
Collect Validator Gentxs
Validate Genesis
Add accounts with initial balances: # Add account by address
yourchain genesis add-genesis-account \
cosmos1abc123... \
1000000000000000000000atoken
# Add account by key name from keyring
yourchain genesis add-genesis-account \
validator1 \
1000000000000000000000atoken \
--keyring-backend test
# Add multiple accounts
yourchain genesis add-genesis-account validator1 1000000000000000000000atoken
yourchain genesis add-genesis-account validator2 1000000000000000000000atoken
yourchain genesis add-genesis-account faucet 10000000000000000000000atoken
See all 15 lines
Verify accounts: jq '.app_state.bank.balances' ~/.yourchain/config/genesis.json
See all 1 lines
Next Steps
Your genesis file is now complete! Next:
Distribute Genesis File to validators
Configure Runtime Settings
Launch Network
Continue to Runtime Configuration & Network Launch for full details.
Quick Reference
See : Configuration Reference for:
Command cheatsheets
Configuration examples
Default values table