* track CREATE/CREATE2/create-tx in a new "creates" field in the MessageFrame
* re-wrote Self-Destruct logic for clarity and optional EIP-6780 semantics.
Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com>
* Extend OperationTracer with new methods, create
Signed-off-by: Daniel Lehrner <daniel.lehrner@consensys.net>
* Rename ExtendedOperationTracer to BlockAwareOperationTracer
Signed-off-by: Daniel Lehrner <daniel.lehrner@consensys.net>
* fixed plugin api hash
Signed-off-by: Daniel Lehrner <daniel.lehrner@consensys.net>
* added missing javadoc comments
Signed-off-by: Daniel Lehrner <daniel.lehrner@consensys.net>
* Update evm/src/main/java/org/hyperledger/besu/evm/tracing/OperationTracer.java
Co-authored-by: Sally MacFarlane <macfarla.github@gmail.com>
Signed-off-by: Daniel Lehrner <daniel.lehrner@consensys.net>
* Only update peer with the first and last block (#5659)
* only update peer with the first and last block
Signed-off-by: Stefan <stefan.pingel@consensys.net>
Signed-off-by: Daniel Lehrner <daniel.lehrner@consensys.net>
* Put download links into CHANGELOG and do some clean up (#5660)
* put the download links for 23.4.4 into the CHANGELOG.md
* clean up CHANGELOG
Signed-off-by: Stefan <stefan.pingel@consensys.net>
Signed-off-by: Daniel Lehrner <daniel.lehrner@consensys.net>
* Add --amend to docker manifest create to fix docker latest tag (#5661)
We need to replace previous release's latest tag. Might be broken due to a recent change in the docker command implementation
Signed-off-by: Simon Dudley <simon.dudley@consensys.net>
Signed-off-by: Daniel Lehrner <daniel.lehrner@consensys.net>
* Add Xlayered-tx-pool to the config log printout (#5665)
Unrelated: clarify epoch length in javadoc
Signed-off-by: Simon Dudley <simon.dudley@consensys.net>
Co-authored-by: Gabriel Fukushima <gabrielfukushima@gmail.com>
Signed-off-by: Daniel Lehrner <daniel.lehrner@consensys.net>
* Add hooks to AbstractCreateOperation for library users (#5656)
Add hooks for a successful contract create, a failed contract create,
and an invalid contact create. Users of the library will be able to
customize create responses without having to replace core logic.
Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com>
Signed-off-by: Daniel Lehrner <daniel.lehrner@consensys.net>
* Test updates for cancun execution-spec-tests (#5670)
- support legacy V values (larger V value) and type 1+ (v is recId only)
- new fields
- shared transaction extraction
- rejection detection
Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com>
Signed-off-by: Daniel Lehrner <daniel.lehrner@consensys.net>
* Upgrade BouncyCastle libraries (#5675)
Upgrade bouncy castle to v1.75. This involved a change in maven
coordinates for other modules.
Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com>
Signed-off-by: Daniel Lehrner <daniel.lehrner@consensys.net>
* Introduce transaction validator interface (phase 1) (#5673)
Signed-off-by: Fabio Di Fabio <fabio.difabio@consensys.net>
Signed-off-by: Daniel Lehrner <daniel.lehrner@consensys.net>
* Only validate `--miner-enabled` option for ethash networks (#5669)
* Modify the min-gas-price option validation
* Check for whether ethash is in use, either from genesis or network config, and use that for miner checks
* Add genesis configuration isPoa() convenience function
---------
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
Signed-off-by: Matt Whitehead <matthew1001@hotmail.com>
Co-authored-by: Simon Dudley <simon.dudley@consensys.net>
Signed-off-by: Simon Dudley <simon.dudley@consensys.net>
Signed-off-by: Daniel Lehrner <daniel.lehrner@consensys.net>
* Update tuweni2.4.2 (#5684)
* Revert "Revert "Update Tuweni to 2.4.1 (#5513)" (#5585)"
This reverts commit 6111e1bbc3.
Signed-off-by: Antoine Toulme <antoine@lunar-ocean.com>
* update Tuweni to 2.4.2
Signed-off-by: Antoine Toulme <antoine@lunar-ocean.com>
---------
Signed-off-by: Antoine Toulme <antoine@lunar-ocean.com>
Signed-off-by: Daniel Lehrner <daniel.lehrner@consensys.net>
* Do not leak references to PendingTransactions (#5693)
Signed-off-by: Fabio Di Fabio <fabio.difabio@consensys.net>
Signed-off-by: Daniel Lehrner <daniel.lehrner@consensys.net>
* remove v0 version of the database (#5698)
Signed-off-by: Karim TAAM <karim.t2am@gmail.com>
Signed-off-by: Daniel Lehrner <daniel.lehrner@consensys.net>
* updated plugin api hash
Signed-off-by: Daniel Lehrner <daniel.lehrner@consensys.net>
* spotless
Signed-off-by: Daniel Lehrner <daniel.lehrner@consensys.net>
* updating plugin api hash
Signed-off-by: Daniel Lehrner <daniel.lehrner@consensys.net>
* moved transcation interface to datatypes to use it in the OperationTracer.traceStartTransaction method
Signed-off-by: Daniel Lehrner <daniel.lehrner@consensys.net>
* fix import
Signed-off-by: Daniel Lehrner <daniel.lehrner@consensys.net>
---------
Signed-off-by: Daniel Lehrner <daniel.lehrner@consensys.net>
Signed-off-by: Stefan <stefan.pingel@consensys.net>
Signed-off-by: Simon Dudley <simon.dudley@consensys.net>
Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com>
Signed-off-by: Fabio Di Fabio <fabio.difabio@consensys.net>
Signed-off-by: Matthew Whitehead <matthew1001@gmail.com>
Signed-off-by: Matt Whitehead <matthew1001@hotmail.com>
Signed-off-by: Antoine Toulme <antoine@lunar-ocean.com>
Signed-off-by: Karim TAAM <karim.t2am@gmail.com>
Co-authored-by: Sally MacFarlane <macfarla.github@gmail.com>
Co-authored-by: Stefan Pingel <16143240+pinges@users.noreply.github.com>
Co-authored-by: Simon Dudley <simon.dudley@consensys.net>
Co-authored-by: Gabriel Fukushima <gabrielfukushima@gmail.com>
Co-authored-by: Danno Ferrin <danno.ferrin@gmail.com>
Co-authored-by: Fabio Di Fabio <fabio.difabio@consensys.net>
Co-authored-by: Matt Whitehead <matthew1001@gmail.com>
Co-authored-by: Antoine Toulme <antoine@lunar-ocean.com>
Co-authored-by: matkt <karim.t2am@gmail.com>
Add hooks for a successful contract create, a failed contract create,
and an invalid contact create. Users of the library will be able to
customize create responses without having to replace core logic.
Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com>
* add new class to reflection config
* move CLI output to be system-err oriented
* make logger in evmtool nop
* exclude some problematic jars from compilation
- mixed versions of bouncy castle
- netty initializations of log4j
* Standardize JSON ObjectMapper Construction
* Add some manual mappings
* Directly instantiate crypto algorithms where appropriate
Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com>
BLS12 signatures were speculatively added in cancun in late 2022. This
is no longer accurate. Move the implementation to the "Future_EIPs"
fork so that it will remain testable and not accidentally get included
accidentally. Also add missing fluent APIs.
Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com>
Updates needed to keep executing execution-spec-tests
* add withdrawals support
* add access lists to transactions
* accept t8n and b11r CLI args that are zero length or all whitespace
* Enumerate forks in t8n and b11r help
* remove JSON wrapping from t8n transaction RLP
Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com>
As per a recent EIP update the opcode numbers for Transient Storage
have been updated. EOF opcodes were also updated.
Update the code and test cases for the new numbers.
Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com>
* update to 2.4.1
* update use of DNS daemon with Vertx
* fix issue with Bytes.repeat
* update antlr version
* fix dns tests
Signed-off-by: Antoine Toulme <antoine@lunar-ocean.com>
---------
Signed-off-by: Antoine Toulme <antoine@lunar-ocean.com>
Co-authored-by: Sally MacFarlane <macfarla.github@gmail.com>
Add the MCOPY operation targeting cancun.
Adding EVM memory to the text fixture so memory ops can be tested better.
Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com>
Move the implementation of "big" eof into Future EIPs, out of cancun.
Also, create space for Prague, Osaka, and Bogota forks in the EVM code.
Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com>
Performance improvements
- Reduce the use of UInt256 in operations, replacing them with Bytes as
appropriate.
- Use Java17 expression switch
Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com>
Refactor crypto, datatypes, and plugin-api to reduce plugin APIs in the EVM.
Split crypto into crypto services and crypto algorithms
Reverse the dependency between datatyps and plugin-api.
Remove plugin Hash and Address types (use datatypes)
Move PublicKey and Quantity into datatypes.
Lots of changes to imports and build files, and some fromPlugin calls removed.
Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com>
Signed-off-by: Danno Ferrin <danno.ferrin@shemnon.com>
Co-authored-by: Justin Florentine <justin+github@florentine.us>
Changes and config to support using GraalVM AOT to compile and
execute evmTool as an alternate configuration.
While not as long-term performant the startup time
makes filling reference tests with Besu reasonable.
Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com>
Fix a formatting error in standard trace that produced non-parsable
JSON. Add unit tests to cover those cases.
Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com>
Adding the t8n and b11r tool allows Hyperledger besu to produce reference
tests from the https://github.com/ethereum/execution-spec-tests repository.
* Add t8n tool, or transition tool. Calculates the state changes from a set
of transactions against a given parent context
* Add b11r tool, or block-builder tool. Given block parts it can generate a
RLP block.
* Change some tracing CLI flags to work better with retesteth
Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com>
Speedup initcode validation by
- optimizing the jumpdest loop
- not caching initcode in the code cache
(but keep codecache for normal contracts).
Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com>
Add the BLS curve precompiles into the registry for cancun. All of the
curve precompiles have been here since berlin, so this is just wiring
them in.
Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com>
Co-authored-by: Sally MacFarlane <macfarla.github@gmail.com>
Add enforcement of the rule that EOF cannot create prior versions or
legacy EVM code contracts in create opcodes and create transactions.
Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com>
- Added missing javadocs so that javadoc doclint passes against JDK 17 (invoke by Besu gradle build).
- Exclude following packages from javadoc lint:
org.hyperledger.besu.privacy.contracts.generated
org.hyperledger.besu.tests.acceptance.*
- Temporarily exclude ethereum and evm submodule for doc lint checks.
- Run the javadoc task using GitHub actions (use Java 17) to report any javadoc errors during the PR builds
- Updating plugin-api build.gradle with new hash as javadoc comments caused it to change
Signed-off-by: Usman Saleem <usman@usmans.info>
Optimize the EOF Functions implementation by not splitting code sections
into separate Bytes object. Instead the EOF evaluation occurs on a
single container space. When a function is called the PC (relative to
container start, not section start) is moved.
EOF lacks PC introspection and absolute jumps, so where "PC=0" starts is
not observable to the code. "PC=0" is still respected in the traces.
Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com>
Fix a variety of issues found during the fuzzing sprint.
* Validate type length matches code length
* Remove JUMPF from shanghai
* check retf output size
* handle zero length types and code better
* Fix table error on RETURNDATACOPY
* RJUMPV byte should be unsigned
* RJUMPV stack validation fix and more tests
* dead code detection via counting considered bytes
* EVMTool EOF Fuzzing support- remove all alphanumerics (punctuation) and comment lines from code in CLI
Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com>
Add two new development networks and forks, `FutureEips` for EIPs not yet
scheduled for a fork and `ExperimentalEips` for EIPs and other work not yet
accepted to a public network. Two new fork-named networks are added
like the `dev` network to facilitate easy local development.
These replace the deprecated `Shandong` network and fork.
Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com>
* Optimize Sstore operation, get current value and original value only once.
Signed-off-by: Ameziane H <ameziane.hamlat@consensys.net>
* Fix javadoc.
Signed-off-by: Ameziane H <ameziane.hamlat@consensys.net>
* refactoring (add a supplier implementation to better support all the forks)
Signed-off-by: Ameziane H <ameziane.hamlat@consensys.net>
* delete unnecessary parameters, add final for some fields and modify CHANGELOG.md
Signed-off-by: Ameziane H <ameziane.hamlat@consensys.net>
* add a missing parameter in Javadoc
Signed-off-by: Ameziane H <ameziane.hamlat@consensys.net>
Signed-off-by: Ameziane H <ameziane.hamlat@consensys.net>
* Add failing test for deploying invalid contract
Signed-off-by: Diego López León <dieguitoll@gmail.com>
Signed-off-by: Diego López León <dieguitoll@gmail.com>
* Validate contractCode from frame
Signed-off-by: Diego López León <dieguitoll@gmail.com>
Signed-off-by: Diego López León <dieguitoll@gmail.com>
* Only receive frame output data in ContractValidationRule#validate
Signed-off-by: Diego López León <dieguitoll@gmail.com>
Signed-off-by: Diego López León <dieguitoll@gmail.com>
Signed-off-by: Diego López León <dieguitoll@gmail.com>
Signed-off-by: Diego López León <dieguitoll@gmail.com>
Implement CALLF, RETF, and JUMPF operations. This introduces the
notion of "code sections" into the code. For legacy code section zero
consists of all of the code and is the only code section. Also
implements EIP specified code validation to ensure validated EOF code
won't use CALLF or JUMPF to a non-existent section.
Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com>
* Remove opSize field from Operation
With the introduction of RJUMPV, operations don't have fixed size anymore. This field isn't used anyware in the code so it's safe to delete it
Signed-off-by: Diego López León <dieguitoll@gmail.com>
* Add comments
Signed-off-by: Diego López León <dieguitoll@gmail.com>
* Add some EIP-3670 and EIP-3540 tests
Signed-off-by: Diego López León <dieguitoll@gmail.com>
* Replace jumpdest bitmap with BitSet
Signed-off-by: Diego López León <dieguitoll@gmail.com>
* Implement EIP-4200: EOF - Static relative jumps
Signed-off-by: Diego López León <dieguitoll@gmail.com>
Signed-off-by: Diego López León <dieguitoll@gmail.com>