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

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions .github/styles/Sei/Headings.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,32 @@ scope: heading
# AGENTS.md: "Sentence case for headings." Only the first word and proper nouns
# are capitalized. Proper nouns below are exempt so they may appear mid-heading.
match: $sentence
# A colon starts a new sentence, so "Step 1: Evaluate compatibility" is still
# sentence case.
indicators:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[suggestion] The comment above this ("A colon starts a new sentence") overstates what indicators does. Vale documents it as a list of suffixes after which the next token is ignored — so it exempts exactly one word following the colon, not the remainder of the heading. ## Step 1: Evaluate compatibility passes either way, but ## Step 1: Evaluate Compatibility would still be flagged on Compatibility, which is probably the behavior you want; the comment just implies something broader.

One thing I couldn't verify locally (no Vale binary available in this environment): whether indicators is honored for match: $sentence or only for $title. Since you validated against Vale 3.14.2 directly, you're better placed to confirm; if it's a no-op for $sentence, this key is dead config. Either way the rule is warning-level and never fails the build, so it's low risk.

- ':'
exceptions:
- Sei
- Sei Giga
- Sei EVM
- Sei Network
- Sei Mainnet
- Sei Testnet
- SeiDB
- EVM
- ERC
- CosmWasm
- Cosmos
- Ethereum
- Ethereum Mainnet
- Arbitrum
# Scoped to the migration heading so the rule still catches "Base fee" and
# "Base layer" elsewhere.
- Migrating from Base
- Polygon PoS
- Avalanche C-Chain
- LayerZero V2
- Uniswap V3
- Solidity
- Hardhat
- Foundry
Expand Down
9 changes: 9 additions & 0 deletions .github/styles/Sei/Terminology.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,15 @@ action:
swap:
'the Sei blockchain': Sei
'Sei [Cc]hain': Sei
# Capitalized forms are reader-facing prose; the lowercase literals
# 'pacific-1' and 'atlantic-2' are intentionally kept for CLI, config,
# registry keys, and API paths, and don't match here (ignorecase: false).
'Pacific-1': Sei Mainnet

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[suggestion] This new rule is already violated by a leftover in the repo — evm/nonce-lanes.mdx:61:

...deployed at 0x4337... on both Sei mainnet (Pacific-1, chain ID 1329) and Sei testnet (Atlantic-2, chain ID 1328)...

That's reader-facing prose, exactly the case this PR is converting. It slipped through the stated Vale: 0 errors validation because this rule is level: warning, not error. Worth converting that line and re-running Vale with warnings surfaced (e.g. --minAlertLevel=warning) to confirm nothing else remains.

'Atlantic-2': Sei Testnet
# The network names are proper nouns, so the lowercase prose forms are wrong
# too. 'Sei Mainnet' and 'Sei Testnet' never match these patterns.
'Sei mainnet': Sei Mainnet
'Sei testnet': Sei Testnet
'gas fees?': gas
# Bare 'CW' is accepted shorthand for CosmWasm here — the standard names
# CW20/CW721/CW1155 plus phrases like "CW pointer", "CW-based", and "CW NFT".
Expand Down
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Sei Docs — agent instructions

Check warning on line 1 in AGENTS.md

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

AGENTS.md#L1

Use sentence case for headings: 'Sei Docs — agent instructions'.

## About this project

Expand All @@ -14,11 +14,11 @@
- **Sei Giga** is the next-generation architecture upgrade
- **seid** is the CLI binary; always lowercase and code-formatted
- **sei-js** (lowercase, hyphenated) for the JS/TS SDK
- **Pacific-1** (mainnet chain ID `1329`), **Atlantic-2** (testnet chain ID `1328`)
- Use **Sei Mainnet** (EVM chain ID `1329`) and **Sei Testnet** (EVM chain ID `1328`) in reader-facing copy. Both are proper nouns, so "Sei mainnet" and "Sei testnet" are wrong. Keep the literal identifiers `pacific-1` (mainnet) and `atlantic-2` (testnet) only where technically required, especially in node-operator instructions, CLI or config values, API paths, and registry keys.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nit] This line states the rule using the forbidden forms in plain prose: "Sei mainnet" and "Sei testnet" are wrong. The new Terminology swap has ignorecase: false, so both quoted strings match and Vale will annotate this exact added line (filter_mode: added). It's advisory only — fail_on_error: false — but it's avoidable noise on the line that defines the rule.

Wrapping them in backticks (`Sei mainnet` / `Sei testnet`) puts them in inline code, which Vale skips, and reads better as literals anyway.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nit] This added line contains the literal strings Sei mainnet and Sei testnet in plain prose, so the new Sei.Terminology swap matches its own guidance sentence. filter_mode: added means the Vale check will annotate this exact line on this PR, which contradicts the "0 Sei.Terminology hits for the network names" validation claim in the description.

More practically: the rule carries action: name: replace, so any autofix pass would rewrite the sentence into "so "Sei Mainnet" and "Sei Mainnet" are wrong." Wrapping the wrong forms in backticks (`Sei mainnet`) sidesteps both, and matches how the same line already backticks pacific-1. Keeping it as-is is defensible since lines 12 and 22 already self-match the older Sei [Cc]hain and gas fees? swaps — hence a nit, not a suggestion.

- Precompiles live at specific addresses — always reference exact address when mentioning
- **Twin Turbo Consensus** and **parallelization engine** are proper nouns
- Prefer "dApp" over "app" when the context is blockchain
- Avoid "gas fees" — say "gas" or "transaction fees"

Check warning on line 21 in AGENTS.md

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

AGENTS.md#L21

Use 'gas' instead of 'gas fees' (Sei terminology).

## Style preferences

Expand Down Expand Up @@ -46,7 +46,7 @@

All legacy paths from the Nextra site are preserved in `docs.json` under `redirects`. When renaming or moving a page, always add a matching redirect entry so external links and search results continue to resolve.

## llms.txt / llms-full.txt

Check warning on line 49 in AGENTS.md

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

AGENTS.md#L49

Use sentence case for headings: 'llms.txt / llms-full.txt'.

`llms.txt` and `llms-full.txt` at the repo root are hand-curated overrides for Mintlify's auto-generated versions. The script `scripts/generate-llms.mjs` reads `docs.json`, fetches each page's `.md` from the deployed site, and re-emits both files using the curated config block at the top of the script (project name, intro, constraints, quick reference, section overviews, examples, resources). A scheduled GitHub Action (`.github/workflows/regenerate-llms.yml`) runs this weekly and opens a PR when anything changed; trigger it manually via `workflow_dispatch` after large content updates if you don't want to wait. Edit the config block at the top of the script to update wording; do not hand-edit the generated `.txt` files.

Expand Down
9 changes: 5 additions & 4 deletions STYLE_GUIDE.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Sei Docs Style Guide

Check warning on line 1 in STYLE_GUIDE.md

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

STYLE_GUIDE.md#L1

Use sentence case for headings: 'Sei Docs Style Guide'.

This style guide contains general rules and principles to ensure the documentation is cohesive, useful, and organized.

Expand All @@ -6,7 +6,7 @@

This documentation strives to be:

### Beginner Friendly

Check warning on line 9 in STYLE_GUIDE.md

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

STYLE_GUIDE.md#L9

Use sentence case for headings: 'Beginner Friendly'.

The Sei community welcomes members from all walks of life. As such, the documentation should be understandable by anyone, including those who are new to Web3 or non-technical.

Expand All @@ -22,8 +22,8 @@

- To be clear and inclusive, avoid using jargon and obscure words where possible.
- Limit the number of clauses in a sentence and make sure that your points are structured.
- Avoid qualifying language, which is ~~quite~~ often ~~completely~~ unnecessary.

Check warning on line 25 in STYLE_GUIDE.md

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

STYLE_GUIDE.md#L25

'quite' is often unnecessary qualifying language — consider removing it.

Check warning on line 25 in STYLE_GUIDE.md

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

STYLE_GUIDE.md#L25

'completely' is often unnecessary qualifying language — consider removing it.
- Information should be simply organized and easy to find.

Check warning on line 26 in STYLE_GUIDE.md

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

STYLE_GUIDE.md#L26

'simply' is often unnecessary qualifying language — consider removing it.

### Self-explanatory

Expand Down Expand Up @@ -64,13 +64,13 @@
- **Reference**: Transactions, RPC reference, tokens, changelog, ecosystem contracts
- **Hardware Wallets**: Ledger integration with Ethers

### Cosmos-SDK (Deprecated)

Check warning on line 67 in STYLE_GUIDE.md

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

STYLE_GUIDE.md#L67

Use sentence case for headings: 'Cosmos-SDK (Deprecated)'.

> ⚠️ **Deprecation Notice**: Cosmos SDK and CosmWasm functionality is being deprecated in favor of EVM-only. For more details, see [SIP-3](https://github.com/sei-protocol/sips/blob/main/sips/sip-3.md) and [Proposal 99](https://seistream.app/proposals/99).

This section contains legacy documentation for Cosmos SDK functionality. New development should focus on the EVM.

### Operate (Node)

Check warning on line 73 in STYLE_GUIDE.md

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

STYLE_GUIDE.md#L73

Use sentence case for headings: 'Operate (Node)'.

The Operate section covers topics related to running Sei infrastructure. This is relevant for node operators, validators, and those looking to contribute to chain infrastructure.

Expand All @@ -79,15 +79,15 @@
- **Node Operations**: Overview, Seictl setup, statesync, snapshot sync, node types, troubleshooting, API configuration, validators, oracle price feeder
- **Advanced Operations**: Configuration & monitoring, Giga SS Store migration, technical reference

## Style Guidelines

Check warning on line 82 in STYLE_GUIDE.md

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

STYLE_GUIDE.md#L82

Use sentence case for headings: 'Style Guidelines'.

### Acronyms and Abbreviations

Check warning on line 84 in STYLE_GUIDE.md

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

STYLE_GUIDE.md#L84

Use sentence case for headings: 'Acronyms and Abbreviations'.

To maximize clarity, we should avoid acronyms and abbreviations where possible, especially for shorter, more ambiguous acronyms:

- Just use 'CosmWasm' instead of 'CW'

However, there are occasions where acronyms might be more easily understandable (e.g., NFT instead of Non-Fungible Token, RPC instead of Remote Procedure Call), or referred to very frequently.

Check warning on line 90 in STYLE_GUIDE.md

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

STYLE_GUIDE.md#L90

'very' is often unnecessary qualifying language — consider removing it.

In these cases, we should first use the spelled-out term followed by the shortened form in parentheses:

Expand Down Expand Up @@ -252,7 +252,7 @@
</Frame>
```

### Callouts and Admonitions

Check warning on line 255 in STYLE_GUIDE.md

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

STYLE_GUIDE.md#L255

Use sentence case for headings: 'Callouts and Admonitions'.

Use callouts to highlight important information. Mintlify supports the following callout types:

Expand Down Expand Up @@ -285,12 +285,13 @@

When referencing network information, always include:

- Chain ID (both decimal and hex format where applicable)
- EVM chain ID (both decimal and hex format where applicable)
- Cosmos chain ID (`pacific-1`, `atlantic-2`) when the table documents `seid` or Cosmos endpoints
- RPC URLs
- Explorer links

Example:
| Network | Chain ID | RPC URL |
| Network | EVM chain ID | RPC URL |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nit] The example column is now "EVM chain ID", but the guidance bullet a few lines above (line 288) still reads "Chain ID (both decimal and hex format where applicable)". Worth updating that bullet to match so the instruction and its example agree — especially since the whole point of this PR is disambiguating EVM chain IDs from Cosmos chain IDs.

|---------|----------|---------|
| Mainnet (pacific-1) | 1329 (0x531) | https://evm-rpc.sei-apis.com |
| Testnet (atlantic-2) | 1328 (0x530) | https://evm-rpc-testnet.sei-apis.com |
| Sei Mainnet | 1329 (0x531) | https://evm-rpc.sei-apis.com |
| Sei Testnet | 1328 (0x530) | https://evm-rpc-testnet.sei-apis.com |
14 changes: 7 additions & 7 deletions ai/agentic-wallets.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
Both platforms support Sei as an EVM-compatible chain. No special integration is required — you point the wallet provider at Sei's RPC and chain ID and everything works out of the box.
</Info>

## How It Works

Check warning on line 12 in ai/agentic-wallets.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

ai/agentic-wallets.mdx#L12

Use sentence case for headings: 'How It Works'.

An agentic wallet sits between your AI agent and the blockchain:

Expand All @@ -26,7 +26,7 @@
└─────────┘ └───────────┘ └──────────────┘ └─────────┘ └──────────┘
```

## Quick Comparison

Check warning on line 29 in ai/agentic-wallets.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

ai/agentic-wallets.mdx#L29

Use sentence case for headings: 'Quick Comparison'.

| Dimension | Coinbase AgentKit | Privy Server Wallets |
| --- | --- | --- |
Expand All @@ -45,7 +45,7 @@

---

## Coinbase AgentKit on Sei

Check warning on line 48 in ai/agentic-wallets.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

ai/agentic-wallets.mdx#L48

Use sentence case for headings: 'Coinbase AgentKit on Sei'.

[AgentKit](https://github.com/coinbase/agentkit) is Coinbase's open-source toolkit for giving AI agents crypto wallets and onchain capabilities. It is framework-agnostic (LangChain, Vercel AI SDK, OpenAI Agents SDK, MCP) and wallet-agnostic (CDP wallets, Privy, Viem, and more).

Expand Down Expand Up @@ -157,7 +157,7 @@
wallet_provider = EthAccountWalletProvider(
config=EthAccountWalletProviderConfig(
account=account,
chain_id=1329, # Sei mainnet
chain_id=1329, # Sei Mainnet
rpc_url="https://evm-rpc.sei-apis.com",
)
)
Expand Down Expand Up @@ -192,7 +192,7 @@
</Tab>
</Tabs>

### Available Action Providers on Sei

Check warning on line 195 in ai/agentic-wallets.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

ai/agentic-wallets.mdx#L195

Use sentence case for headings: 'Available Action Providers on Sei'.

Not every AgentKit action provider works on Sei — some are chain-specific. Here's what you can use:

Expand All @@ -213,14 +213,14 @@
For Sei-native DeFi actions (swaps on Symphony/DragonSwap, staking via Silo, lending via Takara), use the [Cambrian Agent Kit](/ai/cambrian-agent-kit) alongside AgentKit, or write custom action providers.
</Info>

### Known Quirks on Sei

Check warning on line 216 in ai/agentic-wallets.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

ai/agentic-wallets.mdx#L216

Use sentence case for headings: 'Known Quirks on Sei'.

Verified by running AgentKit `0.10.4` against Sei testnet (`chain 1328`). These quirks sit in AgentKit's network and action-provider layer and apply to **both** `ViemWalletProvider` and `PrivyWalletProvider`:
Verified by running AgentKit `0.10.4` against Sei Testnet (`chain 1328`). These quirks sit in AgentKit's network and action-provider layer and apply to **both** `ViemWalletProvider` and `PrivyWalletProvider`:

- **Balances are labeled "ETH" in action output.** `walletActionProvider` hard-codes the native-currency symbol, so `get_wallet_details` returns strings like `Native Balance: 512993.50 ETH` and `native_transfer` responses say `Transferred 0.05 ETH to 0x...` even on Sei. Signing and arithmetic are unaffected — it's a display-only quirk. If the LLM will quote balances or transfer confirmations to users, add a post-processing step or a system-prompt instruction to rewrite `ETH` → `SEI` when `chain_id == 1329 || 1328`.
- **`networkId` is `undefined`.** Coinbase's internal `CHAIN_ID_TO_NETWORK_ID` map only includes Ethereum, Polygon, Base, Arbitrum, and Optimism (mainnet + testnet). Sei's chain IDs aren't in it, so `walletProvider.getNetwork()` returns `{ protocolFamily: 'evm', chainId: '1328', networkId: undefined }`. This is harmless for signing/sending, but **any action provider that branches on `networkId`** will refuse to run on Sei. In practice, `AgentKit.from({...})` prints a warning like `The following action providers are not supported on the current network and will be unavailable: weth, x402` and silently drops them — if you expect an action and it's missing from `agentKit.getActions()`, check this warning first.

### CDP-Managed Wallets and Sei

Check warning on line 223 in ai/agentic-wallets.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

ai/agentic-wallets.mdx#L223

Use sentence case for headings: 'CDP-Managed Wallets and Sei'.

AgentKit's `CdpEvmWalletProvider` (CDP-managed server wallets with built-in policies) is currently scoped to `base`, `base-sepolia`, `ethereum`, `ethereum-sepolia`, `polygon`, `arbitrum`, and `optimism` — **Sei is not a supported network**.

Expand All @@ -233,7 +233,7 @@

---

## Privy Server Wallets on Sei

Check warning on line 236 in ai/agentic-wallets.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

ai/agentic-wallets.mdx#L236

Use sentence case for headings: 'Privy Server Wallets on Sei'.

[Privy](https://docs.privy.io/) provides wallet-as-a-service infrastructure for AI agents. Server wallets are programmatically managed wallets designed for backend use — no user interaction required. Keys are isolated in TEEs with Shamir secret sharing and never leave secure enclaves.

Expand Down Expand Up @@ -273,7 +273,7 @@
</Step>

<Step title="Send a transaction on Sei">
Use `eip155:1329` (CAIP-2 format) to target Sei mainnet:
Use `eip155:1329` (CAIP-2 format) to target Sei Mainnet:

```bash
curl --request POST https://api.privy.io/v1/wallets/wallet_abc123/rpc \
Expand Down Expand Up @@ -343,7 +343,7 @@
// serialize a BigInt, so don't pass `parseEther(...)` directly.
const { hash } = await privy.walletApi.ethereum.sendTransaction({
walletId: wallet.id,
caip2: 'eip155:1329', // Sei mainnet
caip2: 'eip155:1329', // Sei Mainnet
transaction: {
to: '0x742d35Cc6634C0532925a3b844Bc454e4438f44e',
value: '0x' + parseEther('0.01').toString(16),
Expand Down Expand Up @@ -381,7 +381,7 @@
result = client.wallets.rpc(
wallet_id=wallet.id,
method="eth_sendTransaction",
caip2="eip155:1329", # Sei mainnet
caip2="eip155:1329", # Sei Mainnet
params={
"transaction": {
"to": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
Expand All @@ -401,7 +401,7 @@

### Known Quirks on Sei (Privy)

Verified by running `@privy-io/server-auth` `1.32.5` against Sei testnet (`eip155:1328`):
Verified by running `@privy-io/server-auth` `1.32.5` against Sei Testnet (`eip155:1328`):

- **`value` must be a hex string, not a `BigInt`.** Privy's request signer uses RFC 8785 JSON canonicalization (`canonicalize`), which throws `TypeError: Do not know how to serialize a BigInt` if you pass a `BigInt` in any field of the `transaction` object. Convert viem's `parseEther(...)` output with `'0x' + parseEther('0.01').toString(16)` before sending.
- **`authorizationKeyIds` on `createWallet` expects the public-key registration ID, not the dashboard key ID.** Passing the ID shown next to a key in the Privy dashboard can fail with `400 Invalid authorization key IDs`. If you only need an app-owned wallet (app credentials + `authorizationPrivateKey` for request signing), omit `authorizationKeyIds` — the wallet is still fully operable.
Expand Down Expand Up @@ -434,7 +434,7 @@
- Use AgentKit's `PrivyWalletProvider` with a LangChain adapter (`@coinbase/agentkit-langchain`) — see the [Combined](#using-agentkit-with-privy-combined) section below.
</Warning>

### Privy Policy Engine

Check warning on line 437 in ai/agentic-wallets.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

ai/agentic-wallets.mdx#L437

Use sentence case for headings: 'Privy Policy Engine'.

Privy's policy engine evaluates policies server-side before signing. Each rule pairs an `ALLOW`/`DENY` action with an RPC `method` and a list of `conditions` on transaction fields. Attach one or more policies to a wallet via `updateWallet`.

Expand Down Expand Up @@ -498,7 +498,7 @@

---

## Using AgentKit with Privy (Combined)

Check warning on line 501 in ai/agentic-wallets.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

ai/agentic-wallets.mdx#L501

Use sentence case for headings: 'Using AgentKit with Privy (Combined)'.

AgentKit includes a built-in `PrivyWalletProvider`, so you can use Privy's wallet infrastructure and policy engine as the backend while using AgentKit's 40+ action providers for onchain operations.

Expand All @@ -519,7 +519,7 @@
const walletProvider = await PrivyWalletProvider.configureWithWallet({
appId: process.env.PRIVY_APP_ID!,
appSecret: process.env.PRIVY_APP_SECRET!,
chainId: '1329', // Sei mainnet
chainId: '1329', // Sei Mainnet
walletId: wallet.id,
authorizationPrivateKey: process.env.PRIVY_AUTH_KEY,
});
Expand All @@ -541,9 +541,9 @@

---

## Feature Matrix

Check warning on line 544 in ai/agentic-wallets.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

ai/agentic-wallets.mdx#L544

Use sentence case for headings: 'Feature Matrix'.

### Wallet Creation & Key Management

Check warning on line 546 in ai/agentic-wallets.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

ai/agentic-wallets.mdx#L546

Use sentence case for headings: 'Wallet Creation & Key Management'.

| Capability | Coinbase AgentKit | Privy |
| --- | --- | --- |
Expand All @@ -554,7 +554,7 @@
| Key export / portability | Yes | Yes |


### Policy Engine & Guardrails

Check warning on line 557 in ai/agentic-wallets.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

ai/agentic-wallets.mdx#L557

Use sentence case for headings: 'Policy Engine & Guardrails'.

| Capability | Coinbase AgentKit | Privy |
| --- | --- | --- |
Expand All @@ -565,7 +565,7 @@
| Transaction simulation | No | No — Needs Sei-specific RPC |


### Gas & Transaction Management

Check warning on line 568 in ai/agentic-wallets.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

ai/agentic-wallets.mdx#L568

Use sentence case for headings: 'Gas & Transaction Management'.

| Capability | Coinbase AgentKit | Privy |
| --- | --- | --- |
Expand All @@ -576,7 +576,7 @@
| ERC-20 token operations on Sei | Yes — `erc20ActionProvider` | Yes — Standard EVM ops |


### Agentic DeFi Actions

Check warning on line 579 in ai/agentic-wallets.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

ai/agentic-wallets.mdx#L579

Use sentence case for headings: 'Agentic DeFi Actions'.

| Capability | Coinbase AgentKit | Privy |
| --- | --- | --- |
Expand All @@ -591,7 +591,7 @@
For Sei-native DeFi actions, use the [Cambrian Agent Kit](/ai/cambrian-agent-kit) which includes built-in integrations for Symphony, DragonSwap, Silo, Takara, and Citrex.
</Info>

### x402 & Machine-to-Machine Payments

Check warning on line 594 in ai/agentic-wallets.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

ai/agentic-wallets.mdx#L594

Use sentence case for headings: 'x402 & Machine-to-Machine Payments'.

| Capability | Coinbase AgentKit | Privy |
| --- | --- | --- |
Expand All @@ -600,7 +600,7 @@
| Stablecoin operations on Sei | Yes — `erc20ActionProvider` + Sei USDC | Yes — Standard ERC-20 ops |


### Developer Experience

Check warning on line 603 in ai/agentic-wallets.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

ai/agentic-wallets.mdx#L603

Use sentence case for headings: 'Developer Experience'.

| Capability | Coinbase AgentKit | Privy |
| --- | --- | --- |
Expand All @@ -613,7 +613,7 @@

---

## Other Agentic Wallet Solutions

Check warning on line 616 in ai/agentic-wallets.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

ai/agentic-wallets.mdx#L616

Use sentence case for headings: 'Other Agentic Wallet Solutions'.

While Coinbase AgentKit and Privy are the most mature options for Sei, several other platforms support agentic wallet use cases:

Expand All @@ -628,7 +628,7 @@

---

## Sei Network Configuration Reference

Check warning on line 631 in ai/agentic-wallets.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

ai/agentic-wallets.mdx#L631

Use sentence case for headings: 'Sei Network Configuration Reference'.

Use these values when configuring any agentic wallet provider for Sei:

Expand Down
6 changes: 3 additions & 3 deletions ai/mcp-server.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

The server starts in read-only mode. Wallet tools that sign or broadcast are hidden unless you set `WALLET_MODE=private-key` and `PRIVATE_KEY` on the default stdio transport.

## What is MCP?

Check warning on line 12 in ai/mcp-server.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

ai/mcp-server.mdx#L12

Use sentence case for headings: 'What is MCP?'.

The Model Context Protocol is an open standard that connects AI systems with external tools and data sources. It enables:

Expand All @@ -36,7 +36,7 @@
<Tabs>
<Tab title="Cursor">

### Cursor Setup

Check warning on line 39 in ai/mcp-server.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

ai/mcp-server.mdx#L39

Use sentence case for headings: 'Cursor Setup'.

<Steps>

Expand Down Expand Up @@ -68,7 +68,7 @@
</Tab>
<Tab title="Windsurf">

### Windsurf Setup

Check warning on line 71 in ai/mcp-server.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

ai/mcp-server.mdx#L71

Use sentence case for headings: 'Windsurf Setup'.

<Steps>

Expand Down Expand Up @@ -100,7 +100,7 @@
</Tab>
<Tab title="Claude Desktop">

### Claude Desktop Setup

Check warning on line 103 in ai/mcp-server.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

ai/mcp-server.mdx#L103

Use sentence case for headings: 'Claude Desktop Setup'.

<Steps>

Expand Down Expand Up @@ -132,7 +132,7 @@
</Tab>
<Tab title="Claude CLI">

### Claude CLI Setup

Check warning on line 135 in ai/mcp-server.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

ai/mcp-server.mdx#L135

Use sentence case for headings: 'Claude CLI Setup'.

<Steps>

Expand Down Expand Up @@ -193,7 +193,7 @@

- Query account balances, tokens, NFTs, blocks, and transactions (read-only)
- Search the official Sei docs, including `@sei-js` references (`search_docs`)
- Monitor network status for Pacific-1 and Atlantic-2
- Monitor network status for Sei Mainnet and Sei Testnet
- Execute token transfers, NFT transfers, contract writes, and deploys when wallet mode is enabled on stdio

## Available tools
Expand All @@ -210,7 +210,7 @@
| --- | --- | --- | --- |
| `search_docs` | Search the official Sei docs | "How do I use the staking precompile?" | No |
| `get_supported_networks` | List supported networks | "Which Sei networks are available?" | No |
| `get_chain_info` | Network chain ID and latest block | "Show Sei mainnet info" | No |
| `get_chain_info` | Network chain ID and latest block | "Show Sei Mainnet info" | No |
| `get_balance` | Native SEI balance | "Check balance of 0x123..." | No |
| `is_contract` | Verify a contract address | "Is 0x789... a contract?" | No |
| `read_contract` | Call a read-only contract function | "Read DEX reserves" | No |
Expand Down Expand Up @@ -278,7 +278,7 @@
Explain an EVM concept in context
</Card>
<Card title="compare_networks" icon="code-compare">
Compare Pacific-1 and Atlantic-2
Compare Sei Mainnet and Sei Testnet
</Card>
</CardGroup>

Expand Down Expand Up @@ -373,7 +373,7 @@

CLI flags such as `--http` are not supported. Set `SERVER_TRANSPORT` instead. Run `npx -y @sei-js/mcp-server --help` for the current reference.

### HTTP server mode

Check warning on line 376 in ai/mcp-server.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

ai/mcp-server.mdx#L376

Use sentence case for headings: 'HTTP server mode'.

Streamable HTTP is the HTTP transport for new integrations:

Expand Down
2 changes: 1 addition & 1 deletion ai/sei-skill/install.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ The default install targets Claude Code, placing the skill in `~/.claude/skills/
./install.sh
```

The skill loads automatically in every Claude Code session. To verify it's active, ask: *"What is the SSTORE gas cost on Sei testnet?"*
The skill loads automatically in every Claude Code session. To verify it's active, ask: *"What is the SSTORE gas cost on Sei Testnet?"*

</Tab>

Expand Down
8 changes: 4 additions & 4 deletions ai/sei-skill/prompts.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@ Once sei-skill is installed, your AI assistant has accurate, up-to-date context
## Contracts

```
Set up Foundry for Sei testnet
Set up Foundry for Sei Testnet
```
```
Deploy a Solidity contract to Sei mainnet and verify it on Seiscan
Deploy a Solidity contract to Sei Mainnet and verify it on Seiscan
```
```
How do I call the Staking precompile from Solidity to delegate SEI?
Expand Down Expand Up @@ -49,7 +49,7 @@ Migrate my Ethereum contract to Sei — what do I need to change?
## Frontend

```
Set up Wagmi v2 with Sei mainnet and testnet chain configs
Set up Wagmi v2 with Sei Mainnet and Sei Testnet chain configs
```
```
How do I integrate Sei Global Wallet for social login in my dApp?
Expand Down Expand Up @@ -79,7 +79,7 @@ Set up wagmi useWriteContract for delegating SEI to a validator
## Ecosystem

```
What are reliable RPC endpoints for Sei mainnet with failover?
What are reliable RPC endpoints for Sei Mainnet with failover?
```
```
How do I bridge USDC to Sei using LayerZero V2?
Expand Down
14 changes: 7 additions & 7 deletions ai/x402.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,13 @@

x402 payments sit in the request path. The client receives the protected response only after the payment has been authorized and settled. Sei's fast finality reduces this wait, while its low transaction costs make small per-request payments practical.

Sei EVM also lets you use the upstream `@x402` packages and standard EVM wallet tooling. Native USDC is already included in the x402 default asset registry for Pacific-1 and Atlantic-2, so dollar-denominated route pricing works without a custom token mapping.
Sei EVM also lets you use the upstream `@x402` packages and standard EVM wallet tooling. Native USDC is already included in the x402 default asset registry for Sei Mainnet and Sei Testnet, so dollar-denominated route pricing works without a custom token mapping.

<Info>
When you configure x402 on Sei:

- Pacific-1 uses the CAIP-2 network identifier `eip155:1329`.
- Atlantic-2 uses the CAIP-2 network identifier `eip155:1328`.
- Sei Mainnet uses the CAIP-2 network identifier `eip155:1329`.
- Sei Testnet uses the CAIP-2 network identifier `eip155:1328`.
- `@x402/evm` provides the EVM payment scheme implementation.
</Info>

Expand Down Expand Up @@ -147,8 +147,8 @@

| Network | CAIP-2 identifier | Default USDC |
| --- | --- | --- |
| Pacific-1 | `eip155:1329` | `0xe15fC38F6D8c56aF07bbCBe3BAf5708A2Bf42392` |
| Atlantic-2 | `eip155:1328` | `0x4fCF1784B31630811181f670Aea7A7bEF803eaED` |
| Sei Mainnet | `eip155:1329` | `0xe15fC38F6D8c56aF07bbCBe3BAf5708A2Bf42392` |
| Sei Testnet | `eip155:1328` | `0x4fCF1784B31630811181f670Aea7A7bEF803eaED` |

Because x402 registers these assets as the defaults for Sei, a price such as `"$0.001"` resolves to the USDC address for the selected network. To accept another ERC-20 token, configure an explicit token amount and its EIP-712 metadata instead.

Expand All @@ -164,9 +164,9 @@

Native USDC on Sei supports EIP-3009. With the `exact` EVM scheme, the buyer signs a transfer authorization instead of submitting the transfer transaction itself. The facilitator submits the transaction and pays the required gas.

## Protect an Express route

Check warning on line 167 in ai/x402.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

ai/x402.mdx#L167

Use sentence case for headings: 'Protect an Express route'.

The following x402 v2 example charges `0.001` USDC for `GET /weather` on Atlantic-2. Set `X402_FACILITATOR_URL` to a facilitator that supports `eip155:1328`.
The following x402 v2 example charges `0.001` USDC for `GET /weather` on Sei Testnet. Set `X402_FACILITATOR_URL` to a facilitator that supports `eip155:1328`.

```typescript
import express from "express";
Expand Down Expand Up @@ -259,7 +259,7 @@

- Use HTTPS so intermediaries cannot read or replace payment headers.
- Keep buyer wallet keys in a secret manager or another server-side secret store. Do not ship a private key in browser code.
- Confirm facilitator support for Pacific-1 or Atlantic-2 before you deploy.
- Confirm facilitator support for Sei Mainnet or Sei Testnet before you deploy.
- Test rejected signatures, expired authorizations, failed settlement, and insufficient balances.
- Fulfill the protected request only after x402 reports a valid payment.

Expand Down
2 changes: 1 addition & 1 deletion evm/building-a-frontend.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,13 @@

**Deploy to Testnet First**

It is <strong>highly recommended</strong> that you deploy to <em>testnet (atlantic-2)</em> first and verify everything works as expected before committing to mainnet. Doing so helps you catch bugs early, avoid unnecessary gas costs, and keep your users safe.
It is <strong>highly recommended</strong> that you deploy to <em>Sei Testnet</em> first and verify everything works as expected before committing to Sei Mainnet. Doing so helps you catch bugs early, avoid unnecessary gas costs, and keep your users safe.

</Tip>

## When to Use Each Library

Check warning on line 26 in evm/building-a-frontend.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/building-a-frontend.mdx#L26

Use sentence case for headings: 'When to Use Each Library'.

### Ethers.js

Check warning on line 28 in evm/building-a-frontend.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/building-a-frontend.mdx#L28

Use sentence case for headings: 'Ethers.js'.

Ethers.js is ideal for developers who want a comprehensive, battle-tested library with straightforward API design. It's great for both simple and complex dApps, especially when you're not using React or need custom state management.

Expand All @@ -38,7 +38,7 @@
- Larger bundle size compared to Viem
- Not specifically designed for React hooks integration

### Viem

Check warning on line 41 in evm/building-a-frontend.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/building-a-frontend.mdx#L41

Use sentence case for headings: 'Viem'.

Viem is perfect for developers who want fine-grained control over their blockchain interactions and appreciate a modular, lightweight approach. It's a good choice when bundle size matters and when you have specific requirements for how contract interactions should work.

Expand All @@ -52,7 +52,7 @@
- Requires more boilerplate code for some operations
- Requires separate handling for wallet connection and contract interactions

### Wagmi

Check warning on line 55 in evm/building-a-frontend.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/building-a-frontend.mdx#L55

Use sentence case for headings: 'Wagmi'.

Wagmi is the best choice for React developers building dApps who want to leverage React's state management capabilities. It abstracts away much of the complexity of blockchain interactions via hooks, making it easy to build reactive UIs that respond to chain state.

Expand All @@ -73,7 +73,7 @@
- Node.js & NPM installed
- One of the Sei wallets listed [here](/learn/wallets)

## Creating a React Project

Check warning on line 76 in evm/building-a-frontend.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/building-a-frontend.mdx#L76

Use sentence case for headings: 'Creating a React Project'.

Start by creating a new React project using Vite's TypeScript template for streamlined development:

Expand All @@ -85,7 +85,7 @@

<Info>This tutorial uses TypeScript. If you're not using TypeScript, you can easily adjust by removing the types.</Info>

## Project Structure

Check warning on line 88 in evm/building-a-frontend.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/building-a-frontend.mdx#L88

Use sentence case for headings: 'Project Structure'.

For clarity, we'll create separate components for each library implementation. First, let's set up the project structure:

Expand All @@ -100,7 +100,7 @@
touch src/wagmi.ts
```

## Defining the ERC20 Contract Details

Check warning on line 103 in evm/building-a-frontend.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/building-a-frontend.mdx#L103

Use sentence case for headings: 'Defining the ERC20 Contract Details'.

<Info>Make sure to deploy your ERC20 token contract first — for example with [Hardhat](/evm/evm-hardhat) or [Foundry](/evm/evm-foundry), or generate one with the [contract wizard](/evm/evm-wizard) (see also [deploy & verify](/evm/evm-parity/examples/deploy-verify)) — and replace `TOKEN_CONTRACT_ADDRESS` in the constants file with your actual deployed contract address, and update the RPC URL in the Sei chain configuration. You can find a list of existing ERC20 contracts on Sei Mainnet here: [Sei Assets](https://seiscan.io/tokens)</Info>

Expand Down Expand Up @@ -222,7 +222,7 @@
export const TOKEN_CONTRACT_ADDRESS = '0xYourTokenContractAddress';
```

## Option 1: Ethers.js Implementation

Check warning on line 225 in evm/building-a-frontend.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/building-a-frontend.mdx#L225

Use sentence case for headings: 'Option 1: Ethers.js Implementation'.

Install ethers.js first:

Expand Down Expand Up @@ -375,7 +375,7 @@
}
```

## Option 2: Viem Implementation

Check warning on line 378 in evm/building-a-frontend.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/building-a-frontend.mdx#L378

Use sentence case for headings: 'Option 2: Viem Implementation'.

Install Viem first:

Expand Down Expand Up @@ -553,7 +553,7 @@
}
```

## Option 3: Wagmi Implementation

Check warning on line 556 in evm/building-a-frontend.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/building-a-frontend.mdx#L556

Use sentence case for headings: 'Option 3: Wagmi Implementation'.

Install Wagmi and configure it:

Expand Down Expand Up @@ -695,7 +695,7 @@
}
```

## Updating the Main App to Display all Implementations

Check warning on line 698 in evm/building-a-frontend.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/building-a-frontend.mdx#L698

Use sentence case for headings: 'Updating the Main App to Display all Implementations'.

Now update your `App.tsx` to include all three interface options:

Expand Down Expand Up @@ -753,7 +753,7 @@
export default App;
```

## Polyfills for Browser Environment

Check warning on line 756 in evm/building-a-frontend.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/building-a-frontend.mdx#L756

Use sentence case for headings: 'Polyfills for Browser Environment'.

When developing frontend applications for the blockchain, you might need polyfills for Node.js-specific features like `Buffer`. Add these polyfills to your project:

Expand All @@ -778,7 +778,7 @@
);
```

## Running the Application

Check warning on line 781 in evm/building-a-frontend.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/building-a-frontend.mdx#L781

Use sentence case for headings: 'Running the Application'.

To see your app in action, run:

Expand Down
2 changes: 1 addition & 1 deletion evm/debugging-contracts.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@

Debugging EVM transactions on Sei requires understanding both the transaction creation process and how to analyze transaction behavior. This guide covers advanced debugging techniques using transaction template generation, analysis tools, and comprehensive transaction inspection methods to help developers identify and resolve issues in their EVM interactions.

## Transaction Template Generation

Check warning on line 13 in evm/debugging-contracts.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/debugging-contracts.mdx#L13

Use sentence case for headings: 'Transaction Template Generation'.

The `--generate-only` flag transforms any Sei CLI transaction command into a template generator, creating complete transaction structures without broadcasting them. Through the `--generate-only` flag and Foundry's `cast` tool, developers can craft, analyze, and debug transactions across the EVM environment.

### Basic Command Pattern

Check warning on line 17 in evm/debugging-contracts.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/debugging-contracts.mdx#L17

Use sentence case for headings: 'Basic Command Pattern'.

The general pattern follows this structure:

Expand All @@ -22,7 +22,7 @@
seid tx <module> <action> <parameters> --from <key> --evm-rpc http://url-to-sei-evm-rpc --generate-only
```

### Generating EVM Transaction Templates

Check warning on line 25 in evm/debugging-contracts.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/debugging-contracts.mdx#L25

Use sentence case for headings: 'Generating EVM Transaction Templates'.

To generate an EVM transaction template, use the `evm` module with `--generate-only`. Here's an example sending SEI to another EVM address:

Expand All @@ -39,7 +39,7 @@

---

## Analyzing EVM Transactions with Cast

Check warning on line 42 in evm/debugging-contracts.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/debugging-contracts.mdx#L42

Use sentence case for headings: 'Analyzing EVM Transactions with Cast'.

Once you have a transaction hash, you can use Foundry's `cast` command to inspect the transaction details:

Expand Down Expand Up @@ -69,7 +69,7 @@
value 0
```

### Additional Analysis Commands

Check warning on line 72 in evm/debugging-contracts.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/debugging-contracts.mdx#L72

Use sentence case for headings: 'Additional Analysis Commands'.

**Get transaction receipt:**

Expand All @@ -88,13 +88,13 @@

---

## RPC Consistency

Check warning on line 91 in evm/debugging-contracts.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/debugging-contracts.mdx#L91

Use sentence case for headings: 'RPC Consistency'.

<Warning>Always point `cast` commands to an EVM RPC endpoint (for example, `$EVM_RPC_URL`), not a Cosmos RPC URL.</Warning>

---

## Tracing and Revert Reasons

Check warning on line 97 in evm/debugging-contracts.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/debugging-contracts.mdx#L97

Use sentence case for headings: 'Tracing and Revert Reasons'.

If your endpoint supports debug RPC methods, you can retrieve full execution traces and revert reasons:

Expand All @@ -115,7 +115,7 @@

---

## Reproduce with a Local Fork

Check warning on line 118 in evm/debugging-contracts.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/debugging-contracts.mdx#L118

Use sentence case for headings: 'Reproduce with a Local Fork'.

Fork the network locally to reproduce issues deterministically and run traces even if remote debug RPC is disabled:

Expand All @@ -133,7 +133,7 @@

---

## Event Logs and Decoding

Check warning on line 136 in evm/debugging-contracts.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/debugging-contracts.mdx#L136

Use sentence case for headings: 'Event Logs and Decoding'.

Use the receipt to inspect logs and decode with the contract ABI:

Expand All @@ -149,7 +149,7 @@

---

## Nonce, Balance, and Gas Diagnostics

Check warning on line 152 in evm/debugging-contracts.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/debugging-contracts.mdx#L152

Use sentence case for headings: 'Nonce, Balance, and Gas Diagnostics'.

Check common failure points quickly:

Expand All @@ -170,7 +170,7 @@

## Try it live

Each `cast` diagnostic above is a plain read-only JSON-RPC call. Run the same four against Sei mainnet right here — the example address (`0xAa55…3d96`) is the sender from the `cast tx` output earlier on this page.
Each `cast` diagnostic above is a plain read-only JSON-RPC call. Run the same four against Sei Mainnet right here — the example address (`0xAa55…3d96`) is the sender from the `cast tx` output earlier on this page.

<RunSnippet method="eth_chainId" network="mainnet" title="cast chain-id" description="eth_chainId — decodes to 1329. A mismatch here is the most common cause of a rejected transaction." />

Expand All @@ -194,7 +194,7 @@

---

## Offline Workflow with --generate-only

Check warning on line 197 in evm/debugging-contracts.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/debugging-contracts.mdx#L197

Use sentence case for headings: 'Offline Workflow with --generate-only'.

Generate, inspect, sign, and broadcast safely:

Expand All @@ -214,7 +214,7 @@

---

## Precompile Awareness

Check warning on line 217 in evm/debugging-contracts.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/debugging-contracts.mdx#L217

Use sentence case for headings: 'Precompile Awareness'.

Calls to system precompiles (for example, addresses like `0x...100b`) may have specific input/output formats and error behavior.

Expand All @@ -233,7 +233,7 @@

---

## Transaction Analysis

Check warning on line 236 in evm/debugging-contracts.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/debugging-contracts.mdx#L236

Use sentence case for headings: 'Transaction Analysis'.

When analyzing transactions, follow these essential practices:

Expand Down Expand Up @@ -263,7 +263,7 @@

---

## Error Handling

Check warning on line 266 in evm/debugging-contracts.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/debugging-contracts.mdx#L266

Use sentence case for headings: 'Error Handling'.

Handle potential EVM transaction issues with proper monitoring:

Expand All @@ -289,7 +289,7 @@

---

## Security Guidelines

Check warning on line 292 in evm/debugging-contracts.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/debugging-contracts.mdx#L292

Use sentence case for headings: 'Security Guidelines'.

<Warning>
<strong>Critical Security Requirements:</strong> Keep private keys secure and never include them in templates. Use an `.env` file or other environment variables when working with wallet keys or mnemonics. Never commit sensitive information to version control. Always verify transaction details before signing.
Expand Down
4 changes: 2 additions & 2 deletions evm/differences-with-ethereum.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,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

Check warning on line 50 in evm/differences-with-ethereum.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/differences-with-ethereum.mdx#L50

Use sentence case for headings: 'Sei EVM Release'.

Sei EVM was originally deployed at the following block heights and versions:

Expand All @@ -63,7 +63,7 @@
- **Height:** `79123881`
- **Changelog:** https://github.com/sei-protocol/sei-chain/blob/main/CHANGELOG.md#v552

## Opcode Differences

Check warning on line 66 in evm/differences-with-ethereum.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/differences-with-ethereum.mdx#L66

Use sentence case for headings: 'Opcode Differences'.

| Opcode | Sei EVM | Ethereum | Notes |
| --- | --- | --- | --- |
Expand All @@ -76,7 +76,7 @@
| DIFFICULTY | Alias of PREVRANDAO | Alias of PREVRANDAO (EIP‑4399) | Returns the same value as PREVRANDAO. |
| Blob‑related opcodes | Not supported (Pectra without blobs) | Supported post‑Cancun (EIP‑4844) | Blob transactions are not enabled on Sei. |

### PREVRANDAO

Check warning on line 79 in evm/differences-with-ethereum.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/differences-with-ethereum.mdx#L79

Use sentence case for headings: '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
Expand All @@ -90,19 +90,19 @@
Coinbase address on Sei is always set to (the EVM address of) the global fee
collector.

## State Root

Check warning on line 93 in evm/differences-with-ethereum.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/differences-with-ethereum.mdx#L93

Use sentence case for headings: '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

Check warning on line 100 in evm/differences-with-ethereum.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/differences-with-ethereum.mdx#L100

Use sentence case for headings: '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

Check warning on line 105 in evm/differences-with-ethereum.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/differences-with-ethereum.mdx#L105

Use sentence case for headings: '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
Expand All @@ -127,7 +127,7 @@
value: '"0.007500000000000000"'
```

## Non-EVM Transactions

Check warning on line 130 in evm/differences-with-ethereum.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/differences-with-ethereum.mdx#L130

Use sentence case for headings: '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
Expand All @@ -135,7 +135,7 @@
As a result, if certain offchain applications only parse EVM transactions, they
may find certain state changes unattributable to any EVM transaction.

## EVM Transaction Envelope Restrictions

Check warning on line 138 in evm/differences-with-ethereum.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/differences-with-ethereum.mdx#L138

Use sentence case for headings: 'EVM Transaction Envelope Restrictions'.

On Sei, EVM transactions are carried inside a Cosmos transaction envelope, but that envelope must remain empty of Cosmos-specific fields. This introduces the following Sei-specific divergences from a plain Ethereum transaction that tooling constructing raw transactions should be aware of:

Expand Down Expand Up @@ -180,7 +180,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

Check warning on line 183 in evm/differences-with-ethereum.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/differences-with-ethereum.mdx#L183

Use sentence case for headings: '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
Expand All @@ -191,7 +191,7 @@
the same time), so Sei does not have a window when "pending state"
exists.

## Gas Model & Fees

Check warning on line 194 in evm/differences-with-ethereum.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/differences-with-ethereum.mdx#L194

Use sentence case for headings: '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:

Expand All @@ -213,11 +213,11 @@

</Info>

## SSTORE Gas Cost

Check warning on line 216 in evm/differences-with-ethereum.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/differences-with-ethereum.mdx#L216

Use sentence case for headings: '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.

Currently, the `SSTORE` gas cost is set to the non-standard value of **72,000 gas**. This value is the same on both mainnet (`pacific-1`) and testnet (`atlantic-2`). It was set by governance [Proposal #109](https://seistream.app/proposals/109) ("Update EVM SSTORE set gas to 72000"), which changed the `evm` module parameter `KeySeiSstoreSetGasEIP2200` to `72000`.
Currently, the `SSTORE` gas cost is set to the non-standard value of **72,000 gas**. This value is the same on both Sei Mainnet and Sei Testnet. It was set by governance [Proposal #109](https://seistream.app/proposals/109) ("Update EVM SSTORE set gas to 72000"), which changed the `evm` module parameter `KeySeiSstoreSetGasEIP2200` to `72000`.

The values below are read **live** from the Sei EVM:

Expand All @@ -227,7 +227,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

Check warning on line 230 in evm/differences-with-ethereum.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/differences-with-ethereum.mdx#L230

Use sentence case for headings: 'ERC Token Standards Compatibility'.

Sei’s EVM fully supports the common token standards:

Expand All @@ -237,9 +237,9 @@

Existing OpenZeppelin contracts and tools work unchanged.

## Testing & Migration Checklist

Check warning on line 240 in evm/differences-with-ethereum.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/differences-with-ethereum.mdx#L240

Use sentence case for headings: 'Testing & Migration Checklist'.

- ✅ Re‑deploy your Solidity code to Sei testnet; most contracts need no changes.
- ✅ Re‑deploy your Solidity code to Sei Testnet; most contracts need no changes.
- ✅ If you used SELFDESTRUCT, refactor to a soft‑close pattern.
- ✅ Remove EIP‑1559 fee UI complexity; use a single `gasPrice` input in frontends.
- ✅ If you rely on on‑chain “randomness,” integrate an oracle/VRF.
Expand Down
20 changes: 10 additions & 10 deletions evm/evm-foundry.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

**Deploy to Testnet First**

It is <strong>highly recommended</strong> that you deploy to <em>testnet (atlantic-2)</em> first and verify everything works as expected before committing to mainnet. Doing so helps you catch bugs early, avoid unnecessary gas costs, and keep your users safe.
It is <strong>highly recommended</strong> that you deploy to <em>Sei Testnet</em> first and verify everything works as expected before committing to Sei Mainnet. Doing so helps you catch bugs early, avoid unnecessary gas costs, and keep your users safe.

</Tip>

Expand All @@ -27,22 +27,22 @@

First, confirm the RPC endpoints you'll put in `foundry.toml` respond:

<RunSnippet method="eth_chainId" network="testnet" title="eth_chainId · atlantic-2" description="Testnet RPC — decodes to 1328." />
<RunSnippet method="eth_chainId" network="testnet" title="eth_chainId · Sei Testnet" description="Testnet RPC — decodes to 1328." />

<RunSnippet method="eth_chainId" network="mainnet" title="eth_chainId · pacific-1" description="Mainnet RPC — decodes to 1329." />
<RunSnippet method="eth_chainId" network="mainnet" title="eth_chainId · Sei Mainnet" description="Mainnet RPC — decodes to 1329." />

Then add Sei testnet to your wallet and deploy a minimal `Counter.sol` from Remix — no `forge`, no install. In Remix: compile under **Solidity Compiler**, then **Deploy & Run** with **Environment** set to **Injected Provider — MetaMask**.
Then add Sei Testnet to your wallet and deploy a minimal `Counter.sol` from Remix — no `forge`, no install. In Remix: compile under **Solidity Compiler**, then **Deploy & Run** with **Environment** set to **Injected Provider — MetaMask**.

<AddSeiButton network="testnet" label="Add Sei testnet" />
<AddSeiButton network="testnet" label="Add Sei Testnet" />

<SandboxEmbed
kind="remix"
src="https://remix.ethereum.org/?#activate=solidity,fileManager&code=Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVApwcmFnbWEgc29saWRpdHkgXjAuOC4yNDsKCi8vLyBAdGl0bGUgQ291bnRlciDigJQgbWluaW1hbCBjb250cmFjdCB0byBjb21waWxlICYgZGVwbG95IHRvIFNlaSB0ZXN0bmV0Lgpjb250cmFjdCBDb3VudGVyIHsKICAgIHVpbnQyNTYgcHVibGljIGNvdW50OwogICAgZnVuY3Rpb24gaW5jcmVtZW50KCkgZXh0ZXJuYWwgeyBjb3VudCsrOyB9CiAgICBmdW5jdGlvbiBkZWNyZW1lbnQoKSBleHRlcm5hbCB7IGNvdW50LS07IH0KfQ"
title="Counter.sol · deploy to Sei testnet"
description="Remix IDE with a minimal Counter contract preloaded. Compile in-browser, then deploy to Sei testnet."
title="Counter.sol · deploy to Sei Testnet"
description="Remix IDE with a minimal Counter contract preloaded. Compile in-browser, then deploy to Sei Testnet."
/>

## Table of Contents

Check warning on line 45 in evm/evm-foundry.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-foundry.mdx#L45

Use sentence case for headings: 'Table of Contents'.

- [Try it before you install](#try-it-before-you-install)
- [Prerequisites](#prerequisites)
Expand All @@ -63,7 +63,7 @@
- A wallet with SEI tokens for gas
- [Node.js](https://nodejs.org/) (v18.0.0 or later) for ethers.js interactions

## Setting Up Your Development Environment

Check warning on line 66 in evm/evm-foundry.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-foundry.mdx#L66

Use sentence case for headings: 'Setting Up Your Development Environment'.

First, let's install Foundry if you haven't already. Follow the [installation guide](https://book.getfoundry.sh/getting-started/installation) or use the quick install command:

Expand Down Expand Up @@ -101,7 +101,7 @@
optimizer = true
optimizer_runs = 200

# Sei testnet configuration
# Sei Testnet configuration
[rpc_endpoints]
sei_testnet = "https://evm-rpc-testnet.sei-apis.com"
sei_mainnet = "https://evm-rpc.sei-apis.com"
Expand All @@ -117,7 +117,7 @@

<Warning>Add `.env` to your `.gitignore` file to prevent committing sensitive information such as your `PRIVATE_KEY` and potentially lose funds.</Warning>

## Using OpenZeppelin Contracts

Check warning on line 120 in evm/evm-foundry.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-foundry.mdx#L120

Use sentence case for headings: 'Using OpenZeppelin Contracts'.

OpenZeppelin provides a library of secure, tested smart contract components. Let's install OpenZeppelin contracts:

Expand All @@ -131,7 +131,7 @@
forge remappings > remappings.txt
```

## Creating and Deploying Smart Contracts

Check warning on line 134 in evm/evm-foundry.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-foundry.mdx#L134

Use sentence case for headings: 'Creating and Deploying Smart Contracts'.

Let's create different types of smart contracts. Choose from the tabs below based on what you want to build:

Expand Down Expand Up @@ -376,7 +376,7 @@
</Tab>
</Tabs>

## Testing Your Smart Contracts

Check warning on line 379 in evm/evm-foundry.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-foundry.mdx#L379

Use sentence case for headings: 'Testing Your Smart Contracts'.

Foundry provides excellent testing capabilities. Let's create comprehensive tests for our contracts.

Expand Down Expand Up @@ -583,21 +583,21 @@

Now let's deploy our contracts to the Sei networks. You can use either Forge scripts or direct deployment commands.

### Using Forge Scripts (Recommended)

Check warning on line 586 in evm/evm-foundry.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-foundry.mdx#L586

Use sentence case for headings: 'Using Forge Scripts (Recommended)'.

Deploy to Sei testnet:
Deploy to Sei Testnet:

```bash
forge script script/DeployCounter.s.sol --rpc-url $SEI_TESTNET_RPC --private-key $PRIVATE_KEY --broadcast
```

Deploy to Sei mainnet:
Deploy to Sei Mainnet:

```bash
forge script script/DeployCounter.s.sol --rpc-url $SEI_MAINNET_RPC --private-key $PRIVATE_KEY --broadcast
```

### Using Direct Forge Create Commands

Check warning on line 600 in evm/evm-foundry.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-foundry.mdx#L600

Use sentence case for headings: 'Using Direct Forge Create Commands'.

Alternatively, you can deploy directly:

Expand All @@ -622,11 +622,11 @@
Transaction hash: 0xYOUR_TX_HASH
```

## Interacting with Deployed Contracts

Check warning on line 625 in evm/evm-foundry.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-foundry.mdx#L625

Use sentence case for headings: 'Interacting with Deployed Contracts'.

Once deployed, you can interact with your contracts using Foundry's `cast` tool or ethers.js.

### Using Cast Commands

Check warning on line 629 in evm/evm-foundry.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-foundry.mdx#L629

Use sentence case for headings: 'Using Cast Commands'.

```bash
# Query the counter value
Expand Down
Loading
Loading