Oleksandr Brezhniev 113995d6f4 | 3 years ago | |
---|---|---|
.github/workflows | 4 years ago | |
db | 3 years ago | |
.golangci.yml | 4 years ago | |
LICENSE | 4 years ago | |
README.md | 4 years ago | |
data.go | 3 years ago | |
db.go | 3 years ago | |
elembytes.go | 3 years ago | |
entry.go | 3 years ago | |
go.mod | 3 years ago | |
go.sum | 3 years ago | |
hash.go | 3 years ago | |
merkletree.go | 3 years ago | |
merkletree_test.go | 3 years ago | |
node.go | 3 years ago | |
proof.go | 3 years ago | |
utils.go | 3 years ago |
MerkleTree compatible with version from circomlib.
Adaptation of the merkletree from https://github.com/iden3/go-iden3-core/tree/v0.0.8 with several changes and more functionalities.
More detailed examples can be found at the tests, and in the documentation.
import (
"fmt"
"math/big"
"testing"
"github.com/iden3/go-iden3-core/db"
"github.com/stretchr/testify/assert"
)
[...]
func TestExampleMerkleTree(t *testing.T) {
mt, err := NewMerkleTree(db.NewMemoryStorage(), 10)
assert.Nil(t, err)
key := big.NewInt(1)
value := big.NewInt(2)
err = mt.Add(key, value)
assert.Nil(t, err)
fmt.Println(mt.Root().String())
v, err := mt.Get(key)
asseert.Equal(t, value, v)
value = big.NewInt(3)
err = mt.Update(key, value)
proof, err := mt.GenerateProof(key, nil)
assert.Nil(t, err)
assert.True(t, VerifyProof(mt.Root(), proof, key, value))
err := mt.Delete(big.NewInt(1)) // delete the leaf of key=1
assert.Nil(t, err)
}