diff options
author | Jeffrey Wilcke <geffobscura@gmail.com> | 2016-03-31 23:43:41 +0800 |
---|---|---|
committer | Jeffrey Wilcke <geffobscura@gmail.com> | 2016-04-01 07:01:10 +0800 |
commit | 9055c16efad80d0c69992e7992083f967733aa9c (patch) | |
tree | 41de92819a7aa8182779e964cec75c0e54d8801f | |
parent | f0cbebb19f3137ee3ba0e66dadd1b5b9dbf98b1c (diff) | |
download | dexon-9055c16efad80d0c69992e7992083f967733aa9c.tar dexon-9055c16efad80d0c69992e7992083f967733aa9c.tar.gz dexon-9055c16efad80d0c69992e7992083f967733aa9c.tar.bz2 dexon-9055c16efad80d0c69992e7992083f967733aa9c.tar.lz dexon-9055c16efad80d0c69992e7992083f967733aa9c.tar.xz dexon-9055c16efad80d0c69992e7992083f967733aa9c.tar.zst dexon-9055c16efad80d0c69992e7992083f967733aa9c.zip |
accounts/a/b/backends, core: chain maker homestead block set to 0
The chain maker and the simulated backend now run with a homestead phase
beginning at block 0 (i.e. there's no frontier).
This commit also fixes up #2388
-rw-r--r-- | accounts/abi/bind/backends/simulated.go | 3 | ||||
-rw-r--r-- | core/block_validator_test.go | 3 | ||||
-rw-r--r-- | core/blockchain_test.go | 10 | ||||
-rw-r--r-- | core/chain_makers.go | 21 | ||||
-rw-r--r-- | core/chain_makers_test.go | 2 | ||||
-rw-r--r-- | eth/helper_test.go | 3 |
6 files changed, 14 insertions, 28 deletions
diff --git a/accounts/abi/bind/backends/simulated.go b/accounts/abi/bind/backends/simulated.go index 43d490988..213a4f1a7 100644 --- a/accounts/abi/bind/backends/simulated.go +++ b/accounts/abi/bind/backends/simulated.go @@ -27,11 +27,10 @@ import ( "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/ethdb" "github.com/ethereum/go-ethereum/event" - "github.com/ethereum/go-ethereum/params" ) // Default chain configuration which sets homestead phase at block 0 (i.e. no frontier) -var chainConfig = &core.ChainConfig{HomesteadBlock: params.MainNetHomesteadBlock} +var chainConfig = &core.ChainConfig{HomesteadBlock: big.NewInt(0)} // This nil assignment ensures compile time that SimulatedBackend implements bind.ContractBackend. var _ bind.ContractBackend = (*SimulatedBackend)(nil) diff --git a/core/block_validator_test.go b/core/block_validator_test.go index aa29717b1..c6daf9e7f 100644 --- a/core/block_validator_test.go +++ b/core/block_validator_test.go @@ -27,12 +27,11 @@ import ( "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/ethdb" "github.com/ethereum/go-ethereum/event" - "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/pow/ezp" ) func testChainConfig() *ChainConfig { - return &ChainConfig{HomesteadBlock: params.MainNetHomesteadBlock} + return &ChainConfig{HomesteadBlock: big.NewInt(0)} } func proc() (Validator, *BlockChain) { diff --git a/core/blockchain_test.go b/core/blockchain_test.go index 9e59b2ff6..876dd2ba1 100644 --- a/core/blockchain_test.go +++ b/core/blockchain_test.go @@ -1025,23 +1025,21 @@ func TestReorgSideEvent(t *testing.T) { evmux := &event.TypeMux{} blockchain, _ := NewBlockChain(db, testChainConfig(), FakePow{}, evmux) - chain, _ := GenerateChain(genesis, db, 3, func(i int, gen *BlockGen) { - if i == 2 { - gen.OffsetTime(9) - } - }) + chain, _ := GenerateChain(genesis, db, 3, func(i int, gen *BlockGen) {}) if _, err := blockchain.InsertChain(chain); err != nil { t.Fatalf("failed to insert chain: %v", err) } replacementBlocks, _ := GenerateChain(genesis, db, 4, func(i int, gen *BlockGen) { tx, err := types.NewContractCreation(gen.TxNonce(addr1), new(big.Int), big.NewInt(1000000), new(big.Int), nil).SignECDSA(key1) + if i == 2 { + gen.OffsetTime(-1) + } if err != nil { t.Fatalf("failed to create tx: %v", err) } gen.AddTx(tx) }) - subs := evmux.Subscribe(ChainSideEvent{}) if _, err := blockchain.InsertChain(replacementBlocks); err != nil { t.Fatalf("failed to insert chain: %v", err) diff --git a/core/chain_makers.go b/core/chain_makers.go index c740f9c37..ef0ac66d1 100644 --- a/core/chain_makers.go +++ b/core/chain_makers.go @@ -26,7 +26,6 @@ import ( "github.com/ethereum/go-ethereum/core/vm" "github.com/ethereum/go-ethereum/ethdb" "github.com/ethereum/go-ethereum/event" - "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/pow" ) @@ -35,16 +34,8 @@ import ( */ // MakeChainConfig returns a new ChainConfig with the ethereum default chain settings. -func MakeChainConfig(testnet bool) *ChainConfig { - homesteadBlock := params.MainNetHomesteadBlock - // set a different default homestead block for the testnet - if testnet { - homesteadBlock = params.TestNetHomesteadBlock - } - - return &ChainConfig{ - HomesteadBlock: homesteadBlock, - } +func MakeChainConfig() *ChainConfig { + return &ChainConfig{HomesteadBlock: big.NewInt(0)} } // FakePow is a non-validating proof of work implementation. @@ -110,7 +101,7 @@ func (b *BlockGen) AddTx(tx *types.Transaction) { b.SetCoinbase(common.Address{}) } b.statedb.StartRecord(tx.Hash(), common.Hash{}, len(b.txs)) - receipt, _, _, err := ApplyTransaction(MakeChainConfig(true), nil, b.gasPool, b.statedb, b.header, tx, b.header.GasUsed, vm.Config{}) + receipt, _, _, err := ApplyTransaction(MakeChainConfig(), nil, b.gasPool, b.statedb, b.header, tx, b.header.GasUsed, vm.Config{}) if err != nil { panic(err) } @@ -167,7 +158,7 @@ func (b *BlockGen) OffsetTime(seconds int64) { if b.header.Time.Cmp(b.parent.Header().Time) <= 0 { panic("block time out of range") } - b.header.Difficulty = CalcDifficulty(MakeChainConfig(true), b.header.Time.Uint64(), b.parent.Time().Uint64(), b.parent.Number(), b.parent.Difficulty()) + b.header.Difficulty = CalcDifficulty(MakeChainConfig(), b.header.Time.Uint64(), b.parent.Time().Uint64(), b.parent.Number(), b.parent.Difficulty()) } // GenerateChain creates a chain of n blocks. The first block's @@ -222,7 +213,7 @@ func makeHeader(parent *types.Block, state *state.StateDB) *types.Header { Root: state.IntermediateRoot(), ParentHash: parent.Hash(), Coinbase: parent.Coinbase(), - Difficulty: CalcDifficulty(MakeChainConfig(true), time.Uint64(), new(big.Int).Sub(time, big.NewInt(10)).Uint64(), parent.Number(), parent.Difficulty()), + Difficulty: CalcDifficulty(MakeChainConfig(), time.Uint64(), new(big.Int).Sub(time, big.NewInt(10)).Uint64(), parent.Number(), parent.Difficulty()), GasLimit: CalcGasLimit(parent), GasUsed: new(big.Int), Number: new(big.Int).Add(parent.Number(), common.Big1), @@ -241,7 +232,7 @@ func newCanonical(n int, full bool) (ethdb.Database, *BlockChain, error) { // Initialize a fresh chain with only a genesis block genesis, _ := WriteTestNetGenesisBlock(db) - blockchain, _ := NewBlockChain(db, MakeChainConfig(false), FakePow{}, evmux) + blockchain, _ := NewBlockChain(db, MakeChainConfig(), FakePow{}, evmux) // Create and inject the requested chain if n == 0 { return db, blockchain, nil diff --git a/core/chain_makers_test.go b/core/chain_makers_test.go index 86949246b..32c3efe8d 100644 --- a/core/chain_makers_test.go +++ b/core/chain_makers_test.go @@ -77,7 +77,7 @@ func ExampleGenerateChain() { // Import the chain. This runs all block validation rules. evmux := &event.TypeMux{} - blockchain, _ := NewBlockChain(db, MakeChainConfig(true), FakePow{}, evmux) + blockchain, _ := NewBlockChain(db, MakeChainConfig(), FakePow{}, evmux) if i, err := blockchain.InsertChain(chain); err != nil { fmt.Printf("insert error (block %d): %v\n", i, err) return diff --git a/eth/helper_test.go b/eth/helper_test.go index 5d141ce56..13de18670 100644 --- a/eth/helper_test.go +++ b/eth/helper_test.go @@ -17,7 +17,6 @@ import ( "github.com/ethereum/go-ethereum/event" "github.com/ethereum/go-ethereum/p2p" "github.com/ethereum/go-ethereum/p2p/discover" - "github.com/ethereum/go-ethereum/params" ) var ( @@ -35,7 +34,7 @@ func newTestProtocolManager(fastSync bool, blocks int, generator func(int, *core pow = new(core.FakePow) db, _ = ethdb.NewMemDatabase() genesis = core.WriteGenesisBlockForTesting(db, core.GenesisAccount{testBankAddress, testBankFunds}) - chainConfig = &core.ChainConfig{HomesteadBlock: params.MainNetHomesteadBlock} + chainConfig = &core.ChainConfig{HomesteadBlock: big.NewInt(0)} // homestead set to 0 because of chain maker blockchain, _ = core.NewBlockChain(db, chainConfig, pow, evmux) ) chain, _ := core.GenerateChain(genesis, db, blocks, generator) |