Skip to main content
Sei combines parallelized execution, which you know from Solana, with full EVM compatibility and the extensive Ethereum tooling ecosystem. This guide helps Rust and Anchor developers translate their mental models and codebases to Solidity on Sei.
Why Solana developers choose Sei
  • Sei uses optimistic parallel execution, similar to Solana’s Sealevel.
  • Block times of 400 ms are comparable to Solana’s speed, and finality is instant.
  • Throughput is approximately 100 MGas/s, with full EVM compatibility.
  • You can use Ethereum’s mature tooling, audited contracts, and developer resources.
  • You do not declare dependencies. Unlike Solana, Sei handles parallelization automatically.

Understanding the paradigm shift

Before you write code, understand the architectural differences between Solana and EVM-based chains such as Sei.

Execution model comparison

Core concept mapping

Programs → smart contracts

On Solana, you write programs that are stateless executables. Data lives in separate accounts that programs can read and modify. On Sei EVM, smart contracts combine code and state in a single entity.
Key differences:
  • You do not allocate account space. Storage grows dynamically.
  • You do not validate a Signer explicitly. msg.sender is always authenticated.
  • You do not import a system program. Native operations are built into the EVM.

PDAs → CREATE2 deterministic addresses

Solana’s Program Derived Addresses (PDAs) let you create deterministic addresses from seeds. On the EVM, you get similar functionality with CREATE2.

CPI → contract calls

Solana’s Cross-Program Invocation (CPI) becomes a simple function call in Solidity:

SPL Token → ERC-20

Key ERC-20 differences from SPL:
  • ERC-20 has no Associated Token Accounts (ATAs). Balances are stored directly in the contract.
  • Approvals use the approve() and transferFrom() pattern.
  • The basic implementation has no mint or freeze authorities. To add them, use Ownable.

Fee model translation

To estimate costs accurately, learn how the fee models differ:
No rent on SeiOn Solana, accounts can be garbage collected if rent is not paid. On Sei EVM, storage is permanent. This simplifies your application logic: you do not need to track rent-exempt minimums or worry about account closure.

Parallelization: automatic vs explicit

On Sei, parallelization is automatic.

Solana: explicit account declaration

On Solana, you must declare upfront every account that a transaction will touch:

Sei: optimistic parallelization

On Sei, you write normal Solidity, and the runtime handles parallelization:
Optimizing for parallelizationAvoid global counters that every transaction updates. Use user-partitioned storage instead. Sei handles parallelization automatically, but you can still optimize your contracts for better parallel performance. For detailed patterns, see Optimizing for Parallelization.

Step 1: Set up your development environment

Install required tools

Configure for Sei

hardhat.config.ts
Store your deployer key in Hardhat’s encrypted keystore instead of a plaintext .env file:

Wallet setup

Configure MetaMask or any EVM wallet for Sei:

Step 2: Translate your Solana program

Common pattern translations

Initializing state

Access control

Error handling

Events/logs

Step 3: Frontend migration

SDK comparison

Code translation

Step 4: Testing your migrated code

Test framework comparison

Step 5: Deploy and verify

Deploy to testnet

Verify contract

Common migration pitfalls

1. Expecting rent

2. Manual account validation

3. Expecting explicit parallelization

4. Using lamports mental model

Ecosystem infrastructure

Available on Sei

Helpful resources

Learning Solidity

Sei-specific

Need help?For developer support, join the Sei Tech Chat on Telegram. The community is active and helps with migration questions.