Alice - has a message, M containing a secret, SA that Bob wants, where H(SA) is a hash which may be used by Bob to redeem some Bitcoin time-locked transaction sent previously by Alice.
Bob - has a message, M containing a secret, SB that Alice wants. Similar to Alice's situation, where H(SB) is a hash which may be used by Alice to redeem some Bitcoin time-locked transaction sent previously by Bob.
Alice and Bob wants to exchange their messages simultaneously and both messages have a mutual dependent relationship where the invalidity of one secret should invalidate the other secret.
A ------- MA --------> B
B ------- MB --------> A
Valid(SA) i.f.f Valid(SB) when M are checked simultaneously by Alice and Bob. (i.e. if SA was found to be invalid, then SB should be invalidated and vice-versa)
I am wondering if there was a cryptographically secure protocol which enables this exchange without the need of a trusted third party acting as an escrow? If there isn't such a scheme, what other properties could be added to enable a simultaneous 2 way exchange without the need of a trusted 3rd party? (i.e. time-constraints?)