From 1f64d2b06d628dffdc297be9a8afbb9da4e6b6ca Mon Sep 17 00:00:00 2001 From: Peter Todd Date: Mon, 21 Oct 2013 00:32:10 -0400 Subject: Rename to mediawiki extension --- bip-0020.mediawiki | 211 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 211 insertions(+) create mode 100644 bip-0020.mediawiki (limited to 'bip-0020.mediawiki') diff --git a/bip-0020.mediawiki b/bip-0020.mediawiki new file mode 100644 index 0000000..a96d8d0 --- /dev/null +++ b/bip-0020.mediawiki @@ -0,0 +1,211 @@ +
+  BIP: 20
+  Title: URI Scheme
+  Author: Luke Dashjr 
+  Status: Rejected
+  Type: Standards Track
+  Created: 10-01-2011
+
+ +BIP 0020 is based off an earlier document by Nils Schneider. + +==Abstract== +This BIP proposes a URI scheme for making Bitcoin payments. + +==Motivation== +The purpose of this URI scheme is to enable users to easily make payments by simply clicking links on webpages or scanning QR Codes. + +==Specification== + +=== General rules for handling (important!) === + +Bitcoin clients MUST NOT act on URIs without getting the user's authorization. +They SHOULD require the user to manually approve each payment individually, though in some cases they MAY allow the user to automatically make this decision. + +=== 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. + +=== BNF grammar === + +(See also [[#Simpler syntax|a simpler representation of syntax]]) + + bitcoinurn = "bitcoin:" bitcoinaddress [ ";version=" bitcoinversion ] [ "?" bitcoinparams ] + bitcoinaddress = base58 *base58 + bitcoinversion = "1.0" + bitcoinparams = *bitcoinparam + bitcoinparam = amountparam | labelparam | messageparam | sendparam | otherparam + amountparam = "amount=" amount + amount = amountdecimal | amounthex + amountdecimal = *digit [ "." *digit ] [ "X" *digit ] + amounthex = "x" *hexdigit [ "." *hexdigit ] [ "X" *hexdigit ] + labelparam = "label=" *pchar + messageparam = "message=" *pchar + sendparam = "send=" *pchar + otherparam = pchar *pchar "=" *pchar + +=== Query Keys === + +*label: Label for that address (e.g. name of receiver) +*address: bitcoin address +*message: message that shown to the user after scanning the QR code +*size: amount of base bitcoin units ([[#Transfer amount/size|see below]]) +*send: used to send bitcoin, rather than to request them +*(others): optional, for future extensions + +==== Transfer amount/size ==== + +If an amount is provided, it may be specified either in decimal or, when prefixed with a single "x" character, hexadecimal. +The number SHOULD be followed by "X" to signify an exponent to the base multiplier. +Thus, "X8" multiplies your number by 100,000,000. +For decimal values, this means the standard BTC unit. +For hexadecimal values, this means ᵇTBC units (which are equivalent to 42.94967296 BTC). +If exponent is omitted, implementations SHOULD assume X8 for decimal numbers, and X4 for hexadecimal numbers. +I.e. amount=50.00 is treated as 50 BTC, and amount=x40 is treated as 40 TBC. +When specifying bitcoin base units, "X0" SHOULD be used. + +Bitcoin clients MAY display the amount in any format that is not intended to deceive the user. +They SHOULD choose a format that is foremost least confusing, and only after that most reasonable given the amount requested. +For example, so long as the majority of users work in BTC units, values should always be displayed in BTC by default, even if mBTC or TBC would otherwise be a more logical interpretation of the amount. + +== Rationale == + +===Payment identifiers, not person identifiers=== +Current best practices are that a unique address should be used for every transaction. +Therefore, a URI scheme should not represent an exchange of personal information, but a one-time payment. + +===Accessibility (URI scheme name)=== +Should someone from the outside happen to see such a URI, the URI scheme name already gives a description. +A quick search should then do the rest to help them find the resources needed to make their payment. +Other proposed names sound much more cryptic; the chance that someone googles that out of curiosity are much slimmer. +Also, very likely, what he will find are mostly technical specifications - not the best introduction to bitcoin. + +==Forward compatibility== +We want URIs generated in 2011 to still work in 2036: think about extensibility. +Of course we can make only educated guesses about the future, but don't act as if there is none. +This should be the best we can do, but it should not be seen as set in stone. +Make it possible for later generations to improve our work, to mend our errors, without breaking the URIs created now. + +== Appendix == + +=== Simpler syntax === + +This section is non-normative and does not cover all possible syntax. +Please see the [[#BNF grammar|BNF grammar]] above for the normative syntax. + +[foo] means optional, are placeholders + + bitcoin:
[;version=1.0][?amount=][?label=