Skip to content

update Cometbft and SDK docs for v0.55 and v0.40 release - #332

Merged
evanorti merged 3 commits into
security-releasefrom
v0.55-updates
Jul 24, 2026
Merged

update Cometbft and SDK docs for v0.55 and v0.40 release#332
evanorti merged 3 commits into
security-releasefrom
v0.55-updates

Conversation

@evanorti

Copy link
Copy Markdown
Contributor

Summary

Updates the next/ docs for the 2026.1 (Ledger Security) release, covering the
non-headline delta of Cosmos SDK 0.55 and CometBFT 0.40: removed modules, changed
params and config, new key types, and stale references. The post-quantum key,
consensus key rotation, and Cosmos-KMS feature pages were reviewed separately and
are not re-audited here.

Every change was verified against source code:

Audited at cosmos-sdk@3d3b901ce5 and cometbft@6ac238b.

Changes

Cosmos SDK (sdk/next/)

  • Removed the x/protocolpool module docs (module removed in 0.55): deleted the
    README, dropped the docs.json nav entry, added a redirect to the distribution
    README, and removed the modules.mdx bullet. Rewrote the distribution README to
    drop the fully-removed external community pool apparatus. Added a protocolpool
    deleted-store step to the upgrade guide.
  • Removed SIGN_MODE_TEXTUAL (removed in 0.55): cut the bullet from the encoding
    concept page and archived ADR-050 plus annex1 and annex2.
  • Added the SigVerifyCostMlDsa65 auth param (default 750) to the auth params
    table and YAML.
  • Documented the Block-STM app.toml keys (block-executor, block-stm-workers,
    block-stm-pre-estimate) in the experimental Block-STM guide.
  • Added key_rotation_fee (field 7) to the reproduced staking Params proto.
  • Corrected the authz pruning description (BeginBlock, capped at 200 per block).
  • Added a distribution note on blocked withdraw address fallback behavior.
  • Fixed the stale otel telemetry env var (OTEL_EXPERIMENTAL_CONFIG_FILE ->
    OTEL_CONFIG_FILE).
  • Added a --consensus-key-algo init flag note and an app.toml reference link to
    the run-node guide.
  • Added a note distinguishing the SDK in-process mempool from CometBFT's
    mempool.type = "app" (InsertTx / ReapTxs).

CometBFT (cometbft/next/)

  • Documented the secp256k1eth and ml_dsa_65 consensus key types in the encoding
    spec, and updated the pub_key_types enumerations in the genesis spec and ABCI
    requirements.
  • Regenerated the reproduced config.toml in the configuration reference from
    cometbft init (restores 20 drifted fields, including event_bus_buffer_capacity
    and adaptive_sync).
  • Added a validator equivocation-risk warning for adaptive_sync to the block-sync
    guide.

Verification

  • npx mint broken-links: clean.
  • docs.json: valid JSON, redirect added, no dangling nav entry.
  • CometBFT config.toml reproduction: field parity confirmed against a freshly
    generated file.
  • Three independent adversarial verification passes over the applied diff: all 14
    changes confirmed accurate to code, zero blockers.

The safety statement above concerns protocol validity rules. It does not remove an operational double-signing risk for validators.

<Warning>
Enable `adaptive_sync` on a validator node only if you understand and accept this risk. With `adaptive_sync` enabled, consensus starts immediately, and the node signs votes whenever it is in the validator set. A catching-up validator can sign a vote for one block at a given height while the blocksync ingestor commits a different, already-decided block at that same height. The HRS file and the KMS double-sign protection are not sufficient backstops for this case. Non-validator full nodes are not affected.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

@Eric-Warehime is this BS or should it be included?

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.

It's not true, adaptive sync still respects the HRS file so you'll never sign for a height/round/step you've already signed for.

@greptile-apps

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR updates the next/ docs for the 2026.1 Ledger Security release, covering Cosmos SDK v0.55 and CometBFT v0.40 non-headline deltas: removed modules, changed params, new consensus key types, and stale config references.

  • Removes x/protocolpool docs (module deleted in v0.55), archives ADR-050 / annexes, drops SIGN_MODE_TEXTUAL, and adds new auth/staking params (SigVerifyCostMlDsa65, key_rotation_fee).
  • Regenerates the CometBFT config.toml reference for v0.40, restoring 20 drifted fields, and adds secp256k1eth / ml_dsa_65 key-type documentation to the encoding spec, genesis spec, and ABCI requirements.
  • Corrects several stale references: authz pruning hook (EndBlockBeginBlock), telemetry env var (OTEL_EXPERIMENTAL_CONFIG_FILEOTEL_CONFIG_FILE), and distribution blocked-address fallback behavior.

Confidence Score: 4/5

Safe to merge after fixing the bootstrap_peers line in the regenerated config block; the remaining issues are minor cosmetic inconsistencies.

The regenerated config.toml in the configuration reference has a copy error where bootstrap_peers = [] was appended to the preceding comment line instead of being placed on its own line. Anyone copying that block loses the key silently. Everything else — the removed module, archived ADRs, new key types, corrected pruning hook, param additions — looks accurate and well-scoped.

cometbft/next/docs/core/configuration.mdx deserves a close pass; the regenerated config.toml block has two comment-level errors and the TLS note inconsistency all introduced in the same chunk.

Important Files Changed

FilenameOverview
cometbft/next/docs/core/configuration.mdxRegenerated config.toml block has two copy-paste errors: bootstrap_peers = [] is merged into the preceding comment line (making the key disappear from TOML), and a stray # was introduced mid-comment for max_subscriptions_per_client.
cometbft/next/docs/core/block-sync.mdxAdded a well-scoped validator equivocation-risk warning for adaptive_sync; wording is precise and does not contradict the existing safety-rules statement.
cometbft/next/spec/core/encoding.mdxAdded Secp256k1Eth and ML-DSA-65 key type sections with correct address derivation formulas and cross-links.
cometbft/next/spec/core/genesis.mdxUpdated pub_key_types enumeration to include secp256k1eth and ml_dsa_65.
cometbft/next/spec/abci/Requirements-for-the-Application.mdxAdded secp256k1eth and ml_dsa_65 to the ValidatorUpdate public key type list.
docs.jsonRemoved protocolpool nav entry and added a redirect from /sdk/next/modules/protocolpool/README to the distribution README.
sdk/next/experimental/blockstm.mdxAdded app.toml configuration table for Block-STM keys and a note about automatic block-gas-meter disabling.
sdk/next/modules/auth/auth.mdxAdded SigVerifyCostMlDsa65 param (default 750) to the params table and YAML example.
sdk/next/modules/authz/README.mdxCorrected pruning description: moved from EndBlock to BeginBlock and added 200-grants-per-block cap.
sdk/next/modules/distribution/README.mdxRemoved external community pool apparatus (removed in 0.55) and added blocked-withdraw-address fallback behavior note.
sdk/next/modules/staking/README.mdxAdded key_rotation_fee field 7 to the reproduced staking Params proto block.
sdk/next/modules/protocolpool/README.mdxDeleted: module removed in SDK v0.55; redirect added in docs.json.
sdk/next/modules/modules.mdxRemoved the ProtocolPool bullet from the module listing.
sdk/next/guides/testing/telemetry.mdxUpdated stale env var from OTEL_EXPERIMENTAL_CONFIG_FILE to OTEL_CONFIG_FILE.
sdk/next/guides/abci/app-mempool.mdxAdded note distinguishing the SDK in-process mempool from CometBFT's mempool.type = app mechanism.
sdk/next/learn/concepts/encoding.mdxRemoved SIGN_MODE_TEXTUAL bullet; the unchanged signing.proto link still targets release/v0.54.x in a v0.55 page.
sdk/next/node/run-node.mdxAdded --consensus-key-algo init flag note and app.toml template reference link.
sdk/next/reference/architecture/adr-050-sign-mode-textual.mdxStatus updated from Accepted to Archived following removal of SIGN_MODE_TEXTUAL in v0.55.
sdk/next/reference/architecture/adr-050-sign-mode-textual-annex1.mdxStatus updated to Archived for historical reference.
sdk/next/reference/architecture/adr-050-sign-mode-textual-annex2.mdxStatus updated from DRAFT to Archived for historical reference.
work-log/v0.55-updates.mdNew work-log file for this branch; format and content follow the work-log/CLAUDE.md conventions.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[PR: SDK v0.55 + CometBFT v0.40 docs] --> B[SDK next/]
A --> C[CometBFT next/]
B --> B1[Remove x/protocolpool docs + nav + redirect]
B --> B2[Archive ADR-050 + annexes]
B --> B3[Remove SIGN_MODE_TEXTUAL from encoding page]
B --> B4[Add SigVerifyCostMlDsa65 auth param]
B --> B5[Add key_rotation_fee staking param]
B --> B6[Fix authz pruning: EndBlock to BeginBlock cap 200]
B --> B7[Distribution blocked address fallback note]
B --> B8[Fix OTEL env var in telemetry guide]
B --> B9[Block-STM app.toml config keys]
C --> C1[Regenerate config.toml + 20 drifted fields]
C --> C2[Add secp256k1eth + ml_dsa_65 encoding spec]
C --> C3[Update pub_key_types in genesis + ABCI]
C --> C4[adaptive_sync equivocation warning]
C1 -.->|P1 bug| E1[bootstrap_peers merged into comment]
C1 -.->|P2| E2[Stray hash in max_subscriptions comment]
C1 -.->|P2| E3[tls_key_file comment uses kebab-case]
Loading

Reviews (1): Last reviewed commit: "update Cometbft and SDK docs for v0.55 a..." | Re-trigger Greptile

Comment on lines +295 to +296
# Bootstrap peers to connect to
# format: { host, id, private (opt), persistent (opt), unconditional (opt) }bootstrap_peers = []

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.

P1bootstrap_peers = [] is swallowed by the comment — it sits on the same line as the # comment, so a TOML parser treats it as comment text. Any reader copying this config block will end up with bootstrap_peers silently absent. The key needs to be on its own line.

Suggested change
# Bootstrap peers to connect to
# format: {host, id, private (opt), persistent (opt), unconditional (opt) }bootstrap_peers = []
# Bootstrap peers to connect to
# format: {host, id, private (opt), persistent (opt), unconditional (opt) }
bootstrap_peers = []

# Maximum number of unique queries a given client can /subscribe to
# If you're using GRPC (or Local RPC client) and /broadcast_tx_commit, set to
# the estimated maximum number of broadcast_tx_commit calls per block.
# the estimated # maximum number of broadcast_tx_commit calls per block.

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.

P2 A stray # was introduced mid-comment during regeneration, turning a plain description into # the estimated # maximum number.... This looks like a copy error from the upstream source.

Suggested change
# the estimated # maximum number of broadcast_tx_commit calls per block.
# the estimated maximum number of broadcast_tx_commit calls per block.

# The path to a file containing matching private key that is used to create the HTTPS server.
# Might be either absolute path or path related to CometBFT's config directory.
# NOTE: both tls_cert_file and tls_key_file must be present for CometBFT to create HTTPS server.
# NOTE: both tls-cert-file and tls-key-file must be present for CometBFT to create HTTPS server.

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.

P2 The comment immediately above tls_cert_file (line 207) correctly uses snake_case (tls_cert_file / tls_key_file), but this PR changed the identical note above tls_key_file to kebab-case (tls-cert-file / tls-key-file). Users scanning for the matching config key will find a mismatch, since the actual TOML keys below both use underscores.

Suggested change
# NOTE: both tls-cert-file and tls-key-file must be present for CometBFT to create HTTPS server.
# NOTE: both tls_cert_file and tls_key_file must be present for CometBFT to create HTTPS server.


- `SIGN_MODE_DIRECT_AUX`: allows N-1 signers in a multi-signer transaction to sign over only `TxBody` and their own `SignerInfo`, without specifying fees. The designated fee payer signs last using `SIGN_MODE_DIRECT`. This simplifies multi-signature UX.

The sign mode is negotiated at transaction construction time and does not affect how state is stored or how validators execute transactions. It only affects what bytes are signed. The full list of sign modes is defined in [`signing.proto`](https://github.com/cosmos/cosmos-sdk/blob/release/v0.54.x/proto/cosmos/tx/signing/v1beta1/signing.proto#L17).

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.

P2 The signing.proto link still targets release/v0.54.x in a next/ page being updated for SDK v0.55. Per the CLAUDE.md style guide, stable-version links should use the release/v{X}.{Y}.x branch that matches the documented version — consider updating this to release/v0.55.x.

Context Used: CLAUDE.md (source)

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

))
```

### Configuration via app.toml

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

@Eric-Warehime multiple reviewers suggested adding this. wdyt?

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.

Yeah it probably works, I've not tested this though.

@evanorti
evanorti merged commit b0ee1db into security-releaseJul 24, 2026
1 check passed
evanorti added a commit that referenced this pull request Jul 29, 2026
* add pq docs
* add po and staking page
* add docs
* docs(sdk): kms rotation guide, release-impact fixes, prerequisites pass
docs(sdk): kms rotation guide, release-impact fixes, prerequisites pass
Add rotate-key-remote-signer: rotate a consensus key held in Cosmos-KMS
(second signer process, shadow node, pubkey from /status). Test-verified
e2e on a localnet; includes the show-validator stray-key trap as a Danger.
Release-impact fixes to existing pages:
- run-production: replace the deprecated TMKMS walkthrough with
Cosmos-KMS links and a deprecation note
- keyring: correct key algorithms to secp256k1 + ml_dsa_65 via
--key-type (was ed25519 via --algo), link the new keys pages,
fix a broken in-page anchor
- run-node: next-step links to key rotation and remote signing;
jq links moved to jqlang.org
Guide improvements:
- complete, linked prerequisites on every keys/ and kms/ guide
- migrate-validator-ml-dsa: step 2 split into labeled staking / PoA /
remote signer paths with the exact deltas (PoA passes ml_dsa_65)
- state-sync pointers on both shadow-node rotation pages
- post-quantum-keys: EIP-7702/8051/8141 linked and corrected
- Cosmos-KMS naming in prose, bare "kms" replaced with "the signer"
- remote-signing next steps completed (resolves placeholder TODO)
* update todos
* Update rotate-key-remote-signer.mdx
* Update configuration-reference.mdx
* Update rotate-key-remote-signer.mdx
* Update remote-signing.mdx
* Update security-release.md
* Update key-rotation.mdx
* Update migrate-from-tmkms.mdx
* Update post-quantum-keys.mdx
* Update rotate-key-remote-signer.mdx
* Update security-release.md
* Update enable-ml-dsa-keys.mdx
* Update migrate-validator-ml-dsa.mdx
* Update rotate-validator-key-poa.mdx
* Update rotate-validator-key.mdx
* Update configure-backend.mdx
* Update remote-signing.mdx
* Update rotate-key-remote-signer.mdx
* Update rotate-key-remote-signer.mdx
* Update migrate-validator-ml-dsa.mdx
* update guides
* Update migrate-from-tmkms.mdx
* Update security-release.md
* Update tutorial-file-backend.mdx
* fix inaccuracies and unclear wording in post-quantum-keys.mdx
* updates
* update after eng passes
* update
* updates
* update Cometbft and SDK docs for v0.55 and v0.40 release (#332)
* update Cometbft and SDK docs for v0.55 and v0.40 release
* Update block-sync.mdx
* Update configuration.mdx
* update warning
* add upgrade guide
* Update v0.55.mdx
* Update security-release.md
* Update rotate-validator-key-poa.mdx
* Update post-quantum-keys.mdx
* Update accounts.mdx
* Update accounts.mdx
* Update architecture.mdx
* Update key-rotation.mdx
* updates
* audit runs and changes
* updates
* update
* update
* updates
* updates
* Update v0.55.mdx
* updates
* update versions (#334)
---------
Co-authored-by: Dennis Fang <dhsfang@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@evanorti@Eric-Warehime