state

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 14, 2021 License: GPL-3.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Account

type Account struct {
	OriginalNonce    uint64
	DirtyNonce       uint64
	OriginalBalance  *big.Int
	DirtyBalance     *big.Int
	Root             common.Hash // merkle root of the storage trie
	OriginalCodeHash []byte
	DirtyCodeHash    []byte
}

Account is the Ethereum consensus representation of accounts. These objects are stored in the main account trie.

type Code

type Code []byte

func (Code) String

func (c Code) String() string

type StateDB

type StateDB struct {
	// contains filtered or unexported fields
}

StateDBs within the ethereum protocol are used to store anything within the merkle trie. StateDBs take care of caching and storing nested states. It's the general query interface to retrieve: * ContractsInformation * Accounts

func NewState

func NewState(client *ethereum.Client, blockNumber int64) *StateDB

Create a new state from a given trie.

func (*StateDB) AddAddressToAccessList added in v1.0.0

func (s *StateDB) AddAddressToAccessList(addr common.Address)

AddAddressToAccessList adds the given address to the access list

func (*StateDB) AddBalance

func (s *StateDB) AddBalance(addr common.Address, amount *big.Int)

AddBalance adds amount to the account associated with addr.

func (*StateDB) AddLog

func (s *StateDB) AddLog(log *types.Log)

func (*StateDB) AddPreimage

func (s *StateDB) AddPreimage(hash common.Hash, preimage []byte)

AddPreimage records a SHA3 preimage seen by the VM.

func (*StateDB) AddRefund

func (s *StateDB) AddRefund(gas uint64)

AddRefund adds gas to the refund counter

func (*StateDB) AddSlotToAccessList added in v1.0.0

func (s *StateDB) AddSlotToAccessList(addr common.Address, slot common.Hash)

AddSlotToAccessList adds the given (address, slot)-tuple to the access list

func (*StateDB) AddressInAccessList added in v1.0.0

func (s *StateDB) AddressInAccessList(addr common.Address) bool

AddressInAccessList returns true if the given address is in the access list.

func (*StateDB) CleanErr

func (s *StateDB) CleanErr()

func (*StateDB) CreateAccount

func (s *StateDB) CreateAccount(addr common.Address)

CreateAccount explicitly creates a state object. If a state object with the address already exists the balance is carried over to the new account.

CreateAccount is called during the EVM CREATE operation. The situation might arise that a contract does the following:

  1. sends funds to sha(account ++ (nonce + 1))
  2. tx_create(sha(account ++ nonce)) (note that this gets the address of 1)

Carrying over the balance ensures that Ether doesn't disappear.

func (*StateDB) Empty

func (s *StateDB) Empty(addr common.Address) bool

Empty returns whether the state object is either non-existent or empty according to the EIP161 specification (balance = nonce = code = 0)

func (*StateDB) Exist

func (s *StateDB) Exist(addr common.Address) bool

Exist reports whether the given account address exists in the state. Notably this also returns true for suicided accounts.

func (*StateDB) Finalise

func (s *StateDB) Finalise(deleteEmptyObjects bool)

func (*StateDB) ForEachStorage

func (s *StateDB) ForEachStorage(common.Address, func(common.Hash, common.Hash) bool) error

func (*StateDB) GetBalance

func (s *StateDB) GetBalance(addr common.Address) *big.Int

Retrieve the balance from the given address or 0 if object not found

func (*StateDB) GetCode

func (s *StateDB) GetCode(addr common.Address) []byte

func (*StateDB) GetCodeHash

func (s *StateDB) GetCodeHash(addr common.Address) common.Hash

func (*StateDB) GetCodeSize

func (s *StateDB) GetCodeSize(addr common.Address) int

func (*StateDB) GetCommittedState

func (s *StateDB) GetCommittedState(addr common.Address, hash common.Hash) common.Hash

GetCommittedState retrieves a value from the given account's committed storage trie.

func (*StateDB) GetDbErr

func (s *StateDB) GetDbErr() error

func (*StateDB) GetLogs

func (s *StateDB) GetLogs(hash common.Hash) []*types.Log

func (*StateDB) GetNonce

func (s *StateDB) GetNonce(addr common.Address) uint64

func (*StateDB) GetOrNewStateObject

func (s *StateDB) GetOrNewStateObject(addr common.Address) *stateObject

Retrieve a state object or create a new state object if nil.

func (*StateDB) GetRefund

func (s *StateDB) GetRefund() uint64

GetRefund returns the current value of the refund counter.

func (*StateDB) GetState

func (s *StateDB) GetState(addr common.Address, bhash common.Hash) common.Hash

GetState retrieves a value from the given account's storage trie.

func (*StateDB) GetStateObject

func (s *StateDB) GetStateObject(addr common.Address) *stateObject

func (*StateDB) GetStateObjects

func (s *StateDB) GetStateObjects() []*stateObject

func (*StateDB) HasSuicided

func (s *StateDB) HasSuicided(addr common.Address) bool

func (*StateDB) Prepare

func (s *StateDB) Prepare(thash, bhash common.Hash, ti int)

func (*StateDB) PrepareAccessList added in v1.0.0

func (s *StateDB) PrepareAccessList(sender common.Address, dst *common.Address, precompiles []common.Address, list types.AccessList)

PrepareAccessList handles the preparatory steps for executing a state transition with regards to both EIP-2929 and EIP-2930:

- Add sender to access list (2929) - Add destination to access list (2929) - Add precompiles to access list (2929) - Add the contents of the optional tx access list (2930)

This method should only be called if Yolov3/Berlin/2929+2930 is applicable at the current number.

func (*StateDB) RevertToSnapshot

func (s *StateDB) RevertToSnapshot(revid int)

RevertToSnapshot reverts all state changes made since the given revision.

func (*StateDB) SetCode

func (s *StateDB) SetCode(addr common.Address, code []byte)

func (*StateDB) SetNonce

func (s *StateDB) SetNonce(addr common.Address, nonce uint64)

func (*StateDB) SetState

func (s *StateDB) SetState(addr common.Address, key, value common.Hash)

func (*StateDB) SlotInAccessList added in v1.0.0

func (s *StateDB) SlotInAccessList(addr common.Address, slot common.Hash) (addressPresent bool, slotPresent bool)

SlotInAccessList returns true if the given (address, slot)-tuple is in the access list.

func (*StateDB) Snapshot

func (s *StateDB) Snapshot() int

Snapshot returns an identifier for the current revision of the state.

func (*StateDB) SubBalance

func (s *StateDB) SubBalance(addr common.Address, amount *big.Int)

SubBalance subtracts amount from the account associated with addr.

func (*StateDB) SubRefund

func (s *StateDB) SubRefund(gas uint64)

SubRefund removes gas from the refund counter. This method will panic if the refund counter goes below zero

func (*StateDB) Suicide

func (s *StateDB) Suicide(addr common.Address) bool

Suicide marks the given account as suicided. This clears the account balance.

The account's state object is still available until the state is committed, getStateObject will return a non-nil account after Suicide.

type Storage

type Storage map[common.Hash]common.Hash

func (Storage) Copy

func (s Storage) Copy() Storage

func (Storage) String

func (s Storage) String() (str string)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL