From 2c72166aab7b703a745ab80c0ab036176be1c9ff Mon Sep 17 00:00:00 2001 From: arnaucube Date: Tue, 16 Feb 2021 17:06:26 +0100 Subject: [PATCH] TxProcessor put ExitInfos computation inside TypeSynchronizer logic to avoid computing it for TypeBatchBuilder case --- txprocessor/txprocessor.go | 63 +++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 31 deletions(-) diff --git a/txprocessor/txprocessor.go b/txprocessor/txprocessor.go index 644ba5c..ed330a7 100644 --- a/txprocessor/txprocessor.go +++ b/txprocessor/txprocessor.go @@ -405,40 +405,41 @@ func (tp *TxProcessor) ProcessTxs(coordIdxs []common.Idx, l1usertxs, l1coordinat return nil, nil } - // once all txs processed (exitTree root frozen), for each Exit, - // generate common.ExitInfo data - var exitInfos []common.ExitInfo - exitInfosByIdx := make(map[common.Idx]*common.ExitInfo) - for i := 0; i < nTx; i++ { - if !exits[i].exit { - continue - } - exitIdx := exits[i].idx - exitAccount := exits[i].acc - - // 0. generate MerkleProof - p, err := exitTree.GenerateSCVerifierProof(exitIdx.BigInt(), nil) - if err != nil { - return nil, tracerr.Wrap(err) - } + if tp.s.Type() == statedb.TypeSynchronizer { + // once all txs processed (exitTree root frozen), for each + // Exit, generate common.ExitInfo data + var exitInfos []common.ExitInfo + exitInfosByIdx := make(map[common.Idx]*common.ExitInfo) + for i := 0; i < nTx; i++ { + if !exits[i].exit { + continue + } + exitIdx := exits[i].idx + exitAccount := exits[i].acc - // 1. generate common.ExitInfo - ei := common.ExitInfo{ - AccountIdx: exitIdx, - MerkleProof: p, - Balance: exitAccount.Balance, - } - if prevExit, ok := exitInfosByIdx[exitIdx]; !ok { - exitInfos = append(exitInfos, ei) - exitInfosByIdx[exitIdx] = &exitInfos[len(exitInfos)-1] - } else { - *prevExit = ei + // 0. generate MerkleProof + p, err := exitTree.GenerateSCVerifierProof(exitIdx.BigInt(), nil) + if err != nil { + return nil, tracerr.Wrap(err) + } + + // 1. generate common.ExitInfo + ei := common.ExitInfo{ + AccountIdx: exitIdx, + MerkleProof: p, + Balance: exitAccount.Balance, + } + if prevExit, ok := exitInfosByIdx[exitIdx]; !ok { + exitInfos = append(exitInfos, ei) + exitInfosByIdx[exitIdx] = &exitInfos[len(exitInfos)-1] + } else { + *prevExit = ei + } } - } - if tp.s.Type() == statedb.TypeSynchronizer { - // retuTypeexitInfos, createdAccounts and collectedFees, so Synchronizer will - // be able to store it into HistoryDB for the concrete BatchNum + // return exitInfos, createdAccounts and collectedFees, so + // Synchronizer will be able to store it into HistoryDB for the + // concrete BatchNum return &ProcessTxOutput{ ZKInputs: nil, ExitInfos: exitInfos,