Base58’s flagship Bitcoin Transactions class gives you an in-depth intro to the bitcoin protocol and will get you comfortable with the bitcoin-cli and command line interfaces. No prior experience required, but some understanding of bytes and encodings will be extremely helpful.
Strongly Recommended: This 1.5h class on Encodings and Endianness. These are really core topics that we'll use the first day of the class (and every class).
Optional: Andreas Antonopoulos' classic book, Mastering Bitcoin is extremely good background reading for our class.
Optional, and we'll help you with it if you're in a cohort: Installing a local copy of bitcoind/bitcoin-cli. We've got a guide here, but there's also plenty around the internet if you're into that sort of thing. Unless you've got some gigabytes of storage available, we highly recommend you follow the instructions for setting up your `bitcoin.conf` file with the regtest=1 set.
4 days of bitcoin transaction learning! We do 3 hours of instruction in the morning; afternoons are for homework and hacking.
What is a transaction? Specifically, what fields do they contain? We learn how to calculate a transaction id and what transaction fees are, and how are they calculated. Finally, we'll talk about coinbases and block rewards.
Topics: transaction fields, endianness, transaction ids, fees + transaction weights, coinbases
Let's learn about Bitcoin's native "programming language": Script! We'll write our own script this week (and learn about hashes and preimages). Once we've written a script we'll try locking some bitcoins up to it, as well as unlocking them.
Topics: Script, standard scripts, P2SH, opcodes
Now that we've seen how transactions are constructed and built, time to introduce the bitcoin omnibus update bill, the SegWit soft-fork. SegWit impacted the structure of a transaction and its fee calculations, so we'll dive into how these updates work and two of the 'new' SegWit script types: P2WSH and P2SH-P2WSH.
Topics: SegWit! P2WSH, P2SH-P2WSH
We're halfway through class, it's about time we introduced cryptography. Time to start building an understanding of elliptic curves over a finite field and looking at bitcoin's secp256k1 curve parameters. Then we'll pick a private key and derive a public key. Finally we'll make our first signed transactions.
Topics: elliptic curves, secp256k1, public/private key cryptography, P2PK, P2PKH
Signing transactions is actually a bit complicated. We'll talk about the ECDSA and walk through how a private key produces signatures for a transaction. We'll cover sighashes and discuss the TX_HASH proposal.
Topics: ECDSA, SegWit, sighashes, TX_HASH
This is the last topic of the course class. We'll cover multisig transactions and the OP_CHECKMULTISIG opcode. Our final class we'll cover some topics on how to get your transaction mined: RBF + CPFP.
Topics: multisig, OP_CHECKMULTISIG, RBF, CPFP