Skip to content

Commit

Permalink
fix integration tests
Browse files Browse the repository at this point in the history
  • Loading branch information
sudeepdino008 committed Jul 6, 2022
1 parent ccd5866 commit dbcf1b8
Show file tree
Hide file tree
Showing 9 changed files with 36 additions and 34 deletions.
2 changes: 1 addition & 1 deletion cmd/evm/testdata/12/exp.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
"receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
"logsHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"receipts": [],
"receipts": null,
"rejected": [
{
"index": 0,
Expand Down
2 changes: 1 addition & 1 deletion cmd/evm/testdata/19/exp_arrowglacier.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
"receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
"logsHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"receipts": [],
"receipts": null,
"currentDifficulty": "0x2000000200000",
"gasUsed": "0x0"
}
Expand Down
2 changes: 1 addition & 1 deletion cmd/evm/testdata/19/exp_london.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
"receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
"logsHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"receipts": [],
"receipts": null,
"currentDifficulty": "0x2000080000000",
"gasUsed": "0x0"
}
Expand Down
2 changes: 1 addition & 1 deletion cmd/evm/testdata/5/exp.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
"receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
"logsHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"receipts": [],
"receipts": null,
"currentDifficulty": "0x20000",
"gasUsed": "0x0"
}
Expand Down
2 changes: 1 addition & 1 deletion cmd/evm/testdata/7/exp.json
Original file line number Diff line number Diff line change
Expand Up @@ -368,7 +368,7 @@
"receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
"logsHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"receipts": [],
"receipts": null,
"currentDifficulty": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffff020000",
"gasUsed": "0x0"
}
Expand Down
3 changes: 2 additions & 1 deletion cmd/state/commands/erigon22.go
Original file line number Diff line number Diff line change
Expand Up @@ -305,14 +305,15 @@ func processBlock22(startTxNum uint64, trace bool, txNumStart uint64, rw *Reader

txNum++ // Pre-block transaction
ww.w.SetTxNum(txNum)
getHashFn := core.GetHashFn(header, getHeader)

for i, tx := range block.Transactions() {
if txNum >= startTxNum {
ibs := state.New(rw)
ibs.Prepare(tx.Hash(), block.Hash(), i)
ct := NewCallTracer()
vmConfig.Tracer = ct
receipt, _, err := core.ApplyTransaction(chainConfig, getHeader, engine, nil, gp, ibs, ww, header, tx, usedGas, vmConfig, nil)
receipt, _, err := core.ApplyTransaction(chainConfig, getHashFn, engine, nil, gp, ibs, ww, header, tx, usedGas, vmConfig, nil)
if err != nil {
return 0, nil, fmt.Errorf("could not apply tx %d [%x] failed: %w", i, tx.Hash(), err)
}
Expand Down
3 changes: 2 additions & 1 deletion cmd/state/commands/state_recon.go
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,8 @@ func (rw *ReconWorker) runTxNum(txNum uint64) {
vmConfig := vm.Config{NoReceipts: true, SkipAnalysis: core.SkipAnalysis(rw.chainConfig, blockNum)}
contractHasTEVM := func(contractHash common.Hash) (bool, error) { return false, nil }
ibs.Prepare(txHash, rw.lastBlockHash, int(txIndex))
_, _, err = core.ApplyTransaction(rw.chainConfig, rw.getHeader, rw.engine, nil, gp, ibs, noop, rw.lastHeader, txn, usedGas, vmConfig, contractHasTEVM)
getHashFn := core.GetHashFn(rw.lastHeader, rw.getHeader)
_, _, err = core.ApplyTransaction(rw.chainConfig, getHashFn, rw.engine, nil, gp, ibs, noop, rw.lastHeader, txn, usedGas, vmConfig, contractHasTEVM)
if err != nil {
panic(fmt.Errorf("could not apply tx %d [%x] failed: %w", txIndex, txHash, err))
}
Expand Down
36 changes: 20 additions & 16 deletions core/blockchain.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,14 +87,14 @@ func ExecuteBlockEphemerallyForBSC(
block.Uncles()
ibs := state.New(stateReader)
header := block.Header()
var receipts types.Receipts
usedGas := new(uint64)
gp := new(GasPool)
gp.AddGas(block.GasLimit())

var (
rejectedTxs []*RejectedTx
includedTxs types.Transactions
receipts types.Receipts
)

if !vmConfig.ReadOnly {
Expand Down Expand Up @@ -123,7 +123,7 @@ func ExecuteBlockEphemerallyForBSC(
if vmConfig.Debug && vmConfig.Tracer == nil {
tracer, err := getTracer(i, tx.Hash())
if err != nil {
panic(err)
return nil, fmt.Errorf("could not obtain tracer: %w", err)
}
vmConfig.Tracer = tracer
writeTrace = true
Expand All @@ -137,10 +137,11 @@ func ExecuteBlockEphemerallyForBSC(

vmConfig.Tracer = nil
}
if err != nil && statelessExec {
if err != nil {
if !statelessExec {
return nil, fmt.Errorf("could not apply tx %d from block %d [%v]: %w", i, block.NumberU64(), tx.Hash().Hex(), err)
}
rejectedTxs = append(rejectedTxs, &RejectedTx{i, err.Error()})
} else if err != nil && !statelessExec {
return nil, fmt.Errorf("could not apply tx %d from block %d [%v]: %w", i, block.NumberU64(), tx.Hash().Hex(), err)
} else {
includedTxs = append(includedTxs, tx)
if !vmConfig.NoReceipts {
Expand Down Expand Up @@ -181,20 +182,20 @@ func ExecuteBlockEphemerallyForBSC(
receiptSha = types.DeriveSha(receipts)
}

var bloom types.Bloom

if chainConfig.IsByzantium(header.Number.Uint64()) && !vmConfig.NoReceipts {
if !statelessExec && newBlock.ReceiptHash() != block.ReceiptHash() {
if !statelessExec && receiptSha != block.ReceiptHash() {
return nil, fmt.Errorf("mismatched receipt headers for block %d (%s != %s)", block.NumberU64(), newBlock.ReceiptHash().Hex(), block.Header().ReceiptHash.Hex())
}
}
if !statelessExec && newBlock.GasUsed() != header.GasUsed {
return nil, fmt.Errorf("gas used by execution: %d, in header: %d", *usedGas, header.GasUsed)
}

var bloom types.Bloom
if !vmConfig.NoReceipts {
bloom = newBlock.Bloom()
if !statelessExec && newBlock.Bloom() != header.Bloom {
return nil, fmt.Errorf("bloom computed by execution: %x, in header: %x", newBlock.Bloom(), header.Bloom)
if !statelessExec && bloom != header.Bloom {
return nil, fmt.Errorf("bloom computed by execution: %x, in header: %x", bloom, header.Bloom)
}
}

Expand Down Expand Up @@ -238,14 +239,15 @@ func ExecuteBlockEphemerally(
block.Uncles()
ibs := state.New(stateReader)
header := block.Header()
var receipts = make(types.Receipts, 0)

usedGas := new(uint64)
gp := new(GasPool)
gp.AddGas(block.GasLimit())

var (
rejectedTxs []*RejectedTx
includedTxs types.Transactions
receipts types.Receipts
)

if !vmConfig.ReadOnly {
Expand All @@ -265,7 +267,7 @@ func ExecuteBlockEphemerally(
if vmConfig.Debug && vmConfig.Tracer == nil {
tracer, err := getTracer(i, tx.Hash())
if err != nil {
panic(err)
return nil, fmt.Errorf("could not obtain tracer: %w", err)
}
vmConfig.Tracer = tracer
writeTrace = true
Expand All @@ -279,10 +281,11 @@ func ExecuteBlockEphemerally(

vmConfig.Tracer = nil
}
if err != nil && statelessExec {
if err != nil {
if !statelessExec {
return nil, fmt.Errorf("could not apply tx %d from block %d [%v]: %w", i, block.NumberU64(), tx.Hash().Hex(), err)
}
rejectedTxs = append(rejectedTxs, &RejectedTx{i, err.Error()})
} else if err != nil && !statelessExec {
return nil, fmt.Errorf("could not apply tx %d from block %d [%v]: %w", i, block.NumberU64(), tx.Hash().Hex(), err)
} else {
includedTxs = append(includedTxs, tx)
if !vmConfig.NoReceipts {
Expand All @@ -291,7 +294,6 @@ func ExecuteBlockEphemerally(
}
}

var bloom types.Bloom
receiptSha := types.DeriveSha(receipts)
if !statelessExec && chainConfig.IsByzantium(header.Number.Uint64()) && !vmConfig.NoReceipts && receiptSha != block.ReceiptHash() {
return nil, fmt.Errorf("mismatched receipt headers for block %d", block.NumberU64())
Expand All @@ -300,6 +302,8 @@ func ExecuteBlockEphemerally(
if !statelessExec && *usedGas != header.GasUsed {
return nil, fmt.Errorf("gas used by execution: %d, in header: %d", *usedGas, header.GasUsed)
}

var bloom types.Bloom
if !vmConfig.NoReceipts {
bloom = types.CreateBloom(receipts)
if !statelessExec && bloom != header.Bloom {
Expand Down
18 changes: 7 additions & 11 deletions eth/stagedsync/stage_execute.go
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,10 @@ func executeBlock(
return h
}

getTracer := func(txIndex int, txHash ecom.Hash) (vm.Tracer, error) {
return vm.NewStructLogger(&vm.LogConfig{}), nil
}

callTracer := calltracer.NewCallTracer(contractHasTEVM)
vmConfig.Debug = true
vmConfig.Tracer = callTracer
Expand All @@ -131,24 +135,17 @@ func executeBlock(
var execRs *core.EphemeralExecResult
_, isPoSa := cfg.engine.(consensus.PoSA)
getHashFn := core.GetHashFn(block.Header(), getHeader)

if isPoSa {
getTracer := func(txIndex int, txHash ecom.Hash) (vm.Tracer, error) {
return vm.NewStructLogger(&vm.LogConfig{}), nil
}
execRs, err = core.ExecuteBlockEphemerallyForBSC(cfg.chainConfig, &vmConfig, getHashFn, cfg.engine, block, stateReader, stateWriter, epochReader{tx: tx}, chainReader{config: cfg.chainConfig, tx: tx, blockReader: cfg.blockReader}, contractHasTEVM, false, getTracer)
receipts = execRs.Receipts
stateSyncReceipt = execRs.ReceiptForStorage
} else {
getTracer := func(txIndex int, txHash ecom.Hash) (vm.Tracer, error) {
return vm.NewStructLogger(&vm.LogConfig{}), nil
}
execRs, err = core.ExecuteBlockEphemerally(cfg.chainConfig, &vmConfig, getHashFn, cfg.engine, block, stateReader, stateWriter, epochReader{tx: tx}, chainReader{config: cfg.chainConfig, tx: tx, blockReader: cfg.blockReader}, contractHasTEVM, false, getTracer)
receipts = execRs.Receipts
stateSyncReceipt = execRs.ReceiptForStorage
}
if err != nil {
return err
}
receipts = execRs.Receipts
stateSyncReceipt = execRs.ReceiptForStorage

if writeReceipts {
if err = rawdb.AppendReceipts(tx, blockNum, receipts); err != nil {
Expand All @@ -160,7 +157,6 @@ func executeBlock(
return err
}
}

}

if cfg.changeSetHook != nil {
Expand Down

0 comments on commit dbcf1b8

Please sign in to comment.