All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Limit the number of bytes read by NR RPC middleware
- Add fix #30014 and #30430 from upstream
- Enforce pricelimit (10 gwei) on rewards values returned by
eth_feeHistory
- Remove deployer allowlist
- Add
GETH_FLAG_IMMUTABLE_LONG_RANGE_SYNC
flag to allow snap sync from genesis
This release enables Cancun fork on all Immutable zkEVM networks.
Network | Unix Timestamp | Date |
---|---|---|
Devnet | 1724796000 | Tue Aug 27 22:00:00 UTC 2024 |
Testnet | 1727128800 | Mon Sep 23 22:00:00 UTC 2024 |
Mainnet | 1728338400 | Mon Oct 7 22:00:00 UTC 2024 |
- Enable
ExcessBlobGas
,BlobGasUsed
,ParentBeaconRoot
- All values are
0x0
- All values are
- Enable
WithdrawalsHash
, andWithdrawals
headersWithdrawals
are empty andWithdrawalsHash
is the corresponding digest
- Enable
TSTORE
,TLOAD
, andMCOPY
op codes - Enable
BLOBHASH
op code - Enable Point Evaluation precompile
- Update
SELFDESTRUCT
op code - Update clique stack to support Cancun
- Disable blob transactions
- Re-order logic that sets blob block headers and beacon root header to after
engine.Prepare
in order to interoperate with clique which produces variable blocktimes (rather than fixed slots)
- Add
--gossipdefault
flag to toggle default geth tx gossiping - Add GETH_FLAG_P2P_SUBNET env var to limit inbound messages based on subnet
- Add specific peer message handling in
eth/handler.go
to disable ingestion of state - Add
--rpcproxy
flag to toggle RPC proxy forwarding - Add RPC proxy forwarding to Immutable zkEVM
- Add
--disabletxpoolgossip
flag to disable tx gossiping - Add
--gossipdefault
flag to toggle default geth tx gossiping - Add GETH_FLAG_P2P_SUBNET env var to limit inbound messages based on subnet
- Added partner public role to init container logic
- Add log to correlate block period with block number and hash
- Reject forkids that do not contain prevrandao fork
- Disable more RPC namespaces
- Correct the embedded mainnet.toml's price limit value to 10 gwei
- Add prevrandao fork to forkid
- Pull v1.13.15 from upstream: ethereum/go-ethereum
- Log peer fullnames rather than abbreviated
- Do not rate limit peer connections that match on the supplied networks from the net restrict configuration
- Reduce p2p discv4 default refresh interval
- Create Prevrandao fork
- Fix issues syncing with testnet and mainnet relating to Prevrandao fork
- Update geth version logic to be based on immutable/go-ethereum releases
- Add
downloader/sync
metric
- Pull v1.13.14 from upstream: ethereum/go-ethereum
- Make
DefaultBaseFeeChangeDenominator
consistent with upstream (8) and mutate it based on chain configuration- If chain configuration matches Immutable zkEVM network ID and clique settings, set
DefaultBaseFeeChangeDenominator
to 50
- If chain configuration matches Immutable zkEVM network ID and clique settings, set
- Validate chain configuration based on expected values if Immutable zkEVM network ID is specified
- Use minimum price limit instead of last price to represent the priority fee of each fetched empty block inside suggested tip cap endpoint.
- Add block period, block propagation, and suggested tip cap metrics
- Fix PREVRANDAO opcode on shanghai network by setting random to mixhash
- Testing release flow
- Enforce minimum price limit on suggested tip cap endpoint
This release enables Shanghai fork on all Immutable zkEVM networks.
Network | Unix Timestamp | Date |
---|---|---|
Devnet | 1709067600 | Tue Feb 27 21:00:00 UTC 2024 |
Testnet | 1710280800 | Tue Mar 12 22:00:00 UTC 2024 |
Mainnet | 1711490400 | Tue Mar 26 22:00:00 UTC 2024 |
The following changes were made to support the forks:
- Update clique to
- allow for Shanghai to be enabled; and
- log more detail around existence of withdrawals and withdrawals hashes
- Update geth node initialization from genesis
- Add command to be used instead of
geth init
geth immutable bootstrap rpc --zkevm testnet --datadir "..."
- genesis.json has been removed from Docker image
- Add command to be used instead of
- Update geth node run configuration
- Add
--zkevm [testnet|mainnet]
flag to automatically configure genesis and fork overrides
- Add
- Add
geth immutable run boot
command for running boot node on cluster - Move boot node p2p keys to Secrets Manager
- Update logs around allowlists
- Added more logging for ACL initialisation and a log when ACL rejects a TX from pool
- Re-enabled single sequencer invariants
- Change pod initialization process to use Put instead of Push
- Implement Immutable wallet backend
- Add AWS Secrets Manager backend store implementation for private key access via AWS
- Add local keystore backend store implementation for testing purposes
- Add
GETH_FLAG_IMMUTABLE_AWS_REGION
andPOD_NAMESPACE
env var support for configuring aws wallet backend - Add
GETH_FLAG_PASSWORD_FILEPATH
env var to existing password filepath flag
- Added flag to disable Clique endpoints on RPC server
- Added Clique Client
- Added CLI for Clique Voting
- Revert dialHistoryExpiration change back to 35s
- Revert change to always drop peers when find node errors are greater than the threshold
- Reduce dialHistoryExpiration from 35 seconds to 5
- Decrease
seedMaxAge
to 1 second to ensure that nodes always query boot node for peer IPs - Always drop peers when find node errors are greater than the threshold
- Automation / CD updates only. Releasing with latest prod workflows.
- Added max block range for logs queried using eth_getLogs (#346)
- Default mainnet configuration (
/etc/geth/mainnet.toml
) and genesis (/etc/geth/mainnet.json
) added to Docker image
- Automation / CD updates only: immutable init command
- Automation / CD updates only
- Reduce price limit 100->10 Gwei
- Default testnet configuration (
/etc/geth/testnet.toml
) and genesis (/etc/geth/testnet.json
) added to Docker image
- Add NewRelic agent to geth runtime for application metrics
- Price limit being 100 Gwei rather than 100 Gwei - 1 Wei
- Fixed bug in ACLs that caused transactions to be blocked when they should not have been
- Change to add access control layer to geth legacypool, which safeguards txs from entering txpool if the sender is part of a collective SDN list (#17)
- Mempool Rebroadcasting: Legacy pool now rebroadcasts pending transactions whenever a pool reorg is triggered. Pool reorgs are triggered when a new block is received - (#103)
- Transaction Broadcasting: Transactions are broadcast to all peers, not a square root. All peers get the transaction, regardless of whether they may have previously received it. All peers get the full transaction payload, i.e. no more announcements. (#103)
- Changed
maxUncleDist
from 7 to 0. This means old blocks are rejected, reducing chance of reorgs. (#156) - Changed
maxQueueDist
from 32 to 256. This means more blocks in the future can be received without being rejected. This is to account for our increased block production due to reduced block time. (#156) - Changed
blockLimit
from 64 to 256. Since we only have a small amount of peers, more will come from the same set of peers, so we need to allow for this. (#156) - Added invariants to prevents reorgs (#175)
- Added check for NoLocals on legacytxpool to reject underpriced TXs
- Changed the
DefaultBaseFeeChangeDenominator
from 8 to 50. This makes the max base fee rate of change 2%, instead of 12.5%. With a block time of 2 seconds, we match Ethereum in that it would take 72 seconds for the base fee to double. (#178) - Mine a tx even if its effective tipcap (tipcap-basefee) is less than miner's minimum tipcap (which is pricelimit, or 100 gwei) (#258)
- CLI commands for bootstrapping local and remote Immutable chains
- Added CLI parameter options for the geth immutable bootstraper, which can potentially takes in a list of filepaths for blocklists and allowlists (#83)
- Added flags to disable Admin/Txpool/Engine/Debug endpoints on RPC server