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

tari-project / tari / 26581360379
60%

Build:
DEFAULT BRANCH: development
Ran 28 May 2026 03:30PM UTC
Jobs 1
Files 702
Run time 2min
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

28 May 2026 02:34PM UTC coverage: 61.346% (-0.01%) from 61.356%
26581360379

push

github

web-flow
feat(wallet): stealth-address claim key for L1->L2 burns (#7861)

## Summary

Wallet-level implementation of the L1 half of
[tari-project/tari-ootle#1890](https://github.com/tari-project/tari-ootle/issues/1890)
— switches L1→L2 burn claims from "on-chain claim key = recipient's L2
account pubkey" to a stealth address scheme.

No L1 or L2 consensus changes; only L1 wallet behaviour. Matching L2
verifier/wallet changes will land separately in `tari-ootle`.

### What changes

- The on-chain `ConfidentialOutputData.claim_public_key` now carries the
stealth address `C = H(r·P)·G + P` instead of the recipient's pubkey
`P`. `C` looks like a random nonce per burn and is unlinkable to `P`
across burns; for the L2 wallets that want it, the on-chain value is
also a discoverability signal (`C` derivable from the on-chain `R` + the
account's `p`).
- The mask-key ownership signature commits to `H(commitment ‖ C)`. A
third party holding the proof material cannot construct an L2 claim —
only the L2 wallet holding `p` can derive the spend secret `s = H(R·p) +
p` against `C`.
- `SideChainFeature` is still emitted for L2-bound burns;
`sidechain_deployment_key` (when provided) still produces the
`SideChainId` Schnorr sig identifying the target L2 network. The
original "deployment key without claim public key" sanity check is
preserved.
- `sender_offset` key for L2-bound burns is seed-deterministic (derived
from the commitment mask). Plain burns keep `get_random_key`.
- `encrypted_data` for L2-bound burns is encrypted to `DH(P, r)`
(unchanged) so the existing L2 decryption with `DH(R, p)` keeps working.
Plain burns encrypt to the L1 view key.
- `PartialBurnClaimProof` wire shape is unchanged: `claim_public_key`
still carries `P`, `sender_offset_public_key` carries `R`. `C` is not on
the wire — both L1 and L2 recompute it from `(R, P, p)` (the L2 already
has `owner_stealth_dh_stealth_address` for this in
`dan/crates/wallet/crypto/src/kdfs.rs`).
- New key-manager helpers: `... (continued)

0 of 84 new or added lines in 4 files covered. (0.0%)

5 existing lines in 5 files now uncovered.

71853 of 117127 relevant lines covered (61.35%)

223235.19 hits per line

Uncovered Changes

Lines Coverage ∆ File
30
0.0
0.0% base_layer/wallet/src/transaction_service/service.rs
25
58.98
-1.48% base_layer/transaction_components/src/key_manager/manager.rs
15
5.94
-0.24% base_layer/transaction_key_manager/src/legacy_key_manager/wrapper.rs
14
12.06
-0.36% base_layer/transaction_key_manager/src/legacy_key_manager/inner.rs

Coverage Regressions

Lines Coverage ∆ File
1
56.77
-0.32% base_layer/core/src/base_node/state_machine_service/states/listening.rs
1
66.67
-0.28% base_layer/core/src/mempool/sync_protocol/mod.rs
1
87.36
-0.55% common_sqlite/src/connection.rs
1
62.93
-0.12% comms/core/src/connectivity/manager.rs
1
59.31
0.0% comms/dht/src/connectivity/mod.rs
Jobs
ID Job ID Ran Files Coverage
1 26581360379.1 28 May 2026 03:30PM UTC 702
61.35
GitHub Action Run
Source Files on build 26581360379
  • Tree
  • List 702
  • Changed 20
  • Source Changed 4
  • Coverage Changed 20
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #26581360379
  • d17fac8e on github
  • Prev Build on development (#26504155695)
  • Next Build on development (#26628635933)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc