Cryptocurrencies such as Bitcoin and smart contract platforms like Ethereum are recent examples of the evolution of consensus algorithms blockchain represents. Consensus, getting distributed processes to agree on a single value, is a fundamental problem in computer science. Distributed processing is difficult. In fact, there are logical proofs that show pretty conclusively that there won’t be a single perfect algorithm for handling consensus in an asynchronous system made of imperfect nodes. As long as there is the possibility of a fault, there is a certainty of a problem.
It’s important to have a solid understanding of the fundamentals since we are tasked with identifying an imperfect consensus algorithm sufficient for complex distributed use cases. First, we’ll discuss consensus algorithms. Next, we’ll look into current algorithms addressing byzantine fault tolerance, followed by emerging algorithms. With that overview of the landscape, we can start to get a handle on selecting an algorithm for a particular use case. We’ll wrap up by looking through a glass darkly about what might be.
Predicting the Future for Fun and Profit
I wrote the goal for this last article without knowing what I was going to say. The other posts relied on trying to describe the evolution of algorithms, which is a clear and logical progression since I have the benefit of hindsight. This article relies on foresight. Worse, it relies on my foresight. The good news is we will actually be relying on my interpretation of how Bob Johansen sees into the future. The Institute for the Future is an important resource for learning how to take a grounded, practical, systemic approach to predicting the future. Let’s take a brief example.
Look forward ten years and make some assumptions about what will likely come to pass. Ignore the noise of the present and make broad assumptions about where trends will lead. For example, it is very reasonable to assume that in ten years it will be common for devices to communicate information to each other. It’s not clear who is developing the best IoT development platform right now. Bringing a future perspective to current conversations can add clarity and encourage focus. Looking only at the current state of any new technology or process will lead to paralysis. Ask yourself if you can see something being ubiquitous in ten years. And remember to be humble; we don’t have flying cars yet.
In 2008, we could have reasonably predicted that mobile, social and scalable would be essential ingredients of many successful technologies. The Palm Pilot and Blackberry were huge at the time and Friendster had 115 million users, which demonstrates that there is a lot of local noise in a long-term signal. The important thing is there were complex technical implementations in production that have a sensible grounding in basic human behavior. People, in general, are mobile and social. I would also contend that people, in general, want to have their privacy respected.
A Manifesto for the Next Internet
People have demonstrated their willingness to exchange their personal information and behavioral information, which did not have a clear price, in exchange for free access to services they wanted. People are reconsidering this exchange now that criminal activity placed an intrinsic price tag in the form of a risk premium. I don’t often recommend reading a manifesto to corporate clients as a general rule, but I think that A Cypherpunk’s Manifesto is an exception.
Privacy is necessary for an open society in the electronic age. Privacy is not secrecy. A private matter is something one doesn’t want the whole world to know, but a secret matter is something one doesn’t want anybody to know. Privacy is the power to selectively reveal oneself to the world.
This is not the first manifesto that has affected my development career. I credit Richard Stallman for putting a manifesto on par with some of the classics. I remember when Open Source Software was considered delusional. I remember all the corporate FUD (fear uncertainty doubt). I remember all of the back and forth over package management, distro wars and other distracting nonsense. I remember when SuSE Linux was crowned the enterprise winner after the Novell purchase. Basically, there was a lot of local noise that clouded a simple concept. People can love their craft. Once you understood that collective labor can be separated from a central authority in the context of a craft rather than a task, it all seems inevitable.
Regulations Get Teeth
Privacy isn’t limited to manifestos. One of the most significant legislation in this area is the EU’s General Data Protection Regulation. Although not the only privacy regulation in the world, GDPR does stand out with a 1M euro or 2% of annual turnover penalty. Articles that codify concepts like Explicit Consent, Right to Erasure and Right to Restrict Data Access will need to be transferred into processes and code. Architectural considerations like Data Protection By Design and Default and Data Portability will begin to permeate our thinking. Processes for Reporting Data Breaches and maintaining Records of Processing Activities will need to become standardized.
People clearly want to continue to be mobile, social and connected and this trend will continue. It’s also clear that people want to keep their sense of identity and their sense of self intact in this interconnected world. The cypherpunk manifesto says that we are not Borg; the GDPR shows resistance is not futile. We can imagine a highly interconnected future where people have agency to own their identity, past and present, across distributed transactions.
An unpaved road forward
In the very beginning of this series, we learned the FLP Impossibility places a limit on just how accurate any consensus algorithm can be in an asynchronous network. We’ve also seen in this series how close to that limit ingenuity can bring us. Byzantine fault tolerance can now be considered an achievable architectural goal. The Cypherpunk Manifesto can help influence a new generation of developers while regulations like GDPR rein in current actors. So which PoX will win? Who knows? Who cares? That’s the wrong question. At this time, people are concerned that the immutability of the blockchain implies that it’s incompatible with GDPR. That’s local noise; this too shall pass. The correct question is how do we work today now that we have this insight into the future.
Starting building like tomorrow is already here. Later is now. Assume your system needs to be scalable across an asynchronous network unless shown otherwise. Then question that assumption. Byzantine fault tolerance is available; assume it is needed unless shown otherwise. Then question that assumption. Question the assumption that regulations like GDPR need to be an economic burden. A system that assumes a customer may be concerned about their privacy is a system that was developed to be enjoyed by humans. Humans are still a big market. The most important thing is to start building. Contribute to open source. Do a hackathon at work. Develop something for a non-profit. Do the work and then show your work.
Let us proceed together apace.
Did you miss any posts in this series? You can read them all here: