{"type":"rich","version":"1.0","author_name":"npub1trckpcxmceskq4cykxgwxm63n8ugrjrpu5mk83c90e4upsf7d9gqf0f95j","author_url":"https://nostr.ae/npub1trckpcxmceskq4cykxgwxm63n8ugrjrpu5mk83c90e4upsf7d9gqf0f95j","provider_name":"njump","provider_url":"https://nostr.ae","html":"📅 Original date posted:2012-11-28\n📝 Original message:\u003e If a Receipt is not received for any reason (timeout, error) and\n\u003e Payment.transactions has not been broadcast by the merchant on the\n\u003e Bitcoin p2p network, then the Bitcoin client should assume that the\n\u003e payment failed, inform the customer that the payment failed, and\n\u003e return coins involved in the transaction to the customer's wallet.\n\nI'm not sure I understand the rationale for this.  In the above\nscenario the buyer has no way to determine whether the merchant still\nhas a copy of the transaction that they could broadcast in future.\nMaybe there is simply a systems problem at the merchant which has\ntemporarily delayed the transaction broadcast. Or maybe a dishonest\nmerchant deliberately engineered this situation in an attempt to\nmislead the buyer as to the status of their payment.\n\nEither way, having the buyer think the coins have been returned to\ntheir wallet - only to disappear from their wallet again at some later\ntime - would seriously damage user confidence in Bitcoin IMHO.\n\nIt seems to me that the first thing the buyer should do given the\nprotocol as it stands is simply resend the Payment message - if there\nwas a temporary problem then resending the payment message (with the\nsame signed transation) might resolve the sitution.\n\nIf after several retries the status of the transaction is still\nundefined then it's really not clear what to do, but it seems\ndesireable to have the client take steps so that it can return to a\nstate of certainly about its wallet balance as quickly as possible.\nTwo things I can imagine that the buyer might want their client to do\nat this point are:\n\n * broadcast the transaction itself, so they are sure the payment\n   transaction will make it into the blockchain without any further\n   action on their part, or\n\n * invalidate the transaction by immediately broadcasting a\n   pay-to-self transaction that spends one or more of the same outputs\n   that the payment transaction spends (and treat the funds as part of\n   the unconfirmed balance until this pay-to-self transaction\n   confirms).  This ensures the merchant can't subsequently use a\n   transaction which the buyer thinks has failed\n\nIt seems to me it would be simpler and cleaner if the buyer just\nalways broadcasted the transaction on the p2p network, regardless of\nwhether the Invoice includes a receiptURI.  If a receiptURI is\nincluded, the buyer's client would also include the transaction in the\nPurchase message.  The merchant then tries to broadcast the\ntransaction as well (unless their bitcoind has already seen it, which\nmay well be the common case).  This approach seems to me to have fewer\nnasty edge cases.s\n\nroy"}
