mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-18 18:02:24 +00:00
add boilerplate post state
This commit is contained in:
parent
8d95b10bb9
commit
69747c05a4
3 changed files with 29 additions and 23 deletions
|
|
@ -67,8 +67,7 @@ func TestSupplyOmittedFields(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
compareAsJSON(t, expected, out)
|
compareAsJSON(t, expected, out)
|
||||||
writeArtifact(t, "omitted_fields_cancun", db, chain, expected)
|
writeArtifact(t, "omitted_fields_cancun", db, chain, expected, nil)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSupplyGenesisAlloc(t *testing.T) {
|
func TestSupplyGenesisAlloc(t *testing.T) {
|
||||||
|
|
@ -109,7 +108,7 @@ func TestSupplyGenesisAlloc(t *testing.T) {
|
||||||
t.Fatalf("failed to test supply tracer: %v", err)
|
t.Fatalf("failed to test supply tracer: %v", err)
|
||||||
}
|
}
|
||||||
compareAsJSON(t, expected, out)
|
compareAsJSON(t, expected, out)
|
||||||
writeArtifact(t, "genesis_alloc_grayGlacier", db, chain, expected)
|
writeArtifact(t, "genesis_alloc_grayGlacier", db, chain, expected, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSupplyEip1559Burn(t *testing.T) {
|
func TestSupplyEip1559Burn(t *testing.T) {
|
||||||
|
|
@ -176,7 +175,7 @@ func TestSupplyEip1559Burn(t *testing.T) {
|
||||||
}}
|
}}
|
||||||
)
|
)
|
||||||
compareAsJSON(t, expected, out)
|
compareAsJSON(t, expected, out)
|
||||||
writeArtifact(t, "eip1559_burn_grayGlacier", db, chain, expected)
|
writeArtifact(t, "eip1559_burn_grayGlacier", db, chain, expected, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSupplyWithdrawals(t *testing.T) {
|
func TestSupplyWithdrawals(t *testing.T) {
|
||||||
|
|
@ -218,7 +217,7 @@ func TestSupplyWithdrawals(t *testing.T) {
|
||||||
}}
|
}}
|
||||||
)
|
)
|
||||||
compareAsJSON(t, expected, out)
|
compareAsJSON(t, expected, out)
|
||||||
writeArtifact(t, "withdrawals_cancun", db, chain, expected)
|
writeArtifact(t, "withdrawals_cancun", db, chain, expected, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tests fund retrieval after contract's selfdestruct.
|
// Tests fund retrieval after contract's selfdestruct.
|
||||||
|
|
@ -439,13 +438,8 @@ func TestSupplySelfdestructItselfAndRevert(t *testing.T) {
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
gspec.Config.TerminalTotalDifficulty = big.NewInt(0)
|
|
||||||
|
|
||||||
signer := types.LatestSigner(gspec.Config)
|
signer := types.LatestSigner(gspec.Config)
|
||||||
|
|
||||||
testBlockGenerationFunc := func(b *core.BlockGen) {
|
testBlockGenerationFunc := func(b *core.BlockGen) {
|
||||||
b.SetPoS()
|
|
||||||
|
|
||||||
txdata := &types.LegacyTx{
|
txdata := &types.LegacyTx{
|
||||||
Nonce: 0,
|
Nonce: 0,
|
||||||
To: &aa,
|
To: &aa,
|
||||||
|
|
@ -461,7 +455,7 @@ func TestSupplySelfdestructItselfAndRevert(t *testing.T) {
|
||||||
b.AddTx(tx)
|
b.AddTx(tx)
|
||||||
}
|
}
|
||||||
|
|
||||||
output, _, chain, err := testSupplyTracer(t, gspec, testBlockGenerationFunc)
|
output, db, chain, err := testSupplyTracer(t, gspec, testBlockGenerationFunc)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("failed to test supply tracer: %v", err)
|
t.Fatalf("failed to test supply tracer: %v", err)
|
||||||
}
|
}
|
||||||
|
|
@ -487,20 +481,28 @@ func TestSupplySelfdestructItselfAndRevert(t *testing.T) {
|
||||||
|
|
||||||
// Check live trace output
|
// Check live trace output
|
||||||
block := chain.GetBlockByNumber(1)
|
block := chain.GetBlockByNumber(1)
|
||||||
|
expected := []supplyInfo{{
|
||||||
expected := supplyInfo{
|
Issuance: &supplyInfoIssuance{
|
||||||
|
GenesisAlloc: new(big.Int).Mul(big.NewInt(9), big.NewInt(params.Ether)),
|
||||||
|
},
|
||||||
|
Number: 0,
|
||||||
|
Hash: common.HexToHash("0xaf41e72f748de317965454508c749f7e14dc4fe444cd07bca4c981c7e952364d"),
|
||||||
|
ParentHash: common.HexToHash("0x0000000000000000000000000000000000000000000000000000000000000000"),
|
||||||
|
}, {
|
||||||
Burn: &supplyInfoBurn{
|
Burn: &supplyInfoBurn{
|
||||||
EIP1559: new(big.Int).Mul(block.BaseFee(), big.NewInt(int64(block.GasUsed()))),
|
EIP1559: new(big.Int).Mul(block.BaseFee(), big.NewInt(int64(block.GasUsed()))),
|
||||||
Misc: eth5, // 5ETH burned from contract B
|
Misc: eth5, // 5ETH burned from contract B
|
||||||
},
|
},
|
||||||
|
Issuance: &supplyInfoIssuance{
|
||||||
|
Reward: eth2,
|
||||||
|
},
|
||||||
Number: 1,
|
Number: 1,
|
||||||
Hash: block.Hash(),
|
Hash: block.Hash(),
|
||||||
ParentHash: block.ParentHash(),
|
ParentHash: block.ParentHash(),
|
||||||
}
|
}}
|
||||||
|
|
||||||
actual := output[expected.Number]
|
compareAsJSON(t, expected, output)
|
||||||
|
writeArtifact(t, "selfdestruct_itself_and_revert_grayGlacier", db, chain, expected, nil)
|
||||||
compareAsJSON(t, expected, actual)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func testSupplyTracer(t *testing.T, genesis *core.Genesis, gen func(*core.BlockGen)) ([]supplyInfo, ethdb.Database, *core.BlockChain, error) {
|
func testSupplyTracer(t *testing.T, genesis *core.Genesis, gen func(*core.BlockGen)) ([]supplyInfo, ethdb.Database, *core.BlockChain, error) {
|
||||||
|
|
@ -573,8 +575,8 @@ func compareAsJSON(t *testing.T, expected interface{}, actual interface{}) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func writeArtifact(t *testing.T, name string, db ethdb.Database, chain *core.BlockChain, expected []supplyInfo) {
|
func writeArtifact(t *testing.T, name string, db ethdb.Database, chain *core.BlockChain, expected []supplyInfo, post *types.GenesisAlloc) {
|
||||||
bt, err := btFromChain(db, chain)
|
bt, err := btFromChain(db, chain, post)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("failed to fill tests from chain: %v", err)
|
t.Fatalf("failed to fill tests from chain: %v", err)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
|
||||||
"github.com/ethereum/go-ethereum/core"
|
"github.com/ethereum/go-ethereum/core"
|
||||||
|
"github.com/ethereum/go-ethereum/core/types"
|
||||||
"github.com/ethereum/go-ethereum/ethdb"
|
"github.com/ethereum/go-ethereum/ethdb"
|
||||||
"github.com/ethereum/go-ethereum/tests"
|
"github.com/ethereum/go-ethereum/tests"
|
||||||
)
|
)
|
||||||
|
|
@ -13,8 +14,8 @@ type BlockTest struct {
|
||||||
Expected []supplyInfo `json:"expected"`
|
Expected []supplyInfo `json:"expected"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func btFromChain(db ethdb.Database, chain *core.BlockChain) (*BlockTest, error) {
|
func btFromChain(db ethdb.Database, chain *core.BlockChain, post *types.GenesisAlloc) (*BlockTest, error) {
|
||||||
bt, err := tests.FromChain(db, chain)
|
bt, err := tests.FromChain(db, chain, post)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -64,7 +64,7 @@ func (t *BlockTest) MarshalJSON() ([]byte, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// FromChain creates a BlockTest from the history of the given chain.
|
// FromChain creates a BlockTest from the history of the given chain.
|
||||||
func FromChain(db ethdb.Database, chain *core.BlockChain) (BlockTest, error) {
|
func FromChain(db ethdb.Database, chain *core.BlockChain, post *types.GenesisAlloc) (BlockTest, error) {
|
||||||
var (
|
var (
|
||||||
bt = BlockTest{}
|
bt = BlockTest{}
|
||||||
head = chain.CurrentHeader()
|
head = chain.CurrentHeader()
|
||||||
|
|
@ -86,12 +86,15 @@ func FromChain(db ethdb.Database, chain *core.BlockChain) (BlockTest, error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return bt, fmt.Errorf("failed to get genesis alloc: %v", err)
|
return bt, fmt.Errorf("failed to get genesis alloc: %v", err)
|
||||||
}
|
}
|
||||||
|
if post == nil {
|
||||||
|
post = &types.GenesisAlloc{}
|
||||||
|
}
|
||||||
bt.json = btJSON{
|
bt.json = btJSON{
|
||||||
Network: capitalize(chain.Config().LatestFork(head.Number, head.Time).String()),
|
Network: capitalize(chain.Config().LatestFork(head.Number, head.Time).String()),
|
||||||
Blocks: blocks,
|
Blocks: blocks,
|
||||||
Genesis: FromHeader(chain.Genesis().Header()),
|
Genesis: FromHeader(chain.Genesis().Header()),
|
||||||
Pre: alloc,
|
Pre: alloc,
|
||||||
Post: make(types.GenesisAlloc),
|
Post: *post,
|
||||||
BestBlock: common.UnprefixedHash(head.Hash()),
|
BestBlock: common.UnprefixedHash(head.Hash()),
|
||||||
}
|
}
|
||||||
return bt, nil
|
return bt, nil
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue