I've decided that this is the year I will become a Bitcoin Core contributor! I'll be updating this thread each day to document the journey, what I've learned, milestones, etc.

Excited to do this finally! Check out my blog post that talks about it more. https://abytesjourney.com/my-2021-road-to-bitcoin-core-development/
To start off, for January I'll be reading Jimmy Song's Programming Bitcoin book. A bit of a disclaimer, I started it last month as some prereading while I was deciding what to do.
December 21st & 22nd I read through to Chapter 3. It started out with a spin on traditional math, dealing with "Finite" numbers instead of infinite. If you know anything about "modulus" numbers in programming, or "remainders" in division, it'll be pretty easy to grasp.
Chapter 3 dove into Elliptic Curve Cryptography and had a bulk of information presented in a pretty digestible way if you took your time with it. Lots of math operations taking place but if you focus on the end formulas, it'll be easier to grasp. Seems like a critical chapter.
January 1st was rereading Chapter 3 since it had been a week of holiday break. I do suggest revisiting it actually, a good way to learn. Chapter 3 w/ exercises took me about 2 and a half hours while the reread w/o exercises took just an hour. Might be slow but taking time.
Today, some light reading on ECC, some good suggestions by @satsie_. It's nice having a difficult concept explained by multiple perspectives. Just 30 minutes to get through them. https://twitter.com/satsie_/status/1344669440043069440?s=20
What's cool about going through ECC is that you can actually see how transactions are signed & verified. Critical to bitcoin. It's crazy to think about private keys being a point on a graph, and how protecting not only them but the random number used in signing is a necessity.
Nothing yesterday but did have a 6 hour conversation at a bar with some OG dallas bitcoiners, like the good ol days, even talked about ECC some ironically.
Today was action packed. Got together with @diopfode as we came up with a gameplan for attacking core together, really excited to see how we'll level up our knowledge of bitcoin and hold each other accountable throughout the year+.
Spent 2 hours at my first Socratic Seminar w/ @SFBitcoinDevs (thanks for hosting!) It was great hearing the latest things these bitcoin devs chat about. Didn't follow it all but it was good to pick up what I could. See latest agenda if you're curious https://www.sfbitcoindevs.org/socratic/2021/01/04/socratic-21.html
Spent another 2 hours going through Chapter 4 of Programming Bitcoin. Today was all about serialization. How to efficiently generate a public key/signature/address/wif in an error-proof and data minimized way.
Some of the math for compression took me awhile to understand, it's difficult looking at an elliptic curve graph and realizing that the "negative" numbers in the first pic do not map to "negative" numbers in finite computations, a line ends up looking like the one on the right.
I wish all the calculus / geometry classes I took in high school / college actually took a realistic approach to learning. Saying "Efficiently compress data using math" instead of "do these series of equations in this order to figure out X" would have been a lot more interesting.
Another useful tip out of this book was that "Big endian" could be understood as "Big END first" (ie 531 is 500 + 30 + 1 instead of 100 + 30 + 5 if you went little end first). Mind = blown, never heard of it that way, I'll never forget now.
Ended off the chapter by starting with a "brain wallet" passphrase, computing the private key, then public key, then testnet address and sending some funds to it through a faucet. I did not use a secure passphrase so curious if my funds ever get stolen: https://blockstream.info/testnet/address/mk4NrUxVffvWar7ygxrLpfCBbRnia5nop2
Today I prepared for the Bitcoin Core PR Review Club that happens every wednesday. This entailed pulling down core, pulling down the PR we're going to be reviewing, building & running tests to make sure that's good, and reviewing the actual PR itself.
Tomorrow's PR is reviewing old code that was only relevant for version 0.13.0 right before the initial segwit code was added in 0.13.1. https://bitcoincore.reviews/20799 
For prep, I ended up reading BIP 152 which introduced compact blocks and eventually extended it to segwit blocks. The main takeaway is that not all the block txs need to be relayed across the network bc active nodes already have the txs in their mempool. https://github.com/bitcoin/bips/blob/master/bip-0152.mediawiki
Funny enough stumbled across this piece of text in the BIP, and honestly, I'm not sure if cat is an analogy for something actually relevant or if it's truly humor slipped in 😅
Besides that, it seems like each review session has good questions asked for those that might have reviewed the code so it was a good exercise to hunt for the answers afterwards.
Took about 2 hours setting up core to be tested (make's & tests take awhile and my damn python environment keeps getting out of wack for whatever reason) and reviewing the BIP & PR & finding answers. If anyone is interested, the IRC meeting is tomorrow at 17:00 UTC!
You can follow @cycryptr.
Tip: mention @twtextapp on a Twitter thread with the keyword “unroll” to get a link to it.

Latest Threads Unrolled:

By continuing to use the site, you are consenting to the use of cookies as explained in our Cookie Policy to improve your experience.