Repository navigation
Chore/frontier upstream sync - #173
Merged
Merged
Conversation
Orbinum: the RPC half (rpc_allow_unprotected_txs) was already in the node, so only the runtime check lands here. AllowUnprotectedTxs = ConstBool<false> in template/runtime/src/configs/evm.rs; the EIP-7702 validation tests gain the new field. (cherry picked from commit 9f94a1538b2f0a7314ffffe959115ea7e50f0e59)
(cherry picked from commit 50ae25ab41285c918fffe14ed069d10c5feab193)
(cherry picked from commit 8e48b1253ba27b99f40856d2bcb538f22ffd080b)
(cherry picked from commit f25b014e7abd19622825086f3d4d0c3f0d57fdf4)
(cherry picked from commit 87347e1d7c92b97bd31579ba977559659157760f)
(cherry picked from commit 3e40adcf53d1fb53b12b17245c48745299ab83b0)
Orbinum: the EIP-7825 validation tests gain the allow_unprotected_txs field from #1815. MAX_TRANSACTION_GAS_LIMIT was already in fp-evm. (cherry picked from commit f9adbbfa39ee156b2daf0a6f354d0eaacb65440e)
Orbinum: TransactionGasLimit = Some(MAX_TRANSACTION_GAS_LIMIT) in template/runtime/src/configs/evm.rs (2^24 gas; shield costs ~41k, private_transfer ~92k). The balances and shielded-pool precompile mocks, which implement pallet_evm::Config in full, take TransactionGasLimit = (). (cherry picked from commit b2088f29b9b95d190f46e4618825fec09853b579)
…ot empty code Since #171 every Orbinum precompile stores PUSH1 0 PUSH1 0 REVERT so Solidity high-level calls pass their code-size check. eth_getCode(0x0801) returns that stub.
…hain-id check, EIP-7825 gas cap, modexp EIP-7823/7883, OutOfGas on failed weight conversion, multiple pre-log digests invalid)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Ports upstream Frontier (polkadot-evm/frontier) changes made after #1790 that the node did not have yet. Frontier is vendored in-tree, so each upstream change is applied as its own commit with a
(cherry picked from commit …)trailer, plus the adaptations the node needs. Everything lands in spec 20, which is not released yet.Neither polkadot-evm/frontier nor Moonbeam's fork has a branch past stable2603, and the node is already on 2606. Moonbeam's fork also pulls polkadot-sdk,
evmandethereumfrom its own git forks, which conflicts with the crates.io SDK that ISMP requires. polkadot-evm/frontier stays the reference, and fixes are taken commit by commit.Runtime (spec 20)
AllowUnprotectedTxs = false). Only the RPC refused them before, so an extrinsic submitted directly could replay a transaction signed for another chain. The RPC half was already in the node.b2088f29): at most 2^24 gas per transaction (EIP-7825), configurable throughpallet_evm::Config::TransactionGasLimit. The runtime usesSome(MAX_TRANSACTION_GAS_LIMIT).shieldcosts about 41k gas andprivate_transferabout 92k, far below the cap.0x05(#1804, #1801): inputs over 1024 bytes now consume all gas (EIP-7823); pricing follows EIP-7883.OutOfGasand charges its gas limit, instead of failing the dispatch.pallet_ethereum::on_finalizepanics on more than one Frontier pre-runtime log, so the block is invalid. Before, it treated that block as having no log.Client
Tests
pallet_evm::Configin full, so they getTransactionGasLimit = ().allow_unprotected_txsfield.0x60006000fdprecompile stub from fix(runtime)!: store a stub at every Orbinum precompile so Solidity high-level calls reach them, drop the applied spec 19 migrations (spec 20) #171. It was already failing onmain.Documentation
RUNTIME_VERSIONS.md: spec 20 lists the five runtime changes.Testing
cargo test --lib:fp-evm(40),pallet-ethereum(72),pallet-evm(48)pallet-evm-precompile-modexp(18),-balances(5),-shielded-pool(13),-dispatch(40)orbinum-runtime(54)test_replace_same_key_does_not_inflate_size) run in a standalone crate that compiles onlylru_cache.rs. Thefc-rpctest target does not build because of the git-onlysubstrate-test-runtime-clientdev-dependency.fp-evmandpallet-ethereumtests.it.skip), 0 failing, including the newtest-precompile-modexp.ts.make fmt-check,cargo clippy --all --all-targets --features=runtime-benchmarks,skip-proof-verification,try-runtime -D warnings.