package types import ( codectypes "github.com/cosmos/cosmos-sdk/codec/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/crypto" ) var ( _ authtypes.AccountI = (*EthAccount)(nil) _ authtypes.GenesisAccount = (*EthAccount)(nil) _ codectypes.UnpackInterfacesMessage = (*EthAccount)(nil) ) // ---------------------------------------------------------------------------- // Main Ethermint account // ---------------------------------------------------------------------------- // ProtoAccount defines the prototype function for BaseAccount used for an // AccountKeeper. func ProtoAccount() authtypes.AccountI { return &EthAccount{ BaseAccount: &authtypes.BaseAccount{}, CodeHash: common.BytesToHash(crypto.Keccak256(nil)).String(), } } // EthAddress returns the account address ethereum format. func (acc EthAccount) EthAddress() common.Address { return common.BytesToAddress(acc.GetAddress().Bytes()) } // GetCodeHash returns the account code hash in byte format func (acc EthAccount) GetCodeHash() common.Hash { return common.HexToHash(acc.CodeHash) }