Edit 1: I have updated what was called 'Multpay' to 'Multiscan'. Multiscan defines a URI system that allows complex contracts to be built by scanning different URLs. Once a finalisation script has been scanned, the transaction can be completed. This is great for coloured coins etc.

Here is the example:

Example: Alice visits Bobmart to buy a few things.

When alice arrives, she can choose three baskets. Blue, green and red. Each has a NFC chip in the handle containing an order[FF] URL.

Alice picks the blue basket and scans the handle with her phone. Its zero script sets up the transaction to support colored coins using OP_GROUP. Her basket will now reward her with 1 Bobpoint for every bit she spends. Her phone now goes into scan mode.

The green basket’s zero script sets up the transaction to use the Bob’s charities colored coin system. Any transactions would carry discounts that apply to Bobmart Rewards members, but instead of receiving Bob’s her BobPoints, Bobmart gives 1 satoshi to a local charity.

The red basket has no points or charity, and is a basic payment script.

Alice buys some fruit, (order[12]), milk(order[2]), cheese (order[2]) and bread (order[10]), scanning the code on each as she puts them in her basket. walks to the packing area and hits ‘Pay Now’.

Her wallet sets up a contract that applies bob’s rewards to be automatically applied to her wallet. The transaction then pays 500 bits to the dairy who made the milk and cheese, 250 to the Bob’s dairy transport and storage, 1200 bits to various orchards for the fruit and 1000 bits to bob’s fruit department and 500 bits to Bob’s bakery. The wallet can send this onto the network and Bob and all of his suppliers are paid at once.





Thanks to some clever thinking early on, BIP 0020 is a key part of what makes it very easy to perform a bitcoin transaction if you have a smart phone with a camera. The URLs are not dissimilar to a web address, and as such can be easily sent over an internet connection. What is also possible is for that address to be translated into a QR code. This means the creation of a URI standard for Bitcoin has delivered us a way to put a bitcoin point of sale anywhere with a screen.

Sadly, since being created in 2011, BIP0020 has only had modest attention.

BIP0021 in 2012 is a modification by Luke Dashjr. BIP 0020 was based off an earlier document by Nils Schneider. The alternative payment amounts in BIP 0020 have been removed.

And BIP0072 in 2013 which allows users to click on a link in a web page or email to initiate the payment protocol, while being backwards-compatible with existing bitcoin wallets.

Pretty much as described. Not sure how widely it's used. I haven't included it in the new spec, but I could be talked around.

I may have missed some, but clearly, for the next generation of scripts and smart contracts, something better is needed.

I am proposing a new Bitcoincash URI standard which allows a much broader type of transaction to be constructed. The syntax is all compliant with RFC3986 allowing over 3000 characters of script to fit in a full sized QR code. This is could easily be used to send funds to 50+ bitcoin addresses at once, or setup complex output scripts to use. In addition, a proposed update will raise the limit of an OP_RETURN output size to 220 bytes, with the potential to raise it to around 520bytes at some point. This is room for an on-chain invoice or for a data payload needed by a token or sidechain system.

But how to package it?

Because they just take the scripts and translate them directly to machine code, any bitcoincash: version 2.0 compliant SPV wallet should be able to read and send a smart contract. A sidechain or off-chain database may control parts of your script, however this is not the wallet's concern.

The proposed standard also adds other new features such as a multipay option (scan multiple QR codes into a single transaction) and the addition of arrays for holding addresses, amounts, scripts and other transaction data.

For Bitcoin Cash to become meet it's full potential it must be the easiest currency to use with scripts and smart contracts. By enabling complex scripts and sidechain tokens to be transacted using any smartphone wallet the widespread deployment of smart contracts can be achieved very quickly and in a way that anyone who has done a bitcoin transaction understands. Set up your purchase/service/agreement and be shown a code. Scan it with your wallet and hit send.

To make this the best possible spec, it needs to be reviewed by as many people as possible. Once it has been finalised and accepted it will be made open to everyone. I invite anyone interested to buy the content. If you want access and can't afford it, let me know. I'm nothing if not reasonable. If you pay and you don't think it's worth it, let's talk.