Sometime in early 2019, as I started building what has now become the TwoStack DartSV library, I realized that the entire bitcoin developer community was focused on building wallets for holding money. This meant that pretty much all developer documentation focused on how to build bitcoin libraries. I.e. not to build applications that leverage libraries for more interesting use-cases. It would be fair to say that in early 2019 all the interesting things w.r.t. user-facing apps were happening on blockchains other than bitcoin.
So, mostly to scratch my own itch, and to learn more deeply about the internals of bitcoin, I decided that the world needed yet-another-bitcoin-library. This one will be different! Well, same-same, but different. This library would be built using the Dart programming language, and it would enable the building of multi-platform applications using Flutter. That effort produced the DartSV Library.
Once the library was built (in fits and starts over evenings and weekends), I realized that I really needed to deepen my understanding of how bitcoin works. This might sound odd, since the process of building a library gives you the opportunity to get rather up-close-and-personal with the tech. That was perhaps the issue that I faced, missing the forest for the trees.
Within software development I believe that it is massively beneficial to one’s sanity to have useful abstractions; good names to encapsulate the complex. As I plunged back into bitcoin, I did so not to learn about the economics, or the code, but to look for the highest-level abstractions that accurately describes the system from the point of view of a developer.
It is my believe that I have finally discovered a useful 10000-foot view of Bitcoin. I believe that from the programmer’s point of view, it is most useful to think of Bitcoin in the following terms.
It is with this frame of reference in mind that I then set out to build what has now become the Bitcoin Developer Guide along with supporting libraries and tutorials. At it’s heart this effort is meant to be an exploration into what this Layered Architecture of Bitcoin means for bitcoin-centered application development in general.
The future I envision is an exciting one. A future wherein bitcoin-enabled multi-platform applications form P2P networks; a fractal landscape of P2P interactions with microtransactions fueling the ebb and flow of economic value. In that future it is my hope that the barrier to entry for economic participation can be dramatically lowered by the foundational work we are doing now.