Compatible versions:
Changelog:
Version v0.2.0 is a major release that supports the next upcoming zkEVM UPGRADE ForkID5 (also known as Dragon Fruit). Additionally, it includes new features, performance improvements and fixes.
Main features
Sequencer Performance
A flush ID mechanism has been added to improve performance of the sequencer, as it allows the processing of new transactions while previous ones are still being added to the persistence layer.
EffectiveGasPrice implementation ForkID5
The node is able to better adjust the gas price needed for the execution of a transaction so it may try to optimize it. The effective gas price will be depicted in the receipt of the transaction. This functionality will be available when fork 5 is enabled.
Synchronizer Archive Snapshots
Add the ability to generate and restore snapshots of the network so that synchronization for new instances is done faster. See Instructions.
Synchronizer Performance Improvements
Optimizations have been completed to make the synchronization of the network perform faster.
Retry on Exhausted Executor GRPC Resources
In some situations where the executor is under heavy load it may return a resources exhausted error. If this situation happens with this version, the node will retry the execution instead of only returning an error.
MaxGasPrice L2
The gas prices can now be limited to a maximum value to minimize fluctuations and peaks from L1; and in cases where the ‘follower_gas_pricer’ is used.
Stop Sequencer on Batch
This feature makes network upgrades easier and faster by freezing changes on the Virtual State while allowing changes to happen on the Trusted State. This new feature minimizes the time the network is required to be fully stopped.
Components
All hotfixes done on v0.1.4 are included into v0.2.0 (#2255)
RPC
Only return a tx from the pool if tx is in pending status to avoid etherscan to thread invalid or failed transactions as pending (#2273)
Return effective gas price in the receipt of an L2 tx (#2258)
Fix EffectiveGasprice unsigned transactions with ForkID lower than 5 (#2278) ForkID 5
Synchronizer
- FlushID was added to the Synchronizer (#2287)
- Fixed the ‘CheckIfSynced’, this was impacting the permissionless synchronization as the synchronizer couldn’t close the batch (#2289)
-
Sequencer
- Fixed division by 0 when gasPrice is 0 and [fea2scalar error handling] (#2264)
- Logs order checked. BlockHash and BlockNumber in the log conversion are fixed (#2280)
- L2Block timestamp for the first batch is Fixed (#2260)
- Added missing metric count in the sequencer for expired transactions (#2155)
- Retry on resource exhausted (#2176). This requires new config parameters:
[Executor]
MaxResourceExhaustedAttempts = 3
WaitOnResourceExhaustion = "1s"
- Added pool block reason (#2177)
- Renamed Public to Testnet (#2193)
- Enabled ForkID to choose correct encoding/decoding txs (#2219)
- Added effective_gas_price to receipt (#2222)
- Effective Gas Price Comparison (#2234)
- New gas price estimation using effectivePercentage, integration of HashDB and ForkID5 Smart Contracts (#2196). This requires new config parameters:
[Pool]
IntervalToRefreshGasPrices = "5s"
[Sequencer]
[Sequencer.EffectiveGasPrice]
MaxBreakEvenGasPriceDeviationPercentage = 10
L1GasPriceFactor = 0.25
ByteGasCost = 16
MarginFactor = 1
Enabled = false
- Fixed the storing of Closing Reason when receiving a Forced Batch deadline signal (#2256)
- Fixed L2Blocks timestamp for the first (genesis) batch (#2260)
- Effective GasPrice refactor and other fixes (#2247)
- Added a check to skip appending effectivePercentage if current ForkID is lower than 5 ForkID5 (#2275)
- Added maxL2GasPrice (#2294). This requires new config parameters:
[L2GasPriceSuggester]
MaxGasPriceWei = 0 //Setting it to 0 disables it.
Aggregator
No changes to the Aggregator in this release.