|
1 | 1 | --- |
2 | 2 | title: 'Parity Matrix' |
3 | | -description: 'Baseline EVM feature coverage matrix for sei-js against viem, wagmi, and ethers' |
| 3 | +description: 'EVM feature support matrix for Sei across viem, wagmi, and ethers' |
4 | 4 | icon: 'table' |
5 | 5 | --- |
6 | 6 |
|
7 | 7 | # Parity Matrix |
8 | 8 |
|
9 | | -This matrix tracks EVM developer workflows rather than package export counts. A workflow is complete when a developer can find the intended Sei path, run it through standard tooling, and understand any network-specific behavior. |
| 9 | +This matrix summarizes EVM workflow support on Sei across the JavaScript libraries developers already use: viem, wagmi, and ethers. Standard EVM workflows should work through standard tooling, while Sei-specific workflows are exposed through `@sei-js` packages where they add value. |
10 | 10 |
|
11 | 11 | ## Status Legend |
12 | 12 |
|
13 | 13 | | Status | Meaning | |
14 | 14 | | --- | --- | |
15 | | -| Verified | Covered by docs or code and ready for conformance tests. | |
16 | | -| Covered | Supported through standard tooling or existing `sei-js` helpers, but not yet backed by a dedicated parity test. | |
17 | | -| Partial | A path exists, but examples, helpers, typing, or tests are incomplete. | |
18 | | -| Planned | Needed for the >=95% target and not yet represented clearly. | |
19 | | -| Not core | Useful in some ecosystems, but excluded from the core parity score. | |
20 | | -| Network-limited | The SDK can expose the behavior, but the chain intentionally differs from Ethereum. | |
21 | | - |
22 | | -## Core Feature Matrix |
23 | | - |
24 | | -| Capability | viem | wagmi | ethers | Current `sei-js` status | Evidence | Next gap | |
25 | | -| --- | --- | --- | --- | --- | --- | --- | |
26 | | -| Chain metadata and HTTP transport | Public client + chains | `createConfig` transports | JSON-RPC provider | Covered | `viem/chains` is used in `mcp-server` and templates; `@sei-js/precompiles` exports `seiLocal` | Centralize mainnet, testnet, devnet, and local chain exports from one `sei-js` surface. | |
27 | | -| WebSocket subscriptions and watchers | WebSocket transport + watch actions | watch hooks | provider event APIs | Partial | Registry includes `evm_ws` endpoint shape | Add subscription examples and conformance checks for block, log, and pending transaction watchers. | |
28 | | -| Wallet discovery | Custom EIP-1193 transport | connectors | `BrowserProvider` | Covered | `@sei-js/sei-global-wallet/eip6963` registers discovery | Add browser-level compatibility checks with common connector libraries. | |
29 | | -| Connect and disconnect | Wallet client actions | `useConnect`, `useDisconnect` | provider request flow | Covered | Sei Global Wallet docs cover RainbowKit, ConnectKit, Web3-React, and wagmi + Dynamic | Add a single comparison page that maps connector behavior across libraries. | |
30 | | -| Switch and add chain | `switchChain`, `addChain` | `useSwitchChain` | EIP-1193 requests | Partial | Existing docs use wagmi chain config | Add explicit Sei mainnet, testnet, devnet payload examples and error handling notes. | |
31 | | -| Native SEI balance | `getBalance` | `useBalance` | `provider.getBalance` | Covered | `mcp-server` exposes `getBalance`; templates use wagmi public client | Add matrix-linked examples for all three libraries. | |
32 | | -| Blocks | `getBlock`, `getBlockNumber` | `useBlock`, `useBlockNumber` | provider block APIs | Covered | `mcp-server` exposes block helpers | Add tests that assert Sei finality tag behavior. | |
33 | | -| Transactions and receipts | transaction actions | transaction hooks | provider transaction APIs | Covered | `mcp-server` exposes transaction helpers | Add library-level smoke tests for submitted and historical transactions. | |
34 | | -| Logs and events | `getLogs`, `watchEvent` | event hooks | filters and listeners | Partial | `mcp-server` exposes `getLogs` | Add examples for ERC events and precompile event reads. | |
35 | | -| Contract reads | `readContract` | `useReadContract` | contract view calls | Covered | `@sei-js/precompiles` exports viem ABIs and ethers factories | Add parity tests for one ERC and one precompile read. | |
36 | | -| Contract writes | `writeContract` | `useWriteContract` | signer contract calls | Covered | `mcp-server` exposes write helpers; precompile docs show viem simulation patterns | Add complete write examples for viem, wagmi, and ethers. | |
37 | | -| Contract deploy | `deployContract` | `useDeployContract` | `ContractFactory` | Partial | `mcp-server` exposes `deployContract` | Add template and docs coverage for deploy + receipt + verification next steps. | |
38 | | -| Simulation and gas estimate | `simulateContract`, `estimateGas` | `useSimulateContract`, `useEstimateGas` | `estimateGas`, static calls | Partial | Precompile docs show `simulateContract`; `mcp-server` exposes `estimateGas` | Add examples for reverted calls, gas buffers, and Sei gas-limit guidance. | |
39 | | -| Message signing | `signMessage` | `useSignMessage` | signer message APIs | Planned | Standard library support exists | Add examples and wallet compatibility checks. | |
40 | | -| Typed-data signing | `signTypedData` | `useSignTypedData` | signer typed-data APIs | Planned | Standard library support exists | Add EIP-712 examples and conformance fixtures. | |
41 | | -| Transaction signing | `signTransaction` | `useSignTransaction` | signer transaction APIs | Planned | Standard library support exists | Add coverage for supported transaction types and legacy gas guidance. | |
42 | | -| ERC-20 reads and transfers | ERC ABI + actions | read/write hooks | contract calls | Partial | `mcp-server` includes ERC-20 balance, transfer, and approve helpers | Add reusable examples and tests against a fixture contract. | |
43 | | -| ERC-721 reads and transfers | ERC ABI + actions | read/write hooks | contract calls | Partial | `mcp-server` includes ERC-721 balance, ownership, and transfer helpers | Add metadata and event examples. | |
44 | | -| ERC-1155 reads and transfers | ERC ABI + actions | read/write hooks | contract calls | Partial | `mcp-server` includes ERC-1155 balance and transfer helpers | Add batch transfer and event examples. | |
45 | | -| Sei precompiles | Contract actions | contract hooks | contract factories | Covered | `@sei-js/precompiles` exports viem ABIs and ethers v6 factories | Add generated docs coverage table for every precompile ABI and method. | |
46 | | -| Pointer and address helper flows | Custom RPC + precompiles | custom hook wrapper | provider send + contracts | Partial | Precompile docs cover pointer and address workflows | Add high-level helpers only where they reduce repeated integration code. | |
47 | | -| `eth_getProof` | Public action/custom request | `useProof` | provider send | Network-limited | Sei returns IAVL proof data rather than Ethereum MPT proof data | Add warning in matrix and conformance tests that assert documented shape. | |
48 | | -| Blob transactions | Blob transaction actions | fee/blob hooks | transaction request fields | Network-limited | Sei runs Pectra without blob transactions | Exclude from core score and document unsupported status. | |
49 | | -| ENS | ENS actions | ENS hooks | name resolver | Not core | Sei does not provide Ethereum mainnet ENS behavior | Keep outside score; link to app-specific name service guidance if needed. | |
50 | | - |
51 | | -## Scoring Rule |
52 | | - |
53 | | -The public coverage score will start once conformance tests land. Only core rows count toward the >=95% target. `Not core` and `Network-limited` rows remain visible so developers understand the boundary, but they do not lower the SDK score when the behavior is intentional and documented. |
| 15 | +| Supported | Supported through standard EVM tooling on Sei. | |
| 16 | +| Supported via `@sei-js` | Supported by a Sei-specific `@sei-js` package layered on standard EVM tooling. | |
| 17 | +| Wallet-dependent | Supported when the connected wallet or account exposes the capability. | |
| 18 | +| Documented difference | Available, but Sei intentionally differs from Ethereum behavior. | |
| 19 | +| Not applicable | Not part of Sei's EVM support surface. | |
| 20 | + |
| 21 | +## Feature Support |
| 22 | + |
| 23 | +| Workflow | viem | wagmi | ethers | Sei support | |
| 24 | +| --- | --- | --- | --- | --- | |
| 25 | +| Chain metadata and HTTP transport | Supported | Supported | Supported | Supported | |
| 26 | +| WebSocket subscriptions and watchers | Supported | Supported | Supported | Supported | |
| 27 | +| Wallet discovery | Supported | Supported | Supported | Supported via `@sei-js` | |
| 28 | +| Connect and disconnect | Supported | Supported | Supported | Supported | |
| 29 | +| Switch and add chain | Supported | Supported | Supported | Supported | |
| 30 | +| Native SEI balance | Supported | Supported | Supported | Supported | |
| 31 | +| Blocks | Supported | Supported | Supported | Supported | |
| 32 | +| Transactions and receipts | Supported | Supported | Supported | Supported | |
| 33 | +| Logs and events | Supported | Supported | Supported | Supported | |
| 34 | +| Contract reads | Supported | Supported | Supported | Supported | |
| 35 | +| Contract writes | Supported | Supported | Supported | Supported | |
| 36 | +| Contract deploy | Supported | Supported | Supported | Supported | |
| 37 | +| Simulation and gas estimate | Supported | Supported | Supported | Supported | |
| 38 | +| Message signing | Wallet-dependent | Wallet-dependent | Wallet-dependent | Wallet-dependent | |
| 39 | +| Typed-data signing | Wallet-dependent | Wallet-dependent | Wallet-dependent | Wallet-dependent | |
| 40 | +| Transaction signing | Wallet-dependent | Wallet-dependent | Wallet-dependent | Wallet-dependent | |
| 41 | +| ERC-20 reads and transfers | Supported | Supported | Supported | Supported | |
| 42 | +| ERC-721 reads and transfers | Supported | Supported | Supported | Supported | |
| 43 | +| ERC-1155 reads and transfers | Supported | Supported | Supported | Supported | |
| 44 | +| Sei precompiles | Supported via `@sei-js` | Supported via `@sei-js` | Supported via `@sei-js` | Supported via `@sei-js` | |
| 45 | +| Pointer and address helper flows | Supported via `@sei-js` | Supported via `@sei-js` | Supported via `@sei-js` | Supported via `@sei-js` | |
| 46 | +| `eth_getProof` | Documented difference | Documented difference | Documented difference | Documented difference | |
| 47 | +| Blob transactions | Not applicable | Not applicable | Not applicable | Not applicable | |
| 48 | +| ENS | Not applicable | Not applicable | Not applicable | Not applicable | |
| 49 | + |
| 50 | +## Compatibility Notes |
| 51 | + |
| 52 | +- Sei supports standard EVM JSON-RPC workflows used by viem, wagmi, and ethers. |
| 53 | +- Sei-specific precompile, pointer, and address-association workflows are exposed through `@sei-js/precompiles`. |
| 54 | +- Wallet signing support depends on the connected wallet or account, as it does on other EVM networks. |
| 55 | +- `eth_getProof` is available with Sei's documented proof format, which differs from Ethereum's Merkle Patricia Trie proof format. |
| 56 | +- Blob transactions and ENS are not part of Sei's EVM support surface. |
0 commit comments