Bitcoin PayCode

A PayCode is a user-friendly identifier for a bitcoin address. The concept is inspired by easypaysy. The following is a simple prototype to demonstrate the basic concept.

Example PayCode: 326681/625/0

In our example, the PayCode 326681/625/0 represents the address 1LBregs3t4goLpvBghbJbFLoyt1rPL3jJh because that address occured in block number 326681 in transaction number 625 in output number 0.

Convert PayCode to Address


Convert Address to PayCode

PayCode Certificate

A PayCode certificate proves the mapping from PayCode to a particular address. It is basically an SPV inclusion proof. The most simple proof consists of a transaction inclusion proof and the corresponding block header. More subsequent block headers can be added to strengthen the proof of work on top. To prove a block's height, we can either download the full headers chain or we could use the more succinct FlyClient scheme.

Inclusion Proof

Block Header

Further Work

To improve privacy the easypayse whitepaper discusses solutions that do not reuse addresses. Their scheme also introduces checksums and other topics.

PayCode Usability

The usability of the PayCode is another interesting research topic. I advocate for the most simple number format. The code should not contain any special characters but only numbers from 0-9. This is to maximize the usability. The purpose of payment codes is for humans to easily communicate an address. It should be concise. It should leave very little room for error. A credit card number like format is intuitive. It works well internationally. People are used to enter it into a device. It is easy to communicate.

A basic scheme simply adds trailing zeros. Applied to our example 326681/625/0 we get 3266 8106 2500. We can add a IBAN-like checksum by converting it into an integer and performing a basic mod-97 operation. In our example 326681062500 % 97 == 15 the final result would be
3266 8106 2500 15.

Bitcoin URI

For Wallet compatibility we can extend the Bitcoin URI standard bitcoin:32668106250015