github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/iavl/nodedb_version.go (about) 1 package iavl 2 3 import ( 4 "fmt" 5 "strconv" 6 "strings" 7 8 dbm "github.com/fibonacci-chain/fbc/libs/tm-db" 9 ) 10 11 // IsFastStorageStrategy check the db is FSS 12 func IsFastStorageStrategy(db dbm.DB) bool { 13 ndb := &nodeDB{ 14 db: db, 15 } 16 if ndb.getLatestVersion() <= genesisVersion { 17 return true 18 } 19 storeVersion, err := db.Get(metadataKeyFormat.Key([]byte(storageVersionKey))) 20 if err != nil || storeVersion == nil { 21 storeVersion = []byte(defaultStorageVersionValue) 22 } 23 ndb.storageVersion = string(storeVersion) 24 25 return ndb.hasUpgradedToFastStorage() && !ndb.shouldForceFastStorageUpgrade() 26 } 27 28 func GetFastStorageVersion(db dbm.DB) (int64, error) { 29 storeVersion, err := db.Get(metadataKeyFormat.Key([]byte(storageVersionKey))) 30 if err != nil { 31 return 0, err 32 } 33 versions := strings.Split(string(storeVersion), fastStorageVersionDelimiter) 34 35 if len(versions) != 2 { 36 return 0, fmt.Errorf("error fast storage version format") 37 } 38 39 return strconv.ParseInt(versions[1], 10, 64) 40 }