-
Notifications
You must be signed in to change notification settings - Fork 6
docs: document Prop 121 disabling outbound IBC, remove dead bridge-out routes and IBC remnants #51
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
6bb038d
5bca467
67ef261
c8faf5a
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 |
|---|---|---|
|
|
@@ -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. | ||
| - **Cross-Chain Assets:** Manage both native SEI tokens and IBC assets seamlessly from EVM contracts. | ||
| - **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. | ||
|
|
||
| **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). | ||
|
|
||
| ## 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/[email protected] | ||
| ``` | ||
|
|
||
| #### 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 |
|---|---|---|
|
|
@@ -11,7 +11,7 @@ | |
|
|
||
| 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, [Proposal 116](https://seistream.app/proposals/116) disables inbound IBC transfers — IBC assets bridged from Cosmos chains can no longer arrive on Sei after this passes and is activated. See the [SIP-03 Migration Guide](/learn/sip-03-migration) for affected assets and migration routes. | ||
| 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 +20,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 +28,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 +41,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 +71,7 @@ | |
| ) payable external returns (bytes[] memory responses); | ||
| ``` | ||
|
|
||
| ### Query Functions | ||
|
|
||
| ```solidity | ||
| /// Queries a CosmWasm contract. | ||
|
|
@@ -84,7 +84,7 @@ | |
| ) external view returns (bytes memory response); | ||
| ``` | ||
|
|
||
| ## Using the Precompile | ||
|
|
||
| ### Setup | ||
|
|
||
|
|
@@ -97,7 +97,7 @@ | |
| - **EVM-compatible wallet** | ||
| - **SEI tokens** for gas and contract operations | ||
|
|
||
| #### Install Dependencies | ||
|
|
||
| Install the required packages for interacting with Sei precompiles: | ||
|
|
||
|
|
@@ -109,7 +109,7 @@ | |
| npm install @sei-js/[email protected] | ||
| ``` | ||
|
|
||
| #### Import Precompile Components | ||
|
|
||
| ```typescript | ||
| // Import CosmWasm precompile address and ABI | ||
|
|
@@ -134,11 +134,11 @@ | |
| const cosmwasm = new ethers.Contract(WASM_PRECOMPILE_ADDRESS, WASM_PRECOMPILE_ABI, signer); | ||
| ``` | ||
|
|
||
| ## Critical: Understanding Message Formats | ||
|
Check warning on line 137 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 +148,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 +160,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 163 in evm/precompiles/cosmwasm-precompiles/cosmwasm.mdx
|
||
|
|
||
| When working with CosmWasm messages, use proper JSON encoding: | ||
|
|
||
|
|
@@ -203,7 +203,7 @@ | |
| }); | ||
| ``` | ||
|
|
||
| ## Message Format Helpers | ||
|
|
||
| Use these helper functions to handle CosmWasm message formatting: | ||
|
|
||
|
|
@@ -251,9 +251,9 @@ | |
| const coins = CosmWasmHelper.createCoins([{ denom: 'uusdc', amount: '1000000' }]); | ||
| ``` | ||
|
|
||
| ## Step-by-Step Guide: Using the CosmWasm Precompile | ||
|
Check warning on line 254 in evm/precompiles/cosmwasm-precompiles/cosmwasm.mdx
|
||
|
|
||
| ### Execute a CosmWasm Contract | ||
|
|
||
| <Tabs> | ||
| <Tab title="JavaScript"> | ||
|
|
@@ -311,7 +311,7 @@ | |
| </Tab> | ||
| </Tabs> | ||
|
|
||
| ### Execute Batch Operations | ||
|
|
||
| <Tabs> | ||
| <Tab title="JavaScript"> | ||
|
|
@@ -382,7 +382,7 @@ | |
| </Tab> | ||
| </Tabs> | ||
|
|
||
| ### Query a CosmWasm Contract | ||
|
|
||
| <Tabs> | ||
| <Tab title="JavaScript"> | ||
|
|
@@ -451,9 +451,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 +492,7 @@ | |
| } | ||
| ``` | ||
|
|
||
| ### Complete Integration Example | ||
|
|
||
| <Tabs> | ||
| <Tab title="JavaScript"> | ||
|
|
@@ -730,9 +730,9 @@ | |
|
|
||
| ## Troubleshooting | ||
|
|
||
| ### Common Issues and Solutions | ||
|
|
||
| #### Message Encoding Issues | ||
|
|
||
| ```typescript | ||
| // Ensure proper JSON encoding for messages | ||
|
|
@@ -750,7 +750,7 @@ | |
| const incorrectMsg = ethers.toUtf8Bytes('invalid json'); | ||
| ``` | ||
|
|
||
| ### Error Code Reference | ||
|
|
||
| | Error | Cause | Solution | | ||
| | --- | --- | --- | | ||
|
|
@@ -761,23 +761,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 +785,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 |
|---|---|---|
|
|
@@ -9,16 +9,16 @@ | |
| The first parallelized EVM blockchain delivering unmatched scalability and speed. | ||
|
|
||
| <Danger> | ||
| **Action required: IBC assets on Sei will become inaccessible** | ||
| **IBC is disabled on Sei in both directions** | ||
|
|
||
| If you hold [USDC.n](https://seiscan.io/address/0x3894085Ef7Ff0f0aeDf52E2A2704928d1Ec074F1) (USDC via Noble), [USDT.kava](https://seiscan.io/address/0xb75d0b03c06a926e488e2659df1a861f860bd3d1) (Kava USDT), Wormhole-bridged tokens, or any other IBC asset on Sei, you **must** swap, migrate, or bridge out **before the governance proposal to disable inbound/outbound IBC transfers passes and is activated** to avoid permanent loss of access. After this, Sei will no longer support IBC bridging of assets from Cosmos-based chains to and from Sei Network. | ||
| [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. | ||
|
|
||
| Consult the [SIP-03 Migration Guide](/learn/sip-03-migration) for the full list of affected assets, required actions, and supported routes. | ||
| 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. | ||
|
Contributor
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 rewritten callout drops "Wormhole-bridged tokens" from the affected-asset list that the previous version included, and the Suggest a short clause such as "…or Wormhole-bridged tokens (stranded separately, since Portal Bridge legacy was withdrawn)" so those holders still get routed to the guide. |
||
|
|
||
| For USDC.n specifically, see: [Holders of USDC.n Need to Swap or Migrate](https://blog.sei.io/announcements/holders-of-usdcn-need-to-swap-or-migrate/). | ||
| See the [SIP-03 Migration Guide](/learn/sip-03-migration) for what changed, the full list of affected assets, and what remains possible. | ||
|
Contributor
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. [nit] The Holders of USDC.n Need to Swap or Migrate link was dropped from both this homepage callout and the |
||
| </Danger> | ||
|
|
||
| ## Quick Start | ||
|
|
||
| <CardGroup cols={3}> | ||
| <Card title="Deploy a Smart Contract" icon="code" horizontal href="/evm/evm-general"> | ||
|
|
@@ -38,7 +38,7 @@ | |
| </Card> | ||
| </CardGroup> | ||
|
|
||
| ## Essential Resources | ||
|
|
||
| <CardGroup cols={3}> | ||
| <Card title="Chain Info" icon="globe" horizontal href="/learn/dev-chains"> | ||
|
|
@@ -127,7 +127,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 +140,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"> | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -6,7 +6,13 @@ | |
|
|
||
| This section is for exchanges, custodians, and other service providers that currently support SEI token deposits and withdrawals using native (`sei1...`) addresses. It explains what SIP-03 changes, the options available for migrating customer holdings to EVM (`0x...`) addresses, and the timeline by which migration must be complete. | ||
|
|
||
| <Warning> | ||
| **IBC is already disabled in both directions.** Proposals [#116](https://seistream.app/proposals/116) and [#120](https://seistream.app/proposals/120) disabled inbound IBC, and [#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, so IBC is not available as a route for moving customer funds off Sei, and IBC-bridged assets held on Sei can no longer be redeemed on their origin chain. See [IBC is disabled](/learn/sip-03-migration#ibc-is-disabled). | ||
|
|
||
| The migration options below move funds between the native and EVM sides of Sei. They are intra-chain and are not affected by the IBC parameters. | ||
| </Warning> | ||
|
|
||
| ### What SIP-03 changes | ||
|
|
||
| For exchanges, the practical implication of the SIP-03 migration is that any integration treating "Sei" (native) and "Sei EVM" as two separate chains needs to be reconciled into a single integration before the Cosmos shutdown. Every native address (`sei1...`) on Sei has a corresponding EVM address (`0x...`) on the same chain. This is not two distinct chains or wallets, it is one chain with two ways to interact with it. | ||
|
|
||
|
|
@@ -24,19 +30,19 @@ | |
| - Ensure the native and EVM addresses are associated on-chain (see [Address association](#address-association) below). | ||
| - Update internal accounting and customer-facing UI to present the EVM address as the canonical Sei address. | ||
|
|
||
| #### 2) Automated forwarding contract | ||
|
|
||
| The exchange uses a `FundsForwarder` smart contract to programmatically move customer funds from the native side to the customer's EVM wallet on the exchange. The exchange handles deployment and triggering; the customer sees the funds arrive at the new address without taking any action themselves. | ||
|
|
||
| This is appropriate when the exchange cannot or does not want to expose EVM addresses for existing native wallets directly, but is willing to operate the migration itself. | ||
|
|
||
| #### 3) User-directed forwarding contract | ||
|
|
||
| The exchange notifies customers of the change and directs them to the `FundsForwarder` contract address. Customers initiate the transfer themselves; this action triggers the contract to automatically forward funds to the appropriate EVM wallet on the exchange. | ||
|
|
||
| This is functionally similar to option 2 but pushes the trigger action onto the customer. It is appropriate when the exchange cannot operate the contract directly but wants to provide an automated destination. | ||
|
|
||
| #### 4) Fully manual transfer | ||
|
|
||
| The exchange notifies customers of the change and asks them to manually withdraw funds to a self-custodial wallet and then redeposit them to the EVM address provided by the exchange. | ||
|
|
||
|
|
@@ -50,7 +56,7 @@ | |
|
|
||
| For details on how to query association status and the methods for associating addresses, see [Accounts](/learn/accounts). | ||
|
|
||
| ### FundsForwarder contract | ||
|
|
||
| The `FundsForwarder` is a one-way smart contract that accepts deposits at a native (`sei1...`) address and forwards the full balance to a pre-configured EVM (`0x...`) destination address. It is the underlying mechanism for options 2 and 3 above. | ||
|
|
||
|
|
@@ -62,7 +68,7 @@ | |
|
|
||
| ### Migration milestone | ||
|
|
||
| Address association must be completed prior to deprecation of all Cosmos, CosmWasm and IBC related functionality, slated for **June 15, 2026**. After deprecation: | ||
| IBC has already been disabled, in both directions, by Proposals [#116](https://seistream.app/proposals/116), [#120](https://seistream.app/proposals/120), and [#121](https://seistream.app/proposals/121). Address association must still be completed prior to deprecation of the remaining Cosmos and CosmWasm functionality, slated for **June 15, 2026**. After deprecation: | ||
|
Contributor
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 line was rewritten but still presents June 15, 2026 as a future deadline ("must still be completed prior to") — that date is roughly six weeks in the past. For the exchange/custodian audience this is the most actionable sentence on the page, so a past date phrased as a deadline is worse here than elsewhere. The PR description flags this as a deliberate follow-up because the actual Cosmos/CosmWasm shutdown status is unknown, which is a fair call — guessing a new date would be worse. But since the sentence was already being edited, consider hedging the tense rather than leaving it reading as upcoming, e.g. "was slated for June 15, 2026; confirm current status with the Sei team." Same applies to
Contributor
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 PR's whole purpose is retiring deadlines that have already passed, but this rewritten sentence still presents June 15, 2026 as an upcoming milestone — that date is ~7 weeks in the past as of the Prop 121 activation this PR documents. An exchange reading "must still be completed prior to ... slated for June 15, 2026" gets a self-contradictory instruction. I understand from the PR description that the actual Cosmos/CosmWasm shutdown status is unknown and you'd rather not guess — that's the right call on the substance. But since the line is already being edited, consider neutralizing the tense rather than leaving a future-framed past date, e.g. "...slated for June 15, 2026; contact Sei support to confirm the current status of the Cosmos interface shutdown." Same issue at 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] June 15, 2026 is ~7 weeks in the past, but this reads as a future deadline ("must still be completed prior to deprecation ... slated for"), and the bullets below are all future tense ("will not be able to"). The same PR fixes exactly this tense problem in Since you're already rewriting this line, either state the actual current status of the Cosmos/CosmWasm deprecation or, if the date has slipped, give the new one. Exchanges reading "you still have until June 15" on an August page is the same class of error this PR is correcting for IBC. |
||
|
|
||
| - Exchanges and their users will not be able to access or transfer funds. | ||
| - Cosmos-native transaction interfaces will no longer be available. Exchanges will not be able to broadcast Cosmos-format transactions, sign with Cosmos key derivations against the live chain, or interact with the chain through Cosmos RPC endpoints. | ||
|
|
||
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.
[nit] The reframing is the right call over deletion, but
**Any native denom:**breaks the Title Case pattern of its two sibling bullets (**Direct Integration:**,**Native Execution:**).**Any Native Denom:**would keep the list consistent.