mirror of
https://github.com/arnaucube/hermez-node.git
synced 2026-02-08 03:46:52 +01:00
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.
This commit is contained in:
@@ -1,6 +1,11 @@
|
||||
package coordinator
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"path"
|
||||
|
||||
"github.com/ethereum/go-ethereum/core/types"
|
||||
"github.com/hermeznetwork/hermez-node/common"
|
||||
"github.com/hermeznetwork/hermez-node/eth"
|
||||
@@ -33,4 +38,22 @@ type BatchInfo struct {
|
||||
// FeesInfo
|
||||
TxStatus TxStatus
|
||||
EthTx *types.Transaction
|
||||
Receipt *types.Receipt
|
||||
}
|
||||
|
||||
// DebugStore is a debug function to store the BatchInfo as a json text file in
|
||||
// storePath
|
||||
func (b *BatchInfo) DebugStore(storePath string) error {
|
||||
batchJSON, err := json.Marshal(b)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
oldStateRoot := "null"
|
||||
if b.ZKInputs != nil && b.ZKInputs.OldStateRoot != nil {
|
||||
oldStateRoot = b.ZKInputs.OldStateRoot.String()
|
||||
}
|
||||
filename := fmt.Sprintf("%010d-%s.json", b.BatchNum, oldStateRoot)
|
||||
// nolint reason: 0640 allows rw to owner and r to group
|
||||
//nolint:gosec
|
||||
return ioutil.WriteFile(path.Join(storePath, filename), batchJSON, 0640)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user