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

tari-project / tari / 38929947603
77%

Build:
DEFAULT BRANCH: development
Ran 16 Oct 2026 05:35PM UTC
Jobs 1
Files 810
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 04:11PM UTC coverage: 76.096% (-0.07%) from 76.165%
38929947603

push

github

web-flow
refactor(covenants): defer token parsing and bound evaluation work (#8131)

Covenants now keep their canonical encoded bytes and are tokenized when
evaluated. Decoding enforces a total token limit across nesting levels
and minimal length prefixes. Covenant evaluation per body has a fixed
work limit, caches output hashes, and requires each covenant to be
satisfied by a distinct output. Covenant checks run before range-proof
verification. Gossiped transactions whose covenants exceed the token
limit are treated like other malformed gossip from a peer. These rules
only apply to non-empty covenants, which public networks do not permit.

## Changes
- `Covenant` stores its canonical bytes plus the top-level token count;
a decode-time scanner validates and canonicalises, and tokens are built
on demand for evaluation. Encoded bytes, hashing, weight and serde/borsh
output are unchanged for every covenant accepted before.
- `MAX_COVENANT_TOKENS` (128) now bounds tokens across all nesting
levels.
- Length varints inside covenants must be minimal.
- `MAX_COVENANT_WORK_PER_BODY` (250,000) bounds evaluation per aggregate
body; output hashes are cached per body.
- Each output can satisfy at most one input's covenant (greedy
assignment, with a bipartite matching fallback so the result does not
depend on ordering).
- Covenant validation moved ahead of the kernel sum, range proofs and
scripts.
- DHT gossip: a transaction whose covenant exceeds the token limit gets
a Long ban of the sending peer (same helper and relay handling as the
existing gossip ban). Mempool sync and RPC reject it without a ban.

## Testing
- `cargo ci-check` and release nextest for
`tari_transaction_components`, `tari_core`, `minotari_app_grpc` and
`minotari_wallet_ffi`: 1406 passed, 18 skipped.
- New tests: decode heap bound (counting allocator), total token
boundary, canonical byte equivalence, minimal length prefixes, work
limit, hash cache, claim-once and order independence,
covenant-before-ran... (continued)

809 of 829 new or added lines in 31 files covered. (97.59%)

2228 existing lines in 43 files now uncovered.

135214 of 177689 relevant lines covered (76.1%)

398903.73 hits per line

Uncovered Changes

Lines Coverage ∆ File
8
96.84
0.1% base_layer/transaction_components/src/transaction_components/covenants/covenant.rs
7
96.02
-1.24% base_layer/core/src/proto/transaction.rs
1
92.03
1.49% base_layer/core/src/mempool/service/inbound_handlers.rs
1
95.89
-1.21% base_layer/core/src/mempool/service/initializer.rs
1
97.73
base_layer/transaction_components/src/transaction_components/covenants/scan.rs
1
96.88
base_layer/transaction_components/src/transaction_components/covenants/work.rs
1
87.53
5.17% base_layer/transaction_components/src/validation/aggregate_body/aggregate_body_internal_validator.rs

Coverage Regressions

Lines Coverage ∆ File
409
63.18
-5.84% base_layer/core/src/chain_storage/blockchain_database.rs
380
38.47
0.02% base_layer/wallet/src/transaction_service/service.rs
307
48.03
0.29% base_layer/wallet/src/output_manager_service/service.rs
224
29.03
0.0% base_layer/wallet/src/transaction_service/handle.rs
151
53.61
-25.95% base_layer/core/src/base_node/rpc/query_service.rs
116
79.2
-17.11% base_layer/core/src/base_node/sync/header_sync/validator.rs
86
59.22
-1.7% base_layer/core/src/chain_storage/lmdb_db/lmdb_db.rs
78
41.95
41.95% applications/minotari_offline_signer/src/cli.rs
60
93.93
0.06% base_layer/transaction_components/src/transaction_components/memo_field.rs
44
97.19
0.65% base_layer/transaction_components/src/utxo_selection/branch_and_bound/branch_and_bound_selector.rs
43
94.9
1.98% base_layer/transaction_components/src/offline_signing/payload_summary.rs
39
72.15
-4.09% base_layer/core/src/base_node/sync/horizon_state_sync/synchronizer.rs
39
81.14
-1.86% base_layer/core/src/test_helpers/blockchain.rs
37
87.53
5.17% base_layer/transaction_components/src/validation/aggregate_body/aggregate_body_internal_validator.rs
27
87.43
-2.67% base_layer/core/src/mempool/mempool_storage.rs
26
62.5
26.14% base_layer/transaction_components/src/offline_signing/models.rs
23
96.34
0.12% base_layer/transaction_components/src/transaction_components/transaction_output.rs
19
78.97
-7.01% infrastructure/max_size/src/vec.rs
16
65.29
0.0% base_layer/transaction_components/src/transaction_components/wallet_output.rs
11
50.94
-5.19% base_layer/core/src/base_node/sync/rpc/service.rs
9
64.79
-2.66% base_layer/core/src/chain_storage/db_transaction.rs
9
33.33
0.0% base_layer/transaction_components/src/utxo_selection/mod.rs
7
75.73
-6.8% base_layer/core/src/blocks/accumulated_data.rs
7
81.97
0.93% base_layer/wallet/src/output_manager_service/storage/models.rs
6
94.64
19.13% base_layer/common_types/src/types/bullet_rangeproofs.rs
6
81.82
-9.09% base_layer/common_types/src/types/fixed_hash.rs
6
96.6
0.08% base_layer/transaction_components/src/validation/helpers.rs
6
87.14
-2.49% comms/core/src/protocol/rpc/status.rs
4
0.0
-13.33% base_layer/core/src/base_node/comms_interface/comms_response.rs
4
99.79
0.01% base_layer/transaction_components/src/offline_signing/mod.rs
4
73.15
-0.07% base_layer/wallet/src/output_manager_service/storage/sqlite_db/mod.rs
4
69.04
0.0% base_layer/wallet/src/transaction_service/storage/sqlite_db.rs
3
87.03
-0.32% base_layer/core/src/base_node/service/service.rs
3
98.98
-0.76% base_layer/core/src/consensus/base_node_consensus_manager.rs
3
0.0
0.0% base_layer/transaction_components/src/transaction_builder/error.rs
3
0.0
0.0% base_layer/transaction_components/src/validation/error.rs
2
87.75
0.0% base_layer/core/src/proof_of_work/cuckaroo_pow.rs
2
78.09
0.9% comms/core/src/connectivity/manager.rs
1
99.89
0.0% base_layer/core/src/validation/block_body/test.rs
1
55.26
0.0% base_layer/core/src/validation/error.rs
1
82.86
7.66% base_layer/core/src/validation/helpers.rs
1
96.84
0.1% base_layer/transaction_components/src/transaction_components/covenants/covenant.rs
1
80.45
-0.1% comms/dht/src/connectivity/mod.rs
Jobs
ID Job ID Ran Files Coverage
1 38929947603.1 16 Oct 2026 05:35PM UTC 810
76.1
GitHub Action Run
Source Files on build 38929947603
  • Tree
  • List 810
  • Changed 93
  • Source Changed 52
  • Coverage Changed 89
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #38929947603
  • 991ada28 on github
  • Prev Build on development (#38896269154)
  • Next Build on development (#39220716938)
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