cosmos-sdk/x/consensus
Avory bdac963978
docs(consensus): enhance README with comprehensive module documentation (#25300)
Co-authored-by: Tyler <48813565+technicallyty@users.noreply.github.com>
2025-10-08 18:31:38 +00:00
..
exported refactor: bring cometbft back to v0.38.x family (#25285) 2025-08-29 15:58:04 -04:00
keeper fix: typos (#25343) 2025-09-15 17:39:57 +00:00
testutil chore: set up release/v0.53.x branch (#23660) 2025-02-12 15:48:20 -05:00
types refactor: bring cometbft back to v0.38.x family (#25285) 2025-08-29 15:58:04 -04:00
autocli.go feat(client/v2): support gov proposals (cherry-pick #18461) (#24359) 2025-04-03 14:52:56 +00:00
module.go fix: typos (#25343) 2025-09-15 17:39:57 +00:00
README.md docs(consensus): enhance README with comprehensive module documentation (#25300) 2025-10-08 18:31:38 +00:00

sidebar_position
1

x/consensus

The consensus module provides functionality to modify CometBFT's ABCI consensus parameters on-chain through governance proposals.

Overview

This module allows authorized entities (typically governance) to update critical consensus parameters that affect blockchain performance and security without requiring a hard fork.

Key Features

  • Parameter Updates: Modify consensus parameters through governance proposals
  • Authority Control: Only authorized addresses can update parameters
  • Validation: Comprehensive parameter validation before updates
  • ABCI Integration: Direct integration with CometBFT consensus engine

Consensus Parameters

The module manages the following CometBFT consensus parameters:

Block Parameters

  • MaxBytes: Maximum block size in bytes
  • MaxGas: Maximum gas per block

Evidence Parameters

  • MaxAgeNumBlocks: Maximum age of evidence in blocks
  • MaxAgeDuration: Maximum age of evidence in time
  • MaxBytes: Maximum evidence size in bytes

Validator Parameters

  • PubKeyTypes: Supported public key types for validators

ABCI Parameters

  • VoteExtensionsEnableHeight: Height at which vote extensions are enabled

Usage

Governance Proposal

To update consensus parameters, submit a governance proposal with MsgUpdateParams:

import (
    "time"
    govtypes "github.com/cosmos/cosmos-sdk/x/gov/types"
    authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
)

msg := &types.MsgUpdateParams{
    Authority: authtypes.NewModuleAddress(govtypes.ModuleName).String(), // governance authority
    Block: &types.BlockParams{
        MaxBytes: 22020096,
        MaxGas:   10000000,
    },
    Evidence: &types.EvidenceParams{
        MaxAgeNumBlocks: 100000,
        MaxAgeDuration:  48 * time.Hour,
        MaxBytes:        1048576,
    },
    Validator: &types.ValidatorParams{
        PubKeyTypes: []string{"ed25519"},
    },
}

Query Parameters

Retrieve current consensus parameters:

<appd> q consensus params

Architecture

  • Keeper: Manages parameter storage and validation
  • Types: Defines message types and parameter structures
  • Module: Integrates with the Cosmos SDK application lifecycle

Security

  • Only the designated authority can update parameters
  • All parameter changes are validated before application
  • Updates are subject to governance approval process