@@ -245,15 +245,61 @@ Five-layer temporal model for entropy-weighted share evaluation:
245245
246246Every 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