@@ -134,14 +134,21 @@ func PrepareRecording(blockchain *core.BlockChain, lastBlockHeader *types.Header
134
134
rawTrie := blockchain .StateCache ().TrieDB ()
135
135
recordingKeyValue := NewRecordingKV (rawTrie )
136
136
recordingStateDatabase := state .NewDatabase (rawdb .NewDatabase (recordingKeyValue ))
137
- recordingStateDb , err := state .New (lastBlockHeader .Root , recordingStateDatabase , nil )
137
+ var prevRoot common.Hash
138
+ if lastBlockHeader != nil {
139
+ prevRoot = lastBlockHeader .Root
140
+ }
141
+ recordingStateDb , err := state .New (prevRoot , recordingStateDatabase , nil )
138
142
if err != nil {
139
143
return nil , nil , nil , fmt .Errorf ("failed to create recordingStateDb: %w" , err )
140
144
}
141
- if ! lastBlockHeader .Number .IsUint64 () {
142
- return nil , nil , nil , errors .New ("block number not uint64" )
145
+ var recordingChainContext * RecordingChainContext
146
+ if lastBlockHeader != nil {
147
+ if ! lastBlockHeader .Number .IsUint64 () {
148
+ return nil , nil , nil , errors .New ("block number not uint64" )
149
+ }
150
+ recordingChainContext = NewRecordingChainContext (blockchain , lastBlockHeader .Number .Uint64 ())
143
151
}
144
- recordingChainContext := NewRecordingChainContext (blockchain , lastBlockHeader .Number .Uint64 ())
145
152
return recordingStateDb , recordingChainContext , recordingKeyValue , nil
146
153
}
147
154
0 commit comments