L34 · Bitcoin: Identities, Transactions, Hash Chains & Proof of Work

CS 161, Lesson 34, in 51 slides. It presents Bitcoin as a digital currency that has the properties of physical money but NO trusted bank, in section 16.1, then public keys as identities in sections 16.2 and 16.3, and the signed transaction ledger with balances computed by replay, in sections 16.4 and 16.5. It covers the append-only hash chain and tamper detection in sections 16.6 and 16.7, and consensus by proof of work under the longest-chain rule, in sections 16.8 and 16.9. It is anchored to textbook sections 16.1 to 16.9.

Subject: Computer Security · 83 slides · applied lesson

Open the interactive version of this deck · Homework for this lesson

What this lesson covers

The lesson, slide by slide

1. Money Without a Bank

Title

CS 161 · Lesson 34 of 45

public-key identities · a signed transaction ledger · the append-only hash chain · and consensus by proof of work

2. By the end of this lesson you can…

Objectives

  1. State the properties of money Bitcoin must provide and explain why its goal is to provide them with no trusted central party.
  2. Explain that a Bitcoin identity is a public key — proven by signing — so impersonation is infeasible and identities are pseudonymous.
  3. Use the signed transaction ledger to deduce balances by replay and apply the three validity checks to spot an invalid transaction.
  4. Build the ledger as an append-only hash chain and verify all history from ONE trusted top hash, detecting any tampering.
  5. Explain forks and how proof of work plus the longest-chain rule give consensus under a >50%-honest majority.

3. What survived from L33 · Password Hashing: Salt, Slow Hashes & Key Derivation?

Warm-up

Discussion prompt

Before we open L34 · Bitcoin: Identities, Transactions, Hash Chains & Proof of Work: without looking back, what was the main idea of L33 · Password Hashing: Salt, Slow Hashes & Key Derivation, and what could you do by the end of it that you could not do before?

Hint: One sentence for the idea, one for the skill. If the second one is blank, that is the part to revisit.

Answer:

CS 161, Lesson 33, in 51 slides. It explains why storing H(w) is not enough, in section 14.7, then covers the offline guessing attack and the amortized precomputation attack, and the two defenses given in section 14.8: a per-user salt, and slow iterated hashing. It closes with what this implies for key derivation, in section 14.9. It is anchored to textbook sections 14.7 to 14.9.

4. Three questions this lesson answers

Concept

Every primitive in the crypto unit — collision-resistant hashes (L22) and digital signatures (L30) — now does real work. Bitcoin is the capstone: a currency built ENTIRELY from cryptography, with no bank to trust.

What problem?
§16.1 money's properties, but with no trusted central party
How are identities & money built?
§16.2–16.7 public keys, signed transactions, a hash-chain ledger
How does everyone agree?
§16.8–16.9 consensus by proof of work, the longest chain

5. Which is which: Three questions this lesson answers

Matching

Match the pairs

From Three questions this lesson answers — match each one to what it actually does. The descriptions have been shuffled.

  • c1. What problem?
  • c2. How are identities & money built?
  • c3. How does everyone agree?
  • b1. §16.1 money's properties, but with no trusted central party
  • b2. §16.2–16.7 public keys, signed transactions, a hash-chain ledger
  • b3. §16.8–16.9 consensus by proof of work, the longest chain

Why: What problem?, How are identities & money built?, How does everyone agree? are easy to tell apart while they are sitting next to their descriptions and much harder afterwards, which is what this checks.

6. The Problem — Money With No Bank

Section

Part 1 · §16.1 decentralization as the goal

7. §16.1 What physical money does for us

Concept

A usable currency needs a handful of properties we take for granted with cash. List them out — each one is something the system must enforce.

8. Break it if you can: §16.1 What physical money does for us

Counterexample

Discussion prompt

A usable currency needs a handful of properties we take for granted with cash. List them out — each one is something the system must enforce.

That is stated as though it always holds. Do one of two things: produce a case where it fails, or say precisely what rules such a case out. "It just does" is not on the menu.

Hint: Hunt at the extremes first — zero, one, negative, empty, equal. If every extreme survives, the reason they survive is the proof.

9. §16.1 Traditionally, a bank enforces all of it

Concept

With normal digital money, a trusted bank is the answer to every property: it holds the accounts, authenticates you, moves the money, and refuses overdrafts. Everyone trusts that one central party.

Bitcoin's goal is radical: provide the same properties with no centralized party at all — using cryptography instead of trust. The bank's four jobs each become a cryptographic mechanism.

10. By analogy: §16.1 Traditionally, a bank enforces all of it

Analogy

Discussion prompt

Explain §16.1 Traditionally, a bank enforces all of it by analogy to something with no Computer Security in it at all — a queue, a recipe, a map, a bank balance, whatever fits. Then say where your analogy breaks.

Hint: An analogy that never breaks is not an analogy, it is the same idea wearing a hat. Find the seam — that is the part that is actually new.

Answer:

Bitcoin's goal is radical: provide the same properties with no centralized party at all — using cryptography instead of trust. The bank's four jobs each become a cryptographic mechanism.

11. §16.1 Why remove the bank at all?

Intuition

A central party is a single point of trust AND failure: it can freeze your account, censor a payment, inflate the currency, or simply be hacked. The whole design question of Bitcoin is: can cryptography do the bank's job without anyone being in charge?

This connects all the way back to §1's trust problem: every system has a Trusted Computing Base you must trust. Bitcoin's ambition is a money system with essentially no TCB — no server you have to believe.

Ask yourself: if there's no bank, who stops Alice from spending money she doesn't have? (Nobody single — instead EVERY participant checks the public ledger. That's what the rest of the lesson builds.)

12. Teach it back: §16.1 Why remove the bank at all?

Explain it

Discussion prompt

Explain §16.1 Why remove the bank at all? to a student a year behind you. No notation, no jargon they have not met — and it still has to be true.

Hint: If your explanation needs a symbol they have never seen, you are describing the notation rather than the idea.

Answer:

Ask yourself: if there's no bank, who stops Alice from spending money she doesn't have? (Nobody single — instead EVERY participant checks the public ledger. That's what the rest of the lesson builds.)

13. §16.1 The four properties → four mechanisms

Concept

Map each property the bank used to provide onto the cryptographic mechanism Bitcoin uses instead. The rest of the lesson is this table, expanded.

PropertyBank's wayBitcoin's way
Identity / no impersonationID checkPublic key + signatures (§16.2–16.3)
Accounts / balancesBank databaseDeduced from the ledger (§16.4–16.5)
TransactionsBank moves moneySigned messages on the ledger (§16.4)
No double-spend / tamperBank is authoritativeHash chain + proof of work (§16.6–16.9)

14. Fill in: Bank's way for §16.1 The four properties → four mechanisms

Comparison

Comparison matrix

From §16.1 The four properties → four mechanisms: refill the Bank's way column from what you know. The rest of the table is as it appeared.

PropertyBank's wayBitcoin's way
Identity / no impersonationID checkPublic key + signatures (§16.2–16.3)
Accounts / balancesBank databaseDeduced from the ledger (§16.4–16.5)
TransactionsBank moves moneySigned messages on the ledger (§16.4)
No double-spend / tamperBank is authoritativeHash chain + proof of work (§16.6–16.9)

15. Something is wrong here: 'Bitcoin needs a trusted central server'

Anomaly

Predict first

A student writes this, and it looks reasonable:

A student: 'There must be SOME Bitcoin company or server that runs the accounts and approves payments.'

It is wrong. Say what breaks — and say it before you turn the page.

Correct: The ENTIRE point of Bitcoin is decentralization — there is no bank, no company, no authoritative server.

A student: who enforces the rules instead?

Why: The ENTIRE point of Bitcoin is decentralization — there is no bank, no company, no authoritative server. If one party were in charge, it would be a single point of trust and failure, exactly what Bitcoin removes.

16. Trap: 'Bitcoin needs a trusted central server'

Trap

The trap

A student: 'There must be SOME Bitcoin company or server that runs the accounts and approves payments.'

Assume a central authority enforces the rules

Why: Wrong. The ENTIRE point of Bitcoin is decentralization — there is no bank, no company, no authoritative server. If one party were in charge, it would be a single point of trust and failure, exactly what Bitcoin removes.

The fix

A student: who enforces the rules instead?

Every participant enforces the rules using cryptography

Why: §16.1: there is no central party. Public keys, signatures, and a shared append-only ledger let every participant independently verify identities, balances, and transactions. Trust is replaced by math everyone can check.

17. §16.1 The hardest property: no double-spending

Intuition

Three of money's properties are about a single moment. The deepest one is about TIME: once Alice spends a unit, she must not be able to spend that same unit again somewhere else.

A bank solves this trivially — it's the one authority that decides the order of events. With no bank, getting everyone to agree on the ORDER of transactions is the central challenge, and it's exactly what proof of work (Part 5) will solve.

Ask yourself: which of the four mechanisms is really about double-spending? (The append-only hash chain plus proof-of-work consensus — they pin down a single agreed order of history.)

18. Identity — You Are a Public Key

Section

Part 2 · §16.2–16.3 primitives & identity

19. §16.2 Two primitives you already have

Concept

Bitcoin invents no new cryptography. It assembles two tools you've already studied — both of them public, both of them one-way in the sense that matters.

Collision-resistant hash (L22) — A public function H where it is infeasible to find two inputs with the same output. Used to chain the ledger together and make it tamper-evident.

Digital signature (L30) — A keypair where the private key SK signs a message and the public key PK verifies it. Signatures are unforgeable: nobody without SK can produce a signature that verifies under PK.

20. Take the definitions apart: Collision-resistant… vs Digital signature (L30)

Definition probe

Sort into buckets

Every line below is part of the definition of Collision-resistant hash (L22) or of Digital signature (L30) — one or the other, never both. Put each where it belongs.

Collision-resistant hash (L22)
A public function H where it is infeasible to find two inputs with the same output.; Used to chain the ledger together and make it tamper-evident.
Digital signature (L30)
A keypair where the private key SK signs a message and the public key PK verifies it.; nobody without SK can produce a signature that verifies under PK.
b1
A public function H where it is infeasible to find two inputs with the same output. Used to chain the ledger together and make it tamper-evident.
b2
A keypair where the private key SK signs a message and the public key PK verifies it. Signatures are unforgeable: nobody without SK can produce a signature that verifies under PK.

21. §16.3 Your identity IS your public key

Concept

There are no usernames or accounts to register. Bob's identity is literally his public key PK_B. Whoever generates a keypair has created a new identity, with no permission from anyone.

\[ \text{identity of Bob} \ :=\ PK_B \]

Identity as a public key — In Bitcoin a participant is identified by a public key PK. They prove they are that participant by signing a message with the matching SK — there is no name, account, or central registrar.

22. §16.3 Why a public key makes a good identity

Intuition

To prove 'I am PK_B', Bob signs a message with SK_B. Anyone can verify the signature with the public PK_B. Because signatures are unforgeable, no one without SK_B can produce that signature — so no one can impersonate Bob.

This gives the 'no impersonation' property with no ID check and no bank: holding the private key IS being that identity. Lose the key and you lose the identity; steal the key and you become them.

Ask yourself: what stops Mallory from claiming to be PK_B? (She'd have to sign with SK_B, which she doesn't have. Unforgeable signatures block the impersonation directly.)

23. What has to happen first: §16.3 Proving you are PK_B

Ranking

Put in order

Put the moves of §16.3 Proving you are PK_B into the order they have to happen.

  1. Bob publishes PK_B as his identity; he keeps SK_B private
  2. To prove he's PK_B, Bob signs a challenge message m: sigma = Sign(SK_B, m)
  3. A verifier checks Verify(PK_B, m, sigma) = true
  4. Verify: only the holder of SK_B could have signed, so the prover is PK_B

Why: These are the moves of the worked example in the order it makes them, and each one is set up by the one before it. Anyone can refer to 'PK_B' — it's public.

24. §16.3 Proving you are PK_B

Worked example

Bob publishes PK_B as his identity; he keeps SK_B private

Why: Anyone can refer to 'PK_B' — it's public. Only Bob holds the matching SK_B.

To prove he's PK_B, Bob signs a challenge message m: sigma = Sign(SK_B, m)

Why: Producing a valid signature requires the private key, which only Bob has.

\[ \sigma = \mathrm{Sign}(SK_B,\ m) \]

A verifier checks Verify(PK_B, m, sigma) = true

Why: Anyone with the public PK_B can check the signature; nobody else could have produced it.

Verify: only the holder of SK_B could have signed, so the prover is PK_B

Why: §16.3: unforgeability means a passing signature proves possession of SK_B. Identity is established with no central party — just the keypair.

25. Decode the notation: §16.3 Proving you are PK_B

Notation

Annotate

From §16.3 Proving you are PK_B — read this one piece at a time. What is each part doing?

On: \( \sigma = \mathrm{Sign}(SK_B,\ m) \)

  • Anyone can refer to 'PK_B' — it's public. Only Bob holds the matching SK_B.
  • Producing a valid signature requires the private key, which only Bob has.
  • Anyone with the public PK_B can check the signature; nobody else could have produced it.

26. Something is wrong here: 'your Bitcoin identity is your name or email'

Anomaly

Predict first

A student writes this, and it looks reasonable:

A student: 'My Bitcoin identity is tied to my name, email, or some account I sign up for.'

It is wrong. Say what breaks — and say it before you turn the page.

Correct: There are no names, emails, or accounts in Bitcoin.

A student: what actually names a participant?

Why: There are no names, emails, or accounts in Bitcoin. Your identity is a PUBLIC KEY you generated yourself — pseudonymous, not tied to your real-world identity by the protocol.

27. Trap: 'your Bitcoin identity is your name or email'

Trap

The trap

A student: 'My Bitcoin identity is tied to my name, email, or some account I sign up for.'

Treat the identity as a real-world name or account

Why: Wrong. There are no names, emails, or accounts in Bitcoin. Your identity is a PUBLIC KEY you generated yourself — pseudonymous, not tied to your real-world identity by the protocol.

The fix

A student: what actually names a participant?

The identity is a public key PK, proven by signing with SK

Why: §16.3: identity = PK. You prove you hold it by signing. It is pseudonymous — a key, not a person — though we'll see that does NOT mean anonymous.

28. §16.3 Anyone can make an identity — for free

Concept

Creating an identity is just running KeyGen to get a fresh (PK, SK). No registration, no approval, no central party — generating the keypair IS creating the account.

\[ \mathrm{KeyGen}() \rightarrow (PK,\ SK)\quad\text{— a brand-new identity} \]

This is why a single person can hold many identities (many keypairs), and why losing SK is catastrophic: there is no 'forgot password' — the identity is unrecoverable without the private key.

29. Transactions & Balances From the Ledger

Section

Part 3 · §16.4–16.5 the signed ledger

30. §16.4 A transaction is a signed message

Concept

To pay, Alice broadcasts a signed message saying she sends n units to PK_B. She signs it with her own SK_A so everyone can confirm it really came from PK_A.

\[ T = \big(\text{``}PK_A \text{ sends } n \text{ units to } PK_B\text{''},\ \ \mathrm{Sign}(SK_A, \cdot)\big) \]

Anyone can verify the signature with the public PK_A. Because only Alice holds SK_A, nobody else can spend Alice's money — the signature authorizes the transfer.

31. §16.5 Balances aren't stored — they're DEDUCED

Concept

There is no account database holding 'Alice: 6 units'. Instead there is an append-only, immutable ledger that records every transaction and its signature.

The ledger — An append-only, immutable, public list of every transaction ever made, each with its signature. It is the single source of truth — and it stores transactions, NOT balances.

To find anyone's balance, you replay the whole ledger: start from the initial amounts and apply every transaction in order. Balances are a computed view of history, not stored numbers.

32. §16.5 Why replay the ledger instead of storing balances

Intuition

If balances were just stored numbers, someone would have to be trusted to keep them correct — that's the bank again. By recording only signed transactions, EVERY participant can independently recompute every balance and agree.

The ledger is public and append-only, so the computation is the same for everyone. No authority is needed to tell you a balance; you derive it yourself from history you can verify.

Ask yourself: how does the system know Alice has enough to spend? (Replay the ledger to compute Alice's balance, then check the new transaction doesn't exceed it.)

33. Where does each piece belong: L34 · Bitcoin: Identities, Transactions…

Sorting

Sort into buckets

These are the pieces of L34 · Bitcoin: Identities, Transactions, Hash Chains & Proof of Work, out of order. Put each one back under the part of the lesson it belongs to.

The Problem — Money With No Bank
§16.1 What physical money does for us; §16.1 Traditionally, a bank enforces all of it; §16.1 Why remove the bank at all?
Identity — You Are a Public Key
§16.2 Two primitives you already have; §16.3 Your identity IS your public key; §16.3 Why a public key makes a good identity
Transactions & Balances From the Ledger
§16.4 A transaction is a signed message; §16.5 Balances aren't stored — they're DEDUCED; §16.5 Why replay the ledger instead of storing balances
s1
The Problem — Money With No Bank is where L34 · Bitcoin: Identities, Transactions, Hash Chains & Proof of Work puts §16.1 What physical money does for us, §16.1 Traditionally, a bank enforces all of it, §16.1 Why remove the bank at all?. Knowing which part of the lesson a problem belongs to is most of knowing which method to reach for.
s2
Identity — You Are a Public Key is where L34 · Bitcoin: Identities, Transactions, Hash Chains & Proof of Work puts §16.2 Two primitives you already have, §16.3 Your identity IS your public key, §16.3 Why a public key makes a good identity. Knowing which part of the lesson a problem belongs to is most of knowing which method to reach for.
s3
Transactions & Balances From the Ledger is where L34 · Bitcoin: Identities, Transactions, Hash Chains & Proof of Work puts §16.4 A transaction is a signed message, §16.5 Balances aren't stored — they're DEDUCED, §16.5 Why replay the ledger instead of storing balances. Knowing which part of the lesson a problem belongs to is most of knowing which method to reach for.

34. Plan first: §16.5 Replaying the ledger to catch an invalid spend

Step zero

Discussion prompt

§16.5 Replaying the ledger to catch an invalid spend — before any calculation: what is the plan? Name the moves in order, in plain English, without doing the arithmetic.

Hint: It starts with: Start from initial amounts: Bob has $10, everyone else $0

Answer:

  1. Start from initial amounts: Bob has $10, everyone else $0
  2. Apply the ledger's first three transactions: Bob→Alice $5, Bob→Mallory $2, Mallory→Alice $1
  3. Now check the next transaction, Alice → Eve $9, against Alice's balance
  4. Verify: Alice→Eve $9 is REJECTED — she has only $6

35. §16.5 Replaying the ledger to catch an invalid spend

Worked example

Start from initial amounts: Bob has $10, everyone else $0

Why: Replay always begins from the known starting state, then applies transactions in order.

Apply the ledger's first three transactions: Bob→Alice $5, Bob→Mallory $2, Mallory→Alice $1

Why: Each transfer decreases the sender and increases the receiver. We track the running balances after each one.

transactionBobAliceMallory
start$10$0$0
Bob → Alice $5$5$5$0
Bob → Mallory $2$3$5$2
Mallory → Alice $1$3$6$1

Now check the next transaction, Alice → Eve $9, against Alice's balance

Why: Alice's replayed balance is $6. She is trying to send $9 — more than she has.

\[ \text{Alice balance} = \$6 \ <\ \$9 \ \Rightarrow\ \text{INVALID} \]

Verify: Alice→Eve $9 is REJECTED — she has only $6

Why: §16.5: replaying the ledger gives Alice $6, so the $9 spend exceeds her balance and every participant rejects it. The 'no overspending' property is enforced with no bank.

36. Which is which, by Bob

Discrimination

Sort into buckets

Sort these by Bob, from memory, without looking back at §16.5 Replaying the ledger to catch an invalid…. Telling them apart on the spot is the skill; the table is only where the answer happens to be written down.

$10
start
$5
Bob → Alice $5
$3
Bob → Mallory $2; Mallory → Alice $1
g1
Bob is "$10" for start — that is what the table on "§16.5 Replaying the ledger to catch an…" records, and it is the single property separating this group from the rest.
g2
Bob is "$5" for Bob → Alice $5 — that is what the table on "§16.5 Replaying the ledger to catch an…" records, and it is the single property separating this group from the rest.
g3
Bob is "$3" for Bob → Mallory $2, Mallory → Alice $1 — that is what the table on "§16.5 Replaying the ledger to catch an…" records, and it is the single property separating this group from the rest.

37. §16.4 The chaining model: each TX points to its source

Concept

Rather than scanning all of history per balance, each transaction explicitly references where the money came from — the earlier transaction that paid the sender. Money flows in a chain.

TXtransfersource of funds
TX1Bob → Alice 5Bob's initial coins
TX2Alice → Eve 5TX1 (the 5 Alice received)

TX2 spends exactly the output of TX1. Following these references, anyone can trace each coin back to where it originated.

38. What each one costs: §16.4 The chaining model: each TX points to its…

Trade off

Comparison matrix

From §16.4 The chaining model: each TX points to its source: every row here is a choice with a cost. Fill the source of funds column, then say which row you would actually pick and what you give up for it.

TXtransfersource of funds
TX1Bob → Alice 5Bob's initial coins
TX2Alice → Eve 5TX1 (the 5 Alice received)

39. §16.4 The three validity checks

Concept

A transaction is valid only if it passes all three checks. Every participant runs them before accepting a transaction.

  1. Signature verifies with the sender's public key (it's really from PK_A).
  2. The sender was the RECEIVER in some previous transaction (the money exists and is theirs).
  3. The sender hasn't already spent that money (no double-spend).

Check 1 stops impersonation; check 2 stops inventing money; check 3 stops double-spending. Together they replace the bank's authority.

40. Trap: 'Bitcoin stores each user's balance directly'

Trap

The trap

A student: 'Somewhere there's a table that says Alice = $6, Bob = $3, and a payment just edits those numbers.'

Assume balances are stored and edited directly

Why: Wrong. Nothing stores balances. The ledger stores only signed TRANSACTIONS. A stored-balance table would need a trusted keeper — the very bank Bitcoin removes.

The fix

A student: where does a balance come from?

Derive balances by replaying the transaction ledger

Why: §16.5: start from initial amounts, apply every signed transaction in order, and the balance falls out. Balances are a computed view of history, not stored state.

41. Something is wrong here: 'pseudonymous means anonymous'

Anomaly

Predict first

A student writes this, and it looks reasonable:

A student: 'Since my identity is just a public key, Bitcoin is completely anonymous — nobody can ever trace my payments.'

It is wrong. Say what breaks — and say it before you turn the page.

Correct: The ledger is PUBLIC and permanent.

A student: what does identity-by-public-key actually give?

Why: The ledger is PUBLIC and permanent. Every transaction under your key is visible to all. If your key is ever linked to your real identity (an exchange, a purchase), your whole transaction history is traceable.

42. Trap: 'pseudonymous means anonymous'

Trap

The trap

A student: 'Since my identity is just a public key, Bitcoin is completely anonymous — nobody can ever trace my payments.'

Equate 'pseudonymous' with 'anonymous'

Why: Wrong. The ledger is PUBLIC and permanent. Every transaction under your key is visible to all. If your key is ever linked to your real identity (an exchange, a purchase), your whole transaction history is traceable.

The fix

A student: what does identity-by-public-key actually give?

Recognize Bitcoin is PSEUDONYMOUS, not anonymous

Why: §16.3–16.5: a public key is a pseudonym, not a hidden identity. Because the ledger is public and replayable, payments are linkable and traceable once the pseudonym is tied to a person.

43. What has to happen first: §16.4 Tracing money through the chaining model

Ranking

Put in order

Put the moves of §16.4 Tracing money through the chaining model into the order they have to happen.

  1. TX1: Bob → Alice 5, with funds sourced from Bob's initial coins
  2. TX2: Alice → Eve 5, sourced from TX1 (the 5 Alice received)
  3. Verify: TX2 passes all three checks; a second spend of TX1's output (TX2b) fails check 3

Why: These are the moves of the worked example in the order it makes them, and each one is set up by the one before it. The transaction names where the money came from — Bob's starting balance — so verifiers know the 5 units exist.

44. §16.4 Tracing money through the chaining model

Worked example

TX1: Bob → Alice 5, with funds sourced from Bob's initial coins

Why: The transaction names where the money came from — Bob's starting balance — so verifiers know the 5 units exist.

TX2: Alice → Eve 5, sourced from TX1 (the 5 Alice received)

Why: Alice spends exactly the output of TX1. The reference lets anyone confirm she is spending real, previously-received money.

TXtransfersourcevalid?
TX1Bob → Alice 5Bob's initial coinsyes
TX2Alice → Eve 5TX1's outputyes — TX1 unspent
TX2bAlice → Carol 5TX1's output againNO — already spent in TX2

Verify: TX2 passes all three checks; a second spend of TX1's output (TX2b) fails check 3

Why: §16.4: signature verifies (check 1), Alice was the receiver in TX1 (check 2), and TX1's output is unspent for TX2 but ALREADY spent for TX2b (check 3). The chaining references make double-spends visible.

45. Fill in: transfer for §16.4 Tracing money through the chaining…

Comparison

Comparison matrix

From §16.4 Tracing money through the chaining model: refill the transfer column from what you know. The rest of the table is as it appeared.

TXtransfersourcevalid?
TX1Bob → Alice 5Bob's initial coinsyes
TX2Alice → Eve 5TX1's outputyes — TX1 unspent
TX2bAlice → Carol 5TX1's output againNO — already spent in TX2

46. §16.4 Why each transaction names its source

Intuition

Naming the source transaction does two jobs at once: it proves the money EXISTS (it traces back to a real earlier payment), and it makes double-spending detectable (a source can be spent only once).

Without these references you'd have to scan all of history to answer 'does this money exist and is it unspent?'. With them, you follow a chain of pointers — the structure that, generalized, becomes the UTXO model (⊕, beyond this section).

Ask yourself: which validity check does the source reference most directly support? (Check 2 — that the sender was a previous receiver — and check 3, that the referenced output isn't already spent.)

47. The Hash Chain — an Immutable Ledger

Section

Part 4 · §16.6–16.7 tamper-evidence

48. §16.6 Each block hashes the previous block

Concept

We need the ledger to be append-only and immutable with no authority enforcing it. Build it as a hash chain: each block contains the data PLUS the hash of the previous block.

Hash chain — A sequence of blocks where each block stores a hash of the block before it, so every block's hash depends on all earlier blocks. Tampering with any block changes every hash after it.

\[ \mathrm{Block}_i = \big(m_i,\ H(\mathrm{Block}_{i-1})\big) \]

49. §16.6 The top hash is a digest of ALL history

Concept

Because each block embeds the previous block's hash, expanding the recursion shows that a recent block's hash depends on every block before it. Block 4, fully unfolded:

\[ \mathrm{Block}_4 = \big(m_4,\ H(m_3,\ H(m_2,\ H(m_1)))\big) \]

So a single hash at the top of the chain is a compact digest of the entire history. Change anything in m1, m2, or m3 and this top value changes.

50. §16.7 One trusted hash verifies an untrusted download

Intuition

Suppose Alice gets the top hash H(Block i) from a trusted source, but downloads the actual blocks 1..i from an untrusted server. Can she trust the blocks? Yes — she can verify them herself.

She recomputes the hashes up the chain from block 1 and checks the result equals her trusted top hash. Because the hash is collision-resistant, any tampering in an early block changes every later hash and shows up as a mismatch at the top.

Ask yourself: what does Alice actually have to trust? (Only ONE value — the top hash — plus collision resistance. The server delivering the blocks can be completely untrusted.)

51. Plan first: §16.7 Tracing a tamper-detection

Step zero

Discussion prompt

§16.7 Tracing a tamper-detection — before any calculation: what is the plan? Name the moves in order, in plain English, without doing the arithmetic.

Hint: It starts with: Alice holds a trusted top hash H(Block 4); she downloads blocks 1..4…

Answer:

  1. Alice holds a trusted top hash H(Block 4); she downloads blocks 1..4 from an untrusted server
  2. A malicious server alters m2 (say, to redirect a payment) and re-sends the chain
  3. Alice recomputes hashes up the chain: H(Block 1), then H(Block 2) using the tampered m2, and onward
  4. Verify: the recomputed top hash differs from the trusted one, so Alice rejects the chain

52. §16.7 Tracing a tamper-detection

Worked example

Alice holds a trusted top hash H(Block 4); she downloads blocks 1..4 from an untrusted server

Why: The top hash is her single anchor of trust; the blocks themselves come from somewhere she does NOT trust.

A malicious server alters m2 (say, to redirect a payment) and re-sends the chain

Why: The attacker hopes Alice won't notice the change buried in an old block.

Alice recomputes hashes up the chain: H(Block 1), then H(Block 2) using the tampered m2, and onward

Why: Changing m2 changes H(Block 2), which changes H(Block 3), which changes H(Block 4) — the change cascades upward.

blockhonest hashafter tampering m2
Block 1h1h1 (unchanged)
Block 2h2h2' ≠ h2
Block 3h3 = H(m3,h2)h3' ≠ h3
Block 4 (top)h4 (trusted)h4' ≠ h4 — MISMATCH

\[ H(\mathrm{Block}_4)_{\text{recomputed}} \ne H(\mathrm{Block}_4)_{\text{trusted}} \ \Rightarrow\ \text{tampering detected} \]

Verify: the recomputed top hash differs from the trusted one, so Alice rejects the chain

Why: §16.7: collision resistance means the attacker cannot alter m2 without changing the top hash. One trusted hash plus recomputation verifies the entire history — no trusted server needed.

53. What each one costs: §16.7 Tracing a tamper-detection

Trade off

Comparison matrix

From §16.7 Tracing a tamper-detection: every row here is a choice with a cost. Fill the after tampering m2 column, then say which row you would actually pick and what you give up for it.

blockhonest hashafter tampering m2
Block 1h1h1 (unchanged)
Block 2h2h2' ≠ h2
Block 3h3 = H(m3,h2)h3' ≠ h3
Block 4 (top)h4 (trusted)h4' ≠ h4 — MISMATCH

54. Something is wrong here: 'you must trust the server you download the chain from'

Anomaly

Predict first

A student writes this, and it looks reasonable:

A student: 'Since I download the whole blockchain from some server, I have to trust that server not to lie to me.'

It is wrong. Say what breaks — and say it before you turn the page.

Correct: The server delivering the blocks can be fully malicious.

A student: what's the minimum you must trust?

Why: The server delivering the blocks can be fully malicious. If you have a trusted top hash, you recompute the chain yourself and detect ANY tampering — the data source needs no trust at all.

55. Trap: 'you must trust the server you download the chain from'

Trap

The trap

A student: 'Since I download the whole blockchain from some server, I have to trust that server not to lie to me.'

Assume the download source must be trusted

Why: Wrong. The server delivering the blocks can be fully malicious. If you have a trusted top hash, you recompute the chain yourself and detect ANY tampering — the data source needs no trust at all.

The fix

A student: what's the minimum you must trust?

Trust ONE top hash; verify everything else by recomputing

Why: §16.7: one trusted top hash plus collision resistance lets you verify the entire history from an untrusted source. Tampering changes every later hash and is caught at the top.

56. §16.6 Append-only: you can add, never quietly edit

Concept

The hash chain makes the ledger append-only: new blocks can be added at the top, but no past block can be changed without breaking the chain above it.

This is exactly the property a ledger of money needs — history must be permanent. An attacker can still TRY to rewrite an old block, but doing so changes every later hash, which the next section (consensus) is what ultimately stops from being accepted.

57. Consensus & Proof of Work

Section

Part 5 · §16.8–16.9 forks and the longest chain

58. §16.8 Everyone stores and checks the chain

Concept

There is no central ledger server, so every participant stores the whole blockchain. New transactions are broadcast to the network, and each user independently checks them against the three validity rules.

This is the decentralized version of the ledger: thousands of copies, each verified locally. But it raises a new problem — what happens when malicious participants disagree about which chain is real?

59. §16.8 The fork problem: 'going back in time'

Concept

Mallory pays for something, then tries to undo it. She goes back to a point in the chain BEFORE her payment and re-builds an alternative chain from there in which the payment never happened.

Fork — Two different chains that share a common prefix and then diverge. A malicious fork tries to rewrite history — e.g. to erase a transaction the attacker already benefited from (a double-spend).

The hash chain alone doesn't resolve this: both forks are internally valid hash chains. The network needs a rule to agree on ONE of them. That rule is consensus via proof of work.

60. §16.9 Proof of work: a costly puzzle

Concept

Only miners add blocks, and only by attaching a valid proof of work: a computational puzzle that's expensive to solve but trivial to check.

Proof of work — A miner hashes the block concatenated with a NONCE, incrementing the nonce until the resulting hash starts with N zero bits (N is set by the algorithm, e.g. 33). Finding such a nonce takes many hashes; verifying it takes one.

\[ \text{find a nonce so that } H(\text{block} \,\|\, \text{nonce}) \text{ starts with } N \text{ zero bits} \]

61. §16.9 Why a puzzle creates consensus

Intuition

Because each block costs real computation to produce, building a chain is a RACE measured in computing power. Honest miners all extend the same chain, so the honest chain grows fastest.

Miners broadcast solved blocks, and honest miners accept the longest correct chain. To fork the chain, Mallory would have to out-compute everyone else and produce a LONGER alternative chain — outrunning the entire honest network.

Ask yourself: why does the longest chain win rather than the 'first' or 'newest'? (Length = total work. The longest correct chain is the one the most computing power agreed on, so it's the hardest to have forged.)

62. §16.8 New transactions are broadcast and checked by all

Concept

When Alice makes a payment, she broadcasts it to the whole network. Every participant independently runs the three validity checks (§16.4) before relaying or accepting it.

Miners then gather valid pending transactions into a candidate block and compete to attach a proof of work. Until a transaction is buried under proof-of-work blocks, it isn't yet settled history.

63. Teach it back: §16.8 New transactions are broadcast and checked by all

Explain it

Discussion prompt

Explain §16.8 New transactions are broadcast and checked by all to a student a year behind you. No notation, no jargon they have not met — and it still has to be true.

Hint: If your explanation needs a symbol they have never seen, you are describing the notation rather than the idea.

Answer:

When Alice makes a payment, she broadcasts it to the whole network. Every participant independently runs the three validity checks (§16.4) before relaying or accepting it.

64. §16.9 The >50% honest assumption

Concept

Bitcoin assumes more than 50% of computing power is honest. Under that assumption, the honest chain outpaces any attacker's chain, so the longest-chain rule converges on the honest history.

51% attack — Mallory can fork the chain — rewriting history and double-spending — only if she controls MORE than 50% of the network's computing power, so she can out-mine everyone else combined. Below 50%, the honest chain always wins the race.

65. By analogy: §16.9 The >50% honest assumption

Analogy

Discussion prompt

Explain §16.9 The >50% honest assumption by analogy to something with no Computer Security in it at all — a queue, a recipe, a map, a bank balance, whatever fits. Then say where your analogy breaks.

Hint: An analogy that never breaks is not an analogy, it is the same idea wearing a hat. Find the seam — that is the part that is actually new.

Answer:

Bitcoin assumes more than 50% of computing power is honest. Under that assumption, the honest chain outpaces any attacker's chain, so the longest-chain rule converges on the honest history.

66. What has to happen first: §16.9 The longest-chain race

Ranking

Put in order

Put the moves of §16.9 The longest-chain race into the order they have to happen.

  1. All miners agree on the chain b1 → b2 → b3
  2. Miners M1, M2, M3 race to mine b4 by solving the proof-of-work puzzle
  3. Suppose two blocks appear briefly — a short fork b1b2b3b4 and a competing b1b2b3b4'
  4. Verify: once b5 extends one branch, every honest miner adopts the length-5 chain and the other branch dies

Why: These are the moves of the worked example in the order it makes them, and each one is set up by the one before it. A shared prefix everyone has accepted; the next block to mine is b4.

67. §16.9 The longest-chain race

Worked example

All miners agree on the chain b1 → b2 → b3

Why: A shared prefix everyone has accepted; the next block to mine is b4.

Miners M1, M2, M3 race to mine b4 by solving the proof-of-work puzzle

Why: Whoever finds a valid nonce first broadcasts their b4; finding it is proportional to computing power.

Suppose two blocks appear briefly — a short fork b1b2b3b4 and a competing b1b2b3b4'

Why: Network delay can let two miners solve b4 at nearly the same time, creating two candidate chains of equal length.

chainlengthhonest miners do what
b1 b2 b3 b44extend whichever they saw first
b1 b2 b3 b4'4tie — undecided for now
b1 b2 b3 b4 b55 (longer)ACCEPT — discard the shorter fork

\[ \text{accept the LONGEST correct chain; discard the shorter fork} \]

Verify: once b5 extends one branch, every honest miner adopts the length-5 chain and the other branch dies

Why: §16.9: the longest correct chain wins. With >50% honest power, honest miners extend the honest chain fastest, so Mallory cannot keep a competing fork ahead — her rewrite never becomes the longest.

68. Fill in: honest miners do what for §16.9 The longest-chain race

Comparison

Comparison matrix

From §16.9 The longest-chain race: refill the honest miners do what column from what you know. The rest of the table is as it appeared.

chainlengthhonest miners do what
b1 b2 b3 b44extend whichever they saw first
b1 b2 b3 b4'4tie — undecided for now
b1 b2 b3 b4 b55 (longer)ACCEPT — discard the shorter fork

69. §16.9 Hard to solve, trivial to check

Intuition

Proof of work is asymmetric: finding a nonce that makes H(block‖nonce) start with N zero bits takes (on average) about 2^N hash attempts, but VERIFYING a claimed nonce is a single hash.

That's why the network can demand expensive work from miners while every other participant checks it cheaply. The cost lives entirely on the proposer's side — the same one-way-ness as a hash, weaponized into a race.

Ask yourself: why tie the puzzle to the block's contents via H(block‖nonce)? (So the work commits to THAT specific block — you can't reuse a solved nonce for different transactions.)

70. Break it if you can: §16.9 Hard to solve, trivial to check

Counterexample

Discussion prompt

Proof of work is asymmetric: finding a nonce that makes H(block‖nonce) start with N zero bits takes (on average) about 2^N hash attempts, but VERIFYING a claimed nonce is a single hash.

That is stated as though it always holds. Do one of two things: produce a case where it fails, or say precisely what rules such a case out. "It just does" is not on the menu.

Hint: Hunt at the extremes first — zero, one, negative, empty, equal. If every extreme survives, the reason they survive is the proof.

Answer:

Ask yourself: why tie the puzzle to the block's contents via H(block‖nonce)? (So the work commits to THAT specific block — you can't reuse a solved nonce for different transactions.)

71. Something is wrong here: '10% of mining power can rewrite history'

Anomaly

Predict first

A student writes this, and it looks reasonable:

A student: 'An attacker with a decent slice of mining power — say 10% — can fork the chain and double-spend.'

It is wrong. Say what breaks — and say it before you turn the page.

Correct: With 10% of the power, the attacker's chain grows far slower than the honest 90%.

A student: what does it actually take to fork the chain?

Why: With 10% of the power, the attacker's chain grows far slower than the honest 90%. By the longest-chain rule, the honest chain stays longer, so the attacker's fork is never adopted. A minority cannot rewrite history.

72. Trap: '10% of mining power can rewrite history'

Trap

The trap

A student: 'An attacker with a decent slice of mining power — say 10% — can fork the chain and double-spend.'

Assume a minority of computing power can fork the chain

Why: Wrong. With 10% of the power, the attacker's chain grows far slower than the honest 90%. By the longest-chain rule, the honest chain stays longer, so the attacker's fork is never adopted. A minority cannot rewrite history.

The fix

A student: what does it actually take to fork the chain?

Require MORE than 50% of computing power (a 51% attack)

Why: §16.9: only an attacker with >50% of the power can out-mine the honest majority and produce a longer chain. Bitcoin's security rests entirely on the honest-majority assumption.

73. Which of these survive contact with L34 · Bitcoin: Identities, Transactions…?

Two truths and a lie

Sort into buckets

Some of these hold up and some are the exact mistakes this lesson is built to prevent. Sort them.

Holds up
A usable currency needs a handful of properties we take for granted with cash. List them out — each one is something the system must enforce.; Map each property the bank used to provide onto the cryptographic mechanism Bitcoin uses instead. The rest of the lesson is this table, expanded.; Bitcoin invents no new cryptography. It assembles two tools you've already studied — both of them public, both of them one-way in the sense that matters.
Breaks
A student: 'There must be SOME Bitcoin company or server that runs the accounts and approves payments.'; A student: 'My Bitcoin identity is tied to my name, email, or some account I sign up for.'
sound
These are stated as this lesson states them — each one survives the edge cases L34 · Bitcoin: Identities, Transactions, Hash Chains & Proof of Work puts it through.
flawed
Each of these is lifted from a trap in this deck: reasonable-sounding, and wrong in a way that only shows up once you rely on it.

74. Without one step: The Bitcoin playbook

Constraint

Discussion prompt

Run The Bitcoin playbook with this step confiscated:

Three validity checks: (1) signature verifies, (2) sender was a previous receiver, (3) sender hasn't already spent it — replacing the bank.

Is it still possible? If it is, say what takes its place and what it costs you. If it is not, say exactly what that step was providing that nothing else does.

Hint: A step you can drop for free was never load-bearing. If you cannot drop it, name the thing that goes wrong the moment it is gone.

Answer:

  1. Goal: provide money's properties — accounts, no impersonation, transfers, no overspending — with NO trusted central party, using cryptography.
  2. Identity = a public key: you are PK; you prove it by signing with SK. Unforgeable signatures block impersonation; identities are pseudonymous.
  3. Transactions are signed messages on an append-only ledger; balances are DEDUCED by replaying the ledger, never stored directly.
  4. Three validity checks: (1) signature verifies, (2) sender was a previous receiver, (3) sender hasn't already spent it — replacing the bank.
  5. Ledger = hash chain: Block_i = (m_i, H(Block_{i-1})). One trusted top hash + collision resistance verifies all history from an untrusted source.
  6. Consensus = proof of work: miners find a nonce so H(block‖nonce) has N leading zero bits; everyone accepts the LONGEST correct chain. Forks need >50% of…

75. The Bitcoin playbook

Pattern

  1. Goal: provide money's properties — accounts, no impersonation, transfers, no overspending — with NO trusted central party, using cryptography.
  2. Identity = a public key: you are PK; you prove it by signing with SK. Unforgeable signatures block impersonation; identities are pseudonymous.
  3. Transactions are signed messages on an append-only ledger; balances are DEDUCED by replaying the ledger, never stored directly.
  4. Three validity checks: (1) signature verifies, (2) sender was a previous receiver, (3) sender hasn't already spent it — replacing the bank.
  5. Ledger = hash chain: Block_i = (m_i, H(Block_{i-1})). One trusted top hash + collision resistance verifies all history from an untrusted source.
  6. Consensus = proof of work: miners find a nonce so H(block‖nonce) has N leading zero bits; everyone accepts the LONGEST correct chain. Forks need >50% of computing power (the 51% attack).

76. Where does it stop working: The Bitcoin playbook

Edge cases

Discussion prompt

The Bitcoin playbook works on the cases you have just seen. Push it to the edge: what is the most degenerate input it still handles — empty, zero, one item, everything equal — and what is the first case where it stops being true? Name the case, not just "it breaks".

Hint: Try the smallest legal input, then the largest, then the one where two things collide. Methods are specified at their edges; the middle takes care of itself.

Answer:

  1. Goal: provide money's properties — accounts, no impersonation, transfers, no overspending — with NO trusted central party, using cryptography.
  2. Identity = a public key: you are PK; you prove it by signing with SK. Unforgeable signatures block impersonation; identities are pseudonymous.
  3. Transactions are signed messages on an append-only ledger; balances are DEDUCED by replaying the ledger, never stored directly.
  4. Three validity checks: (1) signature verifies, (2) sender was a previous receiver, (3) sender hasn't already spent it — replacing the bank.
  5. Ledger = hash chain: Block_i = (m_i, H(Block_{i-1})). One trusted top hash + collision resistance verifies all history from an untrusted source.
  6. Consensus = proof of work: miners find a nonce so H(block‖nonce) has N leading zero bits; everyone accepts the LONGEST correct chain. Forks need >50% of…

77. Rule out three: Checkpoint — balances, tampering, and forks

Elimination

Eliminate the wrong options

Which statement about this Bitcoin ledger is TRUE?

3 of these 4 are wrong. Strike them one at a time, and say what rules each one out before you strike the next. The survivor is the answer.

  • A. Alice→Eve $9 is valid because the system stores Alice's balance and it is at least $9.
  • B. Alice→Eve $9 is INVALID: replaying the ledger gives Alice $6, which is less than $9.
  • C. An attacker controlling 10% of mining power could fork the chain to erase a payment.
  • D. Alice's identity is her real name, so the bank can reverse the transaction.

Survives elimination: B

Why: §16.4–16.5: balances are not stored — you deduce them by replaying the ledger. From Bob $10: after Bob→Alice $5, Bob→Mallory $2, and Mallory→Alice $1, Alice holds $5 + $1 = $6. The transaction Alice→Eve $9 fails validity check 3 (she cannot spend more than she has), since $6 < $9, so every participant rejects it. There is no stored balance, no bank, and forking the chain to rewrite history requires MORE than 50% of computing power, not 10%.

78. Checkpoint — balances, tampering, and forks

Check

The ledger starts with Bob holding $10. It records, in order: Bob→Alice $5, Bob→Mallory $2, Mallory→Alice $1. A new transaction Alice→Eve $9 is broadcast. Replay the ledger before choosing.

Check your understanding

Which statement about this Bitcoin ledger is TRUE?

  • A. Alice→Eve $9 is valid because the system stores Alice's balance and it is at least $9.
  • B. Alice→Eve $9 is INVALID: replaying the ledger gives Alice $6, which is less than $9. (correct)
  • C. An attacker controlling 10% of mining power could fork the chain to erase a payment.
  • D. Alice's identity is her real name, so the bank can reverse the transaction.

Answer: B

Why: §16.4–16.5: balances are not stored — you deduce them by replaying the ledger. From Bob $10: after Bob→Alice $5, Bob→Mallory $2, and Mallory→Alice $1, Alice holds $5 + $1 = $6. The transaction Alice→Eve $9 fails validity check 3 (she cannot spend more than she has), since $6 < $9, so every participant rejects it. There is no stored balance, no bank, and forking the chain to rewrite history requires MORE than 50% of computing power, not 10%.

Why A tempts people
Bitcoin does NOT store balances directly. Balances are deduced by replaying the signed transaction ledger (§16.5); there is no stored-balance table to consult, and Alice's replayed balance is only $6.
Why C tempts people
A minority of mining power cannot fork the chain. By the longest-chain rule, the honest majority's chain grows faster, so only an attacker with MORE than 50% of computing power (a 51% attack) could rewrite history (§16.9).
Why D tempts people
An identity is a PUBLIC KEY, not a real name, and there is no bank to reverse anything. The ledger is append-only and immutable; transactions are not reversible by any central party (§16.1, §16.3).

79. Misconceptions to retire

Concept

80. Synthesis — Bitcoin is the capstone of the crypto unit

Concept

81. Primary sources & where to read more

Concept

82. Connect it up: L34 · Bitcoin: Identities, Transactions, Hash Chains & Proof of Work

Connect it up

Draw it

One page, no notation unless you need it: draw how these connect — The Problem — Money With No Bank · Identity — You Are a Public Key · Transactions & Balances From the Ledger · The Hash Chain — an Immutable Ledger · Consensus & Proof of Work. Put an arrow wherever one of them is what makes another possible, and label the arrow with why.

83. Recap — Lesson 34

Recap

You can now state the properties Bitcoin must provide with no bank, explain identity-as-a-public-key, deduce balances by replaying the signed ledger and apply the three validity checks, build the append-only hash chain and verify all history from one trusted top hash, and explain how proof of work and the longest-chain rule give consensus under a >50%-honest majority.

Idea§The one-line version
The goal16.1Money's properties with NO trusted central party
Identity = public key16.3You are PK; prove it by signing with SK; pseudonymous
Signed transaction16.4Sign(SK_A): 'PK_A sends n to PK_B', anyone verifies
Balances by replay16.5Replay the ledger; nothing stores balances directly
Three validity checks16.4Signature, prior receiver, not already spent
Hash chain16.6–16.7Block_i=(m_i,H(Block_{i-1})); one top hash verifies all
Proof of work16.8–16.9Nonce → N zero bits; longest chain; >50% honest

Sources

  1. CS 161 Computer Security Textbook §16.1–16.9 — Wagner, Weaver, Kao, Shakir, Law & Ngai, UC Berkeley — Bitcoin's goal of physical-money properties without a central party (§16.1), collision-resistant hashes and signatures as primitives (§16.2–16.3), public-key identities, the signed transaction and ledger model with balances deduced by replay (§16.4–16.5), the append-only hash chain and tamper detection from one trusted top hash (§16.6–16.7), and consensus via proof of work, forks, the longest-chain rule, and the >50% honest assumption (§16.8–16.9)
  2. Bitcoin: A Peer-to-Peer Electronic Cash System — Satoshi Nakamoto, 2008 — the original Bitcoin white paper: decentralized electronic cash, the proof-of-work chain, and the longest-chain rule under an honest majority
  3. How to Time-Stamp a Digital Document — S. Haber & W. S. Stornetta, Journal of Cryptology 3(2), pp. 99–111 (1991) — the hash-chain / linked-timestamping construction that makes a ledger append-only and tamper-evident
  4. Bitcoin and Cryptocurrency Technologies ⊕ — A. Narayanan, J. Bonneau, E. Felten, A. Miller & S. Goldfeder, Princeton University Press, 2016 — supplemental, beyond the textbook section: the UTXO model, Merkle trees, addresses as hashes of public keys, ECDSA on secp256k1, and the difficulty adjustment

Want this taught 1-on-1? Alexander tutors Computer Security — $55/session, free consultation.

Book on Wyzant · Text (657) 465-8108