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
119 changes: 43 additions & 76 deletions evm/reference.mdx

Large diffs are not rendered by default.

12 changes: 2 additions & 10 deletions evm/tracing/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@

Debug tracing is your primary tool for understanding EVM transaction execution on Sei. This comprehensive system allows you to analyze transaction flow, optimize gas usage, debug smart contract interactions, and troubleshoot production issues.

## What You Can Trace

Check warning on line 21 in evm/tracing/index.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/tracing/index.mdx#L21

Use sentence case for headings: 'What You Can Trace'.

### Transaction Execution

Check warning on line 23 in evm/tracing/index.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/tracing/index.mdx#L23

Use sentence case for headings: 'Transaction Execution'.

- Step-by-step opcode execution
- Contract call hierarchy
Expand All @@ -34,21 +34,21 @@
- Precompile usage tracking
- External library calls

### Performance Analysis

Check warning on line 37 in evm/tracing/index.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/tracing/index.mdx#L37

Use sentence case for headings: 'Performance Analysis'.

- Gas optimization opportunities
- Bottleneck identification
- Cache hit/miss patterns
- State access efficiency

### Security Analysis

Check warning on line 44 in evm/tracing/index.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/tracing/index.mdx#L44

Use sentence case for headings: 'Security Analysis'.

- Suspicious operation detection
- Reentrancy pattern analysis
- Access control verification
- Vulnerability scanning

## Available Tracing Methods

Check warning on line 51 in evm/tracing/index.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/tracing/index.mdx#L51

Use sentence case for headings: 'Available Tracing Methods'.

| Method | Purpose | Use Case |
| -------------------------- | -------------------------- | ----------------------------- |
Expand All @@ -58,7 +58,7 @@
| `debug_traceStateAccess` | State access patterns | Performance optimization |
| `debug_traceTransactionProfile` | Trace plus timing/store-access profiling | Latency breakdown and DB-access analysis |

## Transaction Analysis Example

Check warning on line 61 in evm/tracing/index.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/tracing/index.mdx#L61

Use sentence case for headings: 'Transaction Analysis Example'.

Tracing an ERC-20 transfer transaction:

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

## Debugging Failed Transactions

Check warning on line 271 in evm/tracing/index.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/tracing/index.mdx#L271

Use sentence case for headings: 'Debugging Failed Transactions'.

Steps to analyze and resolve transaction failures:

Expand All @@ -288,7 +288,7 @@
https://evm-rpc.sei-apis.com
```

### Step 2: Trace the Execution

Check warning on line 291 in evm/tracing/index.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/tracing/index.mdx#L291

Use sentence case for headings: 'Step 2: Trace the Execution'.

```bash
# Trace to see where it failed
Expand Down Expand Up @@ -332,7 +332,7 @@
}
```

### Step 3: Fix and Test

Check warning on line 335 in evm/tracing/index.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/tracing/index.mdx#L335

Use sentence case for headings: 'Step 3: Fix and Test'.

```bash
# Simulate the fix with debug_traceCall
Expand Down Expand Up @@ -363,31 +363,31 @@
https://evm-rpc.sei-apis.com
```

## Common Debugging Scenarios

Check warning on line 366 in evm/tracing/index.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/tracing/index.mdx#L366

Use sentence case for headings: 'Common Debugging Scenarios'.

### Transaction Reverted

Check warning on line 368 in evm/tracing/index.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/tracing/index.mdx#L368

Use sentence case for headings: 'Transaction Reverted'.

**Problem**: Transaction failed with revert
**Solution**: Use `callTracer` to find the exact revert reason

### Out of Gas

Check warning on line 373 in evm/tracing/index.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/tracing/index.mdx#L373

Use sentence case for headings: 'Out of Gas'.

**Problem**: Transaction ran out of gas
**Solution**: Use gas analysis tracer to optimize gas usage

### Unexpected Behavior

Check warning on line 378 in evm/tracing/index.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/tracing/index.mdx#L378

Use sentence case for headings: 'Unexpected Behavior'.

**Problem**: Transaction succeeded but wrong result
**Solution**: Use opcode tracer for step-by-step analysis

### Slow Performance

Check warning on line 383 in evm/tracing/index.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/tracing/index.mdx#L383

Use sentence case for headings: 'Slow Performance'.

**Problem**: Transaction uses too much gas
**Solution**: Use state access tracer to find inefficiencies

## Quick Reference

Check warning on line 388 in evm/tracing/index.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/tracing/index.mdx#L388

Use sentence case for headings: 'Quick Reference'.

### Essential Commands

Check warning on line 390 in evm/tracing/index.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/tracing/index.mdx#L390

Use sentence case for headings: 'Essential Commands'.

```bash
# Trace transaction
Expand All @@ -403,13 +403,13 @@
debug_traceStateAccess(hash)
```

### Common Tracers

Check warning on line 406 in evm/tracing/index.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/tracing/index.mdx#L406

Use sentence case for headings: 'Common Tracers'.

- **`callTracer`**: Contract call hierarchy
- **`opcodeTracer`**: Opcode-level execution
- **Custom JS**: Custom analysis logic

## Pre-Baked Trace Cache

Check warning on line 412 in evm/tracing/index.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/tracing/index.mdx#L412

Use sentence case for headings: 'Pre-Baked Trace Cache'.

RPC nodes can optionally pre-compute and cache `debug_trace*` results in the background so that trace requests are served from a local on-disk cache instead of re-executing the block live on every call. This is an opt-in feature configured through new `[evm]` fields in `app.toml` and is recommended for RPC nodes only.

Expand Down Expand Up @@ -443,19 +443,11 @@

<Warning>Enabling trace baking adds a persistent on-disk store at `<home>/data/trace_db` and increases disk usage. The store's write-ahead log is flushed when the node shuts down cleanly.</Warning>

## `*ExcludeTraceFail` filtering semantics
## Removed legacy trace filters

The `*ExcludeTraceFail` endpoints (`sei_getTransactionReceiptExcludeTraceFail`, `sei_getBlockByNumberExcludeTraceFail`, and `sei_getBlockByHashExcludeTraceFail`) filter out transactions whose trace would be empty or meaningless — specifically, transactions that were included in a block but never actually executed in the VM. These are deprecated legacy endpoints and are disabled by default: each method must be enabled through `enabled_legacy_sei_apis` in the `[evm]` section of `app.toml`. The filter keys off the receipt shape — any receipt with `EffectiveGasPrice == 0 && GasUsed == 0`, plus chain-generated synthetics — which excludes three classes:

- **Ante-deferred stub transactions**: txs that passed the nonce check but failed a later ante step (for example insufficient funds or insufficient fee) and so never reached the VM. The chain writes a stub receipt for these with both fields unset.
- **Nonce-bumping state-transition failures**: txs that fail inside go-ethereum's `Execute()` before any opcode runs (for example an EIP-7623 floor-data-gas shortfall). Their synthetic EndBlock receipt carries the same `EffectiveGasPrice == 0 && GasUsed == 0` shape, so it is filtered identically.
- **Chain-generated synthetic transactions**: txs with the internal `ShellEVMTxType`, which have no real EVM execution.

Everything that executed opcodes in the VM is **included**, even if it failed. Reverted and out-of-gas (OOG) transactions have `Status == 0` but `GasUsed > 0` (intrinsic gas at minimum) and, on chains with a positive minimum gas price, `EffectiveGasPrice > 0`, and produce a real trace (the `REVERT` or OOG condition simply appears inside that trace), so they are returned rather than filtered out.

<Info>This filter applies to the block endpoints (`sei_getBlockByNumberExcludeTraceFail` and `sei_getBlockByHashExcludeTraceFail`, plus their `sei2_` equivalents) and the receipt endpoint (`sei_getTransactionReceiptExcludeTraceFail`): all of them drop these ante-deferred stub transactions. The former `sei_traceBlockByNumberExcludeTraceFail` and `sei_traceBlockByHashExcludeTraceFail` endpoints were removed in v6.6.0 — use `debug_traceBlockByNumber` or `debug_traceBlockByHash` for block tracing. The regular `eth_getBlockBy*` endpoints continue to **include** them, so a tx that appears in a normal block response may be absent from the `*ExcludeTraceFail` variant. The filter checks the underlying receipt shape (`EffectiveGasPrice` and `GasUsed`) rather than any tracer-reported error field.</Info>
<Note>The legacy `*ExcludeTraceFail` endpoints have been removed. Use `debug_traceBlockByNumber` or `debug_traceBlockByHash` for block tracing and `eth_getTransactionReceipt` for EVM receipts. There is no block or filter method for discovering synthetic logs from Cosmos-originated transactions. If you already know a synthetic transaction hash, enable `sei_getTransactionReceipt` to retrieve its receipt and logs.</Note>

## Next Steps

Check warning on line 450 in evm/tracing/index.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/tracing/index.mdx#L450

Use sentence case for headings: 'Next Steps'.

1. **[JavaScript Tracers](/evm/tracing/javascript-tracers)** - Custom analysis scripts
2. **[Troubleshooting](/evm/tracing/troubleshooting)** - Common issues and solutions
Expand Down
21 changes: 9 additions & 12 deletions evm/transactions-with-seid.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

If you don't already have keys configured, you'll need to either generate a new key or import an existing one into your local keyring. Refer to this guide on [how to create a key](/evm/installing-seid-cli) for more details.

## Network Configuration

Check warning on line 16 in evm/transactions-with-seid.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/transactions-with-seid.mdx#L16

Use sentence case for headings: 'Network Configuration'.

If the machine you run these commands from are not a node of the network, you'd need to append the following to your commands:

Expand All @@ -25,7 +25,7 @@

<Info>Most commands support `--evm-rpc` flag to specify custom RPC endpoints. The default is `http://localhost:8545`.</Info>

## Common Transaction Flags

Check warning on line 28 in evm/transactions-with-seid.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/transactions-with-seid.mdx#L28

Use sentence case for headings: 'Common Transaction Flags'.

All transaction commands support these common flags:

Expand All @@ -35,35 +35,32 @@
- `--evm-rpc=<url>` - EVM RPC endpoint URL (default: `http://localhost:8545`)
- `--nonce=<nonce>` - Nonce override for the transaction (-1 means auto-calculate)

## Address Management Commands
## Address management commands

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] These two headings are switched to sentence case while every other heading in the file stays Title Case (## Overview, ## Network Configuration, ## Common Transaction Flags, ## Token Transfer Commands at line 61, ### Send Native Tokens). Either leave them as-is or convert the whole file in a follow-up — a two-heading conversion just makes the page look inconsistent.


### Associate Address
### Associate an address

Associates the Sei address and EVM address on-chain for the sending key. This is required for cross-layer interactions.

```bash
seid tx evm associate-address [optional priv key hex] --from=<sender> --evm-rpc=<url>
seid tx evm native-associate [custom-message] --from=<sender>

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 Parameters: block was dropped here, but every other command in this file keeps one (see Send Native Tokens below). The bracket notation implies [custom-message] is optional, yet the example always passes "associate" and the prose does not say what happens if it is omitted or what the value is used for. Please restore a short parameters list stating whether it is optional and what a caller should put there.

```

**Parameters:**

- `[optional priv key hex]` - Optional private key in hex format. If not provided, uses the key from keyring.
The custom message identifies the association request. This command submits a native transaction, so use standard `seid` transaction flags such as `--node` and `--chain-id` instead of `--evm-rpc`.

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 contradicts the Common Transaction Flags section above (line 30: "All transaction commands support these common flags", including --evm-rpc) and the <Info> at line 26. Worth qualifying that list — e.g. "all EVM-RPC transaction commands" — so the two statements do not conflict on the same page.


**Example:**

```bash
seid tx evm associate-address --from=mykey --evm-rpc=http://localhost:8545
seid tx evm native-associate "associate" \
--from=mykey \
--chain-id pacific-1 \
--node https://rpc.sei-apis.com
```

**Output :**

```
Response: {"jsonrpc":"2.0","result":null,"id":"associate_addr"}
```
<Note>The legacy `seid tx evm associate-address` command and its `sei_associate` JSON-RPC method have been removed.</Note>

## Token Transfer Commands

Check warning on line 61 in evm/transactions-with-seid.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/transactions-with-seid.mdx#L61

Use sentence case for headings: 'Token Transfer Commands'.

### Send Native Tokens

Check warning on line 63 in evm/transactions-with-seid.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/transactions-with-seid.mdx#L63

Use sentence case for headings: 'Send Native Tokens'.

Sends native tokens (usei) to the target EVM address.

Expand Down Expand Up @@ -93,7 +90,7 @@
Transaction hash: 0x...
```

### Send ERC20 Tokens

Check warning on line 93 in evm/transactions-with-seid.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/transactions-with-seid.mdx#L93

Use sentence case for headings: 'Send ERC20 Tokens'.

Sends ERC20 tokens from a specific contract to a recipient.

Expand Down Expand Up @@ -124,9 +121,9 @@
Transaction hash: 0x...
```

## Contract Deployment Commands

Check warning on line 124 in evm/transactions-with-seid.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/transactions-with-seid.mdx#L124

Use sentence case for headings: 'Contract Deployment Commands'.

### Deploy Contract

Check warning on line 126 in evm/transactions-with-seid.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/transactions-with-seid.mdx#L126

Use sentence case for headings: 'Deploy Contract'.

Deploys an EVM contract from a binary file.

Expand Down Expand Up @@ -157,9 +154,9 @@
Transaction hash: 0x...
```

## Contract Interaction Commands

Check warning on line 157 in evm/transactions-with-seid.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/transactions-with-seid.mdx#L157

Use sentence case for headings: 'Contract Interaction Commands'.

### Call Contract

Check warning on line 159 in evm/transactions-with-seid.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/transactions-with-seid.mdx#L159

Use sentence case for headings: 'Call Contract'.

Calls an EVM contract with a specific payload. You can generate payload by taking a look at docs [here](/evm/querying-the-evm#payload-generation).

Expand Down Expand Up @@ -190,7 +187,7 @@
Transaction hash: 0x...
```

### Call Precompile

Check warning on line 190 in evm/transactions-with-seid.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/transactions-with-seid.mdx#L190

Use sentence case for headings: 'Call Precompile'.

Calls a method on a precompiled contract. Precompiles provide EVM access to Cosmos-SDK functionality.

Expand Down Expand Up @@ -233,9 +230,9 @@
Transaction hash: 0x...
```

## Advanced Usage

Check warning on line 233 in evm/transactions-with-seid.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/transactions-with-seid.mdx#L233

Use sentence case for headings: 'Advanced Usage'.

### Custom Gas Settings

Check warning on line 235 in evm/transactions-with-seid.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/transactions-with-seid.mdx#L235

Use sentence case for headings: 'Custom Gas Settings'.

You can customize gas settings for any transaction:

Expand All @@ -246,7 +243,7 @@
--from=mykey
```

### Nonce Management

Check warning on line 246 in evm/transactions-with-seid.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/transactions-with-seid.mdx#L246

Use sentence case for headings: 'Nonce Management'.

Override automatic nonce calculation:

Expand All @@ -256,7 +253,7 @@
--from=mykey
```

## Error Handling

Check warning on line 256 in evm/transactions-with-seid.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/transactions-with-seid.mdx#L256

Use sentence case for headings: 'Error Handling'.

<Warning>
**Common Issues:**
Expand All @@ -268,7 +265,7 @@

</Warning>

## Best Practices

Check warning on line 268 in evm/transactions-with-seid.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/transactions-with-seid.mdx#L268

Use sentence case for headings: 'Best Practices'.

1. **Gas Estimation**: Start with default gas limits and adjust based on transaction complexity
2. **Address Validation**: Always verify addresses before sending transactions
Expand All @@ -276,7 +273,7 @@
4. **Network Verification**: Confirm you're connected to the correct network
5. **Transaction Monitoring**: Save transaction hashes for tracking purposes

## Transaction Requirements

Check warning on line 276 in evm/transactions-with-seid.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/transactions-with-seid.mdx#L276

Use sentence case for headings: 'Transaction Requirements'.

- **Key Configuration**: Local keyring must contain the signing key
- **Sufficient Balance**: Account must have enough tokens for transaction amount + gas
Expand Down
2 changes: 1 addition & 1 deletion evm/transactions.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

Sei supports EVM transactions, allowing compatibility with Ethereum-based tools and contracts. Transactions are signed messages originating from an externally owned account (EOA) that trigger state changes on the blockchain.

## Transaction Lifecycle

Check warning on line 10 in evm/transactions.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/transactions.mdx#L10

Use sentence case for headings: 'Transaction Lifecycle'.

| Stage | Description |
| ----------------- | -------------------------------------------------------------------------------------------------------------------- |
Expand All @@ -24,7 +24,7 @@
Unlike other EVM chains where you need to wait for multiple confirmations, Sei's consensus mechanism provides immediate transaction finality. Once a transaction is included in a block, it cannot be reversed.
</Info>

## Gas Mechanics

Check warning on line 27 in evm/transactions.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/transactions.mdx#L27

Use sentence case for headings: 'Gas Mechanics'.

Gas is a unit of computational work in the EVM that helps prevent spam and allocate resources efficiently:

Expand All @@ -44,7 +44,7 @@
- Always estimate gas before sending transactions using `eth_estimateGas`
</Warning>

## Transaction Structure

Check warning on line 47 in evm/transactions.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/transactions.mdx#L47

Use sentence case for headings: 'Transaction Structure'.

EVM transactions in Sei follow the Ethereum transaction format with standard properties:

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

## Transaction Guidelines

Check warning on line 269 in evm/transactions.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/transactions.mdx#L269

Use sentence case for headings: 'Transaction Guidelines'.

<Info>
**Transaction Best Practices:**
Expand All @@ -285,7 +285,7 @@
| Out of Gas | Gas limit too low for the operation | Use `eth_estimateGas` to set appropriate limit |
| Contract Execution Failed | Contract function reverted | Test with `eth_call` before sending transaction |

## Transaction Validation

Check warning on line 288 in evm/transactions.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/transactions.mdx#L288

Use sentence case for headings: 'Transaction Validation'.

Before an EVM transaction is accepted, Sei performs strict semantic validation of its fields, enforced since v6.5.0. If you construct and sign transactions manually, make sure they are well-formed to avoid rejection.

Expand All @@ -296,13 +296,13 @@

Some EVM transactions pass basic validation and bump the sender's nonce, yet still fail during state transition — for example, a transaction whose gas limit clears the intrinsic-gas check but falls short of the EIP-7623 floor-data-gas requirement (which can occur in normal operation after Pectra). Because these transactions bump the nonce, they are considered to have happened and therefore produce a receipt.

For such failures, Sei writes a synthetic `status=0` (failed) receipt at the end of the block. The receipt reports a `gasUsed` of 0 and an `effectiveGasPrice` of 0, and carries a `VmError` describing the state-transition reason. `eth_getTransactionReceipt` returns this failed-tx receipt instead of `null`. The `VmError` is stored on Sei's internal receipt record and is not included in the `eth_getTransactionReceipt` JSON response; retrieve it with the non-standard `eth_getVMError` method. Because these synthetic receipts carry the ante-stub shape (`EffectiveGasPrice == 0` and `GasUsed == 0`), the legacy `*ExcludeTraceFail` endpoints exclude them along with other never-executed transactions.
For such failures, Sei writes a synthetic `status=0` (failed) receipt at the end of the block. The receipt reports a `gasUsed` of 0 and an `effectiveGasPrice` of 0, and carries a `VmError` describing the state-transition reason. `eth_getTransactionReceipt` returns this failed-tx receipt instead of `null`. The `VmError` is stored on Sei's internal receipt record and is not included in the `eth_getTransactionReceipt` JSON response; retrieve it with the non-standard `eth_getVMError` method.

<Info>
Previously, a nonce-bumping transaction that failed during state transition could return `null` from `eth_getTransactionReceipt` indefinitely, causing clients that poll for a receipt to hang. Clients should now expect a `status=0` receipt for these transactions and treat it as a normal failed-transaction result.
</Info>

## Additional Resources

Check warning on line 305 in evm/transactions.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

evm/transactions.mdx#L305

Use sentence case for headings: 'Additional Resources'.

<CardGroup cols={3}>
<Card horizontal title="RPC Reference" icon="circle-info" href="/evm/reference">
Expand Down
2 changes: 1 addition & 1 deletion learn/accounts.mdx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
---

Check warning on line 1 in learn/accounts.mdx

View workflow job for this annotation

GitHub Actions / audit

Description is 189 chars (ideal 50-160)
title: 'Sei Network Accounts: Dual Address System Explained'
sidebarTitle: 'Account Linking'
description: "Understand how Sei's unified account system works with both EVM (0x) and Cosmos (sei1) addresses, including association methods, security considerations, and cross-environment interactions."
Expand Down Expand Up @@ -32,9 +32,9 @@

Both addresses for a single account are derived from the same **public key**, but the chain can only determine their association **after the public key is known by the chain** via association.

## Key Points

Check warning on line 35 in learn/accounts.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

learn/accounts.mdx#L35

Use sentence case for headings: 'Key Points'.

### Before Linking

Check warning on line 37 in learn/accounts.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

learn/accounts.mdx#L37

Use sentence case for headings: 'Before Linking'.

- The Bech32 (`sei...`) and EVM (`0x...`) addresses are treated as **separate
accounts**.
Expand All @@ -44,12 +44,12 @@
linking.
- Some types of transactions will **not be possible** (see table below).

### After Linking

Check warning on line 47 in learn/accounts.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

learn/accounts.mdx#L47

Use sentence case for headings: 'After Linking'.

- Balances are reflected consistently across both addresses.
- Applications can query either address format seamlessly.

## Wallet Association and Transfer Limitations

Check warning on line 52 in learn/accounts.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

learn/accounts.mdx#L52

Use sentence case for headings: 'Wallet Association and Transfer Limitations'.

Certain actions are **not possible** before wallets are associated:

Expand All @@ -58,7 +58,7 @@
- Transfers of **ERC-based tokens** (e.g., ERC20/721/1155) from an EVM wallet to
an **unassociated Cosmos address**.

## Methods of Association

Check warning on line 61 in learn/accounts.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

learn/accounts.mdx#L61

Use sentence case for headings: 'Methods of Association'.

| Method | Security Risk | User Action Required |
| --- | --- | --- |
Expand All @@ -69,12 +69,12 @@

<Info>Each method ensures the **public key** is known to the chain, enabling automatic association between the EVM-compatible and Bech32 addresses. All four go through the on-chain `addr` precompile (`0x0000000000000000000000000000000000001004`) or the EVM ante handler and are available on every Sei EVM RPC.</Info>

<Note>A previous "gasless" association flow that used the `sei_associate` JSON-RPC method has been retired — the method is part of the deprecated `sei_*` namespace and is not in the default `enabled_legacy_sei_apis` allowlist, so it returns `legacy_sei_deprecated` on public RPCs. Method 3 covers the same wallet-signed-message UX without depending on a gated endpoint. Node operators who want to re-enable the legacy method on their own infrastructure can add `sei_associate` to `enabled_legacy_sei_apis` in `app.toml` — see [Node Operators](/node/node-operators) for the surrounding config.</Note>
<Note>The legacy `sei_associate` JSON-RPC method has been removed. Method 3 provides the same wallet-signed-message flow through the `addr` precompile.</Note>

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 replacement note drops the "gasless" characterization the old text carried. That was the operative property for this flow: sei_associate broadcast a no-gas AssociateTx, whereas the addr precompile path is a regular EVM transaction requiring a funded account — which is precisely the situation an unassociated user is often in. "Method 3 provides the same wallet-signed-message flow" is true for the signing UX but glosses over that funding requirement. Worth one clause spelling out the difference.


Constants for the `addr` precompile can also be found in the repo
[Sei-Chain/precompiles](https://github.com/sei-protocol/sei-chain/tree/main/precompiles/addr):

## Method 1: Broadcast a Transaction

Check warning on line 77 in learn/accounts.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

learn/accounts.mdx#L77

Use sentence case for headings: 'Method 1: Broadcast a Transaction'.

- When an account **broadcasts a transaction** (e.g., sending tokens), its
public key is recorded on-chain.
Expand All @@ -83,7 +83,7 @@
- This ensures balances and transactions are accessible across both address
formats.

## Method 2: Direct Private Key Association

Check warning on line 86 in learn/accounts.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

learn/accounts.mdx#L86

Use sentence case for headings: 'Method 2: Direct Private Key Association'.

<Danger>**Security Risk**: **High** – Requires the private key to be directly available. Exposing the private key can compromise the wallet.</Danger>

Expand Down Expand Up @@ -116,7 +116,7 @@
console.log(response);
```

## Method 3: Associate via Signed Message

Check warning on line 119 in learn/accounts.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

learn/accounts.mdx#L119

Use sentence case for headings: 'Method 3: Associate via Signed Message'.

<Warning>**Security Risk**: **Medium** – Requires signing a specific message using the private key.</Warning>

Expand Down Expand Up @@ -155,7 +155,7 @@
associate();
```

## Method 4: Associate via Public Key

Check warning on line 158 in learn/accounts.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

learn/accounts.mdx#L158

Use sentence case for headings: 'Method 4: Associate via Public Key'.

<Info>**Security Risk**: **Low** – Involves using the public key, which is less sensitive than the private key.</Info>

Expand Down Expand Up @@ -192,11 +192,11 @@
associateViaPubkey();
```

## Query Linked Addresses

Check warning on line 195 in learn/accounts.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

learn/accounts.mdx#L195

Use sentence case for headings: 'Query Linked Addresses'.

Resolve either side of an existing association by calling the `addr` precompile at `0x0000000000000000000000000000000000001004` over a standard `eth_call`. The precompile is universally available on every Sei RPC.

### Fetch Bech32 Address for an EVM Address

Check warning on line 199 in learn/accounts.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

learn/accounts.mdx#L199

Use sentence case for headings: 'Fetch Bech32 Address for an EVM Address'.

```bash
curl -X POST $SEIEVM -H "Content-Type: application/json" -d '{
Expand Down Expand Up @@ -238,7 +238,7 @@
});
```

### Fetch EVM Address for a Sei Address

Check warning on line 241 in learn/accounts.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

learn/accounts.mdx#L241

Use sentence case for headings: 'Fetch EVM Address for a Sei Address'.

```ts
const evmAddr = await client.readContract({
Expand All @@ -251,7 +251,7 @@

The precompile reverts if the address has never been associated; surface this as "not linked" rather than re-throwing.

## Deriving Addresses from the Public Key

Check warning on line 254 in learn/accounts.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

learn/accounts.mdx#L254

Use sentence case for headings: 'Deriving Addresses from the Public Key'.

Both address formats come from the same secp256k1 public key, but they use
**different hashing schemes**: the bech32 (`sei1…`) side follows the standard
Expand All @@ -259,7 +259,7 @@
the EVM (`0x…`) side follows the standard Ethereum derivation (`keccak256` of
the **uncompressed** pubkey without its `0x04` prefix byte).

### Sei Address Derivation

Check warning on line 262 in learn/accounts.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

learn/accounts.mdx#L262

Use sentence case for headings: 'Sei Address Derivation'.

The Cosmos address is derived from the public key using the following steps:

Expand All @@ -284,7 +284,7 @@
}
```

### EVM Address Derivation

Check warning on line 287 in learn/accounts.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

learn/accounts.mdx#L287

Use sentence case for headings: 'EVM Address Derivation'.

The EVM-compatible address is derived as follows:

Expand Down Expand Up @@ -313,7 +313,7 @@
- **EVM Address**: `'0x' + keccak256(uncompressedPubKey[1:])[-20:]` — last 20 bytes of the keccak256 hash, Ethereum-standard derivation.
- The two formats share an account because the chain stores the **public key** itself on association; either format can be derived from it deterministically.

### Why It Works

Check warning on line 316 in learn/accounts.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

learn/accounts.mdx#L316

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

Both formats are deterministic, public-key-derived address schemes. Once the
public key is on-chain (via any of the four association methods above, or
Expand All @@ -328,14 +328,14 @@
- Linking enables dApps and tools to access balances consistently across both
address formats.

## HD Paths and Coin Types

Check warning on line 331 in learn/accounts.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

learn/accounts.mdx#L331

Use sentence case for headings: 'HD Paths and Coin Types'.

When deriving a private key from a mnemonic phrase, the hierarchical
deterministic (HD) path involves multiple parameters, including the coin type.
The coin type determines the blockchain ecosystem for which the key is derived,
making it crucial when dealing with different wallets and blockchains.

### Coin Type Parameter

Check warning on line 338 in learn/accounts.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

learn/accounts.mdx#L338

Use sentence case for headings: 'Coin Type Parameter'.

The second parameter in the HD path specifies the coin type, which is defined by
the BIP-44 standard. This parameter identifies the blockchain ecosystem
Expand All @@ -355,7 +355,7 @@
different set of keys for each coin type, meaning the derived addresses will
differ.

### Private Key Export

Check warning on line 358 in learn/accounts.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

learn/accounts.mdx#L358

Use sentence case for headings: 'Private Key Export'.

Users can export their private key from MetaMask (derived using coin type 60)
and import it into any Cosmos wallet. This works because the private key, once
Expand All @@ -363,12 +363,12 @@
receiving wallet supports the import function. This allows users to manage their
assets across various blockchains using the same underlying cryptographic key.

### Example HD Paths

Check warning on line 366 in learn/accounts.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

learn/accounts.mdx#L366

Use sentence case for headings: 'Example HD Paths'.

- **Traditional Cosmos Path**: `m/44'/118'/0'/0/0`
- **Traditional EVM Path**: `m/44'/60'/0'/0/0`

## Generating Wallets

Check warning on line 371 in learn/accounts.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

learn/accounts.mdx#L371

Use sentence case for headings: 'Generating Wallets'.

### Deriving bech32 and hex addresses from pubkey

Expand Down
45 changes: 7 additions & 38 deletions node/node-operators.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@
including configuration management, maintenance procedures, and best practices
for stable and performant operations.

## Configuration Management

Check warning on line 12 in node/node-operators.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

node/node-operators.mdx#L12

Use sentence case for headings: 'Configuration Management'.

### Directory Structure

Check warning on line 14 in node/node-operators.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

node/node-operators.mdx#L14

Use sentence case for headings: 'Directory Structure'.

The Sei node configuration is stored in `$HOME/.sei/config/`:

Expand Down Expand Up @@ -40,9 +40,9 @@
[Default Configurations](#default-configurations) at the bottom of this
section.

### Essential Configuration Parameters

Check warning on line 43 in node/node-operators.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

node/node-operators.mdx#L43

Use sentence case for headings: 'Essential Configuration Parameters'.

#### Network Settings (config.toml)

Check warning on line 45 in node/node-operators.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

node/node-operators.mdx#L45

Use sentence case for headings: 'Network Settings (config.toml)'.

```toml
[p2p]
Expand All @@ -68,7 +68,7 @@
timeout-broadcast-tx-commit = "10s"
```

#### Application Settings (app.toml)

Check warning on line 71 in node/node-operators.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

node/node-operators.mdx#L71

Use sentence case for headings: 'Application Settings (app.toml)'.

```toml
# Minimum gas prices to prevent spam transactions
Expand Down Expand Up @@ -120,7 +120,7 @@
former `receipt-store.tx-index-backend` config field has been removed.
</Note>

### Default Configurations

Check warning on line 123 in node/node-operators.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

node/node-operators.mdx#L123

Use sentence case for headings: 'Default Configurations'.

The full unmodified `app.toml`, `config.toml`, and `client.toml` produced by
`seid init` against the latest tagged `seid` release. Use these as the
Expand Down Expand Up @@ -432,55 +432,24 @@
# Deny list defines list of methods that EVM RPC should fail fast, e.g ["debug_traceBlockByNumber"]
deny_list = []

# Legacy sei_* / sei2_* JSON-RPC (EVM HTTP only - not Cosmos REST on 1317).
# Legacy sei_* JSON-RPC (EVM HTTP only - not Cosmos REST on 1317).
#
# DEPRECATION: The sei_* and sei2_* JSON-RPC surfaces are deprecated and scheduled for removal. Do not
# build new integrations on them; use eth_* / debug_* and documented replacements. HTTP 200;
# DEPRECATION: The remaining sei_* JSON-RPC surface is deprecated and scheduled for removal. Do not
# build new integrations on it; use eth_* / debug_* and documented replacements. HTTP 200;
# gate errors use standard JSON-RPC error encoding (see evmrpc/AGENTS.md). Successful allowlisted
# responses are unchanged; nodes may set HTTP header Sei-Legacy-RPC-Deprecation (see AGENTS.md).
#
# The sei2_* namespace and obsolete sei_* methods have been removed.
#
# Only methods listed in enabled_legacy_sei_apis are allowed. Init defaults enable the three
# address/Cosmos helpers; uncomment optional lines below to enable more legacy methods (include
# sei2_* block methods at the end of the list if you need them).
# address/Cosmos helpers; uncomment the receipt method below to enable it.
enabled_legacy_sei_apis = [
"sei_getSeiAddress",
"sei_getEVMAddress",
"sei_getCosmosTx",

# Optional legacy methods - uncomment to enable (same deprecation applies):
# "sei_associate",
# "sei_getBlockByHash",
# "sei_getBlockByHashExcludeTraceFail",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Hand-edited auto-generated config

Medium Severity

The enabled_legacy_sei_apis cleanup edits comments and allowlist entries inside the AUTO-GENERATED:APP_TOML block. That block is replaced wholesale by scripts/sync-default-configs.mjs from seid init output, so hand-written changes are clobbered on the next sync and can drift from the real defaults. This violates the rule against hand-editing inside AUTO-GENERATED config blocks.

Fix in Cursor Fix in Web

Triggered by learned rule: Do not hand-edit inside AUTO-GENERATED config blocks

Reviewed by Cursor Bugbot for commit 3b93eb7. Configure here.

# "sei_getBlockByNumber",
# "sei_getBlockByNumberExcludeTraceFail",
# "sei_getBlockReceipts",
# "sei_getBlockTransactionCountByHash",
# "sei_getBlockTransactionCountByNumber",
# "sei_getEvmTx",
# "sei_getFilterChanges",
# "sei_getFilterLogs",
# "sei_getLogs",
# "sei_getTransactionByBlockHashAndIndex",
# "sei_getTransactionByBlockNumberAndIndex",
# "sei_getTransactionByHash",
# "sei_getTransactionCount",
# "sei_getTransactionErrorByHash",
# Optional legacy method - uncomment to enable (same deprecation applies):
# "sei_getTransactionReceipt",
# "sei_getTransactionReceiptExcludeTraceFail",
# "sei_getVMError",
# "sei_newBlockFilter",
# "sei_newFilter",
# "sei_sign",
# "sei_uninstallFilter",
#
# Optional sei2_* block namespace (bank transfers in blocks; HTTP only):
# "sei2_getBlockByHash",
# "sei2_getBlockByHashExcludeTraceFail",
# "sei2_getBlockByNumber",
# "sei2_getBlockByNumberExcludeTraceFail",
# "sei2_getBlockReceipts",
# "sei2_getBlockTransactionCountByHash",
# "sei2_getBlockTransactionCountByNumber",
]

# max number of logs returned if block range is open-ended
Expand Down Expand Up @@ -1425,7 +1394,7 @@
</Tab>
</Tabs>

## Database Management

Check warning on line 1397 in node/node-operators.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

node/node-operators.mdx#L1397

Use sentence case for headings: 'Database Management'.

### Architecture

Expand All @@ -1449,7 +1418,7 @@
makes the node panic at startup with `SeiDB state-commit (SC) must be
enabled; IAVL backend has been fully deprecated` — every node runs on SeiDB.

### SeiDB Configuration

Check warning on line 1421 in node/node-operators.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

node/node-operators.mdx#L1421

Use sentence case for headings: 'SeiDB Configuration'.

The full set of knobs is in the auto-generated
[Default Configurations](#default-configurations) above. The block below
Expand Down Expand Up @@ -1530,7 +1499,7 @@
snapshot creation. Too-large (less frequent) intervals mean pruning takes
longer overall, which can cause missed blocks and excessive resync time.

#### PebbleDB version encoding

Check warning on line 1502 in node/node-operators.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

node/node-operators.mdx#L1502

Use sentence case for headings: 'PebbleDB version encoding'.

Fresh PebbleDB state stores use descending-version MVCC encoding. Sei includes
the version in each key and sorts newer versions first. This lets
Expand Down Expand Up @@ -1583,7 +1552,7 @@
but it does not remove the cost of long-history iteration. Benchmark the
replacement under your trace workload before you cut over.

### Giga Storage and Giga Executor

Check warning on line 1555 in node/node-operators.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

node/node-operators.mdx#L1555

Use sentence case for headings: 'Giga Storage and Giga Executor'.

These are two **separate** opt-in features that ship in newer `seid`
releases. Both default to off; only enable them deliberately and after
Expand Down Expand Up @@ -1628,7 +1597,7 @@
occ_enabled = false
```

### Database Maintenance

Check warning on line 1600 in node/node-operators.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

node/node-operators.mdx#L1600

Use sentence case for headings: 'Database Maintenance'.

The database is typically stable and can be left alone, although some attention
may be required:
Expand All @@ -1655,9 +1624,9 @@

<Warning>The wipe command above deletes the entire local database (everything except `priv_validator_state.json`) and the `wasm` folder. It does not compact data in place — after running it, the node must be re-synced from a [snapshot](/node/snapshot) or via [state sync](/node/statesync) before it can serve traffic again.</Warning>

## Service Management

Check warning on line 1627 in node/node-operators.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

node/node-operators.mdx#L1627

Use sentence case for headings: 'Service Management'.

### Systemd Commands

Check warning on line 1629 in node/node-operators.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

node/node-operators.mdx#L1629

Use sentence case for headings: 'Systemd Commands'.

```bash
# Check service status
Expand All @@ -1676,7 +1645,7 @@
journalctl -fu seid -o cat
```

### Log Management

Check warning on line 1648 in node/node-operators.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

node/node-operators.mdx#L1648

Use sentence case for headings: 'Log Management'.

Prevent logs from consuming excessive disk space by enabling rotation:

Expand All @@ -1697,7 +1666,7 @@
EOF
```

## Update Procedures

Check warning on line 1669 in node/node-operators.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

node/node-operators.mdx#L1669

Use sentence case for headings: 'Update Procedures'.

<Info>
Upgrade with the same method you originally installed with: `make install`
Expand All @@ -1707,7 +1676,7 @@
`which -a seid` lists every copy.
</Info>

### Minor Updates

Check warning on line 1679 in node/node-operators.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

node/node-operators.mdx#L1679

Use sentence case for headings: 'Minor Updates'.

For minor updates that are non-consensus-breaking:

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

### Major Updates

Check warning on line 1721 in node/node-operators.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

node/node-operators.mdx#L1721

Use sentence case for headings: 'Major Updates'.

For major upgrades that introduce state-breaking changes:

Expand Down Expand Up @@ -1793,7 +1762,7 @@
halt-height so the swap takes seconds at upgrade time.
</Tip>

## Performance Optimization

Check warning on line 1765 in node/node-operators.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

node/node-operators.mdx#L1765

Use sentence case for headings: 'Performance Optimization'.

Performance optimizations can yield different results depending on your system's
hardware, workload, and network conditions. Before implementing any changes,
Expand All @@ -1801,7 +1770,7 @@
your specific configuration and requirements. Always back up important data
before making modifications.

### Memory Management (sysctl tuning)

Check warning on line 1773 in node/node-operators.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

node/node-operators.mdx#L1773

Use sentence case for headings: 'Memory Management (sysctl tuning)'.

Optimizing memory management settings can help improve performance and
stability, particularly for high-load nodes. These settings control swap usage
Expand All @@ -1815,7 +1784,7 @@
vm.dirty_writeback_centisecs = 100 # Frequency (in hundredths of a second) at which the system writes "dirty" pages to disk
```

### Network Stack Optimization

Check warning on line 1787 in node/node-operators.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

node/node-operators.mdx#L1787

Use sentence case for headings: 'Network Stack Optimization'.

Tuning the network stack can enhance packet processing efficiency and
throughput, particularly for nodes handling a large number of peers and high
Expand All @@ -1829,7 +1798,7 @@
net.core.wmem_max = 16777216 # send buffer size for network sockets
```

### Storage Optimization

Check warning on line 1801 in node/node-operators.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

node/node-operators.mdx#L1801

Use sentence case for headings: 'Storage Optimization'.

Optimizing storage settings can significantly reduce write latency and improve
database performance, especially for nodes using NVMe SSDs.
Expand All @@ -1839,9 +1808,9 @@
blockdev --setra 4096 /dev/nvme0n1 # readahead value to optimize sequential reads
```

## Backup and Recovery

Check warning on line 1811 in node/node-operators.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

node/node-operators.mdx#L1811

Use sentence case for headings: 'Backup and Recovery'.

### Regular Backups

Check warning on line 1813 in node/node-operators.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

node/node-operators.mdx#L1813

Use sentence case for headings: 'Regular Backups'.

Automate backups to avoid data loss:

Expand All @@ -1860,7 +1829,7 @@
systemctl start seid
```

### Recovery Procedure

Check warning on line 1832 in node/node-operators.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

node/node-operators.mdx#L1832

Use sentence case for headings: 'Recovery Procedure'.

Restoring from backup in case of corruption or accidental deletion:

Expand All @@ -1878,7 +1847,7 @@
systemctl start seid
```

## Security Considerations

Check warning on line 1850 in node/node-operators.mdx

View check run for this annotation

Mintlify / Mintlify Validation (seilabs) - vale-spellcheck

node/node-operators.mdx#L1850

Use sentence case for headings: 'Security Considerations'.

- Use firewalls and rate-limiting to prevent attacks
- Keep your system and node software updated
Expand Down
Loading
Loading