@@ -2327,7 +2327,7 @@ func (bc *BlockChain) InsertChainStateless(chain types.Blocks, witnesses []*stat
23272327 }
23282328
23292329 // Process the block using stateless execution
2330- statedb , err := bc .ProcessBlockWithWitnesses (block , witness )
2330+ statedb , res , err := bc .ProcessBlockWithWitnesses (block , witness )
23312331 if err != nil {
23322332 return processed , err
23332333 }
@@ -2342,6 +2342,7 @@ func (bc *BlockChain) InsertChainStateless(chain types.Blocks, witnesses []*stat
23422342 processed ++
23432343
23442344 stats .processed = processed
2345+ stats .usedGas += res .GasUsed
23452346
23462347 stats .report (chain , i , 0 , 0 , 0 , 0 , true , true )
23472348 }
@@ -2925,7 +2926,7 @@ func (bc *BlockChain) processBlock(block *types.Block, statedb *state.StateDB, s
29252926 author := NewEVMBlockContext (block .Header (), bc .hc , nil ).Coinbase
29262927
29272928 // Run the stateless self-cross-validation
2928- crossStateRoot , crossReceiptRoot , _ , err := ExecuteStateless (bc .chainConfig , bc .vmConfig , task , witness , & author , bc .engine , diskdb )
2929+ crossStateRoot , crossReceiptRoot , _ , _ , err := ExecuteStateless (bc .chainConfig , bc .vmConfig , task , witness , & author , bc .engine , diskdb )
29292930 if err != nil {
29302931 return nil , fmt .Errorf ("stateless self-validation failed: %v" , err )
29312932 }
@@ -3658,15 +3659,15 @@ func (bc *BlockChain) SubscribeChain2HeadEvent(ch chan<- Chain2HeadEvent) event.
36583659}
36593660
36603661// ProcessBlockWithWitnesses processes a block in stateless mode using the provided witnesses.
3661- func (bc * BlockChain ) ProcessBlockWithWitnesses (block * types.Block , witness * stateless.Witness ) (* state.StateDB , error ) {
3662+ func (bc * BlockChain ) ProcessBlockWithWitnesses (block * types.Block , witness * stateless.Witness ) (* state.StateDB , * ProcessResult , error ) {
36623663 if witness == nil {
3663- return nil , errors .New ("nil witness" )
3664+ return nil , nil , errors .New ("nil witness" )
36643665 }
36653666
36663667 // Validate witness.
36673668 if err := stateless .ValidateWitnessPreState (witness , bc ); err != nil {
36683669 log .Error ("Witness validation failed during stateless processing" , "blockNumber" , block .Number (), "blockHash" , block .Hash (), "err" , err )
3669- return nil , fmt .Errorf ("witness validation failed: %w" , err )
3670+ return nil , nil , fmt .Errorf ("witness validation failed: %w" , err )
36703671 }
36713672
36723673 // Remove critical computed fields from the block to force true recalculation
@@ -3679,25 +3680,25 @@ func (bc *BlockChain) ProcessBlockWithWitnesses(block *types.Block, witness *sta
36793680 // Bor: Calculate EvmBlockContext with Root and ReceiptHash to properly get the author
36803681 author := NewEVMBlockContext (block .Header (), bc .hc , nil ).Coinbase
36813682
3682- crossStateRoot , crossReceiptRoot , statedb , err := ExecuteStateless (bc .chainConfig , bc .vmConfig , task , witness , & author , bc .engine , bc .statedb .TrieDB ().Disk ())
3683+ crossStateRoot , crossReceiptRoot , statedb , res , err := ExecuteStateless (bc .chainConfig , bc .vmConfig , task , witness , & author , bc .engine , bc .statedb .TrieDB ().Disk ())
36833684
36843685 // Currently, we don't return the error, because we don't have a way to handle Span update statelessly
36853686 // TODO: Return the error once we have a way to handle Span update
36863687 if err != nil {
36873688 log .Error ("Stateless self-validation failed" , "block" , block .Number (), "hash" , block .Hash (), "error" , err )
3688- return nil , err
3689+ return nil , nil , err
36893690 }
36903691 if crossStateRoot != block .Root () {
36913692 log .Error ("Stateless self-validation root mismatch" , "block" , block .Number (), "hash" , block .Hash (), "cross" , crossStateRoot , "local" , block .Root ())
36923693 err = fmt .Errorf ("stateless self-validation state root mismatch: remote %x != local %x" , block .Root (), crossStateRoot )
3693- return nil , err
3694+ return nil , nil , err
36943695 }
36953696 if crossReceiptRoot != block .ReceiptHash () {
36963697 log .Error ("Stateless self-validation receipt root mismatch" , "block" , block .Number (), "hash" , block .Hash (), "cross" , crossReceiptRoot , "local" , block .ReceiptHash ())
36973698 err = fmt .Errorf ("stateless self-validation receipt root mismatch: remote %x != local %x" , block .ReceiptHash (), crossReceiptRoot )
3698- return nil , err
3699+ return nil , nil , err
36993700 }
3700- return statedb , nil
3701+ return statedb , res , nil
37013702}
37023703
37033704// startHeaderVerificationLoop starts a background goroutine that periodically
0 commit comments