@@ -220,35 +220,45 @@ func verifyState(ctx *cli.Context) error {
220
220
triedb := utils .MakeTrieDatabase (ctx , chaindb , false , true , false )
221
221
defer triedb .Close ()
222
222
223
- snapConfig := snapshot.Config {
224
- CacheSize : 256 ,
225
- Recovery : false ,
226
- NoBuild : true ,
227
- AsyncBuild : false ,
228
- }
229
- snaptree , err := snapshot .New (snapConfig , chaindb , triedb , headBlock .Root ())
230
- if err != nil {
231
- log .Error ("Failed to open snapshot tree" , "err" , err )
232
- return err
233
- }
234
- if ctx .NArg () > 1 {
235
- log .Error ("Too many arguments given" )
236
- return errors .New ("too many arguments" )
237
- }
238
- var root = headBlock .Root ()
223
+ var (
224
+ err error
225
+ root = headBlock .Root ()
226
+ )
239
227
if ctx .NArg () == 1 {
240
228
root , err = parseRoot (ctx .Args ().First ())
241
229
if err != nil {
242
230
log .Error ("Failed to resolve state root" , "err" , err )
243
231
return err
244
232
}
245
233
}
246
- if err := snaptree .Verify (root ); err != nil {
247
- log .Error ("Failed to verify state" , "root" , root , "err" , err )
248
- return err
234
+ if triedb .Scheme () == rawdb .PathScheme {
235
+ if err := triedb .VerifyState (root ); err != nil {
236
+ log .Error ("Failed to verify state" , "root" , root , "err" , err )
237
+ return err
238
+ }
239
+ log .Info ("Verified the state" , "root" , root )
240
+
241
+ // TODO(rjl493456442) implement dangling checks in pathdb.
242
+ return nil
243
+ } else {
244
+ snapConfig := snapshot.Config {
245
+ CacheSize : 256 ,
246
+ Recovery : false ,
247
+ NoBuild : true ,
248
+ AsyncBuild : false ,
249
+ }
250
+ snaptree , err := snapshot .New (snapConfig , chaindb , triedb , headBlock .Root ())
251
+ if err != nil {
252
+ log .Error ("Failed to open snapshot tree" , "err" , err )
253
+ return err
254
+ }
255
+ if err := snaptree .Verify (root ); err != nil {
256
+ log .Error ("Failed to verify state" , "root" , root , "err" , err )
257
+ return err
258
+ }
259
+ log .Info ("Verified the state" , "root" , root )
260
+ return snapshot .CheckDanglingStorage (chaindb )
249
261
}
250
- log .Info ("Verified the state" , "root" , root )
251
- return snapshot .CheckDanglingStorage (chaindb )
252
262
}
253
263
254
264
// checkDanglingStorage iterates the snap storage data, and verifies that all
0 commit comments