Skip to content

fix(coalition): add quorum info to get_coalition_proposals (M5)#6305

Open
waefrebeorn wants to merge 35 commits into
Scottcjn:mainfrom
waefrebeorn:fix-m5-coalition-quorum
Open

fix(coalition): add quorum info to get_coalition_proposals (M5)#6305
waefrebeorn wants to merge 35 commits into
Scottcjn:mainfrom
waefrebeorn:fix-m5-coalition-quorum

Conversation

@waefrebeorn
Copy link
Copy Markdown

Summary

M5 - MED: coalition.py: no quorum check on vote tally

Enriches active proposals in list endpoint with quorum fields: member_count, voter_count, quorum_required, quorum_met, total_votes.

Matches quorum computation pattern already in cast_vote.

RTC Wallet for bounty: `RTC17c0d21f04f6f65c1a85c0aeb5d4a305d57531096"

Adds max_length parameter to _clean_string_field and caps all user input
fields in POST route handlers:

- /lock: sender_wallet(128), target_wallet(128), tx_hash(128), receipt_signature(256)
- /confirm: proof_ref(256), notes(1024)
- /release: release_tx(128), notes(1024)

Prevents storage of arbitrarily large strings in bridge_ledger DB.
…s + Row M error handling + Row T test gaps + Row E infrastructure
M4 - MED: propose() no fee validation

- Added PROPOSAL_FEE_RTC = 10 constant
- Before creating proposal, checks miner balance in balances table
- Deducts 10 RTC from proposer on successful creation
- Graceful fallback if balances table doesn't exist
- Returns 402 Payment Required if insufficient balance

Prevents governance spam by requiring a small stake.
M5 - MED: coalition.py: no quorum check on vote tally

The get_coalition_proposals endpoint returned raw votes_for/votes_against
values without computing quorum status. Users querying proposals had no
way to know if a proposal had reached quorum.

Now enriches active proposals with:
- member_count: active members in the coalition
- voter_count: distinct miners who voted
- quorum_required: votes needed for quorum (50% of members)
- quorum_met: boolean if quorum reached
- total_votes: sum of for + against weight

Pattern matches the cast_vote endpoint's inline quorum computation.
@github-actions github-actions Bot added documentation Improvements or additions to documentation BCOS-L1 Beacon Certified Open Source tier BCOS-L1 (required for non-doc PRs) node Node server related api API endpoint related size/M PR: 51-200 lines labels May 25, 2026
Copy link
Copy Markdown
Contributor

@jaxint jaxint left a comment

Choose a reason for hiding this comment

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

LGTM! Great work on this PR. 🚀

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

Labels

api API endpoint related BCOS-L1 Beacon Certified Open Source tier BCOS-L1 (required for non-doc PRs) documentation Improvements or additions to documentation node Node server related size/M PR: 51-200 lines

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants