If it could be enforced that the payout from the multisig was either (1.1,0.1) to Alice and Bob, or (0,0) (they don't agree) then the system would seem relatively sound (i.e. it works with rational and error-free behaviour assumed). But encumbering a utxo to only spend to pre-defined outputs is not possible in Bitcoin.
Accentuation in the quote done by me.
Thanks waxwing for bringing that up again!It is not possilbe to do this in btc directly, but with an
oracle!
That would solve all the blackmail problems.
Make the deposit to an 3 of 3 multisig address. The 3. signer is an oracle proving that the spending tx is like it was defined initially. That can be verified with the hash of the outputs (need to investeigated in details how to do it but that shoud be not a problem).
When the 2 traders want to spend the deposit they need the signature of the oracle and that is another peer (or replicated server) verifying that the output match with the initial ones. If the output has changed the oracle does not sign. That is a fully automated process without any human involvement. The Oracle receive the tx, verify the outputs and publish it if it is valid.
That way any changed output due a blackmail is impossible to get published. Any other blackmail attempt suffer from the weak position of the blackmailer that the other party will not trust him. Something like pay me 0,5 btc and then i will sign the payout tx like it was defined, suffer from the fact that the oterh peer has no guarantee that the blackmailer will not ask for money afterwards, he has no guarantee that he hold his promise, in fact he has many reasons to not trust him.
The oracle should be doable in a pure P2P way, probably your (waxwing) work for the escrow pool can be used for that. Otherwise if a P2P solution will become too complex servers which replicate the data could be used as well. But a pure P2P version would be better of course.
One point to consider is that those peers acting as oracle should not earn money with that, because I assume that would implicate legal issues (they could be considered as a commercial service). Not sure about those legal questions but I think a solution where the oracles work in the background is better (like BTC client doing verification without direct incentive).
To implement the oracle will have its own challenges.
How make sure that there is at least one peer in the network available for that tx for signing?
How to prevent that Alice or Bob are not manage to become an oracle on their own, or control an oracle peer?
How to distribute the private key to a pool of oracles?
All those problems will be difficult, but I assume they are solvable. At least less problematic then the other alternative approaches.
What do you think?
Maybe some other idea from a fresh outsider could be the missing puzzle part?Earlier I was trying to find a way to break up the communication channel between the peers.
How?
With a trading pool where the peer you payed in is not the same as the one to whom you pay out (randomized, so a blackmail does not hit the right target, you dont know the peer signing your paypout tx).
But that has its own problems with complexity, asymetric and for one side high collateral and that you need to create a pool with other traders doing the same trade volume (5 traders buying 1 BTC for 400 EUR).
Just wanted to post that as inspiration, that maybe a completely new strategy could lead to a solution.