Back

Funding path reconstruction

P10-L04 · P10 · P10-M01

Reconstruct a multi-hop path with explicit gaps

HISTORICAL · needs_review

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

SPECIFICATION_ONLY · HISTORICAL

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
Open primary source
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
Open primary source
https://github.com/Blockstream/esplora/blob/master/API.md

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.

Test your reasoning

P10-L04-Q1 · Which link is established for the child input?
P10-L04-Q2 · What fee follows from the selected child amounts?
P10-L04-Q3 · The output-0 spend ID appears in outspends but its raw transaction is absent. How draw it?
P10-L04-Q4 · Why is no ordinary funding edge drawn before the parent?
P10-L04-Q5 · What does matching SHA256d for all three raws still leave unresolved?