arnaucube
arnaucube/go-merkletree-iden3Public Self-hosted repository
Update Poseidon version, add mt.Snapshot
arnaucube root@arnaucube.com
Thu, 23 Jul 2020 12:24:38 +0200
commit

f7a00186cd51e63da42a787b815d0cd45aba51bf

parent

716a0ede9120cf65dce536d1eda4fd06d63a7375

4 files changed, 17 insertions(+), 5 deletions(-)

jump to
M go.mod → go.mod

@@ -4,7 +4,7 @@ go 1.14

require ( github.com/iden3/go-iden3-core v0.0.8 - github.com/iden3/go-iden3-crypto v0.0.5 + github.com/iden3/go-iden3-crypto v0.0.6-0.20200723082457-29a66457f0bf github.com/sirupsen/logrus v1.5.0 github.com/stretchr/testify v1.5.1 github.com/syndtr/goleveldb v1.0.1-0.20190923125748-758128399b1d
M go.sum → go.sum

@@ -114,6 +114,8 @@ github.com/iden3/go-iden3-core v0.0.8 h1:PLw7iCiX7Pw1dqBkR+JaLQWqB5RKd+vgu25UBdvFXGQ=

github.com/iden3/go-iden3-core v0.0.8/go.mod h1:URNjIhMql6sEbWubIGrjJdw5wHCE1Pk1XghxjBOtA3s= github.com/iden3/go-iden3-crypto v0.0.5 h1:inCSm5a+ry+nbpVTL/9+m6UcIwSv6nhUm0tnIxEbcps= github.com/iden3/go-iden3-crypto v0.0.5/go.mod h1:XKw1oDwYn2CIxKOtr7m/mL5jMn4mLOxAxtZBRxQBev8= +github.com/iden3/go-iden3-crypto v0.0.6-0.20200723082457-29a66457f0bf h1:/7L5dEqctuzJY2g8OEQct+1Y+n2sMKyd4JoYhw2jy1s= +github.com/iden3/go-iden3-crypto v0.0.6-0.20200723082457-29a66457f0bf/go.mod h1:XKw1oDwYn2CIxKOtr7m/mL5jMn4mLOxAxtZBRxQBev8= github.com/iden3/go-wasm3 v0.0.1/go.mod h1:j+TcAB94Dfrjlu5kJt83h2OqAU+oyNUTwNZnQyII1sI= github.com/influxdata/influxdb v1.2.3-0.20180221223340-01288bdb0883/go.mod h1:qZna6X/4elxqT3yI9iZYdZrWWdeFOOprn86kgg4+IzY= github.com/influxdata/influxdb v1.7.8/go.mod h1:qZna6X/4elxqT3yI9iZYdZrWWdeFOOprn86kgg4+IzY=
M merkletree.go → merkletree.go

@@ -10,8 +10,8 @@ "math/big"

"sync" "github.com/iden3/go-iden3-core/common" - "github.com/iden3/go-merkletree/db" cryptoUtils "github.com/iden3/go-iden3-crypto/utils" + "github.com/iden3/go-merkletree/db" ) const (

@@ -139,6 +139,16 @@

// Root returns the MerkleRoot func (mt *MerkleTree) Root() *Hash { return mt.rootKey +} + +func (mt *MerkleTree) Snapshot(rootKey *Hash) (*MerkleTree, error) { + mt.RLock() + defer mt.RUnlock() + _, err := mt.GetNode(rootKey) + if err != nil { + return nil, err + } + return &MerkleTree{db: mt.db, maxLevels: mt.maxLevels, rootKey: rootKey, writable: false}, nil } // Add adds a Key & Value into the MerkleTree. Where the `k` determines the path from the Root to the Leaf.
M utils.go → utils.go

@@ -8,7 +8,7 @@ "github.com/iden3/go-iden3-crypto/poseidon"

) // HashElems performs a poseidon hash over the array of ElemBytes. -// Uses poseidon.PoseidonHash to be compatible with the circom circuits +// Uses poseidon.Hash to be compatible with the circom circuits // implementations. // The maxim slice input size is poseidon.T func HashElems(elems ...*big.Int) (*Hash, error) {

@@ -21,7 +21,7 @@ if err != nil {

return nil, err } - poseidonHash, err := poseidon.PoseidonHash(bi) + poseidonHash, err := poseidon.Hash(bi) if err != nil { return nil, err }

@@ -41,7 +41,7 @@ if err != nil {

return nil, err } copy(bi[len(elems):], []*big.Int{key}) - poseidonHash, err := poseidon.PoseidonHash(bi) + poseidonHash, err := poseidon.Hash(bi) if err != nil { return nil, err }