Skip to content

Commit

Permalink
fix for bad history
Browse files Browse the repository at this point in the history
  • Loading branch information
blxdyx committed Oct 15, 2024
1 parent 79b3bd5 commit 345198f
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 55 deletions.
108 changes: 54 additions & 54 deletions cmd/state/exec3/historical_trace_worker.go
Original file line number Diff line number Diff line change
Expand Up @@ -199,60 +199,60 @@ func (rw *HistoricalTraceWorker) RunTxTask(txTask *state.TxTask) {
if err != nil {
txTask.Error = err
}
case txTask.SystemTxIndex > 0:
syscall := func(contract common.Address, data []byte) ([]byte, error) {
return core.SysCallContract(contract, data, rw.execArgs.ChainConfig, ibs, header, rw.execArgs.Engine, false /* constCall */)
}

systemCall := func(ibs *state.IntraBlockState) ([]byte, bool, error) {

rw.taskGasPool.Reset(txTask.Tx.GetGas(), txTask.Tx.GetBlobGas())
if tracer := rw.consumer.NewTracer(); tracer != nil {
rw.vmConfig.Debug = true
rw.vmConfig.Tracer = tracer
}
rw.vmConfig.SkipAnalysis = txTask.SkipAnalysis
msg := txTask.TxAsMessage
ibs.SetTxContext(txTask.TxIndex, txTask.BlockNum)
msg.SetCheckNonce(!rw.vmConfig.StatelessExec)
if rw.execArgs.ChainConfig.IsCancun(header.Number.Uint64(), header.Time) {
rules := rw.execArgs.ChainConfig.Rules(header.Number.Uint64(), header.Time)
ibs.Prepare(rules, msg.From(), txTask.EvmBlockContext.Coinbase, msg.To(), vm.ActivePrecompiles(rules), msg.AccessList(), nil)
}

txContext := core.NewEVMTxContext(msg)
if rw.vmConfig.TraceJumpDest {
txContext.TxHash = txTask.Tx.Hash()
}
rw.evm.ResetBetweenBlocks(txTask.EvmBlockContext, txContext, ibs, *rw.vmConfig, rules)
// Increment the nonce for the next transaction
ibs.SetNonce(msg.From(), ibs.GetNonce(msg.From())+1)
ret, leftOverGas, err := rw.evm.Call(
vm.AccountRef(msg.From()),
*msg.To(),
msg.Data(),
msg.Gas(),
msg.Value(),
false,
)
if err != nil {
txTask.Error = err
} else {
txTask.Failed = false
txTask.UsedGas = msg.Gas() - leftOverGas
// Update the state with pending changes
ibs.SoftFinalise()
//txTask.Error = ibs.FinalizeTx(rules, noop)
txTask.Logs = ibs.GetRawLogs(txTask.TxIndex)
}
return ret, true, nil
}

_, _, _, err := rw.execArgs.Engine.Finalize(rw.execArgs.ChainConfig, types.CopyHeader(header), ibs, txTask.Txs, txTask.Uncles, txTask.BlockReceipts, txTask.Withdrawals, txTask.Requests, rw.chain, syscall, systemCall, txTask.TxIndex, rw.chainTx, rw.logger)
if err != nil {
log.Error("run system tx err", "block Number", txTask.BlockNum, "txIndex", txTask.TxIndex, "err", err)
txTask.Error = err
}
//case txTask.SystemTxIndex > 0:
// syscall := func(contract common.Address, data []byte) ([]byte, error) {
// return core.SysCallContract(contract, data, rw.execArgs.ChainConfig, ibs, header, rw.execArgs.Engine, false /* constCall */)
// }
//
// systemCall := func(ibs *state.IntraBlockState) ([]byte, bool, error) {
//
// rw.taskGasPool.Reset(txTask.Tx.GetGas(), txTask.Tx.GetBlobGas())
// if tracer := rw.consumer.NewTracer(); tracer != nil {
// rw.vmConfig.Debug = true
// rw.vmConfig.Tracer = tracer
// }
// rw.vmConfig.SkipAnalysis = txTask.SkipAnalysis
// msg := txTask.TxAsMessage
// ibs.SetTxContext(txTask.TxIndex, txTask.BlockNum)
// msg.SetCheckNonce(!rw.vmConfig.StatelessExec)
// if rw.execArgs.ChainConfig.IsCancun(header.Number.Uint64(), header.Time) {
// rules := rw.execArgs.ChainConfig.Rules(header.Number.Uint64(), header.Time)
// ibs.Prepare(rules, msg.From(), txTask.EvmBlockContext.Coinbase, msg.To(), vm.ActivePrecompiles(rules), msg.AccessList(), nil)
// }
//
// txContext := core.NewEVMTxContext(msg)
// if rw.vmConfig.TraceJumpDest {
// txContext.TxHash = txTask.Tx.Hash()
// }
// rw.evm.ResetBetweenBlocks(txTask.EvmBlockContext, txContext, ibs, *rw.vmConfig, rules)
// // Increment the nonce for the next transaction
// ibs.SetNonce(msg.From(), ibs.GetNonce(msg.From())+1)
// ret, leftOverGas, err := rw.evm.Call(
// vm.AccountRef(msg.From()),
// *msg.To(),
// msg.Data(),
// msg.Gas(),
// msg.Value(),
// false,
// )
// if err != nil {
// txTask.Error = err
// } else {
// txTask.Failed = false
// txTask.UsedGas = msg.Gas() - leftOverGas
// // Update the state with pending changes
// ibs.SoftFinalise()
// //txTask.Error = ibs.FinalizeTx(rules, noop)
// txTask.Logs = ibs.GetRawLogs(txTask.TxIndex)
// }
// return ret, true, nil
// }
//
// _, _, _, err := rw.execArgs.Engine.Finalize(rw.execArgs.ChainConfig, types.CopyHeader(header), ibs, txTask.Txs, txTask.Uncles, txTask.BlockReceipts, txTask.Withdrawals, txTask.Requests, rw.chain, syscall, systemCall, txTask.TxIndex, rw.chainTx, rw.logger)
// if err != nil {
// log.Error("run system tx err", "block Number", txTask.BlockNum, "txIndex", txTask.TxIndex, "err", err)
// txTask.Error = err
// }
default:
rw.taskGasPool.Reset(txTask.Tx.GetGas(), txTask.Tx.GetBlobGas())
if tracer := rw.consumer.NewTracer(); tracer != nil {
Expand Down
1 change: 0 additions & 1 deletion consensus/parlia/parlia.go
Original file line number Diff line number Diff line change
Expand Up @@ -901,7 +901,6 @@ func (p *Parlia) verifyTurnLength(chain consensus.ChainHeaderReader, header *typ
// Initialize runs any pre-transaction state modifications (e.g. epoch start)
func (p *Parlia) Initialize(config *chain.Config, chain consensus.ChainHeaderReader, header *types.Header,
state *state.IntraBlockState, syscall consensus.SysCallCustom, logger log.Logger, tracer *tracing.Hooks) error {
return nil
var err error
parentHeader := chain.GetHeader(header.ParentHash, header.Number.Uint64()-1)
if err = p.verifyValidators(header, parentHeader, state); err != nil {
Expand Down

0 comments on commit 345198f

Please sign in to comment.