@@ -40,6 +40,7 @@ import (
40
40
"github.com/ledgerwatch/erigon/core/state"
41
41
"github.com/ledgerwatch/erigon/core/types"
42
42
"github.com/ledgerwatch/erigon/crypto"
43
+ "github.com/ledgerwatch/erigon/eth/ethconfig"
43
44
"github.com/ledgerwatch/erigon/params"
44
45
"github.com/ledgerwatch/erigon/params/networkname"
45
46
"github.com/ledgerwatch/erigon/turbo/trie"
@@ -175,31 +176,40 @@ func WriteGenesisState(g *types.Genesis, tx kv.RwTx, tmpDir string) (*types.Bloc
175
176
if err != nil {
176
177
return nil , nil , err
177
178
}
178
- for addr , account := range g .Alloc {
179
- if len (account .Code ) > 0 || len (account .Storage ) > 0 {
180
- // Special case for weird tests - inaccessible storage
181
- var b [8 ]byte
182
- binary .BigEndian .PutUint64 (b [:], state .FirstContractIncarnation )
183
- if err := tx .Put (kv .IncarnationMap , addr [:], b [:]); err != nil {
184
- return nil , nil , err
179
+ var stateWriter state.StateWriter
180
+ if ethconfig .EnableHistoryV4InTest {
181
+ panic ("implement me" )
182
+ //tx.(*temporal.Tx).Agg().SetTxNum(0)
183
+ //stateWriter = state.NewWriterV4(tx.(kv.TemporalTx))
184
+ //defer tx.(*temporal.Tx).Agg().StartUnbufferedWrites().FinishWrites()
185
+ } else {
186
+ for addr , account := range g .Alloc {
187
+ if len (account .Code ) > 0 || len (account .Storage ) > 0 {
188
+ // Special case for weird tests - inaccessible storage
189
+ var b [8 ]byte
190
+ binary .BigEndian .PutUint64 (b [:], state .FirstContractIncarnation )
191
+ if err := tx .Put (kv .IncarnationMap , addr [:], b [:]); err != nil {
192
+ return nil , nil , err
193
+ }
185
194
}
186
195
}
196
+ stateWriter = state .NewPlainStateWriter (tx , tx , 0 )
187
197
}
188
198
189
199
if block .Number ().Sign () != 0 {
190
200
return nil , statedb , fmt .Errorf ("can't commit genesis block with number > 0" )
191
201
}
192
202
193
- blockWriter := state .NewPlainStateWriter (tx , tx , 0 )
194
-
195
- if err := statedb .CommitBlock (& chain.Rules {}, blockWriter ); err != nil {
203
+ if err := statedb .CommitBlock (& chain.Rules {}, stateWriter ); err != nil {
196
204
return nil , statedb , fmt .Errorf ("cannot write state: %w" , err )
197
205
}
198
- if err := blockWriter .WriteChangeSets (); err != nil {
199
- return nil , statedb , fmt .Errorf ("cannot write change sets: %w" , err )
200
- }
201
- if err := blockWriter .WriteHistory (); err != nil {
202
- return nil , statedb , fmt .Errorf ("cannot write history: %w" , err )
206
+ if csw , ok := stateWriter .(state.WriterWithChangeSets ); ok {
207
+ if err := csw .WriteChangeSets (); err != nil {
208
+ return nil , statedb , fmt .Errorf ("cannot write change sets: %w" , err )
209
+ }
210
+ if err := csw .WriteHistory (); err != nil {
211
+ return nil , statedb , fmt .Errorf ("cannot write history: %w" , err )
212
+ }
203
213
}
204
214
return block , statedb , nil
205
215
}
0 commit comments