Optimistic transaction parallelization execution during block processing to improve the performances. This feature can enabled with a flag --Xbonsai-parallel-tx-processing-enabled=true
Signed-off-by: Karim Taam <karim.t2am@gmail.com>
Co-authored-by: Ameziane H <ameziane.hamlat@consensys.net>
Co-authored-by: garyschulte <garyschulte@gmail.com>
* Update parameterized unit tests so the enumerate with --dry-run
* Update the prague-withdrawal.json unit test to handle current code
Signed-off-by: Danno Ferrin <danno@numisight.com>
Co-authored-by: Sally MacFarlane <macfarla.github@gmail.com>
* EthPeer add isServingSnap to be able to make sure that we have enough snap servers connected when we are snap syncing
Signed-off-by: stefan.pingel@consensys.net <stefan.pingel@consensys.net>
Signed-off-by: Sally MacFarlane <macfarla.github@gmail.com>
Co-authored-by: Sally MacFarlane <macfarla.github@gmail.com>
* Create a BFT-specific pivot block handler
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Change visibility
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Refactor sync-peer-count internal variable to match name, add experimental flag to enabled snap + BFT
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Merge with main
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Fix uppercase
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Address synchronization issue with trie pruning. Create BFT-specific account range handler. Add pipeline name and logs
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Remove debug log
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* fixing snapsync for empty state
Signed-off-by: Karim Taam <karim.t2am@gmail.com>
* Don't queue up events we can't handle
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Fix timing window where a validator with an empty data dir sometimes falls back to full sync if peer status isn't received quickly enough
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Remove BFT-specific account request class. Not needed
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Refactor some more 'fast' sync variables that are common to all pivot-based sync types
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* In FULL sync mode, disable bonsai-limit-trie-logs-enabled instead of failing to start
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Add javadoc comments, clarify overriding bonsai-limit-trie-logs-enabled
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Add BFT pivot block selector tests
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Fix failure error message
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Remove the unnamed Pipe constructor and update tests to set a pipe name
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Revert some info logs back to debug given the feedback on noise in the logs syncing with holesky
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Refactor fastSyncPivotDistance to syncPivotDistance
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Incomplete refactoring
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Update BFT event queueing tests
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Event queue test fixes
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Remove automatic setting of bonsai-limit-trie-logs-enabled to false if sync-mode = FULL (moving to another PR)
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
---------
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
Signed-off-by: Karim Taam <karim.t2am@gmail.com>
Signed-off-by: Matt Whitehead <matthew.whitehead@kaleido.io>
Co-authored-by: Karim Taam <karim.t2am@gmail.com>
* Add info-level diagnostic logs to aid with resolving stalled BFT chains
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Add javadoc
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
---------
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
Signed-off-by: Matt Whitehead <matthew.whitehead@kaleido.io>
* Improve the selection of the most profitable built block
Signed-off-by: Fabio Di Fabio <fabio.difabio@consensys.net>
* Update CHANGELOG
Signed-off-by: Fabio Di Fabio <fabio.difabio@consensys.net>
* Update consensus/merge/src/main/java/org/hyperledger/besu/consensus/merge/PayloadWrapper.java
Co-authored-by: Justin Florentine <justin+github@florentine.us>
Signed-off-by: Fabio Di Fabio <fabio.difabio@consensys.net>
---------
Signed-off-by: Fabio Di Fabio <fabio.difabio@consensys.net>
Co-authored-by: Justin Florentine <justin+github@florentine.us>
* Don't perform validation of withdrawals in BFT chains
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Spotless
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Remove withdrawal unit test - not applicable any more
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
---------
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
Co-authored-by: Sally MacFarlane <macfarla.github@gmail.com>
* New RPC methods to set and get block extra data
Signed-off-by: Fabio Di Fabio <fabio.difabio@consensys.net>
* Remove redundant methods to set the extra data
Signed-off-by: Fabio Di Fabio <fabio.difabio@consensys.net>
* miner_getExtraData unit tests
Signed-off-by: Fabio Di Fabio <fabio.difabio@consensys.net>
* Add CHANGELOG
Signed-off-by: Fabio Di Fabio <fabio.difabio@consensys.net>
* Apply suggestions from code review
Co-authored-by: Sally MacFarlane <macfarla.github@gmail.com>
Signed-off-by: Fabio Di Fabio <fabio.difabio@consensys.net>
---------
Signed-off-by: Fabio Di Fabio <fabio.difabio@consensys.net>
Co-authored-by: Sally MacFarlane <macfarla.github@gmail.com>
Upgrade spotless to 1.22.0 and reformat.
This is required for Java21 support.
Signed-off-by: Danno Ferrin <danno@numisight.com>
Co-authored-by: Danno Ferrin <danno@numisight.com>
Co-authored-by: Sally MacFarlane <macfarla.github@gmail.com>
* Ensure empty withdrawal lists are set in BFT blocks when the protocol schedule is shanghai or higher
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Unit tests missing mock
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Unit tests missing mock
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Refactor and reduce code duplication
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
---------
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
Signed-off-by: Matt Whitehead <matthew.whitehead@kaleido.io>
Move Besu custom error-prone checks into its own repository and use it as an external dependency. This allows to move to a newer version of Google errorprone checks as well while cleaning up build.gradle file.
Key changes resulted due to this change:
* String toLowerCase and toUpperCase to use Locale.ROOT as argument
* Use interface such as List,Map or NavigatableMap instead of concrete class where appropriate.
* Simplify StringBuilder to plain String
* Suppress warnings where appropriate.
-----
Signed-off-by: Usman Saleem <usman@usmans.info>
Support clique transitions for createemptyblocks boolean
---------
Signed-off-by: Jason Frame <jason.frame@consensys.net>
Signed-off-by: Simon Dudley <simon.dudley@consensys.net>
Co-authored-by: Jason Frame <jason.frame@consensys.net>
Add BFT-style transitions to Clique, modelled with ForksSchedule<CliqueConfigOptions>
Add ability to transition the blockperiodseconds config.
---------
Signed-off-by: Jason Frame <jason.frame@consensys.net>
Signed-off-by: Simon Dudley <simon.dudley@consensys.net>
Co-authored-by: Jason Frame <jason.frame@consensys.net>
* Log changes in BFT validators
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Move the log entry to the block expiry handler, not the round change validator, and only log on round 0
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Remove unused imports
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Javadoc
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Remaining javadoc fix
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Better javadoc fix
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Spotless
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Spotless
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Merge fix
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
---------
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
Signed-off-by: Matt Whitehead <matthew.whitehead@kaleido.io>
Add a sender cache to Transaction.java, the senders and transactions' hashes are calculated when the transactions are decoded from the newPayload.
Signed-off-by: Ameziane H <ameziane.hamlat@consensys.net>
Co-authored-by: Fabio Di Fabio <fabio.difabio@consensys.net>
* Refactored version of QBFT/shanghai
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* More refactoring
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Add equivalent IBFT fixes. Update QBFT and IBFT round tests
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Update the change log
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Remove old comments
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Add shanghai contract validator test
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Add shanghai acceptance test
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Add Shanghai to the combined protocol schedule test, update IBFT message validator creation
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Fix merge
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Update tests to use shanghai time > 0
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Address PR comments
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Refactor unit tests
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Refactor unit tests
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* IbftRoundTests update
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Address PR comments
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Remove unnecessary class type check
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
---------
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
Signed-off-by: Matt Whitehead <matthew1001@gmail.com>
Signed-off-by: Matt Whitehead <matthew.whitehead@kaleido.io>