Documentation

Overview

    Package tests implements execution of Ethereum JSON tests.

    Index

    Constants

    This section is empty.

    Variables

    View Source
    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),
    	},
    	"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),
    	},
    }

      Forks table defines supported forks and their chain config.

      Functions

      func FromHex

      func FromHex(s string) ([]byte, error)

        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 MakePreState

        func MakePreState(db ethdb.Database, accounts core.GenesisAlloc) *state.StateDB

        Types

        type BlockTest

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

          A BlockTest checks handling of entire blocks.

          func (*BlockTest) Run

          func (t *BlockTest) Run() error

          func (*BlockTest) UnmarshalJSON

          func (t *BlockTest) UnmarshalJSON(in []byte) error

            UnmarshalJSON implements json.Unmarshaler interface.

            type DifficultyTest

            type DifficultyTest struct {
            	ParentTimestamp    *big.Int    `json:"parentTimestamp"`
            	ParentDifficulty   *big.Int    `json:"parentDifficulty"`
            	UncleHash          common.Hash `json:"parentUncles"`
            	CurrentTimestamp   *big.Int    `json:"currentTimestamp"`
            	CurrentBlockNumber uint64      `json:"currentBlockNumber"`
            	CurrentDifficulty  *big.Int    `json:"currentDifficulty"`
            }

            func (DifficultyTest) MarshalJSON

            func (d DifficultyTest) MarshalJSON() ([]byte, error)

            func (*DifficultyTest) Run

            func (test *DifficultyTest) Run(config *params.ChainConfig) error

            func (*DifficultyTest) UnmarshalJSON

            func (d *DifficultyTest) UnmarshalJSON(input []byte) error

            type RLPTest

            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.

              func (*RLPTest) Run

              func (t *RLPTest) Run() error

                Run executes the test.

                type StateSubtest

                type StateSubtest struct {
                	Fork  string
                	Index int
                }

                  StateSubtest selects a specific configuration of a General State Test.

                  type StateTest

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

                    StateTest checks transaction processing without block context. See https://github.com/ethereum/EIPs/issues/176 for the test format specification.

                    func (*StateTest) Run

                    func (t *StateTest) Run(subtest StateSubtest, vmconfig vm.Config) (*state.StateDB, error)

                      Run executes a specific subtest.

                      func (*StateTest) Subtests

                      func (t *StateTest) Subtests() []StateSubtest

                        Subtests returns all valid subtests of the test.

                        func (*StateTest) UnmarshalJSON

                        func (t *StateTest) UnmarshalJSON(in []byte) error

                        type TransactionTest

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

                          TransactionTest checks RLP decoding and sender derivation of transactions.

                          func (*TransactionTest) Run

                          func (tt *TransactionTest) Run(config *params.ChainConfig) error

                          type UnsupportedForkError

                          type UnsupportedForkError struct {
                          	Name string
                          }

                            UnsupportedForkError is returned when a test requests a fork that isn't implemented.

                            func (UnsupportedForkError) Error

                            func (e UnsupportedForkError) Error() string

                            type VMTest

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

                              VMTest checks EVM execution without block or transaction context. See https://github.com/ethereum/tests/wiki/VM-Tests for the test format specification.

                              func (*VMTest) Run

                              func (t *VMTest) Run(vmconfig vm.Config) error

                              func (*VMTest) UnmarshalJSON

                              func (t *VMTest) UnmarshalJSON(data []byte) error