@@ -345,24 +345,19 @@ func (pre *Prestate) Apply(vmConfig vm.Config, chainConfig *params.ChainConfig,
345345 statedb .AddBalance (w .Address , amount )
346346 statedb .Witness ().TouchFullAccount (w .Address [:], true , math .MaxUint64 )
347347 }
348+
349+ var (
350+ verkleProof * verkle.Proof
351+ statelessProof * verkle.VerkleProof
352+ keys = statedb .Witness ().Keys ()
353+ proofTrie * trie.VerkleTrie
354+ )
348355 if chainConfig .IsVerkle (big .NewInt (int64 (pre .Env .Number )), pre .Env .Timestamp ) {
349356 if err := overlay .OverlayVerkleTransition (statedb , common.Hash {}, chainConfig .OverlayStride ); err != nil {
350357 return nil , nil , fmt .Errorf ("error performing the transition, err=%w" , err )
351358 }
352- }
353- // Commit block
354- root , err := statedb .Commit (vmContext .BlockNumber .Uint64 (), chainConfig .IsEIP158 (vmContext .BlockNumber ))
355- if err != nil {
356- return nil , nil , NewError (ErrorEVM , fmt .Errorf ("could not commit state: %v" , err ))
357- }
358359
359- // Add the witness to the execution result
360- var vktProof * verkle.VerkleProof
361- var vktStateDiff verkle.StateDiff
362- if chainConfig .IsVerkle (big .NewInt (int64 (pre .Env .Number )), pre .Env .Timestamp ) {
363- keys := statedb .Witness ().Keys ()
364360 if len (keys ) > 0 && vtrpre != nil {
365- var proofTrie * trie.VerkleTrie
366361 switch tr := statedb .GetTrie ().(type ) {
367362 case * trie.VerkleTrie :
368363 proofTrie = tr
@@ -371,18 +366,29 @@ func (pre *Prestate) Apply(vmConfig vm.Config, chainConfig *params.ChainConfig,
371366 default :
372367 return nil , nil , fmt .Errorf ("invalid tree type in proof generation: %v" , tr )
373368 }
374- proof , err := trie .Proof (vtrpre , proofTrie , keys , vtrpre .FlatdbNodeResolver )
369+ var err error
370+ verkleProof , err = trie .Proof (vtrpre , proofTrie , keys , vtrpre .FlatdbNodeResolver )
375371 if err != nil {
376372 return nil , nil , fmt .Errorf ("error generating verkle proof for block %d: %w" , pre .Env .Number , err )
377373 }
378- err = trie .AddPostValuesToProof (keys , proofTrie , proof )
379- if err != nil {
380- return nil , nil , fmt .Errorf ("error adding post values to proof: %w" , err )
381- }
382- vktProof , vktStateDiff , err = verkle .SerializeProof (proof )
383- if err != nil {
384- return nil , nil , fmt .Errorf ("error serializing proof: %w" , err )
385- }
374+ }
375+ }
376+ // Commit block
377+ root , err := statedb .Commit (vmContext .BlockNumber .Uint64 (), chainConfig .IsEIP158 (vmContext .BlockNumber ))
378+ if err != nil {
379+ return nil , nil , NewError (ErrorEVM , fmt .Errorf ("could not commit state: %v" , err ))
380+ }
381+
382+ // Add the witness to the execution result
383+ var statelessDiff verkle.StateDiff
384+ if chainConfig .IsVerkle (big .NewInt (int64 (pre .Env .Number )), pre .Env .Timestamp ) {
385+ err = trie .AddPostValuesToProof (keys , proofTrie , verkleProof )
386+ if err != nil {
387+ return nil , nil , fmt .Errorf ("error adding post values to proof: %w" , err )
388+ }
389+ statelessProof , statelessDiff , err = verkle .SerializeProof (verkleProof )
390+ if err != nil {
391+ return nil , nil , fmt .Errorf ("error serializing proof: %w" , err )
386392 }
387393 }
388394
@@ -397,8 +403,8 @@ func (pre *Prestate) Apply(vmConfig vm.Config, chainConfig *params.ChainConfig,
397403 Difficulty : (* math .HexOrDecimal256 )(vmContext .Difficulty ),
398404 GasUsed : (math .HexOrDecimal64 )(gasUsed ),
399405 BaseFee : (* math .HexOrDecimal256 )(vmContext .BaseFee ),
400- VerkleProof : vktProof ,
401- StateDiff : vktStateDiff ,
406+ VerkleProof : statelessProof ,
407+ StateDiff : statelessDiff ,
402408 ParentRoot : parentStateRoot ,
403409 }
404410 if pre .Env .Withdrawals != nil {
0 commit comments