diff --git a/learn/accounts.mdx b/learn/accounts.mdx
index e24f897..732ef94 100644
--- a/learn/accounts.mdx
+++ b/learn/accounts.mdx
@@ -124,8 +124,12 @@ This method involves signing a predefined message to prove ownership of the
account.
```ts
+import { createWalletClient, http, parseSignature, toHex } from 'viem';
import { privateKeyToAccount, generatePrivateKey } from 'viem/accounts';
-import { parseSignature, toHex } from 'viem';
+import { seiTestnet } from 'viem/chains';
+import { ADDRESS_PRECOMPILE_ABI, ADDRESS_PRECOMPILE_ADDRESS } from '@sei-js/evm';
+
+const client = createWalletClient({ chain: seiTestnet, transport: http() });
const associate = async () => {
const account = privateKeyToAccount('');
@@ -135,13 +139,14 @@ const associate = async () => {
const message = 'associate';
const signature = await newAccount.signMessage({ message });
const parsedSignature = parseSignature(signature);
+ const customMessage = `\x19Ethereum Signed Message:\n${message.length}${message}`;
const response = await client.writeContract({
account,
address: ADDRESS_PRECOMPILE_ADDRESS,
abi: ADDRESS_PRECOMPILE_ABI,
functionName: 'associate',
- args: [toHex(Number(parsedSignature.v) - 27), parsedSignature.r, parsedSignature.s, message],
+ args: [toHex(Number(parsedSignature.v) - 27), parsedSignature.r, parsedSignature.s, customMessage],
gasPrice: BigInt(100_000_000_000)
});
console.log(response);
@@ -158,7 +163,12 @@ This method compresses the public key and sends it for association.
```ts
import secp256k1 from 'secp256k1';
+import { createWalletClient, http } from 'viem';
import { privateKeyToAccount, generatePrivateKey } from 'viem/accounts';
+import { seiTestnet } from 'viem/chains';
+import { ADDRESS_PRECOMPILE_ABI, ADDRESS_PRECOMPILE_ADDRESS } from '@sei-js/evm';
+
+const client = createWalletClient({ chain: seiTestnet, transport: http() });
const associateViaPubkey = async () => {
const account = privateKeyToAccount('');
diff --git a/learn/dev-gas.mdx b/learn/dev-gas.mdx
index 6d193cb..bdacd8e 100644
--- a/learn/dev-gas.mdx
+++ b/learn/dev-gas.mdx
@@ -29,7 +29,13 @@ completing the transaction.
### Fee
-`Fee = Gas Price * Gas Limit`.
+`Fee = Gas Price * Gas Used`.
+
+The gas limit caps the maximum possible charge at `Gas Price * Gas Limit`. Note
+that on Sei, excess gas (the gas limit beyond the actual gas used) may not be
+refunded in full or in part, so avoid setting gas limits far above what a
+transaction actually needs. See
+[Sei EVM vs Ethereum](/evm/differences-with-ethereum) for details.
To help developers and users estimate fees on Sei, please reference
[Sei Gas](https://seigas.com) and the associated
diff --git a/learn/hardware-wallets.mdx b/learn/hardware-wallets.mdx
index 4e7f2d8..b0c90a4 100644
--- a/learn/hardware-wallets.mdx
+++ b/learn/hardware-wallets.mdx
@@ -7,8 +7,17 @@ description: 'Comprehensive guide to Hardware Wallets on Sei. Learn key concepts
title: Hardware Wallets
---
Signing transactions manually or using hardware wallets like Ledger ensures
-secure transaction approval. In order to sign Sei transactions you must have the
-Cosmos app installed on your wallet and interact with a Cosmos RPC endpoint.
+secure transaction approval. To sign Sei transactions, install the Ethereum app
+(or the dedicated Sei app) on your Ledger device and sign through an EVM wallet
+such as MetaMask.
+
+
+The legacy flow that used the Cosmos app with a Cosmos RPC endpoint is
+deprecated: per [SIP-03](/learn/sip-03-migration), Cosmos-native interfaces are
+slated for deprecation on June 15, 2026. If you still hold funds on a Ledger
+Cosmos-app (`sei1...`) account, see
+[Migrating a hardware or mnemonic-only wallet](/learn/sip-03-migration#migrating-a-hardware-or-mnemonic-only-wallet).
+
## Using MetaMask with Ledger
@@ -25,9 +34,14 @@ To connect your Ledger device through MetaMask and sign transactions:
4. **Sign Transactions**: Once connected, you can sign transactions directly
through MetaMask using your Ledger device.
-**Installing the Cosmos App on Ledger**
+**Installing the Ethereum App on Ledger**
-Before you can use your Ledger device to sign transactions, ensure you have the
-Cosmos app installed. You can download it from the Ledger app store:
+Before you can use your Ledger device to sign transactions through MetaMask,
+ensure you have the Ethereum app installed. You can install it through Ledger
+Live:
-• [Ledger App Store - Cosmos App](https://www.ledger.com/coin/wallet/cosmos)
+• [Ledger App Store - Ethereum App](https://www.ledger.com/coin/wallet/ethereum)
+
+Alternatively, you can install the dedicated Sei app from the Ledger Live App
+Catalog — see [Ledger Setup](/learn/ledger-setup) for step-by-step
+instructions.
diff --git a/learn/seidb.mdx b/learn/seidb.mdx
index 84a5876..172ba02 100644
--- a/learn/seidb.mdx
+++ b/learn/seidb.mdx
@@ -205,28 +205,6 @@ SeiDB maintains complete compatibility with the Ethereum protocol specifications
These compatibility guarantees ensure existing smart contracts, development tools, and infrastructure components work without modification. The system undergoes extensive compatibility testing against the official Ethereum test suites to verify identical results compared to reference implementations.
-### Developer Tooling
-
-SeiDB includes analysis tools that provide insights into contract storage behavior:
-
-```javascript
-// Storage analysis integration
-async function analyzeContractStorage(contractAddress) {
- const provider = new ethers.providers.JsonRpcProvider('https://evm-rpc.sei-apis.com');
-
- const stats = await provider.send('sei_getStorageStats', [contractAddress, { blockCount: 1000 }]);
-
- console.log('Access Hotspots:', stats.hotSlots);
- console.log('Access Pattern Type:', stats.accessPattern);
- console.log('Contention Points:', stats.contentionPoints);
- console.log('Optimization Suggestions:', stats.optimizationSuggestions);
-
- return stats;
-}
-```
-
-These tools integrate with standard development environments and provide actionable insights into storage usage patterns. The analysis examines actual on-chain behavior over specified time ranges and identifies patterns that might not be obvious from code inspection alone.
-
### Deployment Configurations
SeiDB's architecture supports various deployment configurations optimized for different node roles:
diff --git a/learn/sip-03-migration.mdx b/learn/sip-03-migration.mdx
index 17e4b83..5edaad0 100644
--- a/learn/sip-03-migration.mdx
+++ b/learn/sip-03-migration.mdx
@@ -45,7 +45,7 @@ If you hold any of the following IBC assets on Sei, take action before [Proposal
| Asset | Token contract | Action(s) | Possible route(s) | Support |
| :---- | :---- | :---- | :---- | :---- |
-| **USDC.n (USDC via Noble)** | [seiscan](https://seiscan.io/address/0x3894085ef7ff0f0aedf52e2a2704928d1ec074f1) [mintscan](https://www.mintscan.io/sei/assets/ibc%2FCA6FBFAF399474A06263E10D0CE5AEBBE15189D6D4B2DD9ADE61007E68EB9DB0) | Swap to native USDC or migrate via CCTP | Sapyhre, [Symphony](https://symph.ag/), or [Stargate](https://stargate.finance/?srcChain=sei&srcToken=0x3894085Ef7Ff0f0aeDf52E2A2704928d1Ec074F1) | [Sei blog](https://blog.sei.io/announcements/holders-of-usdcn-need-to-swap-or-migrate/) [Sei Tech Chat](https://t.me/+KZdhZ1eE-G01NmZk) [Discord](https://discord.com/invite/sei?ref=blog.sei.io) |
+| **USDC.n (USDC via Noble)** | [seiscan](https://seiscan.io/address/0x3894085ef7ff0f0aedf52e2a2704928d1ec074f1) [mintscan](https://www.mintscan.io/sei/assets/ibc%2FCA6FBFAF399474A06263E10D0CE5AEBBE15189D6D4B2DD9ADE61007E68EB9DB0) | Swap to native USDC or migrate via CCTP | [Saphyre](https://saphyre.xyz/swap?inputCurrency=0x3894085Ef7Ff0f0aeDf52E2A2704928d1Ec074F1&outputCurrency=0xe15fC38F6D8c56aF07bbCBe3BAf5708A2Bf42392), [Symphony](https://symph.ag/), or [Stargate](https://stargate.finance/?srcChain=sei&srcToken=0x3894085Ef7Ff0f0aeDf52E2A2704928d1Ec074F1) | [Sei blog](https://blog.sei.io/announcements/holders-of-usdcn-need-to-swap-or-migrate/) [Sei Tech Chat](https://t.me/+KZdhZ1eE-G01NmZk) [Discord](https://discord.com/invite/sei?ref=blog.sei.io) |
| **USDT.kava (USDT via Kava)** | [seiscan](https://seiscan.io/token/0xb75d0b03c06a926e488e2659df1a861f860bd3d1) [mintscan](https://www.mintscan.io/sei/assets/ibc%2F6C00E4AA0CC7618370F81F7378638AE6C48EFF8C9203CE1C2357012B440EBDB7)| Swap via Symphony or bridge out to Kava | [Symphony](https://symph.ag/), [Stargate](https://stargate.finance/?srcChain=sei&srcToken=0xB75D0B03c06A926e488e2659DF1A861F860bD3d1) | [Sei Tech Chat](https://t.me/+KZdhZ1eE-G01NmZk) [Discord](https://discord.com/invite/sei) |
| **USDCso (Wormhole, Solana)** | [mintscan](https://www.mintscan.io/sei/assets/factory%2Fsei189adguawugk3e55zn63z8r9ll29xrjwca636ra7v7gxuzn98sxyqwzt47l%2F9fELvUhFo6yWL34ZaLgPbCPzdk9MD1tAzMycgH45qShH) | Bridge out to Solana via Wormhole | [Portal Bridge (legacy)](https://legacy.portalbridge.com/#/transfer) | [Sei Tech Chat](https://t.me/+KZdhZ1eE-G01NmZk) [Discord](https://discord.com/invite/sei) |
| **Wormhole-bridged WETH** | [mintscan](https://www.mintscan.io/sei/assets/factory%2Fsei189adguawugk3e55zn63z8r9ll29xrjwca636ra7v7gxuzn98sxyqwzt47l%2F4tLQqCLaoKKfNFuPjA9o39YbKUwhR1F8N29Tz3hEbfP2) | Bridge out to Ethereum via Wormhole | [Portal Bridge (legacy)](https://legacy.portalbridge.com/#/transfer) | [Sei Tech Chat](https://t.me/+KZdhZ1eE-G01NmZk) [Discord](https://discord.com/invite/sei) |
@@ -166,7 +166,7 @@ If you can export a raw private key, import it into an EVM wallet. This always w
It depends on whether your Cosmos (`sei1...`) and EVM (`0x...`) addresses are **associated (linked)**. Staking on Sei is handled by the Cosmos staking module. After SIP-03, Cosmos-native transaction interfaces will no longer be available — but the underlying staking state is preserved and accessible via EVM for associated addresses.
-**If your addresses are associated:** No action is needed. After the upgrade, your existing delegations, rewards, and unbonding state will be fully accessible via EVM. You can continue managing your stake through an EVM wallet using the [Staking Precompile](/evm/precompiles/staking), the [Sei Dashboard](https://dashboard.sei.io/stake), or the [Sei Dashboard](https://dashboard.sei.io/stake).
+**If your addresses are associated:** No action is needed. After the upgrade, your existing delegations, rewards, and unbonding state will be fully accessible via EVM. You can continue managing your stake through an EVM wallet using the [Staking Precompile](/evm/precompiles/staking) or the [Sei Dashboard](https://dashboard.sei.io/stake).
**If your addresses are NOT associated:** You must act before the upgrade. After SIP-03, you will not be able to associate addresses or manage delegations through a Cosmos wallet.
@@ -182,4 +182,4 @@ To check whether your addresses are linked, see [Query Linked Addresses](/learn/
### I hold USDC.n (USDC via Noble) — what should I do?
-You must swap or migrate your USDC.n to native USDC before the SIP-03 upgrade (expected end of March 2026). After the upgrade, USDC.n may become inaccessible or lose its value on Sei. See the [USDC on Sei](#2-usdc-on-sei) section above for swap and migration options, or read the full announcement: [Holders of USDC.n Need to Swap or Migrate](https://blog.sei.io/announcements/holders-of-usdcn-need-to-swap-or-migrate/).
+You must swap or migrate your USDC.n to native USDC before the SIP-03 deprecation of Cosmos, CosmWasm and IBC related functionality, slated for **June 15, 2026**. After the upgrade, USDC.n may become inaccessible or lose its value on Sei. See the [USDC on Sei](#2-usdc-on-sei) section above for swap and migration options, or read the full announcement: [Holders of USDC.n Need to Swap or Migrate](https://blog.sei.io/announcements/holders-of-usdcn-need-to-swap-or-migrate/).
diff --git a/learn/twin-turbo-consensus.mdx b/learn/twin-turbo-consensus.mdx
index 6894f43..a521c95 100644
--- a/learn/twin-turbo-consensus.mdx
+++ b/learn/twin-turbo-consensus.mdx
@@ -44,7 +44,7 @@ This diagram illustrates the conceptual overlap. Transaction preparation feeds i
This highly optimized consensus flow translates directly into tangible benefits:
-- **Near-Instant Finality:** The ~400ms target block time means transactions achieve probabilistic finality almost immediately, confirmed within a single block. Deterministic finality typically follows within two blocks (~800ms). This eliminates the long confirmation waits common on other chains.
+- **Near-Instant Finality:** Sei has instant, deterministic finality — a transaction is final as soon as its block is committed, within the ~400ms target block time. There is no probabilistic confirmation window or multi-block wait. This eliminates the long confirmation waits common on other chains.
- **Responsive Applications:** The low latency transforms the user experience. Interactions feel instantaneous, bridging the gap between decentralized applications and traditional web services.
- **Advanced Use Cases:** The speed enables applications previously impractical on-chain, such as high-frequency trading components, real-time price oracles critical for stable DeFi, and responsive on-chain games.
- **Efficient Multi-Step Operations:** Complex DeFi workflows (e.g., approve-swap-stake) that involve multiple transactions can execute in sequence within roughly a second, boosting capital efficiency and simplifying user interactions.
diff --git a/node/advanced-config-monitoring.mdx b/node/advanced-config-monitoring.mdx
index 03a1e37..53cab97 100644
--- a/node/advanced-config-monitoring.mdx
+++ b/node/advanced-config-monitoring.mdx
@@ -89,17 +89,17 @@ Example Prometheus configuration:
```yaml
global:
- scrape_interval: 15s
- evaluation_interval: 15s
+ scrape_interval: 15s
+ evaluation_interval: 15s
scrape_configs:
- - job_name: 'sei_node'
- static_configs:
- - targets: ['node1_ip:port']
- metrics_path: /metrics
- - job_name: 'node'
- static_configs:
- - targets: ['node2_ip:port']
+ - job_name: 'sei_node'
+ static_configs:
+ - targets: ['node1_ip:port']
+ metrics_path: /metrics
+ - job_name: 'node'
+ static_configs:
+ - targets: ['node2_ip:port']
```
### Grafana Integration
@@ -263,44 +263,44 @@ tar xvf alertmanager-0.25.0.linux-amd64.tar.gz
```yaml
groups:
- - name: validator_alerts
- rules:
- - alert: NodeDown
- expr: up == 0
- for: 5m
- labels:
- severity: critical
- annotations:
- summary: 'Node {{ $labels.instance }} down'
-
- - alert: BlockProductionSlow
- expr: rate(tendermint_consensus_height[5m]) < 0.1
- for: 5m
- labels:
- severity: warning
- annotations:
- summary: 'Block production is slow on {{ $labels.instance }}'
- - alert: ValidatorMissedBlocks
- expr: increase(tendermint_consensus_validator_missed_blocks[1h]) > 0
- labels:
- severity: critical
- annotations:
- summary: 'Validator missing blocks'
-
- - alert: ValidatorJailed
- expr: tendermint_consensus_validator_status == 0
- labels:
- severity: critical
- annotations:
- summary: 'Validator has been jailed'
-
- - alert: ConsensusStalled
- expr: tendermint_consensus_height_status == 0
- for: 5m
- labels:
- severity: critical
- annotations:
- summary: 'Consensus has stalled'
+ - name: validator_alerts
+ rules:
+ - alert: NodeDown
+ expr: up == 0
+ for: 5m
+ labels:
+ severity: critical
+ annotations:
+ summary: 'Node {{ $labels.instance }} down'
+
+ - alert: BlockProductionSlow
+ expr: rate(tendermint_consensus_height[5m]) < 0.1
+ for: 5m
+ labels:
+ severity: warning
+ annotations:
+ summary: 'Block production is slow on {{ $labels.instance }}'
+ - alert: ValidatorMissedBlocks
+ expr: increase(tendermint_consensus_validator_missed_blocks[1h]) > 0
+ labels:
+ severity: critical
+ annotations:
+ summary: 'Validator missing blocks'
+
+ - alert: ValidatorJailed
+ expr: tendermint_consensus_validator_status == 0
+ labels:
+ severity: critical
+ annotations:
+ summary: 'Validator has been jailed'
+
+ - alert: ConsensusStalled
+ expr: tendermint_consensus_height_status == 0
+ for: 5m
+ labels:
+ severity: critical
+ annotations:
+ summary: 'Consensus has stalled'
```
diff --git a/node/index.mdx b/node/index.mdx
index a34459c..5fa128e 100644
--- a/node/index.mdx
+++ b/node/index.mdx
@@ -172,8 +172,10 @@ sed -i 's/persistent-peers = .*/persistent-peers = "'$PEERS'"/' ~/.sei/config/co
##### Configure App Settings
```bash
-# Set minimum gas price (recommended)
-sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0usei\"/" $HOME/.sei/config/app.toml
+# Set minimum gas price (recommended; helps prevent spam transactions)
+# Mainnet enforces a chain-wide minimum of 0.02usei, so set at least that value
+# Use "0usei" only for local development or private networks
+sed -i -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.02usei\"/" $HOME/.sei/config/app.toml
# Tune mempool settings
sed -i \
@@ -305,7 +307,7 @@ Check your node's status with these commands:
```bash
# Check sync status
-seid status | jq .SyncInfo
+seid status
# Monitor logs in real-time
journalctl -u seid -f -o cat
diff --git a/node/node-operators.mdx b/node/node-operators.mdx
index b763a6d..76c38ab 100644
--- a/node/node-operators.mdx
+++ b/node/node-operators.mdx
@@ -1527,7 +1527,7 @@ du -sh $HOME/.sei/data/
# - `config.toml` & `app.toml`: Retains node-specific configuration.
# - `genesis.json`: Required for correct chain initialization.
-# Compact database to optimize storage (only if needed)
+# Wipe database for a fresh resync (destructive — deletes all chain data)
find $HOME/.sei/data/ -mindepth 1 ! -name 'priv_validator_state.json' -delete && rm -rf $HOME/.sei/wasm
@@ -1535,6 +1535,8 @@ find $HOME/.sei/data/ -mindepth 1 ! -name 'priv_validator_state.json' -delete &&
cp -r $HOME/.sei/data/ $HOME/sei-backup-$(date +%Y%m%d)/
```
+The wipe command above deletes the entire local database (everything except `priv_validator_state.json`) and the `wasm` folder. It does not compact data in place — after running it, the node must be re-synced from a [snapshot](/node/snapshot) or via [state sync](/node/statesync) before it can serve traffic again.
+
## Service Management
### Systemd Commands
diff --git a/node/seictl.mdx b/node/seictl.mdx
index 2d2516c..043927f 100644
--- a/node/seictl.mdx
+++ b/node/seictl.mdx
@@ -190,7 +190,7 @@ seictl genesis patch [patch-file]
seictl genesis patch patch.json
# Patch from stdin
-echo '{"chain_id": "sei-testnet"}' | seictl genesis patch
+echo '{"chain_id": "atlantic-2"}' | seictl genesis patch
# Patch and save to a new file
seictl genesis patch patch.json -o genesis-modified.json
@@ -331,7 +331,7 @@ seictl config --target app patch patch.toml -i
```bash
-echo '{"chain_id": "sei-mainnet-1"}' | seictl genesis patch -i
+echo '{"chain_id": "pacific-1"}' | seictl genesis patch -i
```
diff --git a/node/statesync.mdx b/node/statesync.mdx
index 78da00b..2edde39 100644
--- a/node/statesync.mdx
+++ b/node/statesync.mdx
@@ -32,7 +32,7 @@ seid tendermint unsafe-reset-all --home $HOME/.sei
Finally, remove the existing data and wasm folders and restore the `priv_validator_state.json`:
```bash
-rm -rf $HOME/.sei/data/\*
+rm -rf $HOME/.sei/data/*
rm -rf $HOME/.sei/wasm
cp $HOME/priv_validator_state.json $HOME/.sei/data/priv_validator_state.json
```
diff --git a/node/troubleshooting.mdx b/node/troubleshooting.mdx
index 2235312..6b07e51 100644
--- a/node/troubleshooting.mdx
+++ b/node/troubleshooting.mdx
@@ -17,7 +17,7 @@ When you encounter consensus errors, quick and appropriate action is essential:
```text
Error: "Consensus failure - height halted"
Solution: Check for network upgrades or chain halts
-Command: seid status | jq .SyncInfo
+Command: seid status
```
```text
@@ -70,7 +70,7 @@ These commands help you investigate issues and monitor your node:
```bash
# Check node synchronization
-seid status | jq '.sync_info'
+seid status
# Check validator status
seid query staking validator $(seid tendermint show-validator)
@@ -334,7 +334,7 @@ echo "/tmp/core.%e.%p" > /proc/sys/kernel/core_pattern
`app.toml` or running:
```bash
- seid unsafe-reset-all --home=$HOME/.sei --keep-addr-book
+ seid tendermint unsafe-reset-all --home $HOME/.sei --keep-addr-book
```
Alternatively, manually remove old state snapshots to free up space:
diff --git a/node/validators.mdx b/node/validators.mdx
index 60d7dd3..eb979b4 100644
--- a/node/validators.mdx
+++ b/node/validators.mdx
@@ -59,7 +59,7 @@ yubihsm-shell
# Configure seid to use HSM
tee "$HOME/.sei/config/priv_validator_config.json" << EOF
{
- "chain_id": "sei-chain",
+ "chain_id": "pacific-1",
"key_type": "yubihsm",
"state_file": "$HOME/.sei/data/priv_validator_state.json",
"hsm_serial": "YOUR_HSM_SERIAL",
@@ -72,14 +72,16 @@ EOF
### Validator Registration
-Before registering your validator, ensure your node is fully synced with the network. The creation of a validator is a crucial step that requires careful consideration of commission parameters:
+Before registering your validator, ensure your node is fully synced with the network. The creation of a validator is a crucial step that requires careful consideration of commission parameters.
+
+The examples below use `pacific-1` (mainnet); use `atlantic-2` for testnet.
```bash
seid tx staking create-validator \
--amount=1000000usei \
--pubkey=$(seid tendermint show-validator) \
--moniker="choose_moniker" \
- --chain-id=sei-chain \
+ --chain-id=pacific-1 \
--commission-rate="0.10" \
--commission-max-rate="0.20" \
--commission-max-change-rate="0.01" \
@@ -203,7 +205,7 @@ seid query gov proposals --status voting_period
# Vote on a proposal
seid tx gov vote 1 yes \
--from operator \
- --chain-id sei-chain \
+ --chain-id pacific-1 \
--gas auto \
--gas-prices 0.01usei
```