Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 28 additions & 28 deletions privacy-track.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Bitcoin Privacy Developer Track - Code Orange Dev School</title>
<meta name="description" content="12 biweekly 90-minute sessions over 6 months. Chain analysis, wallet fingerprinting, Silent Payments, Payjoin, Floresta, Kyoto, Lightning privacy, and real OSS contributions.">
<meta name="description" content="12 biweekly 90-minute sessions over 6 months, opening with Silent Payments (BIP352), then chain analysis, Payjoin, light clients, network privacy, CoinJoin, Lightning, ecash, and real OSS contributions.">
<link rel="canonical" href="https://codeorange.dev/privacy-track">
<meta name="theme-color" content="#F7931A">
<meta property="og:type" content="website">
<meta property="og:site_name" content="Code Orange Dev School">
<meta property="og:url" content="https://codeorange.dev/privacy-track">
<meta property="og:title" content="Bitcoin Privacy Developer Track - Code Orange Dev School">
<meta property="og:description" content="12 biweekly 90-minute sessions over 6 months. Chain analysis, wallet fingerprinting, Silent Payments, Payjoin, Floresta, Kyoto, Lightning privacy, and real OSS contributions.">
<meta property="og:description" content="12 biweekly 90-minute sessions over 6 months, opening with Silent Payments (BIP352), then chain analysis, Payjoin, light clients, network privacy, CoinJoin, Lightning, ecash, and real OSS contributions.">
<meta property="og:image" content="https://codeorange.dev/assets/og-codeorange-workshop.jpg">
<meta property="og:image:secure_url" content="https://codeorange.dev/assets/og-codeorange-workshop.jpg">
<meta property="og:image:type" content="image/jpeg">
Expand All @@ -20,11 +20,11 @@
<meta property="og:image:alt" content="Code Orange Dev School Bitcoin workshop">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Bitcoin Privacy Developer Track - Code Orange Dev School">
<meta name="twitter:description" content="12 biweekly 90-minute sessions over 6 months. Chain analysis, wallet fingerprinting, Silent Payments, Payjoin, Floresta, Kyoto, Lightning privacy, and real OSS contributions.">
<meta name="twitter:description" content="12 biweekly 90-minute sessions over 6 months, opening with Silent Payments (BIP352), then chain analysis, Payjoin, light clients, network privacy, CoinJoin, Lightning, ecash, and real OSS contributions.">
<meta name="twitter:image" content="https://codeorange.dev/assets/og-codeorange-workshop.jpg">
<script src="/support.js?v=20260902a" defer></script>
<link rel="icon" type="image/svg+xml" href="/assets/favicon-bitcoin.svg">
<script type="application/ld+json">{"@context":"https://schema.org","@type":"Course","name":"Bitcoin Privacy Developer Track","description":"12 biweekly 90-minute sessions over 6 months. Chain analysis, wallet fingerprinting, Silent Payments, Payjoin, Floresta, Kyoto, Lightning privacy, and real OSS contributions.","url":"https://codeorange.dev/privacy-track","provider":{"@type":"EducationalOrganization","name":"Code Orange Dev School","url":"https://codeorange.dev","email":"hello@codeorange.dev"}}</script>
<script type="application/ld+json">{"@context":"https://schema.org","@type":"Course","name":"Bitcoin Privacy Developer Track","description":"12 biweekly 90-minute sessions over 6 months, opening with Silent Payments (BIP352), then chain analysis, Payjoin, light clients, network privacy, CoinJoin, Lightning, ecash, and real OSS contributions.","url":"https://codeorange.dev/privacy-track","provider":{"@type":"EducationalOrganization","name":"Code Orange Dev School","url":"https://codeorange.dev","email":"hello@codeorange.dev"}}</script>
</head>
<body>
<x-dc>
Expand Down Expand Up @@ -110,7 +110,7 @@
<span style="font-family: 'JetBrains Mono', monospace; font-size: 12px; font-weight: 500; letter-spacing: 0.16em; text-transform: uppercase; color: #F7931A;"><span>/</span>Programs<span>/</span>Privacy_Track<span>_</span></span>
</div>
<h1 style="font-family: 'Special Elite', 'Courier New', monospace; font-weight: 400; font-size: clamp(38px, 4.4vw, 62px); line-height: 1.05; letter-spacing: -0.02em; margin: 0 0 26px; color: #F5F1EA; text-wrap: pretty;">Bitcoin Privacy Developer Track. <span style="color: #F7931A;">Contribution-first, by design.</span></h1>
<p style="font-size: 18px; line-height: 1.65; color: #C8CDD9; margin: 0 0 32px; max-width: 560px; text-wrap: pretty;">12 biweekly 90-minute sessions over 6 months, covering chain analysis, wallet fingerprinting, Silent Payments, Payjoin, Floresta, Kyoto, Lightning privacy, and a contribution sprint. Every session ends with a real open source contribution.</p>
<p style="font-size: 18px; line-height: 1.65; color: #C8CDD9; margin: 0 0 32px; max-width: 560px; text-wrap: pretty;">12 biweekly 90-minute sessions over 6 months, opening with Silent Payments, then chain analysis, coin selection, Payjoin, light clients, network privacy, CoinJoin and swaps, Lightning, ecash, and a contribution sprint. Every session ends with real proof of work in an open-source privacy project.</p>
<div style="display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 36px;">
<span style="font-family: 'JetBrains Mono', monospace; font-size: 13px; color: #F7931A; padding: 8px 16px; border: 1px solid rgba(247,147,26,0.4); border-radius: 999px;">For Developers</span>
<span style="font-family: 'JetBrains Mono', monospace; font-size: 13px; color: #C8CDD9; padding: 8px 16px; border: 1px solid rgba(255,255,255,0.16); border-radius: 999px;">6 months · biweekly</span>
Expand All @@ -132,8 +132,8 @@ <h1 style="font-family: 'Special Elite', 'Courier New', monospace; font-weight:
<span style="font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; color: #8C94A6;">Duration</span>
</div>
<div style="background: #12213B; border: 1px solid rgba(255,255,255,0.08); border-radius: 12px; padding: 26px; display: flex; flex-direction: column; gap: 4px;">
<span style="font-family: 'Special Elite', monospace; font-size: 42px; line-height: 1; color: #F7931A;">5–8</span>
<span style="font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; color: #8C94A6;">PRs per graduate</span>
<span style="font-family: 'Special Elite', monospace; font-size: 42px; line-height: 1; color: #F7931A;">28</span>
<span style="font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; color: #8C94A6;">BIP352 test vectors</span>
</div>
<div style="background: #12213B; border: 1px solid rgba(255,255,255,0.08); border-radius: 12px; padding: 26px; display: flex; flex-direction: column; gap: 4px;">
<span style="font-family: 'Special Elite', monospace; font-size: 42px; line-height: 1; color: #F7931A;">10+</span>
Expand All @@ -152,7 +152,7 @@ <h1 style="font-family: 'Special Elite', 'Courier New', monospace; font-weight:
<div>
<div style="font-family: 'JetBrains Mono', monospace; font-size: 12px; font-weight: 500; letter-spacing: 0.16em; text-transform: uppercase; color: #F7931A; margin-bottom: 18px;"><span>/</span>GitHub_Curriculum<span>_</span></div>
<h2 style="font-family: 'Special Elite', 'Courier New', monospace; font-weight: 400; font-size: clamp(32px, 3.2vw, 50px); line-height: 1.08; margin: 0 0 18px; color: #F5F1EA;">Season One: 12 sessions, one contribution path.</h2>
<p style="font-size: 16px; line-height: 1.7; color: #C8CDD9; margin: 0; text-wrap: pretty;">The public curriculum is now mapped on GitHub: each session teaches one Bitcoin privacy problem, then sends students into a curated issue pool so the work can become a real upstream pull request.</p>
<p style="font-size: 16px; line-height: 1.7; color: #C8CDD9; margin: 0; text-wrap: pretty;">The public curriculum is now mapped on GitHub: each session teaches one Bitcoin privacy problem, then ends with proof of work: a lab, a tested PR, or an issue from a curated pool that can become a real upstream contribution.</p>
</div>
<div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px;">
<div style="background: #12213B; border: 1px solid rgba(255,255,255,0.08); border-radius: 12px; padding: 18px;">
Expand All @@ -164,8 +164,8 @@ <h2 style="font-family: 'Special Elite', 'Courier New', monospace; font-weight:
<span style="font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; color: #8C94A6;">months</span>
</div>
<div style="background: #12213B; border: 1px solid rgba(255,255,255,0.08); border-radius: 12px; padding: 18px;">
<span style="display: block; font-family: 'Special Elite', monospace; font-size: 32px; color: #F7931A; line-height: 1;">PR</span>
<span style="font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; color: #8C94A6;">per session</span>
<span style="display: block; font-family: 'Special Elite', monospace; font-size: 32px; color: #F7931A; line-height: 1;">1</span>
<span style="font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; color: #8C94A6;">live PR review / session</span>
</div>
</div>
<img src="/assets/uploaded-workshops/hardware-privacy-kit.jpg" alt="Bitcoin privacy hardware used in Code Orange workshops" loading="lazy" style="width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 18px; border: 1px solid rgba(255,255,255,0.1); display: block;">
Expand All @@ -180,12 +180,12 @@ <h2 style="font-family: 'Special Elite', 'Courier New', monospace; font-weight:
<a href="https://github.com/code-orange-dev/curriculum/blob/main/privacy-track/SESSIONS.md" target="_blank" rel="noopener" style="font-family: 'JetBrains Mono', monospace; font-size: 12px; color: #C8CDD9; text-decoration: none;">Full guide →</a>
</div>
<div style="display: flex; flex-direction: column;">
<div style="padding: 20px 22px; border-bottom: 1px solid rgba(255,255,255,0.07);"><b style="color:#F5F1EA;">Month 1</b><p style="margin: 6px 0 0; color:#C8CDD9;">Chain Analysis; Wallet Fingerprinting</p></div>
<div style="padding: 20px 22px; border-bottom: 1px solid rgba(255,255,255,0.07);"><b style="color:#F5F1EA;">Month 2</b><p style="margin: 6px 0 0; color:#C8CDD9;">Coin Selection and UTXO Management; Silent Payments</p></div>
<div style="padding: 20px 22px; border-bottom: 1px solid rgba(255,255,255,0.07);"><b style="color:#F5F1EA;">Month 3</b><p style="margin: 6px 0 0; color:#C8CDD9;">Payjoin; Light Clients with Floresta and Kyoto</p></div>
<div style="padding: 20px 22px; border-bottom: 1px solid rgba(255,255,255,0.07);"><b style="color:#F5F1EA;">Month 4</b><p style="margin: 6px 0 0; color:#C8CDD9;">P2P Privacy and Node Fingerprinting; ASmap and Network Attacks</p></div>
<div style="padding: 20px 22px; border-bottom: 1px solid rgba(255,255,255,0.07);"><b style="color:#F5F1EA;">Month 5</b><p style="margin: 6px 0 0; color:#C8CDD9;">CoinJoin with JoinMarket; OpenSwap</p></div>
<div style="padding: 20px 22px;"><b style="color:#F5F1EA;">Month 6</b><p style="margin: 6px 0 0; color:#C8CDD9;">Lightning Privacy; Contribution Sprint</p></div>
<div style="padding: 20px 22px; border-bottom: 1px solid rgba(255,255,255,0.07);"><b style="color:#F5F1EA;">Month 1</b><p style="margin: 6px 0 0; color:#C8CDD9;">Silent Payments I: build a sender; Silent Payments II: build a scanner</p></div>
<div style="padding: 20px 22px; border-bottom: 1px solid rgba(255,255,255,0.07);"><b style="color:#F5F1EA;">Month 2</b><p style="margin: 6px 0 0; color:#C8CDD9;">Silent Payments III: Review Club on Bitcoin Core; Think Like the Adversary (chain analysis &amp; fingerprinting)</p></div>
<div style="padding: 20px 22px; border-bottom: 1px solid rgba(255,255,255,0.07);"><b style="color:#F5F1EA;">Month 3</b><p style="margin: 6px 0 0; color:#C8CDD9;">Coin Selection &amp; Change; Payjoin</p></div>
<div style="padding: 20px 22px; border-bottom: 1px solid rgba(255,255,255,0.07);"><b style="color:#F5F1EA;">Month 4</b><p style="margin: 6px 0 0; color:#C8CDD9;">Light Clients with Floresta and Kyoto; Network Privacy: Tor, BIP324, private broadcast, ASmap</p></div>
<div style="padding: 20px 22px; border-bottom: 1px solid rgba(255,255,255,0.07);"><b style="color:#F5F1EA;">Month 5</b><p style="margin: 6px 0 0; color:#C8CDD9;">CoinJoin &amp; OpenSwap; Lightning Privacy</p></div>
<div style="padding: 20px 22px;"><b style="color:#F5F1EA;">Month 6</b><p style="margin: 6px 0 0; color:#C8CDD9;">Ecash: Cashu &amp; Fedimint; Contribution Sprint</p></div>
</div>
</div>
</div>
Expand All @@ -203,15 +203,15 @@ <h2 style="font-family: 'Special Elite', 'Courier New', monospace; font-weight:
</div>
<div data-mq="cols2" data-pad="card" style="padding: 48px 56px; display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 0.8fr); gap: 56px; align-items: center;">
<div>
<h2 style="font-family: 'Special Elite', 'Courier New', monospace; font-weight: 400; font-size: clamp(30px, 3vw, 44px); line-height: 1.12; margin: 0 0 20px; color: #F5F1EA;">Every session ends with a contribution. <span style="color: #F7931A;">No exceptions.</span></h2>
<p style="font-size: 16px; line-height: 1.7; color: #C8CDD9; margin: 0; max-width: 560px; text-wrap: pretty;">Not "homework." Not "exercises." A contribution: a PR, a review, an issue triage, a docs fix - something with your name on it, in a real Bitcoin privacy repo, before you log off. Over 12 focused sessions that compounds into a public contribution record no CV can fake.</p>
<h2 style="font-family: 'Special Elite', 'Courier New', monospace; font-weight: 400; font-size: clamp(30px, 3vw, 44px); line-height: 1.12; margin: 0 0 20px; color: #F5F1EA;">Every session ends with proof of work. <span style="color: #F7931A;">Useful, not noisy.</span></h2>
<p style="font-size: 16px; line-height: 1.7; color: #C8CDD9; margin: 0; max-width: 560px; text-wrap: pretty;">Not "homework." Proof of work: a lab passing the official test vectors, a PR you built and tested, a reproduced bug, a docs fix, a pull request from our curated pool. Nothing goes upstream unless a maintainer would be glad to receive it. Over 12 sessions that compounds into a public contribution record no CV can fake.</p>
</div>
<div style="font-family: 'JetBrains Mono', monospace; font-size: 14px; line-height: 2.1; display: flex; flex-direction: column;">
<span style="color: #8C94A6;"># session checklist</span>
<span style="color: #C8CDD9;">[x] deep-dive - 90 min</span>
<span style="color: #C8CDD9;">[x] pair on open issues</span>
<span style="color: #F7931A;">[x] ship contribution ✓</span>
<span style="color: #8C94A6;">── merged or it didn't happen</span>
<span style="color: #C8CDD9;">[x] review a live PR together</span>
<span style="color: #F7931A;">[x] ship proof of work ✓</span>
<span style="color: #8C94A6;">── tested or it didn't happen</span>
</div>
</div>
</div>
Expand Down Expand Up @@ -281,7 +281,7 @@ <h2 style="font-family: 'Special Elite', 'Courier New', monospace; font-weight:
<div style="font-family: 'JetBrains Mono', monospace; font-size: 12px; font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase; color: #FF5F56; margin-bottom: 20px;">✕ It's not for you if</div>
<div style="display: flex; flex-direction: column; gap: 14px; font-size: 15.5px; line-height: 1.6; color: #C8CDD9;">
<span>→ You're brand new to programming - do <a href="/rawbit" style="color: #F7931A; text-decoration: none;" style-hover="color: #FFB347;">rawBit</a> first</span>
<span>→ You want theory without shipping - every session ends in a contribution</span>
<span>→ You want theory without shipping - every session ends in proof of work</span>
<span>→ You can't commit to a 6-month arc - this is contribution-first by design</span>
</div>
</div>
Expand Down Expand Up @@ -335,12 +335,12 @@ <h3 style="font-family: 'Special Elite', 'Courier New', monospace; font-weight:
<script type="text/x-dc" data-dc-script>
class Component extends DCLogic {
modules = [
{ quarter: 'Month 01', sessions: 'Sessions 01-02', emoji: '01', title: 'Chain analysis and wallet fingerprints', desc: 'Learn the common heuristics used to follow funds, then identify the subtle transaction patterns wallets leak.', repos: ['rust-bitcoin', 'BDK', 'issue pool'] },
{ quarter: 'Month 02', sessions: 'Sessions 03-04', emoji: '02', title: 'Coin selection and Silent Payments', desc: 'Work through UTXO management, change detection, and BIP352 receiving flows that prevent address reuse.', repos: ['BDK', 'silent payments', 'BIP352'] },
{ quarter: 'Month 03', sessions: 'Sessions 05-06', emoji: '03', title: 'Payjoin and light clients', desc: 'Break the common-input heuristic with collaborative transactions, then study compact-filter clients with Floresta and Kyoto.', repos: ['rust-payjoin', 'Floresta', 'Kyoto'] },
{ quarter: 'Month 04', sessions: 'Sessions 07-08', emoji: '04', title: 'P2P privacy and network attacks', desc: 'Map node fingerprinting, transaction broadcast leakage, ASmap, and eclipse-style attacks into practical contribution targets.', repos: ['Floresta', 'bitcoin-core', 'ASmap'] },
{ quarter: 'Month 05', sessions: 'Sessions 09-10', emoji: '05', title: 'CoinJoin and OpenSwap', desc: 'Explore collaborative transaction systems with JoinMarket and OpenSwap, focusing on docs, tests, and integration issues.', repos: ['JoinMarket', 'OpenSwap', 'privacy docs'] },
{ quarter: 'Month 06', sessions: 'Sessions 11-12', emoji: '06', title: 'Lightning privacy and contribution sprint', desc: 'Close with Lightning privacy, review readiness, and a sprint that turns prepared issues into polished upstream PRs.', repos: ['LDK', 'issue pool', 'PR checklist'] }
{ quarter: 'Month 01', sessions: 'Sessions 01-02', emoji: '01', title: 'Silent Payments: build it', desc: 'Build a BIP352 sender and scanner from scratch, graded against the official test vectors, then compare full-node, indexer and remote-scanner privacy trade-offs.', repos: ['BIP352', 'Shroud', 'BlindBit'] },
{ quarter: 'Month 02', sessions: 'Sessions 03-04', emoji: '02', title: 'Silent Payments in Core, then think like the adversary', desc: 'Review the live Bitcoin Core Silent Payments PRs as a Review Club, then learn the chain-analysis heuristics and wallet fingerprints used to follow funds.', repos: ['bitcoin-core', 'libsecp256k1', 'BDK'] },
{ quarter: 'Month 03', sessions: 'Sessions 05-06', emoji: '03', title: 'Coin selection and Payjoin', desc: 'Work through UTXO management and change, then break the common-input heuristic with collaborative transactions.', repos: ['BDK', 'rust-payjoin', 'issue pool'] },
{ quarter: 'Month 04', sessions: 'Sessions 07-08', emoji: '04', title: 'Light clients and network privacy', desc: 'Run your own node with Floresta and Kyoto, then use Bitcoin Core 31 private broadcast, BIP324 and ASmap against network surveillance.', repos: ['Floresta', 'Kyoto', 'peer-observer'] },
{ quarter: 'Month 05', sessions: 'Sessions 09-10', emoji: '05', title: 'CoinJoin, OpenSwap and Lightning privacy', desc: 'Autopsy a CoinJoin, complete an atomic swap on regtest, then compare what BOLT11 and BOLT12 blinded paths leak.', repos: ['JoinMarket', 'OpenSwap', 'LDK'] },
{ quarter: 'Month 06', sessions: 'Sessions 11-12', emoji: '06', title: 'Ecash and the contribution sprint', desc: 'Mint and redeem ecash on a test mint, then close with a sprint that turns prepared issues and test reports into polished upstream work.', repos: ['Cashu', 'Fedimint', 'PR checklist'] }
];

repos = [
Expand Down
Loading