Trader A puts BTC up for sale. The BTC is signed with two keys, one stored in Trader A's account, the other stored in he P2Coin chain where Trader A has no access to it (unless the trade expires, or the trade is canceled)
What exactly does "other stored in P2Coin chain" mean? Who has access to it? Can it be read by any person or any program? Who has access to source code of such programs? Can they modify it to steal it?
Trader B, either manually, or with the use of a more convenient TraderBot, transfers USD into Trader A's account.
This step automatically notifies P2Coin (<----- This is the bottle-neck/security issue. Can someone come up with a slution?)
P2Coin releases the second private key to Trader B
Trader A releases the first private key to Trader B, giving them access to BTC.
Trader A fails to release the first private key to Trader B. Trader A received USD, but has lost BTC. Trader B lost USD and doesn't have BTC. Since Trader A already got paid, and lost his BTC, there is no reason for him to release the first private key, unless he wants to be a big jerk.
As you noted, what if Trader A figures out how to send a fake notification?
And what ensures Trader A will ever release his private key to Trader B? Just look around this board, the world is full of jerks.
Trader B fails to send USD.
Trader A does not notify P2Coin of cash receipt
Transaction is canceled. After some time the second private key is released back to Trader A
How long before non-receipt is the transaction cancelled? What about a network delay? Can I exploit this arbitrary condition to get the cash but not send the cash receipt to keep my bitcoins and the cash?
Ideally, we should eliminate the risk but we may be able to get away with fragmenting it to tiny pieces and distributing it.
No just have the two traders create a new wallet where each has one half of the key and put the BTC in there, not in the p2coin system!
The solution to Trader A being a big jerk? Trader B *also* creates a multi-key address (in such a way that each trader only knows one of the two keys) and puts a small "guarantee fee" in it. Then after Trader A has received the funds, he will not be a jerk and fail to give Trader B the second key to the large wallet, because he'd lose out on the extra few BTC in the small guarantee wallet.
Trader B could of course be a jerk and not send Trader A the other key to the guarantee wallet, but that would be a much smaller issue that could be handled through reputation, etc. since there would be no systematic benefit to doing so. Furthermore, Trader A would not even be afraid of this very much since is still making some money on the spread.
This seems to make a p2p exchange work, as well as eliminating the need for escrow (and if escrow was ever needed, the level of trust needed for the third party could be minimized through this same "dual locked boxes" method).
Please correct if this is in error, but it seems foolproof.
EDIT: Here's a chart illustrating the incentives of each trader:
https://bitcointalksearch.org/topic/proposal-a-dual-2-key-wallet-system-for-trustless-trade-118418