BIP70 message delivery reliability



Summary:

In an email exchange between Chuck, Pieter Wuille, and Mike Hearn, they discussed the way transactions are committed to wallets in bitcoinj. Mike explained that the tx is only committed if the server accepts the Payment message and acknowledges it, so if there's a failure submitting or some kind of internal server error, the UI would show that the payment failed. Pieter agreed that this was one right way to do it, but it wasn't what was suggested or required by the specification or what bitcoin core master currently implements. Chuck added that if the merchant received the Payment message and then went silent, the user should retry delivery, but could quite likely pay and never get an ACK. He suggested invalidating all transactions in the Payment message by broadcasting a send-to-self transaction as soon as possible to avoid an indeterminate wallet balance. Otherwise, the user might see an apparently failed attempt to pay, leaving their wallet balance unchanged, followed by a spontaneous decrement many hours later.


Updated on: 2023-06-08T02:10:23.823234+00:00