The Bitcoin Cash ecosystem is still small enough that it can be hard to find a merchant selling what you are looking for that will accept your BCH.

Many sites such as acceptbitcoin.cash and Marco Coino are working to compile lists of merchants. However these and similar sites have small incomplete and often localized lists.

This is a problem that needs to be fixed. What good is merchant adoption if no-one can find them?

With some inspiration from Memo.cash, I have developed a decentralized protocol so merchants can self publish their information to the BCH blockchain.

The draft protocol specification is published on Github, below are the high points.

It all starts with a transaction that contains the merchant’s physical location (or code for online only) and the merchant’s name.

Then additional transactions can be broadcast to attach URLs street addresses, phone numbers, etc.

Beyond identifying information there are two additional transaction types:

One that allows for merchant ratings. Intended for customers to provide feedback about their experience.

A second that is designed to attach a “report” to the listing. These reports would could be things such as this business not longer exists, the business no longer accepts BCH, or the reports could act as a verification that the business listing is accurate.

The biggest problem I can see with this system is that it is a public system so anyone can add anything they like. This could open up the system to false listings, false reports, and false reviews. However I think this is a problem that the market can resolve.

The easiest and most obvious spam prevention measure would be for sites and applications that list this information to have minimum fee threshold.

For example a site could choose to only publish listings that were sent with a fee above 0.001 BCH, or have a minimum fee threshold to consider report transactions.

Perhaps use of a payment protocol that would enable including a verification output with every payment sent to the merchant. This would provide a multitude of positive verification though of course this would sacrifice some privacy. Do any of the current payment protocols support adding OP_RETURN data?

I also envision a system of trusted verification services. Whereby a verification of your merchant listing details could be sent from a known trusted verification service having much more weight than other reports attached to the listing. Perhaps this could be achieved simply by having the transactions broadcast from known addresses. Space has also been allocated for use by a future ID verification system.

As I said earlier, this is a draft protocol specification and I am open to ideas to improve upon it.

At this point I have no intention of building a service around this. I would much rather it be an standard protocol that gets built into many different websites, POS systems, wallet implementations etc… However if there is sufficient interest I may consider creating a reference implementation of some sort. Perhaps an Electron Cash plugin or something similar.