This is a deep dive into supremely nerdy territory, but being a stickler for detail, I think it’s worth clarifying: algorithms and protocols are not the same thing. And in the bitcoin-blockchain world, the difference is important.
Which is surprising, since they seem to be used interchangeably. I certainly have used them as if they were the same thing, as have people much more knowledgeable than myself. And my inner Thesaurus desperately wants it to be so, to avoid over-using one word or the other. But a niggling doubt at the back of my mind pushed me to look into it a bit, and here is what I found:
That our confusion in this respect is holding us back.
So in this article, I hope to clarify the differences, and to show how a deeper understanding of this can lead to new breakthroughs. In part, it’s my fondness for the pedantic, but mainly it’s because I firmly believe that if we can understand something more profoundly, it’s more likely that we can come up with useful variations, innovations and use cases.
A protocol is a set of rules that governs how a system operates. The rules establish the basic functioning of the different parts, how they interact with each other, and what conditions are necessary for a healthy implementation. The different parts of a protocol are not sensitive to order or chronology – it doesn’t matter which part is enacted first. And a protocol doesn’t tell the system how to produce a result. It doesn’t have an objective other than a smooth execution. It doesn’t produce an output.
It’s like the engine of a car, how a car works.
An algorithm, on the other hand, is a set of instructions that produces an output or a result. It can be a simple script, or a complicated program. The order of the instructions is important, and the algorithm specifies what that order is. It tells the system what to do in order to achieve the desired result. It may not know what the result is beforehand, but it knows that it wants one.
It’s what you need to do to drive the car, the actions that the driver performs.
The protocol is a set of rules that determines how the system functions.
The algorithm tells the system what to do.
The protocol is. The algorithm does.
In the kitchen, the protocol would be a set of conditions and instructions such as:
- The knife cuts
- The flame heats
- Olive oil is delicious
- Frying pans are good for sautéing onions
- Wash your hands before handling food
- Burnt food tastes bad
An algorithm in the same kitchen could be:
- First, chop the onion
- Then, heat up the olive oil in the pan
- Put the onion in the pan, add some salt, and stir until the onion is translucent
How is any of this applicable to the blockchain? Because the blockchain needs both protocols and algorithms, and each have a distinct role.
In blockchains, the protocol:
- tells the nodes how to interact with each other (without telling them to do so)
- determines how data gets routed from one node to the next (without telling the data to move)
- defines what the blocks have to look like
- stipulates who decides which transactions are valid
- establishes how consensus is determined (without dictating the procedure)
- identifies who maintains the ledger
- delegates who determines how the rules of the system change
- decides if identities are needed
- determines who can create new coins (but not how)
- triggers procedures in case of error
The algorithm, on the other hand:
- verifies signatures
- confirms balances
- decides if a block is valid
- determines how miners validate a block
- establishes the procedure for telling a block to move
- establishes the procedure for creating new coins
- tells the system how to determine consensus
So far so good, right? Now here’s the truly befuddling part: are “Proof of Work” and “Proof of Stake” protocols or algorithms? In crypto journalism they tend to get used interchangeably, with frequency coming down on the side of algorithms, but with protocols getting a relatively high score (check out “proof of work algorithm” vs “proof of work protocol” in Google). So I’ve been furrowing my brow and staring into my empty cup of coffee and I’ve concluded:
They’re algorithms. Not protocols.
Both Proof of Work and Proof of Stake tell the miners how to go about validating a block. They establish conditions, like protocols do, but the instructions are fundamental, and there is definitely a desired outcome: to process transactions, to determine which blocks enter the chain, and to provide a consensus as to which chain is the correct one. Both use the underlying protocol to achieve those goals.
Continuing along this brain-wrinkling train of thought, are Bitcoin and Ethereum algorithms or protocols?
They’re protocols. Not algorithms.
They establish the ground rules, set up the “engines” and determine who does what and how. We, the users, then play around with algorithms to get coins sent, to execute smart contracts and to create new business models. The algorithms are what make the protocols useful.
So, if we understand that the rules are one thing and the instructions are another, we can get creative. What is our desired outcome? And what algorithms, using the rules of the protocol, can we come up with to get us those desired outcomes?
That is why the difference is important. We need to understand the distinction between the state and the action. Between the rules and the procedure. Between what we can and can’t do. We can’t change the rules (if you want to, go ahead and set up a new blockchain). But we can create a series of actions, instructions and processes that can get us to where we need to be.