// accountDelete represents an operation for deleting an Ethereum account.
typeaccountDeletestruct{
addresscommon.Address// address is the unique account identifier
origin[]byte// origin is the original value of account data in slim-RLP encoding.
storagesOriginmap[common.Hash][]byte// storagesOrigin stores the original values of mutated slots in prefix-zero-trimmed RLP format.
addresscommon.Address// address is the unique account identifier
origin[]byte// origin is the original value of account data in slim-RLP encoding.
// storagesOrigin stores the original values of mutated slots in
// prefix-zero-trimmed RLP format. The map key refers to the **HASH**
// of the raw storage slot key.
storagesOriginmap[common.Hash][]byte
}
// accountUpdate represents an operation for updating an Ethereum account.
typeaccountUpdatestruct{
addresscommon.Address// address is the unique account identifier
data[]byte// data is the slim-RLP encoded account data.
origin[]byte// origin is the original value of account data in slim-RLP encoding.
code*contractCode// code represents mutated contract code; nil means it's not modified.
storagesmap[common.Hash][]byte// storages stores mutated slots in prefix-zero-trimmed RLP format.
storagesOriginmap[common.Hash][]byte// storagesOrigin stores the original values of mutated slots in prefix-zero-trimmed RLP format.
addresscommon.Address// address is the unique account identifier
data[]byte// data is the slim-RLP encoded account data.
origin[]byte// origin is the original value of account data in slim-RLP encoding.
code*contractCode// code represents mutated contract code; nil means it's not modified.
storagesmap[common.Hash][]byte// storages stores mutated slots in prefix-zero-trimmed RLP format.
// storagesOriginByKey and storagesOriginByHash both store the original values
// of mutated slots in prefix-zero-trimmed RLP format. The difference is that
// storagesOriginByKey uses the **raw** storage slot key as the map ID, while
// storagesOriginByHash uses the **hash** of the storage slot key instead.
storagesOriginByKeymap[common.Hash][]byte
storagesOriginByHashmap[common.Hash][]byte
}
// stateUpdate represents the difference between two states resulting from state
// execution. It contains information about mutated contract codes, accounts,
// and storage slots, along with their original values.
typestateUpdatestruct{
originRootcommon.Hash// hash of the state before applying mutation
rootcommon.Hash// hash of the state after applying mutation
destructsmap[common.Hash]struct{}// destructs contains the list of destructed accounts
accountsmap[common.Hash][]byte// accounts stores mutated accounts in 'slim RLP' encoding
accountsOriginmap[common.Address][]byte// accountsOrigin stores the original values of mutated accounts in 'slim RLP' encoding
storagesmap[common.Hash]map[common.Hash][]byte// storages stores mutated slots in 'prefix-zero-trimmed' RLP format
storagesOriginmap[common.Address]map[common.Hash][]byte// storagesOrigin stores the original values of mutated slots in 'prefix-zero-trimmed' RLP format
codesmap[common.Address]contractCode// codes contains the set of dirty codes
nodes*trienode.MergedNodeSet// Aggregated dirty nodes caused by state changes
originRootcommon.Hash// hash of the state before applying mutation
rootcommon.Hash// hash of the state after applying mutation
destructsmap[common.Hash]struct{}// destructs contains the list of destructed accounts
accountsmap[common.Hash][]byte// accounts stores mutated accounts in 'slim RLP' encoding
accountsOriginmap[common.Address][]byte// accountsOrigin stores the original values of mutated accounts in 'slim RLP' encoding
// storages stores mutated slots in 'prefix-zero-trimmed' RLP format.
// The value is keyed by account hash and **storage slot key hash**.
storagesmap[common.Hash]map[common.Hash][]byte
// storagesOrigin stores the original values of mutated slots in
// 'prefix-zero-trimmed' RLP format.
// (a) the value is keyed by account hash and **storage slot key** if rawStorageKey is true;
// (b) the value is keyed by account hash and **storage slot key hash** if rawStorageKey is false;