30f34e6c59
* evm: move Keeper and Querier to /keeper package * keeper: update keeper_test.go * fix format * evm: use aliased types * add comments from review * changelog
46 lines
1.1 KiB
Go
46 lines
1.1 KiB
Go
package types
|
|
|
|
import (
|
|
"fmt"
|
|
"math/big"
|
|
|
|
"github.com/cosmos/ethermint/types"
|
|
ethcmn "github.com/ethereum/go-ethereum/common"
|
|
)
|
|
|
|
type (
|
|
// GenesisState defines the application's genesis state. It contains all the
|
|
// information required and accounts to initialize the blockchain.
|
|
GenesisState struct {
|
|
Accounts []GenesisAccount `json:"accounts"`
|
|
}
|
|
|
|
// GenesisAccount defines an account to be initialized in the genesis state.
|
|
GenesisAccount struct {
|
|
Address ethcmn.Address `json:"address"`
|
|
Balance *big.Int `json:"balance"`
|
|
Code []byte `json:"code,omitempty"`
|
|
Storage types.Storage `json:"storage,omitempty"`
|
|
}
|
|
)
|
|
|
|
// ValidateGenesis validates evm genesis config
|
|
func ValidateGenesis(data GenesisState) error {
|
|
for _, acct := range data.Accounts {
|
|
if len(acct.Address.Bytes()) == 0 {
|
|
return fmt.Errorf("Invalid GenesisAccount Error: Missing Address")
|
|
}
|
|
if acct.Balance == nil {
|
|
return fmt.Errorf("Invalid GenesisAccount Error: Missing Balance")
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// DefaultGenesisState sets default evm genesis config
|
|
func DefaultGenesisState() GenesisState {
|
|
return GenesisState{
|
|
Accounts: []GenesisAccount{},
|
|
}
|
|
}
|