Feedback
Sign in./start

Site navigation

Theme

Learn

  • Roadmaps

Build

  • Projects
  • Developer Tools

Contribute

  • Open Source Projects
  • Issues
  • Reviews
  • First Contribution
  • BountiesSoon
  • Feedback

Prove

  • Builders

Ecosystem

  • Partners
  • Get Funded↗
  • HackathonsSoon
Sign in./start-building

Become an Open Source Builder. Learn. Build. Contribute. Prove.

Feedback welcome — open a GitHub issue.

Learn

RoadmapsStart Building

Build

ProjectsDeveloper Tools

Contribute

Open Source ProjectsIssuesReviewsFirst ContributionSupportFeedback

Prove

Builders Directory

Account

Sign in

Legal

PrivacyTermsCredits

© 2026 Pull // code MIT · curriculum CC BY-SA 4.0

PrivacyTermsCredits

lesson // bitcoin

Security Models & Light Clients

Full validation vs SPV, Neutrino filters, AssumeUTXO, and what “trustless” really means for builders.

advanced6 days

Public lesson — sign in to track progress on this roadmap.

./sign-in

On this page

Learning objectives

  • Contrast full-node security with SPV / light-client assumptions
  • Explain BIP157/158 compact block filters at a builder level
  • Describe AssumeUTXO’s purpose and remaining trust tradeoffs

study // plan

Lessons are primers. Start with Step 1 (required reading) when present, then follow the numbered steps in the article. Depth comes from primary sources, labs, reflection, and evidence.

Research on Bitcoin Search
BIP157BIP158

Step 1 // Required reading

Complete these before the numbered steps in the lesson body. Links are listed here once — not repeated below.

  • bipBIP-157 Compact Block Filters
  • bipBIP-158 Compact Block Filter Encoding
  • docsAssume UTXO FAQs

Reflection prompts

  1. What can an SPV client prove, and what must it assume about miners or peers?
  2. How do compact block filters improve light-client privacy vs BIP37 bloom filters, and what remains leaked?
  3. When would you accept AssumeUTXO for a product bootstrap, and what background validation still matters?

Lab // Trust boundary map

Complete Steps 2–3. Draw a trust-boundary diagram for a wallet product choosing (a) full node, (b) Neutrino-style filters, or (c) third-party Electrum/Esplora. Label what each design can detect.

evidence required

  • ·Diagram (SVG, Mermaid, or photo of whiteboard)
  • ·One paragraph per option on fraud/censorship risk
  • ·Your recommended default for a beginner builder and why
  1. 01

    Worked mental model

    Re-read the diagrams in this lesson once out loud in plain language. If you cannot explain the flow to a friend without jargon, pause and revisit the Mastering Bitcoin / Mastering Lightning chapters linked in Resources. Chapter references are intentional, not decorative.

  2. 02

    Hands-on habit

    Every protocol idea should be paired with one local experiment. That habit turns reading into builder instinct.

    1. Reproduce the happy path on regtest (or Polar for Lightning)
    2. Break it on purpose (wrong fee, expired invoice, offline peer)
    3. Write down what error you saw and which layer produced it (wallet, node, mempool, peer)
  3. 03

    Glossary check

    Pick three terms from this lesson and define them in one sentence each without opening notes. Weak definitions mean the lesson is not finished yet.

  4. 04

    Resource order

    Use Resources in order: narrative book chapter first, then BIP/BOLT for precision, then implementation docs for commands. Jumping straight to RPC flags without the mental model creates brittle knowledge.

“Trustless” is relative. Every Bitcoin client chooses a security model: what it verifies locally vs what it assumes about peers, miners, or snapshots.

Complete Step 1 // Required reading in the study plan above, then continue here.

Step 2 — Core idea: what you verify vs what you assume

Product builders who default to third-party APIs without labeling trust boundaries ship wallets that fail silently under eclipse, dishonest servers, or chain forks.

ModelVerifies locallyMain assumption
Full nodePoW, scripts, consensus history (with pruning/assumevalid nuances)Honest majority of work + your software
SPVHeaders + merkle proofs for txs of interestMiners won’t feed invalid high-work forever without detection
BIP157/158 filtersFilters + blocks of interest you downloadPeers serve honest filters; better privacy than BIP37 blooms
Indexer APILittle on-chain verificationThe server is honest and available
AssumeUTXOBackground validation after snapshotSnapshot commitment until validation catches up

Loading diagram…

Stronger local verification costs more; lighter clients assume more about peers and servers.

AssumeUTXO helps nodes sync faster by loading a committed UTXO snapshot, then background-validating. It trades bootstrap time for carefully scoped assumptions until validation completes.

Label the model in your README

Users deserve to know whether your app verifies scripts, trusts an indexer, or uses filters. Silence is a product bug.

Done when: You can place a wallet design on the table above and name one failure mode it cannot detect.

Step 3 — Trust-boundary map (lab)

Draw a diagram for (a) full node, (b) Neutrino-style filters, (c) Electrum/Esplora. For each: one paragraph on fraud/censorship risk. Recommend a default for a beginner builder and why.

Common mistakes

  • Calling any API-backed wallet “non-custodial and trustless”
  • Ignoring that light clients can be lied to about absence of transactions
  • Skipping background validation after snapshot sync in ops runbooks

Done when: Lab evidence (diagram + three risk paragraphs + recommendation) is complete.

Next lesson

Soft Forks & Activation — how consensus upgrades land without splitting the network.

further reading

  • articleBitcoin’s Security Model: A Deep Dive

review // club

Review club

Practice on real Bitcoin OSS changes tied to this chapter. Read the diff, use the checklist, and optionally paste your review comment URL in your lab notes.

  • BIP-157/158 light client filters

    Compare BIP-157 client filters with naive address-query light clients for privacy tradeoffs.

    spec review
    client privacyfilter false positives
    50 min·advancedopen on GitHub
review checklist
  1. Does the change solve the stated problem?
  2. Are edge cases and rollout behavior covered?
  3. Are tests or test vectors included?
  4. Is the diff minimal and clearly explained?

More repos and GFIs on /discover and /issues.

progress // sign in

Reading is public. Sign in to mark lessons complete, sync across devices, and unlock your roadmap.

./sign-in-to-track

discussion

Discussion

prevP2P Adversarial ThinkingnextSoft Forks & Activation

On this page

Press Shift + ? for keyboard shortcuts.

Press R to research on Bitcoin Search.

No questions yet — be the first to ask.