Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
01ff367
docs: The EVM RPC methods eth_getBlockByHash and eth_getBlockTransact…
seidroid[bot] Aug 12, 2026
29f034e
docs: eth_getBlockByHash and eth_getBlockReceipts now return result:n…
seidroid[bot] Aug 12, 2026
26f9889
docs: The Tendermint P2P layer was reworked with a new peer manager: …
seidroid[bot] Aug 12, 2026
e5eef6b
docs: EVM transaction validation was tightened with stricter semantic…
seidroid[bot] Aug 12, 2026
6460e92
docs: The Tendermint RPC ValidatorInfo JSON response now always inclu…
seidroid[bot] Aug 12, 2026
9b66605
docs: Sei EVM JSON-RPC now conforms to Ethereum spec behavior: eth_ge…
seidroid[bot] Aug 12, 2026
58a5cc1
docs: The eth_getBlockTransactionCountByNumber and eth_getBlockTransa…
seidroid[bot] Aug 12, 2026
d35c5a4
docs: Three state-commit config fields (sc-write-mode, sc-read-mode, …
seidroid[bot] Aug 12, 2026
2bd1b97
docs: The oracle module's default MinValidPerWindow parameter changed…
seidroid[bot] Aug 12, 2026
b6b5b2c
docs: IAVL is being signaled for upcoming deprecation, with new log w…
seidroid[bot] Aug 12, 2026
1ce13c3
docs: The legacy sei_*/sei2_* JSON-RPC gate now handles JSON-RPC batc…
seidroid[bot] Aug 12, 2026
ff27301
docs: The legacy IAVL backend has been fully removed and SeiDB state-…
seidroid[bot] Aug 12, 2026
5bb5ef5
docs: Adds a new `seid tendermint gen-autobahn-config` CLI command to…
seidroid[bot] Aug 12, 2026
8711551
docs: The `receipt-store.keep-recent` config field has been removed; …
seidroid[bot] Aug 12, 2026
7cae2f3
docs: When Giga/Autobahn mode is enabled (autobahn config file set), …
seidroid[bot] Aug 12, 2026
dde570e
docs: Legacy sei_*/sei2_* JSON-RPC batch handling now follows JSON-RP…
seidroid[bot] Aug 12, 2026
c821349
docs: eth_getFilterChanges and eth_getFilterLogs now return an empty …
seidroid[bot] Aug 12, 2026
06a9453
docs: Sei database storage paths were reorganized into a structured s…
seidroid[bot] Aug 12, 2026
1c48fc7
docs: When the parquet receipt store's pebble tx hash index is disabl…
seidroid[bot] Aug 12, 2026
9634670
docs: When GIGA_STORAGE=true, the receipt backend now defaults to par…
seidroid[bot] Aug 12, 2026
6be5c62
docs: Adds a new debug_traceTransactionProfile JSON-RPC method that r…
seidroid[bot] Aug 12, 2026
ab3464f
docs: The /status RPC response now includes a new `last_committed_blo…
seidroid[bot] Aug 12, 2026
3359445
docs: Changed JSON-RPC batch handling so that requests with "id": nul…
seidroid[bot] Aug 12, 2026
1984198
docs: A new consensus config field `stateless-leader-election` was ad…
seidroid[bot] Aug 12, 2026
75aa90b
docs: The consensus config field 'stateless-leader-election' now defa…
seidroid[bot] Aug 12, 2026
0285c17
docs: Adds a new seidb `dump-flatkv` CLI command and a `--flatkv-dir`…
seidroid[bot] Aug 12, 2026
adb1476
docs: The `stateless-leader-election` consensus config field is now d…
seidroid[bot] Aug 12, 2026
da055e0
docs: The eth_feeHistory JSON-RPC endpoint now returns baseFeePerGas …
seidroid[bot] Aug 12, 2026
a82a527
docs: Under Autobahn consensus, the Tendermint RPC endpoints /block, …
seidroid[bot] Aug 12, 2026
369cb7c
docs: The mempool Update recheck flag was changed to false in the Gig…
seidroid[bot] Aug 12, 2026
af4dff9
docs: The EVM RPC layer adds new OpenTelemetry metrics (evmrpc_reques…
seidroid[bot] Aug 12, 2026
10ab0cd
docs: Adds OpenTelemetry metrics instrumentation across the FlatKV st…
seidroid[bot] Aug 12, 2026
98e64d2
docs: Giga executor now writes a status=0 receipt for EVM transaction…
seidroid[bot] Aug 12, 2026
196e009
docs: Introduces a new `mock_block_validation` Go build tag that bypa…
seidroid[bot] Aug 12, 2026
7458454
docs: Adds a new opt-in trace-baking feature configurable via new [ev…
seidroid[bot] Aug 12, 2026
f35be2c
docs: Adds a new `seidb import-flatkv-from-memiavl` CLI command (plus…
seidroid[bot] Aug 12, 2026
dfad6c1
docs: Out-of-process ABCI support was removed (deprecating the --prox…
seidroid[bot] Aug 12, 2026
0d327ac
docs: The sei_getTransactionReceiptExcludeTraceFail and *ExcludeTrace…
seidroid[bot] Aug 12, 2026
3509e2f
docs: The sei_getBlockBy*ExcludeTraceFail and sei_traceBlockBy*Exclud…
seidroid[bot] Aug 12, 2026
697ff66
docs: Adds EVM RPC transaction proxying/sharding across autobahn vali…
seidroid[bot] Aug 12, 2026
0cbf64a
docs: The distribution module now validates withdraw addresses agains…
seidroid[bot] Aug 12, 2026
dc738d5
docs: Adds a new --persistent-state-dir flag to the tendermint gen-au…
seidroid[bot] Aug 12, 2026
56fd397
docs: LittDB metrics were migrated from Prometheus client to the glob…
seidroid[bot] Aug 12, 2026
5de14cb
docs: ProcessProposal now rejects blocks when any transaction fails t…
seidroid[bot] Aug 12, 2026
3ae29fa
docs: eth_getTransactionReceipt now returns null (instead of an error…
seidroid[bot] Aug 12, 2026
1b1f2ea
docs: The Tendermint mempool was substantially rewritten, changing TT…
seidroid[bot] Aug 12, 2026
eebf39a
docs: Adds a new seidb `migrate-evm-status` CLI subcommand, a new `sc…
seidroid[bot] Aug 12, 2026
17fa5c8
docs: The max block lookback guard for debug_trace* RPC methods now a…
seidroid[bot] Aug 12, 2026
0704b9b
docs: The eth_getTransactionByHash RPC now looks up mempool transacti…
seidroid[bot] Aug 12, 2026
a70ee22
docs: The Autobahn (giga) config removes the mempool_size field and r…
seidroid[bot] Aug 12, 2026
3d0a2ea
docs: Introduces a new mock_chain_validation build tag (with new Dock…
seidroid[bot] Aug 12, 2026
5a55a56
docs: Adds full support for the `flatkv_only` value of the `sc-write-…
seidroid[bot] Aug 12, 2026
24eb5a4
docs: Two mempool config fields (pending-ttl-duration and pending-ttl…
seidroid[bot] Aug 12, 2026
ef05bb1
docs: Adds new OpenTelemetry metrics for IBC transfer, client, connec…
seidroid[bot] Aug 12, 2026
61b30ce
docs: The parquet/DuckDB receipt store backend and its associated con…
seidroid[bot] Aug 12, 2026
3484e7d
docs: The EVM RPC methods eth_getBlockTransactionCountByNumber and et…
seidroid[bot] Aug 12, 2026
43c4fd0
docs: Adds a new Iterator API plus GetOldestKey/GetNewestKey methods …
seidroid[bot] Aug 12, 2026
a8f847b
docs: Added a hard cap of 100 validators to the Autobahn/sei-tendermi…
seidroid[bot] Aug 12, 2026
2aba5f2
docs: A new consensus config field `unsafe-overrides-enabled` was add…
seidroid[bot] Aug 12, 2026
6089880
docs: The JSON-RPC endpoints sei_traceBlockByNumberExcludeTraceFail a…
seidroid[bot] Aug 12, 2026
5776c3b
docs: Adds a new `seidb evm-logical-digest` command that computes a b…
seidroid[bot] Aug 12, 2026
72199d3
docs: A new v6.6 upgrade version is introduced across all EVM precomp…
seidroid[bot] Aug 13, 2026
4ad60b8
docs: fix unclosed <Warning> in distribution.mdx
monty-sei Aug 13, 2026
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
43 changes: 43 additions & 0 deletions evm/differences-with-ethereum.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
- User accounts on Sei have [two addresses](/learn/accounts) derived from the same public key (Cosmos Bech32 and EVM-compatible 0x…)
- Interoperability between EVM and Cosmos-SDK modules is governed and navigated via [precompiles](/evm/precompiles/example-usage) and [pointer contracts](/learn/pointers)

## Sei EVM Release

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

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/differences-with-ethereum.mdx#L51

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

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

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

## Opcode Differences

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

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/differences-with-ethereum.mdx#L67

Use sentence case for headings: 'Opcode Differences'.

| Opcode | Sei EVM | Ethereum | Notes |
| --- | --- | --- | --- |
Expand All @@ -78,7 +78,7 @@
| 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 81 in evm/differences-with-ethereum.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/differences-with-ethereum.mdx#L81

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 @@ -92,19 +92,19 @@
Coinbase address on Sei is always set to (the EVM address of) the global fee
collector.

## State Root

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

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/differences-with-ethereum.mdx#L95

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 102 in evm/differences-with-ethereum.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/differences-with-ethereum.mdx#L102

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 107 in evm/differences-with-ethereum.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/differences-with-ethereum.mdx#L107

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 @@ -129,7 +129,7 @@
value: '"0.007500000000000000"'
```

## Non-EVM Transactions

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

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/differences-with-ethereum.mdx#L132

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 @@ -137,13 +137,56 @@
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 142 in evm/differences-with-ethereum.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/differences-with-ethereum.mdx#L142

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

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

View workflow job for this annotation

GitHub Actions / vale

[vale] evm/differences-with-ethereum.mdx#L142

[Sei.Headings] Use sentence case for headings: 'EVM Transaction Envelope Restrictions'.
Raw output
{"message": "[Sei.Headings] Use sentence case for headings: 'EVM Transaction Envelope Restrictions'.", "location": {"path": "evm/differences-with-ethereum.mdx", "range": {"start": {"line": 142, "column": 4}}}, "severity": "WARNING"}

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

### No Cosmos wrapper fields on EVM transactions

An EVM transaction must not populate any of the Cosmos wrapper fields. If any of the following are set, the transaction is rejected:

- `memo`
- `timeout_height`
- extension options (`extension_options` / `non_critical_extension_options`)
- `signer_infos`
- fee amount, fee `payer`, and fee `granter`
- top-level `signatures`

The EVM transaction's own signature (`v`, `r`, `s`) lives inside the EVM payload itself, so none of these Cosmos-level fields are needed. This check is applied uniformly to all EVM transactions.



### Whole-block rejection on transaction decode failure

During proposal processing, Sei decodes every transaction in a proposed block. If any transaction fails to decode — or panics during decode — the **entire block proposal is rejected** rather than the offending transaction being silently skipped (treated as nil) while the rest of the block proceeds.

This also affects block gas accounting: a transaction that could not be decoded no longer contributes zero gas and gets skipped; instead its presence causes the block proposal to be rejected outright.

<Warning>

This is a consensus-level behavior change. Tooling that produces malformed or non-canonical transactions can no longer rely on such transactions being individually dropped from an otherwise-valid block — a single undecodable transaction now invalidates the whole proposal. Ensure your signing and broadcast tooling only submits transactions that decode cleanly.

</Warning>

### Rejection of bloated (non-canonical) transaction bodies

The transaction decoder now rejects "bloated" transaction bodies — those whose raw protobuf wire encoding is larger than the canonical re-marshal of the decoded body. Non-canonical encodings (for example, padded fields or an oversized `Any.Value`) that were previously silently canonicalized and accepted are now rejected on decode with a decode error.

<Warning>

These are consensus-level validation changes. Transactions that were previously accepted may now be rejected if they carry Cosmos wrapper fields or use a non-canonical protobuf encoding. Ensure your transaction-signing tooling produces a minimal, canonical envelope with no Cosmos wrapper fields populated.

</Warning>

## Finality

Sei has instant finality — a transaction is final as soon as its block is
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 189 in evm/differences-with-ethereum.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/differences-with-ethereum.mdx#L189

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 @@ -154,7 +197,7 @@
the same time), so Sei does not have a window when "pending state"
exists.

## Gas Model & Fees

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

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/differences-with-ethereum.mdx#L200

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 @@ -176,7 +219,7 @@

</Info>

## SSTORE Gas Cost

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

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/differences-with-ethereum.mdx#L222

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.

Expand All @@ -190,7 +233,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 236 in evm/differences-with-ethereum.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/differences-with-ethereum.mdx#L236

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

Sei’s EVM fully supports the common token standards:

Expand All @@ -200,7 +243,7 @@

Existing OpenZeppelin contracts and tools work unchanged.

## Testing & Migration Checklist

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

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/differences-with-ethereum.mdx#L246

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

- ✅ Re‑deploy your Solidity code to Sei testnet; most contracts need no changes.
- ✅ If you used SELFDESTRUCT, refactor to a soft‑close pattern.
Expand Down
10 changes: 10 additions & 0 deletions evm/evm-parity/state-proofs.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,27 @@
description: 'How eth_getProof differs on Sei due to IAVL tree storage'
---

# State Proofs

Check warning on line 6 in evm/evm-parity/state-proofs.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/state-proofs.mdx#L6

Use sentence case for headings: 'State Proofs'.

Sei supports `eth_getProof` but returns a different proof format from Ethereum. If your application verifies proofs on-chain or off-chain, you need to account for this difference.

## The Difference

Check warning on line 10 in evm/evm-parity/state-proofs.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/state-proofs.mdx#L10

Use sentence case for headings: 'The Difference'.

Ethereum stores state in a Merkle Patricia Trie (MPT) and `eth_getProof` returns MPT inclusion proofs. Sei stores state in an IAVL tree and returns IAVL proofs instead.

The RPC method exists and responds correctly, but the proof data structure is not compatible with Ethereum MPT proof verifiers.

### Store backends

`eth_getProof` resolves the underlying account store by unwrapping known KVStore wrappers until it reaches a proof-capable queryable store. This means proofs are served across a broader range of node configurations, not just a classic IAVL store. Supported roots include:

- Classic IAVL stores
- store/v2 memiavl commitment stores
- Any other proof-capable (queryable) store reached through `tracekv`, Giga cache, or prefix store wrappers

If none of these can be reached, the call returns a `cannot find a proof-capable queryable KV store` error. In all cases the returned proof data is IAVL-format, not Ethereum MPT.

## What This Affects

Check warning on line 26 in evm/evm-parity/state-proofs.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/state-proofs.mdx#L26

Use sentence case for headings: 'What This Affects'.

Most applications do not call `eth_getProof` directly. It is primarily used by:

Expand All @@ -23,7 +33,7 @@

If you are doing standard contract reads, event queries, or transaction lookups, this difference does not affect you.

## Calling eth_getProof

Check warning on line 36 in evm/evm-parity/state-proofs.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/state-proofs.mdx#L36

Use sentence case for headings: 'Calling eth_getProof'.

### Storage key requirements

Expand Down Expand Up @@ -67,7 +77,7 @@

</CodeGroup>

## Verifying Proofs

Check warning on line 80 in evm/evm-parity/state-proofs.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/state-proofs.mdx#L80

Use sentence case for headings: 'Verifying Proofs'.

To verify Sei state proofs, use an IAVL-compatible verifier. Standard Ethereum MPT verifier libraries (e.g. those used in Solidity or in Ethereum bridge contracts) will reject Sei proofs.

Expand Down
12 changes: 12 additions & 0 deletions evm/evm-parity/transaction-types.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@
description: 'Which Ethereum transaction types are supported on Sei'
---

# Transaction Types

Check warning on line 6 in evm/evm-parity/transaction-types.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/transaction-types.mdx#L6

Use sentence case for headings: 'Transaction Types'.

Sei supports most Ethereum transaction types. The one notable exception is blob transactions.

## Supported Types

Check warning on line 10 in evm/evm-parity/transaction-types.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/transaction-types.mdx#L10

Use sentence case for headings: 'Supported Types'.

| Type | EIP | Name | Sei support |
| --- | --- | --- | --- |
Expand All @@ -17,25 +17,37 @@
| 4 | EIP-7702 | Set code | Supported |


### Set Code (EIP-7702) Auth List Requirement

Check warning on line 20 in evm/evm-parity/transaction-types.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/transaction-types.mdx#L20

Use sentence case for headings: 'Set Code (EIP-7702) Auth List Requirement'.

Type 4 (EIP-7702) SetCode transactions must include a non-empty authorization list. A transaction with an empty or nil auth list is rejected during validation with the error `auth list cannot be empty`.

Each authorization entry must also carry a valid (non-nil) chain ID. If you are constructing SetCode transactions directly, ensure at least one authorization is present before submitting.


### Access List and Auth List Entry Validation

Check warning on line 27 in evm/evm-parity/transaction-types.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/transaction-types.mdx#L27

Use sentence case for headings: 'Access List and Auth List Entry Validation'.

Check warning on line 27 in evm/evm-parity/transaction-types.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] evm/evm-parity/transaction-types.mdx#L27

[Sei.Headings] Use sentence case for headings: 'Access List and Auth List Entry Validation'.
Raw output
{"message": "[Sei.Headings] Use sentence case for headings: 'Access List and Auth List Entry Validation'.", "location": {"path": "evm/evm-parity/transaction-types.mdx", "range": {"start": {"line": 27, "column": 5}}}, "severity": "WARNING"}

EVM transactions now undergo stricter semantic validation during `ValidateBasic`. Malformed transactions that were previously accepted may now be rejected.

**Access list entries (type 1 and type 2):** Each access list tuple is validated for well-formed hex encoding. Every address must be a canonical hex address of the correct length, and every storage key must be a canonical hex hash of the correct length. Entries with wrong-length or non-hex values are rejected.

**Auth list entries (type 4):** In addition to the non-empty auth list and non-nil chain ID requirements above, each authorization entry is validated for a canonical hex address and well-formed signature values.

**Signature values:** The `v`, `r`, and `s` signature values (for both the transaction itself and, for type 4, each auth list entry) must not exceed their maximum byte length and must not contain a leading zero byte. Non-canonical signature encodings are rejected.


## Not Supported

Check warning on line 38 in evm/evm-parity/transaction-types.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/transaction-types.mdx#L38

Use sentence case for headings: 'Not Supported'.

| Type | EIP | Name | Notes |
| --- | --- | --- | --- |
| 3 | EIP-4844 | Blob | Not supported — Sei runs Pectra without blob transactions |

## Blob Transactions

Check warning on line 44 in evm/evm-parity/transaction-types.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/transaction-types.mdx#L44

Use sentence case for headings: 'Blob Transactions'.

Sei runs the Pectra hardfork without blob transaction support. Attempting to send a type 3 transaction will be rejected at the RPC level.

If you are porting code from Ethereum that uses blob transactions (e.g. rollup data availability), that path does not apply to Sei.

## Sending Transactions

Check warning on line 50 in evm/evm-parity/transaction-types.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/evm-parity/transaction-types.mdx#L50

Use sentence case for headings: 'Sending Transactions'.

Standard library defaults work correctly. viem, wagmi, and ethers all default to type 2 (EIP-1559) transactions on chains that support it, which Sei does.

Expand Down
3 changes: 0 additions & 3 deletions evm/installing-seid-cli.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@

For more information see [here](https://pkg.go.dev/cmd/go#hdr-GOPATH_environment_variable).

## Command Overview

Check warning on line 84 in evm/installing-seid-cli.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/installing-seid-cli.mdx#L84

Use sentence case for headings: 'Command Overview'.

Seid supports all the commands you need to interact with the chain. To see a list of available commands and explanations of what they do, run seid:

Expand All @@ -97,7 +97,6 @@
add-wasm-genesis-message Wasm genesis subcommands
blocktest run EF blocktest
collect-gentxs Collect genesis txs and output a genesis.json file
compact Compact the application DB fully (only if it is a levelDB)
config Create or query an application CLI configuration file
debug Tool for helping with debugging your application
ethreplay replay EVM transactions
Expand All @@ -106,9 +105,7 @@
help Help about any command
init Initialize private validator, p2p, genesis, and application configuration files
keys Manage your application's keys
latest_version Prints the latest version of the app DB
migrate Migrate genesis to a specified target version
prune Prune app history states by keeping the recent heights and deleting old heights
query Querying subcommands
rollback rollback cosmos-sdk and tendermint state by one height
start Run the full node
Expand All @@ -129,7 +126,7 @@
Use "seid [command] --help" for more information about a command.
```

## Adding a Wallet

Check warning on line 129 in evm/installing-seid-cli.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/installing-seid-cli.mdx#L129

Use sentence case for headings: 'Adding a Wallet'.

You can create a new wallet using the seid keys command:

Expand Down Expand Up @@ -180,16 +177,16 @@
mnemonic: ""
```

## EVM Wallet Compatibility

Check warning on line 180 in evm/installing-seid-cli.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/installing-seid-cli.mdx#L180

Use sentence case for headings: 'EVM Wallet Compatibility'.

### Understanding Coin Types

Check warning on line 182 in evm/installing-seid-cli.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/installing-seid-cli.mdx#L182

Use sentence case for headings: 'Understanding Coin Types'.

Sei supports two coin types:

- Coin type 118 (default): Standard Cosmos address format
- Coin type 60: Ethereum-compatible address format for EVM wallets

### Creating an EVM-Compatible Wallet

Check warning on line 189 in evm/installing-seid-cli.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/installing-seid-cli.mdx#L189

Use sentence case for headings: 'Creating an EVM-Compatible Wallet'.

To create a new wallet that's compatible with EVM wallets like MetaMask:

Expand All @@ -216,7 +213,7 @@

<Info>`evm_address` is shown as empty here because it's only displayed after the key first broadcasts a transaction or is associated on-chain. The `0x` address is deterministically derived from the secp256k1 public key.</Info>

### Importing an Existing EVM Wallet

Check warning on line 216 in evm/installing-seid-cli.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/installing-seid-cli.mdx#L216

Use sentence case for headings: 'Importing an Existing EVM Wallet'.

To import an existing wallet from MetaMask or other EVM wallets:

Expand All @@ -242,7 +239,7 @@

<Info>Use coin type 60 when you want to use the same address across EVM-compatible chains or import from MetaMask. Use the default coin type 118 for standard Cosmos operations.</Info>

## Managing Wallets

Check warning on line 242 in evm/installing-seid-cli.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/installing-seid-cli.mdx#L242

Use sentence case for headings: 'Managing Wallets'.

To see your local wallets, you can run:

Expand Down Expand Up @@ -281,7 +278,7 @@

to see details about a specific wallet.

## Deleting Wallets

Check warning on line 281 in evm/installing-seid-cli.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/installing-seid-cli.mdx#L281

Use sentence case for headings: 'Deleting Wallets'.

To delete a wallet/key, you can use the following command:

Expand Down
6 changes: 6 additions & 0 deletions evm/precompiles/distribution.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

The distribution precompile provides EVM access to Cosmos SDK's distribution module. Smart contracts can manage staking rewards, validator commissions, and withdrawal addresses. This precompile is essential for DeFi applications that need to handle staking rewards programmatically.

## Key Features

Check warning on line 13 in evm/precompiles/distribution.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/precompiles/distribution.mdx#L13

Use sentence case for headings: 'Key Features'.

- **Reward Management**: Withdraw delegation rewards from validators
- **Commission Handling**: Validators can withdraw earned commissions
Expand All @@ -18,7 +18,7 @@
- **Flexible Withdrawals**: Set custom withdrawal addresses
- **Comprehensive Queries**: Access detailed reward information

## Interface Overview

Check warning on line 21 in evm/precompiles/distribution.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/precompiles/distribution.mdx#L21

Use sentence case for headings: 'Interface Overview'.

```solidity
interface IDistr {
Expand All @@ -43,7 +43,7 @@

The distribution precompile emits events for all state-changing operations, allowing off-chain services to track reward distributions and configuration changes.

### WithdrawAddressSet

Check warning on line 46 in evm/precompiles/distribution.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/precompiles/distribution.mdx#L46

Use sentence case for headings: 'WithdrawAddressSet'.

Emitted when a delegator changes their reward withdrawal address.

Expand All @@ -65,7 +65,7 @@
});
```

### DelegationRewardsWithdrawn

Check warning on line 68 in evm/precompiles/distribution.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/precompiles/distribution.mdx#L68

Use sentence case for headings: 'DelegationRewardsWithdrawn'.

Emitted when a delegator withdraws rewards from a single validator.

Expand All @@ -89,7 +89,7 @@
});
```

### MultipleDelegationRewardsWithdrawn

Check warning on line 92 in evm/precompiles/distribution.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/precompiles/distribution.mdx#L92

Use sentence case for headings: 'MultipleDelegationRewardsWithdrawn'.

Emitted when a delegator withdraws rewards from multiple validators in a single transaction.

Expand All @@ -115,7 +115,7 @@
});
```

### ValidatorCommissionWithdrawn

Check warning on line 118 in evm/precompiles/distribution.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/precompiles/distribution.mdx#L118

Use sentence case for headings: 'ValidatorCommissionWithdrawn'.

Emitted when a validator operator withdraws their earned commission.

Expand All @@ -140,9 +140,9 @@

<Info>**Event Amounts**: All event amounts use 6 decimal precision (usei), matching the actual withdrawn token amounts. This differs from the `rewards()` query which returns 18 decimal precision.</Info>

## Transaction Methods

Check warning on line 143 in evm/precompiles/distribution.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/precompiles/distribution.mdx#L143

Use sentence case for headings: 'Transaction Methods'.

### setWithdrawAddress

Check warning on line 145 in evm/precompiles/distribution.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/precompiles/distribution.mdx#L145

Use sentence case for headings: 'setWithdrawAddress'.

Sets the withdrawal address for staking rewards. By default, rewards are sent to the delegator's address, but this can be customized.

Expand All @@ -164,7 +164,13 @@
require(success, "Failed to set withdraw address");
```

<Warning>
**Recipient Validation**: The withdrawal address must be able to receive external funds. If the target address cannot receive external funds — for example, an unassociated EVM-cast address — the call is rejected with `ErrInvalidRecipient` and fails. Ensure the withdrawal address is associated (or otherwise permitted to receive funds) before setting it.

Additionally, if a previously set withdrawal address later becomes invalid (blocked or no longer able to receive external funds), reward withdrawals automatically fall back to sending rewards to the delegator's own address instead.
</Warning>

### withdrawDelegationRewards

Check warning on line 173 in evm/precompiles/distribution.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/precompiles/distribution.mdx#L173

Use sentence case for headings: 'withdrawDelegationRewards'.

Withdraws accumulated rewards from a specific validator.

Expand All @@ -186,7 +192,7 @@
require(success, "Failed to withdraw rewards");
```

### withdrawMultipleDelegationRewards

Check warning on line 195 in evm/precompiles/distribution.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/precompiles/distribution.mdx#L195

Use sentence case for headings: 'withdrawMultipleDelegationRewards'.

Efficiently withdraws rewards from multiple validators in a single transaction.

Expand Down Expand Up @@ -214,7 +220,7 @@

<Info>**Batch Efficiency**: Using `withdrawMultipleDelegationRewards` is significantly more gas-efficient than multiple individual calls, especially when withdrawing from 3+ validators.</Info>

### withdrawValidatorCommission

Check warning on line 223 in evm/precompiles/distribution.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/precompiles/distribution.mdx#L223

Use sentence case for headings: 'withdrawValidatorCommission'.

Allows validators to withdraw their earned commission. Only callable by the validator operator address.

Expand All @@ -236,9 +242,9 @@

<Warning>**Validator Only**: This method can only be called by the validator's operator address. The precompile automatically identifies the validator based on the caller's associated Sei address. If the caller is not a validator operator, the call will fail.</Warning>

## Query Methods

Check warning on line 245 in evm/precompiles/distribution.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/precompiles/distribution.mdx#L245

Use sentence case for headings: 'Query Methods'.

### rewards

Check warning on line 247 in evm/precompiles/distribution.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/precompiles/distribution.mdx#L247

Use sentence case for headings: 'rewards'.

Retrieves comprehensive reward information for a delegator across all validators.

Expand Down Expand Up @@ -307,7 +313,7 @@
}
```

## Understanding Decimal Precision

Check warning on line 316 in evm/precompiles/distribution.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/precompiles/distribution.mdx#L316

Use sentence case for headings: 'Understanding Decimal Precision'.

The distribution precompile has **different decimal precision for queries vs actual withdrawals** due to how rewards are tracked in the Cosmos SDK:

Expand All @@ -319,13 +325,13 @@
| **withdrawValidatorCommission()** | Withdrawn amount (event) | 6 decimals (usei) | `amount / 1e6` |


### Why Different Precisions?

Check warning on line 328 in evm/precompiles/distribution.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/precompiles/distribution.mdx#L328

Use sentence case for headings: 'Why Different Precisions?'.

1. **Pending Rewards (18 decimals)**: The Cosmos SDK tracks pending rewards using `DecCoins` (decimal coins) with 18 decimal precision for higher accuracy during reward accumulation.

2. **Withdrawn Rewards (6 decimals)**: When rewards are actually withdrawn, they are converted to `sdk.Coins` (usei) with 6 decimal precision to match Sei's native token units.

### Conversion Helper Functions

Check warning on line 334 in evm/precompiles/distribution.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/precompiles/distribution.mdx#L334

Use sentence case for headings: 'Conversion Helper Functions'.

```typescript
// Convert pending rewards (18 decimals) to SEI
Expand All @@ -346,9 +352,9 @@

<Info>**Note**: When reconciling pending rewards with actual withdrawals, be aware of the 12-decimal difference (10^12 factor) between query results and withdrawal amounts.</Info>

## Practical Examples

Check warning on line 355 in evm/precompiles/distribution.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/precompiles/distribution.mdx#L355

Use sentence case for headings: 'Practical Examples'.

### DeFi Yield Aggregator

Check warning on line 357 in evm/precompiles/distribution.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/precompiles/distribution.mdx#L357

Use sentence case for headings: 'DeFi Yield Aggregator'.

```solidity
contract YieldAggregator {
Expand Down Expand Up @@ -380,7 +386,7 @@
}
```

### Validator Commission Manager

Check warning on line 389 in evm/precompiles/distribution.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/precompiles/distribution.mdx#L389

Use sentence case for headings: 'Validator Commission Manager'.

```solidity
contract ValidatorManager {
Expand All @@ -403,7 +409,7 @@
}
```

## Error Handling

Check warning on line 412 in evm/precompiles/distribution.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/precompiles/distribution.mdx#L412

Use sentence case for headings: 'Error Handling'.

Common error scenarios and how to handle them:

Expand Down Expand Up @@ -437,16 +443,16 @@
}
```

## Gas Optimization Tips

Check warning on line 446 in evm/precompiles/distribution.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/precompiles/distribution.mdx#L446

Use sentence case for headings: 'Gas Optimization Tips'.

1. **Batch Operations**: Use `withdrawMultipleDelegationRewards` for multiple validators
2. **Check Before Withdraw**: Query rewards first to avoid unnecessary transactions
3. **Set Withdraw Address Once**: Avoid repeated `setWithdrawAddress` calls
4. **Commission Timing**: Withdraw validator commission when amounts are substantial

## Integration Patterns

Check warning on line 453 in evm/precompiles/distribution.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/precompiles/distribution.mdx#L453

Use sentence case for headings: 'Integration Patterns'.

### Auto-Compounding Strategy

Check warning on line 455 in evm/precompiles/distribution.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/precompiles/distribution.mdx#L455

Use sentence case for headings: 'Auto-Compounding Strategy'.

```solidity
// Automatically reinvest rewards back into staking
Expand All @@ -459,7 +465,7 @@
}
```

### Treasury Management

Check warning on line 468 in evm/precompiles/distribution.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/precompiles/distribution.mdx#L468

Use sentence case for headings: 'Treasury Management'.

```solidity
// Route all rewards to a DAO treasury
Expand Down
2 changes: 1 addition & 1 deletion evm/precompiles/oracle.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ keywords: ['oracle precompile', 'ethers.js', 'price feeds', 'exchange rates', 't
---
**Address:** `0x0000000000000000000000000000000000001008`

<Danger>**Deprecation Notice:** The native Sei Oracle is deprecated and will be shut off soon. We strongly recommend migrating to one of the third-party oracle providers, such as [Chainlink](/evm/oracles/chainlink), [Pyth](/evm/oracles/pyth-network), [Redstone](/evm/oracles/redstone), or [API3](/evm/oracles/api3).</Danger>
<Danger>**Retired as of v6.6:** The native Sei Oracle precompile has been retired. On-chain oracle data queries are disabled — calling `getExchangeRates` or `getOracleTwaps` now reverts with the error `oracle precompile is retired; oracle data queries are disabled`. You must migrate to one of the third-party oracle providers, such as [Chainlink](/evm/oracles/chainlink), [Pyth](/evm/oracles/pyth-network), [Redstone](/evm/oracles/redstone), or [API3](/evm/oracles/api3).</Danger>
Loading
Loading