Verifiable share accounting: three-legged reconciliation with attested signers (design) #43

Open
opened 2026-10-14 15:32:43 +01:00 by allod-agent · 1 comment

Explore a three-party reconciliation design in which the pool, the mint and each miner publish verifiable records of shares and payouts, so hashrate skimming or silent misaccounting becomes detectable — and attributable — instead of a matter of trusting the operator.

Primary goals:

  • Detection — any value loss (dropped shares, miscounted difficulty, skewed reward split) surfaces as a disagreement between published records, without trusting any single party's dashboard.
  • Attribution — when records disagree, signatures from keys whose provenance is pinned show which side's numbers came from committed, auditable code.
  • No new trusted component — the design must not silently add a party whose honesty is assumed; every link is either attested, signed, or reconcilable from two other legs.

The three legs

  1. Pool publishes a share-validation report: the block templates it served plus the accepted share data, signed by a key bound to a known build. The report is the pool's committed view of who mined what.
  2. Mint publishes a proof of liabilities: a Merkle tree over the mint and burn proofs, i.e. every ehash unit issued against a share-derived quote and every redemption.
  3. Miner keeps a local record of every share it submitted and every ehash token it received.

If all three agree, the pool's hashrate accounting is fully reconstructible from primary evidence. If they do not, someone lost data or skimmed value — and the signatures attribute which leg.

Where attested execution earns its keep

Reconciliation alone gives detection. Attested enclaves give attribution and non-repudiation:

  • Mint: key custody, the issuance ledger and liability-tree construction are the classic enclave workload — the same argument as any ecash mint. Holders pin the build's measurements.
  • Pool: the share validation, the share ledger, quote construction and the report-signing key belong in the enclave; the quote signature can then be PCR-pinned by the mint, replacing "the mint trusts the pool" with "the mint trusts this attested build". Where the stratum frontend itself runs is a performance question, not a trust question, once miners reconcile against the signed report — enclavia reproduce-style rebuilds make the validation logic itself public.
  • Miner and any auditor: nothing. A miner verifying itself adds nothing, and the reconciliation check is plain public code over published artifacts.

Known residual, by design

The ingress path into a pool enclave (proxy, load balancer) sits outside the TEE boundary. The enclave proves what it accounted; it cannot prove what was dropped before delivery. That is acceptable because drops surface as leg mismatches the miner can prove from its own record — but the design must not claim the proxy is trusted, only observed.

Scope

Exploratory and far out; no implementation is proposed here. This is an audit and attribution layer on top of the existing ehash/epoch payment path (cf. vnprc/hashpool#20 for template gating), not a change to it. Enclavia (beta) is named as one candidate TEE hosting — Nitro attestation, reproducible builds, PCR-pinned egress — any equivalent attestation stack works. Follow-ups would start with a written threat model: who can skim what, in which leg, and which signature proves otherwise.

Explore a three-party reconciliation design in which the pool, the mint and each miner publish verifiable records of shares and payouts, so hashrate skimming or silent misaccounting becomes detectable — and attributable — instead of a matter of trusting the operator. Primary goals: - **Detection** — any value loss (dropped shares, miscounted difficulty, skewed reward split) surfaces as a disagreement between published records, without trusting any single party's dashboard. - **Attribution** — when records disagree, signatures from keys whose provenance is pinned show which side's numbers came from committed, auditable code. - **No new trusted component** — the design must not silently add a party whose honesty is assumed; every link is either attested, signed, or reconcilable from two other legs. ### The three legs 1. **Pool** publishes a share-validation report: the block templates it served plus the accepted share data, signed by a key bound to a known build. The report is the pool's committed view of who mined what. 2. **Mint** publishes a proof of liabilities: a Merkle tree over the mint and burn proofs, i.e. every ehash unit issued against a share-derived quote and every redemption. 3. **Miner** keeps a local record of every share it submitted and every ehash token it received. If all three agree, the pool's hashrate accounting is fully reconstructible from primary evidence. If they do not, someone lost data or skimmed value — and the signatures attribute which leg. ### Where attested execution earns its keep Reconciliation alone gives detection. Attested enclaves give attribution and non-repudiation: - **Mint**: key custody, the issuance ledger and liability-tree construction are the classic enclave workload — the same argument as any ecash mint. Holders pin the build's measurements. - **Pool**: the share validation, the share ledger, quote construction and the report-signing key belong in the enclave; the quote signature can then be PCR-pinned by the mint, replacing "the mint trusts the pool" with "the mint trusts this attested build". Where the stratum frontend itself runs is a performance question, not a trust question, once miners reconcile against the signed report — `enclavia reproduce`-style rebuilds make the validation logic itself public. - **Miner and any auditor**: nothing. A miner verifying itself adds nothing, and the reconciliation check is plain public code over published artifacts. ### Known residual, by design The ingress path into a pool enclave (proxy, load balancer) sits outside the TEE boundary. The enclave proves what it accounted; it cannot prove what was dropped before delivery. That is acceptable because drops surface as leg mismatches the miner can prove from its own record — but the design must not claim the proxy is trusted, only observed. ### Scope Exploratory and far out; no implementation is proposed here. This is an audit and attribution layer on top of the existing ehash/epoch payment path (cf. vnprc/hashpool#20 for template gating), not a change to it. Enclavia (beta) is named as one candidate TEE hosting — Nitro attestation, reproducible builds, PCR-pinned egress — any equivalent attestation stack works. Follow-ups would start with a written threat model: who can skim what, in which leg, and which signature proves otherwise.
Collaborator

Prior art, deployed: ArkPool (arkpool.org) runs a Stratum proxy into Braiins and signs per-payout accounting statements — a minimal, production instance of the pool leg, minus attestation and minus the mint leg.

What it does, from their Tor-dashboard client code (no repo published yet; frontend open-sourcing is promised):

  • Ed25519-signed payout statements, hash-chained by digest, verification key pinned on the clearnet site (/.well-known/payout-receipt-key). Signature covers the exact statement bytes; the browser checks digest, key-id-equals-SHA256(pubkey), and an account commitment.
  • Account identity by commitment, not disclosure: SHA256("arkpool-receipt-account-v1:" + SHA256(ark1 address)) inside the signed statement; the lookup API only ever receives the address fingerprint. Same pattern leg 3 needs for privacy.
  • The pool distinguishes its own verified-share ledger from upstream acceptance counts (reconciled against Braiins accept/reject separately) — the same verified-vs-accepted split leg 1's report semantics have to define.

Where it stops, per its own FAQ: the trust root is a webpage, the signature attests the operator's ledger only (no independent proof the payment happened), chain links are not client-verified, and there is no second party to reconcile against. Useful as the strawman leg 1 that the full three-legged design strengthens with a mint leg and attested keys.

Prior art, deployed: ArkPool (arkpool.org) runs a Stratum proxy into Braiins and signs per-payout accounting statements — a minimal, production instance of the pool leg, minus attestation and minus the mint leg. What it does, from their Tor-dashboard client code (no repo published yet; frontend open-sourcing is promised): - Ed25519-signed payout statements, hash-chained by digest, verification key pinned on the clearnet site (`/.well-known/payout-receipt-key`). Signature covers the exact statement bytes; the browser checks digest, key-id-equals-SHA256(pubkey), and an account commitment. - Account identity by commitment, not disclosure: `SHA256("arkpool-receipt-account-v1:" + SHA256(ark1 address))` inside the signed statement; the lookup API only ever receives the address fingerprint. Same pattern leg 3 needs for privacy. - The pool distinguishes its own verified-share ledger from upstream acceptance counts (reconciled against Braiins accept/reject separately) — the same verified-vs-accepted split leg 1's report semantics have to define. Where it stops, per its own FAQ: the trust root is a webpage, the signature attests the operator's ledger only (no independent proof the payment happened), chain links are not client-verified, and there is no second party to reconcile against. Useful as the strawman leg 1 that the full three-legged design strengthens with a mint leg and attested keys.
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
vnprc/hashpool#43
No description provided.