Skip to content

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.

    Reference

Last update: January 14, 2026
| Created: January 14, 2026