Blockchain technology can feel very abstract and disconnected from the real world. Many of the problems we’re trying to solve, and many of the properties we’re excited about—things like censorship resistance, permissionlessness, and decentralization—are quite abstract and therefore don’t immediately resonate for everyone.
At the end of the day, however, blockchain is a human technology that’s built to solve human problems. It can be helpful to be less abstract and consider some of these ideas in a simpler, more concrete way. Consensus is one of the most fascinating and relevant aspects of blockchain! But consensus didn’t originate with blockchains. What do consensus problems look like in the real world?
Actually it’s a very straightforward notion: consensus simply means that every actor is aware of something, and additionally, is aware that every other actor is also aware. That’s it in a nutshell. This allows many actors who aren’t necessarily in the same place, cannot communicate in real time, and don’t even necessarily trust each other, to nevertheless coordinate and solve coordination problems.
The hypothetical Byzantine generals problem that started it all may be contrived but, in fact, consensus problems arise constantly in our day to day lives. We just don’t always notice them—because we have pretty good tools for solving them, most of the time! Here are a few examples.
Thing #1: Pedestrians
Let’s start with the simplest possible idea: walking past someone on the street. This is a totally uninteresting, trivial occurrence, and I’ll bet you never thought twice about it. You do it all the time without thinking about it (especially if you live in crowded city). As with many social norms it’s a bit difficult to articulate the rules precisely, but we all know what they are because we use them all the time and they work well.
The gist is, if you’re approaching someone in the opposite direction, move to the right a little to give them some space. If you need to pass someone from behind, because you’re walking faster than they are or you’re in a hurry, pass on either side, whichever is safer and has more room, and give the person you’re passing a wide berth. If you’re walking in a group with multiple people, don’t walk abreast of one another so that you’re blocking traffic (you can always spot tourists who aren’t from the city because they’re woefully unaware of this!). If the sidewalk or path is crowded, be careful, be respectful, and don’t knock anyone over. That’s about it. The rules aren’t too complicated and they work just fine 99.9% of the time.
One interesting thing to note is that these rules are subtly different from place to place! I used to travel back and forth between Hong Kong and New York, and I immediately noticed upon arriving in either place that the rules are different because I’d start crashing into people! New Yorkers walk very fast, and they tend to walk on the right. Hong Kongers walk much more slowly, and they tend to walk on the left, but they also “weave” in both directions much more often, probably because Hong Kong is a much more densely populated city and you often find yourself on a narrow path in a massive crowd, which is much less common in New York.
Similarly straightforward, unwritten rules apply in many other social settings. For instance, when you walk through a door in a public space, it’s common courtesy to hold the door open for someone coming after you if that person isn’t too far away. Precisely how far is hard to say, but you know it when you see it—that’s part of the protocol!
Similarly, when in a group, we have norms and protocol that lets us figure out who speaks when, and whose turn it is to speak next. These rules are unspoken and unwritten, but they work pretty well most of the time. Most of the time we don’t speak over one another. Most of the time if two people begin speaking at the same time they immediately figure out whose turn it is and the conflict resolves itself, using subtle social cues. This is consensus at work!
Thing #2: The Traffic Circle
Let’s look at an example of another protocol that’s slightly more formal and more clearly defined. For this we can look at automobiles. Whereas the rules that govern pedestrian traffic are relatively ad hoc and based on common sense, those governing automobiles are much more clearly defined!
Most of the rules of the road are pretty straightforward and, at least if they’re followed, conflicts rarely occur. Actually, if you think about it, given how dangerous cars can be it’s remarkable how infrequent traffic accidents are in the grand scheme of things! Drive on the correct side of the road, be respectful and drive defensively, stop at traffic lights and stop signs, pass carefully, don’t drive too fast or too slow, check your mirrors and blind spot when changing lanes and turning—it’s not exactly rocket science and there aren’t that many rules to remember.
One interesting situation is when multiple vehicles approach a four-way stop at the same time. I suspect rules on this differ from place to place, and the “rules” are more like soft social norms, a lot like the previous example of pedestrians. I was taught that the vehicle that arrives first should go first, that vehicles going straight and turning right get priority over vehicles turning left, and that other things equal, if multiple cars arrive at the same time, the driver on the right gets priority.
Even this doesn’t cover every case. Like every protocol, this one has corner cases too. What happens in the hypothetical case when four vehicles arrive at the same time? There is no “vehicle on the right.” We need a fallback consensus mechanism! Again, I strongly suspect that this differs from driver to driver and place to place, but it seems to me that it’s resolved through a combination of safety, fairness, and confidence. Safety means that first and foremost all drivers will act to avoid a collision. Multiple drivers won’t accelerate into the intersection at the same time. Subject to this rule, the mechanism favors liveness: drivers won’t sit still for hours waiting for someone else to move first. Eventually, someone will move. Fairness means that, if cars heading in, say, a North/South direction just cleared the intersection, then other things equal the next pair of cars to cross will be those heading in an East/West direction. Confidence means that, usually, the driver with the most confidence or aggressiveness (which often correlates to the one with the biggest car) will approach the intersection first.
You could probably come up with even more contrived cases than this, such as the famous traffic circle (roundabout to my European friends). These are famously efficient (since, in the optimistic case, no one has to stop) and famously confusing. They require more careful judgment than traffic lights, which require almost no thinking at all. They’re sort of like a continuous version of the four way stop example: always defer to the car coming from your left. Everyone turns right. The rules, too, are much softer and less discrete. Proceed, unless there’s a car coming around the circle that’s too close to you. How close is a matter of judgment that depends on distance, the size of the circle, the size of the car, its speed, etc. It’s even more complicated when the circle has multiple lanes!
When considering consensus, incentives matter a lot. The protocol governing automobile traffic is basically incentive compatible! We all have skin in the game behind the wheel. The cost of an error can be quite high, even disastrously so. Driving is one massive coordination problem: if we don’t follow the rules, we all suffer, and if we do follow the rules, we all get home just fine. Give a little, gain a lot. (It’s a shame that so many people on the road don’t appreciate this and drive like maniacs. Maybe the incentives aren’t so great after all.)
I find that thinking about the literal rules of the road is very helpful to me as a protocol designer. Cars have obviously been around much longer than blockchains, so the protocols that govern their behavior are much more mature and battle-tested. Driving is a (mostly) solved problem. It gives me hope that we can solve lots of other social consensus problems and coordination problems. There are many lessons for protocol developers in the way traffic works! The ideal consensus mechanism should work like traffic, with simple, straightforward rules that are easy to understand and follow and that result in correct, incentive compatible behavior.
Thing #3: Marriage
Finally, let’s look at something a little bit more complicated. Marriage may seem like a pretty straightforward protocol—you’re either married, or you’re not—but in practice it’s not so simple. What makes it complicated are the same things that make distributed systems and blockchain complicated: time and place. Getting married isn’t complicated, but letting the whole world know that you are isn’t so simple.
If you think of consensus as agreeing on the state of the world (e.g., Alice holds two coins, Alice sends one coin to Bob, now Alice has one coin and Bob has one coin), then marriage is a perfect example because it’s a “singleton” transaction that can only happen once. That is to say, the same couple can only be married once, and the same person can only be married once. Marriage requires global consistency: you can’t get married in two different places. Of course, birth and death are quite similar—each only happens once—but I think marriage is a more interesting case for reasons that will become apparent.
I’ll bet you’ve never stopped to consider how marriage “works” in a transactional sense. It varies from place to place but the rough idea is the same everywhere. Two people apply for and receive a marriage license from the state, then have a civil or religious ceremony where an officiant (with some, usually minimal, degree of certification or recognition) marries them. All three parties and a witness sign a marriage certificate and the deal is done.
How does the rest of the world find out that you’re married? Practically speaking, today this typically involves things like a wedding, social media, word of mouth, sending cards to friends, and in some cases, newspaper announcements. Those aren’t foolproof technologies. Is there a “marriage network” where new “ledger entries” are broadcast globally? No. If you’re married in town A, in state B, in country C, it’s unlikely that even the people down the road in the next town will know that you were married if you don’t tell them, to say nothing of other states or other countries.
To borrow another term from blockchain, marriage works optimistically: it’s an honor system unless and until something goes wrong. If, for whatever reason, someone is suspected of “double spending” (marrying twice), then an investigation can occur, evidence gathered, double spends unwound, and punishment meted out. It’s not an especially difficult crime to commit, nor is it an especially big social problem in spite of this because the vast majority of people would never imagine marrying more than once. It simply makes no sense to do so. But it is possible, in the same way that other types of fraud and social engineering are possible.
Marriage is even more complicated by the fact that many people change their name when they marry. Usually, changing one’s name requires things like petitioning a civil court, publishing a notice in the newspaper, providing proof that one has no outstanding debt or arrest warrants, etc. It typically requires the state’s approval, costs money, and takes time. It can involve attorneys. By contrast, in many places you get a “free pass” to change your name when you marry. One spouse may change their surname to match that of the other spouse, bypassing the usual, burdensome route. It just requires writing the new name on the marriage certificate. Easy peasy.
The process of changing your name is subject to many of the same limitations as marriage: it merely means receiving a physical sheet of paper with a judge’s signature on it. You can choose to use this piece of paper to change your name on your bank accounts, credit cards, utility bills, etc., or you can keep using your old name. You can do both. You can get an ID in your new name, or not. You can book airplane tickets and fly under your old name or your new name, or both. You could likely get away with changing your name many times in many places and, thus, having many identities. It’s not legal, but it’s also not difficult. Like marriage, it’s an optimistic honor system.
When you apply for a passport, does the national government contact every single municipality in the country to check if you’re on record as having changed your name there? No. Hard “facts” like “true, legal” names on passports and other identity documents, and whether or not someone is married, to whom, when, and where, are in fact much more subjective than they seem. Even birth and death aren’t nearly as objective as they seem upon closer examination! Which is a big reason that one common type of fraud is illegally collecting tax and social security benefits on behalf of a deceased person.
These “facts” and the systems that manage them struggle with many of the same issues as distributed systems: sharing information widely, eventual consistency, event sequencing, deduplication, double spends, etc. They work because people usually don’t take advantage of them. They’re effective social consensus systems but they are far from foolproof. Hopefully we’re doing a good job of designing and building more robust consensus mechanisms in blockchain, ones that have better incentives and are less gameable, and hopefully someday we’ll be able to use these systems to improve some of our existing, broken, fallible systems. On balance, though, for now the arrow of influence points in the opposite direction: blockchain is nowhere near ready to replace most of these existing systems, and there’s much we can learn from the successes and failures of tried and true social consensus systems such as these!
I especially liked the marriage analogy although I’d argue that it is possible for the same couple to be married more than once as I’ve done it myself. Married/divorced/married again stupidly to the same man and divorced again. Stranger things have happened. I still like the analogy and the process you take in relieving yourself of cultural “norms”. Have you begun creating your own standards?