Skip to content
Kalle Rosenbaum edited this page May 4, 2015 · 2 revisions

Rationale

In order to make PoP work smoothly, we need some way of transferring the PoP request to the client. This can be accomplished in a number of ways. Here I will list some options.

Extenting BIP21 (bitcoin: scheme)

Like BIP72, we could extend BIP21 to support PoP requests. For example:

bitcoin:?p=https%3A%2F%2Fmerchant.com%2Fpop.php&nonce=972632163068&label=service1

The p parameter is the PoP destination, the nonce is, you guessed it, the nonce. The other parameters of BIP21 are also accepted are amount, label and message.

The problem with this is that this is not a payment and therefore we might confuse users and wallet developers. When implementing my proof of concept wallet, a fork of Mycelium, I created a mess trying to shoehorn PoP into the bitcoin: scheme.

Create a new scheme, btcpop:

We could make a BIP similar to BIP21 that introduces a new scheme, for example btcpop:. That could look something like this:

btcpop:?p=https%3A%2F%2Fmerchant.com%2Fpop.php&nonce=972632163068&label=service1

This scheme should take all the standard parameters that the BIP21 accepts, i.e. amount, label and message. The p and nonce paramemters are mandatory and the rest are optional.

It is more clear to a user what is going on when this scheme is uses for PoP. Also wallets can easily have different handlers for different schemes. In android, it would be a PoPActivity for btcpop: and SendPaymentActivity for bitcoin:. It's harder to make that distinction if everything is encoded under the same scheme.

Extend BIP70

TBD