diff --git a/tests/block_test.go b/tests/block_test.go
deleted file mode 100644
index aa6f27b8f3..0000000000
--- a/tests/block_test.go
+++ /dev/null
@@ -1,93 +0,0 @@
-// Copyright 2015 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see .
-
-package tests
-
-import (
- "math/rand"
- "runtime"
- "testing"
-
- "github.com/ethereum/go-ethereum/common"
- "github.com/ethereum/go-ethereum/core/rawdb"
-)
-
-func TestBlockchain(t *testing.T) {
- bt := new(testMatcher)
- // General state tests are 'exported' as blockchain tests, but we can run them natively.
- // For speedier CI-runs, the line below can be uncommented, so those are skipped.
- // For now, in hardfork-times (Berlin), we run the tests both as StateTests and
- // as blockchain tests, since the latter also covers things like receipt root
- bt.skipLoad(`^GeneralStateTests/`)
-
- // Skip random failures due to selfish mining test
- bt.skipLoad(`.*bcForgedTest/bcForkUncle\.json`)
-
- // Slow tests
- bt.slow(`.*bcExploitTest/DelegateCallSpam.json`)
- bt.slow(`.*bcExploitTest/ShanghaiLove.json`)
- bt.slow(`.*bcExploitTest/SuicideIssue.json`)
- bt.slow(`.*/bcForkStressTest/`)
- bt.slow(`.*/bcGasPricerTest/RPC_API_Test.json`)
- bt.slow(`.*/bcWalletTest/`)
-
- // Very slow test
- bt.skipLoad(`.*/stTimeConsuming/.*`)
- // test takes a lot for time and goes easily OOM because of sha3 calculation on a huge range,
- // using 4.6 TGas
- bt.skipLoad(`.*randomStatetest94.json.*`)
-
- bt.walk(t, blockTestDir, func(t *testing.T, name string, test *BlockTest) {
- if runtime.GOARCH == "386" && runtime.GOOS == "windows" && rand.Int63()%2 == 0 {
- t.Skip("test (randomly) skipped on 32-bit windows")
- }
- execBlockTest(t, bt, test)
- })
- // There is also a LegacyTests folder, containing blockchain tests generated
- // prior to Istanbul. However, they are all derived from GeneralStateTests,
- // which run natively, so there's no reason to run them here.
-}
-
-// TestExecutionSpec runs the test fixtures from execution-spec-tests.
-func TestExecutionSpec(t *testing.T) {
- if !common.FileExist(executionSpecDir) {
- t.Skipf("directory %s does not exist", executionSpecDir)
- }
- bt := new(testMatcher)
-
- bt.walk(t, executionSpecDir, func(t *testing.T, name string, test *BlockTest) {
- execBlockTest(t, bt, test)
- })
-}
-
-func execBlockTest(t *testing.T, bt *testMatcher, test *BlockTest) {
- if err := bt.checkFailure(t, test.Run(false, rawdb.HashScheme, nil, nil)); err != nil {
- t.Errorf("test in hash mode without snapshotter failed: %v", err)
- return
- }
- if err := bt.checkFailure(t, test.Run(true, rawdb.HashScheme, nil, nil)); err != nil {
- t.Errorf("test in hash mode with snapshotter failed: %v", err)
- return
- }
- if err := bt.checkFailure(t, test.Run(false, rawdb.PathScheme, nil, nil)); err != nil {
- t.Errorf("test in path mode without snapshotter failed: %v", err)
- return
- }
- if err := bt.checkFailure(t, test.Run(true, rawdb.PathScheme, nil, nil)); err != nil {
- t.Errorf("test in path mode with snapshotter failed: %v", err)
- return
- }
-}
diff --git a/tests/block_test_util.go b/tests/block_test_util.go
deleted file mode 100644
index e0130be48a..0000000000
--- a/tests/block_test_util.go
+++ /dev/null
@@ -1,377 +0,0 @@
-// Copyright 2015 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see .
-
-// Package tests implements execution of Ethereum JSON tests.
-package tests
-
-import (
- "bytes"
- "encoding/hex"
- "encoding/json"
- "fmt"
- "math/big"
- "os"
- "reflect"
-
- "github.com/ethereum/go-ethereum/common"
- "github.com/ethereum/go-ethereum/common/hexutil"
- "github.com/ethereum/go-ethereum/common/math"
- "github.com/ethereum/go-ethereum/consensus/beacon"
- "github.com/ethereum/go-ethereum/consensus/ethash"
- "github.com/ethereum/go-ethereum/core"
- "github.com/ethereum/go-ethereum/core/rawdb"
- "github.com/ethereum/go-ethereum/core/state"
- "github.com/ethereum/go-ethereum/core/types"
- "github.com/ethereum/go-ethereum/core/vm"
- "github.com/ethereum/go-ethereum/params"
- "github.com/ethereum/go-ethereum/rlp"
- "github.com/ethereum/go-ethereum/trie"
- "github.com/ethereum/go-ethereum/trie/triedb/hashdb"
- "github.com/ethereum/go-ethereum/trie/triedb/pathdb"
-)
-
-// A BlockTest checks handling of entire blocks.
-type BlockTest struct {
- json btJSON
-}
-
-// UnmarshalJSON implements json.Unmarshaler interface.
-func (t *BlockTest) UnmarshalJSON(in []byte) error {
- return json.Unmarshal(in, &t.json)
-}
-
-type btJSON struct {
- Blocks []btBlock `json:"blocks"`
- Genesis btHeader `json:"genesisBlockHeader"`
- Pre core.GenesisAlloc `json:"pre"`
- Post core.GenesisAlloc `json:"postState"`
- BestBlock common.UnprefixedHash `json:"lastblockhash"`
- Network string `json:"network"`
- SealEngine string `json:"sealEngine"`
-}
-
-type btBlock struct {
- BlockHeader *btHeader
- ExpectException string
- Rlp string
- UncleHeaders []*btHeader
-}
-
-//go:generate go run github.com/fjl/gencodec -type btHeader -field-override btHeaderMarshaling -out gen_btheader.go
-
-type btHeader struct {
- Bloom types.Bloom
- Coinbase common.Address
- MixHash common.Hash
- Nonce types.BlockNonce
- Number *big.Int
- Hash common.Hash
- ParentHash common.Hash
- ReceiptTrie common.Hash
- StateRoot common.Hash
- TransactionsTrie common.Hash
- UncleHash common.Hash
- ExtraData []byte
- Difficulty *big.Int
- GasLimit uint64
- GasUsed uint64
- Timestamp uint64
- BaseFeePerGas *big.Int
- WithdrawalsRoot *common.Hash
- BlobGasUsed *uint64
- ExcessBlobGas *uint64
- ParentBeaconBlockRoot *common.Hash
-}
-
-type btHeaderMarshaling struct {
- ExtraData hexutil.Bytes
- Number *math.HexOrDecimal256
- Difficulty *math.HexOrDecimal256
- GasLimit math.HexOrDecimal64
- GasUsed math.HexOrDecimal64
- Timestamp math.HexOrDecimal64
- BaseFeePerGas *math.HexOrDecimal256
- BlobGasUsed *math.HexOrDecimal64
- ExcessBlobGas *math.HexOrDecimal64
-}
-
-func (t *BlockTest) Run(snapshotter bool, scheme string, tracer vm.EVMLogger, postCheck func(error, *core.BlockChain)) (result error) {
- config, ok := Forks[t.json.Network]
- if !ok {
- return UnsupportedForkError{t.json.Network}
- }
- // import pre accounts & construct test genesis block & state root
- var (
- db = rawdb.NewMemoryDatabase()
- tconf = &trie.Config{
- Preimages: true,
- }
- )
- if scheme == rawdb.PathScheme {
- tconf.PathDB = pathdb.Defaults
- } else {
- tconf.HashDB = hashdb.Defaults
- }
- // Commit genesis state
- gspec := t.genesis(config)
- triedb := trie.NewDatabase(db, tconf)
- gblock, err := gspec.Commit(db, triedb)
- if err != nil {
- return err
- }
- triedb.Close() // close the db to prevent memory leak
-
- if gblock.Hash() != t.json.Genesis.Hash {
- return fmt.Errorf("genesis block hash doesn't match test: computed=%x, test=%x", gblock.Hash().Bytes()[:6], t.json.Genesis.Hash[:6])
- }
- if gblock.Root() != t.json.Genesis.StateRoot {
- return fmt.Errorf("genesis block state root does not match test: computed=%x, test=%x", gblock.Root().Bytes()[:6], t.json.Genesis.StateRoot[:6])
- }
- // Wrap the original engine within the beacon-engine
- engine := beacon.New(ethash.NewFaker())
-
- cache := &core.CacheConfig{TrieCleanLimit: 0, StateScheme: scheme, Preimages: true}
- if snapshotter {
- cache.SnapshotLimit = 1
- cache.SnapshotWait = true
- }
- chain, err := core.NewBlockChain(db, cache, gspec, nil, engine, vm.Config{
- Tracer: tracer,
- }, nil, nil)
- if err != nil {
- return err
- }
- defer chain.Stop()
-
- validBlocks, err := t.insertBlocks(chain)
- if err != nil {
- return err
- }
- // Import succeeded: regardless of whether the _test_ succeeds or not, schedule
- // the post-check to run
- if postCheck != nil {
- defer postCheck(result, chain)
- }
- cmlast := chain.CurrentBlock().Hash()
- if common.Hash(t.json.BestBlock) != cmlast {
- return fmt.Errorf("last block hash validation mismatch: want: %x, have: %x", t.json.BestBlock, cmlast)
- }
- newDB, err := chain.State()
- if err != nil {
- return err
- }
- if err = t.validatePostState(newDB); err != nil {
- return fmt.Errorf("post state validation failed: %v", err)
- }
- // Cross-check the snapshot-to-hash against the trie hash
- if snapshotter {
- if err := chain.Snapshots().Verify(chain.CurrentBlock().Root); err != nil {
- return err
- }
- }
- return t.validateImportedHeaders(chain, validBlocks)
-}
-
-func (t *BlockTest) genesis(config *params.ChainConfig) *core.Genesis {
- return &core.Genesis{
- Config: config,
- Nonce: t.json.Genesis.Nonce.Uint64(),
- Timestamp: t.json.Genesis.Timestamp,
- ParentHash: t.json.Genesis.ParentHash,
- ExtraData: t.json.Genesis.ExtraData,
- GasLimit: t.json.Genesis.GasLimit,
- GasUsed: t.json.Genesis.GasUsed,
- Difficulty: t.json.Genesis.Difficulty,
- Mixhash: t.json.Genesis.MixHash,
- Coinbase: t.json.Genesis.Coinbase,
- Alloc: t.json.Pre,
- BaseFee: t.json.Genesis.BaseFeePerGas,
- BlobGasUsed: t.json.Genesis.BlobGasUsed,
- ExcessBlobGas: t.json.Genesis.ExcessBlobGas,
- }
-}
-
-/*
-See https://github.com/ethereum/tests/wiki/Blockchain-Tests-II
-
- Whether a block is valid or not is a bit subtle, it's defined by presence of
- blockHeader, transactions and uncleHeaders fields. If they are missing, the block is
- invalid and we must verify that we do not accept it.
-
- Since some tests mix valid and invalid blocks we need to check this for every block.
-
- If a block is invalid it does not necessarily fail the test, if it's invalidness is
- expected we are expected to ignore it and continue processing and then validate the
- post state.
-*/
-func (t *BlockTest) insertBlocks(blockchain *core.BlockChain) ([]btBlock, error) {
- validBlocks := make([]btBlock, 0)
- // insert the test blocks, which will execute all transactions
- for bi, b := range t.json.Blocks {
- cb, err := b.decode()
- if err != nil {
- if b.BlockHeader == nil {
- continue // OK - block is supposed to be invalid, continue with next block
- } else {
- return nil, fmt.Errorf("block RLP decoding failed when expected to succeed: %v", err)
- }
- }
- // RLP decoding worked, try to insert into chain:
- blocks := types.Blocks{cb}
- i, err := blockchain.InsertChain(blocks)
- if err != nil {
- if b.BlockHeader == nil {
- continue // OK - block is supposed to be invalid, continue with next block
- } else {
- return nil, fmt.Errorf("block #%v insertion into chain failed: %v", blocks[i].Number(), err)
- }
- }
- if b.BlockHeader == nil {
- if data, err := json.MarshalIndent(cb.Header(), "", " "); err == nil {
- fmt.Fprintf(os.Stderr, "block (index %d) insertion should have failed due to: %v:\n%v\n",
- bi, b.ExpectException, string(data))
- }
- return nil, fmt.Errorf("block (index %d) insertion should have failed due to: %v",
- bi, b.ExpectException)
- }
-
- // validate RLP decoding by checking all values against test file JSON
- if err = validateHeader(b.BlockHeader, cb.Header()); err != nil {
- return nil, fmt.Errorf("deserialised block header validation failed: %v", err)
- }
- validBlocks = append(validBlocks, b)
- }
- return validBlocks, nil
-}
-
-func validateHeader(h *btHeader, h2 *types.Header) error {
- if h.Bloom != h2.Bloom {
- return fmt.Errorf("bloom: want: %x have: %x", h.Bloom, h2.Bloom)
- }
- if h.Coinbase != h2.Coinbase {
- return fmt.Errorf("coinbase: want: %x have: %x", h.Coinbase, h2.Coinbase)
- }
- if h.MixHash != h2.MixDigest {
- return fmt.Errorf("MixHash: want: %x have: %x", h.MixHash, h2.MixDigest)
- }
- if h.Nonce != h2.Nonce {
- return fmt.Errorf("nonce: want: %x have: %x", h.Nonce, h2.Nonce)
- }
- if h.Number.Cmp(h2.Number) != 0 {
- return fmt.Errorf("number: want: %v have: %v", h.Number, h2.Number)
- }
- if h.ParentHash != h2.ParentHash {
- return fmt.Errorf("parent hash: want: %x have: %x", h.ParentHash, h2.ParentHash)
- }
- if h.ReceiptTrie != h2.ReceiptHash {
- return fmt.Errorf("receipt hash: want: %x have: %x", h.ReceiptTrie, h2.ReceiptHash)
- }
- if h.TransactionsTrie != h2.TxHash {
- return fmt.Errorf("tx hash: want: %x have: %x", h.TransactionsTrie, h2.TxHash)
- }
- if h.StateRoot != h2.Root {
- return fmt.Errorf("state hash: want: %x have: %x", h.StateRoot, h2.Root)
- }
- if h.UncleHash != h2.UncleHash {
- return fmt.Errorf("uncle hash: want: %x have: %x", h.UncleHash, h2.UncleHash)
- }
- if !bytes.Equal(h.ExtraData, h2.Extra) {
- return fmt.Errorf("extra data: want: %x have: %x", h.ExtraData, h2.Extra)
- }
- if h.Difficulty.Cmp(h2.Difficulty) != 0 {
- return fmt.Errorf("difficulty: want: %v have: %v", h.Difficulty, h2.Difficulty)
- }
- if h.GasLimit != h2.GasLimit {
- return fmt.Errorf("gasLimit: want: %d have: %d", h.GasLimit, h2.GasLimit)
- }
- if h.GasUsed != h2.GasUsed {
- return fmt.Errorf("gasUsed: want: %d have: %d", h.GasUsed, h2.GasUsed)
- }
- if h.Timestamp != h2.Time {
- return fmt.Errorf("timestamp: want: %v have: %v", h.Timestamp, h2.Time)
- }
- if !reflect.DeepEqual(h.BaseFeePerGas, h2.BaseFee) {
- return fmt.Errorf("baseFeePerGas: want: %v have: %v", h.BaseFeePerGas, h2.BaseFee)
- }
- if !reflect.DeepEqual(h.WithdrawalsRoot, h2.WithdrawalsHash) {
- return fmt.Errorf("withdrawalsRoot: want: %v have: %v", h.WithdrawalsRoot, h2.WithdrawalsHash)
- }
- if !reflect.DeepEqual(h.BlobGasUsed, h2.BlobGasUsed) {
- return fmt.Errorf("blobGasUsed: want: %v have: %v", h.BlobGasUsed, h2.BlobGasUsed)
- }
- if !reflect.DeepEqual(h.ExcessBlobGas, h2.ExcessBlobGas) {
- return fmt.Errorf("excessBlobGas: want: %v have: %v", h.ExcessBlobGas, h2.ExcessBlobGas)
- }
- if !reflect.DeepEqual(h.ParentBeaconBlockRoot, h2.ParentBeaconRoot) {
- return fmt.Errorf("parentBeaconBlockRoot: want: %v have: %v", h.ParentBeaconBlockRoot, h2.ParentBeaconRoot)
- }
- return nil
-}
-
-func (t *BlockTest) validatePostState(statedb *state.StateDB) error {
- // validate post state accounts in test file against what we have in state db
- for addr, acct := range t.json.Post {
- // address is indirectly verified by the other fields, as it's the db key
- code2 := statedb.GetCode(addr)
- balance2 := statedb.GetBalance(addr)
- nonce2 := statedb.GetNonce(addr)
- if !bytes.Equal(code2, acct.Code) {
- return fmt.Errorf("account code mismatch for addr: %s want: %v have: %s", addr, acct.Code, hex.EncodeToString(code2))
- }
- if balance2.Cmp(acct.Balance) != 0 {
- return fmt.Errorf("account balance mismatch for addr: %s, want: %d, have: %d", addr, acct.Balance, balance2)
- }
- if nonce2 != acct.Nonce {
- return fmt.Errorf("account nonce mismatch for addr: %s want: %d have: %d", addr, acct.Nonce, nonce2)
- }
- for k, v := range acct.Storage {
- v2 := statedb.GetState(addr, k)
- if v2 != v {
- return fmt.Errorf("account storage mismatch for addr: %s, slot: %x, want: %x, have: %x", addr, k, v, v2)
- }
- }
- }
- return nil
-}
-
-func (t *BlockTest) validateImportedHeaders(cm *core.BlockChain, validBlocks []btBlock) error {
- // to get constant lookup when verifying block headers by hash (some tests have many blocks)
- bmap := make(map[common.Hash]btBlock, len(t.json.Blocks))
- for _, b := range validBlocks {
- bmap[b.BlockHeader.Hash] = b
- }
- // iterate over blocks backwards from HEAD and validate imported
- // headers vs test file. some tests have reorgs, and we import
- // block-by-block, so we can only validate imported headers after
- // all blocks have been processed by BlockChain, as they may not
- // be part of the longest chain until last block is imported.
- for b := cm.CurrentBlock(); b != nil && b.Number.Uint64() != 0; b = cm.GetBlockByHash(b.ParentHash).Header() {
- if err := validateHeader(bmap[b.Hash()].BlockHeader, b); err != nil {
- return fmt.Errorf("imported block header validation failed: %v", err)
- }
- }
- return nil
-}
-
-func (bb *btBlock) decode() (*types.Block, error) {
- data, err := hexutil.Decode(bb.Rlp)
- if err != nil {
- return nil, err
- }
- var b types.Block
- err = rlp.DecodeBytes(data, &b)
- return &b, err
-}
diff --git a/tests/difficulty_test.go b/tests/difficulty_test.go
deleted file mode 100644
index 03e14df7c4..0000000000
--- a/tests/difficulty_test.go
+++ /dev/null
@@ -1,111 +0,0 @@
-// Copyright 2017 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see .
-
-package tests
-
-import (
- "math/big"
- "testing"
-
- "github.com/ethereum/go-ethereum/params"
-)
-
-var (
- mainnetChainConfig = params.ChainConfig{
- ChainID: big.NewInt(1),
- HomesteadBlock: big.NewInt(1150000),
- DAOForkBlock: big.NewInt(1920000),
- DAOForkSupport: true,
- EIP150Block: big.NewInt(2463000),
- EIP155Block: big.NewInt(2675000),
- EIP158Block: big.NewInt(2675000),
- ByzantiumBlock: big.NewInt(4370000),
- }
-
- ropstenChainConfig = params.ChainConfig{
- ChainID: big.NewInt(3),
- HomesteadBlock: big.NewInt(0),
- DAOForkBlock: nil,
- DAOForkSupport: true,
- EIP150Block: big.NewInt(0),
- EIP155Block: big.NewInt(10),
- EIP158Block: big.NewInt(10),
- ByzantiumBlock: big.NewInt(1_700_000),
- ConstantinopleBlock: big.NewInt(4_230_000),
- PetersburgBlock: big.NewInt(4_939_394),
- IstanbulBlock: big.NewInt(6_485_846),
- MuirGlacierBlock: big.NewInt(7_117_117),
- BerlinBlock: big.NewInt(9_812_189),
- LondonBlock: big.NewInt(10_499_401),
- TerminalTotalDifficulty: new(big.Int).SetUint64(50_000_000_000_000_000),
- TerminalTotalDifficultyPassed: true,
- }
-)
-
-func TestDifficulty(t *testing.T) {
- t.Parallel()
-
- dt := new(testMatcher)
- // Not difficulty-tests
- dt.skipLoad("hexencodetest.*")
- dt.skipLoad("crypto.*")
- dt.skipLoad("blockgenesistest\\.json")
- dt.skipLoad("genesishashestest\\.json")
- dt.skipLoad("keyaddrtest\\.json")
- dt.skipLoad("txtest\\.json")
-
- // files are 2 years old, contains strange values
- dt.skipLoad("difficultyCustomHomestead\\.json")
-
- dt.config("Ropsten", ropstenChainConfig)
- dt.config("Frontier", params.ChainConfig{})
-
- dt.config("Homestead", params.ChainConfig{
- HomesteadBlock: big.NewInt(0),
- })
-
- dt.config("Byzantium", params.ChainConfig{
- ByzantiumBlock: big.NewInt(0),
- })
-
- dt.config("Frontier", ropstenChainConfig)
- dt.config("MainNetwork", mainnetChainConfig)
- dt.config("CustomMainNetwork", mainnetChainConfig)
- dt.config("Constantinople", params.ChainConfig{
- ConstantinopleBlock: big.NewInt(0),
- })
- dt.config("EIP2384", params.ChainConfig{
- MuirGlacierBlock: big.NewInt(0),
- })
- dt.config("EIP4345", params.ChainConfig{
- ArrowGlacierBlock: big.NewInt(0),
- })
- dt.config("EIP5133", params.ChainConfig{
- GrayGlacierBlock: big.NewInt(0),
- })
- dt.config("difficulty.json", mainnetChainConfig)
-
- dt.walk(t, difficultyTestDir, func(t *testing.T, name string, test *DifficultyTest) {
- cfg := dt.findConfig(t)
- if test.ParentDifficulty.Cmp(params.MinimumDifficulty) < 0 {
- t.Skip("difficulty below minimum")
- return
- }
- if err := dt.checkFailure(t, test.Run(cfg)); err != nil {
- t.Error(err)
- }
- })
-}
diff --git a/tests/difficulty_test_util.go b/tests/difficulty_test_util.go
deleted file mode 100644
index 62b978f9ef..0000000000
--- a/tests/difficulty_test_util.go
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright 2017 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see .
-
-package tests
-
-import (
- "fmt"
- "math/big"
-
- "github.com/ethereum/go-ethereum/common"
- "github.com/ethereum/go-ethereum/common/math"
- "github.com/ethereum/go-ethereum/consensus/ethash"
- "github.com/ethereum/go-ethereum/core/types"
- "github.com/ethereum/go-ethereum/params"
-)
-
-//go:generate go run github.com/fjl/gencodec -type DifficultyTest -field-override difficultyTestMarshaling -out gen_difficultytest.go
-
-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"`
-}
-
-type difficultyTestMarshaling struct {
- ParentTimestamp math.HexOrDecimal64
- ParentDifficulty *math.HexOrDecimal256
- CurrentTimestamp math.HexOrDecimal64
- CurrentDifficulty *math.HexOrDecimal256
- UncleHash common.Hash
- CurrentBlockNumber math.HexOrDecimal64
-}
-
-func (test *DifficultyTest) Run(config *params.ChainConfig) error {
- parentNumber := big.NewInt(int64(test.CurrentBlockNumber - 1))
- parent := &types.Header{
- Difficulty: test.ParentDifficulty,
- Time: test.ParentTimestamp,
- Number: parentNumber,
- UncleHash: test.UncleHash,
- }
-
- actual := ethash.CalcDifficulty(config, test.CurrentTimestamp, parent)
- exp := test.CurrentDifficulty
-
- if actual.Cmp(exp) != 0 {
- return fmt.Errorf("parent[time %v diff %v unclehash:%x] child[time %v number %v] diff %v != expected %v",
- test.ParentTimestamp, test.ParentDifficulty, test.UncleHash,
- test.CurrentTimestamp, test.CurrentBlockNumber, actual, exp)
- }
- return nil
-}
diff --git a/tests/evm-benchmarks b/tests/evm-benchmarks
deleted file mode 160000
index d8b88f4046..0000000000
--- a/tests/evm-benchmarks
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit d8b88f4046a87d6b902378cef752591f95427b43
diff --git a/tests/fuzzers/README.md b/tests/fuzzers/README.md
deleted file mode 100644
index 7611c53698..0000000000
--- a/tests/fuzzers/README.md
+++ /dev/null
@@ -1,45 +0,0 @@
-## Fuzzers
-
-To run a fuzzer locally, you need [go-fuzz](https://github.com/dvyukov/go-fuzz) installed.
-
-First build a fuzzing-binary out of the selected package:
-
-```
-(cd ./rlp && CGO_ENABLED=0 go-fuzz-build .)
-```
-That command should generate a `rlp-fuzz.zip` in the `rlp/` directory. If you are already in that directory, you can do
-
-```
-[user@work rlp]$ go-fuzz
-2019/11/26 13:36:54 workers: 6, corpus: 3 (3s ago), crashers: 0, restarts: 1/0, execs: 0 (0/sec), cover: 0, uptime: 3s
-2019/11/26 13:36:57 workers: 6, corpus: 3 (6s ago), crashers: 0, restarts: 1/0, execs: 0 (0/sec), cover: 1054, uptime: 6s
-2019/11/26 13:37:00 workers: 6, corpus: 3 (9s ago), crashers: 0, restarts: 1/8358, execs: 25074 (2786/sec), cover: 1054, uptime: 9s
-2019/11/26 13:37:03 workers: 6, corpus: 3 (12s ago), crashers: 0, restarts: 1/8497, execs: 50986 (4249/sec), cover: 1054, uptime: 12s
-2019/11/26 13:37:06 workers: 6, corpus: 3 (15s ago), crashers: 0, restarts: 1/9330, execs: 74640 (4976/sec), cover: 1054, uptime: 15s
-2019/11/26 13:37:09 workers: 6, corpus: 3 (18s ago), crashers: 0, restarts: 1/9948, execs: 99482 (5527/sec), cover: 1054, uptime: 18s
-2019/11/26 13:37:12 workers: 6, corpus: 3 (21s ago), crashers: 0, restarts: 1/9428, execs: 122568 (5836/sec), cover: 1054, uptime: 21s
-2019/11/26 13:37:15 workers: 6, corpus: 3 (24s ago), crashers: 0, restarts: 1/9676, execs: 145152 (6048/sec), cover: 1054, uptime: 24s
-2019/11/26 13:37:18 workers: 6, corpus: 3 (27s ago), crashers: 0, restarts: 1/9855, execs: 167538 (6205/sec), cover: 1054, uptime: 27s
-2019/11/26 13:37:21 workers: 6, corpus: 3 (30s ago), crashers: 0, restarts: 1/9645, execs: 192901 (6430/sec), cover: 1054, uptime: 30s
-2019/11/26 13:37:24 workers: 6, corpus: 3 (33s ago), crashers: 0, restarts: 1/9967, execs: 219294 (6645/sec), cover: 1054, uptime: 33s
-
-```
-Otherwise:
-```
-go-fuzz -bin ./rlp/rlp-fuzz.zip
-```
-
-### Notes
-
-Once a 'crasher' is found, the fuzzer tries to avoid reporting the same vector twice, so stores the fault in the `suppressions` folder. Thus, if you
-e.g. make changes to fix a bug, you should _remove_ all data from the `suppressions`-folder, to verify that the issue is indeed resolved.
-
-Also, if you have only one and the same exit-point for multiple different types of test, the suppression can make the fuzzer hide different types of errors. So make
-sure that each type of failure is unique (for an example, see the rlp fuzzer, where a counter `i` is used to differentiate between failures:
-
-```golang
- if !bytes.Equal(input, output) {
- panic(fmt.Sprintf("case %d: encode-decode is not equal, \ninput : %x\noutput: %x", i, input, output))
- }
-```
-
diff --git a/tests/fuzzers/bls12381/bls12381_fuzz.go b/tests/fuzzers/bls12381/bls12381_fuzz.go
deleted file mode 100644
index 9a5c566540..0000000000
--- a/tests/fuzzers/bls12381/bls12381_fuzz.go
+++ /dev/null
@@ -1,305 +0,0 @@
-// Copyright 2021 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see .
-
-//go:build cgo
-// +build cgo
-
-package bls
-
-import (
- "bytes"
- "crypto/rand"
- "fmt"
- "io"
- "math/big"
-
- "github.com/consensys/gnark-crypto/ecc"
- gnark "github.com/consensys/gnark-crypto/ecc/bls12-381"
- "github.com/consensys/gnark-crypto/ecc/bls12-381/fp"
- "github.com/consensys/gnark-crypto/ecc/bls12-381/fr"
- "github.com/ethereum/go-ethereum/common"
- "github.com/ethereum/go-ethereum/crypto/bls12381"
- blst "github.com/supranational/blst/bindings/go"
-)
-
-func fuzzCrossPairing(data []byte) int {
- input := bytes.NewReader(data)
-
- // get random G1 points
- kpG1, cpG1, blG1, err := getG1Points(input)
- if err != nil {
- return 0
- }
-
- // get random G2 points
- kpG2, cpG2, blG2, err := getG2Points(input)
- if err != nil {
- return 0
- }
-
- // compute pairing using geth
- engine := bls12381.NewPairingEngine()
- engine.AddPair(kpG1, kpG2)
- kResult := engine.Result()
-
- // compute pairing using gnark
- cResult, err := gnark.Pair([]gnark.G1Affine{*cpG1}, []gnark.G2Affine{*cpG2})
- if err != nil {
- panic(fmt.Sprintf("gnark/bls12381 encountered error: %v", err))
- }
-
- // compare result
- if !(bytes.Equal(cResult.Marshal(), bls12381.NewGT().ToBytes(kResult))) {
- panic("pairing mismatch gnark / geth ")
- }
-
- // compute pairing using blst
- blstResult := blst.Fp12MillerLoop(blG2, blG1)
- blstResult.FinalExp()
- res := massageBLST(blstResult.ToBendian())
- if !(bytes.Equal(res, bls12381.NewGT().ToBytes(kResult))) {
- panic("pairing mismatch blst / geth")
- }
-
- return 1
-}
-
-func massageBLST(in []byte) []byte {
- out := make([]byte, len(in))
- len := 12 * 48
- // 1
- copy(out[0:], in[len-1*48:len])
- copy(out[1*48:], in[len-2*48:len-1*48])
- // 2
- copy(out[6*48:], in[len-3*48:len-2*48])
- copy(out[7*48:], in[len-4*48:len-3*48])
- // 3
- copy(out[2*48:], in[len-5*48:len-4*48])
- copy(out[3*48:], in[len-6*48:len-5*48])
- // 4
- copy(out[8*48:], in[len-7*48:len-6*48])
- copy(out[9*48:], in[len-8*48:len-7*48])
- // 5
- copy(out[4*48:], in[len-9*48:len-8*48])
- copy(out[5*48:], in[len-10*48:len-9*48])
- // 6
- copy(out[10*48:], in[len-11*48:len-10*48])
- copy(out[11*48:], in[len-12*48:len-11*48])
- return out
-}
-
-func fuzzCrossG1Add(data []byte) int {
- input := bytes.NewReader(data)
-
- // get random G1 points
- kp1, cp1, bl1, err := getG1Points(input)
- if err != nil {
- return 0
- }
-
- // get random G1 points
- kp2, cp2, bl2, err := getG1Points(input)
- if err != nil {
- return 0
- }
-
- // compute kp = kp1 + kp2
- g1 := bls12381.NewG1()
- kp := bls12381.PointG1{}
- g1.Add(&kp, kp1, kp2)
-
- // compute cp = cp1 + cp2
- _cp1 := new(gnark.G1Jac).FromAffine(cp1)
- _cp2 := new(gnark.G1Jac).FromAffine(cp2)
- cp := new(gnark.G1Affine).FromJacobian(_cp1.AddAssign(_cp2))
-
- // compare result
- if !(bytes.Equal(cp.Marshal(), g1.ToBytes(&kp))) {
- panic("G1 point addition mismatch gnark / geth ")
- }
-
- bl3 := blst.P1AffinesAdd([]*blst.P1Affine{bl1, bl2})
- if !(bytes.Equal(cp.Marshal(), bl3.Serialize())) {
- panic("G1 point addition mismatch blst / geth ")
- }
-
- return 1
-}
-
-func fuzzCrossG2Add(data []byte) int {
- input := bytes.NewReader(data)
-
- // get random G2 points
- kp1, cp1, bl1, err := getG2Points(input)
- if err != nil {
- return 0
- }
-
- // get random G2 points
- kp2, cp2, bl2, err := getG2Points(input)
- if err != nil {
- return 0
- }
-
- // compute kp = kp1 + kp2
- g2 := bls12381.NewG2()
- kp := bls12381.PointG2{}
- g2.Add(&kp, kp1, kp2)
-
- // compute cp = cp1 + cp2
- _cp1 := new(gnark.G2Jac).FromAffine(cp1)
- _cp2 := new(gnark.G2Jac).FromAffine(cp2)
- cp := new(gnark.G2Affine).FromJacobian(_cp1.AddAssign(_cp2))
-
- // compare result
- if !(bytes.Equal(cp.Marshal(), g2.ToBytes(&kp))) {
- panic("G2 point addition mismatch gnark / geth ")
- }
-
- bl3 := blst.P2AffinesAdd([]*blst.P2Affine{bl1, bl2})
- if !(bytes.Equal(cp.Marshal(), bl3.Serialize())) {
- panic("G1 point addition mismatch blst / geth ")
- }
-
- return 1
-}
-
-func fuzzCrossG1MultiExp(data []byte) int {
- var (
- input = bytes.NewReader(data)
- gethScalars []*big.Int
- gnarkScalars []fr.Element
- gethPoints []*bls12381.PointG1
- gnarkPoints []gnark.G1Affine
- )
- // n random scalars (max 17)
- for i := 0; i < 17; i++ {
- // note that geth/crypto/bls12381 works only with scalars <= 32bytes
- s, err := randomScalar(input, fr.Modulus())
- if err != nil {
- break
- }
- // get a random G1 point as basis
- kp1, cp1, _, err := getG1Points(input)
- if err != nil {
- break
- }
- gethScalars = append(gethScalars, s)
- var gnarkScalar = &fr.Element{}
- gnarkScalar = gnarkScalar.SetBigInt(s)
- gnarkScalars = append(gnarkScalars, *gnarkScalar)
-
- gethPoints = append(gethPoints, new(bls12381.PointG1).Set(kp1))
- gnarkPoints = append(gnarkPoints, *cp1)
- }
- if len(gethScalars) == 0 {
- return 0
- }
- // compute multi exponentiation
- g1 := bls12381.NewG1()
- kp := bls12381.PointG1{}
- if _, err := g1.MultiExp(&kp, gethPoints, gethScalars); err != nil {
- panic(fmt.Sprintf("G1 multi exponentiation errored (geth): %v", err))
- }
- // note that geth/crypto/bls12381.MultiExp mutates the scalars slice (and sets all the scalars to zero)
-
- // gnark multi exp
- cp := new(gnark.G1Affine)
- cp.MultiExp(gnarkPoints, gnarkScalars, ecc.MultiExpConfig{})
-
- // compare result
- if !(bytes.Equal(cp.Marshal(), g1.ToBytes(&kp))) {
- panic("G1 multi exponentiation mismatch gnark / geth ")
- }
-
- return 1
-}
-
-func getG1Points(input io.Reader) (*bls12381.PointG1, *gnark.G1Affine, *blst.P1Affine, error) {
- // sample a random scalar
- s, err := randomScalar(input, fp.Modulus())
- if err != nil {
- return nil, nil, nil, err
- }
-
- // compute a random point
- cp := new(gnark.G1Affine)
- _, _, g1Gen, _ := gnark.Generators()
- cp.ScalarMultiplication(&g1Gen, s)
- cpBytes := cp.Marshal()
-
- // marshal gnark point -> geth point
- g1 := bls12381.NewG1()
- kp, err := g1.FromBytes(cpBytes)
- if err != nil {
- panic(fmt.Sprintf("Could not marshal gnark.G1 -> geth.G1: %v", err))
- }
- if !bytes.Equal(g1.ToBytes(kp), cpBytes) {
- panic("bytes(gnark.G1) != bytes(geth.G1)")
- }
-
- // marshal gnark point -> blst point
- scalar := new(blst.Scalar).FromBEndian(common.LeftPadBytes(s.Bytes(), 32))
- p1 := new(blst.P1Affine).From(scalar)
- if !bytes.Equal(p1.Serialize(), cpBytes) {
- panic("bytes(blst.G1) != bytes(geth.G1)")
- }
-
- return kp, cp, p1, nil
-}
-
-func getG2Points(input io.Reader) (*bls12381.PointG2, *gnark.G2Affine, *blst.P2Affine, error) {
- // sample a random scalar
- s, err := randomScalar(input, fp.Modulus())
- if err != nil {
- return nil, nil, nil, err
- }
-
- // compute a random point
- cp := new(gnark.G2Affine)
- _, _, _, g2Gen := gnark.Generators()
- cp.ScalarMultiplication(&g2Gen, s)
- cpBytes := cp.Marshal()
-
- // marshal gnark point -> geth point
- g2 := bls12381.NewG2()
- kp, err := g2.FromBytes(cpBytes)
- if err != nil {
- panic(fmt.Sprintf("Could not marshal gnark.G2 -> geth.G2: %v", err))
- }
- if !bytes.Equal(g2.ToBytes(kp), cpBytes) {
- panic("bytes(gnark.G2) != bytes(geth.G2)")
- }
-
- // marshal gnark point -> blst point
- // Left pad the scalar to 32 bytes
- scalar := new(blst.Scalar).FromBEndian(common.LeftPadBytes(s.Bytes(), 32))
- p2 := new(blst.P2Affine).From(scalar)
- if !bytes.Equal(p2.Serialize(), cpBytes) {
- panic("bytes(blst.G2) != bytes(geth.G2)")
- }
-
- return kp, cp, p2, nil
-}
-
-func randomScalar(r io.Reader, max *big.Int) (k *big.Int, err error) {
- for {
- k, err = rand.Int(r, max)
- if err != nil || k.Sign() > 0 {
- return
- }
- }
-}
diff --git a/tests/fuzzers/bls12381/bls12381_test.go b/tests/fuzzers/bls12381/bls12381_test.go
deleted file mode 100644
index 3e88979d16..0000000000
--- a/tests/fuzzers/bls12381/bls12381_test.go
+++ /dev/null
@@ -1,100 +0,0 @@
-// Copyright 2023 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see .
-
-//go:build cgo
-// +build cgo
-
-package bls
-
-import "testing"
-
-func FuzzCrossPairing(f *testing.F) {
- f.Fuzz(func(t *testing.T, data []byte) {
- fuzzCrossPairing(data)
- })
-}
-
-func FuzzCrossG1Add(f *testing.F) {
- f.Fuzz(func(t *testing.T, data []byte) {
- fuzzCrossG1Add(data)
- })
-}
-
-func FuzzCrossG2Add(f *testing.F) {
- f.Fuzz(func(t *testing.T, data []byte) {
- fuzzCrossG2Add(data)
- })
-}
-
-func FuzzCrossG1MultiExp(f *testing.F) {
- f.Fuzz(func(t *testing.T, data []byte) {
- fuzzCrossG1MultiExp(data)
- })
-}
-
-func FuzzG1Add(f *testing.F) {
- f.Fuzz(func(t *testing.T, data []byte) {
- fuzz(blsG1Add, data)
- })
-}
-
-func FuzzG1Mul(f *testing.F) {
- f.Fuzz(func(t *testing.T, data []byte) {
- fuzz(blsG1Mul, data)
- })
-}
-
-func FuzzG1MultiExp(f *testing.F) {
- f.Fuzz(func(t *testing.T, data []byte) {
- fuzz(blsG1MultiExp, data)
- })
-}
-
-func FuzzG2Add(f *testing.F) {
- f.Fuzz(func(t *testing.T, data []byte) {
- fuzz(blsG2Add, data)
- })
-}
-
-func FuzzG2Mul(f *testing.F) {
- f.Fuzz(func(t *testing.T, data []byte) {
- fuzz(blsG2Mul, data)
- })
-}
-
-func FuzzG2MultiExp(f *testing.F) {
- f.Fuzz(func(t *testing.T, data []byte) {
- fuzz(blsG2MultiExp, data)
- })
-}
-
-func FuzzPairing(f *testing.F) {
- f.Fuzz(func(t *testing.T, data []byte) {
- fuzz(blsPairing, data)
- })
-}
-
-func FuzzMapG1(f *testing.F) {
- f.Fuzz(func(t *testing.T, data []byte) {
- fuzz(blsMapG1, data)
- })
-}
-
-func FuzzMapG2(f *testing.F) {
- f.Fuzz(func(t *testing.T, data []byte) {
- fuzz(blsMapG2, data)
- })
-}
diff --git a/tests/fuzzers/bls12381/precompile_fuzzer.go b/tests/fuzzers/bls12381/precompile_fuzzer.go
deleted file mode 100644
index 763ed56e9f..0000000000
--- a/tests/fuzzers/bls12381/precompile_fuzzer.go
+++ /dev/null
@@ -1,93 +0,0 @@
-// Copyright 2020 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see .
-
-package bls
-
-import (
- "bytes"
- "fmt"
-
- "github.com/ethereum/go-ethereum/common"
- "github.com/ethereum/go-ethereum/core/vm"
-)
-
-const (
- blsG1Add = byte(10)
- blsG1Mul = byte(11)
- blsG1MultiExp = byte(12)
- blsG2Add = byte(13)
- blsG2Mul = byte(14)
- blsG2MultiExp = byte(15)
- blsPairing = byte(16)
- blsMapG1 = byte(17)
- blsMapG2 = byte(18)
-)
-
-func checkInput(id byte, inputLen int) bool {
- switch id {
- case blsG1Add:
- return inputLen == 256
- case blsG1Mul:
- return inputLen == 160
- case blsG1MultiExp:
- return inputLen%160 == 0
- case blsG2Add:
- return inputLen == 512
- case blsG2Mul:
- return inputLen == 288
- case blsG2MultiExp:
- return inputLen%288 == 0
- case blsPairing:
- return inputLen%384 == 0
- case blsMapG1:
- return inputLen == 64
- case blsMapG2:
- return inputLen == 128
- }
- panic("programmer error")
-}
-
-// The function must return
-//
-// - 1 if the fuzzer should increase priority of the
-// given input during subsequent fuzzing (for example, the input is lexically
-// correct and was parsed successfully);
-// - -1 if the input must not be added to corpus even if gives new coverage; and
-// - 0 otherwise
-//
-// other values are reserved for future use.
-func fuzz(id byte, data []byte) int {
- // Even on bad input, it should not crash, so we still test the gas calc
- precompile := vm.PrecompiledContractsBLS[common.BytesToAddress([]byte{id})]
- gas := precompile.RequiredGas(data)
- if !checkInput(id, len(data)) {
- return 0
- }
- // If the gas cost is too large (25M), bail out
- if gas > 25*1000*1000 {
- return 0
- }
- cpy := make([]byte, len(data))
- copy(cpy, data)
- _, err := precompile.Run(cpy)
- if !bytes.Equal(cpy, data) {
- panic(fmt.Sprintf("input data modified, precompile %d: %x %x", id, data, cpy))
- }
- if err != nil {
- return 0
- }
- return 1
-}
diff --git a/tests/fuzzers/bls12381/testdata/fuzz_g1_add_seed_corpus.zip b/tests/fuzzers/bls12381/testdata/fuzz_g1_add_seed_corpus.zip
deleted file mode 100644
index 16498c1cba..0000000000
Binary files a/tests/fuzzers/bls12381/testdata/fuzz_g1_add_seed_corpus.zip and /dev/null differ
diff --git a/tests/fuzzers/bls12381/testdata/fuzz_g1_mul_seed_corpus.zip b/tests/fuzzers/bls12381/testdata/fuzz_g1_mul_seed_corpus.zip
deleted file mode 100644
index 57f9d6696d..0000000000
Binary files a/tests/fuzzers/bls12381/testdata/fuzz_g1_mul_seed_corpus.zip and /dev/null differ
diff --git a/tests/fuzzers/bls12381/testdata/fuzz_g1_multiexp_seed_corpus.zip b/tests/fuzzers/bls12381/testdata/fuzz_g1_multiexp_seed_corpus.zip
deleted file mode 100644
index 7271f040f3..0000000000
Binary files a/tests/fuzzers/bls12381/testdata/fuzz_g1_multiexp_seed_corpus.zip and /dev/null differ
diff --git a/tests/fuzzers/bls12381/testdata/fuzz_g2_add_seed_corpus.zip b/tests/fuzzers/bls12381/testdata/fuzz_g2_add_seed_corpus.zip
deleted file mode 100644
index cd5206ca0b..0000000000
Binary files a/tests/fuzzers/bls12381/testdata/fuzz_g2_add_seed_corpus.zip and /dev/null differ
diff --git a/tests/fuzzers/bls12381/testdata/fuzz_g2_mul_seed_corpus.zip b/tests/fuzzers/bls12381/testdata/fuzz_g2_mul_seed_corpus.zip
deleted file mode 100644
index f784a5a3d7..0000000000
Binary files a/tests/fuzzers/bls12381/testdata/fuzz_g2_mul_seed_corpus.zip and /dev/null differ
diff --git a/tests/fuzzers/bls12381/testdata/fuzz_g2_multiexp_seed_corpus.zip b/tests/fuzzers/bls12381/testdata/fuzz_g2_multiexp_seed_corpus.zip
deleted file mode 100644
index c205117a46..0000000000
Binary files a/tests/fuzzers/bls12381/testdata/fuzz_g2_multiexp_seed_corpus.zip and /dev/null differ
diff --git a/tests/fuzzers/bls12381/testdata/fuzz_map_g1_seed_corpus.zip b/tests/fuzzers/bls12381/testdata/fuzz_map_g1_seed_corpus.zip
deleted file mode 100644
index 70382fbe53..0000000000
Binary files a/tests/fuzzers/bls12381/testdata/fuzz_map_g1_seed_corpus.zip and /dev/null differ
diff --git a/tests/fuzzers/bls12381/testdata/fuzz_map_g2_seed_corpus.zip b/tests/fuzzers/bls12381/testdata/fuzz_map_g2_seed_corpus.zip
deleted file mode 100644
index 67adc5b5e8..0000000000
Binary files a/tests/fuzzers/bls12381/testdata/fuzz_map_g2_seed_corpus.zip and /dev/null differ
diff --git a/tests/fuzzers/bls12381/testdata/fuzz_pairing_seed_corpus.zip b/tests/fuzzers/bls12381/testdata/fuzz_pairing_seed_corpus.zip
deleted file mode 100644
index e24d2b0a52..0000000000
Binary files a/tests/fuzzers/bls12381/testdata/fuzz_pairing_seed_corpus.zip and /dev/null differ
diff --git a/tests/fuzzers/bn256/bn256_fuzz.go b/tests/fuzzers/bn256/bn256_fuzz.go
deleted file mode 100644
index 75f7d59dee..0000000000
--- a/tests/fuzzers/bn256/bn256_fuzz.go
+++ /dev/null
@@ -1,183 +0,0 @@
-// Copyright 2018 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see .
-
-package bn256
-
-import (
- "bytes"
- "fmt"
- "io"
- "math/big"
-
- "github.com/consensys/gnark-crypto/ecc/bn254"
- cloudflare "github.com/ethereum/go-ethereum/crypto/bn256/cloudflare"
- google "github.com/ethereum/go-ethereum/crypto/bn256/google"
-)
-
-func getG1Points(input io.Reader) (*cloudflare.G1, *google.G1, *bn254.G1Affine) {
- _, xc, err := cloudflare.RandomG1(input)
- if err != nil {
- // insufficient input
- return nil, nil, nil
- }
- xg := new(google.G1)
- if _, err := xg.Unmarshal(xc.Marshal()); err != nil {
- panic(fmt.Sprintf("Could not marshal cloudflare -> google: %v", err))
- }
- xs := new(bn254.G1Affine)
- if err := xs.Unmarshal(xc.Marshal()); err != nil {
- panic(fmt.Sprintf("Could not marshal cloudflare -> gnark: %v", err))
- }
- return xc, xg, xs
-}
-
-func getG2Points(input io.Reader) (*cloudflare.G2, *google.G2, *bn254.G2Affine) {
- _, xc, err := cloudflare.RandomG2(input)
- if err != nil {
- // insufficient input
- return nil, nil, nil
- }
- xg := new(google.G2)
- if _, err := xg.Unmarshal(xc.Marshal()); err != nil {
- panic(fmt.Sprintf("Could not marshal cloudflare -> google: %v", err))
- }
- xs := new(bn254.G2Affine)
- if err := xs.Unmarshal(xc.Marshal()); err != nil {
- panic(fmt.Sprintf("Could not marshal cloudflare -> gnark: %v", err))
- }
- return xc, xg, xs
-}
-
-// fuzzAdd fuzzez bn256 addition between the Google and Cloudflare libraries.
-func fuzzAdd(data []byte) int {
- input := bytes.NewReader(data)
- xc, xg, xs := getG1Points(input)
- if xc == nil {
- return 0
- }
- yc, yg, ys := getG1Points(input)
- if yc == nil {
- return 0
- }
- // Ensure both libs can parse the second curve point
- // Add the two points and ensure they result in the same output
- rc := new(cloudflare.G1)
- rc.Add(xc, yc)
-
- rg := new(google.G1)
- rg.Add(xg, yg)
-
- tmpX := new(bn254.G1Jac).FromAffine(xs)
- tmpY := new(bn254.G1Jac).FromAffine(ys)
- rs := new(bn254.G1Affine).FromJacobian(tmpX.AddAssign(tmpY))
-
- if !bytes.Equal(rc.Marshal(), rg.Marshal()) {
- panic("add mismatch: cloudflare/google")
- }
-
- if !bytes.Equal(rc.Marshal(), rs.Marshal()) {
- panic("add mismatch: cloudflare/gnark")
- }
- return 1
-}
-
-// fuzzMul fuzzez bn256 scalar multiplication between the Google and Cloudflare
-// libraries.
-func fuzzMul(data []byte) int {
- input := bytes.NewReader(data)
- pc, pg, ps := getG1Points(input)
- if pc == nil {
- return 0
- }
- // Add the two points and ensure they result in the same output
- remaining := input.Len()
- if remaining == 0 {
- return 0
- }
- if remaining > 128 {
- // The evm only ever uses 32 byte integers, we need to cap this otherwise
- // we run into slow exec. A 236Kb byte integer cause oss-fuzz to report it as slow.
- // 128 bytes should be fine though
- return 0
- }
- buf := make([]byte, remaining)
- input.Read(buf)
-
- rc := new(cloudflare.G1)
- rc.ScalarMult(pc, new(big.Int).SetBytes(buf))
-
- rg := new(google.G1)
- rg.ScalarMult(pg, new(big.Int).SetBytes(buf))
-
- rs := new(bn254.G1Jac)
- psJac := new(bn254.G1Jac).FromAffine(ps)
- rs.ScalarMultiplication(psJac, new(big.Int).SetBytes(buf))
- rsAffine := new(bn254.G1Affine).FromJacobian(rs)
-
- if !bytes.Equal(rc.Marshal(), rg.Marshal()) {
- panic("scalar mul mismatch: cloudflare/google")
- }
- if !bytes.Equal(rc.Marshal(), rsAffine.Marshal()) {
- panic("scalar mul mismatch: cloudflare/gnark")
- }
- return 1
-}
-
-func fuzzPair(data []byte) int {
- input := bytes.NewReader(data)
- pc, pg, ps := getG1Points(input)
- if pc == nil {
- return 0
- }
- tc, tg, ts := getG2Points(input)
- if tc == nil {
- return 0
- }
-
- // Pair the two points and ensure they result in the same output
- clPair := cloudflare.Pair(pc, tc).Marshal()
- gPair := google.Pair(pg, tg).Marshal()
- if !bytes.Equal(clPair, gPair) {
- panic("pairing mismatch: cloudflare/google")
- }
- cPair, err := bn254.Pair([]bn254.G1Affine{*ps}, []bn254.G2Affine{*ts})
- if err != nil {
- panic(fmt.Sprintf("gnark/bn254 encountered error: %v", err))
- }
-
- // gnark uses a different pairing algorithm which might produce
- // different but also correct outputs, we need to scale the output by s
-
- u, _ := new(big.Int).SetString("0x44e992b44a6909f1", 0)
- u_exp2 := new(big.Int).Exp(u, big.NewInt(2), nil) // u^2
- u_6_exp2 := new(big.Int).Mul(big.NewInt(6), u_exp2) // 6*u^2
- u_3 := new(big.Int).Mul(big.NewInt(3), u) // 3*u
- inner := u_6_exp2.Add(u_6_exp2, u_3) // 6*u^2 + 3*u
- inner.Add(inner, big.NewInt(1)) // 6*u^2 + 3*u + 1
- u_2 := new(big.Int).Mul(big.NewInt(2), u) // 2*u
- s := u_2.Mul(u_2, inner) // 2*u(6*u^2 + 3*u + 1)
-
- gRes := new(bn254.GT)
- if err := gRes.SetBytes(clPair); err != nil {
- panic(err)
- }
- gRes = gRes.Exp(*gRes, s)
- if !bytes.Equal(cPair.Marshal(), gRes.Marshal()) {
- panic("pairing mismatch: cloudflare/gnark")
- }
-
- return 1
-}
diff --git a/tests/fuzzers/bn256/bn256_test.go b/tests/fuzzers/bn256/bn256_test.go
deleted file mode 100644
index 8b2f962284..0000000000
--- a/tests/fuzzers/bn256/bn256_test.go
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2023 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see .
-
-package bn256
-
-import "testing"
-
-func FuzzAdd(f *testing.F) {
- f.Fuzz(func(t *testing.T, data []byte) {
- fuzzAdd(data)
- })
-}
-
-func FuzzMul(f *testing.F) {
- f.Fuzz(func(t *testing.T, data []byte) {
- fuzzMul(data)
- })
-}
-
-func FuzzPair(f *testing.F) {
- f.Fuzz(func(t *testing.T, data []byte) {
- fuzzPair(data)
- })
-}
diff --git a/tests/fuzzers/difficulty/difficulty-fuzz.go b/tests/fuzzers/difficulty/difficulty-fuzz.go
deleted file mode 100644
index fbbd7f6876..0000000000
--- a/tests/fuzzers/difficulty/difficulty-fuzz.go
+++ /dev/null
@@ -1,146 +0,0 @@
-// Copyright 2020 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see .
-
-package difficulty
-
-import (
- "bytes"
- "encoding/binary"
- "fmt"
- "io"
- "math/big"
-
- "github.com/ethereum/go-ethereum/consensus/ethash"
- "github.com/ethereum/go-ethereum/core/types"
-)
-
-type fuzzer struct {
- input io.Reader
- exhausted bool
-}
-
-func (f *fuzzer) read(size int) []byte {
- out := make([]byte, size)
- if _, err := f.input.Read(out); err != nil {
- f.exhausted = true
- }
- return out
-}
-
-func (f *fuzzer) readSlice(min, max int) []byte {
- var a uint16
- binary.Read(f.input, binary.LittleEndian, &a)
- size := min + int(a)%(max-min)
- out := make([]byte, size)
- if _, err := f.input.Read(out); err != nil {
- f.exhausted = true
- }
- return out
-}
-
-func (f *fuzzer) readUint64(min, max uint64) uint64 {
- if min == max {
- return min
- }
- var a uint64
- if err := binary.Read(f.input, binary.LittleEndian, &a); err != nil {
- f.exhausted = true
- }
- a = min + a%(max-min)
- return a
-}
-func (f *fuzzer) readBool() bool {
- return f.read(1)[0]&0x1 == 0
-}
-
-// Fuzz function must return
-//
-// - 1 if the fuzzer should increase priority of the
-// given input during subsequent fuzzing (for example, the input is lexically
-// correct and was parsed successfully);
-// - -1 if the input must not be added to corpus even if gives new coverage; and
-// - 0 otherwise
-//
-// other values are reserved for future use.
-func fuzz(data []byte) int {
- f := fuzzer{
- input: bytes.NewReader(data),
- exhausted: false,
- }
- return f.fuzz()
-}
-
-var minDifficulty = big.NewInt(0x2000)
-
-type calculator func(time uint64, parent *types.Header) *big.Int
-
-func (f *fuzzer) fuzz() int {
- // A parent header
- header := &types.Header{}
- if f.readBool() {
- header.UncleHash = types.EmptyUncleHash
- }
- // Difficulty can range between 0x2000 (2 bytes) and up to 32 bytes
- {
- diff := new(big.Int).SetBytes(f.readSlice(2, 32))
- if diff.Cmp(minDifficulty) < 0 {
- diff.Set(minDifficulty)
- }
- header.Difficulty = diff
- }
- // Number can range between 0 and up to 32 bytes (but not so that the child exceeds it)
- {
- // However, if we use astronomic numbers, then the bomb exp karatsuba calculation
- // in the legacy methods)
- // times out, so we limit it to fit within reasonable bounds
- number := new(big.Int).SetBytes(f.readSlice(0, 4)) // 4 bytes: 32 bits: block num max 4 billion
- header.Number = number
- }
- // Both parent and child time must fit within uint64
- var time uint64
- {
- childTime := f.readUint64(1, 0xFFFFFFFFFFFFFFFF)
- //fmt.Printf("childTime: %x\n",childTime)
- delta := f.readUint64(1, childTime)
- //fmt.Printf("delta: %v\n", delta)
- pTime := childTime - delta
- header.Time = pTime
- time = childTime
- }
- // Bomb delay will never exceed uint64
- bombDelay := new(big.Int).SetUint64(f.readUint64(1, 0xFFFFFFFFFFFFFFFe))
-
- if f.exhausted {
- return 0
- }
-
- for i, pair := range []struct {
- bigFn calculator
- u256Fn calculator
- }{
- {ethash.FrontierDifficultyCalculator, ethash.CalcDifficultyFrontierU256},
- {ethash.HomesteadDifficultyCalculator, ethash.CalcDifficultyHomesteadU256},
- {ethash.DynamicDifficultyCalculator(bombDelay), ethash.MakeDifficultyCalculatorU256(bombDelay)},
- } {
- want := pair.bigFn(time, header)
- have := pair.u256Fn(time, header)
- if want.Cmp(have) != 0 {
- panic(fmt.Sprintf("pair %d: want %x have %x\nparent.Number: %x\np.Time: %x\nc.Time: %x\nBombdelay: %v\n", i, want, have,
- header.Number, header.Time, time, bombDelay))
- }
- }
- return 1
-}
diff --git a/tests/fuzzers/difficulty/difficulty_test.go b/tests/fuzzers/difficulty/difficulty_test.go
deleted file mode 100644
index 49beedb486..0000000000
--- a/tests/fuzzers/difficulty/difficulty_test.go
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2023 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see .
-
-package difficulty
-
-import "testing"
-
-func Fuzz(f *testing.F) {
- f.Fuzz(func(t *testing.T, data []byte) {
- fuzz(data)
- })
-}
diff --git a/tests/fuzzers/rangeproof/corpus/1c14030f26872e57bf1481084f151d71eed8161c-1 b/tests/fuzzers/rangeproof/corpus/1c14030f26872e57bf1481084f151d71eed8161c-1
deleted file mode 100644
index 31c08bafaf..0000000000
Binary files a/tests/fuzzers/rangeproof/corpus/1c14030f26872e57bf1481084f151d71eed8161c-1 and /dev/null differ
diff --git a/tests/fuzzers/rangeproof/corpus/27e54254422543060a13ea8a4bc913d768e4adb6-2 b/tests/fuzzers/rangeproof/corpus/27e54254422543060a13ea8a4bc913d768e4adb6-2
deleted file mode 100644
index 7bce13ef80..0000000000
Binary files a/tests/fuzzers/rangeproof/corpus/27e54254422543060a13ea8a4bc913d768e4adb6-2 and /dev/null differ
diff --git a/tests/fuzzers/rangeproof/corpus/6bfc2cbe2d7a43361e240118439785445a0fdfb7-5 b/tests/fuzzers/rangeproof/corpus/6bfc2cbe2d7a43361e240118439785445a0fdfb7-5
deleted file mode 100644
index 613e76a020..0000000000
Binary files a/tests/fuzzers/rangeproof/corpus/6bfc2cbe2d7a43361e240118439785445a0fdfb7-5 and /dev/null differ
diff --git a/tests/fuzzers/rangeproof/corpus/a67e63bc0c0004bd009944a6061297cb7d4ac238-1 b/tests/fuzzers/rangeproof/corpus/a67e63bc0c0004bd009944a6061297cb7d4ac238-1
deleted file mode 100644
index 805ad8df77..0000000000
Binary files a/tests/fuzzers/rangeproof/corpus/a67e63bc0c0004bd009944a6061297cb7d4ac238-1 and /dev/null differ
diff --git a/tests/fuzzers/rangeproof/corpus/ae892bbae0a843950bc8316496e595b1a194c009-4 b/tests/fuzzers/rangeproof/corpus/ae892bbae0a843950bc8316496e595b1a194c009-4
deleted file mode 100644
index 605acf81c1..0000000000
Binary files a/tests/fuzzers/rangeproof/corpus/ae892bbae0a843950bc8316496e595b1a194c009-4 and /dev/null differ
diff --git a/tests/fuzzers/rangeproof/corpus/ee05d0d813f6261b3dba16506f9ea03d9c5e993d-2 b/tests/fuzzers/rangeproof/corpus/ee05d0d813f6261b3dba16506f9ea03d9c5e993d-2
deleted file mode 100644
index 8f32dd775a..0000000000
Binary files a/tests/fuzzers/rangeproof/corpus/ee05d0d813f6261b3dba16506f9ea03d9c5e993d-2 and /dev/null differ
diff --git a/tests/fuzzers/rangeproof/corpus/f50a6d57a46d30184aa294af5b252ab9701af7c9-2 b/tests/fuzzers/rangeproof/corpus/f50a6d57a46d30184aa294af5b252ab9701af7c9-2
deleted file mode 100644
index af96210f20..0000000000
Binary files a/tests/fuzzers/rangeproof/corpus/f50a6d57a46d30184aa294af5b252ab9701af7c9-2 and /dev/null differ
diff --git a/tests/fuzzers/rangeproof/corpus/random.dat b/tests/fuzzers/rangeproof/corpus/random.dat
deleted file mode 100644
index 2c998ad812..0000000000
Binary files a/tests/fuzzers/rangeproof/corpus/random.dat and /dev/null differ
diff --git a/tests/fuzzers/rangeproof/rangeproof-fuzzer.go b/tests/fuzzers/rangeproof/rangeproof-fuzzer.go
deleted file mode 100644
index 6b5ca90880..0000000000
--- a/tests/fuzzers/rangeproof/rangeproof-fuzzer.go
+++ /dev/null
@@ -1,198 +0,0 @@
-// Copyright 2020 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see .
-
-package rangeproof
-
-import (
- "bytes"
- "encoding/binary"
- "fmt"
- "io"
-
- "github.com/ethereum/go-ethereum/common"
- "github.com/ethereum/go-ethereum/core/rawdb"
- "github.com/ethereum/go-ethereum/ethdb/memorydb"
- "github.com/ethereum/go-ethereum/trie"
- "golang.org/x/exp/slices"
-)
-
-type kv struct {
- k, v []byte
- t bool
-}
-
-type fuzzer struct {
- input io.Reader
- exhausted bool
-}
-
-func (f *fuzzer) randBytes(n int) []byte {
- r := make([]byte, n)
- if _, err := f.input.Read(r); err != nil {
- f.exhausted = true
- }
- return r
-}
-
-func (f *fuzzer) readInt() uint64 {
- var x uint64
- if err := binary.Read(f.input, binary.LittleEndian, &x); err != nil {
- f.exhausted = true
- }
- return x
-}
-
-func (f *fuzzer) randomTrie(n int) (*trie.Trie, map[string]*kv) {
- trie := trie.NewEmpty(trie.NewDatabase(rawdb.NewMemoryDatabase(), nil))
- vals := make(map[string]*kv)
- size := f.readInt()
- // Fill it with some fluff
- for i := byte(0); i < byte(size); i++ {
- value := &kv{common.LeftPadBytes([]byte{i}, 32), []byte{i}, false}
- value2 := &kv{common.LeftPadBytes([]byte{i + 10}, 32), []byte{i}, false}
- trie.MustUpdate(value.k, value.v)
- trie.MustUpdate(value2.k, value2.v)
- vals[string(value.k)] = value
- vals[string(value2.k)] = value2
- }
- if f.exhausted {
- return nil, nil
- }
- // And now fill with some random
- for i := 0; i < n; i++ {
- k := f.randBytes(32)
- v := f.randBytes(20)
- value := &kv{k, v, false}
- trie.MustUpdate(k, v)
- vals[string(k)] = value
- if f.exhausted {
- return nil, nil
- }
- }
- return trie, vals
-}
-
-func (f *fuzzer) fuzz() int {
- maxSize := 200
- tr, vals := f.randomTrie(1 + int(f.readInt())%maxSize)
- if f.exhausted {
- return 0 // input too short
- }
- var entries []*kv
- for _, kv := range vals {
- entries = append(entries, kv)
- }
- if len(entries) <= 1 {
- return 0
- }
- slices.SortFunc(entries, func(a, b *kv) int {
- return bytes.Compare(a.k, b.k)
- })
-
- var ok = 0
- for {
- start := int(f.readInt() % uint64(len(entries)))
- end := 1 + int(f.readInt()%uint64(len(entries)-1))
- testcase := int(f.readInt() % uint64(6))
- index := int(f.readInt() & 0xFFFFFFFF)
- index2 := int(f.readInt() & 0xFFFFFFFF)
- if f.exhausted {
- break
- }
- proof := memorydb.New()
- if err := tr.Prove(entries[start].k, proof); err != nil {
- panic(fmt.Sprintf("Failed to prove the first node %v", err))
- }
- if err := tr.Prove(entries[end-1].k, proof); err != nil {
- panic(fmt.Sprintf("Failed to prove the last node %v", err))
- }
- var keys [][]byte
- var vals [][]byte
- for i := start; i < end; i++ {
- keys = append(keys, entries[i].k)
- vals = append(vals, entries[i].v)
- }
- if len(keys) == 0 {
- return 0
- }
- var first = keys[0]
- testcase %= 6
- switch testcase {
- case 0:
- // Modified key
- keys[index%len(keys)] = f.randBytes(32) // In theory it can't be same
- case 1:
- // Modified val
- vals[index%len(vals)] = f.randBytes(20) // In theory it can't be same
- case 2:
- // Gapped entry slice
- index = index % len(keys)
- keys = append(keys[:index], keys[index+1:]...)
- vals = append(vals[:index], vals[index+1:]...)
- case 3:
- // Out of order
- index1 := index % len(keys)
- index2 := index2 % len(keys)
- keys[index1], keys[index2] = keys[index2], keys[index1]
- vals[index1], vals[index2] = vals[index2], vals[index1]
- case 4:
- // Set random key to nil, do nothing
- keys[index%len(keys)] = nil
- case 5:
- // Set random value to nil, deletion
- vals[index%len(vals)] = nil
-
- // Other cases:
- // Modify something in the proof db
- // add stuff to proof db
- // drop stuff from proof db
- }
- if f.exhausted {
- break
- }
- ok = 1
- //nodes, subtrie
- hasMore, err := trie.VerifyRangeProof(tr.Hash(), first, keys, vals, proof)
- if err != nil {
- if hasMore {
- panic("err != nil && hasMore == true")
- }
- }
- }
- return ok
-}
-
-// Fuzz is the fuzzing entry-point.
-// The function must return
-//
-// - 1 if the fuzzer should increase priority of the
-// given input during subsequent fuzzing (for example, the input is lexically
-// correct and was parsed successfully);
-// - -1 if the input must not be added to corpus even if gives new coverage; and
-// - 0 otherwise
-//
-// other values are reserved for future use.
-func fuzz(input []byte) int {
- if len(input) < 100 {
- return 0
- }
- r := bytes.NewReader(input)
- f := fuzzer{
- input: r,
- exhausted: false,
- }
- return f.fuzz()
-}
diff --git a/tests/fuzzers/rangeproof/rangeproof_test.go b/tests/fuzzers/rangeproof/rangeproof_test.go
deleted file mode 100644
index bc7badc5b3..0000000000
--- a/tests/fuzzers/rangeproof/rangeproof_test.go
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2023 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see .
-
-package rangeproof
-
-import "testing"
-
-func Fuzz(f *testing.F) {
- f.Fuzz(func(t *testing.T, data []byte) {
- fuzz(data)
- })
-}
diff --git a/tests/fuzzers/secp256k1/secp_test.go b/tests/fuzzers/secp256k1/secp_test.go
deleted file mode 100644
index ca3039764b..0000000000
--- a/tests/fuzzers/secp256k1/secp_test.go
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2021 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see .
-
-package secp256k1
-
-import (
- "fmt"
- "testing"
-
- "github.com/btcsuite/btcd/btcec/v2"
- "github.com/ethereum/go-ethereum/crypto/secp256k1"
-)
-
-func TestFuzzer(t *testing.T) {
- a, b := "00000000N0000000/R0000000000000000", "0U0000S0000000mkhP000000000000000U"
- fuzz([]byte(a), []byte(b))
-}
-
-func Fuzz(f *testing.F) {
- f.Fuzz(func(t *testing.T, a, b []byte) {
- fuzz(a, b)
- })
-}
-
-func fuzz(dataP1, dataP2 []byte) {
- var (
- curveA = secp256k1.S256()
- curveB = btcec.S256()
- )
- // first point
- x1, y1 := curveB.ScalarBaseMult(dataP1)
- // second points
- x2, y2 := curveB.ScalarBaseMult(dataP2)
- resAX, resAY := curveA.Add(x1, y1, x2, y2)
- resBX, resBY := curveB.Add(x1, y1, x2, y2)
- if resAX.Cmp(resBX) != 0 || resAY.Cmp(resBY) != 0 {
- fmt.Printf("%s %s %s %s\n", x1, y1, x2, y2)
- panic(fmt.Sprintf("Addition failed: geth: %s %s btcd: %s %s", resAX, resAY, resBX, resBY))
- }
-}
diff --git a/tests/fuzzers/txfetcher/corpus/0151ee1d0db4c74d3bcdfa4f7396a4c8538748c9-2 b/tests/fuzzers/txfetcher/corpus/0151ee1d0db4c74d3bcdfa4f7396a4c8538748c9-2
deleted file mode 100644
index 2c75e9c7a7..0000000000
--- a/tests/fuzzers/txfetcher/corpus/0151ee1d0db4c74d3bcdfa4f7396a4c8538748c9-2
+++ /dev/null
@@ -1 +0,0 @@
-¿½
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/020dd7b492a6eb34ff0b7d8ee46189422c37e4a7-6 b/tests/fuzzers/txfetcher/corpus/020dd7b492a6eb34ff0b7d8ee46189422c37e4a7-6
deleted file mode 100644
index 8d3b57789e..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/020dd7b492a6eb34ff0b7d8ee46189422c37e4a7-6 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/021d1144e359233c496e22c3250609b11b213e9f-4 b/tests/fuzzers/txfetcher/corpus/021d1144e359233c496e22c3250609b11b213e9f-4
deleted file mode 100644
index 73731899d5..0000000000
--- a/tests/fuzzers/txfetcher/corpus/021d1144e359233c496e22c3250609b11b213e9f-4
+++ /dev/null
@@ -1,12 +0,0 @@
- TESTING KEY-----
-MIICXgIBAAKBgQDuLnQAI3mDgey3VBzWnB2L39JUU4txjeVE6myuDqkM/uGlfjb9
-SjY1bIw4iAJm2gsvvZhIrCHS3l6afab4pZB
-l2+XsDlrKBxKKtDrGxlG4LjncdabFn9gvLZad2bSysqz/qTAUStTtqJQIDAQAB
-AoGAGRzwwir7XvBOAy5tuV6ef6anZzus1s1Y1Clb6HbnWWF/wbZGOpet
-3m4vD6MXc7jpTLryzTQIvVdfQbRc6+MUVeLKZTXtdZrh+k7hx0nTP8Jcb
-uqFk541awmMogY/EfbWd6IOkp+4xqjlFBEDytgbIECQQDvH/6nk+hgN4H
-qzzVtxxr397vWrjrIgPbJpQvBsafG7b0dA4AFjwVbFLmQcj2PprIMmPcQrooz84SHEg1Ak/7KCxmD/sfgS5TeuNi8DoUBEmiSJwm7FX
-ftxuvL7XvjwjN5B30pNEbc6Iuyt7y4MQJBAIt21su43sjXNueLKH8+ph2UfQuU9txblTu14q3N7gHRZB4ZMhFYyDy8CKrN2cPg/Fvyt0Xl/DoCzjA0CQQDU
-y2pGsuSmgUtWj3NM9xuwYPm+Z/F84K6+ARYiZ6PYj013sovGKUFfYAqVXVlxtIáo‡X
-qUn3Xh9ps8ZfjLZO7BAkEAlT4R5Yl6cGhaJQYZHOde3JMhNRcVFMO8dDaFo
-f9Oeos0UotgiDktdQHxdNEwLjQlJBz+OtwwA=---E RATTIEY-
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/0d28327b1fb52c1ba02a6eb96675c31633921bb2-2 b/tests/fuzzers/txfetcher/corpus/0d28327b1fb52c1ba02a6eb96675c31633921bb2-2
deleted file mode 100644
index 8cc3039cb8..0000000000
--- a/tests/fuzzers/txfetcher/corpus/0d28327b1fb52c1ba02a6eb96675c31633921bb2-2
+++ /dev/null
@@ -1,15 +0,0 @@
-¸&^£áo‡È—-----BEGIN RSA TESTING KEY-----
-MIICXgIBAAKBgQDuLnQAI3mDgey3VBzWnB2L39JUU4txjeVE6myuDqkM/uGlfjb9
-SjY1bIw4iA5sBBZzHi3z0h1YV8QPuxEbi4nW91IJm2gsvvZhIrCHS3l6afab4pZB
-l2+XsDulrKBxKKtD1rGxlG4LjncdabFn9gvLZad2bSysqz/qTAUStTvqJQIDAQAB
-AoGAGRzwwir7XvBOAy5tM/uV6e+Zf6anZzus1s1Y1ClbjbE6HXbnWWF/wbZGOpet
-3Zm4vD6MXc7jpTLryzTQIvVdfQbRc6+MUVeLKwZatTXtdZrhu+Jk7hx0nTPy8Jcb
-uJqFk541aEw+mMogY/xEcfbWd6IOkp+4xqjlFLBEDytgbIECQQDvH/E6nk+hgN4H
-qzzVtxxr397vWrjrIgPbJpQvBsafG7b0dA4AFjwVbFLmQcj2PprIMmPcQrooz8vp
-jy4SHEg1AkEA/v13/5M47K9vCxmb8QeD/asydfsgS5TeuNi8DoUBEmiSJwma7FXY
-fFUtxuvL7XvjwjN5B30pNEbc6Iuyt7y4MQJBAIt21su4b3sjXNueLKH85Q+phy2U
-fQtuUE9txblTu14q3N7gHRZB4ZMhFYyDy8CKrN2cPg/Fvyt0Xlp/DoCzjA0CQQDU
-y2ptGsuSmgUtWj3NM9xuwYPm+Z/F84K6+ARYiZ6PYj013sovGKUFfYAqVXVlxtIX
-qyUBnu3X9ps8ZfjLZO7BAkEAlT4R5Yl6cGhaJQYZHOde3JEMhNRcVFMO8dJDaFeo
-f9Oeos0UUothgiDktdQHxdNEwLjQf7lJJBzV+5OtwswCWA==
------END RSA TESTING KEY-----Q_
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/0fcd827b57ded58e91f7ba2ac2b7ea4d25ebedca-7 b/tests/fuzzers/txfetcher/corpus/0fcd827b57ded58e91f7ba2ac2b7ea4d25ebedca-7
deleted file mode 100644
index 8ceee16af1..0000000000
--- a/tests/fuzzers/txfetcher/corpus/0fcd827b57ded58e91f7ba2ac2b7ea4d25ebedca-7
+++ /dev/null
@@ -1 +0,0 @@
-ð½apï¿ïï��ï¿ï¿¿½½½¿¿½½ï¿½ï¿½¿½ï¿ï¿½ï¿ïÓÌV½¿½ïïï¿ï¿½#ï¿ï¿½&��
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/109bc9b8fd4fef63493e104c703c79bc4a5e8d34-6 b/tests/fuzzers/txfetcher/corpus/109bc9b8fd4fef63493e104c703c79bc4a5e8d34-6
deleted file mode 100644
index df9b986af1..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/109bc9b8fd4fef63493e104c703c79bc4a5e8d34-6 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/163785ab002746452619f31e8dfcb4549e6f8b6e-6 b/tests/fuzzers/txfetcher/corpus/163785ab002746452619f31e8dfcb4549e6f8b6e-6
deleted file mode 100644
index 55467373d4..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/163785ab002746452619f31e8dfcb4549e6f8b6e-6 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/1adfa6b9ddf5766220c8ff7ede2926ca241bb947-3 b/tests/fuzzers/txfetcher/corpus/1adfa6b9ddf5766220c8ff7ede2926ca241bb947-3
deleted file mode 100644
index 4a593aa28d..0000000000
--- a/tests/fuzzers/txfetcher/corpus/1adfa6b9ddf5766220c8ff7ede2926ca241bb947-3
+++ /dev/null
@@ -1,11 +0,0 @@
-TAKBgDuLnQA3gey3VBznB39JUtxjeE6myuDkM/uGlfjb
-S1w4iA5sBzzh8uxEbi4nW91IJm2gsvvZhICHS3l6ab4pZB
-l2DulrKBxKKtD1rGxlG4LncabFn9vLZad2bSysqz/qTAUSTvqJQIDAQAB
-AoGAGRzwwir7XvBOAy5tM/uV6e+Zf6anZzus1s1Y1ClbjbE6HXbnWWF/wbZGOpet
-3Z4vMXc7jpTLryzTQIvVdfQbRc6+MUVeLKZatTXtdZrhu+Jk7hx0nTPy8Jcb
-uJqFk54MogxEcfbWd6IOkp+4xqFLBEDtgbIECnk+hgN4H
-qzzxxr397vWrjrIgbJpQvBv8QeeuNi8DoUBEmiSJwa7FXY
-FUtxuvL7XvjwjN5B30pEbc6Iuyt7y4MQJBAIt21su4b3sjphy2tuUE9xblTu14qgHZ6+AiZovGKU--FfYAqVXVlxtIX
-qyU3X9ps8ZfjLZ45l6cGhaJQYZHOde3JEMhNRcVFMO8dJDaFeo
-f9Oeos0UUothgiDktdQHxdNEwLjQf7lJJBzV+5OtwswCWA==
------END RSA T
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/1b9a02e9a48fea1d2fc3fb77946ada278e152079-4 b/tests/fuzzers/txfetcher/corpus/1b9a02e9a48fea1d2fc3fb77946ada278e152079-4
deleted file mode 100644
index 4a56f93d3b..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/1b9a02e9a48fea1d2fc3fb77946ada278e152079-4 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/1e14c7ea1faef92890988061b5abe96db7190f98-7 b/tests/fuzzers/txfetcher/corpus/1e14c7ea1faef92890988061b5abe96db7190f98-7
deleted file mode 100644
index d2442fc5a6..0000000000
--- a/tests/fuzzers/txfetcher/corpus/1e14c7ea1faef92890988061b5abe96db7190f98-7
+++ /dev/null
@@ -1 +0,0 @@
-0000000000000000000000000000000000000000000000000000000000000000000000000
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/1e7d05f00e99cbf3ff0ef1cd7ea8dd07ad6dff23-6 b/tests/fuzzers/txfetcher/corpus/1e7d05f00e99cbf3ff0ef1cd7ea8dd07ad6dff23-6
deleted file mode 100644
index 1c342ff53a..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/1e7d05f00e99cbf3ff0ef1cd7ea8dd07ad6dff23-6 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/1ec95e347fd522e6385b5091aa81aa2485be4891-4 b/tests/fuzzers/txfetcher/corpus/1ec95e347fd522e6385b5091aa81aa2485be4891-4
deleted file mode 100644
index b0c776bd4d..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/1ec95e347fd522e6385b5091aa81aa2485be4891-4 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/1fbfa5d214060d2a0905846a589fd6f78d411451-4 b/tests/fuzzers/txfetcher/corpus/1fbfa5d214060d2a0905846a589fd6f78d411451-4
deleted file mode 100644
index 75de835c98..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/1fbfa5d214060d2a0905846a589fd6f78d411451-4 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/1fd84ee194e791783a7f18f0a6deab8efe05fc04-2 b/tests/fuzzers/txfetcher/corpus/1fd84ee194e791783a7f18f0a6deab8efe05fc04-2
deleted file mode 100644
index 3b6d2560ae..0000000000
--- a/tests/fuzzers/txfetcher/corpus/1fd84ee194e791783a7f18f0a6deab8efe05fc04-2
+++ /dev/null
@@ -1 +0,0 @@
-¸&
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/21e76b9fca21d94d97f860c1c82f40697a83471b-8 b/tests/fuzzers/txfetcher/corpus/21e76b9fca21d94d97f860c1c82f40697a83471b-8
deleted file mode 100644
index 1d4620f49f..0000000000
--- a/tests/fuzzers/txfetcher/corpus/21e76b9fca21d94d97f860c1c82f40697a83471b-8
+++ /dev/null
@@ -1,3 +0,0 @@
-DtQvfQ+MULKZTXk78c
-/fWkpxlQQ/+hgNzVtx9vWgJsafG7b0dA4AFjwVbFLmQcj2PprIMmPNQrooX
-L
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/220a87fed0c92474923054094eb7aff14289cf5e-4 b/tests/fuzzers/txfetcher/corpus/220a87fed0c92474923054094eb7aff14289cf5e-4
deleted file mode 100644
index 175f74fd5a..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/220a87fed0c92474923054094eb7aff14289cf5e-4 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/23ddcd66aa92fe3d78b7f5b6e7cddb1b55c5f5df-3 b/tests/fuzzers/txfetcher/corpus/23ddcd66aa92fe3d78b7f5b6e7cddb1b55c5f5df-3
deleted file mode 100644
index 95892c7b00..0000000000
--- a/tests/fuzzers/txfetcher/corpus/23ddcd66aa92fe3d78b7f5b6e7cddb1b55c5f5df-3
+++ /dev/null
@@ -1,12 +0,0 @@
-4txjeVE6myuDqkM/uGlfjb9
-SjY1bIw4iA5sBBZzHi3z0h1YV8QPuxEbi4nW91IJm2gsvvZeIrCHS3l6afab4pZB
-l2+XsDlrKBxKKtD1rGxlG4jncdabFn9gvLZad2bSysqz/qTAUSTvqJQIDAQAB
-AoGAGRzwwXvBOAy5tM/uV6e+Zf6aZzus1s1Y1ClbjbE6HXbnWWF/wbZGOpet
-3Z4vD6Mc7pLryzTQIVdfQbRc6+MUVeLKZaTXtdZru+Jk70PJJqFk541aEw+mMogY/xEcfbWd6IOkp+4xqjlFLBEDytgbIECQQDvH/E6nk+gN4H
-qzzVtxxr397vWrjrIgPbJpQvBsafG7b0dA4AFjwVbFLmQ2PprIMPcQroo8vpjSHg1Ev14KxmQeDydfsgeuN8UBESJwm7F
-UtuL7Xvjw50pNEbc6Iuyty4QJA21su4sjXNueLQphy2U
-fQtuUE9txblTu14qN7gHRZB4ZMhFYyDy8CKrN2cPg/Fvyt0Xlp/DoCzjA0CQQDU
-y2ptGsuSmgUtWj3NM9xuwYPm+Z/F84K6ARYiZPYj1oGUFfYAVVxtI
-qyBnu3X9pfLZOAkEAlT4R5Yl6cJQYZHOde3JEhNRcVFMO8dJFo
-f9Oeos0UUhgiDkQxdEwLjQf7lJJz5OtwC=
--NRSA TESINGKEY-Q_
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/2441d249faf9a859e38c49f6e305b394280c6ea5-1 b/tests/fuzzers/txfetcher/corpus/2441d249faf9a859e38c49f6e305b394280c6ea5-1
deleted file mode 100644
index d76207e992..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/2441d249faf9a859e38c49f6e305b394280c6ea5-1 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/2da1f0635e11283b1927974f418aadd8837ad31e-7 b/tests/fuzzers/txfetcher/corpus/2da1f0635e11283b1927974f418aadd8837ad31e-7
deleted file mode 100644
index 73ae705701..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/2da1f0635e11283b1927974f418aadd8837ad31e-7 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/2e1853fbf8efe40098b1583224fe3b5f335e7037-6 b/tests/fuzzers/txfetcher/corpus/2e1853fbf8efe40098b1583224fe3b5f335e7037-6
deleted file mode 100644
index 692981e614..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/2e1853fbf8efe40098b1583224fe3b5f335e7037-6 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/2f25490dc49c103d653843ed47324b310ee7105e-7 b/tests/fuzzers/txfetcher/corpus/2f25490dc49c103d653843ed47324b310ee7105e-7
deleted file mode 100644
index 5cf7da75df..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/2f25490dc49c103d653843ed47324b310ee7105e-7 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/30494b85bb60ad7f099fa49d427007a761620d8f-5 b/tests/fuzzers/txfetcher/corpus/30494b85bb60ad7f099fa49d427007a761620d8f-5
deleted file mode 100644
index 7ff9d39752..0000000000
--- a/tests/fuzzers/txfetcher/corpus/30494b85bb60ad7f099fa49d427007a761620d8f-5
+++ /dev/null
@@ -1,10 +0,0 @@
-jXbnWWF/wbZGOpet
-3Zm4vD6MXc7jpTLryzTQIvVdfQbRc6+MUVeLKwZatTXtdZrhu+Jk7hx0nTPy8Jcb
-uJqFk541aEw+mMogY/xEcfbWd6IOkp+4xqjlFLBEDytgbIECQQDvH/E6nk+hgN4H
-qzzVtxxr397vWrjrIgPbJpQvBsafG7b0dA4AFjwVbFLmQcj2PprIMmPcQrooz8vp
-jy4SHEg1AkEA/v13/5M47K9vCxb8QeD/asydfsgS5TeuNi8DoUBEmiSJwma7FXY
-fFUtxuvL7XvjwjN5B30pNEbc6Iuyt7y4MQJBAIt21su4b3sjXNueLKH85Q+phy2U
-fQtuUE9txblTu14q3N7gHRZB4ZMhFYyDy8CKrN2cPg/Fvyt0Xl/DoCzjA0CQQDU
-y2ptGsuSmgUtWj3NM9xuwYPm+Z/F84K6+ARYiZ6Yj013sovGKUFfYAqVXVlxtIX
-qyUBnu3Xh9ps8ZfjLZO7BAkEAlT4R5Yl6cGhaJQYZHOde3JEMhNRcVFMO8dDaFeo
-f9Oeos0UotgiDktdQHxdNEwLjQfl
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/316024ca3aaf09c1de5258733ff5fe3d799648d3-4 b/tests/fuzzers/txfetcher/corpus/316024ca3aaf09c1de5258733ff5fe3d799648d3-4
deleted file mode 100644
index 61f7d78f34..0000000000
--- a/tests/fuzzers/txfetcher/corpus/316024ca3aaf09c1de5258733ff5fe3d799648d3-4
+++ /dev/null
@@ -1,15 +0,0 @@
-¸^áo‡È—----BEGIN RA TTING KEY-----
-IIXgIBAAKBQDuLnQI3mDgey3VBzWnB2L39JUU4txjeVE6myuDqkM/uGlfjb9
-SjY1bIw4iA5sBBZzHi3z0h1YV8QPuxEbi4nW91IJmgsvvZhrCHSl6afab4pZB
-l2+XsDulrKBxKKtD1rGxlG4LjcdabF9gvLZad2bSysqz/qTAUStTvqJQDAQAB
-AoGAGRzwwir7XvBOAy5tM/uV6e+Zf6anZzus1s1Y1ClbjbE6HXbnWWF/wbZGOpet
-3Z4vD6MXc7jpTLryzTQIvVdfQbRc6+MUVeLKwZatTXtdZrhu+Jk7hx0nTPy8Jcb
-uJqFk541aEw+mMogY/xEcfbWd6IOkp+4xqjlFLBEDytgbIECQQDvH/E6nk+hgN4H
-qzzVtxxr397vWrjrIgPbJpQvBsafG7b0dA4AFjwVbFLmQcj2PprIMmPcQrooz8vp
-jy4SHEg1AkEA/v13/5M47K9vCxmb8QeD/asydfsgS5TeuNi8DoUBEmiSJwma7FXY
-fFUtxuvL7XvjwjN5B30pNEbc6Iuyt7y4MQJBAIt21su4b3sjXNueLKH85Q+phy2U
-fQtuUE9txblTu14q3N7gHRZB4ZMhFYyDy8CKrN2cPg/Fvyt0Xlp/DoCzjA0CQQDU
-y2ptGsuSmgUtWj3NM9xuwYPm+Z/F84K6+ARYiZ6PYj043sovGKUFfYAqVXVlxtIX
-qyUBnu3X9ps8ZfjLZO7BAkEAlT4R5Yl6cGhaJQYZHOde3JEMhNRcVFMO8dJDaFeo
-f9Oeos0UUothgiDktdQHxdNEwLjQf7lJJBzV+5OtwswCWA==
------END RSA TESTING KEY-----Q_
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/32a089e2c439a91f4c1b67a13d52429bcded0dd9-7 b/tests/fuzzers/txfetcher/corpus/32a089e2c439a91f4c1b67a13d52429bcded0dd9-7
deleted file mode 100644
index a986a9d8e7..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/32a089e2c439a91f4c1b67a13d52429bcded0dd9-7 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/33ec1dc0bfeb93d16edee3c07125fec6ac1aa17d-2 b/tests/fuzzers/txfetcher/corpus/33ec1dc0bfeb93d16edee3c07125fec6ac1aa17d-2
deleted file mode 100644
index d41771b86c..0000000000
--- a/tests/fuzzers/txfetcher/corpus/33ec1dc0bfeb93d16edee3c07125fec6ac1aa17d-2
+++ /dev/null
@@ -1 +0,0 @@
-ï¿
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/37a0d207700b52caa005ec8aeb344dcb13150ed2-5 b/tests/fuzzers/txfetcher/corpus/37a0d207700b52caa005ec8aeb344dcb13150ed2-5
deleted file mode 100644
index 2f09c6e28f..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/37a0d207700b52caa005ec8aeb344dcb13150ed2-5 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/382f59c66d0ddb6747d3177263279789ca15c2db-5 b/tests/fuzzers/txfetcher/corpus/382f59c66d0ddb6747d3177263279789ca15c2db-5
deleted file mode 100644
index 84441ac374..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/382f59c66d0ddb6747d3177263279789ca15c2db-5 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/3a010483a4ad8d7215447ce27e0fac3791235c99-4 b/tests/fuzzers/txfetcher/corpus/3a010483a4ad8d7215447ce27e0fac3791235c99-4
deleted file mode 100644
index 28f5d99b98..0000000000
--- a/tests/fuzzers/txfetcher/corpus/3a010483a4ad8d7215447ce27e0fac3791235c99-4
+++ /dev/null
@@ -1,7 +0,0 @@
-
-lGAGRzwwir7XvBOAy5tM/uV6e+Zf6anZzus1s1Y1ClbjbE6HXbnWWF/wbZGOpet
-3Zm4vD6MXc7jpTLryzTQIvVdfQbRc6+MUVeLKwZatTXtdZrhu+Jk7hx0nTPy8Jcb
-uJqFk541aEw+mMogY/xEcfbWd6IOkp+4xqjlFLBEDytgbIECQQDvH/E6nk+hgN4H
-qzzVtxxr397vWrjrIgPbJpQvBsafG7b0dA4AFjwVbFLmQcj2PprIMmPcQrooz8vp
-jy4SHEg1AkEA/v13/5M47K9vCxmb8QeD/asydfsgS5TeuNi8DoUBEmiSJwma7FXY
-fFUtxuvL7XvjwjN5
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/3a3b717fcfe7ffb000b906e5a76f32248a576bf7-6 b/tests/fuzzers/txfetcher/corpus/3a3b717fcfe7ffb000b906e5a76f32248a576bf7-6
deleted file mode 100644
index 022de3c61d..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/3a3b717fcfe7ffb000b906e5a76f32248a576bf7-6 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/3c37f6d58b8029971935f127f53e6aaeba558445-6 b/tests/fuzzers/txfetcher/corpus/3c37f6d58b8029971935f127f53e6aaeba558445-6
deleted file mode 100644
index 9f3bf093ad..0000000000
--- a/tests/fuzzers/txfetcher/corpus/3c37f6d58b8029971935f127f53e6aaeba558445-6
+++ /dev/null
@@ -1,2 +0,0 @@
-¶Èíw¿½ï¿½Â€ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ �
-���
���ï¿ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ �!�"�#�$�%�&�'�(�)�*�+�,�-�.�/¿½0
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/3c73b63bafa9f535c882ec17189adaf02b58f432-6 b/tests/fuzzers/txfetcher/corpus/3c73b63bafa9f535c882ec17189adaf02b58f432-6
deleted file mode 100644
index 0dfbc46993..0000000000
--- a/tests/fuzzers/txfetcher/corpus/3c73b63bafa9f535c882ec17189adaf02b58f432-6
+++ /dev/null
@@ -1 +0,0 @@
-LvhaJQHOe3EhRcdaFofeoogkjQfJB
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/3d11500c4f66b20c73bbdfb1a7bddd7bbf92b29c-5 b/tests/fuzzers/txfetcher/corpus/3d11500c4f66b20c73bbdfb1a7bddd7bbf92b29c-5
deleted file mode 100644
index b19fc7f458..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/3d11500c4f66b20c73bbdfb1a7bddd7bbf92b29c-5 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/3d8b5bf36c80d6f65802280039f85421f32b5055-6 b/tests/fuzzers/txfetcher/corpus/3d8b5bf36c80d6f65802280039f85421f32b5055-6
deleted file mode 100644
index eacd269f31..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/3d8b5bf36c80d6f65802280039f85421f32b5055-6 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/3f99c546a3962256176d566c19e3fffb62072078-1 b/tests/fuzzers/txfetcher/corpus/3f99c546a3962256176d566c19e3fffb62072078-1
deleted file mode 100644
index 9e90183d6b..0000000000
--- a/tests/fuzzers/txfetcher/corpus/3f99c546a3962256176d566c19e3fffb62072078-1
+++ /dev/null
@@ -1 +0,0 @@
-¸&^£áo‡
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/408ec46539af27acd82b3d01e863597030882458-8 b/tests/fuzzers/txfetcher/corpus/408ec46539af27acd82b3d01e863597030882458-8
deleted file mode 100644
index 65d55437e5..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/408ec46539af27acd82b3d01e863597030882458-8 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/436154e5bb6487673f6642e6d2a582c01b083c08-8 b/tests/fuzzers/txfetcher/corpus/436154e5bb6487673f6642e6d2a582c01b083c08-8
deleted file mode 100644
index 28e519c125..0000000000
--- a/tests/fuzzers/txfetcher/corpus/436154e5bb6487673f6642e6d2a582c01b083c08-8
+++ /dev/null
@@ -1 +0,0 @@
-ð½apfffffffffffffffffffffffffffffffebadce6f48a0Ÿ_3bbfd2364
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/45f565cd14b8de1ba2e925047ce776c2682b4b8d-3 b/tests/fuzzers/txfetcher/corpus/45f565cd14b8de1ba2e925047ce776c2682b4b8d-3
deleted file mode 100644
index 9f03a095b9..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/45f565cd14b8de1ba2e925047ce776c2682b4b8d-3 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/4a0a12f5b033c8c160cc3b5133692ea1e92c6cdf-7 b/tests/fuzzers/txfetcher/corpus/4a0a12f5b033c8c160cc3b5133692ea1e92c6cdf-7
deleted file mode 100644
index e50b5494c9..0000000000
--- a/tests/fuzzers/txfetcher/corpus/4a0a12f5b033c8c160cc3b5133692ea1e92c6cdf-7
+++ /dev/null
@@ -1,3 +0,0 @@
-DtQvfQ+MULKZTXk78c
-/fWkpxlyEQQ/+hgNzVtx9vWgJsafG7b0dA4AFjwVbFLmQcj2PprIMmPNQg1Ak/7KCxmDgS5TDEmSJwFX
-txLjbt4xTgeXVlXsjLZ
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/550f15ef65230cc4dcfab7fea67de212d9212ff8-8 b/tests/fuzzers/txfetcher/corpus/550f15ef65230cc4dcfab7fea67de212d9212ff8-8
deleted file mode 100644
index 34005f43cb..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/550f15ef65230cc4dcfab7fea67de212d9212ff8-8 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/5552213d659fef900a194c52718ffeffdc72d043-3 b/tests/fuzzers/txfetcher/corpus/5552213d659fef900a194c52718ffeffdc72d043-3
deleted file mode 100644
index 7346ff1955..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/5552213d659fef900a194c52718ffeffdc72d043-3 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/5570ef82893a9b9b9158572d43a7de7537121d2d-1 b/tests/fuzzers/txfetcher/corpus/5570ef82893a9b9b9158572d43a7de7537121d2d-1
deleted file mode 100644
index feffcebca0..0000000000
--- a/tests/fuzzers/txfetcher/corpus/5570ef82893a9b9b9158572d43a7de7537121d2d-1
+++ /dev/null
@@ -1 +0,0 @@
-ð½ï½ï¿½Ù¯0,1,2,3,4,5,6,7,-3420794409,(2,a)
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/5e10f734f8af4116fbd164d96eec67aa53e6228c-5 b/tests/fuzzers/txfetcher/corpus/5e10f734f8af4116fbd164d96eec67aa53e6228c-5
deleted file mode 100644
index 0eacd0b59a..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/5e10f734f8af4116fbd164d96eec67aa53e6228c-5 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/608200b402488b3989ec8ec5f4190ccb537b8ea4-4 b/tests/fuzzers/txfetcher/corpus/608200b402488b3989ec8ec5f4190ccb537b8ea4-4
deleted file mode 100644
index d37b018515..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/608200b402488b3989ec8ec5f4190ccb537b8ea4-4 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/61e89c3fbdf9eff74bd250ea73cc2e61f8ca0d97-5 b/tests/fuzzers/txfetcher/corpus/61e89c3fbdf9eff74bd250ea73cc2e61f8ca0d97-5
deleted file mode 100644
index 155744bccc..0000000000
--- a/tests/fuzzers/txfetcher/corpus/61e89c3fbdf9eff74bd250ea73cc2e61f8ca0d97-5
+++ /dev/null
@@ -1 +0,0 @@
-88242871'392752200424491531672177074144720616417147514758635765020556616¿
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/62817a48c78fbf2c12fcdc5ca58e2ca60c43543a-7 b/tests/fuzzers/txfetcher/corpus/62817a48c78fbf2c12fcdc5ca58e2ca60c43543a-7
deleted file mode 100644
index 795608a789..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/62817a48c78fbf2c12fcdc5ca58e2ca60c43543a-7 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/6782da8f1a432a77306d60d2ac2470c35b98004f-3 b/tests/fuzzers/txfetcher/corpus/6782da8f1a432a77306d60d2ac2470c35b98004f-3
deleted file mode 100644
index f44949e6ae..0000000000
--- a/tests/fuzzers/txfetcher/corpus/6782da8f1a432a77306d60d2ac2470c35b98004f-3
+++ /dev/null
@@ -1 +0,0 @@
-21888242871'392752200424452601091531672177074144720616417147514758635765020556616¿½
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/68fb55290cb9d6da5b259017c34bcecf96c944aa-5 b/tests/fuzzers/txfetcher/corpus/68fb55290cb9d6da5b259017c34bcecf96c944aa-5
deleted file mode 100644
index 23d905b827..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/68fb55290cb9d6da5b259017c34bcecf96c944aa-5 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/6a5059bc86872526241d21ab5dae9f0afd3b9ae1-3 b/tests/fuzzers/txfetcher/corpus/6a5059bc86872526241d21ab5dae9f0afd3b9ae1-3
deleted file mode 100644
index b71d5dff51..0000000000
--- a/tests/fuzzers/txfetcher/corpus/6a5059bc86872526241d21ab5dae9f0afd3b9ae1-3
+++ /dev/null
@@ -1 +0,0 @@
-¿½
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/717928e0e2d478c680c6409b173552ca98469ba5-6 b/tests/fuzzers/txfetcher/corpus/717928e0e2d478c680c6409b173552ca98469ba5-6
deleted file mode 100644
index dce5106115..0000000000
--- a/tests/fuzzers/txfetcher/corpus/717928e0e2d478c680c6409b173552ca98469ba5-6
+++ /dev/null
@@ -1 +0,0 @@
-LvhaJcdaFofenogkjQfJB
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/71d22f25419543e437f249ca437823b87ac926b1-6 b/tests/fuzzers/txfetcher/corpus/71d22f25419543e437f249ca437823b87ac926b1-6
deleted file mode 100644
index d07a6c2f32..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/71d22f25419543e437f249ca437823b87ac926b1-6 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/7312a0f31ae5d773ed4fd74abc7521eb14754683-8 b/tests/fuzzers/txfetcher/corpus/7312a0f31ae5d773ed4fd74abc7521eb14754683-8
deleted file mode 100644
index 3593ce2e19..0000000000
--- a/tests/fuzzers/txfetcher/corpus/7312a0f31ae5d773ed4fd74abc7521eb14754683-8
+++ /dev/null
@@ -1,2 +0,0 @@
-DtQvfQ+MULKZTXk78c
-/fWkpxlyEQQ/+hgNzVtx9vWgJsafG7b0dA4AFjwVbFLmQcj2PprIMmPNQg1AkS5TDEmSJwFVlXsjLZ
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/76e413a50dc8861e3756e556f796f1737bec2675-4 b/tests/fuzzers/txfetcher/corpus/76e413a50dc8861e3756e556f796f1737bec2675-4
deleted file mode 100644
index 623fcf9601..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/76e413a50dc8861e3756e556f796f1737bec2675-4 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/78480977d5c07386b06e9b37f5c82f5ed86c2f09-3 b/tests/fuzzers/txfetcher/corpus/78480977d5c07386b06e9b37f5c82f5ed86c2f09-3
deleted file mode 100644
index e92863a1c7..0000000000
--- a/tests/fuzzers/txfetcher/corpus/78480977d5c07386b06e9b37f5c82f5ed86c2f09-3
+++ /dev/null
@@ -1,14 +0,0 @@
- TESTING KEY-----
-MIICXgIBAAKBgQDuLnQAI3mDgey3VBzWnB2L39JUU4txjeVE6myuDqkM/uGlfjb9
-SjY1bIw4iAJm2gsvvZhIrCHS3l6afab4pZB
-l2+XsDulrKBxKKtD1rGxlG4LjncdabFn9gvLZad2bSysqz/qTAUStTvqJQIDAQAB
-AoGAGRzwwir7XvBOAy5tM/uV6e+Zf6anZzus1s1Y1ClbjbE6HXbnWWF/wbZGOpet
-3Zm4vD6MXc7jpTLryzTQIvVdfQbRc6+MUVeLKwZatTXtdZrhu+Jk7hx0nTPy8Jcb
-uJqFk541aEw+mMogY/xEcfbWd6IOkp+4xqjlFLBEDytgbIECQQDvH/E6nk+hgN4H
-qzzVtxxr397vWrjrIgPbJpQvBsafG7b0dA4AFjwVbFLmQcj2PprIMmPcQrooz8vp
-jy4SHEg1AkEA/v13/5M47K9vCxmb8QeD/asydfsgS5TeuNi8DoUBEmiSJwma7FXY
-fFUtxuvL7XvjwjN5B30pNEbc6Iuyt7y4MQJBAIt21su4b3sjXNueLKH85Q+phy2U
-fQtuUE9txblTu14q3N7gHRZB4ZMhFYyDy8CKrN2cPg/Fvyt0Xl/DoCzjA0CQQDU
-y2ptGsuSmgUtWj3NM9xuwYPm+Z/F84K6+ARYiZ6PYj013sovGKUFfYAqVXVlxtIX
-qyUBnu3Xh9ps8ZfjLZO7BAkEAlT4R5Yl6cGhaJQYZHOde3JEMhNRcVFMO8dDaFeo
-f9Oeos0UotgiDktdQHxdNEwLjQflJJBzV+5OtwswCA=----EN RATESTI EY-----Q
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/7a113cd3c178934cdb64353af86d51462d7080a4-5 b/tests/fuzzers/txfetcher/corpus/7a113cd3c178934cdb64353af86d51462d7080a4-5
deleted file mode 100644
index 16818128ae..0000000000
--- a/tests/fuzzers/txfetcher/corpus/7a113cd3c178934cdb64353af86d51462d7080a4-5
+++ /dev/null
@@ -1,10 +0,0 @@
-l6afab4pZB
-l2+XsDlrKBxKKtDrGxlG4LjncdabFn9gvLZad2bSysqz/qTAUStTtqJQIDAQAB
-AoGAGRzwwir7XvBOAy5tuV6ef6anZzus1s1Y1Clb6HbnWWF/wbZGOpet
-3m4vD6MXc7jpTLryzTQIvVdfQbRc6+MUVeLKZTXtdZrh+k7hx0nTP8Jcb
-uqFk541awmMogY/EfbWd6IOkp+4xqjlFBEDytgbIECQQDvH/6nk+hgN4H
-qzzVtxxr397vWrjrIgPbJpQvBsafG7b0dA4AFjwVbFLmQcj2PprIMmPcQrooz84SHEg1Ak/7KCxmD/sfgS5TeuNi8DoUBEmiSJwm7FX
-ftxuvL7XvjwjN5B30pNEbc6Iuyt7y4MQJBAIt21su43sjXNueLKH8+ph2UfQuU9txblTu14q3N7gHRZB4ZMhFYyDy8CKrN2cPg/Fvyt0Xl/DoCzjA0CQQDU
-y2pGsuSmgUtWj3NM9xuwYPm+Z/F84K6+ARYiZ6PYj13sovGKUFfYAqVXVlxtIáo‡X
-qUn3X9ps8ZfjLZO7BAkEAlT4R5Yl6cGhaJQYZHOde3JMhNRcVFMO8dDaFo
-f9Oeos0UotgiDktdQHxdNEwLjQlJBz+OtwwA=---E ATTIEY-
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/7ea9f71020f3eb783f743f744eba8d8ca4b2582f-3 b/tests/fuzzers/txfetcher/corpus/7ea9f71020f3eb783f743f744eba8d8ca4b2582f-3
deleted file mode 100644
index 08f5bb99f5..0000000000
--- a/tests/fuzzers/txfetcher/corpus/7ea9f71020f3eb783f743f744eba8d8ca4b2582f-3
+++ /dev/null
@@ -1,9 +0,0 @@
-
-l2+DulrKBxKKtD1rGxlG4LjncdabFn9gvLZad2bSysqz/qTAUStTvqJQIDAQAB
-AoGAGRzwwir7XvBOAy5tM/uV6e+Zf6anZzus1s1Y1ClbjbE6HXbnWWF/wbZGOpet
-3Zm4vD6MXc7jpTLryzTQIvVdfQbRc6+MUVeLKwZatTXtdZrhu+Jk7hx0nTPy8Jcb
-uJqFk541aEw+mMogY/xEcfbWd6IOkp+4xqjlFLBEDytgbIECQQDvH/E6nk+hgN4H
-qzzVtxxr397vWrjrIgPbJpQvBsafG7b0dA4AFjwVbFLmQcj2PprIMmPcQrooz8vp
-jy4SHEg1AkEA/v13/5M47K9vCxmb8QeD/asydfsgS5TeuNi8DoUBEmiSJwma7FXY
-fFUtxuvL7XvjwjN5B30pNEbc6Iuyt7y4MQJBAIt21su4b3sjXNueLKH85Q+phy2U
-fQtuUE9txblTu14q3N7gHRZB4ZMhFYyDy8CKrN2cPg/Fvyt0Xlp/DoCzjA0CQQDU
diff --git a/tests/fuzzers/txfetcher/corpus/84f8c275f3ffbaf8c32c21782af13de10e7de28b-3 b/tests/fuzzers/txfetcher/corpus/84f8c275f3ffbaf8c32c21782af13de10e7de28b-3
deleted file mode 100644
index 2d6060c406..0000000000
--- a/tests/fuzzers/txfetcher/corpus/84f8c275f3ffbaf8c32c21782af13de10e7de28b-3
+++ /dev/null
@@ -1 +0,0 @@
-KKtDlbjVeLKwZatTXtdZrhu+Jk7hx0xxr397vWrjrIgPbJpQvBsafG7b0dA4AFjwVbFLQcmPcQETT YQ
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/85dfe7ddee0e52aa19115c0ebb9ed28a14e488c6-5 b/tests/fuzzers/txfetcher/corpus/85dfe7ddee0e52aa19115c0ebb9ed28a14e488c6-5
deleted file mode 100644
index 9b6fe78029..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/85dfe7ddee0e52aa19115c0ebb9ed28a14e488c6-5 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/87bba5b1e3da38fed8cb5a9bc5c8baa819e83d05-5 b/tests/fuzzers/txfetcher/corpus/87bba5b1e3da38fed8cb5a9bc5c8baa819e83d05-5
deleted file mode 100644
index ef091f0be2..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/87bba5b1e3da38fed8cb5a9bc5c8baa819e83d05-5 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/8a9ebedfbfec584d8b22761e6121dc1ca0248548-4 b/tests/fuzzers/txfetcher/corpus/8a9ebedfbfec584d8b22761e6121dc1ca0248548-4
deleted file mode 100644
index 953be79201..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/8a9ebedfbfec584d8b22761e6121dc1ca0248548-4 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/8ff3bd49f93079e5e1c7f8f2461ba7ee612900c3-5 b/tests/fuzzers/txfetcher/corpus/8ff3bd49f93079e5e1c7f8f2461ba7ee612900c3-5
deleted file mode 100644
index a86a66593b..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/8ff3bd49f93079e5e1c7f8f2461ba7ee612900c3-5 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/9034aaf45143996a2b14465c352ab0c6fa26b221-2 b/tests/fuzzers/txfetcher/corpus/9034aaf45143996a2b14465c352ab0c6fa26b221-2
deleted file mode 100644
index 9c95a6ba6a..0000000000
--- a/tests/fuzzers/txfetcher/corpus/9034aaf45143996a2b14465c352ab0c6fa26b221-2
+++ /dev/null
@@ -1 +0,0 @@
-½
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/92cefdc6251d04896349a464b29be03d6bb04c3d-2 b/tests/fuzzers/txfetcher/corpus/92cefdc6251d04896349a464b29be03d6bb04c3d-2
deleted file mode 100644
index 9b78e45707..0000000000
--- a/tests/fuzzers/txfetcher/corpus/92cefdc6251d04896349a464b29be03d6bb04c3d-2
+++ /dev/null
@@ -1 +0,0 @@
-ï39402006196394479212279040100143613805079739270465446667948293404245721771496870329047266088258938001861606973112319¿½
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/9613e580ccb69df7c9074f0e2f6886ac6b34ca55-5 b/tests/fuzzers/txfetcher/corpus/9613e580ccb69df7c9074f0e2f6886ac6b34ca55-5
deleted file mode 100644
index 681adc6a9c..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/9613e580ccb69df7c9074f0e2f6886ac6b34ca55-5 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/98afc8970a680fdc4aee0b5d48784f650c566b75-6 b/tests/fuzzers/txfetcher/corpus/98afc8970a680fdc4aee0b5d48784f650c566b75-6
deleted file mode 100644
index c82defc243..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/98afc8970a680fdc4aee0b5d48784f650c566b75-6 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/9dfc92f4ca2ece0167096fca6751ff314765f08b-8 b/tests/fuzzers/txfetcher/corpus/9dfc92f4ca2ece0167096fca6751ff314765f08b-8
deleted file mode 100644
index be75c25fec..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/9dfc92f4ca2ece0167096fca6751ff314765f08b-8 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/9ebcbbfdaf0e98c87652e57226a4d8a35170c67d-4 b/tests/fuzzers/txfetcher/corpus/9ebcbbfdaf0e98c87652e57226a4d8a35170c67d-4
deleted file mode 100644
index ab036767db..0000000000
--- a/tests/fuzzers/txfetcher/corpus/9ebcbbfdaf0e98c87652e57226a4d8a35170c67d-4
+++ /dev/null
@@ -1,5 +0,0 @@
-l2+DulrKBxKKtD1rGxlG4LjncdabFn9gvLZad2bSysqz/qTAUStTvqJQIDAQAB
-AoGAGRzwwir7XvBOAy5tM/uV6e+Zf6anZzus1s1Y1ClbjbE6HXbnWWF/wbZGOpwVbFLmQet
-3Zm4vD6MXc7jpTLryzTQIvVdfQbRc6+MUVeLKwZatTXtdZrhu+Jk7hx0nTPy8Jcb
-uJqFk541aEw+mMogY/xEcfbWd6IOkp+4xqjlFLBEDytgbIECQQDvH/E6nk+hgN4H
-qzzVtxxr397vWrjr
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/9ff520eb8b8319a5fdafbe4d1cbb02a75058d93b-7 b/tests/fuzzers/txfetcher/corpus/9ff520eb8b8319a5fdafbe4d1cbb02a75058d93b-7
deleted file mode 100644
index d91a13138c..0000000000
--- a/tests/fuzzers/txfetcher/corpus/9ff520eb8b8319a5fdafbe4d1cbb02a75058d93b-7
+++ /dev/null
@@ -1,2 +0,0 @@
-&Èíw¿½ï¿½Â€ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ï¿½ �
-���
���ï¿ï¿½ï¿½ï¿½ÿÿÿ����������� �!�"�#�$�%�&�'�(�)�*�+�,�-�.�/¿½0
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/a0b57a12e25ac5adcedb2a5c45915f0f62aee869-4 b/tests/fuzzers/txfetcher/corpus/a0b57a12e25ac5adcedb2a5c45915f0f62aee869-4
deleted file mode 100644
index 78243163a8..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/a0b57a12e25ac5adcedb2a5c45915f0f62aee869-4 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/a2684adccf16e036b051c12f283734fa803746e8-6 b/tests/fuzzers/txfetcher/corpus/a2684adccf16e036b051c12f283734fa803746e8-6
deleted file mode 100644
index 4e12af2da8..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/a2684adccf16e036b051c12f283734fa803746e8-6 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/a37305974cf477ecfe65fa92f37b1f51dea25910-4 b/tests/fuzzers/txfetcher/corpus/a37305974cf477ecfe65fa92f37b1f51dea25910-4
deleted file mode 100644
index 75cb14e8d9..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/a37305974cf477ecfe65fa92f37b1f51dea25910-4 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/a7eb43926bd14b1f62a66a33107776e487434d32-7 b/tests/fuzzers/txfetcher/corpus/a7eb43926bd14b1f62a66a33107776e487434d32-7
deleted file mode 100644
index 88e6127355..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/a7eb43926bd14b1f62a66a33107776e487434d32-7 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/a8f7c254eb64a40fd2a77b79979c7bbdac6a760c-4 b/tests/fuzzers/txfetcher/corpus/a8f7c254eb64a40fd2a77b79979c7bbdac6a760c-4
deleted file mode 100644
index da61777c22..0000000000
--- a/tests/fuzzers/txfetcher/corpus/a8f7c254eb64a40fd2a77b79979c7bbdac6a760c-4
+++ /dev/null
@@ -1,2 +0,0 @@
-lxtIX
-qyU3X9ps8ZfjLZ45l6cGhaJQYZHOde3JEMhNRcVFMO8dJDaFe
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/a9a8f287d6af24e47d8db468e8f967aa44fb5a1f-7 b/tests/fuzzers/txfetcher/corpus/a9a8f287d6af24e47d8db468e8f967aa44fb5a1f-7
deleted file mode 100644
index 7811921b79..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/a9a8f287d6af24e47d8db468e8f967aa44fb5a1f-7 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/aa7444d8e326158046862590a0db993c07aef372-7 b/tests/fuzzers/txfetcher/corpus/aa7444d8e326158046862590a0db993c07aef372-7
deleted file mode 100644
index 870e12ffbc..0000000000
--- a/tests/fuzzers/txfetcher/corpus/aa7444d8e326158046862590a0db993c07aef372-7
+++ /dev/null
@@ -1 +0,0 @@
-00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000@0000000000000
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/ae4593626d8796e079a358c2395a4f6c9ddd6a44-6 b/tests/fuzzers/txfetcher/corpus/ae4593626d8796e079a358c2395a4f6c9ddd6a44-6
deleted file mode 100644
index 845deedd0e..0000000000
--- a/tests/fuzzers/txfetcher/corpus/ae4593626d8796e079a358c2395a4f6c9ddd6a44-6
+++ /dev/null
@@ -1,8 +0,0 @@
-9pmM gY/xEcfbWd6IOkp+4xqjlFLBEDytgbparsing /E6nk+hgN4H
-qzzVtxxr397vWrjrIgPbJpQvBsafG7b0dA4AFjwVbFLmQcj2PprLANGcQrooz8vp
-jy4SHEg1AkEA/v13/@M47K9vCxb8QeD/asydfsgS5TeuNi8DoUBEmiSJwma7FXY
-fFUtxuvL7XvjwjN5B30pNEbc6Iuyt7y4MQJBAIt21su4b3sjXNueLKH85Q+phy2U
-fQtuUE9txblTu14q3N7gHRZB4ZMhFYyDy8CKrN2cPg/Fvyt0Xl/DoCz� jA0CQQDU
-y2ptGsuSmgUtWj3NM9xuwYPm+Z/F84K6+ARYiZ6Yj013sovGKUFfYAqVXVlxtIX
-qyUBnu3Xh9ps8ZfjLZO7BAkEAlT4R5Yl6cGhaJQYFZHOde3JEMhNRcVFMO8dDaFeo
-f9Oeos0Uot
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/b2942d4413a66939cda7db93020dee79eb17788c-9 b/tests/fuzzers/txfetcher/corpus/b2942d4413a66939cda7db93020dee79eb17788c-9
deleted file mode 100644
index 10aca65121..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/b2942d4413a66939cda7db93020dee79eb17788c-9 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/b4614117cdfd147d38f4e8a4d85f5a2bb99a6a4f-5 b/tests/fuzzers/txfetcher/corpus/b4614117cdfd147d38f4e8a4d85f5a2bb99a6a4f-5
deleted file mode 100644
index af69eef9b0..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/b4614117cdfd147d38f4e8a4d85f5a2bb99a6a4f-5 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/b631ef3291fa405cd6517d11f4d1b9b6d02912d4-2 b/tests/fuzzers/txfetcher/corpus/b631ef3291fa405cd6517d11f4d1b9b6d02912d4-2
deleted file mode 100644
index a6b8858b40..0000000000
--- a/tests/fuzzers/txfetcher/corpus/b631ef3291fa405cd6517d11f4d1b9b6d02912d4-2
+++ /dev/null
@@ -1 +0,0 @@
-&áo‡
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/b7a91e338cc11f50ebdb2c414610efc4d5be3137-4 b/tests/fuzzers/txfetcher/corpus/b7a91e338cc11f50ebdb2c414610efc4d5be3137-4
deleted file mode 100644
index 9709a1fcb8..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/b7a91e338cc11f50ebdb2c414610efc4d5be3137-4 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/b858cb282617fb0956d960215c8e84d1ccf909c6-2 b/tests/fuzzers/txfetcher/corpus/b858cb282617fb0956d960215c8e84d1ccf909c6-2
deleted file mode 100644
index 0519ecba6e..0000000000
--- a/tests/fuzzers/txfetcher/corpus/b858cb282617fb0956d960215c8e84d1ccf909c6-2
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/bc9d570aacf3acd39600feda8e72a293a4667da4-1 b/tests/fuzzers/txfetcher/corpus/bc9d570aacf3acd39600feda8e72a293a4667da4-1
deleted file mode 100644
index aab27c5909..0000000000
--- a/tests/fuzzers/txfetcher/corpus/bc9d570aacf3acd39600feda8e72a293a4667da4-1
+++ /dev/null
@@ -1 +0,0 @@
-�
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/be7eed35b245b5d5d2adcdb4c67f07794eb86b24-3 b/tests/fuzzers/txfetcher/corpus/be7eed35b245b5d5d2adcdb4c67f07794eb86b24-3
deleted file mode 100644
index 47c996d33f..0000000000
--- a/tests/fuzzers/txfetcher/corpus/be7eed35b245b5d5d2adcdb4c67f07794eb86b24-3
+++ /dev/null
@@ -1,2 +0,0 @@
-4LZmbRc6+MUVeLKXtdZr+Jk7hhgN4H
-qzzVtxxr397vWrjrIgPbJpQvBsafG7b0dA4AFjwVbFLQcmPcQ SN_
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/c010b0cd70c7edbc5bd332fc9e2e91c6a1cbcdc4-5 b/tests/fuzzers/txfetcher/corpus/c010b0cd70c7edbc5bd332fc9e2e91c6a1cbcdc4-5
deleted file mode 100644
index 474f14d89b..0000000000
--- a/tests/fuzzers/txfetcher/corpus/c010b0cd70c7edbc5bd332fc9e2e91c6a1cbcdc4-5
+++ /dev/null
@@ -1,4 +0,0 @@
-
-Xc7jpTLryzTQIvVdfQbRc6+MUVeLKwZatTXtdZrhu+Jk7hx0nTPy8Jcb
-uJqFk541aEw+mMogY/xEcfbWd6IOkp+4xqjlFLBEDytgbIECQQDvH/E6nhgN4H
-qzzVtxx7vWrjrIgPbJpvfb
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/c1690698607eb0f4c4244e9f9629968be4beb6bc-8 b/tests/fuzzers/txfetcher/corpus/c1690698607eb0f4c4244e9f9629968be4beb6bc-8
deleted file mode 100644
index d184a2d8a4..0000000000
--- a/tests/fuzzers/txfetcher/corpus/c1690698607eb0f4c4244e9f9629968be4beb6bc-8
+++ /dev/null
@@ -1,2 +0,0 @@
-&Ƚ�� �
-���
���ï¿ï¿½ï¿½ï¿½ÿÿÿ����������� �!�"�#�$�%�&�'�(�)�*�+�,�-�.�/¿½0
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/c1f435e4f53a9a17578d9e8c4789860f962a1379-6 b/tests/fuzzers/txfetcher/corpus/c1f435e4f53a9a17578d9e8c4789860f962a1379-6
deleted file mode 100644
index f2a68ec3de..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/c1f435e4f53a9a17578d9e8c4789860f962a1379-6 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/c298a75334c3acf04bd129a8867447a25c8bacf8-7 b/tests/fuzzers/txfetcher/corpus/c298a75334c3acf04bd129a8867447a25c8bacf8-7
deleted file mode 100644
index 0b437f2260..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/c298a75334c3acf04bd129a8867447a25c8bacf8-7 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/c42287c7d225e530e822f23bbbba6819a9e48f38-6 b/tests/fuzzers/txfetcher/corpus/c42287c7d225e530e822f23bbbba6819a9e48f38-6
deleted file mode 100644
index 91818f5634..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/c42287c7d225e530e822f23bbbba6819a9e48f38-6 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/c4cdbb891f3ee76476b7375d5ed51691fed95421-10 b/tests/fuzzers/txfetcher/corpus/c4cdbb891f3ee76476b7375d5ed51691fed95421-10
deleted file mode 100644
index e365cc5262..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/c4cdbb891f3ee76476b7375d5ed51691fed95421-10 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/cc9572d72dfa2937074b1766dcbcff9cc58d1137-4 b/tests/fuzzers/txfetcher/corpus/cc9572d72dfa2937074b1766dcbcff9cc58d1137-4
deleted file mode 100644
index b72a78f529..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/cc9572d72dfa2937074b1766dcbcff9cc58d1137-4 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/cd1d73b4e101bc7b979e3f6f135cb12d4594d348-5 b/tests/fuzzers/txfetcher/corpus/cd1d73b4e101bc7b979e3f6f135cb12d4594d348-5
deleted file mode 100644
index 3079de5557..0000000000
--- a/tests/fuzzers/txfetcher/corpus/cd1d73b4e101bc7b979e3f6f135cb12d4594d348-5
+++ /dev/null
@@ -1 +0,0 @@
-822452601031714757585602556
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/d0acdc8fca32bbd58d368eeac3bd9eaa46f59d27-5 b/tests/fuzzers/txfetcher/corpus/d0acdc8fca32bbd58d368eeac3bd9eaa46f59d27-5
deleted file mode 100644
index 794d5d86c6..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/d0acdc8fca32bbd58d368eeac3bd9eaa46f59d27-5 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/d0e43b715fd00953f7bdd6dfad95811985e81396-4 b/tests/fuzzers/txfetcher/corpus/d0e43b715fd00953f7bdd6dfad95811985e81396-4
deleted file mode 100644
index 742db5fb3b..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/d0e43b715fd00953f7bdd6dfad95811985e81396-4 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/d925fbd22c8bc0de34d6a9d1258ce3d2928d0927-8 b/tests/fuzzers/txfetcher/corpus/d925fbd22c8bc0de34d6a9d1258ce3d2928d0927-8
deleted file mode 100644
index 5920dfe601..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/d925fbd22c8bc0de34d6a9d1258ce3d2928d0927-8 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/d9ba78cb7425724185d5fa300cd5c03aec2683bb-7 b/tests/fuzzers/txfetcher/corpus/d9ba78cb7425724185d5fa300cd5c03aec2683bb-7
deleted file mode 100644
index c4df1cf210..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/d9ba78cb7425724185d5fa300cd5c03aec2683bb-7 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/da39a3ee5e6b4b0d3255bfef95601890afd80709 b/tests/fuzzers/txfetcher/corpus/da39a3ee5e6b4b0d3255bfef95601890afd80709
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/tests/fuzzers/txfetcher/corpus/dcdb7758b87648b5d766b1b341a65834420cf621-7 b/tests/fuzzers/txfetcher/corpus/dcdb7758b87648b5d766b1b341a65834420cf621-7
deleted file mode 100644
index 78cf11ae21..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/dcdb7758b87648b5d766b1b341a65834420cf621-7 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/dd441bd24581332c9ce19e008260a69287aa3cbc-6 b/tests/fuzzers/txfetcher/corpus/dd441bd24581332c9ce19e008260a69287aa3cbc-6
deleted file mode 100644
index 4e0c14006e..0000000000
--- a/tests/fuzzers/txfetcher/corpus/dd441bd24581332c9ce19e008260a69287aa3cbc-6
+++ /dev/null
@@ -1,2 +0,0 @@
-Dtf1nWk78c
-/fWklyEQQ/+hgNzVtxxmDgS5TDETgeXVlXsjLZ
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/def879fe0fd637a745c00c8f1da340518db8688c-2 b/tests/fuzzers/txfetcher/corpus/def879fe0fd637a745c00c8f1da340518db8688c-2
deleted file mode 100644
index 555752f0ed..0000000000
--- a/tests/fuzzers/txfetcher/corpus/def879fe0fd637a745c00c8f1da340518db8688c-2
+++ /dev/null
@@ -1 +0,0 @@
-ù ´
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/df6c30a9781b93bd6d2f5e97e5592d5945210003-7 b/tests/fuzzers/txfetcher/corpus/df6c30a9781b93bd6d2f5e97e5592d5945210003-7
deleted file mode 100644
index 2a7adb093b..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/df6c30a9781b93bd6d2f5e97e5592d5945210003-7 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/dfc1c3a2e3ccdaf6f88c515fd00e8ad08421e431-6 b/tests/fuzzers/txfetcher/corpus/dfc1c3a2e3ccdaf6f88c515fd00e8ad08421e431-6
deleted file mode 100644
index 59f3442c05..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/dfc1c3a2e3ccdaf6f88c515fd00e8ad08421e431-6 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/e1dcc4e7ead6dfd1139ece7bf57d776cb9dac72d-7 b/tests/fuzzers/txfetcher/corpus/e1dcc4e7ead6dfd1139ece7bf57d776cb9dac72d-7
deleted file mode 100644
index 5ba489f99d..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/e1dcc4e7ead6dfd1139ece7bf57d776cb9dac72d-7 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/e39c2de2c8937d2cbd4339b13d6a0ce94d94f8d2-8 b/tests/fuzzers/txfetcher/corpus/e39c2de2c8937d2cbd4339b13d6a0ce94d94f8d2-8
deleted file mode 100644
index 0e9508938e..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/e39c2de2c8937d2cbd4339b13d6a0ce94d94f8d2-8 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/e72f76b9579c792e545d02fe405d9186f0d6c39b-6 b/tests/fuzzers/txfetcher/corpus/e72f76b9579c792e545d02fe405d9186f0d6c39b-6
deleted file mode 100644
index c4d34b1732..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/e72f76b9579c792e545d02fe405d9186f0d6c39b-6 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/eb70814d6355a4498b8f301ba8dbc34f895a9947-5 b/tests/fuzzers/txfetcher/corpus/eb70814d6355a4498b8f301ba8dbc34f895a9947-5
deleted file mode 100644
index bd57a22fb1..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/eb70814d6355a4498b8f301ba8dbc34f895a9947-5 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/ebdc17efe343e412634dca57cecd5a0e1ce1c1c7-5 b/tests/fuzzers/txfetcher/corpus/ebdc17efe343e412634dca57cecd5a0e1ce1c1c7-5
deleted file mode 100644
index aaa3f695ab..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/ebdc17efe343e412634dca57cecd5a0e1ce1c1c7-5 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/ec0a25eba8966b8f628d821b3cfbdf2dfd4bbb4c-3 b/tests/fuzzers/txfetcher/corpus/ec0a25eba8966b8f628d821b3cfbdf2dfd4bbb4c-3
deleted file mode 100644
index 65cf0df801..0000000000
--- a/tests/fuzzers/txfetcher/corpus/ec0a25eba8966b8f628d821b3cfbdf2dfd4bbb4c-3
+++ /dev/null
@@ -1,13 +0,0 @@
-¸&^£áo‡È—-----BEGIN RSA TESTING KEY-----
-MIICXgIBAAKBgQDuLnQAI3mDgey3VBzWnB2L39JUU4txjeVE6myuDqkM/uGlfjb9
-SjY1bIw4iA5sBBZzHi3z0h1YV8PuxEbi4nW91IJm2gsvvZhIrHS3l6afab4pZB
-l2+XsDulrKBxKKtD1rGxlG4Ljncdabn9vLZad2bSysqz/qTAUStvqJQIDAQAB
-AoGAGRzwwir7XvBOAy5tM/uV6e+Zf6anZzus1s1K1ClbjbE6HXbnWWF/wbZGOpet
-3Zm4vD6MXc7jpTLryzQIvVdfQbRc6+MUVeLKwZatTXtZru+Jk7hx0nTPy8Jcb
-uJqFk541aEw+mMogY/xEcfbW6IOkp+4xqjlFLBEDytgbIECQQDvH/E6nk+hg4
-qzzVtxxr397vWrjrIgPbJpQvBsafG7b0dA4AFjwVbFLcj2pIMPQroozvjg1AkEA/v13/5M47K9vCxmb8QeD/aydfsgS5TeuNi8DoUBEmiSJwmaXY
-fFUtxv7XvjwjN5B30pNEbc6Iuyt7y4MQJBAIt21su4bjeLKH8Q+ph2
-fQtuUE9txblTu14q3N7gHRZB4ZMhFYyDy8CKrN2cPg/Fvyt0Xlp/DoCzjA0CQQDU
-y2ptGsuSmgUtWj3NM9xuwYPm+Z/F84K6+AYiZ6PYj013sovGKFYqVXVlxtIX
-qyUBnu3X9s8ZfjZO7BAkl4R5Yl6cGhaJQYZHOe3JEMhVFaFf9Oes0UUothgiDktdQxdNLj7+5CWA==
------END RSASQ
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/eebe3b76aeba6deed965d17d2b024f7eae1a43f1-5 b/tests/fuzzers/txfetcher/corpus/eebe3b76aeba6deed965d17d2b024f7eae1a43f1-5
deleted file mode 100644
index 20d62e15b3..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/eebe3b76aeba6deed965d17d2b024f7eae1a43f1-5 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/ef8741a9faf030794d98ff113f556c68a24719a5-6 b/tests/fuzzers/txfetcher/corpus/ef8741a9faf030794d98ff113f556c68a24719a5-6
deleted file mode 100644
index 09fcd86d77..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/ef8741a9faf030794d98ff113f556c68a24719a5-6 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/efb7410d02418befeba25a43d676cc6124129125-4 b/tests/fuzzers/txfetcher/corpus/efb7410d02418befeba25a43d676cc6124129125-4
deleted file mode 100644
index 2191a7324a..0000000000
--- a/tests/fuzzers/txfetcher/corpus/efb7410d02418befeba25a43d676cc6124129125-4
+++ /dev/null
@@ -1 +0,0 @@
-88242871'392752200424452601091531672177074144720616417147514758635765020556616¿
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/f6f97d781a5a749903790e07db8619866cb7c3a1-6 b/tests/fuzzers/txfetcher/corpus/f6f97d781a5a749903790e07db8619866cb7c3a1-6
deleted file mode 100644
index 219a8d3682..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/f6f97d781a5a749903790e07db8619866cb7c3a1-6 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/f7a3cd00fa0e57742e7dbbb8283dcaea067eaf7b-5 b/tests/fuzzers/txfetcher/corpus/f7a3cd00fa0e57742e7dbbb8283dcaea067eaf7b-5
deleted file mode 100644
index f01ccd89ef..0000000000
--- a/tests/fuzzers/txfetcher/corpus/f7a3cd00fa0e57742e7dbbb8283dcaea067eaf7b-5
+++ /dev/null
@@ -1,2 +0,0 @@
-Xyt0Xl/DoCzjA0CQQDU
-y2ptGsuSmgUtWj3NM9xuwYPm+Z/F84K6+ARYi
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/f94d60a6c556ce485ab60088291760b8be25776c-6 b/tests/fuzzers/txfetcher/corpus/f94d60a6c556ce485ab60088291760b8be25776c-6
deleted file mode 100644
index 58d841ff03..0000000000
--- a/tests/fuzzers/txfetcher/corpus/f94d60a6c556ce485ab60088291760b8be25776c-6
+++ /dev/null
@@ -1,2 +0,0 @@
-HZB4cQZde3JMNRcVFMO8dDFo
-f9OeosiDdQQl
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/f9e627b2cb82ffa1ea5e0c6d7f2802f3000b18a8-6 b/tests/fuzzers/txfetcher/corpus/f9e627b2cb82ffa1ea5e0c6d7f2802f3000b18a8-6
deleted file mode 100644
index b5dfecc1e9..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/f9e627b2cb82ffa1ea5e0c6d7f2802f3000b18a8-6 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/corpus/fb3775aa24e5667e658920c05ba4b7b19ff256fb-5 b/tests/fuzzers/txfetcher/corpus/fb3775aa24e5667e658920c05ba4b7b19ff256fb-5
deleted file mode 100644
index 6f4927d822..0000000000
--- a/tests/fuzzers/txfetcher/corpus/fb3775aa24e5667e658920c05ba4b7b19ff256fb-5
+++ /dev/null
@@ -1 +0,0 @@
-HZB4c2cPclieoverpGsumgUtWj3NMYPZ/F8tá5YlNR8dDFoiDdQQl
\ No newline at end of file
diff --git a/tests/fuzzers/txfetcher/corpus/fd6386548e119a50db96b2fa406e54924c45a2d5-6 b/tests/fuzzers/txfetcher/corpus/fd6386548e119a50db96b2fa406e54924c45a2d5-6
deleted file mode 100644
index 6fff60edd4..0000000000
Binary files a/tests/fuzzers/txfetcher/corpus/fd6386548e119a50db96b2fa406e54924c45a2d5-6 and /dev/null differ
diff --git a/tests/fuzzers/txfetcher/txfetcher_fuzzer.go b/tests/fuzzers/txfetcher/txfetcher_fuzzer.go
deleted file mode 100644
index 51f2fc3b4d..0000000000
--- a/tests/fuzzers/txfetcher/txfetcher_fuzzer.go
+++ /dev/null
@@ -1,210 +0,0 @@
-// Copyright 2020 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see .
-
-package txfetcher
-
-import (
- "bytes"
- "fmt"
- "math/big"
- "math/rand"
- "time"
-
- "github.com/ethereum/go-ethereum/common"
- "github.com/ethereum/go-ethereum/common/mclock"
- "github.com/ethereum/go-ethereum/core/types"
- "github.com/ethereum/go-ethereum/eth/fetcher"
-)
-
-var (
- peers []string
- txs []*types.Transaction
-)
-
-func init() {
- // Random is nice, but we need it deterministic
- rand := rand.New(rand.NewSource(0x3a29))
-
- peers = make([]string, 10)
- for i := 0; i < len(peers); i++ {
- peers[i] = fmt.Sprintf("Peer #%d", i)
- }
- txs = make([]*types.Transaction, 65536) // We need to bump enough to hit all the limits
- for i := 0; i < len(txs); i++ {
- txs[i] = types.NewTransaction(rand.Uint64(), common.Address{byte(rand.Intn(256))}, new(big.Int), 0, new(big.Int), nil)
- }
-}
-
-func fuzz(input []byte) int {
- // Don't generate insanely large test cases, not much value in them
- if len(input) > 16*1024 {
- return 0
- }
- verbose := false
- r := bytes.NewReader(input)
-
- // Reduce the problem space for certain fuzz runs. Small tx space is better
- // for testing clashes and in general the fetcher, but we should still run
- // some tests with large spaces to hit potential issues on limits.
- limit, err := r.ReadByte()
- if err != nil {
- return 0
- }
- switch limit % 4 {
- case 0:
- txs = txs[:4]
- case 1:
- txs = txs[:256]
- case 2:
- txs = txs[:4096]
- case 3:
- // Full run
- }
- // Create a fetcher and hook into it's simulated fields
- clock := new(mclock.Simulated)
- rand := rand.New(rand.NewSource(0x3a29)) // Same used in package tests!!!
-
- f := fetcher.NewTxFetcherForTests(
- func(common.Hash) bool { return false },
- func(txs []*types.Transaction) []error {
- return make([]error, len(txs))
- },
- func(string, []common.Hash) error { return nil },
- nil,
- clock, rand,
- )
- f.Start()
- defer f.Stop()
-
- // Try to throw random junk at the fetcher
- for {
- // Read the next command and abort if we're done
- cmd, err := r.ReadByte()
- if err != nil {
- return 0
- }
- switch cmd % 4 {
- case 0:
- // Notify a new set of transactions:
- // Byte 1: Peer index to announce with
- // Byte 2: Number of hashes to announce
- // Byte 3-4, 5-6, etc: Transaction indices (2 byte) to announce
- peerIdx, err := r.ReadByte()
- if err != nil {
- return 0
- }
- peer := peers[int(peerIdx)%len(peers)]
-
- announceCnt, err := r.ReadByte()
- if err != nil {
- return 0
- }
- announce := int(announceCnt) % (2 * len(txs)) // No point in generating too many duplicates
-
- var (
- announceIdxs = make([]int, announce)
- announces = make([]common.Hash, announce)
- types = make([]byte, announce)
- sizes = make([]uint32, announce)
- )
- for i := 0; i < len(announces); i++ {
- annBuf := make([]byte, 2)
- if n, err := r.Read(annBuf); err != nil || n != 2 {
- return 0
- }
- announceIdxs[i] = (int(annBuf[0])*256 + int(annBuf[1])) % len(txs)
- announces[i] = txs[announceIdxs[i]].Hash()
- types[i] = txs[announceIdxs[i]].Type()
- sizes[i] = uint32(txs[announceIdxs[i]].Size())
- }
- if verbose {
- fmt.Println("Notify", peer, announceIdxs)
- }
- if err := f.Notify(peer, types, sizes, announces); err != nil {
- panic(err)
- }
-
- case 1:
- // Deliver a new set of transactions:
- // Byte 1: Peer index to announce with
- // Byte 2: Number of hashes to announce
- // Byte 3-4, 5-6, etc: Transaction indices (2 byte) to announce
- peerIdx, err := r.ReadByte()
- if err != nil {
- return 0
- }
- peer := peers[int(peerIdx)%len(peers)]
-
- deliverCnt, err := r.ReadByte()
- if err != nil {
- return 0
- }
- deliver := int(deliverCnt) % (2 * len(txs)) // No point in generating too many duplicates
-
- var (
- deliverIdxs = make([]int, deliver)
- deliveries = make([]*types.Transaction, deliver)
- )
- for i := 0; i < len(deliveries); i++ {
- deliverBuf := make([]byte, 2)
- if n, err := r.Read(deliverBuf); err != nil || n != 2 {
- return 0
- }
- deliverIdxs[i] = (int(deliverBuf[0])*256 + int(deliverBuf[1])) % len(txs)
- deliveries[i] = txs[deliverIdxs[i]]
- }
- directFlag, err := r.ReadByte()
- if err != nil {
- return 0
- }
- direct := (directFlag % 2) == 0
- if verbose {
- fmt.Println("Enqueue", peer, deliverIdxs, direct)
- }
- if err := f.Enqueue(peer, deliveries, direct); err != nil {
- panic(err)
- }
-
- case 2:
- // Drop a peer:
- // Byte 1: Peer index to drop
- peerIdx, err := r.ReadByte()
- if err != nil {
- return 0
- }
- peer := peers[int(peerIdx)%len(peers)]
- if verbose {
- fmt.Println("Drop", peer)
- }
- if err := f.Drop(peer); err != nil {
- panic(err)
- }
-
- case 3:
- // Move the simulated clock forward
- // Byte 1: 100ms increment to move forward
- tickCnt, err := r.ReadByte()
- if err != nil {
- return 0
- }
- tick := time.Duration(tickCnt) * 100 * time.Millisecond
- if verbose {
- fmt.Println("Sleep", tick)
- }
- clock.Run(tick)
- }
- }
-}
diff --git a/tests/fuzzers/txfetcher/txfetcher_test.go b/tests/fuzzers/txfetcher/txfetcher_test.go
deleted file mode 100644
index ac2e6b1c67..0000000000
--- a/tests/fuzzers/txfetcher/txfetcher_test.go
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2023 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see .
-
-package txfetcher
-
-import "testing"
-
-func Fuzz(f *testing.F) {
- f.Fuzz(func(t *testing.T, data []byte) {
- fuzz(data)
- })
-}
diff --git a/tests/gen_btheader.go b/tests/gen_btheader.go
deleted file mode 100644
index 80ad89e03b..0000000000
--- a/tests/gen_btheader.go
+++ /dev/null
@@ -1,160 +0,0 @@
-// Code generated by github.com/fjl/gencodec. DO NOT EDIT.
-
-package tests
-
-import (
- "encoding/json"
- "math/big"
-
- "github.com/ethereum/go-ethereum/common"
- "github.com/ethereum/go-ethereum/common/hexutil"
- "github.com/ethereum/go-ethereum/common/math"
- "github.com/ethereum/go-ethereum/core/types"
-)
-
-var _ = (*btHeaderMarshaling)(nil)
-
-// MarshalJSON marshals as JSON.
-func (b btHeader) MarshalJSON() ([]byte, error) {
- type btHeader struct {
- Bloom types.Bloom
- Coinbase common.Address
- MixHash common.Hash
- Nonce types.BlockNonce
- Number *math.HexOrDecimal256
- Hash common.Hash
- ParentHash common.Hash
- ReceiptTrie common.Hash
- StateRoot common.Hash
- TransactionsTrie common.Hash
- UncleHash common.Hash
- ExtraData hexutil.Bytes
- Difficulty *math.HexOrDecimal256
- GasLimit math.HexOrDecimal64
- GasUsed math.HexOrDecimal64
- Timestamp math.HexOrDecimal64
- BaseFeePerGas *math.HexOrDecimal256
- WithdrawalsRoot *common.Hash
- BlobGasUsed *math.HexOrDecimal64
- ExcessBlobGas *math.HexOrDecimal64
- ParentBeaconBlockRoot *common.Hash
- }
- var enc btHeader
- enc.Bloom = b.Bloom
- enc.Coinbase = b.Coinbase
- enc.MixHash = b.MixHash
- enc.Nonce = b.Nonce
- enc.Number = (*math.HexOrDecimal256)(b.Number)
- enc.Hash = b.Hash
- enc.ParentHash = b.ParentHash
- enc.ReceiptTrie = b.ReceiptTrie
- enc.StateRoot = b.StateRoot
- enc.TransactionsTrie = b.TransactionsTrie
- enc.UncleHash = b.UncleHash
- enc.ExtraData = b.ExtraData
- enc.Difficulty = (*math.HexOrDecimal256)(b.Difficulty)
- enc.GasLimit = math.HexOrDecimal64(b.GasLimit)
- enc.GasUsed = math.HexOrDecimal64(b.GasUsed)
- enc.Timestamp = math.HexOrDecimal64(b.Timestamp)
- enc.BaseFeePerGas = (*math.HexOrDecimal256)(b.BaseFeePerGas)
- enc.WithdrawalsRoot = b.WithdrawalsRoot
- enc.BlobGasUsed = (*math.HexOrDecimal64)(b.BlobGasUsed)
- enc.ExcessBlobGas = (*math.HexOrDecimal64)(b.ExcessBlobGas)
- enc.ParentBeaconBlockRoot = b.ParentBeaconBlockRoot
- return json.Marshal(&enc)
-}
-
-// UnmarshalJSON unmarshals from JSON.
-func (b *btHeader) UnmarshalJSON(input []byte) error {
- type btHeader struct {
- Bloom *types.Bloom
- Coinbase *common.Address
- MixHash *common.Hash
- Nonce *types.BlockNonce
- Number *math.HexOrDecimal256
- Hash *common.Hash
- ParentHash *common.Hash
- ReceiptTrie *common.Hash
- StateRoot *common.Hash
- TransactionsTrie *common.Hash
- UncleHash *common.Hash
- ExtraData *hexutil.Bytes
- Difficulty *math.HexOrDecimal256
- GasLimit *math.HexOrDecimal64
- GasUsed *math.HexOrDecimal64
- Timestamp *math.HexOrDecimal64
- BaseFeePerGas *math.HexOrDecimal256
- WithdrawalsRoot *common.Hash
- BlobGasUsed *math.HexOrDecimal64
- ExcessBlobGas *math.HexOrDecimal64
- ParentBeaconBlockRoot *common.Hash
- }
- var dec btHeader
- if err := json.Unmarshal(input, &dec); err != nil {
- return err
- }
- if dec.Bloom != nil {
- b.Bloom = *dec.Bloom
- }
- if dec.Coinbase != nil {
- b.Coinbase = *dec.Coinbase
- }
- if dec.MixHash != nil {
- b.MixHash = *dec.MixHash
- }
- if dec.Nonce != nil {
- b.Nonce = *dec.Nonce
- }
- if dec.Number != nil {
- b.Number = (*big.Int)(dec.Number)
- }
- if dec.Hash != nil {
- b.Hash = *dec.Hash
- }
- if dec.ParentHash != nil {
- b.ParentHash = *dec.ParentHash
- }
- if dec.ReceiptTrie != nil {
- b.ReceiptTrie = *dec.ReceiptTrie
- }
- if dec.StateRoot != nil {
- b.StateRoot = *dec.StateRoot
- }
- if dec.TransactionsTrie != nil {
- b.TransactionsTrie = *dec.TransactionsTrie
- }
- if dec.UncleHash != nil {
- b.UncleHash = *dec.UncleHash
- }
- if dec.ExtraData != nil {
- b.ExtraData = *dec.ExtraData
- }
- if dec.Difficulty != nil {
- b.Difficulty = (*big.Int)(dec.Difficulty)
- }
- if dec.GasLimit != nil {
- b.GasLimit = uint64(*dec.GasLimit)
- }
- if dec.GasUsed != nil {
- b.GasUsed = uint64(*dec.GasUsed)
- }
- if dec.Timestamp != nil {
- b.Timestamp = uint64(*dec.Timestamp)
- }
- if dec.BaseFeePerGas != nil {
- b.BaseFeePerGas = (*big.Int)(dec.BaseFeePerGas)
- }
- if dec.WithdrawalsRoot != nil {
- b.WithdrawalsRoot = dec.WithdrawalsRoot
- }
- if dec.BlobGasUsed != nil {
- b.BlobGasUsed = (*uint64)(dec.BlobGasUsed)
- }
- if dec.ExcessBlobGas != nil {
- b.ExcessBlobGas = (*uint64)(dec.ExcessBlobGas)
- }
- if dec.ParentBeaconBlockRoot != nil {
- b.ParentBeaconBlockRoot = dec.ParentBeaconBlockRoot
- }
- return nil
-}
diff --git a/tests/gen_difficultytest.go b/tests/gen_difficultytest.go
deleted file mode 100644
index cd15ae31b5..0000000000
--- a/tests/gen_difficultytest.go
+++ /dev/null
@@ -1,68 +0,0 @@
-// Code generated by github.com/fjl/gencodec. DO NOT EDIT.
-
-package tests
-
-import (
- "encoding/json"
- "math/big"
-
- "github.com/ethereum/go-ethereum/common"
- "github.com/ethereum/go-ethereum/common/math"
-)
-
-var _ = (*difficultyTestMarshaling)(nil)
-
-// MarshalJSON marshals as JSON.
-func (d DifficultyTest) MarshalJSON() ([]byte, error) {
- type DifficultyTest struct {
- ParentTimestamp math.HexOrDecimal64 `json:"parentTimestamp"`
- ParentDifficulty *math.HexOrDecimal256 `json:"parentDifficulty"`
- UncleHash common.Hash `json:"parentUncles"`
- CurrentTimestamp math.HexOrDecimal64 `json:"currentTimestamp"`
- CurrentBlockNumber math.HexOrDecimal64 `json:"currentBlockNumber"`
- CurrentDifficulty *math.HexOrDecimal256 `json:"currentDifficulty"`
- }
- var enc DifficultyTest
- enc.ParentTimestamp = math.HexOrDecimal64(d.ParentTimestamp)
- enc.ParentDifficulty = (*math.HexOrDecimal256)(d.ParentDifficulty)
- enc.UncleHash = d.UncleHash
- enc.CurrentTimestamp = math.HexOrDecimal64(d.CurrentTimestamp)
- enc.CurrentBlockNumber = math.HexOrDecimal64(d.CurrentBlockNumber)
- enc.CurrentDifficulty = (*math.HexOrDecimal256)(d.CurrentDifficulty)
- return json.Marshal(&enc)
-}
-
-// UnmarshalJSON unmarshals from JSON.
-func (d *DifficultyTest) UnmarshalJSON(input []byte) error {
- type DifficultyTest struct {
- ParentTimestamp *math.HexOrDecimal64 `json:"parentTimestamp"`
- ParentDifficulty *math.HexOrDecimal256 `json:"parentDifficulty"`
- UncleHash *common.Hash `json:"parentUncles"`
- CurrentTimestamp *math.HexOrDecimal64 `json:"currentTimestamp"`
- CurrentBlockNumber *math.HexOrDecimal64 `json:"currentBlockNumber"`
- CurrentDifficulty *math.HexOrDecimal256 `json:"currentDifficulty"`
- }
- var dec DifficultyTest
- if err := json.Unmarshal(input, &dec); err != nil {
- return err
- }
- if dec.ParentTimestamp != nil {
- d.ParentTimestamp = uint64(*dec.ParentTimestamp)
- }
- if dec.ParentDifficulty != nil {
- d.ParentDifficulty = (*big.Int)(dec.ParentDifficulty)
- }
- if dec.UncleHash != nil {
- d.UncleHash = *dec.UncleHash
- }
- if dec.CurrentTimestamp != nil {
- d.CurrentTimestamp = uint64(*dec.CurrentTimestamp)
- }
- if dec.CurrentBlockNumber != nil {
- d.CurrentBlockNumber = uint64(*dec.CurrentBlockNumber)
- }
- if dec.CurrentDifficulty != nil {
- d.CurrentDifficulty = (*big.Int)(dec.CurrentDifficulty)
- }
- return nil
-}
diff --git a/tests/gen_stenv.go b/tests/gen_stenv.go
deleted file mode 100644
index a5bd0d5fcb..0000000000
--- a/tests/gen_stenv.go
+++ /dev/null
@@ -1,85 +0,0 @@
-// Code generated by github.com/fjl/gencodec. DO NOT EDIT.
-
-package tests
-
-import (
- "encoding/json"
- "errors"
- "math/big"
-
- "github.com/ethereum/go-ethereum/common"
- "github.com/ethereum/go-ethereum/common/math"
-)
-
-var _ = (*stEnvMarshaling)(nil)
-
-// MarshalJSON marshals as JSON.
-func (s stEnv) MarshalJSON() ([]byte, error) {
- type stEnv struct {
- Coinbase common.UnprefixedAddress `json:"currentCoinbase" gencodec:"required"`
- Difficulty *math.HexOrDecimal256 `json:"currentDifficulty" gencodec:"optional"`
- Random *math.HexOrDecimal256 `json:"currentRandom" gencodec:"optional"`
- GasLimit math.HexOrDecimal64 `json:"currentGasLimit" gencodec:"required"`
- Number math.HexOrDecimal64 `json:"currentNumber" gencodec:"required"`
- Timestamp math.HexOrDecimal64 `json:"currentTimestamp" gencodec:"required"`
- BaseFee *math.HexOrDecimal256 `json:"currentBaseFee" gencodec:"optional"`
- ExcessBlobGas *math.HexOrDecimal64 `json:"currentExcessBlobGas" gencodec:"optional"`
- }
- var enc stEnv
- enc.Coinbase = common.UnprefixedAddress(s.Coinbase)
- enc.Difficulty = (*math.HexOrDecimal256)(s.Difficulty)
- enc.Random = (*math.HexOrDecimal256)(s.Random)
- enc.GasLimit = math.HexOrDecimal64(s.GasLimit)
- enc.Number = math.HexOrDecimal64(s.Number)
- enc.Timestamp = math.HexOrDecimal64(s.Timestamp)
- enc.BaseFee = (*math.HexOrDecimal256)(s.BaseFee)
- enc.ExcessBlobGas = (*math.HexOrDecimal64)(s.ExcessBlobGas)
- return json.Marshal(&enc)
-}
-
-// UnmarshalJSON unmarshals from JSON.
-func (s *stEnv) UnmarshalJSON(input []byte) error {
- type stEnv struct {
- Coinbase *common.UnprefixedAddress `json:"currentCoinbase" gencodec:"required"`
- Difficulty *math.HexOrDecimal256 `json:"currentDifficulty" gencodec:"optional"`
- Random *math.HexOrDecimal256 `json:"currentRandom" gencodec:"optional"`
- GasLimit *math.HexOrDecimal64 `json:"currentGasLimit" gencodec:"required"`
- Number *math.HexOrDecimal64 `json:"currentNumber" gencodec:"required"`
- Timestamp *math.HexOrDecimal64 `json:"currentTimestamp" gencodec:"required"`
- BaseFee *math.HexOrDecimal256 `json:"currentBaseFee" gencodec:"optional"`
- ExcessBlobGas *math.HexOrDecimal64 `json:"currentExcessBlobGas" gencodec:"optional"`
- }
- var dec stEnv
- if err := json.Unmarshal(input, &dec); err != nil {
- return err
- }
- if dec.Coinbase == nil {
- return errors.New("missing required field 'currentCoinbase' for stEnv")
- }
- s.Coinbase = common.Address(*dec.Coinbase)
- if dec.Difficulty != nil {
- s.Difficulty = (*big.Int)(dec.Difficulty)
- }
- if dec.Random != nil {
- s.Random = (*big.Int)(dec.Random)
- }
- if dec.GasLimit == nil {
- return errors.New("missing required field 'currentGasLimit' for stEnv")
- }
- s.GasLimit = uint64(*dec.GasLimit)
- if dec.Number == nil {
- return errors.New("missing required field 'currentNumber' for stEnv")
- }
- s.Number = uint64(*dec.Number)
- if dec.Timestamp == nil {
- return errors.New("missing required field 'currentTimestamp' for stEnv")
- }
- s.Timestamp = uint64(*dec.Timestamp)
- if dec.BaseFee != nil {
- s.BaseFee = (*big.Int)(dec.BaseFee)
- }
- if dec.ExcessBlobGas != nil {
- s.ExcessBlobGas = (*uint64)(dec.ExcessBlobGas)
- }
- return nil
-}
diff --git a/tests/gen_sttransaction.go b/tests/gen_sttransaction.go
deleted file mode 100644
index 9b5aecbfe6..0000000000
--- a/tests/gen_sttransaction.go
+++ /dev/null
@@ -1,120 +0,0 @@
-// Code generated by github.com/fjl/gencodec. DO NOT EDIT.
-
-package tests
-
-import (
- "encoding/json"
- "math/big"
-
- "github.com/ethereum/go-ethereum/common"
- "github.com/ethereum/go-ethereum/common/hexutil"
- "github.com/ethereum/go-ethereum/common/math"
- "github.com/ethereum/go-ethereum/core/types"
-)
-
-var _ = (*stTransactionMarshaling)(nil)
-
-// MarshalJSON marshals as JSON.
-func (s stTransaction) MarshalJSON() ([]byte, error) {
- type stTransaction struct {
- GasPrice *math.HexOrDecimal256 `json:"gasPrice"`
- MaxFeePerGas *math.HexOrDecimal256 `json:"maxFeePerGas"`
- MaxPriorityFeePerGas *math.HexOrDecimal256 `json:"maxPriorityFeePerGas"`
- Nonce math.HexOrDecimal64 `json:"nonce"`
- To string `json:"to"`
- Data []string `json:"data"`
- AccessLists []*types.AccessList `json:"accessLists,omitempty"`
- GasLimit []math.HexOrDecimal64 `json:"gasLimit"`
- Value []string `json:"value"`
- PrivateKey hexutil.Bytes `json:"secretKey"`
- Sender *common.Address `json:"sender"`
- BlobVersionedHashes []common.Hash `json:"blobVersionedHashes,omitempty"`
- BlobGasFeeCap *math.HexOrDecimal256 `json:"maxFeePerBlobGas,omitempty"`
- }
- var enc stTransaction
- enc.GasPrice = (*math.HexOrDecimal256)(s.GasPrice)
- enc.MaxFeePerGas = (*math.HexOrDecimal256)(s.MaxFeePerGas)
- enc.MaxPriorityFeePerGas = (*math.HexOrDecimal256)(s.MaxPriorityFeePerGas)
- enc.Nonce = math.HexOrDecimal64(s.Nonce)
- enc.To = s.To
- enc.Data = s.Data
- enc.AccessLists = s.AccessLists
- if s.GasLimit != nil {
- enc.GasLimit = make([]math.HexOrDecimal64, len(s.GasLimit))
- for k, v := range s.GasLimit {
- enc.GasLimit[k] = math.HexOrDecimal64(v)
- }
- }
- enc.Value = s.Value
- enc.PrivateKey = s.PrivateKey
- enc.Sender = s.Sender
- enc.BlobVersionedHashes = s.BlobVersionedHashes
- enc.BlobGasFeeCap = (*math.HexOrDecimal256)(s.BlobGasFeeCap)
- return json.Marshal(&enc)
-}
-
-// UnmarshalJSON unmarshals from JSON.
-func (s *stTransaction) UnmarshalJSON(input []byte) error {
- type stTransaction struct {
- GasPrice *math.HexOrDecimal256 `json:"gasPrice"`
- MaxFeePerGas *math.HexOrDecimal256 `json:"maxFeePerGas"`
- MaxPriorityFeePerGas *math.HexOrDecimal256 `json:"maxPriorityFeePerGas"`
- Nonce *math.HexOrDecimal64 `json:"nonce"`
- To *string `json:"to"`
- Data []string `json:"data"`
- AccessLists []*types.AccessList `json:"accessLists,omitempty"`
- GasLimit []math.HexOrDecimal64 `json:"gasLimit"`
- Value []string `json:"value"`
- PrivateKey *hexutil.Bytes `json:"secretKey"`
- Sender *common.Address `json:"sender"`
- BlobVersionedHashes []common.Hash `json:"blobVersionedHashes,omitempty"`
- BlobGasFeeCap *math.HexOrDecimal256 `json:"maxFeePerBlobGas,omitempty"`
- }
- var dec stTransaction
- if err := json.Unmarshal(input, &dec); err != nil {
- return err
- }
- if dec.GasPrice != nil {
- s.GasPrice = (*big.Int)(dec.GasPrice)
- }
- if dec.MaxFeePerGas != nil {
- s.MaxFeePerGas = (*big.Int)(dec.MaxFeePerGas)
- }
- if dec.MaxPriorityFeePerGas != nil {
- s.MaxPriorityFeePerGas = (*big.Int)(dec.MaxPriorityFeePerGas)
- }
- if dec.Nonce != nil {
- s.Nonce = uint64(*dec.Nonce)
- }
- if dec.To != nil {
- s.To = *dec.To
- }
- if dec.Data != nil {
- s.Data = dec.Data
- }
- if dec.AccessLists != nil {
- s.AccessLists = dec.AccessLists
- }
- if dec.GasLimit != nil {
- s.GasLimit = make([]uint64, len(dec.GasLimit))
- for k, v := range dec.GasLimit {
- s.GasLimit[k] = uint64(v)
- }
- }
- if dec.Value != nil {
- s.Value = dec.Value
- }
- if dec.PrivateKey != nil {
- s.PrivateKey = *dec.PrivateKey
- }
- if dec.Sender != nil {
- s.Sender = dec.Sender
- }
- if dec.BlobVersionedHashes != nil {
- s.BlobVersionedHashes = dec.BlobVersionedHashes
- }
- if dec.BlobGasFeeCap != nil {
- s.BlobGasFeeCap = (*big.Int)(dec.BlobGasFeeCap)
- }
- return nil
-}
diff --git a/tests/init.go b/tests/init.go
deleted file mode 100644
index 99b7e4d333..0000000000
--- a/tests/init.go
+++ /dev/null
@@ -1,359 +0,0 @@
-// Copyright 2015 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see .
-
-package tests
-
-import (
- "fmt"
- "math/big"
- "sort"
-
- "github.com/ethereum/go-ethereum/params"
-)
-
-func u64(val uint64) *uint64 { return &val }
-
-// Forks table defines supported forks and their chain config.
-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),
- },
- "MuirGlacier": {
- 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),
- MuirGlacierBlock: 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),
- },
- "Berlin": {
- 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),
- MuirGlacierBlock: big.NewInt(0),
- BerlinBlock: big.NewInt(0),
- },
- "BerlinToLondonAt5": {
- 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),
- MuirGlacierBlock: big.NewInt(0),
- BerlinBlock: big.NewInt(0),
- LondonBlock: big.NewInt(5),
- },
- "London": {
- 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),
- MuirGlacierBlock: big.NewInt(0),
- BerlinBlock: big.NewInt(0),
- LondonBlock: big.NewInt(0),
- },
- "ArrowGlacier": {
- 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),
- MuirGlacierBlock: big.NewInt(0),
- BerlinBlock: big.NewInt(0),
- LondonBlock: big.NewInt(0),
- ArrowGlacierBlock: big.NewInt(0),
- },
- "ArrowGlacierToMergeAtDiffC0000": {
- 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),
- MuirGlacierBlock: big.NewInt(0),
- BerlinBlock: big.NewInt(0),
- LondonBlock: big.NewInt(0),
- ArrowGlacierBlock: big.NewInt(0),
- GrayGlacierBlock: big.NewInt(0),
- MergeNetsplitBlock: big.NewInt(0),
- TerminalTotalDifficulty: big.NewInt(0xC0000),
- },
- "GrayGlacier": {
- 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),
- MuirGlacierBlock: big.NewInt(0),
- BerlinBlock: big.NewInt(0),
- LondonBlock: big.NewInt(0),
- ArrowGlacierBlock: big.NewInt(0),
- GrayGlacierBlock: big.NewInt(0),
- },
- "Merge": {
- 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),
- MuirGlacierBlock: big.NewInt(0),
- BerlinBlock: big.NewInt(0),
- LondonBlock: big.NewInt(0),
- ArrowGlacierBlock: big.NewInt(0),
- MergeNetsplitBlock: big.NewInt(0),
- TerminalTotalDifficulty: big.NewInt(0),
- },
- "Shanghai": {
- 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),
- MuirGlacierBlock: big.NewInt(0),
- BerlinBlock: big.NewInt(0),
- LondonBlock: big.NewInt(0),
- ArrowGlacierBlock: big.NewInt(0),
- MergeNetsplitBlock: big.NewInt(0),
- TerminalTotalDifficulty: big.NewInt(0),
- ShanghaiTime: u64(0),
- },
- "MergeToShanghaiAtTime15k": {
- 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),
- MuirGlacierBlock: big.NewInt(0),
- BerlinBlock: big.NewInt(0),
- LondonBlock: big.NewInt(0),
- ArrowGlacierBlock: big.NewInt(0),
- MergeNetsplitBlock: big.NewInt(0),
- TerminalTotalDifficulty: big.NewInt(0),
- ShanghaiTime: u64(15_000),
- },
- "Cancun": {
- 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),
- MuirGlacierBlock: big.NewInt(0),
- BerlinBlock: big.NewInt(0),
- LondonBlock: big.NewInt(0),
- ArrowGlacierBlock: big.NewInt(0),
- MergeNetsplitBlock: big.NewInt(0),
- TerminalTotalDifficulty: big.NewInt(0),
- ShanghaiTime: u64(0),
- CancunTime: u64(0),
- },
- "ShanghaiToCancunAtTime15k": {
- 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),
- MuirGlacierBlock: big.NewInt(0),
- BerlinBlock: big.NewInt(0),
- LondonBlock: big.NewInt(0),
- ArrowGlacierBlock: big.NewInt(0),
- MergeNetsplitBlock: big.NewInt(0),
- TerminalTotalDifficulty: big.NewInt(0),
- ShanghaiTime: u64(0),
- CancunTime: u64(15_000),
- },
-}
-
-// AvailableForks returns the set of defined fork names
-func AvailableForks() []string {
- var availableForks []string
- for k := range Forks {
- availableForks = append(availableForks, k)
- }
- sort.Strings(availableForks)
- return availableForks
-}
-
-// UnsupportedForkError is returned when a test requests a fork that isn't implemented.
-type UnsupportedForkError struct {
- Name string
-}
-
-func (e UnsupportedForkError) Error() string {
- return fmt.Sprintf("unsupported fork %q", e.Name)
-}
diff --git a/tests/init_test.go b/tests/init_test.go
deleted file mode 100644
index 3ab15e7658..0000000000
--- a/tests/init_test.go
+++ /dev/null
@@ -1,291 +0,0 @@
-// Copyright 2017 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see .
-
-package tests
-
-import (
- "encoding/json"
- "errors"
- "fmt"
- "io"
- "os"
- "path/filepath"
- "reflect"
- "regexp"
- "runtime"
- "sort"
- "strings"
- "testing"
-
- "github.com/ethereum/go-ethereum/params"
-)
-
-var (
- baseDir = filepath.Join(".", "testdata")
- blockTestDir = filepath.Join(baseDir, "BlockchainTests")
- stateTestDir = filepath.Join(baseDir, "GeneralStateTests")
- legacyStateTestDir = filepath.Join(baseDir, "LegacyTests", "Constantinople", "GeneralStateTests")
- transactionTestDir = filepath.Join(baseDir, "TransactionTests")
- rlpTestDir = filepath.Join(baseDir, "RLPTests")
- difficultyTestDir = filepath.Join(baseDir, "BasicTests")
- executionSpecDir = filepath.Join(".", "spec-tests", "fixtures")
- benchmarksDir = filepath.Join(".", "evm-benchmarks", "benchmarks")
-)
-
-func readJSON(reader io.Reader, value interface{}) error {
- data, err := io.ReadAll(reader)
- if err != nil {
- return fmt.Errorf("error reading JSON file: %v", err)
- }
- if err = json.Unmarshal(data, &value); err != nil {
- if syntaxerr, ok := err.(*json.SyntaxError); ok {
- line := findLine(data, syntaxerr.Offset)
- return fmt.Errorf("JSON syntax error at line %v: %v", line, err)
- }
- return err
- }
- return nil
-}
-
-func readJSONFile(fn string, value interface{}) error {
- file, err := os.Open(fn)
- if err != nil {
- return err
- }
- defer file.Close()
-
- err = readJSON(file, value)
- if err != nil {
- return fmt.Errorf("%s in file %s", err.Error(), fn)
- }
- return nil
-}
-
-// findLine returns the line number for the given offset into data.
-func findLine(data []byte, offset int64) (line int) {
- line = 1
- for i, r := range string(data) {
- if int64(i) >= offset {
- return
- }
- if r == '\n' {
- line++
- }
- }
- return
-}
-
-// testMatcher controls skipping and chain config assignment to tests.
-type testMatcher struct {
- configpat []testConfig
- failpat []testFailure
- skiploadpat []*regexp.Regexp
- slowpat []*regexp.Regexp
- runonlylistpat *regexp.Regexp
-}
-
-type testConfig struct {
- p *regexp.Regexp
- config params.ChainConfig
-}
-
-type testFailure struct {
- p *regexp.Regexp
- reason string
-}
-
-// skipShortMode skips tests matching when the -short flag is used.
-func (tm *testMatcher) slow(pattern string) {
- tm.slowpat = append(tm.slowpat, regexp.MustCompile(pattern))
-}
-
-// skipLoad skips JSON loading of tests matching the pattern.
-func (tm *testMatcher) skipLoad(pattern string) {
- tm.skiploadpat = append(tm.skiploadpat, regexp.MustCompile(pattern))
-}
-
-// fails adds an expected failure for tests matching the pattern.
-//
-//nolint:unused
-func (tm *testMatcher) fails(pattern string, reason string) {
- if reason == "" {
- panic("empty fail reason")
- }
- tm.failpat = append(tm.failpat, testFailure{regexp.MustCompile(pattern), reason})
-}
-
-func (tm *testMatcher) runonly(pattern string) {
- tm.runonlylistpat = regexp.MustCompile(pattern)
-}
-
-// config defines chain config for tests matching the pattern.
-func (tm *testMatcher) config(pattern string, cfg params.ChainConfig) {
- tm.configpat = append(tm.configpat, testConfig{regexp.MustCompile(pattern), cfg})
-}
-
-// findSkip matches name against test skip patterns.
-func (tm *testMatcher) findSkip(name string) (reason string, skipload bool) {
- isWin32 := runtime.GOARCH == "386" && runtime.GOOS == "windows"
- for _, re := range tm.slowpat {
- if re.MatchString(name) {
- if testing.Short() {
- return "skipped in -short mode", false
- }
- if isWin32 {
- return "skipped on 32bit windows", false
- }
- }
- }
- for _, re := range tm.skiploadpat {
- if re.MatchString(name) {
- return "skipped by skipLoad", true
- }
- }
- return "", false
-}
-
-// findConfig returns the chain config matching defined patterns.
-func (tm *testMatcher) findConfig(t *testing.T) *params.ChainConfig {
- for _, m := range tm.configpat {
- if m.p.MatchString(t.Name()) {
- return &m.config
- }
- }
- return new(params.ChainConfig)
-}
-
-// checkFailure checks whether a failure is expected.
-func (tm *testMatcher) checkFailure(t *testing.T, err error) error {
- failReason := ""
- for _, m := range tm.failpat {
- if m.p.MatchString(t.Name()) {
- failReason = m.reason
- break
- }
- }
- if failReason != "" {
- t.Logf("expected failure: %s", failReason)
- if err != nil {
- t.Logf("error: %v", err)
- return nil
- }
- return errors.New("test succeeded unexpectedly")
- }
- return err
-}
-
-// walk invokes its runTest argument for all subtests in the given directory.
-//
-// runTest should be a function of type func(t *testing.T, name string, x ),
-// where TestType is the type of the test contained in test files.
-func (tm *testMatcher) walk(t *testing.T, dir string, runTest interface{}) {
- // Walk the directory.
- dirinfo, err := os.Stat(dir)
- if os.IsNotExist(err) || !dirinfo.IsDir() {
- fmt.Fprintf(os.Stderr, "can't find test files in %s, did you clone the tests submodule?\n", dir)
- t.Skip("missing test files")
- }
- err = filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {
- name := filepath.ToSlash(strings.TrimPrefix(path, dir+string(filepath.Separator)))
- if info.IsDir() {
- if _, skipload := tm.findSkip(name + "/"); skipload {
- return filepath.SkipDir
- }
- return nil
- }
- if filepath.Ext(path) == ".json" {
- t.Run(name, func(t *testing.T) { tm.runTestFile(t, path, name, runTest) })
- }
- return nil
- })
- if err != nil {
- t.Fatal(err)
- }
-}
-
-func (tm *testMatcher) runTestFile(t *testing.T, path, name string, runTest interface{}) {
- if r, _ := tm.findSkip(name); r != "" {
- t.Skip(r)
- }
- if tm.runonlylistpat != nil {
- if !tm.runonlylistpat.MatchString(name) {
- t.Skip("Skipped by runonly")
- }
- }
- t.Parallel()
-
- // Load the file as map[string].
- m := makeMapFromTestFunc(runTest)
- if err := readJSONFile(path, m.Addr().Interface()); err != nil {
- t.Fatal(err)
- }
-
- // Run all tests from the map. Don't wrap in a subtest if there is only one test in the file.
- keys := sortedMapKeys(m)
- if len(keys) == 1 {
- runTestFunc(runTest, t, name, m, keys[0])
- } else {
- for _, key := range keys {
- name := name + "/" + key
- t.Run(key, func(t *testing.T) {
- if r, _ := tm.findSkip(name); r != "" {
- t.Skip(r)
- }
- runTestFunc(runTest, t, name, m, key)
- })
- }
- }
-}
-
-func makeMapFromTestFunc(f interface{}) reflect.Value {
- stringT := reflect.TypeOf("")
- testingT := reflect.TypeOf((*testing.T)(nil))
- ftyp := reflect.TypeOf(f)
- if ftyp.Kind() != reflect.Func || ftyp.NumIn() != 3 || ftyp.NumOut() != 0 || ftyp.In(0) != testingT || ftyp.In(1) != stringT {
- panic(fmt.Sprintf("bad test function type: want func(*testing.T, string, ), have %s", ftyp))
- }
- testType := ftyp.In(2)
- mp := reflect.New(reflect.MapOf(stringT, testType))
- return mp.Elem()
-}
-
-func sortedMapKeys(m reflect.Value) []string {
- keys := make([]string, m.Len())
- for i, k := range m.MapKeys() {
- keys[i] = k.String()
- }
- sort.Strings(keys)
- return keys
-}
-
-func runTestFunc(runTest interface{}, t *testing.T, name string, m reflect.Value, key string) {
- reflect.ValueOf(runTest).Call([]reflect.Value{
- reflect.ValueOf(t),
- reflect.ValueOf(name),
- m.MapIndex(reflect.ValueOf(key)),
- })
-}
-
-func TestMatcherRunonlylist(t *testing.T) {
- t.Parallel()
- tm := new(testMatcher)
- tm.runonly("invalid*")
- tm.walk(t, rlpTestDir, func(t *testing.T, name string, test *RLPTest) {
- if name[:len("invalidRLPTest.json")] != "invalidRLPTest.json" {
- t.Fatalf("invalid test found: %s != invalidRLPTest.json", name)
- }
- })
-}
diff --git a/tests/rlp_test.go b/tests/rlp_test.go
deleted file mode 100644
index 79a1683eb2..0000000000
--- a/tests/rlp_test.go
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2015 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see .
-
-package tests
-
-import (
- "testing"
-)
-
-func TestRLP(t *testing.T) {
- t.Parallel()
- tm := new(testMatcher)
- tm.walk(t, rlpTestDir, func(t *testing.T, name string, test *RLPTest) {
- if err := tm.checkFailure(t, test.Run()); err != nil {
- t.Error(err)
- }
- })
-}
diff --git a/tests/rlp_test_util.go b/tests/rlp_test_util.go
deleted file mode 100644
index e4bd5450a8..0000000000
--- a/tests/rlp_test_util.go
+++ /dev/null
@@ -1,172 +0,0 @@
-// Copyright 2015 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see .
-
-package tests
-
-import (
- "bytes"
- "encoding/hex"
- "errors"
- "fmt"
- "math/big"
- "strings"
-
- "github.com/ethereum/go-ethereum/rlp"
-)
-
-// RLPTest is the JSON structure of a single RLP test.
-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
-}
-
-// 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 FromHex(s string) ([]byte, error) {
- if len(s) > 1 && (s[0:2] == "0x" || s[0:2] == "0X") {
- s = s[2:]
- }
- if len(s)%2 == 1 {
- s = "0" + s
- }
- return hex.DecodeString(s)
-}
-
-// Run executes the test.
-func (t *RLPTest) Run() error {
- outb, err := FromHex(t.Out)
- if err != nil {
- return errors.New("invalid hex in Out")
- }
-
- // Handle simple decoding tests with no actual In value.
- if t.In == "VALID" || t.In == "INVALID" {
- return checkDecodeInterface(outb, t.In == "VALID")
- }
-
- // Check whether encoding the value produces the same bytes.
- in := translateJSON(t.In)
- b, err := rlp.EncodeToBytes(in)
- if err != nil {
- return fmt.Errorf("encode failed: %v", err)
- }
- if !bytes.Equal(b, outb) {
- return fmt.Errorf("encode produced %x, want %x", b, outb)
- }
- // Test stream decoding.
- s := rlp.NewStream(bytes.NewReader(outb), 0)
- return checkDecodeFromJSON(s, in)
-}
-
-func checkDecodeInterface(b []byte, isValid bool) error {
- err := rlp.DecodeBytes(b, new(interface{}))
- switch {
- case isValid && err != nil:
- return fmt.Errorf("decoding failed: %v", err)
- case !isValid && err == nil:
- return errors.New("decoding of invalid value succeeded")
- }
- return nil
-}
-
-// translateJSON makes test json values encodable with RLP.
-func translateJSON(v interface{}) interface{} {
- switch v := v.(type) {
- case float64:
- return uint64(v)
- case string:
- if len(v) > 0 && v[0] == '#' { // # starts a faux big int.
- big, ok := new(big.Int).SetString(v[1:], 10)
- if !ok {
- panic(fmt.Errorf("bad test: bad big int: %q", v))
- }
- return big
- }
- return []byte(v)
- case []interface{}:
- new := make([]interface{}, len(v))
- for i := range v {
- new[i] = translateJSON(v[i])
- }
- return new
- default:
- panic(fmt.Errorf("can't handle %T", v))
- }
-}
-
-// checkDecodeFromJSON decodes from s guided by exp. exp drives the
-// Stream by invoking decoding operations (Uint, Big, List, ...) based
-// on the type of each value. The value decoded from the RLP stream
-// must match the JSON value.
-func checkDecodeFromJSON(s *rlp.Stream, exp interface{}) error {
- switch exp := exp.(type) {
- case uint64:
- i, err := s.Uint64()
- if err != nil {
- return addStack("Uint", exp, err)
- }
- if i != exp {
- return addStack("Uint", exp, fmt.Errorf("result mismatch: got %d", i))
- }
- case *big.Int:
- big := new(big.Int)
- if err := s.Decode(&big); err != nil {
- return addStack("Big", exp, err)
- }
- if big.Cmp(exp) != 0 {
- return addStack("Big", exp, fmt.Errorf("result mismatch: got %d", big))
- }
- case []byte:
- b, err := s.Bytes()
- if err != nil {
- return addStack("Bytes", exp, err)
- }
- if !bytes.Equal(b, exp) {
- return addStack("Bytes", exp, fmt.Errorf("result mismatch: got %x", b))
- }
- case []interface{}:
- if _, err := s.List(); err != nil {
- return addStack("List", exp, err)
- }
- for i, v := range exp {
- if err := checkDecodeFromJSON(s, v); err != nil {
- return addStack(fmt.Sprintf("[%d]", i), exp, err)
- }
- }
- if err := s.ListEnd(); err != nil {
- return addStack("ListEnd", exp, err)
- }
- default:
- panic(fmt.Errorf("unhandled type: %T", exp))
- }
- return nil
-}
-
-func addStack(op string, val interface{}, err error) error {
- lines := strings.Split(err.Error(), "\n")
- lines = append(lines, fmt.Sprintf("\t%s: %v", op, val))
- return errors.New(strings.Join(lines, "\n"))
-}
diff --git a/tests/solidity/bytecode.js b/tests/solidity/bytecode.js
deleted file mode 100644
index 1190776bc3..0000000000
--- a/tests/solidity/bytecode.js
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2019 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see .
-
-{
- "linkReferences": {},
- "object": "608060405234801561001057600080fd5b5061001961007a565b604051809103906000f080158015610035573d6000803e3d6000fd5b506000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061008a565b60405161015f8061055c83390190565b6104c3806100996000396000f3fe60806040526004361061005c576000357c01000000000000000000000000000000000000000000000000000000009004806355313dea146100615780636d3d141614610078578063b9d1e5aa1461008f578063f8a8fd6d146100a6575b600080fd5b34801561006d57600080fd5b506100766100bd565b005b34801561008457600080fd5b5061008d6100bf565b005b34801561009b57600080fd5b506100a46100c4565b005b3480156100b257600080fd5b506100bb6100c6565b005b005b600080fd5bfe5b600160021a6002f35b60058110156100e3576001810190506100cf565b5060065b60058111156100fb576001810190506100e7565b5060015b6005811215610113576001810190506100ff565b5060065b600581131561012b57600181019050610117565b5060021561013857600051505b60405160208101602060048337505060405160208101602060048339505060405160208101602060048360003c50503660005b81811015610182576002815260018101905061016b565b505060008020506000602060403e6010608060106040610123612710fa506020610123600af05060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600060405180807f697353616d654164647265737328616464726573732c61646472657373290000815250601e01905060405180910390209050600033905060405182815281600482015281602482015260648101604052602081604483600088611388f1505060405182815281600482015281602482015260648101604052602081604483600088611388f250506040518281528160048201528160248201526064810160405260208160448387611388f4505060006242004290507f50cb9fe53daa9737b786ab3646f04d0150dc50ef4e75f59509d83667ad5adb206001026040518082815260200191505060405180910390a07f50cb9fe53daa9737b786ab3646f04d0150dc50ef4e75f59509d83667ad5adb206001027f50cb9fe53daa9737b786ab3646f04d0150dc50ef4e75f59509d83667ad5adb206001026040518082815260200191505060405180910390a13373ffffffffffffffffffffffffffffffffffffffff166001027f50cb9fe53daa9737b786ab3646f04d0150dc50ef4e75f59509d83667ad5adb206001027f50cb9fe53daa9737b786ab3646f04d0150dc50ef4e75f59509d83667ad5adb206001026040518082815260200191505060405180910390a2806001023373ffffffffffffffffffffffffffffffffffffffff166001027f50cb9fe53daa9737b786ab3646f04d0150dc50ef4e75f59509d83667ad5adb206001027f50cb9fe53daa9737b786ab3646f04d0150dc50ef4e75f59509d83667ad5adb206001026040518082815260200191505060405180910390a380600102816001023373ffffffffffffffffffffffffffffffffffffffff166001027f50cb9fe53daa9737b786ab3646f04d0150dc50ef4e75f59509d83667ad5adb206001027f50cb9fe53daa9737b786ab3646f04d0150dc50ef4e75f59509d83667ad5adb206001026040518082815260200191505060405180910390a46002fffea165627a7a723058200e51baa2b454b47fdf0ef596fa24aff8ed3a3727b7481ebd25349182ce7152a30029608060405234801561001057600080fd5b5061013f806100206000396000f3fe60806040526004361061003b576000357c010000000000000000000000000000000000000000000000000000000090048063161e715014610040575b600080fd5b34801561004c57600080fd5b506100af6004803603604081101561006357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506100c9565b604051808215151515815260200191505060405180910390f35b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610108576001905061010d565b600090505b9291505056fea165627a7a72305820358f67a58c115ea636b0b8e5c4ca7a52b8192d0f3fa98a4434d6ea04596b5d0d0029",
- "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x19 PUSH2 0x7A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x35 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH2 0x8A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x15F DUP1 PUSH2 0x55C DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH2 0x4C3 DUP1 PUSH2 0x99 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x5C JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV DUP1 PUSH4 0x55313DEA EQ PUSH2 0x61 JUMPI DUP1 PUSH4 0x6D3D1416 EQ PUSH2 0x78 JUMPI DUP1 PUSH4 0xB9D1E5AA EQ PUSH2 0x8F JUMPI DUP1 PUSH4 0xF8A8FD6D EQ PUSH2 0xA6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x76 PUSH2 0xBD JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8D PUSH2 0xBF JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA4 PUSH2 0xC4 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xBB PUSH2 0xC6 JUMP JUMPDEST STOP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST INVALID JUMPDEST PUSH1 0x1 PUSH1 0x2 BYTE PUSH1 0x2 RETURN JUMPDEST PUSH1 0x5 DUP2 LT ISZERO PUSH2 0xE3 JUMPI PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0xCF JUMP JUMPDEST POP PUSH1 0x6 JUMPDEST PUSH1 0x5 DUP2 GT ISZERO PUSH2 0xFB JUMPI PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0xE7 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST PUSH1 0x5 DUP2 SLT ISZERO PUSH2 0x113 JUMPI PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0xFF JUMP JUMPDEST POP PUSH1 0x6 JUMPDEST PUSH1 0x5 DUP2 SGT ISZERO PUSH2 0x12B JUMPI PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x117 JUMP JUMPDEST POP PUSH1 0x2 ISZERO PUSH2 0x138 JUMPI PUSH1 0x0 MLOAD POP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD PUSH1 0x20 PUSH1 0x4 DUP4 CALLDATACOPY POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD PUSH1 0x20 PUSH1 0x4 DUP4 CODECOPY POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD PUSH1 0x20 PUSH1 0x4 DUP4 PUSH1 0x0 EXTCODECOPY POP POP CALLDATASIZE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x182 JUMPI PUSH1 0x2 DUP2 MSTORE PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x16B JUMP JUMPDEST POP POP PUSH1 0x0 DUP1 KECCAK256 POP PUSH1 0x0 PUSH1 0x20 PUSH1 0x40 RETURNDATACOPY PUSH1 0x10 PUSH1 0x80 PUSH1 0x10 PUSH1 0x40 PUSH2 0x123 PUSH2 0x2710 STATICCALL POP PUSH1 0x20 PUSH2 0x123 PUSH1 0xA CREATE POP PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH32 0x697353616D654164647265737328616464726573732C61646472657373290000 DUP2 MSTORE POP PUSH1 0x1E ADD SWAP1 POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SWAP1 POP PUSH1 0x0 CALLER SWAP1 POP PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE DUP2 PUSH1 0x4 DUP3 ADD MSTORE DUP2 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 PUSH1 0x44 DUP4 PUSH1 0x0 DUP9 PUSH2 0x1388 CALL POP POP PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE DUP2 PUSH1 0x4 DUP3 ADD MSTORE DUP2 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 PUSH1 0x44 DUP4 PUSH1 0x0 DUP9 PUSH2 0x1388 CALLCODE POP POP PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE DUP2 PUSH1 0x4 DUP3 ADD MSTORE DUP2 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 PUSH1 0x44 DUP4 DUP8 PUSH2 0x1388 DELEGATECALL POP POP PUSH1 0x0 PUSH3 0x420042 SWAP1 POP PUSH32 0x50CB9FE53DAA9737B786AB3646F04D0150DC50EF4E75F59509D83667AD5ADB20 PUSH1 0x1 MUL PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG0 PUSH32 0x50CB9FE53DAA9737B786AB3646F04D0150DC50EF4E75F59509D83667AD5ADB20 PUSH1 0x1 MUL PUSH32 0x50CB9FE53DAA9737B786AB3646F04D0150DC50EF4E75F59509D83667AD5ADB20 PUSH1 0x1 MUL PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 MUL PUSH32 0x50CB9FE53DAA9737B786AB3646F04D0150DC50EF4E75F59509D83667AD5ADB20 PUSH1 0x1 MUL PUSH32 0x50CB9FE53DAA9737B786AB3646F04D0150DC50EF4E75F59509D83667AD5ADB20 PUSH1 0x1 MUL PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 DUP1 PUSH1 0x1 MUL CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 MUL PUSH32 0x50CB9FE53DAA9737B786AB3646F04D0150DC50EF4E75F59509D83667AD5ADB20 PUSH1 0x1 MUL PUSH32 0x50CB9FE53DAA9737B786AB3646F04D0150DC50EF4E75F59509D83667AD5ADB20 PUSH1 0x1 MUL PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP1 PUSH1 0x1 MUL DUP2 PUSH1 0x1 MUL CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x1 MUL PUSH32 0x50CB9FE53DAA9737B786AB3646F04D0150DC50EF4E75F59509D83667AD5ADB20 PUSH1 0x1 MUL PUSH32 0x50CB9FE53DAA9737B786AB3646F04D0150DC50EF4E75F59509D83667AD5ADB20 PUSH1 0x1 MUL PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x2 SELFDESTRUCT INVALID LOG1 PUSH6 0x627A7A723058 KECCAK256 0xe MLOAD 0xba LOG2 0xb4 SLOAD 0xb4 PUSH32 0xDF0EF596FA24AFF8ED3A3727B7481EBD25349182CE7152A30029608060405234 DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x13F DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x3B JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV DUP1 PUSH4 0x161E7150 EQ PUSH2 0x40 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xAF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x63 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0xC9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x108 JUMPI PUSH1 0x1 SWAP1 POP PUSH2 0x10D JUMP JUMPDEST PUSH1 0x0 SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG1 PUSH6 0x627A7A723058 KECCAK256 CALLDATALOAD DUP16 PUSH8 0xA58C115EA636B0B8 0xe5 0xc4 0xca PUSH27 0x52B8192D0F3FA98A4434D6EA04596B5D0D00290000000000000000 ",
- "sourceMap": "221:8828:0:-;;;263:110;8:9:-1;5:2;;;30:1;27;20:12;5:2;263:110:0;324:11;;:::i;:::-;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;324:11:0;316:5;;:19;;;;;;;;;;;;;;;;;;221:8828;;;;;;;;;;;;:::o;:::-;;;;;;;"
-}
diff --git a/tests/solidity/contracts/Migrations.sol b/tests/solidity/contracts/Migrations.sol
deleted file mode 100644
index c378ffb028..0000000000
--- a/tests/solidity/contracts/Migrations.sol
+++ /dev/null
@@ -1,23 +0,0 @@
-pragma solidity >=0.4.21 <0.6.0;
-
-contract Migrations {
- address public owner;
- uint public last_completed_migration;
-
- constructor() public {
- owner = msg.sender;
- }
-
- modifier restricted() {
- if (msg.sender == owner) _;
- }
-
- function setCompleted(uint completed) public restricted {
- last_completed_migration = completed;
- }
-
- function upgrade(address new_address) public restricted {
- Migrations upgraded = Migrations(new_address);
- upgraded.setCompleted(last_completed_migration);
- }
-}
diff --git a/tests/solidity/contracts/OpCodes.sol b/tests/solidity/contracts/OpCodes.sol
deleted file mode 100644
index 2a41a5fc28..0000000000
--- a/tests/solidity/contracts/OpCodes.sol
+++ /dev/null
@@ -1,322 +0,0 @@
-pragma solidity >=0.4.21 <0.6.0;
-
-contract Test1 {
- function isSameAddress(address a, address b) public returns(bool){ //Simply add the two arguments and return
- if (a == b) return true;
- return false;
- }
-}
-
-contract OpCodes {
-
- Test1 test1;
-
- constructor() public { //Constructor function
- test1 = new Test1(); //Create new "Test1" function
- }
-
- modifier onlyOwner(address _owner) {
- require(msg.sender == _owner);
- _;
- }
- // Add a todo to the list
- function test() public {
-
- //simple_instructions
- /*assembly { pop(sub(dup1, mul(dup1, dup1))) }*/
-
- //keywords
- assembly { pop(address) return(2, byte(2,1)) }
-
- //label_complex
- /*assembly { 7 abc: 8 eq jump(abc) jumpi(eq(7, 8), abc) pop }
- assembly { pop(jumpi(eq(7, 8), abc)) jump(abc) }*/
-
- //functional
- /*assembly { let x := 2 add(7, mul(6, x)) mul(7, 8) add =: x }*/
-
- //for_statement
- assembly { for { let i := 1 } lt(i, 5) { i := add(i, 1) } {} }
- assembly { for { let i := 6 } gt(i, 5) { i := add(i, 1) } {} }
- assembly { for { let i := 1 } slt(i, 5) { i := add(i, 1) } {} }
- assembly { for { let i := 6 } sgt(i, 5) { i := add(i, 1) } {} }
-
- //no_opcodes_in_strict
- assembly { pop(callvalue()) }
-
- //no_dup_swap_in_strict
- /*assembly { swap1() }*/
-
- //print_functional
- assembly { let x := mul(sload(0x12), 7) }
-
- //print_if
- assembly { if 2 { pop(mload(0)) }}
-
- //function_definitions_multiple_args
- assembly { function f(a, d){ mstore(a, d) } function g(a, d) -> x, y {}}
-
- //sstore
- assembly { function f(a, d){ sstore(a, d) } function g(a, d) -> x, y {}}
-
- //mstore8
- assembly { function f(a, d){ mstore8(a, d) } function g(a, d) -> x, y {}}
-
- //calldatacopy
- assembly {
- let a := mload(0x40)
- let b := add(a, 32)
- calldatacopy(a, 4, 32)
- /*calldatacopy(b, add(4, 32), 32)*/
- /*result := add(mload(a), mload(b))*/
- }
-
- //codecopy
- assembly {
- let a := mload(0x40)
- let b := add(a, 32)
- codecopy(a, 4, 32)
- }
-
- //codecopy
- assembly {
- let a := mload(0x40)
- let b := add(a, 32)
- extcodecopy(0, a, 4, 32)
- }
-
- //for_statement
- assembly { let x := calldatasize() for { let i := 0} lt(i, x) { i := add(i, 1) } { mstore(i, 2) } }
-
- //keccak256
- assembly { pop(keccak256(0,0)) }
-
- //returndatasize
- assembly { let r := returndatasize }
-
- //returndatacopy
- assembly { returndatacopy(64, 32, 0) }
- //byzantium vs const Constantinople
- //staticcall
- assembly { pop(staticcall(10000, 0x123, 64, 0x10, 128, 0x10)) }
-
- /*//create2 Constantinople
- assembly { pop(create2(10, 0x123, 32, 64)) }*/
-
- //create Constantinople
- assembly { pop(create(10, 0x123, 32)) }
-
- //shift Constantinople
- /*assembly { pop(shl(10, 32)) }
- assembly { pop(shr(10, 32)) }
- assembly { pop(sar(10, 32)) }*/
-
-
- //not
- assembly { pop( not(0x1f)) }
-
- //exp
- assembly { pop( exp(2, 226)) }
-
- //mod
- assembly { pop( mod(3, 9)) }
-
- //smod
- assembly { pop( smod(3, 9)) }
-
- //div
- assembly { pop( div(4, 2)) }
-
- //sdiv
- assembly { pop( sdiv(4, 2)) }
-
- //iszero
- assembly { pop(iszero(1)) }
-
- //and
- assembly { pop(and(2,3)) }
-
- //or
- assembly { pop(or(3,3)) }
-
- //xor
- assembly { pop(xor(3,3)) }
-
- //addmod
- assembly { pop(addmod(3,3,6)) }
-
- //mulmod
- assembly { pop(mulmod(3,3,3)) }
-
- //signextend
- assembly { pop(signextend(1, 10)) }
-
- //sha3
- assembly { pop(calldataload(0)) }
-
- //blockhash
- assembly { pop(blockhash(sub(number(), 1))) }
-
- //balance
- assembly { pop(balance(0x0)) }
-
- //caller
- assembly { pop(caller()) }
-
- //codesize
- assembly { pop(codesize()) }
-
- //extcodesize
- assembly { pop(extcodesize(0x1)) }
-
- //origin
- assembly { pop(origin()) }
-
- //gas
- assembly { pop(gas())}
-
- //msize
- assembly { pop(msize())}
-
- //pc
- assembly { pop(pc())}
-
- //gasprice
- assembly { pop(gasprice())}
-
- //coinbase
- assembly { pop(coinbase())}
-
- //timestamp
- assembly { pop(timestamp())}
-
- //number
- assembly { pop(number())}
-
- //difficulty
- assembly { pop(difficulty())}
-
- //gaslimit
- assembly { pop(gaslimit())}
-
- //call
- address contractAddr = address(test1);
- bytes4 sig = bytes4(keccak256("isSameAddress(address,address)")); //Function signature
- address a = msg.sender;
-
- assembly {
- let x := mload(0x40) //Find empty storage location using "free memory pointer"
- mstore(x,sig) //Place signature at beginning of empty storage
- mstore(add(x,0x04),a) // first address parameter. just after signature
- mstore(add(x,0x24),a) // 2nd address parameter - first padded. add 32 bytes (not 20 bytes)
- mstore(0x40,add(x,0x64)) // this is missing in other examples. Set free pointer before function call. so it is used by called function.
- // new free pointer position after the output values of the called function.
-
- let success := call(
- 5000, //5k gas
- contractAddr, //To addr
- 0, //No wei passed
- x, // Inputs are at location x
- 0x44, //Inputs size two padded, so 68 bytes
- x, //Store output over input
- 0x20) //Output is 32 bytes long
- }
-
- //callcode
- assembly {
- let x := mload(0x40) //Find empty storage location using "free memory pointer"
- mstore(x,sig) //Place signature at beginning of empty storage
- mstore(add(x,0x04),a) // first address parameter. just after signature
- mstore(add(x,0x24),a) // 2nd address parameter - first padded. add 32 bytes (not 20 bytes)
- mstore(0x40,add(x,0x64)) // this is missing in other examples. Set free pointer before function call. so it is used by called function.
- // new free pointer position after the output values of the called function.
-
- let success := callcode(
- 5000, //5k gas
- contractAddr, //To addr
- 0, //No wei passed
- x, // Inputs are at location x
- 0x44, //Inputs size two padded, so 68 bytes
- x, //Store output over input
- 0x20) //Output is 32 bytes long
- }
-
- //delegatecall
- assembly {
- let x := mload(0x40) //Find empty storage location using "free memory pointer"
- mstore(x,sig) //Place signature at beginning of empty storage
- mstore(add(x,0x04),a) // first address parameter. just after signature
- mstore(add(x,0x24),a) // 2nd address parameter - first padded. add 32 bytes (not 20 bytes)
- mstore(0x40,add(x,0x64)) // this is missing in other examples. Set free pointer before function call. so it is used by called function.
- // new free pointer position after the output values of the called function.
-
- let success := delegatecall(
- 5000, //5k gas
- contractAddr, //To addr
- x, // Inputs are at location x
- 0x44, //Inputs size two padded, so 68 bytes
- x, //Store output over input
- 0x20) //Output is 32 bytes long
- }
-
- uint256 _id = 0x420042;
-
- //log0
- log0(
- bytes32(0x50cb9fe53daa9737b786ab3646f04d0150dc50ef4e75f59509d83667ad5adb20)
- );
-
- //log1
- log1(
- bytes32(0x50cb9fe53daa9737b786ab3646f04d0150dc50ef4e75f59509d83667ad5adb20),
- bytes32(0x50cb9fe53daa9737b786ab3646f04d0150dc50ef4e75f59509d83667ad5adb20)
- );
-
- //log2
- log2(
- bytes32(0x50cb9fe53daa9737b786ab3646f04d0150dc50ef4e75f59509d83667ad5adb20),
- bytes32(0x50cb9fe53daa9737b786ab3646f04d0150dc50ef4e75f59509d83667ad5adb20),
- bytes32(uint256(msg.sender))
- );
-
- //log3
- log3(
- bytes32(0x50cb9fe53daa9737b786ab3646f04d0150dc50ef4e75f59509d83667ad5adb20),
- bytes32(0x50cb9fe53daa9737b786ab3646f04d0150dc50ef4e75f59509d83667ad5adb20),
- bytes32(uint256(msg.sender)),
- bytes32(_id)
- );
-
- //log4
- log4(
- bytes32(0x50cb9fe53daa9737b786ab3646f04d0150dc50ef4e75f59509d83667ad5adb20),
- bytes32(0x50cb9fe53daa9737b786ab3646f04d0150dc50ef4e75f59509d83667ad5adb20),
- bytes32(uint256(msg.sender)),
- bytes32(_id),
- bytes32(_id)
-
- );
-
- //selfdestruct
- assembly { selfdestruct(0x02) }
- }
-
- function test_revert() public {
-
- //revert
- assembly{ revert(0, 0) }
- }
-
- function test_invalid() public {
-
- //revert
- assembly{ invalid() }
- }
-
- function test_stop() public {
-
- //revert
- assembly{ stop() }
- }
-
-}
diff --git a/tests/solidity/migrations/1_initial_migration.js b/tests/solidity/migrations/1_initial_migration.js
deleted file mode 100644
index 5aea2e2616..0000000000
--- a/tests/solidity/migrations/1_initial_migration.js
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright 2019 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see .
-
-const Migrations = artifacts.require("Migrations");
-
-module.exports = function(deployer) {
- deployer.deploy(Migrations);
-};
diff --git a/tests/solidity/migrations/2_opCodes_migration.js b/tests/solidity/migrations/2_opCodes_migration.js
deleted file mode 100644
index 8ec97266d4..0000000000
--- a/tests/solidity/migrations/2_opCodes_migration.js
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright 2019 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see .
-
-var OpCodes = artifacts.require("./OpCodes.sol");
-
-module.exports = function(deployer) {
- deployer.deploy(OpCodes);
-};
diff --git a/tests/solidity/test/opCodes.js b/tests/solidity/test/opCodes.js
deleted file mode 100644
index dde80f78ad..0000000000
--- a/tests/solidity/test/opCodes.js
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2019 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see .
-
-const TodoList = artifacts.require('./OpCodes.sol')
-const assert = require('assert')
-let contractInstance
-const Web3 = require('web3');
-const web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:8545'));
-// const web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:9545'));
-
-contract('OpCodes', (accounts) => {
- beforeEach(async () => {
- contractInstance = await TodoList.deployed()
- })
- it('Should run without errors the majorit of opcodes', async () => {
- await contractInstance.test()
- await contractInstance.test_stop()
-
- })
-
- it('Should throw invalid op code', async () => {
- try{
- await contractInstance.test_invalid()
- }
- catch(error) {
- console.error(error);
- }
- })
-
- it('Should revert', async () => {
- try{
- await contractInstance.test_revert() }
- catch(error) {
- console.error(error);
- }
- })
-})
diff --git a/tests/solidity/truffle-config.js b/tests/solidity/truffle-config.js
deleted file mode 100644
index 47a89c816d..0000000000
--- a/tests/solidity/truffle-config.js
+++ /dev/null
@@ -1,124 +0,0 @@
-// Copyright 2019 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see .
-
-/**
- * Use this file to configure your truffle project. It's seeded with some
- * common settings for different networks and features like migrations,
- * compilation and testing. Uncomment the ones you need or modify
- * them to suit your project as necessary.
- *
- * More information about configuration can be found at:
- *
- * truffleframework.com/docs/advanced/configuration
- *
- * To deploy via Infura you'll need a wallet provider (like truffle-hdwallet-provider)
- * to sign your transactions before they're sent to a remote public node. Infura API
- * keys are available for free at: infura.io/register
- *
- * You'll also need a mnemonic - the twelve word phrase the wallet uses to generate
- * public/private key pairs. If you're publishing your code to GitHub make sure you load this
- * phrase from a file you've .gitignored so it doesn't accidentally become public.
- *
- */
-
-// const HDWalletProvider = require('truffle-hdwallet-provider');
-// const infuraKey = "fj4jll3k.....";
-//
-// const fs = require('fs');
-// const mnemonic = fs.readFileSync(".secret").toString().trim();
-
-// module.exports = {
-// /**
-// * Networks define how you connect to your ethereum client and let you set the
-// * defaults web3 uses to send transactions. If you don't specify one truffle
-// * will spin up a development blockchain for you on port 9545 when you
-// * run `develop` or `test`. You can ask a truffle command to use a specific
-// * network from the command line, e.g
-// *
-// * $ truffle test --network
-// */
-//
-// networks: {
-// // Useful for testing. The `development` name is special - truffle uses it by default
-// // if it's defined here and no other network is specified at the command line.
-// // You should run a client (like ganache-cli, geth or parity) in a separate terminal
-// // tab if you use this network and you must also set the `host`, `port` and `network_id`
-// // options below to some value.
-// //
-// // development: {
-// // host: "127.0.0.1", // Localhost (default: none)
-// // port: 8545, // Standard Ethereum port (default: none)
-// // network_id: "*", // Any network (default: none)
-// // },
-//
-// // Another network with more advanced options...
-// // advanced: {
-// // port: 8777, // Custom port
-// // network_id: 1342, // Custom network
-// // gas: 8500000, // Gas sent with each transaction (default: ~6700000)
-// // gasPrice: 20000000000, // 20 gwei (in wei) (default: 100 gwei)
-// // from: , // Account to send txs from (default: accounts[0])
-// // websockets: true // Enable EventEmitter interface for web3 (default: false)
-// // },
-//
-// // Useful for deploying to a public network.
-// // NB: It's important to wrap the provider as a function.
-// // ropsten: {
-// // provider: () => new HDWalletProvider(mnemonic, `https://ropsten.infura.io/${infuraKey}`),
-// // network_id: 3, // Ropsten's id
-// // gas: 5500000, // Ropsten has a lower block limit than mainnet
-// // confirmations: 2, // # of confs to wait between deployments. (default: 0)
-// // timeoutBlocks: 200, // # of blocks before a deployment times out (minimum/default: 50)
-// // skipDryRun: true // Skip dry run before migrations? (default: false for public nets )
-// // },
-//
-// // Useful for private networks
-// // private: {
-// // provider: () => new HDWalletProvider(mnemonic, `https://network.io`),
-// // network_id: 2111, // This network is yours, in the cloud.
-// // production: true // Treats this network as if it was a public net. (default: false)
-// // }
-// },
-//
-// // Set default mocha options here, use special reporters etc.
-// mocha: {
-// // timeout: 100000
-// },
-//
-// // Configure your compilers
-// compilers: {
-// solc: {
-// // version: "0.5.1", // Fetch exact version from solc-bin (default: truffle's version)
-// // docker: true, // Use "0.5.1" you've installed locally with docker (default: false)
-// // settings: { // See the solidity docs for advice about optimization and evmVersion
-// // optimizer: {
-// // enabled: false,
-// // runs: 200
-// // },
-// // evmVersion: "byzantium"
-// // }
-// }
-// }
-// }
-module.exports = {
- networks: {
- development: {
- host: 'localhost',
- port: 8545,
- network_id: '*'
- }
- }
-}
diff --git a/tests/state_test.go b/tests/state_test.go
deleted file mode 100644
index ae78a53a7e..0000000000
--- a/tests/state_test.go
+++ /dev/null
@@ -1,311 +0,0 @@
-// Copyright 2015 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see .
-
-package tests
-
-import (
- "bufio"
- "bytes"
- "fmt"
- "math/big"
- "math/rand"
- "os"
- "path/filepath"
- "reflect"
- "runtime"
- "strings"
- "testing"
- "time"
-
- "github.com/ethereum/go-ethereum/core"
- "github.com/ethereum/go-ethereum/core/rawdb"
- "github.com/ethereum/go-ethereum/core/state"
- "github.com/ethereum/go-ethereum/core/state/snapshot"
- "github.com/ethereum/go-ethereum/core/types"
- "github.com/ethereum/go-ethereum/core/vm"
- "github.com/ethereum/go-ethereum/eth/tracers/logger"
-)
-
-func TestState(t *testing.T) {
- t.Parallel()
-
- st := new(testMatcher)
- // Long tests:
- st.slow(`^stAttackTest/ContractCreationSpam`)
- st.slow(`^stBadOpcode/badOpcodes`)
- st.slow(`^stPreCompiledContracts/modexp`)
- st.slow(`^stQuadraticComplexityTest/`)
- st.slow(`^stStaticCall/static_Call50000`)
- st.slow(`^stStaticCall/static_Return50000`)
- st.slow(`^stSystemOperationsTest/CallRecursiveBomb`)
- st.slow(`^stTransactionTest/Opcodes_TransactionInit`)
- // Very time consuming
- st.skipLoad(`^stTimeConsuming/`)
- st.skipLoad(`.*vmPerformance/loop.*`)
- // Uses 1GB RAM per tested fork
- st.skipLoad(`^stStaticCall/static_Call1MB`)
-
- // Broken tests:
- // EOF is not part of cancun
- st.skipLoad(`^stEOF/`)
-
- // EIP-4844 tests need to be regenerated due to the data-to-blob rename
- st.skipLoad(`^stEIP4844-blobtransactions/`)
-
- // Expected failures:
- // These EIP-4844 tests need to be regenerated.
- st.fails(`stEIP4844-blobtransactions/opcodeBlobhashOutOfRange.json`, "test has incorrect state root")
- st.fails(`stEIP4844-blobtransactions/opcodeBlobhBounds.json`, "test has incorrect state root")
-
- // For Istanbul, older tests were moved into LegacyTests
- for _, dir := range []string{
- filepath.Join(baseDir, "EIPTests", "StateTests"),
- stateTestDir,
- legacyStateTestDir,
- benchmarksDir,
- } {
- st.walk(t, dir, func(t *testing.T, name string, test *StateTest) {
- if runtime.GOARCH == "386" && runtime.GOOS == "windows" && rand.Int63()%2 == 0 {
- t.Skip("test (randomly) skipped on 32-bit windows")
- return
- }
- for _, subtest := range test.Subtests() {
- subtest := subtest
- key := fmt.Sprintf("%s/%d", subtest.Fork, subtest.Index)
-
- t.Run(key+"/hash/trie", func(t *testing.T) {
- withTrace(t, test.gasLimit(subtest), func(vmconfig vm.Config) error {
- var result error
- test.Run(subtest, vmconfig, false, rawdb.HashScheme, func(err error, snaps *snapshot.Tree, state *state.StateDB) {
- result = st.checkFailure(t, err)
- })
- return result
- })
- })
- t.Run(key+"/hash/snap", func(t *testing.T) {
- withTrace(t, test.gasLimit(subtest), func(vmconfig vm.Config) error {
- var result error
- test.Run(subtest, vmconfig, true, rawdb.HashScheme, func(err error, snaps *snapshot.Tree, state *state.StateDB) {
- if snaps != nil && state != nil {
- if _, err := snaps.Journal(state.IntermediateRoot(false)); err != nil {
- result = err
- return
- }
- }
- result = st.checkFailure(t, err)
- })
- return result
- })
- })
- t.Run(key+"/path/trie", func(t *testing.T) {
- withTrace(t, test.gasLimit(subtest), func(vmconfig vm.Config) error {
- var result error
- test.Run(subtest, vmconfig, false, rawdb.PathScheme, func(err error, snaps *snapshot.Tree, state *state.StateDB) {
- result = st.checkFailure(t, err)
- })
- return result
- })
- })
- t.Run(key+"/path/snap", func(t *testing.T) {
- withTrace(t, test.gasLimit(subtest), func(vmconfig vm.Config) error {
- var result error
- test.Run(subtest, vmconfig, true, rawdb.PathScheme, func(err error, snaps *snapshot.Tree, state *state.StateDB) {
- if snaps != nil && state != nil {
- if _, err := snaps.Journal(state.IntermediateRoot(false)); err != nil {
- result = err
- return
- }
- }
- result = st.checkFailure(t, err)
- })
- return result
- })
- })
- }
- })
- }
-}
-
-// Transactions with gasLimit above this value will not get a VM trace on failure.
-const traceErrorLimit = 400000
-
-func withTrace(t *testing.T, gasLimit uint64, test func(vm.Config) error) {
- // Use config from command line arguments.
- config := vm.Config{}
- err := test(config)
- if err == nil {
- return
- }
-
- // Test failed, re-run with tracing enabled.
- t.Error(err)
- if gasLimit > traceErrorLimit {
- t.Log("gas limit too high for EVM trace")
- return
- }
- buf := new(bytes.Buffer)
- w := bufio.NewWriter(buf)
- config.Tracer = logger.NewJSONLogger(&logger.Config{}, w)
- err2 := test(config)
- if !reflect.DeepEqual(err, err2) {
- t.Errorf("different error for second run: %v", err2)
- }
- w.Flush()
- if buf.Len() == 0 {
- t.Log("no EVM operation logs generated")
- } else {
- t.Log("EVM operation log:\n" + buf.String())
- }
- // t.Logf("EVM output: 0x%x", tracer.Output())
- // t.Logf("EVM error: %v", tracer.Error())
-}
-
-func BenchmarkEVM(b *testing.B) {
- // Walk the directory.
- dir := benchmarksDir
- dirinfo, err := os.Stat(dir)
- if os.IsNotExist(err) || !dirinfo.IsDir() {
- fmt.Fprintf(os.Stderr, "can't find test files in %s, did you clone the evm-benchmarks submodule?\n", dir)
- b.Skip("missing test files")
- }
- err = filepath.Walk(dir, func(path string, info os.FileInfo, err error) error {
- if info.IsDir() {
- return nil
- }
- if ext := filepath.Ext(path); ext == ".json" {
- name := filepath.ToSlash(strings.TrimPrefix(strings.TrimSuffix(path, ext), dir+string(filepath.Separator)))
- b.Run(name, func(b *testing.B) { runBenchmarkFile(b, path) })
- }
- return nil
- })
- if err != nil {
- b.Fatal(err)
- }
-}
-
-func runBenchmarkFile(b *testing.B, path string) {
- m := make(map[string]StateTest)
- if err := readJSONFile(path, &m); err != nil {
- b.Fatal(err)
- return
- }
- if len(m) != 1 {
- b.Fatal("expected single benchmark in a file")
- return
- }
- for _, t := range m {
- t := t
- runBenchmark(b, &t)
- }
-}
-
-func runBenchmark(b *testing.B, t *StateTest) {
- for _, subtest := range t.Subtests() {
- subtest := subtest
- key := fmt.Sprintf("%s/%d", subtest.Fork, subtest.Index)
-
- b.Run(key, func(b *testing.B) {
- vmconfig := vm.Config{}
-
- config, eips, err := GetChainConfig(subtest.Fork)
- if err != nil {
- b.Error(err)
- return
- }
- var rules = config.Rules(new(big.Int), false, 0)
-
- vmconfig.ExtraEips = eips
- block := t.genesis(config).ToBlock()
- triedb, _, statedb := MakePreState(rawdb.NewMemoryDatabase(), t.json.Pre, false, rawdb.HashScheme)
- defer triedb.Close()
-
- var baseFee *big.Int
- if rules.IsLondon {
- baseFee = t.json.Env.BaseFee
- if baseFee == nil {
- // Retesteth uses `0x10` for genesis baseFee. Therefore, it defaults to
- // parent - 2 : 0xa as the basefee for 'this' context.
- baseFee = big.NewInt(0x0a)
- }
- }
- post := t.json.Post[subtest.Fork][subtest.Index]
- msg, err := t.json.Tx.toMessage(post, baseFee)
- if err != nil {
- b.Error(err)
- return
- }
-
- // Try to recover tx with current signer
- if len(post.TxBytes) != 0 {
- var ttx types.Transaction
- err := ttx.UnmarshalBinary(post.TxBytes)
- if err != nil {
- b.Error(err)
- return
- }
-
- if _, err := types.Sender(types.LatestSigner(config), &ttx); err != nil {
- b.Error(err)
- return
- }
- }
-
- // Prepare the EVM.
- txContext := core.NewEVMTxContext(msg)
- context := core.NewEVMBlockContext(block.Header(), nil, &t.json.Env.Coinbase)
- context.GetHash = vmTestBlockHash
- context.BaseFee = baseFee
- evm := vm.NewEVM(context, txContext, statedb, config, vmconfig)
-
- // Create "contract" for sender to cache code analysis.
- sender := vm.NewContract(vm.AccountRef(msg.From), vm.AccountRef(msg.From),
- nil, 0)
-
- var (
- gasUsed uint64
- elapsed uint64
- refund uint64
- )
- b.ResetTimer()
- for n := 0; n < b.N; n++ {
- snapshot := statedb.Snapshot()
- statedb.Prepare(rules, msg.From, context.Coinbase, msg.To, vm.ActivePrecompiles(rules), msg.AccessList)
- b.StartTimer()
- start := time.Now()
-
- // Execute the message.
- _, leftOverGas, err := evm.Call(sender, *msg.To, msg.Data, msg.GasLimit, msg.Value)
- if err != nil {
- b.Error(err)
- return
- }
-
- b.StopTimer()
- elapsed += uint64(time.Since(start))
- refund += statedb.GetRefund()
- gasUsed += msg.GasLimit - leftOverGas
-
- statedb.RevertToSnapshot(snapshot)
- }
- if elapsed < 1 {
- elapsed = 1
- }
- // Keep it as uint64, multiply 100 to get two digit float later
- mgasps := (100 * 1000 * (gasUsed - refund)) / elapsed
- b.ReportMetric(float64(mgasps)/100, "mgas/s")
- })
- }
-}
diff --git a/tests/state_test_util.go b/tests/state_test_util.go
deleted file mode 100644
index 19387b5394..0000000000
--- a/tests/state_test_util.go
+++ /dev/null
@@ -1,468 +0,0 @@
-// Copyright 2015 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see .
-
-package tests
-
-import (
- "encoding/hex"
- "encoding/json"
- "errors"
- "fmt"
- "math/big"
- "strconv"
- "strings"
-
- "github.com/ethereum/go-ethereum/common"
- "github.com/ethereum/go-ethereum/common/hexutil"
- "github.com/ethereum/go-ethereum/common/math"
- "github.com/ethereum/go-ethereum/consensus/misc/eip4844"
- "github.com/ethereum/go-ethereum/core"
- "github.com/ethereum/go-ethereum/core/rawdb"
- "github.com/ethereum/go-ethereum/core/state"
- "github.com/ethereum/go-ethereum/core/state/snapshot"
- "github.com/ethereum/go-ethereum/core/types"
- "github.com/ethereum/go-ethereum/core/vm"
- "github.com/ethereum/go-ethereum/crypto"
- "github.com/ethereum/go-ethereum/ethdb"
- "github.com/ethereum/go-ethereum/params"
- "github.com/ethereum/go-ethereum/rlp"
- "github.com/ethereum/go-ethereum/trie"
- "github.com/ethereum/go-ethereum/trie/triedb/hashdb"
- "github.com/ethereum/go-ethereum/trie/triedb/pathdb"
- "golang.org/x/crypto/sha3"
-)
-
-// StateTest checks transaction processing without block context.
-// See https://github.com/ethereum/EIPs/issues/176 for the test format specification.
-type StateTest struct {
- json stJSON
-}
-
-// StateSubtest selects a specific configuration of a General State Test.
-type StateSubtest struct {
- Fork string
- Index int
-}
-
-func (t *StateTest) UnmarshalJSON(in []byte) error {
- return json.Unmarshal(in, &t.json)
-}
-
-type stJSON struct {
- Env stEnv `json:"env"`
- Pre core.GenesisAlloc `json:"pre"`
- Tx stTransaction `json:"transaction"`
- Out hexutil.Bytes `json:"out"`
- Post map[string][]stPostState `json:"post"`
-}
-
-type stPostState struct {
- Root common.UnprefixedHash `json:"hash"`
- Logs common.UnprefixedHash `json:"logs"`
- TxBytes hexutil.Bytes `json:"txbytes"`
- ExpectException string `json:"expectException"`
- Indexes struct {
- Data int `json:"data"`
- Gas int `json:"gas"`
- Value int `json:"value"`
- }
-}
-
-//go:generate go run github.com/fjl/gencodec -type stEnv -field-override stEnvMarshaling -out gen_stenv.go
-
-type stEnv struct {
- Coinbase common.Address `json:"currentCoinbase" gencodec:"required"`
- Difficulty *big.Int `json:"currentDifficulty" gencodec:"optional"`
- Random *big.Int `json:"currentRandom" gencodec:"optional"`
- GasLimit uint64 `json:"currentGasLimit" gencodec:"required"`
- Number uint64 `json:"currentNumber" gencodec:"required"`
- Timestamp uint64 `json:"currentTimestamp" gencodec:"required"`
- BaseFee *big.Int `json:"currentBaseFee" gencodec:"optional"`
- ExcessBlobGas *uint64 `json:"currentExcessBlobGas" gencodec:"optional"`
-}
-
-type stEnvMarshaling struct {
- Coinbase common.UnprefixedAddress
- Difficulty *math.HexOrDecimal256
- Random *math.HexOrDecimal256
- GasLimit math.HexOrDecimal64
- Number math.HexOrDecimal64
- Timestamp math.HexOrDecimal64
- BaseFee *math.HexOrDecimal256
- ExcessBlobGas *math.HexOrDecimal64
-}
-
-//go:generate go run github.com/fjl/gencodec -type stTransaction -field-override stTransactionMarshaling -out gen_sttransaction.go
-
-type stTransaction struct {
- GasPrice *big.Int `json:"gasPrice"`
- MaxFeePerGas *big.Int `json:"maxFeePerGas"`
- MaxPriorityFeePerGas *big.Int `json:"maxPriorityFeePerGas"`
- Nonce uint64 `json:"nonce"`
- To string `json:"to"`
- Data []string `json:"data"`
- AccessLists []*types.AccessList `json:"accessLists,omitempty"`
- GasLimit []uint64 `json:"gasLimit"`
- Value []string `json:"value"`
- PrivateKey []byte `json:"secretKey"`
- Sender *common.Address `json:"sender"`
- BlobVersionedHashes []common.Hash `json:"blobVersionedHashes,omitempty"`
- BlobGasFeeCap *big.Int `json:"maxFeePerBlobGas,omitempty"`
-}
-
-type stTransactionMarshaling struct {
- GasPrice *math.HexOrDecimal256
- MaxFeePerGas *math.HexOrDecimal256
- MaxPriorityFeePerGas *math.HexOrDecimal256
- Nonce math.HexOrDecimal64
- GasLimit []math.HexOrDecimal64
- PrivateKey hexutil.Bytes
- BlobGasFeeCap *math.HexOrDecimal256
-}
-
-// 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`.
-func GetChainConfig(forkString string) (baseConfig *params.ChainConfig, eips []int, err error) {
- var (
- splitForks = strings.Split(forkString, "+")
- ok bool
- baseName, eipsStrings = splitForks[0], splitForks[1:]
- )
- if baseConfig, ok = Forks[baseName]; !ok {
- return nil, nil, UnsupportedForkError{baseName}
- }
- for _, eip := range eipsStrings {
- if eipNum, err := strconv.Atoi(eip); err != nil {
- return nil, nil, fmt.Errorf("syntax error, invalid eip number %v", eipNum)
- } else {
- if !vm.ValidEip(eipNum) {
- return nil, nil, fmt.Errorf("syntax error, invalid eip number %v", eipNum)
- }
- eips = append(eips, eipNum)
- }
- }
- return baseConfig, eips, nil
-}
-
-// Subtests returns all valid subtests of the test.
-func (t *StateTest) Subtests() []StateSubtest {
- var sub []StateSubtest
- for fork, pss := range t.json.Post {
- for i := range pss {
- sub = append(sub, StateSubtest{fork, i})
- }
- }
- return sub
-}
-
-// checkError checks if the error returned by the state transition matches any expected error.
-// A failing expectation returns a wrapped version of the original error, if any,
-// or a new error detailing the failing expectation.
-// This function does not return or modify the original error, it only evaluates and returns expectations for the error.
-func (t *StateTest) checkError(subtest StateSubtest, err error) error {
- expectedError := t.json.Post[subtest.Fork][subtest.Index].ExpectException
- if err == nil && expectedError == "" {
- return nil
- }
- if err == nil && expectedError != "" {
- return fmt.Errorf("expected error %q, got no error", expectedError)
- }
- if err != nil && expectedError == "" {
- return fmt.Errorf("unexpected error: %w", err)
- }
- if err != nil && expectedError != "" {
- // Ignore expected errors (TODO MariusVanDerWijden check error string)
- return nil
- }
- return nil
-}
-
-// Run executes a specific subtest and verifies the post-state and logs
-func (t *StateTest) Run(subtest StateSubtest, vmconfig vm.Config, snapshotter bool, scheme string, postCheck func(err error, snaps *snapshot.Tree, state *state.StateDB)) (result error) {
- triedb, snaps, statedb, root, err := t.RunNoVerify(subtest, vmconfig, snapshotter, scheme)
-
- // Invoke the callback at the end of function for further analysis.
- defer func() {
- postCheck(result, snaps, statedb)
-
- if triedb != nil {
- triedb.Close()
- }
- if snaps != nil {
- snaps.Release()
- }
- }()
- checkedErr := t.checkError(subtest, err)
- if checkedErr != nil {
- return checkedErr
- }
- // The error has been checked; if it was unexpected, it's already returned.
- if err != nil {
- // Here, an error exists but it was expected.
- // We do not check the post state or logs.
- return nil
- }
- post := t.json.Post[subtest.Fork][subtest.Index]
- // N.B: We need to do this in a two-step process, because the first Commit takes care
- // of self-destructs, and we need to touch the coinbase _after_ it has potentially self-destructed.
- if root != common.Hash(post.Root) {
- return fmt.Errorf("post state root mismatch: got %x, want %x", root, post.Root)
- }
- if logs := rlpHash(statedb.Logs()); logs != common.Hash(post.Logs) {
- return fmt.Errorf("post state logs hash mismatch: got %x, want %x", logs, post.Logs)
- }
- statedb, _ = state.New(root, statedb.Database(), snaps)
- return nil
-}
-
-// RunNoVerify runs a specific subtest and returns the statedb and post-state root
-func (t *StateTest) RunNoVerify(subtest StateSubtest, vmconfig vm.Config, snapshotter bool, scheme string) (*trie.Database, *snapshot.Tree, *state.StateDB, common.Hash, error) {
- config, eips, err := GetChainConfig(subtest.Fork)
- if err != nil {
- return nil, nil, nil, common.Hash{}, UnsupportedForkError{subtest.Fork}
- }
- vmconfig.ExtraEips = eips
-
- block := t.genesis(config).ToBlock()
- triedb, snaps, statedb := MakePreState(rawdb.NewMemoryDatabase(), t.json.Pre, snapshotter, scheme)
-
- var baseFee *big.Int
- if config.IsLondon(new(big.Int)) {
- baseFee = t.json.Env.BaseFee
- if baseFee == nil {
- // Retesteth uses `0x10` for genesis baseFee. Therefore, it defaults to
- // parent - 2 : 0xa as the basefee for 'this' context.
- baseFee = big.NewInt(0x0a)
- }
- }
- post := t.json.Post[subtest.Fork][subtest.Index]
- msg, err := t.json.Tx.toMessage(post, baseFee)
- if err != nil {
- triedb.Close()
- return nil, nil, nil, common.Hash{}, err
- }
-
- // Try to recover tx with current signer
- if len(post.TxBytes) != 0 {
- var ttx types.Transaction
- err := ttx.UnmarshalBinary(post.TxBytes)
- if err != nil {
- triedb.Close()
- return nil, nil, nil, common.Hash{}, err
- }
-
- if _, err := types.Sender(types.LatestSigner(config), &ttx); err != nil {
- triedb.Close()
- return nil, nil, nil, common.Hash{}, err
- }
- }
-
- // Prepare the EVM.
- txContext := core.NewEVMTxContext(msg)
- context := core.NewEVMBlockContext(block.Header(), nil, &t.json.Env.Coinbase)
- context.GetHash = vmTestBlockHash
- context.BaseFee = baseFee
- context.Random = nil
- if t.json.Env.Difficulty != nil {
- context.Difficulty = new(big.Int).Set(t.json.Env.Difficulty)
- }
- if config.IsLondon(new(big.Int)) && t.json.Env.Random != nil {
- rnd := common.BigToHash(t.json.Env.Random)
- context.Random = &rnd
- context.Difficulty = big.NewInt(0)
- }
- if config.IsCancun(new(big.Int), block.Time()) && t.json.Env.ExcessBlobGas != nil {
- context.BlobBaseFee = eip4844.CalcBlobFee(*t.json.Env.ExcessBlobGas)
- }
- evm := vm.NewEVM(context, txContext, statedb, config, vmconfig)
-
- // Execute the message.
- snapshot := statedb.Snapshot()
- gaspool := new(core.GasPool)
- gaspool.AddGas(block.GasLimit())
- _, err = core.ApplyMessage(evm, msg, gaspool)
- if err != nil {
- statedb.RevertToSnapshot(snapshot)
- }
- // Add 0-value mining reward. This only makes a difference in the cases
- // where
- // - the coinbase self-destructed, or
- // - there are only 'bad' transactions, which aren't executed. In those cases,
- // the coinbase gets no txfee, so isn't created, and thus needs to be touched
- statedb.AddBalance(block.Coinbase(), new(big.Int))
-
- // Commit state mutations into database.
- root, _ := statedb.Commit(block.NumberU64(), config.IsEIP158(block.Number()))
- return triedb, snaps, statedb, root, err
-}
-
-func (t *StateTest) gasLimit(subtest StateSubtest) uint64 {
- return t.json.Tx.GasLimit[t.json.Post[subtest.Fork][subtest.Index].Indexes.Gas]
-}
-
-func MakePreState(db ethdb.Database, accounts core.GenesisAlloc, snapshotter bool, scheme string) (*trie.Database, *snapshot.Tree, *state.StateDB) {
- tconf := &trie.Config{Preimages: true}
- if scheme == rawdb.HashScheme {
- tconf.HashDB = hashdb.Defaults
- } else {
- tconf.PathDB = pathdb.Defaults
- }
- triedb := trie.NewDatabase(db, tconf)
- sdb := state.NewDatabaseWithNodeDB(db, triedb)
- statedb, _ := state.New(types.EmptyRootHash, sdb, nil)
- for addr, a := range accounts {
- statedb.SetCode(addr, a.Code)
- statedb.SetNonce(addr, a.Nonce)
- statedb.SetBalance(addr, a.Balance)
- for k, v := range a.Storage {
- statedb.SetState(addr, k, v)
- }
- }
- // Commit and re-open to start with a clean state.
- root, _ := statedb.Commit(0, false)
-
- var snaps *snapshot.Tree
- if snapshotter {
- snapconfig := snapshot.Config{
- CacheSize: 1,
- Recovery: false,
- NoBuild: false,
- AsyncBuild: false,
- }
- snaps, _ = snapshot.New(snapconfig, db, triedb, root)
- }
- statedb, _ = state.New(root, sdb, snaps)
- return triedb, snaps, statedb
-}
-
-func (t *StateTest) genesis(config *params.ChainConfig) *core.Genesis {
- genesis := &core.Genesis{
- Config: config,
- Coinbase: t.json.Env.Coinbase,
- Difficulty: t.json.Env.Difficulty,
- GasLimit: t.json.Env.GasLimit,
- Number: t.json.Env.Number,
- Timestamp: t.json.Env.Timestamp,
- Alloc: t.json.Pre,
- }
- if t.json.Env.Random != nil {
- // Post-Merge
- genesis.Mixhash = common.BigToHash(t.json.Env.Random)
- genesis.Difficulty = big.NewInt(0)
- }
- return genesis
-}
-
-func (tx *stTransaction) toMessage(ps stPostState, baseFee *big.Int) (*core.Message, error) {
- var from common.Address
- // If 'sender' field is present, use that
- if tx.Sender != nil {
- from = *tx.Sender
- } else if len(tx.PrivateKey) > 0 {
- // Derive sender from private key if needed.
- key, err := crypto.ToECDSA(tx.PrivateKey)
- if err != nil {
- return nil, fmt.Errorf("invalid private key: %v", err)
- }
- from = crypto.PubkeyToAddress(key.PublicKey)
- }
- // Parse recipient if present.
- var to *common.Address
- if tx.To != "" {
- to = new(common.Address)
- if err := to.UnmarshalText([]byte(tx.To)); err != nil {
- return nil, fmt.Errorf("invalid to address: %v", err)
- }
- }
-
- // Get values specific to this post state.
- if ps.Indexes.Data > len(tx.Data) {
- return nil, fmt.Errorf("tx data index %d out of bounds", ps.Indexes.Data)
- }
- if ps.Indexes.Value > len(tx.Value) {
- return nil, fmt.Errorf("tx value index %d out of bounds", ps.Indexes.Value)
- }
- if ps.Indexes.Gas > len(tx.GasLimit) {
- return nil, fmt.Errorf("tx gas limit index %d out of bounds", ps.Indexes.Gas)
- }
- dataHex := tx.Data[ps.Indexes.Data]
- valueHex := tx.Value[ps.Indexes.Value]
- gasLimit := tx.GasLimit[ps.Indexes.Gas]
- // Value, Data hex encoding is messy: https://github.com/ethereum/tests/issues/203
- value := new(big.Int)
- if valueHex != "0x" {
- v, ok := math.ParseBig256(valueHex)
- if !ok {
- return nil, fmt.Errorf("invalid tx value %q", valueHex)
- }
- value = v
- }
- data, err := hex.DecodeString(strings.TrimPrefix(dataHex, "0x"))
- if err != nil {
- return nil, fmt.Errorf("invalid tx data %q", dataHex)
- }
- var accessList types.AccessList
- if tx.AccessLists != nil && tx.AccessLists[ps.Indexes.Data] != nil {
- accessList = *tx.AccessLists[ps.Indexes.Data]
- }
- // If baseFee provided, set gasPrice to effectiveGasPrice.
- gasPrice := tx.GasPrice
- if baseFee != nil {
- if tx.MaxFeePerGas == nil {
- tx.MaxFeePerGas = gasPrice
- }
- if tx.MaxFeePerGas == nil {
- tx.MaxFeePerGas = new(big.Int)
- }
- if tx.MaxPriorityFeePerGas == nil {
- tx.MaxPriorityFeePerGas = tx.MaxFeePerGas
- }
- gasPrice = math.BigMin(new(big.Int).Add(tx.MaxPriorityFeePerGas, baseFee),
- tx.MaxFeePerGas)
- }
- if gasPrice == nil {
- return nil, errors.New("no gas price provided")
- }
-
- msg := &core.Message{
- From: from,
- To: to,
- Nonce: tx.Nonce,
- Value: value,
- GasLimit: gasLimit,
- GasPrice: gasPrice,
- GasFeeCap: tx.MaxFeePerGas,
- GasTipCap: tx.MaxPriorityFeePerGas,
- Data: data,
- AccessList: accessList,
- BlobHashes: tx.BlobVersionedHashes,
- BlobGasFeeCap: tx.BlobGasFeeCap,
- }
- return msg, nil
-}
-
-func rlpHash(x interface{}) (h common.Hash) {
- hw := sha3.NewLegacyKeccak256()
- rlp.Encode(hw, x)
- hw.Sum(h[:0])
- return h
-}
-
-func vmTestBlockHash(n uint64) common.Hash {
- return common.BytesToHash(crypto.Keccak256([]byte(big.NewInt(int64(n)).String())))
-}
diff --git a/tests/testdata b/tests/testdata
deleted file mode 160000
index ee3fa4c86d..0000000000
--- a/tests/testdata
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit ee3fa4c86d05f99f2717f83a6ad08008490ddf07
diff --git a/tests/transaction_test.go b/tests/transaction_test.go
deleted file mode 100644
index cb0f262318..0000000000
--- a/tests/transaction_test.go
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2015 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see .
-
-package tests
-
-import (
- "testing"
-
- "github.com/ethereum/go-ethereum/params"
-)
-
-func TestTransaction(t *testing.T) {
- t.Parallel()
-
- txt := new(testMatcher)
- // These can't be parsed, invalid hex in RLP
- txt.skipLoad("^ttWrongRLP/.*")
- // We don't allow more than uint64 in gas amount
- // This is a pseudo-consensus vulnerability, but not in practice
- // because of the gas limit
- txt.skipLoad("^ttGasLimit/TransactionWithGasLimitxPriceOverflow.json")
- // We _do_ allow more than uint64 in gas price, as opposed to the tests
- // This is also not a concern, as long as tx.Cost() uses big.Int for
- // calculating the final cozt
- txt.skipLoad(".*TransactionWithGasPriceOverflow.*")
-
- // The nonce is too large for uint64. Not a concern, it means geth won't
- // accept transactions at a certain point in the distant future
- txt.skipLoad("^ttNonce/TransactionWithHighNonce256.json")
-
- // The value is larger than uint64, which according to the test is invalid.
- // Geth accepts it, which is not a consensus issue since we use big.Int's
- // internally to calculate the cost
- txt.skipLoad("^ttValue/TransactionWithHighValueOverflow.json")
- txt.walk(t, transactionTestDir, func(t *testing.T, name string, test *TransactionTest) {
- cfg := params.MainnetChainConfig
- if err := txt.checkFailure(t, test.Run(cfg)); err != nil {
- t.Error(err)
- }
- })
-}
diff --git a/tests/transaction_test_util.go b/tests/transaction_test_util.go
deleted file mode 100644
index 391aa57584..0000000000
--- a/tests/transaction_test_util.go
+++ /dev/null
@@ -1,110 +0,0 @@
-// Copyright 2015 The go-ethereum Authors
-// This file is part of the go-ethereum library.
-//
-// The go-ethereum library is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// The go-ethereum library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with the go-ethereum library. If not, see .
-
-package tests
-
-import (
- "fmt"
-
- "github.com/ethereum/go-ethereum/common"
- "github.com/ethereum/go-ethereum/common/hexutil"
- "github.com/ethereum/go-ethereum/core"
- "github.com/ethereum/go-ethereum/core/types"
- "github.com/ethereum/go-ethereum/params"
- "github.com/ethereum/go-ethereum/rlp"
-)
-
-// TransactionTest checks RLP decoding and sender derivation of transactions.
-type TransactionTest struct {
- RLP hexutil.Bytes `json:"rlp"`
- Byzantium ttFork
- Constantinople ttFork
- Istanbul ttFork
- EIP150 ttFork
- EIP158 ttFork
- Frontier ttFork
- Homestead ttFork
-}
-
-type ttFork struct {
- Sender common.UnprefixedAddress `json:"sender"`
- Hash common.UnprefixedHash `json:"hash"`
-}
-
-func (tt *TransactionTest) Run(config *params.ChainConfig) error {
- validateTx := func(rlpData hexutil.Bytes, signer types.Signer, isHomestead bool, isIstanbul bool) (*common.Address, *common.Hash, error) {
- tx := new(types.Transaction)
- if err := rlp.DecodeBytes(rlpData, tx); err != nil {
- return nil, nil, err
- }
- sender, err := types.Sender(signer, tx)
- if err != nil {
- return nil, nil, err
- }
- // Intrinsic gas
- requiredGas, err := core.IntrinsicGas(tx.Data(), tx.AccessList(), tx.To() == nil, isHomestead, isIstanbul, false)
- if err != nil {
- return nil, nil, err
- }
- if requiredGas > tx.Gas() {
- return nil, nil, fmt.Errorf("insufficient gas ( %d < %d )", tx.Gas(), requiredGas)
- }
- h := tx.Hash()
- return &sender, &h, nil
- }
-
- for _, testcase := range []struct {
- name string
- signer types.Signer
- fork ttFork
- isHomestead bool
- isIstanbul bool
- }{
- {"Frontier", types.FrontierSigner{}, tt.Frontier, false, false},
- {"Homestead", types.HomesteadSigner{}, tt.Homestead, true, false},
- {"EIP150", types.HomesteadSigner{}, tt.EIP150, true, false},
- {"EIP158", types.NewEIP155Signer(config.ChainID), tt.EIP158, true, false},
- {"Byzantium", types.NewEIP155Signer(config.ChainID), tt.Byzantium, true, false},
- {"Constantinople", types.NewEIP155Signer(config.ChainID), tt.Constantinople, true, false},
- {"Istanbul", types.NewEIP155Signer(config.ChainID), tt.Istanbul, true, true},
- } {
- sender, txhash, err := validateTx(tt.RLP, testcase.signer, testcase.isHomestead, testcase.isIstanbul)
-
- if testcase.fork.Sender == (common.UnprefixedAddress{}) {
- if err == nil {
- return fmt.Errorf("expected error, got none (address %v)[%v]", sender.String(), testcase.name)
- }
- continue
- }
- // Should resolve the right address
- if err != nil {
- return fmt.Errorf("got error, expected none: %v", err)
- }
- if sender == nil {
- return fmt.Errorf("sender was nil, should be %x", common.Address(testcase.fork.Sender))
- }
- if *sender != common.Address(testcase.fork.Sender) {
- return fmt.Errorf("sender mismatch: got %x, want %x", sender, testcase.fork.Sender)
- }
- if txhash == nil {
- return fmt.Errorf("txhash was nil, should be %x", common.Hash(testcase.fork.Hash))
- }
- if *txhash != common.Hash(testcase.fork.Hash) {
- return fmt.Errorf("hash mismatch: got %x, want %x", *txhash, testcase.fork.Hash)
- }
- }
- return nil
-}