The most exciting property of the blockchains is that they allow us to bake state directly into open, transparent protocols. This means that we can build programs where everyone can, not just read the source code, but also trust that the running program adheres to that source code.
This means that we can build open protocols without needing to trust any single participant. Not just for its working, but also its state.
So what types of protocols is this useful for?
- Voting: Let participants vote on proposals, elections, etc.
- Currencies: Transfer currency between people.
- Validations: Participants validate that something empirical is there.
The protocols listed above are special in the sense that they require two things. 1) soundness of interaction: only I can vote or transfer money on my behalf (unless I explicitly allow otherwise) and 2) completeness of interactions: When I cast a vote or transfer money, it stays like that. Blockchain protocols allow developers to make protocols to adhere to these elements.
Stateful Protocols: Blockchains allow for states directly on the protocol. This allows us not only to make sure that the state we have recorded is authentic but also that no state has been lost.
We have long been able to ensure the integrity of messages using cryptographic signatures. What blockchains allow us is to record the completeness of messages by recording them in blocks that are committed and can not be altered.
The canonical example is voting: Using traditional cryptography, we can ensure that votes that are cast are authentic. But recording these with a single authority would also allow votes to be dropped without anybody noticing. Blockchains can guarantee that no votes are dropped. This is essential to have an honest voting system.
Transparency: Open source software solved the source-code transparency. For all public projects on GitHub, we can see their source code. But that does not guarantee that the code the computers run is the same as the source code.
Blockchains solve this problem by distributing the source code to all nodes the blockchain is running on. Every time somebody interacts with the on-chain program all nodes run the code and verify they get the same result.
The support DAO: Programs need upgrades. If the program runs a currency, we might need to change the interest rate. If it runs a provenance protocol we need to be able to change provenance events when a new consensus is achieved. To do this, protocols set up their own DAOs or distributed autonomous organizations, which are the stewards of the protocol. They discuss and decide on the changes to go in. How DAOs work is different from DAO to DAO. Currently, they tend to use a governance token that can be used for voting and is tradable on a secondary market.
Centralizedness of the blockchain: Folks raise concerns about to what extent blockchains are centralized. There have been several examples of blockchains that can be controlled by a single entity. This is a huge concern for open protocols when transactions are being rolled back. But this is also an isolated concern. The blockchain is the technical infrastructure and can be changed. Ie. these concerns should not be a game-stopper for the development of this technology. However, it should be considered another problem that is being solved as we speak.