Skip to content

Commit 87169d0

Browse files
committed
FUTURE.md: honest THE commitment assessment, V36 vs V37 capabilities
Document what THE state_root actually provides in V36: - Tamper-evident seal (primary security property) - Historical audit trail (survives share pruning) - On-chain pool analytics (miner_count, hashrate readable from blockchain) - V37 migration foundation (L-1/L+1 placeholders) Honestly document V36 limitations: - Fast new-node sync requires V37 protocol (circular dependency) - Cross-node verification only works after full sync - Does not replace ref_hash (different granularity) Wire checkpoint creation into node layer, update REST docs.
1 parent b78e938 commit 87169d0

1 file changed

Lines changed: 52 additions & 6 deletions

File tree

docs/FUTURE.md

Lines changed: 52 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -245,15 +245,61 @@ Five-layer temporal model for entropy-weighted share evaluation:
245245
246246
Every found block embeds `the_state_root` in the coinbase scriptSig:
247247
```
248-
scriptSig: [BIP34 height][mm_commit]["/c2pool/"][the_state_root(32)]
248+
scriptSig: [BIP34 height][mm_commit][tag_or_text][the_state_root(32)][metadata]
249249
```
250250
251-
Enables: trustless PPLNS verification, fast new-node sync via blockchain
252-
checkpoint scan, cross-chain temporal consistency for merged mining,
253-
dispute resolution via on-chain proof.
251+
**V36 implementation (what works now):**
254252
255-
Currently L-1 and L+1 are zero placeholders. When V37 activates, the
256-
commitment chain is already established on the blockchain.
253+
| Feature | Status | How |
254+
|---------|--------|-----|
255+
| State root embedded in every found block | Working | `compute_the_state_root()` in `build_coinbase_parts()` |
256+
| THE metadata (version, height, miners, hashrate) | Working | `TheMetadata::pack()` fills remaining scriptSig space |
257+
| Checkpoint stored in LevelDB on every block found | Working | `TheCheckpointStore` via `checkpoint_create_fn` |
258+
| `/checkpoint` REST endpoint | Working | Returns latest verified checkpoint |
259+
| `/checkpoints` REST endpoint | Working | Returns all checkpoints with status |
260+
| On-chain analytics (miner_count, hashrate_class) | Working | Readable from any block explorer parsing scriptSig |
261+
262+
**What THE commitment provides honestly:**
263+
264+
1. **Tamper-evident seal** — if a node operator modifies the sharechain
265+
after the fact (to change payout distribution), the on-chain state_root
266+
won't match the modified state. This is the primary security property.
267+
268+
2. **Historical audit trail** — after shares are pruned (past CHAIN_LENGTH),
269+
`ref_hash` and `merged_payout_hash` are gone. The on-chain state_root
270+
is the only remaining proof of what the PPLNS distribution was at
271+
block-find time.
272+
273+
3. **On-chain pool analytics** — metadata fields (miner_count, hashrate_class,
274+
share_period) create a permanent, public record of pool health visible
275+
to anyone scanning the blockchain. No c2pool node needed to read it.
276+
277+
4. **V37 migration foundation** — L-1 and L+1 are zero placeholders now.
278+
When V37 activates temporal layers, the commitment chain is already
279+
established on the blockchain with years of history.
280+
281+
**What THE commitment does NOT provide (V36 limitations):**
282+
283+
- ~~Fast new-node sync~~ — verifying a state_root requires the full sharechain
284+
(circular dependency). True checkpoint-based sync needs V37 protocol
285+
changes: a new P2P message type for "download shares from checkpoint X".
286+
287+
- ~~Cross-node verification during sync~~ — nodes with different chain tips
288+
produce different state_roots. The state_root is a snapshot of ONE node's
289+
state, not a global consensus value. (It becomes consensus-equivalent
290+
once all nodes are synced to the same tip.)
291+
292+
- ~~Replacing ref_hash~~ — ref_hash is per-share consensus (every 15s),
293+
state_root is per-block snapshot (every ~30min+). Different granularity.
294+
295+
**The PPLNS outputs ARE deterministic** across synced nodes. The skip list
296+
produces identical weights given the same best share tip and chain depth.
297+
`compute_the_state_root` hashes the same sorted `(script, amount)` table
298+
that `generate_transaction` uses. So the state_root IS reproducible — but
299+
only after full share chain sync, which limits its utility for bootstrapping.
300+
301+
**V37 will unlock:** checkpoint-based share download, temporal layer
302+
anchoring (L-1/L+1 non-zero), cross-layer settlement proofs.
257303
258304
---
259305

0 commit comments

Comments
 (0)