Subject: [Bitcoin-development] BIP21 bitcoin URIs and HTML5

From: Mike Hearn <[email-masked]>
Date: Wed, 24 Apr 2013 09:42:32 +0200

HTML5 allows web apps to register themselves for handling URI schemes, such
as the bitcoin: URI that is already in use and being extended as part of
the payment protocol.

The bad news is that for security reasons there is a whitelist of
acceptable schemes in the spec:

http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-navigator-registerprotocolhandler

The good news is that yesterday I talked to Hixie about it and he added
bitcoin to the whitelist:

http://html5.org/tools/web-apps-tracker?from=7849&to=7850

I'm currently finding out what the process is for browser makers to notice
the change (perhaps they watch the spec commit history and nothing needs to
be done), but within a few months most users should have browsers that can
accept bitcoin as a web-app handleable protocol scheme. I suppose IE10
users may be the laggards, but I guess we can live with that for now.

Ian pointed out some errors in the BIP21 spec. What's the process for
amending the BIP? Do we need to create a new one and mark the old one as
replaced, or can we just fix it in place given the relatively exotic nature
of most of the issues? Here's his feedback:

- BNF doesn't say what it's character set is (presumably it's Unicode)

 - "bitcoinparams" production doesn't define the separator, so in theory
the syntax is ...?label=foomessage=fooother=foo (rather than
...?label=foo&message=foo etc)

- the syntax allows ?amount=FOO&amount=1.1 as far as I can tell, since
"otherparam" matches any name followed by any value, including "amount"
followed by a bogus value.

- "pchar" is referenced without definition.

- the "simpler" syntax is just wrong (it would result in
bitcoin:address?amount=1?label=FOO rather
than bitcoin:address?amount=1&label=FOO)

BTW the IETF URL specs are being obsoleted by http://url.spec.whatwg.org/,
at least for Web purposes. In that case matters.