Problem: Instant payments with Bitcoin
Using Bitcoin in a real-world shop, or at a ticket gate is impossible because you have to wait for confirmations for the transaction to be complete. (A few minutes)
Current solution: Green addresses
A few services have green addresses, but let's look at MtGox.
When you make a payment from MtGox, you can select a "green address". This means that your bitcoins are sent first to a special MtGox address that other services know they can trust to not double-spend. They trust MtGox, so they trust that specified address. This means that as soon as other services see an unconfirmed transaction from this special address, they can be sure that they will get their money.
Problems with green addresses:- The green address needs to trust you not to double spend. Usually this means you need to use the service that owns the green address you want to use. You can't send from your own client.
- (And often) The owner of the green address is known. An attack could shut down the owner, and break instant payments.
Proposed solution: A "pre-chargable" autonomous anonymous agent which forwards transactions.
You have a software agent, sitting on some server on the Tor network, with its own wallet.
Explanation:Vendor address: A
Robot (agent) address: B
Customer address: C
1) You pre-fund the agent by sending it bitcoins from the address C
2) Wait for the transaction to be complete, the agent is now funded. (This becomes your transaction forwarding limit)
3) When you wish to pay a vendor, send a single transaction:
C --> 1 satoshi --> A
C --> [Item cost] --> B
4) The bot, already funded at least up to the item cost, will see the transaction, and send on the correct amount to the specified address. Instant payment.
If the user attempts to double-spend, so the bot doesn't receive the money it needs from the payment, it doesn't lose any money as it can draw from the prefunded amount. The bot would need to reject payments if the pending transaction values were over the pre-charged amount.
To stop using the agent, and withdraw your funds, you would send a specified amount which was marked as meaning withdraw:
C --> 2 satoshi --> A
Advantages:- Agents can be completely anonymous, and hidden behind Tor.
- Agents don't need to be owned by the same service that sends the payments. (MtGox -> MtGox green address)
- Agents can be watched to see that they follow the rules.
- Agents can take commission on transfers, and make a large profit by becoming trusted.
- Instant payments.
- Anyone can set up an agent.
Disadvantages:- The long con. Agents could perform for years, becoming more trusted, then just run away with the stored money.
Mitigation: Agents would make a small commission (drawn from the prefund) on each transaction. It would be financially worthwhile to become a trusted node and not run off with the money. - Agents could be dishonest on a low percentage of transactions, and not forward the money on when asked to.
Mitigation: You can track the agent through the blockchain, and blacklist them if they don't follow the rules. (I'm making a site to do this) - Someone needs to initially trust the agent. But once it starts forwarding payments, you can keep an eye on it though the blockchain.
Feedback: Good idea? Bad idea? Feedback/criticism very welcome. Thanks.