@@ -7,15 +7,15 @@ import (
7
7
"slices"
8
8
"testing"
9
9
10
- firewood "github.com/ava-labs/firewood/ffi/v2 "
11
- "github.com/ethereum/go-ethereum /common"
12
- "github.com/ethereum/go-ethereum /core/rawdb"
13
- "github.com/ethereum/go-ethereum /core/state"
14
- "github.com/ethereum/go-ethereum /core/types"
15
- "github.com/ethereum/go-ethereum /crypto"
16
- "github.com/ethereum/go-ethereum /rlp"
17
- "github.com/ethereum/go-ethereum /trie/trienode"
18
- "github.com/ethereum/go-ethereum /triedb"
10
+ firewood "github.com/ava-labs/firewood-go /ffi"
11
+ "github.com/ava-labs/libevm /common"
12
+ "github.com/ava-labs/libevm /core/rawdb"
13
+ "github.com/ava-labs/libevm /core/state"
14
+ "github.com/ava-labs/libevm /core/types"
15
+ "github.com/ava-labs/libevm /crypto"
16
+ "github.com/ava-labs/libevm /rlp"
17
+ "github.com/ava-labs/libevm /trie/trienode"
18
+ "github.com/ava-labs/libevm /triedb"
19
19
"github.com/holiman/uint256"
20
20
"github.com/stretchr/testify/require"
21
21
)
@@ -43,11 +43,11 @@ func TestInsert(t *testing.T) {
43
43
storages := make ([]storageKey , 0 )
44
44
45
45
chooseAddr := func () common.Address {
46
- return addrs [rand .Intn (len (addrs ))]
46
+ return addrs [rand .Intn (len (addrs ))] //nolint:gosec
47
47
}
48
48
49
49
chooseStorage := func () storageKey {
50
- return storages [rand .Intn (len (storages ))]
50
+ return storages [rand .Intn (len (storages ))] //nolint:gosec
51
51
}
52
52
53
53
deleteStorage := func (k storageKey ) {
@@ -66,10 +66,10 @@ func TestInsert(t *testing.T) {
66
66
}
67
67
68
68
memdb := rawdb .NewMemoryDatabase ()
69
- tdb := state .NewDatabase ( triedb . NewDatabase ( memdb , triedb .HashDefaults ), nil )
69
+ tdb := state .NewDatabaseWithConfig ( memdb , triedb .HashDefaults )
70
70
ethRoot := types .EmptyRootHash
71
71
72
- for i := range 10_000 {
72
+ for i := range uint64 ( 10_000 ) {
73
73
tr , err := tdb .OpenTrie (ethRoot )
74
74
require .NoError (t , err )
75
75
mergeSet := trienode .NewMergedNodeSet ()
@@ -102,18 +102,24 @@ func TestInsert(t *testing.T) {
102
102
require .NoError (t , err )
103
103
deleteStorage (storageKey )
104
104
105
- strRoot , set := str .Commit (false )
105
+ strRoot , set , err := str .Commit (false )
106
+ require .NoError (t , err )
106
107
err = mergeSet .Merge (set )
107
108
require .NoError (t , err )
108
109
acc .Root = strRoot
109
- err = tr .UpdateAccount (storageKey .addr , acc , 0 )
110
+ err = tr .UpdateAccount (storageKey .addr , acc )
110
111
require .NoError (t , err )
111
112
112
113
fwKeys = append (fwKeys , append (accHash [:], keyHash [:]... ))
113
114
fwVals = append (fwVals , []byte {})
114
115
116
+ // We must also update the account (not for hash, but to be accurate)
117
+ fwKeys = append (fwKeys , accHash [:])
118
+ encodedVal , err := rlp .EncodeToBytes (acc )
119
+ require .NoError (t , err )
120
+ fwVals = append (fwVals , encodedVal )
115
121
case i % 4 == 0 : // add acc
116
- addr := common .BytesToAddress (hashData (binary .BigEndian .AppendUint64 (nil , uint64 ( i ) )).Bytes ())
122
+ addr := common .BytesToAddress (hashData (binary .BigEndian .AppendUint64 (nil , i )).Bytes ())
117
123
accHash := hashData (addr [:])
118
124
acc := & types.StateAccount {
119
125
Nonce : 1 ,
@@ -124,7 +130,7 @@ func TestInsert(t *testing.T) {
124
130
enc , err := rlp .EncodeToBytes (acc )
125
131
require .NoError (t , err )
126
132
127
- err = tr .UpdateAccount (addr , acc , 0 )
133
+ err = tr .UpdateAccount (addr , acc )
128
134
require .NoError (t , err )
129
135
addrs = append (addrs , addr )
130
136
@@ -139,18 +145,18 @@ func TestInsert(t *testing.T) {
139
145
enc , err := rlp .EncodeToBytes (acc )
140
146
require .NoError (t , err )
141
147
142
- err = tr .UpdateAccount (addr , acc , 0 )
148
+ err = tr .UpdateAccount (addr , acc )
143
149
require .NoError (t , err )
144
150
145
151
fwKeys = append (fwKeys , accHash [:])
146
152
fwVals = append (fwVals , enc )
147
153
case i % 4 == 2 : // add storage
148
154
addr := chooseAddr ()
149
155
accHash := hashData (addr [:])
150
- key := hashData (binary .BigEndian .AppendUint64 (nil , uint64 ( i ) ))
156
+ key := hashData (binary .BigEndian .AppendUint64 (nil , i ))
151
157
keyHash := hashData (key [:])
152
158
153
- val := hashData (binary .BigEndian .AppendUint64 (nil , uint64 ( i + 1 ) ))
159
+ val := hashData (binary .BigEndian .AppendUint64 (nil , i + 1 ))
154
160
storageKey := storageKey {addr : addr , key : key }
155
161
156
162
acc , err := tr .GetAccount (addr )
@@ -163,11 +169,12 @@ func TestInsert(t *testing.T) {
163
169
require .NoError (t , err )
164
170
storages = append (storages , storageKey )
165
171
166
- strRoot , set := str .Commit (false )
172
+ strRoot , set , err := str .Commit (false )
173
+ require .NoError (t , err )
167
174
err = mergeSet .Merge (set )
168
175
require .NoError (t , err )
169
176
acc .Root = strRoot
170
- err = tr .UpdateAccount (addr , acc , 0 )
177
+ err = tr .UpdateAccount (addr , acc )
171
178
require .NoError (t , err )
172
179
173
180
fwKeys = append (fwKeys , append (accHash [:], keyHash [:]... ))
@@ -176,12 +183,18 @@ func TestInsert(t *testing.T) {
176
183
encodedVal , err := rlp .EncodeToBytes (val [:])
177
184
require .NoError (t , err )
178
185
fwVals = append (fwVals , encodedVal )
186
+
187
+ // We must also update the account (not for hash, but to be accurate)
188
+ fwKeys = append (fwKeys , accHash [:])
189
+ encodedVal , err = rlp .EncodeToBytes (acc )
190
+ require .NoError (t , err )
191
+ fwVals = append (fwVals , encodedVal )
179
192
case i % 4 == 3 : // update storage
180
193
storageKey := chooseStorage ()
181
194
accHash := hashData (storageKey .addr [:])
182
195
keyHash := hashData (storageKey .key [:])
183
196
184
- val := hashData (binary .BigEndian .AppendUint64 (nil , uint64 ( i + 1 ) ))
197
+ val := hashData (binary .BigEndian .AppendUint64 (nil , i + 1 ))
185
198
186
199
acc , err := tr .GetAccount (storageKey .addr )
187
200
require .NoError (t , err )
@@ -192,11 +205,12 @@ func TestInsert(t *testing.T) {
192
205
err = str .UpdateStorage (storageKey .addr , storageKey .key [:], val [:])
193
206
require .NoError (t , err )
194
207
195
- strRoot , set := str .Commit (false )
208
+ strRoot , set , err := str .Commit (false )
209
+ require .NoError (t , err )
196
210
err = mergeSet .Merge (set )
197
211
require .NoError (t , err )
198
212
acc .Root = strRoot
199
- err = tr .UpdateAccount (storageKey .addr , acc , 0 )
213
+ err = tr .UpdateAccount (storageKey .addr , acc )
200
214
require .NoError (t , err )
201
215
202
216
fwKeys = append (fwKeys , append (accHash [:], keyHash [:]... ))
@@ -205,12 +219,19 @@ func TestInsert(t *testing.T) {
205
219
encodedVal , err := rlp .EncodeToBytes (val [:])
206
220
require .NoError (t , err )
207
221
fwVals = append (fwVals , encodedVal )
222
+
223
+ // We must also update the account (not for hash, but to be accurate)
224
+ fwKeys = append (fwKeys , accHash [:])
225
+ encodedVal , err = rlp .EncodeToBytes (acc )
226
+ require .NoError (t , err )
227
+ fwVals = append (fwVals , encodedVal )
208
228
}
209
- next , set := tr .Commit (true )
229
+ next , set , err := tr .Commit (true )
230
+ require .NoError (t , err )
210
231
err = mergeSet .Merge (set )
211
232
require .NoError (t , err )
212
233
213
- err = tdb .TrieDB ().Update (next , ethRoot , uint64 ( i ) , mergeSet , nil )
234
+ err = tdb .TrieDB ().Update (next , ethRoot , i , mergeSet , nil )
214
235
require .NoError (t , err )
215
236
216
237
// update firewood db
0 commit comments