<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <updated></updated>
  <generator>https://nostr.ae</generator>

  <title>Nostr notes by </title>
  <author>
    <name></name>
  </author>
  <link rel="self" type="application/atom+xml" href="https://nostr.ae/npub147edljttlezv8m5dugzg4ka8cg3073j3t2hq4h8ncxaz9sm5swuq4tnsv4.rss" />
  <link href="https://nostr.ae/npub147edljttlezv8m5dugzg4ka8cg3073j3t2hq4h8ncxaz9sm5swuq4tnsv4" />
  <id>https://nostr.ae/npub147edljttlezv8m5dugzg4ka8cg3073j3t2hq4h8ncxaz9sm5swuq4tnsv4</id>
  <icon></icon>
  <logo></logo>




  <entry>
    <id>https://nostr.ae/nevent1qqsrzdy55z8vlucntw8q02z6rcjkn630degyykdypfwa34859d6hqdszyzhm9h7fd0lyfslw3h3qfzkm5lpz9l6x29d2uzku70qm5gkrwjpmsq2fej3</id>
    
      <title type="html">📅 Original date posted:2015-02-24 📝 Original message:On ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsrzdy55z8vlucntw8q02z6rcjkn630degyykdypfwa34859d6hqdszyzhm9h7fd0lyfslw3h3qfzkm5lpz9l6x29d2uzku70qm5gkrwjpmsq2fej3" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqst7xe94hug0869h6f0ljagegdv4l6ynrse60q9vu6zg4x0gqdndygvmpay9&#39;&gt;nevent1q…pay9&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-02-24&lt;br/&gt;📝 Original message:On Tue, Feb 24, 2015 at 01:14:43AM -0500, Andy Schroder wrote:&lt;br/&gt;&amp;gt; I&amp;#39;ve had similar issues where the NFC device has to be disconnected&lt;br/&gt;&amp;gt; and reconnected. I&amp;#39;ve got lots of error checking in my code on the&lt;br/&gt;&amp;gt; NFC device, which helps, but still has problems sometimes. I&amp;#39;ve&lt;br/&gt;&amp;gt; found if I limit how quickly a new connection can be made, that&lt;br/&gt;&amp;gt; reduces the problem. Have you tried this?&lt;br/&gt;&lt;br/&gt;I have a limit there, yes, but maybe I need to raise it. I&amp;#39;d rather&lt;br/&gt;would like it to simply not jam up instead though. :-)&lt;br/&gt;&lt;br/&gt;&amp;gt; What command line tool are you using with libnfc?&lt;br/&gt;&lt;br/&gt;I don&amp;#39;t remember exactly right now, but the Debian packages &amp;#39;libnfc-bin&amp;#39;&lt;br/&gt;and &amp;#39;libnfc-examples&amp;#39; have some binaries and I think I used one of them&lt;br/&gt;to present an NFC URI record and I ran into similar problems with&lt;br/&gt;instability.&lt;br/&gt;&lt;br/&gt;&amp;gt; This sounds weird to me. Why are you even using bitpay at all if you&lt;br/&gt;&amp;gt; are already going through the effort to remove a signature and&lt;br/&gt;&amp;gt; change the memo field?&lt;br/&gt;&lt;br/&gt;For their tie-in with the traditional banking system, i.e. cash-out in&lt;br/&gt;fiat. Here in Germany that might currently be the only feasible way of&lt;br/&gt;accepting bitcoins commercially, because of unresolved questions around&lt;br/&gt;VAT - but that&amp;#39;s another topic.&lt;br/&gt;&lt;br/&gt;Jan
    </content>
    <updated>2023-06-07T15:31:09Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqstgjgt2ghyzwvy83ffjsgx8tamawswrq9534ye7aaykl3ql8l54gszyzhm9h7fd0lyfslw3h3qfzkm5lpz9l6x29d2uzku70qm5gkrwjpmsau6dtq</id>
    
      <title type="html">📅 Original date posted:2015-02-23 📝 Original message:On ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqstgjgt2ghyzwvy83ffjsgx8tamawswrq9534ye7aaykl3ql8l54gszyzhm9h7fd0lyfslw3h3qfzkm5lpz9l6x29d2uzku70qm5gkrwjpmsau6dtq" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsr3xkxr9vmprvhmk0yywnuwf5q8j93pks9kt7hjtpkevxhgymccqsay9c4x&#39;&gt;nevent1q…9c4x&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-02-23&lt;br/&gt;📝 Original message:On Mon, Feb 23, 2015 at 05:59:34PM &#43;0100, Mike Hearn wrote:&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; At the moment I&amp;#39;m also modifying BitPay&amp;#39;s memo field to contain &amp;#39;ack&amp;#39;, as&lt;br/&gt;&amp;gt; &amp;gt; Andreas&amp;#39; wallet otherwise reports a failure if I transmit the original via&lt;br/&gt;&amp;gt; &amp;gt; Bluetooth. :-)&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Huh?&lt;br/&gt;&lt;br/&gt;For HTTP it checks whether &amp;#39;nack&amp;#39; is _not_ presented:&lt;br/&gt;&lt;br/&gt;  &lt;a href=&#34;https://github.com/schildbach/bitcoin-wallet/blob/master/wallet/src/de/schildbach/wallet/offline/DirectPaymentTask.java#L133&#34;&gt;https://github.com/schildbach/bitcoin-wallet/blob/master/wallet/src/de/schildbach/wallet/offline/DirectPaymentTask.java#L133&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;But via Bluetooth it checks for &amp;#39;ack&amp;#39; directly:&lt;br/&gt;&lt;br/&gt;  &lt;a href=&#34;https://github.com/schildbach/bitcoin-wallet/blob/master/wallet/src/de/schildbach/wallet/offline/DirectPaymentTask.java#L238&#34;&gt;https://github.com/schildbach/bitcoin-wallet/blob/master/wallet/src/de/schildbach/wallet/offline/DirectPaymentTask.java#L238&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;The latter should probably be at least changed to the reverse check as&lt;br/&gt;for HTTP, but in general some non-memo way of doing that would be nice&lt;br/&gt;of course.&lt;br/&gt;&lt;br/&gt;Jan
    </content>
    <updated>2023-06-07T15:31:08Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsy87l0yqkmgsaldu5vgp3rc8ddeky7zm4ydlzvqvlaghfnqzcjzdqzyzhm9h7fd0lyfslw3h3qfzkm5lpz9l6x29d2uzku70qm5gkrwjpms53xqw6</id>
    
      <title type="html">📅 Original date posted:2015-02-23 📝 Original message:Hey! ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsy87l0yqkmgsaldu5vgp3rc8ddeky7zm4ydlzvqvlaghfnqzcjzdqzyzhm9h7fd0lyfslw3h3qfzkm5lpz9l6x29d2uzku70qm5gkrwjpms53xqw6" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsyf767tsnfmrrckqutr54g3nn68aef0jyntr8ysrrnl0l82xqfcjqjugktz&#39;&gt;nevent1q…gktz&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-02-23&lt;br/&gt;📝 Original message:Hey!&lt;br/&gt;&lt;br/&gt;On Sun, Feb 22, 2015 at 05:37:16PM -0500, Andy Schroder wrote:&lt;br/&gt;&amp;gt; It&amp;#39;s maybe not a bad idea for the wallet to try all payment_url&lt;br/&gt;&amp;gt; mechanisms in parallel. Should we add this as a recommendation to&lt;br/&gt;&amp;gt; wallets in TBIP75?&lt;br/&gt;&lt;br/&gt;It doesn&amp;#39;t need to be a recommendation I think, but maybe it would be&lt;br/&gt;good to mention that a wallet may do that, if it wants.&lt;br/&gt;&lt;br/&gt;&amp;gt; I actually also happen to be using nfcpy. I am having some&lt;br/&gt;&amp;gt; reliability issues as well with it. What exactly are your problems?&lt;br/&gt;&lt;br/&gt;Aw, interesting. Sometimes transfers seem to start and then not complete&lt;br/&gt;in some way and occasionally the NFC dongle is then totally &amp;#39;stuck&amp;#39; in some&lt;br/&gt;way afterwards, that even after restarting the Python script or&lt;br/&gt;reloading the driver nothing works anymore. I have to actually unplug&lt;br/&gt;the dongle and plug it in again. Obviously not exactly production ready.&lt;br/&gt;I had the same problems with the command line tools based on libnfc, so&lt;br/&gt;it might be a problem lower down the stack. I&amp;#39;m not sure I have the&lt;br/&gt;expertise to troubleshoot that.&lt;br/&gt;&lt;br/&gt;&amp;gt; I have seen your video before. I guess I&amp;#39;m wondering how your&lt;br/&gt;&amp;gt; prototype works with bitpay and bluetooth. Doesn&amp;#39;t bitpay sign the&lt;br/&gt;&amp;gt; payment request for you with an https based payment_url? If so, how&lt;br/&gt;&amp;gt; do you add the bluetooth payment_url while keeping their signature&lt;br/&gt;&amp;gt; valid?&lt;br/&gt;&lt;br/&gt;Good point, I&amp;#39;m currently simply removing the signature, so that I can&lt;br/&gt;modify the payment request. I haven&amp;#39;t spoken with BitPay yet, but I hope&lt;br/&gt;that they will extend their API at some point to set additional&lt;br/&gt;payment_urls or provide a Bluetooth MAC and then I can do it properly&lt;br/&gt;with signed requests.&lt;br/&gt;&lt;br/&gt;&amp;gt; In your video it looks like the phone still has cellular and&lt;br/&gt;&amp;gt; wifi reception (it is not offline).&lt;br/&gt;&lt;br/&gt;You are right, I forgot to actually disable wifi and cellular data when&lt;br/&gt;recording the video. But as you know it would work the same way offline.&lt;br/&gt;&lt;br/&gt;&amp;gt; Regarding the NFC data formats. I would like to clarify that the&lt;br/&gt;&amp;gt; wallets are having those events dispatched by the android OS. The&lt;br/&gt;&amp;gt; &amp;#34;URI&amp;#34; and &amp;#34;mime type&amp;#34; events are sent to the application in the same&lt;br/&gt;&amp;gt; way as from other sources such as a web browser, e-mail, stand alone&lt;br/&gt;&amp;gt; QR code scanner app, etc.. So, I don&amp;#39;t think the wallet actually&lt;br/&gt;&amp;gt; knows it is receiving the event from NFC. That is one reason why so&lt;br/&gt;&amp;gt; many existing wallets happen to support BIP21 payment request via&lt;br/&gt;&amp;gt; NFC. Andreas can correct me if I am wrong on these statements. I&amp;#39;m a&lt;br/&gt;&amp;gt; little weary sending the &amp;#34;mime type&amp;#34; based format over NFC because&lt;br/&gt;&amp;gt; of backwards compatibility and because of the long certificate chain&lt;br/&gt;&amp;gt; that needs to be transferred. You want that tap to be as robust and&lt;br/&gt;&amp;gt; fast as possible. A bluetooth connection can have a retry without&lt;br/&gt;&amp;gt; any user interaction.&lt;br/&gt;&lt;br/&gt;There is a specific NFC intent that you have to list in your Android&lt;br/&gt;manifest, but you are right that if you already support BIP21 URIs then&lt;br/&gt;it is often fairly easy and quick to also support them via NFC.&lt;br/&gt;&lt;br/&gt;Whereas the mime type approach means that you necessarily need to be&lt;br/&gt;able to actually understand BIP70, which a lot of wallet don&amp;#39;t yet. But&lt;br/&gt;personally that wouldn&amp;#39;t hold me back using the mime type if I feel it&amp;#39;s&lt;br/&gt;the better experience. Those wallets simply have to fall back on&lt;br/&gt;scanning the QR code in the meantime and then get up to speed on their&lt;br/&gt;NFC and BIP70 support.&lt;br/&gt;&lt;br/&gt;I&amp;#39;m still concerned that the fact, that Bluetooth is often disabled, is a&lt;br/&gt;problem for the UX. And it&amp;#39;s not just a one-time thing as with NFC,&lt;br/&gt;which is - in my experience - also often disabled, but then people turn&lt;br/&gt;it on and leave it on. But with Bluetooth the Android system is geared&lt;br/&gt;much more towards turning it off after use and people have this general&lt;br/&gt;idea of &amp;#39;it uses energy, so I should disable it&amp;#39; and sometimes also&lt;br/&gt;&amp;#39;Bluetooth is insecure and if I leave it on I will get hacked&amp;#39;. So&lt;br/&gt;chances are, Bluetooth will be off most of the time, which means&lt;br/&gt;everytime you pay the dialog &amp;#39;Turn on Bluetooth?&amp;#39; will pop up, which&lt;br/&gt;isn&amp;#39;t exactly streamlined.&lt;br/&gt;&lt;br/&gt;So the advantage of transmitting the whole BIP70 payment request via NFC&lt;br/&gt;I see is, that you don&amp;#39;t need Bluetooth to get the payment request and&lt;br/&gt;for sending the transaction back the wallet can then make an intelligent&lt;br/&gt;decision and first try via HTTP and only after that fails, say something&lt;br/&gt;like: &amp;#34;You are currently offline, turn on and transmit via Bluetooth&lt;br/&gt;instead?&amp;#34;. Much less confusing to the user, in my opinion.&lt;br/&gt;&lt;br/&gt;Another idea could be to request the permission BLUETOOTH_ADMIN which,&lt;br/&gt;as far as I know, allows you to programmatically turn on Bluetooth&lt;br/&gt;without user interaction. The wallet could then have a setting somewhere&lt;br/&gt;that says &amp;#39;automatically turn on Bluetooth during payments&amp;#39; which would&lt;br/&gt;enable and then disable (if it was off before) Bluetooth during the&lt;br/&gt;payment process. That should also be a decent compromise, at the cost of&lt;br/&gt;another permission.&lt;br/&gt;&lt;br/&gt;&amp;gt; There is also the &amp;#34;ack&amp;#34; memo that I mentioned in reference [2]. I&lt;br/&gt;&amp;gt; think we can improve upon this really. Can we make a new status&lt;br/&gt;&amp;gt; field or different bluetooth message header? I know Andreas didn&amp;#39;t&lt;br/&gt;&amp;gt; want to change it because that is how his app already works, but I&lt;br/&gt;&amp;gt; don&amp;#39;t think the way it is is ideal.&lt;br/&gt;&lt;br/&gt;I&amp;#39;m fine with doing changes here - I don&amp;#39;t think there is all that much&lt;br/&gt;stuff out there yet which would break from it. At the moment I&amp;#39;m also&lt;br/&gt;modifying BitPay&amp;#39;s memo field to contain &amp;#39;ack&amp;#39;, as Andreas&amp;#39; wallet&lt;br/&gt;otherwise reports a failure if I transmit the original via Bluetooth. :-)&lt;br/&gt;But I was assuming that was temporary anyway (?).&lt;br/&gt;&lt;br/&gt;Jan
    </content>
    <updated>2023-06-07T15:31:08Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsxh25s58ramwe57g6y993kj58dj8kn4j5t5k3k3qlu932cqv5dhgqzyzhm9h7fd0lyfslw3h3qfzkm5lpz9l6x29d2uzku70qm5gkrwjpmsjnhcwc</id>
    
      <title type="html">📅 Original date posted:2015-02-22 📝 Original message:Hi ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsxh25s58ramwe57g6y993kj58dj8kn4j5t5k3k3qlu932cqv5dhgqzyzhm9h7fd0lyfslw3h3qfzkm5lpz9l6x29d2uzku70qm5gkrwjpmsjnhcwc" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdlmlqfvsjfq0t8ls8xgu2klfjwaycs5nd3w9l078l7rtjf847p8ch2vdee&#39;&gt;nevent1q…vdee&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-02-22&lt;br/&gt;📝 Original message:Hi everyone,&lt;br/&gt;&lt;br/&gt;I am working on a Bitcoin point of sale terminal based on a Raspberry Pi, which&lt;br/&gt;displays QR codes, but also provides payment requests via NFC. It can optionally&lt;br/&gt;receive the sender&amp;#39;s transaction via Bluetooth, so if the sender wallet&lt;br/&gt;supports it, the sender can be completely offline. Only the terminal needs an&lt;br/&gt;internet connection.&lt;br/&gt;&lt;br/&gt;Typical scenario envisioned: Customer taps their smartphone (or maybe smartwatch&lt;br/&gt;in the future) on the NFC pad, confirms the transaction on their phone&lt;br/&gt;(or smartwatch) and the transaction completes via Bluetooth and/or the phone&amp;#39;s&lt;br/&gt;internet connection.&lt;br/&gt;&lt;br/&gt;You can see a prototype in action here:&lt;br/&gt;&lt;br/&gt;  &lt;a href=&#34;https://www.youtube.com/watch?v=P7vKHMoapr8&#34;&gt;https://www.youtube.com/watch?v=P7vKHMoapr8&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;The above demo uses a release version of Schildbach&amp;#39;s Bitcoin Wallet, so it&lt;br/&gt;works as shown today. However, some parts - especially the Bluetooth stuff - are&lt;br/&gt;custom extensions of Schildbach&amp;#39;s wallet which are not yet standard.&lt;br/&gt;&lt;br/&gt;I&amp;#39;m writing this post to document my experience implementing NFC and offline&lt;br/&gt;payments and hope to move the discussion forward around standardizing some of&lt;br/&gt;this stuff. Andy Schroder&amp;#39;s work around his Bitcoin Fluid Dispenser [1,2]&lt;br/&gt;follows along the same lines, so his proposed TBIP74 [3] and TBIP75 [4] are&lt;br/&gt;relevant here as well.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;## NFC vs Bluetooth vs NFC&#43;Bluetooth ##&lt;br/&gt;&lt;br/&gt;Before I get into the implementation details, a few words for why I decided to&lt;br/&gt;go with the combination of NFC and Bluetooth:&lt;br/&gt;&lt;br/&gt;Doing everything via NFC is an interesting option to keep things simple, but the&lt;br/&gt;issue is, that one usually can&amp;#39;t maintain the connection while the user confirms&lt;br/&gt;the transaction (as they take the device back to press a button or maybe enter a&lt;br/&gt;PIN). So there are three options:&lt;br/&gt;&lt;br/&gt;1. Do a &amp;#34;double tap&amp;#34;: User taps, takes the device back, confirms, then taps&lt;br/&gt;again to transmit the transaction. (I think Google Wallet does something like&lt;br/&gt;this.)&lt;br/&gt;&lt;br/&gt;2. Confirm beforehand: User confirms, then taps and everything can happen in one&lt;br/&gt;go. The disadvantage is, that you confirm the transaction before you have seen&lt;br/&gt;the details. (I believe Google Wallet can also work this way.)&lt;br/&gt;&lt;br/&gt;3. Tap the phone, then establish a Bluetooth connection which allows you to do&lt;br/&gt;all necessary communication even if the user takes the device back.&lt;br/&gt;&lt;br/&gt;I feel that option 3 is the nicest UX, so that is what I am focusing on right&lt;br/&gt;now, but there are pros and cons to all options. One disadvantage of option 3 in&lt;br/&gt;practice is, that many users - in my experience - have Bluetooth turned off, so&lt;br/&gt;it can result in additional UI dialogs popping up, asking the user to turn on&lt;br/&gt;Bluetooth.&lt;br/&gt;&lt;br/&gt;Regarding doing everything via Bluetooth or maybe BLE: I have been following the&lt;br/&gt;work that Airbitz has done around that, but personally I prefer the NFC&lt;br/&gt;interaction of &amp;#34;I touch what I want to pay&amp;#34; rather than &amp;#34;a payment request comes&lt;br/&gt;to me through the air and I figure out whether it is meant for me/is legitimate&amp;#34;.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;## NFC data formats ##&lt;br/&gt;&lt;br/&gt;A bit of background for those who are not that familiar with NFC: Most Bitcoin&lt;br/&gt;wallets with NFC support make use of NDEF (NFC Data Exchange Format) as far as I&lt;br/&gt;am aware (with CoinBlesk being an exception, which uses host-based card&lt;br/&gt;emulation, if I understand it correctly). NDEF defines a number of record types,&lt;br/&gt;among them &amp;#39;URI&amp;#39; and &amp;#39;Mime Type&amp;#39;.&lt;br/&gt;&lt;br/&gt;A common way of using NFC with Bitcoin is to create a URI record that contains a&lt;br/&gt;Bitcoin URI. Beyond that Schildbach&amp;#39;s wallet (and maybe others?) also support&lt;br/&gt;the mime type record, which is then set to &amp;#39;application/bitcoin-paymentrequest&amp;#39;&lt;br/&gt;and the rest of the NFC data is a complete BIP70 payment request.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;## Implementation ##&lt;br/&gt;&lt;br/&gt;To structure the discussion a little bit, I have listed a number of scenarios to&lt;br/&gt;consider below. Not every possible combination is listed, but it should cover a&lt;br/&gt;bit of everything.&lt;br/&gt;&lt;br/&gt;Scenarios:&lt;br/&gt;&lt;br/&gt;1) Scan QR code, transmit transaction via Bitcoin network&lt;br/&gt;   Example QR code: bitcoin:1asdf...?amount=42&lt;br/&gt;&lt;br/&gt;2) Touch NFC pad, transmit transaction via Bitcoin network&lt;br/&gt;   Example NFC URI: bitcoin:1asdf...?amount=42&lt;br/&gt;&lt;br/&gt;3) Scan QR code, fetch BIP70 details via HTTP, post transaction via HTTP&lt;br/&gt;   Example QR code: bitcoin:1asdf...?amount=42&amp;amp;r=&lt;a href=&#34;https://example.org/bip70paymentrequest&#34;&gt;https://example.org/bip70paymentrequest&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;4) Touch NFC pad, fetch BIP70 details via HTTP, post transaction via HTTP&lt;br/&gt;   Example NFC URI: bitcoin:1asdf...?amount=42&amp;amp;r=&lt;a href=&#34;https://example.org/bip70paymentrequest&#34;&gt;https://example.org/bip70paymentrequest&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;5) Touch NFC pad, receive BIP70 details directly, post transaction via HTTP&lt;br/&gt;   Example NFC MIME record: application/bitcoin-paymentrequest &#43; BIP70 payment request&lt;br/&gt;&lt;br/&gt;6) Scan QR code, fetch BIP70 details via Bluetooth, post transaction via Bluetooth&lt;br/&gt;   Example QR code: bitcoin:1asdf...?amount=42&amp;amp;bt=1234567890AB&lt;br/&gt;   Payment request has &amp;#39;payment_url&amp;#39; set to &amp;#39;bt:1234567890AB&amp;#39;&lt;br/&gt;&lt;br/&gt;7) Touch NFC pad, fetch BIP70 details via Bluetooth, post transaction via Bluetooth&lt;br/&gt;   Example NFC URI: bitcoin:1asdf...?amount=42&amp;amp;bt=1234567890AB&lt;br/&gt;   Payment request has &amp;#39;payment_url&amp;#39; set to &amp;#39;bt:1234567890AB&amp;#39;&lt;br/&gt;&lt;br/&gt;Scenarios 1 and 2 are basically the &amp;#39;legacy&amp;#39;/pre-BIP70 approach and I am just&lt;br/&gt;listing them here for comparison. Scenario 3 is what is often in use now, for&lt;br/&gt;example when using a checkout screen by BitPay or Coinbase.&lt;br/&gt;&lt;br/&gt;I played around with both scenarios 4 and 5, trying to decide whether I should&lt;br/&gt;use an NFC URI record or already provide the complete BIP70 payment request via&lt;br/&gt;NFC.&lt;br/&gt;&lt;br/&gt;My experience here has been, that the latter was fairly fragile in my setup&lt;br/&gt;(Raspberry Pi, NFC dongle from a company called Sensor ID, using nfcpy). I tried&lt;br/&gt;with signed payment requests that were around 4k to 5k and the transfer would&lt;br/&gt;often not complete if I didn&amp;#39;t hold the phone perfectly in place. So I quickly&lt;br/&gt;switched to using the NFC URI record instead and have the phone fetch the BIP70&lt;br/&gt;payment request via Bluetooth afterwards. Using this approach the amount of data&lt;br/&gt;is small enough that it&amp;#39;s usually &amp;#39;all or nothing&amp;#39; and that seems more robust to&lt;br/&gt;me.&lt;br/&gt;&lt;br/&gt;That said, I continue to have problems with the NFC stack that I&amp;#39;m using, so it&lt;br/&gt;might just be my NFC setup that is causing these problems. I will probably give&lt;br/&gt;the NXP NFC library a try next (which I believe is also the stack that is used&lt;br/&gt;by Android). Maybe I have more luck with that approach and could then switch to&lt;br/&gt;scenario 5.&lt;br/&gt;&lt;br/&gt;Scenarios 6 and 7 is what the terminal is doing right now. The &amp;#39;bt&amp;#39; parameter is&lt;br/&gt;the non-standard extension of Andreas&amp;#39; wallet that I was mentioning. TBIP75&lt;br/&gt;proposes to change &amp;#39;bt&amp;#39; into &amp;#39;r1&amp;#39; as part of a more generic approach of&lt;br/&gt;numbering different sources for the BIP70 payment request. I think that is a&lt;br/&gt;good idea and would express my vote for this proposal. So the QR code or NFC URI&lt;br/&gt;would then look something like this:&lt;br/&gt;&lt;br/&gt;  bitcoin:1asdf...?amount=42&amp;amp;r=&lt;a href=&#34;https://example.org/bip70&amp;amp;r1=bt:1234567890AB/resource&#34;&gt;https://example.org/bip70&amp;amp;r1=bt:1234567890AB/resource&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;In addition the payment request would need to list additional &amp;#39;payment_url&amp;#39;s. My&lt;br/&gt;proposal would be to do something like this:&lt;br/&gt;&lt;br/&gt;    message PaymentDetails {&lt;br/&gt;        ...&lt;br/&gt;        optional string payment_url = 6;&lt;br/&gt;        optional bytes merchant_data = 7;&lt;br/&gt;        repeated string additional_payment_urls = 8;&lt;br/&gt;          // ^-- new; to hold things like &amp;#39;bt:1234567890AB&amp;#39;&lt;br/&gt;    }&lt;br/&gt;&lt;br/&gt;TBIP75 proposes to just change &amp;#39;optional string payment_url&amp;#39; into &amp;#39;repeated&lt;br/&gt;string payment_url&amp;#39;. If this isn&amp;#39;t causing any problems (and hopefully not too&lt;br/&gt;much confusion?) I guess that would be fine too.&lt;br/&gt;&lt;br/&gt;In my opinion a wallet should then actually attempt all or multiple of the&lt;br/&gt;provided mechanisms in parallel (e.g. try to fetch the BIP70 payment request via&lt;br/&gt;both HTTP and Bluetooth) and go with whatever completes first. But that is of&lt;br/&gt;course up to each wallet to decide how to handle.&lt;br/&gt;&lt;br/&gt;TBIP75 furthermore proposes to include an additional &amp;#39;h&amp;#39; parameter which would&lt;br/&gt;be a hash of the BIP70 payment request, preventing a MITM attack on the&lt;br/&gt;Bluetooth channel even if the BIP70 payment request isn&amp;#39;t signed. This would&lt;br/&gt;have also been my suggestion, although I know that Mike Hearn has raised&lt;br/&gt;concerns about this approach. One being, that one needs to finalize the BIP70&lt;br/&gt;payment request at the time the QR code and NFC URI is generated.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;## Questions ##&lt;br/&gt;&lt;br/&gt;My questions to the list:&lt;br/&gt;&lt;br/&gt;1) Do you prefer changing &amp;#39;optional string payment_url&amp;#39; into &amp;#39;repeated string&lt;br/&gt;payment_url&amp;#39; or would you rather introduce a new field &amp;#39;additional_payment_urls&amp;#39;?&lt;br/&gt;&lt;br/&gt;2) @Andreas: Is the r, r1, r2 mechanism already implemented in Bitcoin Wallet?&lt;br/&gt;&lt;br/&gt;3) Are there other comments regarding &amp;#39;h&amp;#39; parameter as per TBIP75?&lt;br/&gt;&lt;br/&gt;4) General comments, advice, feedback?&lt;br/&gt;&lt;br/&gt;I appreciate your input! :-)&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Jan&lt;br/&gt;&lt;br/&gt;[1] &lt;a href=&#34;http://andyschroder.com/BitcoinFluidDispenser/&#34;&gt;http://andyschroder.com/BitcoinFluidDispenser/&lt;/a&gt;&lt;br/&gt;[2] &lt;a href=&#34;https://www.mail-archive.com/bitcoin-development%40lists.sourceforge.net/msg06354.html&#34;&gt;https://www.mail-archive.com/bitcoin-development%40lists.sourceforge.net/msg06354.html&lt;/a&gt;&lt;br/&gt;[3] &lt;a href=&#34;https://github.com/AndySchroder/bips/blob/master/tbip-0074.mediawiki&#34;&gt;https://github.com/AndySchroder/bips/blob/master/tbip-0074.mediawiki&lt;/a&gt;&lt;br/&gt;[4] &lt;a href=&#34;https://github.com/AndySchroder/bips/blob/master/tbip-0075.mediawiki&#34;&gt;https://github.com/AndySchroder/bips/blob/master/tbip-0075.mediawiki&lt;/a&gt;
    </content>
    <updated>2023-06-07T15:30:57Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsrc2lgq8x0fcfjg5r66tg8933kjufz2808q38dq5j27aews8txr0czyzhm9h7fd0lyfslw3h3qfzkm5lpz9l6x29d2uzku70qm5gkrwjpmsdj9tst</id>
    
      <title type="html">📅 Original date posted:2011-10-25 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsrc2lgq8x0fcfjg5r66tg8933kjufz2808q38dq5j27aews8txr0czyzhm9h7fd0lyfslw3h3qfzkm5lpz9l6x29d2uzku70qm5gkrwjpmsdj9tst" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdads0jrksa3m42ez2s4u9rx4twyxl4pgzvv4nyqnssxwnavvmrrssh4jkc&#39;&gt;nevent1q…4jkc&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2011-10-25&lt;br/&gt;🗒️ Summary of this message: Jan is discussing the implementation of green addresses in Bitcoin transactions and considering two options: a hackish solution or a proper implementation.&lt;br/&gt;📝 Original message:Am Mo, 24.10.2011, 16:55, schrieb Gavin Andresen:&lt;br/&gt;&amp;gt;&amp;gt; So my first shot at this is to go through the inputs of a transaction and&lt;br/&gt;&amp;gt;&amp;gt; see if the scriptSig field has only two opcodes. If that is the case, I&lt;br/&gt;assume that it is of the structure &amp;lt;sig&amp;gt; &amp;lt;pubKey&amp;gt; and calculate the&lt;br/&gt;Bitcoin address from &amp;lt;pubKey&amp;gt;.&lt;br/&gt;&amp;gt;&amp;gt; But then I started to wonder if this is safe. Can this be tricked somehow?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Sure. There are lots of non-standard scriptPubKey scripts that will&lt;br/&gt;validate if given &amp;lt;sig&amp;gt; &amp;lt;pubKey&amp;gt; as input:  a simple OP_NOP would work&lt;br/&gt;(do nothing, then check the top value on the stack and validate if it is&lt;br/&gt;not zero-- and &amp;lt;pubKey&amp;gt; is not zero).&lt;br/&gt;&lt;br/&gt;Aw, I see. So back to the drawing board for me.&lt;br/&gt;&lt;br/&gt;How about this: I make sure that &amp;lt;sig&amp;gt; is a proper signature from a green&lt;br/&gt;address key, by bringing my own scriptPubKey of just OP_CHECKSIG, complete&lt;br/&gt;the script to be &amp;lt;sig&amp;gt; &amp;lt;pubKey&amp;gt; OP_CHECKSIG, and run it and afterwards&lt;br/&gt;check the address by looking at &amp;lt;pubKey&amp;gt;? Would that be safe? (Even if it&lt;br/&gt;is a hackish solution that only works for certain type of transactions):&lt;br/&gt;&lt;br/&gt;&amp;gt; Green addresses could be implemented as a second signature in the&lt;br/&gt;scriptSig.  You&amp;#39;d have to hack your bitcoin client, but you could&lt;br/&gt;generate a transaction that had &amp;lt;greensig&amp;gt; &amp;lt;sig&amp;gt; &amp;lt;pubKey&amp;gt;  ... as the&lt;br/&gt;input instead of &amp;lt;sig&amp;gt; &amp;lt;pubKey&amp;gt;.&lt;br/&gt;&lt;br/&gt;Interesting suggestion! So if I understand correctly, &amp;lt;greensig&amp;gt; would be&lt;br/&gt;the signature generated from signing the transaction with the key of a&lt;br/&gt;green address? Which would allow the rest of the transaction to be&lt;br/&gt;completely &amp;#39;normal&amp;#39; and not require it to use specific inputs as such?&lt;br/&gt;Sounds good - I guess I never thought in this direction, as I always&lt;br/&gt;assumed doing anything &amp;#39;non-standard&amp;#39; with the scripting language would&lt;br/&gt;create a number of knock-on problems. But you are saying, that this would&lt;br/&gt;still be considered standard? I guess I have to study this part of the&lt;br/&gt;source code more.&lt;br/&gt;&lt;br/&gt;Well, I guess I&amp;#39;m torn a little bit between two options:&lt;br/&gt;&lt;br/&gt;1) Get something working reasonable fast to detect current green address&lt;br/&gt;style transactions. It&amp;#39;s fine if it is a little bit of a hack, as long as&lt;br/&gt;it&amp;#39;s safe, since I don&amp;#39;t expect it to be merged with mainline anyway at&lt;br/&gt;this point.&lt;br/&gt;&lt;br/&gt;2) Rethink how green transactions are created and verified and try to put&lt;br/&gt;something &amp;#39;proper&amp;#39; together which has a chance of being merged at some&lt;br/&gt;point.&lt;br/&gt;&lt;br/&gt;For the moment I was going more with 1) because I got the impression, that&lt;br/&gt;green transactions are too controversial at this point to get them&lt;br/&gt;included in mainline. Criticism ranging from &amp;#39;unnecessary, as&lt;br/&gt;0-confirmation transactions are fairly safe today&amp;#39; to &amp;#39;encourages too much&lt;br/&gt;centralization and therefore evil&amp;#39;. So how to people on this list feel&lt;br/&gt;about green transactions? Would people be interested in helping me with&lt;br/&gt;2)?&lt;br/&gt;&lt;br/&gt;Regards,&lt;br/&gt;Jan
    </content>
    <updated>2023-06-07T02:35:11Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsdads0jrksa3m42ez2s4u9rx4twyxl4pgzvv4nyqnssxwnavvmrrszyzhm9h7fd0lyfslw3h3qfzkm5lpz9l6x29d2uzku70qm5gkrwjpmss8fwy2</id>
    
      <title type="html">📅 Original date posted:2011-10-27 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsdads0jrksa3m42ez2s4u9rx4twyxl4pgzvv4nyqnssxwnavvmrrszyzhm9h7fd0lyfslw3h3qfzkm5lpz9l6x29d2uzku70qm5gkrwjpmss8fwy2" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs9vdwd6pecfwdntj9k7r9f04c8n0rnnle984udc5t2w05sfjyldcgrzeecr&#39;&gt;nevent1q…eecr&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2011-10-27&lt;br/&gt;🗒️ Summary of this message: Gavin Andresen suggests using the prevout to extract the address for a transaction input. Jan creates a patch for a new RPC call &amp;#39;getorigins&amp;#39;.&lt;br/&gt;📝 Original message:Am Mo, 24.10.2011, 16:55, schrieb Gavin Andresen:&lt;br/&gt;&amp;gt; If you assume the client has all previous transactions, then you could&lt;br/&gt;&amp;gt; get the transaction input&amp;#39;s prevout (from the memory pool or disk) and&lt;br/&gt;&amp;gt; then ExtractAddress() from it.&lt;br/&gt;&lt;br/&gt;I now created a patch based on this idea. To avoid slowing down&lt;br/&gt;listtransactions or gettransaction, I put it in a separate RPC&lt;br/&gt;call &amp;#39;getorigins&amp;#39;. This is the patch:&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://github.com/javgh/bitcoin/compare/bfa4600a93...getorigins&#34;&gt;https://github.com/javgh/bitcoin/compare/bfa4600a93...getorigins&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Any obvious mistakes I made there?&lt;br/&gt;&lt;br/&gt;Regards!&lt;br/&gt;Jan
    </content>
    <updated>2023-06-07T02:35:07Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqspq5gasnx5ql3ysq7m9h0xf4m6ahvjq7l82xy8zm3akv6zmg66v0gzyzhm9h7fd0lyfslw3h3qfzkm5lpz9l6x29d2uzku70qm5gkrwjpmswwdg6q</id>
    
      <title type="html">📅 Original date posted:2011-10-24 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqspq5gasnx5ql3ysq7m9h0xf4m6ahvjq7l82xy8zm3akv6zmg66v0gzyzhm9h7fd0lyfslw3h3qfzkm5lpz9l6x29d2uzku70qm5gkrwjpmswwdg6q" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsrpue2fqulx52ly26jqmf3zr3q9wz3ec54l3ju2v2vr87yxev82zckcrtm8&#39;&gt;nevent1q…rtm8&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2011-10-24&lt;br/&gt;🗒️ Summary of this message: Jan is trying to add an &amp;#34;inputaddresses&amp;#34; field to the &amp;#34;gettransaction&amp;#34; call in Bitcoin, but is unsure if his method is safe and seeks advice.&lt;br/&gt;📝 Original message:Hi there!&lt;br/&gt;&lt;br/&gt;As part of my green address endeavor, I&amp;#39;m currently trying to extend the&lt;br/&gt;&amp;#39;gettransaction&amp;#39; call to include an extra field &amp;#34;inputaddresses&amp;#34; which&lt;br/&gt;should return a list of the Bitcoin addresses associated with the inputs&lt;br/&gt;of the transaction.&lt;br/&gt;&lt;br/&gt;I understand that this is not generally possible, because of the different&lt;br/&gt;possible structures enabled through the scripting language. But it would&lt;br/&gt;be fine, if this only worked for &amp;#39;regular&amp;#39; transactions.&lt;br/&gt;&lt;br/&gt;So my first shot at this is to go through the inputs of a transaction and&lt;br/&gt;see if the scriptSig field has only two opcodes. If that is the case, I&lt;br/&gt;assume that it is of the structure &amp;lt;sig&amp;gt; &amp;lt;pubKey&amp;gt; and calculate the&lt;br/&gt;Bitcoin address from &amp;lt;pubKey&amp;gt;. The patch for this is here:&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://github.com/javgh/bitcoin/compare/vps_wheezy...showinputaddresses&#34;&gt;https://github.com/javgh/bitcoin/compare/vps_wheezy...showinputaddresses&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;But then I started to wonder if this is safe. Can this be tricked somehow?&lt;br/&gt;Would it be possible to create a valid transaction which has an input that&lt;br/&gt;has only two opcodes but with an arbitrary pubKey at the second position?&lt;br/&gt;Could someone who has a better grasp on the scripting capabilities comment&lt;br/&gt;on this?&lt;br/&gt;&lt;br/&gt;Or alternatively: should I determine the input addresses of a transaction&lt;br/&gt;in a different way? if so, how?&lt;br/&gt;&lt;br/&gt;Regards!&lt;br/&gt;Jan
    </content>
    <updated>2023-06-07T02:34:42Z</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsvzxycf0f58wef6h94dm2yl862e0vm97h3ma4nayst2mp6xkqlkwszyzhm9h7fd0lyfslw3h3qfzkm5lpz9l6x29d2uzku70qm5gkrwjpmsuq8shp</id>
    
      <title type="html">📅 Original date posted:2011-07-03 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsvzxycf0f58wef6h94dm2yl862e0vm97h3ma4nayst2mp6xkqlkwszyzhm9h7fd0lyfslw3h3qfzkm5lpz9l6x29d2uzku70qm5gkrwjpmsuq8shp" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsg4rhns6xs40c88hg36x4xj82kjml8kzenkfha30twn3w4pcgypychy0k7t&#39;&gt;nevent1q…0k7t&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2011-07-03&lt;br/&gt;🗒️ Summary of this message: Jan implemented a balance cache to speed up the Instawallet server, using a list of all account balances stored in a map.&lt;br/&gt;📝 Original message:Hey!&lt;br/&gt;&lt;br/&gt;John Smith wrote:&lt;br/&gt;&amp;gt; I think the easiest way to speed this up would be to scan the wallet every&lt;br/&gt;&amp;gt; time a block comes in or something else changes in the block chain (or, if&lt;br/&gt;&amp;gt; you prefer, some pre-set interval of N minutes). Then go over the entire&lt;br/&gt;&amp;gt; wallet and the accumulate balances for all accounts. This could be done in&lt;br/&gt;&amp;gt; amortized linear time using a hash_map.&lt;br/&gt;&lt;br/&gt;That was a good suggestion - thanks! I implemented it along these lines&lt;br/&gt;and now the Instawallet server can breath again. Well, more or less at&lt;br/&gt;least, as now &amp;#34;sendfrom&amp;#34; starts acting up and I have to look into that&lt;br/&gt;next.&lt;br/&gt;&lt;br/&gt;Here is a branch with the code for the cache:&lt;br/&gt;&lt;a href=&#34;https://github.com/javgh/bitcoin/tree/balancecache&#34;&gt;https://github.com/javgh/bitcoin/tree/balancecache&lt;/a&gt; . It&amp;#39;s currently based&lt;br/&gt;on a somewhat old version of the codebase as I&amp;#39;m running with a number of&lt;br/&gt;other modifications. So it won&amp;#39;t easily apply to something newer. I hope&lt;br/&gt;to be able to switch to a recent version at some point (mostly hoping for&lt;br/&gt;some improvements in the fee handling area before I do that) and then I&lt;br/&gt;can hopefully provide a cleaner version of this patch. For now, I just&lt;br/&gt;document it here for anyone who might need this as well and can piece it&lt;br/&gt;together themselves (I attached a patch file).&lt;br/&gt;&lt;br/&gt;Basically I create a list of all account balances every time a new a new&lt;br/&gt;block comes in or a transaction that affects my wallet appears. The list&lt;br/&gt;is stored in a &amp;#34;map&amp;#34; right now. This seems fast enough for me. I didn&amp;#39;t&lt;br/&gt;use a hash map for now, because I&amp;#39;m fairly new to C&#43;&#43; and was a little&lt;br/&gt;confused on what to use (is there a &amp;#34;standard&amp;#34; hash map to use in the STL?&lt;br/&gt;or do people use boost or what?). But my VPS is low on memory anyway, so I&lt;br/&gt;guess that&amp;#39;s kind of a justification as well to go for a tree-based&lt;br/&gt;implementation of map.&lt;br/&gt;&lt;br/&gt;Cheers!&lt;br/&gt;Jan&lt;br/&gt;-------------- next part --------------&lt;br/&gt;A non-text attachment was scrubbed...&lt;br/&gt;Name: balancecache.patch&lt;br/&gt;Type: text/x-patch&lt;br/&gt;Size: 8184 bytes&lt;br/&gt;Desc: not available&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20110703/16ead949/attachment.bin&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20110703/16ead949/attachment.bin&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T02:02:18Z</updated>
  </entry>

</feed>