This is a course on how to build ecash applications on Bitcoin and contribute to upstream projects as an open source developer, specifically Fedimint, Cashu, and the ecosystem of Rust Bitcoin projects. The course assumes you've taken the first 2 Base58 courses on Bitcoin Transactions and Digital Signatures, and has optional sections covering the basics of each of the tools used in this course including the Rust programming language, the Nostr Protocol, Nix Development environments, and Git tooling options for open source contributions.
By the end of this course, you will be capable of starting or productively contributing to an open source Ecash Project in the Bitcoin Ecosystem.
- Open Source Bitcoin Development
- The Nix Language
- Nix Package Management
- Nix Flakes for Developer Environments
- Git and How to Use It
- Flakebox: Rust Development with Nix
- Kody's Developer Environment
- Why Rust?
- Resources for Learning Rust
- Async Programming with Tokio
- Project 0: Rewriting an Elliptic Curve Crypto package in Rust
- What is Ecash?
- Ecash Projects on Bitcoin
- Blinded Signature Schemes
- Project 1: Blinded Schnorr Signatures
- Project 2: Blinded Diffie-Helmann Key Exchange
- What is Cashu?
- Cashu NUTs: Notation, Usage, and Terminology
- Project 3: Let's make a Cashu Mint with Cashu Dev Kit
- What is Fedimint?
- Federated Consensus
- Fedimint's Ecash Scheme
- Project 4: Threshold BLS Signatures
- Project 5: Building a Fedimint Lightning Address Server w/Blinded Registration
- Project 6: Backing our Cashu Mint with Fedimint Ecash
- Payment Options: Lightning, Fedimint Ecash, Onchain
- Project 7: Building a MultiMint Ecash Wallet
- Project 8: Building an Ecash Wallet Extension for the Browser
- What is Nostr?
- NIPs: Nostr Implementation Possibilities
- Project 9: Adding NIP-05 Address Support to our Lightning Address Server
- Project 10: Adding Nostr Wallet Connect to our MultiMint Wallet
- Project 11: Ecash Pay for use Nostr Data Vending Machines
- The Fedimint Module System w/Eric Sirion
- The Fedimint Custom Module Starter Template
- Project 12: Building a Simplicity Smart Contract Fedimint Module w/Christian Lewe
- Adding Fedimint & Cashu Ecash support to Alby
- Adding Ecash Payment Options to a Nostr Relay
- Swapping a BLS blind signature scheme for Cashu