diff --git a/CHANGELOG.md b/CHANGELOG.md
index c6be103e..dbeec9b1 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,13 +1,43 @@
Because this is workspace with multi libraries, tags will be simplified, and with this document you can match version of project with git tag.
+# v48 tag
+date 23.10.2024
+Maintenance release. Bug fix for EIP-7702.
+
+* `revm`: 16.0.0 -> 17.0.0 (✓ API compatible changes)
+* `revm-primitives`: 12.0.0 -> 13.0.0 (✓ API compatible changes)
+* `revm-test`: 1.0.0
+* `revm-interpreter`: 12.0.0 -> 13.0.0
+* `revm-precompile`: 13.0.0 -> 14.0.0
+
+# v47 tag
+date: 17.10.2024
+Maintenance release. bumping new alloy-eip7702
+
+* `revme`: 0.11.0 -> 1.0.0
+* `revm`: 15.0.0 -> 16.0.0
+* `revm-primitives`: 11.0.0 -> 12.0.0
+* `revm-precompile`: 12.0.0 -> 13.0.0
+* `revm-interpreter`: 11.0.0 -> 12.0.0
+
+# v46 tag
+date: 17.10.2024
+Maintenance release. EIP-7702 newest changes, alloy-primitives bump.
+
+* `revme`: 0.10.3 -> 0.11.0
+* `revm`: 14.0.3 -> 15.0.0
+* `revm-primitives`: 10.0.0 -> 11.0.0
+* `revm-precompile`: 11.0.3 -> 12.0.0
+* `revm-interpreter`: 10.0.3 -> 11.0.0
+
# v45 tag
date: 26.09.2024
-Maintainance release.
+Maintenance release.
-* `revme`: 0.10.2 -> 0.10.3 (✓ API compatible changes)
-* `revm`: 14.0.2 -> 14.0.3 (✓ API compatible changes)
-* `revm-primitives`: 9.0.2 -> 10.0.0 (✓ API compatible changes)
+* `revme`: 0.10.2 -> 0.10.3
+* `revm`: 14.0.2 -> 14.0.3
+* `revm-primitives`: 9.0.2 -> 10.0.0
* `revm-interpreter`: 10.0.2 -> 10.0.3
* `revm-precompile`: 11.0.2 -> 11.0.3
diff --git a/Cargo.lock b/Cargo.lock
index d0d004c2..c353672f 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -97,10 +97,22 @@ name = "alloy-eip7702"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "37d319bb544ca6caeab58c39cea8921c55d924d4f68f2c60f24f914673f9a74a"
+dependencies = [
+ "alloy-primitives",
+ "alloy-rlp",
+ "serde",
+]
+
+[[package]]
+name = "alloy-eip7702"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c15873ee28dfe5a1aeddd762483bc7f378b465ec49bdce8165c4c46b4f55cb0a"
dependencies = [
"alloy-primitives",
"alloy-rlp",
"arbitrary",
+ "derive_more 1.0.0",
"k256",
"rand 0.8.5",
"serde",
@@ -108,16 +120,17 @@ dependencies = [
[[package]]
name = "alloy-eips"
-version = "0.3.0"
+version = "0.3.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "159eab0e4e15b88571f55673af37314f4b8f17630dc1b393c3d70f2128a1d494"
+checksum = "f923dd5fca5f67a43d81ed3ebad0880bd41f6dd0ada930030353ac356c54cd0f"
dependencies = [
"alloy-eip2930",
- "alloy-eip7702",
+ "alloy-eip7702 0.1.0",
"alloy-primitives",
"alloy-rlp",
"alloy-serde",
"c-kzg",
+ "derive_more 1.0.0",
"once_cell",
"serde",
"sha2 0.10.8",
@@ -183,9 +196,9 @@ dependencies = [
[[package]]
name = "alloy-primitives"
-version = "0.8.7"
+version = "0.8.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ecb848c43f6b06ae3de2e4a67496cbbabd78ae87db0f1248934f15d76192c6a"
+checksum = "38f35429a652765189c1c5092870d8360ee7b7769b09b06d89ebaefd34676446"
dependencies = [
"alloy-rlp",
"arbitrary",
@@ -3875,7 +3888,7 @@ dependencies = [
[[package]]
name = "revm"
-version = "14.0.3"
+version = "17.0.0"
dependencies = [
"alloy-eips",
"alloy-provider",
@@ -3901,7 +3914,7 @@ dependencies = [
[[package]]
name = "revm-interpreter"
-version = "10.0.3"
+version = "13.0.0"
dependencies = [
"bincode",
"paste",
@@ -3914,7 +3927,7 @@ dependencies = [
[[package]]
name = "revm-precompile"
-version = "11.0.3"
+version = "14.0.0"
dependencies = [
"alloy-rlp",
"aurora-engine-modexp",
@@ -3949,10 +3962,10 @@ dependencies = [
[[package]]
name = "revm-primitives"
-version = "10.0.0"
+version = "13.0.0"
dependencies = [
"alloy-eip2930",
- "alloy-eip7702",
+ "alloy-eip7702 0.3.1",
"alloy-primitives",
"auto_impl",
"bitflags 2.6.0",
@@ -3968,7 +3981,7 @@ dependencies = [
[[package]]
name = "revm-test"
-version = "0.1.0"
+version = "1.0.0"
dependencies = [
"alloy-sol-macro",
"alloy-sol-types",
@@ -3982,11 +3995,10 @@ dependencies = [
[[package]]
name = "revme"
-version = "0.10.3"
+version = "2.0.0"
dependencies = [
"alloy-rlp",
"hash-db",
- "hashbrown 0.14.5",
"hex 0.4.3",
"indicatif",
"k256",
diff --git a/bins/revm-test/CHANGELOG.md b/bins/revm-test/CHANGELOG.md
index 39575c41..ade7f740 100644
--- a/bins/revm-test/CHANGELOG.md
+++ b/bins/revm-test/CHANGELOG.md
@@ -6,6 +6,337 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## [1.0.0](https://github.com/bluealloy/revm/releases/tag/revm-test-v1.0.0) - 2024-10-23
+
+### Added
+
+- EOF (Ethereum Object Format) ([#1143](https://github.com/bluealloy/revm/pull/1143))
+- add tests for shift instructions ([#1254](https://github.com/bluealloy/revm/pull/1254))
+- EvmBuilder and External Contexts ([#888](https://github.com/bluealloy/revm/pull/888))
+- separate initial checks ([#486](https://github.com/bluealloy/revm/pull/486))
+- revm-interpreter created ([#320](https://github.com/bluealloy/revm/pull/320))
+- *(interpreter)* Unify instruction fn signature ([#283](https://github.com/bluealloy/revm/pull/283))
+- Migrate `primitive_types::U256` to `ruint::Uint<256, 4>` ([#239](https://github.com/bluealloy/revm/pull/239))
+- Introduce ByteCode format, Update Readme ([#156](https://github.com/bluealloy/revm/pull/156))
+
+### Fixed
+
+- *(eof)* fixture 2 tests ([#1550](https://github.com/bluealloy/revm/pull/1550))
+- *(clippy)* fix some clippy lints
+
+### Other
+
+- bump major version number
+- release-plz update
+- Bump v46 versions ([#1826](https://github.com/bluealloy/revm/pull/1826))
+- release-plz update ([#1807](https://github.com/bluealloy/revm/pull/1807))
+- release-plz update
+- *(deps)* bump alloy-sol-types from 0.8.0 to 0.8.2 ([#1762](https://github.com/bluealloy/revm/pull/1762))
+- release ([#1729](https://github.com/bluealloy/revm/pull/1729))
+- release ([#1722](https://github.com/bluealloy/revm/pull/1722))
+- *(deps)* bump alloy and primitives ([#1725](https://github.com/bluealloy/revm/pull/1725))
+- *(deps)* bump bytes from 1.6.1 to 1.7.1 ([#1700](https://github.com/bluealloy/revm/pull/1700))
+- tag v41 revm v13.0.0 ([#1692](https://github.com/bluealloy/revm/pull/1692))
+- release ([#1683](https://github.com/bluealloy/revm/pull/1683))
+- *(deps)* bump regex from 1.10.5 to 1.10.6 ([#1682](https://github.com/bluealloy/revm/pull/1682))
+- bump versions bcs of primitives ([#1631](https://github.com/bluealloy/revm/pull/1631))
+- release ([#1620](https://github.com/bluealloy/revm/pull/1620))
+- *(deps)* bump alloy-sol-types from 0.7.6 to 0.7.7 ([#1614](https://github.com/bluealloy/revm/pull/1614))
+- *(deps)* bump alloy-sol-macro from 0.7.6 to 0.7.7 ([#1613](https://github.com/bluealloy/revm/pull/1613))
+- release ([#1579](https://github.com/bluealloy/revm/pull/1579))
+- release ([#1548](https://github.com/bluealloy/revm/pull/1548))
+- replace TransactTo with TxKind ([#1542](https://github.com/bluealloy/revm/pull/1542))
+- *(deps)* bump regex from 1.10.4 to 1.10.5 ([#1502](https://github.com/bluealloy/revm/pull/1502))
+- release ([#1261](https://github.com/bluealloy/revm/pull/1261))
+- *(interpreter)* rewrite gas accounting for memory expansion ([#1361](https://github.com/bluealloy/revm/pull/1361))
+- revert snailtracer without microbench ([#1259](https://github.com/bluealloy/revm/pull/1259))
+- release ([#1231](https://github.com/bluealloy/revm/pull/1231))
+- *(deps)* bump other alloy deps 0.7.0 ([#1252](https://github.com/bluealloy/revm/pull/1252))
+- *(deps)* bump regex from 1.10.3 to 1.10.4 ([#1223](https://github.com/bluealloy/revm/pull/1223))
+- *(deps)* bump bytes from 1.5.0 to 1.6.0 ([#1224](https://github.com/bluealloy/revm/pull/1224))
+- release ([#1175](https://github.com/bluealloy/revm/pull/1175))
+- tag v32 revm v7.1.0 ([#1176](https://github.com/bluealloy/revm/pull/1176))
+- release ([#1125](https://github.com/bluealloy/revm/pull/1125))
+- *(deps)* bump alloy-sol-types from 0.6.3 to 0.6.4 ([#1148](https://github.com/bluealloy/revm/pull/1148))
+- *(deps)* bump alloy-sol-macro from 0.6.3 to 0.6.4 ([#1136](https://github.com/bluealloy/revm/pull/1136))
+- release tag v30 revm v6.1.0 ([#1100](https://github.com/bluealloy/revm/pull/1100))
+- clippy cleanup ([#1112](https://github.com/bluealloy/revm/pull/1112))
+- *(deps)* bump alloy-sol-types from 0.6.2 to 0.6.3 ([#1103](https://github.com/bluealloy/revm/pull/1103))
+- release ([#1082](https://github.com/bluealloy/revm/pull/1082))
+- *(deps)* bump alloy-sol-macro from 0.6.2 to 0.6.3 ([#1094](https://github.com/bluealloy/revm/pull/1094))
+- license date and revm docs ([#1080](https://github.com/bluealloy/revm/pull/1080))
+- release ([#1067](https://github.com/bluealloy/revm/pull/1067))
+- tag v27, revm v4.0.0 release ([#1061](https://github.com/bluealloy/revm/pull/1061))
+- *(deps)* bump eyre from 0.6.11 to 0.6.12 ([#1051](https://github.com/bluealloy/revm/pull/1051))
+- *(deps)* bump alloy-sol-types from 0.6.0 to 0.6.2 ([#1035](https://github.com/bluealloy/revm/pull/1035))
+- *(deps)* bump alloy-sol-macro from 0.6.0 to 0.6.2 ([#1013](https://github.com/bluealloy/revm/pull/1013))
+- chore(Test) : const to static ([#1016](https://github.com/bluealloy/revm/pull/1016))
+- Burntpix criterion bench ([#1004](https://github.com/bluealloy/revm/pull/1004))
+- Instruction table ([#759](https://github.com/bluealloy/revm/pull/759))
+- rewrite revm-test as a criterion bench ([#579](https://github.com/bluealloy/revm/pull/579))
+- optimize stack usage for recursive `call` and `create` programs ([#522](https://github.com/bluealloy/revm/pull/522))
+- Bump v24, revm v3.3.0 ([#476](https://github.com/bluealloy/revm/pull/476))
+- Release v23, revm v3.2.0 ([#464](https://github.com/bluealloy/revm/pull/464))
+- Release v22, revm v3.1.1 ([#460](https://github.com/bluealloy/revm/pull/460))
+- v21, revm v3.1.0 ([#444](https://github.com/bluealloy/revm/pull/444))
+- remove gas blocks ([#391](https://github.com/bluealloy/revm/pull/391))
+- *(deps)* bump bytes from 1.3.0 to 1.4.0 ([#355](https://github.com/bluealloy/revm/pull/355))
+- Bump v20, changelog ([#350](https://github.com/bluealloy/revm/pull/350))
+- includes to libs ([#338](https://github.com/bluealloy/revm/pull/338))
+- Creating revm-primitives, revm better errors and db components ([#334](https://github.com/bluealloy/revm/pull/334))
+- Cleanup, move hot fields toggether in Interpreter ([#321](https://github.com/bluealloy/revm/pull/321))
+- native bits ([#278](https://github.com/bluealloy/revm/pull/278))
+- *(release)* Bump revm and precompiles versions
+- Bump primitive_types. Add statetest spec
+- Bump revm v2.1.0 ([#224](https://github.com/bluealloy/revm/pull/224))
+- revm bump v2.0.0, precompile bump v1.1.1 ([#212](https://github.com/bluealloy/revm/pull/212))
+- Cfg choose create analysis, option on bytecode size limit ([#210](https://github.com/bluealloy/revm/pull/210))
+- Cargo sort. Bump lib versions ([#208](https://github.com/bluealloy/revm/pull/208))
+- Return `ExecutionResult`, which includes `gas_refunded` ([#169](https://github.com/bluealloy/revm/pull/169))
+- Bytecode hash, remove override_spec, ([#165](https://github.com/bluealloy/revm/pull/165))
+- revm bump 1.8. update libs. snailtracer rename ([#159](https://github.com/bluealloy/revm/pull/159))
+- v6 changelog, bump versions
+- Big Refactor. Machine to Interpreter. refactor instructions. call/create struct ([#52](https://github.com/bluealloy/revm/pull/52))
+- [revm] pop_top and unsafe comments ([#51](https://github.com/bluealloy/revm/pull/51))
+- [precompiles] remove unused borsh
+- [recompl] Bump precompile deps, cargo sort on workspace
+- [revm] output log. Stetetest test log output. fmt
+- Bump versions, Changelogs, fmt, revm readme, clippy.
+- [revm] Run test multiple times. fmt, BenchmarkDB
+- Multiple changes: web3 db, debugger initial commit, precompile load
+- Memory to usize, clippy,fmt
+- wip optimize i256
+- TEMP switch stacks H256 with U256
+- [revm] some perfs
+- [revm] Perfs stack pop. Benchmark snailtracer.
+- [revm] cleanup
+- fmt
+- EVM Interface changed. Inspector called separately
+- Bump revm v0.3.0. README updated
+- DB ref mut polished
+- And now we debug
+- [revm] Interface. Inspector added, Env cleanup. revm-test passes
+- Rename bin to bins
+
+## [0.1.0](https://github.com/bluealloy/revm/releases/tag/revm-test-v0.1.0) - 2024-10-17
+
+### Added
+
+- EOF (Ethereum Object Format) ([#1143](https://github.com/bluealloy/revm/pull/1143))
+- add tests for shift instructions ([#1254](https://github.com/bluealloy/revm/pull/1254))
+- EvmBuilder and External Contexts ([#888](https://github.com/bluealloy/revm/pull/888))
+- separate initial checks ([#486](https://github.com/bluealloy/revm/pull/486))
+- revm-interpreter created ([#320](https://github.com/bluealloy/revm/pull/320))
+- *(interpreter)* Unify instruction fn signature ([#283](https://github.com/bluealloy/revm/pull/283))
+- Migrate `primitive_types::U256` to `ruint::Uint<256, 4>` ([#239](https://github.com/bluealloy/revm/pull/239))
+- Introduce ByteCode format, Update Readme ([#156](https://github.com/bluealloy/revm/pull/156))
+
+### Fixed
+
+- *(eof)* fixture 2 tests ([#1550](https://github.com/bluealloy/revm/pull/1550))
+- *(clippy)* fix some clippy lints
+
+### Other
+
+- Bump v46 versions ([#1826](https://github.com/bluealloy/revm/pull/1826))
+- release-plz update ([#1807](https://github.com/bluealloy/revm/pull/1807))
+- release-plz update
+- *(deps)* bump alloy-sol-types from 0.8.0 to 0.8.2 ([#1762](https://github.com/bluealloy/revm/pull/1762))
+- release ([#1729](https://github.com/bluealloy/revm/pull/1729))
+- release ([#1722](https://github.com/bluealloy/revm/pull/1722))
+- *(deps)* bump alloy and primitives ([#1725](https://github.com/bluealloy/revm/pull/1725))
+- *(deps)* bump bytes from 1.6.1 to 1.7.1 ([#1700](https://github.com/bluealloy/revm/pull/1700))
+- tag v41 revm v13.0.0 ([#1692](https://github.com/bluealloy/revm/pull/1692))
+- release ([#1683](https://github.com/bluealloy/revm/pull/1683))
+- *(deps)* bump regex from 1.10.5 to 1.10.6 ([#1682](https://github.com/bluealloy/revm/pull/1682))
+- bump versions bcs of primitives ([#1631](https://github.com/bluealloy/revm/pull/1631))
+- release ([#1620](https://github.com/bluealloy/revm/pull/1620))
+- *(deps)* bump alloy-sol-types from 0.7.6 to 0.7.7 ([#1614](https://github.com/bluealloy/revm/pull/1614))
+- *(deps)* bump alloy-sol-macro from 0.7.6 to 0.7.7 ([#1613](https://github.com/bluealloy/revm/pull/1613))
+- release ([#1579](https://github.com/bluealloy/revm/pull/1579))
+- release ([#1548](https://github.com/bluealloy/revm/pull/1548))
+- replace TransactTo with TxKind ([#1542](https://github.com/bluealloy/revm/pull/1542))
+- *(deps)* bump regex from 1.10.4 to 1.10.5 ([#1502](https://github.com/bluealloy/revm/pull/1502))
+- release ([#1261](https://github.com/bluealloy/revm/pull/1261))
+- *(interpreter)* rewrite gas accounting for memory expansion ([#1361](https://github.com/bluealloy/revm/pull/1361))
+- revert snailtracer without microbench ([#1259](https://github.com/bluealloy/revm/pull/1259))
+- release ([#1231](https://github.com/bluealloy/revm/pull/1231))
+- *(deps)* bump other alloy deps 0.7.0 ([#1252](https://github.com/bluealloy/revm/pull/1252))
+- *(deps)* bump regex from 1.10.3 to 1.10.4 ([#1223](https://github.com/bluealloy/revm/pull/1223))
+- *(deps)* bump bytes from 1.5.0 to 1.6.0 ([#1224](https://github.com/bluealloy/revm/pull/1224))
+- release ([#1175](https://github.com/bluealloy/revm/pull/1175))
+- tag v32 revm v7.1.0 ([#1176](https://github.com/bluealloy/revm/pull/1176))
+- release ([#1125](https://github.com/bluealloy/revm/pull/1125))
+- *(deps)* bump alloy-sol-types from 0.6.3 to 0.6.4 ([#1148](https://github.com/bluealloy/revm/pull/1148))
+- *(deps)* bump alloy-sol-macro from 0.6.3 to 0.6.4 ([#1136](https://github.com/bluealloy/revm/pull/1136))
+- release tag v30 revm v6.1.0 ([#1100](https://github.com/bluealloy/revm/pull/1100))
+- clippy cleanup ([#1112](https://github.com/bluealloy/revm/pull/1112))
+- *(deps)* bump alloy-sol-types from 0.6.2 to 0.6.3 ([#1103](https://github.com/bluealloy/revm/pull/1103))
+- release ([#1082](https://github.com/bluealloy/revm/pull/1082))
+- *(deps)* bump alloy-sol-macro from 0.6.2 to 0.6.3 ([#1094](https://github.com/bluealloy/revm/pull/1094))
+- license date and revm docs ([#1080](https://github.com/bluealloy/revm/pull/1080))
+- release ([#1067](https://github.com/bluealloy/revm/pull/1067))
+- tag v27, revm v4.0.0 release ([#1061](https://github.com/bluealloy/revm/pull/1061))
+- *(deps)* bump eyre from 0.6.11 to 0.6.12 ([#1051](https://github.com/bluealloy/revm/pull/1051))
+- *(deps)* bump alloy-sol-types from 0.6.0 to 0.6.2 ([#1035](https://github.com/bluealloy/revm/pull/1035))
+- *(deps)* bump alloy-sol-macro from 0.6.0 to 0.6.2 ([#1013](https://github.com/bluealloy/revm/pull/1013))
+- chore(Test) : const to static ([#1016](https://github.com/bluealloy/revm/pull/1016))
+- Burntpix criterion bench ([#1004](https://github.com/bluealloy/revm/pull/1004))
+- Instruction table ([#759](https://github.com/bluealloy/revm/pull/759))
+- rewrite revm-test as a criterion bench ([#579](https://github.com/bluealloy/revm/pull/579))
+- optimize stack usage for recursive `call` and `create` programs ([#522](https://github.com/bluealloy/revm/pull/522))
+- Bump v24, revm v3.3.0 ([#476](https://github.com/bluealloy/revm/pull/476))
+- Release v23, revm v3.2.0 ([#464](https://github.com/bluealloy/revm/pull/464))
+- Release v22, revm v3.1.1 ([#460](https://github.com/bluealloy/revm/pull/460))
+- v21, revm v3.1.0 ([#444](https://github.com/bluealloy/revm/pull/444))
+- remove gas blocks ([#391](https://github.com/bluealloy/revm/pull/391))
+- *(deps)* bump bytes from 1.3.0 to 1.4.0 ([#355](https://github.com/bluealloy/revm/pull/355))
+- Bump v20, changelog ([#350](https://github.com/bluealloy/revm/pull/350))
+- includes to libs ([#338](https://github.com/bluealloy/revm/pull/338))
+- Creating revm-primitives, revm better errors and db components ([#334](https://github.com/bluealloy/revm/pull/334))
+- Cleanup, move hot fields toggether in Interpreter ([#321](https://github.com/bluealloy/revm/pull/321))
+- native bits ([#278](https://github.com/bluealloy/revm/pull/278))
+- *(release)* Bump revm and precompiles versions
+- Bump primitive_types. Add statetest spec
+- Bump revm v2.1.0 ([#224](https://github.com/bluealloy/revm/pull/224))
+- revm bump v2.0.0, precompile bump v1.1.1 ([#212](https://github.com/bluealloy/revm/pull/212))
+- Cfg choose create analysis, option on bytecode size limit ([#210](https://github.com/bluealloy/revm/pull/210))
+- Cargo sort. Bump lib versions ([#208](https://github.com/bluealloy/revm/pull/208))
+- Return `ExecutionResult`, which includes `gas_refunded` ([#169](https://github.com/bluealloy/revm/pull/169))
+- Bytecode hash, remove override_spec, ([#165](https://github.com/bluealloy/revm/pull/165))
+- revm bump 1.8. update libs. snailtracer rename ([#159](https://github.com/bluealloy/revm/pull/159))
+- v6 changelog, bump versions
+- Big Refactor. Machine to Interpreter. refactor instructions. call/create struct ([#52](https://github.com/bluealloy/revm/pull/52))
+- [revm] pop_top and unsafe comments ([#51](https://github.com/bluealloy/revm/pull/51))
+- [precompiles] remove unused borsh
+- [recompl] Bump precompile deps, cargo sort on workspace
+- [revm] output log. Stetetest test log output. fmt
+- Bump versions, Changelogs, fmt, revm readme, clippy.
+- [revm] Run test multiple times. fmt, BenchmarkDB
+- Multiple changes: web3 db, debugger initial commit, precompile load
+- Memory to usize, clippy,fmt
+- wip optimize i256
+- TEMP switch stacks H256 with U256
+- [revm] some perfs
+- [revm] Perfs stack pop. Benchmark snailtracer.
+- [revm] cleanup
+- fmt
+- EVM Interface changed. Inspector called separately
+- Bump revm v0.3.0. README updated
+- DB ref mut polished
+- And now we debug
+- [revm] Interface. Inspector added, Env cleanup. revm-test passes
+- Rename bin to bins
+
+## [0.1.0](https://github.com/bluealloy/revm/releases/tag/revm-test-v0.1.0) - 2024-10-17
+
+### Added
+
+- EOF (Ethereum Object Format) ([#1143](https://github.com/bluealloy/revm/pull/1143))
+- add tests for shift instructions ([#1254](https://github.com/bluealloy/revm/pull/1254))
+- EvmBuilder and External Contexts ([#888](https://github.com/bluealloy/revm/pull/888))
+- separate initial checks ([#486](https://github.com/bluealloy/revm/pull/486))
+- revm-interpreter created ([#320](https://github.com/bluealloy/revm/pull/320))
+- *(interpreter)* Unify instruction fn signature ([#283](https://github.com/bluealloy/revm/pull/283))
+- Migrate `primitive_types::U256` to `ruint::Uint<256, 4>` ([#239](https://github.com/bluealloy/revm/pull/239))
+- Introduce ByteCode format, Update Readme ([#156](https://github.com/bluealloy/revm/pull/156))
+
+### Fixed
+
+- *(eof)* fixture 2 tests ([#1550](https://github.com/bluealloy/revm/pull/1550))
+- *(clippy)* fix some clippy lints
+
+### Other
+
+- release-plz update ([#1807](https://github.com/bluealloy/revm/pull/1807))
+- release-plz update
+- *(deps)* bump alloy-sol-types from 0.8.0 to 0.8.2 ([#1762](https://github.com/bluealloy/revm/pull/1762))
+- release ([#1729](https://github.com/bluealloy/revm/pull/1729))
+- release ([#1722](https://github.com/bluealloy/revm/pull/1722))
+- *(deps)* bump alloy and primitives ([#1725](https://github.com/bluealloy/revm/pull/1725))
+- *(deps)* bump bytes from 1.6.1 to 1.7.1 ([#1700](https://github.com/bluealloy/revm/pull/1700))
+- tag v41 revm v13.0.0 ([#1692](https://github.com/bluealloy/revm/pull/1692))
+- release ([#1683](https://github.com/bluealloy/revm/pull/1683))
+- *(deps)* bump regex from 1.10.5 to 1.10.6 ([#1682](https://github.com/bluealloy/revm/pull/1682))
+- bump versions bcs of primitives ([#1631](https://github.com/bluealloy/revm/pull/1631))
+- release ([#1620](https://github.com/bluealloy/revm/pull/1620))
+- *(deps)* bump alloy-sol-types from 0.7.6 to 0.7.7 ([#1614](https://github.com/bluealloy/revm/pull/1614))
+- *(deps)* bump alloy-sol-macro from 0.7.6 to 0.7.7 ([#1613](https://github.com/bluealloy/revm/pull/1613))
+- release ([#1579](https://github.com/bluealloy/revm/pull/1579))
+- release ([#1548](https://github.com/bluealloy/revm/pull/1548))
+- replace TransactTo with TxKind ([#1542](https://github.com/bluealloy/revm/pull/1542))
+- *(deps)* bump regex from 1.10.4 to 1.10.5 ([#1502](https://github.com/bluealloy/revm/pull/1502))
+- release ([#1261](https://github.com/bluealloy/revm/pull/1261))
+- *(interpreter)* rewrite gas accounting for memory expansion ([#1361](https://github.com/bluealloy/revm/pull/1361))
+- revert snailtracer without microbench ([#1259](https://github.com/bluealloy/revm/pull/1259))
+- release ([#1231](https://github.com/bluealloy/revm/pull/1231))
+- *(deps)* bump other alloy deps 0.7.0 ([#1252](https://github.com/bluealloy/revm/pull/1252))
+- *(deps)* bump regex from 1.10.3 to 1.10.4 ([#1223](https://github.com/bluealloy/revm/pull/1223))
+- *(deps)* bump bytes from 1.5.0 to 1.6.0 ([#1224](https://github.com/bluealloy/revm/pull/1224))
+- release ([#1175](https://github.com/bluealloy/revm/pull/1175))
+- tag v32 revm v7.1.0 ([#1176](https://github.com/bluealloy/revm/pull/1176))
+- release ([#1125](https://github.com/bluealloy/revm/pull/1125))
+- *(deps)* bump alloy-sol-types from 0.6.3 to 0.6.4 ([#1148](https://github.com/bluealloy/revm/pull/1148))
+- *(deps)* bump alloy-sol-macro from 0.6.3 to 0.6.4 ([#1136](https://github.com/bluealloy/revm/pull/1136))
+- release tag v30 revm v6.1.0 ([#1100](https://github.com/bluealloy/revm/pull/1100))
+- clippy cleanup ([#1112](https://github.com/bluealloy/revm/pull/1112))
+- *(deps)* bump alloy-sol-types from 0.6.2 to 0.6.3 ([#1103](https://github.com/bluealloy/revm/pull/1103))
+- release ([#1082](https://github.com/bluealloy/revm/pull/1082))
+- *(deps)* bump alloy-sol-macro from 0.6.2 to 0.6.3 ([#1094](https://github.com/bluealloy/revm/pull/1094))
+- license date and revm docs ([#1080](https://github.com/bluealloy/revm/pull/1080))
+- release ([#1067](https://github.com/bluealloy/revm/pull/1067))
+- tag v27, revm v4.0.0 release ([#1061](https://github.com/bluealloy/revm/pull/1061))
+- *(deps)* bump eyre from 0.6.11 to 0.6.12 ([#1051](https://github.com/bluealloy/revm/pull/1051))
+- *(deps)* bump alloy-sol-types from 0.6.0 to 0.6.2 ([#1035](https://github.com/bluealloy/revm/pull/1035))
+- *(deps)* bump alloy-sol-macro from 0.6.0 to 0.6.2 ([#1013](https://github.com/bluealloy/revm/pull/1013))
+- chore(Test) : const to static ([#1016](https://github.com/bluealloy/revm/pull/1016))
+- Burntpix criterion bench ([#1004](https://github.com/bluealloy/revm/pull/1004))
+- Instruction table ([#759](https://github.com/bluealloy/revm/pull/759))
+- rewrite revm-test as a criterion bench ([#579](https://github.com/bluealloy/revm/pull/579))
+- optimize stack usage for recursive `call` and `create` programs ([#522](https://github.com/bluealloy/revm/pull/522))
+- Bump v24, revm v3.3.0 ([#476](https://github.com/bluealloy/revm/pull/476))
+- Release v23, revm v3.2.0 ([#464](https://github.com/bluealloy/revm/pull/464))
+- Release v22, revm v3.1.1 ([#460](https://github.com/bluealloy/revm/pull/460))
+- v21, revm v3.1.0 ([#444](https://github.com/bluealloy/revm/pull/444))
+- remove gas blocks ([#391](https://github.com/bluealloy/revm/pull/391))
+- *(deps)* bump bytes from 1.3.0 to 1.4.0 ([#355](https://github.com/bluealloy/revm/pull/355))
+- Bump v20, changelog ([#350](https://github.com/bluealloy/revm/pull/350))
+- includes to libs ([#338](https://github.com/bluealloy/revm/pull/338))
+- Creating revm-primitives, revm better errors and db components ([#334](https://github.com/bluealloy/revm/pull/334))
+- Cleanup, move hot fields toggether in Interpreter ([#321](https://github.com/bluealloy/revm/pull/321))
+- native bits ([#278](https://github.com/bluealloy/revm/pull/278))
+- *(release)* Bump revm and precompiles versions
+- Bump primitive_types. Add statetest spec
+- Bump revm v2.1.0 ([#224](https://github.com/bluealloy/revm/pull/224))
+- revm bump v2.0.0, precompile bump v1.1.1 ([#212](https://github.com/bluealloy/revm/pull/212))
+- Cfg choose create analysis, option on bytecode size limit ([#210](https://github.com/bluealloy/revm/pull/210))
+- Cargo sort. Bump lib versions ([#208](https://github.com/bluealloy/revm/pull/208))
+- Return `ExecutionResult`, which includes `gas_refunded` ([#169](https://github.com/bluealloy/revm/pull/169))
+- Bytecode hash, remove override_spec, ([#165](https://github.com/bluealloy/revm/pull/165))
+- revm bump 1.8. update libs. snailtracer rename ([#159](https://github.com/bluealloy/revm/pull/159))
+- v6 changelog, bump versions
+- Big Refactor. Machine to Interpreter. refactor instructions. call/create struct ([#52](https://github.com/bluealloy/revm/pull/52))
+- [revm] pop_top and unsafe comments ([#51](https://github.com/bluealloy/revm/pull/51))
+- [precompiles] remove unused borsh
+- [recompl] Bump precompile deps, cargo sort on workspace
+- [revm] output log. Stetetest test log output. fmt
+- Bump versions, Changelogs, fmt, revm readme, clippy.
+- [revm] Run test multiple times. fmt, BenchmarkDB
+- Multiple changes: web3 db, debugger initial commit, precompile load
+- Memory to usize, clippy,fmt
+- wip optimize i256
+- TEMP switch stacks H256 with U256
+- [revm] some perfs
+- [revm] Perfs stack pop. Benchmark snailtracer.
+- [revm] cleanup
+- fmt
+- EVM Interface changed. Inspector called separately
+- Bump revm v0.3.0. README updated
+- DB ref mut polished
+- And now we debug
+- [revm] Interface. Inspector added, Env cleanup. revm-test passes
+- Rename bin to bins
+
## [0.1.0](https://github.com/bluealloy/revm/releases/tag/revm-test-v0.1.0) - 2024-09-26
### Added
diff --git a/bins/revm-test/Cargo.toml b/bins/revm-test/Cargo.toml
index 79cffac8..7786b776 100644
--- a/bins/revm-test/Cargo.toml
+++ b/bins/revm-test/Cargo.toml
@@ -1,13 +1,13 @@
[package]
name = "revm-test"
-version = "0.1.0"
+version = "1.0.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
bytes = "1.7"
hex = "0.4"
-revm = { path = "../../crates/revm", version = "14.0.3", default-features=false }
+revm = { path = "../../crates/revm", version = "17.0.0", default-features=false }
microbench = "0.5"
alloy-sol-macro = "0.8.0"
alloy-sol-types = "0.8.2"
diff --git a/bins/revme/CHANGELOG.md b/bins/revme/CHANGELOG.md
index 1d6290f5..68eb7ca4 100644
--- a/bins/revme/CHANGELOG.md
+++ b/bins/revme/CHANGELOG.md
@@ -6,6 +6,29 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## [1.0.1](https://github.com/bluealloy/revm/compare/revme-v1.0.0...revme-v1.0.1) - 2024-10-23
+
+### Other
+
+- update Cargo.lock dependencies
+
+## [1.0.0](https://github.com/bluealloy/revm/compare/revme-v0.11.0...revme-v1.0.0) - 2024-09-26
+
+### Other
+
+- update Cargo.lock dependencies
+
+## [0.11.0](https://github.com/bluealloy/revm/compare/revme-v0.10.3...revme-v0.11.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))
+
+### Other
+
+- remove test u8 check ([#1825](https://github.com/bluealloy/revm/pull/1825))
+
## [0.10.3](https://github.com/bluealloy/revm/compare/revme-v0.10.2...revme-v0.10.3) - 2024-09-26
### Other
diff --git a/bins/revme/Cargo.toml b/bins/revme/Cargo.toml
index 45a2d29c..26774f62 100644
--- a/bins/revme/Cargo.toml
+++ b/bins/revme/Cargo.toml
@@ -6,16 +6,15 @@ keywords = ["ethereum", "evm"]
license = "MIT"
repository = "https://github.com/bluealloy/revm"
description = "Rust Ethereum Virtual Machine Executable"
-version = "0.10.3"
+version = "2.0.0"
[dependencies]
hash-db = "0.15"
hex = "0.4"
-hashbrown = "0.14"
indicatif = "0.17"
microbench = "0.5"
plain_hasher = "0.2"
-revm = { path = "../../crates/revm", version = "14.0.3", default-features = false, features = [
+revm = { path = "../../crates/revm", version = "17.0.0", default-features = false, features = [
"ethersdb",
"std",
"serde-json",
diff --git a/bins/revme/src/cmd/statetest/runner.rs b/bins/revme/src/cmd/statetest/runner.rs
index de9aaec2..7ac4564c 100644
--- a/bins/revme/src/cmd/statetest/runner.rs
+++ b/bins/revme/src/cmd/statetest/runner.rs
@@ -336,7 +336,7 @@ pub fn execute_test_suite(
// Enable EOF in Prague tests.
let spec_id = if spec_name == SpecName::Prague {
- SpecId::PRAGUE_EOF
+ SpecId::OSAKA
} else {
spec_name.to_spec_id()
};
diff --git a/crates/interpreter/CHANGELOG.md b/crates/interpreter/CHANGELOG.md
index a9e1e5d4..7c989158 100644
--- a/crates/interpreter/CHANGELOG.md
+++ b/crates/interpreter/CHANGELOG.md
@@ -6,6 +6,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## [13.0.0](https://github.com/bluealloy/revm/compare/revm-interpreter-v12.0.0...revm-interpreter-v13.0.0) - 2024-10-23
+
+### Other
+
+- updated the following local packages: revm-primitives
+
+## [12.0.0](https://github.com/bluealloy/revm/compare/revm-interpreter-v11.0.0...revm-interpreter-v12.0.0) - 2024-10-17
+
+### Other
+
+- updated the following local packages: revm-primitives
+
+## [11.0.0](https://github.com/bluealloy/revm/compare/revm-interpreter-v10.0.3...revm-interpreter-v11.0.0) - 2024-10-17
+
+### Other
+
+- updated the following local packages: revm-primitives
+
## [10.0.3](https://github.com/bluealloy/revm/compare/revm-interpreter-v10.0.2...revm-interpreter-v10.0.3) - 2024-09-26
### Other
diff --git a/crates/interpreter/Cargo.toml b/crates/interpreter/Cargo.toml
index a5a6b57f..71448e90 100644
--- a/crates/interpreter/Cargo.toml
+++ b/crates/interpreter/Cargo.toml
@@ -6,7 +6,7 @@ keywords = ["no_std", "ethereum", "evm", "revm", "interpreter"]
license = "MIT"
name = "revm-interpreter"
repository = "https://github.com/bluealloy/revm"
-version = "10.0.3"
+version = "13.0.0"
readme = "../../README.md"
[package.metadata.docs.rs]
@@ -22,7 +22,7 @@ rust_2018_idioms = "deny"
all = "warn"
[dependencies]
-revm-primitives = { path = "../primitives", version = "10.0.0", default-features = false }
+revm-primitives = { path = "../primitives", version = "13.0.0", default-features = false }
paste = { version = "1.0", optional = true }
phf = { version = "0.11", default-features = false, optional = true, features = [
diff --git a/crates/precompile/CHANGELOG.md b/crates/precompile/CHANGELOG.md
index 5d45062e..70b3a2a0 100644
--- a/crates/precompile/CHANGELOG.md
+++ b/crates/precompile/CHANGELOG.md
@@ -6,6 +6,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## [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
diff --git a/crates/precompile/Cargo.toml b/crates/precompile/Cargo.toml
index 1b89d4f3..4339665e 100644
--- a/crates/precompile/Cargo.toml
+++ b/crates/precompile/Cargo.toml
@@ -6,7 +6,7 @@ keywords = ["no_std", "ethereum", "evm", "revm", "precompiles"]
license = "MIT"
name = "revm-precompile"
repository = "https://github.com/bluealloy/revm"
-version = "11.0.3"
+version = "14.0.0"
readme = "../../README.md"
[package.metadata.docs.rs]
@@ -27,7 +27,7 @@ alloy-rlp = { version = "0.3.7", default-features = false, features = [
"derive",
] }
-revm-primitives = { path = "../primitives", version = "10.0.0", default-features = false }
+revm-primitives = { path = "../primitives", version = "13.0.0", default-features = false }
once_cell = { version = "1.19", default-features = false, features = ["alloc"] }
# ecRecover
diff --git a/crates/precompile/src/lib.rs b/crates/precompile/src/lib.rs
index ec297fdd..aa3e1566 100644
--- a/crates/precompile/src/lib.rs
+++ b/crates/precompile/src/lib.rs
@@ -483,7 +483,7 @@ impl PrecompileSpecId {
#[cfg(feature = "bsc")]
FEYNMAN | FEYNMAN_FIX => Self::FEYNMAN,
CANCUN => Self::CANCUN,
- PRAGUE | PRAGUE_EOF => Self::PRAGUE,
+ PRAGUE | OSAKA => Self::PRAGUE,
#[cfg(feature = "optimism")]
BEDROCK | REGOLITH | CANYON => Self::BERLIN,
#[cfg(all(feature = "optimism", not(feature = "opbnb")))]
diff --git a/crates/primitives/CHANGELOG.md b/crates/primitives/CHANGELOG.md
index 62a73edf..93f2b325 100644
--- a/crates/primitives/CHANGELOG.md
+++ b/crates/primitives/CHANGELOG.md
@@ -6,6 +6,30 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## [13.0.0](https://github.com/bluealloy/revm/compare/revm-primitives-v12.0.0...revm-primitives-v13.0.0) - 2024-10-23
+
+### Other
+
+- bump alloy-eip7702 ([#1829](https://github.com/bluealloy/revm/pull/1829))
+
+## [12.0.0](https://github.com/bluealloy/revm/compare/revm-primitives-v11.0.0...revm-primitives-v12.0.0) - 2024-10-17
+
+### Other
+
+- update Cargo.toml dependencies
+
+## [11.0.0](https://github.com/bluealloy/revm/compare/revm-primitives-v10.0.0...revm-primitives-v11.0.0) - 2024-10-17
+
+### Added
+
+- EIP-7702 Add u8 validity ([#1824](https://github.com/bluealloy/revm/pull/1824))
+- 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))
+
+### Other
+
+- bump newest primitives ([#1823](https://github.com/bluealloy/revm/pull/1823))
+
## [10.0.1](https://github.com/bluealloy/revm/compare/revm-primitives-v10.0.0...revm-primitives-v10.0.1) - 2024-09-26
### Other
diff --git a/crates/primitives/Cargo.toml b/crates/primitives/Cargo.toml
index 9c09d43e..cfff0a09 100644
--- a/crates/primitives/Cargo.toml
+++ b/crates/primitives/Cargo.toml
@@ -6,7 +6,7 @@ keywords = ["no_std", "ethereum", "evm", "revm", "types"]
license = "MIT"
name = "revm-primitives"
repository = "https://github.com/bluealloy/revm"
-version = "10.0.0"
+version = "13.0.0"
readme = "../../README.md"
[package.metadata.docs.rs]
@@ -24,10 +24,10 @@ all = "warn"
[dependencies]
# alloy
alloy-eip2930 = { version = "0.1", default-features = false }
-alloy-eip7702 = { version = "0.1", default-features = false, features = [
+alloy-eip7702 = { version = "0.3", default-features = false, features = [
"k256",
] }
-alloy-primitives = { version = "0.8.5", default-features = false, features = [
+alloy-primitives = { version = "0.8.8", default-features = false, features = [
"rlp",
"map",
] }
diff --git a/crates/primitives/src/eip7702.rs b/crates/primitives/src/eip7702.rs
index f63600b9..9571f086 100644
--- a/crates/primitives/src/eip7702.rs
+++ b/crates/primitives/src/eip7702.rs
@@ -1,9 +1,8 @@
pub mod authorization_list;
pub mod bytecode;
-use crate::U256;
pub use authorization_list::{
- Authorization, AuthorizationList, InvalidAuthorization, RecoveredAuthorization, Signature,
+ Authorization, AuthorizationList, RecoveredAuthority, RecoveredAuthorization, Signature,
SignedAuthorization,
};
pub use bytecode::{
@@ -11,16 +10,7 @@ pub use bytecode::{
};
// Base cost of updating authorized account.
-pub const PER_AUTH_BASE_COST: u64 = 2500;
+pub const PER_AUTH_BASE_COST: u64 = 12500;
/// Cost of creating authorized account that was previously empty.
pub const PER_EMPTY_ACCOUNT_COST: u64 = 25000;
-
-/// The order of the secp256k1 curve, divided by two. Signatures that should be checked according
-/// to EIP-2 should have an S value less than or equal to this.
-///
-/// `57896044618658097711785492504343953926418782139537452191302581570759080747168`
-const SECP256K1N_HALF: U256 = U256::from_be_bytes([
- 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0x5D, 0x57, 0x6E, 0x73, 0x57, 0xA4, 0x50, 0x1D, 0xDF, 0xE9, 0x2F, 0x46, 0x68, 0x1B, 0x20, 0xA0,
-]);
diff --git a/crates/primitives/src/eip7702/authorization_list.rs b/crates/primitives/src/eip7702/authorization_list.rs
index 4b1a872f..e7d6dc43 100644
--- a/crates/primitives/src/eip7702/authorization_list.rs
+++ b/crates/primitives/src/eip7702/authorization_list.rs
@@ -1,9 +1,8 @@
-pub use alloy_eip7702::{Authorization, SignedAuthorization};
+pub use alloy_eip7702::{
+ Authorization, RecoveredAuthority, RecoveredAuthorization, SignedAuthorization,
+};
pub use alloy_primitives::{Parity, Signature};
-use super::SECP256K1N_HALF;
-use crate::Address;
-use core::{fmt, ops::Deref};
use std::{boxed::Box, vec::Vec};
/// Authorization list for EIP-7702 transaction type.
@@ -35,40 +34,6 @@ impl AuthorizationList {
}
}
- /// Returns true if the authorization list is valid.
- pub fn is_valid(&self, _chain_id: u64) -> Result<(), InvalidAuthorization> {
- let validate = |auth: &SignedAuthorization| -> Result<(), InvalidAuthorization> {
- // TODO Eip7702. Check chain_id
- // Pending: https://github.com/ethereum/EIPs/pull/8833/files
- // let auth_chain_id: u64 = auth.chain_id().try_into().unwrap_or(u64::MAX);
- // if auth_chain_id != 0 && auth_chain_id != chain_id {
- // return Err(InvalidAuthorization::InvalidChainId);
- // }
-
- // Check y_parity, Parity::Parity means that it was 0 or 1.
- if !matches!(auth.signature().v(), Parity::Parity(_)) {
- return Err(InvalidAuthorization::InvalidYParity);
- }
-
- // Check s-value
- if auth.signature().s() > SECP256K1N_HALF {
- return Err(InvalidAuthorization::Eip2InvalidSValue);
- }
-
- Ok(())
- };
-
- match self {
- Self::Signed(signed) => signed.iter().try_for_each(validate)?,
- Self::Recovered(recovered) => recovered
- .iter()
- .map(|recovered| &recovered.inner)
- .try_for_each(validate)?,
- };
-
- Ok(())
- }
-
/// Return empty authorization list.
pub fn empty() -> Self {
Self::Recovered(Vec::new())
@@ -95,65 +60,3 @@ impl AuthorizationList {
Self::Recovered(signed.into_iter().map(|signed| signed.into()).collect())
}
}
-
-/// A recovered authorization.
-#[derive(Debug, Clone, Hash, Eq, PartialEq)]
-#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
-pub struct RecoveredAuthorization {
- #[cfg_attr(feature = "serde", serde(flatten))]
- inner: SignedAuthorization,
- authority: Option
,
-}
-
-impl RecoveredAuthorization {
- /// Instantiate without performing recovery. This should be used carefully.
- pub const fn new_unchecked(inner: SignedAuthorization, authority: Option) -> Self {
- Self { inner, authority }
- }
-
- /// Get the `authority` for the authorization.
- ///
- /// If this is `None`, then the authority could not be recovered.
- pub const fn authority(&self) -> Option {
- self.authority
- }
-
- /// Splits the authorization into parts.
- pub const fn into_parts(self) -> (SignedAuthorization, Option) {
- (self.inner, self.authority)
- }
-}
-
-impl From for RecoveredAuthorization {
- fn from(signed_auth: SignedAuthorization) -> Self {
- let authority = signed_auth.recover_authority().ok();
- Self::new_unchecked(signed_auth, authority)
- }
-}
-
-impl Deref for RecoveredAuthorization {
- type Target = Authorization;
-
- fn deref(&self) -> &Self::Target {
- &self.inner
- }
-}
-
-#[derive(Debug, Clone, PartialEq, Eq, Hash)]
-#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
-pub enum InvalidAuthorization {
- InvalidChainId,
- InvalidYParity,
- Eip2InvalidSValue,
-}
-
-impl fmt::Display for InvalidAuthorization {
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- let s = match self {
- Self::InvalidChainId => "Invalid chain_id, Expect chain's ID or zero",
- Self::InvalidYParity => "Invalid y_parity, Expect 0 or 1.",
- Self::Eip2InvalidSValue => "Invalid signature s-value.",
- };
- f.write_str(s)
- }
-}
diff --git a/crates/primitives/src/env.rs b/crates/primitives/src/env.rs
index 5919cb19..1fbf3f5c 100644
--- a/crates/primitives/src/env.rs
+++ b/crates/primitives/src/env.rs
@@ -202,9 +202,6 @@ impl Env {
return Err(InvalidTransaction::EmptyAuthorizationList);
}
- // Check validity of authorization_list
- auth_list.is_valid(self.cfg.chain_id)?;
-
// Check if other fields are unset.
if self.tx.max_fee_per_blob_gas.is_some() || !self.tx.blob_hashes.is_empty() {
return Err(InvalidTransaction::AuthorizationListInvalidFields);
diff --git a/crates/primitives/src/lib.rs b/crates/primitives/src/lib.rs
index 82b54113..137c3f19 100644
--- a/crates/primitives/src/lib.rs
+++ b/crates/primitives/src/lib.rs
@@ -30,7 +30,7 @@ pub use bitvec;
pub use bytecode::*;
pub use constants::*;
pub use eip7702::{
- Authorization, AuthorizationList, Eip7702Bytecode, Eip7702DecodeError, InvalidAuthorization,
+ Authorization, AuthorizationList, Eip7702Bytecode, Eip7702DecodeError, RecoveredAuthority,
RecoveredAuthorization, Signature, SignedAuthorization, EIP7702_MAGIC, EIP7702_MAGIC_BYTES,
};
pub use env::*;
diff --git a/crates/primitives/src/result.rs b/crates/primitives/src/result.rs
index f33193fc..0649c8d6 100644
--- a/crates/primitives/src/result.rs
+++ b/crates/primitives/src/result.rs
@@ -1,6 +1,4 @@
-use crate::{
- eip7702::authorization_list::InvalidAuthorization, Address, Bytes, EvmState, Log, U256,
-};
+use crate::{Address, Bytes, EvmState, Log, U256};
use core::fmt;
use std::{boxed::Box, string::String, vec::Vec};
@@ -315,19 +313,11 @@ pub enum InvalidTransaction {
AuthorizationListInvalidFields,
/// Empty Authorization List is not allowed.
EmptyAuthorizationList,
- /// Invalid EIP-7702 Authorization List
- InvalidAuthorizationList(InvalidAuthorization),
/// Optimism-specific transaction validation error.
#[cfg(feature = "optimism")]
OptimismError(OptimismInvalidTransaction),
}
-impl From for InvalidTransaction {
- fn from(value: InvalidAuthorization) -> Self {
- Self::InvalidAuthorizationList(value)
- }
-}
-
#[cfg(feature = "std")]
impl std::error::Error for InvalidTransaction {}
@@ -406,7 +396,6 @@ impl fmt::Display for InvalidTransaction {
write!(f, "authorization list tx has invalid fields")
}
Self::EmptyAuthorizationList => write!(f, "empty authorization list"),
- Self::InvalidAuthorizationList(i) => fmt::Display::fmt(i, f),
#[cfg(feature = "optimism")]
Self::OptimismError(op_error) => op_error.fmt(f),
}
diff --git a/crates/primitives/src/specification.rs b/crates/primitives/src/specification.rs
index da208b6b..3553174b 100644
--- a/crates/primitives/src/specification.rs
+++ b/crates/primitives/src/specification.rs
@@ -32,7 +32,7 @@ pub enum SpecId {
SHANGHAI = 16, // Shanghai 17034870 (Timestamp: 1681338455)
CANCUN = 17, // Cancun 19426587 (Timestamp: 1710338135)
PRAGUE = 18, // Prague TBD
- PRAGUE_EOF = 19, // Prague+EOF TBD
+ OSAKA = 19, // Prague+EOF TBD
#[default]
LATEST = u8::MAX,
}
@@ -74,7 +74,7 @@ pub enum SpecId {
GRANITE = 26,
HOLOCENE = 27,
PRAGUE = 28,
- PRAGUE_EOF = 29,
+ OSAKA = 29,
#[default]
LATEST = u8::MAX,
}
@@ -125,7 +125,7 @@ pub enum SpecId {
GRAY_GLACIER = 102,
MERGE = 103,
PRAGUE = 104,
- PRAGUE_EOF = 105,
+ OSAKA = 106,
#[default]
LATEST = u8::MAX,
}
@@ -168,7 +168,7 @@ impl From<&str> for SpecId {
"Shanghai" => Self::SHANGHAI,
"Cancun" => Self::CANCUN,
"Prague" => Self::PRAGUE,
- "PragueEOF" => Self::PRAGUE_EOF,
+ "Osaka" => Self::OSAKA,
#[cfg(feature = "optimism")]
"Bedrock" => SpecId::BEDROCK,
#[cfg(feature = "optimism")]
@@ -252,7 +252,7 @@ impl From for &'static str {
SpecId::SHANGHAI => "Shanghai",
SpecId::CANCUN => "Cancun",
SpecId::PRAGUE => "Prague",
- SpecId::PRAGUE_EOF => "PragueEOF",
+ SpecId::OSAKA => "Osaka",
#[cfg(feature = "optimism")]
SpecId::BEDROCK => "Bedrock",
#[cfg(feature = "optimism")]
@@ -355,7 +355,7 @@ spec!(MERGE, MergeSpec);
spec!(SHANGHAI, ShanghaiSpec);
spec!(CANCUN, CancunSpec);
spec!(PRAGUE, PragueSpec);
-spec!(PRAGUE_EOF, PragueEofSpec);
+spec!(OSAKA, OsakaSpec);
spec!(LATEST, LatestSpec);
@@ -462,8 +462,8 @@ macro_rules! spec_to_generic {
use $crate::PragueSpec as SPEC;
$e
}
- $crate::SpecId::PRAGUE_EOF => {
- use $crate::PragueEofSpec as SPEC;
+ $crate::SpecId::OSAKA => {
+ use $crate::OsakaSpec as SPEC;
$e
}
}
@@ -533,8 +533,8 @@ macro_rules! spec_to_generic {
use $crate::PragueSpec as SPEC;
$e
}
- $crate::SpecId::PRAGUE_EOF => {
- use $crate::PragueEofSpec as SPEC;
+ $crate::SpecId::OSAKA => {
+ use $crate::OsakaSpec as SPEC;
$e
}
$crate::SpecId::BEDROCK => {
@@ -681,8 +681,8 @@ macro_rules! spec_to_generic {
use $crate::PragueSpec as SPEC;
$e
}
- $crate::SpecId::PRAGUE_EOF => {
- use $crate::PragueEofSpec as SPEC;
+ $crate::SpecId::OSAKA => {
+ use $crate::OsakaSpec as SPEC;
$e
}
$crate::SpecId::HABER | $crate::SpecId::HABER_FIX | $crate::SpecId::BOHR => {
@@ -747,9 +747,10 @@ mod tests {
#[cfg(not(feature = "bsc"))]
spec_to_generic!(PRAGUE, assert_eq!(SPEC::SPEC_ID, PRAGUE));
#[cfg(not(feature = "bsc"))]
- spec_to_generic!(PRAGUE_EOF, assert_eq!(SPEC::SPEC_ID, PRAGUE_EOF));
+ spec_to_generic!(OSAKA, assert_eq!(SPEC::SPEC_ID, OSAKA));
#[cfg(any(feature = "bsc", feature = "opbnb"))]
spec_to_generic!(HABER, assert_eq!(SPEC::SPEC_ID, HABER));
+ spec_to_generic!(OSAKA, assert_eq!(SPEC::SPEC_ID, OSAKA));
spec_to_generic!(LATEST, assert_eq!(SPEC::SPEC_ID, LATEST));
#[cfg(feature = "bsc")]
diff --git a/crates/revm/CHANGELOG.md b/crates/revm/CHANGELOG.md
index 8e6898b0..bfed4814 100644
--- a/crates/revm/CHANGELOG.md
+++ b/crates/revm/CHANGELOG.md
@@ -6,6 +6,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## [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
diff --git a/crates/revm/Cargo.toml b/crates/revm/Cargo.toml
index 3d66eae4..0982fa33 100644
--- a/crates/revm/Cargo.toml
+++ b/crates/revm/Cargo.toml
@@ -6,7 +6,7 @@ keywords = ["no_std", "ethereum", "evm", "revm"]
license = "MIT"
name = "revm"
repository = "https://github.com/bluealloy/revm"
-version = "14.0.3"
+version = "17.0.0"
readme = "../../README.md"
[package.metadata.docs.rs]
@@ -23,8 +23,8 @@ all = "warn"
[dependencies]
# revm
-revm-interpreter = { path = "../interpreter", version = "10.0.3", default-features = false }
-revm-precompile = { path = "../precompile", version = "11.0.3", default-features = false }
+revm-interpreter = { path = "../interpreter", version = "13.0.0", default-features = false }
+revm-precompile = { path = "../precompile", version = "14.0.0", default-features = false }
# misc
auto_impl = { version = "1.2", default-features = false }
@@ -50,7 +50,7 @@ ethers-core = { version = "2.0", optional = true }
# alloydb
alloy-provider = { version = "0.3", optional = true, default-features = false }
-alloy-eips = { version = "0.3", optional = true, default-features = false }
+alloy-eips = { version = "0.3.1", optional = true, default-features = false }
alloy-transport = { version = "0.3", optional = true, default-features = false }
[dev-dependencies]
diff --git a/crates/revm/benches/bench.rs b/crates/revm/benches/bench.rs
index 59cc261c..a2f98cff 100644
--- a/crates/revm/benches/bench.rs
+++ b/crates/revm/benches/bench.rs
@@ -82,7 +82,7 @@ fn transfer(c: &mut Criterion) {
}
fn bench_transact(g: &mut BenchmarkGroup<'_, WallTime>, evm: &mut Evm<'_, EXT, BenchmarkDB>) {
- let state = match evm.context.evm.db.0 {
+ let state = match evm.context.evm.db.bytecode {
Bytecode::LegacyRaw(_) => "raw",
Bytecode::LegacyAnalyzed(_) => "analysed",
Bytecode::Eof(_) => "eof",
@@ -96,7 +96,7 @@ fn bench_eval(g: &mut BenchmarkGroup<'_, WallTime>, evm: &mut Evm<'static, (), B
g.bench_function("eval", |b| {
let contract = Contract {
input: evm.context.evm.env.tx.data.clone(),
- bytecode: to_analysed(evm.context.evm.db.0.clone()),
+ bytecode: to_analysed(evm.context.evm.db.bytecode.clone()),
..Default::default()
};
let mut shared_memory = SharedMemory::new();
diff --git a/crates/revm/src/context/evm_context.rs b/crates/revm/src/context/evm_context.rs
index 19dbfde3..ac1139b9 100644
--- a/crates/revm/src/context/evm_context.rs
+++ b/crates/revm/src/context/evm_context.rs
@@ -292,7 +292,7 @@ impl EvmContext {
}
// Prague EOF
- if spec_id.is_enabled_in(PRAGUE_EOF) && inputs.init_code.starts_with(&EOF_MAGIC_BYTES) {
+ if spec_id.is_enabled_in(OSAKA) && inputs.init_code.starts_with(&EOF_MAGIC_BYTES) {
return return_error(InstructionResult::CreateInitCodeStartingEF00);
}
diff --git a/crates/revm/src/db/in_memory_db.rs b/crates/revm/src/db/in_memory_db.rs
index 5cc6987f..c5b6593a 100644
--- a/crates/revm/src/db/in_memory_db.rs
+++ b/crates/revm/src/db/in_memory_db.rs
@@ -360,12 +360,33 @@ impl AccountState {
///
/// Any other address will return an empty account.
#[derive(Debug, Default, Clone)]
-pub struct BenchmarkDB(pub Bytecode, B256);
+pub struct BenchmarkDB {
+ pub bytecode: Bytecode,
+ pub hash: B256,
+ pub target: Address,
+ pub caller: Address,
+}
impl BenchmarkDB {
+ /// Create a new benchmark database with the given bytecode.
pub fn new_bytecode(bytecode: Bytecode) -> Self {
let hash = bytecode.hash_slow();
- Self(bytecode, hash)
+ Self {
+ bytecode,
+ hash,
+ target: Address::ZERO,
+ caller: Address::with_last_byte(1),
+ }
+ }
+
+ /// Change the caller address for the benchmark.
+ pub fn with_caller(self, caller: Address) -> Self {
+ Self { caller, ..self }
+ }
+
+ /// Change the target address for the benchmark.
+ pub fn with_target(self, target: Address) -> Self {
+ Self { target, ..self }
}
}
@@ -373,15 +394,15 @@ impl Database for BenchmarkDB {
type Error = Infallible;
/// Get basic account information.
fn basic(&mut self, address: Address) -> Result