<div dir="ltr">Airbitz has developed and implemented a method for communicating a bitcoin URI across Bluetooth (BLE) or any other P2P, mid range, wireless, broadcast medium. The currently documented implementation is available in our iOS and Android mobile wallet (updated Android version with BLE coming in about 1 week). We would like to have the BIP pulled into Github for review and discussion. Here is the current BIP:<div><br><div><br></div><div><span id="docs-internal-guid-9f096b22-58c0-7e5e-4500-8da4d4c7735e"><p dir="ltr" style="line-height:1;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Consolas;color:rgb(51,51,51);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">BIP: TBD</span></p><p dir="ltr" style="line-height:1;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Consolas;color:rgb(51,51,51);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">Title: P2P Wireless URI transfer</span></p><p dir="ltr" style="line-height:1;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Consolas;color:rgb(51,51,51);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">Authors: Thomas Baker &lt;tom’at’<a href="http://airbitz.co">airbitz.co</a>&gt;, Paul Puey &lt;paul’at’<a href="http://airbitz.co">airbitz.co</a>&gt;</span></p><p dir="ltr" style="line-height:1;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Consolas;color:rgb(51,51,51);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">Contributors: Joey Krug &lt;joeykrug’at’<a href="http://gmail.com">gmail.com</a>&gt;</span></p><p dir="ltr" style="line-height:1;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Consolas;color:rgb(51,51,51);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">Status: proposal</span></p><p dir="ltr" style="line-height:1;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Consolas;color:rgb(51,51,51);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">Type: Standards Track</span></p><p dir="ltr" style="line-height:1;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Consolas;color:rgb(51,51,51);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">Created: 2015-01-12</span></p><br><div dir="ltr" style><table style="border:none;border-collapse:collapse"><colgroup><col width="644"></colgroup><tbody><tr style="height:0px"><td style="border:1px solid rgb(221,221,221);vertical-align:top;padding:7px 13px"><h2 dir="ltr" style="line-height:1.225;margin-top:18pt;margin-bottom:24pt"><span style="font-size:43px;font-family:Arial;color:rgb(51,51,51);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">Table of Contents</span></h2><ul style="margin-top:0pt;margin-bottom:0pt"><li dir="ltr" style="list-style-type:circle;font-size:16px;font-family:Arial;color:rgb(51,51,51);vertical-align:baseline;background-color:transparent"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="vertical-align:baseline;white-space:pre-wrap;background-color:transparent">Abstract</span></p></li><li dir="ltr" style="list-style-type:circle;font-size:16px;font-family:Arial;color:rgb(51,51,51);vertical-align:baseline;background-color:transparent"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="vertical-align:baseline;white-space:pre-wrap;background-color:transparent">Motivation</span></p></li><li dir="ltr" style="list-style-type:circle;font-size:16px;font-family:Arial;color:rgb(51,51,51);vertical-align:baseline;background-color:transparent"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="vertical-align:baseline;white-space:pre-wrap;background-color:transparent">Specification</span></p></li><li dir="ltr" style="list-style-type:circle;font-size:16px;font-family:Arial;color:rgb(51,51,51);vertical-align:baseline;background-color:transparent"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="vertical-align:baseline;white-space:pre-wrap;background-color:transparent">Compatibility</span></p></li><li dir="ltr" style="list-style-type:circle;font-size:16px;font-family:Arial;color:rgb(51,51,51);vertical-align:baseline;background-color:transparent"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="vertical-align:baseline;white-space:pre-wrap;background-color:transparent">Examples</span></p></li><li dir="ltr" style="list-style-type:circle;font-size:16px;font-family:Arial;color:rgb(51,51,51);vertical-align:baseline;background-color:transparent"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:24pt"><span style="vertical-align:baseline;white-space:pre-wrap;background-color:transparent">References</span></p></li></ul></td></tr></tbody></table></div><h2 dir="ltr" style="line-height:1.225;margin-top:17pt;margin-bottom:12pt"><span style="font-size:40px;font-family:Arial;color:rgb(51,51,51);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">Abstract</span></h2><p dir="ltr" style="line-height:1.60000002384186;margin-top:0pt;margin-bottom:12pt"><span style="font-size:16px;font-family:Arial;color:rgb(51,51,51);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">This is a protocol for peer-to-peer wireless transfer of a URI request using an open broadcast or advertisement channel such as Bluetooth, Bluetooth Low Energy, or WiFi Direct.</span></p><h2 dir="ltr" style="line-height:1.225;margin-top:17pt;margin-bottom:12pt"><span style="font-size:40px;font-family:Arial;color:rgb(51,51,51);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">Motivation</span></h2><p dir="ltr" style="line-height:1.60000002384186;margin-top:0pt;margin-bottom:12pt"><span style="font-size:16px;font-family:Arial;color:rgb(51,51,51);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">There are disadvantages for a merchant (requester) and customer (sender) to exchange a URI request using QR codes that can be eliminated by using wireless broadcast or advertisements.</span></p><p dir="ltr" style="line-height:1.60000002384186;margin-top:0pt;margin-bottom:12pt"><span style="font-size:16px;font-family:Arial;color:rgb(51,51,51);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">Current QR code scan method to transfer a request URI from merchant (Requester) to customer (Sender) is cumbersome. A usual scenario is a merchant with a POS terminal for order entry and a separate tablet for transacting payments with bitcoin, and a customer with a smartphone. After the order is entered, the merchant enters payment request information into the tablet, generates the QR code representing the URI, and presents this to the customer. The customer prepares to scan the QR code with their smartphone by maneuvering the camera to the tablet. The tablet screen must be relatively clean, point at the customer, and held steady. The smartphone camera lens must be clean, point at the tablet screen, come into range, and held steady to focus and wait for a QR scan. Environmental conditions such as bright outdoor sunlight, indoor spot lights, or significant distance between QR code and camera can create difficult and cumbersome experiences for users.</span></p><p dir="ltr" style="line-height:1.60000002384186;margin-top:0pt;margin-bottom:12pt"><span style="font-size:16px;font-family:Arial;color:rgb(51,51,51);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">Using a wireless local broadcast allows the merchant to just enter the payment and wait. The tablet and smartphone are not maneuvered to align in any way. The customer observes broadcast listings, selects the appropriate one from possible simultaneous broadcasts from other POS stations nearby, examines the URI request details such as amount, and decides whether to send funds, initiating a bitcoin network transfer. The merchant and customer then receive the transaction confirmations and are done with the sale. Merchant and customer devices are kept private and secured in their own possession.</span></p><p dir="ltr" style="line-height:1.60000002384186;margin-top:0pt;margin-bottom:12pt"><span style="font-size:16px;font-family:Arial;color:rgb(51,51,51);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">The URI and other broadcast identification (Joe’s Grill #1) only contain public information. However, a copycat broadcaster acting as MITM might duplicate the broadcast simultaneously as the merchant, attempting to lure the customer to send funds to the copycat. That attack is mitigated with this broadcast method because of the partial address in the broadcast.</span></p><h2 dir="ltr" style="line-height:1.225;margin-top:17pt;margin-bottom:12pt"><span style="font-size:40px;font-family:Arial;color:rgb(51,51,51);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">Specification</span></h2><p dir="ltr" style="line-height:1.60000002384186;margin-top:0pt;margin-bottom:12pt"><span style="font-size:16px;font-family:Arial;color:rgb(51,51,51);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">Requester generates a bitcoin URI request of variable length, and a limited descriptive identifier string. Requester then broadcasts the URI’s partial public address (&lt;paddress&gt;) plus identifier (&lt;id&gt;) over a publicly visible wireless channel.</span></p><p dir="ltr" style="line-height:1.60000002384186;margin-top:0pt;margin-bottom:12pt"><span style="font-size:16px;font-family:Arial;color:rgb(51,51,51);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">Sender scans for broadcasts on their device, examines and selects the desired request by the identifier and partial address. This connects a data channel to Requester.</span></p><p dir="ltr" style="line-height:1.60000002384186;margin-top:0pt;margin-bottom:12pt"><span style="font-size:16px;font-family:Arial;color:rgb(51,51,51);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">Requester sends full URI back over the data channel.</span></p><p dir="ltr" style="line-height:1.60000002384186;margin-top:0pt;margin-bottom:12pt"><span style="font-size:16px;font-family:Arial;color:rgb(51,51,51);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">Sender device ensures &lt;paddress&gt; is part of the full URI public address and checks the full address integrity. Checking the broadcast and full URI integrity prevents a copycat device within range from copying the partial address and fooling the customer into sending funds to the copycat instead.</span></p><p dir="ltr" style="line-height:1.60000002384186;margin-top:0pt;margin-bottom:12pt"><span style="font-size:16px;font-family:Arial;color:rgb(51,51,51);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">Below is a description of the protocol through Bluetooth Smart (Low Energy).</span></p><p dir="ltr" style="line-height:1;margin-top:0pt;margin-bottom:0pt"><span style="font-size:13px;font-family:&#39;Courier New&#39;;color:rgb(51,51,51);vertical-align:baseline;white-space:pre-wrap;background-color:transparent"> Requestor      Sender     - Bitcoin transaction roles</span></p><p dir="ltr" style="line-height:1;margin-top:0pt;margin-bottom:0pt"><span style="font-size:13px;font-family:&#39;Courier New&#39;;color:rgb(51,51,51);vertical-align:baseline;white-space:pre-wrap;background-color:transparent"> Peripheral     Central    - Bluetooth GAP definitions</span></p><p dir="ltr" style="line-height:1;margin-top:0pt;margin-bottom:0pt"><span style="font-size:13px;font-family:&#39;Courier New&#39;;color:rgb(51,51,51);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">   Mode           Mode</span></p><p dir="ltr" style="line-height:1;margin-top:0pt;margin-bottom:0pt"><span style="font-size:13px;font-family:&#39;Courier New&#39;;color:rgb(51,51,51);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">1   |-------------&gt;|       - Requestor Advertises partial bitcoin: URI + Name</span></p><p dir="ltr" style="line-height:1;margin-top:0pt;margin-bottom:0pt"><span style="font-size:13px;font-family:&#39;Courier New&#39;;color:rgb(51,51,51);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">    |     ...      |       </span></p><p dir="ltr" style="line-height:1;margin-top:0pt;margin-bottom:0pt"><span style="font-size:13px;font-family:&#39;Courier New&#39;;color:rgb(51,51,51);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">2   |&lt;-------------|       - Subscribe then send sender&#39;s Name, requesting a response</span></p><p dir="ltr" style="line-height:1;margin-top:0pt;margin-bottom:0pt"><span style="font-size:13px;font-family:&#39;Courier New&#39;;color:rgb(51,51,51);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">3   |-------------&gt;|       - ACK</span></p><p dir="ltr" style="line-height:1;margin-top:0pt;margin-bottom:0pt"><span style="font-size:13px;font-family:&#39;Courier New&#39;;color:rgb(51,51,51);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">4   |&lt;-------------|       - request Read Characteristic from peripheral</span></p><p dir="ltr" style="line-height:1;margin-top:0pt;margin-bottom:0pt"><span style="font-size:13px;font-family:&#39;Courier New&#39;;color:rgb(51,51,51);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">5   |-------------&gt;|       - Sender receives full bitcoin: URI</span></p><br><ol style="margin-top:0pt;margin-bottom:0pt"><li dir="ltr" style="list-style-type:decimal;font-size:16px;font-family:Arial;color:rgb(51,51,51);vertical-align:baseline;background-color:transparent"><p dir="ltr" style="line-height:1.60000002384186;margin-top:0pt;margin-bottom:0pt"><span style="vertical-align:baseline;white-space:pre-wrap;background-color:transparent">Peripheral advertises over a service UUID a BLE extended advertisement with a Scan Response containing the partial address of a bitcoin URI and a Name, any plain text. The entire response is limited to 26 characters. The first 10 make up the first 10 characters of the bitcoin URI public address where to send bitcoin, and must be present. The remaining characters are any plain text such as “The Habit 1” or “Starbucks-Reg 1”, more human readable information. The partial address serves as a check against a nearby attacker who may try to lure a Sender into sending payment to a separate wallet by advertising a similar Scan Response but cannot replicate a public address with the same leading 10 characters and different trailing characters.</span></p></li><li dir="ltr" style="list-style-type:decimal;font-size:16px;font-family:Arial;color:rgb(51,51,51);vertical-align:baseline;background-color:transparent"><p dir="ltr" style="line-height:1.60000002384186;margin-top:0pt;margin-bottom:0pt"><span style="vertical-align:baseline;white-space:pre-wrap;background-color:transparent">When the Central scans the advertisement, it may display the Scan Response in a human readable listing using the two pieces of information. If Central chooses this advertisement to receive the full request, it then subscribes to the service and writes the characteristic (a second UUID) with it’s own name, or a blank if not sending a name, to the Peripheral.</span></p></li><li dir="ltr" style="list-style-type:decimal;font-size:16px;font-family:Arial;color:rgb(51,51,51);vertical-align:baseline;background-color:transparent"><p dir="ltr" style="line-height:1.60000002384186;margin-top:0pt;margin-bottom:0pt"><span style="vertical-align:baseline;white-space:pre-wrap;background-color:transparent">Peripheral gets a characteristic write request of the Central’s name, and acknowledges the receipt by sending a server response.</span></p></li><li dir="ltr" style="list-style-type:decimal;font-size:16px;font-family:Arial;color:rgb(51,51,51);vertical-align:baseline;background-color:transparent"><p dir="ltr" style="line-height:1.60000002384186;margin-top:0pt;margin-bottom:0pt"><span style="vertical-align:baseline;white-space:pre-wrap;background-color:transparent">Central receives a characteristic write (from the response) and immediately requests the entire bitcoin URI by issuing a read request on that characteristic.</span></p></li><li dir="ltr" style="list-style-type:decimal;font-size:16px;font-family:Arial;color:rgb(51,51,51);vertical-align:baseline;background-color:transparent"><p dir="ltr" style="line-height:1.60000002384186;margin-top:0pt;margin-bottom:12pt"><span style="vertical-align:baseline;white-space:pre-wrap;background-color:transparent">Peripheral receives the read request and sends the entire bitcoin URI over that characteristic up to 512 bytes.</span></p></li></ol><p dir="ltr" style="line-height:1.60000002384186;margin-top:0pt;margin-bottom:12pt"><span style="font-size:16px;font-family:Arial;color:rgb(51,51,51);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">This ends the proposed specification as the bitcoin URI transfer is complete. The Sender would then normally confirm the request and decide whether to initiate the fund transfer.</span></p><h2 dir="ltr" style="line-height:1.225;margin-top:17pt;margin-bottom:12pt"><span style="font-size:40px;font-family:Arial;color:rgb(51,51,51);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">Compatibility</span></h2><p dir="ltr" style="line-height:1.60000002384186;margin-top:0pt;margin-bottom:12pt"><span style="font-size:16px;font-family:Arial;color:rgb(51,51,51);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">There are no prior BIPs covering this.</span></p><h2 dir="ltr" style="line-height:1;margin-top:17pt;margin-bottom:12pt"><span style="font-size:40px;font-family:Arial;color:rgb(51,51,51);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">Examples</span></h2><p dir="ltr" style="line-height:1.45;margin-top:0pt;margin-bottom:12pt"><span style="font-size:16px;font-family:Arial;color:rgb(51,51,51);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">Airbitz iOS Bluetooth Low Energy to Bluetooth Low Energy request transfer.</span></p><h2 dir="ltr" style="line-height:1.225;margin-top:17pt;margin-bottom:12pt"><span style="font-size:40px;font-family:Arial;color:rgb(51,51,51);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">References</span></h2><br><br></span></div><div><br clear="all"><div><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><br><table border="0" style="font-size:medium;font-family:Helvetica,Arial,sans-serif"><tbody><tr valign="top"><td style="width:auto;vertical-align:top;white-space:nowrap"><img src="https://s3.amazonaws.com/webapp.wisestamp.com/v7Zg7GfIQ9mF5xlHZrZA_airbitzlogo.png" alt="logo" style="border: none; border-radius: 4px;"> <span style="font-size:small">  <br></span></td><td><span style="font-size:small"><font color="#3d85c6"><b>Paul Puey</b></font><font color="#808080"> </font><span style="color:rgb(136,136,136)">CEO / Co-Founder</span><span style="color:rgb(136,136,136)">, Airbitz Inc</span></span><br><div style="margin-top:0px;margin-bottom:0px"><span style="font-size:small"><span style="color:rgb(128,128,128)"><a style="color:rgb(128,128,128);outline:none;text-decoration:none">+1-6</a>19-850-8624 </span></span><span style="font-size:small"><span style="color:rgb(69,102,142)">| </span><a href="http://airbitz.co/" style="color:rgb(128,128,128);outline:none" target="_blank">http://airbitz.co</a></span><span style="font-size:small;color:rgb(128,128,128)"> </span><span style="font-size:small;color:rgb(128,128,128)"><span style="color:rgb(69,102,142)">| </span>San Diego</span></div><div style="margin-top:5px"><a href="http://facebook.com/airbitz" style="color:rgb(17,85,204);outline:none" target="_blank"><img src="http://images.wisestamp.com/facebook.png" width="16" style="border: none;"></a> <a href="http://twitter.com/airbitz" style="color:rgb(17,85,204);outline:none" target="_blank"><img src="http://images.wisestamp.com/twitter.png" width="16" alt="" style="border: none;"></a> <a href="https://plus.google.com/118173667510609425617" style="color:rgb(17,85,204);outline:none" target="_blank"><img src="http://images.wisestamp.com/googleplus.png" width="16" style="border: none;"></a> <a href="https://go.airbitz.co/comments/feed/" style="color:rgb(17,85,204);outline:none" target="_blank"><img src="http://images.wisestamp.com/blogRSS.png" width="16" style="border: none;"></a> <a href="http://linkedin.com/in/paulpuey" style="color:rgb(17,85,204);outline:none" target="_blank"><img src="http://images.wisestamp.com/linkedin.png" width="16" style="border: none;" alt=""></a> <a href="https://angel.co/paul-puey" style="color:rgb(17,85,204);outline:none" target="_blank"><img src="http://images.wisestamp.com/angelList.png" width="16" style="border: none;" alt=""></a></div></td></tr></tbody></table><div style="font-size:14px;margin-bottom:4px;font-family:Helvetica,Arial,sans-serif;font-weight:bold"><b style="font-size:x-small;font-family:arial,sans-serif">DOWNLOAD THE AIRBITZ WALLET:</b><br></div><span style="font-size:medium;font-family:Helvetica,Arial,sans-serif"><a href="https://play.google.com/store/apps/details?id=com.airbitz" style="color:rgb(17,85,204);outline:none;text-decoration:none" target="_blank"><img src="http://images.wisestamp.com.s3.amazonaws.com/apps/mobile_android.png" style="border: none;"> </a></span><span style="font-size:medium;font-family:Helvetica,Arial,sans-serif"></span><span style="font-size:medium;font-family:Helvetica,Arial,sans-serif"><a href="https://itunes.apple.com/us/app/airbitz/id843536046" style="color:rgb(17,85,204);outline:none;text-decoration:none" target="_blank"><img src="http://images.wisestamp.com.s3.amazonaws.com/apps/mobile_iphone.png" style="border: none;"></a></span><br></div><div dir="ltr"><br></div><div dir="ltr"><div dir="ltr"><div dir="ltr"><br></div></div><div dir="ltr"><br></div></div></div></div></div></div></div></div></div></div></div>
</div></div></div>