From 79c356002cddf1d7b8b3e6aec3efa153f08a1ecb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=96mer=20Faruk=20Irmak?= Date: Wed, 24 Apr 2024 06:31:56 +0300 Subject: [PATCH] feat(zktrie): upgrade to 0.8.2 (#715) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(zktrie): upgrade to v0.8.2 * chore: auto version bump [bot] * chore: auto version bump [bot] --------- Co-authored-by: omerfirmak Co-authored-by: HAOYUatHZ <37070449+HAOYUatHZ@users.noreply.github.com> Co-authored-by: HAOYUatHZ --- go.mod | 2 +- go.sum | 4 ++-- params/version.go | 2 +- trie/zk_trie.go | 3 +++ trie/zk_trie_proof_test.go | 20 ++++++++++++++++---- trie/zktrie_deletionproof.go | 17 +---------------- 6 files changed, 24 insertions(+), 24 deletions(-) diff --git a/go.mod b/go.mod index 2b7b225c67..d7f09d202f 100644 --- a/go.mod +++ b/go.mod @@ -50,7 +50,7 @@ require ( github.com/prometheus/tsdb v0.7.1 github.com/rjeczalik/notify v0.9.1 github.com/rs/cors v1.7.0 - github.com/scroll-tech/zktrie v0.6.0 + github.com/scroll-tech/zktrie v0.8.2 github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4 github.com/stretchr/testify v1.8.2 diff --git a/go.sum b/go.sum index 6b051e44f4..d87e2fc1d1 100644 --- a/go.sum +++ b/go.sum @@ -386,8 +386,8 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/rs/cors v1.7.0 h1:+88SsELBHx5r+hZ8TCkggzSstaWNbDvThkVK8H6f9ik= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/scroll-tech/zktrie v0.6.0 h1:xLrMAO31Yo2BiPg1jtYKzcjpEFnXy8acbB7iIsyshPs= -github.com/scroll-tech/zktrie v0.6.0/go.mod h1:XvNo7vAk8yxNyTjBDj5WIiFzYW4bx/gJ78+NK6Zn6Uk= +github.com/scroll-tech/zktrie v0.8.2 h1:UMuIfA+jdgWMLmTgTL64Emo+zzMOdcnH0+eYdDcshxQ= +github.com/scroll-tech/zktrie v0.8.2/go.mod h1:XvNo7vAk8yxNyTjBDj5WIiFzYW4bx/gJ78+NK6Zn6Uk= github.com/segmentio/kafka-go v0.1.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= github.com/segmentio/kafka-go v0.2.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= diff --git a/params/version.go b/params/version.go index c345b4b100..4465390647 100644 --- a/params/version.go +++ b/params/version.go @@ -24,7 +24,7 @@ import ( const ( VersionMajor = 5 // Major version component of the current release VersionMinor = 3 // Minor version component of the current release - VersionPatch = 1 // Patch version component of the current release + VersionPatch = 2 // Patch version component of the current release VersionMeta = "mainnet" // Version metadata to append to the version string ) diff --git a/trie/zk_trie.go b/trie/zk_trie.go index 4cb116e644..ed266c518e 100644 --- a/trie/zk_trie.go +++ b/trie/zk_trie.go @@ -124,6 +124,9 @@ func (t *ZkTrie) GetKey(kHashBytes []byte) []byte { // Committing flushes nodes from memory. Subsequent Get calls will load nodes // from the database. func (t *ZkTrie) Commit(LeafCallback) (common.Hash, int, error) { + if err := t.ZkTrie.Commit(); err != nil { + return common.Hash{}, 0, err + } // in current implmentation, every update of trie already writes into database // so Commmit does nothing return t.Hash(), 0, nil diff --git a/trie/zk_trie_proof_test.go b/trie/zk_trie_proof_test.go index 308f6ccfe7..aec28fde5a 100644 --- a/trie/zk_trie_proof_test.go +++ b/trie/zk_trie_proof_test.go @@ -79,7 +79,11 @@ func TestSMTOneElementProof(t *testing.T) { if proof.Len() != 2 { t.Errorf("prover %d: proof should have 1+1 element (including the magic kv)", i) } - val, err := VerifyProof(common.BytesToHash(mt.Root().Bytes()), keyBytes, proof) + + root, err := mt.Root() + assert.NoError(t, err) + + val, err := VerifyProof(common.BytesToHash(root.Bytes()), keyBytes, proof) if err != nil { t.Fatalf("prover %d: failed to verify proof: %v\nraw proof: %x", i, err, proof) } @@ -91,7 +95,9 @@ func TestSMTOneElementProof(t *testing.T) { func TestSMTProof(t *testing.T) { mt, vals := randomZktrie(t, 500) - root := mt.Tree().Root() + root, err := mt.Tree().Root() + assert.NoError(t, err) + for i, prover := range makeSMTProvers(mt) { for _, kv := range vals { proof := prover(kv.k) @@ -111,7 +117,9 @@ func TestSMTProof(t *testing.T) { func TestSMTBadProof(t *testing.T) { mt, vals := randomZktrie(t, 500) - root := mt.Tree().Root() + root, err := mt.Tree().Root() + assert.NoError(t, err) + for i, prover := range makeSMTProvers(mt) { for _, kv := range vals { proof := prover(kv.k) @@ -157,7 +165,11 @@ func TestSMTMissingKeyProof(t *testing.T) { if proof.Len() != 2 { t.Errorf("test %d: proof should have 2 element (with magic kv)", i) } - val, err := VerifyProof(common.BytesToHash(mt.Root().Bytes()), keyBytes, proof) + + root, err := mt.Root() + assert.NoError(t, err) + + val, err := VerifyProof(common.BytesToHash(root.Bytes()), keyBytes, proof) if err != nil { t.Fatalf("test %d: failed to verify proof: %v\nraw proof: %x", i, err, proof) } diff --git a/trie/zktrie_deletionproof.go b/trie/zktrie_deletionproof.go index 02d32933c6..7ae2a11ff8 100644 --- a/trie/zktrie_deletionproof.go +++ b/trie/zktrie_deletionproof.go @@ -10,21 +10,6 @@ import ( "github.com/scroll-tech/go-ethereum/ethdb" ) -// Pick Node from its hash directly from database, notice it has different -// interface with the function of same name in `trie` -func (t *ZkTrie) TryGetNode(nodeHash *zkt.Hash) (*zktrie.Node, error) { - if bytes.Equal(nodeHash[:], zkt.HashZero[:]) { - return zktrie.NewEmptyNode(), nil - } - nBytes, err := t.db.Get(nodeHash[:]) - if err == zktrie.ErrKeyNotFound { - return nil, zktrie.ErrKeyNotFound - } else if err != nil { - return nil, err - } - return zktrie.NewNodeFromBytes(nBytes) -} - type ProofTracer struct { *ZkTrie deletionTracer map[zkt.Hash]struct{} @@ -95,7 +80,7 @@ func (t *ProofTracer) GetDeletionProofs() ([][]byte, error) { siblingHash = n.ChildL } if siblingHash != nil { - sibling, err := t.TryGetNode(siblingHash) + sibling, err := t.ZkTrie.Tree().GetNode(siblingHash) if err != nil { return nil, err }