View Source Digital Token

ISO 24165 introduces a common language for digital currencies. Up until now, digital currencies ("crypto") have been an uncomfortable fit into the world of currencies which are governed by ISO 4217.

ISO 4217 does allow for private use currencies, however in common use several crypto currencies use unnoficial ISO 4217 codes that clash with the standard.

The introduction of ISO 24165 (and is relationship to ISO 20022) creates a framework for the identification and standardisation of digital tokens.

In addition, the Digital Token Identification Foundation (DTIF) has been formed to operate a registry of tokens with downloadable data making it easy to access and integrate the data into applications.

This library provides a means to download and access the digital token registry. One application is the upcoming integration of digital_token into ex_money providing money operations on both ISO 4217 currencies and ISO 24165 digital tokens.

Digital Token Identifier Format

The basic number is eight characters (alphanumeric) in length but excludes vowels (A, E, I, O, U) and the letter Y, and zero shall not be the first character. A ninth character is added and is calculated as a checksum.

Non-ISO 4217 cryptocurrency codes

The following are examples of commonly-used but non-compliant ISO 4217 currency codes. This, plus the inherent flux in the number of digital currencies gave rise to ISO 24165.

Unofficial codeDigitsCurrencyNotes
ADA6AdaADA conflicts with ISO 4217, because AD stands for Andorra.
BNB8Binance BNBBNB conflicts with ISO 4217, because BN stands for Brunei Darussalam.
BSV8Bitcoin SVBSV conflicts with ISO 4217, because BS stands for Bahamas.
BTC, XBT8BitcoinXBT conflicts with ISO 4217, because BT stands for Bhutan.
DASH8DashDASH is of non-standard length.
DOGE4DogecoinDOGE is of non-standard length.
ETH18EthereumETH conflicts with ISO 4217, because ET stands for Ethiopia.
LTC8LitecoinLTC conflicts with ISO 4217, because LT stands for Lithuania.

Installation

The package can be installed by adding digital_token to your list of dependencies in mix.exs:

def deps do
  [
    {:digital_token, "~> 0.2.0"}
  ]
end

The docs can be found at https://hexdocs.pm/digital_token.

Configuration

DigitalToken requires that a JSON library be configuration that provides a decode!/1 function. Common libraries sucn as poison, jason and jsonrs are good examples.

A JSON library can be configured on config.exs like this:

config :digital_token,
  json_library: Jason

Note that the configuration parameter is the module upon which the decode!/1 function is available.

If no configuration is set, DigitalToken will attempt to use Jason, Poison, the JSON library configuration for ecto or the JSON library configured for Phoenix.