• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

tari-project / tari / 38896269154
77%

Build:
DEFAULT BRANCH: development
Ran 16 Oct 2026 01:28PM UTC
Jobs 1
Files 804
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

16 Oct 2026 11:48AM UTC coverage: 76.165% (+0.5%) from 75.693%
38896269154

push

github

web-flow
fix(sidechain): weigh quorum certificates by signer voting power (#8128)

Description
---
Quorum certificates in sidechain commit proofs are now weighed by voting
power instead of signature count.

- `CheckVnFunc` returns the signer's voting power (`u64`, 0 = not a
member) instead of `bool`.
- `validate_qc` sums the power of the distinct signers and rejects the
QC if that is below `quorum_threshold`. The threshold is now `u64`
voting power (was `usize` signer count). Batch verification is
all-or-nothing, so the sum is the power of the signers whose signatures
verify. The check runs before batch verification, so a QC short of
quorum is rejected without that cost.
- The duplicate-signer check, the `MAX_QC_SIGNATURES` cap and batch
verification are unchanged. A signer with power 0 is still rejected as
not in the active validator set.

Motivation and Context
---
A count threshold can't tell members apart by weight. In a weighted
committee, a QC signed by a supermajority of members can hold well under
a supermajority of the power, and the old check would still accept it.

This changes only the API, with no L1 fork. A caller that returns 1 for
each registered validator gets the old accept/reject behaviour. Nothing
in this repo outside `tari_sidechain` calls `validate_committed`, so the
existing tests are the only callers updated here (`Ok(true)` → `Ok(1)`,
`Ok(false)` → `Ok(0)`). Downstream users of `tari_sidechain` need the
same change.

How Has This Been Tested?
---
New `weighted_committee` tests in
`base_layer/sidechain/tests/commit_proof.rs`. The committee has 7
validators: 4 with power 1 and 3 with power 10, 34 in total, and the
threshold is 23.
- 5 of 7 signers holding 14 power: rejected.
- 3 of 7 signers holding 30 power: accepted.

Without this change, the old API can only express membership plus a
signer-count threshold (5 of 7). On `development`, using `|pk|
Ok(power_of(pk) > 0)` with threshold 5, the 14-power QC is **accepted**
(`unwrap_err()` on... (continued)

15 of 17 new or added lines in 2 files covered. (88.24%)

1018 existing lines in 30 files now uncovered.

133588 of 175394 relevant lines covered (76.16%)

344049.32 hits per line

Uncovered Changes

Lines Coverage ∆ File
2
51.95
0.0% base_layer/sidechain/src/commit_proof.rs

Coverage Regressions

Lines Coverage ∆ File
529
60.92
1.88% base_layer/core/src/chain_storage/lmdb_db/lmdb_db.rs
88
90.1
0.49% base_layer/core/src/mempool/mempool_storage.rs
62
83.01
2.1% base_layer/core/src/test_helpers/blockchain.rs
56
90.55
3.11% base_layer/core/src/mempool/service/inbound_handlers.rs
52
69.03
5.83% base_layer/core/src/chain_storage/blockchain_database.rs
36
89.63
0.69% base_layer/core/src/validation/aggregate_body/aggregate_body_chain_validator.rs
36
75.2
-7.06% base_layer/core/src/validation/helpers.rs
27
82.36
1.13% base_layer/transaction_components/src/validation/aggregate_body/aggregate_body_internal_validator.rs
22
90.06
-2.06% base_layer/core/src/chain_storage/lmdb_db/validator_node_store.rs
18
92.52
0.04% base_layer/core/src/mempool/mempool.rs
12
96.51
0.23% base_layer/transaction_components/src/validation/helpers.rs
11
77.19
-0.69% comms/core/src/connectivity/manager.rs
9
55.26
4.6% base_layer/core/src/validation/error.rs
7
98.73
0.04% base_layer/core/src/validation/test.rs
6
97.06
-1.18% base_layer/core/src/validation/header/header_full_validator.rs
5
71.44
-0.45% base_layer/core/src/base_node/comms_interface/inbound_handlers.rs
4
69.04
0.03% base_layer/wallet/src/transaction_service/storage/sqlite_db.rs
4
67.49
-1.97% comms/core/src/connectivity/requester.rs
3
50.0
-12.5% base_layer/common_types/src/epoch.rs
3
84.21
1.35% base_layer/core/src/validation/transaction/transaction_chain_validator.rs
3
99.48
0.02% base_layer/transaction_components/src/test_helpers/test_helpers_functions.rs
3
71.17
-2.7% base_layer/transaction_components/src/transaction_components/side_chain/sidechain_feature.rs
3
88.75
-3.75% base_layer/transaction_components/src/transaction_components/side_chain/validator_node_exit.rs
3
0.0
0.0% base_layer/transaction_components/src/validation/error.rs
3
73.22
-0.07% base_layer/wallet/src/output_manager_service/storage/sqlite_db/mod.rs
3
85.09
-0.6% comms/core/src/connection_manager/dialer.rs
3
89.03
-0.47% comms/core/src/connection_manager/peer_connection.rs
3
90.41
-4.11% comms/core/src/pipeline/inbound.rs
2
97.1
0.33% base_layer/core/src/mempool/service/initializer.rs
2
84.39
-0.29% comms/core/src/protocol/rpc/client/mod.rs
Jobs
ID Job ID Ran Files Coverage
1 38896269154.1 16 Oct 2026 01:28PM UTC 804
76.16
GitHub Action Run
Source Files on build 38896269154
  • Tree
  • List 804
  • Changed 49
  • Source Changed 18
  • Coverage Changed 48
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #38896269154
  • 09475742 on github
  • Prev Build on development (#38866398825)
  • Next Build on development (#38929947603)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc