- BAL (EIP-7928) support added to Database implementations.
GasParamsis new struct where you can set dynamic opcode gas params. Initialized and can be found in cfg.- Gas calculation functions moved from
revm-interpreterto be part of gas params. - Gas constants moved from
revm_interpreter::gas torevm_context_interface::cfg::gas
- Gas calculation functions moved from
CreateInputsstruct fields made private with accessor pattern.- Use
CreateInputs::created_address()getter (now cached).
- Use
Host::selfdestructsignature changed to support OOG on cold load for target account.- Inspector
logfunction renamed:Inspector::logrenamed tologandlog_full.log_fulldefault impl callslog.log_fullhasInterpreterinput whilelogdoes not.logis called in places where Interpreter is not found.
PrecompileError::Othernow containsCow<'static, str>instead of&'static str.- Allows setting both
&'static str(no perf penalty) andStringif needed.
- Allows setting both
JournaledAccountstruct added for tracking account changes.JournalTrfunctions that fetch account now return a ref.- New function
load_account_mutreturnsJournaledAccount.
JournalTr::load_account_codedeprecated, renamed toJournalTr::load_account_with_code.JournalTr::warm_account_and_storageandJournalTr::warm_accountremoved.- Access list is now separate from the main Journal EvmState.
- Use
JournalTr::warm_access_listto import access list.
- Declarative macros
tri!,gas_or_fail!,otry!removed fromrevm-interpreter. MemoryGasAPI signature changes.- Removed deprecated methods including
into_plain_state,regenerate_hash. State.bal_statefield added (breaks struct literal constructors).DatabaseCommitExt::drain_balancesandincrement_balancesadded.- First precompile error now bubbles up with detailed error messages.
- New
PrecompileErrorvariants added.
- New
No breaking changes
No breaking changes
- Additionally to v99 version:
Host::selfdestructfunction got changed to support oog on cold load for target account.
(yanked version)
- Added support for transmitting Logs set from precompiles.
Inspector::logfunction got renamed tologandlog_fulllog_fulldefault impl will calllog- difference is that
log_fullhasInterpreterinput whilelogdoes not andlogwill be called in places where Interpreter is not found.
PrecompileErrornow containsOtherasCow<'static, str>- It allows setting both
&'static strthat is without perf penalty andStringif needed.
- It allows setting both
No breaking changes.
No breaking changes.
No breaking changes.
- Cfg added
memory_limit()function JournaledAccounthave been added that wraps account changes, touching and creating journal entry.- Past function that fetches account now return a ref and new function
load_account_mutnow returnJournaledAccount JournalEntrytype is added toJournalTrso JournaledAccount can create it.
- Past function that fetches account now return a ref and new function
JournalTr::load_account_codeis deprecated/renamed toJournalTr::load_account_with_codeJournalTr::warm_account_and_storageandJournalTr::warm_accountare removed as access list is now separate from the main Journal EvmState. Function that imports access list to the Journal isJournalTr::warm_access_list
No breaking changes
No breaking changes
No breaking changes
No breaking changes
No breaking changes
- Removal of some deprecated functions.
into_plain_state,regenerate_hashwere deprecated few releases ago.
No breaking changes
ContextTr,EvmTrgainedall_mut()andall()functions.InspectorEvmTrgotall_inspectorandall_mut_inspectorfunctions.- For custom Evm, you only need to implement
all_*functions.
InspectorFramegot changed to allow CustomFrame to be added.- If there is no need for inspection
fn eth_framecan return None.
- If there is no need for inspection
kzg-rsfeature and library removed. Default KZG implementation is now c-kzg.- for no-std variant, arkworks lib is used.
- Opcodes that load account/storage will not load item if there is not enough gas for cold load.
- This is in preparation for BAL.
- Journal functions for loading now have skip_cold_load bool.
libsecp256k1parity library is deprecated and removed.JumpTableinternal representation changed fromBitVectoBytes. No changes in API.SpecIdenum gained newAmsterdamvariant andOpSpecIdgainedJovianvariant.SELFDESTRUCTconstant renamed toSELFDESTRUCT_REFUND.FrameStack::pushandFrameStack::end_initmarked asunsafeas it can cause UB.- First precompile error is now bubble up with detailed error messages. New
PrecompileErrorvariants added. - Batch execution errors now include transaction index.
CallInputnow contains bytecode that is going to be executed (Previously it had address).- This allows skipping double bytecode fetching.
InvalidTransactionenum gainedStr(Cow<'static, str>)variant for custom error messages.calc_excess_blob_gasandcalc_excess_blob_gasremoves as they are unused and not accurate for Prague.
PrecompileWithAddressis renamed toPrecompileand it became a struct.PrecompilecontainsPrecompileId,Addressand function.- The reason is adding
PrecompileIdas it is needed for fusaka hardfork
Forward compatible version.
SystemCallEvmfunctions got renamed and old ones are deprecated. Renaming is done to align it with other API calls.transact_system_call_finalizeis nowsystem_call.transact_system_callis nowsystem_call_one.
ExtBytecode::regenerate_hashgot deprecated in support forget_or_calculate_hashorcalculate_hash.- Precompiles:
- Bn128 renamed to Bn254. ethereum/EIPs#10029 (comment)
InstructionResultnow starts from 1 (previous 0) for perf purposes.- In
JournalInnerpreviousprecompiles,warm_coinbase_addressandwarm_preloaded_addressespub fields are now moved towarm_addressesto encapsulate addresses that are warm by default. All access list account are all loaded from database.
ContextTrgainedHostsupertrait.- Previously Host was implemented for any T that has ContextTr, this restricts specializations. bluealloy#2732
Hostis moved torevm-context-interface- If you custom struct that implement
ContextTryou would need to manually implementHosttrait, in most cases no action needed.
- In
revm-interpreter, fncast_slice_to_u256was removed andpush_slicefn is added toStackTrait. PrecompileOutputnow contains revert flag.- It is safe to put to false.
- In
kzgandblake2modules few internal functions were made private or removed.
- Inspector fn
step_endis now called even if Inspectorstepsets the action. Previously this was not the case.- bluealloy#2687
- this additionally fixes panic bug where
bytecode.opcode()would panic instep_end
- Removal of
EvmData.- It got flattened and ctx/inspector fields moved directly to Evm, additional layering didn't have purpose.
- Merging of
Handler'svalidate_tx_against_stateanddeduct_callerinto one functionvalidate_against_state_and_deduct_caller- If you dont override those functions there is no action. If you do please look at
pre_execution::validate_against_state_and_deduct_callerfunction orOpHandlerfor examples of migration.
- If you dont override those functions there is no action. If you do please look at
- Breaking changed for EOF to support eof-devnet1.
SharedMemoryis not longer Rc<RefCell<>> and internally uses Rc<RefCell<Vec>> buffer.- No action if you dont use it inside Interpreter.
- In
JournalExtfnlast_journal_mut()is renamed tojournal_mut() - EOF is disabled from Osaka and not accessible.
No breaking changes
- No code breaking changes
- alloy-primitives bumped to v1.0.0 and we had a major bump because of it.