feat(store/v2): Implement the GetProof for multi store (#18736)
This commit is contained in:
@@ -44,7 +44,12 @@ func (t *IavlTree) Set(key, value []byte) error {
|
||||
return err
|
||||
}
|
||||
|
||||
// WorkingHash returns the working hash of the database.
|
||||
// Hash returns the hash of the latest saved version of the tree.
|
||||
func (t *IavlTree) Hash() []byte {
|
||||
return t.tree.Hash()
|
||||
}
|
||||
|
||||
// WorkingHash returns the working hash of the tree.
|
||||
func (t *IavlTree) WorkingHash() []byte {
|
||||
return t.tree.WorkingHash()
|
||||
}
|
||||
@@ -54,10 +59,10 @@ func (t *IavlTree) LoadVersion(version uint64) error {
|
||||
return t.tree.LoadVersionForOverwriting(int64(version))
|
||||
}
|
||||
|
||||
// Commit commits the current state to the database.
|
||||
func (t *IavlTree) Commit() ([]byte, error) {
|
||||
hash, _, err := t.tree.SaveVersion()
|
||||
return hash, err
|
||||
// Commit commits the current state to the tree.
|
||||
func (t *IavlTree) Commit() ([]byte, uint64, error) {
|
||||
hash, v, err := t.tree.SaveVersion()
|
||||
return hash, uint64(v), err
|
||||
}
|
||||
|
||||
// GetProof returns a proof for the given key and version.
|
||||
@@ -70,7 +75,7 @@ func (t *IavlTree) GetProof(version uint64, key []byte) (*ics23.CommitmentProof,
|
||||
return imutableTree.GetProof(key)
|
||||
}
|
||||
|
||||
// GetLatestVersion returns the latest version of the database.
|
||||
// GetLatestVersion returns the latest version of the tree.
|
||||
func (t *IavlTree) GetLatestVersion() uint64 {
|
||||
return uint64(t.tree.Version())
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ func TestCommitterSuite(t *testing.T) {
|
||||
prefixDB := dbm.NewPrefixDB(db, []byte(storeKey))
|
||||
multiTrees[storeKey] = NewIavlTree(prefixDB, logger, cfg)
|
||||
}
|
||||
return commitment.NewCommitStore(multiTrees, logger)
|
||||
return commitment.NewCommitStore(multiTrees, db, logger)
|
||||
},
|
||||
}
|
||||
|
||||
@@ -51,8 +51,9 @@ func TestIavlTree(t *testing.T) {
|
||||
require.Equal(t, uint64(0), tree.GetLatestVersion())
|
||||
|
||||
// commit the batch
|
||||
commitHash, err := tree.Commit()
|
||||
commitHash, version, err := tree.Commit()
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, version, uint64(1))
|
||||
require.Equal(t, workingHash, commitHash)
|
||||
require.Equal(t, uint64(1), tree.GetLatestVersion())
|
||||
|
||||
@@ -63,8 +64,9 @@ func TestIavlTree(t *testing.T) {
|
||||
require.NoError(t, tree.Remove([]byte("key1"))) // delete key1
|
||||
version2Hash := tree.WorkingHash()
|
||||
require.NotNil(t, version2Hash)
|
||||
commitHash, err = tree.Commit()
|
||||
commitHash, version, err = tree.Commit()
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, version, uint64(2))
|
||||
require.Equal(t, version2Hash, commitHash)
|
||||
|
||||
// get proof for key1
|
||||
@@ -80,7 +82,7 @@ func TestIavlTree(t *testing.T) {
|
||||
require.NoError(t, tree.Set([]byte("key7"), []byte("value7")))
|
||||
require.NoError(t, tree.Set([]byte("key8"), []byte("value8")))
|
||||
require.NoError(t, err)
|
||||
_, err = tree.Commit()
|
||||
_, _, err = tree.Commit()
|
||||
require.NoError(t, err)
|
||||
|
||||
// prune version 1
|
||||
|
||||
Reference in New Issue
Block a user