njms.ca

The problem with blockchain and how to fix it (by making useful software instead)

Published on 2023-01-16


A diagram illustrating ActivityPub's inbox/outbox model. On the top, an arrow labled GET points to a figure from a box labled INBOX. Another arrow points to this box labled POST from a cloud labled
A diagram illustrating ActivityPub's inbox/outbox model beside a blockchain for some reason. The ActivityPub diagram was sourced from the ActivityPub spec under this license. Copyright © 2024 W3C® (MIT, ERCIM, Keio, Beihang). The blockchain diagram was created by Theymos on the Bitcoin Wiki and shared under CC BY 3.0.

Time and time again, I've seen blockchain developers sharing their analyses of the blockchain ecosystem and what's preventing cryptocurrency from achieving the widespread adoption it so dearly deserves. These analyses can often be summarized as such:

The main barrier to cryptocurrency adoption is the lack of accessible tools to make the software as convenient as services like PayPal, Stripe, E-Transfer, and other utilities of the old financial system. What's preventing the development of these tools are the barriers of entry to develop blockchain software.

Many people seem to think the problem is the lack of developer tools. They go on to conclude that what we need are new abstract software layers on top of the old, rudimentary blockchain stack to facilitate the development of new, simpler tools to facilitate the usage of the blockchain stack. While these conclusions are justified, I strongly believe that they miss a key detail. While these plans might work in theory, they fail to acknowledge some key barriers of entry to the development of developer tools to facilitate the development of tools to facilitate interactions with the blockchain. As such, they're usually relegated to the graveyard of ideas that were never seen through to completion or for which no co-founder lacking the financial literacy to agree to join the project could be found.

In this article, I seek to propose a new solution. Namely, I firmly believe the best path out of the rut the antiquated blockchain stack has left us in is to build a new set of tools that will enable blockchain developer tool developers to more efficiently develop developer tools to enable blockchain developers to develop more user-facing tools to interact with the blockchain. To demonstrate, I will analyze three up-and-coming blockchain developer tools developer tools to explore how they're disrupting the cryptocurrency sector.

Improving transactional efficiency with zero-proof blockchains

The first project I would like to turn your attention to is PostgreSQL.

PostgreSQL is what we might call a zero-proof, link-less blockchain deployment system. At once, PostgreSQL solves two significant problems that have been plaguing blockchain developer tool developers for a number of years. The first key issue is the necessity of proof of work or proof of stake in order to maintain consensus between nodes, and the second is record immutability. As we know, blockchain developer tools developers, like normal developers, need to keep track of records we don't expect to remain identical for the rest of geological history in an organized manner. Unfortunately, the blockchain is a very inefficient mechanism for storing mutable records. In order to create a more friendly user experience for blockchain developers, blockchain developer tools developers needed to build systems to solve problems that blockchains are often ill-equipped to handle under current technical restrictions in a fast and cost-efficient manner.

First released around negative 12 years following Bitcoin's inception, likely due to popular demand for a more efficient side-chain ledger solution, PostgreSQL's disruptive solution to the consensus problem has sent waves across the greater blockchain ecosystem. Remarkably, PostgreSQL ledgers are able to reliably replicate data across various potentially-adversarial machines by using what it calls the root-replica model. As innovative as it seems, this idea actually has its roots in much older computer science traditions. The model works by maintaining one or a small number of trusted devices, called the "root" devices, that store the entire ledger on their hard drives and are responsible for recording any modifications. These devices are comparable to "full nodes" on the Bitcoin network. Then, we have potentially many "replica" devices that download modifications from the root devices to maintain either the entire or a portion of the ledger. In the Ethereum ecosystem, this model is referred to as "proof of authority."

Similarly, PostgreSQL solves the problem of immutability by not being immutable.

The PostgreSQL Core team say that they were inspired to undertake this project after realizing there was no reason to assume their computers had any reason to act adversarially. By eliminating the need for wasteful consensus mechanisms and hash-based linking, the team has successfully delivered a product enabling efficient transactions on a shared ledger for over 26 years.

Towards the creation of an extra-blockchain distributed communications network

While working in a distributed meritocracy, communication is of utmost importance. Several on-chain communication solutions have been proposed over the years. For example, the Bitcoin Cash network's increased block size enabled the creation of Memo: a social media platform similar to Twitter that has users encode their posts directly into transaction metadata. There's two significant issues with this approach. For one, the need to pay transaction fees on your posts creates a financial barrier to entry. Additionally, Bitcoin Cash's block time of 10 minutes makes it difficult to continuously dump your internal monologue onto the internet in real-time. Surely, the developers of Memo can't expect us to limit our thoughts to discrete 10-minute intervals. Because of these aforementioned issues, many have turned to side-chain solutions to leverage the trust of the blockchain ecosystem without needing to manage its technical limitations.

Some more than others.

The next project I'd like you to turn your attention to is called ActivityPub

"blockchain" [...] it's [...] good [...] thing

- Christine Lemmer-Webber, CEO of ActivityPub. https://www.dustycloud.org/blog/what-is-a-blockchain-really/

ActivityPub is a protocol for creating inter-chain operability between what we could refer to as side-chain zero-proof communication ledgers by leveraging the principles behind atomic swaps. To do this, the drafters of the ActivityPub protocol acknowledged that since the inception of zero-proof blockchains in 19961, system administrators have been operating semantically identical side-chain communication platforms for quite a while. Most of them use a very similar language to communicate information about posts, updates, interactions, and so on. ActivityPub, then, provides a mechanism through which these side-chains can share this information between each other by translating it into a common JSON language.

Early critics of the project were skeptical of how the project would deal with adversarial nodes, as ActivityPub provides no built-in mechanism to ensure that all nodes uphold some level of dignity and don't act maliciously. In practice, the ActivityPub network has mitigated concerns around adversarial actors by just ignoring them.

Optimizing blockchain transactions by optimizing blockchain tooling tooling

There is a spectre haunting the blockchain developer tools ecosystem--the spectre of JavaScript.

JavaScript was invented in 1995 when Netscape developers first noticed that twenty years in the future, Blockchain developer tool developers would be in desperate need of a way to onboard new developers who were too lazy to lean a new programming language. The ensuing thirty years have been dominated by an arms race between companies such as Google, Mozilla, Microsoft and Apple to see who could develop the most inefficient platform that could be nefariously repurposed into a universal virtual machine for creating native software cryptocurrency wallets that aren't actually native but kind of look like they are if you aren't paying attention.

Today, most JavaScript development is powered by Node.js, which could be best described as a smart contract-orientated programming language programming language runtime environment--that is, a runtime environment for programming languages for smart-contract orientated programming languages. The choice of JavaScript as the de facto lingua-franca of the blockchain developer tool developer tool ecosystem was wise, as it well-encapsulates the blockchain-solutionist ideology: always seek to accomplish what you're trying to accomplish by crudely approximating what you're trying to accomplish at a 90% loss in performance. However, the lacklustre performance of Node.js poses significant challenges to blockchain developer tool developers in that it has lacklustre performance.

The third and final project I'd like to turn your attention to is Bun.

While still early in development, Bun innovates on Node.js in several ways. Notably, it has shown promise in its overcoming of two significant disadvantages of the platform. First, Bun improves on how Node.js forces you to install a complex network of interrelated dependencies to do even the simplest tasks by not doing that. Second, Bun improves on Node.js' slow run times by being efficient instead.

Conclusion

In this article, we have reexamined the state of the blockchain ecosystem with the explicit intent of coming to the conclusion that the drought of reliable blockchain stack developer tool developer tools is the primary impediment to the realization of a global, permanent, immutable, indestructible, public, surveillable ledger to which every human contributes all their personal information at all times. In spite of these challenges, developers around the world have been working since before even the invention of the blockchain itself to create modern tooling to solve the problems blockchain solutions would inevitably create.

At this time, I would like readers to take this one step further, and to think of the many obstacles blockchain developer tool developers and potential blockchain developer tool developers face in their day to day lives, and what you, regardless of your technical abilities, can do to help. That stack of dishes on your counter could prevent a blockchain developer tool developer from having a plate to eat off of. That pile of unwashed clothes could prevent a blockchain developer tool developer from getting dressed. That shower you didn't take this morning could prevent a blockchain developer tool developer from feeling clean enough to go about their day with confidence. In fact, one could spend a lifetime making life easier for themself and others without ever once having to touch the blockchain. Maybe one should.

Footnotes

1

Relational databases have been around since the 1970s so this only works in the fiction of the article, unfortunately.

Comment on this article

If you want to share your thoughts on this article, click here to compose and send your response via email . If you want your comment published, please say so and know it'll be reviewed beforehand. If you say something mean, you may successfully hurt my feelings.