<oembed><type>rich</type><version>1.0</version><author_name>npub1r375vdaydp5nnnytff6ee2kwzxak8whmwkmnkm6h67agr7dadfkqxn6ccq</author_name><author_url>https://nostr.ae/npub1r375vdaydp5nnnytff6ee2kwzxak8whmwkmnkm6h67agr7dadfkqxn6ccq</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2015-02-24&#xA;📝 Original message:Andy Schroder&#xA;&#xA;On 02/23/2015 10:09 AM, Jan Vornberger wrote:&#xA;&gt; Hey!&#xA;&gt;&#xA;&gt; On Sun, Feb 22, 2015 at 05:37:16PM -0500, Andy Schroder wrote:&#xA;&gt;&gt; It&#39;s maybe not a bad idea for the wallet to try all payment_url&#xA;&gt;&gt; mechanisms in parallel. Should we add this as a recommendation to&#xA;&gt;&gt; wallets in TBIP75?&#xA;&gt; It doesn&#39;t need to be a recommendation I think, but maybe it would be&#xA;&gt; good to mention that a wallet may do that, if it wants.&#xA;&gt;&#xA;&gt;&gt; I actually also happen to be using nfcpy. I am having some&#xA;&gt;&gt; reliability issues as well with it. What exactly are your problems?&#xA;&gt; Aw, interesting. Sometimes transfers seem to start and then not complete&#xA;&gt; in some way and occasionally the NFC dongle is then totally &#39;stuck&#39; in some&#xA;&gt; way afterwards, that even after restarting the Python script or&#xA;&gt; reloading the driver nothing works anymore. I have to actually unplug&#xA;&gt; the dongle and plug it in again. Obviously not exactly production ready.&#xA;&gt; I had the same problems with the command line tools based on libnfc, so&#xA;&gt; it might be a problem lower down the stack. I&#39;m not sure I have the&#xA;&gt; expertise to troubleshoot that.&#xA;&#xA;&#xA;&#xA;I&#39;ve had similar issues where the NFC device has to be disconnected and &#xA;reconnected. I&#39;ve got lots of error checking in my code on the NFC &#xA;device, which helps, but still has problems sometimes. I&#39;ve found if I &#xA;limit how quickly a new connection can be made, that reduces the &#xA;problem. Have you tried this?&#xA;&#xA;&#xA;&#xA;What command line tool are you using with libnfc?&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&gt;&#xA;&gt;&gt; I have seen your video before. I guess I&#39;m wondering how your&#xA;&gt;&gt; prototype works with bitpay and bluetooth. Doesn&#39;t bitpay sign the&#xA;&gt;&gt; payment request for you with an https based payment_url? If so, how&#xA;&gt;&gt; do you add the bluetooth payment_url while keeping their signature&#xA;&gt;&gt; valid?&#xA;&gt; Good point, I&#39;m currently simply removing the signature, so that I can&#xA;&gt; modify the payment request. I haven&#39;t spoken with BitPay yet, but I hope&#xA;&gt; that they will extend their API at some point to set additional&#xA;&gt; payment_urls or provide a Bluetooth MAC and then I can do it properly&#xA;&gt; with signed requests.&#xA;&#xA;&#xA;&#xA;This sounds weird to me. Why are you even using bitpay at all if you are &#xA;already going through the effort to remove a signature and change the &#xA;memo field? Wouldn&#39;t it be better to just manage everything yourself?&#xA;&#xA;&#xA;&#xA;&#xA;&gt;&#xA;&gt;&gt; In your video it looks like the phone still has cellular and&#xA;&gt;&gt; wifi reception (it is not offline).&#xA;&gt; You are right, I forgot to actually disable wifi and cellular data when&#xA;&gt; recording the video. But as you know it would work the same way offline.&#xA;&gt;&#xA;&gt;&gt; Regarding the NFC data formats. I would like to clarify that the&#xA;&gt;&gt; wallets are having those events dispatched by the android OS. The&#xA;&gt;&gt; &#34;URI&#34; and &#34;mime type&#34; events are sent to the application in the same&#xA;&gt;&gt; way as from other sources such as a web browser, e-mail, stand alone&#xA;&gt;&gt; QR code scanner app, etc.. So, I don&#39;t think the wallet actually&#xA;&gt;&gt; knows it is receiving the event from NFC. That is one reason why so&#xA;&gt;&gt; many existing wallets happen to support BIP21 payment request via&#xA;&gt;&gt; NFC. Andreas can correct me if I am wrong on these statements. I&#39;m a&#xA;&gt;&gt; little weary sending the &#34;mime type&#34; based format over NFC because&#xA;&gt;&gt; of backwards compatibility and because of the long certificate chain&#xA;&gt;&gt; that needs to be transferred. You want that tap to be as robust and&#xA;&gt;&gt; fast as possible. A bluetooth connection can have a retry without&#xA;&gt;&gt; any user interaction.&#xA;&gt; There is a specific NFC intent that you have to list in your Android&#xA;&gt; manifest, but you are right that if you already support BIP21 URIs then&#xA;&gt; it is often fairly easy and quick to also support them via NFC.&#xA;&gt;&#xA;&gt; Whereas the mime type approach means that you necessarily need to be&#xA;&gt; able to actually understand BIP70, which a lot of wallet don&#39;t yet. But&#xA;&gt; personally that wouldn&#39;t hold me back using the mime type if I feel it&#39;s&#xA;&gt; the better experience. Those wallets simply have to fall back on&#xA;&gt; scanning the QR code in the meantime and then get up to speed on their&#xA;&gt; NFC and BIP70 support.&#xA;&gt;&#xA;&gt; I&#39;m still concerned that the fact, that Bluetooth is often disabled, is a&#xA;&gt; problem for the UX. And it&#39;s not just a one-time thing as with NFC,&#xA;&gt; which is - in my experience - also often disabled, but then people turn&#xA;&gt; it on and leave it on. But with Bluetooth the Android system is geared&#xA;&gt; much more towards turning it off after use and people have this general&#xA;&gt; idea of &#39;it uses energy, so I should disable it&#39; and sometimes also&#xA;&gt; &#39;Bluetooth is insecure and if I leave it on I will get hacked&#39;. So&#xA;&gt; chances are, Bluetooth will be off most of the time, which means&#xA;&gt; everytime you pay the dialog &#39;Turn on Bluetooth?&#39; will pop up, which&#xA;&gt; isn&#39;t exactly streamlined.&#xA;&#xA;&#xA;I&#39;m personally not to annoyed by the enable bluetooth popup. I do know &#xA;what you mean about the &#34;bluetooth is insecure, I should disable it&#34; &#xA;attitude. I used to have this same concern.&#xA;&#xA;&#xA;&gt;&#xA;&gt; So the advantage of transmitting the whole BIP70 payment request via NFC&#xA;&gt; I see is, that you don&#39;t need Bluetooth to get the payment request and&#xA;&gt; for sending the transaction back the wallet can then make an intelligent&#xA;&gt; decision and first try via HTTP and only after that fails, say something&#xA;&gt; like: &#34;You are currently offline, turn on and transmit via Bluetooth&#xA;&gt; instead?&#34;. Much less confusing to the user, in my opinion.&#xA;&#xA;&#xA;Well, with the multiple r parameters, they should also be able to do &#xA;this on the payment request too.&#xA;&#xA;&#xA;&gt;&#xA;&gt; Another idea could be to request the permission BLUETOOTH_ADMIN which,&#xA;&gt; as far as I know, allows you to programmatically turn on Bluetooth&#xA;&gt; without user interaction. The wallet could then have a setting somewhere&#xA;&gt; that says &#39;automatically turn on Bluetooth during payments&#39; which would&#xA;&gt; enable and then disable (if it was off before) Bluetooth during the&#xA;&gt; payment process. That should also be a decent compromise, at the cost of&#xA;&gt; another permission.&#xA;&#xA;&#xA;I&#39;m personally very weary of more permissions. Have you checked out how &#xA;many unnecessary permissions a lot of bitcoin wallets have? Many of them &#xA;are ridiculous. Although this one may be somewhat warranted, I wouldn&#39;t &#xA;encourage it if they can just fall back to cellular if they don&#39;t want &#xA;to use bluetooth. If they don&#39;t have cellular reception, they can go &#xA;through the effort of pressing the enable button that pops up.&#xA;&#xA;&#xA;&#xA;&#xA;&gt;&#xA;&gt;&gt; There is also the &#34;ack&#34; memo that I mentioned in reference [2]. I&#xA;&gt;&gt; think we can improve upon this really. Can we make a new status&#xA;&gt;&gt; field or different bluetooth message header? I know Andreas didn&#39;t&#xA;&gt;&gt; want to change it because that is how his app already works, but I&#xA;&gt;&gt; don&#39;t think the way it is is ideal.&#xA;&gt; I&#39;m fine with doing changes here - I don&#39;t think there is all that much&#xA;&gt; stuff out there yet which would break from it. At the moment I&#39;m also&#xA;&gt; modifying BitPay&#39;s memo field to contain &#39;ack&#39;, as Andreas&#39; wallet&#xA;&gt; otherwise reports a failure if I transmit the original via Bluetooth. :-)&#xA;&gt; But I was assuming that was temporary anyway (?).&#xA;&gt;&#xA;&gt; Jan&#xA;&gt;&#xA;&gt;&#xA;&gt;&#xA;&#xA;&#xA;-------------- next part --------------&#xA;A non-text attachment was scrubbed...&#xA;Name: signature.asc&#xA;Type: application/pgp-signature&#xA;Size: 555 bytes&#xA;Desc: OpenPGP digital signature&#xA;URL: &lt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20150224/10953415/attachment.sig&gt;</html></oembed>