Cantrell: How I Learned To Think Like Satoshi

When I began coding blockchain, I started by studying the original Bitcoin code base, because I wanted to learn from Satoshi by reading his accompanying comments. At age 11 I learned how to code by reading the code of others, before I started building apps and games. So pulling apart Satoshi’s code and breaking it in order to put it back together again was natural for me. That’s how I learned what blockchain technology could and couldn’t do.  

I knew that, not only did I need to learn how to code a blockchain, but also I needed to learn how Satoshi thought, because it is a different way of thinking than a conventional programmer with a client-server view. That’s where an understanding of a lot of the architecture comes from. Reading Satoshi’s code was like following a psychological map. Even the simplest of comments about the code provided insight into what Satoshi was thinking. 

As I combed through Satoshi’s code, I saw comments, for instance, about NTP or Network Time Protocol, which is a clock synchronization protocol used to ensure that electronic devices’ internal clocks are properly synchronized. Satoshi’s version relied on a central server to synchronize logs. I didn’t believe that would be sufficient, and sought to decentralize this aspect myself. From there, I learned all of the consensus rules, such as checking for unique transactions and duplicates. The list goes on.

For example, in an early version of Satoshi’s code, he noted “//Add atoms to user reviews for coins created vector.” According to early Bitcoin developer Mike Hearn, this comment references a plan for a P2P marketplace built into the Bitcoin protocol. These plans were abandoned after the network launched. Additionally, in the early Bitcoin code Satoshi named Bitcoin’s smaller units a “coin” (1,000,000) and “cent” (10,000) rather than “satoshis,” the term most people use today.

Furthermore, reading Satoshi’s code trained me to think in an adversarial and decentralized mindset, which helped me to understand consensus critical code, and non-consensus critical code. In order to modify Bitcoin’s consensus, you must modify the consensus rules and time lock activations. 

Before the days of blockchain, a coder simply thought in terms of a client and a server. As Bitcoin and most other blockchain-based networks geometrically expand to thousands of nodes, you have a whole different animal, especially  when it comes to debugging.

When I read Bitcoin’s original codebase, I saw where Satoshi was going. I appreciate what Satoshi did, and I appreciate having been able to read his code and his comments. We as bitcoin natives have to respect our roots. If it wasn’t for Bitcoin, none of us would be here. Bitcoin is still technically in beta. That is why each new version starts with the number “0”. In a way, the Bitcoin Community is finishing today what Satoshi started.

About the Author

Colin Cantrell

Colin Cantrell

Colin is a lead software architect at Nexus, engineer, musician, and father, who started programming at the age of 11. He has a wide range of experience from networks, to security, to virtual machine development. He accelerates in decentralized networks, cryptography, quantum computing, and regularly contributes to the Internet Engineering Task Force (IETF).

Leave a Reply

Your email address will not be published.

You may also like these