package types import ( "github.com/ethereum/go-ethereum/common" ) const ( // ModuleName string name of module ModuleName = "evm" // StoreKey key for ethereum storage data, account code (StateDB) or block // related data for Web3. // The EVM module should use a prefix store. StoreKey = ModuleName // TransientKey is the key to access the EVM transient store, that is reset // during the Commit phase. TransientKey = "transient_" + ModuleName // RouterKey uses module name for routing RouterKey = ModuleName ) // prefix bytes for the EVM persistent store const ( prefixCode = iota + 1 prefixStorage ) // prefix bytes for the EVM transient store const ( prefixTransientSuicided = iota + 1 prefixTransientBloom prefixTransientTxIndex prefixTransientRefund prefixTransientAccessListAddress prefixTransientAccessListSlot prefixTransientTxHash prefixTransientLogSize prefixTransientTxLogs ) // KVStore key prefixes var ( KeyPrefixCode = []byte{prefixCode} KeyPrefixStorage = []byte{prefixStorage} ) // Transient Store key prefixes var ( KeyPrefixTransientSuicided = []byte{prefixTransientSuicided} KeyPrefixTransientBloom = []byte{prefixTransientBloom} KeyPrefixTransientTxIndex = []byte{prefixTransientTxIndex} KeyPrefixTransientRefund = []byte{prefixTransientRefund} KeyPrefixTransientAccessListAddress = []byte{prefixTransientAccessListAddress} KeyPrefixTransientAccessListSlot = []byte{prefixTransientAccessListSlot} KeyPrefixTransientTxHash = []byte{prefixTransientTxHash} KeyPrefixTransientLogSize = []byte{prefixTransientLogSize} KeyPrefixTransientTxLogs = []byte{prefixTransientTxLogs} ) // AddressStoragePrefix returns a prefix to iterate over a given account storage. func AddressStoragePrefix(address common.Address) []byte { return append(KeyPrefixStorage, address.Bytes()...) } // StateKey defines the full key under which an account state is stored. func StateKey(address common.Address, key []byte) []byte { return append(AddressStoragePrefix(address), key...) }