It appears this idea already exists under another name
. Thanks to etotheipi for pointing it out.
I'm proposing an idea to help strengthen three of Bitcoin's weak spots:
- Off-network transactions are impossible.
- Transaction delay is on the order of 10 minutes - much too high for real-time payment verification.
- The network cannot handle a high volume of nanotransactions (such as having millions of internet users each spending 3/40th of a cent each time they visit their favorite websites - see example, below).
These problems can all be at least partially solved with the same extension to Bitcoin. Basically, the solution would allow two parties, a customer and a merchant, each represented by a Bitcoin address, to sign an agreement (call it a
"preauth") that says N Bitcoins will be held at a newly-generated Bitcoin address (the "preauth address") for some length of time. The network will not allow the customer to spend the Bitcoins associated with the preauth address until the preauth expires. However, the customer can send off-network
(directly to the merchant), signed IOUs valued at less than the preauth amount and associated with the merchant address agreed upon in the preauth. The merchant can then redeem those IOUs on the network at any time prior to the preauth expiration. After the preauth expires, the customer is free to repurpose any remaining preauth balance, and any unredeemed IOUs are worthless. Accounting is thus the responsibility of the merchant and the customer, and they must keep track and ensure the sum of the IOUs is less than the reserved balance, since the network cannot and will not pay more than was reserved in the original preauth. Lastly, since some use-cases may involve thousands of small-valued IOUs billed against each preauth, the merchant can request that the customer bundle previous IOUs by asking that they send a special "bundled" IOU (BIOU) for the sum of previous IOUs. This BIOU, if redeemed, effectively voids the previous IOUs, since the network will not allow an amount greater than the BIOU to be redeemed from any IOUs or BIOUs timestamped before it. The purpose of BIOUs is to avoid overwhelming the Bitcoin network with IOU redemptions.
I haven't rigorously analyzed the technical or cryptographic requirements of this idea, but I feel like it's pretty straightforward, anyway. The preauths and IOUs are signed with the same private keys used to sign any other transaction. Redeeming the same IOU multiple times is prevented by including timestamps. Because of these things, the whole preauth/IOU scheme doesn't require trust or third parties. The customer doesn't need to prepay for service (which would require trusting the merchant), and the merchant doesn't have to wait 'til the end of a billing cycle to collect payment (which would require trusting the customer to pay their bill).Example:
I believe this solution, if truly feasible, opens up a new, niche market for Bitcoin. Imagine ad companies which allow you to make automatic nanopayments (say, 3/40th of a cent per visit or pageview) with certain, quality websites you've whitelisted, instead of viewing ads. On sites you've never visited before, a Bitcoin browser plugin might show a notification telling you that the site uses XYZ ad company (with whom you've already signed a preauth for the next month), and asking whether you want to whitelist the site for per-visit Bitcoin payments through XYZ. Alternatively, if the site was big enough, and popular enough, you might sign a new preauth directly with it.
In this way, Bitcoin gets into the hands of the internet's content producers (who better to promote Bitcoin?), and becomes desireable to anyone willing to pay fractions of a penny never to see ads again, while still remaining anonymous.
Thoughts? Have better solutions already been proposed? Would the above example be worth it? Are there other niche markets that might open up because of this?