# 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] ## [15.0.0](https://github.com/bluealloy/revm/compare/revm-precompile-v14.0.0...revm-precompile-v15.0.0) - 2024-11-06 ### Other - bump alloy-eip7702 and remove `Parity` re-export ([#1842](https://github.com/bluealloy/revm/pull/1842)) - *(precompile)* use secp256k1 global context for ecrecover ([#1845](https://github.com/bluealloy/revm/pull/1845)) ## [14.0.0](https://github.com/bluealloy/revm/compare/revm-precompile-v13.0.0...revm-precompile-v14.0.0) - 2024-10-23 ### Other - updated the following local packages: revm-primitives ## [13.0.0](https://github.com/bluealloy/revm/compare/revm-precompile-v12.0.0...revm-precompile-v13.0.0) - 2024-10-17 ### Other - updated the following local packages: revm-primitives ## [12.0.0](https://github.com/bluealloy/revm/compare/revm-precompile-v11.0.3...revm-precompile-v12.0.0) - 2024-10-17 ### Added - Rename PRAGUE_EOF to OSAKA ([#1822](https://github.com/bluealloy/revm/pull/1822)) ## [11.0.3](https://github.com/bluealloy/revm/compare/revm-precompile-v11.0.2...revm-precompile-v11.0.3) - 2024-09-26 ### Other - updated the following local packages: revm-primitives ## [11.0.2](https://github.com/bluealloy/revm/compare/revm-precompile-v11.0.1...revm-precompile-v11.0.2) - 2024-09-18 ### Other - make clippy happy ([#1755](https://github.com/bluealloy/revm/pull/1755)) ## [11.0.1](https://github.com/bluealloy/revm/compare/revm-precompile-v11.0.0...revm-precompile-v11.0.1) - 2024-08-30 ### Other - Bump new logo ([#1735](https://github.com/bluealloy/revm/pull/1735)) - bump kzg-rs version ([#1734](https://github.com/bluealloy/revm/pull/1734)) ## [10.1.0](https://github.com/bluealloy/revm/compare/revm-precompile-v10.0.0...revm-precompile-v10.1.0) - 2024-08-29 ### Added - c-kzg bump, cleanup on kzgsetting ([#1719](https://github.com/bluealloy/revm/pull/1719)) ### Other - bump `kzg-rs` version ([#1726](https://github.com/bluealloy/revm/pull/1726)) - switch gas check order in blake2 precompile ([#1718](https://github.com/bluealloy/revm/pull/1718)) ## [9.3.0](https://github.com/bluealloy/revm/compare/revm-precompile-v9.2.0...revm-precompile-v9.3.0) - 2024-08-08 ### Added - use batch bn256 pair operation ([#1643](https://github.com/bluealloy/revm/pull/1643)) ### 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 blst from 0.3.12 to 0.3.13 ([#1669](https://github.com/bluealloy/revm/pull/1669)) - *(clippy)* 1.80 rust clippy list paragraph ident ([#1661](https://github.com/bluealloy/revm/pull/1661)) - use `is_zero` for `U256` and `B256` ([#1638](https://github.com/bluealloy/revm/pull/1638)) ## [9.1.0](https://github.com/bluealloy/revm/compare/revm-precompile-v9.0.0...revm-precompile-v9.1.0) - 2024-07-16 ### Added - use `kzg-rs` for kzg point evaluation ([#1558](https://github.com/bluealloy/revm/pull/1558)) ### Other - main CHANGELOG ([#1592](https://github.com/bluealloy/revm/pull/1592)) ## [9.0.0](https://github.com/bluealloy/revm/compare/revm-precompile-v8.0.0...revm-precompile-v8.1.0) - 2024-07-08 ### Added - *(Precompiles)* Throw fatal error if c-kzg is disabled ([#1589](https://github.com/bluealloy/revm/pull/1589)) ## [8.0.0](https://github.com/bluealloy/revm/compare/revm-precompile-v7.0.0...revm-precompile-v8.0.0) - 2024-06-20 ### Added - *(precompiles)* fatal error for precompiles ([#1499](https://github.com/bluealloy/revm/pull/1499)) - add ecAdd to precompile bench ([#1496](https://github.com/bluealloy/revm/pull/1496)) - *(optimism)* Add secp256r1 precompile for Fjord ([#1436](https://github.com/bluealloy/revm/pull/1436)) ### Fixed - *(eof)* fixture 2 tests ([#1550](https://github.com/bluealloy/revm/pull/1550)) - check canonical Fp elements ([#1434](https://github.com/bluealloy/revm/pull/1434)) - *(precompile)* ignore infinity points in G1 MSM ([#1432](https://github.com/bluealloy/revm/pull/1432)) - *(precompile)* BLS G2 MSM ([#1428](https://github.com/bluealloy/revm/pull/1428)) ### Other - avoid cloning precompiles ([#1486](https://github.com/bluealloy/revm/pull/1486)) - *(precompiles)* Fix some nits in bls12_381 ([#1495](https://github.com/bluealloy/revm/pull/1495)) - *(deps)* allow multiple versions of secp256k1 ([#1490](https://github.com/bluealloy/revm/pull/1490)) - *(deps)* bump rstest from 0.19.0 to 0.21.0 ([#1482](https://github.com/bluealloy/revm/pull/1482)) - *(deps)* bump blst from 0.3.11 to 0.3.12 ([#1481](https://github.com/bluealloy/revm/pull/1481)) - add test for map_fp_to_g1 precompile ([#1465](https://github.com/bluealloy/revm/pull/1465)) - add docs for BLS scalar input decoding ([#1446](https://github.com/bluealloy/revm/pull/1446)) ## [7.0.0](https://github.com/bluealloy/revm/compare/revm-precompile-v6.0.0...revm-precompile-v7.0.0) - 2024-05-12 ### Added - *(precompile)* Prague - EIP-2537 - BLS12-381 curve operations ([#1389](https://github.com/bluealloy/revm/pull/1389)) - *(precompile)* add Prague hardfork specification ([#1387](https://github.com/bluealloy/revm/pull/1387)) - 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)) ### Fixed - *(precompile)* blst dangling pointers, cleanup ([#1391](https://github.com/bluealloy/revm/pull/1391)) - *(precompile)* inherit Prague precompiles from Cancun ([#1392](https://github.com/bluealloy/revm/pull/1392)) ### Other - bump c-kzg to 1.0.2 ([#1390](https://github.com/bluealloy/revm/pull/1390)) - refactor lints ([#1386](https://github.com/bluealloy/revm/pull/1386)) - *(deps)* bump aurora-engine-modexp from 1.0.0 to 1.1.0 ([#1339](https://github.com/bluealloy/revm/pull/1339)) - *(deps)* bump secp256k1 from 0.28.2 to 0.29.0 ([#1260](https://github.com/bluealloy/revm/pull/1260)) ## [6.0.0](https://github.com/bluealloy/revm/compare/revm-precompile-v5.1.0...revm-precompile-v6.0.0) - 2024-04-02 ### Fixed - update/enable bn128 tests ([#1242](https://github.com/bluealloy/revm/pull/1242)) - use correct bn128 mul input length ([#1238](https://github.com/bluealloy/revm/pull/1238)) - use correct rand package for thread_rng ([#1233](https://github.com/bluealloy/revm/pull/1233)) ### Other - remove unnecessary call to into_u256() for bn128 add ([#1239](https://github.com/bluealloy/revm/pull/1239)) ## [5.1.0](https://github.com/bluealloy/revm/compare/revm-precompile-v5.0.0...revm-precompile-v5.1.0) - 2024-03-19 ### Added - add benchmarks for ecpairing, kzg, ecrecover precompiles ([#1211](https://github.com/bluealloy/revm/pull/1211)) - use Message::from_digest in secp256k1 ecrecover ([#1199](https://github.com/bluealloy/revm/pull/1199)) ### Other - expose functionality for custom EVMs ([#1201](https://github.com/bluealloy/revm/pull/1201)) - c-kzg v1.0.0 ([#1190](https://github.com/bluealloy/revm/pull/1190)) - fix some typos ([#1189](https://github.com/bluealloy/revm/pull/1189)) ## [5.0.0](https://github.com/bluealloy/revm/compare/revm-precompile-v4.1.0...revm-precompile-v5.0.0) - 2024-03-08 ### Added - *(precompile)* add a bool to bytes32 helper function ([#1170](https://github.com/bluealloy/revm/pull/1170)) - precompile with generic context ([#1155](https://github.com/bluealloy/revm/pull/1155)) - Add boxed precompile trait ([#1131](https://github.com/bluealloy/revm/pull/1131)) ## [4.1.0](https://github.com/bluealloy/revm/compare/revm-precompile-v4.0.1...revm-precompile-v4.1.0) - 2024-02-22 ### Added - bump c-kzg, add portable feature, make it default ([#1106](https://github.com/bluealloy/revm/pull/1106)) ### Other - clippy cleanup ([#1112](https://github.com/bluealloy/revm/pull/1112)) ## [4.0.1](https://github.com/bluealloy/revm/compare/revm-precompile-v4.0.0...revm-precompile-v4.0.1) - 2024-02-17 ### Fixed - rename and pass optimism-default-handler to revm-primitives ([#1098](https://github.com/bluealloy/revm/pull/1098)) ### Other - *(precompile)* use `Bytes` in precompile functions ([#1085](https://github.com/bluealloy/revm/pull/1085)) - license date and revm docs ([#1080](https://github.com/bluealloy/revm/pull/1080)) ## [4.0.0](https://github.com/bluealloy/revm/compare/revm-precompile-v3.0.0...revm-precompile-v4.0.0) - 2024-02-12 ### Other - *(precompile)* don't allocate if padding is not needed ([#1075](https://github.com/bluealloy/revm/pull/1075)) - *(precompile)* simplify bn128 precompile implementations ([#1074](https://github.com/bluealloy/revm/pull/1074)) - *(precompile)* make use of padding utilities, simplify secp256k1 ([#1073](https://github.com/bluealloy/revm/pull/1073)) - precompile bn128 copy ([#1071](https://github.com/bluealloy/revm/pull/1071)) - *(revm)* Add helpers to Build Revm with Context ([#1068](https://github.com/bluealloy/revm/pull/1068)) ## [3.0.0](https://github.com/bluealloy/revm/compare/revm-precompile-v2.2.0...revm-precompile-v3.0.0) - 2024-02-07 Precompiles are refactored from list to HashMap, this allows adding arbitrary precompiles to the list. ### Added - *(op)* Ecotone hardfork ([#1009](https://github.com/bluealloy/revm/pull/1009)) - EvmBuilder and External Contexts ([#888](https://github.com/bluealloy/revm/pull/888)) - add asm-keccak feature ([#972](https://github.com/bluealloy/revm/pull/972)) - `Canyon` hardfork behind `optimism` feature flag ([#871](https://github.com/bluealloy/revm/pull/871)) - *(interpreter)* add more helper methods to memory ([#794](https://github.com/bluealloy/revm/pull/794)) - *(precompile)* use Aurora modexp lib. ([#769](https://github.com/bluealloy/revm/pull/769)) - derive more traits ([#745](https://github.com/bluealloy/revm/pull/745)) ### Fixed - *(ci)* Workflow Touchups ([#901](https://github.com/bluealloy/revm/pull/901)) ### Other - bump c-kzg and enable blst portable feature ([#1059](https://github.com/bluealloy/revm/pull/1059)) - *(deps)* bump secp256k1 from 0.28.1 to 0.28.2 ([#1038](https://github.com/bluealloy/revm/pull/1038)) - *(Cancun)* update Cancun precompiles docs ([#1015](https://github.com/bluealloy/revm/pull/1015)) - *(log)* use alloy_primitives::Log ([#975](https://github.com/bluealloy/revm/pull/975)) - *(deps)* bump k256 from 0.13.2 to 0.13.3 ([#959](https://github.com/bluealloy/revm/pull/959)) - *(deps)* bump secp256k1 from 0.28.0 to 0.28.1 ([#954](https://github.com/bluealloy/revm/pull/954)) - *(deps)* bump once_cell from 1.18.0 to 1.19.0 ([#908](https://github.com/bluealloy/revm/pull/908)) - 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)) - *(precompiles)* Make PrecompileWithAddress field public, from impl ([#857](https://github.com/bluealloy/revm/pull/857)) - change addresses to iterator and add into_addresses ([#855](https://github.com/bluealloy/revm/pull/855)) - bump c-kzg to v0.4.0 ([#849](https://github.com/bluealloy/revm/pull/849)) - Refactor precompile list from Hash to vec ([#823](https://github.com/bluealloy/revm/pull/823)) - *(eip4844)* update kzg trusted setup ([#822](https://github.com/bluealloy/revm/pull/822)) - secp256k1 from 0.27 to 0.28 ([#817](https://github.com/bluealloy/revm/pull/817)) - for now support 1.69 rust compiler ([#814](https://github.com/bluealloy/revm/pull/814)) - document everything, dedup existing docs ([#741](https://github.com/bluealloy/revm/pull/741)) # v2.2.0 date 02.10.2023 Migration to alloy primitive types. Full git log: * af4146a - feat: Alloy primitives (#724) (15 hours ago) # v2.1.0 date 28.09.2023 Summary: * Cancun EIP-4844 precompile. It is behind `c-kzg` that is enabled by default the reason is that c-kzg fails to build on wasm and some docker images. * no_std support * small fixes to return out of gas for modepx and pairing precompiles. Full git log: * 4f916be - chore: bump c-kzg to create lib (#758) (5 hours ago) * f79d0e1 - feat: Optimism execution changes (#682) (16 hours ago) * b9938a8 - chore(deps): bump sha2 from 0.10.7 to 0.10.8 (#752) (30 hours ago) * 8206193 - feat: add "kzg" as a separate feature (#746) (2 hours ago) * 73f6ad7 - modexp gas check (#737) (24 hours ago) * cb39117 - fix(eip4844): Pass eth tests, additional conditions added. (#735) (6 days ago) * fa13fea - (lorenzo/main) feat: implement EIP-4844 (#668) (11 days ago) * 175aaec - Removed the last dependencies breaking no-std build. (#669) (4 weeks ago) * 0fa4504 - fix: pairing cost formula (#659) (4 weeks ago) * eb6a9f0 - Revert "feat: alloy migration (#535)" (#616) (6 weeks ago) * c1bad0d - chore: spell check (#615) (6 weeks ago) * f95b7a4 - feat: alloy migration (#535) (6 weeks ago) * 5cdaa97 - chore: avoid unnecessary allocations (#581) (6 weeks ago) * 30bfa73 - fix(doc): Inline documentation of re-exports (#560) (9 weeks ago) # v2.0.3 date: 03.05.2023 Bump revm primitives. # v2.0.2 date: 14.04.2023 * b2c5262 - fix: k256 compile error (#451) (7 days ago) # v2.0.1 date: 04.04.2023 Small changes Changelog: * 992a11c - (HEAD -> v/310, origin/lib_versions) bump all (89 minutes ago) * d935525 - chore(deps): bump secp256k1 from 0.26.0 to 0.27.0 (#429) (2 weeks ago) * f2656b7 - chore: add primitive SpecId to precompile SpecId conversion (#408) (4 weeks ago) # v2.0.0 date: 29.01.2023 Renamed to `revm-precompiles` from `revm_precompiles` # v1.1.2 date: 22.11.2022 Bump dependency versions. # v1.1.1 date: 06.09.2022 Small release: * refactor(precompiles): Vec -> BTreeMap (#177) (3 weeks ago) * Cache precompile map with once_cell * Bump dependencies version # v1.1.0 date: 11.06.2022 Small release: * Bump k256,secp256 libs * rename Byzantine to Byzantium # v1.0.0 date: 30.04.2022 Promoting it to stable version, and i dont expect for precompiles to change in any significant way in future. * propagate the back the error of Signature::try_from. Thanks to: Nicolas Trippar * Updating dependency versions: secp256k1, k256,primitive_types # v0.4.0 date: 20.1.2022 * Added feature for k256 lib. We now have choise to use bitcoin c lib and k256 for ecrecovery. # v0.3.0 * switch stacks H256 with U256 * Error type is changed to `Return` in revm so it is in precompiles. # v0.2.0 Removed parity-crypto and use only needed secp256k1 lib. Added `ecrecover` feature to allow dissabling it for wasm windows builds. # v0.1.0 Initial version.