Difference between revisions of "Talk:BIP 0021"

From Bitcoin Wiki
Jump to: navigation, search
(re)
 
(Suggesting usability enhancement in BIP 0021 for paying tips in restaurant/bar conveniently: new section)
Line 1: Line 1:
 
Marian on IRC reports: "The BNF [here] is erroneous, regarding the params, it says [ "?" bitcoinparams ] while bitcoinparams is just *bitcoinparam, thus with that BNF there are no separators between the parameters". --[[User:Gmaxwell|Gmaxwell]] ([[User talk:Gmaxwell|talk]]) 23:04, 23 April 2013 (GMT)
 
Marian on IRC reports: "The BNF [here] is erroneous, regarding the params, it says [ "?" bitcoinparams ] while bitcoinparams is just *bitcoinparam, thus with that BNF there are no separators between the parameters". --[[User:Gmaxwell|Gmaxwell]] ([[User talk:Gmaxwell|talk]]) 23:04, 23 April 2013 (GMT)
 +
 +
== Suggesting usability enhancement in BIP 0021 for paying tips in restaurant/bar conveniently ==
 +
 +
I am suggesting a simple downward compatible enhancement of BIP 0021 to allow effortless tipping in restaurants, bars, pubs, etc.
 +
 +
When watching bitpay's mobile checkout demo video "http://www.youtube.com/watch?v=YZ-pqo0cLcE" it is clear that paying tips is somewhat cumbersome for the customer with today's wallet and merchant solutions. This can be dramatically improved with some support by the client app and a minor enhancement of BIP 0021.
 +
 +
<span style="color:#0000FF">'''Enhancement proposal'''</span>:
 +
 +
bitcoinurn    = "bitcoin:" bitcoinaddress [ "?" bitcoinparams ]
 +
bitcoinaddress = base58 *base58
 +
bitcoinparams  = *bitcoinparam
 +
bitcoinparam  = amountparam | labelparam | messageparam | <span style="color:#0000FF">'''tipparam |'''</span> otherparam | reqparam
 +
amountparam    = "amount=" *digit [ "." *digit ]
 +
labelparam    = "label=" *pchar
 +
messageparam  = "message=" *pchar
 +
<span style="color:#0000FF">'''tipparam      = "tip=" [ *digit [ "." *digit ] [ "%" [ "25" ] ] ]'''</span>
 +
otherparam    = pchar *pchar "=" *pchar
 +
reqparam      = "req-" pchar *pchar "=" *pchar
 +
 +
Actually, "tipparam" is just a special case of "otherparam", hence completely downwards compatible.
 +
 +
The tip can be specified in BTC or in percent of the amount, and it acts as a recommended or default tip setting in the customer's wallet app.
 +
 +
'''Examples''' for the following scenario:
 +
:Request 0.567 BTC from the customer of a restaurant and make the customer's bitcoin app show an advanced send dialog that allows adding a tip:
 +
 +
Ex. 1) The pre-set tip value in the send dialog is set to zero (or to the client's pre-configured default tip value):
 +
 +
<nowiki>bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567</nowiki><span style="color:#0000FF">'''&tip='''</span>
 +
<nowiki>bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567</nowiki><span style="color:#0000FF">'''&tip=0'''</span>
 +
 +
Ex. 2) The pre-set tip value is 15% of 0.567 BTC, i.e. 0.08508 BTC:
 +
<nowiki>bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567</nowiki><span style="color:#0000FF">'''&tip=0.08505'''</span>
 +
<nowiki>bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567</nowiki><span style="color:#0000FF">'''&tip=15%25'''</span>
 +
  [URI code of the percentage character is "%25"]
 +
<nowiki>bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567</nowiki><span style="color:#0000FF">'''&tip=15%'''</span>
 +
  ["lazy" notation, omitting the "25"]
 +
 +
Ex. 3) The pre-set tip value is 0.08508 BTC, and the "notes" field in the client app is pre-occupied with the name of the restaurant:
 +
<nowiki>bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567</nowiki><span style="color:#0000FF">'''&tip=15%'''</span>&message=Charly%27s%20Bar
 +
 +
Explanation:
 +
* The new parameter has no "req-" prefix, i.e. if an old bitcoin client app does not know it, it can safely ignore it.
 +
* Otherwise, the customer's bitcoin client will not open the normal but an enhanced send dialog where the customer can specify a tip that will be added to the bill to be paid. In examples 2 and 3 above the tip shall be pre-configured with the amount specified in the URI, so the customer can most conveniently just accept it by a simple tap, if the client app is well-written.
 +
 +
The details are of course dependent on the client app implementation, a best practice-example is demonstrated in the following images.
 +
 +
[[File:bitcoin-app-tipOFF_BIP_0021.png|border]]
 +
 +
 +
[[File:bitcoin-app-tipON_BIP_0021.png|border]]

Revision as of 00:47, 8 September 2013

Marian on IRC reports: "The BNF [here] is erroneous, regarding the params, it says [ "?" bitcoinparams ] while bitcoinparams is just *bitcoinparam, thus with that BNF there are no separators between the parameters". --Gmaxwell (talk) 23:04, 23 April 2013 (GMT)

Suggesting usability enhancement in BIP 0021 for paying tips in restaurant/bar conveniently

I am suggesting a simple downward compatible enhancement of BIP 0021 to allow effortless tipping in restaurants, bars, pubs, etc.

When watching bitpay's mobile checkout demo video "http://www.youtube.com/watch?v=YZ-pqo0cLcE" it is clear that paying tips is somewhat cumbersome for the customer with today's wallet and merchant solutions. This can be dramatically improved with some support by the client app and a minor enhancement of BIP 0021.

Enhancement proposal:

bitcoinurn     = "bitcoin:" bitcoinaddress [ "?" bitcoinparams ]
bitcoinaddress = base58 *base58
bitcoinparams  = *bitcoinparam
bitcoinparam   = amountparam | labelparam | messageparam | tipparam | otherparam | reqparam
amountparam    = "amount=" *digit [ "." *digit ]
labelparam     = "label=" *pchar
messageparam   = "message=" *pchar
tipparam       = "tip=" [ *digit [ "." *digit ] [ "%" [ "25" ] ] ]
otherparam     = pchar *pchar "=" *pchar
reqparam       = "req-" pchar *pchar "=" *pchar

Actually, "tipparam" is just a special case of "otherparam", hence completely downwards compatible.

The tip can be specified in BTC or in percent of the amount, and it acts as a recommended or default tip setting in the customer's wallet app.

Examples for the following scenario:

Request 0.567 BTC from the customer of a restaurant and make the customer's bitcoin app show an advanced send dialog that allows adding a tip:

Ex. 1) The pre-set tip value in the send dialog is set to zero (or to the client's pre-configured default tip value):

bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&tip=
bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&tip=0

Ex. 2) The pre-set tip value is 15% of 0.567 BTC, i.e. 0.08508 BTC:

bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&tip=0.08505
bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&tip=15%25
  [URI code of the percentage character is "%25"]
bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&tip=15%
  ["lazy" notation, omitting the "25"]

Ex. 3) The pre-set tip value is 0.08508 BTC, and the "notes" field in the client app is pre-occupied with the name of the restaurant:

bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=0.567&tip=15%&message=Charly%27s%20Bar

Explanation:

  • The new parameter has no "req-" prefix, i.e. if an old bitcoin client app does not know it, it can safely ignore it.
  • Otherwise, the customer's bitcoin client will not open the normal but an enhanced send dialog where the customer can specify a tip that will be added to the bill to be paid. In examples 2 and 3 above the tip shall be pre-configured with the amount specified in the URI, so the customer can most conveniently just accept it by a simple tap, if the client app is well-written.

The details are of course dependent on the client app implementation, a best practice-example is demonstrated in the following images.

Bitcoin-app-tipOFF BIP 0021.png


Bitcoin-app-tipON BIP 0021.png