Hello,
I'm pretty new to the bitcointalk forum, but I'm active over on the bitcoin stack exchange (
http://bitcoin.stackexchange.com/users/18196/stephenm347). I'm sorry if this is not the best place for this discussion, please move my question if there is a more appropriate section of the forum.
My question is about creating a standard protocol to tweak the fee structure in bitcoin. Currently, the fees are paid by the sender, and the receiver pays no fees to accept their transaction. I love bitcoin, but I also love not having to pay fees when I use my credit card. Yes, the merchant probably just charges more to make up for the fees, but I still find it frustrating when my balance sheet doesn't add up cleanly and is littered with fees. I would bet that many consumers also feel like this. It's also what consumers are used to, and might help adoption if bitcoin worked this way for many online transactions.
Are there any proposals in place to define a standard protocol for creating transactions where the fee is paid by the receiving party? I was thinking something like this:
1. Carl (the customer) wants to pay Mary (the Merchant).
2. Mary gives Carl a transaction with 1 input and 1 output to pay the miners' fee, to be signed at a later time. Mary also gives Carl another address to send the funds to.
3. Carl appends to Mary's transaction, spending previous outputs and creating 1-2 more outputs. 1 that sends to the address Mary gave her in step 2, and a second for the change (if any). These inputs and outputs would be inserted at random indices for privacy.
4. Carl signs all of his inputs.
5. Carl sends the updated transaction back to Mary, who then signs her input to complete the transaction, and broadcasts it.
This is basically a simple CoinJoin between the sender and the receiver. In fact, maybe a better way of doing this whole thing would be to implement a CoinJoin protocol (such as Luke-Jr's:
https://gist.github.com/luke-jr/5409899), and transferring the fee from the sender to the receiver would just be 1 use case.
It seems like something that could have been packaged with BIP70 (
https://github.com/bitcoin/bips/blob/master/bip-0070.mediawiki), but would probably require a new BIP now.
One problem is that Mary doesn't know how much of a fee to pay ahead of time but has to set the output amount before sending the initial transaction. I haven't found a way around that yet. Let me know if you have any suggestions on this, or on other aspects of this proposal.