Skip to content

Conversation

@qj0r9j0vc2
Copy link
Member

@qj0r9j0vc2 qj0r9j0vc2 commented Jan 20, 2026

Summary

  • Fixed ChannelValueBuilder::build_value() to use the actual round parameter instead of hardcoding Round::new(0)
  • This resolves the consensus stall where proposals were rejected with "Ignoring value for round 0, current round: X"

Root Cause

The build_value function signature received a round parameter (prefixed with _ to suppress unused warnings), but the implementation ignored it and always created LocallyProposedValue with Round::new(0). Malachite consensus validates that proposal rounds match the current consensus round, so proposals with round=0 were silently rejected when consensus had advanced beyond round 0.

Changes

crates/consensus/src/host.rs:

  • Changed _round: ConsensusRoundround: ConsensusRound (use the parameter)
  • Changed LocallyProposedValue::new(height, Round::new(0), value)LocallyProposedValue::new(height, round, value)

Test Plan

  • cargo check -p cipherbft-consensus passes
  • cargo fmt -p cipherbft-consensus produces no changes
  • Run integration tests to verify consensus makes progress beyond round 0

@qj0r9j0vc2 qj0r9j0vc2 force-pushed the fix/consensus-proposal-round branch from 49db3e7 to f76fb71 Compare January 20, 2026 07:08
@qj0r9j0vc2 qj0r9j0vc2 self-assigned this Jan 20, 2026
Sign up for free to 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