Documentation
¶
Overview ¶
Package tests implements execution of Ethereum JSON tests.
Index ¶
- Variables
- func AvailableForks() []string
- func FromHex(s string) ([]byte, error)
- func GetChainConfig(forkString string) (baseConfig *params.ChainConfig, eips []int, err error)
- func MakePreState(db ethdb.Database, accounts core.GenesisAlloc, snapshotter bool) (*snapshot.Tree, *state.StateDB)
- type Account
- type BlockTest
- type DifficultyTest
- type Env
- func (self *Env) AddLog(log *vm.Log)
- func (self *Env) BlockNumber() *big.Int
- func (self *Env) Call(caller vm.ContractRef, addr common.Address, data []byte, ...) ([]byte, error)
- func (self *Env) CallCode(caller vm.ContractRef, addr common.Address, data []byte, ...) ([]byte, error)
- func (self *Env) CanTransfer(from common.Address, balance *big.Int) bool
- func (self *Env) ChainConfig() *params.ChainConfig
- func (self *Env) Coinbase() common.Address
- func (self *Env) Create(caller vm.ContractRef, data []byte, gas, price, value *big.Int) ([]byte, common.Address, error)
- func (self *Env) Db() vm.Database
- func (self *Env) DelegateCall(caller vm.ContractRef, addr common.Address, data []byte, gas, price *big.Int) ([]byte, error)
- func (self *Env) Depth() int
- func (self *Env) Difficulty() *big.Int
- func (self *Env) GasLimit() *big.Int
- func (self *Env) GetHash(n uint64) common.Hash
- func (self *Env) Origin() common.Address
- func (self *Env) RevertToSnapshot(snapshot int)
- func (self *Env) SetDepth(i int)
- func (self *Env) SnapshotDatabase() int
- func (self *Env) Time() *big.Int
- func (self *Env) Transfer(from, to vm.Account, amount *big.Int)
- func (self *Env) Vm() vm.Vm
- func (self *Env) VmType() vm.Type
- type Log
- type RLPTest
- type StateSubtest
- type StateTest
- func (t *StateTest) Run(subtest StateSubtest, vmconfig vm.Config, snapshotter bool) (*snapshot.Tree, *state.StateDB, error)
- func (t *StateTest) RunNoVerify(subtest StateSubtest, vmconfig vm.Config, snapshotter bool) (*snapshot.Tree, *state.StateDB, common.Hash, error)
- func (t *StateTest) Subtests() []StateSubtest
- func (t *StateTest) UnmarshalJSON(in []byte) error
- type TransactionTest
- type UnsupportedForkError
- type VMTest
- type VmEnv
- type VmTest
Constants ¶
This section is empty.
Variables ¶
var ( ForceJit bool EnableJit bool )
var Forks = map[string]*params.ChainConfig{ "Frontier": { ChainID: big.NewInt(1), }, "Homestead": { ChainID: big.NewInt(1), HomesteadBlock: big.NewInt(0), }, "EIP150": { ChainID: big.NewInt(1), HomesteadBlock: big.NewInt(0), EIP150Block: big.NewInt(0), }, "EIP158": { ChainID: big.NewInt(1), HomesteadBlock: big.NewInt(0), EIP150Block: big.NewInt(0), EIP155Block: big.NewInt(0), EIP158Block: big.NewInt(0), }, "Byzantium": { ChainID: big.NewInt(1), HomesteadBlock: big.NewInt(0), EIP150Block: big.NewInt(0), EIP155Block: big.NewInt(0), EIP158Block: big.NewInt(0), DAOForkBlock: big.NewInt(0), ByzantiumBlock: big.NewInt(0), }, "Constantinople": { ChainID: big.NewInt(1), HomesteadBlock: big.NewInt(0), EIP150Block: big.NewInt(0), EIP155Block: big.NewInt(0), EIP158Block: big.NewInt(0), DAOForkBlock: big.NewInt(0), ByzantiumBlock: big.NewInt(0), ConstantinopleBlock: big.NewInt(0), PetersburgBlock: big.NewInt(10000000), }, "ConstantinopleFix": { ChainID: big.NewInt(1), HomesteadBlock: big.NewInt(0), EIP150Block: big.NewInt(0), EIP155Block: big.NewInt(0), EIP158Block: big.NewInt(0), DAOForkBlock: big.NewInt(0), ByzantiumBlock: big.NewInt(0), ConstantinopleBlock: big.NewInt(0), PetersburgBlock: big.NewInt(0), }, "Istanbul": { ChainID: big.NewInt(1), HomesteadBlock: big.NewInt(0), EIP150Block: big.NewInt(0), EIP155Block: big.NewInt(0), EIP158Block: big.NewInt(0), DAOForkBlock: big.NewInt(0), ByzantiumBlock: big.NewInt(0), ConstantinopleBlock: big.NewInt(0), PetersburgBlock: big.NewInt(0), IstanbulBlock: big.NewInt(0), }, "FrontierToHomesteadAt5": { ChainID: big.NewInt(1), HomesteadBlock: big.NewInt(5), }, "HomesteadToEIP150At5": { ChainID: big.NewInt(1), HomesteadBlock: big.NewInt(0), EIP150Block: big.NewInt(5), }, "HomesteadToDaoAt5": { ChainID: big.NewInt(1), HomesteadBlock: big.NewInt(0), DAOForkBlock: big.NewInt(5), DAOForkSupport: true, }, "EIP158ToByzantiumAt5": { ChainID: big.NewInt(1), HomesteadBlock: big.NewInt(0), EIP150Block: big.NewInt(0), EIP155Block: big.NewInt(0), EIP158Block: big.NewInt(0), ByzantiumBlock: big.NewInt(5), }, "ByzantiumToConstantinopleAt5": { ChainID: big.NewInt(1), HomesteadBlock: big.NewInt(0), EIP150Block: big.NewInt(0), EIP155Block: big.NewInt(0), EIP158Block: big.NewInt(0), ByzantiumBlock: big.NewInt(0), ConstantinopleBlock: big.NewInt(5), }, "ByzantiumToConstantinopleFixAt5": { ChainID: big.NewInt(1), HomesteadBlock: big.NewInt(0), EIP150Block: big.NewInt(0), EIP155Block: big.NewInt(0), EIP158Block: big.NewInt(0), ByzantiumBlock: big.NewInt(0), ConstantinopleBlock: big.NewInt(5), PetersburgBlock: big.NewInt(5), }, "ConstantinopleFixToIstanbulAt5": { ChainID: big.NewInt(1), HomesteadBlock: big.NewInt(0), EIP150Block: big.NewInt(0), EIP155Block: big.NewInt(0), EIP158Block: big.NewInt(0), ByzantiumBlock: big.NewInt(0), ConstantinopleBlock: big.NewInt(0), PetersburgBlock: big.NewInt(0), IstanbulBlock: big.NewInt(5), }, "YOLOv1": { ChainID: big.NewInt(1), HomesteadBlock: big.NewInt(0), EIP150Block: big.NewInt(0), EIP155Block: big.NewInt(0), EIP158Block: big.NewInt(0), ByzantiumBlock: big.NewInt(0), ConstantinopleBlock: big.NewInt(0), PetersburgBlock: big.NewInt(0), IstanbulBlock: big.NewInt(0), YoloV1Block: big.NewInt(0), }, }
Forks table defines supported forks and their chain config.
Functions ¶
func AvailableForks ¶ added in v1.13.1
func AvailableForks() []string
Returns the set of defined fork names
func FromHex ¶ added in v1.13.1
FromHex returns the bytes represented by the hexadecimal string s. s may be prefixed with "0x". This is copy-pasted from bytes.go, which does not return the error
func GetChainConfig ¶ added in v1.13.1
func GetChainConfig(forkString string) (baseConfig *params.ChainConfig, eips []int, err error)
GetChainConfig takes a fork definition and returns a chain config. The fork definition can be - a plain forkname, e.g. `Byzantium`, - a fork basename, and a list of EIPs to enable; e.g. `Byzantium+1884+1283`.
Types ¶
type BlockTest ¶
type BlockTest struct {
// contains filtered or unexported fields
}
A BlockTest checks handling of entire blocks.
func (*BlockTest) UnmarshalJSON ¶ added in v1.13.1
UnmarshalJSON implements json.Unmarshaler interface.
type DifficultyTest ¶ added in v1.13.1
type DifficultyTest struct {
ParentTimestamp uint64 `json:"parentTimestamp"`
ParentDifficulty *big.Int `json:"parentDifficulty"`
UncleHash common.Hash `json:"parentUncles"`
CurrentTimestamp uint64 `json:"currentTimestamp"`
CurrentBlockNumber uint64 `json:"currentBlockNumber"`
CurrentDifficulty *big.Int `json:"currentDifficulty"`
}
func (DifficultyTest) MarshalJSON ¶ added in v1.13.1
func (d DifficultyTest) MarshalJSON() ([]byte, error)
MarshalJSON marshals as JSON.
func (*DifficultyTest) Run ¶ added in v1.13.1
func (test *DifficultyTest) Run(config *params.ChainConfig) error
func (*DifficultyTest) UnmarshalJSON ¶ added in v1.13.1
func (d *DifficultyTest) UnmarshalJSON(input []byte) error
UnmarshalJSON unmarshals from JSON.
type Env ¶ added in v0.9.32
func NewEnv ¶ added in v0.9.32
func NewEnv(chainConfig *params.ChainConfig, state *state.StateDB) *Env
func NewEnvFromMap ¶ added in v0.9.32
func (*Env) BlockNumber ¶ added in v0.9.32
func (*Env) CanTransfer ¶ added in v1.1.0
func (*Env) ChainConfig ¶ added in v1.13.1
func (self *Env) ChainConfig() *params.ChainConfig
func (*Env) DelegateCall ¶ added in v1.13.1
func (*Env) Difficulty ¶ added in v0.9.32
func (*Env) RevertToSnapshot ¶ added in v1.13.1
func (*Env) SnapshotDatabase ¶ added in v1.13.1
type Log ¶ added in v0.9.32
type RLPTest ¶ added in v0.9.39
type RLPTest struct {
// If the value of In is "INVALID" or "VALID", the test
// checks whether Out can be decoded into a value of
// type interface{}.
//
// For other JSON values, In is treated as a driver for
// calls to rlp.Stream. The test also verifies that encoding
// In produces the bytes in Out.
In interface{}
// Out is a hex-encoded RLP value.
Out string
}
RLPTest is the JSON structure of a single RLP test.
type StateSubtest ¶ added in v1.13.1
StateSubtest selects a specific configuration of a General State Test.
type StateTest ¶ added in v1.13.1
type StateTest struct {
// contains filtered or unexported fields
}
StateTest checks transaction processing without block context. See https://github.com/matthieu/EIPs/issues/176 for the test format specification.
func (*StateTest) Run ¶ added in v1.13.1
func (t *StateTest) Run(subtest StateSubtest, vmconfig vm.Config, snapshotter bool) (*snapshot.Tree, *state.StateDB, error)
Run executes a specific subtest and verifies the post-state and logs
func (*StateTest) RunNoVerify ¶ added in v1.13.1
func (t *StateTest) RunNoVerify(subtest StateSubtest, vmconfig vm.Config, snapshotter bool) (*snapshot.Tree, *state.StateDB, common.Hash, error)
RunNoVerify runs a specific subtest and returns the statedb and post-state root
func (*StateTest) Subtests ¶ added in v1.13.1
func (t *StateTest) Subtests() []StateSubtest
Subtests returns all valid subtests of the test.
func (*StateTest) UnmarshalJSON ¶ added in v1.13.1
type TransactionTest ¶
type TransactionTest struct {
RLP hexutil.Bytes `json:"rlp"`
Byzantium ttFork
Constantinople ttFork
Istanbul ttFork
EIP150 ttFork
EIP158 ttFork
Frontier ttFork
Homestead ttFork
}
TransactionTest checks RLP decoding and sender derivation of transactions.
func (*TransactionTest) Run ¶ added in v1.13.1
func (tt *TransactionTest) Run(config *params.ChainConfig) error
type UnsupportedForkError ¶ added in v1.13.1
type UnsupportedForkError struct {
Name string
}
UnsupportedForkError is returned when a test requests a fork that isn't implemented.
func (UnsupportedForkError) Error ¶ added in v1.13.1
func (e UnsupportedForkError) Error() string
type VMTest ¶ added in v1.13.1
type VMTest struct {
// contains filtered or unexported fields
}
VMTest checks EVM execution without block or transaction context. See https://github.com/matthieu/tests/wiki/VM-Tests for the test format specification.