|
|
|
@ -40,14 +40,22 @@ func TestDAOForkRangeExtradata(t *testing.T) { |
|
|
|
|
// Create the concurrent, conflicting two nodes
|
|
|
|
|
proDb, _ := ethdb.NewMemDatabase() |
|
|
|
|
gspec.MustCommit(proDb) |
|
|
|
|
proConf := ¶ms.ChainConfig{HomesteadBlock: big.NewInt(0), DAOForkBlock: forkBlock, DAOForkSupport: true} |
|
|
|
|
proBc, _ := NewBlockChain(proDb, proConf, ethash.NewFaker(), vm.Config{}) |
|
|
|
|
|
|
|
|
|
proConf := *params.TestChainConfig |
|
|
|
|
proConf.DAOForkBlock = forkBlock |
|
|
|
|
proConf.DAOForkSupport = true |
|
|
|
|
|
|
|
|
|
proBc, _ := NewBlockChain(proDb, &proConf, ethash.NewFaker(), vm.Config{}) |
|
|
|
|
defer proBc.Stop() |
|
|
|
|
|
|
|
|
|
conDb, _ := ethdb.NewMemDatabase() |
|
|
|
|
gspec.MustCommit(conDb) |
|
|
|
|
conConf := ¶ms.ChainConfig{HomesteadBlock: big.NewInt(0), DAOForkBlock: forkBlock, DAOForkSupport: false} |
|
|
|
|
conBc, _ := NewBlockChain(conDb, conConf, ethash.NewFaker(), vm.Config{}) |
|
|
|
|
|
|
|
|
|
conConf := *params.TestChainConfig |
|
|
|
|
conConf.DAOForkBlock = forkBlock |
|
|
|
|
conConf.DAOForkSupport = false |
|
|
|
|
|
|
|
|
|
conBc, _ := NewBlockChain(conDb, &conConf, ethash.NewFaker(), vm.Config{}) |
|
|
|
|
defer conBc.Stop() |
|
|
|
|
|
|
|
|
|
if _, err := proBc.InsertChain(prefix); err != nil { |
|
|
|
@ -61,7 +69,7 @@ func TestDAOForkRangeExtradata(t *testing.T) { |
|
|
|
|
// Create a pro-fork block, and try to feed into the no-fork chain
|
|
|
|
|
db, _ = ethdb.NewMemDatabase() |
|
|
|
|
gspec.MustCommit(db) |
|
|
|
|
bc, _ := NewBlockChain(db, conConf, ethash.NewFaker(), vm.Config{}) |
|
|
|
|
bc, _ := NewBlockChain(db, &conConf, ethash.NewFaker(), vm.Config{}) |
|
|
|
|
defer bc.Stop() |
|
|
|
|
|
|
|
|
|
blocks := conBc.GetBlocksFromHash(conBc.CurrentBlock().Hash(), int(conBc.CurrentBlock().NumberU64())) |
|
|
|
@ -71,19 +79,19 @@ func TestDAOForkRangeExtradata(t *testing.T) { |
|
|
|
|
if _, err := bc.InsertChain(blocks); err != nil { |
|
|
|
|
t.Fatalf("failed to import contra-fork chain for expansion: %v", err) |
|
|
|
|
} |
|
|
|
|
blocks, _ = GenerateChain(proConf, conBc.CurrentBlock(), db, 1, func(i int, gen *BlockGen) {}) |
|
|
|
|
blocks, _ = GenerateChain(&proConf, conBc.CurrentBlock(), db, 1, func(i int, gen *BlockGen) {}) |
|
|
|
|
if _, err := conBc.InsertChain(blocks); err == nil { |
|
|
|
|
t.Fatalf("contra-fork chain accepted pro-fork block: %v", blocks[0]) |
|
|
|
|
} |
|
|
|
|
// Create a proper no-fork block for the contra-forker
|
|
|
|
|
blocks, _ = GenerateChain(conConf, conBc.CurrentBlock(), db, 1, func(i int, gen *BlockGen) {}) |
|
|
|
|
blocks, _ = GenerateChain(&conConf, conBc.CurrentBlock(), db, 1, func(i int, gen *BlockGen) {}) |
|
|
|
|
if _, err := conBc.InsertChain(blocks); err != nil { |
|
|
|
|
t.Fatalf("contra-fork chain didn't accepted no-fork block: %v", err) |
|
|
|
|
} |
|
|
|
|
// Create a no-fork block, and try to feed into the pro-fork chain
|
|
|
|
|
db, _ = ethdb.NewMemDatabase() |
|
|
|
|
gspec.MustCommit(db) |
|
|
|
|
bc, _ = NewBlockChain(db, proConf, ethash.NewFaker(), vm.Config{}) |
|
|
|
|
bc, _ = NewBlockChain(db, &proConf, ethash.NewFaker(), vm.Config{}) |
|
|
|
|
defer bc.Stop() |
|
|
|
|
|
|
|
|
|
blocks = proBc.GetBlocksFromHash(proBc.CurrentBlock().Hash(), int(proBc.CurrentBlock().NumberU64())) |
|
|
|
@ -93,12 +101,12 @@ func TestDAOForkRangeExtradata(t *testing.T) { |
|
|
|
|
if _, err := bc.InsertChain(blocks); err != nil { |
|
|
|
|
t.Fatalf("failed to import pro-fork chain for expansion: %v", err) |
|
|
|
|
} |
|
|
|
|
blocks, _ = GenerateChain(conConf, proBc.CurrentBlock(), db, 1, func(i int, gen *BlockGen) {}) |
|
|
|
|
blocks, _ = GenerateChain(&conConf, proBc.CurrentBlock(), db, 1, func(i int, gen *BlockGen) {}) |
|
|
|
|
if _, err := proBc.InsertChain(blocks); err == nil { |
|
|
|
|
t.Fatalf("pro-fork chain accepted contra-fork block: %v", blocks[0]) |
|
|
|
|
} |
|
|
|
|
// Create a proper pro-fork block for the pro-forker
|
|
|
|
|
blocks, _ = GenerateChain(proConf, proBc.CurrentBlock(), db, 1, func(i int, gen *BlockGen) {}) |
|
|
|
|
blocks, _ = GenerateChain(&proConf, proBc.CurrentBlock(), db, 1, func(i int, gen *BlockGen) {}) |
|
|
|
|
if _, err := proBc.InsertChain(blocks); err != nil { |
|
|
|
|
t.Fatalf("pro-fork chain didn't accepted pro-fork block: %v", err) |
|
|
|
|
} |
|
|
|
@ -106,7 +114,7 @@ func TestDAOForkRangeExtradata(t *testing.T) { |
|
|
|
|
// Verify that contra-forkers accept pro-fork extra-datas after forking finishes
|
|
|
|
|
db, _ = ethdb.NewMemDatabase() |
|
|
|
|
gspec.MustCommit(db) |
|
|
|
|
bc, _ := NewBlockChain(db, conConf, ethash.NewFaker(), vm.Config{}) |
|
|
|
|
bc, _ := NewBlockChain(db, &conConf, ethash.NewFaker(), vm.Config{}) |
|
|
|
|
defer bc.Stop() |
|
|
|
|
|
|
|
|
|
blocks := conBc.GetBlocksFromHash(conBc.CurrentBlock().Hash(), int(conBc.CurrentBlock().NumberU64())) |
|
|
|
@ -116,14 +124,14 @@ func TestDAOForkRangeExtradata(t *testing.T) { |
|
|
|
|
if _, err := bc.InsertChain(blocks); err != nil { |
|
|
|
|
t.Fatalf("failed to import contra-fork chain for expansion: %v", err) |
|
|
|
|
} |
|
|
|
|
blocks, _ = GenerateChain(proConf, conBc.CurrentBlock(), db, 1, func(i int, gen *BlockGen) {}) |
|
|
|
|
blocks, _ = GenerateChain(&proConf, conBc.CurrentBlock(), db, 1, func(i int, gen *BlockGen) {}) |
|
|
|
|
if _, err := conBc.InsertChain(blocks); err != nil { |
|
|
|
|
t.Fatalf("contra-fork chain didn't accept pro-fork block post-fork: %v", err) |
|
|
|
|
} |
|
|
|
|
// Verify that pro-forkers accept contra-fork extra-datas after forking finishes
|
|
|
|
|
db, _ = ethdb.NewMemDatabase() |
|
|
|
|
gspec.MustCommit(db) |
|
|
|
|
bc, _ = NewBlockChain(db, proConf, ethash.NewFaker(), vm.Config{}) |
|
|
|
|
bc, _ = NewBlockChain(db, &proConf, ethash.NewFaker(), vm.Config{}) |
|
|
|
|
defer bc.Stop() |
|
|
|
|
|
|
|
|
|
blocks = proBc.GetBlocksFromHash(proBc.CurrentBlock().Hash(), int(proBc.CurrentBlock().NumberU64())) |
|
|
|
@ -133,7 +141,7 @@ func TestDAOForkRangeExtradata(t *testing.T) { |
|
|
|
|
if _, err := bc.InsertChain(blocks); err != nil { |
|
|
|
|
t.Fatalf("failed to import pro-fork chain for expansion: %v", err) |
|
|
|
|
} |
|
|
|
|
blocks, _ = GenerateChain(conConf, proBc.CurrentBlock(), db, 1, func(i int, gen *BlockGen) {}) |
|
|
|
|
blocks, _ = GenerateChain(&conConf, proBc.CurrentBlock(), db, 1, func(i int, gen *BlockGen) {}) |
|
|
|
|
if _, err := proBc.InsertChain(blocks); err != nil { |
|
|
|
|
t.Fatalf("pro-fork chain didn't accept contra-fork block post-fork: %v", err) |
|
|
|
|
} |
|
|
|
|