P10-L04 · P10 · P10-M01
Reconstruct a multi-hop path with explicit gaps
Prerequisites: P10-L03
Learning objectives
- Reconstruct a multi-hop path with explicit gaps
- Reproduce a historical UTXO path and conserve integer amounts without guessing uncollected branches.
Why this matters
A continuous-looking funding graph can hide a missing transaction or turn an output into an alleged owner. The historical package lets a reader reproduce the actual collected path and see where it ends.
Explanation
HISTORICAL PROVENANCE WARNING: these are Bitcoin records from 2009, retrieved on 2 October 2026 from one public indexer. The package does not establish a current balance or human identity. Begin with docs/academy-2/datasets/p10/dataset.json and run its offline verifier. Raw SHA256d matches establish the serialized transaction identifiers; indexed height/hash labels remain provider-reported, with no independent full node or merkle proof in this package.
A Bitcoin edge is defined by previous transaction ID and output index, not by a provider’s friendly wallet label. Follow the exact referenced output, record its integer satoshis and inspect the next input. A split creates multiple outputs; it does not prove which is change or who economically benefits. Trace each collected branch independently and mark an uncollected one as a gap.
The selected path begins in a block-9 coinbase, so there is no earlier ordinary funding input. It continues through block 170 to block 181. Do not draw a fabricated address before the coinbase or rename the tracked output “the same owner’s change.” The package’s outspend response describes indexer status at retrieval, not the state at the original event time.
Key terms
Outpoint: transaction ID plus zero-based output index.
Coinbase: special block reward transaction, without an ordinary prior UTXO input.
Tracked output: selected path branch without asserting change ownership.
Collection gap: branch whose subsequent raw transaction is not packaged.
Historical example
Historical parent: 0437cd7f8525ceed2324359c2d0ba26006d92d856a9c20fa0241106ee5a597c9, output 0 = 5,000,000,000 sats, block 9. Transfer: f4184fc596403b9d638783cf57adfe4c75c605f6356fbc91338530e9831e9e16, block 170, spends that outpoint and creates output 0 = 1,000,000,000 and output 1 = 4,000,000,000 sats. Child: a 16f3ce4dd5deb92d98ef5cf8afeaf0775ebca408f708b2146c4fb42b41e14be, block 181, spends transfer output 1 and creates 1,000,000,000 and 3,000,000,000 sats. Both selected non-coinbase transactions conserve inputs with zero fee in these records.
The transfer output-0 spend is mentioned by the retrieved outspend index, but its raw transaction is not collected. Child descendants are also outside scope. Header times, exact hashes and retrieval timestamps are preserved in the manifest; the path is not attributed to named people.
Visual specifications
Funding-path diagram with three full transaction IDs and indexed heights 9, 170 and 181. Label every outpoint and satoshi amount. Draw transfer output-0 and child descendants as unresolved collection gaps; no human-owner cluster or fictional pre-coinbase address.
Caption: Historical collected UTXO path; missing branches and attribution limits remain visible.
SPECIFICATION_ONLY — the rendered visual has not been produced or independently reviewed.
What the evidence proves
OBSERVED in the frozen bytes/indexed rows: exact transaction identifiers, selected input/output links and integer amounts. Locally reproduced raw identifiers agree. Provider-reported heights order the selected transactions as 9 → 170 → 181.
What the evidence does not prove
Human control, change classification, uncollected downstream paths and current balances are UNKNOWN. The available evidence is INSUFFICIENT to support any allegation about ownership or intent. Native canonical inclusion is not independently established by this package.
Common mistakes
Naming the tracked output as proven change; inventing a parent address for coinbase; filling the output-0 branch from memory; using retrieval-time outspends as a 2009 snapshot.
Practical exercise
Draw the three collected transactions using full outpoints. Reconcile both splits in satoshis. Label two collection boundaries and rewrite “one person moved the same coins through all three wallets.”
Show worked correction
Connect parent:0 → transfer input 0 and transfer:1 → child input 0. At transfer, 5,000,000,000 = 1,000,000,000 + 4,000,000,000; at child, 4,000,000,000 = 1,000,000,000 + 3,000,000,000. Mark the uncollected output-0 branch and all child descendants with dashed boundaries. Replace the identity claim with “the collected raw transactions show these two referenced UTXO spends; human control and change ownership are not established.” Do not extend the graph using the indexer mention alone as though its raw record were verified.
Checklist
- Run the frozen-byte and raw-ID verifier.
- Use transaction ID plus output index.
- Conserve integer satoshis at each collected split.
- Keep provider confirmation and uncollected branches qualified.
Summary
The frozen historical path supports specific UTXO edges and amount conservation, while its branch gaps block broader ownership and complete-flow claims.
Summary
- A path edge is an exact outpoint reference.
- Splits do not prove change ownership.
- Expose uncollected branches rather than inventing continuity.
Next lesson
P10-L05
Tools
Use the named ZECOIN tool only as an evidence-reading context. This lesson creates no tool output, account session or entitlement. Offline exercise; do not sign, deploy, approve or fund anything.
Sources & claim boundaries
-
BTC: Bitcoin developer guide — transactions — Input references identify previous transaction outputs; scripts do not identify a human. Boundary: Mechanism documentation only; original illustrative values are stipulated, not observations. Historical records have separately frozen provenance and explicit collection gaps.
-
API: Esplora public API specification — GET routes, integer satoshis and indexed confirmation/outspend fields. Boundary: Mechanism documentation only; original illustrative values are stipulated, not observations. Historical records have separately frozen provenance and explicit collection gaps.
-
CHAIN: Frozen historical chain locator — Single-indexer record; historical bytes are frozen, no independent native inclusion or human identity proof.
Evidence classifications
HISTORICAL — event dates and retrieval dates are separate. See frozen package and collection gaps.
Observation date
2026-10-02 (retrieval date; not event time)
Content version
1
Review date
null
Review status
needs_review
Visual specifications
P10-L04-V01
Reconstruct a multi-hop path with explicit gaps
Historical collected UTXO path; missing branches and attribution limits remain visible.
Funding-path diagram with three full transaction IDs and indexed heights 9, 170 and 181. Label every outpoint and satoshi amount. Draw transfer output-0 and child descendants as unresolved collection gaps; no human-owner cluster or fictional pre-coinbase address.
Funding-path diagram with three full transaction IDs and indexed heights 9, 170 and 181. Label every outpoint and satoshi amount. Draw transfer output-0 and child descendants as unresolved collection gaps; no human-owner cluster or fictional pre-coinbase address.
Stack observations, assumptions, gaps and conclusion at 390 px; retain full IDs and a complete text equivalent. Any wide table scrolls locally.
Prose may follow RTL; IDs, quantities and time axes remain LTR. Preserve dependency direction.
P10-FROZEN-RECORDS-v1
Sources & claim boundaries
BTC · PRIMARY_DOCUMENTATION
Bitcoin developer guide — transactions
- Supported claim
- Input references identify previous transaction outputs; scripts do not identify a human.
- Verification boundary
- Mechanism documentation only; original illustrative values are stipulated, not observations. Historical records have separately frozen provenance and explicit collection gaps.
- Checked at
- 2026-10-02
https://developer.bitcoin.org/devguide/transactions.html
API · PRIMARY_DOCUMENTATION
Esplora public API specification
- Supported claim
- GET routes, integer satoshis and indexed confirmation/outspend fields.
- Verification boundary
- Mechanism documentation only; original illustrative values are stipulated, not observations. Historical records have separately frozen provenance and explicit collection gaps.
- Checked at
- 2026-10-02
https://github.com/Blockstream/esplora/blob/master/API.md
CHAIN · PUBLIC_CHAIN_RECORD
Frozen primary chain record locator
- Supported claim
- Exact historical record locator; frozen bytes and claim mappings are in docs/academy-2/datasets/p10.
- Verification boundary
- Single-indexer record; historical bytes are frozen, no independent native inclusion or human identity proof.
- Checked at
- 2026-10-02
https://blockstream.info/api/tx/f4184fc596403b9d638783cf57adfe4c75c605f6356fbc91338530e9831e9e16
Dataset provenance
id: P10-FROZEN-RECORDS-v1
dataStatus: HISTORICAL
observedAt: 2026-10-02
timeBasis: Historical header timestamps distinct from UTC retrieval times
source: docs/academy-2/datasets/p10/dataset.json
scope: Frozen Bitcoin chain records and attributed BIP50 publication; see source-to-claim matrix and explicit collection gaps.