A guided course: from fingerprints to shared history#
Start with Start here: a blockchain without the jargon and install using Your first payment, step by step. You need
Python variables, lists, loops, functions, and assert. You do not need
prior cryptography. Read the Glossary as needed; leave equations for a
second pass. The times below are planning estimates, including exercises.
For each lesson: predict the result, run the notebook from its first cell, change one input, and explain the result in your own words. Consult Exercises after trying the exercise. A passed assertion checks a specific claim; it is not proof that a complete system is secure.
Further investigations#
After lesson 3, explore Shamir’s secret sharing: reconstruct a secret without storing it whole (1979) and Chaum’s blind signatures: authenticate a message the signer cannot see (1982): recovering a secret and authorizing hidden information solve different problems. After lesson 6, explore Proof of stake: a stake-weighted proposer lottery (Peercoin 2012): a fair proposer lottery still needs agreement rules. Read History alongside these lessons for the origins and limits of each breakthrough; its chronological order differs from this prerequisite order deliberately.
Check your understanding#
Before moving on, answer these without code:
If Alice signs two conflicting payments, can both signatures verify?
Does an inclusion proof establish that a payment is funded or final?
Can two honest peers have different pending queues or selected histories?
Does reconnecting a link automatically send all old messages in this model?
Why can a payment return to a queue after a reorganization?
Answers: yes; no; yes; no (explicit synchronization is needed); and because its effect may have disappeared from the selected state, making its sequence number and balance requirements valid again. Recheck eligibility rather than assuming every displaced payment is still spendable.
A capstone experiment#
Run One payment from signature to reorganization and reinclusion. Draw its two branches on paper, label Bob’s balance at each block, and compare your predictions with the balance and queue table. Then make the winning branch contain a conflicting payment. Explain why a valid signature is insufficient to restore the original payment to a pending queue. See Exercises: ledgers and data structures (problem 7) for a checked conflict example, and Life of a payment for the same story told step by step.
The lifecycle queue handles one candidate payment per peer. Extending it to many dependent payments requires validating an ordered batch against a provisional state, plus explicit policies for conflicts and replacement. These policies are outside this lesson, not hidden behavior of the simulator.