Proposed features/Cryptocurrencies with payment tag

From OpenStreetMap Wiki
Jump to navigation Jump to search
Cryptocurrency acceptance
Status: Proposed (under way)
Proposed by: Andrasfuchs
Tagging: currency:crypto:*=yes,no
Applies to: node
Definition: Currency key extension for cryptocurrency support
Statistics:

Drafted on: 2021-08-28
RFC start: 2021-08-28


Proposal

Cryptocurrencies are new ways to pay for goods and services that are gaining popularity. The most popular is Bitcoin at the moment, but others like Ethereum, Litecoin or DASH are also used as means of payment. They started in 2009 and there are more than 11'000 cryptocurrencies and tokens registered at CoinMarketCap.com at the moment, but not all are used for payment, or used at all. More than 10% of merchants accepted them in Venezuela at the end of 2020[1].

This proposal aims to unify the different formats that are used with the payment and currency keys to indicate if the shop/merchant/service provider accepts specific digital currencies.

There are some sites already like https://coinmap.org/, https://coinatmradar.com/, https://www.dashdirect.org/ or https://discoverdash.com/ that map cryptocurrency ATMs and merchants, but they need to use their closed, private databases in addition to OSM partly because there is no unified way to indicate cryptocurrency payments, especially for smaller coins and tokens. This proposal would allow them to work on a common database in OSM, just like OSM is a great repository for non-crypto ATMs.

I suggest to indicate general cryptocurrency acceptance with payment:cryptocurrencies=yes (like it is used now), and the acceptance of one particular cryptocurrency with currency:crypto:BTC=yes or currency:crypto:DASH=yes, where the 3 or 4 capital letter word is the used symbol for that particular currency. This is in line with the notation that OSM uses for normal, fiat ATMs. Although there isn't an ISO standard that covers these currency codes, there is clearly a consensus about them. You can check all the currencies and their symbols at https://coinmarketcap.com/ or any other cryptocurrency information portal or exchange.

I would also recommend to declare the currently used payment:bitcoin, payment:bitcoincash, payment:litecoin, payment:dogecoin and payment:IOTA deprecated (link). These were probably used in that way only because there were no clear rules defined by OpenStreetMap at the time they were uploaded.

The mayor blockchains are so called "layer 1" technologies in the cryptocurrency world. The above suggestion would cover the layer-1 acceptance, but cryptocurrencies started to support layer-2 (or second layer) solutions as well, one of them being the "Lightning Network", or LN for short. LN is a cryptocurrency agnostic technology, meaning that it can be applied on multiple cryptocurrencies to improve their properties like scalability, speed and cost of operation. In the case of Bitcoin for example, it is much more likely that the brick and mortar store will accept Bitcoin with the help of LN, because of its many benefits.

It would be also important to incorporate this information for the OpenStreetMap user, because as a customer I need to know if my wallet software on my phone is able to handle the merchants system, so I potentially need a LN-capable wallet to be able to pay at a certain location. This is especially important because the transaction fee is always paid by the customer and they are significantly lower with LN. Other layer-2 technologies are in development and although LN is the most popular, we don't know which one will be accepted widely.

For this reason I also propose another subkey, "LN" that would be a subkey of the currency:crypto:*, like currency:crypto:BTC:LN=yes (meaning Bitcoin acceptance with Lightning Network support) or currency:crypto:LTC:LN=yes (meaning Litecoin acceptance with Lightning Network support).

I would also restrict the usage of these tags to nodes and ways (areas) only, they probably don't make sense on relations. The older, payment:bitcoin, currency:XBT and currency:BTC tags would be migrated to this new format.

Rationale

Cryptocurrencies can't be ignored, they are getting more and more popular, Venezuela leading the way with 10%+ market penetration. We would need a future-proof tagging system, that helps both the customers who use them and the merchants who accept them. The former would find new places to spend their coins, the latter would get new customers by offering cryptocurrency acceptance without the high fees other (non-crypto) solutions offer.

There are already many places where the community started to upload these pieces of information about cryptocurrency acceptance, so there is clearly a demand for it. Unfortunately there are in multiple formats at the moment: payment:bitcoin (used 7623 times), currency:BTC (used 6 times), currency:XBT (used 491 times). It would be great to unify them while making the format as future-proof as possible.

Tagging

These tags should only be used on nodes and areas.

The format of these keys would be currency:crypto:<layer-1 technology as coin or token symbol>:<layer-2 technology symbol if used>.

The value of the key could be "yes" or "no".

It would be also logical to enforce the creation of the payment:cryptocurrencies=yes tag if there are any currency:crypto:* keys present with a value of "yes" on a node or area.


Tagging documentation should cover well-known layer-2 technologies (like Lightning Network (LN), InstantSend (IS), etc.), their codes, and some samples.

Since they are popular, documentation should also include tokens that are smart contracts on a blockchain like Ethereum, and they should follow the same format: indicating their blockchain as layer-1, and using their token codes as layer-2, like currency:crypto:EHT:CHR in the case of Chromia.

Examples

At the moment there are no nodes that are using this new key format, but they would be used on shops that accept cryptocurrencies.

For example:

  • A shop that accepts Bitcoin would have the following tags:

payment:cryptocurrencies=yes

currency:crypto:BTC=yes


  • Another one that accepts both Bitcoin with Lightning Network support and DASH, but doesn't allow payments directly on the Bitcoin blockchain:

payment:cryptocurrencies=yes

currency:crypto:BTC=no

currency:crypto:BTC:LN=yes

currency:crypto:DASH=yes


  • Another one that accepts Bitcoin (with or without Lightning Network support), DASH (with InstantSend support) and Chromia token (that runs on Ethereum):

payment:cryptocurrencies=yes

currency:crypto:BTC=yes

currency:crypto:BTC:LN=yes

currency:crypto:DASH=yes

currency:crypto:DASH:IS=yes

currency:crypto:ETH:CHR=yes

Rendering

Migration

After this proposal gets approved, there would be certain steps that would be beneficial to complete:

  1. Update Key:payment and declare the payment:bitcoin, payment:bitcoincash, payment:litecoin, payment:dogecoin and payment:IOTA keys deprecated
  2. Run an automated edit on those keys to migrate into the new format, and set their payment:cryptocurrencies value to yes on those new items
  3. Update Key:currency with all the information needed for new contributions, including a few examples
  4. Run an automated edit on the currency:XBT and currency:BTC keys to migrate them into the new format, and set their payment:cryptocurrencies value to yes on those new tags
  5. Add a note to Key:currency to explain why these are not considered valid any more
  6. Wait ~6 months before running an automated edit that removes all previously used payment and currency tags for cryptocurrencies that are not following the new format

Features/Pages affected

Key:payment

Key:currency

External discussions

Talk:Key:payment#Cryptocurrencies

Comments

Please comment on the discussion page.