Grid Economics
From CommerceNet Wiki
by Kragen Sitaker; see also Publications
Contents |
[edit] abstraction of storage
There was a recent HotOS paper whose name I forget that stored things on remote servers in a manner reminiscent of the Eternity Service. To store a file, you erasure-coded it into a bunch of pieces, encrypted the pieces, stored them on servers out in the cloud somewhere determined by some sort of hashing function, and remembered the keys and the thing you hashed, along with the hashes of the pieces. Each server would retain the data for some period of time in a FIFO, and discard it if it fell off the end of the FIFO. You would pay the servers for the service of storing the data and for the service of retrieving it (using micropayments, of course). Nobody else could erase the data cheaply because they wouldn't know which servers you'd stored it on, so they'd have to flood the whole network. And nobody else could retrieve the data because they wouldn't know the encryption keys.
In BitTorrent, you pay your peers for the service of sending you data by sending them data in return. In fact, you send them data even if they send data to other people. To bootstrap the system, you start by "lending" --- sending data to new people for free.
In some sense, you're paying them for the service of making data available to you --- storing it, in a manner similar to the HotOS paper.
If you publish the metadata that lists the storage locations and the encryption keys, which can be very small, you have effectively published that data. Thus the ability to publish a very small quantity of data, perhaps at your own expense, allows you to inexpensively publish a much larger quantity of data.
[edit] decentralized currencies
This idea starts with The Digital Silk Road paper in 1995.
In some sense each of the peers in a BitTorrent group is minting its own currency and exchanging it for the currencies of others. The peers offer a relatively restricted set of services --- only serving up pieces of a particular file --- but the economy works well as far as it goes.
Suppose you were to auction off the use of your disk for storage for particular periods of time, and the use of your bandwidth to store and retrieve things in that storage. You could even auction off the service of sending out pieces of data you already have, and you could adjust the price to keep your bandwidth and disk usage under control.
If the market price for a particular piece of information were high enough, you might even retrieve the data from somewhere else and offer it up one or more times in order to make a profit. (But of course you'd have to do this quickly, while the demand was still high.)
The certificates you issue for the use of your storage and bandwidth are a form of currency --- they are "call" options, or maybe futures contracts, on the future production of value by your machine.
In the BitTorrent world, there is no way to pay folks to keep stuff available in the future --- only a way to pay folks for sending you stuff if they already have it. There's also no effective way to pay somebody (a "seed") who has a whole copy of a file. These combine to create what appears to be a systemic problem of failed downloads and missing files.
An effective way to pay "seeds" for their resources might solve the problem; the longer you held onto a file, the more requests you could serve from it, and therefore the more you'd get paid. You'd tend to preferentially allocate disk space to things that a lot of people wanted, but also to things that few people would bother to hold on to. I have an intuition that this would make file death --- an everyday problem in BitTorrent --- vanishingly rare in an efficient market.
Unfortunately, each machine has its own currency --- I can use Alice's options to get Alice to let me use her bandwidth, but not to get Bob to let me use his bandwidth, or even necessarily to store stuff on Alice's disk.
[edit] forex
In today's world economy, you can almost only buy corn with American currency, textiles with the baht, and so on. Foreign exchange markets make it possible to exchange one currency for another, in order to allow the exchange of dollars for baht and thus textiles for corn, essentially by equalizing the values of flows of valuable goods in each direction. Indonesians buy dollars with their baht so they can buy corn; Americans buy baht with their dollars so they can buy textiles. Ultimately Americans buy baht with their corn so that they can buy an equivalently-valuable quantity of textiles.
Similarly, you can trade off certificates to services from various machines according to the comparable values of those services to you, and in particular you can sell the services of your own machine in exchange for certificates for services more valuable to you than those you have sold.
Ultimately you will buy certificates for services you don't want, but which other machines agree are valuable, in order to buy the services of those other machines directly from them.
Presumably a very small number of services that are widely believed to be valuable will become used as common currencies, such that most of their certificates are never redeemed --- a sort of fiat money.
In the absence of fiat money, there is a market for aggregation: I speculatively buy certificates for storage or bandwidth on a thousand machines, then resell proxy certificates. When you want to redeem a proxy certificate, you come to me, and I figure out which of my originally-bought certificates are still good, and use those to provide you the services my proxy certificates promise. Of course, ultimately I'm buying these backend services with promises of future services from me or somebody else --- so ultimately it's not really any different from fiat money.
[edit] bootstrapping
In the system as described so far, we have the choice between accepting spam and excluding newbies. If you get on the network and offer an unlimited number of different certificates for services you never plan to provide, you can obtain an unlimited quantity of service for free. Machines that have been on the network a while may have acquired good reputations, so you can value their certificates more highly; but if you value certificates of total unknowns any higher than zero, anyone can extract an unbounded amount of value from the economy simply by creating an unbounded number of identities.
It is imperative to prevent this problem in order to keep the network viable in the face of constant attempts at crime from the planet's worst six thousand inhabitants --- the proverbial one in a million who's both smart and evil.
But if new identities can't buy anything, then they can't provide the BitTorrent service of downloading some data, then providing copies of it to those who ask.
BitTorrent has a solution to this: "leeches" who haven't uploaded any data have strictly lower priority than peers who have. Thus they get served only with leftover, surplus resources produced by peers whose resources aren't completely sold to other value-producing peers. This solution allows beggars and other leeches to survive on the unwanted leavings of the productive nodes, and thence to offer copies to others (at first at very low rates), providing services and earning credit.
But there are even better incentives to take risks in order to feed leeches. Whoever takes a risk and accepts certificates from unknown peers will be able to obtain those certificates at very low prices --- in an efficient market, prices exactly in proportion to the risk they are taking.
[edit] flash crowds
BitTorrent handles flash crowds reasonably well, but not perfectly. In an economy where the service of sending out copies of one file is exchangeable with other services, such as obtaining copies of other files, or storing your data offsite, a newly-popular file is a profit opportunity; smart players will be willing to pay a high price for in-demand pieces in order to be able to redistribute them to more people later on at a lower price, even if they aren't themselves interested in the file contents.
[edit] abstraction of event notification
BitTorrent/FreeNet-style file distribution is helpful if you want to download a big file, and you already know about it; coupled with a retrieve-by-hash service, it even allows you to handle large static hypertext structures, Wax-style.
You need a metadata-by-hash service like Bitzi for this, in order to find location hints for places where you can download the actual data. Small chunks of data, such as metadata, served by hash, can be handled in the same way as large chunks; but since the cost of providing access to the small chunks of metadata is so much lower, we can expect that the metadata will be much more widely available than the data itself. Up-to-date location hints are worth more than out-of-date location hints, so you'll spend some amount of resources keeping your hints up-to-date. If you tag your hints with freshness and trustworthiness data, the better ones will fetch a higher price.
[edit] double-spending
tbd
