Why don't the two peers (Buyer & Merchant) communicate what TXIDs they're going to use to spend, then, one party (Either one) can create a transaction using the two TXIDs and destinating in the 2-2 address, sign it, then send it to the other party. This way the other party can only cash in the other person's money if they also agree to cash in their money as well, otherwise, the transaction is invalid as it's missing signatures.
Seems like such a simple feature of Bitcoin you completely skipped over making this wholle project infinitely worse, as, I think we can all agree, we want a trustless system, currently, this system is highly trustful.
Case in point:- I just lost ~ $0.07 because the seller disappeared (Or went offline) after I had sent the 5% to the initial address, if you used my above system, I'd have either of never sent it, or, the seller would have also have just lost 5%.
EDIT:- And can you explain something else for me? Imagine this:-
1. Seller puts up sale for product
2. Buyer purchases, sends 5% to address, so does the seller, then buyer deposits 100%.
3. Seller refuses to give buyer anything
What happens now? Is there anything the buyer can do? The only way I can see the buyer of getting *any* of his money back is to authorize the transaction to receive 5% of his money back, otherwise, he's out 105%, rather than 100%. This could easily be used to extort people, especially if dealing with large amounts (Say I was buying something for $1,000, I'd rather have lost $1,000 than $1,050).
Your system almost same but rly more trustless if it can be released. I will try soon.
Please be realistic. In any situation, someone can lose money. The system makes it so that all were interested in a fair deal. But it can not protect you from incident. For example we have laws, but someone might take up arms and kill you, and would be sent to jail, but you're going to die, so laws dont help.
Unless I'm missing something huge, you can relatively easily (Keyword:- Relative, I'm not saying it is easy) make a method where nobody, or, both parties lose money. In your system the buyer is always at risk of losing money. When both parties lose money it's a lot more incentivising than when just one does. Obviously the perfect environment would be where only the person who backed out loses money, but, that seems impossible with our current setup.
EDIT:- This system should also probably add each other's Bitmessage address to the address book after the first communication, this means that *no* work is required for messages to be sent between each other, which, is probably a good thing when making trades. The work is useful on the first message, but, after that, it's just degrading usefulness.