@@ -78,22 +78,21 @@ Remove blockchain and state databases`,
7878 dbCompactCmd ,
7979 dbGetCmd ,
8080 dbDeleteCmd ,
81- dbDeleteTrieStateCmd ,
82- dbInspectTrieCmd ,
8381 dbPutCmd ,
8482 dbGetSlotsCmd ,
8583 dbDumpFreezerIndex ,
8684 dbImportCmd ,
8785 dbExportCmd ,
8886 dbMetadataCmd ,
89- ancientInspectCmd ,
90- // no legacy stored receipts for bsc
91- // dbMigrateFreezerCmd,
9287 dbCheckStateContentCmd ,
93- dbHbss2PbssCmd ,
88+ dbInspectHistoryCmd ,
89+
90+ // only defined in bsc
91+ dbInspectTrieCmd ,
9492 dbTrieGetCmd ,
9593 dbTrieDeleteCmd ,
96- dbInspectHistoryCmd ,
94+ dbDeleteTrieStateCmd ,
95+ ancientInspectCmd ,
9796 },
9897 }
9998 dbInspectCmd = & cli.Command {
@@ -125,19 +124,6 @@ Remove blockchain and state databases`,
125124For each trie node encountered, it checks that the key corresponds to the keccak256(value). If this is not true, this indicates
126125a data corruption.` ,
127126 }
128- dbHbss2PbssCmd = & cli.Command {
129- Action : hbss2pbss ,
130- Name : "hbss-to-pbss" ,
131- ArgsUsage : "<jobnum (optional)>" ,
132- Flags : []cli.Flag {
133- utils .DataDirFlag ,
134- utils .SyncModeFlag ,
135- utils .ForceFlag ,
136- utils .AncientFlag ,
137- },
138- Usage : "Convert Hash-Base to Path-Base trie node." ,
139- Description : `This command iterates the entire trie node database and convert the hash-base node to path-base node.` ,
140- }
141127 dbTrieGetCmd = & cli.Command {
142128 Action : dbTrieGet ,
143129 Name : "trie-get" ,
@@ -1201,112 +1187,6 @@ func showMetaData(ctx *cli.Context) error {
12011187 return nil
12021188}
12031189
1204- func hbss2pbss (ctx * cli.Context ) error {
1205- if ctx .NArg () > 1 {
1206- return fmt .Errorf ("required arguments: %v" , ctx .Command .ArgsUsage )
1207- }
1208-
1209- var jobnum uint64
1210- var err error
1211- if ctx .NArg () == 1 {
1212- jobnum , err = strconv .ParseUint (ctx .Args ().Get (0 ), 10 , 64 )
1213- if err != nil {
1214- return fmt .Errorf ("failed to Parse jobnum, Args[1]: %v, err: %v" , ctx .Args ().Get (1 ), err )
1215- }
1216- } else {
1217- // by default
1218- jobnum = 1000
1219- }
1220-
1221- force := ctx .Bool (utils .ForceFlag .Name )
1222-
1223- stack , _ := makeConfigNode (ctx )
1224- defer stack .Close ()
1225-
1226- db := utils .MakeChainDatabase (ctx , stack , false )
1227- db .SyncAncient ()
1228- defer db .Close ()
1229-
1230- // convert hbss trie node to pbss trie node
1231- var lastStateID uint64
1232- lastStateID = rawdb .ReadPersistentStateID (db .GetStateStore ())
1233- if lastStateID == 0 || force {
1234- config := triedb .HashDefaults
1235- triedb := triedb .NewDatabase (db , config )
1236- triedb .Cap (0 )
1237- log .Info ("hbss2pbss triedb" , "scheme" , triedb .Scheme ())
1238- defer triedb .Close ()
1239-
1240- headerHash := rawdb .ReadHeadHeaderHash (db )
1241- blockNumber := rawdb .ReadHeaderNumber (db , headerHash )
1242- if blockNumber == nil {
1243- log .Error ("read header number failed." )
1244- return fmt .Errorf ("read header number failed" )
1245- }
1246-
1247- log .Info ("hbss2pbss converting" , "HeaderHash: " , headerHash .String (), ", blockNumber: " , * blockNumber )
1248-
1249- var headerBlockHash common.Hash
1250- var trieRootHash common.Hash
1251-
1252- if * blockNumber != math .MaxUint64 {
1253- headerBlockHash = rawdb .ReadCanonicalHash (db , * blockNumber )
1254- if headerBlockHash == (common.Hash {}) {
1255- return errors .New ("ReadHeadBlockHash empty hash" )
1256- }
1257- blockHeader := rawdb .ReadHeader (db , headerBlockHash , * blockNumber )
1258- trieRootHash = blockHeader .Root
1259- fmt .Println ("Canonical Hash: " , headerBlockHash .String (), ", TrieRootHash: " , trieRootHash .String ())
1260- }
1261- if (trieRootHash == common.Hash {}) {
1262- log .Error ("Empty root hash" )
1263- return errors .New ("Empty root hash." )
1264- }
1265-
1266- id := trie .StateTrieID (trieRootHash )
1267- theTrie , err := trie .New (id , triedb )
1268- if err != nil {
1269- log .Error ("fail to new trie tree" , "err" , err , "rootHash" , err , trieRootHash .String ())
1270- return err
1271- }
1272-
1273- h2p , err := trie .NewHbss2Pbss (theTrie , triedb , trieRootHash , * blockNumber , jobnum )
1274- if err != nil {
1275- log .Error ("fail to new hash2pbss" , "err" , err , "rootHash" , err , trieRootHash .String ())
1276- return err
1277- }
1278- h2p .Run ()
1279- } else {
1280- log .Info ("Convert hbss to pbss success. Nothing to do." )
1281- }
1282-
1283- lastStateID = rawdb .ReadPersistentStateID (db .GetStateStore ())
1284-
1285- if lastStateID == 0 {
1286- log .Error ("Convert hbss to pbss trie node error. The last state id is still 0" )
1287- }
1288-
1289- var ancient string
1290- if db .HasSeparateStateStore () {
1291- dirName := filepath .Join (stack .ResolvePath ("chaindata" ), "state" )
1292- ancient = filepath .Join (dirName , "ancient" )
1293- } else {
1294- ancient = stack .ResolveAncient ("chaindata" , ctx .String (utils .AncientFlag .Name ))
1295- }
1296- err = rawdb .ResetStateFreezerTableOffset (ancient , lastStateID )
1297- if err != nil {
1298- log .Error ("Reset state freezer table offset failed" , "error" , err )
1299- return err
1300- }
1301- // prune hbss trie node
1302- err = rawdb .PruneHashTrieNodeInDataBase (db .GetStateStore ())
1303- if err != nil {
1304- log .Error ("Prune Hash trie node in database failed" , "error" , err )
1305- return err
1306- }
1307- return nil
1308- }
1309-
13101190func inspectAccount (db * triedb.Database , start uint64 , end uint64 , address common.Address , raw bool ) error {
13111191 stats , err := db .AccountHistory (address , start , end )
13121192 if err != nil {
0 commit comments