-
Notifications
You must be signed in to change notification settings - Fork 6
docs: remove IBC banners from homepage and drop dead Developer Hub link #54
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -39,8 +39,6 @@ | |
|
|
||
| [Proposal 115](https://seistream.app/proposals/115) further disables CosmWasm code uploads and contract instantiations chain-wide — no new CosmWasm contracts can be deployed. Only `execute` and `query` against pre-existing CosmWasm contracts remain available. | ||
|
|
||
| **IBC is now disabled in both directions.** [Proposal 116](https://seistream.app/proposals/116) and [Proposal 120](https://seistream.app/proposals/120) set the `ibc` module's `InboundEnabled` parameter to `false`, and [Proposal 121](https://seistream.app/proposals/121) set `OutboundEnabled` to `false` on July 31, 2026. No asset can be bridged into or out of Sei over IBC, and IBC assets already on Sei can no longer be redeemed on their origin chain. See the [SIP-03 Migration Guide](/learn/sip-03-migration) for the full explanation and the list of affected assets. | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [blocker] This removal isn't mentioned in the PR description — in fact the description asserts this page still carries the IBC notice. This is the only place in the entire The surrounding
If the intent really is to drop it, that should be called out in the description so the approving reviewer is signing off on it. |
||
|
|
||
| </Danger> | ||
|
|
||
| - **Sei is a dual-execution environment (EVM and Cosmos-SDK).** This means: | ||
|
|
@@ -50,7 +48,7 @@ | |
| - User accounts on Sei have [two addresses](/learn/accounts) derived from the same public key (Cosmos Bech32 and EVM-compatible 0x…) | ||
| - Interoperability between EVM and Cosmos-SDK modules is governed and navigated via [precompiles](/evm/precompiles/example-usage) and [pointer contracts](/learn/pointers) | ||
|
|
||
| ## Sei EVM Release | ||
|
|
||
| Sei EVM was originally deployed at the following block heights and versions: | ||
|
|
||
|
|
@@ -66,7 +64,7 @@ | |
| - **Height:** `79123881` | ||
| - **Changelog:** https://github.com/sei-protocol/sei-chain/blob/main/CHANGELOG.md#v552 | ||
|
|
||
| ## Opcode Differences | ||
|
|
||
| | Opcode | Sei EVM | Ethereum | Notes | | ||
| | --- | --- | --- | --- | | ||
|
|
@@ -80,7 +78,7 @@ | |
| | Blob‑related opcodes | Not supported (Pectra without blobs) | Supported post‑Cancun (EIP‑4844) | Blob transactions are not enabled on Sei. | | ||
|
|
||
|
|
||
| ### PREVRANDAO | ||
|
|
||
| Since Sei doesn't rely on the same pseudo‑randomness way of determining the next | ||
| validator like Proof of Stake (PoS) Ethereum does, it doesn't have the | ||
|
|
@@ -94,19 +92,19 @@ | |
| Coinbase address on Sei is always set to (the EVM address of) the global fee | ||
| collector. | ||
|
|
||
| ## State Root | ||
|
|
||
| Since Sei uses AVL-tree instead of Merkle Patricia Trie (MPT) for data storage, | ||
| Sei doesn't have per-account state root. The global state root is the AVL-tree | ||
| root which is also not equivalent to Ethereum's overall state root (which is a | ||
| MPT root) | ||
|
|
||
| ## Block Hash | ||
|
|
||
| The block hash on Sei is computed based on the block header in Tendermint data | ||
| format, and is different from Ethereum's block Hash as a result. | ||
|
|
||
| ## Base Fee & Tips | ||
|
|
||
| Sei supports all non‑blob transaction types, including the Pectra `SetCode` transaction (EIP‑7702). However for a legacy (non EIP‑1559) type | ||
| transaction, you must specify a gas price at or above Sei's governance-set minimum gas price (currently `50 gwei` on mainnet). Query the live value with `eth_gasPrice` rather than hard-coding it. In addition to this, excess | ||
|
|
@@ -131,7 +129,7 @@ | |
| value: '"0.007500000000000000"' | ||
| ``` | ||
|
|
||
| ## Non-EVM Transactions | ||
|
|
||
| On Sei there exists non-EVM transactions which may update states accessible by | ||
| EVM transactions. The simplest example would be bank balances, which may be | ||
|
|
@@ -145,7 +143,7 @@ | |
| committed (~400 ms) — meaning that commitment levels of "safe", "latest", | ||
| "justified", and "finalized" on Ethereum are all the same thing on Sei. | ||
|
|
||
| ## Pending State | ||
|
|
||
| On Ethereum the block proposer would execute its proposed block first (and | ||
| update its local state) before broadcasting the proposal to others (the updated | ||
|
|
@@ -156,7 +154,7 @@ | |
| the same time), so Sei does not have a window when "pending state" | ||
| exists. | ||
|
|
||
| ## Gas Model & Fees | ||
|
|
||
| Sei does not implement base‑fee burning. There is no base‑fee burn; all transaction fees accrue to validators. Fees are calculated as: | ||
|
|
||
|
|
@@ -178,7 +176,7 @@ | |
|
|
||
| </Info> | ||
|
|
||
| ## SSTORE Gas Cost | ||
|
|
||
| On Sei, the `SSTORE` opcode gas cost is configurable as an on-chain parameter, meaning it can be adjusted via governance proposal without requiring a chain upgrade. This provides flexibility to tune storage costs based on EVM state size and network conditions. | ||
|
|
||
|
|
@@ -192,7 +190,7 @@ | |
|
|
||
| <Info>Since `SSTORE` is a governance-controlled parameter, this value may change in the future through a governance proposal.</Info> | ||
|
|
||
| ## ERC Token Standards Compatibility | ||
|
|
||
| Sei’s EVM fully supports the common token standards: | ||
|
|
||
|
|
@@ -202,7 +200,7 @@ | |
|
|
||
| Existing OpenZeppelin contracts and tools work unchanged. | ||
|
|
||
| ## Testing & Migration Checklist | ||
|
|
||
| - ✅ Re‑deploy your Solidity code to Sei testnet; most contracts need no changes. | ||
| - ✅ If you used SELFDESTRUCT, refactor to a soft‑close pattern. | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -4,13 +4,13 @@ | |
| description: 'EVM feature support on Sei — what works, what differs from Ethereum, and what is not available' | ||
| --- | ||
|
|
||
| # 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. | ||
|
|
||
| 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. | ||
|
|
||
| ## Status Legend | ||
|
|
||
| | Status | Meaning | | ||
| | --- | --- | | ||
|
|
@@ -29,7 +29,7 @@ | |
| | EIP-4844 blob transactions (type 3) | Not supported | Sei runs Pectra without blob transactions. [See Transaction Types.](/evm/evm-parity/transaction-types) | | ||
| | EIP-7702 set-code transactions (type 4) | Supported | | | ||
|
|
||
| ## Account and State | ||
|
|
||
| | Feature | Sei status | Notes | | ||
| | --- | --- | --- | | ||
|
|
@@ -39,7 +39,7 @@ | |
| | `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) | | ||
|
|
||
| ## Blocks and Finality | ||
|
|
||
| | Feature | Sei status | Notes | | ||
| | --- | --- | --- | | ||
|
|
@@ -48,7 +48,7 @@ | |
| | 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) | | ||
| | 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 | | ||
| | --- | --- | --- | | ||
|
|
@@ -56,7 +56,7 @@ | |
| | 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 | | ||
| | --- | --- | --- | | ||
|
|
@@ -74,7 +74,7 @@ | |
| | 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 | | ||
| | --- | --- | --- | | ||
|
|
@@ -82,19 +82,19 @@ | |
| | ERC-721 | Supported | | | ||
| | ERC-1155 | Supported | | | ||
|
|
||
| ## Account Abstraction | ||
|
|
||
| | Feature | Sei status | Notes | | ||
| | --- | --- | --- | | ||
| | ERC-4337 | Supported | Requires a compatible bundler. Sei EVM is ERC-4337 compatible. | | ||
|
|
||
| ## Name Services | ||
|
|
||
| | Feature | Sei status | Notes | | ||
| | --- | --- | --- | | ||
| | ENS | Not supported | Sei does not run Ethereum mainnet ENS. Application-level name services can be deployed as contracts. | | ||
|
|
||
| ## Sei Extensions | ||
|
|
||
| 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. | ||
|
|
||
|
|
@@ -103,9 +103,8 @@ | |
| | 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. | | ||
| | 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. | | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [blocker] Unrelated deletion — nothing in the PR title or description covers removing TokenFactory from the Sei Extensions table, and it has no connection to IBC banners or the Developer Hub link. After this change, TokenFactory is not documented anywhere in the MDX tree: Either restore the row, or — if TokenFactory is genuinely being deprecated — do that in a dedicated PR with a replacement note on |
||
|
|
||
| ## Unsupported RPC Methods | ||
|
|
||
| The following JSON-RPC methods are either not available on Sei or will return errors: | ||
|
|
||
|
|
@@ -116,7 +115,7 @@ | |
| | `eth_blobBaseFee` | Sei runs Pectra without blob transaction support. This method does not exist on Sei. | | ||
| | `engine_getBlobsV1` | Blob data availability endpoints are not supported. | | ||
|
|
||
| ### Pending State | ||
|
|
||
| | Method | Behavior on Sei | | ||
| | --- | --- | | ||
|
|
@@ -125,13 +124,13 @@ | |
| | `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. | | ||
|
|
||
| ### Proof Verification | ||
|
|
||
| | Method | Behavior on 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) | | ||
|
|
||
| ### Deprecated / Removed Opcodes | ||
|
|
||
| | Method | Reason | | ||
| | --- | --- | | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -10,23 +10,23 @@ | |
|
|
||
| <Info> **What is a precompile?** A precompile is a special smart contract deployed at a fixed address by the Sei protocol itself, that exposes custom native chain logic to EVM-based applications. It acts like a regular contract from the EVM's perspective, but executes privileged, low-level logic efficiently. </Info> | ||
|
|
||
| ## How Does the Bank Precompile Work? | ||
|
|
||
| The bank precompile at address `0x0000000000000000000000000000000000001001` exposes functions like `send()`, `sendNative()`, `balance()`, `all_balances()`, and token metadata queries. | ||
|
|
||
| - **Direct Integration:** EVM contracts and dApps can call banking functions like any other smart contract method. | ||
| - **Native Execution:** Operations are executed at the Cosmos SDK level for maximum efficiency and security. | ||
| - **Any native denom:** Manage native SEI, factory tokens, and existing IBC denoms from EVM contracts. IBC is disabled on Sei (see [SIP-03](/learn/sip-03-migration#ibc-is-disabled)), so no new IBC denoms can arrive, but balances already held remain readable and transferable. | ||
| - **Any native denom:** Manage native SEI and other bank module denominations from EVM contracts. | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [suggestion] This rewrite drops more than the IBC caveat — the previous line named "factory tokens" as a supported denom class, and the Suggest keeping the concrete list and only dropping the IBC-status sentence if that's the goal: |
||
|
|
||
| **When to use `send` vs `sendNative`:** `send` moves an arbitrary `denom` (any IBC or factory token) between two EVM addresses (`0x...`) by reading the balance directly from the bank module — no `msg.value` is attached. It is gated to the registered ERC20 native pointer for that denom, so it is typically invoked from the auto-deployed pointer contract rather than from arbitrary user code. `sendNative` is for sending native SEI (the attached `msg.value`) from the EVM caller to a Cosmos bech32 (`sei1...`) destination, which is useful for crossing the EVM→Cosmos boundary when the recipient has no associated EVM address (for example, paying a Cosmos-only contract or account). | ||
| **When to use `send` vs `sendNative`:** `send` moves an arbitrary `denom` between two EVM addresses (`0x...`) by reading the balance directly from the bank module — no `msg.value` is attached. It is gated to the registered ERC20 native pointer for that denom, so it is typically invoked from the auto-deployed pointer contract rather than from arbitrary user code. `sendNative` is for sending native SEI (the attached `msg.value`) from the EVM caller to a Cosmos bech32 (`sei1...`) destination, which is useful for crossing the EVM→Cosmos boundary when the recipient has no associated EVM address (for example, paying a Cosmos-only contract or account). | ||
|
|
||
| ## Use Cases | ||
|
|
||
| - **DeFi Applications:** Build decentralized finance protocols that can handle native SEI and Cosmos assets. | ||
| - **Portfolio Management:** Build tools to track and manage multi-asset portfolios across Cosmos and EVM. | ||
| - **Token Information Services:** Query comprehensive token metadata for UI display and analytics. | ||
|
|
||
| ## What You'll Learn in This Guide | ||
|
|
||
| By the end of this guide, you'll be able to: | ||
|
|
||
|
|
@@ -38,7 +38,7 @@ | |
|
|
||
| The bank precompile exposes the following functions: | ||
|
|
||
| ### Transaction Functions | ||
|
|
||
| ```solidity | ||
| /// Sends non-native tokens from one address to another. Callable only by the | ||
|
|
@@ -64,7 +64,7 @@ | |
| ) payable external returns (bool success); | ||
| ``` | ||
|
|
||
| ### Query Functions | ||
|
|
||
| ```solidity | ||
| /// Queries the balance of the given account for the specified denom. | ||
|
|
@@ -112,7 +112,7 @@ | |
| ) external view returns (uint256 response); | ||
| ``` | ||
|
|
||
| ## Using the Precompile | ||
|
|
||
| ### Setup | ||
|
|
||
|
|
@@ -126,7 +126,7 @@ | |
| - **SEI tokens** for gas and testing transfers | ||
| - **Hardhat** for development and testing | ||
|
|
||
| #### Install Dependencies | ||
|
|
||
| Install the required packages for interacting with Sei precompiles: | ||
|
|
||
|
|
@@ -141,7 +141,7 @@ | |
| npm install @sei-js/precompiles@2.1.2 | ||
| ``` | ||
|
|
||
| #### Setup Hardhat Environment | ||
|
|
||
| Create a `hardhat.config.ts` file with the following content: | ||
|
|
||
|
|
@@ -169,7 +169,7 @@ | |
| npx hardhat keystore set PRIVATE_KEY | ||
| ``` | ||
|
|
||
| #### Import Precompile Components | ||
|
|
||
| <Tabs> | ||
| <Tab title="JavaScript"> | ||
|
|
@@ -263,7 +263,7 @@ | |
| </Tab> | ||
| </Tabs> | ||
|
|
||
| ### Native SEI vs Custom Tokens | ||
|
|
||
| **Native SEI Transfers:** | ||
|
|
||
|
|
@@ -277,9 +277,9 @@ | |
| - Requires prior token approval or ownership | ||
| - Support various decimal configurations | ||
|
|
||
| ## Step-by-Step Guide: Using the Bank Precompile | ||
|
Check warning on line 280 in evm/precompiles/cosmwasm-precompiles/bank.mdx
|
||
|
|
||
| ### Send Native SEI Tokens | ||
|
|
||
| <Tabs> | ||
| <Tab title="JavaScript"> | ||
|
|
@@ -330,7 +330,7 @@ | |
| </Tab> | ||
| </Tabs> | ||
|
|
||
| ### Send Custom Tokens | ||
|
|
||
| <Tabs> | ||
| <Tab title="JavaScript"> | ||
|
|
@@ -407,7 +407,7 @@ | |
| </Tab> | ||
| </Tabs> | ||
|
|
||
| ### Query Account Balance | ||
|
|
||
| <Tabs> | ||
| <Tab title="JavaScript"> | ||
|
|
@@ -464,7 +464,7 @@ | |
| </Tab> | ||
| </Tabs> | ||
|
|
||
| ### Query All Balances | ||
|
|
||
| <Tabs> | ||
| <Tab title="JavaScript"> | ||
|
|
@@ -539,7 +539,7 @@ | |
| </Tab> | ||
| </Tabs> | ||
|
|
||
| ### Query Token Metadata | ||
|
|
||
| <Tabs> | ||
| <Tab title="JavaScript"> | ||
|
|
@@ -622,7 +622,7 @@ | |
| </Tab> | ||
| </Tabs> | ||
|
|
||
| ### Complete Integration Example | ||
|
|
||
| <Tabs> | ||
| <Tab title="JavaScript"> | ||
|
|
@@ -1103,15 +1103,15 @@ | |
| </Tab> | ||
| </Tabs> | ||
|
|
||
| ## Security Considerations & Risks | ||
|
|
||
| ### Transaction Security | ||
|
|
||
| - **Amount Validation:** Always validate transfer amounts and ensure sufficient balances | ||
| - **Address Verification:** Verify recipient addresses are valid before sending tokens | ||
| - **Reentrancy Protection:** Be aware of potential reentrancy when combining with other contracts | ||
|
|
||
| ### Permission Management | ||
|
|
||
| ```solidity | ||
| // Example of secure permission patterns | ||
|
|
@@ -1129,9 +1129,9 @@ | |
|
|
||
| ## Troubleshooting | ||
|
|
||
| ### Common Issues and Solutions | ||
|
|
||
| #### Transaction Failures | ||
|
|
||
| ```typescript | ||
| // Handle common transfer errors | ||
|
|
@@ -1149,7 +1149,7 @@ | |
| } | ||
| ``` | ||
|
|
||
| #### Balance Query Issues | ||
|
|
||
| ```typescript | ||
| // Safe balance checking with error handling | ||
|
|
@@ -1166,7 +1166,7 @@ | |
| } | ||
| ``` | ||
|
|
||
| ### Error Code Reference | ||
|
|
||
| | Error | Cause | Solution | | ||
| | --- | --- | --- | | ||
|
|
@@ -1177,7 +1177,7 @@ | |
| | `metadata not found` | Token metadata not available | Handle missing metadata gracefully | | ||
|
|
||
|
|
||
| ## Important Notes | ||
|
|
||
| <Info> | ||
|
|
||
|
|
@@ -1189,13 +1189,13 @@ | |
|
|
||
| </Info> | ||
|
|
||
| ### Gas Optimization | ||
|
|
||
| - **Batch Operations:** Use batch functions for multiple operations to save gas | ||
| - **Query Efficiency:** Cache frequently accessed token metadata | ||
| - **Error Handling:** Implement proper error handling to avoid failed transaction costs | ||
|
|
||
| ### Integration Best Practices | ||
|
|
||
| - **Balance Checks:** Always verify sufficient balance before transfers | ||
| - **Error Recovery:** Implement retry logic for failed transactions | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -7,12 +7,10 @@ | |
| **Address:** `0x0000000000000000000000000000000000001002` | ||
|
|
||
| <Danger> | ||
| **Deprecation Notice — Prop 115 & Prop 116** | ||
| **Deprecation Notice — Prop 115** | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [suggestion] The heading change to "Prop 115" is internally consistent now that the Prop 116 sentence is gone, so no issue there. The concern is the deletion itself: this page's own frontmatter keywords are |
||
|
|
||
| Per [governance Proposal 115](https://seistream.app/proposals/115), CosmWasm code uploads (`MsgStoreCode`) and contract instantiations (`MsgInstantiateContract`) are disabled chain-wide. The `instantiate()` function on this precompile **will revert** for all callers. Only `execute()`, `execute_batch()`, and `query()` against pre-existing CosmWasm contracts remain functional, and all CosmWasm functionality is deprecated in favor of EVM-only per [SIP-3](https://github.com/sei-protocol/sips/blob/main/sips/sip-3.md). | ||
|
|
||
| In addition, IBC is disabled in both directions: Proposals [116](https://seistream.app/proposals/116) and [120](https://seistream.app/proposals/120) disabled inbound IBC, and [Proposal 121](https://seistream.app/proposals/121) disabled outbound IBC on July 31, 2026. No asset can be bridged into or out of Sei over IBC. See the [SIP-03 Migration Guide](/learn/sip-03-migration) for the full explanation and the list of affected assets. | ||
|
|
||
| For new smart contract development, use the EVM directly. See [Deploy a Smart Contract](/evm/evm-general). | ||
| </Danger> | ||
|
|
||
|
|
@@ -20,7 +18,7 @@ | |
|
|
||
| <Info> **What is a precompile?** A precompile is a special smart contract deployed at a fixed address by the Sei protocol itself, that exposes custom native chain logic to EVM-based applications. It acts like a regular contract from the EVM's perspective, but executes privileged, low-level logic efficiently. </Info> | ||
|
|
||
| ## How Does the CosmWasm Precompile Work? | ||
|
|
||
| The CosmWasm precompile at address `0x0000000000000000000000000000000000001002` exposes functions like `execute()`, `execute_batch()`, and `query()`. | ||
|
|
||
|
|
@@ -28,7 +26,7 @@ | |
| - **Native Execution:** Operations are executed at the Cosmos SDK level for maximum efficiency and security. | ||
| - **Seamless Bridge:** No need for separate wallet integrations or complex cross-chain interactions. | ||
|
|
||
| ## What You'll Learn in This Guide | ||
|
|
||
| By the end of this guide, you'll be able to: | ||
|
|
||
|
|
@@ -41,7 +39,7 @@ | |
|
|
||
| The CosmWasm precompile exposes the following functions: | ||
|
|
||
| ### Transaction Functions | ||
|
|
||
| <Warning>The `instantiate()` function has been disabled by [Prop 115](https://seistream.app/proposals/115) and will revert. It is omitted from this reference. The ABI in `@sei-js/precompiles` may still expose it for backwards compatibility, but calling it on-chain will fail.</Warning> | ||
|
|
||
|
|
@@ -71,7 +69,7 @@ | |
| ) payable external returns (bytes[] memory responses); | ||
| ``` | ||
|
|
||
| ### Query Functions | ||
|
|
||
| ```solidity | ||
| /// Queries a CosmWasm contract. | ||
|
|
@@ -84,7 +82,7 @@ | |
| ) external view returns (bytes memory response); | ||
| ``` | ||
|
|
||
| ## Using the Precompile | ||
|
|
||
| ### Setup | ||
|
|
||
|
|
@@ -97,7 +95,7 @@ | |
| - **EVM-compatible wallet** | ||
| - **SEI tokens** for gas and contract operations | ||
|
|
||
| #### Install Dependencies | ||
|
|
||
| Install the required packages for interacting with Sei precompiles: | ||
|
|
||
|
|
@@ -109,7 +107,7 @@ | |
| npm install @sei-js/precompiles@2.1.2 | ||
| ``` | ||
|
|
||
| #### Import Precompile Components | ||
|
|
||
| ```typescript | ||
| // Import CosmWasm precompile address and ABI | ||
|
|
@@ -134,11 +132,11 @@ | |
| const cosmwasm = new ethers.Contract(WASM_PRECOMPILE_ADDRESS, WASM_PRECOMPILE_ABI, signer); | ||
| ``` | ||
|
|
||
| ## Critical: Understanding Message Formats | ||
|
Check warning on line 135 in evm/precompiles/cosmwasm-precompiles/cosmwasm.mdx
|
||
|
|
||
| One of the most important concepts to understand when working with the Sei CosmWasm precompile: | ||
|
|
||
| ### CosmWasm Message Structure | ||
|
|
||
| The CosmWasm precompile requires **JSON-encoded messages** that conform to each contract's specific schema: | ||
|
|
||
|
|
@@ -148,7 +146,7 @@ | |
| | `query()` | req parameter (input) | JSON bytes | `ethers.toUtf8Bytes(jsonString)` | | ||
| | **All functions** | response (output) | JSON bytes | `JSON.parse(ethers.toUtf8String(response))` | | ||
|
|
||
| ### How Message Encoding Works | ||
|
|
||
| **All CosmWasm functions require JSON-encoded byte arrays:** | ||
|
|
||
|
|
@@ -160,7 +158,7 @@ | |
| - Use `msg.value` for SEI amounts | ||
| - Use `coins` parameter for other denominations (encoded as JSON bytes) | ||
|
|
||
| ### Best Practice: Message Encoding Helpers | ||
|
Check warning on line 161 in evm/precompiles/cosmwasm-precompiles/cosmwasm.mdx
|
||
|
|
||
| When working with CosmWasm messages, use proper JSON encoding: | ||
|
|
||
|
|
@@ -203,7 +201,7 @@ | |
| }); | ||
| ``` | ||
|
|
||
| ## Message Format Helpers | ||
|
|
||
| Use these helper functions to handle CosmWasm message formatting: | ||
|
|
||
|
|
@@ -251,9 +249,9 @@ | |
| const coins = CosmWasmHelper.createCoins([{ denom: 'uusdc', amount: '1000000' }]); | ||
| ``` | ||
|
|
||
| ## Step-by-Step Guide: Using the CosmWasm Precompile | ||
|
Check warning on line 252 in evm/precompiles/cosmwasm-precompiles/cosmwasm.mdx
|
||
|
|
||
| ### Execute a CosmWasm Contract | ||
|
|
||
| <Tabs> | ||
| <Tab title="JavaScript"> | ||
|
|
@@ -311,7 +309,7 @@ | |
| </Tab> | ||
| </Tabs> | ||
|
|
||
| ### Execute Batch Operations | ||
|
|
||
| <Tabs> | ||
| <Tab title="JavaScript"> | ||
|
|
@@ -382,7 +380,7 @@ | |
| </Tab> | ||
| </Tabs> | ||
|
|
||
| ### Query a CosmWasm Contract | ||
|
|
||
| <Tabs> | ||
| <Tab title="JavaScript"> | ||
|
|
@@ -451,9 +449,9 @@ | |
|
|
||
| <Warning> **Query Limitations:** CosmWasm queries are read-only operations and don't consume gas, but parsing JSON responses in Solidity is complex. Consider handling response parsing off-chain. </Warning> | ||
|
|
||
| ## Advanced Usage Examples | ||
|
|
||
| ### Cross-Runtime DeFi Integration | ||
|
|
||
| ```typescript | ||
| async function crossRuntimeDeFiOperation(cosmwasmDexContract: string, evmTokenContract: string, amount: string) { | ||
|
|
@@ -492,7 +490,7 @@ | |
| } | ||
| ``` | ||
|
|
||
| ### Complete Integration Example | ||
|
|
||
| <Tabs> | ||
| <Tab title="JavaScript"> | ||
|
|
@@ -730,9 +728,9 @@ | |
|
|
||
| ## Troubleshooting | ||
|
|
||
| ### Common Issues and Solutions | ||
|
|
||
| #### Message Encoding Issues | ||
|
|
||
| ```typescript | ||
| // Ensure proper JSON encoding for messages | ||
|
|
@@ -750,7 +748,7 @@ | |
| const incorrectMsg = ethers.toUtf8Bytes('invalid json'); | ||
| ``` | ||
|
|
||
| ### Error Code Reference | ||
|
|
||
| | Error | Cause | Solution | | ||
| | --- | --- | --- | | ||
|
|
@@ -761,23 +759,23 @@ | |
| | `unauthorized` | Insufficient permissions | Check admin/owner permissions | | ||
| | `query parsing failed` | Invalid query message format | Match contract's query schema | | ||
|
|
||
| ## Important Notes | ||
|
|
||
| <Info> Remember the key rule: All CosmWasm messages must be properly JSON-encoded as bytes, and contract schemas vary by implementation! </Info> | ||
|
|
||
| ### Message Format Requirements | ||
|
|
||
| - **JSON Encoding:** All messages must be valid JSON encoded as UTF-8 bytes, invalid JSON will cause transaction failures | ||
| - **Schema Compliance:** Messages must match the contract's expected format | ||
| - **Type Safety:** Use proper data types as expected by the contract | ||
|
|
||
| ### Contract Address Format | ||
|
|
||
| - Use valid Sei contract addresses with `sei1...` prefix | ||
| - These are Cosmos-format addresses, not EVM addresses | ||
| - **Contract Existence:** Verify contracts exist before calling | ||
|
|
||
| ### Cross-Runtime Considerations | ||
|
|
||
| - **State Isolation:** CosmWasm and EVM contracts have separate state | ||
| - **Gas Estimation:** CosmWasm operations may require different gas calculations | ||
|
|
@@ -785,7 +783,7 @@ | |
| - **Native Token Handling:** Use `msg.value` for SEI, `coins` for other denominations | ||
| - **Batch Limitations:** Large batches may hit gas limits | ||
|
|
||
| ### Best Practices | ||
|
|
||
| - Always validate JSON messages before sending | ||
| - Handle response parsing carefully, especially for complex data structures | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -8,17 +8,7 @@ | |
|
|
||
| The first parallelized EVM blockchain delivering unmatched scalability and speed. | ||
|
|
||
| <Danger> | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [blocker] Removing this callout and the Given the content (users holding USDC.n / USDT.kava / ATOM / WBTC can no longer redeem on the origin chain, and Prop 121 passed only a week ago on July 31, 2026), I'd keep this homepage |
||
| **IBC is disabled on Sei in both directions** | ||
|
|
||
| [Proposal #121](https://seistream.app/proposals/121) passed on July 31, 2026 and disabled outbound IBC transfers. Inbound IBC was already disabled by [Proposal #116](https://seistream.app/proposals/116) and [Proposal #120](https://seistream.app/proposals/120). No asset can be bridged into or out of Sei over IBC. | ||
|
|
||
| If you hold [USDC.n](https://seiscan.io/address/0x3894085Ef7Ff0f0aeDf52E2A2704928d1Ec074F1) (USDC via Noble), [USDT.kava](https://seiscan.io/address/0xb75d0b03c06a926e488e2659df1a861f860bd3d1) (Kava USDT), ATOM, WBTC, or any other IBC asset on Sei, it can no longer be redeemed on its origin chain. The balance still exists on Sei and can still be transferred within Sei. | ||
|
|
||
| See the [SIP-03 Migration Guide](/learn/sip-03-migration) for what changed, the full list of affected assets, and what remains possible. | ||
| </Danger> | ||
|
|
||
| ## Quick Start | ||
|
|
||
| <CardGroup cols={3}> | ||
| <Card title="Deploy a Smart Contract" icon="code" horizontal href="/evm/evm-general"> | ||
|
|
@@ -38,7 +28,7 @@ | |
| </Card> | ||
| </CardGroup> | ||
|
|
||
| ## Essential Resources | ||
|
|
||
| <CardGroup cols={3}> | ||
| <Card title="Chain Info" icon="globe" horizontal href="/learn/dev-chains"> | ||
|
|
@@ -127,7 +117,7 @@ | |
| </Card> | ||
| </CardGroup> | ||
|
|
||
| ## Smart Contracts | ||
|
|
||
| <Card title="Deploy & Debug on Sei" icon="code" horizontal href="/evm/evm-general"> | ||
| Write, deploy, and debug Solidity smart contracts with your favorite toolchain. Sei is fully EVM-compatible with 400 ms blocks and parallelized execution. | ||
|
|
@@ -140,7 +130,7 @@ | |
| <Card title="Best Practices" icon="gauge-high" horizontal href="/evm/best-practices/optimizing-for-parallelization" /> | ||
| </CardGroup> | ||
|
|
||
| ## Infrastructure & Tools | ||
|
|
||
| <CardGroup cols={2}> | ||
| <Card title="Run a Node" icon="lock" horizontal href="/node"> | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[suggestion] The PR description says the notice "was rendering twice on
/" — but that only argues for removing one of the two copies. Thisbannerwas site-wide; the<Danger>inindex.mdxwas homepage-only. Removing both means the IBC-disabled warning now appears on no page outside the SIP-03 guide and a handful of deep pages (cosmos-sdk/index.mdx,learn/dev-interoperability.mdx,learn/sip-03-exchange-migration.mdx).Given the content — Prop 121 passed 2026-07-31, roughly a week ago, and IBC-bridged holdings (USDC.n, USDT.kava, ATOM, WBTC) are no longer redeemable on their origin chain — that's a material loss of reach for a funds-affecting notice. Keeping this
bannerand removing only the homepage<Danger>fixes the duplication without the reach regression; the banner is alreadydismissible: true, so returning readers aren't penalized.If dropping the site-wide banner is a deliberate editorial call rather than a side effect of de-duplicating, worth saying so in the description, since the current rationale doesn't cover it.