Repository navigation
docs: v6.7.0 catch-up - #95
seidroid[bot] wants to merge 42 commits into
Conversation
…trics for FlatKV state-commit, state-store, and receipt-store Pebble DBs, plus exposes FlatKV config fields in the server config template. (sei-protocol/sei-chain#3566)
…node's `mode` config field, adds a new `max_inbound_fullnode_peers` config field, moves the `autobahn-config-file` key to top-level in config.toml, and changes the `evmrpc` field in autobahn.json to be required on every validator. (sei-protocol/sei-chain#3525)
…er of calls allowed in an `eth_estimateGasAfterCalls` request, defaulting to 100. (sei-protocol/sei-chain#3631)
…, enabling runtime write-mode migration transitions without restarts, with important operator warnings about never using it on flatkv_only nodes. (sei-protocol/sei-chain#3581)
… cap concurrent logs subscriptions (default 1000), beyond which new logs subscriptions are rejected. (sei-protocol/sei-chain#3621)
…store configuration, adding a LittDB-based receipt store with a pebble tag index for eth_getLogs filtering. (sei-protocol/sei-chain#3620)
…st rate limiter and can reject requests with a 'server busy' error when the limit is exceeded. (sei-protocol/sei-chain#3646)
…lets operators disable the HashVault app-hash equivocation guard, and introduces HashVault recovery guidance for startup panics involving hash mismatches. (sei-protocol/sei-chain#3602)
…ilter-parallelism` (default 16) that bounds how many blocks a single eth_getLogs query scans concurrently in the littidx backend. (sei-protocol/sei-chain#3652)
…gured TraceTimeout and caps retained per-module state-access payload at 4 MiB (adding a 'truncated' field to the response), changing behavior to prevent OOM and unbounded traces. (sei-protocol/sei-chain#3653)
…max_concurrent_request_bytes) plus a new Prometheus metric to bound JSON-RPC request body sizes and concurrent request memory via pre-decode admission control. (sei-protocol/sei-chain#3648)
…with five new app.toml config fields (sc-hash-logger-*), enabled by default, for recording named block hashes for debugging/forensics. (sei-protocol/sei-chain#3647)
… with a durable gc-watermark file, adding six new config fields, changing the default GC period, and removing the CacheAwareGet API. (sei-protocol/sei-chain#3645)
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Automations to automatically generate PRs for you. |
…ble that selects the config manager for seid; unset/'legacy' uses the existing path, 'v2' is a not-yet-implemented stub that errors, and invalid values fail hard. (sei-protocol/sei-chain#3671)
…ze, max-open-connections, keepalive/connection-age settings) with bounded defaults applied even when absent from older config files. (sei-protocol/sei-chain#3641)
…sh-only, --read-limit-mb) for computing/verifying lattice hashes and throttling scan throughput, and --output-dir is no longer required when using --lthash-only. (sei-protocol/sei-chain#3665)
… on every emitted metric series, which affects dashboards and alerting queries for node operators. (sei-protocol/sei-chain#3692)
…sus-unsafe binary variant using a lenient tx decoder (no body-bloat rejection) for replaying historical blocks. (sei-protocol/sei-chain#3691)
…` that caps retained struct-logger output per traced transaction on default debug_trace* endpoints, defaulting to 32 MiB (0 = unlimited). (sei-protocol/sei-chain#3677)
…block` and `compare` subcommands for inspecting and diffing hash log archives produced by the hashlogger. (sei-protocol/sei-chain#3676)
…osmos_only" value from v6.4/v6.5 app.toml files, mapping it to the current "memiavl_only" routing for backward-compatible upgrades. (sei-protocol/sei-chain#3704)
…annelSize, AutoFlushByteThreshold, KeymapManagerMaxBatchBytes, MetricsServeEndpoint) and tightens the maximum value size to 2^32-1 bytes (~4 GiB), rejecting larger values that previously could span the boundary. (sei-protocol/sei-chain#3683)
…ies them to baseapp, enabling pruning configuration (e.g., --pruning) to actually take effect. (sei-protocol/sei-chain#3725)
…, max_state_override_slots) that cap the size of state overrides in eth_call, eth_estimateGas, eth_estimateGasAfterCalls, and debug_traceCall, with correct go-ethereum SetStorage overlay semantics. (sei-protocol/sei-chain#3722)
…d global label and new metrics subsystems were added; internal metrics APIs were refactored to use global registries (not user-facing). (sei-protocol/sei-chain#3682)
…ckend, a new --memiavl-open-mode flag (snapshot/replay), and new --flatkv-dir/--memiavl-dir flags for comparing EVM logical state across backends on a migrating node. (sei-protocol/sei-chain#3711)
… use on debug_trace* endpoints, restricting to a native allowlist and disabling request-supplied JavaScript tracers by default. (sei-protocol/sei-chain#3718)
…) that compresses values on disk, introduces a v4 segment metadata format, lowers the max value size to 2^32-2 bytes, and restricts secondary keys to full-value aliases on compressed tables. (sei-protocol/sei-chain#3769)
…100,000) that bounds the total KV index entries all in-flight tx_search/block_search requests may visit, returning an error when the process-wide budget is exceeded. (sei-protocol/sei-chain#3708)
…ed persistence to a LittDB-backed BlockDB, adding new config file fields and new CLI flags to the gen-autobahn-config command for tuning BlockDB retention and GC. (sei-protocol/sei-chain#3707)
…nt, mint, params, slashing, upgrade) and expands bank, distribution, and gov precompiles with many new read-only query methods, plus a new AssociatePubKey transaction on the addr precompile. (sei-protocol/sei-chain#3767)
…g (last 256 blocks) plus a process-local cache, making the BLOCKHASH opcode return correct historical block hashes for the previous 256 blocks. (sei-protocol/sei-chain#3811)
…g_no_block` behavior so `eth_getLogs` now errors (instead of silently truncating) when a bounded or open-ended query exceeds the matched-log count or estimated heap-byte budget. (sei-protocol/sei-chain#3759)
…a before decoding it, so calls that supply too little gas are rejected and gas costs for existing precompile calls have increased slightly. (sei-protocol/sei-chain#3737)
…tartup on bind failure), the metrics server gains read/write/idle timeouts, and the max-open-connections config field's behavior is clarified. (sei-protocol/sei-chain#3819)
…ic gas model, changing how gas is metered and charged for these on-chain precompile calls (notably p256 now uses a fixed 3450 gas verification cost per RIP-7212). (sei-protocol/sei-chain#3813)
…eys (including recursive validation of nested multisig keys with depth and signature-count limits) before deriving addresses or persisting them, rejecting malformed pubkeys and deeply nested multisigs. (sei-protocol/sei-chain#3791)
…lRewards) are now read-only and no longer mutate validator-period state as of v6.7.0, making them idempotent. (sei-protocol/sei-chain#3738)
…sei-config-backed manager that performs advisory config validation (logging warnings for invalid fields) while booting identically to legacy; previously v2 was an unimplemented stub that errored. (sei-protocol/sei-chain#3678)
…allowing a validator operator to unjail their validator via the EVM precompile at the slashing precompile address. (sei-protocol/sei-chain#3825)
…onfig (max_request_body_bytes, max_concurrent_request_bytes) and adds a new ws_admission_timeout config field, with the WS frame size default dropping from 10 MiB to 5 MiB requiring operator action. (sei-protocol/sei-chain#3818)
PR SummaryMedium Risk Overview EVM-facing behavior is documented more strictly: Node/operator sections add Review blockers called out in the PR description: Reviewed by Cursor Bugbot for commit ec1651c. Bugbot is set up for automated code reviews on this repo. Configure here. |
There was a problem hiding this comment.
This large automated v6.7.0 docs catch-up has several issues that block merging. It adds a Feegrant precompile page and nav entry for a precompile that isn't registered at the tag, and it documents a nonexistent sc-keys-to-migrate-per-block app.toml key. It also has an unmatched </Note> that can break MDX compilation, a pruning TOML sample under the wrong table, and misplaced evm-logical-digest flags. The PR's own "Failed final verification" section lists several of these and says they must be resolved before merging, and verification never finished for four pages.
Findings: 10 blocking | 9 non-blocking | 11 posted inline
Blockers
- The PR body's "Failed final verification against the release tag" section is unresolved. The Feegrant precompile, the slashing "all view" note and
sc-keys-to-migrate-per-blockcontradict the v6.7.0 tag, so this PR must not merge until those items are fixed. - Claim-by-claim verification never completed for
evm/reference.mdx,node/advanced-config-monitoring.mdx,node/technical-reference.mdxandnode/troubleshooting.mdx(verifier turn/time budget ran out). Someone needs to check these pages against the release by hand before merge. docs.jsonaddsevm/precompiles/feegrantto the navigation. Feegrant isn't registered at v6.7.0 (TestFeegrantPrecompileIsNotRegistered), so remove the nav entry along with the page.- 7 blocking issue(s) flagged inline on specific lines.
Non-blocking
- The Cursor review pass produced no output (
cursor-review.mdis empty).REVIEW_GUIDELINES.mdis also empty, so this review applied the AGENTS.md conventions instead. - Generated prose leaks internal source-PR references such as
(#3618),(#3818)and(#)into reader-facing copy:evm/reference.mdx:1173,node/advanced-config-monitoring.mdx:586,node/node-operators.mdx:818,evm/precompiles/distribution.mdx:265. Several of these also cite the wrong PR (#3618 is used for the pruning change, which came from #3725). Strip them. - The new precompile pages (auth, authz, evidence, mint, params, slashing, upgrade) are versioned at v6.6/v6.7. Add an availability or version note, and check that
@sei-js/precompilesexports the matching ABIs before any TS examples reference them. - The
eth_getLogschange from truncating to erroring may break clients. The benchmark innode/advanced-config-monitoring.mdxthat checkslogsCount === 10000should probably check for the new error instead. - The WebSocket frame-size default drops from 10 MiB to 5 MiB, which requires operator action. Make sure
websocket.mdxpresents this as an upgrade<Warning>, not plain prose. - 4 suggestion(s)/nit(s) flagged inline on specific lines.
Inline comments (could not post inline; listed here)
node/node-operators.mdx:831(RIGHT) -- [blocker] This</Note>has no matching opener because the previous<Note>already closes at line 812. Unbalanced JSX will fail MDX compilation. Either remove this tag or wrap the new "Cosmos SDK state pruning" section in its own<Note>. Also drop the(#3618)reference at line 818; it's an internal PR link and points at the wrong PR (the pruning change is #3725).evm/precompiles/feegrant.mdx:13(RIGHT) -- [blocker] No Feegrant precompile ships at v6.7.0.precompiles/setup.gohas no feegrant entry, andsetup_test.goexplicitly asserts that0x…1010is NOT registered.IFeegrant,allowance,allowancesandallowancesByGranterdon't exist either. Delete this page, remove it fromdocs.jsonnav, and don't publish it until the precompile actually ships (AGENTS.md: no speculation about unreleased features).evm/precompiles/example-usage.mdx:28(RIGHT) -- [blocker] Remove the Feegrant row. Nothing is registered at0x…1010in v6.7.0.node/giga-storage-migration.mdx:322(RIGHT) -- [blocker]sc-keys-to-migrate-per-blockisn't an app.toml key at the tag. The[state-commit]template renders onlysc-write-modeandsc-write-mode-enable-auto. The drain rate comes from the governance paramNumKeysToMigratePerBlock, which defaults to 0 and has no node-local fallback. Operators who copy the sample at line 332 would set a key that is never read. Rewrite this section to describe the governance param, or remove it.evm/precompiles/slashing.mdx:177(RIGHT) -- [blocker] This contradicts theunjail()section on the same page.unjail(plusgrantUnjail,unjailWithAuthzandrevokeUnjailperslashing.goIsTransaction) isnonpayableand changes state. TheISlashinginterface (lines 26-60) also leaves outunjail(), so anyone calling through that interface can't invoke it. Add it to the interface, and update this note and the intro on line 6, which says "read-only queries".node/technical-reference.mdx:505(RIGHT) -- [blocker] These pruning keys come after[state-store], so TOML parses them asstate-store.pruning, etc., not top-level settings. Movepruning,pruning-keep-recentandpruning-intervalabove the first table header, for example next tominimum-gas-prices.node/technical-reference.mdx:289(RIGHT) -- [blocker] This block lists theevm-logical-digestflags (--backend,--db-dir,--flatkv-dir,--memiavl-open-mode, …), but it sits in the newhashlog comparesection. It also repeats the "The command accepts these flags:" lead-in from line 279, so readers will take these as hashlog flags. Move lines 289-305 back under theevm-logical-digestsection (around line 180-200).evm/precompiles/p256-precompile.mdx:167(RIGHT) -- [suggestion] This line now says 3,450 gas, but "Performance considerations" (line 441) still says 48,000 gas per verification. Update line 441 to match.evm/evm-parity/evm-compatibility.mdx:55(RIGHT) -- [suggestion]/node/node-operators/rpc-configurationhas no page and no redirect indocs.json, so this link is broken. Point it at an existing page or anchor, such as the filter/subscription limits section inevm/reference.mdx. Runmint broken-linksto confirm.evm/precompiles/distribution.mdx:265(RIGHT) -- [suggestion] Two problems here. The(#)placeholder leaked into copy. The<Info>also sits between the### rewardsheading/description and the method signature, which interrupts the method docs. Remove(#)and move the callout below the signature block.evm/differences-with-ethereum.mdx:104(RIGHT) -- [nit] "Before this change" is changelog wording that won't make sense to readers later; say "Before v6.7.0" instead. The BeginBlock/ring/cache/staking-fallback details are implementation internals; consider trimming to the user-visible behavior (a 256-block window, zero outside it). Also remove the stray JSX comment at line 106.
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Want higher recall? High effort reviews run extra passes and find more bugs. A team admin can switch effort levels in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit ec1651c. Configure here.
| --read-limit-mb 0 --lthash=false | ||
|
|
||
| # Verify the FlatKV lattice hash only, without writing key/value dump files. | ||
| seidb dump-flatkv -d /.sei/data/state_commit/flatkv --lthash-only |
There was a problem hiding this comment.
Dump examples use root /.sei
Medium Severity
The new dump-flatkv samples pass -d /.sei/data/state_commit/flatkv, a filesystem-root path. Sei data and config live under $HOME/.sei/. The same command on the troubleshooting page already uses $HOME/.sei/data/state_commit/flatkv.
Reviewed by Cursor Bugbot for commit ec1651c. Configure here.


Documentation catch-up for v6.7.0.
41 source PR(s) produced changes across 41 commit(s). Each source PR is a separate commit, so this reviews commit-by-commit.
node/advanced-config-monitoring.mdxevm/reference.mdxmodeconfig field, adds a newmax_inbound_fullnode_peersconfig field, moves theautobahn-config-filekey to top-level in config.toml, and changes theevmrpcfield in autobahn.json to be required on every validator.evm/reference.mdxevm.max_estimate_gas_callslimits the number of calls allowed in aneth_estimateGasAfterCallsrequest, defaulting to 100.node/giga-storage-migration.mdxevm/reference.mdxevm.max_subscriptions_logsto cap concurrent logs subscriptions (default 1000), beyond which new logs subscriptions are rejected.node/giga-storage-migration.mdx,node/node-operators.mdxevm/reference.mdxnode/technical-reference.mdx,node/troubleshooting.mdxhash-vault-disabled-unsafethat lets operators disable the HashVault app-hash equivocation guard, and introduces HashVault recovery guidance for startup panics involving hash mismatches.node/advanced-config-monitoring.mdxreceipt-store.log-filter-parallelism(default 16) that bounds how many blocks a single eth_getLogs query scans concurrently in the littidx backend.evm/reference.mdx,evm/tracing/index.mdxnode/advanced-config-monitoring.mdxnode/advanced-config-monitoring.mdxnode/advanced-config-monitoring.mdxnode/technical-reference.mdxnode/technical-reference.mdxnode/technical-reference.mdx,node/troubleshooting.mdxnode/advanced-config-monitoring.mdxchain_idconstant label on every emitted metric series, which affects dashboards and alerting queries for node operators.node/technical-reference.mdxevm/tracing/index.mdxevm.max_trace_struct_log_bytesthat caps retained struct-logger output per traced transaction on default debug_trace* endpoints, defaulting to 32 MiB (0 = unlimited).node/giga-storage-migration.mdx,node/technical-reference.mdxhashlogcommand group to the seidb tool withget-blockandcomparesubcommands for inspecting and diffing hash log archives produced by the hashlogger.node/giga-storage-migration.mdxnode/advanced-config-monitoring.mdxnode/node-operators.mdx,node/technical-reference.mdxevm/reference.mdxnode/advanced-config-monitoring.mdxnode/technical-reference.mdx,node/troubleshooting.mdxevm/reference.mdx,evm/tracing/index.mdx,evm/tracing/javascript-tracers.mdx,evm/tracing/troubleshooting.mdxnode/advanced-config-monitoring.mdxnode/technical-reference.mdxmax-search-scan-budget(default 100,000) that bounds the total KV index entries all in-flight tx_search/block_search requests may visit, returning an error when the process-wide budget is exceeded.node/technical-reference.mdxdocs.json,evm/precompiles/auth.mdx,evm/precompiles/authz.mdx,evm/precompiles/cosmwasm-precompiles/addr.mdx,evm/precompiles/cosmwasm-precompiles/bank.mdx,evm/precompiles/evidence.mdx+7 moreevm/differences-with-ethereum.mdxevm/evm-parity/evm-compatibility.mdx,evm/reference.mdxmax_log_bytesEVM config field and changesmax_log_no_blockbehavior soeth_getLogsnow errors (instead of silently truncating) when a bounded or open-ended query exceeds the matched-log count or estimated heap-byte budget.evm/evm-parity/gas-and-fees.mdxnode/advanced-config-monitoring.mdx,node/node-operators.mdx,node/node-types.mdxevm/evm-parity/gas-and-fees.mdx,evm/precompiles/json.mdx,evm/precompiles/p256-precompile.mdxevm/transactions.mdxevm/precompiles/distribution.mdxnode/technical-reference.mdxevm/precompiles/example-usage.mdx,evm/precompiles/slashing.mdxevm/evm-parity/websocket.mdx,node/advanced-config-monitoring.mdx⛔ Failed final verification against the release tag
Each touched page was re-checked claim-by-claim against the
v6.7.0checkout after all commits were assembled. The items below contradict what actually ships at the tag and must be resolved before merging.evm/precompiles/example-usage.mdx(Available precompiles table, new 'Feegrant' row) — Feegrant is an available precompile at0x0000000000000000000000000000000000001010for querying fee allowancesevm/precompiles/feegrant.mdx(Address section / entire page) — The Feegrant precompile exists and is located at the fixed address 0x0000000000000000000000000000000000001010evm/precompiles/feegrant.mdx(Interface section) — Solidity interface IFeegrant with constants FEEGRANT_PRECOMPILE_ADDRESS / FEEGRANT_CONTRACT existsevm/precompiles/feegrant.mdx(Methods section) — Methods allowance(address,address), allowances(address,bytes), and allowancesByGranter(address,bytes) are exposed by the precompileevm/precompiles/feegrant.mdx(Interface / Methods / Notes sections) — Grant and AllowancesResponse structs, JSON-encoded allowance field, pagination via pageKey/nextKey, revert-on-value behaviourevm/precompiles/slashing.mdx(Final block at the bottom of the page) — All methods on the Slashing precompile are read-onlyviewqueries. Sending value to any of them reverts.unjail(line 201) with stateMutabilitynonpayable(line 209), and other nonpayable entries at lines 23, 82, 228. The page's ownunjailsection even states it 'is a state-mutating transaction'. Thus the claim that ALL methods are read-onlyviewqueries is false.evm/reference.mdx— verification could not complete: verifier exceeded 30 tool turnsnode/advanced-config-monitoring.mdx— verification could not complete: verifier exceeded 30 tool turnsnode/giga-storage-migration.mdx(### Operator-facing knobs — thesc-keys-to-migrate-per-blockparagraph and itstomlsample ([state-commit]/ sc-write-mode = "migrate_evm" / sc-keys-to-migrate-per-block = 1024)) —sc-keys-to-migrate-per-blockis anapp.toml[state-commit]config key that controls the per-block migration drain rate, with a default of1024and a constraint that the value must be> 0; shown in a TOML sample assc-keys-to-migrate-per-block = 1024.sc-keys-to-migrate-per-block,keys-to-migrate, andmigrate-per-blockall return no matches, and the[state-commit]template in sei-db/config/toml.go (lines 9–95) renders onlysc-write-modeandsc-write-mode-enable-auto, not this key. The drain rate is a governance parameter, not an app.toml knob: app/abci.go:64-93 readsmigration.NumKeysToMigratePerBlockfrom chain state (applyMigrationBatchSize), and app/migration/params.go:34-37 setsDefaultNumKeysToMigratePerBlock uint64 = 0(not 1024), with the comment that this gov param 'is the sole source of the per-block rate' and 'there is no node-local fallback'. An operator copying the sample sets a key that is never read.node/technical-reference.mdx— verification could not complete: not verified — run time budget exhausted mid-checknode/troubleshooting.mdx— verification could not complete: not verified — run time budget exhausted mid-checkReviewer notes
logsCount === 10000as a limit sentinel — reviewers may want to confirm whether that example should be updated to detect the new error response, but it is illustrative rather than authoritative. No migration step is required; defaults preserve prior count behavior (10000) and add a 64 MiB byte cap.rewards()view query, which is documented in evm/precompiles/distribution.mdx. The gRPC/legacy querier endpoints (DelegationRewards/DelegationTotalRewards) are not covered by a dedicated sei-docs page, so no other page needs updating. The old mutating behavior is preserved only for re-tracing pre-v6.7 blocks via debug_trace*, which could optionally be mentioned in evm/tracing/index.mdx, but this is an edge-case replay detail and likely not worth adding there. No migration step is required.Flagged by a review of every touched page's final text. 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.
evm/evm-parity/evm-compatibility.mdx, the insertedeth_getLogsnote links to/node/node-operators/rpc-configuration;evm/evm-parity/gas-and-fees.mdxlinks to a non-existentrpc-configurationpage too — but more concretely, theeth_getLogsnote referencesmax_log_bytes/max_log_no_blockwhich matchesevm/reference.mdx, so no contradiction there. (Not a reportable category.)evm/precompiles/p256-precompile.mdx: the updated "Gas costs" section says the verification cost is a fixedP256VerifyGas = 3450gas, but the untouched "Performance considerations" section still states "Gas efficiency: 48,000 gas per verification". These describe the same cost two different ways on the same page.evm/reference.mdx(untouched "Filter and subscription limits") andevm/evm-parity/evm-compatibility.mdxboth usemax_log_no_block(default 10000), consistent. But the gas-and-fees SSTORE value stays 72,000 across pages — consistent. (No issue.)eth_getLogsbyte-limit identifier: the inserted compatibility-matrix note andevm/reference.mdxboth namemax_log_bytes— consistent. (No issue.)evm/precompiles/distribution.mdx: the inserted "Read-only as of v6.7.0"<Info>block sits between the### rewardsheading (and its sentence "Returns the reward information for a delegator across all validators.") and the method's Solidity signature code block, interrupting the heading's own content.Generated by sei-docs-bridge. Every change is a proposal — verify against the source PRs before merging.