Dual Virtual Machine Stack¶
Introduction¶
Polkadot's smart contract platform supports two distinct virtual machine (VM) architectures, providing developers with flexibility in selecting the optimal execution backend for their specific needs. This approach strikes a balance between immediate Ethereum compatibility and long-term innovation, enabling developers to deploy either unmodified (Ethereum Virtual Machine) EVM contracts using Rust Ethereum Virtual Machine (REVM) or optimize for higher performance using PolkaVM (PVM).
Both VM options share common infrastructure, including RPC interfaces, tooling support, and precompiles. The following sections compare architectures and guide you in selecting the best VM for your project's needs.
REVM Backend¶
The REVM backend is a complete Rust implementation of the Ethereum Virtual Machine, enabling Solidity contracts to run unchanged on Polkadot Hub.
Key Benefits¶
- Zero modifications required: Deploy existing Ethereum contracts exactly as they are.
- Full EVM compatibility: Exact EVM behavior for audit tools and bytecode inspection.
- Familiar tooling: Use Hardhat, Foundry, Remix, and all standard Ethereum development tools.
- Rapid deployment: Get your contracts running on Polkadot immediately.
- Established infrastructure: Work with the Ethereum tooling ecosystem you already know.
How It Works¶
REVM enables Ethereum developers to seamlessly migrate to Polkadot, achieving improved performance and lower fees without modifying their existing contracts or development workflows.
Architecture¶
Revive Pallet¶
pallet_revive is the runtime module that executes smart contracts. It processes Ethereum-style transactions through the following workflow:
sequenceDiagram
participant User as User/dApp
participant Proxy as Ethereum JSON RPC Proxy
participant Chain as Blockchain Node
participant Pallet as pallet_revive
User->>Proxy: Submit Ethereum Transaction
Proxy->>Chain: Repackage as Polkadot Compatible Transaction
Chain->>Pallet: Process Transaction
Pallet->>Pallet: Decode Ethereum Transaction
Pallet->>Pallet: Execute Contract
Pallet->>Chain: Return Results
Chain->>Proxy: Forward Results
Proxy->>User: Return Ethereum-compatible Response This proxy-based approach eliminates the need for node binary modifications, maintaining compatibility across different client implementations. Preserving the original Ethereum transaction payload simplifies the adaptation of existing tools, which can continue processing familiar transaction formats.
Alternative: PVM Backend¶
For advanced use cases requiring maximum performance, Polkadot Hub also supports the PVM (Polkadot Virtual Machine) backend. PVM uses a RISC-V-based architecture that can provide performance optimizations for computationally intensive workloads. Solidity contracts can be compiled to PVM bytecode using the resolc compiler.
Most developers should start with REVM for its simplicity and full Ethereum compatibility. PVM is available for projects with specific performance requirements.
Where To Go Next¶
-
Learn Contract Deployment
Understand deployment mechanics, gas estimation behavior, and storage considerations.
| Created: January 14, 2026