Subject: Re: [Bitcoin-development] Payment Protocol for Face-to-face Payments

From: Andreas Schildbach <[email-masked]>
Date: Fri, 21 Mar 2014 10:47:03 +0100

On 03/20/2014 05:14 PM, Alex Kotenko wrote:

> Hmm, if we're inventing an URI for bluetooth, I'd rather follow existing
> URI's patterns. BT is strictly point-to-point connection, so BT MAC
> should be considered as server address, and payment request ID can be
> considered as request path. Probably "bt:<bt-mac>/​
> <random_id_of_payment_request>" would be more usual and easily
> understandable.

Agreed. I used the dash because I feared a slash would need to be
escaped if used in an URL parameter.

> I wonder how complex it would be to implement HTTP-over-Bluetooth. Not
> like I'm willing to do that now, but HTTP is well known and proven to be
> quite good for tasks like this, so in theory it would be handy to have
> such capacities in here.

Thought of that as well. On the other hand, HTTP might be overkill and
we inherit its potential downsides as well.

>     Well, do we need to be compatible? If the dev community decides Base43
>     PR QR's (or whatever other self-contained format) is the way to go, we
>     just implement, roll it out and use it.
> 
> My PoS needs to be compatible with BIP21, as when I'm presenting QR code
> or sending NFC message - I have no way to tell what wallet/phone is ​​on
> the accepting side, so I have to be compatible to existing widely
> supported technologies.

Agreed. All I wanted to say support for QR is still small enough that we
might be able to switch to an incompatible standard. If we're determined
that is.

> ​Well, yes, it would be less efficient than base43. But did you
> calculate how much less? ​It's a compatible and already widely used way
> and loosing compatibility needs to have serious reasons, so would be
> great to know exact figures here.

Base 64 via binary QR:   64 chars / 256 chars
                         ==> 6 bit / 8 bit = 0.75

Base 43 via alphanum QR: 43 chars / 45 chars
                         ==> 5.43 bit / 5.49 bit = 0.99

That would be efficiency in terms of PR data size vs. amount space used
in a QR code. Of course, the visual QR encoding also plays a role, for
example its size is increased in discrete steps.