* EIP-2935: Serve historical block hashes from state
Refactor the BlockHashOperation to move hash lookup into the
ProtocolSpec, and combine logic with beacon root storage.
Update t8n test to use block hash list in new format
Signed-off-by: Danno Ferrin <danno@numisight.com>
Author: Gabriel-Trintinalia gabriel.trintinalia@consensys.net
Co-authored-by: Danno Ferrin danno@numisight.com
Co-authored-by: Gabriel-Trintinalia <gabriel.trintinalia@consensys.net>
* Upgrade reftests to 13.3
* Implement retroactive EIP-7610
We need to do both of these at once as the reference tests needed to be
updated to reflect the changes in the retroactive EIP.
EIPTests for prague are disabled as they are still in flux
Signed-off-by: Danno Ferrin <danno@numisight.com>
* Add EIP-2537 precompiles to prague
* Update gas schedule
* Update native lib to one with subgroup checks in mul and multiexp
* re-cost gas on most vectors
Signed-off-by: Danno Ferrin <danno@numisight.com>
adds AUTH and AUTHCALL opcodes to Prague evms.
adds a mutable authorizedBy:Address field to the MessageFrame
adds AUTH opcode costing to gas calculators
---------
Signed-off-by: Justin Florentine <justin+github@florentine.us>
Update t8n, b11r, and friends to support current execution spec
* bonsai migration introduced issues with deleted storage/accounts
* status on pre-constantinople json was invalid
* track refund across tx, not call frame
* allow tests to be executed by name
* fix withdrawal self-destruct test
* trace support in execution-spec-tests
* fix blob tests
* t8n results changes
Signed-off-by: Danno Ferrin <danno@numisight.com>
Preparatory for EOF. Refactor the gas calculation logic so that it does
not depend on specific stack entries, and break out the pieces of the
calculation for readability.
Signed-off-by: Danno Ferrin <danno@numisight.com>
Co-authored-by: Justin Florentine <justin+github@florentine.us>
Co-authored-by: Danno Ferrin <danno@numisight.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>
The BerlinGasCalculator had a side effect of warming addresses when
calculating call gas costs. By introducing a boolean we can keep the
side effects in the operation instead of in the gas calculator. This
makes gas cost estimation by downstream users of the API safer.
Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com>
* wildcard in place of task name in path, in case it gets changed.
* test splitting action is unreliable at these numbers of tests
* pin to new gradle action, increase runners
* found the missing tests, back to parity
* rename to avoid consolidation status collision with workflow name
* fixes javadoc checks at build time
* overrides project version on release, so embeds (startup info) will match release artifacts
---------
Signed-off-by: Justin Florentine <justin+github@florentine.us>
Co-authored-by: RoboCopsGoneSock <158174948+RoboCopsGoneSock@users.noreply.github.com>
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>
* Change halt reason when contract creation fails due to collision or account already exists
Signed-off-by: Gabriel Fukushima <gabrielfukushima@gmail.com>
* Fix ATs
Signed-off-by: Gabriel Fukushima <gabrielfukushima@gmail.com>
* Add ILLEGAL_STATE_CHANGE to the list of hal reasons that must not be ignored when producing the vm trace
Signed-off-by: Gabriel Fukushima <gabrielfukushima@gmail.com>
* add changelog
Signed-off-by: Gabriel Fukushima <gabrielfukushima@gmail.com>
---------
Signed-off-by: Gabriel Fukushima <gabrielfukushima@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>
Update a few EOF features based on updated spec
* Add a prague reference test target
* Run evmtool from prestate when no code specified
* RETF and dangling immediate arg fixes
Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com>
The fluent API incorrectly added the code size limit in Tangerine
Whistle instead of first adding it in Spurious Dragon.
Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com>
* updates static integration test so txs are committed to using mainnet trusted setup
* new static vectors for precompile checks
* moves trusted setup to main
---------
Signed-off-by: Justin Florentine <justin+github@florentine.us>
There was a slight problem on the bonsai side because all account reads did not go through a single method. One of the two add the account to the cache but the other did not. This had two consequences:
Less good performance because certain accounts had to be read several times and also all account reads were not marked in the trielog. This will fix both problems.
Signed-off-by: Karim TAAM <karim.t2am@gmail.com>
Introduce a new Journaled World State Updater. Within a transaction it
keeps one copy of account and storage state, restoring previous
revisions on reverts and exceptional halts. This updater only supports
post-merge semantics with regard to empty accounts, namely that they do
not exist in world state.
Adds an EvmConfiguration option for stacked vs journaled updater, and
wire it in where needed. The staked updater is default mode, which is
the current behavior prior to this patch.
Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com>
* feat: add a way to read memory without altering the word capacity
* add tests
Signed-off-by: Daniel Lehrner <daniel.lehrner@consensys.net>
Signed-off-by: Franklin Delehelle <franklin.delehelle@odena.eu>
* Fix read-past-end
* Do not abuse method overload
* Update CHANGELOG.md
Signed-off-by: delehef <github@odena.eu>
Signed-off-by: Franklin Delehelle <franklin.delehelle@odena.eu>
* add tests for MessageFrame.shadowReadMemory
Signed-off-by: Daniel Lehrner <daniel.lehrner@consensys.net>
Signed-off-by: Franklin Delehelle <franklin.delehelle@odena.eu>
* Straddled reads tests
Signed-off-by: Franklin Delehelle <franklin.delehelle@odena.eu>
---------
Signed-off-by: Franklin Delehelle <franklin.delehelle@odena.eu>
Signed-off-by: Daniel Lehrner <daniel.lehrner@consensys.net>
Signed-off-by: delehef <github@odena.eu>
Signed-off-by: delehef <franklin.delehelle@odena.eu>
Co-authored-by: Daniel Lehrner <daniel.lehrner@consensys.net>
To improve the performance of CALL operations move the OperandStack and
ReturnStack to growing stacks instead of a fully allocated stack.
Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com>
* Use Bytes Trie to track warm addresses
Move from a java HashSet to a custom Trie based on bytes to store the
warm addresses, creates, and self-destructs.
This avoids needing to calculate java hashes or engage in using custom
Comparators.
Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com>
* codeql scan
Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com>
---------
Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com>
Signed-off-by: Sally MacFarlane <macfarla.github@gmail.com>
Co-authored-by: Sally MacFarlane <macfarla.github@gmail.com>
Add the ability to configure more parameters in the fluent API.
Specifically contract address, coinbase, difficulty, mixHash/prevRandao,
baseFee, block number, timestamp, gas limit, previous block hashes, and
versioned hashes. Also create EVM forks parametrically instead of by
a method name.
Signed-off-by: Danno Ferrin <danno.ferrin@swirldslabs.com>