feat: replace the cosmos-db.DB interface with core/store interface (#21450)

This commit is contained in:
cool-developer
2024-08-30 21:25:25 +00:00
committed by GitHub
parent f843f1a478
commit ce4fb98cb8
119 changed files with 553 additions and 550 deletions
+5 -6
View File
@@ -13,11 +13,10 @@ import (
"cosmossdk.io/store/cachekv"
iavlstore "cosmossdk.io/store/iavl"
"cosmossdk.io/store/types"
"cosmossdk.io/store/wrapper"
)
func TestGetOrSetStoreCache(t *testing.T) {
db := wrapper.NewDBWrapper(dbm.NewMemDB())
db := dbm.NewMemDB()
mngr := cache.NewCommitKVStoreCacheManager(cache.DefaultCommitKVStoreCacheSize)
sKey := types.NewKVStoreKey("test")
@@ -30,7 +29,7 @@ func TestGetOrSetStoreCache(t *testing.T) {
}
func TestUnwrap(t *testing.T) {
db := wrapper.NewDBWrapper(dbm.NewMemDB())
db := dbm.NewMemDB()
mngr := cache.NewCommitKVStoreCacheManager(cache.DefaultCommitKVStoreCacheSize)
sKey := types.NewKVStoreKey("test")
@@ -43,7 +42,7 @@ func TestUnwrap(t *testing.T) {
}
func TestStoreCache(t *testing.T) {
db := wrapper.NewDBWrapper(dbm.NewMemDB())
db := dbm.NewMemDB()
mngr := cache.NewCommitKVStoreCacheManager(cache.DefaultCommitKVStoreCacheSize)
sKey := types.NewKVStoreKey("test")
@@ -69,7 +68,7 @@ func TestStoreCache(t *testing.T) {
}
func TestReset(t *testing.T) {
db := wrapper.NewDBWrapper(dbm.NewMemDB())
db := dbm.NewMemDB()
mngr := cache.NewCommitKVStoreCacheManager(cache.DefaultCommitKVStoreCacheSize)
sKey := types.NewKVStoreKey("test")
@@ -89,7 +88,7 @@ func TestReset(t *testing.T) {
}
func TestCacheWrap(t *testing.T) {
db := wrapper.NewDBWrapper(dbm.NewMemDB())
db := dbm.NewMemDB()
mngr := cache.NewCommitKVStoreCacheManager(cache.DefaultCommitKVStoreCacheSize)
sKey := types.NewKVStoreKey("test")
+7 -6
View File
@@ -7,6 +7,7 @@ import (
dbm "github.com/cosmos/cosmos-db"
"github.com/stretchr/testify/require"
corestore "cosmossdk.io/core/store"
"cosmossdk.io/math/unsafe"
"cosmossdk.io/store/cachekv"
"cosmossdk.io/store/dbadapter"
@@ -465,7 +466,7 @@ func randInt(n int) int {
}
// useful for replaying a error case if we find one
func doOp(t *testing.T, st types.CacheKVStore, truth dbm.DB, op int, args ...int) {
func doOp(t *testing.T, st types.CacheKVStore, truth corestore.KVStoreWithBatch, op int, args ...int) {
t.Helper()
switch op {
case opSet:
@@ -491,7 +492,7 @@ func doOp(t *testing.T, st types.CacheKVStore, truth dbm.DB, op int, args ...int
}
}
func doRandomOp(t *testing.T, st types.CacheKVStore, truth dbm.DB, maxKey int) {
func doRandomOp(t *testing.T, st types.CacheKVStore, truth corestore.KVStoreWithBatch, maxKey int) {
t.Helper()
r := randInt(totalOps)
switch r {
@@ -535,7 +536,7 @@ func assertIterateDomain(t *testing.T, st types.KVStore, expectedN int) {
require.NoError(t, itr.Close())
}
func assertIterateDomainCheck(t *testing.T, st types.KVStore, mem dbm.DB, r []keyRange) {
func assertIterateDomainCheck(t *testing.T, st types.KVStore, mem corestore.KVStoreWithBatch, r []keyRange) {
t.Helper()
// iterate over each and check they match the other
itr := st.Iterator(nil, nil)
@@ -569,7 +570,7 @@ func assertIterateDomainCheck(t *testing.T, st types.KVStore, mem dbm.DB, r []ke
require.NoError(t, itr2.Close())
}
func assertIterateDomainCompare(t *testing.T, st types.KVStore, mem dbm.DB) {
func assertIterateDomainCompare(t *testing.T, st types.KVStore, mem corestore.KVStoreWithBatch) {
t.Helper()
// iterate over each and check they match the other
itr := st.Iterator(nil, nil)
@@ -597,7 +598,7 @@ func checkIterators(t *testing.T, itr, itr2 types.Iterator) {
//--------------------------------------------------------
func setRange(t *testing.T, st types.KVStore, mem dbm.DB, start, end int) {
func setRange(t *testing.T, st types.KVStore, mem corestore.KVStoreWithBatch, start, end int) {
t.Helper()
for i := start; i < end; i++ {
st.Set(keyFmt(i), valFmt(i))
@@ -606,7 +607,7 @@ func setRange(t *testing.T, st types.KVStore, mem dbm.DB, start, end int) {
}
}
func deleteRange(t *testing.T, st types.KVStore, mem dbm.DB, start, end int) {
func deleteRange(t *testing.T, st types.KVStore, mem corestore.KVStoreWithBatch, start, end int) {
t.Helper()
for i := start; i < end; i++ {
st.Delete(keyFmt(i))
+2 -3
View File
@@ -4,8 +4,7 @@ import (
"fmt"
"io"
dbm "github.com/cosmos/cosmos-db"
corestore "cosmossdk.io/core/store"
"cosmossdk.io/store/cachekv"
"cosmossdk.io/store/dbadapter"
"cosmossdk.io/store/tracekv"
@@ -66,7 +65,7 @@ func NewFromKVStore(
// NewStore creates a new Store object from a mapping of store keys to
// CacheWrapper objects. Each CacheWrapper store is a branched store.
func NewStore(
db dbm.DB, stores map[types.StoreKey]types.CacheWrapper, keys map[string]types.StoreKey,
db corestore.KVStoreWithBatch, stores map[types.StoreKey]types.CacheWrapper, keys map[string]types.StoreKey,
traceWriter io.Writer, traceContext types.TraceContext,
) Store {
return NewFromKVStore(dbadapter.Store{DB: db}, stores, keys, traceWriter, traceContext)
+4 -5
View File
@@ -3,16 +3,15 @@ package dbadapter
import (
"io"
dbm "github.com/cosmos/cosmos-db"
corestore "cosmossdk.io/core/store"
"cosmossdk.io/store/cachekv"
"cosmossdk.io/store/tracekv"
"cosmossdk.io/store/types"
)
// Store is wrapper type for dbm.Db with implementation of KVStore
// Store is wrapper type for corestore.KVStoreWithBatch with implementation of KVStore
type Store struct {
dbm.DB
DB corestore.KVStoreWithBatch
}
// Get wraps the underlying DB's Get method panicking on error.
@@ -86,5 +85,5 @@ func (dsa Store) CacheWrapWithTrace(w io.Writer, tc types.TraceContext) types.Ca
return cachekv.NewStore(tracekv.NewStore(dsa, w, tc))
}
// dbm.DB implements KVStore so we can CacheKVStore it.
// corestore.KVStoreWithBatch implements KVStore so we can CacheKVStore it.
var _ types.KVStore = Store{}
+3 -2
View File
@@ -3,15 +3,16 @@ module cosmossdk.io/store
go 1.22.2
require (
cosmossdk.io/core v0.12.1-0.20240813134434-072a29c838a5
cosmossdk.io/errors v1.0.1
cosmossdk.io/log v1.4.1
cosmossdk.io/math v1.3.0
github.com/cometbft/cometbft v1.0.0-rc1
github.com/cometbft/cometbft/api v1.0.0-rc.1
github.com/cosmos/cosmos-db v1.0.2
github.com/cosmos/cosmos-db v1.0.3-0.20240829004618-717cba019b33
github.com/cosmos/cosmos-proto v1.0.0-beta.5
github.com/cosmos/gogoproto v1.7.0
github.com/cosmos/iavl v1.2.1-0.20240725141113-7adc688cf179
github.com/cosmos/iavl v1.0.0-beta.1.0.20240813194616-eb5078efcf9e
github.com/cosmos/ics23/go v0.11.0
github.com/golang/mock v1.6.0
github.com/hashicorp/go-hclog v1.6.3
+8 -4
View File
@@ -1,3 +1,5 @@
cosmossdk.io/core v0.12.1-0.20240813134434-072a29c838a5 h1:aIfrfJUronk2qHPH4N7M5nGzijdSWkRwHHqqPGnQBrk=
cosmossdk.io/core v0.12.1-0.20240813134434-072a29c838a5/go.mod h1:B8JQN1vmGCPSVFlmRb/22n1T736P4C2qfEsrSKDX1iM=
cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0=
cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U=
cosmossdk.io/log v1.4.1 h1:wKdjfDRbDyZRuWa8M+9nuvpVYxrEOwbD/CA8hvhU8QM=
@@ -39,14 +41,14 @@ github.com/cometbft/cometbft v1.0.0-rc1/go.mod h1:64cB2wvltmK5plHlJFLYOZYGsaTKNW
github.com/cometbft/cometbft/api v1.0.0-rc.1 h1:GtdXwDGlqwHYs16A4egjwylfYOMYyEacLBrs3Zvpt7g=
github.com/cometbft/cometbft/api v1.0.0-rc.1/go.mod h1:NDFKiBBD8HJC6QQLAoUI99YhsiRZtg2+FJWfk6A6m6o=
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
github.com/cosmos/cosmos-db v1.0.2 h1:hwMjozuY1OlJs/uh6vddqnk9j7VamLv+0DBlbEXbAKs=
github.com/cosmos/cosmos-db v1.0.2/go.mod h1:Z8IXcFJ9PqKK6BIsVOB3QXtkKoqUOp1vRvPT39kOXEA=
github.com/cosmos/cosmos-db v1.0.3-0.20240829004618-717cba019b33 h1:NnqmEOIzUPazzBrhGenzI1AQCBtJ0Hbnb/DDoykpko0=
github.com/cosmos/cosmos-db v1.0.3-0.20240829004618-717cba019b33/go.mod h1:Z8IXcFJ9PqKK6BIsVOB3QXtkKoqUOp1vRvPT39kOXEA=
github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA=
github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec=
github.com/cosmos/gogoproto v1.7.0 h1:79USr0oyXAbxg3rspGh/m4SWNyoz/GLaAh0QlCe2fro=
github.com/cosmos/gogoproto v1.7.0/go.mod h1:yWChEv5IUEYURQasfyBW5ffkMHR/90hiHgbNgrtp4j0=
github.com/cosmos/iavl v1.2.1-0.20240725141113-7adc688cf179 h1:wmwDn7V3RodN9auB3FooSQxs46nHVE3u0mb87TJkZFE=
github.com/cosmos/iavl v1.2.1-0.20240725141113-7adc688cf179/go.mod h1:GiM43q0pB+uG53mLxLDzimxM9l/5N9UuSY3/D0huuVw=
github.com/cosmos/iavl v1.0.0-beta.1.0.20240813194616-eb5078efcf9e h1:LEii0v/FxtXa/F7mRn+tijZ0zaXBPn2ZkKwb6Qm4rqE=
github.com/cosmos/iavl v1.0.0-beta.1.0.20240813194616-eb5078efcf9e/go.mod h1:3ywr0wDnWeD7MUH6qu50wZ5bxuKH3LBrGG4/lZX8lVY=
github.com/cosmos/ics23/go v0.11.0 h1:jk5skjT0TqX5e5QJbEnwXIS2yI2vnmLOgpQPeM5RtnU=
github.com/cosmos/ics23/go v0.11.0/go.mod h1:A8OjxPE67hHST4Icw94hOxxFEJMBG031xIGF/JHNIY0=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
@@ -234,6 +236,8 @@ github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqri
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU=
go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc=
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+4 -5
View File
@@ -6,10 +6,10 @@ import (
"io"
cmtprotocrypto "github.com/cometbft/cometbft/api/cometbft/crypto/v1"
dbm "github.com/cosmos/cosmos-db"
"github.com/cosmos/iavl"
ics23 "github.com/cosmos/ics23/go"
corestore "cosmossdk.io/core/store"
errorsmod "cosmossdk.io/errors"
"cosmossdk.io/store/cachekv"
"cosmossdk.io/store/internal/kv"
@@ -17,7 +17,6 @@ import (
pruningtypes "cosmossdk.io/store/pruning/types"
"cosmossdk.io/store/tracekv"
"cosmossdk.io/store/types"
"cosmossdk.io/store/wrapper"
)
const (
@@ -43,7 +42,7 @@ type Store struct {
// LoadStore returns an IAVL Store as a CommitKVStore. Internally, it will load the
// store's version (id) from the provided DB. An error is returned if the version
// fails to load, or if called with a positive version on an empty tree.
func LoadStore(db dbm.DB, logger types.Logger, key types.StoreKey, id types.CommitID, cacheSize int, disableFastNode bool, metrics metrics.StoreMetrics) (types.CommitKVStore, error) {
func LoadStore(db corestore.KVStoreWithBatch, logger types.Logger, key types.StoreKey, id types.CommitID, cacheSize int, disableFastNode bool, metrics metrics.StoreMetrics) (types.CommitKVStore, error) {
return LoadStoreWithInitialVersion(db, logger, key, id, 0, cacheSize, disableFastNode, metrics)
}
@@ -51,8 +50,8 @@ func LoadStore(db dbm.DB, logger types.Logger, key types.StoreKey, id types.Comm
// to the one given. Internally, it will load the store's version (id) from the
// provided DB. An error is returned if the version fails to load, or if called with a positive
// version on an empty tree.
func LoadStoreWithInitialVersion(db dbm.DB, logger types.Logger, key types.StoreKey, id types.CommitID, initialVersion uint64, cacheSize int, disableFastNode bool, metrics metrics.StoreMetrics) (types.CommitKVStore, error) {
tree := iavl.NewMutableTree(wrapper.NewDBWrapper(db), cacheSize, disableFastNode, logger, iavl.InitialVersionOption(initialVersion), iavl.AsyncPruningOption(true))
func LoadStoreWithInitialVersion(db corestore.KVStoreWithBatch, logger types.Logger, key types.StoreKey, id types.CommitID, initialVersion uint64, cacheSize int, disableFastNode bool, metrics metrics.StoreMetrics) (types.CommitKVStore, error) {
tree := iavl.NewMutableTree(db, cacheSize, disableFastNode, logger, iavl.InitialVersionOption(initialVersion), iavl.AsyncPruningOption(true))
isUpgradeable, err := tree.IsUpgradeable()
if err != nil {
+12 -12
View File
@@ -12,12 +12,12 @@ import (
"github.com/cosmos/iavl"
"github.com/stretchr/testify/require"
corestore "cosmossdk.io/core/store"
"cosmossdk.io/log"
"cosmossdk.io/store/cachekv"
"cosmossdk.io/store/internal/kv"
"cosmossdk.io/store/metrics"
"cosmossdk.io/store/types"
"cosmossdk.io/store/wrapper"
)
var (
@@ -36,9 +36,9 @@ func randBytes(numBytes int) []byte {
}
// make a tree with data from above and save it
func newAlohaTree(t *testing.T, db dbm.DB) (*iavl.MutableTree, types.CommitID) {
func newAlohaTree(t *testing.T, db corestore.KVStoreWithBatch) (*iavl.MutableTree, types.CommitID) {
t.Helper()
tree := iavl.NewMutableTree(wrapper.NewDBWrapper(db), cacheSize, false, log.NewNopLogger())
tree := iavl.NewMutableTree(db, cacheSize, false, log.NewNopLogger())
for k, v := range treeData {
_, err := tree.Set([]byte(k), []byte(v))
@@ -286,7 +286,7 @@ func TestIAVLIterator(t *testing.T) {
}
func TestIAVLReverseIterator(t *testing.T) {
db := wrapper.NewDBWrapper(dbm.NewMemDB())
db := dbm.NewMemDB()
tree := iavl.NewMutableTree(db, cacheSize, false, log.NewNopLogger())
@@ -320,7 +320,7 @@ func TestIAVLReverseIterator(t *testing.T) {
}
func TestIAVLPrefixIterator(t *testing.T) {
db := wrapper.NewDBWrapper(dbm.NewMemDB())
db := dbm.NewMemDB()
tree := iavl.NewMutableTree(db, cacheSize, false, log.NewNopLogger())
iavlStore := UnsafeNewStore(tree)
@@ -383,7 +383,7 @@ func TestIAVLPrefixIterator(t *testing.T) {
}
func TestIAVLReversePrefixIterator(t *testing.T) {
db := wrapper.NewDBWrapper(dbm.NewMemDB())
db := dbm.NewMemDB()
tree := iavl.NewMutableTree(db, cacheSize, false, log.NewNopLogger())
iavlStore := UnsafeNewStore(tree)
@@ -450,7 +450,7 @@ func nextVersion(iavl *Store) {
}
func TestIAVLNoPrune(t *testing.T) {
db := wrapper.NewDBWrapper(dbm.NewMemDB())
db := dbm.NewMemDB()
tree := iavl.NewMutableTree(db, cacheSize, false, log.NewNopLogger())
iavlStore := UnsafeNewStore(tree)
@@ -468,7 +468,7 @@ func TestIAVLNoPrune(t *testing.T) {
}
func TestIAVLStoreQuery(t *testing.T) {
db := wrapper.NewDBWrapper(dbm.NewMemDB())
db := dbm.NewMemDB()
tree := iavl.NewMutableTree(db, cacheSize, false, log.NewNopLogger())
iavlStore := UnsafeNewStore(tree)
@@ -580,7 +580,7 @@ func TestIAVLStoreQuery(t *testing.T) {
func BenchmarkIAVLIteratorNext(b *testing.B) {
b.ReportAllocs()
db := wrapper.NewDBWrapper(dbm.NewMemDB())
db := dbm.NewMemDB()
treeSize := 1000
tree := iavl.NewMutableTree(db, cacheSize, false, log.NewNopLogger())
@@ -616,7 +616,7 @@ func TestSetInitialVersion(t *testing.T) {
{
"works with a mutable tree",
func(db *dbm.MemDB) *Store {
tree := iavl.NewMutableTree(wrapper.NewDBWrapper(db), cacheSize, false, log.NewNopLogger())
tree := iavl.NewMutableTree(db, cacheSize, false, log.NewNopLogger())
store := UnsafeNewStore(tree)
return store
@@ -625,7 +625,7 @@ func TestSetInitialVersion(t *testing.T) {
{
"throws error on immutable tree",
func(db *dbm.MemDB) *Store {
tree := iavl.NewMutableTree(wrapper.NewDBWrapper(db), cacheSize, false, log.NewNopLogger())
tree := iavl.NewMutableTree(db, cacheSize, false, log.NewNopLogger())
store := UnsafeNewStore(tree)
_, version, err := store.tree.SaveVersion()
require.NoError(t, err)
@@ -673,7 +673,7 @@ func TestChangeSets(t *testing.T) {
treeSize := 1000
treeVersion := int64(10)
targetVersion := int64(6)
tree := iavl.NewMutableTree(wrapper.NewDBWrapper(db), cacheSize, false, log.NewNopLogger(), iavl.FlushThresholdOption(math.MaxInt))
tree := iavl.NewMutableTree(db, cacheSize, false, log.NewNopLogger(), iavl.FlushThresholdOption(math.MaxInt))
for j := int64(0); j < treeVersion; j++ {
keys := [][]byte{}
+3 -2
View File
@@ -4,7 +4,8 @@ import (
"fmt"
"github.com/cosmos/iavl"
idb "github.com/cosmos/iavl/db"
corestore "cosmossdk.io/core/store"
)
var (
@@ -33,7 +34,7 @@ type (
GetVersioned(key []byte, version int64) ([]byte, error)
GetImmutable(version int64) (*iavl.ImmutableTree, error)
SetInitialVersion(version uint64)
Iterator(start, end []byte, ascending bool) (idb.Iterator, error)
Iterator(start, end []byte, ascending bool) (corestore.Iterator, error)
AvailableVersions() []int
LoadVersionForOverwriting(targetVersion int64) error
TraverseStateChanges(startVersion, endVersion int64, fn func(version int64, changeSet *iavl.ChangeSet) error) error
+1 -2
View File
@@ -8,12 +8,11 @@ import (
"github.com/stretchr/testify/require"
"cosmossdk.io/log"
"cosmossdk.io/store/wrapper"
)
func TestImmutableTreePanics(t *testing.T) {
t.Parallel()
immTree := iavl.NewImmutableTree(wrapper.NewDBWrapper(dbm.NewMemDB()), 100, false, log.NewNopLogger())
immTree := iavl.NewImmutableTree(dbm.NewMemDB(), 100, false, log.NewNopLogger())
it := &immutableTree{immTree}
require.Panics(t, func() {
_, err := it.Set([]byte{}, []byte{})
+1 -2
View File
@@ -14,7 +14,6 @@ import (
"cosmossdk.io/store/gaskv"
"cosmossdk.io/store/iavl"
"cosmossdk.io/store/types"
"cosmossdk.io/store/wrapper"
)
// copied from iavl/store_test.go
@@ -91,7 +90,7 @@ func testPrefixStore(t *testing.T, baseStore types.KVStore, prefix []byte) {
}
func TestIAVLStorePrefix(t *testing.T) {
db := wrapper.NewDBWrapper(dbm.NewMemDB())
db := dbm.NewMemDB()
tree := tiavl.NewMutableTree(db, cacheSize, false, log.NewNopLogger())
iavlStore := iavl.UnsafeNewStore(tree)
+6 -7
View File
@@ -6,8 +6,7 @@ import (
"sort"
"sync"
dbm "github.com/cosmos/cosmos-db"
corestore "cosmossdk.io/core/store"
"cosmossdk.io/store/pruning/types"
storetypes "cosmossdk.io/store/types"
)
@@ -16,7 +15,7 @@ import (
// determining when to prune old heights of the store
// based on the strategy described by the pruning options.
type Manager struct {
db dbm.DB
db corestore.KVStoreWithBatch
logger storetypes.Logger
opts types.PruningOptions
snapshotInterval uint64
@@ -46,7 +45,7 @@ var pruneSnapshotHeightsKey = []byte("s/prunesnapshotheights")
// The returned manager uses a pruning strategy of "nothing" which
// keeps all heights. Users of the Manager may change the strategy
// by calling SetOptions.
func NewManager(db dbm.DB, logger storetypes.Logger) *Manager {
func NewManager(db corestore.KVStoreWithBatch, logger storetypes.Logger) *Manager {
return &Manager{
db: db,
logger: logger,
@@ -89,7 +88,7 @@ func (m *Manager) HandleSnapshotHeight(height int64) {
m.pruneSnapshotHeights = m.pruneSnapshotHeights[k-1:]
// flush the updates to disk so that they are not lost if crash happens.
if err := m.db.SetSync(pruneSnapshotHeightsKey, int64SliceToBytes(m.pruneSnapshotHeights)); err != nil {
if err := m.db.Set(pruneSnapshotHeightsKey, int64SliceToBytes(m.pruneSnapshotHeights)); err != nil {
panic(err)
}
}
@@ -137,7 +136,7 @@ func (m *Manager) GetPruningHeight(height int64) int64 {
}
// LoadSnapshotHeights loads the snapshot heights from the database as a crash recovery.
func (m *Manager) LoadSnapshotHeights(db dbm.DB) error {
func (m *Manager) LoadSnapshotHeights(db corestore.KVStoreWithBatch) error {
if m.opts.GetPruningStrategy() == types.PruningNothing {
return nil
}
@@ -156,7 +155,7 @@ func (m *Manager) LoadSnapshotHeights(db dbm.DB) error {
return nil
}
func loadPruningSnapshotHeights(db dbm.DB) ([]int64, error) {
func loadPruningSnapshotHeights(db corestore.KVStoreWithBatch) ([]int64, error) {
bz, err := db.Get(pruneSnapshotHeightsKey)
if err != nil {
return nil, fmt.Errorf("failed to get post-snapshot pruned heights: %w", err)
+1 -1
View File
@@ -202,7 +202,7 @@ func TestHandleSnapshotHeight_DbErr_Panic(t *testing.T) {
// Setup
dbMock := mock.NewMockDB(ctrl)
dbMock.EXPECT().SetSync(gomock.Any(), gomock.Any()).Return(errors.New(dbErr)).Times(1)
dbMock.EXPECT().Set(gomock.Any(), gomock.Any()).Return(errors.New(dbErr)).Times(1)
manager := pruning.NewManager(dbMock, log.NewNopLogger())
manager.SetOptions(types.NewPruningOptions(types.PruningEverything))
+1 -1
View File
@@ -17,7 +17,7 @@ var (
// commitDBStoreWrapper should only be used for simulation/debugging,
// as it doesn't compute any commit hash, and it cannot load older state.
// Wrapper type for dbm.Db with implementation of KVStore
// Wrapper type for corestore.KVStoreWithBatch with implementation of KVStore
type commitDBStoreAdapter struct {
dbadapter.Store
}
+4 -3
View File
@@ -14,6 +14,7 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
corestore "cosmossdk.io/core/store"
"cosmossdk.io/log"
"cosmossdk.io/store/iavl"
"cosmossdk.io/store/metrics"
@@ -23,7 +24,7 @@ import (
"cosmossdk.io/store/types"
)
func newMultiStoreWithGeneratedData(db dbm.DB, stores uint8, storeKeys uint64) *rootmulti.Store {
func newMultiStoreWithGeneratedData(db corestore.KVStoreWithBatch, stores uint8, storeKeys uint64) *rootmulti.Store {
multiStore := rootmulti.NewStore(db, log.NewNopLogger(), metrics.NewNoOpMetrics())
r := rand.New(rand.NewSource(49872768940)) // Fixed seed for deterministic tests
@@ -61,7 +62,7 @@ func newMultiStoreWithGeneratedData(db dbm.DB, stores uint8, storeKeys uint64) *
return multiStore
}
func newMultiStoreWithMixedMounts(db dbm.DB) *rootmulti.Store {
func newMultiStoreWithMixedMounts(db corestore.KVStoreWithBatch) *rootmulti.Store {
store := rootmulti.NewStore(db, log.NewNopLogger(), metrics.NewNoOpMetrics())
store.MountStoreWithDB(types.NewKVStoreKey("iavl1"), types.StoreTypeIAVL, nil)
store.MountStoreWithDB(types.NewKVStoreKey("iavl2"), types.StoreTypeIAVL, nil)
@@ -73,7 +74,7 @@ func newMultiStoreWithMixedMounts(db dbm.DB) *rootmulti.Store {
return store
}
func newMultiStoreWithMixedMountsAndBasicData(db dbm.DB) *rootmulti.Store {
func newMultiStoreWithMixedMountsAndBasicData(db corestore.KVStoreWithBatch) *rootmulti.Store {
store := newMultiStoreWithMixedMounts(db)
store1 := store.GetStoreByName("iavl1").(types.CommitKVStore)
store2 := store.GetStoreByName("iavl2").(types.CommitKVStore)
+11 -10
View File
@@ -16,6 +16,7 @@ import (
gogotypes "github.com/cosmos/gogoproto/types"
iavltree "github.com/cosmos/iavl"
corestore "cosmossdk.io/core/store"
errorsmod "cosmossdk.io/errors"
"cosmossdk.io/store/cachemulti"
"cosmossdk.io/store/dbadapter"
@@ -55,7 +56,7 @@ func keysFromStoreKeyMap[V any](m map[types.StoreKey]V) []types.StoreKey {
// cacheMultiStore which is used for branching other MultiStores. It implements
// the CommitMultiStore interface.
type Store struct {
db dbm.DB
db corestore.KVStoreWithBatch
logger iavltree.Logger
lastCommitInfo *types.CommitInfo
pruningManager *pruning.Manager
@@ -84,7 +85,7 @@ var (
// store will be created with a PruneNothing pruning strategy by default. After
// a store is created, KVStores must be mounted and finally LoadLatestVersion or
// LoadVersion must be called.
func NewStore(db dbm.DB, logger iavltree.Logger, metricGatherer metrics.StoreMetrics) *Store {
func NewStore(db corestore.KVStoreWithBatch, logger iavltree.Logger, metricGatherer metrics.StoreMetrics) *Store {
return &Store{
db: db,
logger: logger,
@@ -137,7 +138,7 @@ func (rs *Store) GetStoreType() types.StoreType {
}
// MountStoreWithDB implements CommitMultiStore.
func (rs *Store) MountStoreWithDB(key types.StoreKey, typ types.StoreType, db dbm.DB) {
func (rs *Store) MountStoreWithDB(key types.StoreKey, typ types.StoreType, db corestore.KVStoreWithBatch) {
if key == nil {
panic("MountIAVLStore() key cannot be nil")
}
@@ -1013,13 +1014,13 @@ loop:
}
func (rs *Store) loadCommitStoreFromParams(key types.StoreKey, id types.CommitID, params storeParams) (types.CommitKVStore, error) {
var db dbm.DB
var db corestore.KVStoreWithBatch
if params.db != nil {
db = dbm.NewPrefixDB(params.db, []byte("s/_/"))
db = dbm.NewPrefixDB(params.db.(dbm.DB), []byte("s/_/"))
} else {
prefix := "s/k:" + params.key.Name() + "/"
db = dbm.NewPrefixDB(rs.db, []byte(prefix))
db = dbm.NewPrefixDB(rs.db.(dbm.DB), []byte(prefix))
}
switch params.typ {
@@ -1141,7 +1142,7 @@ func (rs *Store) GetCommitInfo(ver int64) (*types.CommitInfo, error) {
return cInfo, nil
}
func (rs *Store) flushMetadata(db dbm.DB, version int64, cInfo *types.CommitInfo) {
func (rs *Store) flushMetadata(db corestore.KVStoreWithBatch, version int64, cInfo *types.CommitInfo) {
rs.logger.Debug("flushing metadata", "height", version)
batch := db.NewBatch()
defer func() {
@@ -1164,12 +1165,12 @@ func (rs *Store) flushMetadata(db dbm.DB, version int64, cInfo *types.CommitInfo
type storeParams struct {
key types.StoreKey
db dbm.DB
db corestore.KVStoreWithBatch
typ types.StoreType
initialVersion uint64
}
func newStoreParams(key types.StoreKey, db dbm.DB, typ types.StoreType, initialVersion uint64) storeParams {
func newStoreParams(key types.StoreKey, db corestore.KVStoreWithBatch, typ types.StoreType, initialVersion uint64) storeParams {
return storeParams{
key: key,
db: db,
@@ -1178,7 +1179,7 @@ func newStoreParams(key types.StoreKey, db dbm.DB, typ types.StoreType, initialV
}
}
func GetLatestVersion(db dbm.DB) int64 {
func GetLatestVersion(db corestore.KVStoreWithBatch) int64 {
bz, err := db.Get([]byte(latestVersionKey))
if err != nil {
panic(err)
+13 -12
View File
@@ -10,6 +10,7 @@ import (
dbm "github.com/cosmos/cosmos-db"
"github.com/stretchr/testify/require"
corestore "cosmossdk.io/core/store"
"cosmossdk.io/errors"
"cosmossdk.io/log"
"cosmossdk.io/store/cachemulti"
@@ -27,7 +28,7 @@ func TestStoreType(t *testing.T) {
}
func TestGetCommitKVStore(t *testing.T) {
var db dbm.DB = dbm.NewMemDB()
var db corestore.KVStoreWithBatch = dbm.NewMemDB()
ms := newMultiStoreWithMounts(db, pruningtypes.NewPruningOptions(pruningtypes.PruningDefault))
err := ms.LoadLatestVersion()
require.Nil(t, err)
@@ -60,7 +61,7 @@ func TestStoreMount(t *testing.T) {
}
func TestCacheMultiStore(t *testing.T) {
var db dbm.DB = dbm.NewMemDB()
var db corestore.KVStoreWithBatch = dbm.NewMemDB()
ms := newMultiStoreWithMounts(db, pruningtypes.NewPruningOptions(pruningtypes.PruningNothing))
cacheMulti := ms.CacheMultiStore()
@@ -68,7 +69,7 @@ func TestCacheMultiStore(t *testing.T) {
}
func TestCacheMultiStoreWithVersion(t *testing.T) {
var db dbm.DB = dbm.NewMemDB()
var db corestore.KVStoreWithBatch = dbm.NewMemDB()
ms := newMultiStoreWithMounts(db, pruningtypes.NewPruningOptions(pruningtypes.PruningNothing))
err := ms.LoadLatestVersion()
require.Nil(t, err)
@@ -121,7 +122,7 @@ func TestCacheMultiStoreWithVersion(t *testing.T) {
}
func TestHashStableWithEmptyCommit(t *testing.T) {
var db dbm.DB = dbm.NewMemDB()
var db corestore.KVStoreWithBatch = dbm.NewMemDB()
ms := newMultiStoreWithMounts(db, pruningtypes.NewPruningOptions(pruningtypes.PruningNothing))
err := ms.LoadLatestVersion()
require.Nil(t, err)
@@ -151,7 +152,7 @@ func TestHashStableWithEmptyCommit(t *testing.T) {
}
func TestMultistoreCommitLoad(t *testing.T) {
var db dbm.DB = dbm.NewMemDB()
var db corestore.KVStoreWithBatch = dbm.NewMemDB()
store := newMultiStoreWithMounts(db, pruningtypes.NewPruningOptions(pruningtypes.PruningNothing))
err := store.LoadLatestVersion()
require.Nil(t, err)
@@ -204,7 +205,7 @@ func TestMultistoreCommitLoad(t *testing.T) {
}
func TestMultistoreLoadWithUpgrade(t *testing.T) {
var db dbm.DB = dbm.NewMemDB()
var db corestore.KVStoreWithBatch = dbm.NewMemDB()
store := newMultiStoreWithMounts(db, pruningtypes.NewPruningOptions(pruningtypes.PruningNothing))
err := store.LoadLatestVersion()
require.Nil(t, err)
@@ -668,7 +669,7 @@ func TestPausePruningOnCommit(t *testing.T) {
// TestUnevenStoresHeightCheck tests if loading root store correctly errors when
// there's any module store with the wrong height
func TestUnevenStoresHeightCheck(t *testing.T) {
var db dbm.DB = dbm.NewMemDB()
var db corestore.KVStoreWithBatch = dbm.NewMemDB()
store := newMultiStoreWithMounts(db, pruningtypes.NewPruningOptions(pruningtypes.PruningNothing))
err := store.LoadLatestVersion()
require.Nil(t, err)
@@ -788,7 +789,7 @@ func TestTraceConcurrency(t *testing.T) {
}
func TestCommitOrdered(t *testing.T) {
var db dbm.DB = dbm.NewMemDB()
var db corestore.KVStoreWithBatch = dbm.NewMemDB()
multi := newMultiStoreWithMounts(db, pruningtypes.NewPruningOptions(pruningtypes.PruningNothing))
err := multi.LoadLatestVersion()
require.Nil(t, err)
@@ -832,7 +833,7 @@ var (
testStoreKey3 = types.NewKVStoreKey("store3")
)
func newMultiStoreWithMounts(db dbm.DB, pruningOpts pruningtypes.PruningOptions) *Store {
func newMultiStoreWithMounts(db corestore.KVStoreWithBatch, pruningOpts pruningtypes.PruningOptions) *Store {
store := NewStore(db, log.NewNopLogger(), metrics.NewNoOpMetrics())
store.SetPruning(pruningOpts)
@@ -843,7 +844,7 @@ func newMultiStoreWithMounts(db dbm.DB, pruningOpts pruningtypes.PruningOptions)
return store
}
func newMultiStoreWithModifiedMounts(db dbm.DB, pruningOpts pruningtypes.PruningOptions) (*Store, *types.StoreUpgrades) {
func newMultiStoreWithModifiedMounts(db corestore.KVStoreWithBatch, pruningOpts pruningtypes.PruningOptions) (*Store, *types.StoreUpgrades) {
store := NewStore(db, log.NewNopLogger(), metrics.NewNoOpMetrics())
store.SetPruning(pruningOpts)
@@ -929,7 +930,7 @@ func (tl *MockListener) OnWrite(storeKey types.StoreKey, key, value []byte, dele
}
func TestStateListeners(t *testing.T) {
var db dbm.DB = dbm.NewMemDB()
var db corestore.KVStoreWithBatch = dbm.NewMemDB()
ms := newMultiStoreWithMounts(db, pruningtypes.NewPruningOptions(pruningtypes.PruningNothing))
require.Empty(t, ms.listeners)
@@ -969,7 +970,7 @@ func (stub *commitKVStoreStub) Commit() types.CommitID {
}
func prepareStoreMap() (map[types.StoreKey]types.CommitKVStore, error) {
var db dbm.DB = dbm.NewMemDB()
var db corestore.KVStoreWithBatch = dbm.NewMemDB()
store := NewStore(db, log.NewNopLogger(), metrics.NewNoOpMetrics())
store.MountStoreWithDB(types.NewKVStoreKey("iavl1"), types.StoreTypeIAVL, nil)
store.MountStoreWithDB(types.NewKVStoreKey("iavl2"), types.StoreTypeIAVL, nil)
+2 -3
View File
@@ -1,15 +1,14 @@
package store
import (
dbm "github.com/cosmos/cosmos-db"
corestore "cosmossdk.io/core/store"
"cosmossdk.io/store/cache"
"cosmossdk.io/store/metrics"
"cosmossdk.io/store/rootmulti"
"cosmossdk.io/store/types"
)
func NewCommitMultiStore(db dbm.DB, logger types.Logger, metricGatherer metrics.StoreMetrics) types.CommitMultiStore {
func NewCommitMultiStore(db corestore.KVStoreWithBatch, logger types.Logger, metricGatherer metrics.StoreMetrics) types.CommitMultiStore {
return rootmulti.NewStore(db, logger, metricGatherer)
}
+3 -3
View File
@@ -5,8 +5,8 @@ import (
"io"
crypto "github.com/cometbft/cometbft/api/cometbft/crypto/v1"
dbm "github.com/cosmos/cosmos-db"
corestore "cosmossdk.io/core/store"
"cosmossdk.io/store/metrics"
pruningtypes "cosmossdk.io/store/pruning/types"
snapshottypes "cosmossdk.io/store/snapshots/types"
@@ -178,7 +178,7 @@ type CommitMultiStore interface {
// MountStoreWithDB mount a store of type using the given db.
// If db == nil, the new store will use the CommitMultiStore db.
MountStoreWithDB(key StoreKey, typ StoreType, db dbm.DB)
MountStoreWithDB(key StoreKey, typ StoreType, db corestore.KVStoreWithBatch)
// GetCommitStore panics on a nil key.
GetCommitStore(key StoreKey) CommitStore
@@ -276,7 +276,7 @@ type KVStore interface {
}
// Iterator is an alias db's Iterator for convenience.
type Iterator = dbm.Iterator
type Iterator = corestore.Iterator
// CacheKVStore branches a KVStore and provides read cache functionality.
// After calling .Write() on the CacheKVStore, all previously created
+1 -2
View File
@@ -10,7 +10,6 @@ import (
corestore "cosmossdk.io/core/store"
"cosmossdk.io/store/v2"
"cosmossdk.io/store/v2/commitment"
dbm "cosmossdk.io/store/v2/db"
)
var (
@@ -25,7 +24,7 @@ type IavlTree struct {
// NewIavlTree creates a new IavlTree instance.
func NewIavlTree(db corestore.KVStoreWithBatch, logger log.Logger, cfg *Config) *IavlTree {
tree := iavl.NewMutableTree(dbm.NewWrapper(db), cfg.CacheSize, cfg.SkipFastStorageUpgrade, logger, iavl.AsyncPruningOption(true))
tree := iavl.NewMutableTree(db, cfg.CacheSize, cfg.SkipFastStorageUpgrade, logger, iavl.AsyncPruningOption(true))
return &IavlTree{
tree: tree,
}
-39
View File
@@ -1,39 +0,0 @@
package db
import (
idb "github.com/cosmos/iavl/db"
corestore "cosmossdk.io/core/store"
)
// Wrapper wraps a `corestore.KVStoreWithBatch` to implement iavl.DB which is used by iavl.Tree.
type Wrapper struct {
corestore.KVStoreWithBatch
}
var _ idb.DB = (*Wrapper)(nil)
// NewWrapper returns a new Wrapper.
func NewWrapper(db corestore.KVStoreWithBatch) *Wrapper {
return &Wrapper{KVStoreWithBatch: db}
}
// Iterator implements iavl.DB.
func (db *Wrapper) Iterator(start, end []byte) (idb.Iterator, error) {
return db.KVStoreWithBatch.Iterator(start, end)
}
// ReverseIterator implements iavl.DB.
func (db *Wrapper) ReverseIterator(start, end []byte) (idb.Iterator, error) {
return db.KVStoreWithBatch.ReverseIterator(start, end)
}
// NewBatch implements iavl.DB.
func (db *Wrapper) NewBatch() idb.Batch {
return db.KVStoreWithBatch.NewBatch()
}
// NewBatchWithSize implements iavl.DB.
func (db *Wrapper) NewBatchWithSize(size int) idb.Batch {
return db.KVStoreWithBatch.NewBatchWithSize(size)
}
+2 -3
View File
@@ -10,7 +10,7 @@ require (
github.com/cockroachdb/pebble v1.1.0
github.com/cosmos/cosmos-proto v1.0.0-beta.5
github.com/cosmos/gogoproto v1.7.0
github.com/cosmos/iavl v1.2.1-0.20240731145221-594b181f427e
github.com/cosmos/iavl v1.0.0-beta.1.0.20240813194616-eb5078efcf9e
github.com/cosmos/ics23/go v0.11.0
github.com/google/btree v1.1.2
github.com/hashicorp/go-metrics v0.5.3
@@ -31,7 +31,6 @@ require (
github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect
github.com/cockroachdb/redact v1.1.5 // indirect
github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect
github.com/cosmos/cosmos-db v1.0.0 // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/emicklei/dot v1.6.2 // indirect
github.com/fsnotify/fsnotify v1.7.0 // indirect
@@ -58,7 +57,7 @@ require (
github.com/rs/zerolog v1.33.0 // indirect
github.com/tidwall/btree v1.7.0 // indirect
golang.org/x/crypto v0.26.0 // indirect
golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df // indirect
golang.org/x/exp v0.0.0-20231006140011-7918f672742d // indirect
golang.org/x/sys v0.24.0 // indirect
golang.org/x/text v0.17.0 // indirect
google.golang.org/protobuf v1.34.2 // indirect
+4 -8
View File
@@ -34,14 +34,12 @@ github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZ
github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo=
github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ=
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
github.com/cosmos/cosmos-db v1.0.0 h1:EVcQZ+qYag7W6uorBKFPvX6gRjw6Uq2hIh4hCWjuQ0E=
github.com/cosmos/cosmos-db v1.0.0/go.mod h1:iBvi1TtqaedwLdcrZVYRSSCb6eSy61NLj4UNmdIgs0U=
github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA=
github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec=
github.com/cosmos/gogoproto v1.7.0 h1:79USr0oyXAbxg3rspGh/m4SWNyoz/GLaAh0QlCe2fro=
github.com/cosmos/gogoproto v1.7.0/go.mod h1:yWChEv5IUEYURQasfyBW5ffkMHR/90hiHgbNgrtp4j0=
github.com/cosmos/iavl v1.2.1-0.20240731145221-594b181f427e h1:5bxw1E0peLMrr8ZO9mYT0d9sxy0WgR1ZEWb92yjKnnk=
github.com/cosmos/iavl v1.2.1-0.20240731145221-594b181f427e/go.mod h1:GiM43q0pB+uG53mLxLDzimxM9l/5N9UuSY3/D0huuVw=
github.com/cosmos/iavl v1.0.0-beta.1.0.20240813194616-eb5078efcf9e h1:LEii0v/FxtXa/F7mRn+tijZ0zaXBPn2ZkKwb6Qm4rqE=
github.com/cosmos/iavl v1.0.0-beta.1.0.20240813194616-eb5078efcf9e/go.mod h1:3ywr0wDnWeD7MUH6qu50wZ5bxuKH3LBrGG4/lZX8lVY=
github.com/cosmos/ics23/go v0.11.0 h1:jk5skjT0TqX5e5QJbEnwXIS2yI2vnmLOgpQPeM5RtnU=
github.com/cosmos/ics23/go v0.11.0/go.mod h1:A8OjxPE67hHST4Icw94hOxxFEJMBG031xIGF/JHNIY0=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
@@ -72,8 +70,6 @@ github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5x
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc=
github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
@@ -228,8 +224,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.26.0 h1:RrRspgV4mU+YwB4FYnuBoKsUapNIL5cohGAmSH3azsw=
golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54=
golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df h1:UA2aFVmmsIlefxMk29Dp2juaUSth8Pyn3Tq5Y5mJGME=
golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc=
golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI=
golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-34
View File
@@ -1,34 +0,0 @@
package wrapper
import (
dbm "github.com/cosmos/cosmos-db"
idb "github.com/cosmos/iavl/db"
)
var _ idb.DB = &DBWrapper{}
// DBWrapper is a simple wrapper of dbm.DB that implements the iavl.DB interface.
type DBWrapper struct {
dbm.DB
}
// NewDBWrapper creates a new DBWrapper instance.
func NewDBWrapper(db dbm.DB) *DBWrapper {
return &DBWrapper{db}
}
func (dbw *DBWrapper) NewBatch() idb.Batch {
return dbw.DB.NewBatch()
}
func (dbw *DBWrapper) NewBatchWithSize(size int) idb.Batch {
return dbw.DB.NewBatchWithSize(size)
}
func (dbw *DBWrapper) Iterator(start, end []byte) (idb.Iterator, error) {
return dbw.DB.Iterator(start, end)
}
func (dbw *DBWrapper) ReverseIterator(start, end []byte) (idb.Iterator, error) {
return dbw.DB.ReverseIterator(start, end)
}