<oembed><type>rich</type><version>1.0</version><author_name>npub17ty4mumkv43w8wtt0xsz2jypck0gvw0j8xrcg6tpea25z2nh7meqf4qgyd</author_name><author_url>https://nostr.ae/npub17ty4mumkv43w8wtt0xsz2jypck0gvw0j8xrcg6tpea25z2nh7meqf4qgyd</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2014-03-06&#xA;📝 Original message:I just did my first contactless nfc payment with a MasterCard. It worked&#xA;very well and was quite delightful - definitely want to be doing more of&#xA;these in future. I think people will come to expect this kind of&#xA;no-friction payment experience and Bitcoin will need to match it, so here&#xA;are some notes on what&#39;s involved.&#xA;&#xA;There are two aspects that can be implemented independently of each other:&#xA;&#xA;1) The physical/NFC layer.&#xA;2) The risk analysis layer.&#xA;&#xA;A contactless payment needs two things to work: one is a VERY fast, low&#xA;latency communication between payment device (phone in our case) and&#xA;terminal. I couldn&#39;t find actual latency specs yet but it felt like using&#xA;an Oyster card, which aims for &lt;400msec.&#xA;&#xA;The other is that obviously the payment device has to decide to sign the&#xA;transaction without any user interaction, i.e. the payment is at low risk&#xA;of being unintentional. If you nail this it can be used for one-click web&#xA;payments too.&#xA;&#xA;Andreas already did some work on embedding full blown payment requests into&#xA;an NFC tag, but I think we need to switch this to being a packet based&#xA;protocol (via ISO-DEP), otherwise you can&#39;t submit the Payment/tx messages&#xA;back via NFC as well. This isn&#39;t a very complicated task and would make a&#xA;fun project for a newbie who has Android and knows some Java. The resulting&#xA;ISO-DEP protocol can be turned into a BIP without too much trouble.&#xA;&#xA;The risk analysis is the more complicated part. The real value&#xA;Visa/MasterCard provide with NFC payments is not so much the tech (the&#xA;clever part is the batteryless nature of the cards rather than the&#xA;crypto/comms), but the fact that merchants are all verified and can be&#xA;fined or evicted if they abuse the system and try to steal money. Bitcoin&#xA;doesn&#39;t have anything like that.&#xA;&#xA;I think we have a few options to make it safe:&#xA;&#xA;1) Require some very lightweight user confirmation, like pressing the power&#xA;button to reach the lock screen and only allowing small payments. The&#xA;combination of physical proximity and pressing the power button is probably&#xA;good enough for now to avoid problems. Someone should try it out and see&#xA;how it feels.&#xA;&#xA;2) Have some kind of semi-centralised merchant verification/approval&#xA;programs, like what the card networks do. The easiest way to start would be&#xA;to piggyback on the work BitPay/Coinbase do and just auto-sign if payment&#xA;amount is &lt;X mBTC and the payment is via one of these processors. But this&#xA;is hardly in the spirit of Bitcoin and is generally unsatisfying.&#xA;&#xA;3) Have some kind of decentralised reputation network. I spent some time&#xA;thinking about this, but it rapidly became very complicated and feels like&#xA;an entirely separate project that should stand alone from Bitcoin itself.&#xA;Perhaps rather than try to make a global system, social data could be&#xA;exchanged (using some fancy privacy preserving protocols?) so if your&#xA;friends have decided to trust seller X, your phone automatically trusts&#xA;them too.&#xA;&#xA;4) Have the touch trigger a delayed payment and the phone tries to attract&#xA;attention to itself so the user can cancel. This way if someone tries to&#xA;swipe money out of your pocket by getting up close on a subway or&#xA;something, you have a chance to cancel. But it&#39;s quite hard for a small&#xA;device to reliably attract attention quickly and it opens up the merchant&#xA;to fraud where the user pays, leaves and then cancels the payment.&#xA;Especially it&#39;d be useless for things like mass transit. So I think such a&#xA;system would have to be opt-in by the seller.&#xA;&#xA;5) A combination of all the above.&#xA;&#xA;To get the very fast light feel the actual contact period has to be quite&#xA;short, so I bet we&#39;d need to optimise the bootup process of the Android&#xA;wallet app. Right now it does slow things like deserialising giant protocol&#xA;buffers and is just generally not optimised for startup time. Loading the&#xA;wallet, reading the payment request over NFC, checking the cert signatures,&#xA;making the trust decision, calculating a transaction, signing it, sending&#xA;it back to the recipient all in under 400 msec would be a tough (but fun)&#xA;programming challenge. Some of the steps can be parallelised and modern&#xA;phones are mostly multicore.&#xA;-------------- next part --------------&#xA;An HTML attachment was scrubbed...&#xA;URL: &lt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20140306/0d93269c/attachment.html&gt;</html></oembed>