Skip to content

Add Revive/EVM support and move to Substrate stable2603 release.#1902

Open
Neopallium wants to merge 24 commits intodevelopfrom
polymesh-v8-revive-evm-stable2603
Open

Add Revive/EVM support and move to Substrate stable2603 release.#1902
Neopallium wants to merge 24 commits intodevelopfrom
polymesh-v8-revive-evm-stable2603

Conversation

@Neopallium
Copy link
Copy Markdown
Contributor

@Neopallium Neopallium commented Mar 12, 2026

changelog

new features

  • Add the Revive pallet to support PVM and EVM Smart contracts.
  • Support ETH transactions (to support EVM compatible wallets).
  • Added eth-rpc the start of an ETH -> Substrate gateway.
  • Move to Substrate stable2603

@Neopallium Neopallium changed the title [WIP] Polymesh v8 revive evm stable2603 Polymesh v8 revive evm stable2603 Mar 13, 2026
@Neopallium Neopallium changed the title Polymesh v8 revive evm stable2603 Add Revive/EVM support and move to Substrate stable2603 release. Mar 13, 2026
@Neopallium Neopallium force-pushed the polymesh-v8-revive-evm-stable2603 branch from 2beacde to 8370639 Compare March 17, 2026 11:23
@tgntr tgntr mentioned this pull request Mar 18, 2026
Neopallium pushed a commit that referenced this pull request Mar 30, 2026
NOTE: Targetting #1902 branch until it gets merged

## changelog

### other

- Add Dockerfile for building and running the `eth-rpc` binary
- Add CI jobs to publish images
@Neopallium Neopallium requested review from HenriqueNogara, Copilot and tgntr and removed request for tgntr March 30, 2026 14:49
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds Revive (PVM/EVM) support across Polymesh runtimes and introduces an eth-rpc companion service, while updating the toolchain/CI to Substrate stable2603-era dependencies and APIs.

Changes:

  • Integrate pallet-revive into develop/testnet/mainnet runtimes, transaction extensions, and runtime APIs (including ETH transaction support).
  • Add new pallet-revive-eth-rpc crate (server, client, storage/receipt indexing, tests, examples, migrations, docker/CI wiring).
  • Update toolchain/CI/build plumbing (nightly bump, rust-src, CircleCI jobs, Docker ignores/images) and adjust tests/benchmarks for new fee/session APIs.

Reviewed changes

Copilot reviewed 74 out of 86 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
src/service.rs Updates extrinsic construction and consensus inherent providers; wiring for essential spawn handle.
src/command.rs Replaces run() with run_with_args(Vec<String>) CLI entrypoint.
src/chain_spec/develop_runtime.rs Adds ETH dev accounts to develop chain spec endowed accounts list.
src/bin/main.rs Passes env args into run_with_args.
src/benchmarking.rs Updates benchmark extrinsic creation for new TxExtension shape and revive SetOrigin.
rust-toolchain.toml Bumps nightly toolchain and adds rust-src.
integration/rust-toolchain.toml Bumps integration nightly toolchain.
primitives/src/lib.rs Adjusts derives away from RuntimeDebug usage.
pallets/validators/src/types.rs Switches derives to Debug for validator types.
pallets/validators/src/tests.rs Updates session key ownership proof usage in tests.
pallets/validators/src/mock.rs Updates bonding helper to generate ownership proof for session keys.
pallets/validators/src/lib.rs Removes unused sp_std::vec import.
pallets/transaction-payment/src/lib.rs Updates derive macro import (DebugNoBound).
pallets/sto/src/lib.rs Adjusts derives for FundingMethod enum.
pallets/statistics/src/lib.rs Cleans up unused vec import.
pallets/runtime/tests/src/transaction_payment_test.rs Updates expected fee/balance values after fee logic changes.
pallets/runtime/tests/src/storage.rs Adds Revive pallet + EVM chain id/weights; updates TxExtension/uncheck extrinsic helpers.
pallets/runtime/tests/src/signed_extra.rs Updates TxExtension shape and expected priorities.
pallets/runtime/tests/Cargo.toml Adds pallet-revive dependency/features.
pallets/runtime/testnet/src/runtime.rs Adds Revive pallet + EvmChainId to testnet runtime.
pallets/runtime/testnet/Cargo.toml Adds pallet-revive and benchmark feature wiring.
pallets/runtime/mainnet/src/runtime.rs Adds Revive pallet + EvmChainId to mainnet runtime.
pallets/runtime/mainnet/Cargo.toml Adds pallet-revive and benchmark feature wiring.
pallets/runtime/develop/src/runtime.rs Adds Revive pallet + EvmChainId; updates benchmarks integration and session benchmarking config.
pallets/runtime/develop/src/lib.rs Removes old benchmarks module exports.
pallets/runtime/develop/src/benchmarks/pallet_session.rs Deletes local session benchmarking implementation (migrates to pallet-session-benchmarking).
pallets/runtime/develop/src/benchmarks/mod.rs Removes benchmarks module shim.
pallets/runtime/develop/Cargo.toml Adds pallet-revive + pallet-session-benchmarking optional dependency/features.
pallets/runtime/common/src/runtime.rs Integrates Revive config, ETH extra/unchecked extrinsic type, TxExtension reshaping, fee mapping changes.
pallets/runtime/common/src/lib.rs Adds fee multiplier const, revive deposit constants, max eth extrinsic ratio, block length builder update.
pallets/runtime/common/Cargo.toml Adds pallet-transaction-payment dependency/features.
pallets/relayer/src/lib.rs Removes unused sp_std::vec import.
pallets/permissions/src/lib.rs Cleans up imports (fmt/vec).
pallets/contracts/src/lib.rs Removes unused vec import.
pallets/asset/src/checkpoint/mod.rs Removes unused sp_std::vec import.
eth-rpc/src/main.rs Adds eth-rpc binary entrypoint.
eth-rpc/src/lib.rs Adds eth-rpc server implementation and module structure.
eth-rpc/src/cli.rs Adds eth-rpc CLI + server startup wiring, subscriptions, prometheus, rpc module merging.
eth-rpc/src/client.rs Adds Substrate client wrapper (syncing, blocks, receipts, tracing, submission).
eth-rpc/src/client/runtime_api.rs Adds runtime API wrapper for revive EVM queries/dry-run/trace helpers.
eth-rpc/src/client/storage_api.rs Adds storage API wrapper for contract info/trie id.
eth-rpc/src/subxt_client.rs Adds generated subxt client module (type substitutions, metadata path).
eth-rpc/src/receipt_extractor.rs Adds receipt extraction logic from revive extrinsics/events.
eth-rpc/src/block_info_provider.rs Adds block cache/provider abstraction and Subxt-backed implementation.
eth-rpc/src/fee_history_provider.rs Adds fee history cache and response generation.
eth-rpc/src/example.rs Adds helper transaction builder utilities for examples/tests.
eth-rpc/src/apis.rs Adds API module wiring (eth/debug/health/polkadot).
eth-rpc/src/apis/execution_apis.rs Adds generated Eth JSON-RPC trait definitions.
eth-rpc/src/apis/debug_apis.rs Adds debug tracing/automine endpoints.
eth-rpc/src/apis/health_api.rs Adds health + net_peerCount endpoints.
eth-rpc/src/apis/polkadot_api.rs Adds Polkadot-specific postDispatchWeight RPC.
eth-rpc/src/tests.rs Adds integration-style eth-rpc tests that spawn node + rpc server.
eth-rpc/migrations/0001_create_transaction_hashes.sql Adds transaction hash indexing table migration.
eth-rpc/migrations/0002_create_log_table.sql Adds logs table migration.
eth-rpc/migrations/0003_create_eth_substrate_block_mapping.sql Adds eth<->substrate block hash mapping table migration.
eth-rpc/examples/README.md Documents how to run node, zombienet, rpc server, and examples.
eth-rpc/examples/deploy.rs Adds deploy+call example.
eth-rpc/examples/transfer.rs Adds transfer example.
eth-rpc/examples/tx-types.rs Adds example for multiple tx types.
eth-rpc/examples/rpc-playground.rs Adds basic RPC playground example.
eth-rpc/examples/extrinsic.rs Adds substrate extrinsic submission example via subxt.
eth-rpc/examples/remark-extrinsic.rs Adds substrate remark extrinsic example.
eth-rpc/examples/eth-rpc-tester.rs Adds external tester that can run against docker image.
eth-rpc/examples/eth-remark-call.rs Adds example for calling a Substrate call via EVM runtime pallets address.
eth-rpc/examples/westend_local_network.toml Adds zombienet config example.
eth-rpc/build.rs Adds build-time env metadata and subxt metadata generation.
eth-rpc/Cargo.toml Introduces eth-rpc crate definition and dependencies.
eth-rpc/.rustfmt.toml Adds rustfmt configuration specific to eth-rpc crate.
eth-rpc/.sqlx/query-*.json Adds sqlx prepared query metadata files.
.dockerignore Ignores .env* files in docker context.
.docker/eth-rpc/Dockerfile Adds production docker image for eth-rpc binary artifact.
.docker/eth-rpc/Dockerfile.local Adds local-build docker image to build eth-rpc from workspace.
.docker/eth-rpc/.dockerignore Adds dockerignore for eth-rpc docker build context.
.circleci/config.yml Updates CI images/toolchain; adds solc/resolc download; builds/publishes eth-rpc docker images.
Files not reviewed (10)
  • eth-rpc/.sqlx/query-2348bd412ca114197996e4395fd68c427245f94b80d37ec3aef04cd96fb36298.json: Language not supported
  • eth-rpc/.sqlx/query-29af64347f700919dc2ee12463f332be50096d4e37be04ed8b6f46ac5c242043.json: Language not supported
  • eth-rpc/.sqlx/query-2fcbf357b3993c0065141859e5ad8c11bd7800e3e6d22e8383ab9ac8bbec25b1.json: Language not supported
  • eth-rpc/.sqlx/query-3de332f45edf5ee4592bd0061956305983861ccaea79eec44518e1bca5233920.json: Language not supported
  • eth-rpc/.sqlx/query-47b830cef6768ed5b119c74037482baef86a7c3d3469873a205805ef342ba031.json: Language not supported
  • eth-rpc/.sqlx/query-5c0ea8efbd2591e3ede3833acfcadf2d552140a20d84edbf90583da4619bcf2a.json: Language not supported
  • eth-rpc/.sqlx/query-7e5be81ad6f5d96bc6dbf62098cbd61d257d1ffad222317634327e12be403ab2.json: Language not supported
  • eth-rpc/.sqlx/query-b296f5ac320c7537133dca1ede0285ccf101a8e36d68455e05a76df3b366420e.json: Language not supported
  • eth-rpc/.sqlx/query-cf515b47790a2ac4b3802c29e36a07ace0c67849e5b20c92532d7a77861ebf80.json: Language not supported
  • eth-rpc/.sqlx/query-e712acbeb712c0a61fc2a47f966abae1ae43ffba0920a9d209d01dcfce44c5e0.json: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@Neopallium Neopallium force-pushed the polymesh-v8-revive-evm-stable2603 branch from 9c8121e to 2a4d730 Compare April 1, 2026 13:40
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.

3 participants