···1414 IterateRange(start, end []byte, ascending bool, fn func(key []byte, value []byte) bool) (stopped bool)
1515}
16161717-type UnifiedTree interface {
1818- ReadTree
1919- Set(key, value []byte) (bool, error)
2020- Remove(key []byte) ([]byte, bool, error)
2121-}
2222-2317type immutableToReadOnlyTree struct {
2418 tree *iavl.ImmutableTree
2519}
···5650func (m *immutableToReadOnlyTree) Iterator(start, end []byte, ascending bool) (corestore.Iterator, error) {
5751 return m.tree.Iterator(start, end, ascending)
5852}
5353+5454+// UnderlyingImmutableTree is only meant to be used in very specific scenarios
5555+func UnderlyingImmutableTree(tree ReadTree) (*iavl.ImmutableTree, bool) {
5656+ t, ok := tree.(*immutableToReadOnlyTree)
5757+ return t.tree, ok
5858+}
+2-1
transaction/interface.go
···44 "time"
5566 dbm "github.com/cometbft/cometbft-db"
77+ "github.com/cosmos/iavl"
78 "github.com/dgraph-io/badger/v4"
89)
910···2526 Timestamp() time.Time
26272728 NextSequence() (uint64, error)
2828- Tree() UnifiedTree
2929+ Tree() *iavl.MutableTree
2930 IndexDB() IndexWriter
3031 TestDIDBloomFilter(did []byte) bool
3132 // sequence is only used to track how up-to-date the bloom filter is. it is not added to the bloom filter