Commit 06b2076
Trustless PQ light-client + wallet-keyed rewards/status + merkle-only reward path
Light-client (qnet-mobile): verify a macroblock state_root from the committee
checkpoint_qc (2f+1 Dilithium sigs) with forward-anchored lineage from the
genesis-pinned committee, anchoring each epoch's eligible+banned via
epoch_commitment and binding committee keys to the QC-signed registry_root.
Replaces the MITM-bypassable 2/3 peer-poll. registry_root now binds sha3(vrf_pk)
for super/genesis so committee keys are trustlessly verifiable.
Node status + rewards keyed on the WALLET (on-chain reverse index), not the
RAM activation registry: /node/status?wallet= resolves server-activated supers
and offline/banned nodes; pending rewards + claim are wallet-scoped and
status-independent (earned rewards always claimable regardless of node status).
Rewards are merkle reward_root single-source: removed the dead legacy
Account.pending_rewards accrual (validator Phase-4 + producer v2 path), the
unreachable claim legacy fallback, and pointed every pending-reporting endpoint
at the merkle claimable. state_root byte-identical (accrual was always a no-op).
App: HTTP bootstrap default (genesis nodes serve plain HTTP on :8001).
Validated: cargo check (lib+bins) clean; registry/reward determinism tests green;
adversarial diff review (no fork, no security/coherence regressions).
Requires a fresh-genesis relaunch (registry_root format changed).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>1 parent 74e6fcd commit 06b2076
12 files changed
Lines changed: 955 additions & 368 deletions
File tree
- applications/qnet-mobile/src
- components
- config
- crypto
- screens
- services
- core/qnet-state/src
- development/qnet-integration/src
Lines changed: 20 additions & 11 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
12 | 15 | | |
13 | 16 | | |
14 | 17 | | |
| |||
3497 | 3500 | | |
3498 | 3501 | | |
3499 | 3502 | | |
3500 | | - | |
| 3503 | + | |
| 3504 | + | |
| 3505 | + | |
| 3506 | + | |
3501 | 3507 | | |
3502 | | - | |
| 3508 | + | |
3503 | 3509 | | |
3504 | | - | |
| 3510 | + | |
| 3511 | + | |
3505 | 3512 | | |
3506 | 3513 | | |
3507 | 3514 | | |
| |||
3663 | 3670 | | |
3664 | 3671 | | |
3665 | 3672 | | |
3666 | | - | |
3667 | | - | |
3668 | | - | |
3669 | | - | |
3670 | | - | |
3671 | | - | |
3672 | | - | |
3673 | | - | |
| 3673 | + | |
| 3674 | + | |
| 3675 | + | |
| 3676 | + | |
| 3677 | + | |
| 3678 | + | |
| 3679 | + | |
| 3680 | + | |
| 3681 | + | |
| 3682 | + | |
3674 | 3683 | | |
3675 | 3684 | | |
3676 | 3685 | | |
| |||
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
10 | | - | |
11 | | - | |
12 | | - | |
13 | | - | |
14 | | - | |
15 | | - | |
16 | | - | |
17 | | - | |
18 | | - | |
19 | | - | |
20 | | - | |
21 | | - | |
22 | | - | |
23 | | - | |
24 | | - | |
25 | | - | |
26 | | - | |
27 | | - | |
28 | | - | |
29 | | - | |
30 | | - | |
31 | | - | |
32 | | - | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
33 | 21 | | |
34 | 22 | | |
35 | | - | |
36 | | - | |
37 | | - | |
38 | | - | |
39 | | - | |
40 | | - | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
41 | 29 | | |
42 | 30 | | |
43 | | - | |
| 31 | + | |
44 | 32 | | |
45 | | - | |
46 | | - | |
47 | | - | |
| 33 | + | |
48 | 34 | | |
49 | 35 | | |
50 | 36 | | |
51 | 37 | | |
52 | 38 | | |
53 | | - | |
54 | | - | |
55 | | - | |
56 | | - | |
57 | | - | |
58 | | - | |
59 | | - | |
60 | | - | |
61 | | - | |
62 | | - | |
63 | | - | |
64 | | - | |
| 39 | + | |
65 | 40 | | |
66 | 41 | | |
67 | 42 | | |
| |||
0 commit comments