Received: from sog-mx-2.v43.ch3.sourceforge.com ([172.29.43.192] helo=mx.sourceforge.net) by sfs-ml-1.v29.ch3.sourceforge.com with esmtp (Exim 4.76) (envelope-from ) id 1Wdogw-0002NN-JM for bitcoin-development@lists.sourceforge.net; Fri, 25 Apr 2014 22:33:58 +0000 Received-SPF: pass (sog-mx-2.v43.ch3.sourceforge.com: domain of m.gmane.org designates 80.91.229.3 as permitted sender) client-ip=80.91.229.3; envelope-from=gcbd-bitcoin-development@m.gmane.org; helo=plane.gmane.org; Received: from plane.gmane.org ([80.91.229.3]) by sog-mx-2.v43.ch3.sourceforge.com with esmtps (TLSv1:AES256-SHA:256) (Exim 4.76) id 1Wdogu-0001k7-TY for bitcoin-development@lists.sourceforge.net; Fri, 25 Apr 2014 22:33:58 +0000 Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1Wdogn-0005RJ-9R for bitcoin-development@lists.sourceforge.net; Sat, 26 Apr 2014 00:33:49 +0200 Received: from e179077249.adsl.alicedsl.de ([85.179.77.249]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 26 Apr 2014 00:33:49 +0200 Received: from andreas by e179077249.adsl.alicedsl.de with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 26 Apr 2014 00:33:49 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: bitcoin-development@lists.sourceforge.net From: Andreas Schildbach Date: Sat, 26 Apr 2014 00:33:36 +0200 Message-ID: References: <535ABD5D.7070509@jrn.me.uk> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: e179077249.adsl.alicedsl.de User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.4.0 In-Reply-To: <535ABD5D.7070509@jrn.me.uk> X-Enigmail-Version: 1.5.2 X-Spam-Score: -1.1 (-) X-Spam-Report: Spam Filtering performed by mx.sourceforge.net. See http://spamassassin.org/tag/ for more details. -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/, no trust [80.91.229.3 listed in list.dnswl.org] -1.5 SPF_CHECK_PASS SPF reports sender host as permitted sender for sender-domain -0.0 SPF_HELO_PASS SPF: HELO matches SPF record 1.1 DKIM_ADSP_ALL No valid author signature, domain signs all mail -0.0 SPF_PASS SPF: sender matches SPF record -0.7 RP_MATCHES_RCVD Envelope sender domain matches handover relay domain X-Headers-End: 1Wdogu-0001k7-TY Subject: Re: [Bitcoin-development] Error handling in payment protocol (BIP-0070 and BIP-0072) X-BeenThere: bitcoin-development@lists.sourceforge.net X-Mailman-Version: 2.1.9 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 25 Apr 2014 22:33:58 -0000 These two BIPs are not accepted yet, so feel free to submit PRs for them. Note BIP70 is almost agnostic to transport layer. For example, I have implemented it for NFC, QR-codes, Bluetooth, e-mail and In-app payments in Bitcoin Wallet -- doesn't make much sense to put HTTP status codes into the spec. Max message sizes make sense. I also thought about adding a guarantee that the payment_url is valid for as long as the payment request is valid. On 04/25/2014 09:54 PM, J Ross Nicoll wrote: > Dear Gavin, all, > > Going over the payment protocol specifications, I've noticed that > there's appears to be a lack of specificity on handling of error states. > In most cases there are reasonably obvious solutions, however it would > seem positive to formalise processes to ensure consistency. I'm > wondering therefore if either you'd be willing to edit the existing BIP, > or advise on whether this is useful to write up as a new BIP? > > The main area of concern is handling unexpected problems while sending > the Payment message, or receiving the corresponding PaymentACK message. > For example, in case of a transport layer failure or non-200 HTTP status > code while sending the Payment message, what should the wallet software > do next? Is it safe to re-send the Payment message? I'd propose that for > any transport failure or 500 status code, the client retries after a > delay (suggested at 30-60 seconds). For 400 status codes, the request > should not be repeated, and as such the user should be alerted and a > copy of the Payment message saved to be resent later. > > For 300 (redirect and similar) status codes, is it considered safe to > follow redirects? I think we have to, but good to make it clear in the > specification. > > > On the merchant's side; I think it would be useful for there to be > guidance for handling of errors processing Payment messages. I'd suggest > that Payment messages should have a fixed maximum size to avoid merchant > systems theoretically having to accept files of any size; 10MB would > seem far larger than in any way practical, and therefore a good maximum > size? A defined maximum time to wait (to avoid DDoS via connection > holding) might be useful too, although I'd need to do measurements to > find what values are tolerable. > > I would like to have the protocol state that merchant systems should > handle repeatedly receiving the same Payment message, and return an > equivalent (if not identical) PaymentACK to each. This is important in > case of a network failure while the client is sending the Payment > message, as outlined above. > > Lastly, I'm wondering about potential timing issues with transactions; > if a merchant system wants to see confirmation of a transaction before > sending a PaymentACK, any thoughts on whether it should hold the > connection, or send a PaymentACK with a memo indicating payment has been > seen on the relay network but is not yet confirmed, or something else? > > Happy to write this up as a new BIP if that's more appropriate than > editing the original, and please do tell me if I've missed anything > obvious/prior discussion on this topic. > > > Ross > > ------------------------------------------------------------------------------ > Start Your Social Network Today - Download eXo Platform > Build your Enterprise Intranet with eXo Platform Software > Java Based Open Source Intranet - Social, Extensible, Cloud Ready > Get Started Now And Turn Your Intranet Into A Collaboration Platform > http://p.sf.net/sfu/ExoPlatform >