It always starts with an interesting problem.
Many people give blockchain technology too much credit. Many give it too little credit. I believe that is at least partly due to there being a confusion as to what it is really that we can do now that we couldn’t without blockchain.
What is it that makes something a C thing? I believe there are two requirements. If either of them is not strictly necessary, it’s a B thing.
What you want to build is a C thing if and only if it is required to be:
I will provide explanations and examples to add more colour to the above. Before that I do want to say two things.
The above definition is not rigorous because neither of the above two is binary and fully well-defined. For example, there might be different levels of decentralisation. The same design might be sufficiently decentralised for one application, not another. Ultimately, it is a matter of subjective judgment.
It is not to say that blockchain should only ever be used for C things. There are many reasons why it should also be used for B things, for example for educational purposes.
A system is decentralised if no one person or entity can decide its outcome without first coming to an agreement with others.
If 10 people go on a trip and it’s Franek who decides whether it’s going to be to Cambridge or Oxford, it’s a centralised system. If everyone votes and majority decides, it’s a decentralised system. If 3 people go to Franek and say “you decide, please vote on my behalf”, the system becomes more centralised.
Systems can be decentralised to a certain degree, it’s not binary. What makes it sufficiently decentralised for a particular use case is a matter of judgment.
A system is self-executable if, based on its operation today, there are sufficient guarantees that it will continue operating in the foreseeable future. The definition only considers systems that require human input, thus have an economy element to it. (strictly speaking “the Sun rising every morning” is also a self-executable system)
Bitcoin, the bank where you keep your savings, the API your company uses to stream weather data can all be considered self-executable to a certain degree. Maintainers of those systems would incur substantial financial loss if they were to suddenly stop operation.
Some people describe the above concept by calling blockchain trustless or the trust machine. Self-executable systems replace the strong assumption that people are trustworthy with a much weaker assumption that people are economically rational.
Not decentralised, self-executable
Most of what we interact with in the world today, belongs to this category. If I am reading a newspaper today, I am fairly confident that the next issue will be available tomorrow. Me being able to purchase it today is a sufficient proof that publishing newspapers is a profitable enough business for it to be available in the foreseeable future.
However, whether the newspaper is still a reliable source of information tomorrow depends on just one entity, the publisher. If they are economically irrational, or have incentives external to making a truth-seeking customer happy (e.g. focusing on ads or promoting particular political views), they have enough power to overnight decide to stop being one.
Decentralised, not self-executable
This one takes a bit more imagination.
Imagine I am running a small shop that sells fruit and vegetables. I want it to be completely decentralised. Every morning, I ask every single person in the city what they think the price of every product should be and then use the median vote as the actual price.
Some people might think that average would work better than median so if more than 50% back that proposal, it gets enforced. Some might think that 50% is too low of a majority and voting time should be extended to 2 days. If those get enough backing, they get enforced too. In short, I simply provide the suggested initial rules of the system and they are free to be disputed and changed by the city population.
That solution seems very decentralised but at the same time not self-executable. It seems highly likely that running the shop and constant voting would make the business very unprofitable. Me, as the shop owner, would quickly decide to give up on it or would never have started it in the first place.
Most of you probably found the above scenario quite ridiculous. Please note, however, that there is only one element missing from making it essentially what Bitcoin is today: make it self-executable.
Remove the shop owner and add clever technology to make running the shop and voting smooth. As long as users believe that other users see value in a shop where no one person can change its prices or shut it down, the shop will run forever.
Not so fast
It’s not that easy though. What stops me from bribing a lot of people to vote to set the price of apples to $0.0001, buy all of them and later sell on the black market? Hopefully, the rules are set up in such a way that that scheme (or any other I could possibly think of), wouldn’t work. I would either end up losing money, or other people wouldn’t be interested in accepting my bribes.
We need to come up with every possible attack and make sure it doesn’t work. What if we missed something?
There is no way to stop the shop once it’s been launched. We might start a new, improved shop v2.0 and hope that all people switch to that one. It is possible that they will, especially if the change is in their benefit. But that also comes at a cost. Switching once every few years is probably fine. Switching as frequently as iPhone app upgrades is certainly not fine.
It would be really great to get it right the first time…
What do we do?
Test for all the possible attacks?
Sounds like a lot of work. Also, you need to be confident that none of the numerous grocery-hackers eyeing millions of $$$ worth of apples would be able to outsmart you.
Define all actors, their objectives, dominant strategies and find the equilibrium?
That sounds tempting. Maybe we can make assumptions about who is likely to use the shop and what they care about. Then we can find their optimal strategies and the equilibrium state the system will naturally converge to.
That’s a very hard problem. We could try to make it easier by making more assumptions. Then again, assumptions about what real humans care about are likely to be wrong. Finally, how likely are users to not only find their optimal strategies but also follow them?
That is exactly where Incentivai was born.
Let’s not make assumptions about what people care about and how rational they are, but rather, treat those as parameters.
Let’s have human-like ML agents find optimal strategies given what they care about as we explore the space of all the possible ways we can be wrong in our assumptions.
Let’s take a step back, look at how the system operates as a whole and see if we are happy with how robust it is.
Wait! I thought Incentivai was about smart contracts and so far in this article you didn’t mentioned blockchain once! one might say.
Of course, they would be wrong. I mentioned blockchain several times.
But yes, design of economic incentives applies to self-executable systems that are decentralised to a varying degree. If your Uber for X startup launches a new referral scheme to acquire new customers, why run 1000 A/B tests if you can run just the top 10 most promising ones according to simulation results?
There is no free lunch, however. It’s not easy to throw a 7-layer deep neural net at the hardest problem out there and, just like that, get it to work quickly. Not to mention generalise to all other, simpler problems.
Blockchain is the dream world of any ML algorithm. Everything is structured, everything is a number. No wonder computers have been beating us at chess for decades yet would still be nowhere near able to comprehend why this photo is funny.
We know where to start and we know where we’re headed.