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

tari-project / tari / 38866398825
77%

Build:
DEFAULT BRANCH: development
Ran 16 Oct 2026 08:43AM UTC
Jobs 1
Files 803
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 07:18AM UTC coverage: 75.693% (+0.1%) from 75.558%
38866398825

push

github

web-flow
fix(validation): require the canonical script on side-chain claimable burns (#8126)

Description
---
Adds a validation rule: an `OutputType::Burn` output with a
`ConfidentialOutput` side-chain feature must carry the canonical script,
either `Nop` (borsh `[0x01, 0x73]`, which `burn_tari` already uses) or
the empty script (`[0x00]`). Anything else is refused with
`AggregatedBodyValidationError::BurnScriptNotPermitted`.

The check is `check_burn_claim_script`, called from
`validate_individual_output`. That function runs for mempool admission,
block validation and horizon sync, so a bad burn is refused before any
funds are destroyed.

Burns without `ConfidentialOutput` data and all other output types are
unaffected.

Motivation and Context
---
Neither chain ever runs a burn's script. The base layer never spends a
burn output, and the side-chain claim is authorised by the claim key
alone. A non-trivial script would only suggest spending conditions that
are never enforced, so this makes the rule explicit at the point the
burn is made.

Closes tari-project/tari-ootle#583

How Has This Been Tested?
---
- New unit tests in `validation::helpers`: `Nop` and empty scripts are
accepted (and their borsh encodings are asserted), `PushPubKey`, `Nop
Nop` and `Drop` are rejected, and plain burns and other output types are
ignored.
- `cargo nextest run -p tari_transaction_components`: 478 passed.
- `cargo nextest run -p minotari_wallet -E 'test(burn)'`, including
`single_transaction_burn_tari`: passed.

What process can a PR reviewer use to test or verify this change?
---
Review `check_burn_claim_script` in
`base_layer/transaction_components/src/validation/helpers.rs` and run
the tests above.

Breaking Changes
---
- [ ] None
- [ ] Requires data directory on base node to be deleted
- [ ] Requires hard fork
- [x] Other - Please specify

This is a consensus rule without a height gate. If any existing chain
holds a side-chain claimable burn with a non-canonical script, node... (continued)

47 of 47 new or added lines in 2 files covered. (100.0%)

1277 existing lines in 35 files now uncovered.

132387 of 174901 relevant lines covered (75.69%)

429637.41 hits per line

Coverage Regressions

Lines Coverage ∆ File
253
77.89
3.41% comms/core/src/connectivity/manager.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
92
87.03
6.15% base_layer/core/src/base_node/service/service.rs
88
89.52
0.2% comms/core/src/peer_manager/manager.rs
80
93.03
0.13% comms/core/src/multiplexing/yamux.rs
78
95.37
0.17% comms/core/src/peer_manager/storage/database.rs
69
63.2
-0.26% base_layer/core/src/chain_storage/blockchain_database.rs
69
85.91
12.87% comms/core/src/protocol/messaging/protocol.rs
51
59.04
-0.97% base_layer/core/src/chain_storage/lmdb_db/lmdb_db.rs
39
72.12
-4.12% base_layer/core/src/base_node/sync/horizon_state_sync/synchronizer.rs
29
94.26
1.26% comms/dht/src/inbound/decryption.rs
22
93.29
3.72% comms/core/src/protocol/messaging/outbound.rs
19
87.65
4.32% comms/core/src/protocol/messaging/inbound.rs
17
99.07
0.24% comms/core/src/protocol/messaging/test.rs
16
76.03
11.69% comms/dht/src/outbound/mock.rs
13
80.91
-1.6% base_layer/core/src/test_helpers/blockchain.rs
11
50.94
-5.19% base_layer/core/src/base_node/sync/rpc/service.rs
9
92.18
-1.9% comms/dht/src/outbound/broadcast.rs
7
75.73
-6.8% base_layer/core/src/blocks/accumulated_data.rs
7
92.86
0.07% comms/dht/src/outbound/message_send_state.rs
6
81.82
-9.09% base_layer/common_types/src/types/fixed_hash.rs
6
87.14
-2.49% comms/core/src/protocol/rpc/status.rs
5
16.67
-5.56% base_layer/p2p/src/domain_message.rs
4
50.67
-4.0% base_layer/core/src/validation/error.rs
4
82.26
2.02% base_layer/core/src/validation/helpers.rs
3
67.57
-8.11% comms/core/src/peer_manager/error.rs
3
81.25
-4.69% comms/core/src/pipeline/outbound.rs
2
35.52
-0.17% applications/minotari_peer_sync/src/main.rs
2
73.3
0.29% base_layer/wallet/src/output_manager_service/storage/sqlite_db/mod.rs
2
85.32
-0.46% comms/dht/src/network_discovery/rebootstrap.rs
1
87.55
0.1% base_layer/core/src/proof_of_work/cuckaroo_pow.rs
1
98.24
-0.15% base_layer/core/src/proof_of_work/monero_rx/merkle_tree.rs
1
78.72
-0.13% base_layer/wallet/src/storage/sqlite_db/wallet.rs
1
92.45
0.0% comms/core/src/protocol/messaging/extension.rs
Jobs
ID Job ID Ran Files Coverage
1 38866398825.1 16 Oct 2026 08:43AM UTC 803
75.69
GitHub Action Run
Source Files on build 38866398825
  • Tree
  • List 803
  • Changed 53
  • Source Changed 19
  • Coverage Changed 53
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #38866398825
  • 53eb690e on github
  • Prev Build on development (#38729932013)
  • Next Build on development (#38896269154)
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