|
Monero
|

Directories | |
| ethereum | |
This directory hosts JSON definitions of recognized coins, tokens, and FIDO/U2F apps.
The [fido/](fido) subdirectory contains definitons of apps whose logos and names are shown on Trezor T screen for FIDO/U2F authentication.
Each app must have a single JSON file in the fido/ subdirectory. Every app must have its label set to the user-recognizable application name. The u2f field is a list of U2F origin hashes, and the webauthn field is a list of FIDO2/WebAuthn hostnames for the app. At least one must be present.
Each app can have an icon. If present, it must be a 128x128 pixels RGBA PNG of the same name as the corresponding JSON name. If the app does not have an icon, it must instead have a field no_icon set to true in the JSON.
We currently recognize five categories of coins.
The [bitcoin/](bitcoin) subdirectory contains definitions for Bitcoin and altcoins based on Bitcoin code. The coins/ subdirectory is a compatibility link to bitcoin.
Each Bitcoin-like coin must have a single JSON file in the bitcoin/ subdirectory, and a corresponding PNG image with the same name. The PNG must be 96x96 pixels and the picture must be a circle suitable for displaying on Trezor T.
Testnet is considered a separate coin, so it must have its own JSON and icon.
We will not support coins that have address_type 0, i.e., same as Bitcoin.
The file ethereum/networks.json has a list of descriptions of Ethereum networks. Each network must also have a PNG icon in ethereum/<chain>.png file.
ethereum/tokens is a submodule linking to Ethereum Lists project with descriptions of ERC20 tokens. If you want to add or update a token definition in Trezor, you need to get your change to the tokens repository first.
Trezor will only support tokens that have a unique symbol.
The file nem/nem_mosaics.json describes NEM mosaics.
Supported coins that are not derived from Bitcoin, Ethereum or NEM are currently grouped and listed in separate file misc/misc.json. Each coin must also have an icon in misc/<short>.png, where short is lowercased shortcut field from the JSON.
Throughout the system, coins are identified by a key - a colon-separated string generated from the coin's type and shortcut:
If a token shortcut has a suffix, such as CAT (BlockCat), the whole thing is part of the key (so the key is erc20:eth:CAT (BlockCat)).
Sometimes coins end up with duplicate symbols, which in case of ERC20 tokens leads to key collisions. We do not allow duplicate symbols in the data, so this doesn't affect everyday use (see below). However, for validation purposes, it is sometimes useful to work with unfiltered data that includes the duplicates. In such cases, keys are deduplicated by adding a counter at end, e.g.: erc20:eth:SMT:0, erc20:eth:SMT:1. Note that the suffix is not stable, so these coins can't be reliably uniquely identified.
Duplicate symbols are not allowed in our data. Tokens that have symbol collisions are removed from the data set before processing. The duplicate status is mentioned in support.json (see below), but it is impossible to override from there.
Duplicate detection works as follows:
The file duplicity_overrides.json can override detection results: keys set to true are considered duplicate (in a separate bucket), keys set to false are considered non-duplicate even if auto-detected. This is useful for whitelisting a supported token explicitly, or blacklisting things that the detection can't match (for instance "Battle" and "Bitlle" have suffixes, but they are too similar).
External contributors should not make changes to duplicity_overrides.json, unless asked to.
You can use ./tools/cointool.py check -d all to inspect duplicate detection in detail.
The file coins_details.json is a list of all known coins with support status, market cap information and relevant links. This is the source file for https://trezor.io/coins.
You should never make changes to coins_details.json directly. Use ./tools/coins_details.py to regenerate it from known data.
If you need to change information in this file, modify the source information instead - one of the JSON files in the groups listed above, support info in support.json, or make a pull request to the tokens repository.
If you want to add a wallet link, modify the file wallets.json.
If this is not viable for some reason, or if there is no source information , you can also edit coins_details.override.json. External contributors should not touch this file unless asked to.
We keep track of support status of each coin over our devices. That is trezor1 for Trezor One, trezor2 for Trezor T, connect for Connect and webwallet for Trezor Wallet. In further description, the word "device" applies to Connect and webwallet as well.
This information is stored in support.json. External contributors should not touch this file unless asked to.
Each coin on each device can be in one of four support states:
Supported and soon coins are used in code generation (i.e., included in built firmware). Unsupported and unknown coins are excluded from code generation.
That means that new ERC20 tokens are included as soon as you update the tokens repository. New coin definitions, on the other hand, are not included until someone sets their support status to soon (or a version) explicitly.
You can edit support.json manually, but it is usually better to use the support.py tool. See tools docs for details.