Releases: 0xPolygonHermez/zkevm-node
v0.2.4
Compatible versions:
- Prover: v2.0.1-hotfix.1
- Bridge: v0.2.0
Changelog
Version v0.2.4 is a patch-release, fixing some issues found in v0.2.1 and adding some minor enhancements
Synchronizer
- Fix to store batchl2data when a batch is opened to keep db consistent (#2358)
- Fix "batch already closed" error in permissionless nodes (#2348)
Eth-Tx-Manager
- Added
GasPriceMarginFactor
andMaxGasPrice
configuration parameters to eth-tx-manager (#2360).GasPriceMarginFactor
is used to multiply the suggested gas price provided by the network in order to allow a different gas price to be set for all the transactions and make it
easier to have the txs prioritized in the pool.MaxGasPriceLimit
helps to avoid transactions to be sent over a specified
gas price amount. If the value of this parameter is set to 0 means that there is no limit
[EthTxManager]
GasPriceMarginFactor = 1
MaxGasPriceLimit = 0
Other
- Rename node/prover config files used in docker compose and release files, so they have the same name in all the environments (#2349)
v0.2.1
v0.2.0
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.
v0.1.4
Compatible versions:
- Prover: v1.1.5-fork.4
- Bridge: v0.1.0
Changelog:
Version v0.1.4 is a patch-release, fixing some issues found in v0.1.3 and adding some minor enhancements
RPC
v0.1.3
Compatible versions:
- Prover: v1.1.5-fork.4
- Bridge: v0.1.0
Changelog:
Version v0.1.3 is a patch-release, fixing some issues found in v0.1.2
RPC
- Max RPC message size is now configurable via the toml config file (#2179). You can define the RPC message size using the following new config parameter (value is in bytes):
[Executor]
MaxGRPCMessageSize = 100000000
- Added new pool limits, one for the limit of transactions for all accounts in the pool (
GlobalQueue
) and other for the limit of transactions per account (AccountQueue
) (#2189):
[Pool]
GlobalQueue = 1024
AccountQueue = 64
- Transactions with gas limit over the batch gas limit are now blocked (#2189)
- Fixed websockets concurrency writes error when calling the endpoints in parallel (#2173)
- Fixed
eth_syncing
to return false when node is already synced (#2173) - Fixed custom tracer for edge cases containing internal calls that doesn’t increase the step depth for any reason (#2173)
- Added batch L2 data to the custom endpoint
zkevm_getBatchByNumber
(#2223)
Synchronizer
- Fixed synchronization problem that happens when a forced batch is synced via trusted state in permissionless nodes. To fix this the parameter forcedBatchNumber has been added to the custom endpoint
zkevm_getBatchByNumber
(#2216)
Sequencer
v0.1.2
Compatible versions:
- Prover: v1.1.4-fork.4
- Bridge: v0.1.0
Changelog:
Version v0.1.2 is a patch-release, fixing some issues found in v0.1.1:
v0.1.1
Compatible versions:
- Prover: v1.1.3-fork.4
- Bridge: v0.1.0
Changelog:
Version v0.1.1 is a patch-release, fixing some issues found in v0.1.0:
-
Bug fixing in forced batches processing (#2149):
- Fixed saving L2 Blocks for Forced Batches. NewStateRoot was used as previousL2BlockStateRoot parameter of finalizer.storeProcessedTx function instead of the oldStateRoot for the first transaction
- Fixed check of empty stateRoot. It was checking for empty string instead of zero hash
- Fixed an error when forced batch numbers received from the channel were not in order
-
Protect DecodeTXs function from a variable overflow that could panic it (#2148)
-
Fixed custom tracers memory reading when memory is smaller than stack values (#2152)
-
Fixed custom tracers internal transaction reverts (#2152)
v0.1.0
Compatible versions:
- Prover: v1.1.3-fork.4
- Bridge: v0.1.0
Changelog:
- Completed implementation and testing for forced batch processing (#2093)
- Fixed bugs in decode txs functions that may fail with forced batches (#2091)
- Timestamp resolution is now configurable via the toml config file (#2007, #2112). You can define the time in the following config parameter:
[Sequencer.Finalizer]
TimestampResolution = "10s"
- Storing of closing reason and resources used when closing a batch (#2006)
- Storing of failed reason for invalid transactions (#1992)
- Sequence sender is now executed as a separated component (#2051). Config parameters in the toml config file for the sequence sender are moved from the
Sequencer
section to newSequenceSender
section:
[SequenceSender]
WaitPeriodSendSequence = "5s"
LastBatchVirtualizationTimeMaxWaitPeriod = "5s"
MaxTxSizeForL1 = 131072
SenderAddress = "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"
PrivateKeys = [{Path = "/pk/sequencer.keystore", Password = "testonly"}]
-
New
sequence-sender
option, for the command line flag--components
, that allows to execute the sequence-sender component when running the node (#2051) -
Sync Info table is now being populated (#2055)
-
Fixed deployment tool/instructions (db permissions) (#2076)
-
Refactor getting forkIDs and verify genesis block number (#2076)
-
The following config parameters has been renamed in the toml config file (#2068):
[Sequencer.Finalizer]
GERDeadlineTimeoutInSec -> GERDeadlineTimeout
ForcedBatchDeadlineTimeoutInSec -> ForcedBatchDeadlineTimeout
SleepDurationInMs -> SleepDuration
[RPC]
ReadTimeoutInSec -> ReadTimeout
WriteTimeoutInSec -> WriteTimeout
- The following config parameters has been removed from the toml config file (as are not used)(#2083, #2007, #2051):
[RPC]
ChainID
DefaultSenderAddress
[Sequencer]
WaitPeriodSendSequence
LastBatchVirtualizationTimeMaxWaitPeriod
MaxTxSizeForL1
[Sequencer.Finalizer]
SendingToL1DeadlineTimeoutInSec
SenderAddress
PrivateKeys
- The default value for some config parameters (default.go and toml config files) has been changed (#2083, #2090):
[Pool]
MaxTxBytesSize=100132
MaxTxDataBytesSize=100000
[RPC]
MaxRequestsPerIPAndSecond = 500
[RPC.WebSockets]
Enabled = true
Host = "0.0.0.0"
Port = 8546
[Synchronizer]
SyncInterval = "1s"
- The command line flag
--genesis
has been removed and replaced with--network
(#1999). The values for this new flag can betestnet
,mainnet
orcustom
. Ifcustom
is used then you need to specify the genesis file in the flag--custom-network-file
- Change the way the methods eth_estimateGas and eth_call return the response when the response contains an error related to the transaction, this will avoid generating error logs. (#2096)
- Fixed how the custom tracer handles sub calls (DELEGATECALL). (#2115)