Visibility of mutually exclusive transactions

Cryptocurrency News and Public Mining Pools

Visibility of mutually exclusive transactions

I have a system with two parties, P1 and P2. At some point, P2 gains the ability to use transaction T2 and, later, P1 gains the ability to use transaction T1. In my system, when P2 can use T2, they are supposed to and T1 only exists as an escape if P2 vanishes.

But it is possible for P1 to release T1 then P2 to almost simultaneously release T2. These transactions are from the same account (from the same private key) and are mutually exclusive.

At this point, the system is fine as long as P1 can reliably see T2 in the in the mempool or some other location on the network. If P1 can see T2, they can extract a secret from it and use it to their advantage elsewhere in my system, which (to P1) acts as compensation for not being able to execute T1.

But this all hinges on P1 being able to see T2 whether or not T2 ever actually appears on the blockchain. If P2 knows they only have a chance to get T2, but they always get the punishment associated with the release of their secret, it no longer makes sense for a malicious P2 to release T2 simultaneously with P1 releasing T1.

When I designed my system, I assumed that node mempools on pretty much all blockchains contained a list of received transactions that are valid given the current state of the blockchain, and I assumed my P1 could query some nodes to see of T2 was maliciously released and get the secret. But I recently learned that there are blockchains where this is not the case, and nodes discard any incoming transactions that contradict with a transaction in their mempool, making it probable that P1 would not detect T2.

Can an Ethereum user reliably find two simultaneously released transactions that are contradictory? Or, alternatively, do nodes propagate valid transactions that contradict with a transaction in their mempool?

submitted by /u/Zarquan314
[link] [comments]