Releases: bnb-chain/op-geth
v0.5.4-pevm.beta.3
TxDAG based parallel transaction execution (PEVM) - Beta 3
What's Changed
add hot fix of crypto ummarshal function
Version
Beta - Not production ready
Based on op-geth v0.5.4
Description
This is the beta release of the op-geth that implements the TxDAG based parallel transaction execution for block synchronization. The goal is to speed up the execution of transactions in blocks by exploiting parallelism in EVM, and improve the performance further with the TxDAG data guidance by reducing the re-execution caused by transaction dependencies.
v0.5.7
v0.5.7
This release introduces the implementation of BEP-543, effectively reducing the block time from 1 second to an impressive 500 milliseconds.
This enhancement significantly improves transaction efficiency and overall network performance, allowing for faster processing and a more seamless experience for users.
It is set to be activated on both the opBNB Mainnet and Testnet environments according to the following schedule:
- Testnet: Apr-02-2025 03:00 AM +UTC
- Mainnet: Mid-Apr-2025
All mainnet and testnet nodes must upgrade to this release before the hardfork time.
What's Changed
FEATURE
BUGFIX
- #270 concurrent issue of local account set in legacypool
Docker Images
ghcr.io/bnb-chain/op-geth:v0.5.7
Full Changelog: v0.5.6...v0.5.7
v0.5.4-pevm.beta.2
TxDAG based parallel transaction execution (PEVM) - Beta 2
What's Changed
Support BEP-543:
Version
Beta - Not production ready
Based on op-geth v0.5.4
Description
This is the beta release of the op-geth that implements the TxDAG based parallel transaction execution for block synchronization. The goal is to speed up the execution of transactions in blocks by exploiting parallelism in EVM, and improve the performance further with the TxDAG data guidance by reducing the re-execution caused by transaction dependencies.
Release goals
- Provide the parallel transaction execution implementation that is 100% compatible with the original EVM.
- Provide the ability to load TxDAG data from on-chain blocks or files
- Provide the op-geth binary release that is verified to successfully sync the block from genesis to latest block with TxDAG and PEVM enabled, and with performance improved in some scenarios and no obvious performance drop overall.
Note
- The opBNB mainnet and testnet have already contains the TxDAG data on chain start from following block:
- opBNB mainnet: block@43274759
- opBNB testnet: block@47121260
- For TxDAG data in previous blocks from genesis, user could download the DAG files with following link:
- opBNB mainnet (block 0-43274759) TxDAG-File
- opBNB testnet (block 0-47121260) TxDAG-File
Options Added
-
--parallel.parallel-merge (default: false)
Enable concurrent merge mode, during the parallel confirm phase, multiple goroutines will be used to perform concurrent merging of execution results. This option will override parallel.unordered-merge
-
--parallel.txdag-max-depth-ratio value (default: 0.9)
A ratio to decide whether or not to execute transactions in parallel, it will fallback to sequencial processor if the depth is larger than this value (default = 0.9)
Usage
- (optional) Get the TxDAG data:
- User could download the TxDAG data for opBNB mainnet or testnet
- Use the following options of the geth to enable TxDAG based parallel execution
-
'--parallel'
-
'--parallel.txtag'
Enable the TxDAG functionality of geth, this will tell EVM to check the TxDAG data existence before block execution
-
(optional) '--parallel.txdagfile=./mainnet_final_43274759.csv'
Optional, Specify the path of the TxDAG data file
-
'--parallel.parallel-merge'
Trust the DAG data, enable the advanced parallel merge optimization and skip conflict check.
-
'--parallel.num=4'
Optional, Specify the parallel execution number, if not assigned, use the core number for the running platform
-
Example
op-geth \
--datadir="./datadir" \
--verbosity=4 \
--http \
--http.corsdomain="*" \
--http.vhosts="*" \
--http.addr=0.0.0.0 \
--http.port=8545 \
--http.api=net,eth,engine,debug \
--pprof \
--pprof.port=6070 \
--ws \
--ws.addr=0.0.0.0 \
--ws.port=8545 \
--ws.origins="*" \
--ws.api=eth,engine \
--syncmode=full \
--networkid=$CHAIN_ID \
--txpool.globalslots=20000 \
--txpool.globalqueue=5000 \
--txpool.accountqueue=200 \
--txpool.accountslots=200 \
--txpool.nolocals=true \
--txpool.pricelimit=1 \
--cache.preimages \
--allow-insecure-unlock \
--authrpc.addr="0.0.0.0" \
--authrpc.port="8551" \
--authrpc.vhosts="*" \
--authrpc.jwtsecret=./jwt.txt \
--rpc.allow-unprotected-txs \
--parallel \
--parallel.txdag \
--parallel.txdagfile=./parallel-txdag-output.csv \
--parallel.parallel-merge \
--parallel.num=4 \
--gcmode=full \
--metrics \
--metrics.port 6068 \
--metrics.addr 0.0.0.0 \
--rollup.sequencerhttp=$L2_RPC \
--rollup.disabletxpoolgossip=false \
--bootnodes=$P2P_BOOTNODES
Additional Info
Conclusions for alpha release
- The performance of PEVM is highly depend on scenarios and dependencies between txs in block
- Generally no obvious degradation of performance observed on mainnet sync
TxDAG data solution
Starting from this release, the TxDAG data file is finalized and will not update in the future.
Now The TxDAG is generated and propagated in blocks on chain, so it guarantee that the TxDAG data will be available with the block transactions
as soon as the block is generated.
More details in BEP-396: Accelerate Block Execution by TxDAG
Docker Image
ghcr.io/bnb-chain/op-geth:v0.5.4-pevm.beta.2
v0.5.6
v0.5.6
This is a minor release for opBNB Mainnet and Testnet.
It includes several performance optimizations and improvements, primarily focused on transaction pool enhancements and block mining efficiency.
Key improvements include tuning snapshot bloom filters for higher TPS, optimizing block mining overhead with a new engine API, and multiple transaction pool optimizations such as cache management, truncation efficiency, direct transaction broadcasting, stale transaction filtering, and asynchronous pricing.
Metrics have also been added to monitor these optimizations.
Upgrading is optional.
What's Changed
- perf: tune snapshot bloom for higher tps by @bnoieh in #230
- perf: support new api engine_opSealPayload and optimize overheads of block mining by @bnoieh in #193
- Txpool optimization: disable cache if --mine is not enabled by @andyzhang2023 in #245
- Txpool optimization: optimize truncate by @andyzhang2023 in #241
- Txpool optimization: broadcast transaction body directly to peer by @andyzhang2023 in #243
- Txpool optimization: filter out staled transactions of "nonce too low" when providing all pending list to miner by @andyzhang2023 in #244
- Txpool opt async priced by @andyzhang2023 in #246
- chore: txpool optimization metrics by @andyzhang2023 in #247
Full Changelog: v0.5.5...v0.5.6
v0.5.5
v0.5.5
This is a hot fix release, the detail about this fix will be revealed later.
Please upgrade your node to this version if your node is exposed to the public network via p2p.
v0.5.4-pevm.beta
TxDAG based parallel transaction execution (PEVM) - Beta
Version
Beta - Not production ready
Based on op-geth v0.5.4
Description
This is the beta release of the op-geth that implements the TxDAG based parallel transaction execution for block synchronization. The goal is to speed up the execution of transactions in blocks by exploiting parallelism in EVM, and improve the performance further with the TxDAG data guidance by reducing the re-execution caused by transaction dependencies.
Release goals
- Provide the parallel transaction execution implementation that is 100% compatible with the original EVM.
- Provide the ability to load TxDAG data from on-chain blocks or files
- Provide the op-geth binary release that is verified to successfully sync the block from genesis to latest block with TxDAG and PEVM enabled, and with performance improved in some scenarios and no obvious performance drop overall.
Note
- The opBNB mainnet and testnet have already contains the TxDAG data on chain start from following block:
- opBNB mainnet: block@43274759
- opBNB testnet: block@47121260
- For TxDAG data in previous blocks from genesis, user could download the DAG files with following link:
- opBNB mainnet (block 0-43274759) TxDAG-File
- opBNB testnet (block 0-47121260) TxDAG-File
Options Added
-
--parallel.parallel-merge (default: false)
Enable concurrent merge mode, during the parallel confirm phase, multiple goroutines will be used to perform concurrent merging of execution results. This option will override parallel.unordered-merge
-
--parallel.txdag-max-depth-ratio value (default: 0.9)
A ratio to decide whether or not to execute transactions in parallel, it will fallback to sequencial processor if the depth is larger than this value (default = 0.9)
Usage
- (optional) Get the TxDAG data:
- User could download the TxDAG data for opBNB mainnet or testnet
- Use the following options of the geth to enable TxDAG based parallel execution
-
'--parallel'
-
'--parallel.txtag'
Enable the TxDAG functionality of geth, this will tell EVM to check the TxDAG data existence before block execution
-
(optional) '--parallel.txdagfile=./mainnet_final_43274759.csv'
Optional, Specify the path of the TxDAG data file
-
'--parallel.parallel-merge'
Trust the DAG data, enable the advanced parallel merge optimization and skip conflict check.
-
'--parallel.num=4'
Optional, Specify the parallel execution number, if not assigned, use the core number for the running platform
-
Example
op-geth \
--datadir="./datadir" \
--verbosity=4 \
--http \
--http.corsdomain="*" \
--http.vhosts="*" \
--http.addr=0.0.0.0 \
--http.port=8545 \
--http.api=net,eth,engine,debug \
--pprof \
--pprof.port=6070 \
--ws \
--ws.addr=0.0.0.0 \
--ws.port=8545 \
--ws.origins="*" \
--ws.api=eth,engine \
--syncmode=full \
--networkid=$CHAIN_ID \
--txpool.globalslots=20000 \
--txpool.globalqueue=5000 \
--txpool.accountqueue=200 \
--txpool.accountslots=200 \
--txpool.nolocals=true \
--txpool.pricelimit=1 \
--cache.preimages \
--allow-insecure-unlock \
--authrpc.addr="0.0.0.0" \
--authrpc.port="8551" \
--authrpc.vhosts="*" \
--authrpc.jwtsecret=./jwt.txt \
--rpc.allow-unprotected-txs \
--parallel \
--parallel.txdag \
--parallel.txdagfile=./parallel-txdag-output.csv \
--parallel.parallel-merge \
--parallel.num=4 \
--gcmode=full \
--metrics \
--metrics.port 6068 \
--metrics.addr 0.0.0.0 \
--rollup.sequencerhttp=$L2_RPC \
--rollup.disabletxpoolgossip=false \
--bootnodes=$P2P_BOOTNODES
Additional Info
Conclusions for alpha release
- The performance of PEVM is highly depend on scenarios and dependencies between txs in block
- Generally no obvious degradation of performance observed on mainnet sync
TxDAG data solution
Starting from this release, the TxDAG data file is finalized and will not update in the future.
Now The TxDAG is generated and propagated in blocks on chain, so it guarantee that the TxDAG data will be available with the block transactions
as soon as the block is generated.
More details in BEP-396: Accelerate Block Execution by TxDAG
Docker Image
ghcr.io/bnb-chain/op-geth:v0.5.4-pevm.beta
v0.5.4
v0.5.4
This is a minor release for opBNB Mainnet and Testnet.
It enables the TxDAG generation feature.
When it's enabled in the sequencer, it will generate TxDAG of the block and append it to the last transaction calldata.
The TxDAG can be used for acceleration of the block execution along with the parallel evm feature released in v0.5.1-pevm.alpha.
It's optional to upgrade to this version since the new feature only works in the sequencer node.
What's Changed
Docker Images
ghcr.io/bnb-chain/op-geth:v0.5.4
Full Changelog: v0.5.3...v0.5.4
v0.5.3
v0.5.3
This is a minor release for opBNB Mainnet and Testnet.
It fixes a txpool memory leak bug that could cause out-of-memory issues.
It is recommended to upgrade to this version for both Mainnet and Testnet if you are running v0.5.1 or v0.5.2.
What's Changed
- fix: txpool reheap out-of-memory issues by @andyzhang2023 in #211
Docker Images
ghcr.io/bnb-chain/op-geth:v0.5.3
Full Changelog: v0.5.2...v0.5.3
v0.5.2
v0.5.2
This is a minor release for opBNB Mainnet and Testnet.
It includes several optimizations and improvements, including the introduction of a new feature to automatically recover from unexpected shutdowns, support for multi-database features, and fixes to various bugs.
Upgrading is optional.
What's Changed
- feat: add recover node buffer list for pathdb by @sysvm in #126
- fix(op-geth): add new field in SimulateGaslessBundleResp by @redhdx in #205
- feat: support multi database feature for op by @jingjunLi in #127
- fix: Fix pbss snapshot inconsistency with engine-sync enabled when starting by @krish-nr in #189
- fix: fix StateScheme overwrite bug by @jingjunLi in #220
- fix(op-geth): fix gasless receipt l1fee by @redhdx in #219
- feat: sequencer auto recover when meet an unexpected shutdown by @krish-nr in #166
New Contributors
- @jingjunLi made their first contribution in #127
Docker Images
ghcr.io/bnb-chain/op-geth:v0.5.2
Full Changelog: v0.5.1...v0.5.2
v0.5.1-pevm.alpha
TxDAG based parallel transaction execution (PEVM) - Alpha
Version
Alpha - Not production ready
Based on op-geth v0.5.1
Description
This is the first release of the op-geth that implements the TxDAG based parallel transaction execution for block synchronization. The goal is to speed up the execution of transactions in blocks by exploiting parallelism in EVM, and improve the performance further with the TxDAG data guidance by reducing the re-execution caused by transaction dependencies.
Release goals
- Provide the parallel transaction execution implementation that is 100% compatible with the original EVM.
- Provide the raw TxDAG data in file format as a POC for TxDAG guided PEVM execution
- Provide the op-geth binary release that is verified to successfully sync the block from genesis to block #15000000 with TxDAG and PEVM enabled, and with performance improved in some scenarios and no obvious performance drop overall.
- Provide the methodology to enable and use the TxDAG base PEVM for block syncing of opBNB.
- Provide the preliminary performance data and analysis for further improvement work
Options Added
-
--parallel (default: false) ($GETH_PARALLEL)
Enable the experimental parallel transaction execution mode, only valid in full sync mode (default = false)
-
--parallel.num value (default: 0) ($GETH_PARALLEL_NUM)
Number of slot for transaction execution, only valid in parallel mode (runtime calculated, no fixed default value)
-
--parallel.txdag (default: false) ($GETH_PARALLEL_TXDAG)
Enable the experimental parallel TxDAG generation, only valid in full sync mode (default = false)
-
--parallel.txdagfile value (default: "./parallel-txdag-output.csv") ($GETH_PARALLEL_TXDAGFILE)
It indicates the TxDAG file path
-
--parallel.unordered-merge (default: false) ($GETH_PARALLEL_UNORDERED_MERGE)
Enable unordered merge mode, during the parallel confirm phase, merge transaction execution results without following the transaction order.
Usage
- Get the TxDAG data:
- User could download the TxDAG data from https://pub-c0627345c16f47ab858c9469133073a8.r2.dev/opbnb-txdag/parallel-txdag-output_compare_15000000.csv
- Use the following options of the geth to enable TxDAG based parallel execution
-
'--parallel'
-
'--parallel.txtag'
Enable the TxDAG functionality of geth, this will tell EVM to check the TxDAG data existence before block execution
-
'--parallel.txdagfile=./parallel-txdag-output_compare_15000000.csv'
Specify the path of the TxDAG data file
-
'--parallel.unordered-merge'
Trust the DAG data, enable the advanced unordered-merge optimization and skip conflict check.
-
'--parallel.num=4'
Optional, Specify the parallel execution number, if not assigned, use the core number for the running platform
-
Example
op-geth \
--datadir="./datadir" \
--verbosity=4 \
--http \
--http.corsdomain="*" \
--http.vhosts="*" \
--http.addr=0.0.0.0 \
--http.port=8545 \
--http.api=net,eth,engine,debug \
--pprof \
--pprof.port=6070 \
--ws \
--ws.addr=0.0.0.0 \
--ws.port=8545 \
--ws.origins="*" \
--ws.api=eth,engine \
--syncmode=full \
--networkid=$CHAIN_ID \
--txpool.globalslots=20000 \
--txpool.globalqueue=5000 \
--txpool.accountqueue=200 \
--txpool.accountslots=200 \
--txpool.nolocals=true \
--txpool.pricelimit=1 \
--cache.preimages \
--allow-insecure-unlock \
--authrpc.addr="0.0.0.0" \
--authrpc.port="8551" \
--authrpc.vhosts="*" \
--authrpc.jwtsecret=./jwt.txt \
--rpc.allow-unprotected-txs \
--parallel \
--parallel.txdag \
--parallel.txdagfile=./parallel-txdag-output.csv \
--parallel.unordered-merge \
--parallel.num=4 \
--gcmode=full \
--metrics \
--metrics.port 6068 \
--metrics.addr 0.0.0.0 \
--rollup.sequencerhttp=$L2_RPC \
--rollup.disabletxpoolgossip=false \
--bootnodes=$P2P_BOOTNODES
Performance
Scenario | Description | mgasps (Original) |
mgasps (PEVM) |
Improvement | Comments |
---|---|---|---|---|---|
A | Internal test chain blocks with 250k accounts transfer to another 250k account | 107 | 202 | 88% | conflict rate(avg): ~0% txs in block(avg): 3103 |
B | Internal test chain blocks with 250k accounts transfer to 1 fixed account | 201 | 216 | 7% | conflict rate(avg): ~95% txs in block(avg): 3644 |
C | Internal test chain blocks contain random selected txs with a mix of smart contract and native transfer | 155 | 228 | 47% | conflict rate(avg): ~81% txs in block(avg): 1356 |
Mainnet | opBNB mainnet block range from #9m-9.3m | 9.3 | 11.2 | 20% | conflict rate(avg): ~12% txs in block(avg): 25 |
Mainnet | opBNB mainnet block range from #11.9m-12.1m (mostly inscription txs) | 57 | 61.1 | 7% | conflict rate(avg): ~50% txs in block(avg): 2195 |
Additional Info
Conclusions for alpha release
- The performance of PEVM is highly depend on scenarios and dependencies between txs in block
- Generally no obvious degradation of performance observed on mainnet sync (from block#1 to #15000000)
TxDAG data solution
The current file-based TxDAG data solution will be optimized with an alternative gasless transaction based
TxDAG transfer in the future. It will guarantee that the TxDAG data will be available with the block transactions
as soon as the block is generated.
More details in BEP-396: Accelerate Block Execution by TxDAG
Docker Image
ghcr.io/bnb-chain/op-geth:v0.5.1-pevm.alpha