# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] ## [18.0.0](https://github.com/bluealloy/revm/compare/revm-v17.1.0...revm-v18.0.0) - 2024-11-06 ### Added - to_plain_state ([#1778](https://github.com/bluealloy/revm/pull/1778)) ([#1841](https://github.com/bluealloy/revm/pull/1841)) ### Other - bump alloy-eip7702 and remove `Parity` re-export ([#1842](https://github.com/bluealloy/revm/pull/1842)) - Osaka Activation (release_49 branch) ([#1835](https://github.com/bluealloy/revm/pull/1835)) ## [17.1.0](https://github.com/bluealloy/revm/compare/revm-v17.0.0...revm-v17.1.0) - 2024-10-23 ### Other - chore: bump alloydb deps ([#1832](https://github.com/bluealloy/revm/pull/1832)) ## [17.0.0](https://github.com/bluealloy/revm/compare/revm-v16.0.0...revm-v17.0.0) - 2024-10-23 ### Other - bump alloy-eip7702 ([#1829](https://github.com/bluealloy/revm/pull/1829)) ## [16.0.0](https://github.com/bluealloy/revm/compare/revm-v15.0.0...revm-v16.0.0) - 2024-10-17 ### Other - update Cargo.toml dependencies ## [15.0.0](https://github.com/bluealloy/revm/compare/revm-v14.0.3...revm-v15.0.0) - 2024-10-17 ### Added - Rename PRAGUE_EOF to OSAKA ([#1822](https://github.com/bluealloy/revm/pull/1822)) - *(EIP-7702)* devnet-4 changes ([#1821](https://github.com/bluealloy/revm/pull/1821)) ## [14.0.3](https://github.com/bluealloy/revm/compare/revm-v14.0.2...revm-v14.0.3) - 2024-09-26 ### Other - update Cargo.lock dependencies ## [14.0.2](https://github.com/bluealloy/revm/compare/revm-v14.0.1...revm-v14.0.2) - 2024-09-18 ### Fixed - *(inspector)* always call selfdestruct if entry is made ([#1746](https://github.com/bluealloy/revm/pull/1746)) ### Other - *(deps)* bump alloy-sol-types from 0.8.0 to 0.8.2 ([#1762](https://github.com/bluealloy/revm/pull/1762)) - *(deps)* bump anyhow from 1.0.86 to 1.0.87 ([#1760](https://github.com/bluealloy/revm/pull/1760)) - make clippy happy ([#1755](https://github.com/bluealloy/revm/pull/1755)) - Test l1 gas used fjord ([#1749](https://github.com/bluealloy/revm/pull/1749)) - Add test for `revm::optimism::L1BlockInfo::calculate_tx_l1_cost_fjord` ([#1743](https://github.com/bluealloy/revm/pull/1743)) - *(deps)* bump tokio from 1.39.2 to 1.40.0 ([#1739](https://github.com/bluealloy/revm/pull/1739)) ## [14.0.1](https://github.com/bluealloy/revm/compare/revm-v14.0.0...revm-v14.0.1) - 2024-08-30 ### Other - Bump new logo ([#1735](https://github.com/bluealloy/revm/pull/1735)) ## [14.0.0](https://github.com/bluealloy/revm/compare/revm-v13.0.0...revm-v14.0.0) - 2024-08-29 ### Added - *(eip7702)* Impl newest version of EIP ([#1695](https://github.com/bluealloy/revm/pull/1695)) ### Other - *(deps)* bump alloy and primitives ([#1725](https://github.com/bluealloy/revm/pull/1725)) - cast block number to u64 and not usize ([#1727](https://github.com/bluealloy/revm/pull/1727)) - clean up some journalstate docs ([#1712](https://github.com/bluealloy/revm/pull/1712)) - update some docs related to state ([#1711](https://github.com/bluealloy/revm/pull/1711)) ## [12.2.0](https://github.com/bluealloy/revm/compare/revm-v12.1.0...revm-v12.2.0) - 2024-08-08 ### Added - check for typos in CI ([#1686](https://github.com/bluealloy/revm/pull/1686)) - *(EOF)* EOF Validation add code type and sub container tracker ([#1648](https://github.com/bluealloy/revm/pull/1648)) ### Other - Add OP-Granite hardfork, limiting bn256Pairing input size ([#1685](https://github.com/bluealloy/revm/pull/1685)) - *(deps)* bump rstest from 0.21.0 to 0.22.0 ([#1681](https://github.com/bluealloy/revm/pull/1681)) - *(deps)* bump tokio from 1.38.1 to 1.39.2 ([#1668](https://github.com/bluealloy/revm/pull/1668)) - *(clippy)* 1.80 rust clippy list paragraph ident ([#1661](https://github.com/bluealloy/revm/pull/1661)) - avoid cloning original_bytes ([#1646](https://github.com/bluealloy/revm/pull/1646)) - use `is_zero` for `U256` and `B256` ([#1638](https://github.com/bluealloy/revm/pull/1638)) - fix some typos & remove useless Arc::clone ([#1621](https://github.com/bluealloy/revm/pull/1621)) - *(eof)* simplify magic checks ([#1633](https://github.com/bluealloy/revm/pull/1633)) ## [12.0.0](https://github.com/bluealloy/revm/compare/revm-v11.0.0...revm-v12.0.0) - 2024-07-16 ### Added - pass interpreter into Inspector::log ([#1610](https://github.com/bluealloy/revm/pull/1610)) - *(EOF)* Bytecode::new_raw supports EOF, new_raw_checked added ([#1607](https://github.com/bluealloy/revm/pull/1607)) - use `kzg-rs` for kzg point evaluation ([#1558](https://github.com/bluealloy/revm/pull/1558)) ### Fixed - *(eip7702)* Add tests and fix some bugs ([#1605](https://github.com/bluealloy/revm/pull/1605)) - correctly calculate eofcreate address ([#1619](https://github.com/bluealloy/revm/pull/1619)) - allow non-static lifetime in HandleRegisterBox ([#1608](https://github.com/bluealloy/revm/pull/1608)) - *(EOF)* Use cfg code size limit for eofcreate ([#1606](https://github.com/bluealloy/revm/pull/1606)) ### Other - bump alloy deps ([#1623](https://github.com/bluealloy/revm/pull/1623)) - *(deps)* bump alloy-sol-types from 0.7.6 to 0.7.7 ([#1614](https://github.com/bluealloy/revm/pull/1614)) - group optimism invalid txn errors ([#1604](https://github.com/bluealloy/revm/pull/1604)) - load_account -> warm_preloaded_addresses ([#1584](https://github.com/bluealloy/revm/pull/1584)) - Refactor code, and check if precompile for create collision ([#1600](https://github.com/bluealloy/revm/pull/1600)) - *(revm)* defer bytecode load ([#1588](https://github.com/bluealloy/revm/pull/1588)) - Rename gas_price to gas_limit for precompile args ([#1593](https://github.com/bluealloy/revm/pull/1593)) ## [11.0.0](https://github.com/bluealloy/revm/compare/revm-v10.0.0...revm-v11.0.0) - 2024-07-08 ### Added - add bytecode_address from CallInputs to Contract during construction. ([#1568](https://github.com/bluealloy/revm/pull/1568)) - *(Prague)* Add EIP-7702 ([#1565](https://github.com/bluealloy/revm/pull/1565)) - *(EOF)* disallow ExtDelegateCall to legacy bytecode ([#1572](https://github.com/bluealloy/revm/pull/1572)) - *(EOF)* Add target address expansion checks ([#1570](https://github.com/bluealloy/revm/pull/1570)) ### Other - bump precompile to v9.0.0 ([#1590](https://github.com/bluealloy/revm/pull/1590)) - *(README)* add rbuilder to used-by ([#1585](https://github.com/bluealloy/revm/pull/1585)) - Use HandleOrRuntime to allow alloydb/ethersdb to hold a custom runtime ([#1576](https://github.com/bluealloy/revm/pull/1576)) - store tokio::runtime::Handle in ethers/alloyDB ([#1557](https://github.com/bluealloy/revm/pull/1557)) - use const blocks ([#1522](https://github.com/bluealloy/revm/pull/1522)) - fix compile for alloydb ([#1559](https://github.com/bluealloy/revm/pull/1559)) - replace AccessList with alloy version ([#1552](https://github.com/bluealloy/revm/pull/1552)) - replace U256 with u64 in BLOCKHASH ([#1505](https://github.com/bluealloy/revm/pull/1505)) ## [10.0.0](https://github.com/bluealloy/revm/compare/revm-v9.0.0...revm-v10.0.0) - 2024-06-20 ### Added - *(revm)* derive serde for `BundleState` ([#1539](https://github.com/bluealloy/revm/pull/1539)) - bump alloy, re-enable alloydb ([#1533](https://github.com/bluealloy/revm/pull/1533)) - mutable access for all fields in BundleBuilder ([#1524](https://github.com/bluealloy/revm/pull/1524)) - *(EOF)* Put EOF bytecode behind an Arc ([#1517](https://github.com/bluealloy/revm/pull/1517)) - *(EOF)* EXTCODECOPY,EXTCODESIZE,EXTCODEHASH eof support ([#1504](https://github.com/bluealloy/revm/pull/1504)) - add helpers for working with instruction tables ([#1493](https://github.com/bluealloy/revm/pull/1493)) - *(precompiles)* fatal error for precompiles ([#1499](https://github.com/bluealloy/revm/pull/1499)) - Persist reverted account and storage slot lookups in `JournaledState` ([#1437](https://github.com/bluealloy/revm/pull/1437)) - *(EOF)* EIP-7698 eof creation transaction ([#1467](https://github.com/bluealloy/revm/pull/1467)) - *(EOF)* Add EOF to inspector handle register ([#1469](https://github.com/bluealloy/revm/pull/1469)) - *(optimism)* Implement new L1 cost function for Fjord ([#1420](https://github.com/bluealloy/revm/pull/1420)) - *(optimism)* Add secp256r1 precompile for Fjord ([#1436](https://github.com/bluealloy/revm/pull/1436)) - *(revm)* revert EIP-2935 BLOCKHASH opcode changes ([#1450](https://github.com/bluealloy/revm/pull/1450)) - load account should return db error ([#1447](https://github.com/bluealloy/revm/pull/1447)) - *(EOF)* remove TXCREATE ([#1415](https://github.com/bluealloy/revm/pull/1415)) ### Fixed - *(eof)* fixture 2 tests ([#1550](https://github.com/bluealloy/revm/pull/1550)) - *(eof)* output gas for eofcreate ([#1540](https://github.com/bluealloy/revm/pull/1540)) - *(revm)* remove storage reset that clears is_cold flag ([#1518](https://github.com/bluealloy/revm/pull/1518)) - *(op)* Remove `U256::from()` ([#1498](https://github.com/bluealloy/revm/pull/1498)) - *(EOF)* panic on empty input range, and continue exec after eofcreate ([#1477](https://github.com/bluealloy/revm/pull/1477)) - *(Interpreter)* wrong block number used ([#1458](https://github.com/bluealloy/revm/pull/1458)) - blockchash for devnet-0 ([#1427](https://github.com/bluealloy/revm/pull/1427)) ### Other - Add CI build target for no-std + optimism, use matrix builds ([#1551](https://github.com/bluealloy/revm/pull/1551)) - replace TransactTo with TxKind ([#1542](https://github.com/bluealloy/revm/pull/1542)) - avoid cloning precompiles ([#1486](https://github.com/bluealloy/revm/pull/1486)) - add setters to `BundleBuilder` with `&mut self` ([#1527](https://github.com/bluealloy/revm/pull/1527)) - pluralize EOFCreateInput ([#1523](https://github.com/bluealloy/revm/pull/1523)) - added simular to used-by ([#1521](https://github.com/bluealloy/revm/pull/1521)) - Removed .clone() in ExecutionHandler::call, and reusing output buffer in Interpreter ([#1512](https://github.com/bluealloy/revm/pull/1512)) - remove old deprecated items ([#1489](https://github.com/bluealloy/revm/pull/1489)) - *(deps)* bump rstest from 0.19.0 to 0.21.0 ([#1482](https://github.com/bluealloy/revm/pull/1482)) - *(deps)* bump tokio from 1.37.0 to 1.38.0 ([#1480](https://github.com/bluealloy/revm/pull/1480)) - *(primitives)* rename State/Storage to EvmState/EvmStorage ([#1459](https://github.com/bluealloy/revm/pull/1459)) - remove 'checked' bytecode bench causing benchmarks to crash due to name ([#1461](https://github.com/bluealloy/revm/pull/1461)) - cargo update ([#1451](https://github.com/bluealloy/revm/pull/1451)) - cleanup host blockhash fn ([#1430](https://github.com/bluealloy/revm/pull/1430)) - Revert "Revert "feat: implement EIP-2935 ([#1354](https://github.com/bluealloy/revm/pull/1354))" ([#1424](https://github.com/bluealloy/revm/pull/1424))" ([#1426](https://github.com/bluealloy/revm/pull/1426)) - Revert "feat: implement EIP-2935 ([#1354](https://github.com/bluealloy/revm/pull/1354))" ([#1424](https://github.com/bluealloy/revm/pull/1424)) - *(deps)* bump anyhow from 1.0.82 to 1.0.83 ([#1404](https://github.com/bluealloy/revm/pull/1404)) ## [9.0.0](https://github.com/bluealloy/revm/compare/revm-v8.0.0...revm-v9.0.0) - 2024-05-12 ### Added - *(precompile)* Prague - EIP-2537 - BLS12-381 curve operations ([#1389](https://github.com/bluealloy/revm/pull/1389)) - add a hook to execute individual frames ([#1369](https://github.com/bluealloy/revm/pull/1369)) - *(Handler)* Add ClearHandle ([#1368](https://github.com/bluealloy/revm/pull/1368)) - Add uniswap V2 WETH-USDC swap example ([#1353](https://github.com/bluealloy/revm/pull/1353)) - *(interpreter)* add helpers for spending all gas ([#1360](https://github.com/bluealloy/revm/pull/1360)) - add helper methods to CallInputs ([#1345](https://github.com/bluealloy/revm/pull/1345)) - *(revm)* make `FrameOrResult` serializable ([#1282](https://github.com/bluealloy/revm/pull/1282)) - add flag to force hashbrown usage ([#1284](https://github.com/bluealloy/revm/pull/1284)) - EOF (Ethereum Object Format) ([#1143](https://github.com/bluealloy/revm/pull/1143)) - *(`db`)* Introduce `alloydb` ([#1257](https://github.com/bluealloy/revm/pull/1257)) - *(interpreter)* remove SPEC generic from gas calculation functions ([#1243](https://github.com/bluealloy/revm/pull/1243)) - *(interpreter)* test Host object-safety, allow `dyn Host` in instructions ([#1245](https://github.com/bluealloy/revm/pull/1245)) ### Fixed - *(eip2935)* Preload blockchash storage address ([#1395](https://github.com/bluealloy/revm/pull/1395)) - return the correct error in resize_memory ([#1359](https://github.com/bluealloy/revm/pull/1359)) ### Other - add Trin to used by list ([#1393](https://github.com/bluealloy/revm/pull/1393)) - refactor lints ([#1386](https://github.com/bluealloy/revm/pull/1386)) - bump alloy & specify dep rev ([#1380](https://github.com/bluealloy/revm/pull/1380)) - *(interpreter)* branch less in as_usize_or_fail ([#1374](https://github.com/bluealloy/revm/pull/1374)) - *(ci)* bump action/deploy ([#1372](https://github.com/bluealloy/revm/pull/1372)) - shrink OpCodeInfo and add more methods ([#1307](https://github.com/bluealloy/revm/pull/1307)) - *(deps)* bump anyhow from 1.0.81 to 1.0.82 ([#1293](https://github.com/bluealloy/revm/pull/1293)) - fix some warnings ([#1305](https://github.com/bluealloy/revm/pull/1305)) - Update documentation ([#1275](https://github.com/bluealloy/revm/pull/1275)) - *(interpreter)* use `pop_top!` where possible ([#1267](https://github.com/bluealloy/revm/pull/1267)) - add and use EvmContext::take_error ([#1264](https://github.com/bluealloy/revm/pull/1264)) ## [8.0.0](https://github.com/bluealloy/revm/compare/revm-v7.2.0...revm-v8.0.0) - 2024-04-02 ### Added - [**breaking**] TracerEip3155 optionally traces memory ([#1234](https://github.com/bluealloy/revm/pull/1234)) ### Fixed - *(TracerEip3155)* clear Inspector data after transaction. ([#1230](https://github.com/bluealloy/revm/pull/1230)) - *(GasInspector)* calculate correct remaining gas after call return ([#1236](https://github.com/bluealloy/revm/pull/1236)) - fix eip3155 summary gas_used bug and add fork name ([#1216](https://github.com/bluealloy/revm/pull/1216)) ### Other - use uint macro & fix various small things ([#1253](https://github.com/bluealloy/revm/pull/1253)) - *(deps)* bump tokio from 1.36.0 to 1.37.0 ([#1244](https://github.com/bluealloy/revm/pull/1244)) - *(interpreter)* unbox contract field ([#1228](https://github.com/bluealloy/revm/pull/1228)) - *(primitives)* kzg intro ([#1209](https://github.com/bluealloy/revm/pull/1209)) - *(interpreter)* keep track of remaining gas rather than spent ([#1221](https://github.com/bluealloy/revm/pull/1221)) - Improve `EthersDB` ([#1208](https://github.com/bluealloy/revm/pull/1208)) ## [7.2.0](https://github.com/bluealloy/revm/compare/revm-v7.1.0...revm-v7.2.0) - 2024-03-19 ### Added - add convert_boxed and insert_boxed for InstructionTable ([#1194](https://github.com/bluealloy/revm/pull/1194)) - optional nonce check ([#1195](https://github.com/bluealloy/revm/pull/1195)) ### Other - Change unwrap to ? to propagate errors ([#1207](https://github.com/bluealloy/revm/pull/1207)) - fix wonky test ([#1197](https://github.com/bluealloy/revm/pull/1197)) - clippy ([#1196](https://github.com/bluealloy/revm/pull/1196)) - *(deps)* bump anyhow from 1.0.80 to 1.0.81 ([#1187](https://github.com/bluealloy/revm/pull/1187)) - fix some typos ([#1189](https://github.com/bluealloy/revm/pull/1189)) - Fix typo in readme ([#1185](https://github.com/bluealloy/revm/pull/1185)) - Update post_execution.rs ([#1180](https://github.com/bluealloy/revm/pull/1180)) ## [7.1.0](https://github.com/bluealloy/revm/compare/revm-v7.0.0...revm-v8.0.0) - 2024-03-08 ### Added - Restrict ContextPrecompiles only to EvmContext ([#1174](https://github.com/bluealloy/revm/pull/1174)) ## [7.0.0](https://github.com/bluealloy/revm/compare/revm-v6.1.0...revm-v7.0.0) - 2024-03-08 This release got yanked and replaced with 7.1.0 ### Added - add insert method on instruction table ([#1167](https://github.com/bluealloy/revm/pull/1167)) - precompile with generic context ([#1155](https://github.com/bluealloy/revm/pull/1155)) - use `impl` instead of `dyn` in `GetInspector` ([#1157](https://github.com/bluealloy/revm/pull/1157)) - add more JournaledState methods to EvmContext ([#1158](https://github.com/bluealloy/revm/pull/1158)) - add example for using a database by reference ([#1150](https://github.com/bluealloy/revm/pull/1150)) - Add boxed precompile trait ([#1131](https://github.com/bluealloy/revm/pull/1131)) - add with_handler method to EvmBuilder ([#1124](https://github.com/bluealloy/revm/pull/1124)) ### Fixed - *(revme)* revme error output and remove double summary ([#1169](https://github.com/bluealloy/revm/pull/1169)) - gas cost calculation ([#1166](https://github.com/bluealloy/revm/pull/1166)) - reset tstorage on finalize ([#1168](https://github.com/bluealloy/revm/pull/1168)) - make `feature = "optional_gas_refund"` work ([#1134](https://github.com/bluealloy/revm/pull/1134)) ### Other - *(deps)* bump ethers-contract from 2.0.13 to 2.0.14 ([#1161](https://github.com/bluealloy/revm/pull/1161)) - *(interpreter)* evaluate instruction table constructor at compile time ([#1140](https://github.com/bluealloy/revm/pull/1140)) - remove clone for context in handler_register.rs ([#1138](https://github.com/bluealloy/revm/pull/1138)) - Check runtime dynamically ([#1135](https://github.com/bluealloy/revm/pull/1135)) - *(deps)* bump auto_impl from 1.1.2 to 1.2.0 ([#1132](https://github.com/bluealloy/revm/pull/1132)) - Add `db` and `db_mut` to evm ([#1133](https://github.com/bluealloy/revm/pull/1133)) - add ToString for no_std add exports some types in no_std ([#1128](https://github.com/bluealloy/revm/pull/1128)) - Add `clone` method to `ContextWithHandlerCfg` ([#1127](https://github.com/bluealloy/revm/pull/1127)) - remove unused EvmInstructionTables type alias ([#1123](https://github.com/bluealloy/revm/pull/1123)) ## [6.1.0](https://github.com/bluealloy/revm/compare/revm-v6.0.0...revm-v6.1.0) - 2024-02-22 ### Added - bump c-kzg, add portable feature, make it default ([#1106](https://github.com/bluealloy/revm/pull/1106)) - split off serde_json dependency to its own feature ([#1104](https://github.com/bluealloy/revm/pull/1104)) ### Fixed - replace tuple in sstore return with struct ([#1115](https://github.com/bluealloy/revm/pull/1115)) - fix EthersDB deadlock ([#1089](https://github.com/bluealloy/revm/pull/1089)) - Handle fatal db error on load_account ([#1111](https://github.com/bluealloy/revm/pull/1111)) ### Other - Ensure `L1Block` is in the cache ([#1121](https://github.com/bluealloy/revm/pull/1121)) - Fix feature name for generate_block_traces example ([#1120](https://github.com/bluealloy/revm/pull/1120)) - *(refactor)* Propagate fatal error ([#1116](https://github.com/bluealloy/revm/pull/1116)) - Revert "fix EthersDB deadlock ([#1089](https://github.com/bluealloy/revm/pull/1089))" ([#1118](https://github.com/bluealloy/revm/pull/1118)) - Remove DatabaseRef bound on CacheDB ([#1113](https://github.com/bluealloy/revm/pull/1113)) - clippy cleanup ([#1112](https://github.com/bluealloy/revm/pull/1112)) - *(deps)* bump anyhow from 1.0.79 to 1.0.80 ([#1108](https://github.com/bluealloy/revm/pull/1108)) - improve EIP-3155 implementation ([#1105](https://github.com/bluealloy/revm/pull/1105)) ## [6.0.0](https://github.com/bluealloy/revm/compare/revm-v5.0.0...revm-v6.0.0) - 2024-02-17 ### Added - improve OriginalValuesKnown docs ([#1083](https://github.com/bluealloy/revm/pull/1083)) ### Fixed - rename and pass optimism-default-handler to revm-primitives ([#1098](https://github.com/bluealloy/revm/pull/1098)) - modify cfg spec_id ([#1095](https://github.com/bluealloy/revm/pull/1095)) ([#1096](https://github.com/bluealloy/revm/pull/1096)) - optimism compilation ([#1091](https://github.com/bluealloy/revm/pull/1091)) ### Other - *(state)* avoid cloning full account ([#1097](https://github.com/bluealloy/revm/pull/1097)) - *(precompile)* use `Bytes` in precompile functions ([#1085](https://github.com/bluealloy/revm/pull/1085)) - Add memory offset ([#1032](https://github.com/bluealloy/revm/pull/1032)) ## [5.0.0](https://github.com/bluealloy/revm/compare/revm-v4.0.0...revm-v5.0.0) - 2024-02-12 ### Fixed - properly set context env ([#1070](https://github.com/bluealloy/revm/pull/1070)) - typo on internal append_handle_register methods ([#1069](https://github.com/bluealloy/revm/pull/1069)) - *(op)* skip validation on deposit tx ([#1065](https://github.com/bluealloy/revm/pull/1065)) ### Other - *(precompile)* make use of padding utilities, simplify secp256k1 ([#1073](https://github.com/bluealloy/revm/pull/1073)) - *(revm)* Add helpers to Build Revm with Context ([#1068](https://github.com/bluealloy/revm/pull/1068)) - *(revme)* statetests new format and return error ([#1066](https://github.com/bluealloy/revm/pull/1066)) ## [4.0.0](https://github.com/bluealloy/revm/compare/revm-v3.5.0...revm-v4.0.0) - 2024-02-07 Refactored the logic inside Handler and added EvmBuilder that allows overwriting the default behavior. Few major renaming: EVMImpl to Evm, EVM to EvmFactory and EVMData to EvmContext. ### Added - *(handler)* Change spec id on &mut ([#1055](https://github.com/bluealloy/revm/pull/1055)) - *(Handler)* add push and pop of hanler registers ([#1053](https://github.com/bluealloy/revm/pull/1053)) - tweeks for v4.0 revm release ([#1048](https://github.com/bluealloy/revm/pull/1048)) - *(op)* Ecotone hardfork ([#1009](https://github.com/bluealloy/revm/pull/1009)) - *(inspector)* Share call/create inputs in Inspector call_end/create_end ([#1003](https://github.com/bluealloy/revm/pull/1003)) - Convert optimism panic into graceful error ([#982](https://github.com/bluealloy/revm/pull/982)) - EvmBuilder and External Contexts ([#888](https://github.com/bluealloy/revm/pull/888)) - add asm-keccak feature ([#972](https://github.com/bluealloy/revm/pull/972)) - *(ethersdb)* propagate errors instead of panicking in basic_ref ([#935](https://github.com/bluealloy/revm/pull/935)) - *(revm)* implement prepend_state for BundleState ([#907](https://github.com/bluealloy/revm/pull/907)) - add serde derives for `CacheDB` under "serde" flag ([#911](https://github.com/bluealloy/revm/pull/911)) - *(examples)* generate block traces ([#895](https://github.com/bluealloy/revm/pull/895)) - *(revm)* Evm Context Tests and test-utils Feature ([#903](https://github.com/bluealloy/revm/pull/903)) - `Canyon` hardfork behind `optimism` feature flag ([#871](https://github.com/bluealloy/revm/pull/871)) - Loop call stack ([#851](https://github.com/bluealloy/revm/pull/851)) - transition account balance delta ([#843](https://github.com/bluealloy/revm/pull/843)) - *(cfg)* optionally disable beneficiary reward ([#834](https://github.com/bluealloy/revm/pull/834)) - add more `auto_impl`s to revm traits ([#799](https://github.com/bluealloy/revm/pull/799)) - *(interpreter)* add more helper methods to memory ([#794](https://github.com/bluealloy/revm/pull/794)) - derive more traits ([#745](https://github.com/bluealloy/revm/pull/745)) - add methods to `CreateInput` for calculating created address ([#793](https://github.com/bluealloy/revm/pull/793)) - *(revm)* implement DatabaseRef trait for EthersDB ([#774](https://github.com/bluealloy/revm/pull/774)) ### Fixed - fix previous commit ([#1044](https://github.com/bluealloy/revm/pull/1044)) - *(State)* Preserve original values on delete revert ([#1010](https://github.com/bluealloy/revm/pull/1010)) - optimism gas refunds ([#989](https://github.com/bluealloy/revm/pull/989)) - dont calculate initcode keccak on CREATE ([#969](https://github.com/bluealloy/revm/pull/969)) - *(ci)* Workflow Touchups ([#901](https://github.com/bluealloy/revm/pull/901)) - safer stack ([#879](https://github.com/bluealloy/revm/pull/879)) - *(op)* Base Goerli `op-reth` sync patches ([#824](https://github.com/bluealloy/revm/pull/824)) - fix typos in revm crate ([#821](https://github.com/bluealloy/revm/pull/821)) - Optimism execution ([#789](https://github.com/bluealloy/revm/pull/789)) - rename `DatabaseRef` trait functions to `*_ref` ([#795](https://github.com/bluealloy/revm/pull/795)) ### Other - bump c-kzg and enable blst portable feature ([#1059](https://github.com/bluealloy/revm/pull/1059)) - spelling on last commit ([#1058](https://github.com/bluealloy/revm/pull/1058)) - helper functions around Env ([#1057](https://github.com/bluealloy/revm/pull/1057)) - *(deps)* bump tokio from 1.35.1 to 1.36.0 ([#1052](https://github.com/bluealloy/revm/pull/1052)) - *(EvmBuilder)* rename builder functions to HandlerCfg ([#1050](https://github.com/bluealloy/revm/pull/1050)) - *(deps)* bump ethers-contract from 2.0.11 to 2.0.13 ([#1034](https://github.com/bluealloy/revm/pull/1034)) - *(std)* Add std HashMap,HashSet ([#1041](https://github.com/bluealloy/revm/pull/1041)) - group handlers ([#1030](https://github.com/bluealloy/revm/pull/1030)) - *(Inspector)* add inspector depth test ([#1028](https://github.com/bluealloy/revm/pull/1028)) - *(op)* Move op l1 block load to op handler ([#1026](https://github.com/bluealloy/revm/pull/1026)) - *(clippy)* nightly clippy ([#1025](https://github.com/bluealloy/revm/pull/1025)) - *(Execution)* Granular handles create/call,call_return,insert_call_outcome ([#1024](https://github.com/bluealloy/revm/pull/1024)) - *(Inspector)* Add return_memory_offset to Inspector::call ([#1006](https://github.com/bluealloy/revm/pull/1006)) - update call end docs ([#1000](https://github.com/bluealloy/revm/pull/1000)) - add getter for specId ([#998](https://github.com/bluealloy/revm/pull/998)) - Remove preserve_order in serde_json ([#997](https://github.com/bluealloy/revm/pull/997)) - update create docs ([#999](https://github.com/bluealloy/revm/pull/999)) - *(revme)* EmptyDb Blockhash string, json-outcome flag, set prevrandao in statetest ([#994](https://github.com/bluealloy/revm/pull/994)) - *(Inspector)* add CallOutcome to call/call_end ([#985](https://github.com/bluealloy/revm/pull/985)) - set deduct_caller in optimism handler ([#988](https://github.com/bluealloy/revm/pull/988)) - fix serde std flags for no-std build ([#987](https://github.com/bluealloy/revm/pull/987)) - *(Inspector)* Add CreateOutcome in create/create_end return ([#980](https://github.com/bluealloy/revm/pull/980)) - *(log)* use alloy_primitives::Log ([#975](https://github.com/bluealloy/revm/pull/975)) - *(EvmBuilder)* Remove unnecessary BuilderStage trait ([#979](https://github.com/bluealloy/revm/pull/979)) - enhance readability ([#968](https://github.com/bluealloy/revm/pull/968)) - *(interpreter)* refactor sstore_cost ([#974](https://github.com/bluealloy/revm/pull/974)) - *(interpreter)* improve enum naming ([#962](https://github.com/bluealloy/revm/pull/962)) - *(deps)* bump anyhow from 1.0.77 to 1.0.79 ([#950](https://github.com/bluealloy/revm/pull/950)) - relax Bytes requirement and use slice instead ([#937](https://github.com/bluealloy/revm/pull/937)) - *(deps)* bump futures from 0.3.29 to 0.3.30 ([#927](https://github.com/bluealloy/revm/pull/927)) - *(deps)* bump anyhow from 1.0.75 to 1.0.76 ([#921](https://github.com/bluealloy/revm/pull/921)) - *(deps)* bump tokio from 1.34.0 to 1.35.0 ([#909](https://github.com/bluealloy/revm/pull/909)) - *(revm)* leverage StorageSlot methods, where appropriate ([#899](https://github.com/bluealloy/revm/pull/899)) - relax state generic ([#881](https://github.com/bluealloy/revm/pull/881)) - clippy ([#877](https://github.com/bluealloy/revm/pull/877)) - *(deps)* bump ethers-contract from 2.0.10 to 2.0.11 ([#867](https://github.com/bluealloy/revm/pull/867)) - bump k256 and use normalize_s ([#870](https://github.com/bluealloy/revm/pull/870)) - simplify use statements ([#864](https://github.com/bluealloy/revm/pull/864)) - Fix error message for LackOfFundForMaxFee ([#858](https://github.com/bluealloy/revm/pull/858)) - Fix rustdoc warnings ([#859](https://github.com/bluealloy/revm/pull/859)) - *(deps)* bump tokio from 1.33.0 to 1.34.0 ([#856](https://github.com/bluealloy/revm/pull/856)) - change addresses to iterator and add into_addresses ([#855](https://github.com/bluealloy/revm/pull/855)) - use keccak256 for blockhash ([#854](https://github.com/bluealloy/revm/pull/854)) - review safety comments ([#811](https://github.com/bluealloy/revm/pull/811)) - *(deps)* bump futures from 0.3.28 to 0.3.29 ([#839](https://github.com/bluealloy/revm/pull/839)) - *(state)* consistent selfdestruct status transition ([#847](https://github.com/bluealloy/revm/pull/847)) - *(state)* move account status transitions to `AccountStatus` ([#844](https://github.com/bluealloy/revm/pull/844)) - *(state)* simplify control flow in `CacheState::apply_evm_state` ([#842](https://github.com/bluealloy/revm/pull/842)) - Refactor precompile list from Hash to vec ([#823](https://github.com/bluealloy/revm/pull/823)) - *(state)* make `State::apply_transition` pub ([#832](https://github.com/bluealloy/revm/pull/832)) - *(state)* make bundle state non-optional ([#828](https://github.com/bluealloy/revm/pull/828)) - Refactor evm data to its file ([#815](https://github.com/bluealloy/revm/pull/815)) - for now support 1.69 rust compiler ([#814](https://github.com/bluealloy/revm/pull/814)) - refactor main return to handle ([#808](https://github.com/bluealloy/revm/pull/808)) - *(SharedMemory)* small refactor; tests ([#806](https://github.com/bluealloy/revm/pull/806)) - use `array::from_fn` in `make_instruction_table` ([#809](https://github.com/bluealloy/revm/pull/809)) - remove `step` and `step_end` return result ([#804](https://github.com/bluealloy/revm/pull/804)) - Instruction table ([#759](https://github.com/bluealloy/revm/pull/759)) - getter for field of ([#792](https://github.com/bluealloy/revm/pull/792)) - Shared memory between calls ([#673](https://github.com/bluealloy/revm/pull/673)) - Fix typos ([#790](https://github.com/bluealloy/revm/pull/790)) - *(deps)* bump tokio from 1.32.0 to 1.33.0 ([#785](https://github.com/bluealloy/revm/pull/785)) - Use upstream create and create2 implementations ([#775](https://github.com/bluealloy/revm/pull/775)) - reorder JournalState impl ([#772](https://github.com/bluealloy/revm/pull/772)) - document everything, dedup existing docs ([#741](https://github.com/bluealloy/revm/pull/741)) # v3.5.0 date 02.10.2023 Migration to alloy primitive types. Full git log: * 4e78fbe - docs: document non-zero amounts in State::increment_balances (#760) (15 hours ago) * af4146a - feat: Alloy primitives (#724) (15 hours ago) # v3.4.0 date: 28.09.2023 Summary: * Cancun ready. all EIP implemented. Check interpreter CHANGELOG * revm State. a `Database` that handles Reverts and state transitions. * Optimism support * no_std build Note: c-kzg can't be build for wasm and is behind "c-kzg" feature flag. Full git log: * ea0d8d8 - fix: use u128 for calc data fee result (#757) (46 minutes ago) * 4f916be - chore: bump c-kzg to create lib (#758) (5 hours ago) * ded673c - docs: Readme Updates (#756) (16 hours ago) * f79d0e1 - feat: Optimism execution changes (#682) (16 hours ago) * d2a066b - ci: concurrency for github actions (#750) (25 hours ago) * d03dfcb - Improve wording and fix typos (#749) (25 hours ago) * 2c556c0 - refactor: say "warm" instead of "hot" (#754) (25 hours ago) * 8a85d19 - fix: balance check disabled (#751) (25 hours ago) * b9938a8 - chore(deps): bump sha2 from 0.10.7 to 0.10.8 (#752) (30 hours ago) * 4829e6a - chore(deps): bump thiserror from 1.0.48 to 1.0.49 (#753) (30 hours ago) * 8206193 - feat: add "kzg" as a separate feature (#746) (3 hours ago) * 4b5fa61 - EIP-6780: SELFDESTRUCT only in same transaction (#719) (5 days ago) * f72eaa0 - chore: error type for block header (#731) (5 days ago) * cb39117 - fix(eip4844): Pass eth tests, additional conditions added. (#735) (6 days ago) * c2cde03 - fix: use CANCUN precompile id for CANCUN SpecId (#733) (6 days ago) * d926728 - perf: refactor interpreter internals and cleanup (#582) (6 days ago) * 1b8cd57 - make BundleBuilder publicly available (#729) (8 days ago) * fa13fea - feat: implement EIP-4844 (#668) (11 days ago) * 9f00e37 - feat(state): remove state sorting, no_std ci,remove rayon (#717) (13 days ago) * 429da73 - chore(perf): only recalc code hash if its the default (#716) (13 days ago) * e2ecd5e - docs: add warning on panic conditions in take_bundle (#715) (2 weeks ago) * 190f90e - Never inline the prepare functions (#712) (2 weeks ago) * 26dc07d - feat: return wiped inside storage changeset (#711) (2 weeks ago) * 5d68dd5 - chore(deps): bump bytes from 1.4.0 to 1.5.0 (#707) (2 weeks ago) * fd8d4c5 - chore(deps): bump ethers-contract from 2.0.9 to 2.0.10 (#705) (2 weeks ago) * e86c19b - chore(state): do not insert empty reverts in state (#702) (3 weeks ago) * 7eacc3a - chore: implement `Default` for other databases (#691) (3 weeks ago) * 1d6a039 - chore: make `impl Default for StateBuilder` generic (#690) (3 weeks ago) * c60abcf - feat(state): Nits, builder option and OriginalValueKnown flags (#699) (3 weeks ago) * 7e7a339 - bundle size hint (#670) (3 weeks ago) * f6c9c7f - chore: deprecate `RefDBWrapper` (#696) (3 weeks ago) * d04aad3 - chore: expose StateDBBox (#694) (3 weeks ago) * ee13aac - feat(StateBuilder): switch builder option from without_bundle to with_bundle (#688) (3 weeks ago) * 7d7f63f - chore(state): Make Database more generic. (#687) (3 weeks ago) * a9dce30 - chore: nits and renamings (#684) (3 weeks ago) * b500718 - feat(state): take N reverts from BundleState, struct refactor (#681) (3 weeks ago) * fde6df1 - apply builder pattern for BundleState initialization (#649) (3 weeks ago) * 2897655 - fix(state): Extend now properly transfers wiped storage (#675) (3 weeks ago) * 6bd05c9 - chore: impl Eq, PartialEq for TransitionState (#677) (4 weeks ago) * 175aaec - Removed the last dependencies breaking no-std build. (#669) (4 weeks ago) * 4272535 - fix(state): retain destroyed account status on bundle extend (#667) (4 weeks ago) * bef9edd - chore(state): bundle retention (#666) (4 weeks ago) * 1053d0e - fix(state): Regresion, remove present info on selfdestruct (#664) (4 weeks ago) * 6c4cd31 - feat: add BundleState::revert_latest (#661) (4 weeks ago) * fd2cc88 - fix(state): state transition regression (#662) (4 weeks ago) * c14f8a9 - feat(state): add a flag allowing transition merge without reverts (#657) (4 weeks ago) * 33498d7 - chore(deps): bump ethers-contract from 2.0.8 to 2.0.9 (#640) (4 weeks ago) * 9a88c99 - chore: filter out empty bytecode from bundle (#656) (4 weeks ago) * 98a4a18 - feat(state): Make Bundle extend wipe aware (#655) (4 weeks ago) * 1bf0315 - feat(state): ability to disable reverts collection in bundle state (#654) (4 weeks ago) * 3eea324 - fix(state): drop storage only for DestroyedChanged (#651) (4 weeks ago) * 37027db - fix revert from DestroyedChanged to DestroyedAgain (#648) (5 weeks ago) * cec7f82 - chore(state): bundle state split (#646) (5 weeks ago) * ff5a2bc - add value parameter to Inspector::selfdestruct (#645) (5 weeks ago) * b2d6f7a - Refactor: Split transaction pre verification to separate function (#573) (5 weeks ago) * afbc896 - fix(state): check if storage revert is empty (#643) (5 weeks ago) * 0b9c12e - test(state): bundle selfdestructs (#627) (5 weeks ago) * 6b55b9c - feat(`interpreter`): add hash to bytecode (#628) (5 weeks ago) * 2054293 - chore: misc improvements (#633) (5 weeks ago) * 43d535c - style: bundle state (#637) (5 weeks ago) * f843592 - fix(state): return RevertToSlot struct with more info (#636) (5 weeks ago) * aee1d1c - bug(state): remove redundunt info revert on destruct (#635) (5 weeks ago) * 321152a - book workflow (#537) (5 weeks ago) * 0028193 - feat: Optional coinbase tip (#625) (5 weeks ago) * 6ea1edc - test(state): bundle reverts collapse (#626) (5 weeks ago) * a40f272 - feat(state): Use preloaded bundle inside state (#622) (5 weeks ago) * 68820da - feat(state): Block hash cache and overrides (#621) (5 weeks ago) * eb6a9f0 - Revert "feat: alloy migration (#535)" (#616) (6 weeks ago) * e5227c4 - test(state): account & storage revert value preservation (#614) (6 weeks ago) * c1bad0d - chore: spell check (#615) (6 weeks ago) * 588503a - chore: get or insert bundle state (#613) (6 weeks ago) * 7e83c7f - fix(inspector): call call_end/create_end when inspector shortcircuits calls (#609) (6 weeks ago) * adf42b2 - chore(deps): bump anyhow from 1.0.74 to 1.0.75 (#606) (6 weeks ago) * 0e85fdf - chore(deps): bump tokio from 1.31.0 to 1.32.0 (#607) (6 weeks ago) * 449d6b9 - chore: export some `unreachable_pub` items (#598) (6 weeks ago) * 5d0b54d - chore(deps): bump anyhow from 1.0.72 to 1.0.74 (#602) (6 weeks ago) * c785115 - fix: Load caller in safe way in finalization fn (#604) (6 weeks ago) * dfae7fe - chore: fix test build, use new types (#605) (6 weeks ago) * fc2107c - chore: Revert test, not change storage check , renaming of original slot value (#601) (6 weeks ago) * f95b7a4 - feat: alloy migration (#535) (6 weeks ago) * 49a6470 - chore: `TransitionState::with_capacity` -> `TransitionState::single` (#600) (6 weeks ago) * f4224d8 - perf: pre-allocate inner bundle state (#599) (6 weeks ago) * 5cdaa97 - chore: avoid unnecessary allocations (#581) (6 weeks ago) * da26d0d - chore(deps): bump tokio from 1.29.1 to 1.31.0 (#595) (6 weeks ago) * ef57a46 - feat: State with account status (#499) (7 weeks ago) * 1478724 - chore: move precompiles to EVMData for inspectors (#588) (7 weeks ago) * fe6c54e - fix(transient_storage): set previous value in journal (#585) (7 weeks ago) * bd84a07 - refactor: rewrite revm-test as a criterion bench (#579) (7 weeks ago) * 5734f12 - fix: AccessList with two same addresses (#578) (8 weeks ago) * 06b1f6b - feat: EIP-1153 Transient storage opcodes (#546) (8 weeks ago) * 4686cb3 - fix(revm): EIP-3155 tracer tx output without debug artefact (#552) (9 weeks ago) * 26126ad - fix(revm): extra return in EIP3155 inspector (#563) (9 weeks ago) * 3f6052c - fix(revm): include CREATE/CREATE2 in EIP3155 inspector (#562) (9 weeks ago) * 5ce9dc9 - chore: clippy and fmt (#568) (9 weeks ago) * 30bfa73 - fix(doc): Inline documentation of re-exports (#560) (9 weeks ago) * 10f81ba - optimize stack usage for recursive `call` and `create` programs (#522) (3 months ago) * 323370a - fix comment (#529) (3 months ago) * 51072e6 - consume all gas on invalid opcode (#500) (3 months ago) * 63f9460 - chore(deps): bump auto_impl from 1.0.1 to 1.1.0 (#478) (3 months ago) * 3a77ee5 - docs: fix comment typo (#517) (3 months ago) * d343858 - fix: typo in eip-3155 output (#497) (4 months ago) * f8ff6b3 - feat: separate initial checks (#486) (5 months ago) * c3b0312 - docs: add some CacheDB docs (#484) (5 months ago) * c81acc6 - feat: Create account checkpoint (#483) (5 months ago) * 6057cc2 - chore: refactor interpreter run and remove static flag (#481) (5 months ago) * d193418 - chore: Bundle inspector crate/call calls (#480) (5 months ago) * 75a6136 - feat: Introduce account status as bitflag inside JournalState (#477) (5 months ago) # v3.3.0 date: 03.05.2023 Consensus bug: * cde2f2d - fix: revert of selfdestruct with same target address (#475) (2 hours ago) Other small changes: * bd0fad8 - (HEAD -> reles, origin/main, origin/HEAD) chore(deps): bump tokio from 1.27.0 to 1.28.0 (#470) (52 minutes ago) * ccefbca - chore(deps): bump ruint from 1.7.0 to 1.8.0 (#465) (52 minutes ago) * 7c2e0f5 - chore(deps): bump anyhow from 1.0.70 to 1.0.71 (#471) (53 minutes ago) * d7adfd5 - Fix typo in primitives/src/state.rs (#474) (53 minutes ago) * d0cd897 - add example to revm crate (#468) (8 days ago) * 08091e1 - fix: compile errors for features (#467) (13 days ago) # v3.2.0 date: 19.04.2023 consensus bug: * fix: touched account on creation (#463) (2 hours ago) # v3.1.1 date: 14.04.2023 bump revm dependency versions. # v3.1.0 date: 04.04.2022 Main changes can be summarizes in: * f91d5f9 - refactor: remove gas blocks (#391) (5 weeks ago) * removal of gas block allowed us to have more compact analysis data. Gas block from beginning didn't have big impact on performance but introduced not intuitive gas calculations that was source of some bugs. * 08ce847 - feat(Shanghai): All EIPs: push0, warm coinbase, limit/measure initcode (#376) (7 weeks ago) * revm is Shanghai ready * afc3066 - fix(db): preserve existing account state (#414) (4 weeks ago) * There wasone bug inside CacheDB that was here for a long time, and would happen only if selfdestruct/create2 is called in multiple transaction on same account on same cache data. * 92f08be - feat: json opcode traces EIP-3155 (#356) (7 weeks ago) Changelogs: * 9edb8f4 - (origin/main, origin/HEAD) Improve EthersDB::new (#440) (5 days ago) * c2ee8ff - add feature for ignoring base fee check (#436) (6 days ago) * 6b09caf - chore(deps): bump serde_json from 1.0.94 to 1.0.95 (#434) (6 days ago) * 77f1735 - chore(deps): bump walkdir from 2.3.2 to 2.3.3 (#426) (8 days ago) * ed981c3 - chore(deps): bump serde from 1.0.157 to 1.0.158 (#425) (8 days ago) * 0eff6a7 - Fix panic! message (#431) (2 weeks ago) * 2d5b710 - Comment Fix (#430) (2 weeks ago) * d0038e3 - chore(deps): bump arbitrary from 1.2.3 to 1.3.0 (#428) (2 weeks ago) * d935525 - chore(deps): bump secp256k1 from 0.26.0 to 0.27.0 (#429) (2 weeks ago) * a85ff79 - Update README.md (#424) (2 weeks ago) * 9645015 - chore(deps): bump thiserror from 1.0.38 to 1.0.40 (#421) (2 weeks ago) * aa6519f - chore(deps): bump enumn from 0.1.6 to 0.1.8 (#422) (2 weeks ago) * d63146f - chore(deps): bump futures from 0.3.26 to 0.3.27 (#416) (2 weeks ago) * 52fe7c4 - chore(deps): bump serde_json from 1.0.93 to 1.0.94 (#401) (2 weeks ago) * b98d9c9 - chore(deps): bump serde from 1.0.152 to 1.0.157 (#423) (2 weeks ago) * 3d8ca66 - feat: add Output::into_data (#420) (3 weeks ago) * afc3066 - fix(db): preserve existing account state (#414) (4 weeks ago) * dd0e227 - feat: Add all internals results to Halt (#413) (4 weeks ago) * d8dc652 - fix(interpreter): halt on CreateInitcodeSizeLimit (#412) (4 weeks ago) * b1208fe - feat: add contract+target to selfdestruct hook (#410) (4 weeks ago) * a193d79 - chore: enabled primtive default feature in precompile (#409) (4 weeks ago) * f2656b7 - chore: add primitive SpecId to precompile SpecId conversion (#408) (4 weeks ago) * 1720729 - chore: add display impl for Opcode (#406) (4 weeks ago) * 33bf8a8 - feat: use singular bytes for the jumpmap (#402) (4 weeks ago) * 394e8e9 - feat: extend SuccessOrHalt (#405) (4 weeks ago) * cff1070 - Update readmdoc of `perf_analyse_created_bytecodes` (#404) (4 weeks ago) * fbc62a3 - chore: fix typo StorageChange (#403) (4 weeks ago) * 7bb73da - feat: Add check for chainID (#393) (4 weeks ago) * 3a17ca8 - feat: add b256<->u256 from impls (#398) (4 weeks ago) * 3789509 - feat: add API to retrieve unpadded bytecode (#397) (5 weeks ago) * 5ab154a - chore(deps): bump tokio from 1.25.0 to 1.26.0 (#395) (5 weeks ago) * f91d5f9 - refactor: remove gas blocks (#391) (5 weeks ago) * 8dc024a - Add copyright start year (#387) (5 weeks ago) * 4d2f074 - feat: add EVM::with_env (#385) (6 weeks ago) * 5efd9d1 - impl NonceTooHigh/ NonceTooLow checks (#383) (6 weeks ago) * 8e6f4f2 - chore: fix compilation if serde not enabled (#381) (7 weeks ago) * 92f08be - feat: json opcode traces EIP-3155 (#356) (7 weeks ago) * ec582a8 - chore(deps): bump once_cell from 1.17.0 to 1.17.1 (#378) (7 weeks ago) * 188dacf - improvement: derive Debug for DatabaseComponentError (#377) (7 weeks ago) * 0401cfd - Add B160/B256 From primitive_types traits (#380) (7 weeks ago) * a8ae3f4 - fix: using pop_top instead of pop in eval_exp (#379) (7 weeks ago) * 08ce847 - feat(Shanghai): All EIPs: push0, warm coinbase, limit/measure initcode (#376) (7 weeks ago) * 6710511 - add no_std to primitives (#366) (7 weeks ago) * d5ebdb0 - chore(deps): bump tokio from 1.24.2 to 1.25.0 (#352) (7 weeks ago) * ebaccca - chore(deps): bump futures from 0.3.25 to 0.3.26 (#353) (7 weeks ago) * 5788340 - chore(deps): bump bytes from 1.3.0 to 1.4.0 (#355) (7 weeks ago) * d3fba88 - chore(deps): bump serde_json from 1.0.92 to 1.0.93 (#365) (7 weeks ago) * e22c3f3 - fix: call create_end for all code paths (#362) (7 weeks ago) * b4c62e9 - chore: rename Then to Than (#368) (7 weeks ago) * 1c3e9e3 - improvement: use alloc & core for Arc impl (#367) (8 weeks ago) * 3158ce9 - feat: implement Debug for DatabaseComponentError if supported (#363) (8 weeks ago) * d9727c2 - improvement: add error details to InvalidTransaction::LackOfFundForGasLimit (#364) (8 weeks ago) * 6b170b4 - Use gas price in place of effective gas price for initial balance check (#359) (8 weeks ago) * 5d6ecd0 - improvement: implement BlockHash for Arc (#361) (8 weeks ago) * ae9baba - improvement: implement State for Arc (#360) (8 weeks ago) * 2e4e800 - chore(deps): bump serde_json from 1.0.91 to 1.0.92 (#357) (8 weeks ago) * 1fca102 - chore(deps): bump proptest from 1.0.0 to 1.1.0 (#358) (8 weeks ago) * 9b663bb - feat: Different OutOfGas Error types (#354) (9 weeks ago) * 10187ed - data change (9 weeks ago) # v3.0.0 date 29.01.2022 This is big release that has core changes that breaks compatibility. In summary: * Project is refactored into `revm-primitives`,`revm-precompile`,`revm-interpreter` and `revm` to have more flexibility and separation of concerns. And include paths in revm reflect that. So try to find include as `revm::primitives` or `revm::interpreter` * Parity `primitive-types` was replaced with `ruint` for big numbers and subset of macros are used for native `B160`/`B256` types. * Interpreter instructions are unified and now all of them have same signature. * web3 db was replaces with ethers alternative. * revmjs lib was removed from crates. * `revm_precompiles` was renamed to `revm-precompile.` * Return types are made to have more insight of what have happened inside revm. * Snailtracer benchmark got around 20% faster. Github Changelog: * dc9818f - (HEAD -> o/bump, origin/bump_v20) Bump v20 (13 hours ago) * 75ef0f1 - (origin/main, origin/HEAD) feat: Staticcall internal return (#349) (13 hours ago) * 0194b37 - (t) fix bug introduced in last commit (13 hours ago) * 7b00f32 - Cleanup imports (#348) (14 hours ago) * c14d7ea - fix: enable the examples to run with the current revm (#347) (16 hours ago) * 329fd94 - Wrap all calls to interpreter.gas.erase_cost with checks if USE_GAS is enabled (#346) (2 days ago) * 72355f4 - improvement: add logs & return value to revert (#343) (3 days ago) * 142a1c9 - expose hashbrown::HashMap in primitives (#345) (3 days ago) * ba393d7 - fix: disable balance check (#342) (4 days ago) * 876fad1 - refactor: simplify DatabaseComponentError (#339) (6 days ago) * 81534ad - chore: includes to libs (#338) (7 days ago) * e2f4d32 - Creating revm-primitives, revm better errors and db components (#334) (10 days ago) * de83db6 - fix: feature flags (#330) (2 weeks ago) * b60269c - `revm`: mark `with-serde` feature as deprecated (#328) (2 weeks ago) * 63bf475 - make load_account pub (#325) (3 weeks ago) * 0ef0197 - Cleanup, move hot fields toggether in Interpreter (#321) (3 weeks ago) * 81942d6 - enable proptest with arbitrary feature (#323) (3 weeks ago) * 2be3798 - feat: revm-interpreter created (#320) (3 weeks ago) * 7e98fef - fix: feature flag compiler errors (#256) (5 weeks ago) * 488ef8a - Add example for fork + ref_transact impl (#296) (6 weeks ago) <0xDmtri> * 56e6c22 - feat: allow disabling of balance checks (#297) (6 weeks ago) * 8661467 - feat: Export CustomPrinter insector from revm (#300) (6 weeks ago) * 222b8e9 - feature: substitute web3db to ethersdb (#293) (6 weeks ago) <0xDmtri> * fd01083 - feature(revm): Return `bytes` in Create calls (#289) (7 weeks ago) * 2fb0933 - docs: Correct typo (#282) (7 weeks ago) * 90fe01e - feat(interpreter): Unify instruction fn signature (#283) (7 weeks ago) * 54e0333 - bug: Integer overflow while calculating the remaining gas in GasInspector (#287) (8 weeks ago) * acdbaac - native bits (#278) (8 weeks ago) * 69e302b - feat(revm): Add prevrandao field to EnvBlock (#271) (2 months ago) * d1703cd - Export StorageSlot (#265) (3 months ago) * 560bb03 - Fix: typos (#263) (3 months ago) * 369244e - feat(refactor): make keccak in one place. (#247) (3 months ago) * c96c878 - feat: Migrate `primitive_types::U256` to `ruint::Uint<256, 4>` (#239) (3 months ago) # v2.3.1 date: 22.11.2022 Bump dependency versions. # v2.3.0 date: 16.11.2022 Very small release. Exposes one field and added prevrandao to remove footgun of forgeting to set difficulty. * 927d16c - disable gas refunds with env flag (#267) (14 minutes ago) * 47a8310 - Add prevrandao field to EnvBlock (3 minutes ago) * 2c45b04 - Export StorageSlot (#265) (23 minutes ago) # v2.2.0 date: 12.11.2022 Small release that contains consensus bug fix. Additionally added few small feature flags needed for hardhat, opcode utility function and removal of web3db block number check. * dc3414a - Added OEF spec for tests. Skip HighGasPrice (4 minutes ago) * f462f9d - Bugfix: if returndatacopy is len 0 return after initial cost (#259) (4 minutes ago) * ea2f2a2 - fix web3db sanity check (#245) (12 days ago) * 9f8cdbd - feat: allow block gas limit to be toggled off (#238) (3 weeks ago) * efd9afc - feat: allow eip3607 to be toggled off (#237) (3 weeks ago) * 88c72a7 - fix: return out of gas code for precompiled contracts (#234) (3 weeks ago) * 30462a3 - Fix: typos (#232) (3 weeks ago) * 9f513c1 - Borrow self and add derive traits for OpCode (#231) (4 weeks ago) # v2.1.0 date: 25.09.2022 GasInspector added by Alexey Shekhirin and some helper functions. Changes: * ca14d61 - gas inspector (#222) (7 days ago) * 1e25c99 - chore: expose original value on storageslot (#216) (13 days ago) * aa39d64 - feat: add Memory::shrink_to_fit (#215) (13 days ago) * JournaledState (#175) * Optimize handling of precompiles. Initialization and account loading. * Fixes SELFDESTRUCT bug. * Optimize calldataload. Some cleanup (#168) * Handle HighNonce tests (#176) * feat: expose hash on `BytecodeLocked` (#189) (12 days ago) * revm: Update account storage methods in CacheDB (#171) (4 weeks ago) * reexport revm_precompiles as precompiles (#197) (6 days ago) * chore(ci): use ethtests profile for CI tests (#188) (2 weeks ago) * Bump dependencies version * current_opcode fn and rename program_counter to instruction_pointer (#211) * Cfg choose create analysis, option on bytecode size limit (#210) * Cleanup remove U256 and use u64 for gas calculation (#213) Consensus bugs: * SELFDESTRUCT was not handled correctly. It would remove account/storage but it should just mark it for removal. This bug was here from earlier version of revm. (#175) * fix: set gas_block to empty bytecode (#172). Introduced in v1.8.0 with bytecode format. # v1.9.0 date: 09.08.2022 Small release. Optimizations * Cache bytecode hash * Move override_spec config from Inspector to cfg # v1.8.0 date: 01.08.2022 Medium release, good performance boost. Database trait has changed to support Bytecode. * Introduce Bytecode format (#156) * Update readme files. * Merge eth/tests supported. # v1.7.0 date: 11.06.2022 small release: * Make CacheDB field pub and add few utility functions * Rename Byzantine to Byzantium # v1.6.0 date: 02.06.2022 Most changes are relayed to CacheDB and how it saved accounts. * Introduce account `Touched/Cleared/None` state in CacheDB * Add missing inspectors `call_end` calls * bump dependencies and few standard derives. # v1.5.0 date: 09.06.2022 Consensus error related to gas block optimization and `sstore` min stipend. Solution is to make `sstore` instruction as `gas_block_end` as to not spend future instruction gas when checking min stipend condition introduced in EIP-2200. * Consensus error with gas block for SSTORE stipend check (#124) * enable EIP2200 in Istanbul (#125) # v1.4.1 date: 06.06.2022 Small release: * chore: export evm_inner (#122) # v1.4.0 date: 03.06.2022 Small release: * fix: BLOCKHASH should return 0 if number not in last 256 blocks (#112) * feat: add getters for cachedb (#119) * bump some lib versions. # v1.3.1 date: 11.4.2022 Small fixes release. * Empty keccak constant and remove access_list.clone (#111) * chore: typo fixes * fix is_static for Inspector initialize_interp # v1.3.0 date: 30.4.2022 There are a lot of big changes that are included in this release as revm was integrated inside foundry. * A lot of changed on Inspector, added new calls and flushed out how it should be called. Big effort mostly driven by Oliver Nordbjerg * Big internal refactor and renaming: Machine->Inspector, call/create info are now in structs. * feat: add serde support to model types. Thank you Matthias Seitz * Added rust feature that sets memory limit on interpreter that is configurable with env.cfg. by Oliver Nordbjerg. * Library bumped to higher version. # v1.2.0 date 20.1.2022 Changes: * Bump revm_precompile and added new feature for k256 lib. # v1.1.0 date: 14.1.2022 There is bug introduced in last release with gas blcok optimization, it will crash revm if anywhere in contract is unknown OpCode. And now returning log after execution (ups) included them in eth/tests verification. Changes: * Bug fix for unknown OpCode * Omit edgecase high nonce test. tracer gas fix * Some internal cleanup # v1.0.0 date: 18.12.2021 It feel's like that the lib is in the state that is okay to promote it to the v1 version. Other that that, a lot of optimizations are done and the inspector trait was rewritten. Changes: * web3 db * precalculated gas blocks. Optimization * PC opcode as pointer. Optimization * U256 div_rem optimization * Inspector refactored and it is now closer to Host interface. Optimization thread: https://github.com/bluealloy/revm/issues/7 # v0.5.0 date: 17.11.2021 A lot of optimization on machine(Interpreter) part, it is now at least 3x faster. On interface side, Error enum was renamed to Return and it is simplified. Additionally if needed gas measuring can be removed with rust feature. Changes: * push instruction optimized. * mload/mstore and memory optimized * Gas calculation optimized * optimize i256 * switch stacks from H256 with U256 * Error's refactor to Return * clippy/warnings/fmt cleanup * Bump auto_impl to v0.5 * opcode renaming * Gas measurment can be removed with rust features. # v0.4.1 date: 02.11.2021 Change in interface and how you can call evm. There is now multiple Database traits for use and inspector is taken on transact call as reference. * 20ac70b - Database traits made useful. * 46b5bcd - EVM Interface changed. Inspector called separately. # v0.3.1 date: 27.10.2021 remove some warnings for unused imports and done cargo fmt. # v0.3.0 date: 27.10.2021 Interface revamped and now looks a lot better. Log: * 1b1ebd8 - [revm] Interface. Inspector added, Env cleanup. revm-test passes (9 hours ago) * 351d4e0 - BIG interface change (11 hours ago) * a723827 - no_sdt to no_std (2 days ago) * a449bed - [precompiles] spelling, small cleanup (2 days ago) # v0.2.2 Same as v0.2.1 but added readme. # v0.2.1 date: 25.10.2021 Big refactor, cleanup changes, and updating tests. EIP-3607 added. Log: * a6e01de - BIG reorg. workspace added. revm-precompile lib (20 minutes ago) * e50f6d3 - Move merkle trie from revm to eth/tests crate (4 hours ago) * 633ffd4 - Bump tests to v10.1 (28 hours ago) * 14b3de1 - Payment overflow check (30 hours ago) * 6e964ba - EIP-3607: Reject transactions from senders with deployed code (30 hours ago) # v0.2.0 date: 23.10.2021: Published v0.2.0, first initial version of code. London supported and all eth state test are 100% passing or Istanbul/Berlin/London. ### 17.10.2021: -For past few weeks working on this structure and project in general become really good and I like it. For me it surved as good distraction for past few weeks and i think i am going to get drained if i continue working on it, so i am taking break and i intend to come back after few months and finish it. - For status: * machine/spec/opcodes/precompiles(without modexp) feels good and I probably dont need to touch them. * inspector: is what i wanted, full control on insides of EVM so that we can control it and modify it. will probably needs to add some small tweaks to interface but nothing major. * subroutines: Feels okay but it needs more scrutiny just to be sure that all corner cases are covered. * Test that are failing (~20) are mostly related to EIP-158: State clearing. For EIP-158 I will time to do it properly. * There is probably benefit of replaing HashMap hasher with something simpler, but this is research for another time. ## Project structure: