Skip to content

docs: v6.6.0 catch-up - #61

Draft
seidroid[bot] wants to merge 64 commits into
mainfrom
docs-bridge/release-v6.6.0
Draft

docs: v6.6.0 catch-up#61
seidroid[bot] wants to merge 64 commits into
mainfrom
docs-bridge/release-v6.6.0

Conversation

@seidroid

@seidroid seidroid Bot commented Aug 12, 2026

Copy link
Copy Markdown

Documentation catch-up for v6.6.0.

30 source PR(s) produced changes. Each is a separate commit, so this reviews commit-by-commit.

source PR pages touched summary
sei-protocol/sei-chain#3265 node/advanced-config-monitoring.mdx The EVM RPC layer adds new OpenTelemetry metrics (evmrpc_request_latency_seconds histogram and evmrpc_websocket_connects_total counter) alongside legacy Prometheus metrics, which node operators monitoring dashboards should know about.
sei-protocol/sei-chain#3366 node/advanced-config-monitoring.mdx, node/node-operators.mdx Adds OpenTelemetry metrics instrumentation across the FlatKV state store and introduces an EnablePebbleMetrics config knob that overrides per-DB EnableMetrics settings.
sei-protocol/sei-chain#3383 evm/reference.mdx, evm/transactions.mdx Giga executor now writes a status=0 receipt for EVM transactions that fail during state transition (e.g. EIP-7623 floor-data-gas check), so eth_getTransactionReceipt returns a receipt instead of null for nonce-bumping failed txs.
sei-protocol/sei-chain#3401 node/index.mdx Introduces a new mock_block_validation Go build tag that bypasses AppHash and DataHash block validation, producing a separate seid Docker image tagged mock_block_validation-* for testing environments.
sei-protocol/sei-chain#3359 node/node-operators.mdx, evm/tracing/index.mdx Adds a new opt-in trace-baking feature configurable via new [evm] app.toml fields that pre-computes and caches debug_trace* results for RPC nodes.
sei-protocol/sei-chain#3417 node/troubleshooting.mdx Adds a new seidb import-flatkv-from-memiavl CLI command (plus memiavl-latest-version) and a new dump-flatkv --bucket option for migrating/importing EVM state from memiavl into FlatKV, along with the KVImporter Abort/Err lifecycle used by that tool.
sei-protocol/sei-chain#3410 node/technical-reference.mdx, node/node-operators.mdx Out-of-process ABCI support was removed (deprecating the --proxy-app/--abci/--address/--transport flags and proxy-app/abci config fields), the EVM mempool nonce/pending logic was reworked, and eth_getTransactionCount pending nonce is now served via a new mempool endpoint.
sei-protocol/sei-chain#3450 evm/reference.mdx, evm/tracing/index.mdx The sei_getTransactionReceiptExcludeTraceFail and *ExcludeTraceFail trace endpoints changed their filtering logic so that reverted/OOG transactions (which ran in the VM and produce traces) are now included, while only ante-rejected and synthetic txs are excluded.
sei-protocol/sei-chain#3459 evm/tracing/index.mdx, evm/reference.mdx The sei_getBlockByExcludeTraceFail and sei_traceBlockByExcludeTraceFail endpoints now use a broader discriminator so they drop ante-deferred stub transactions (e.g. insufficient-funds/fee failures with EffectiveGasPrice==0 && GasUsed==0), whereas regular eth_getBlockBy* responses still include them.
sei-protocol/sei-chain#3438 node/technical-reference.mdx, node/advanced-config-monitoring.mdx Adds EVM RPC transaction proxying/sharding across autobahn validators, requiring a new evmrpc_url.txt file per node and a new evmrpc field in the autobahn config, plus a new evmrpc_redirected_requests_total metric.
sei-protocol/sei-chain#3463 evm/precompiles/distribution.mdx The distribution module now validates withdraw addresses against bank's CanSendTo check, rejecting SetWithdrawAddr for recipients not allowed to receive external funds and falling back to the delegator address when a stored withdraw address becomes invalid.
sei-protocol/sei-chain#3483 node/technical-reference.mdx Adds a new --persistent-state-dir flag to the tendermint gen-autobahn-config command that controls where autobahn consensus and data WALs are persisted, defaulting to data/autobahn (persistence on) with an empty value disabling persistence for in-memory-only operation.
sei-protocol/sei-chain#3466 node/advanced-config-monitoring.mdx LittDB metrics were migrated from Prometheus client to the global OTel MeterProvider, removing the MetricsNamespace and MetricsRegistry config fields and renaming/re-unitting all exported metric names.
sei-protocol/sei-chain#3464 evm/differences-with-ethereum.mdx ProcessProposal now rejects blocks when any transaction fails to decode, and nil (decode-failure) transactions cause block gas checks to reject the proposal rather than being skipped.
sei-protocol/sei-chain#3501 evm/reference.mdx eth_getTransactionReceipt now returns null (instead of an error) when a transaction's block is above the safe-latest watermark, aligning with the Ethereum JSON-RPC spec's 'not yet mined' signal.
sei-protocol/sei-chain#3476 node/node-operators.mdx, node/technical-reference.mdx The Tendermint mempool was substantially rewritten, changing TTL config semantics and behavior around expired-tx pruning, cache handling, and recheck; TTLDuration/TTLNumBlocks now default to being disabled when zero and RemoveExpiredTxsFromQueue behavior is clarified.
sei-protocol/sei-chain#3473 node/node-operators.mdx, node/technical-reference.mdx, node/giga-storage-migration.mdx Adds a new seidb migrate-evm-status CLI subcommand, a new sc-keys-to-migrate-per-block app.toml config field, a GIGA_MIGRATE_FROM_MEMIAVL cluster env var, and a -mode flag to the evm_stress tool, all supporting the FlatKV EVM migration flow.
sei-protocol/sei-chain#3515 evm/reference.mdx, node/advanced-config-monitoring.mdx The max block lookback guard for debug_trace* RPC methods now applies consistently across debug_traceTransaction, debug_traceBlockByNumber, debug_traceBlockByHash, debug_traceCall, debug_traceStateAccess, and debug_traceTransactionProfile, rejecting requests targeting historical blocks beyond the configured lookback.
sei-protocol/sei-chain#3546 evm/reference.mdx The eth_getTransactionByHash RPC now looks up mempool transactions via an indexed EVM-hash store instead of paginating unconfirmed txs, and UnconfirmedTxs RPC now reads from a recent mempool snapshot changing pagination/total-bytes semantics.
sei-protocol/sei-chain#3522 node/technical-reference.mdx, node/technical-reference.mdx, evm/reference.mdx The Autobahn (giga) config removes the mempool_size field and reworks gas params into wanted/estimated variants, and the giga RPC path now rejects unsafe_flush_mempool and changes some mempool-related behaviors.
sei-protocol/sei-chain#3429 node/index.mdx Introduces a new mock_chain_validation build tag (with new Docker images) that swallows most consensus validation failures, and adds a new sei_unsafe_validation_skipped_total metric emitted by non-default consensus policies.
sei-protocol/sei-chain#3545 node/giga-storage-migration.mdx Adds full support for the flatkv_only value of the sc-write-mode config field, enabling nodes to boot directly in the post-migration FlatKV-only steady state with correct state-sync and snapshot behavior.
sei-protocol/sei-chain#3567 node/node-operators.mdx, node/technical-reference.mdx, node/index.mdx Two mempool config fields (pending-ttl-duration and pending-ttl-num-blocks) are now deprecated and have no effect, and BroadcastTxCommit now respects the timeout-broadcast-tx-commit config value.
sei-protocol/sei-chain#3543 node/advanced-config-monitoring.mdx Adds new OpenTelemetry metrics for IBC transfer, client, connection, channel, and core packet operations that node operators can scrape for observability.
sei-protocol/sei-chain#3580 node/node-operators.mdx, node/giga-storage-migration.mdx The parquet/DuckDB receipt store backend and its associated config fields have been removed; pebbledb is now the only supported receipt-store backend.
sei-protocol/sei-chain#3216 evm/reference.mdx The EVM RPC methods eth_getBlockTransactionCountByNumber and eth_getBlockTransactionCountByHash now return a 'receipts have been pruned' error when the requested block's receipts have been pruned from the receipt store.
sei-protocol/sei-chain#3593 node/advanced-config-monitoring.mdx Adds a new Iterator API plus GetOldestKey/GetNewestKey methods to the LittDB Table interface, along with a new litt_open_iterator_count metric, enabling developers to scan keys/values and query boundary keys.
sei-protocol/sei-chain#3609 node/technical-reference.mdx Added a hard cap of 100 validators to the Autobahn/sei-tendermint committee and introduced wireguard size/count limits on consensus protobuf messages, changing acceptance/rejection behavior for oversized network payloads.
sei-protocol/sei-chain#3601 node/node-operators.mdx A new consensus config field unsafe-overrides-enabled was added that gates whether the Unsafe*TimeoutOverride fields take effect, changing how timeout overrides behave on nodes.
sei-protocol/sei-chain#3618 evm/tracing/index.mdx, node/node-operators.mdx The JSON-RPC endpoints sei_traceBlockByNumberExcludeTraceFail and sei_traceBlockByHashExcludeTraceFail have been removed from the EVM RPC server and legacy sei API allowlist.

Reviewer notes

  • feat(evmrpc): migrate RPC telemetry to OpenTelemetry Meter API sei-chain#3265 — The monitoring page currently documents only Tendermint/Cosmos metrics and generic Prometheus/Grafana setup; there is no existing coverage of EVM RPC metrics (legacy sei_rpc_request_latency_ms, sei_websocket_connect, or the new evmrpc_* OTEL metrics), so this is a new section rather than an update. The legacy sei_* metrics being deprecated (PLT-326) should be flagged for operators still relying on them. No migration step is required by node operators, but dashboard queries should be migrated from sei_* to evmrpc_* before the legacy metrics are removed.
  • metrics(flatkv): add FlatKV observability metrics and logs sei-chain#3366 — The new EnablePebbleMetrics config field must be surfaced with its documented default (the diff's test toggles it to false but does not reveal the DefaultConfig default; a reviewer should confirm the actual default value before finalizing edit content). No page currently documents FlatKV OpenTelemetry metrics; the existing EVM RPC OpenTelemetry Metrics section in advanced-config-monitoring.mdx is the natural home for the new flatkv_* metrics. No migration step is required.
  • fix(giga): write receipt for state-transition errors that bump the nonce (CON-256) sei-chain#3383 — The core change is a node-side behavior fix ensuring eth_getTransactionReceipt returns a failed receipt instead of null for nonce-bumping state-transition failures under the Giga executor. The most accurate place to document it is the eth_getTransactionReceipt method note in evm/reference.mdx. The EIP-7623 floor-data-gas nuance is Pectra-specific; evm/differences-with-ethereum.mdx notes Pectra support but a receipt-behavior note there is optional. Judgment call: the transaction-lifecycle/error-handling example pages describe status:0/reverted semantics generically and likely don't need changes.
  • feat: gate block-validation bypasses behind //go:build mock_block_validation sei-chain#3401 — This is a build-tag/Docker-image change for testing environments only. No user-facing config flag or endpoint is affected, and production behavior is unchanged (zero-value ConsensusPolicy enforces full validation). The sei-docs pages provided do not document build tags or the ECR/Docker testing images (mock_balances, mock_block_validation) at all, so coverage is minimal. The strongest candidate is node/index.mdx's Docker install section, but note the tagged images referenced in the PR go to an internal ECR registry (sei/sei-chain) rather than the public ghcr.io images documented there — so a reviewer should decide whether documenting an internal testing image is even appropriate for public docs. It may be reasonable to conclude no public docs change is warranted; flagging as a low-confidence gap.
  • TraceDB: Add async debug_trace caching sei-chain#3359 — The app.toml template in node/node-operators.mdx (AUTO-GENERATED block) already reflects the new trace_bake_* fields, including trace_bake_use_snapshot and trace_bake_snapshot_window fields that are NOT part of this PR's diff — suggesting the template is auto-synced separately. The documentation gap is in the human-written prose, not the generated template. The evm/reference.mdx debug_traceTransaction entry already mentions that callTracer/prestateTracer/flatCallTracer results are 'pre-baked/cached via TraceBaker,' so that page may already be adequately covered. No migration step is required since the feature is opt-in (default false), but operators should be warned about additional disk usage and the WAL flush on shutdown.
  • test(flatkv): Expands docker-level FlatKV coverage  sei-chain#3417 — The PR adds operator-facing seidb subcommands (import-flatkv-from-memiavl, memiavl-latest-version) and a dump-flatkv --bucket option. dump-flatkv --bucket is already documented in node/troubleshooting.mdx, so that flag is effectively covered; the main gap is that the two new subcommands and the FlatKV import/migration workflow are undocumented anywhere. The detailed OPERATIONS.md added in the PR is an in-repo design/roadmap doc describing future tooling (migrate-evm-status/verify/reconcile) that does not exist yet — do NOT mirror that speculative tooling into sei-docs; only document the commands actually shipped. Judgment call: giga-storage-migration.mdx is about the SS split, whereas this PR is about the SC-layer FlatKV import, so a dedicated section (or eventually a dedicated page) may be cleaner — flagged as add_section for now. Migration caveat worth surfacing to operators: import height must equal memiavl latest to avoid a destructive cosmos rollback via reconcileVersions, and --force is required to overwrite existing committed FlatKV data.
  • Removed callbacks from TxMempool sei-chain#3410 — The core change (removal of out-of-process ABCI, deprecation of --proxy-app/--abci/--address/--transport flags and proxy-app/abci config fields) is a node-operator concern; the migration doc lives in-repo at docs/migration/seiv2_config_migration.md, but the public sei-docs config references should still be updated. The config.toml block in node-operators.mdx is marked AUTO-GENERATED, so the fix there may need to flow from the generator/template rather than a manual edit. The eth_getTransactionCount pending-nonce reworking is an internal implementation detail; existing evm/reference.mdx already documents that the pending tag returns EvmNextPendingNonce from the mempool, so no doc gap exists for that behavioral change.
  • evmrpc: include reverts in *ExcludeTraceFail discriminator (CON-296) sei-chain#3450 — The core behavior change is in the *ExcludeTraceFail endpoints (sei_getTransactionReceiptExcludeTraceFail and the debug traceBlock ExcludeTraceFail variants). These are legacy/Sei-specific extensions that are only lightly referenced in the docs — the reference.mdx legacy methods table (which appears truncated in the provided content) is the most authoritative place. Judgment call: no dedicated page fully documents these endpoints' filtering logic, so the tracing overview is the best secondary spot to clarify semantics. No migration step is required; this is a behavioral fix that makes results more inclusive.
  • evmrpc: filter ante stubs from *ExcludeTraceFail (CON-296) sei-chain#3459 — The change affects the deprecated sei_* extension endpoints (block and trace ExcludeTraceFail variants). The tracing/index.mdx page is the most authoritative doc for ExcludeTraceFail filtering semantics and has a factual inaccuracy (only checks EffectiveGasPrice=0, missing the GasUsed==0 conjunct). Judgment call: the reference.mdx sei_* table is truncated in the provided content, so the exact ExcludeTraceFail descriptions there could not be fully verified — a reviewer should confirm whether that table's block/trace ExcludeTraceFail rows need wording updates. No new page or migration step is required.
  • rpc sharding by tx sender for autobahn sei-chain#3438 — The evmrpc transaction proxying behavior (eth_sendRawTransaction and pending eth_getTransactionCount forwarded to the shard-owning validator) is partially reflected in evm/reference.mdx, which already mentions EvmProxy forwarding for both eth_sendRawTransaction and eth_getTransactionCount pending nonce — so no update is strictly needed there, though a reviewer may wish to add a brief note describing the shard-based proxying mechanism. The migration note (each node directory now requires evmrpc_url.txt for gen-autobahn-config) is the most important gap; flag that operators running gen-autobahn-config must add this file or the command will error. The docker localnode script change is internal tooling and does not require doc changes.
  • Harden distribution withdraw address handling sei-chain#3463 — The change lives in the Cosmos distribution module but is surfaced to EVM users via the distribution precompile's setWithdrawAddress function, so evm/precompiles/distribution.mdx is the most relevant page. No dedicated Cosmos SDK distribution module doc page was provided (Cosmos SDK docs are deprecated), so the precompile page is the right place to document the behavior. No migration step is required, but reviewers should confirm the exact error surfaced to EVM callers (Solidity revert) when the recipient check fails.
  • autobahn: feed persistent_state_dir into data WAL (CON-256) sei-chain#3483 — The change adds a CLI flag and config field that affect on-disk layout (WALs persisted under data/autobahn) and behavior (persistence now on by default). The most relevant existing page is node/technical-reference.mdx, which already documents gen-autobahn-config and the config.toml autobahn-config-file reference. The File Locations tree in the same page could optionally mention the new data/autobahn WAL directory, but the primary gap is the missing --persistent-state-dir flag documentation. No migration step is required, but operators should be aware persistence is now enabled by default without action.
  • STO-533: Convert littdb to use otel sei-chain#3466 — The source PR migrates LittDB metrics from a Prometheus client to the global OTel MeterProvider and removes the MetricsNamespace and MetricsRegistry config fields while changing MetricsPort behavior. None of the supplied docs pages document LittDB config fields or its metric names, so there is no existing config-field doc to correct — the gap is purely in the monitoring/metrics reference. I recommended add_section on advanced-config-monitoring.mdx because it already hosts parallel 'EVM RPC OpenTelemetry Metrics' and 'FlatKV OpenTelemetry Metrics' sections, making it the natural home. If the LittDB Config fields (MetricsNamespace/MetricsRegistry/MetricsPort) are exposed to node operators anywhere in app.toml docs, that would need a config-field update too, but no such surface appears in the supplied pages — worth a human check. Migration note: dashboards/queries referencing the old namespaced names (e.g. {namespace}_read_latency_ms, {cacheName}_cache_weight) and any app config supplying MetricsRegistry/MetricsNamespace must be updated.
  • Tidy app gas accounting loop and tests sei-chain#3464 — The change is a proposal-processing behavior: any undecodable transaction now rejects the whole block proposal, and nil (decode-failure) txs cause block gas checks to reject rather than skip. This is closely related to the existing decode-rejection docs in evm/differences-with-ethereum.mdx ('Rejection of bloated (non-canonical) transaction bodies') and evm/transactions.mdx, where malformed/non-canonical decode failures are already described as being rejected — so the observable end-user effect (malformed txs rejected) is largely covered. The new, undocumented nuance is that the rejection now escalates to the entire block proposal during ProcessProposal rather than only affecting the single tx. This is an internal consensus mechanism detail; it is a judgment call whether it warrants a docs edit at all, since operators/developers cannot craft other users' block contents. No node/configuration flag, default value, or endpoint changed, so node/*.mdx pages are unaffected. If reviewers consider this purely internal, has_gap could reasonably be false.
  • evmrpc: return null from eth_getTransactionReceipt for blocks above safe latest sei-chain#3501 — The change makes eth_getTransactionReceipt return null (not an error) when the receipt's block is above the safe-latest watermark, aligning with eth_getBlockByNumber. The reference page already documents the related status=0 nonce-bump receipt behavior for this method, so this is a targeted addition to the same note. evm/transactions.mdx also discusses receipt behavior for failed transactions but focuses on the status=0 case; a reviewer may optionally consider a brief note there, though the RPC reference is the primary and most accurate place. No migration step required.
  • TxMempool rewrite (CON-305) sei-chain#3476 — The core change is in Tendermint mempool internals (TTL Option semantics, RemoveExpiredTxsFromQueue behavior, and a substantial rewrite affecting ordering/eviction/gossip). The docs config templates are auto-generated (AUTO-GENERATED:CONFIG_TOML) so they may regenerate from the source binary — however the human-readable comments describing TTL semantics ("if non-zero...") are now inaccurate, since zero now means disabled rather than a specific inline behavior. There is no dedicated mempool config reference page documenting RemoveExpiredTxsFromQueue explicitly; it currently only appears indirectly. Judgment call: the node/index.mdx mempool tuning snippets set ttl-duration/ttl-num-blocks to non-zero values so they are unaffected in practice, but operators relying on zero-to-mean-something should be warned. No migration step is strictly required, but operators who intentionally set TTL to 0 expecting the old behavior may see behavior change (TTL purging now disabled).
  • testing(flatkv): evm migration int testings sei-chain#3473 — The bulk of the diff is internal migration-manager plumbing (firstBatchInBlock semantics, hybrid-read fallback, old-DB iteration, DBWriter signature change, new seidb_migration_* OTel metrics) that is not currently surfaced in docs. Judgment calls: (1) GIGA_MIGRATE_FROM_MEMIAVL and the evm_stress -mode flag are test/CI-only tooling not covered in operator docs, so no doc gap is flagged for them beyond the migration-flow context. (2) The new seidb_migration_* metrics could warrant an entry in node/advanced-config-monitoring.mdx if operators are expected to scrape them, but the diff does not indicate these are operator-facing production metrics (migration is a one-time flow), so I did not flag that page — reviewer may reconsider if migration metrics should be documented alongside FlatKV/LittDB metrics. (3) The FlatKV EVM SC migration is a distinct concept from the SS-store migration in giga-storage-migration.mdx; a reviewer may prefer a new dedicated page rather than extending that guide, but no existing page cleanly covers the SC-side FlatKV EVM migration so add_section on the closest page is the conservative call.
  • evmrpc: gate historical debug trace calls sei-chain#3515 — The lookback limit is governed by the existing max_trace_lookback_blocks config field (documented in node/advanced-config-monitoring app.toml as max_trace_lookback_blocks, default 10000, -1 for unlimited). The behavior change is that this guard now applies to all debug_trace* endpoints, not just debug_traceBlockByNumber — worth clarifying in the reference. The evm/tracing/index.mdx overview page lists all trace methods but describes cache behavior, not lookback limits, so it likely does not need an update, though a reviewer may consider adding a note there about historical block rejection.
  • UnconfirmedTxs improvements (CON-322) sei-chain#3546 — The core changes are internal implementation details (indexed EVM-hash mempool lookup, mempool duplicate-EVM-hash rejection, EVMHash required in CheckTx, and UnconfirmedTxs reading from a recent snapshot). These are largely invisible to end users of the documented RPC surface. The only user-facing doc touchpoint is the eth_getTransactionByHash prose in evm/reference.mdx, which is still broadly accurate but describes the old lookup mechanism. There is no dedicated sei-docs page for the Tendermint UnconfirmedTxs RPC or mempool internals, and the pagination/total-bytes semantics change and duplicate-EVM-hash rejection are not documented anywhere — arguably no user-facing doc gap exists for those, so no new page is strictly required. Judgment call: the reference update is optional/minor; if strict accuracy of the mechanism description is not required, this could be treated as has_gap: false.
  • autobahn mempool sei-chain#3522 — The removed mempool_size field is referenced in the seid gen-autobahn-config docs (node/technical-reference.mdx). The wanted vs estimated gas split (MaxGasWantedPerBlock/MaxGasEstimatedPerBlock derived from genesis MaxGasWanted/MaxGas) is a new config surface that is not documented anywhere; the technical-reference gas-limit description should be revisited. The unsafe_flush_mempool behavior change is a user-visible RPC error but is only lightly covered — evm/reference.mdx documents Autobahn RPC behaviors but does not currently mention unsafe_flush_mempool; verify whether a Tendermint RPC method list exists there before adding. These are all Autobahn/giga-only behaviors, so gate any doc edits to the giga context to avoid confusing non-giga node operators.
  • feat(consensus-policy): mock_chain_validation build tag — HandleError + replay-path fix (PLT-338) + CI image sei-chain#3429 — The mock_block_validation warning in node/index.mdx describes it as bypassing AppHash and DataHash validation, which is still accurate after this refactor (the swallow set is unchanged) — only the new mock_chain_validation variant needs adding. The build-tag/binary variants are not deeply documented anywhere; the Docker warning box is the closest existing surface, so it's used for both the new image and testing context. The sei_unsafe_validation_skipped_total metric is operator-facing but only meaningful on testing binaries; consider clarifying that in the added metrics section. No migration steps are required.
  • fix(flatkv): implement flatkv_only mode state-sync int testings sei-chain#3545 — The core change is a new supported value ('flatkv_only') for the existing sc-write-mode config field, which is only documented in node/giga-storage-migration.mdx's 'Write modes' subsection — that page is the clear home for it. The empty-value WAL-replay correctness fix is an internal bug fix with no user-facing config surface and does not itself require a doc change. app.toml default docs in node/node-operators.mdx do not enumerate sc-write-mode values, so no update is needed there. Judgment call: only add_section on the migration guide is warranted; no new page is needed.
  • mempool evm metadata cache (CON-342) sei-chain#3567 — The two mempool fields (pending-ttl-duration, pending-ttl-num-blocks) are deprecated and ignored per the config.go and mempool.go changes; docs currently present them as functional. The BroadcastTxCommit change makes it respect timeout-broadcast-tx-commit — the config field is already documented (default 10s) but its enforcement behavior for the RPC endpoint is a new detail worth a brief note. Note that under Giga/Autobahn mode BroadcastTxCommit routes through the producer mempool, but the timeout wrapping applies regardless; reviewer should confirm phrasing. No new page is needed.
  • feat(ibc): migrate sei-ibc-go metrics to OpenTelemetry with dual emission sei-chain#3543 — This page already documents other OpenTelemetry metric families (EVM RPC, FlatKV, LittDB) in the same style, so the new IBC metrics fit naturally as an additional section rather than a new page. Note that IBC/Cosmos functionality is being deprecated per SIP-3 (see cosmos-sdk/index.mdx) and IBC is disabled in both directions as of July 2026 — the reviewer may want to weigh whether documenting new IBC observability metrics is still warranted given the deprecation, though the metrics remain emitted by the node. The legacy telemetry counters these metrics parallel are marked for removal (TODO PLT-428), so this is a migration-in-progress situation worth flagging.
  • Remove unused parquet and duckdb receipt store sei-chain#3580 — The core config change lives in sei-db/config, but the docs that surface receipt-store backend options to operators are node/node-operators.mdx (default app.toml + Notes) and node/giga-storage-migration.mdx (Giga Storage FAQ). The node-operators.mdx app.toml block is AUTO-GENERATED and already shows only 'pebble (aka pebbledb)' in the generated section, but the hand-written [receipt-store] example and two Notes still reference parquet and TxIndexBackend and must be updated. No migration step is required for operators, but any node explicitly configured with rs-backend="parquet" or RECEIPT_BACKEND=parquet will now fail to start, which is worth flagging in the edits.
  • Include receipt store earliest height in watermark bounds to prevent silent undercount on pruned blocks sei-chain#3216 — The receipt-pruning behavior stems from the receipt store's KeepRecent being derivable from min-retain-blocks independently of ss-keep-recent (documented in node/node-operators.mdx and node/advanced-config-monitoring context). The primary doc gap is the RPC reference method descriptions; no new page is needed. Optionally, node/node-operators.mdx could note that a smaller receipt retention can cause these EVM RPC methods to fail for older blocks, but the RPC reference is the most relevant and precise place to document this behavior change.
  • LittDB iteration sei-chain#3593 — The change adds a public Iterator API plus GetOldestKey/GetNewestKey to the LittDB Table interface and a new litt_open_iterator_count metric. LittDB is an internal storage engine (sei-db/db_engine/litt); the only sei-docs surface that documents it is the 'LittDB OpenTelemetry Metrics' section of node/advanced-config-monitoring.mdx, which enumerates the litt_* metrics — that table needs the new gauge added. The Table interface methods (Iterator/GetOldestKey/GetNewestKey) and the GC-suspension behavior are internal Go APIs with no developer-facing docs page in sei-docs, so no doc update is warranted for those beyond the metric.
  • additional wireguard bounds for autobahn sei-chain#3609 — The change is primarily internal networking/consensus behavior (protobuf wireguard message size/count caps and a 100-validator committee cap). The most relevant existing docs are the Giga Mode / Autobahn sections in node/technical-reference.mdx, which already document per-block payload limits. The validator cap of 100 is operationally meaningful for anyone configuring an Autobahn committee via gen-autobahn-config, so a note there is warranted. The wireguard per-field size/count enforcement is largely an internal implementation detail (rejecting oversized network payloads during decode) and does not have a clean user-facing config surface; it is a judgment call whether to document it beyond mentioning the 100-validator committee cap. No migration step is required.
  • conditional deactivation of consensus timeout overrides in config sei-chain#3601 — The config.toml reference in node-operators.mdx is auto-generated (AUTO-GENERATED:CONFIG_TOML markers) from seid output, so the new unsafe-overrides-enabled field and updated override comments will likely appear once regenerated — but the surrounding prose/descriptions of override behavior still need a manual correction. The config.toml content was truncated in the supplied page right at the [consensus] Unsafe Timeout Overrides section, so verify the exact insertion point. node/technical-reference.mdx also shows a partial [consensus] config.toml block but its unsafe-override fields were truncated; if that block lists the override fields it may also need the new field/behavior note. Migration note for reviewers: nodes relying on Unsafe*TimeoutOverride will silently stop applying overrides after upgrade unless they set unsafe-overrides-enabled = true (or onchain params still equal the legacy pacific-1 badParams) — this backward-compat/migration nuance should be called out to operators.
  • [codex] remove sei debug trace exclude endpoints sei-chain#3618 — The evm/reference.mdx page describes sei_/sei2_ deprecation generally and its content was truncated, so it is unclear whether it enumerates the two removed trace endpoints specifically; a reviewer should verify the truncated Sei Custom Endpoints section does not list them. The node/node-operators.mdx app.toml block is marked AUTO-GENERATED, so the fix there may need to happen at the generator/source (evmrpc/config/config.go) rather than by hand-editing the mdx — flag for the docs sync pipeline.

⚠️ Possible self-contradictions

Flagged by a review of the assembled diff. Each source PR was analysed in isolation, so these were invisible to the per-PR checks. Verify before merging — the checker cannot tell which side of a contradiction is correct.

Analyzing the diff for the three categories of issues:

  • sc-keys-to-migrate-per-block default contradiction: In giga-storage-migration.mdx it states the default is 1024 and "must be > 0", but in node-operators.mdx the entire sc-write-mode / sc-keys-to-migrate-per-block config block is removed from the template. This makes the setting described as both removed (from the app.toml template) and configurable (documented knob in the migration flow). (Category 3)

  • sc-write-mode removed vs. configurable: node-operators.mdx deletes the sc-write-mode field (with its valid values) from the app.toml template, while giga-storage-migration.mdx documents sc-write-mode extensively as an operator-set app.toml field ([state-commit] section) driving the migration. Described as both removed and configurable. (Category 3)

  • FlatKV directory path inconsistency: The dump-flatkv examples use two different DB dirs — $HOME/.sei/data/state_commit/flatkv (with underscore) in one example and $HOME/.sei/data/flatkv in another. Also technical-reference.mdx uses data/state_commit/flatkv. Inconsistent path for the same FlatKV directory. (Category 1)

  • min_valid_per_window / oracle default: technical-reference.mdx states the default "changed from 5%" to 0%. This is internally consistent (not a contradiction on its own) — noted only if paired elsewhere; no conflicting value appears. (No issue.)

  • evm-ss-db-directory default path: node-operators.mdx says it defaults to <home>/data/state_store/evm/{backend}, consistent with giga-storage-migration.mdx (data/state_store/evm/{backend}). (Consistent — no issue.)

  • data/autobahn persistence default: consistently described. (No issue.)

  • GIGA_STORAGE / RECEIPT_BACKEND default (pebble) and parquet removal: consistently described across files. (No issue.)


Generated by sei-docs-bridge. Every change is a proposal — verify against the source PRs before merging.

seidroid Bot added 30 commits August 12, 2026 04:25
…ionCountByHash now recognize the genesis block hash and return the genesis block (and a tx count of 0), keeping hash-based lookups consistent with eth_getBlockByNumber("0x0"). (sei-protocol/sei-chain#3069)
…ull (instead of an error) for empty or non-existent block hashes, matching Ethereum RPC spec. (sei-protocol/sei-chain#3067)
…the config field 'max-outbound-connections' changed type/behavior and its default logic, and the RouterOptions MaxPeers/MaxConnected/MaxConcurrentDials fields were replaced by MaxInbound/MaxOutbound, affecting node connection tuning. (sei-protocol/sei-chain#3037)
… checks on signature values, access lists, auth lists, and Cosmos wrapper fields, plus a new transaction body bloat rejection that may reject previously-accepted transactions. (sei-protocol/sei-chain#3073)
…des a pub_key field (with a zero/empty public key for non-validator nodes) for CosmJS compatibility, changing the status response output. (sei-protocol/sei-chain#3114)
…tBlockByNumber returns null (not an error) for future/non-existent numeric block heights, and eth_getProof works across additional store backends (tracekv, Giga cache, other proof-capable stores) instead of only classic IAVL. (sei-protocol/sei-chain#3119)
…ctionCountByHash RPC methods now return counts consistent with getBlockByNumber, filtering EVM txs by receipt availability and including wasm execute and bank send messages. (sei-protocol/sei-chain#3125)
…sc-enable-lattice-hash) were removed from the node config TOML template, and split_write mode now requires lattice hash to be enabled. (sei-protocol/sei-chain#3128)
…arnings urging users to migrate to SeiDB to avoid data corruption or panic. (sei-protocol/sei-chain#3159)
…h requests by forwarding only the allowed subset and merging responses by id, and the HTTP request body limit was lowered from 32MiB to 5MiB to match go-ethereum's default. (sei-protocol/sei-chain#3160)
…commit (SC) is now mandatory; multiple CLI commands and config fields tied to IAVL/pruning have been removed, and the node will panic if SC is not enabled. (sei-protocol/sei-chain#3146)
… generate an Autobahn (GigaRouter) JSON config from node pubkey files, plus new side-effect files (validator_pubkey.txt, node_pubkey.txt) written when saving keys. (sei-protocol/sei-chain#3220)
…receipt store retention is now always derived from the global `min-retain-blocks` flag. (sei-protocol/sei-chain#3237)
…the node now disables the mempool gossip reactor, consensus reactor, state sync, and block sync, and the Autobahn block producer sources transactions directly from the mempool with new per-block limits (max 2000 txs, ~2MB total). (sei-protocol/sei-chain#3224)
…C 2.0 notification rules: notifications (requests without an id) produce no response entries, so merged batch responses are no longer 1:1 with the request, and an all-notification/empty result returns an empty HTTP body instead of an empty array []. (sei-protocol/sei-chain#3246)
…array [] instead of null when there are no matching logs, aligning with the Ethereum JSON-RPC spec. (sei-protocol/sei-chain#3292)
…ubdirectory layout (data/state_commit, data/state_store, data/ledger, data/tendermint) for new nodes, with automatic backward-compatible fallback to legacy flat paths for existing nodes. (sei-protocol/sei-chain#3155)
…ed, receipt-by-tx-hash lookups that miss the cache now fail fast with an error instead of falling back to a full parquet scan, affecting operators who run nodes with the tx index disabled. (sei-protocol/sei-chain#3294)
…quet (previously unchanged), though callers can still override with an explicit RECEIPT_BACKEND env var. (sei-protocol/sei-chain#3298)
…eturns trace results with detailed timing/store-access profiling, plus a new seidb trace-profile-report CLI command to run it across a block range. (sei-protocol/sei-chain#3267)
…ck_height` field in SyncInfo, and under Autobahn the status endpoint populates height/app-hash from the app layer instead of the CometBFT block store. (sei-protocol/sei-chain#3309)
…l are now treated as normal requests (receiving a response) instead of as notifications; only requests omitting the "id" member are treated as notifications. (sei-protocol/sei-chain#3303)
…ded to sei-tendermint as a temporary disaster-recovery mechanism for chain stalls, requiring validator majority coordination to enable. (sei-protocol/sei-chain#3305)
…ults to true, and the coordination semantics are inverted so validators must coordinate to set it to false. (sei-protocol/sei-chain#3318)
… flag to the `state-size` command for analyzing FlatKV stores. (sei-protocol/sei-chain#3312)
…eprecated and ignored; stateless leader election is always enabled regardless of the value set. (sei-protocol/sei-chain#3319)
…with one extra element (the projected child base fee for the block after the newest block), matching go-ethereum/execution-apis semantics. (sei-protocol/sei-chain#3321)
…/block_by_hash, /block_results, and /validators now serve data via the GigaRouter's in-memory state instead of returning empty/failing responses when the CometBFT BlockStore/StateStore is unpopulated. (sei-protocol/sei-chain#3310)
…aRouter block execution path to prevent valid out-of-order EVM nonce transactions from being evicted and stalling throughput to one tx per block per sender. (sei-protocol/sei-chain#3372)
seidroid Bot added 3 commits August 12, 2026 06:44
…nt committee and introduced wireguard size/count limits on consensus protobuf messages, changing acceptance/rejection behavior for oversized network payloads. (sei-protocol/sei-chain#3609)
…ed that gates whether the Unsafe*TimeoutOverride fields take effect, changing how timeout overrides behave on nodes. (sei-protocol/sei-chain#3601)
…nd sei_traceBlockByHashExcludeTraceFail have been removed from the EVM RPC server and legacy sei API allowlist. (sei-protocol/sei-chain#3618)
@seidroid seidroid Bot added the automated Automated PR from sei-docs-bridge label Aug 12, 2026
seidroid Bot added 2 commits August 12, 2026 23:58
…ackend-independent digest of EVM logical state (account/code/storage) so memiavl and flatkv nodes can be compared at the same height. (sei-protocol/sei-chain#3611)
…iles, and the oracle precompile is now retired so its on-chain queries (getExchangeRates, getOracleTwaps) revert with an error. (sei-protocol/sei-chain#3625)
mint broken-links failed:

  Syntax error - Unable to parse evm/precompiles/distribution.mdx -
  167:1-167:364: Expected a closing tag for `<Warning>` (167:1-167:10)
  before the end of `paragraph`

The callout opened inline on 167, a blank line on 168 ended the MDX
paragraph, and the closing tag sat on 169 — so the element was never closed
within its paragraph. Tag counts balanced 3:3, which is why nothing caught it
before the Mintlify parser.

Restructured to put the tags on their own lines, the multi-paragraph form MDX
accepts and the form already used by the other multi-paragraph Warning in this
same file.
Every claim in this catch-up was cross-checked against sei-chain at the
v6.6.0 tag (656 claims). This commit fixes the 15 major and 26 minor
findings plus adjacent stale text found during verification.

Highlights:
- restore sc-write-mode / sc-keys-to-migrate-per-block to the app.toml
  template (still shipped at v6.6.0; #3473 re-added what #3128 removed)
- drop references to sei_traceBlockBy*ExcludeTraceFail (removed by #3618)
- correct failed-receipt gasUsed claim (v2 fallback writes gasUsed 0 per
  #3768/#3781, superseding #3383)
- FlatKV db label values are account/code/storage/legacy, not *DB
- ttl-duration/ttl-num-blocks moved to config.toml sample with real
  defaults (5s/10)
- oracle precompile retirement re-dated to v6.4.0
- distribution setWithdrawAddress example un-inverted
- remove nonexistent config keys (sc-read-mode, sc-enable-lattice-hash,
  evm-ss-write-mode/read-mode, cosmos_only default, mock_balances-* tag)
- restore FAQ answer displaced by the FlatKV SC migration section
Comment thread node/node-operators.mdx
`metadata`). Routing is controlled by `sc-write-mode` / `sc-read-mode`
and defaults to memiavl-only — FlatKV is only opened when one of those
modes is set to a non-default value.
`metadata`). Routing is controlled by `sc-write-mode` and defaults to

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

The new text at the top of the page is right, but this older paragraph contradicted it. sc-enable = false panics at startup (app/seidb.go:66-68) so IAVL isn't selectable anymore. Reworded in 46de0dc.

Comment thread node/node-operators.mdx
sc-enable-lattice-hash = false
# Default: memiavl_only — all EVM state lives in memiavl. Valid values:
# memiavl_only, migrate_evm, evm_migrated, migrate_all_but_bank,
# all_migrated_but_bank, migrate_bank, flatkv_only, test_only_dual_write.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

cosmos_only is just a legacy alias for memiavl_only, which is the actual default (sei-db/config/sc_config.go:63), and sc-read-mode / sc-enable-lattice-hash don't exist as config keys anywhere at v6.6.0. I've replaced this block with the real knobs in 46de0dc.

# A non-zero value defines the time / number of blocks after which a transaction
# is removed from the mempool; leaving them unset or set to zero disables TTL-based
# purging entirely.
ttl-duration = "5s"

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

ttl-duration and ttl-num-blocks are config.toml keys (sei-tendermint/config/toml.go:378,386), app.toml has no [mempool] section. The shipped defaults are also 5s/10 rather than zero, and since zero now means disabled, anyone copying this sample would switch off TTL purging without realising. Moved and corrected in 46de0dc.


- Caller reads of not-yet-migrated keys fall back to FlatKV for brand-new keys
written after the migration started, and to memiavl otherwise.
- Iteration is served by a merging iterator over both backends (memiavl

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

This behaviour was superseded before the tag was cut. At v6.6.0 iteration merges both backends (CompositeCommitStore.iterate, sei-db/state_db/sc/composite/store.go:859-930) so range scans see the complete key set during a migration. Fixed in 46de0dc.


## FAQ

### Where do the data files live after migrating?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

This section landed between the FAQ question "Where do the data files live after migrating?" and its answer bullets, which left "SC data is untouched by this migration" rendering inside the SC migration section where it's wrong. I've moved it in 46de0dc.

Comment thread node/index.mdx
<Warning>
Sei's continuous integration (CI) pipelines publish testing-only image variants to an internal registry — they are not available on `ghcr.io`. These must **never** be used in production and are compiled with special Go build tags:

- `mock-*` — built with the `mock_balances` build tag; mocks account balances.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

No image with this prefix exists. ecr.yml tags the mock_balances build as mock-* (nightly mock-nightly-*), and these publish to the internal ECR rather than ghcr.io. Fixed in 46de0dc.


| Label | Description |
| --- | --- |
| `db` | The data DB the measurement applies to (for example, `account`, `storage`, `code`, or `legacy`). Present on per-DB metrics such as `flatkv_commit_batch_latency`, `flatkv_flush_latency`, `flatkv_num_kv_pairs`, `flatkv_pending_writes`, `flatkv_import_kv_pairs`, and `flatkv_import_worker_flush_latency`. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

The label values are the directory constants account/code/storage/legacy (flatkv/store.go:43-46). The *DB spellings only exist in error message strings, so PromQL written from this table would match zero series. Fixed in 46de0dc.

Comment thread evm/reference.mdx
**Supported.** Returns the number of EVM transactions in a block by number, as a hex quantity.

**Sei-specific behavior:** Counts EVM transactions only (via getEvmTxCount); synthetic/bank-transfer txs are excluded. Genesis returns 0x0; non-existent/future blocks return null.
**Sei-specific behavior:** Counts the same transactions that appear in `eth_getBlockByNumber`'s transaction list: EVM transactions are counted only when a receipt exists for them, and synthetic (wasm `MsgExecuteContract`) and bank-transfer (`MsgSend`) txs remain excluded under the eth namespace — they are only included in the `sei_`/`sei2_` count variants. Genesis returns 0x0; non-existent/future blocks return null. Because the receipt store can be configured with a smaller `KeepRecent` than the block/state stores, this method now verifies that the requested block's receipts have not been pruned before counting: if they have, it returns an error of the form `requested height N receipts have been pruned; earliest available is M` rather than a count. This means the call can fail for older blocks even when the block data itself is still available.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

This was backwards for the eth_ namespace. NewBlockAPI sets includeShellReceipts=false, includeBankTransfers=false (evmrpc/block.go:94-95) so MsgExecuteContract and MsgSend are excluded, only the sei_/sei2_ variants count them. Fixed in 46de0dc.

Comment thread evm/reference.mdx
| `sei_getTransactionByHash` | Get transaction by hash (includes synthetic txs) |
| `sei_getTransactionCount` | Get account transaction count |
| `sei_getTransactionReceipt` | Get transaction receipt (includes synthetic txs) |
| `sei_getTransactionReceiptExcludeTraceFail` | Get transaction receipt, excluding only txs that never executed. Ante-rejected txs (rejected before reaching the VM, identified by `EffectiveGasPrice == 0` and `GasUsed == 0`) and chain-generated synthetic txs (`ShellEVMTxType`) are filtered out; reverted and out-of-gas transactions are now included, because they ran in the VM and produce real traces. (Previously any receipt with `status=0` was excluded, which over-filtered reverts and OOG failures.) The former `sei_traceBlockByHashExcludeTraceFail`/`sei_traceBlockByNumberExcludeTraceFail` trace endpoints were removed in v6.6.0 (#3618); use the standard `debug_traceBlockByHash`/`debug_traceBlockByNumber` instead. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

These endpoints don't exist at v6.6.0, #3618 (also in this PR) removed them and there are zero grep hits in evmrpc/ at the tag. Replaced with a removal note here and in the method table below in 46de0dc.

Comment thread evm/tracing/index.mdx

Everything that ran 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>

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Same stale replay issue as the reference page, this block was generated from #3450/#3459 and named the two trace endpoints that #3618 removed. The survivors at v6.6.0 are the sei_/sei2_ block variants and sei_getTransactionReceiptExcludeTraceFail. Fixed in 46de0dc.

Comment thread evm/transactions.mdx

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.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

The gasUsed equal to gas limit behaviour never shipped. #3768 (backported as #3781, which is in v6.6.0) reroutes giga execution errors to the v2 fallback, and its EndBlock synthetic receipt has gasUsed 0 (x/evm/keeper/abci.go:124-134). The status 0 instead of null part is still correct. Fixed in both this file and reference.mdx in 46de0dc.

**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.4.0:** 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>

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

The retirement actually shipped in v6.4.0 (git tag --contains on the #3015 commit), #3625 only regenerated the legacy snapshots. I've re-dated the banner and updated the frontmatter, which was still promising real-time exchange rates, in 46de0dc.

```

<Warning>
**Recipient Validation**: The withdrawal address must be able to receive external funds. Through the precompile, an unassociated EVM address is rejected with the error `cannot use an unassociated address as withdraw address`. Separately, the bank module rejects addresses it blocks from receiving external funds with `ErrInvalidRecipient` — for example, the cast address of an EVM account that has since been associated with a different Sei address. Ensure the withdrawal address is associated and permitted to receive funds before setting it.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

This example was inverted. CanAddressReceive returns true for unassociated cast addresses (x/evm/keeper/address.go:81-87), and via the precompile an unassociated withdraw address is rejected earlier with cannot use an unassociated address as withdraw address. ErrInvalidRecipient is the bank blocked case. Rewritten in 46de0dc.

@monty-sei

Copy link
Copy Markdown
Collaborator

I've done a full review of this catch-up against sei-chain at the v6.6.0 tag, 656 claims checked in total. That surfaced 15 major and 26 minor findings, and I've fixed them all directly on the branch in 46de0dc rather than leaving a to-do list, so each inline comment documents what changed and why.

One fix you won't see in the final diff: the bot's commit deleted sc-write-mode and sc-keys-to-migrate-per-block from the app.toml template, but both still ship at v6.6.0 (sei-db/config/toml.go:56,64), so 46de0dc restored them and those lines now net out to unchanged against main. This also settles the self-contradiction flagged in the PR description, giga-storage-migration.mdx was the correct side.

Three of the majors share one root cause worth a bridge guard: commits generated per source PR were never reconciled against later PRs in the same release. #3473 re-added the config fields #3128 removed, #3618 removed endpoints that the #3450/#3459 text still describes, and #3768/#3781 superseded #3383's receipt behaviour before the tag was cut. A final pass that re-validates each assembled page against the release tag (rather than per PR diffs) would catch this whole class.

Two more pipeline notes: the PR table lists 30 source PRs but the diff actually carries content from around 35 (the early commit backlog plus #3611 and #3625 are invisible to anyone reviewing from the table), and several hand-written comments landed inside AUTO-GENERATED blocks where the next regen will clobber them.

Also a heads-up for the next catch-up, these were correct at v6.6.0 but have already changed on main: littidx receipt backend (#3620), gov-driven SC migration replacing manual sc-write-mode (#3650), the legacy to misc bucket rename (#3665/#3758), a third ExcludeTraceFail exclusion class (#3871), and JS tracers disabled (#3718).

Happy to share the full finding-by-finding report if useful, just let me know!

@monty-sei monty-sei left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Approving. Full review against sei-chain v6.6.0 is in the comments above, all findings fixed in 46de0dc and each fix re-verified against source. The drift items called out in my summary are for the next catch-up, not this PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

automated Automated PR from sei-docs-bridge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants