Splitting Bonsai code: This commit aims to divide Bonsai into two packages
- Common Classes with a Prefix: The common part will include classes prefixed with "DiffBased." These classes are designed to provide a base for both Bonsai and any future storage format that might use this diff-based approach.
- Bonsai's Specifics: Bonsai will retain its unique features in its own package. This means that while it shares the diff-based infrastructure with the common part, it also has its own specific functionalities that are not shared with other storage format.
- Extension to Verkle: this modification add the possibility of adding "Verkle" as a new storage format based on the diff-based architecture. Like Bonsai, Verkle would use the common diff-based classes but also have its own specific features.
---------
Signed-off-by: Karim TAAM <karim.t2am@gmail.com>
Signed-off-by: Karim Taam <karim.t2am@gmail.com>
* Expose `v` field in JSON-RPC in some transaction types
The execution API marks the `v` field as optional for EIP-2930 and
EIP-1559 transactions, preferring the `yParity` feld. However, some
tooling still depends on the presence of the `v` field. For those two
transaction types both `v` and `yParity` will be returned now.
Signed-off-by: Danno Ferrin <danno.ferrin@gmail.com>
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>
* allow empty blob gas for eth_call
* handle empty maxFeePerBlobGas by setting to blobBaseFee if empty
* set allowExceedingBalance if blobGas not specified
* added a test case for strict with zero blob gas
Signed-off-by: Sally MacFarlane <macfarla.github@gmail.com>
---------
Signed-off-by: Sally MacFarlane <macfarla.github@gmail.com>
Co-authored-by: Justin Florentine <justin+github@florentine.us>
* use accessList in hash and equals
* add blob fields to callParams
* blob fields from callParam used in transaction simulator
* don't zero maxFeePerBlobs if not present
* add roundtrip callParam verification
* added a failure case test
* error conversion
* added some spec tests
Signed-off-by: Sally MacFarlane <macfarla.github@gmail.com>
---------
Signed-off-by: Sally MacFarlane <macfarla.github@gmail.com>
* Add Besu version to DB metadata. Check for downgrades and reject if version < version recorded in DB metadata.
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Add --allow-downgrade CLI arg. If set it allows the downgrade and updates the Besu version in the metadata file to the downgraded version.
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Update gradle verification XML
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Add and update tests
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Refactoring
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Remove versioning from RocksDB, now in separate VERSION_DATADATA.json
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Tidy up and tests for the new class
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Move downgrade logic into VersionMetadata as BesuCommand is already very big
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Add more tests
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Refactor the naming of the option to version-compatibility-protection
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Remove remaining references to allow-downgrade
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Rename test
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Update comments
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Metadata verification update
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* gradle fix
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Enable version downgrade protection by default for non-named networks
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Fix default logic
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
* Update ethereum/core/src/main/java/org/hyperledger/besu/ethereum/core/VersionMetadata.java
Co-authored-by: Fabio Di Fabio <fabio.difabio@consensys.net>
Signed-off-by: Matt Whitehead <matthew1001@hotmail.com>
* Update ethereum/core/src/main/java/org/hyperledger/besu/ethereum/core/VersionMetadata.java
Co-authored-by: Fabio Di Fabio <fabio.difabio@consensys.net>
Signed-off-by: Matt Whitehead <matthew1001@hotmail.com>
* mock-maker-inline no longer needed
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>
Signed-off-by: Matt Whitehead <matthew1001@hotmail.com>
Co-authored-by: Fabio Di Fabio <fabio.difabio@consensys.net>
Update tracing and evm tool
* Intrinsic gas is optional in EVMTool
* For call series, also charge the gas given to the next call level for debug_ series calls.
Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com>
* Remove uses of org.jetbrains annotations
We have a mix of org.jetbrains.annotations.NotNull and
javax.annotations.Nonnull. Change all to the latter. Add an errorprone
check to enforce this.
Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com>
* spotless
Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com>
* spdx
Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com>
---------
Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com>
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>
Store trielog as blobdb to improve performance.
* Store trie_log_storage as blob
* changelog
* Add gc flag for static data
* Updating plugin-api build.gradle with new hash as SegmentIdentifier interface has introduced new method
Signed-off-by: Usman Saleem <usman@usmans.info>
* not recompute hash if not needed
* Add memoize for the Supplier
* Modify hashcode to only process keccak when slotkey is not defined
* use single cache for keccak
Signed-off-by: Karim Taam <karim.t2am@gmail.com>
Signed-off-by: Ameziane H <ameziane.hamlat@consensys.net>
Signed-off-by: ahamlat <ameziane.hamlat@consensys.net>
Signed-off-by: garyschulte <garyschulte@gmail.com>
Wire through configuration for the Prague fork, including speculative
PragueGasCalculator, precompiles, genesis options, and implied
forks in GenesisState.
Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com>
* Improve the high spec flag, limit it to few column families
* Update changelog
* spotless
* Update the plugin API hash as one of the interfaces was changed\
* Fix failing unit tests
Signed-off-by: Ameziane H <ameziane.hamlat@consensys.net>
Co-authored-by: Sally MacFarlane <macfarla.github@gmail.com>
use reference tests to validate trielog generation. Like that we will validate besu trielog generation for all of the tests we have in the references tests suite for past and future EIPs
---------
Signed-off-by: Karim Taam <karim.t2am@gmail.com>