Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 34 additions & 2 deletions docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,21 @@
"groups": [
{
"group": "Overview",
"pages": ["evm/index"]
"pages": [
"evm/index",
{
"group": "EVM Compatibility",
"pages": [
"evm/evm-parity/evm-compatibility",
"evm/evm-parity/finality",
"evm/evm-parity/gas-and-fees",
"evm/evm-parity/transaction-types",
"evm/evm-parity/state-proofs",
"evm/evm-parity/websocket",
"evm/evm-parity/signing"
]
}
]
},
{
"group": "Essentials",
Expand Down Expand Up @@ -190,7 +204,8 @@
"pages": [
"evm/sei-js/index",
"evm/sei-js/create-sei",
"evm/sei-js/ledger"
"evm/sei-js/ledger",
"evm/sei-js/registry"
]
},
{
Expand All @@ -200,6 +215,23 @@
{
"group": "Ecosystem Tutorials",
"pages": [
{
"group": "sei-js Examples",
"pages": [
"evm/evm-parity/examples/viem-quickstart",
"evm/evm-parity/examples/ethers-quickstart",
"evm/evm-parity/examples/wagmi-react",
"evm/evm-parity/examples/erc20",
"evm/evm-parity/examples/erc721",
"evm/evm-parity/examples/erc1155",
"evm/evm-parity/examples/multicall",
"evm/evm-parity/examples/pointer-contracts",
"evm/evm-parity/examples/sei-precompiles",
"evm/evm-parity/examples/deploy-verify",
"evm/evm-parity/examples/transaction-lifecycle",
"evm/evm-parity/examples/error-handling"
]
},
{
"group": "Indexers",
"pages": [
Expand Down
138 changes: 138 additions & 0 deletions evm/evm-parity/evm-compatibility.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
---
title: 'EVM Compatibility'
description: 'EVM feature support on Sei — what works, what differs from Ethereum, and what is not available'

Check warning on line 3 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L3

Did you really mean 'Sei'?

Check warning on line 3 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L3

Did you really mean 'Ethereum'?
icon: 'table'
---

# EVM Compatibility

This page documents Sei's EVM feature support. Each row shows whether a capability works as on standard Ethereum, behaves differently in a documented way, or is not available on Sei.

Check warning on line 9 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L9

Did you really mean 'Sei's'?

Check warning on line 9 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L9

Did you really mean 'Ethereum'?

Standard EVM tooling — viem, wagmi, ethers, Foundry, Hardhat — works on Sei for all rows marked **Supported**. Where Sei differs from Ethereum, the difference is noted so you can account for it in your application.

Check warning on line 11 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L11

Did you really mean 'viem'?

Check warning on line 11 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L11

Did you really mean 'wagmi'?

Check warning on line 11 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L11

Did you really mean 'ethers'?

Check warning on line 11 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L11

Did you really mean 'Sei'?

Check warning on line 11 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L11

Did you really mean 'Sei'?

Check warning on line 11 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L11

Did you really mean 'Ethereum'?

## Status Legend

| Status | Meaning |
| --- | --- |
| Supported | Works on Sei EVM with standard Ethereum behavior. |

Check warning on line 17 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L17

Did you really mean 'Sei'?

Check warning on line 17 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L17

Did you really mean 'Ethereum'?
| Supported — differences | Available on Sei, but intentionally differs from Ethereum. See the notes. |

Check warning on line 18 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L18

Did you really mean 'Sei'?

Check warning on line 18 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L18

Did you really mean 'Ethereum'?
| Sei extension | A Sei-specific capability with no standard Ethereum equivalent. |

Check warning on line 19 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L19

Did you really mean 'Sei'?

Check warning on line 19 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L19

Did you really mean 'Ethereum'?
| Not supported | Not available on Sei EVM. |

Check warning on line 20 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L20

Did you really mean 'Sei'?

## Transactions

| Feature | Sei status | Notes |

Check warning on line 24 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L24

Did you really mean 'Sei'?
| --- | --- | --- |
| Legacy transactions (type 0) | Supported — differences | Minimum gas price is set by Sei governance parameters, not a fixed floor. [See Gas and Fees.](/evm/evm-parity/gas-and-fees) |

Check warning on line 26 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L26

Did you really mean 'Sei'?
| EIP-2930 access list transactions (type 1) | Supported | |
| EIP-1559 fee market transactions (type 2) | Supported — differences | No base-fee burning. Fees go to validators rather than being burned. [See Gas and Fees.](/evm/evm-parity/gas-and-fees) |

Check warning on line 28 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L28

Did you really mean 'validators'?
| EIP-4844 blob transactions (type 3) | Not supported | Sei runs Pectra without blob transactions. [See Transaction Types.](/evm/evm-parity/transaction-types) |

Check warning on line 29 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L29

Did you really mean 'Sei'?

Check warning on line 29 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L29

Did you really mean 'Pectra'?
| EIP-7702 set-code transactions (type 4) | Supported | |

## Account and State

| Feature | Sei status | Notes |

Check warning on line 34 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L34

Did you really mean 'Sei'?
| --- | --- | --- |
| `eth_getBalance` | Supported | |
| `eth_getTransactionCount` (nonce) | Supported | |
| `eth_getCode` | Supported | |
| `eth_getStorageAt` | Supported — differences | SSTORE cost is governance-adjustable; do not hard-code gas assumptions. [See Gas and Fees.](/evm/evm-parity/gas-and-fees) |
| `eth_getProof` | Supported — differences | Returns IAVL proof data rather than Ethereum Merkle Patricia Trie proofs. Proof verification logic must account for this. [See State Proofs.](/evm/evm-parity/state-proofs) |

Check warning on line 40 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L40

Did you really mean 'Ethereum'?

Check warning on line 40 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L40

Did you really mean 'Merkle'?

Check warning on line 40 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L40

Did you really mean 'Trie'?

## Blocks and Finality

| Feature | Sei status | Notes |

Check warning on line 44 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L44

Did you really mean 'Sei'?
| --- | --- | --- |
| `eth_getBlockByHash`, `eth_getBlockByNumber` | Supported | |
| `eth_blockNumber` | Supported | |
| Finality tags (`latest`, `safe`, `finalized`) | Supported — differences | Sei has instant finality. All three tags refer to the same commitment level. [See Finality.](/evm/evm-parity/finality) |

Check warning on line 48 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L48

Did you really mean 'Sei'?
| Pending block state | Supported — differences | Ethereum-style pending state visibility is not guaranteed. Do not rely on pending transaction ordering. [See Finality.](/evm/evm-parity/finality) |

## Logs, Filters, and Subscriptions

| Feature | Sei status | Notes |

Check warning on line 53 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L53

Did you really mean 'Sei'?
| --- | --- | --- |
| `eth_getLogs` | Supported | |
| Filter lifecycle (`eth_newFilter`, `eth_getFilterChanges`, `eth_getFilterLogs`, `eth_uninstallFilter`) | Supported | |
| WebSocket subscriptions (`eth_subscribe`) | Supported | [See WebSocket Connections.](/evm/evm-parity/websocket) |

## Execution and Simulation

| Feature | Sei status | Notes |

Check warning on line 61 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L61

Did you really mean 'Sei'?
| --- | --- | --- |
| `eth_call` | Supported | |
| `eth_estimateGas` | Supported | |
| `debug_traceTransaction` | Supported | |
| Block-level tracing | Supported | |

## Signing

| Feature | Sei status | Notes |

Check warning on line 70 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L70

Did you really mean 'Sei'?
| --- | --- | --- |
| EIP-155 replay protection | Supported | |
| Personal sign (`personal_sign`, `eth_sign`) | Supported | Depends on the connected wallet exposing the method. [See Signing.](/evm/evm-parity/signing) |
| EIP-712 typed data signing (`eth_signTypedData_v4`) | Supported | Depends on the connected wallet exposing the method. [See Signing.](/evm/evm-parity/signing) |
| EIP-1271 contract signature validation | Supported | [See Signing.](/evm/evm-parity/signing) |

## Token Standards

| Feature | Sei status | Notes |

Check warning on line 79 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L79

Did you really mean 'Sei'?
| --- | --- | --- |
| ERC-20 | Supported | |
| ERC-721 | Supported | |
| ERC-1155 | Supported | |

## Account Abstraction

| Feature | Sei status | Notes |

Check warning on line 87 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L87

Did you really mean 'Sei'?
| --- | --- | --- |
| ERC-4337 | Supported | Requires a compatible bundler. Sei EVM is ERC-4337 compatible. |

Check warning on line 89 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L89

Did you really mean 'bundler'?

Check warning on line 89 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L89

Did you really mean 'Sei'?

## Name Services

| Feature | Sei status | Notes |

Check warning on line 93 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L93

Did you really mean 'Sei'?
| --- | --- | --- |
| ENS | Not supported | Sei does not run Ethereum mainnet ENS. Application-level name services can be deployed as contracts. |

Check warning on line 95 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L95

Did you really mean 'Sei'?

Check warning on line 95 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L95

Did you really mean 'Ethereum'?

Check warning on line 95 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L95

Did you really mean 'mainnet'?

## Sei Extensions

Check warning on line 97 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L97

Did you really mean 'Sei'?

These capabilities are Sei-specific and have no standard Ethereum equivalent. They are exposed through `@sei-js` packages layered on top of standard EVM tooling.

Check warning on line 99 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L99

Did you really mean 'Ethereum'?

| Feature | Notes |
| --- | --- |
| Sei precompiles (staking, governance, distribution, oracle, P256, JSON, CosmWasm bridge) | EVM contracts at deterministic addresses. ABIs and contract addresses are exported from `@sei-js/precompiles` for use with any standard EVM library. |

Check warning on line 103 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L103

Did you really mean 'Sei'?

Check warning on line 103 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L103

Did you really mean 'precompiles'?

Check warning on line 103 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L103

Did you really mean 'ABIs'?
| Pointer contracts (CW20 ↔ ERC-20, CW721 ↔ ERC-721) | Bridge between CosmWasm and EVM token standards. Standard ERC interfaces work against pointer contracts. |
| Native address association (EVM ↔ Cosmos address) | Links an EVM address and a Cosmos address for the same account. Required before some Sei-native flows. |
| TokenFactory native token creation | Create native Sei tokens that are usable across EVM and CosmWasm without a wrapper contract. |

Check warning on line 106 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L106

Did you really mean 'Sei'?

## Unsupported RPC Methods

The following JSON-RPC methods are either not available on Sei or will return errors:

Check warning on line 110 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L110

Did you really mean 'Sei'?

### Blob / EIP-4844

| Method | Reason |
| --- | --- |
| `eth_blobBaseFee` | Sei runs Pectra without blob transaction support. This method does not exist on Sei. |

Check warning on line 116 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L116

Did you really mean 'Sei'?

Check warning on line 116 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L116

Did you really mean 'Pectra'?
| `engine_getBlobsV1` | Blob data availability endpoints are not supported. |

### Pending State

| Method | Behavior on Sei |

Check warning on line 121 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L121

Did you really mean 'Sei'?
| --- | --- |
| `eth_getBlockByNumber("pending")` | Returns `null` or the latest committed block. Sei does not maintain an Ethereum-style pending block. |

Check warning on line 123 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L123

Did you really mean 'Sei'?
| `eth_getTransactionCount(address, "pending")` | Returns the same value as `"latest"`. Pending nonce does not differ from confirmed nonce on Sei. |
| `eth_newPendingTransactionFilter` | The filter can be created but will not reliably emit pending transactions. Use `eth_newBlockFilter` or WebSocket block subscriptions instead. |
| `eth_subscribe("newPendingTransactions")` | Supported at the RPC level but Sei does not guarantee Ethereum-style pending transaction visibility. Treat results as best-effort. |

Check warning on line 126 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L126

Did you really mean 'Sei'?

### Proof Verification

| Method | Behavior on Sei |

Check warning on line 130 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L130

Did you really mean 'Sei'?
| --- | --- |
| `eth_getProof` | Returns IAVL tree proofs, not Ethereum Merkle Patricia Trie proofs. The method itself works, but the proof format is incompatible with standard Ethereum MPT verifiers. [See State Proofs.](/evm/evm-parity/state-proofs) |

Check warning on line 132 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L132

Did you really mean 'Ethereum'?

Check warning on line 132 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L132

Did you really mean 'Merkle'?

Check warning on line 132 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L132

Did you really mean 'Trie'?

Check warning on line 132 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L132

Did you really mean 'Ethereum'?

### Deprecated / Removed Opcodes

| Method | Reason |
| --- | --- |
| `eth_accounts` | Returns an empty array on Sei RPC nodes. Use a wallet library (`eth_requestAccounts`) to get accounts from the connected user's wallet instead. |

Check warning on line 138 in evm/evm-parity/evm-compatibility.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/evm-compatibility.mdx#L138

Did you really mean 'Sei'?
177 changes: 177 additions & 0 deletions evm/evm-parity/examples/deploy-verify.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,177 @@
---
title: 'Deploy and Verify'
description: 'Deploying and verifying smart contracts on Sei with viem, ethers, Foundry, and Hardhat'

Check warning on line 3 in evm/evm-parity/examples/deploy-verify.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/examples/deploy-verify.mdx#L3

Did you really mean 'Sei'?

Check warning on line 3 in evm/evm-parity/examples/deploy-verify.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/examples/deploy-verify.mdx#L3

Did you really mean 'viem'?

Check warning on line 3 in evm/evm-parity/examples/deploy-verify.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/examples/deploy-verify.mdx#L3

Did you really mean 'ethers'?
icon: 'rocket'
---

# Deploy and Verify

Sei is EVM-compatible — standard deployment tooling works without modification. This page covers deploying a contract and verifying its source on the Sei block explorer.

Check warning on line 9 in evm/evm-parity/examples/deploy-verify.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/examples/deploy-verify.mdx#L9

Did you really mean 'Sei'?

Check warning on line 9 in evm/evm-parity/examples/deploy-verify.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/examples/deploy-verify.mdx#L9

Did you really mean 'Sei'?

For a deeper look at verification options (Remix, Sourcify UI, batch verification), see the [Verify Contracts](/evm/evm-verify-contracts) page.

Check warning on line 11 in evm/evm-parity/examples/deploy-verify.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/examples/deploy-verify.mdx#L11

Did you really mean 'Sourcify'?

## Deploying with viem or ethers

Check warning on line 13 in evm/evm-parity/examples/deploy-verify.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/examples/deploy-verify.mdx#L13

Did you really mean 'viem'?

Check warning on line 13 in evm/evm-parity/examples/deploy-verify.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/examples/deploy-verify.mdx#L13

Did you really mean 'ethers'?

<CodeGroup>

```ts viem
import { createPublicClient, createWalletClient, http } from 'viem';
import { privateKeyToAccount } from 'viem/accounts';
import { sei } from '@sei-js/precompiles/viem';

const account = privateKeyToAccount('0xYourPrivateKey');
const publicClient = createPublicClient({ chain: sei, transport: http() });
const walletClient = createWalletClient({ account, chain: sei, transport: http() });

const hash = await walletClient.deployContract({
abi: CONTRACT_ABI,
bytecode: '0x608060...',
args: [/* constructor args */],
});

const { contractAddress } = await publicClient.waitForTransactionReceipt({ hash });
console.log('Deployed at:', contractAddress);
```

```ts ethers
import { ethers } from 'ethers';

const provider = new ethers.JsonRpcProvider('https://evm-rpc.sei-apis.com');
const wallet = new ethers.Wallet('0xYourPrivateKey', provider);

const factory = new ethers.ContractFactory(CONTRACT_ABI, '0x608060...', wallet);
const contract = await factory.deploy(/* constructor args */);

await contract.waitForDeployment();
console.log('Deployed at:', await contract.getAddress());
```

</CodeGroup>

## Deploying with Foundry

Foundry works against Sei with the standard `--rpc-url` flag.

Check warning on line 53 in evm/evm-parity/examples/deploy-verify.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/examples/deploy-verify.mdx#L53

Did you really mean 'Sei'?

```bash
forge create src/MyContract.sol:MyContract \
--rpc-url https://evm-rpc.sei-apis.com \
--private-key $PRIVATE_KEY \
--constructor-args arg1 arg2
```

For testnet:

Check warning on line 62 in evm/evm-parity/examples/deploy-verify.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/examples/deploy-verify.mdx#L62

Did you really mean 'testnet'?

```bash
forge create src/MyContract.sol:MyContract \
--rpc-url https://evm-rpc-testnet.sei-apis.com \
--private-key $PRIVATE_KEY
```

## Deploying with Hardhat

Add Sei networks to your `hardhat.config.ts`:

Check warning on line 72 in evm/evm-parity/examples/deploy-verify.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/examples/deploy-verify.mdx#L72

Did you really mean 'Sei'?

```ts
import { HardhatUserConfig } from 'hardhat/config';

const config: HardhatUserConfig = {
networks: {
sei: {
url: 'https://evm-rpc.sei-apis.com',
chainId: 1329,
accounts: [process.env.PRIVATE_KEY!],
},
seiTestnet: {
url: 'https://evm-rpc-testnet.sei-apis.com',
chainId: 1328,
accounts: [process.env.PRIVATE_KEY!],
},
},
};

export default config;
```

Then deploy:

```bash
npx hardhat run scripts/deploy.ts --network sei
```

## Verifying Contracts

Sei's block explorer is [Seiscan](https://seiscan.io). The recommended verification method is [Sourcify](https://sourcify.dev/) — no API key required.

Check warning on line 103 in evm/evm-parity/examples/deploy-verify.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/examples/deploy-verify.mdx#L103

Did you really mean 'Sei's'?

### Foundry

Verify after deployment:

```bash
forge verify-contract \
--verifier sourcify \
--chain-id 1329 \
0xDeployedContractAddress \
src/MyContract.sol:MyContract
```

Or deploy and verify in one step:

```bash
forge create src/MyContract.sol:MyContract \
--rpc-url https://evm-rpc.sei-apis.com \
--private-key $PRIVATE_KEY \
--verify \
--verifier sourcify \
--chain-id 1329
```

For testnet, use `--chain-id 1328` and `--rpc-url https://evm-rpc-testnet.sei-apis.com`.

Check warning on line 128 in evm/evm-parity/examples/deploy-verify.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/examples/deploy-verify.mdx#L128

Did you really mean 'testnet'?

### Hardhat

Install the verify plugin:

```bash
npm install --save-dev @nomicfoundation/hardhat-verify
```

Add it to `hardhat.config.ts` — no additional Sourcify config block is needed:

Check warning on line 138 in evm/evm-parity/examples/deploy-verify.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/examples/deploy-verify.mdx#L138

Did you really mean 'Sourcify'?

```ts
import '@nomicfoundation/hardhat-verify';

const config: HardhatUserConfig = {
networks: {
sei: {
url: 'https://evm-rpc.sei-apis.com',
chainId: 1329,
accounts: [process.env.PRIVATE_KEY!],
},
seiTestnet: {
url: 'https://evm-rpc-testnet.sei-apis.com',
chainId: 1328,
accounts: [process.env.PRIVATE_KEY!],
},
},
};
```

Verify a deployed contract:

```bash
npx hardhat verify sourcify --network sei 0xDeployedContractAddress
```

If your contract has constructor arguments:

```bash
npx hardhat verify sourcify --network sei 0xDeployedContractAddress "arg1" "arg2"
```

## Network Reference

| Network | Chain ID | RPC | Explorer |
| --- | --- | --- | --- |
| Mainnet | 1329 | `https://evm-rpc.sei-apis.com` | [seiscan.io](https://seiscan.io) |

Check warning on line 175 in evm/evm-parity/examples/deploy-verify.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/examples/deploy-verify.mdx#L175

Did you really mean 'Mainnet'?
| Testnet | 1328 | `https://evm-rpc-testnet.sei-apis.com` | [testnet.seiscan.io](https://testnet.seiscan.io) |

Check warning on line 176 in evm/evm-parity/examples/deploy-verify.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/examples/deploy-verify.mdx#L176

Did you really mean 'Testnet'?
| Devnet | 713715 | `https://evm-rpc-arctic-1.sei-apis.com` | — |

Check warning on line 177 in evm/evm-parity/examples/deploy-verify.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/examples/deploy-verify.mdx#L177

Did you really mean 'Devnet'?
Loading
Loading