mirror of
https://github.com/arnaucube/arbo.git
synced 2026-01-09 07:21:28 +01:00
Fix oldLeafKeyFull size at method tree.down
This commit is contained in:
12
tree.go
12
tree.go
@@ -405,12 +405,10 @@ func (t *Tree) down(rTx db.ReadTx, newKey, currKey []byte, siblings [][]byte,
|
|||||||
return nil, nil, nil, ErrKeyAlreadyExists
|
return nil, nil, nil, ErrKeyAlreadyExists
|
||||||
}
|
}
|
||||||
|
|
||||||
oldLeafKeyFull := make([]byte, t.hashFunction.Len())
|
oldLeafKeyFull, err := keyPathFromKey(t.maxLevels, oldLeafKey)
|
||||||
// if len(oldLeafKey) > t.hashFunction.Len() { // WIP
|
if err != nil {
|
||||||
// return nil, nil, nil,
|
return nil, nil, nil, err
|
||||||
// fmt.Errorf("len(oldLeafKey) > hashFunction.Len()")
|
}
|
||||||
// }
|
|
||||||
copy(oldLeafKeyFull[:], oldLeafKey)
|
|
||||||
|
|
||||||
// if currKey is already used, go down until paths diverge
|
// if currKey is already used, go down until paths diverge
|
||||||
oldPath := getPath(t.maxLevels, oldLeafKeyFull)
|
oldPath := getPath(t.maxLevels, oldLeafKeyFull)
|
||||||
@@ -841,7 +839,7 @@ func CheckProof(hashFunc HashFunction, k, v, root, packedSiblings []byte) (bool,
|
|||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
|
|
||||||
keyPath := make([]byte, len(siblings))
|
keyPath := make([]byte, int(math.Ceil(float64(len(siblings))/float64(8)))) //nolint:gomnd
|
||||||
copy(keyPath[:], k)
|
copy(keyPath[:], k)
|
||||||
|
|
||||||
key, _, err := newLeafValue(hashFunc, k, v)
|
key, _, err := newLeafValue(hashFunc, k, v)
|
||||||
|
|||||||
24
tree_test.go
24
tree_test.go
@@ -745,6 +745,30 @@ func TestKeyLen(t *testing.T) {
|
|||||||
c.Assert(verif, qt.IsFalse)
|
c.Assert(verif, qt.IsFalse)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestKeyLenBiggerThan32(t *testing.T) {
|
||||||
|
c := qt.New(t)
|
||||||
|
maxLevels := 264
|
||||||
|
database, err := badgerdb.New(badgerdb.Options{Path: c.TempDir()})
|
||||||
|
c.Assert(err, qt.IsNil)
|
||||||
|
tree, err := NewTree(database, maxLevels, HashFunctionBlake2b)
|
||||||
|
c.Assert(err, qt.IsNil)
|
||||||
|
|
||||||
|
bLen := 33
|
||||||
|
err = tree.Add(
|
||||||
|
randomBytes(bLen),
|
||||||
|
randomBytes(bLen))
|
||||||
|
c.Assert(err, qt.IsNil)
|
||||||
|
|
||||||
|
// 2nd key that we add, will find a node with len(key)==32 (due the
|
||||||
|
// hash output size, expect that next Add does not give any error, as
|
||||||
|
// internally it will use a keyPath of size corresponent to the
|
||||||
|
// maxLevels size of the tree
|
||||||
|
err = tree.Add(
|
||||||
|
randomBytes(bLen),
|
||||||
|
randomBytes(bLen))
|
||||||
|
c.Assert(err, qt.IsNil)
|
||||||
|
}
|
||||||
|
|
||||||
func BenchmarkAdd(b *testing.B) {
|
func BenchmarkAdd(b *testing.B) {
|
||||||
bLen := 32 // for both Poseidon & Sha256
|
bLen := 32 // for both Poseidon & Sha256
|
||||||
// prepare inputs
|
// prepare inputs
|
||||||
|
|||||||
Reference in New Issue
Block a user