|
|
# go-merkletree [![GoDoc](https://godoc.org/github.com/iden3/go-merkletree?status.svg)](https://godoc.org/github.com/iden3/go-merkletree) [![Go Report Card](https://goreportcard.com/badge/github.com/iden3/go-merkletree)](https://goreportcard.com/report/github.com/iden3/go-merkletree) [![Test](https://github.com/iden3/go-merkletree/workflows/Test/badge.svg)](https://github.com/iden3/go-merkletree/actions?query=workflow%3ATest)
MerkleTree compatible with version from [circomlib](https://github.com/iden3/circomlib).
Adaptation of the merkletree from https://github.com/iden3/go-iden3-core/tree/v0.0.8 with several changes and more functionalities.
## Usage
More detailed examples can be found at the [tests](https://github.com/iden3/go-merkletree/blob/master/merkletree_test.go), and in the [documentation](https://godoc.org/github.com/iden3/go-merkletree).
```go 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) } ```
|