[tahoe-dev] Resurrecting Mojo Nation
Jack Byer
ftn768 at gmail.com
Tue Jun 12 01:04:22 UTC 2012
(This is a cross-post from: https://bitcointalk.org/index.php?topic=86384)
A market mechanism for buying and selling hard drive space would look
a lot like the commodity markets. If you express a contract in a
standard form they can be traded on an exchange to achieve price
discovery. The following is not a complete specification but just an
example of how such a system might work.
Contract trading could be done on #bitcoin-otc or a similar platform
(including the reputation function). Contracts will be priced in
bitcoins. Storage is expressed in blocks of 1 MiB and the base time
interval is one increment of the Bitcoin block chain.
Block servers (nodes that sell space) can list the contracts they are
willing to accept in human and machine-readable form as something like
this: "BLOCKSTORAGE,O,10,10000,144,0.001,0.0005,0.00025"
This means that the node is offering (O) to contract with any node
with a reputation of 10 or more. Up to 10000 blocks are available for
144 time units. The total cost of the contract is 0.001 BTC per block.
Of this total cost 0.0005 is due up front and 0.00025 is due at the
completion of the contract. The remainder is due in periodic intervals
(perhaps as often as every time increment).
When a node that is looking to sell storage can express the contract
it is looking for as a bid (B). It could either work as both the block
server and the client can scan the order book to look for a matching
contract or the exchange can handle the matching. There would need to
be a means to express what should happen to the data at the end of the
contract. It can either be deleted (the client no longer needs it) or
it can be transferred to another block server or it can be returned to
the client.
At the end of each contract the client and the block server both leave
feedback on each other which will either increase or decrease their
respective reputations. Block servers with high reputations will be
able to charge more up front because the clients can be more confident
they will actually be able to get their data back at the end of the
contract. Clients with high reputation won't need to pay as much up
front because the block servers can be more confident they will be
paid at the end of the contract. In general a higher reputation will
lead to better prices for both a client and a block server.
The client should have a method of verifying that the block server
actually retained the data instead of just tossing it into the
bitbucket. One possible way to do this is to periodically transmit a
block number and two offsets and ask for the hash of the data between
the two offsets. The client could pre-select this verification blocks
before transmitting the data and have enough hashes stored ahead of
time for the number of verification it expects to need.
This is just a rough draft and probably still has holes that need to
be filled in but how does it look as a basic outline?
More information about the tahoe-dev
mailing list