Standards and protocols supporting the Bitcoin Cheque payment system. In development.
The usage of Bitcoin Cheque involves three parties, the customer, the merchant and a Bitcoin Bank. In order to conduct a payment, certain messages has to be sent between these three parties. This involve three protocols, each for the links between them.
- Bitcoin Cheque Payment Protocol, the protocol between the customers Banking App and merchants web-shop
- Banking App Protocol, the protocol between the Bitcoin Bank and the customer’s Banking App
- Bitcoin Cheque Validation Protocol, the protocol between the merchants web-shop and and Banking App
Besides the protocol, the cheque itself must be specified:
Additional, an optional but highly recommended specification:
- Payment App Browser HTTP Header Standard, gives recommendations for the Banking App and other digital payment apps.
Overview of the payment process
A payment process will follow these steps:
- A customer visits a merchant’s web shop and wants to make a purchase. The customer’s web browser has a “Banking App plugin” installed which reads the price and payment information from the web shop’s page.
- When the customer clicks the payment link, the Banking App plugin starts the payment process. The plugin will send a request to the Bitcoin Bank telling he want to make a payment to the merchant.
- If the customer has enough Bitcoins in his bank wallet, the bank will respond with the Bitcoin Cheque holding the amount of money for the payment.
- The Banking App plugin then sends the Bitcoin Cheque to the merchant’s web shop to initiate the order.
- The merchant’s web shop receives the Bitcoin Cheque and verifies that it contains the correct value and the correct Bitcoin receive address. If everything is fine, it sends the cheque to the Bitcoin Bank to confirm the cheque and request the payment.
- The Bitcoin Bank confirms the cheque and response with an ok message.
- The merchant can now trust that the bank will make the payment and can safely give the content to the customer.
- Later, if no complaints has arisen, the bank transferee the Bitcoins to the merchant. There is no need to wait for Bitcoin transaction to be confirmed, this enables the payment process to get completed in a few seconds.
A Bitcoin Bank is a business that will offer these payment services by issuing Bitcoin Cheques and provide Bitcoins exchange. The income may be from charging a fee for the service.
In today’s world there already exists a lot of Bitcoin exchange businesses and some few that have introduced Bitcoin debit cards to the market. I think it is assumable that these will be the first to offer Bitcoin Cheques, once there is a need for it in the market. As later will be discussed, Bitcoin Banks and Bitcoin Cheques will play an important roles in the mass adoption of Bitcoins.
When a customer wants to purchase some goods for Bitcoins, it must log-in to the Bitcoin Bank to get a Bitcoin Cheque. To get the cheque, the customer must at least provide information like amount and the receiver’s name and the receiver’s Bitcoin wallet address. The request must be done using a secure connection. The protocol should also support two-factor authentication, but that requirement should be configurable, depending on the amount asking for. I don’t want to do authentication each time I pay to read a page.
If the Bitcoin Bank trusts the receiver and the customer has enough fund its bank account, it will return with the Bitcoin Cheque file.
On the other side, after the merchant has verified that the cheque contains the same criteria as it asked for, and provided that it trust the bank, it will use the protocol to get the payment. This too must be done through a secure connection. The Merchant will send a request containing the information hold by the cheque. After the bank has verified that the requested cheque is identical to what it previous issued, and that the cheque is unclaimed, it will return an OK response. This bank will then make the payment to the Merchants Bitcoin wallet at the cheque’s payment date/time.
An important requirement by having an open Bitcoin Cheque standard and an open Bitcoin Cheque Protocol, is to make independence between the CMS plugins providers, Bitcoin Banks and browser wallet plugins. It is likely that a system integrator would like to develop and provide solutions for all three parties, but it should be open to enable free competition.
Such a Bitcoin Cheque and the Bitcoin Cheque Protocol may in the future be used to other purposes as well and can be tools to make financial infrastructures. Hence the format of it should be generic to enable future usage.
Even this concept is called Bitcoin Cheque Protocol, it really has no strong ties to Bitcoins. Its mere purpose is to request the cheque and collects its payments, which could hold its value in any currencies. In fact, most of the protocol here described can be made generic to fit any currencies. Only the last phase in the payment process, where the actual Bitcoins are transferred, is something that truly relates to the Bitcoin protocol itself.
How to contribute?
The standards and protocols are currently under development. Help is needed to complete and review it.
To help you can clone the Git repository and send inn patches with proposals of changes. Patches are sent to mail (a) bitcoincheque.org.