Skip to content

Conversation

@l0r1s
Copy link

@l0r1s l0r1s commented Aug 6, 2025

l0r1s and others added 21 commits August 4, 2025 19:47
* Basic structure and polkavm runtime implementation

* Fix missing try! in proc-macro and fix some docs

* Implement PreparedCall

* Implement PrecompileSet

* Run cargo fmt

* Update nix support

* Fix benchmark compile

* Fix editorconfig warnings

* Fix taplo fmt

* Fix cargo fmt

* Remove unused weight info

* Fix clippy errors

* Fix more clippy warnings

* Add deployment dispatchable logic

* Fix typo
* Add back docs generation

* Add back rustdocs workflow
* Switch to new rust build for docs workflow

* Fix docs cache key
* docs: configure pages before npm run build

* Unnecessary extra line
* feat: ✨ add support for EIP-7702

* chore: ⬆️ use temporary fork of ethereum crate

* feat: ✨ update to ethereum crate v3 structs

* feat: ⬆️ upgrade evm crate

* feat: ✨ add EIP-7702 support to RPC

* fix: ⬆️ upgrade evm crate

* feat: ✨ upgrade evm crate

* feat: ✨ add EIP-7702 support to EthDevSigner

* test: 🔥 temporarily remove EIP-7702 tests

* feat: ⬆️ upgrade ethereum and evm crates

* fix: 🐛 properly convert authorization list to evm's data type

* fix: 🔥 fix logic

* fix: 🐛 fix usage of authorization list throughout the codebase

* style: 🎨 fmt

* fix: ⬆️ upgrade evm

* refactor: 🚨 silence lint error

* style: 🎨 fmt

* refactor: 🔥 remove unused imports

* fix: ⬆️ upgrade config to pectra

* fix: 🐛 manage API v6 case in Eth::call

* fix: 🐛 manage API v6 case in Eth::estimate_gas

* chore: 🔥 remove unused dependencies

* test: ✅ add unit tests for EIP-7702

* test: ✅ add integration tests for EIP-7702

* style: 🎨 fmt

* refactor: ⬆️ upgrade evm crate

* fix: 🐛 propagate std feature to ethereum-ext

* refactor: ♻️ use upstream evm crate

* refactor: 🔥 remove ethereum-ext temporary dependency

* style: 🎨 format TS code

* refactor: ♻️ ignore lint warning

* feat: ⬆️ upgrade evm/ethereum dependencies

* feat: ✨ add validation error for EIP-7702 empty authorization list

* style: 🎨 format code

* refactor: 🔥 remove unused const

* test: 🧪 add failing test for EIP-7702 authoriations

* fix: 🐛 fix authorization creation in tests

* refactor: ⬆️ use evm release on crates.io

* style: 🎨 format code

* feat: ✨ record delegation resolution external operation

* revert: 🔥 remove old TODOs

* fix: 🐛 add missing semicolon

* feat: add comprehensive EIP-7702 validation at Substrate level

- Add chain ID validation for authorization tuples
- Add maximum authorization list size validation (255 items)
- Add new error types: InvalidAuthorizationChainId, AuthorizationListTooLarge
- Map new validation errors to appropriate EVM pallet errors

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: add documentation for EIP-7702 gas costs and improve error handling

- Add documentation about EIP-7702 gas costs in runtime estimation
- Add error handling for new validation errors in Ethereum pallet
- Add user-friendly error messages for EIP-7702 validation failures in RPC

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: 🐛 add missing case in error conversion

* fix: correct authorization signature format in TypeScript tests

- Fix EIP-7702 authorization signature creation to use proper spec format
- Use magic byte 0x05 and RLP encoding as per EIP-7702 specification
- Rust tests already used correct format, only TS tests needed fixing

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* test: add comprehensive EIP-7702 validation tests

- Add tests for empty authorization list validation
- Add tests for authorization list size limits (max 255 items)
- Add tests for chain ID validation (must be 0 or match transaction chain ID)
- Add tests for valid authorization list scenarios
- Add tests for non-EIP-7702 transaction validation skipping
- Add missing InvalidAuthorizationChainId error variant and mapping

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* docs: add comprehensive documentation for EIP-7702 validation functions

- Add detailed documentation for with_eip7702_authorization_list function
- Document validation rules and responsibilities split between Substrate/EVM levels
- Add comprehensive error type documentation with security rationale
- Include usage examples and parameter descriptions
- Clarify the distinction between Substrate and EVM-level validation

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* revert: 🔥 remove InvalidAuthorizationChainId validation error

* docs: 📝 digest docs

* style: 🎨 format

* fix: 🐛 account for authentication list items in the proof size base cost

* refactor: ♻️ return error for unsupported API version

* refactor: ♻️ refactor TransactionRequest to TransactionMessage conversion

* style: 🎨 format

* refactor: ♻️ reduce code duplication

* fix: 🐛 fix delegation code length in test

* test: ✅ actually check gas consumption in EIP-7702

* fix: 🐛 treat DelegationResolution just as a second AddressCodeRead

* refactor: 🎨 use serde rename_all directive

* docs: 📝 improve AuthorizationListTooLarge docs

* fix: 🐛 add EIP7702 variant to TxType

* feat: ⬆️ upgrade ethers.js

* test: 🐛 first revision of the integration tests for EIP-7702

* fix: 🐛 second revision of the integration tests for EIP-7702

* fix: 🐛 upgrade evm

* fix: 🐛 fix authorization nonce in test

* feat: ✨ add EthereumBlockWrapper

* refactor: 🔥 remove CurrentBlock v0 to v2 migrations

* refactor: ♻️ clippy

* refactor: ♻️ refactor EthereumBlockWrapper decoding

* revert: ⏪ restore block migration functions

* Revert "refactor: ♻️ refactor EthereumBlockWrapper decoding"

This reverts commit c0923c7.

* Revert "refactor: ♻️ clippy"

This reverts commit 6521a03.

* Revert "feat: ✨ add EthereumBlockWrapper"

This reverts commit 88b8fbc.

* feat: ✨ add block v2 to v3 migration methods

* fix: 🐛 fix typo in post_migrate_block_v3

* refactor: ♻️ rename size_limit to create_contract_limit

* fix: 🐛 account for empty authorization list cost in template

* fix: 🐛 the base cost for the authorization list is already accounted for in the encoding

* revert: ⏪ block v2 is still a valid block v3

* fix: 🔒 validate authorizations signatures on extrinsic call

* fix: 🐛 add ethereum/std to std feature

* fix: 🔒 properly validate authorization list

---------

Co-authored-by: Claude <noreply@anthropic.com>
* test: self-destruct functionality after cancun upgrade

* fix self-destruct logic
…s price (polkadot-evm#1719)

* fix: missing check_inherent for note_min_gas_price_target inflates gas price

* rustfmt
…s in Transaction (polkadot-evm#1724)

* fix: handle camelCase fields in Transaction and make mix_hash field optional for rpc-v2

* Update client/rpc-v2/types/src/transaction/mod.rs

Co-authored-by: Wei Tang <wei@pacna.org>

---------

Co-authored-by: Wei Tang <wei@pacna.org>
@l0r1s l0r1s marked this pull request as ready for review August 21, 2025 20:47
@sam0x17 sam0x17 merged commit 10b5f9a into master Aug 28, 2025
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants