From 0ce53ada6773d168ad79939a6f82336f5098ea73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Toni=20Ram=C3=ADrez?= <58293609+ToniRamirezM@users.noreply.github.com> Date: Mon, 25 Mar 2024 01:08:17 +0100 Subject: [PATCH] fix aggregator l1 info tree (#3491) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix aggregator l1 info tree * Fix case you want to proof a 0 (#3492) * Fix case you want to proof a 0 * init timestamp --------- Co-authored-by: Toni Ramírez * force forkid 9 * update prover --------- Co-authored-by: Jordi Baylina Co-authored-by: agnusmor --- aggregator/aggregator.go | 16 +++++++++++----- docker-compose.yml | 2 +- l1infotree/tree.go | 17 +++++++---------- test/docker-compose.yml | 6 +++++- 4 files changed, 24 insertions(+), 17 deletions(-) diff --git a/aggregator/aggregator.go b/aggregator/aggregator.go index 1b23c11202..c135f301e9 100644 --- a/aggregator/aggregator.go +++ b/aggregator/aggregator.go @@ -35,6 +35,8 @@ const ( ethTxManagerOwner = "aggregator" monitoredIDFormat = "proof-from-%v-to-%v" + + forkId9 = uint64(9) ) type finalProofMsg struct { @@ -182,7 +184,7 @@ func (a *Aggregator) Channel(stream prover.AggregatorService_ChannelServer) erro log.Info("Establishing stream connection with prover") // Check if prover supports the required Fork ID - if !prover.SupportsForkID(a.cfg.ForkId) { + if !prover.SupportsForkID(forkId9) { err := errors.New("prover does not support required fork ID") log.Warn(FirstToUpper(err.Error())) return err @@ -1032,9 +1034,13 @@ func (a *Aggregator) buildInputProver(ctx context.Context, batchToVerify *state. for _, l2blockRaw := range batchRawData.Blocks { _, contained := l1InfoTreeData[l2blockRaw.IndexL1InfoTree] if !contained && l2blockRaw.IndexL1InfoTree != 0 { - l1InfoTreeExitRootStorageEntry, err := a.State.GetL1InfoRootLeafByIndex(ctx, l2blockRaw.IndexL1InfoTree, nil) - if err != nil { - return nil, err + l1InfoTreeExitRootStorageEntry := state.L1InfoTreeExitRootStorageEntry{} + l1InfoTreeExitRootStorageEntry.Timestamp = time.Unix(0, 0) + if l2blockRaw.IndexL1InfoTree <= leaves[len(leaves)-1].L1InfoTreeIndex { + l1InfoTreeExitRootStorageEntry, err = a.State.GetL1InfoRootLeafByIndex(ctx, l2blockRaw.IndexL1InfoTree, nil) + if err != nil { + return nil, err + } } // Calculate smt proof @@ -1087,7 +1093,7 @@ func (a *Aggregator) buildInputProver(ctx context.Context, batchToVerify *state. OldAccInputHash: previousBatch.AccInputHash.Bytes(), OldBatchNum: previousBatch.BatchNumber, ChainId: a.cfg.ChainID, - ForkId: a.cfg.ForkId, + ForkId: forkId9, BatchL2Data: batchToVerify.BatchL2Data, L1InfoRoot: l1InfoRoot.Bytes(), TimestampLimit: uint64(batchToVerify.Timestamp.Unix()), diff --git a/docker-compose.yml b/docker-compose.yml index 102c693d11..7ae42c26c9 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -107,7 +107,7 @@ services: zkevm-prover: container_name: zkevm-prover restart: unless-stopped - image: hermeznetwork/zkevm-prover:v5.0.6 + image: hermeznetwork/zkevm-prover:v6.0.0 depends_on: zkevm-state-db: condition: service_healthy diff --git a/l1infotree/tree.go b/l1infotree/tree.go index 5e356c164d..e0c19da6bf 100644 --- a/l1infotree/tree.go +++ b/l1infotree/tree.go @@ -84,16 +84,13 @@ func (mt *L1InfoTree) ComputeMerkleProof(gerIndex uint32, leaves [][32]byte) ([] if len(leaves)%2 == 1 { leaves = append(leaves, mt.zeroHashes[h]) } - if index%2 == 1 { //If it is odd - siblings = append(siblings, leaves[index-1]) - } else { // It is even - if len(leaves) > 1 { - if index >= uint32(len(leaves)) { - // siblings = append(siblings, mt.zeroHashes[h]) - siblings = append(siblings, leaves[index-1]) - } else { - siblings = append(siblings, leaves[index+1]) - } + if index >= uint32(len(leaves)) { + siblings = append(siblings, mt.zeroHashes[h]) + } else { + if index%2 == 1 { //If it is odd + siblings = append(siblings, leaves[index-1]) + } else { // It is even + siblings = append(siblings, leaves[index+1]) } } var ( diff --git a/test/docker-compose.yml b/test/docker-compose.yml index 74e91708fe..99bc2258af 100644 --- a/test/docker-compose.yml +++ b/test/docker-compose.yml @@ -513,7 +513,7 @@ services: zkevm-prover: container_name: zkevm-prover - image: hermeznetwork/zkevm-prover:v5.0.6 + image: hermeznetwork/zkevm-prover:v6.0.0 ports: - 50061:50061 # MT - 50071:50071 # Executor @@ -602,7 +602,11 @@ services: zkevm-permissionless-prover: container_name: zkevm-permissionless-prover +<<<<<<< HEAD image: hermeznetwork/zkevm-prover:v5.0.6 +======= + image: hermeznetwork/zkevm-prover:v6.0.0 +>>>>>>> a103c15e (fix aggregator l1 info tree (#3491)) ports: # - 50058:50058 # Prover - 50059:50052 # Mock prover