From Bitcoin to Dogecoin there has been plenty of blockchains and cryptocurrency buzz in the news lately. If you sift through all the noise (and yeah there is a lot of it out there) there are some really interesting, real-world applications of blockchain and cryptography in the works that will fundamentally change how our world works today. One of the more ambitious projects that I have seen to date to turn the public web into a blockchain that can power the future of software. Backed by Andreessen Horowitz (because who isn’t these days), the Dfinity Foundation is looking to disrupt how we build software and turn the internet into a blockchain and decentralized resource for building and distributing software which would fundamentally change how technology works. Today e take a look at how it works, and how it differs from today's server-driven infrastructure.
So a quick recap of where we are today in our moment of “cloud infrastructure” as the main backbone of most of our technology. Cloud providers such as AWS and Azure let you and I and anyone else build and deploy software on their infrastructure and more easily scale-out software to millions of users across the globe all through the internet. Cool right? Well, there are cons to the cloud tech stack, mainly just that, how quickly the tech stack has gotten out of control. Cloud servers, databases, filesystems, firewalls, web servers, DNS, CDNs, VPNs, and more. The complexity of this environment has grown exponentially and with that comes complexity and cost. It also comes with a lack of privacy and control over you, the consumers, data. These companies funnel your data through these systems and at the end of the day, it lies in their hands. So how is the Dfinity Foundation looking to change this dynamic? They call it the Internet computer.
What if we took all that data and the ability to secure it and then deliver it across the web at scale? That is what the Dfinity Foundation is looking to do with their new ICP, or Internet Computer Protocol. It is a web-speed, infinite scale blockchain technology that turns the entire internet into a computer that can store data and power software on local devices using the security of cryptography. The ICP protocol takes your data and securely stores it in what they call “canisters”, canisters are similar to blockchain-based smart contracts which contain both data and code that when the canister is opened can run the code locally and use the data to deploy the user's information within the UI. The canister is secured using cryptographic hashes just like the ones used in bitcoin or ethereum. Those canisters are called by your local machine using mechanisms similar to these blockchains and once the network verifies that the canister rightfully belongs to you, it is delivered to your machine where your key unlocks it and the code inside is run, loaded on your browser, or device and then the data is used to display the information you had requested.
Instead of a web server that you call to load a UI/UX and then a database that is queried to find the right information to put on the page, all of that is stored in canisters, on-chain, and simply retrieved by you through the ICP layer. Pretty cool stuff. Now there are a few cons to this that I want to fairly represent in this post, the first being security. Sure, with cryptography your data and software are in theory is safe but when quantum computing becomes more widely available and stable (which is still a decent way off) in theory quantum computing can break today's cryptographic algorithms. Now there is no saying that between now and then cryptographic algorithms will advance to become even more secure, but it is worth noting for the purposes of someone potentially developing production scale software on the Dfinity network someday. Another thing that is unclear (at least to me at this point) is how you as a developer would be able to access your customer data to run derived calculations as part of your functionality and user experience. Most software functionality and the value lie in its ability to take data that the user provides and use it to calculate derived statistics and data. Does this happen on a server somewhere that has your key (in crypto there shouldn’t be a second copy of your key to my knowledge)? Does this happen locally on your machine (could these new AI-enabled chips, like Apple’s M1, power this)? If anyone at Dfinity reads this, I’m not trying to rain on your parade, just want to present both sides of the discussion.
The fascinating thing with new technology like this is the opportunity it will provide to entrepreneurs to build the next generation of software that both tuns on this infrastructure as well as the supporting tools. Could someone build a code-less platform to build software on this new ICP protocol? What about banks and Neobanks and payment systems that can leverage this infrastructure for transparency, speed and to help save costs? The possibilities are endless but there is no doubt that there is an exciting future ahead for us over the next 10–20 years as we push further into distributed and blockchain technology.