I’ve been an advocate of the Universal Basic Income (UBI) for several years. A few months ago, I spoke with Martin Koeppelmann about his Circles project (of which I am a great fan), which plans to use a web of trust to create a UBI on top of Ethereum. Since then I’ve been thinking off-and-on about the decentralized-UBI concept.
First, a little background. Open public networks, like Bitcoin or Ethereum, can’t rely on simple “one node = one vote” protocols to achieve consensus. (Consensus meaning, in this case, agreement among the network’s nodes about who owns what.) This is because, if I (that is, my computer) can cheaply join a network and participate in voting, then I can have 10 devices join the network, or 100 virtual machines, or 1000 zombie computers in a botnet. Since my vote is amplified by the number of nodes I control, with enough nodes I can control the network. This is called a Sybil attack. Satoshi’s insight was that you could avoid this problem by making “votes” cost some real-world resource — for Bitcoin, this is the cost of electricity needed to search for very small hashes (“mining”) — and in turn receive rewards (bitcoins) proportional to the amount of resources you used.
There are a number of drawbacks to using mining to provide network security. The first (and most often lamented) is that it uses a great deal of power, performing an (otherwise) computationally useless task. The second is that the security provided by mining isn’t great. The third is the most nebulous, but in a way the most troubling: a rich-get-richer rule is built into the structure of the network, since the only way to mine Bitcoin or Ether is if you have the resources to pay for the electricity / hardware to do the mining. It is unsurprising, then, that Bitcoin’s wealth distribution is far more heavy-tailed than those of ordinary (fiat) currencies.
If there were a way to decouple the minting of coins from a resource cost, then a cryptocurrency would be the perfect way to implement a UBI. In fact, there are two (that I know of):
1. Each node mints its own currency, and nodes use a web of trust to decide whether to accept each other’s denominations. This is the Circles model, and this may very well be the most practical solution. The main difficulty is that managing trust on the network has to be done actively by the network’s participants. (This is similar to Ryan Fugger’s original vision for Ripple. However, as I recall, Ripple’s users were not willing/able to manage their own “trust lines”; the concept was too complicated/unintuitive. This doesn’t mean that a good P2P web of trust implementation is impossible, of course, just that Ripple didn’t have one!) The Circles model does not replace mining: rather it exists on top of the Ethereum blockchain, which is in turn secured by mining. So, it solves the third problem (rich-get-richer) but not the other two.
2. The older — and possibly more boring — solution: require that each node represents only a single (real-world) person using the network. If the identities of network participants are known, then the network cannot be Sibyl attacked. This class of solution solves all three problems: no electricity is wasted, you can get stronger security guarantees (in particular, partition tolerance), and a not-guaranteed-to-be-awful wealth distribution. The obvious implementations are centralized, introducing a trusted third party that verifies the identities of the network’s participants. (KYC/AML, basically.) However, I think this is possible to do in a decentralized way, by biometrically identifying network participants.
The most blunt implementation: use your genome sequence — or some subset of it — as your ID. This sidesteps the need for any kind of mining, and any real person would be able to claim block rewards at a constant rate. It also avoids the complicated structure of having multiple types of token and/or the need for an actively-managed web of trust. You’d just have a single kind of token — and if the tokens created in this way had any kind of value, you’d have a secure, decentralized UBI!
How can you verify genome sequences without a centralized/trusted validator? One way to do this is to require that everyone on the network has a list of the hashes of the genome sequence of everyone else, so you could prove who you are without revealing your sequence. (Or, to go full-biological, everyone could have a list of everyone else’s protein sequence — multiple codons can code for the same protein, so you can’t derive a DNA sequence from a protein sequence.) You would have to do a couple things to make sure the sequence is a bona fide genome, and not just a made-up sequence. First, you could do some level of verification statistically using sequence alignment versus known-real sequences, which should filter out completely made-up (or non-human) sequences. The harder part is sequences that are derived from a real sequence, but with a few base pairs changed. One solution is to simply require the input to be physical: for instance, a drop of blood or a few skin cells. The verification could be done by translating (randomly chosen) proteins from the DNA and checking that the translated protein sequence matched both proteins in the sample as well as the stored protein sequence.
Gene sequencing costs need to come down at least an of magnitude before this is plausible, but sequencing is quickly becoming cheaper, so this might not be as far off as you think…