Releases: bnb-chain/op-geth
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
v0.5.1
v0.5.1
This release includes various optimizations and improvements to transaction processing, CI support, and network infrastructure.
This is a minor release for opBNB Mainnet and Testnet.
Upgrading is optional.
What's Changed
- fix(ci): support building arm64 architecture (#165)
- optimization: enqueue transactions in parallel from p2p (#173)
- optimization: enlarge p2p buffer size and add some metrics for performance monitor (#171)
- optimization: txpool pricedlist only reheap when pool is full (#175)
- optimization: txpool pending cache improvement (#177)
- chore: add bootnode in us region(testnet) (#194)
Docker Images
ghcr.io/bnb-chain/op-geth:v0.5.1
Full Changelog: v0.5.0...v0.5.1
v0.5.0
v0.5.0
This release includes code merging from the upstream version v1.101315.2 along with several fixs and improvements. Fjord fork from upstream is included.
Fjord fork is scheduled to launch on the opBNB:
Testnet: Sep-10-2024 06:00 AM +UTC
Mainnet: Sep-24-2024 06:00 AM +UTC
User Facing Changes
Nodes on the Testnet and Mainnet need to be upgraded to this version before the hard fork time.
What's Changed
- Merge upstream op-geth v1.101315.2 by @redhdx in #123
- feature(op-geth): update opBNB qanet config by @redhdx in #138
- fix: txpool legacy pool Pending() applies filter @andyzhang2023 in #124
- feature(op-geth): Add extra error info when meet an unexpected el sync @krish-nr in #132
- feat: cache lastTail in txindexer to avoid read from db by @bnoieh in #157
Docker Images
ghcr.io/bnb-chain/op-geth:v0.5.0
Full Changelog: v0.4.6...v0.5.0
v0.4.6
This is a minor release for opBNB Mainnet and Testnet.
Upgrading is optional.
What's Changed
- perf: add DialOptions function for Dial by @constwz in #140
- Fix: clear difflayer cache when truncate not triggered by @krish-nr in #141
- fix addBundle issue by @redhdx in #143
New Contributors
Docker Images
- ghcr.io/bnb-chain/op-geth:v0.4.6
Full Changelog: v0.4.5...v0.4.6
v0.4.5
v0.4.5
This is a hard fork release for the opBNB Mainnet called Wright. It will be activated on August 27, 2024, at 6 AM UTC.
All mainnet op-geth nodes must upgrade to this release before the hard fork.
The testnet hardfork will be activated on August 15, 2024, at 6 AM UTC.
If you have upgraded your testnet op-geth to version 0.4.4, you can skip this version for the testnet. Otherwise, you can directly upgrade your testnet op-geth to version 0.4.5.
User Facing Changes
To support gasless transactions on opBNB, the following features have been introduced:
- The base fee is set to 0.
- The bundle feature is supported.
- When the gas price is set to 0, the L1 fee will also be set to 0.
Combined with these features and a sponsor (paymaster), users can send transactions without holding BNB to pay gas fees.
Changelogs
- perf: speedup pbss trienode read by @will-2012 in #122
- pathdb: handle persistent id when using nodebufferlist by @sysvm in #121
- feat: support auto recover when pbss meet unclean shutdown by @krish-nr in #125
- fix: ignore truncation target range as flush not operated on time by @krish-nr in #131
- feature(op-geth): add opbnb gasless solution by @redhdx in #130
Docker Images
- ghcr.io/bnb-chain/op-geth:v0.4.5
Full Changelog: v0.4.3...v0.4.5
v0.4.4
v0.4.4
This is a hard fork release for the opBNB Testnet called Wright. It will be activated on August 15, 2024, at 6 AM UTC.
All testnet nodes must upgrade to this release before the hard fork.
Upgrading for mainnet nodes is optional.
User Facing Changes
To support gasless transactions on opBNB, the following features have been introduced:
- The base fee is set to 0.
- The bundle feature is supported.
- When the gas price is set to 0, the L1 fee will also be set to 0.
Combined with these features and a sponsor (paymaster), users can send transactions without holding BNB to pay gas fees.
Changelogs
- perf: speedup pbss trienode read by @will-2012 in #122
- pathdb: handle persistent id when using nodebufferlist by @sysvm in #121
- feat: support auto recover when pbss meet unclean shutdown by @krish-nr in #125
- fix: ignore truncation target range as flush not operated on time by @krish-nr in #131
- feature(op-geth): add opbnb gasless solution by @redhdx in #130
Docker Images
- ghcr.io/bnb-chain/op-geth:v0.4.4
Full Changelog: v0.4.3...v0.4.4
v0.4.3
0.4.3
This is a minor release for opBNB Mainnet and Testnet.
Upgrading is optional.
User Facing Changes
- Conducted several performance improvements for txpool and block execution.(#89, #84, #85, #92)
- Added
--journalFile
flag to enable/disable the journal file feature. #95
What's Changed
- feat(txpool): improve performance of Reheap by @andyzhang2023 in #89
- feat(txpool): improve demotion unexecutable transactions by @andyzhang2023 in #84
- opt: do verify and commit concurrently by @joeylichang in #92
- improve Pending() of txpool to reduce the latency when miner worker committing transactions by @andyzhang2023 in #85
- core/trie: persist TrieJournal to journal file instead of kv database by @sysvm in #95
- add some metrics for txpool by @andyzhang2023 in #120
Docker Images
ghcr.io/bnb-chain/op-geth:v0.4.2
Full Changelog: v0.4.2...v0.4.3
v0.4.2
This is the mainnet hardfork release version.
Four hard forks are scheduled to launch on the opBNB Mainnet:
Shanghai/Canyon Time: 2024-06-20 08:00:00 AM UTC
Delta Time: 2024-06-20 08:10:00 AM UTC
Cancun/Ecotone Time: 2024-06-20 08:20:00 AM UTC
Haber Time: 2024-06-20 08:30:00 AM UTC
All mainnet op-geth
have to be upgraded to this version before 2024-06-20 08:00:00 AM UTC.
The op-node
also have to be upgraded to v0.4.2 accordingly, check this for more details.
What's Changed
- fix: adjust flush condition to avoid not flush by @will-2012 in #114
- config: Mainnet Shanghai/Canyon/Cancun/Ecotone/Haber fork time by @welkin22 in #116
Docker Images
ghcr.io/bnb-chain/op-geth:v0.4.2
Full Changelog: v0.4.1...v0.4.2
v0.4.1
This is the Haber Hardfork release for opBNB Testnet.
The Haber hardfork will be activated on May 30, 2024, at 6:00 AM UTC.
All testnet nodes must upgrade to this release before the hardfork.
Upgrading for other networks is optional.
User Facing Changes
What's Changed
- cmd/dbcmd: add inspect trie tool by @sysvm in #103
- fix: cherry-picked from upstream code by @welkin22 in #109
- fix: add miss cache code after 4844 merge by @welkin22 in #110
- feat: add proof keeper by @will-2012 in #90
- feature(op-geth): add precompile for secp256r1 curve after haber hardfork by @redhdx in #112
Docker Images
- ghcr.io/bnb-chain/op-geth:v0.4.1
Full Changelog: v0.4.0...v0.4.1