This is a draft and it is incomplete
Blockchain As A Computing Platform
18 Sep 2022
Blockchain’s Evolving Value Proposition
As we all know by now, the original crypto-currency of it’s kind was Bitcoin. Bitcoin’s white paper original states that it’s use case and value proposition is Peer to Peer Cash. I personally feel that Bitcoin in it’s current iteration did not really live up to that specific use case.
Not too long after, we see Ethereum, which was branched off and inspired by previous ideas of trying to utilize blockchain technology for other use cases, 1 notable example was NameCoin that tried to bring a decentralized DNS with blockchain.
Ethereum’s white paper titles itself as a A Next-Generation Smart Contract and Decentralized Application Platform. And as we see the current trends in the crypto currency market, the sheer rise of new platforms whose value proposition is intimately tied to this Decentralized Application Platform has been numerous.
Money as an application on a Decentralized Application Platform
I think with the rise of the dichotomy of blockchains that are exclusively money, Bitcoin, Litecoin, Nano, Dash and blockchains that are more than that, Ethereum, Algorand, Cardano, and Avalanche, I think people might try to categorize blockchains by their use cases but in reality, this is a false dichotomy.
It’s obviously a false dichotomy because these smart contract platforms, most times have a better user experience when it comes to serving as money. Money can be abstracted and categorized as another application on these Decentralized Application Platforms.
So there is no dichotomy of chains that act as money compared to chains that don’t act as money. All these chains have some form of abstracted value transfer mechanism built into the protocol, that within itself is good enough to be considered money. Just like how different nation-states have their own version of money, different chains themselves will have different forms of money.
What makes a good Application Platform?
I first want to define what makes a good application platform. Note that I left out the word decentralized. When it comes to this idea of “application platforms”, I feel that the trait of making an application platform decentralized is done on an abstracted layer of the tech stack.
In other words, good decentralized application platforms will allow developers to not need to worry about if their applications are decentralized, they just are decentralized by the matter of virtue by being built on a decentralized platform. I think for the most part, most platforms behave like this. ie. Most Ethereum apps are decentralized, unless purposefully engineered to not be.
So back on to this idealization of good application platforms. To really answer this question, I think it’s good to first to understand really good application platforms today. A few come to mind, modern cloud providers, front end frameworks for building websites, and SDKs for mobile applications.
I really like this encompassing definition of application platforms on TechTarget
An application platform is a framework of services that application programs rely on for standard operations. An application platform operates across five principal areas: development tools, execution services, data services, operating systems (OSes) and cloud services.
While I think this is a great technical definition of application platforms, I feel like a more ontological definition can be more useful for our discussion.
Why do we need application platforms?
This might seem like a stupid question to some, but I think it’s good to establish the need for good application platforms (regardless of their decentralized status). In my day job, I use:
- an UNIX operating system
- the Ruby programming language
- the Rails backend framework
- the Rubymine IDE
- React Native to make cross platform applications
- Docker to containerize my apps
- AWS for elastic scaling of my applications
- Gitlab to automate deployments and builds.
- New Relic for application observability
- and so much more..
Without these tools and services, it would be a nightmare for me to get any work done, I think everyone in the tech world realizes we are standing on the shoulders of titans who did so much of the hard work to make modern technology possible.
But what’s the point of listing these technologies and what is the overarching philosophical reason why we need application platforms? I want to convey that we use a plethora of technolgoies / application platforms to compress and abstract away complexity.
Ultimately engineers use application platforms because these platforms are nice wrappers of simplicity over unwanted complexity. Ruby is a nice way of abstracting away memory concerns, Rubymine does a great job of understanding my application, AWS does a good job of abstracting away scaling web servers.
However good application platforms do MORE than just compress complexity, it also exponentially increases the capability of what you can build. It would be very hard for my to write the apps that I do if I had to write it in binary or assembly.
So 2 things I want to highlight for an analysis of blockchain application platforms.
Application Platforms must
- make things simpler to build
- increase the capability of what you can build
Finally, let’s talk about decentralized application platforms and blockchains!
From the developer perspective, blockchain app platforms have to make it compelling for developers to build on.
I think we have to analyze the ease of building things on different platforms.
I think most chains do a good job at trying to simplify the process of creating small units of work and logic, A.K.A smart contracts.
Most chains have, for the most part, an easy way to creating smart contracts in high level language programming languages.
But applications are just more than 1 logical unit of work, they are combination of a plethora of logical units of work.
How feasible is it to create applications that span complicated domains but are separated into a series of smart contracts?
I think with the new trends such as FaaS (Function as a Service), I think it’s dawning in the engineering zeitgeist that maybe it is feasible to abstract your applications into functions that are separated both through logical separation and infrastructure. Many are still skeptical.
Which brings me back to Decentralized apps. Is it really feasible to create applications that are only a combination of smart contracts? I’m not too convinced.
Not to mention that a lot of smart contract platforms have hard limits in the scope of their smart contracts. For instance Algorand smart contracts have a limit of size, execution time, and state. Cardano smart contracts enforce you to operate without state in a novel UTXO smart contract model.
I am skeptical if apps worth building can neatly fall into this model. I also am skeptical about the economic feasibility of this smart contract model. For example, do these blockchains have the capacity to support the throughput of web-scale applications?
Ethereum is already facing high fees and decentralized applications are not even that popular yet. I also question the economics behind it. In a platform with limited throughput, is there a reason to ever launch your decentralized applications unless you are expecting a huge load of users? I do not know how economic feasible it is for smaller app developers to push their code on to throughput limited platform. I also don’t know how feasible it is to push the costs of compute execution to the end user.
Right now applications make money not because customers are paying for the compute execution directly but because of the byproduct of that compute execution. For example, if we look at streaming services like Netflix, customers are not paying a monthly subscription not because they are paying for the AWS servers to compute some HTTP fetch calls, but because of the content they are watching.
It would be a very weird business model if customers payed for the run time of the aws servers. Another downside of this model is that it becomes hard to amortize the cost of compute execution. For example, there are cost savings with server execution time because Netflix can subsidize these costs by scaling to millions of users. However, it’s not as obvious to me that these execution costs can be easily amortized if customers were required to pay for the cost of execution up front.