1
0
mirror of https://github.com/bitcoin/bips.git synced 2025-06-30 12:42:43 +00:00

Merge pull request #30 from swansontec/master

Fix BIP 21 and BIP 72 ambiguities & mistakes
This commit is contained in:
Wladimir J. van der Laan 2014-03-18 17:22:17 +01:00
commit a3fe3270ac
2 changed files with 23 additions and 12 deletions

View File

@ -26,19 +26,29 @@ They SHOULD require the user to manually approve each payment individually, thou
=== Operating system integration === === Operating system integration ===
Graphical bitcoin clients SHOULD register themselves as the handler for the "bitcoin:" URI scheme by default, if no other handler is already registered. If there is already a registered handler, they MAY prompt the user to change it once when they first run the client. Graphical bitcoin clients SHOULD register themselves as the handler for the "bitcoin:" URI scheme by default, if no other handler is already registered. If there is already a registered handler, they MAY prompt the user to change it once when they first run the client.
=== BNF grammar === === General Format ===
Bitcoin URIs follow the general format for URIs as set forth in RFC 3986. The path component consists of a bitcoin address, and the query component provides additional payment options.
Elements of the query component may contain characters outside the valid range. These must first be encoded according to UTF-8, and then each octet of the corresponding UTF-8 sequence must be percent-encoded as described in RFC 3986.
=== ABNF grammar ===
(See also [[#Simpler syntax|a simpler representation of syntax]]) (See also [[#Simpler syntax|a simpler representation of syntax]])
bitcoinurn = "bitcoin:" bitcoinaddress [ "?" bitcoinparams ] bitcoinurn = "bitcoin:" bitcoinaddress [ "?" bitcoinparams ]
bitcoinaddress = base58 *base58 bitcoinaddress = *base58
bitcoinparams = *bitcoinparam bitcoinparams = bitcoinparam [ "&" bitcoinparams ]
bitcoinparam = amountparam | labelparam | messageparam | otherparam | reqparam bitcoinparam = [ amountparam / labelparam / messageparam / otherparam / reqparam ]
amountparam = "amount=" *digit [ "." *digit ] amountparam = "amount=" *digit [ "." *digit ]
labelparam = "label=" *pchar labelparam = "label=" *qchar
messageparam = "message=" *pchar messageparam = "message=" *qchar
otherparam = pchar *pchar "=" *pchar otherparam = qchar *qchar [ "=" *qchar ]
reqparam = "req-" pchar *pchar "=" *pchar reqparam = "req-" qchar *qchar [ "=" *qchar ]
Here, "qchar" corresponds to valid characters of an RFC 3986 URI query component, excluding the "=" and "&" characters, which this BIP takes as separators.
The scheme component ("bitcoin:") is case-insensitive, and implementations must accept any combination of uppercase and lowercase letters. The rest of the URI is case-sensitive, including the query parameter keys.
=== Query Keys === === Query Keys ===

View File

@ -22,8 +22,9 @@ bitcoin wallets.
The bitcoin: URI scheme is extended with an additional, optional The bitcoin: URI scheme is extended with an additional, optional
"r" parameter, whose value is a URL from which a PaymentRequest "r" parameter, whose value is a URL from which a PaymentRequest
message should be fetched (unsafe and reserved octets in the URL value message should be fetched (characters not allowed within the scope
must be encoded as described in RFC 1738). of a query parameter must be percent-encoded as described in RFC 3986
and bip-0021).
If the "r" parameter is provided and backwards compatibility If the "r" parameter is provided and backwards compatibility
is not required, then the bitcoin address portion of the URI may be is not required, then the bitcoin address portion of the URI may be
@ -52,9 +53,9 @@ r parameter and will initiate a payment to bitcoin address.
==Examples== ==Examples==
A backwards-compatible request: A backwards-compatible request:
<pre> <pre>
bitcoin:mq7se9wy2egettFxPbmn99cK8v5AFq55Lx?amount=0.11&r=https%3A%2F%2Fmerchant.com%2Fpay.php%3Fh%3D2a8628fc2fbe bitcoin:mq7se9wy2egettFxPbmn99cK8v5AFq55Lx?amount=0.11&r=https://merchant.com/pay.php?h%3D2a8628fc2fbe
</pre> </pre>
Non-backwards-compatible equivalent: Non-backwards-compatible equivalent:
<pre> <pre>
bitcoin:?r=https%3A%2F%2Fmerchant.com%2Fpay.php%3Fh%3D2a8628fc2fbe bitcoin:?r=https://merchant.com/pay.php?h%3D2a8628fc2fbe
</pre> </pre>