v0.5.7
Compatible versions:
Etrog changelog
Precompiled
- add support for the following precompiled smart contracts
- sha256
- modexp
- ecadd
- ecmul
- ecpairing
L1InfoTree
- merkle tree that contains historical data
- saved in the smart contracts
- each leaf contains the following parameters:
ger
: global exit rootblockHashL1
: blockHash of the L1 networkminTimestamp
: minimum timestamp
changeL2Block transaction
- add a marker in the batch data which allows to change L2Block inside a batch
- format:
fields: [type | deltaTimestamp | indexL1InfoTree ]
bytes: [ 1 | 4 | 4 ]
- where
type
: transaction type to allow differentiate between preEIP155 and legacy transactionsdeltaTimestamp
: time to add to previous block in order to compute the current block timestampindexL1InfoTree
: leaf index in the l1InfoTree. The index will determine the paraneters to insert into L2
BlockInfoTree
- SMT to include all the block data while the L2 Block is being processed
- Allow to verify data returned by the RPC
- Data included in the
BlockInfoTree
:- header
- previousBlockHash
- coinbaseL2
- blockNumber
- gasLimit
- timestamp
- ger
- blockHashL1
- gasUSed
- each transaction processed
- l2TxHash
- status
- cumulativeGasUsed
- logsData
- header
Changelog from v0.5.0 to v0.5.7
RPC
- Fix L2 block gas limit using the value returned by the executor (#3190)
- Fix eth_syncing endpoint as it was not returning the expected values (#3165)
- Get forkid information from state DB each time is needed instead to use the forkid information stored in memory when starting (#3196, #3197)
- Fix GetL2TxHashByTxHash function for transactions prior to Etrog fork (#3209)
Synchronizer
- Fix handling ROM errors (#3177)
- Fix getting URL from contract in compatibility mode (#3191)
- Set syncing mode (
L1SynchronizationMode
config parameter) assequential
by default (#3191) - Fix syncing trusted state for batches previous to Etrog fork (#3175)
- Fix some warnings when syncing a closed trusted batch (#3169)
- Discard L1InfoTree cache when a L1 reorg happens. Build L1InfoTree cache only when needed (#3201)
- Fix panic error when a batch must be closed and the process batch request fails (#3206)
- Fix store GER in batch table when receiving UpdateEtrogSequence event (#3234)
Sequencer
- Fix parentHash when storing a new L2 block (#3171)
- Fix intermediate state root in data streamer for L2 blocks sent from the sequencer (#3192, #3224)
Sequence sender
- Add sanity check: timestamp of the last L2 block in the sequence is also
L1BlockTimestampMargin
seconds behind the current time "now" (#3181) - Fix synced process to check first if the last virtual batch number was equal to the last sequenced batch number in the L1 smart contract (#3188)
- Add retries in isSynced function when last virtual batch is greater than last SC sequenced batch to confirm this scenario. If after the retries the last virtual batch continues been greater than the last SC sequenced batch the Sequence sender will halt (#3225)