Selendra

Documentation

Architecture

System design and component overview

Selendra is built on the Substrate framework (Polkadot SDK fork from Cardinal Cryptography, branch aleph-v1.6.0).

System Layers

LayerComponents
ApplicationEVM dApps (Solidity), WASM dApps (ink!), MetaMask, Polkadot.js
RuntimeFrontier EVM, pallet-contracts, Unified Accounts
ConsensusAura (1s blocks), AlephBFT finality
StorageRocksDB, Patricia-Merkle trie

Core Pallets

Consensus & Staking: pallet-aura, pallet-aleph, pallet-staking, pallet-session, pallet-committee-management, pallet-elections, pallet-nomination-pools

EVM: pallet-evm, pallet-ethereum, pallet-evm-chain-id, pallet-dynamic-evm-base-fee, pallet-unified-accounts, pallet-custom-signatures

WASM: pallet-contracts (ink! 5.0.0-rc)

Governance: pallet-democracy, pallet-collective, pallet-elections-phragmen, pallet-treasury, pallet-scheduler, pallet-preimage

Core: pallet-balances, pallet-transaction-payment, pallet-timestamp, pallet-utility, pallet-multisig, pallet-proxy, pallet-identity, pallet-vesting

Safety: pallet-safe-mode, pallet-tx-pause

Dual VM Architecture

EVM Path

  1. Transaction via MetaMask/Web3.js
  2. pallet-ethereum validates and converts to Substrate extrinsic
  3. pallet-evm executes bytecode
  4. Gas metered via pallet-dynamic-evm-base-fee

Chain ID: 1961 | Gas Price: Dynamic (0.1-10,000 Gwei)

WASM Path

  1. Deploy via cargo-contract
  2. pallet-contracts executes WASM in Wasmtime
  3. Weight-based gas metering
  4. Storage rent model

Framework: ink! 5.0.0-rc

Unified Accounts

Single address works across both VMs via bidirectional H160 ↔ AccountId32 mapping. One-time setup: 0.01 SEL.

Complete guide

Block Processing

ParameterValue
Block Time1 second
Session900 blocks (15 min)
Era96 sessions (24 hours)

Process: Aura assigns slot → Validator executes transactions → AlephBFT votes → Block finalized

Network Protocol

  • P2P: libp2p (port 30333)
  • RPC: Substrate + Ethereum (ports 9944 WS, 9933 HTTP)

Development

# Build
cargo build --release

# Run dev node
./target/release/selendra-node --dev --tmp

Requirements: Rust 1.79.0, wasm32-unknown-unknown target, protobuf compiler

Key Differentiators

  1. Dual VM - EVM and WASM contracts
  2. Unified Accounts - One address for both VMs
  3. AlephBFT - Fast deterministic finality
  4. Dynamic Gas - Automatic fee adjustment

Next: ConsensusDual VMTech Specs

Contribute

Found an issue or want to contribute?

Help us improve this documentation by editing this page on GitHub.

Edit this page on GitHub