aboutsummaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorJeffrey Wilcke <geffobscura@gmail.com>2016-03-31 23:43:41 +0800
committerJeffrey Wilcke <geffobscura@gmail.com>2016-04-01 07:01:10 +0800
commit9055c16efad80d0c69992e7992083f967733aa9c (patch)
tree41de92819a7aa8182779e964cec75c0e54d8801f /core
parentf0cbebb19f3137ee3ba0e66dadd1b5b9dbf98b1c (diff)
downloaddexon-9055c16efad80d0c69992e7992083f967733aa9c.tar.gz
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
Diffstat (limited to 'core')
-rw-r--r--core/block_validator_test.go3
-rw-r--r--core/blockchain_test.go10
-rw-r--r--core/chain_makers.go21
-rw-r--r--core/chain_makers_test.go2
4 files changed, 12 insertions, 24 deletions
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