Update coordinator, call all api update functions
- Common:
- Rename Block.EthBlockNum to Block.Num to avoid unneeded repetition
- API:
- Add UpdateNetworkInfoBlock to update just block information, to be
used when the node is not yet synchronized
- Node:
- Call API.UpdateMetrics and UpdateRecommendedFee in a loop, with
configurable time intervals
- Synchronizer:
- When mapping events by TxHash, use an array to support the possibility
of multiple calls of the same function happening in the same
transaction (for example, a smart contract in a single transaction
could call withdraw with delay twice, which would generate 2 withdraw
events, and 2 deposit events).
- In Stats, keep entire LastBlock instead of just the blockNum
- In Stats, add lastL1BatchBlock
- Test Stats and SCVars
- Coordinator:
- Enable writing the BatchInfo in every step of the pipeline to disk
(with JSON text files) for debugging purposes.
- Move the Pipeline functionality from the Coordinator to its own struct
(Pipeline)
- Implement shouldL1lL2Batch
- In TxManager, implement logic to perform several attempts when doing
ethereum node RPC calls before considering the error. (Both for calls
to forgeBatch and transaction receipt)
- In TxManager, reorganize the flow and note the specific points in
which actions are made when err != nil
- HistoryDB:
- Implement GetLastL1BatchBlockNum: returns the blockNum of the latest
forged l1Batch, to help the coordinator decide when to forge an
L1Batch.
- EthereumClient and test.Client:
- Update EthBlockByNumber to return the last block when the passed
number is -1.
4 years ago |
|
package api
import ( "math/big" "strconv" "time"
ethCommon "github.com/ethereum/go-ethereum/common" "github.com/hermeznetwork/hermez-node/common" "github.com/iden3/go-merkletree" )
func AddAditionalInformation(blocks []common.BlockData) { for i := range blocks { blocks[i].Block.Timestamp = time.Now().Add(time.Second * 13).UTC() blocks[i].Block.Hash = ethCommon.BigToHash(big.NewInt(blocks[i].Block.Num)) for j := range blocks[i].Rollup.AddedTokens { blocks[i].Rollup.AddedTokens[j].Name = "Test Token " + strconv.Itoa(int(blocks[i].Rollup.AddedTokens[j].TokenID)) blocks[i].Rollup.AddedTokens[j].Symbol = "TKN" + strconv.Itoa(int(blocks[i].Rollup.AddedTokens[j].TokenID)) blocks[i].Rollup.AddedTokens[j].Decimals = 18 } for x := range blocks[i].Rollup.Batches { for q := range blocks[i].Rollup.Batches[x].CreatedAccounts { blocks[i].Rollup.Batches[x].CreatedAccounts[q].Balance = big.NewInt(int64(blocks[i].Rollup.Batches[x].CreatedAccounts[q].Idx * 10000000)) } for y := range blocks[i].Rollup.Batches[x].ExitTree { blocks[i].Rollup.Batches[x].ExitTree[y].MerkleProof = &merkletree.CircomVerifierProof{ Root: &merkletree.Hash{byte(y), byte(y + 1)}, Siblings: []*merkletree.Hash{ merkletree.NewHashFromBigInt(big.NewInt(int64(y) * 10)), merkletree.NewHashFromBigInt(big.NewInt(int64(y)*100 + 1)), merkletree.NewHashFromBigInt(big.NewInt(int64(y)*1000 + 2))}, OldKey: &merkletree.Hash{byte(y * 1), byte(y*1 + 1)}, OldValue: &merkletree.Hash{byte(y * 2), byte(y*2 + 1)}, IsOld0: y%2 == 0, Key: &merkletree.Hash{byte(y * 3), byte(y*3 + 1)}, Value: &merkletree.Hash{byte(y * 4), byte(y*4 + 1)}, Fnc: y % 2, } } } } }
|