Documentation ¶
Index ¶
- Variables
- func TestState(t *testing.T, buildPreState buildPreState)
- type Account
- type Executor
- func (e *Executor) BeginTxn(parentRoot types.Hash, header *types.Header) (*Transition, error)
- func (e *Executor) ProcessBlock(parentRoot types.Hash, block *types.Block) (*Transition, types.Hash, error)
- func (e *Executor) SetDAOHardFork(block int64)
- func (e *Executor) SetRuntime(r runtime.Runtime)
- func (e *Executor) State() State
- func (e *Executor) StateAt(root types.Hash) (Snapshot, error)
- func (e *Executor) WriteGenesis(alloc chain.GenesisAlloc) types.Hash
- type GetHashByNumber
- type GetHashByNumberHelper
- type Object
- type PreState
- type PreStates
- type Snapshot
- type State
- type StateObject
- type StorageObject
- type Transition
- func (t *Transition) AccountExists(addr types.Address) bool
- func (t *Transition) Apply(msg *types.Transaction) (uint64, bool, error)
- func (t *Transition) Call2(caller types.Address, to types.Address, input []byte, value *big.Int, ...) ([]byte, uint64, error)
- func (t *Transition) Callx(c *runtime.Contract, h runtime.Host) ([]byte, uint64, error)
- func (t *Transition) Commit() (Snapshot, types.Hash)
- func (t *Transition) Context() runtime.TxContext
- func (t *Transition) Create2(caller types.Address, code []byte, value *big.Int, gas uint64) ([]byte, uint64, error)
- func (t *Transition) EmitLog(addr types.Address, topics []types.Hash, data []byte)
- func (t *Transition) Empty(addr types.Address) bool
- func (t *Transition) GetBalance(addr types.Address) *big.Int
- func (t *Transition) GetBlockHash(number int64) (res types.Hash)
- func (t *Transition) GetCode(addr types.Address) []byte
- func (t *Transition) GetCodeHash(addr types.Address) (res types.Hash)
- func (t *Transition) GetCodeSize(addr types.Address) int
- func (t *Transition) GetNonce(addr types.Address) uint64
- func (t *Transition) GetStorage(addr types.Address, key types.Hash) types.Hash
- func (t *Transition) GetTxContext() runtime.TxContext
- func (t *Transition) GetTxnHash() types.Hash
- func (t *Transition) Receipts() []*types.Receipt
- func (t *Transition) Selfdestruct(addr types.Address, beneficiary types.Address)
- func (t *Transition) SetStorage(addr types.Address, key types.Hash, value types.Hash, discount bool) runtime.StorageStatus
- func (t *Transition) SetTxn(txn *Txn)
- func (t *Transition) TotalGas() uint64
- func (t *Transition) Txn() *Txn
- func (t *Transition) Write(txn *types.Transaction) error
- type Txn
- func (txn *Txn) AddBalance(addr types.Address, balance *big.Int)
- func (txn *Txn) AddLog(log *types.Log)
- func (txn *Txn) AddRefund(gas uint64)
- func (txn *Txn) AddSealingReward(addr types.Address, balance *big.Int)
- func (txn *Txn) CleanDeleteObjects(deleteEmptyObjects bool)
- func (txn *Txn) Commit(deleteEmptyObjects bool) (Snapshot, []byte)
- func (txn *Txn) CreateAccount(addr types.Address)
- func (txn *Txn) EmitLog(addr types.Address, topics []types.Hash, data []byte)
- func (txn *Txn) Empty(addr types.Address) bool
- func (txn *Txn) Exist(addr types.Address) bool
- func (txn *Txn) GetAccount(addr types.Address) (*Account, bool)
- func (txn *Txn) GetBalance(addr types.Address) *big.Int
- func (txn *Txn) GetCode(addr types.Address) []byte
- func (txn *Txn) GetCodeHash(addr types.Address) types.Hash
- func (txn *Txn) GetCodeSize(addr types.Address) int
- func (txn *Txn) GetCommittedState(addr types.Address, hash types.Hash) types.Hash
- func (txn *Txn) GetNonce(addr types.Address) uint64
- func (txn *Txn) GetRefund() uint64
- func (txn *Txn) GetState(addr types.Address, hash types.Hash) types.Hash
- func (txn *Txn) HasSuicided(addr types.Address) bool
- func (txn *Txn) IncrNonce(addr types.Address)
- func (txn *Txn) Logs() []*types.Log
- func (txn *Txn) RevertToSnapshot(id int)
- func (txn *Txn) SetBalance(addr types.Address, balance *big.Int)
- func (txn *Txn) SetCode(addr types.Address, code []byte)
- func (txn *Txn) SetNonce(addr types.Address, nonce uint64)
- func (txn *Txn) SetState(addr types.Address, key, value types.Hash)
- func (txn *Txn) SetStorage(addr types.Address, key types.Hash, value types.Hash, discount bool) (status runtime.StorageStatus)
- func (txn *Txn) Snapshot() int
- func (txn *Txn) SubBalance(addr types.Address, balance *big.Int)
- func (txn *Txn) SubRefund(gas uint64)
- func (txn *Txn) Suicide(addr types.Address) bool
- func (txn *Txn) TouchAccount(addr types.Address)
Constants ¶
This section is empty.
Variables ¶
var ( // FrontierBlockReward is the block reward for the Frontier fork FrontierBlockReward = big.NewInt(5e+18) // ByzantiumBlockReward is the block reward for the Byzantium fork ByzantiumBlockReward = big.NewInt(3e+18) // ConstantinopleBlockReward is the block reward for the Constantinople fork ConstantinopleBlockReward = big.NewInt(2e+18) )
Block rewards at different forks
var (
ErrInsufficientBalanceForGas = errors.New("insufficient balance to pay for gas")
)
Functions ¶
Types ¶
type Account ¶
type Account struct { Nonce uint64 Balance *big.Int Root types.Hash CodeHash []byte Trie accountTrie }
Account is the account reference in the ethereum state
func (*Account) UnmarshalRlp ¶
type Executor ¶
type Executor struct { GetHash GetHashByNumberHelper PostHook func(txn *Transition) // contains filtered or unexported fields }
Executor is the main entity
func NewExecutor ¶
NewExecutor creates a new executor
func (*Executor) ProcessBlock ¶
func (e *Executor) ProcessBlock(parentRoot types.Hash, block *types.Block) (*Transition, types.Hash, error)
ProcessBlock already does all the handling of the whole process, TODO
func (*Executor) SetDAOHardFork ¶
SetDAOHardFork sets the dao hard fork if applicable
func (*Executor) SetRuntime ¶
SetRuntime adds a runtime to the runtime set
func (*Executor) WriteGenesis ¶
func (e *Executor) WriteGenesis(alloc chain.GenesisAlloc) types.Hash
type GetHashByNumber ¶
GetHashByNumber returns the hash function of a block number
type GetHashByNumberHelper ¶
type GetHashByNumberHelper = func(*types.Header) GetHashByNumber
type Object ¶
type Object struct { Address types.Address CodeHash types.Hash Balance *big.Int Root types.Hash Nonce uint64 Deleted bool // TODO: Move this to executor DirtyCode bool Code []byte Storage []*StorageObject }
Object is the serialization of the radix object (can be merged to StateObject?).
type StateObject ¶
type StateObject struct { Account *Account Code []byte Suicide bool Deleted bool DirtyCode bool Txn *iradix.Txn }
StateObject is the internal representation of the account
func (*StateObject) Copy ¶
func (s *StateObject) Copy() *StateObject
Copy makes a copy of the state object
func (*StateObject) Empty ¶
func (s *StateObject) Empty() bool
func (*StateObject) GetCommitedState ¶
func (s *StateObject) GetCommitedState(hash types.Hash) types.Hash
type StorageObject ¶
StorageObject is an entry in the storage
type Transition ¶
type Transition struct {
// contains filtered or unexported fields
}
func (*Transition) AccountExists ¶
func (t *Transition) AccountExists(addr types.Address) bool
func (*Transition) Apply ¶
func (t *Transition) Apply(msg *types.Transaction) (uint64, bool, error)
Apply applies a new transaction
func (*Transition) Commit ¶
func (t *Transition) Commit() (Snapshot, types.Hash)
Commit commits the final result
func (*Transition) Context ¶
func (t *Transition) Context() runtime.TxContext
func (*Transition) GetBalance ¶
func (t *Transition) GetBalance(addr types.Address) *big.Int
func (*Transition) GetBlockHash ¶
func (t *Transition) GetBlockHash(number int64) (res types.Hash)
func (*Transition) GetCodeHash ¶
func (t *Transition) GetCodeHash(addr types.Address) (res types.Hash)
func (*Transition) GetCodeSize ¶
func (t *Transition) GetCodeSize(addr types.Address) int
func (*Transition) GetStorage ¶
func (*Transition) GetTxContext ¶
func (t *Transition) GetTxContext() runtime.TxContext
func (*Transition) GetTxnHash ¶
func (t *Transition) GetTxnHash() types.Hash
func (*Transition) Receipts ¶
func (t *Transition) Receipts() []*types.Receipt
func (*Transition) Selfdestruct ¶
func (t *Transition) Selfdestruct(addr types.Address, beneficiary types.Address)
func (*Transition) SetStorage ¶
func (t *Transition) SetStorage(addr types.Address, key types.Hash, value types.Hash, discount bool) runtime.StorageStatus
func (*Transition) SetTxn ¶
func (t *Transition) SetTxn(txn *Txn)
func (*Transition) TotalGas ¶
func (t *Transition) TotalGas() uint64
func (*Transition) Txn ¶
func (t *Transition) Txn() *Txn
func (*Transition) Write ¶
func (t *Transition) Write(txn *types.Transaction) error
Write writes another transaction to the executor
type Txn ¶
type Txn struct {
// contains filtered or unexported fields
}
Txn is a reference of the state
func (*Txn) AddBalance ¶
AddBalance adds balance
func (*Txn) AddSealingReward ¶
func (*Txn) CleanDeleteObjects ¶
func (*Txn) CreateAccount ¶
func (*Txn) GetAccount ¶
GetAccount returns an account
func (*Txn) GetBalance ¶
GetBalance returns the balance of an address
func (*Txn) GetCommittedState ¶
GetCommittedState returns the state of the address in the trie
func (*Txn) HasSuicided ¶
HasSuicided returns true if the account suicided
func (*Txn) RevertToSnapshot ¶
RevertToSnapshot reverts to a given snapshot
func (*Txn) SetBalance ¶
SetBalance sets the balance
func (*Txn) SetStorage ¶
func (*Txn) SubBalance ¶
SubBalance reduces the balance