From 839773fe0e5b8617b085aba6747ea1a33faeb2c2 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 22 Nov 2013 16:31:27 +0100 Subject: [PATCH 001/767] init --- README | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 README diff --git a/README b/README new file mode 100644 index 000000000..df3dce820 --- /dev/null +++ b/README @@ -0,0 +1,8 @@ +trezor-crypto +============= + +Common files shared among TREZOR repositories. + +This repo is meant to be included as submodule to others using: + +git submodule add https://github.com/trezor/trezor-common.git trezor-common From fccebb724cc8446cb2040f5468a2e451463e38ab Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 22 Nov 2013 17:27:47 +0100 Subject: [PATCH 002/767] add protobuf files and udev rules --- protob/storage.proto | 18 ++ protob/trezor.proto | 408 ++++++++++++++++++++++++++++++++++++++ udev/51-trezor-udev.rules | 8 + 3 files changed, 434 insertions(+) create mode 100644 protob/storage.proto create mode 100644 protob/trezor.proto create mode 100644 udev/51-trezor-udev.rules diff --git a/protob/storage.proto b/protob/storage.proto new file mode 100644 index 000000000..710cf66ec --- /dev/null +++ b/protob/storage.proto @@ -0,0 +1,18 @@ +/* + Structure of Storage area of TREZOR + + Author: Marek Palatinus + + Version: 0.1 +*/ + +import "trezor.proto"; + +message Storage { + required uint32 version = 1; + optional HDNodeType seed = 2; + optional bool seed_encrypted = 3; + optional uint32 pin_failed_attempts = 4; + optional bytes pin = 5; + optional SettingsType settings = 6; +} diff --git a/protob/trezor.proto b/protob/trezor.proto new file mode 100644 index 000000000..57e81f706 --- /dev/null +++ b/protob/trezor.proto @@ -0,0 +1,408 @@ +/* + Messages for TREZOR communication + + Author: Marek Palatinus + + Version: 0.6 +*/ + +import "google/protobuf/descriptor.proto"; + +extend google.protobuf.FieldOptions { + optional bool binary = 50001; // message field has binary payload +} + +extend google.protobuf.EnumValueOptions { + optional bool wire_in = 50002; // message can be transmitted via wire from PC to TREZOR + optional bool wire_out = 50003; // message can be transmitted via wire from TREZOR to PC + optional bool wire_debug_in = 50004; // message can be transmitted via debug wire from PC to TREZOR + optional bool wire_debug_out = 50005; // message can be transmitted via debug wire from TREZOR to PC +} + +/* + Mapping between Trezor wire identifier (int) and protobuf message +*/ +enum MessageType { + MessageType_Initialize = 0 [(wire_in) = true]; + MessageType_Ping = 1 [(wire_in) = true]; + MessageType_Success = 2 [(wire_out) = true]; + MessageType_Failure = 3 [(wire_out) = true]; + MessageType_ChangePin = 4 [(wire_in) = true]; + MessageType_WipeDevice = 5 [(wire_in) = true]; + MessageType_FirmwareErase = 6 [(wire_in) = true]; + MessageType_FirmwareUpload = 7 [(wire_in) = true]; + MessageType_GetEntropy = 9 [(wire_in) = true]; + MessageType_Entropy = 10 [(wire_out) = true]; + MessageType_GetPublicKey = 11 [(wire_in) = true]; + MessageType_PublicKey = 12 [(wire_out) = true]; + MessageType_LoadDevice = 13 [(wire_in) = true]; + MessageType_ResetDevice = 14 [(wire_in) = true]; + MessageType_SignTx = 15 [(wire_in) = true]; + MessageType_SimpleSignTx = 16 [(wire_in) = true]; + MessageType_Features = 17 [(wire_out) = true]; + MessageType_PinMatrixRequest = 18 [(wire_out) = true]; + MessageType_PinMatrixAck = 19 [(wire_in) = true]; + MessageType_PinMatrixCancel = 20 [(wire_in) = true]; + MessageType_TxRequest = 21 [(wire_out) = true]; + MessageType_TxInput = 23 [(wire_in) = true]; + MessageType_TxOutput = 24 [(wire_in) = true]; + MessageType_ApplySettings = 25 [(wire_in) = true]; + MessageType_ButtonRequest = 26 [(wire_out) = true]; + MessageType_ButtonAck = 27 [(wire_in) = true]; + MessageType_ButtonCancel = 28 [(wire_in) = true]; + MessageType_GetAddress = 29 [(wire_in) = true]; + MessageType_Address = 30 [(wire_out) = true]; + MessageType_SettingsType = 31; + MessageType_HDNodeType = 32; // BIP32 structure, what a funny coincidence :-) + MessageType_CoinType = 33; +// MessageType_ = 34; + MessageType_EntropyRequest = 35 [(wire_out) = true]; + MessageType_EntropyAck = 36 [(wire_in) = true]; + MessageType_TransactionType = 37; + MessageType_DebugLinkDecision = 100 [(wire_debug_in) = true]; + MessageType_DebugLinkGetState = 101 [(wire_debug_in) = true]; + MessageType_DebugLinkState = 102 [(wire_debug_out) = true]; + MessageType_DebugLinkStop = 103 [(wire_debug_in) = true]; +} + +// **************************************************************************** +// +// Definition of custom field types +// + +enum FailureType { + Failure_UnexpectedMessage = 1; + Failure_ButtonExpected = 2; + Failure_SyntaxError = 3; + Failure_ActionCancelled = 4; + Failure_PinExpected = 5; + Failure_PinCancelled = 6; + Failure_PinInvalid = 7; + Failure_FirmwareError = 99; +} + +// Specifies which script will be used for given transaction output. +enum ScriptType { + PAYTOADDRESS = 0; + PAYTOSCRIPTHASH = 1; +} + +// Specifies which kind of information is required by transaction signing process +enum RequestType { + TXINPUT = 0; + TXOUTPUT = 1; +} + +// Structure of BIP32 (hierarchical deterministic) node +// Used for imports of private key into the device and exporting public key out of device +message HDNodeType { + required uint32 version = 1; + required uint32 depth = 2; + required uint32 fingerprint = 3; + required uint32 child_num = 4; + required bytes chain_code = 5 [(binary) = true]; + optional bytes private_key = 6 [(binary) = true]; + optional bytes public_key = 7 [(binary) = true]; +} + +message CoinType { + optional bytes coin_name = 1; + optional bytes coin_shortcut = 2; + optional uint32 address_type = 3; + optional uint64 maxfee_kb = 4; +} + +message SettingsType { + optional bytes language = 1; // Trezor uses 'english' as default + optional CoinType coin = 2; + optional bytes label = 3; // Human readable wallet name +} + +// **************************************************************************** +// +// Basic message +// + +// Reset device to default state and ask for device details +// +// Response: Features +message Initialize { +} + +// Response object for Initialize. +message Features { + optional bytes vendor = 1; // Name of the manufacturer, e.g. "bitcointrezor.com" + optional uint32 major_version = 2; // Major version of the device, e.g. 1 + optional uint32 minor_version = 3; // Minor version of the device, e.g. 0 + optional uint32 bugfix_version = 4; + optional bool bootloader_mode = 5; + optional SettingsType settings = 6; // User-level settings of the device + optional bytes device_id = 7 [(binary) = true]; // Device's unique identifier + optional bytes mpk_hash = 8 [(binary) = true]; // Hash of master node (sha256(HDNodeType.public_key).digest()) + optional bool pin_protection = 9; // True if Trezor is covered by PIN +} + +// Overwrites only filled fields of the structure +message ApplySettings { + optional bytes language = 1; + optional bytes coin_shortcut = 2; + optional bytes label = 3; +} + +// Starts workflow for setting/changing the PIN +// Response: ButtonRequest, PinMatrixRequest +message ChangePin { + optional bool remove = 1; // Set True if want to remove PIN protection +} + +// Test if device is live, device will send back the message on success +// +// Response: None or Success +message Ping { + optional bytes message = 1; // Message will be sent back in Success message +} + +// Response object defining success of the previous request +message Success { + optional bytes message = 1; // May contain human readable description of the action or request-specific payload +} + +// Response object defining failure of the previous request +message Failure { + optional FailureType code = 1; // May contain computer-readable definition of the error state + optional bytes message = 2; // May contain human-readable message of the error state +} + +// Message can be sent by the *device* as a resopnse to any request. +// Device is waiting for HW button press. No action is required from computer +// Computer should respond with ButtonAck message or ButtonCancel to cancel +// the original request. +message ButtonRequest { +} + +// Computer agrees to wait for HW button press. +message ButtonAck { +} + +// Computer want to cancel current action (don't wait to HW button press) +message ButtonCancel { +} + +// Message can be sent by the *device* as a response to any request. +// Message asks computer to send back PinMatrixAck with the password encoded in pin matrix scheme. +// +// Response: PinMatrixAck, PinMatrixCancel +message PinMatrixRequest { + optional bytes message = 1; // Human readable message +} + +// Message is sent by the computer as a response to PinMatrixRequest previously sent by the device. +message PinMatrixAck { + required bytes pin = 1; // User must write down the password for accessing the device. +} + +// Message is sent as a response to PinMatrixRequest by the computer, asking the device to cancel +// pending action and reset to the default state. +message PinMatrixCancel { +} + +// Request a sample of random data generated by hardware RNG. May be used +// for tests of internal RNG. +// +// Response: PinMatrixRequest, Entropy, Failure +message GetEntropy { + required uint32 size = 1; // Size of randomly generated buffer +} + +// Response to GetEntropy request contains random data generated by internal HRNG. +message Entropy { + required bytes entropy = 1 [(binary) = true]; // Stream of generated bytes +} + +// Ask device for public key corresponding of address_n path. This may be used for generating +// public keys on the computer independently to the device. +// +// Response: PublicKey, Failure +message GetPublicKey { + repeated uint32 address_n = 1; +} + +// Contains public key derived from device's seed. +message PublicKey { + required HDNodeType mpk = 1; // BIP32 node public key + chaincode +} + +message GetAddress { + repeated uint32 address_n = 1; // Parameter for address generation algorithm to derive the address from the master node +} + +message Address { + required bytes address = 1; // Bitcoin address in base58 encoding corresponding to GetAddress(n) call +} + +// Request device to wipe all sensitive data and settings. +// Device will be turned to uninitialized state. +// +// Response: ButtonRequest +message WipeDevice { +} + +// Load seed and related internal settings from computer to the device. Existing seed is overwritten. +// +// Response: Success, ButtonRequest, PinMatrixRequest, Failure +message LoadDevice { + optional bytes seed = 1; // Seed encoded as a mnemonic (12 english words) + optional HDNodeType node = 2; + optional bytes pin = 3; // Set PIN protection for important actions +} + +// Request device to do full-reset, to generate new seed +// and ask user for new settings (PIN). +// Workflow is splitted into ResetDevice/EntropyRequest to be sure +// that entropy provided by device isn't calculated on base of computer provided +// entropy. +// +// +// Response: EntropyRequest, PinMatrixRequest, Failure +message ResetDevice { + optional bool display_random = 1; // If set, displays entropy generated by the device used + // for generating the seed *before* asking + // for additional entropy from computer +} + +// Asks for additional Entropy from host computer +message EntropyRequest { +} + +// Provide additional entropy for seed generation function. +message EntropyAck { + optional bytes entropy = 1 [(binary) = true]; // Recommended to provide 256 bytes of random data. +} + +// **************************************************************************** +// +// Messages related to transaction signing +// + +// Request the device to sign the transaction +// +// Response: TxRequest, PinMatrixRequest, Failure +message SignTx { + required uint32 outputs_count = 3; // Count of outputs of the transaction + required uint32 inputs_count = 5; // Count of inputs of the transaction +} + +// Request a simplified workflow of signing. +// This method doesn't support streaming, +// so there may be hardware limits +// in number of inputs and outputs. +// +// This simplified workflow should not be used +// in production, it is designed mainly for debug purposes. +// +// When everything is fine, Success.message contains +// serialized transaction. +// +// Response: Success, PinMatrixRequest, Failure +message SimpleSignTx { + repeated TxInput inputs = 1; + repeated TxOutput outputs = 2; +} + +// Sent by the device as a response for SignTx. Device asks for information for signing transaction. +// If request_index is set, device asks for TxInput/TxOutput message (depends on request_type) +// with details of index's input. +// If signed_index is set, 'signature' contains signed input of signed_index's input. +message TxRequest { + optional int32 request_index = 1; // If >=0, device expects TxInput/TxOutput message from the computer + optional RequestType request_type = 2; // Ask for TxInput or TxOutput? + optional int32 signed_index = 3; // If >=0, 'signature' contains signed input of this input + optional bytes signature = 4 [(binary) = true]; // If signed_index>=0, represent signature of the signed_index input + optional bytes serialized_tx = 5 [(binary) = true]; // Part of serialized and signed transaction +} + +// Transaction onput for SignTx workflow. It is response to TxRequest message sent by device. +// +// Response: TxRequest, Failure +message TxInput { +// required uint32 index = 1; // Position of input in proposed transaction +// required uint64 amount = 3; // Amount to spend in satoshis. The rest will be used for transaction fees + repeated uint32 address_n = 1; // Parameter for address generation algorithm to derive the address from the master node + required bytes prev_hash = 2 [(binary) = true]; // Hash of previous transaction output to spend by this input + required uint32 prev_index = 3; // Index of previous output to spend + optional bytes script_sig = 4 [(binary) = true]; // Script signature + optional uint32 sequence = 5 [default=0xffffffff]; +} + +// Transaction output for SignTx workflow. It is response to TxRequest message sent by the device. +// This contains all data necessary to build transaction output (script_pubkey). +message TxOutput { +// required uint32 index = 1; // Position of output in proposed transaction + required bytes address = 1; // Target bitcoin address in base58 encoding + repeated uint32 address_n = 2; // Has higher priority than "address". + required uint64 amount = 3; // Amount to send in satoshis + required ScriptType script_type = 4; // Select output script type + repeated bytes script_args = 5 [(binary) = true]; // Provide additional parameters for the script (its script-depended) +} + +message TransactionType { + // Raw (binary) structure describing transaction output. + // This is used only for obtaining hashes of existing transactions. + message TxOutputBin { + required uint64 amount = 1; + required bytes script_pubkey = 2 [(binary) = true]; + } + optional uint32 version = 1 [default=1]; + repeated TxInput inputs = 2; + repeated TxOutputBin outputs = 3; + optional uint32 lock_time = 4 [default=0]; +} + +// **************************************************************************** +// +// Bootloader messages +// + +message FirmwareErase { +} + +message FirmwareUpload { + required bytes payload = 1 [(binary) = true]; // Firmware to flash into device +} + +// **************************************************************************** +// +// Debug* messages are used only on DebugLink interface (separated from USB HID) +// + +// Virtually "press" the button on the device. +// Message is available only on debugging connection and device must support "debug_link" feature. +// +// Response: Success +message DebugLinkDecision { + required bool yes_no = 1; // True for "confirm", False for "cancel" +} + +// When sent over debug link connection, computer asks for some internal information of the device. +// +// Response: DebugLinkState +message DebugLinkGetState { + optional bool layout = 1; // Request raw buffer of display + optional bool pin = 2; // Request current pin + optional bool matrix = 3; // Request current pin matrix + optional bool seed = 4; // Request current seed +// optional bool state = 5; +} + +// Response object reflecting device's current state. It can be received only over debug link connection. +message DebugLinkState { + optional bytes layout = 1 [(binary) = true]; // Raw buffer of display + optional bytes pin = 2; // Current PIN, blank if PIN is not set/enabled + optional bytes matrix = 3; // Current PIN matrix + optional bytes seed = 4; // Current seed (in mnemonic format) +// optional bytes state = 5 [(binary) = true]; +} + +// Ask device to shutdown/restart +message DebugLinkStop { +} diff --git a/udev/51-trezor-udev.rules b/udev/51-trezor-udev.rules new file mode 100644 index 000000000..555565ae4 --- /dev/null +++ b/udev/51-trezor-udev.rules @@ -0,0 +1,8 @@ +# TREZOR: The Hardware Bitcoin Wallet +# http://bitcointrezor.com/ + +# TREZOR +SUBSYSTEM=="usb", ATTR{idVendor}=="534c", ATTR{idProduct}=="0001", MODE="0666", GROUP="dialout", SYMLINK+="trezor%n" + +# TREZOR Raspberry Pi Shield +SUBSYSTEM=="usb", ATTR{idVendor}=="10c4", ATTR{idProduct}=="ea80", MODE="0666", GROUP="dialout", SYMLINK+="trezor%n" From 949b1c06729009784e275f38562c9a64e16ac07f Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 26 Nov 2013 04:34:48 +0100 Subject: [PATCH 003/767] update protofiles --- protob/trezor.proto | 60 +++++++++++++++++++++++++++++++++++++-------- 1 file changed, 50 insertions(+), 10 deletions(-) diff --git a/protob/trezor.proto b/protob/trezor.proto index 57e81f706..082f7f529 100644 --- a/protob/trezor.proto +++ b/protob/trezor.proto @@ -55,10 +55,17 @@ enum MessageType { MessageType_SettingsType = 31; MessageType_HDNodeType = 32; // BIP32 structure, what a funny coincidence :-) MessageType_CoinType = 33; -// MessageType_ = 34; + MessageType_TxOutputBin = 34; MessageType_EntropyRequest = 35 [(wire_out) = true]; MessageType_EntropyAck = 36 [(wire_in) = true]; MessageType_TransactionType = 37; + MessageType_SignMessage = 38 [(wire_in) = true]; + MessageType_VerifyMessage = 39 [(wire_in) = true]; + MessageType_MessageSignature = 40 [(wire_out) = true]; + MessageType_PassphraseRequest = 41 [(wire_out) = true]; + MessageType_PassphraseAck = 42 [(wire_in) = true]; + MessageType_PassphraseCancel = 43 [(wire_in) = true]; + MessageType_DebugLinkDecision = 100 [(wire_debug_in) = true]; MessageType_DebugLinkGetState = 101 [(wire_debug_in) = true]; MessageType_DebugLinkState = 102 [(wire_debug_out) = true]; @@ -78,6 +85,7 @@ enum FailureType { Failure_PinExpected = 5; Failure_PinCancelled = 6; Failure_PinInvalid = 7; + Failure_InvalidSignature = 8; Failure_FirmwareError = 99; } @@ -103,6 +111,7 @@ message HDNodeType { required bytes chain_code = 5 [(binary) = true]; optional bytes private_key = 6 [(binary) = true]; optional bytes public_key = 7 [(binary) = true]; + optional bytes address = 8; } message CoinType { @@ -138,8 +147,8 @@ message Features { optional bool bootloader_mode = 5; optional SettingsType settings = 6; // User-level settings of the device optional bytes device_id = 7 [(binary) = true]; // Device's unique identifier - optional bytes mpk_hash = 8 [(binary) = true]; // Hash of master node (sha256(HDNodeType.public_key).digest()) - optional bool pin_protection = 9; // True if Trezor is covered by PIN + optional bool pin_protection = 8; // True if Trezor is covered by PIN + optional bool passphrase_protection = 9; // True if Trezor seed is covered by passphrase } // Overwrites only filled fields of the structure @@ -206,6 +215,19 @@ message PinMatrixAck { message PinMatrixCancel { } +// Device request encryption passphrase +message PassphraseRequest { +} + +// Computer sends passphrase to device. +message PassphraseAck { + required bytes passphrase = 1 [(binary) = true]; +} + +// Computer want to cancel current action +message PassphraseCancel { +} + // Request a sample of random data generated by hardware RNG. May be used // for tests of internal RNG. // @@ -229,7 +251,7 @@ message GetPublicKey { // Contains public key derived from device's seed. message PublicKey { - required HDNodeType mpk = 1; // BIP32 node public key + chaincode + required HDNodeType node = 1; // BIP32 node public key + chaincode } message GetAddress { @@ -284,6 +306,22 @@ message EntropyAck { // Messages related to transaction signing // +message SignMessage { + repeated uint32 address_n = 1; + required bytes message = 2 [(binary) = true]; +} + +message VerifyMessage { + optional bytes address = 1; + optional bytes signature = 2; + optional bytes message = 3 [(binary) = true]; +} + +message MessageSignature { + optional bytes address = 1; + optional bytes signature = 2; +} + // Request the device to sign the transaction // // Response: TxRequest, PinMatrixRequest, Failure @@ -345,13 +383,15 @@ message TxOutput { repeated bytes script_args = 5 [(binary) = true]; // Provide additional parameters for the script (its script-depended) } +// Transaction output with script pubkey in binary form. +// This is used for obtaining hashes of existing transactions +// and for compiling TxOutput for signing. +message TxOutputBin { + required uint64 amount = 1; + required bytes script_pubkey = 2 [(binary) = true]; +} + message TransactionType { - // Raw (binary) structure describing transaction output. - // This is used only for obtaining hashes of existing transactions. - message TxOutputBin { - required uint64 amount = 1; - required bytes script_pubkey = 2 [(binary) = true]; - } optional uint32 version = 1 [default=1]; repeated TxInput inputs = 2; repeated TxOutputBin outputs = 3; From bb7cdd216677cb47b25f66c1d9b917059a40cee4 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 26 Nov 2013 15:48:17 +0100 Subject: [PATCH 004/767] split trezor.proto into messages.proto and types.proto unify cancel messages --- protob/{trezor.proto => messages.proto} | 124 ++---------------------- protob/storage.proto | 6 +- protob/types.proto | 104 ++++++++++++++++++++ 3 files changed, 117 insertions(+), 117 deletions(-) rename protob/{trezor.proto => messages.proto} (72%) create mode 100644 protob/types.proto diff --git a/protob/trezor.proto b/protob/messages.proto similarity index 72% rename from protob/trezor.proto rename to protob/messages.proto index 082f7f529..b55707847 100644 --- a/protob/trezor.proto +++ b/protob/messages.proto @@ -6,18 +6,7 @@ Version: 0.6 */ -import "google/protobuf/descriptor.proto"; - -extend google.protobuf.FieldOptions { - optional bool binary = 50001; // message field has binary payload -} - -extend google.protobuf.EnumValueOptions { - optional bool wire_in = 50002; // message can be transmitted via wire from PC to TREZOR - optional bool wire_out = 50003; // message can be transmitted via wire from TREZOR to PC - optional bool wire_debug_in = 50004; // message can be transmitted via debug wire from PC to TREZOR - optional bool wire_debug_out = 50005; // message can be transmitted via debug wire from TREZOR to PC -} +import "types.proto"; /* Mapping between Trezor wire identifier (int) and protobuf message @@ -42,29 +31,22 @@ enum MessageType { MessageType_Features = 17 [(wire_out) = true]; MessageType_PinMatrixRequest = 18 [(wire_out) = true]; MessageType_PinMatrixAck = 19 [(wire_in) = true]; - MessageType_PinMatrixCancel = 20 [(wire_in) = true]; + MessageType_Cancel = 20 [(wire_in) = true]; MessageType_TxRequest = 21 [(wire_out) = true]; MessageType_TxInput = 23 [(wire_in) = true]; MessageType_TxOutput = 24 [(wire_in) = true]; MessageType_ApplySettings = 25 [(wire_in) = true]; MessageType_ButtonRequest = 26 [(wire_out) = true]; MessageType_ButtonAck = 27 [(wire_in) = true]; - MessageType_ButtonCancel = 28 [(wire_in) = true]; MessageType_GetAddress = 29 [(wire_in) = true]; MessageType_Address = 30 [(wire_out) = true]; - MessageType_SettingsType = 31; - MessageType_HDNodeType = 32; // BIP32 structure, what a funny coincidence :-) - MessageType_CoinType = 33; - MessageType_TxOutputBin = 34; MessageType_EntropyRequest = 35 [(wire_out) = true]; MessageType_EntropyAck = 36 [(wire_in) = true]; - MessageType_TransactionType = 37; MessageType_SignMessage = 38 [(wire_in) = true]; MessageType_VerifyMessage = 39 [(wire_in) = true]; MessageType_MessageSignature = 40 [(wire_out) = true]; MessageType_PassphraseRequest = 41 [(wire_out) = true]; MessageType_PassphraseAck = 42 [(wire_in) = true]; - MessageType_PassphraseCancel = 43 [(wire_in) = true]; MessageType_DebugLinkDecision = 100 [(wire_debug_in) = true]; MessageType_DebugLinkGetState = 101 [(wire_debug_in) = true]; @@ -72,61 +54,6 @@ enum MessageType { MessageType_DebugLinkStop = 103 [(wire_debug_in) = true]; } -// **************************************************************************** -// -// Definition of custom field types -// - -enum FailureType { - Failure_UnexpectedMessage = 1; - Failure_ButtonExpected = 2; - Failure_SyntaxError = 3; - Failure_ActionCancelled = 4; - Failure_PinExpected = 5; - Failure_PinCancelled = 6; - Failure_PinInvalid = 7; - Failure_InvalidSignature = 8; - Failure_FirmwareError = 99; -} - -// Specifies which script will be used for given transaction output. -enum ScriptType { - PAYTOADDRESS = 0; - PAYTOSCRIPTHASH = 1; -} - -// Specifies which kind of information is required by transaction signing process -enum RequestType { - TXINPUT = 0; - TXOUTPUT = 1; -} - -// Structure of BIP32 (hierarchical deterministic) node -// Used for imports of private key into the device and exporting public key out of device -message HDNodeType { - required uint32 version = 1; - required uint32 depth = 2; - required uint32 fingerprint = 3; - required uint32 child_num = 4; - required bytes chain_code = 5 [(binary) = true]; - optional bytes private_key = 6 [(binary) = true]; - optional bytes public_key = 7 [(binary) = true]; - optional bytes address = 8; -} - -message CoinType { - optional bytes coin_name = 1; - optional bytes coin_shortcut = 2; - optional uint32 address_type = 3; - optional uint64 maxfee_kb = 4; -} - -message SettingsType { - optional bytes language = 1; // Trezor uses 'english' as default - optional CoinType coin = 2; - optional bytes label = 3; // Human readable wallet name -} - // **************************************************************************** // // Basic message @@ -184,7 +111,7 @@ message Failure { // Message can be sent by the *device* as a resopnse to any request. // Device is waiting for HW button press. No action is required from computer -// Computer should respond with ButtonAck message or ButtonCancel to cancel +// Computer should respond with ButtonAck message or Cancel to cancel // the original request. message ButtonRequest { } @@ -193,14 +120,10 @@ message ButtonRequest { message ButtonAck { } -// Computer want to cancel current action (don't wait to HW button press) -message ButtonCancel { -} - // Message can be sent by the *device* as a response to any request. // Message asks computer to send back PinMatrixAck with the password encoded in pin matrix scheme. // -// Response: PinMatrixAck, PinMatrixCancel +// Response: PinMatrixAck, Cancel message PinMatrixRequest { optional bytes message = 1; // Human readable message } @@ -210,9 +133,8 @@ message PinMatrixAck { required bytes pin = 1; // User must write down the password for accessing the device. } -// Message is sent as a response to PinMatrixRequest by the computer, asking the device to cancel -// pending action and reset to the default state. -message PinMatrixCancel { +// Message is sent as a cancel response to ButtonRequest, PinMatrixRequest and PassphraseRequest +message Cancel { } // Device request encryption passphrase @@ -224,10 +146,6 @@ message PassphraseAck { required bytes passphrase = 1 [(binary) = true]; } -// Computer want to cancel current action -message PassphraseCancel { -} - // Request a sample of random data generated by hardware RNG. May be used // for tests of internal RNG. // @@ -363,39 +281,13 @@ message TxRequest { // // Response: TxRequest, Failure message TxInput { -// required uint32 index = 1; // Position of input in proposed transaction -// required uint64 amount = 3; // Amount to spend in satoshis. The rest will be used for transaction fees - repeated uint32 address_n = 1; // Parameter for address generation algorithm to derive the address from the master node - required bytes prev_hash = 2 [(binary) = true]; // Hash of previous transaction output to spend by this input - required uint32 prev_index = 3; // Index of previous output to spend - optional bytes script_sig = 4 [(binary) = true]; // Script signature - optional uint32 sequence = 5 [default=0xffffffff]; + required TxInputType input = 1; } // Transaction output for SignTx workflow. It is response to TxRequest message sent by the device. // This contains all data necessary to build transaction output (script_pubkey). message TxOutput { -// required uint32 index = 1; // Position of output in proposed transaction - required bytes address = 1; // Target bitcoin address in base58 encoding - repeated uint32 address_n = 2; // Has higher priority than "address". - required uint64 amount = 3; // Amount to send in satoshis - required ScriptType script_type = 4; // Select output script type - repeated bytes script_args = 5 [(binary) = true]; // Provide additional parameters for the script (its script-depended) -} - -// Transaction output with script pubkey in binary form. -// This is used for obtaining hashes of existing transactions -// and for compiling TxOutput for signing. -message TxOutputBin { - required uint64 amount = 1; - required bytes script_pubkey = 2 [(binary) = true]; -} - -message TransactionType { - optional uint32 version = 1 [default=1]; - repeated TxInput inputs = 2; - repeated TxOutputBin outputs = 3; - optional uint32 lock_time = 4 [default=0]; + required TxOutputType output = 1; } // **************************************************************************** diff --git a/protob/storage.proto b/protob/storage.proto index 710cf66ec..ea5c51133 100644 --- a/protob/storage.proto +++ b/protob/storage.proto @@ -6,7 +6,7 @@ Version: 0.1 */ -import "trezor.proto"; +import "types.proto"; message Storage { required uint32 version = 1; @@ -16,3 +16,7 @@ message Storage { optional bytes pin = 5; optional SettingsType settings = 6; } + +message Session { + optional bytes passphrase = 1 [(binary) = true]; +} diff --git a/protob/types.proto b/protob/types.proto new file mode 100644 index 000000000..259437b74 --- /dev/null +++ b/protob/types.proto @@ -0,0 +1,104 @@ +/* + Types for TREZOR communication + + Author: Marek Palatinus + + Version: 0.6 +*/ + +import "google/protobuf/descriptor.proto"; + +extend google.protobuf.FieldOptions { + optional bool binary = 50001; // message field has binary payload +} + +extend google.protobuf.EnumValueOptions { + optional bool wire_in = 50002; // message can be transmitted via wire from PC to TREZOR + optional bool wire_out = 50003; // message can be transmitted via wire from TREZOR to PC + optional bool wire_debug_in = 50004; // message can be transmitted via debug wire from PC to TREZOR + optional bool wire_debug_out = 50005; // message can be transmitted via debug wire from TREZOR to PC +} + +enum FailureType { + Failure_UnexpectedMessage = 1; + Failure_ButtonExpected = 2; + Failure_SyntaxError = 3; + Failure_ActionCancelled = 4; + Failure_PinExpected = 5; + Failure_PinCancelled = 6; + Failure_PinInvalid = 7; + Failure_InvalidSignature = 8; + Failure_FirmwareError = 99; +} + +// Specifies which script will be used for given transaction output. +enum ScriptType { + PAYTOADDRESS = 0; + PAYTOSCRIPTHASH = 1; +} + +// Specifies which kind of information is required by transaction signing process +enum RequestType { + TXINPUT = 0; + TXOUTPUT = 1; +} + +// Structure of BIP32 (hierarchical deterministic) node +// Used for imports of private key into the device and exporting public key out of device +message HDNodeType { + required uint32 version = 1; + required uint32 depth = 2; + required uint32 fingerprint = 3; + required uint32 child_num = 4; + required bytes chain_code = 5 [(binary) = true]; + optional bytes private_key = 6 [(binary) = true]; + optional bytes public_key = 7 [(binary) = true]; + optional bytes address = 8; +} + +message CoinType { + optional bytes coin_name = 1; + optional bytes coin_shortcut = 2; + optional uint32 address_type = 3; + optional uint64 maxfee_kb = 4; +} + +message SettingsType { + optional bytes language = 1; // Trezor uses 'english' as default + optional CoinType coin = 2; + optional bytes label = 3; // Human readable wallet name +} + +message TxInputType { +// required uint32 index = 1; // Position of input in proposed transaction +// required uint64 amount = 3; // Amount to spend in satoshis. The rest will be used for transaction fees + repeated uint32 address_n = 1; // Parameter for address generation algorithm to derive the address from the master node + required bytes prev_hash = 2 [(binary) = true]; // Hash of previous transaction output to spend by this input + required uint32 prev_index = 3; // Index of previous output to spend + optional bytes script_sig = 4 [(binary) = true]; // Script signature + optional uint32 sequence = 5 [default=0xffffffff]; +} + +message TxOutputType { +// required uint32 index = 1; // Position of output in proposed transaction + required bytes address = 1; // Target bitcoin address in base58 encoding + repeated uint32 address_n = 2; // Has higher priority than "address". + required uint64 amount = 3; // Amount to send in satoshis + required ScriptType script_type = 4; // Select output script type + repeated bytes script_args = 5 [(binary) = true]; // Provide additional parameters for the script (its script-depended) +} + +// Transaction output with script pubkey in binary form. +// This is used for obtaining hashes of existing transactions +// and for compiling TxOutput for signing. +message TxOutputBinType { + required uint64 amount = 1; + required bytes script_pubkey = 2 [(binary) = true]; +} + +message TransactionType { + optional uint32 version = 1 [default=1]; + repeated TxInputType inputs = 2; + repeated TxOutputBinType outputs = 3; + optional uint32 lock_time = 4 [default=0]; +} From bbfefb677c5fc267edd55013631581d6d74aca2e Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 26 Nov 2013 16:10:55 +0100 Subject: [PATCH 005/767] rework storage, session, features --- protob/.gitignore | 1 + protob/Makefile | 7 +++++++ protob/messages.proto | 12 +++++++----- protob/storage.proto | 14 +++++++++----- protob/types.proto | 6 ------ 5 files changed, 24 insertions(+), 16 deletions(-) create mode 100644 protob/.gitignore create mode 100644 protob/Makefile diff --git a/protob/.gitignore b/protob/.gitignore new file mode 100644 index 000000000..0a5bea8f2 --- /dev/null +++ b/protob/.gitignore @@ -0,0 +1 @@ +*.pb diff --git a/protob/Makefile b/protob/Makefile new file mode 100644 index 000000000..a0d53c0c6 --- /dev/null +++ b/protob/Makefile @@ -0,0 +1,7 @@ +all: messages.pb storage.pb types.pb + +%.pb: %.proto + protoc -I/usr/include -I. $< -o $@ + +clean: + rm -f *.pb diff --git a/protob/messages.proto b/protob/messages.proto index b55707847..a90300ad5 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -72,17 +72,19 @@ message Features { optional uint32 minor_version = 3; // Minor version of the device, e.g. 0 optional uint32 bugfix_version = 4; optional bool bootloader_mode = 5; - optional SettingsType settings = 6; // User-level settings of the device - optional bytes device_id = 7 [(binary) = true]; // Device's unique identifier - optional bool pin_protection = 8; // True if Trezor is covered by PIN - optional bool passphrase_protection = 9; // True if Trezor seed is covered by passphrase + optional bytes device_id = 6 [(binary) = true]; // Device's unique identifier + optional bool pin_protection = 7; // True if Trezor is covered by PIN + optional bool passphrase_protection = 8; // True if Trezor seed is covered by passphrase + optional bytes language = 9; + optional bytes label = 10 [(binary) = true]; + repeated CoinType coins = 11; } // Overwrites only filled fields of the structure message ApplySettings { optional bytes language = 1; optional bytes coin_shortcut = 2; - optional bytes label = 3; + optional bytes label = 3 [(binary) = true]; } // Starts workflow for setting/changing the PIN diff --git a/protob/storage.proto b/protob/storage.proto index ea5c51133..f23cb9561 100644 --- a/protob/storage.proto +++ b/protob/storage.proto @@ -10,13 +10,17 @@ import "types.proto"; message Storage { required uint32 version = 1; - optional HDNodeType seed = 2; - optional bool seed_encrypted = 3; - optional uint32 pin_failed_attempts = 4; - optional bytes pin = 5; - optional SettingsType settings = 6; + optional bytes node_serialized = 2 [(binary) = true]; + optional bytes mnemonic = 3 [(binary) = true]; + optional bool encrypted = 4; // whether node_serialized or mnemonic are encrypted (protected by passphrase) + optional uint32 pin_failed_attempts = 5; + optional bytes pin = 6; + optional bytes language = 7; + optional bytes label = 8 [(binary) = true]; } message Session { optional bytes passphrase = 1 [(binary) = true]; + optional CoinType coin = 2; + optional HDNodeType node = 3; } diff --git a/protob/types.proto b/protob/types.proto index 259437b74..0f869ccd6 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -63,12 +63,6 @@ message CoinType { optional uint64 maxfee_kb = 4; } -message SettingsType { - optional bytes language = 1; // Trezor uses 'english' as default - optional CoinType coin = 2; - optional bytes label = 3; // Human readable wallet name -} - message TxInputType { // required uint32 index = 1; // Position of input in proposed transaction // required uint64 amount = 3; // Amount to spend in satoshis. The rest will be used for transaction fees From f6180f771123f0c5b49e8d71e497d66f0771e9ca Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 27 Nov 2013 23:17:37 +0100 Subject: [PATCH 006/767] seed -> mnemonic+node --- protob/messages.proto | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/protob/messages.proto b/protob/messages.proto index a90300ad5..805a167d4 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -74,7 +74,7 @@ message Features { optional bool bootloader_mode = 5; optional bytes device_id = 6 [(binary) = true]; // Device's unique identifier optional bool pin_protection = 7; // True if Trezor is covered by PIN - optional bool passphrase_protection = 8; // True if Trezor seed is covered by passphrase + optional bool passphrase_protection = 8; // True if node/mnemonic is covered by passphrase optional bytes language = 9; optional bytes label = 10 [(binary) = true]; repeated CoinType coins = 11; @@ -193,7 +193,7 @@ message WipeDevice { // // Response: Success, ButtonRequest, PinMatrixRequest, Failure message LoadDevice { - optional bytes seed = 1; // Seed encoded as a mnemonic (12 english words) + optional bytes mnemonic = 1; // Seed encoded as a mnemonic (12 english words) optional HDNodeType node = 2; optional bytes pin = 3; // Set PIN protection for important actions } @@ -321,11 +321,6 @@ message DebugLinkDecision { // // Response: DebugLinkState message DebugLinkGetState { - optional bool layout = 1; // Request raw buffer of display - optional bool pin = 2; // Request current pin - optional bool matrix = 3; // Request current pin matrix - optional bool seed = 4; // Request current seed -// optional bool state = 5; } // Response object reflecting device's current state. It can be received only over debug link connection. @@ -333,8 +328,9 @@ message DebugLinkState { optional bytes layout = 1 [(binary) = true]; // Raw buffer of display optional bytes pin = 2; // Current PIN, blank if PIN is not set/enabled optional bytes matrix = 3; // Current PIN matrix - optional bytes seed = 4; // Current seed (in mnemonic format) -// optional bytes state = 5 [(binary) = true]; + optional bytes mnemonic = 4; // current mnemonic format + optional HDNodeType node = 5; // current node (BIP32 format) +// optional bytes state = 6 [(binary) = true]; } // Ask device to shutdown/restart From 2c621ca20fc2d57c6bf6978970a6369448639a15 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 28 Nov 2013 01:05:50 +0100 Subject: [PATCH 007/767] use passphrase_protection fields --- protob/messages.proto | 1 + protob/storage.proto | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/protob/messages.proto b/protob/messages.proto index 805a167d4..cf26a15af 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -196,6 +196,7 @@ message LoadDevice { optional bytes mnemonic = 1; // Seed encoded as a mnemonic (12 english words) optional HDNodeType node = 2; optional bytes pin = 3; // Set PIN protection for important actions + optional bool passphrase_protection = 4; } // Request device to do full-reset, to generate new seed diff --git a/protob/storage.proto b/protob/storage.proto index f23cb9561..ae18bd13b 100644 --- a/protob/storage.proto +++ b/protob/storage.proto @@ -12,7 +12,7 @@ message Storage { required uint32 version = 1; optional bytes node_serialized = 2 [(binary) = true]; optional bytes mnemonic = 3 [(binary) = true]; - optional bool encrypted = 4; // whether node_serialized or mnemonic are encrypted (protected by passphrase) + optional bool passphrase_protection = 4; // whether node_serialized or mnemonic are encrypted (protected by passphrase) optional uint32 pin_failed_attempts = 5; optional bytes pin = 6; optional bytes language = 7; From 8180263d7507036756bc9efebd24f9d8c8759f67 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 28 Nov 2013 02:18:32 +0100 Subject: [PATCH 008/767] don't use serialized hdnode --- protob/messages.proto | 2 +- protob/storage.proto | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/protob/messages.proto b/protob/messages.proto index cf26a15af..1083c3a65 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -331,7 +331,7 @@ message DebugLinkState { optional bytes matrix = 3; // Current PIN matrix optional bytes mnemonic = 4; // current mnemonic format optional HDNodeType node = 5; // current node (BIP32 format) -// optional bytes state = 6 [(binary) = true]; + optional bool passphrase_protection = 6; } // Ask device to shutdown/restart diff --git a/protob/storage.proto b/protob/storage.proto index ae18bd13b..cd61901f2 100644 --- a/protob/storage.proto +++ b/protob/storage.proto @@ -10,7 +10,7 @@ import "types.proto"; message Storage { required uint32 version = 1; - optional bytes node_serialized = 2 [(binary) = true]; + optional HDNodeType node = 2; optional bytes mnemonic = 3 [(binary) = true]; optional bool passphrase_protection = 4; // whether node_serialized or mnemonic are encrypted (protected by passphrase) optional uint32 pin_failed_attempts = 5; From 0e0e9268dc6062861841b456bcaa35beaea4bd5d Mon Sep 17 00:00:00 2001 From: slush0 Date: Mon, 30 Dec 2013 00:32:26 +0100 Subject: [PATCH 009/767] Put this file to /lib/udev/rules.d/ --- udev/51-trezor-udev.rules | 1 + 1 file changed, 1 insertion(+) diff --git a/udev/51-trezor-udev.rules b/udev/51-trezor-udev.rules index 555565ae4..1134577e8 100644 --- a/udev/51-trezor-udev.rules +++ b/udev/51-trezor-udev.rules @@ -1,5 +1,6 @@ # TREZOR: The Hardware Bitcoin Wallet # http://bitcointrezor.com/ +# Put this file to /lib/udev/rules.d/ # TREZOR SUBSYSTEM=="usb", ATTR{idVendor}=="534c", ATTR{idProduct}=="0001", MODE="0666", GROUP="dialout", SYMLINK+="trezor%n" From 644d75caffbe9c1a5ac76f76ecbd308b5879cd3a Mon Sep 17 00:00:00 2001 From: slush0 Date: Mon, 6 Jan 2014 01:50:38 +0100 Subject: [PATCH 010/767] Added fields to LoadDevice/ResetDevice --- protob/messages.proto | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/protob/messages.proto b/protob/messages.proto index 1083c3a65..45d331a45 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -197,6 +197,8 @@ message LoadDevice { optional HDNodeType node = 2; optional bytes pin = 3; // Set PIN protection for important actions optional bool passphrase_protection = 4; + optional bytes language = 5 [default='english']; + optional bytes label = 6 [(binary) = true]; } // Request device to do full-reset, to generate new seed @@ -211,6 +213,11 @@ message ResetDevice { optional bool display_random = 1; // If set, displays entropy generated by the device used // for generating the seed *before* asking // for additional entropy from computer + optional uint32 strength = 2 [default=128]; // Strength of seed in bits + optional bool passphrase_protection = 3; + optional bool pin_protection = 4; + optional bytes language = 5 [default='english']; + optional bytes label = 6 [(binary) = true]; } // Asks for additional Entropy from host computer From 1a42bc3b70e23afa28f221b13428113c7bb79f23 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 9 Jan 2014 14:15:53 +0100 Subject: [PATCH 011/767] add debuglinklog message --- protob/messages.proto | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/protob/messages.proto b/protob/messages.proto index 45d331a45..db7344000 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -52,6 +52,7 @@ enum MessageType { MessageType_DebugLinkGetState = 101 [(wire_debug_in) = true]; MessageType_DebugLinkState = 102 [(wire_debug_out) = true]; MessageType_DebugLinkStop = 103 [(wire_debug_in) = true]; + MessageType_DebugLinkLog = 104 [(wire_debug_out) = true]; } // **************************************************************************** @@ -344,3 +345,9 @@ message DebugLinkState { // Ask device to shutdown/restart message DebugLinkStop { } + +message DebugLinkLog { + optional uint32 level = 1; + optional bytes bucket = 2; + optional bytes text = 3; +} From 78efd80bbcb8bb4712e1bf390e317b4e852774c0 Mon Sep 17 00:00:00 2001 From: slush0 Date: Sat, 18 Jan 2014 05:13:47 +0100 Subject: [PATCH 012/767] Added EstimateTxSize --- protob/messages.proto | 39 ++++++++++++++++++++++++++++++++------- protob/types.proto | 5 ++++- 2 files changed, 36 insertions(+), 8 deletions(-) diff --git a/protob/messages.proto b/protob/messages.proto index db7344000..6195c4dec 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -47,7 +47,8 @@ enum MessageType { MessageType_MessageSignature = 40 [(wire_out) = true]; MessageType_PassphraseRequest = 41 [(wire_out) = true]; MessageType_PassphraseAck = 42 [(wire_in) = true]; - + MessageType_EstimateTxSize = 43 [(wire_in) = true]; + MessageType_TxSize = 44 [(wire_out) = true]; MessageType_DebugLinkDecision = 100 [(wire_debug_in) = true]; MessageType_DebugLinkGetState = 101 [(wire_debug_in) = true]; MessageType_DebugLinkState = 102 [(wire_debug_out) = true]; @@ -84,8 +85,7 @@ message Features { // Overwrites only filled fields of the structure message ApplySettings { optional bytes language = 1; - optional bytes coin_shortcut = 2; - optional bytes label = 3 [(binary) = true]; + optional bytes label = 2 [(binary) = true]; } // Starts workflow for setting/changing the PIN @@ -168,6 +168,7 @@ message Entropy { // Response: PublicKey, Failure message GetPublicKey { repeated uint32 address_n = 1; + optional bytes coin_name = 2 [default='Bitcoin']; } // Contains public key derived from device's seed. @@ -177,6 +178,7 @@ message PublicKey { message GetAddress { repeated uint32 address_n = 1; // Parameter for address generation algorithm to derive the address from the master node + optional bytes coin_name = 2 [default='Bitcoin']; } message Address { @@ -238,6 +240,7 @@ message EntropyAck { message SignMessage { repeated uint32 address_n = 1; required bytes message = 2 [(binary) = true]; + optional bytes coin_name = 3 [default='Bitcoin']; } message VerifyMessage { @@ -251,12 +254,32 @@ message MessageSignature { optional bytes signature = 2; } +// Estimate size of the transaction +// This call behaves exactly like SignTx, +// which means that it can ask for TxInput and TxInput. +// This call is non-blocking (except possible PassphraseRequest +// to unlock the seed) and returns estimated size of transaction +// in bytes. +// +// Response: TxRequest, TxSize, Failure +message EstimateTxSize { + required uint32 outputs_count = 1; // Count of outputs of the transaction + required uint32 inputs_count = 2; // Count of inputs of the transaction + optional bytes coin_name = 3 [default='Bitcoin']; +} + +// Result of EstimateTxSize +message TxSize { + optional uint32 tx_size = 1; // Size of transaction in bytes +} + // Request the device to sign the transaction // // Response: TxRequest, PinMatrixRequest, Failure message SignTx { - required uint32 outputs_count = 3; // Count of outputs of the transaction - required uint32 inputs_count = 5; // Count of inputs of the transaction + required uint32 outputs_count = 1; // Count of outputs of the transaction + required uint32 inputs_count = 2; // Count of inputs of the transaction + optional bytes coin_name = 3 [default='Bitcoin']; } // Request a simplified workflow of signing. @@ -272,8 +295,10 @@ message SignTx { // // Response: Success, PinMatrixRequest, Failure message SimpleSignTx { - repeated TxInput inputs = 1; - repeated TxOutput outputs = 2; + repeated TxInputType inputs = 1; + repeated TxOutputType outputs = 2; + repeated TransactionType transactions = 3; + optional bytes coin_name = 4 [default='Bitcoin']; } // Sent by the device as a response for SignTx. Device asks for information for signing transaction. diff --git a/protob/types.proto b/protob/types.proto index 0f869ccd6..e8b459d2a 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -28,6 +28,7 @@ enum FailureType { Failure_PinCancelled = 6; Failure_PinInvalid = 7; Failure_InvalidSignature = 8; + Failure_Other = 9; Failure_FirmwareError = 99; } @@ -61,6 +62,8 @@ message CoinType { optional bytes coin_shortcut = 2; optional uint32 address_type = 3; optional uint64 maxfee_kb = 4; + optional uint32 ser_private = 5; // bip32 serialization for privkey + optional uint32 ser_public = 6; // bip32 serialization for pubkey } message TxInputType { @@ -75,7 +78,7 @@ message TxInputType { message TxOutputType { // required uint32 index = 1; // Position of output in proposed transaction - required bytes address = 1; // Target bitcoin address in base58 encoding + optional bytes address = 1; // Target bitcoin address in base58 encoding repeated uint32 address_n = 2; // Has higher priority than "address". required uint64 amount = 3; // Amount to send in satoshis required ScriptType script_type = 4; // Select output script type From 368c31d1384d592a4e3f6add07eed29935201258 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 21 Jan 2014 19:20:10 +0100 Subject: [PATCH 013/767] remove coin from session --- protob/storage.proto | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/protob/storage.proto b/protob/storage.proto index cd61901f2..3cae38295 100644 --- a/protob/storage.proto +++ b/protob/storage.proto @@ -21,6 +21,5 @@ message Storage { message Session { optional bytes passphrase = 1 [(binary) = true]; - optional CoinType coin = 2; - optional HDNodeType node = 3; + optional HDNodeType node = 2; } From fdf8c6fc95a4a191e24a671ac6d3087581aa8ca0 Mon Sep 17 00:00:00 2001 From: slush0 Date: Sat, 1 Feb 2014 13:41:46 +0100 Subject: [PATCH 014/767] Added Features.initialized --- protob/messages.proto | 1 + protob/types.proto | 3 --- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/protob/messages.proto b/protob/messages.proto index 6195c4dec..0150888ca 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -80,6 +80,7 @@ message Features { optional bytes language = 9; optional bytes label = 10 [(binary) = true]; repeated CoinType coins = 11; + optional bool initialized = 12; // True if device cointains seed } // Overwrites only filled fields of the structure diff --git a/protob/types.proto b/protob/types.proto index e8b459d2a..e3f4a4299 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -67,8 +67,6 @@ message CoinType { } message TxInputType { -// required uint32 index = 1; // Position of input in proposed transaction -// required uint64 amount = 3; // Amount to spend in satoshis. The rest will be used for transaction fees repeated uint32 address_n = 1; // Parameter for address generation algorithm to derive the address from the master node required bytes prev_hash = 2 [(binary) = true]; // Hash of previous transaction output to spend by this input required uint32 prev_index = 3; // Index of previous output to spend @@ -77,7 +75,6 @@ message TxInputType { } message TxOutputType { -// required uint32 index = 1; // Position of output in proposed transaction optional bytes address = 1; // Target bitcoin address in base58 encoding repeated uint32 address_n = 2; // Has higher priority than "address". required uint64 amount = 3; // Amount to send in satoshis From aadc27974198b4366f32d7d5db19a61a6259dd46 Mon Sep 17 00:00:00 2001 From: slush0 Date: Sun, 2 Feb 2014 11:28:43 +0100 Subject: [PATCH 015/767] Added some sugar for easier handling in Multibit --- protob/google/protobuf/descriptor.proto | 620 ++++++++++++++++++++++++ protob/messages.proto | 5 + protob/storage.proto | 4 + protob/types.proto | 4 + 4 files changed, 633 insertions(+) create mode 100644 protob/google/protobuf/descriptor.proto diff --git a/protob/google/protobuf/descriptor.proto b/protob/google/protobuf/descriptor.proto new file mode 100644 index 000000000..a785f79fa --- /dev/null +++ b/protob/google/protobuf/descriptor.proto @@ -0,0 +1,620 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// http://code.google.com/p/protobuf/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: kenton@google.com (Kenton Varda) +// Based on original Protocol Buffers design by +// Sanjay Ghemawat, Jeff Dean, and others. +// +// The messages in this file describe the definitions found in .proto files. +// A valid .proto file can be translated directly to a FileDescriptorProto +// without any other information (e.g. without reading its imports). + + + +package google.protobuf; +option java_package = "com.google.protobuf"; +option java_outer_classname = "DescriptorProtos"; + +// descriptor.proto must be optimized for speed because reflection-based +// algorithms don't work during bootstrapping. +option optimize_for = SPEED; + +// The protocol compiler can output a FileDescriptorSet containing the .proto +// files it parses. +message FileDescriptorSet { + repeated FileDescriptorProto file = 1; +} + +// Describes a complete .proto file. +message FileDescriptorProto { + optional string name = 1; // file name, relative to root of source tree + optional string package = 2; // e.g. "foo", "foo.bar", etc. + + // Names of files imported by this file. + repeated string dependency = 3; + // Indexes of the public imported files in the dependency list above. + repeated int32 public_dependency = 10; + // Indexes of the weak imported files in the dependency list. + // For Google-internal migration only. Do not use. + repeated int32 weak_dependency = 11; + + // All top-level definitions in this file. + repeated DescriptorProto message_type = 4; + repeated EnumDescriptorProto enum_type = 5; + repeated ServiceDescriptorProto service = 6; + repeated FieldDescriptorProto extension = 7; + + optional FileOptions options = 8; + + // This field contains optional information about the original source code. + // You may safely remove this entire field whithout harming runtime + // functionality of the descriptors -- the information is needed only by + // development tools. + optional SourceCodeInfo source_code_info = 9; +} + +// Describes a message type. +message DescriptorProto { + optional string name = 1; + + repeated FieldDescriptorProto field = 2; + repeated FieldDescriptorProto extension = 6; + + repeated DescriptorProto nested_type = 3; + repeated EnumDescriptorProto enum_type = 4; + + message ExtensionRange { + optional int32 start = 1; + optional int32 end = 2; + } + repeated ExtensionRange extension_range = 5; + + optional MessageOptions options = 7; +} + +// Describes a field within a message. +message FieldDescriptorProto { + enum Type { + // 0 is reserved for errors. + // Order is weird for historical reasons. + TYPE_DOUBLE = 1; + TYPE_FLOAT = 2; + // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if + // negative values are likely. + TYPE_INT64 = 3; + TYPE_UINT64 = 4; + // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if + // negative values are likely. + TYPE_INT32 = 5; + TYPE_FIXED64 = 6; + TYPE_FIXED32 = 7; + TYPE_BOOL = 8; + TYPE_STRING = 9; + TYPE_GROUP = 10; // Tag-delimited aggregate. + TYPE_MESSAGE = 11; // Length-delimited aggregate. + + // New in version 2. + TYPE_BYTES = 12; + TYPE_UINT32 = 13; + TYPE_ENUM = 14; + TYPE_SFIXED32 = 15; + TYPE_SFIXED64 = 16; + TYPE_SINT32 = 17; // Uses ZigZag encoding. + TYPE_SINT64 = 18; // Uses ZigZag encoding. + }; + + enum Label { + // 0 is reserved for errors + LABEL_OPTIONAL = 1; + LABEL_REQUIRED = 2; + LABEL_REPEATED = 3; + // TODO(sanjay): Should we add LABEL_MAP? + }; + + optional string name = 1; + optional int32 number = 3; + optional Label label = 4; + + // If type_name is set, this need not be set. If both this and type_name + // are set, this must be either TYPE_ENUM or TYPE_MESSAGE. + optional Type type = 5; + + // For message and enum types, this is the name of the type. If the name + // starts with a '.', it is fully-qualified. Otherwise, C++-like scoping + // rules are used to find the type (i.e. first the nested types within this + // message are searched, then within the parent, on up to the root + // namespace). + optional string type_name = 6; + + // For extensions, this is the name of the type being extended. It is + // resolved in the same manner as type_name. + optional string extendee = 2; + + // For numeric types, contains the original text representation of the value. + // For booleans, "true" or "false". + // For strings, contains the default text contents (not escaped in any way). + // For bytes, contains the C escaped value. All bytes >= 128 are escaped. + // TODO(kenton): Base-64 encode? + optional string default_value = 7; + + optional FieldOptions options = 8; +} + +// Describes an enum type. +message EnumDescriptorProto { + optional string name = 1; + + repeated EnumValueDescriptorProto value = 2; + + optional EnumOptions options = 3; +} + +// Describes a value within an enum. +message EnumValueDescriptorProto { + optional string name = 1; + optional int32 number = 2; + + optional EnumValueOptions options = 3; +} + +// Describes a service. +message ServiceDescriptorProto { + optional string name = 1; + repeated MethodDescriptorProto method = 2; + + optional ServiceOptions options = 3; +} + +// Describes a method of a service. +message MethodDescriptorProto { + optional string name = 1; + + // Input and output type names. These are resolved in the same way as + // FieldDescriptorProto.type_name, but must refer to a message type. + optional string input_type = 2; + optional string output_type = 3; + + optional MethodOptions options = 4; +} + + +// =================================================================== +// Options + +// Each of the definitions above may have "options" attached. These are +// just annotations which may cause code to be generated slightly differently +// or may contain hints for code that manipulates protocol messages. +// +// Clients may define custom options as extensions of the *Options messages. +// These extensions may not yet be known at parsing time, so the parser cannot +// store the values in them. Instead it stores them in a field in the *Options +// message called uninterpreted_option. This field must have the same name +// across all *Options messages. We then use this field to populate the +// extensions when we build a descriptor, at which point all protos have been +// parsed and so all extensions are known. +// +// Extension numbers for custom options may be chosen as follows: +// * For options which will only be used within a single application or +// organization, or for experimental options, use field numbers 50000 +// through 99999. It is up to you to ensure that you do not use the +// same number for multiple options. +// * For options which will be published and used publicly by multiple +// independent entities, e-mail protobuf-global-extension-registry@google.com +// to reserve extension numbers. Simply provide your project name (e.g. +// Object-C plugin) and your porject website (if available) -- there's no need +// to explain how you intend to use them. Usually you only need one extension +// number. You can declare multiple options with only one extension number by +// putting them in a sub-message. See the Custom Options section of the docs +// for examples: +// http://code.google.com/apis/protocolbuffers/docs/proto.html#options +// If this turns out to be popular, a web service will be set up +// to automatically assign option numbers. + + +message FileOptions { + + // Sets the Java package where classes generated from this .proto will be + // placed. By default, the proto package is used, but this is often + // inappropriate because proto packages do not normally start with backwards + // domain names. + optional string java_package = 1; + + + // If set, all the classes from the .proto file are wrapped in a single + // outer class with the given name. This applies to both Proto1 + // (equivalent to the old "--one_java_file" option) and Proto2 (where + // a .proto always translates to a single class, but you may want to + // explicitly choose the class name). + optional string java_outer_classname = 8; + + // If set true, then the Java code generator will generate a separate .java + // file for each top-level message, enum, and service defined in the .proto + // file. Thus, these types will *not* be nested inside the outer class + // named by java_outer_classname. However, the outer class will still be + // generated to contain the file's getDescriptor() method as well as any + // top-level extensions defined in the file. + optional bool java_multiple_files = 10 [default=false]; + + // If set true, then the Java code generator will generate equals() and + // hashCode() methods for all messages defined in the .proto file. This is + // purely a speed optimization, as the AbstractMessage base class includes + // reflection-based implementations of these methods. + optional bool java_generate_equals_and_hash = 20 [default=false]; + + // Generated classes can be optimized for speed or code size. + enum OptimizeMode { + SPEED = 1; // Generate complete code for parsing, serialization, + // etc. + CODE_SIZE = 2; // Use ReflectionOps to implement these methods. + LITE_RUNTIME = 3; // Generate code using MessageLite and the lite runtime. + } + optional OptimizeMode optimize_for = 9 [default=SPEED]; + + // Sets the Go package where structs generated from this .proto will be + // placed. There is no default. + optional string go_package = 11; + + + + // Should generic services be generated in each language? "Generic" services + // are not specific to any particular RPC system. They are generated by the + // main code generators in each language (without additional plugins). + // Generic services were the only kind of service generation supported by + // early versions of proto2. + // + // Generic services are now considered deprecated in favor of using plugins + // that generate code specific to your particular RPC system. Therefore, + // these default to false. Old code which depends on generic services should + // explicitly set them to true. + optional bool cc_generic_services = 16 [default=false]; + optional bool java_generic_services = 17 [default=false]; + optional bool py_generic_services = 18 [default=false]; + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +message MessageOptions { + // Set true to use the old proto1 MessageSet wire format for extensions. + // This is provided for backwards-compatibility with the MessageSet wire + // format. You should not use this for any other reason: It's less + // efficient, has fewer features, and is more complicated. + // + // The message must be defined exactly as follows: + // message Foo { + // option message_set_wire_format = true; + // extensions 4 to max; + // } + // Note that the message cannot have any defined fields; MessageSets only + // have extensions. + // + // All extensions of your type must be singular messages; e.g. they cannot + // be int32s, enums, or repeated messages. + // + // Because this is an option, the above two restrictions are not enforced by + // the protocol compiler. + optional bool message_set_wire_format = 1 [default=false]; + + // Disables the generation of the standard "descriptor()" accessor, which can + // conflict with a field of the same name. This is meant to make migration + // from proto1 easier; new code should avoid fields named "descriptor". + optional bool no_standard_descriptor_accessor = 2 [default=false]; + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +message FieldOptions { + // The ctype option instructs the C++ code generator to use a different + // representation of the field than it normally would. See the specific + // options below. This option is not yet implemented in the open source + // release -- sorry, we'll try to include it in a future version! + optional CType ctype = 1 [default = STRING]; + enum CType { + // Default mode. + STRING = 0; + + CORD = 1; + + STRING_PIECE = 2; + } + // The packed option can be enabled for repeated primitive fields to enable + // a more efficient representation on the wire. Rather than repeatedly + // writing the tag and type for each element, the entire array is encoded as + // a single length-delimited blob. + optional bool packed = 2; + + + + // Should this field be parsed lazily? Lazy applies only to message-type + // fields. It means that when the outer message is initially parsed, the + // inner message's contents will not be parsed but instead stored in encoded + // form. The inner message will actually be parsed when it is first accessed. + // + // This is only a hint. Implementations are free to choose whether to use + // eager or lazy parsing regardless of the value of this option. However, + // setting this option true suggests that the protocol author believes that + // using lazy parsing on this field is worth the additional bookkeeping + // overhead typically needed to implement it. + // + // This option does not affect the public interface of any generated code; + // all method signatures remain the same. Furthermore, thread-safety of the + // interface is not affected by this option; const methods remain safe to + // call from multiple threads concurrently, while non-const methods continue + // to require exclusive access. + // + // + // Note that implementations may choose not to check required fields within + // a lazy sub-message. That is, calling IsInitialized() on the outher message + // may return true even if the inner message has missing required fields. + // This is necessary because otherwise the inner message would have to be + // parsed in order to perform the check, defeating the purpose of lazy + // parsing. An implementation which chooses not to check required fields + // must be consistent about it. That is, for any particular sub-message, the + // implementation must either *always* check its required fields, or *never* + // check its required fields, regardless of whether or not the message has + // been parsed. + optional bool lazy = 5 [default=false]; + + // Is this field deprecated? + // Depending on the target platform, this can emit Deprecated annotations + // for accessors, or it will be completely ignored; in the very least, this + // is a formalization for deprecating fields. + optional bool deprecated = 3 [default=false]; + + // EXPERIMENTAL. DO NOT USE. + // For "map" fields, the name of the field in the enclosed type that + // is the key for this map. For example, suppose we have: + // message Item { + // required string name = 1; + // required string value = 2; + // } + // message Config { + // repeated Item items = 1 [experimental_map_key="name"]; + // } + // In this situation, the map key for Item will be set to "name". + // TODO: Fully-implement this, then remove the "experimental_" prefix. + optional string experimental_map_key = 9; + + // For Google-internal migration only. Do not use. + optional bool weak = 10 [default=false]; + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +message EnumOptions { + + // Set this option to false to disallow mapping different tag names to a same + // value. + optional bool allow_alias = 2 [default=true]; + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +message EnumValueOptions { + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +message ServiceOptions { + + // Note: Field numbers 1 through 32 are reserved for Google's internal RPC + // framework. We apologize for hoarding these numbers to ourselves, but + // we were already using them long before we decided to release Protocol + // Buffers. + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + +message MethodOptions { + + // Note: Field numbers 1 through 32 are reserved for Google's internal RPC + // framework. We apologize for hoarding these numbers to ourselves, but + // we were already using them long before we decided to release Protocol + // Buffers. + + // The parser stores options it doesn't recognize here. See above. + repeated UninterpretedOption uninterpreted_option = 999; + + // Clients can define custom options in extensions of this message. See above. + extensions 1000 to max; +} + + +// A message representing a option the parser does not recognize. This only +// appears in options protos created by the compiler::Parser class. +// DescriptorPool resolves these when building Descriptor objects. Therefore, +// options protos in descriptor objects (e.g. returned by Descriptor::options(), +// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions +// in them. +message UninterpretedOption { + // The name of the uninterpreted option. Each string represents a segment in + // a dot-separated name. is_extension is true iff a segment represents an + // extension (denoted with parentheses in options specs in .proto files). + // E.g.,{ ["foo", false], ["bar.baz", true], ["qux", false] } represents + // "foo.(bar.baz).qux". + message NamePart { + required string name_part = 1; + required bool is_extension = 2; + } + repeated NamePart name = 2; + + // The value of the uninterpreted option, in whatever type the tokenizer + // identified it as during parsing. Exactly one of these should be set. + optional string identifier_value = 3; + optional uint64 positive_int_value = 4; + optional int64 negative_int_value = 5; + optional double double_value = 6; + optional bytes string_value = 7; + optional string aggregate_value = 8; +} + +// =================================================================== +// Optional source code info + +// Encapsulates information about the original source file from which a +// FileDescriptorProto was generated. +message SourceCodeInfo { + // A Location identifies a piece of source code in a .proto file which + // corresponds to a particular definition. This information is intended + // to be useful to IDEs, code indexers, documentation generators, and similar + // tools. + // + // For example, say we have a file like: + // message Foo { + // optional string foo = 1; + // } + // Let's look at just the field definition: + // optional string foo = 1; + // ^ ^^ ^^ ^ ^^^ + // a bc de f ghi + // We have the following locations: + // span path represents + // [a,i) [ 4, 0, 2, 0 ] The whole field definition. + // [a,b) [ 4, 0, 2, 0, 4 ] The label (optional). + // [c,d) [ 4, 0, 2, 0, 5 ] The type (string). + // [e,f) [ 4, 0, 2, 0, 1 ] The name (foo). + // [g,h) [ 4, 0, 2, 0, 3 ] The number (1). + // + // Notes: + // - A location may refer to a repeated field itself (i.e. not to any + // particular index within it). This is used whenever a set of elements are + // logically enclosed in a single code segment. For example, an entire + // extend block (possibly containing multiple extension definitions) will + // have an outer location whose path refers to the "extensions" repeated + // field without an index. + // - Multiple locations may have the same path. This happens when a single + // logical declaration is spread out across multiple places. The most + // obvious example is the "extend" block again -- there may be multiple + // extend blocks in the same scope, each of which will have the same path. + // - A location's span is not always a subset of its parent's span. For + // example, the "extendee" of an extension declaration appears at the + // beginning of the "extend" block and is shared by all extensions within + // the block. + // - Just because a location's span is a subset of some other location's span + // does not mean that it is a descendent. For example, a "group" defines + // both a type and a field in a single declaration. Thus, the locations + // corresponding to the type and field and their components will overlap. + // - Code which tries to interpret locations should probably be designed to + // ignore those that it doesn't understand, as more types of locations could + // be recorded in the future. + repeated Location location = 1; + message Location { + // Identifies which part of the FileDescriptorProto was defined at this + // location. + // + // Each element is a field number or an index. They form a path from + // the root FileDescriptorProto to the place where the definition. For + // example, this path: + // [ 4, 3, 2, 7, 1 ] + // refers to: + // file.message_type(3) // 4, 3 + // .field(7) // 2, 7 + // .name() // 1 + // This is because FileDescriptorProto.message_type has field number 4: + // repeated DescriptorProto message_type = 4; + // and DescriptorProto.field has field number 2: + // repeated FieldDescriptorProto field = 2; + // and FieldDescriptorProto.name has field number 1: + // optional string name = 1; + // + // Thus, the above path gives the location of a field name. If we removed + // the last element: + // [ 4, 3, 2, 7 ] + // this path refers to the whole field declaration (from the beginning + // of the label to the terminating semicolon). + repeated int32 path = 1 [packed=true]; + + // Always has exactly three or four elements: start line, start column, + // end line (optional, otherwise assumed same as start line), end column. + // These are packed into a single field for efficiency. Note that line + // and column numbers are zero-based -- typically you will want to add + // 1 to each before displaying to a user. + repeated int32 span = 2 [packed=true]; + + // If this SourceCodeInfo represents a complete declaration, these are any + // comments appearing before and after the declaration which appear to be + // attached to the declaration. + // + // A series of line comments appearing on consecutive lines, with no other + // tokens appearing on those lines, will be treated as a single comment. + // + // Only the comment content is provided; comment markers (e.g. //) are + // stripped out. For block comments, leading whitespace and an asterisk + // will be stripped from the beginning of each line other than the first. + // Newlines are included in the output. + // + // Examples: + // + // optional int32 foo = 1; // Comment attached to foo. + // // Comment attached to bar. + // optional int32 bar = 2; + // + // optional string baz = 3; + // // Comment attached to baz. + // // Another line attached to baz. + // + // // Comment attached to qux. + // // + // // Another line attached to qux. + // optional double qux = 4; + // + // optional string corge = 5; + // /* Block comment attached + // * to corge. Leading asterisks + // * will be removed. */ + // /* Block comment attached to + // * grault. */ + // optional int32 grault = 6; + optional string leading_comments = 3; + optional string trailing_comments = 4; + } +} diff --git a/protob/messages.proto b/protob/messages.proto index 0150888ca..5ca84a211 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -6,6 +6,11 @@ Version: 0.6 */ + +// Some sugar for easier handling in Multibit +option java_package = "org.multibit.hd.hardware.trezor.protobuf"; +option java_outer_classname = "TrezorMessage"; + import "types.proto"; /* diff --git a/protob/storage.proto b/protob/storage.proto index 3cae38295..44fbec2e5 100644 --- a/protob/storage.proto +++ b/protob/storage.proto @@ -6,6 +6,10 @@ Version: 0.1 */ +// Some sugar for easier handling in Multibit +option java_package = "org.multibit.hd.hardware.trezor.protobuf"; +option java_outer_classname = "TrezorStorage"; + import "types.proto"; message Storage { diff --git a/protob/types.proto b/protob/types.proto index e3f4a4299..045e761f5 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -6,6 +6,10 @@ Version: 0.6 */ +// Some sugar for easier handling in Multibit +option java_package = "org.multibit.hd.hardware.trezor.protobuf"; +option java_outer_classname = "TrezorTypes"; + import "google/protobuf/descriptor.proto"; extend google.protobuf.FieldOptions { From 3853deed39e9f31038bf96573c0e4442ade491dc Mon Sep 17 00:00:00 2001 From: slush0 Date: Sun, 2 Feb 2014 18:29:37 +0100 Subject: [PATCH 016/767] Added RecoveryDevice / WordRequest / WordAck --- protob/messages.proto | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/protob/messages.proto b/protob/messages.proto index 5ca84a211..14379a913 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -54,6 +54,9 @@ enum MessageType { MessageType_PassphraseAck = 42 [(wire_in) = true]; MessageType_EstimateTxSize = 43 [(wire_in) = true]; MessageType_TxSize = 44 [(wire_out) = true]; + MessageType_RecoveryDevice = 45 [(wire_in) = true]; + MessageType_WordRequest = 46 [(wire_out) = true]; + MessageType_WordAck = 47 [(wire_in) = true]; MessageType_DebugLinkDecision = 100 [(wire_debug_in) = true]; MessageType_DebugLinkGetState = 101 [(wire_debug_in) = true]; MessageType_DebugLinkState = 102 [(wire_debug_out) = true]; @@ -238,6 +241,26 @@ message EntropyAck { optional bytes entropy = 1 [(binary) = true]; // Recommended to provide 256 bytes of random data. } +// Starts workflow of asking user for specific words of his mnemonic. +// This may be used for safe recovery of lost device +// using mnemonic on untrusted computer. +message RecoveryDevice { + optional uint32 word_count = 1; // How many words is in mnemonic sentence? + optional bool passphrase_protection = 2; + optional bool pin_protection = 3; + optional bytes language = 4 [default='english']; + optional bytes label = 5 [(binary) = true]; +} + +// This message indicates that device is asking user for some word of his mnemonic. +// Position of the word is displayed only on device's internal display. +message WordRequest { +} + +message WordAck { + required bytes word = 1 [(binary)=true]; // One word of mnemonic on asked position +} + // **************************************************************************** // // Messages related to transaction signing From 8a41dad609ff99047d0984e453a9c6893b94cc87 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 3 Feb 2014 15:25:21 +0100 Subject: [PATCH 017/767] signatures are binary in VerifyMessage/MessageSignature --- protob/messages.proto | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/protob/messages.proto b/protob/messages.proto index 14379a913..c893bd03e 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -274,13 +274,13 @@ message SignMessage { message VerifyMessage { optional bytes address = 1; - optional bytes signature = 2; + optional bytes signature = 2 [(binary) = true]; optional bytes message = 3 [(binary) = true]; } message MessageSignature { optional bytes address = 1; - optional bytes signature = 2; + optional bytes signature = 2 [(binary) = true]; } // Estimate size of the transaction From 0d883b61b2d2b2420ac4d0718f369d2f464dd542 Mon Sep 17 00:00:00 2001 From: slush0 Date: Mon, 3 Feb 2014 23:13:09 +0100 Subject: [PATCH 018/767] Added ButtonRequest.code --- protob/messages.proto | 2 ++ protob/types.proto | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/protob/messages.proto b/protob/messages.proto index c893bd03e..d3ff6dd95 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -126,6 +126,8 @@ message Failure { // Computer should respond with ButtonAck message or Cancel to cancel // the original request. message ButtonRequest { + optional string code = 1; + optional string data = 2; } // Computer agrees to wait for HW button press. diff --git a/protob/types.proto b/protob/types.proto index 045e761f5..8afb4b4c7 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -8,7 +8,7 @@ // Some sugar for easier handling in Multibit option java_package = "org.multibit.hd.hardware.trezor.protobuf"; -option java_outer_classname = "TrezorTypes"; +option java_outer_classname = "TrezorType"; import "google/protobuf/descriptor.proto"; From 682a20e07b7c1bb3f61e0a1e6c0e98c47f68f165 Mon Sep 17 00:00:00 2001 From: slush0 Date: Tue, 4 Feb 2014 17:11:38 +0100 Subject: [PATCH 019/767] Reworked Ping --- protob/messages.proto | 3 +++ 1 file changed, 3 insertions(+) diff --git a/protob/messages.proto b/protob/messages.proto index d3ff6dd95..244aab2fe 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -108,6 +108,9 @@ message ChangePin { // Response: None or Success message Ping { optional bytes message = 1; // Message will be sent back in Success message + optional bool button_protection = 2; // Ask for button press + optional bool pin_protection = 3; // Ask for PIN if set + optional bool passphrase_protection = 4; // Ask for passphrase if set } // Response object defining success of the previous request From e973056669a9ce7808d0b8753f5316f41ee4f5fc Mon Sep 17 00:00:00 2001 From: slush0 Date: Tue, 4 Feb 2014 17:47:29 +0100 Subject: [PATCH 020/767] Added ButtonRequestType enum --- protob/messages.proto | 4 ++-- protob/types.proto | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/protob/messages.proto b/protob/messages.proto index 244aab2fe..18f5fc5ab 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -129,8 +129,8 @@ message Failure { // Computer should respond with ButtonAck message or Cancel to cancel // the original request. message ButtonRequest { - optional string code = 1; - optional string data = 2; + optional ButtonRequestType code = 1; + optional bytes data = 2 [(binary) = true]; } // Computer agrees to wait for HW button press. diff --git a/protob/types.proto b/protob/types.proto index 8afb4b4c7..251d6597c 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -48,6 +48,10 @@ enum RequestType { TXOUTPUT = 1; } +enum ButtonRequestType { + ButtonRequest_FeeOverThreshold = 1; +} + // Structure of BIP32 (hierarchical deterministic) node // Used for imports of private key into the device and exporting public key out of device message HDNodeType { From 349a8455307f8c6e81e13df168c45f9d9995225c Mon Sep 17 00:00:00 2001 From: slush0 Date: Thu, 6 Feb 2014 10:34:50 +0100 Subject: [PATCH 021/767] Added ButtonRequestType enum --- protob/types.proto | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/protob/types.proto b/protob/types.proto index 251d6597c..fd4b7e133 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -49,7 +49,13 @@ enum RequestType { } enum ButtonRequestType { - ButtonRequest_FeeOverThreshold = 1; + ButtonRequest_Other = 1; + ButtonRequest_FeeOverThreshold = 2; + ButtonRequest_ConfirmOutput = 3; + ButtonRequest_ResetDevice = 4; + ButtonRequest_ConfirmWord = 5; + ButtonRequest_WipeDevice = 6; + ButtonRequest_ProtectCall = 7; } // Structure of BIP32 (hierarchical deterministic) node From cc56b5d909235606c4eaac334ea60f781ffc95c7 Mon Sep 17 00:00:00 2001 From: slush0 Date: Thu, 6 Feb 2014 13:25:41 +0100 Subject: [PATCH 022/767] Added enforce_wordlist to RecoveryDevice --- protob/messages.proto | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/protob/messages.proto b/protob/messages.proto index 18f5fc5ab..e5e13fdbf 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -254,7 +254,8 @@ message RecoveryDevice { optional bool passphrase_protection = 2; optional bool pin_protection = 3; optional bytes language = 4 [default='english']; - optional bytes label = 5 [(binary) = true]; + optional bytes label = 5 [(binary) = true]; + optional bool enforce_wordlist = 6; // Trezor enforces BIP39 wordlist } // This message indicates that device is asking user for some word of his mnemonic. From 712a3846b701708672073c6c210dfce622ca04e4 Mon Sep 17 00:00:00 2001 From: slush0 Date: Sun, 9 Feb 2014 00:15:03 +0100 Subject: [PATCH 023/767] Added Failure_NotEnoughFunds --- protob/types.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/protob/types.proto b/protob/types.proto index fd4b7e133..64b9473cd 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -33,6 +33,7 @@ enum FailureType { Failure_PinInvalid = 7; Failure_InvalidSignature = 8; Failure_Other = 9; + Failure_NotEnoughFunds = 10; Failure_FirmwareError = 99; } From 3da2da096c2db755f7808d050391710ca5bc1591 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 11 Feb 2014 16:59:24 +0100 Subject: [PATCH 024/767] Failure_NotInitialized --- protob/types.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/protob/types.proto b/protob/types.proto index 64b9473cd..f193356ac 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -34,6 +34,7 @@ enum FailureType { Failure_InvalidSignature = 8; Failure_Other = 9; Failure_NotEnoughFunds = 10; + Failure_NotInitialized = 11; Failure_FirmwareError = 99; } From 61e9c2b0a32d0e9a57f63ebf2f32740e10bdc928 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 17 Feb 2014 00:15:15 +0100 Subject: [PATCH 025/767] 256 bytes -> 256 bits --- protob/messages.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protob/messages.proto b/protob/messages.proto index e5e13fdbf..65d096959 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -243,7 +243,7 @@ message EntropyRequest { // Provide additional entropy for seed generation function. message EntropyAck { - optional bytes entropy = 1 [(binary) = true]; // Recommended to provide 256 bytes of random data. + optional bytes entropy = 1 [(binary) = true]; // Recommended to provide 256 bits (32 bytes) of random data. } // Starts workflow of asking user for specific words of his mnemonic. From f9cfdf01d167d0692a397579f6b70c17af7a07f2 Mon Sep 17 00:00:00 2001 From: slush0 Date: Wed, 19 Feb 2014 17:44:03 +0100 Subject: [PATCH 026/767] Removed Session --- protob/storage.proto | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/protob/storage.proto b/protob/storage.proto index 44fbec2e5..9ec7359d1 100644 --- a/protob/storage.proto +++ b/protob/storage.proto @@ -21,9 +21,4 @@ message Storage { optional bytes pin = 6; optional bytes language = 7; optional bytes label = 8 [(binary) = true]; -} - -message Session { - optional bytes passphrase = 1 [(binary) = true]; - optional HDNodeType node = 2; -} +} \ No newline at end of file From 8f80e44fb45e6e5eb8d32b4b11af3e8fbfdc78d8 Mon Sep 17 00:00:00 2001 From: slush0 Date: Thu, 20 Feb 2014 18:37:20 +0100 Subject: [PATCH 027/767] Added word/word_pos fields to DebugLinkState --- protob/messages.proto | 2 ++ 1 file changed, 2 insertions(+) diff --git a/protob/messages.proto b/protob/messages.proto index 65d096959..07fb5d2c3 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -400,6 +400,8 @@ message DebugLinkState { optional bytes mnemonic = 4; // current mnemonic format optional HDNodeType node = 5; // current node (BIP32 format) optional bool passphrase_protection = 6; + optional bytes word = 7; // What word is on display in RecoveryDevice/ResetDevice workflow + optional int32 word_pos = 8; // Which word of mnemonic do the device expect } // Ask device to shutdown/restart From 304de4fc4af4084fa32d975dfbc2cb94a4a507a6 Mon Sep 17 00:00:00 2001 From: slush0 Date: Fri, 21 Feb 2014 01:50:03 +0100 Subject: [PATCH 028/767] DebugLinkState provides internal entropy, added skip_checksum to LoadDevice --- protob/messages.proto | 2 ++ 1 file changed, 2 insertions(+) diff --git a/protob/messages.proto b/protob/messages.proto index 07fb5d2c3..5f5af1ef6 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -216,6 +216,7 @@ message LoadDevice { optional bool passphrase_protection = 4; optional bytes language = 5 [default='english']; optional bytes label = 6 [(binary) = true]; + optional bool skip_checksum = 7; // Do not test mnemonic for valid BIP39 checksum } // Request device to do full-reset, to generate new seed @@ -402,6 +403,7 @@ message DebugLinkState { optional bool passphrase_protection = 6; optional bytes word = 7; // What word is on display in RecoveryDevice/ResetDevice workflow optional int32 word_pos = 8; // Which word of mnemonic do the device expect + optional bytes entropy = 9; // Return current entropy of ResetDevice workflow } // Ask device to shutdown/restart From 7755fa0a78caf0781595177fba49ce0fd997415d Mon Sep 17 00:00:00 2001 From: slush0 Date: Fri, 21 Feb 2014 22:14:41 +0100 Subject: [PATCH 029/767] Removed 'version' from HDNodeType GetPublicKey - removed coin_type --- protob/messages.proto | 1 - protob/types.proto | 17 +++++++---------- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/protob/messages.proto b/protob/messages.proto index 5f5af1ef6..5b89e836a 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -182,7 +182,6 @@ message Entropy { // Response: PublicKey, Failure message GetPublicKey { repeated uint32 address_n = 1; - optional bytes coin_name = 2 [default='Bitcoin']; } // Contains public key derived from device's seed. diff --git a/protob/types.proto b/protob/types.proto index f193356ac..bfa48448f 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -63,14 +63,13 @@ enum ButtonRequestType { // Structure of BIP32 (hierarchical deterministic) node // Used for imports of private key into the device and exporting public key out of device message HDNodeType { - required uint32 version = 1; - required uint32 depth = 2; - required uint32 fingerprint = 3; - required uint32 child_num = 4; - required bytes chain_code = 5 [(binary) = true]; - optional bytes private_key = 6 [(binary) = true]; - optional bytes public_key = 7 [(binary) = true]; - optional bytes address = 8; + required uint32 depth = 1; + required uint32 fingerprint = 2; + required uint32 child_num = 3; + required bytes chain_code = 4 [(binary) = true]; + optional bytes private_key = 5 [(binary) = true]; + optional bytes public_key = 6 [(binary) = true]; + optional bytes address = 7; } message CoinType { @@ -78,8 +77,6 @@ message CoinType { optional bytes coin_shortcut = 2; optional uint32 address_type = 3; optional uint64 maxfee_kb = 4; - optional uint32 ser_private = 5; // bip32 serialization for privkey - optional uint32 ser_public = 6; // bip32 serialization for pubkey } message TxInputType { From 6a5ef6b823e2678fa286085750421ce900f861a8 Mon Sep 17 00:00:00 2001 From: slush0 Date: Fri, 21 Feb 2014 22:42:41 +0100 Subject: [PATCH 030/767] Removed 'address' from HDNodeType --- protob/types.proto | 1 - 1 file changed, 1 deletion(-) diff --git a/protob/types.proto b/protob/types.proto index bfa48448f..95150b0ce 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -69,7 +69,6 @@ message HDNodeType { required bytes chain_code = 4 [(binary) = true]; optional bytes private_key = 5 [(binary) = true]; optional bytes public_key = 6 [(binary) = true]; - optional bytes address = 7; } message CoinType { From 4ba03a6c70749fd10d8e28ac88452a22ad463e1c Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Sat, 1 Mar 2014 11:17:06 +0100 Subject: [PATCH 031/767] use string again where appropriate --- protob/messages.proto | 94 +++++++++++++++++++++---------------------- protob/storage.proto | 10 ++--- protob/types.proto | 24 +++++------ 3 files changed, 62 insertions(+), 66 deletions(-) diff --git a/protob/messages.proto b/protob/messages.proto index 5b89e836a..94255cfb6 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -77,24 +77,24 @@ message Initialize { // Response object for Initialize. message Features { - optional bytes vendor = 1; // Name of the manufacturer, e.g. "bitcointrezor.com" + optional string vendor = 1; // Name of the manufacturer, e.g. "bitcointrezor.com" optional uint32 major_version = 2; // Major version of the device, e.g. 1 optional uint32 minor_version = 3; // Minor version of the device, e.g. 0 optional uint32 bugfix_version = 4; optional bool bootloader_mode = 5; - optional bytes device_id = 6 [(binary) = true]; // Device's unique identifier + optional string device_id = 6; // Device's unique identifier optional bool pin_protection = 7; // True if Trezor is covered by PIN optional bool passphrase_protection = 8; // True if node/mnemonic is covered by passphrase - optional bytes language = 9; - optional bytes label = 10 [(binary) = true]; + optional string language = 9; + optional string label = 10; repeated CoinType coins = 11; optional bool initialized = 12; // True if device cointains seed } // Overwrites only filled fields of the structure message ApplySettings { - optional bytes language = 1; - optional bytes label = 2 [(binary) = true]; + optional string language = 1; + optional string label = 2; } // Starts workflow for setting/changing the PIN @@ -107,7 +107,7 @@ message ChangePin { // // Response: None or Success message Ping { - optional bytes message = 1; // Message will be sent back in Success message + optional string message = 1; // Message will be sent back in Success message optional bool button_protection = 2; // Ask for button press optional bool pin_protection = 3; // Ask for PIN if set optional bool passphrase_protection = 4; // Ask for passphrase if set @@ -115,13 +115,13 @@ message Ping { // Response object defining success of the previous request message Success { - optional bytes message = 1; // May contain human readable description of the action or request-specific payload + optional string message = 1; // May contain human readable description of the action or request-specific payload } // Response object defining failure of the previous request message Failure { optional FailureType code = 1; // May contain computer-readable definition of the error state - optional bytes message = 2; // May contain human-readable message of the error state + optional string message = 2; // May contain human-readable message of the error state } // Message can be sent by the *device* as a resopnse to any request. @@ -130,7 +130,7 @@ message Failure { // the original request. message ButtonRequest { optional ButtonRequestType code = 1; - optional bytes data = 2 [(binary) = true]; + optional string data = 2; } // Computer agrees to wait for HW button press. @@ -142,12 +142,12 @@ message ButtonAck { // // Response: PinMatrixAck, Cancel message PinMatrixRequest { - optional bytes message = 1; // Human readable message + optional string message = 1; // Human readable message } // Message is sent by the computer as a response to PinMatrixRequest previously sent by the device. message PinMatrixAck { - required bytes pin = 1; // User must write down the password for accessing the device. + required string pin = 1; // User must write down the password for accessing the device. } // Message is sent as a cancel response to ButtonRequest, PinMatrixRequest and PassphraseRequest @@ -160,7 +160,7 @@ message PassphraseRequest { // Computer sends passphrase to device. message PassphraseAck { - required bytes passphrase = 1 [(binary) = true]; + required string passphrase = 1; } // Request a sample of random data generated by hardware RNG. May be used @@ -173,7 +173,7 @@ message GetEntropy { // Response to GetEntropy request contains random data generated by internal HRNG. message Entropy { - required bytes entropy = 1 [(binary) = true]; // Stream of generated bytes + required bytes entropy = 1; // Stream of generated bytes } // Ask device for public key corresponding of address_n path. This may be used for generating @@ -191,11 +191,11 @@ message PublicKey { message GetAddress { repeated uint32 address_n = 1; // Parameter for address generation algorithm to derive the address from the master node - optional bytes coin_name = 2 [default='Bitcoin']; + optional string coin_name = 2 [default='Bitcoin']; } message Address { - required bytes address = 1; // Bitcoin address in base58 encoding corresponding to GetAddress(n) call + required string address = 1; // Bitcoin address in base58 encoding corresponding to GetAddress(n) call } // Request device to wipe all sensitive data and settings. @@ -209,12 +209,12 @@ message WipeDevice { // // Response: Success, ButtonRequest, PinMatrixRequest, Failure message LoadDevice { - optional bytes mnemonic = 1; // Seed encoded as a mnemonic (12 english words) + optional string mnemonic = 1; // Seed encoded as a mnemonic (12 english words) optional HDNodeType node = 2; - optional bytes pin = 3; // Set PIN protection for important actions + optional string pin = 3; // Set PIN protection for important actions optional bool passphrase_protection = 4; - optional bytes language = 5 [default='english']; - optional bytes label = 6 [(binary) = true]; + optional string language = 5 [default='english']; + optional string label = 6; optional bool skip_checksum = 7; // Do not test mnemonic for valid BIP39 checksum } @@ -233,8 +233,8 @@ message ResetDevice { optional uint32 strength = 2 [default=128]; // Strength of seed in bits optional bool passphrase_protection = 3; optional bool pin_protection = 4; - optional bytes language = 5 [default='english']; - optional bytes label = 6 [(binary) = true]; + optional string language = 5 [default='english']; + optional string label = 6; } // Asks for additional Entropy from host computer @@ -243,7 +243,7 @@ message EntropyRequest { // Provide additional entropy for seed generation function. message EntropyAck { - optional bytes entropy = 1 [(binary) = true]; // Recommended to provide 256 bits (32 bytes) of random data. + optional bytes entropy = 1; // Recommended to provide 256 bits (32 bytes) of random data. } // Starts workflow of asking user for specific words of his mnemonic. @@ -253,9 +253,9 @@ message RecoveryDevice { optional uint32 word_count = 1; // How many words is in mnemonic sentence? optional bool passphrase_protection = 2; optional bool pin_protection = 3; - optional bytes language = 4 [default='english']; - optional bytes label = 5 [(binary) = true]; - optional bool enforce_wordlist = 6; // Trezor enforces BIP39 wordlist + optional string language = 4 [default='english']; + optional string label = 5; + optional bool enforce_wordlist = 6; // Trezor enforces BIP39 wordlist } // This message indicates that device is asking user for some word of his mnemonic. @@ -264,7 +264,7 @@ message WordRequest { } message WordAck { - required bytes word = 1 [(binary)=true]; // One word of mnemonic on asked position + required string word = 1; // One word of mnemonic on asked position } // **************************************************************************** @@ -274,19 +274,19 @@ message WordAck { message SignMessage { repeated uint32 address_n = 1; - required bytes message = 2 [(binary) = true]; - optional bytes coin_name = 3 [default='Bitcoin']; + required bytes message = 2; + optional string coin_name = 3 [default='Bitcoin']; } message VerifyMessage { - optional bytes address = 1; - optional bytes signature = 2 [(binary) = true]; - optional bytes message = 3 [(binary) = true]; + optional string address = 1; + optional bytes signature = 2; + optional bytes message = 3; } message MessageSignature { - optional bytes address = 1; - optional bytes signature = 2 [(binary) = true]; + optional string address = 1; + optional bytes signature = 2; } // Estimate size of the transaction @@ -300,7 +300,7 @@ message MessageSignature { message EstimateTxSize { required uint32 outputs_count = 1; // Count of outputs of the transaction required uint32 inputs_count = 2; // Count of inputs of the transaction - optional bytes coin_name = 3 [default='Bitcoin']; + optional string coin_name = 3 [default='Bitcoin']; } // Result of EstimateTxSize @@ -314,7 +314,7 @@ message TxSize { message SignTx { required uint32 outputs_count = 1; // Count of outputs of the transaction required uint32 inputs_count = 2; // Count of inputs of the transaction - optional bytes coin_name = 3 [default='Bitcoin']; + optional string coin_name = 3 [default='Bitcoin']; } // Request a simplified workflow of signing. @@ -333,7 +333,7 @@ message SimpleSignTx { repeated TxInputType inputs = 1; repeated TxOutputType outputs = 2; repeated TransactionType transactions = 3; - optional bytes coin_name = 4 [default='Bitcoin']; + optional string coin_name = 4 [default='Bitcoin']; } // Sent by the device as a response for SignTx. Device asks for information for signing transaction. @@ -344,8 +344,8 @@ message TxRequest { optional int32 request_index = 1; // If >=0, device expects TxInput/TxOutput message from the computer optional RequestType request_type = 2; // Ask for TxInput or TxOutput? optional int32 signed_index = 3; // If >=0, 'signature' contains signed input of this input - optional bytes signature = 4 [(binary) = true]; // If signed_index>=0, represent signature of the signed_index input - optional bytes serialized_tx = 5 [(binary) = true]; // Part of serialized and signed transaction + optional bytes signature = 4; // If signed_index>=0, represent signature of the signed_index input + optional bytes serialized_tx = 5; // Part of serialized and signed transaction } // Transaction onput for SignTx workflow. It is response to TxRequest message sent by device. @@ -370,7 +370,7 @@ message FirmwareErase { } message FirmwareUpload { - required bytes payload = 1 [(binary) = true]; // Firmware to flash into device + required bytes payload = 1; // Firmware to flash into device } // **************************************************************************** @@ -394,13 +394,13 @@ message DebugLinkGetState { // Response object reflecting device's current state. It can be received only over debug link connection. message DebugLinkState { - optional bytes layout = 1 [(binary) = true]; // Raw buffer of display - optional bytes pin = 2; // Current PIN, blank if PIN is not set/enabled - optional bytes matrix = 3; // Current PIN matrix - optional bytes mnemonic = 4; // current mnemonic format + optional bytes layout = 1; // Raw buffer of display + optional string pin = 2; // Current PIN, blank if PIN is not set/enabled + optional string matrix = 3; // Current PIN matrix + optional string mnemonic = 4; // current mnemonic format optional HDNodeType node = 5; // current node (BIP32 format) optional bool passphrase_protection = 6; - optional bytes word = 7; // What word is on display in RecoveryDevice/ResetDevice workflow + optional string word = 7; // What word is on display in RecoveryDevice/ResetDevice workflow optional int32 word_pos = 8; // Which word of mnemonic do the device expect optional bytes entropy = 9; // Return current entropy of ResetDevice workflow } @@ -411,6 +411,6 @@ message DebugLinkStop { message DebugLinkLog { optional uint32 level = 1; - optional bytes bucket = 2; - optional bytes text = 3; + optional string bucket = 2; + optional string text = 3; } diff --git a/protob/storage.proto b/protob/storage.proto index 9ec7359d1..7de4a3426 100644 --- a/protob/storage.proto +++ b/protob/storage.proto @@ -15,10 +15,10 @@ import "types.proto"; message Storage { required uint32 version = 1; optional HDNodeType node = 2; - optional bytes mnemonic = 3 [(binary) = true]; + optional string mnemonic = 3; optional bool passphrase_protection = 4; // whether node_serialized or mnemonic are encrypted (protected by passphrase) optional uint32 pin_failed_attempts = 5; - optional bytes pin = 6; - optional bytes language = 7; - optional bytes label = 8 [(binary) = true]; -} \ No newline at end of file + optional string pin = 6; + optional string language = 7; + optional string label = 8; +} diff --git a/protob/types.proto b/protob/types.proto index 95150b0ce..51ca60882 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -12,10 +12,6 @@ option java_outer_classname = "TrezorType"; import "google/protobuf/descriptor.proto"; -extend google.protobuf.FieldOptions { - optional bool binary = 50001; // message field has binary payload -} - extend google.protobuf.EnumValueOptions { optional bool wire_in = 50002; // message can be transmitted via wire from PC to TREZOR optional bool wire_out = 50003; // message can be transmitted via wire from TREZOR to PC @@ -66,32 +62,32 @@ message HDNodeType { required uint32 depth = 1; required uint32 fingerprint = 2; required uint32 child_num = 3; - required bytes chain_code = 4 [(binary) = true]; - optional bytes private_key = 5 [(binary) = true]; - optional bytes public_key = 6 [(binary) = true]; + required bytes chain_code = 4; + optional bytes private_key = 5; + optional bytes public_key = 6; } message CoinType { - optional bytes coin_name = 1; - optional bytes coin_shortcut = 2; + optional string coin_name = 1; + optional string coin_shortcut = 2; optional uint32 address_type = 3; optional uint64 maxfee_kb = 4; } message TxInputType { repeated uint32 address_n = 1; // Parameter for address generation algorithm to derive the address from the master node - required bytes prev_hash = 2 [(binary) = true]; // Hash of previous transaction output to spend by this input + required bytes prev_hash = 2; // Hash of previous transaction output to spend by this input required uint32 prev_index = 3; // Index of previous output to spend - optional bytes script_sig = 4 [(binary) = true]; // Script signature + optional bytes script_sig = 4; // Script signature optional uint32 sequence = 5 [default=0xffffffff]; } message TxOutputType { - optional bytes address = 1; // Target bitcoin address in base58 encoding + optional string address = 1; // Target bitcoin address in base58 encoding repeated uint32 address_n = 2; // Has higher priority than "address". required uint64 amount = 3; // Amount to send in satoshis required ScriptType script_type = 4; // Select output script type - repeated bytes script_args = 5 [(binary) = true]; // Provide additional parameters for the script (its script-depended) + repeated bytes script_args = 5; // Provide additional parameters for the script (its script-depended) } // Transaction output with script pubkey in binary form. @@ -99,7 +95,7 @@ message TxOutputType { // and for compiling TxOutput for signing. message TxOutputBinType { required uint64 amount = 1; - required bytes script_pubkey = 2 [(binary) = true]; + required bytes script_pubkey = 2; } message TransactionType { From f39b54601b6048369d71dda2ccd89807ba177e66 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Sat, 1 Mar 2014 12:07:45 +0100 Subject: [PATCH 032/767] add ButtonRequest_SignTx --- protob/types.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/protob/types.proto b/protob/types.proto index 51ca60882..bce837c9e 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -54,6 +54,7 @@ enum ButtonRequestType { ButtonRequest_ConfirmWord = 5; ButtonRequest_WipeDevice = 6; ButtonRequest_ProtectCall = 7; + ButtonRequest_SignTx = 8; } // Structure of BIP32 (hierarchical deterministic) node From 29dfac6691bffbf0b45f938a642e364768f3bb0e Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 7 Mar 2014 16:45:46 +0100 Subject: [PATCH 033/767] rename word variables in DebugLinkState message --- protob/messages.proto | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/protob/messages.proto b/protob/messages.proto index 94255cfb6..8bfc06e59 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -394,15 +394,16 @@ message DebugLinkGetState { // Response object reflecting device's current state. It can be received only over debug link connection. message DebugLinkState { - optional bytes layout = 1; // Raw buffer of display + optional bytes layout = 1; // Raw buffer of display optional string pin = 2; // Current PIN, blank if PIN is not set/enabled - optional string matrix = 3; // Current PIN matrix - optional string mnemonic = 4; // current mnemonic format - optional HDNodeType node = 5; // current node (BIP32 format) - optional bool passphrase_protection = 6; - optional string word = 7; // What word is on display in RecoveryDevice/ResetDevice workflow - optional int32 word_pos = 8; // Which word of mnemonic do the device expect - optional bytes entropy = 9; // Return current entropy of ResetDevice workflow + optional string matrix = 3; // Current PIN matrix + optional string mnemonic = 4; // Current mnemonic format + optional HDNodeType node = 5; // Current node (BIP32 format) + optional bool passphrase_protection = 6; // Is passphrase_protection set? + optional string reset_word = 7; // Word on display during ResetDevice workflow + optional bytes reset_entropy = 8; // Current entropy of ResetDevice workflow + optional string recovery_fake_word = 9; // (Fake) Word on display during RecoveryDevice workflow + optional uint32 recovery_word_pos = 10; // Index of mnemonic word the device is expecting } // Ask device to shutdown/restart From d18ad92fc1f4956b7544753d8133e0bfa5cc2e4d Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 10 Mar 2014 18:08:34 +0100 Subject: [PATCH 034/767] use PinMatrixRequestType instead of arbitrary string --- protob/messages.proto | 2 +- protob/types.proto | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/protob/messages.proto b/protob/messages.proto index 8bfc06e59..8a4b64b37 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -142,7 +142,7 @@ message ButtonAck { // // Response: PinMatrixAck, Cancel message PinMatrixRequest { - optional string message = 1; // Human readable message + optional PinMatrixRequestType type = 1; } // Message is sent by the computer as a response to PinMatrixRequest previously sent by the device. diff --git a/protob/types.proto b/protob/types.proto index bce837c9e..7739e9319 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -57,6 +57,12 @@ enum ButtonRequestType { ButtonRequest_SignTx = 8; } +enum PinMatrixRequestType { + PinMatrixRequestType_Current = 1; + PinMatrixRequestType_NewFirst = 2; + PinMatrixRequestType_NewSecond = 3; +} + // Structure of BIP32 (hierarchical deterministic) node // Used for imports of private key into the device and exporting public key out of device message HDNodeType { From e410acad0a7a680fa24702421917d8a874186bc7 Mon Sep 17 00:00:00 2001 From: slush0 Date: Mon, 10 Mar 2014 19:24:33 +0100 Subject: [PATCH 035/767] Tool for digitally signing the config for Trezor browser plugin --- protob/config.proto | 29 +++++++++++++ signer/.gitignore | 4 ++ signer/config.json | 15 +++++++ signer/sample.key | 6 +++ signer/sign.py | 100 ++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 154 insertions(+) create mode 100644 protob/config.proto create mode 100644 signer/.gitignore create mode 100644 signer/config.json create mode 100644 signer/sample.key create mode 100755 signer/sign.py diff --git a/protob/config.proto b/protob/config.proto new file mode 100644 index 000000000..13056884a --- /dev/null +++ b/protob/config.proto @@ -0,0 +1,29 @@ +// +// This file defines the configuration format for initializing the +// Trezor browser plugin. +// + +import "google/protobuf/descriptor.proto"; + +message DeviceDescriptor { + optional uint32 vendor_id = 1; + optional uint32 product_id = 2; + optional bytes serial_number = 3; + optional bytes path = 4; +} + +message Configuration { + // regexes of allowed/forbidden urls + repeated bytes whitelist_urls = 1; + repeated bytes blacklist_urls = 2; + + // compiled specification of the wire protocol, serialized + // FileDescriptorSet can be generated with `protoc -o` + required google.protobuf.FileDescriptorSet wire_protocol = 3; + + // descriptors of allowed devices + repeated DeviceDescriptor known_devices = 4; + + // timestamp of expiration + optional int32 valid_until = 5; +} diff --git a/signer/.gitignore b/signer/.gitignore new file mode 100644 index 000000000..a97789d61 --- /dev/null +++ b/signer/.gitignore @@ -0,0 +1,4 @@ +config_pb2.py +config_pb2.pyc +config_signed.bin +*.pem diff --git a/signer/config.json b/signer/config.json new file mode 100644 index 000000000..b00d0fe54 --- /dev/null +++ b/signer/config.json @@ -0,0 +1,15 @@ +{ + "whitelist_urls": [ + ".*", + "file://.*", + "https?://.*\\.mytrezor\\.com\\/.*", + "https?://mytrezor\\.com\\/.*" + ], + "blacklist_urls": [ + ], + "known_devices": [ + ["0x534c", "0x0001", "Trezor"], + ["0x10c4", "0xea80", "Trezor Shield"] + ], + "valid_days": 15 +} diff --git a/signer/sample.key b/signer/sample.key new file mode 100644 index 000000000..0e7d7ea54 --- /dev/null +++ b/signer/sample.key @@ -0,0 +1,6 @@ +-----BEGIN EC PRIVATE KEY----- +MHQCAQEEIBKl1isjNeP4S5uP5S9LI3RZu6+hNQRxO10IGTd8JBq3oAcGBSuBBAAK +oUQDQgAENEoHRLyHw1AM5jl0pbUNgXHFldzn1jWT/tGrlePY/vfKVVc2QM2pz0fb +YUn4WEZC8DDfQ3XEhvKnsyOotsY7QQ== +-----END EC PRIVATE KEY----- + diff --git a/signer/sign.py b/signer/sign.py new file mode 100755 index 000000000..8357c1a37 --- /dev/null +++ b/signer/sign.py @@ -0,0 +1,100 @@ +#!/usr/bin/python +import subprocess +import os +import json +import time +import ecdsa +import hashlib +import binascii +from google.protobuf.descriptor_pb2 import FileDescriptorSet + +PROTOBUF_PROTO_DIR=os.environ.get('PROTOBUF_PROTO_DIR', '/usr/include/') +TREZOR_PROTO_DIR=os.environ.get('TREZOR_PROTO_DIR', '../protob/') + +def compile_config(): + cmd = "protoc --python_out=../signer/ -I" + PROTOBUF_PROTO_DIR + " -I./ config.proto" + subprocess.check_call(cmd.split(), cwd=TREZOR_PROTO_DIR) + +def parse_json(): + return json.loads(open('config.json', 'r').read()) + + +def get_compiled_proto(): + # Compile trezor.proto to binary format + pdir = os.path.abspath(TREZOR_PROTO_DIR) + pfile = os.path.join(pdir, "messages.proto") + cmd = "protoc --include_imports -I" + PROTOBUF_PROTO_DIR + " -I" + pdir + " " + pfile + " -otrezor.bin" + + subprocess.check_call(cmd.split()) + + # Load compiled protocol description to string + proto = open('trezor.bin', 'r').read() + os.unlink('trezor.bin') + + # Parse it into FileDescriptorSet structure + compiled = FileDescriptorSet() + compiled.ParseFromString(proto) + return compiled + +def compose_message(json, proto): + import config_pb2 + + cfg = config_pb2.Configuration() + cfg.valid_until = int(time.time()) + json['valid_days'] * 3600 * 24 + cfg.wire_protocol.MergeFrom(proto) + + for url in json['whitelist_urls']: + cfg.whitelist_urls.append(str(url)) + + for url in json['blacklist_urls']: + cfg.blacklist_urls.append(str(url)) + + for dev in json['known_devices']: + desc = cfg.known_devices.add() + desc.vendor_id = int(dev[0], 16) + desc.product_id = int(dev[1], 16) + + return cfg.SerializeToString() + +def sign_message(data, key_pem): + # curve = ecdsa.curves.SECP256k1 + # x = ecdsa.keys.SigningKey.generate(curve=curve) + key = ecdsa.keys.SigningKey.from_pem(key_pem) + + verify = key.get_verifying_key() + print "Verifying key:" + print verify.to_pem() + + return key.sign_deterministic(data, hashfunc=hashlib.sha256) + +def pack_datafile(filename, signature, data): + if len(signature) != 64: + raise Exception("Signature must be 64 bytes long") + + fp = open(filename, 'w') + fp.write(binascii.hexlify(signature)) + fp.write(binascii.hexlify(data)) + fp.close() + + print "Signature and data stored to", filename + +if __name__ == '__main__': + key_pem = '' + print "Paste ECDSA private key (in PEM format) and press Enter:" + while True: + inp = raw_input() + if inp == '': + break + + key_pem += inp + "\n" + + # key_pem = open('sample.key', 'r').read() + + compile_config() + json = parse_json() + proto = get_compiled_proto() + + data = compose_message(json, proto) + signature = sign_message(data, key_pem) + + pack_datafile('config_signed.bin', signature, data) From 2b2d92b924b85d93bc927f892dcdce2abc90437b Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 13 Mar 2014 13:48:24 +0100 Subject: [PATCH 036/767] add revision to Features --- protob/messages.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/protob/messages.proto b/protob/messages.proto index 8a4b64b37..a86009821 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -89,6 +89,7 @@ message Features { optional string label = 10; repeated CoinType coins = 11; optional bool initialized = 12; // True if device cointains seed + optional string revision = 13; } // Overwrites only filled fields of the structure From bfcc001fd28a87e8daea6f3e22fd7440dc2bdfef Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 14 Mar 2014 15:02:29 +0100 Subject: [PATCH 037/767] add bl hash --- protob/messages.proto | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/protob/messages.proto b/protob/messages.proto index a86009821..38b00e55c 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -89,7 +89,8 @@ message Features { optional string label = 10; repeated CoinType coins = 11; optional bool initialized = 12; // True if device cointains seed - optional string revision = 13; + optional bytes revision = 13; + optional bytes bootloader_hash = 14; } // Overwrites only filled fields of the structure From df45b3cf06ea7f3bb3eba5cbcb179e3f1c48f949 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Sun, 23 Mar 2014 19:45:25 +0100 Subject: [PATCH 038/767] cosmetic changes --- protob/config.proto | 28 ++++++++++++++-------------- protob/messages.proto | 2 +- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/protob/config.proto b/protob/config.proto index 13056884a..0f14f7563 100644 --- a/protob/config.proto +++ b/protob/config.proto @@ -6,24 +6,24 @@ import "google/protobuf/descriptor.proto"; message DeviceDescriptor { - optional uint32 vendor_id = 1; - optional uint32 product_id = 2; - optional bytes serial_number = 3; - optional bytes path = 4; + optional uint32 vendor_id = 1; + optional uint32 product_id = 2; + optional bytes serial_number = 3; + optional bytes path = 4; } message Configuration { - // regexes of allowed/forbidden urls - repeated bytes whitelist_urls = 1; - repeated bytes blacklist_urls = 2; + // regexes of allowed/forbidden urls + repeated bytes whitelist_urls = 1; + repeated bytes blacklist_urls = 2; - // compiled specification of the wire protocol, serialized - // FileDescriptorSet can be generated with `protoc -o` - required google.protobuf.FileDescriptorSet wire_protocol = 3; + // compiled specification of the wire protocol, serialized + // FileDescriptorSet can be generated with `protoc -o` + required google.protobuf.FileDescriptorSet wire_protocol = 3; - // descriptors of allowed devices - repeated DeviceDescriptor known_devices = 4; + // descriptors of allowed devices + repeated DeviceDescriptor known_devices = 4; - // timestamp of expiration - optional int32 valid_until = 5; + // timestamp of expiration + optional uint32 valid_until = 5; } diff --git a/protob/messages.proto b/protob/messages.proto index 38b00e55c..c3fb2867c 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -80,7 +80,7 @@ message Features { optional string vendor = 1; // Name of the manufacturer, e.g. "bitcointrezor.com" optional uint32 major_version = 2; // Major version of the device, e.g. 1 optional uint32 minor_version = 3; // Minor version of the device, e.g. 0 - optional uint32 bugfix_version = 4; + optional uint32 patch_version = 4; // Patch version of the device, e.g. 0 optional bool bootloader_mode = 5; optional string device_id = 6; // Device's unique identifier optional bool pin_protection = 7; // True if Trezor is covered by PIN From 52f360ab12cdf15a86561036bbf3dd66bfbf15f5 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 25 Mar 2014 19:20:36 +0100 Subject: [PATCH 039/767] add documentation, remove TxInput/TxOutput messages, use TxAck instead --- protob/config.proto | 42 +-- protob/messages.proto | 602 +++++++++++++++++++++++++----------------- protob/storage.proto | 34 +-- protob/types.proto | 107 +++++--- signer/config.json | 2 +- 5 files changed, 473 insertions(+), 314 deletions(-) diff --git a/protob/config.proto b/protob/config.proto index 0f14f7563..51b03a7de 100644 --- a/protob/config.proto +++ b/protob/config.proto @@ -1,29 +1,29 @@ -// -// This file defines the configuration format for initializing the -// Trezor browser plugin. -// +/** + * Configuration format for TREZOR plugin + * + * @author Marek Palatinus + * @version 1.0 + */ import "google/protobuf/descriptor.proto"; +/** + * Device Descriptor used in Configuration + */ message DeviceDescriptor { - optional uint32 vendor_id = 1; - optional uint32 product_id = 2; - optional bytes serial_number = 3; - optional bytes path = 4; + optional uint32 vendor_id = 1; // USB vendor ID + optional uint32 product_id = 2; // USB product ID + optional string serial_number = 3; // USB serial number + optional string path = 4; // USB device path } +/** + * Plugin Configuration + */ message Configuration { - // regexes of allowed/forbidden urls - repeated bytes whitelist_urls = 1; - repeated bytes blacklist_urls = 2; - - // compiled specification of the wire protocol, serialized - // FileDescriptorSet can be generated with `protoc -o` - required google.protobuf.FileDescriptorSet wire_protocol = 3; - - // descriptors of allowed devices - repeated DeviceDescriptor known_devices = 4; - - // timestamp of expiration - optional uint32 valid_until = 5; + repeated string whitelist_urls = 1; // allowed URLs for plugin + repeated string blacklist_urls = 2; // forbidden URLs for plugin + required google.protobuf.FileDescriptorSet wire_protocol = 3; // compiled specification of write protocol (serialized using "protoc -o") + repeated DeviceDescriptor known_devices = 4; // descriptors of allowed devices + optional uint32 valid_until = 5; // expiration timestamp } diff --git a/protob/messages.proto b/protob/messages.proto index c3fb2867c..14bbe1391 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -1,21 +1,19 @@ -/* - Messages for TREZOR communication - - Author: Marek Palatinus - - Version: 0.6 -*/ - - -// Some sugar for easier handling in Multibit +/** + * Messages for TREZOR communication + * + * @author Marek Palatinus + * @version 0.6 + */ + +// Sugar for easier handling in Multibit option java_package = "org.multibit.hd.hardware.trezor.protobuf"; option java_outer_classname = "TrezorMessage"; import "types.proto"; -/* - Mapping between Trezor wire identifier (int) and protobuf message -*/ +/** + * Mapping between Trezor wire identifier (uint) and a protobuf message + */ enum MessageType { MessageType_Initialize = 0 [(wire_in) = true]; MessageType_Ping = 1 [(wire_in) = true]; @@ -38,8 +36,7 @@ enum MessageType { MessageType_PinMatrixAck = 19 [(wire_in) = true]; MessageType_Cancel = 20 [(wire_in) = true]; MessageType_TxRequest = 21 [(wire_out) = true]; - MessageType_TxInput = 23 [(wire_in) = true]; - MessageType_TxOutput = 24 [(wire_in) = true]; + MessageType_TxAck = 22 [(wire_in) = true]; MessageType_ApplySettings = 25 [(wire_in) = true]; MessageType_ButtonRequest = 26 [(wire_out) = true]; MessageType_ButtonAck = 27 [(wire_in) = true]; @@ -56,7 +53,7 @@ enum MessageType { MessageType_TxSize = 44 [(wire_out) = true]; MessageType_RecoveryDevice = 45 [(wire_in) = true]; MessageType_WordRequest = 46 [(wire_out) = true]; - MessageType_WordAck = 47 [(wire_in) = true]; + MessageType_WordAck = 47 [(wire_in) = true]; MessageType_DebugLinkDecision = 100 [(wire_debug_in) = true]; MessageType_DebugLinkGetState = 101 [(wire_debug_in) = true]; MessageType_DebugLinkState = 102 [(wire_debug_out) = true]; @@ -64,354 +61,467 @@ enum MessageType { MessageType_DebugLinkLog = 104 [(wire_debug_out) = true]; } -// **************************************************************************** -// -// Basic message -// +//////////////////// +// Basic messages // +//////////////////// -// Reset device to default state and ask for device details -// -// Response: Features +/** + * Request: Reset device to default state and ask for device details + * @next Features + */ message Initialize { } -// Response object for Initialize. +/** + * Response: Reports various information about the device + * @prev Initialize + */ message Features { - optional string vendor = 1; // Name of the manufacturer, e.g. "bitcointrezor.com" - optional uint32 major_version = 2; // Major version of the device, e.g. 1 - optional uint32 minor_version = 3; // Minor version of the device, e.g. 0 - optional uint32 patch_version = 4; // Patch version of the device, e.g. 0 - optional bool bootloader_mode = 5; - optional string device_id = 6; // Device's unique identifier - optional bool pin_protection = 7; // True if Trezor is covered by PIN - optional bool passphrase_protection = 8; // True if node/mnemonic is covered by passphrase - optional string language = 9; - optional string label = 10; - repeated CoinType coins = 11; - optional bool initialized = 12; // True if device cointains seed - optional bytes revision = 13; - optional bytes bootloader_hash = 14; -} - -// Overwrites only filled fields of the structure + optional string vendor = 1; // name of the manufacturer, e.g. "bitcointrezor.com" + optional uint32 major_version = 2; // major version of the device, e.g. 1 + optional uint32 minor_version = 3; // minor version of the device, e.g. 0 + optional uint32 patch_version = 4; // patch version of the device, e.g. 0 + optional bool bootloader_mode = 5; // is device in bootloader mode? + optional string device_id = 6; // device's unique identifier + optional bool pin_protection = 7; // is device protected by PIN? + optional bool passphrase_protection = 8; // is node/mnemonic encrypted using passphrase? + optional string language = 9; // device language + optional string label = 10; // device description label + repeated CoinType coins = 11; // supported coins + optional bool initialized = 12; // does device contain seed? + optional bytes revision = 13; // SCM revision of firmware + optional bytes bootloader_hash = 14; // hash of the bootloader +} + +/** + * Request: change language and/or label of the device + * @next Success + * @next Failure + * @next ButtonRequest + * @next PinMatrixRequest + */ message ApplySettings { optional string language = 1; optional string label = 2; } -// Starts workflow for setting/changing the PIN -// Response: ButtonRequest, PinMatrixRequest +/** + * Request: Starts workflow for setting/changing/removing the PIN + * @next ButtonRequest + * @next PinMatrixRequest + */ message ChangePin { - optional bool remove = 1; // Set True if want to remove PIN protection + optional bool remove = 1; // is PIN removal requested? } -// Test if device is live, device will send back the message on success -// -// Response: None or Success +/** + * Request: Test if the device is alive, device sends back the message in Success response + * @next Success + */ message Ping { - optional string message = 1; // Message will be sent back in Success message - optional bool button_protection = 2; // Ask for button press - optional bool pin_protection = 3; // Ask for PIN if set - optional bool passphrase_protection = 4; // Ask for passphrase if set + optional string message = 1; // message to send back in Success message + optional bool button_protection = 2; // ask for button press + optional bool pin_protection = 3; // ask for PIN if set in device + optional bool passphrase_protection = 4; // ask for passphrase if set in device } -// Response object defining success of the previous request +/** + * Response: Success of the previous request + */ message Success { - optional string message = 1; // May contain human readable description of the action or request-specific payload + optional string message = 1; // human readable description of action or request-specific payload } -// Response object defining failure of the previous request +/** + * Response: Failure of the previous request + */ message Failure { - optional FailureType code = 1; // May contain computer-readable definition of the error state - optional string message = 2; // May contain human-readable message of the error state + optional FailureType code = 1; // computer-readable definition of the error state + optional string message = 2; // human-readable message of the error state } -// Message can be sent by the *device* as a resopnse to any request. -// Device is waiting for HW button press. No action is required from computer -// Computer should respond with ButtonAck message or Cancel to cancel -// the original request. +/** + * Response: Device is waiting for HW button press. + * @next ButtonAck + * @next Cancel + */ message ButtonRequest { optional ButtonRequestType code = 1; optional string data = 2; } -// Computer agrees to wait for HW button press. +/** + * Request: Computer agrees to wait for HW button press + * @prev ButtonRequest + */ message ButtonAck { } -// Message can be sent by the *device* as a response to any request. -// Message asks computer to send back PinMatrixAck with the password encoded in pin matrix scheme. -// -// Response: PinMatrixAck, Cancel +/** + * Response: Device is asking computer to show PIN matrix and awaits PIN encoded using this matrix scheme + * @next PinMatrixAck + * @next Cancel + */ message PinMatrixRequest { optional PinMatrixRequestType type = 1; } -// Message is sent by the computer as a response to PinMatrixRequest previously sent by the device. +/** + * Request: Computer responds with encoded PIN + * @prev PinMatrixRequest + */ message PinMatrixAck { - required string pin = 1; // User must write down the password for accessing the device. + required string pin = 1; // matrix encoded PIN entered by user } -// Message is sent as a cancel response to ButtonRequest, PinMatrixRequest and PassphraseRequest +/** + * Request: Abort last operation that required user interaction + * @prev ButtonRequest + * @prev PinMatrixRequest + * @prev PassphraseRequest + */ message Cancel { } -// Device request encryption passphrase +/** + * Response: Device awaits encryption passphrase + * @next PassphraseAck + * @next Cancel + */ message PassphraseRequest { } -// Computer sends passphrase to device. +/** + * Request: Send passphrase back + * @prev PassphraseRequest + */ message PassphraseAck { required string passphrase = 1; } -// Request a sample of random data generated by hardware RNG. May be used -// for tests of internal RNG. -// -// Response: PinMatrixRequest, Entropy, Failure +/** + * Request: Request a sample of random data generated by hardware RNG. May be used for testing. + * @next ButtonRequest + * @next Entropy + * @next Failure + */ message GetEntropy { - required uint32 size = 1; // Size of randomly generated buffer + required uint32 size = 1; // size of requested entropy } -// Response to GetEntropy request contains random data generated by internal HRNG. +/** + * Response: Reply with random data generated by internal RNG + * @prev GetEntropy + */ message Entropy { - required bytes entropy = 1; // Stream of generated bytes + required bytes entropy = 1; // stream of random generated bytes } -// Ask device for public key corresponding of address_n path. This may be used for generating -// public keys on the computer independently to the device. -// -// Response: PublicKey, Failure +/** + * Request: Ask device for public key corresponding to address_n path + * @next PassphraseRequest + * @next PublicKey + * @next Failure + */ message GetPublicKey { - repeated uint32 address_n = 1; + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node } -// Contains public key derived from device's seed. +/** + * Response: Contains public key derived from device private seed + * @prev GetPublicKey + */ message PublicKey { - required HDNodeType node = 1; // BIP32 node public key + chaincode + required HDNodeType node = 1; // BIP32 public node } +/** + * Request: Ask device for address corresponding to address_n path + * @next PassphraseRequest + * @next Address + * @next Failure + */ message GetAddress { - repeated uint32 address_n = 1; // Parameter for address generation algorithm to derive the address from the master node + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node optional string coin_name = 2 [default='Bitcoin']; } +/** + * Response: Contains address derived from device private seed + * @prev GetAddress + */ message Address { - required string address = 1; // Bitcoin address in base58 encoding corresponding to GetAddress(n) call + required string address = 1; // Coin address in Base58 encoding } -// Request device to wipe all sensitive data and settings. -// Device will be turned to uninitialized state. -// -// Response: ButtonRequest +/** + * Request: Request device to wipe all sensitive data and settings + * @next ButtonRequest + */ message WipeDevice { } -// Load seed and related internal settings from computer to the device. Existing seed is overwritten. -// -// Response: Success, ButtonRequest, PinMatrixRequest, Failure +/** + * Request: Load seed and related internal settings from the computer + * @next ButtonRequest + * @next Success + * @next Failure + */ message LoadDevice { - optional string mnemonic = 1; // Seed encoded as a mnemonic (12 english words) - optional HDNodeType node = 2; - optional string pin = 3; // Set PIN protection for important actions - optional bool passphrase_protection = 4; - optional string language = 5 [default='english']; - optional string label = 6; - optional bool skip_checksum = 7; // Do not test mnemonic for valid BIP39 checksum -} - -// Request device to do full-reset, to generate new seed -// and ask user for new settings (PIN). -// Workflow is splitted into ResetDevice/EntropyRequest to be sure -// that entropy provided by device isn't calculated on base of computer provided -// entropy. -// -// -// Response: EntropyRequest, PinMatrixRequest, Failure + optional string mnemonic = 1; // seed encoded as BIP-39 mnemonic (12, 18 or 24 words) + optional HDNodeType node = 2; // BIP-32 node + optional string pin = 3; // set PIN protection + optional bool passphrase_protection = 4; // enable master node encryption using passphrase + optional string language = 5 [default='english']; // device language + optional string label = 6; // device label + optional bool skip_checksum = 7; // do not test mnemonic for valid BIP-39 checksum +} + +/** + * Request: Ask device to do initialization involving user interaction + * @next EntropyRequest + * @next Failure + */ message ResetDevice { - optional bool display_random = 1; // If set, displays entropy generated by the device used - // for generating the seed *before* asking - // for additional entropy from computer - optional uint32 strength = 2 [default=128]; // Strength of seed in bits - optional bool passphrase_protection = 3; - optional bool pin_protection = 4; - optional string language = 5 [default='english']; - optional string label = 6; -} - -// Asks for additional Entropy from host computer + optional bool display_random = 1; // display entropy generated by the device before asking for additional entropy + optional uint32 strength = 2 [default=128]; // strength of seed in bits + optional bool passphrase_protection = 3; // enable master node encryption using passphrase + optional bool pin_protection = 4; // enable PIN protection + optional string language = 5 [default='english']; // device language + optional string label = 6; // device label +} + +/** + * Response: Ask for additional entropy from host computer + * @prev ResetDevice + * @next EntropyAck + */ message EntropyRequest { } -// Provide additional entropy for seed generation function. +/** + * Request: Provide additional entropy for seed generation function + * @prev EntropyRequest + * @next ButtonRequest + */ message EntropyAck { - optional bytes entropy = 1; // Recommended to provide 256 bits (32 bytes) of random data. + optional bytes entropy = 1; // 256 bits (32 bytes) of random data } -// Starts workflow of asking user for specific words of his mnemonic. -// This may be used for safe recovery of lost device -// using mnemonic on untrusted computer. +/** + * Request: Start recovery workflow asking user for specific words of mnemonic + * Used to recovery device safely even on untrusted computer. + * @next WordRequest + */ message RecoveryDevice { - optional uint32 word_count = 1; // How many words is in mnemonic sentence? - optional bool passphrase_protection = 2; - optional bool pin_protection = 3; - optional string language = 4 [default='english']; - optional string label = 5; - optional bool enforce_wordlist = 6; // Trezor enforces BIP39 wordlist -} - -// This message indicates that device is asking user for some word of his mnemonic. -// Position of the word is displayed only on device's internal display. + optional uint32 word_count = 1; // number of words in BIP-39 mnemonic + optional bool passphrase_protection = 2; // enable master node encryption using passphrase + optional bool pin_protection = 3; // enable PIN protection + optional string language = 4 [default='english']; // device language + optional string label = 5; // device label + optional bool enforce_wordlist = 6; // enforce BIP-39 wordlist during the process +} + +/** + * Response: Device is waiting for user to enter word of the mnemonic + * Its position is shown only on device's internal display. + * @prev RecoveryDevice + * @prev WordAck + */ message WordRequest { } +/** + * Request: Computer replies with word from the mnemonic + * @prev WordRequest + * @next WordRequest + * @next Success + * @next Failure + */ message WordAck { - required string word = 1; // One word of mnemonic on asked position + required string word = 1; // one word of mnemonic on asked position } -// **************************************************************************** -// -// Messages related to transaction signing -// +////////////////////////////// +// Message signing messages // +////////////////////////////// +/** + * Request: Ask device to sign message + * @next MessageSignature + * @next Failure + */ message SignMessage { - repeated uint32 address_n = 1; - required bytes message = 2; - optional string coin_name = 3 [default='Bitcoin']; + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + required bytes message = 2; // message to be signed + optional string coin_name = 3 [default='Bitcoin']; // coin to use for signing } +/** + * Request: Ask device to verify message + * @next Success + * @next Failure + */ message VerifyMessage { - optional string address = 1; - optional bytes signature = 2; - optional bytes message = 3; + optional string address = 1; // address to verify + optional bytes signature = 2; // signature to verify + optional bytes message = 3; // message to verify } +/** + * Response: Signed message + * @prev SignMessage + */ message MessageSignature { - optional string address = 1; - optional bytes signature = 2; -} - -// Estimate size of the transaction -// This call behaves exactly like SignTx, -// which means that it can ask for TxInput and TxInput. -// This call is non-blocking (except possible PassphraseRequest -// to unlock the seed) and returns estimated size of transaction -// in bytes. -// -// Response: TxRequest, TxSize, Failure + optional string address = 1; // address used to sign the message + optional bytes signature = 2; // signature of the message +} + +////////////////////////////////// +// Transaction signing messages // +////////////////////////////////// + +/** + * Request: Estimated size of the transaction + * This behaves exactly like SignTx, which means that it can ask using TxRequest + * This call is non-blocking (except possible PassphraseRequest to unlock the seed) + * @next TxSize + * @next Failure + */ message EstimateTxSize { - required uint32 outputs_count = 1; // Count of outputs of the transaction - required uint32 inputs_count = 2; // Count of inputs of the transaction - optional string coin_name = 3 [default='Bitcoin']; + required uint32 outputs_count = 1; // number of transaction outputs + required uint32 inputs_count = 2; // number of transaction inputs + optional string coin_name = 3 [default='Bitcoin']; // coin to use } -// Result of EstimateTxSize +/** + * Response: Estimated size of the transaction + * @prev EstimateTxSize + */ message TxSize { - optional uint32 tx_size = 1; // Size of transaction in bytes + optional uint32 tx_size = 1; // estimated size of transaction in bytes } -// Request the device to sign the transaction -// -// Response: TxRequest, PinMatrixRequest, Failure +/** + * Request: Ask device to sign transaction + * @next PinMatrixRequest + * @next TxRequest + * @next Failure + */ message SignTx { - required uint32 outputs_count = 1; // Count of outputs of the transaction - required uint32 inputs_count = 2; // Count of inputs of the transaction - optional string coin_name = 3 [default='Bitcoin']; -} - -// Request a simplified workflow of signing. -// This method doesn't support streaming, -// so there may be hardware limits -// in number of inputs and outputs. -// -// This simplified workflow should not be used -// in production, it is designed mainly for debug purposes. -// -// When everything is fine, Success.message contains -// serialized transaction. -// -// Response: Success, PinMatrixRequest, Failure + required uint32 outputs_count = 1; // number of transaction outputs + required uint32 inputs_count = 2; // number of transaction inputs + optional string coin_name = 3 [default='Bitcoin']; // coin to use +} + +/** + * Request: Simplified transaction signing + * This method doesn't support streaming, so there are hardware limits in number of inputs and outputs. + * In case of success, the result is returned using TxRequest message. + * @next PinMatrixRequest + * @next TxRequest + * @next Failure + */ message SimpleSignTx { - repeated TxInputType inputs = 1; - repeated TxOutputType outputs = 2; - repeated TransactionType transactions = 3; - optional string coin_name = 4 [default='Bitcoin']; -} - -// Sent by the device as a response for SignTx. Device asks for information for signing transaction. -// If request_index is set, device asks for TxInput/TxOutput message (depends on request_type) -// with details of index's input. -// If signed_index is set, 'signature' contains signed input of signed_index's input. + repeated TxInputType inputs = 1; // transaction inputs + repeated TxOutputType outputs = 2; // transaction outputs + repeated TransactionType transactions = 3; // transactions whose outputs are used to build current inputs + optional string coin_name = 4 [default='Bitcoin']; // coin to use +} + +/** + * Response: Device asks for information for signing transaction or returns the last result + * If request_index is set, device awaits TxAck message (with fields filled in according to request_type) + * If signature_index is set, 'signature' contains signed input of signature_index's input + * @prev SignTx + * @prev SimpleSignTx + * @prev TxAck + */ message TxRequest { - optional int32 request_index = 1; // If >=0, device expects TxInput/TxOutput message from the computer - optional RequestType request_type = 2; // Ask for TxInput or TxOutput? - optional int32 signed_index = 3; // If >=0, 'signature' contains signed input of this input - optional bytes signature = 4; // If signed_index>=0, represent signature of the signed_index input - optional bytes serialized_tx = 5; // Part of serialized and signed transaction -} - -// Transaction onput for SignTx workflow. It is response to TxRequest message sent by device. -// -// Response: TxRequest, Failure -message TxInput { - required TxInputType input = 1; -} - -// Transaction output for SignTx workflow. It is response to TxRequest message sent by the device. -// This contains all data necessary to build transaction output (script_pubkey). -message TxOutput { - required TxOutputType output = 1; -} - -// **************************************************************************** -// -// Bootloader messages -// - + optional uint32 request_index = 1; // device expects TxAck message from the computer + optional RequestType request_type = 2; // what should be filled in TxAck message? + optional uint32 signature_index = 3; // 'signature' field contains signed input of this index + optional bytes signature = 4; // signature of the signature_index input + optional bytes serialized_tx = 5; // part of serialized and signed transaction + optional bytes tx_hash = 6; // tx_hash of requested transaction + optional bool finished = 7; // is this the last TxRequest? +} + +/** + * Request: Reported transaction data + * @prev TxRequest + * @next TxRequest + */ +message TxAck { + optional TransactionType tx = 1; +} + +///////////////////////// +// Bootloader messages // +///////////////////////// + +/** + * Request: Ask device to erase its firmware + * @next Success + * @next Failure + */ message FirmwareErase { } +/** + * Request: Send firmware in binary form to the device + * @next Success + * @next Failure + */ message FirmwareUpload { - required bytes payload = 1; // Firmware to flash into device + required bytes payload = 1; // firmware to be loaded into device } -// **************************************************************************** -// -// Debug* messages are used only on DebugLink interface (separated from USB HID) -// +///////////////////////////////////////////////////////////// +// Debug messages (only available if DebugLink is enabled) // +///////////////////////////////////////////////////////////// -// Virtually "press" the button on the device. -// Message is available only on debugging connection and device must support "debug_link" feature. -// -// Response: Success +/** + * Request: "Press" the button on the device + * @next Success + */ message DebugLinkDecision { - required bool yes_no = 1; // True for "confirm", False for "cancel" + required bool yes_no = 1; // true for "Confirm", false for "Cancel" } -// When sent over debug link connection, computer asks for some internal information of the device. -// -// Response: DebugLinkState +/** + * Request: Computer asks for device state + * @next DebugLinkState + */ message DebugLinkGetState { } -// Response object reflecting device's current state. It can be received only over debug link connection. +/** + * Response: Device current state + * @prev DebugLinkGetState + */ message DebugLinkState { - optional bytes layout = 1; // Raw buffer of display - optional string pin = 2; // Current PIN, blank if PIN is not set/enabled - optional string matrix = 3; // Current PIN matrix - optional string mnemonic = 4; // Current mnemonic format - optional HDNodeType node = 5; // Current node (BIP32 format) - optional bool passphrase_protection = 6; // Is passphrase_protection set? - optional string reset_word = 7; // Word on display during ResetDevice workflow - optional bytes reset_entropy = 8; // Current entropy of ResetDevice workflow - optional string recovery_fake_word = 9; // (Fake) Word on display during RecoveryDevice workflow - optional uint32 recovery_word_pos = 10; // Index of mnemonic word the device is expecting -} - -// Ask device to shutdown/restart + optional bytes layout = 1; // raw buffer of display + optional string pin = 2; // current PIN, blank if PIN is not set/enabled + optional string matrix = 3; // current PIN matrix + optional string mnemonic = 4; // current BIP-39 mnemonic + optional HDNodeType node = 5; // current BIP-32 node + optional bool passphrase_protection = 6; // is node/mnemonic encrypted using passphrase? + optional string reset_word = 7; // word on device display during ResetDevice workflow + optional bytes reset_entropy = 8; // current entropy during ResetDevice workflow + optional string recovery_fake_word = 9; // (fake) word on display during RecoveryDevice workflow + optional uint32 recovery_word_pos = 10; // index of mnemonic word the device is expecting during RecoveryDevice workflow +} + +/** + * Request: Ask device to restart + */ message DebugLinkStop { } +/** + * Response: Device wants host to log event + */ message DebugLinkLog { optional uint32 level = 1; optional string bucket = 2; diff --git a/protob/storage.proto b/protob/storage.proto index 7de4a3426..2b37ea1e2 100644 --- a/protob/storage.proto +++ b/protob/storage.proto @@ -1,24 +1,26 @@ -/* - Structure of Storage area of TREZOR +/** + * Storage area of TREZOR + * + * @author Marek Palatinus + * @version 1 + */ - Author: Marek Palatinus - - Version: 0.1 -*/ - -// Some sugar for easier handling in Multibit +// Sugar for easier handling in Multibit option java_package = "org.multibit.hd.hardware.trezor.protobuf"; option java_outer_classname = "TrezorStorage"; import "types.proto"; +/** + * Internal persistent storage of device + */ message Storage { - required uint32 version = 1; - optional HDNodeType node = 2; - optional string mnemonic = 3; - optional bool passphrase_protection = 4; // whether node_serialized or mnemonic are encrypted (protected by passphrase) - optional uint32 pin_failed_attempts = 5; - optional string pin = 6; - optional string language = 7; - optional string label = 8; + required uint32 version = 1; // version of storage + optional HDNodeType node = 2; // BIP-32 node (mnemonic cannot be used if this is present) + optional string mnemonic = 3; // BIP-39 mnemonic (node cannot be used if this is present) + optional bool passphrase_protection = 4; // whether to require passphrase to decrypt node or stretch mnemonic + optional uint32 pin_failed_attempts = 5; // number of failed PIN attempts + optional string pin = 6; // current PIN + optional string language = 7; // current language + optional string label = 8; // device label } diff --git a/protob/types.proto b/protob/types.proto index 7739e9319..450633dc7 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -1,24 +1,30 @@ -/* - Types for TREZOR communication - - Author: Marek Palatinus - - Version: 0.6 -*/ - -// Some sugar for easier handling in Multibit +/** + * Types for TREZOR communication + * + * @author Marek Palatinus + * @version 0.6 + */ + +// Sugar for easier handling in Multibit option java_package = "org.multibit.hd.hardware.trezor.protobuf"; option java_outer_classname = "TrezorType"; import "google/protobuf/descriptor.proto"; +/** + * Options for specifying message direction and type of wire (normal/debug) + */ extend google.protobuf.EnumValueOptions { - optional bool wire_in = 50002; // message can be transmitted via wire from PC to TREZOR - optional bool wire_out = 50003; // message can be transmitted via wire from TREZOR to PC + optional bool wire_in = 50002; // message can be transmitted via wire from PC to TREZOR + optional bool wire_out = 50003; // message can be transmitted via wire from TREZOR to PC optional bool wire_debug_in = 50004; // message can be transmitted via debug wire from PC to TREZOR optional bool wire_debug_out = 50005; // message can be transmitted via debug wire from TREZOR to PC } +/** + * Type of failures returned by Failure message + * @used_in Failure + */ enum FailureType { Failure_UnexpectedMessage = 1; Failure_ButtonExpected = 2; @@ -34,18 +40,29 @@ enum FailureType { Failure_FirmwareError = 99; } -// Specifies which script will be used for given transaction output. +/** + * Type of script which will be used for transaction output + * @used_in TxOutputType + */ enum ScriptType { PAYTOADDRESS = 0; PAYTOSCRIPTHASH = 1; } -// Specifies which kind of information is required by transaction signing process +/** + * Type of information required by transaction signing process + * @used_in TxRequest + */ enum RequestType { TXINPUT = 0; TXOUTPUT = 1; + TXMETA = 2; } +/** + * Type of button request + * @used_in ButtonRequest + */ enum ButtonRequestType { ButtonRequest_Other = 1; ButtonRequest_FeeOverThreshold = 2; @@ -57,14 +74,24 @@ enum ButtonRequestType { ButtonRequest_SignTx = 8; } +/** + * Type of PIN request + * @used_in PinMatrixRequest + */ enum PinMatrixRequestType { PinMatrixRequestType_Current = 1; PinMatrixRequestType_NewFirst = 2; PinMatrixRequestType_NewSecond = 3; } -// Structure of BIP32 (hierarchical deterministic) node -// Used for imports of private key into the device and exporting public key out of device +/** + * Structure representing BIP32 (hierarchical deterministic) node + * Used for imports of private key into the device and exporting public key out of device + * @used_in PublicKey + * @used_in LoadDevice + * @used_in DebugLinkState + * @used_in Storage + */ message HDNodeType { required uint32 depth = 1; required uint32 fingerprint = 2; @@ -74,6 +101,10 @@ message HDNodeType { optional bytes public_key = 6; } +/** + * Structure representing Coin + * @used_in Features + */ message CoinType { optional string coin_name = 1; optional string coin_shortcut = 2; @@ -81,33 +112,49 @@ message CoinType { optional uint64 maxfee_kb = 4; } +/** + * Structure representing transaction input + * @used_in SimpleSignTx + * @used_in TransactionType + */ message TxInputType { - repeated uint32 address_n = 1; // Parameter for address generation algorithm to derive the address from the master node - required bytes prev_hash = 2; // Hash of previous transaction output to spend by this input - required uint32 prev_index = 3; // Index of previous output to spend - optional bytes script_sig = 4; // Script signature - optional uint32 sequence = 5 [default=0xffffffff]; + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + required bytes prev_hash = 2; // hash of previous transaction output to spend by this input + required uint32 prev_index = 3; // index of previous output to spend + optional bytes script_sig = 4; // script signature + optional uint32 sequence = 5 [default=0xffffffff]; // sequence } +/** + * Structure representing transaction output + * @used_in SimpleSignTx + * @used_in TransactionType + */ message TxOutputType { - optional string address = 1; // Target bitcoin address in base58 encoding - repeated uint32 address_n = 2; // Has higher priority than "address". - required uint64 amount = 3; // Amount to send in satoshis - required ScriptType script_type = 4; // Select output script type - repeated bytes script_args = 5; // Provide additional parameters for the script (its script-depended) + optional string address = 1; // target coin address in Base58 encoding + repeated uint32 address_n = 2; // BIP-32 path to derive the key from master node; has higher priority than "address" + required uint64 amount = 3; // amount to spend in satoshis + required ScriptType script_type = 4; // output script type + repeated bytes script_args = 5; // additional parameters for the script (script-dependent) } -// Transaction output with script pubkey in binary form. -// This is used for obtaining hashes of existing transactions -// and for compiling TxOutput for signing. +/** + * Structure representing compiled transaction output + * @used_in TransactionType + */ message TxOutputBinType { required uint64 amount = 1; required bytes script_pubkey = 2; } +/** + * Structure representing transaction + * @used_in SimpleSignTx + */ message TransactionType { - optional uint32 version = 1 [default=1]; + optional uint32 version = 1; repeated TxInputType inputs = 2; repeated TxOutputBinType outputs = 3; - optional uint32 lock_time = 4 [default=0]; + repeated TxOutputType our_outputs = 4; + optional uint32 lock_time = 5; } diff --git a/signer/config.json b/signer/config.json index b00d0fe54..4f649184b 100644 --- a/signer/config.json +++ b/signer/config.json @@ -9,7 +9,7 @@ ], "known_devices": [ ["0x534c", "0x0001", "Trezor"], - ["0x10c4", "0xea80", "Trezor Shield"] + ["0x10c4", "0xea80", "Trezor Shield"] ], "valid_days": 15 } From 8f7658da89ca807aa5092fa251a1bbe2db46ba06 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 2 Apr 2014 20:27:42 +0200 Subject: [PATCH 040/767] outputs->bin_outputs, our_outputs->outputs in TransactionType --- protob/types.proto | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/protob/types.proto b/protob/types.proto index 450633dc7..190bcb435 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -154,7 +154,7 @@ message TxOutputBinType { message TransactionType { optional uint32 version = 1; repeated TxInputType inputs = 2; - repeated TxOutputBinType outputs = 3; - repeated TxOutputType our_outputs = 4; - optional uint32 lock_time = 5; + repeated TxOutputBinType bin_outputs = 3; + repeated TxOutputType outputs = 5; + optional uint32 lock_time = 4; } From 8d94d6168ff10dd7a58cf7934b3be97b1d85116d Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 7 Apr 2014 18:01:11 +0200 Subject: [PATCH 041/767] change java package for protobuf classes --- protob/Makefile | 2 +- protob/messages.proto | 4 ++-- protob/storage.proto | 4 ++-- protob/types.proto | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/protob/Makefile b/protob/Makefile index a0d53c0c6..9956d448f 100644 --- a/protob/Makefile +++ b/protob/Makefile @@ -1,4 +1,4 @@ -all: messages.pb storage.pb types.pb +check: config.pb messages.pb storage.pb types.pb %.pb: %.proto protoc -I/usr/include -I. $< -o $@ diff --git a/protob/messages.proto b/protob/messages.proto index 14bbe1391..ac116b5be 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -5,8 +5,8 @@ * @version 0.6 */ -// Sugar for easier handling in Multibit -option java_package = "org.multibit.hd.hardware.trezor.protobuf"; +// Sugar for easier handling in Java +option java_package = "com.satoshilabs.trezor.protobuf"; option java_outer_classname = "TrezorMessage"; import "types.proto"; diff --git a/protob/storage.proto b/protob/storage.proto index 2b37ea1e2..1eb97f977 100644 --- a/protob/storage.proto +++ b/protob/storage.proto @@ -5,8 +5,8 @@ * @version 1 */ -// Sugar for easier handling in Multibit -option java_package = "org.multibit.hd.hardware.trezor.protobuf"; +// Sugar for easier handling in Java +option java_package = "com.satoshilabs.trezor.protobuf"; option java_outer_classname = "TrezorStorage"; import "types.proto"; diff --git a/protob/types.proto b/protob/types.proto index 190bcb435..23f47f5be 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -5,8 +5,8 @@ * @version 0.6 */ -// Sugar for easier handling in Multibit -option java_package = "org.multibit.hd.hardware.trezor.protobuf"; +// Sugar for easier handling in Java +option java_package = "com.satoshilabs.trezor.protobuf"; option java_outer_classname = "TrezorType"; import "google/protobuf/descriptor.proto"; From df99b56108f071c0972c1ee8b86a5245157a4430 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 9 Apr 2014 19:56:47 +0200 Subject: [PATCH 042/767] add PassphraseRequest to docu --- protob/messages.proto | 2 ++ 1 file changed, 2 insertions(+) diff --git a/protob/messages.proto b/protob/messages.proto index ac116b5be..9d6db75a3 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -404,6 +404,7 @@ message TxSize { /** * Request: Ask device to sign transaction + * @next PassphraseRequest * @next PinMatrixRequest * @next TxRequest * @next Failure @@ -418,6 +419,7 @@ message SignTx { * Request: Simplified transaction signing * This method doesn't support streaming, so there are hardware limits in number of inputs and outputs. * In case of success, the result is returned using TxRequest message. + * @next PassphraseRequest * @next PinMatrixRequest * @next TxRequest * @next Failure From bff8038fadbc62aac575c862e7a15b065242d736 Mon Sep 17 00:00:00 2001 From: slush0 Date: Wed, 9 Apr 2014 20:15:37 +0200 Subject: [PATCH 043/767] Reworked TxRequest message --- protob/messages.proto | 19 +++++++++++++------ protob/types.proto | 1 + 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/protob/messages.proto b/protob/messages.proto index 9d6db75a3..c58aab01b 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -440,13 +440,20 @@ message SimpleSignTx { * @prev TxAck */ message TxRequest { + optional RequestType request_type = 1; // what should be filled in TxAck message? + optional TxRequestDetails details = 2; + optional TxRequestSerialized serialized = 3; +} + +message TxRequestDetails { optional uint32 request_index = 1; // device expects TxAck message from the computer - optional RequestType request_type = 2; // what should be filled in TxAck message? - optional uint32 signature_index = 3; // 'signature' field contains signed input of this index - optional bytes signature = 4; // signature of the signature_index input - optional bytes serialized_tx = 5; // part of serialized and signed transaction - optional bytes tx_hash = 6; // tx_hash of requested transaction - optional bool finished = 7; // is this the last TxRequest? + optional bytes tx_hash = 2; // tx_hash of requested transaction +} + +message TxRequestSerialized { + optional uint32 signature_index = 1; // 'signature' field contains signed input of this index + optional bytes signature = 2; // signature of the signature_index input + optional bytes serialized_tx = 3; // part of serialized and signed transaction } /** diff --git a/protob/types.proto b/protob/types.proto index 23f47f5be..3d713f564 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -57,6 +57,7 @@ enum RequestType { TXINPUT = 0; TXOUTPUT = 1; TXMETA = 2; + TXFINISHED = 3; } /** From 28be645370c5992db0e3597d06d5e199ebb8ea7a Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 9 Apr 2014 20:19:30 +0200 Subject: [PATCH 044/767] fix whitespace --- protob/messages.proto | 6 +++--- protob/types.proto | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/protob/messages.proto b/protob/messages.proto index c58aab01b..705927400 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -441,8 +441,8 @@ message SimpleSignTx { */ message TxRequest { optional RequestType request_type = 1; // what should be filled in TxAck message? - optional TxRequestDetails details = 2; - optional TxRequestSerialized serialized = 3; + optional TxRequestDetails details = 2; // request for tx details + optional TxRequestSerialized serialized = 3; // serialized data and request for next } message TxRequestDetails { @@ -453,7 +453,7 @@ message TxRequestDetails { message TxRequestSerialized { optional uint32 signature_index = 1; // 'signature' field contains signed input of this index optional bytes signature = 2; // signature of the signature_index input - optional bytes serialized_tx = 3; // part of serialized and signed transaction + optional bytes serialized_tx = 3; // part of serialized and signed transaction } /** diff --git a/protob/types.proto b/protob/types.proto index 3d713f564..d05cd0744 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -57,7 +57,7 @@ enum RequestType { TXINPUT = 0; TXOUTPUT = 1; TXMETA = 2; - TXFINISHED = 3; + TXFINISHED = 3; } /** From c6bcf54876401f51e4c90b8c3d0e29bc9223e062 Mon Sep 17 00:00:00 2001 From: slush0 Date: Thu, 10 Apr 2014 14:42:50 +0200 Subject: [PATCH 045/767] Reworked TxRequest message --- protob/messages.proto | 15 ++------------- protob/types.proto | 11 +++++++++++ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/protob/messages.proto b/protob/messages.proto index 705927400..21ff2f9a2 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -441,19 +441,8 @@ message SimpleSignTx { */ message TxRequest { optional RequestType request_type = 1; // what should be filled in TxAck message? - optional TxRequestDetails details = 2; // request for tx details - optional TxRequestSerialized serialized = 3; // serialized data and request for next -} - -message TxRequestDetails { - optional uint32 request_index = 1; // device expects TxAck message from the computer - optional bytes tx_hash = 2; // tx_hash of requested transaction -} - -message TxRequestSerialized { - optional uint32 signature_index = 1; // 'signature' field contains signed input of this index - optional bytes signature = 2; // signature of the signature_index input - optional bytes serialized_tx = 3; // part of serialized and signed transaction + optional TxRequestDetailsType details = 2; // request for tx details + optional TxRequestSerializedType serialized = 3; // serialized data and request for next } /** diff --git a/protob/types.proto b/protob/types.proto index d05cd0744..ff6aa20c3 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -159,3 +159,14 @@ message TransactionType { repeated TxOutputType outputs = 5; optional uint32 lock_time = 4; } + +message TxRequestDetailsType { + optional uint32 request_index = 1; // device expects TxAck message from the computer + optional bytes tx_hash = 2; // tx_hash of requested transaction +} + +message TxRequestSerializedType { + optional uint32 signature_index = 1; // 'signature' field contains signed input of this index + optional bytes signature = 2; // signature of the signature_index input + optional bytes serialized_tx = 3; // part of serialized and signed transaction +} From e6bfe66399b047536284441afe0ba8faae8a4fbe Mon Sep 17 00:00:00 2001 From: slush0 Date: Thu, 10 Apr 2014 14:43:05 +0200 Subject: [PATCH 046/767] Validity of config set to 30 days --- signer/config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/signer/config.json b/signer/config.json index 4f649184b..6d2059a84 100644 --- a/signer/config.json +++ b/signer/config.json @@ -11,5 +11,5 @@ ["0x534c", "0x0001", "Trezor"], ["0x10c4", "0xea80", "Trezor Shield"] ], - "valid_days": 15 + "valid_days": 30 } From ca952548b7be3b86a2478309f6ac27af64ad6c8c Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 11 Apr 2014 15:22:50 +0200 Subject: [PATCH 047/767] fix whitespace --- protob/types.proto | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/protob/types.proto b/protob/types.proto index ff6aa20c3..b64a86d27 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -161,12 +161,12 @@ message TransactionType { } message TxRequestDetailsType { - optional uint32 request_index = 1; // device expects TxAck message from the computer - optional bytes tx_hash = 2; // tx_hash of requested transaction + optional uint32 request_index = 1; // device expects TxAck message from the computer + optional bytes tx_hash = 2; // tx_hash of requested transaction } message TxRequestSerializedType { - optional uint32 signature_index = 1; // 'signature' field contains signed input of this index - optional bytes signature = 2; // signature of the signature_index input - optional bytes serialized_tx = 3; // part of serialized and signed transaction + optional uint32 signature_index = 1; // 'signature' field contains signed input of this index + optional bytes signature = 2; // signature of the signature_index input + optional bytes serialized_tx = 3; // part of serialized and signed transaction } From b678022437150fbd1ff7a9983ef077655a4b3065 Mon Sep 17 00:00:00 2001 From: slush0 Date: Thu, 17 Apr 2014 05:51:28 +0200 Subject: [PATCH 048/767] Added inputs_count/outputs_count to TransactionType --- protob/types.proto | 2 ++ 1 file changed, 2 insertions(+) diff --git a/protob/types.proto b/protob/types.proto index b64a86d27..3727663e6 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -158,6 +158,8 @@ message TransactionType { repeated TxOutputBinType bin_outputs = 3; repeated TxOutputType outputs = 5; optional uint32 lock_time = 4; + optional uint32 inputs_count = 6; + optional uint32 outputs_count = 7; } message TxRequestDetailsType { From e4f9dcd7c966c136bd33ccc58321db8d8b83d09b Mon Sep 17 00:00:00 2001 From: slush0 Date: Thu, 17 Apr 2014 13:27:18 +0200 Subject: [PATCH 049/767] Stupid compiler, inputs_count is reserved when there's repeated inputs field. --- protob/types.proto | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/protob/types.proto b/protob/types.proto index 3727663e6..1b0cc464a 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -158,8 +158,8 @@ message TransactionType { repeated TxOutputBinType bin_outputs = 3; repeated TxOutputType outputs = 5; optional uint32 lock_time = 4; - optional uint32 inputs_count = 6; - optional uint32 outputs_count = 7; + optional uint32 inputs_cnt = 6; + optional uint32 outputs_cnt = 7; } message TxRequestDetailsType { From 1865a0428d1803416174f31a1d6b53b6632384a9 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 26 May 2014 00:45:51 +0200 Subject: [PATCH 050/767] add imported flag --- protob/messages.proto | 1 + protob/storage.proto | 1 + 2 files changed, 2 insertions(+) diff --git a/protob/messages.proto b/protob/messages.proto index 21ff2f9a2..3b74a5487 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -91,6 +91,7 @@ message Features { optional bool initialized = 12; // does device contain seed? optional bytes revision = 13; // SCM revision of firmware optional bytes bootloader_hash = 14; // hash of the bootloader + optional bool imported = 15; // was storage imported from an external source? } /** diff --git a/protob/storage.proto b/protob/storage.proto index 1eb97f977..3645212ef 100644 --- a/protob/storage.proto +++ b/protob/storage.proto @@ -23,4 +23,5 @@ message Storage { optional string pin = 6; // current PIN optional string language = 7; // current language optional string label = 8; // device label + optional bool imported = 9; // was storage imported from an external source? } From 4eef0a986669c54af1876f45242431b4d7294888 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 5 Jun 2014 20:15:38 +0200 Subject: [PATCH 051/767] add missing @used_in --- protob/types.proto | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/protob/types.proto b/protob/types.proto index 1b0cc464a..8a91cde16 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -162,11 +162,17 @@ message TransactionType { optional uint32 outputs_cnt = 7; } +/* + * @used_in TxRequest + */ message TxRequestDetailsType { optional uint32 request_index = 1; // device expects TxAck message from the computer optional bytes tx_hash = 2; // tx_hash of requested transaction } +/* + * @used_in TxRequest + */ message TxRequestSerializedType { optional uint32 signature_index = 1; // 'signature' field contains signed input of this index optional bytes signature = 2; // signature of the signature_index input From f264f01314cefed2df4cfac84d7619d713fbc99a Mon Sep 17 00:00:00 2001 From: slush0 Date: Thu, 5 Jun 2014 21:55:56 +0200 Subject: [PATCH 052/767] Added structures for multisig and CipherKeyValue --- protob/messages.proto | 26 +++++++++++++++++++++++--- protob/types.proto | 43 +++++++++++++++++++++++++++++++------------ 2 files changed, 54 insertions(+), 15 deletions(-) diff --git a/protob/messages.proto b/protob/messages.proto index 3b74a5487..c486e770d 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -2,7 +2,7 @@ * Messages for TREZOR communication * * @author Marek Palatinus - * @version 0.6 + * @version 1.2 */ // Sugar for easier handling in Java @@ -37,6 +37,7 @@ enum MessageType { MessageType_Cancel = 20 [(wire_in) = true]; MessageType_TxRequest = 21 [(wire_out) = true]; MessageType_TxAck = 22 [(wire_in) = true]; + MessageType_CipherKeyValue = 23 [(wire_in) = true]; MessageType_ApplySettings = 25 [(wire_in) = true]; MessageType_ButtonRequest = 26 [(wire_out) = true]; MessageType_ButtonAck = 27 [(wire_in) = true]; @@ -91,7 +92,7 @@ message Features { optional bool initialized = 12; // does device contain seed? optional bytes revision = 13; // SCM revision of firmware optional bytes bootloader_hash = 14; // hash of the bootloader - optional bool imported = 15; // was storage imported from an external source? + optional bool imported = 15; // was storage imported from an external source? } /** @@ -131,6 +132,7 @@ message Ping { */ message Success { optional string message = 1; // human readable description of action or request-specific payload + optional bytes payload = 2; // request-specific binary payload } /** @@ -378,6 +380,24 @@ message MessageSignature { optional bytes signature = 2; // signature of the message } +/////////////////////////// +// Encryption/decryption // +/////////////////////////// + +/** + * Request: Ask device to encrypt or decrypt value of given key + * @next Success + * @next Failure + */ +message CipherKeyValue { + repeated uint32 address_n = 1; + optional string key = 2; + optional bytes value = 3; + optional bool encrypt = 4; // are we encrypting (True) or decrypting (False)? + optional bool ask_on_encrypt = 5; // should we ask on encrypt operation? + optional bool ask_on_decrypt = 6; // should we ask on decrypt operation? +} + ////////////////////////////////// // Transaction signing messages // ////////////////////////////////// @@ -441,7 +461,7 @@ message SimpleSignTx { * @prev TxAck */ message TxRequest { - optional RequestType request_type = 1; // what should be filled in TxAck message? + optional RequestType request_type = 1; // what should be filled in TxAck message? optional TxRequestDetailsType details = 2; // request for tx details optional TxRequestSerializedType serialized = 3; // serialized data and request for next } diff --git a/protob/types.proto b/protob/types.proto index 8a91cde16..75a37fb31 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -2,7 +2,7 @@ * Types for TREZOR communication * * @author Marek Palatinus - * @version 0.6 + * @version 1.2 */ // Sugar for easier handling in Java @@ -44,11 +44,20 @@ enum FailureType { * Type of script which will be used for transaction output * @used_in TxOutputType */ -enum ScriptType { +enum OutputScriptType { PAYTOADDRESS = 0; PAYTOSCRIPTHASH = 1; } +/** + * Type of script which will be used for transaction output + * @used_in TxInputType + */ +enum InputScriptType { + SPENDADDRESS = 0; + SPENDMULTISIG = 1; +} + /** * Type of information required by transaction signing process * @used_in TxRequest @@ -113,17 +122,28 @@ message CoinType { optional uint64 maxfee_kb = 4; } +/* + * Type of redeem script used in input + * @used_in TxInputType + */ +message MultisigRedeemScriptType { + repeated bytes pubkeys = 1; // pubkeys from multisig address (sorted lexicographically) + repeated bytes signatures = 2; // existing signatures for partially signed input +} + /** * Structure representing transaction input * @used_in SimpleSignTx * @used_in TransactionType */ message TxInputType { - repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - required bytes prev_hash = 2; // hash of previous transaction output to spend by this input - required uint32 prev_index = 3; // index of previous output to spend - optional bytes script_sig = 4; // script signature - optional uint32 sequence = 5 [default=0xffffffff]; // sequence + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + required bytes prev_hash = 2; // hash of previous transaction output to spend by this input + required uint32 prev_index = 3; // index of previous output to spend + optional bytes script_sig = 4; // script signature, unset for tx to sign + optional uint32 sequence = 5 [default=0xffffffff]; // sequence + optional InputScriptType script_type = 6 [default=SPENDADDRESS]; // defines template of input script + optional MultisigRedeemScriptType multisig = 7; // Filled if input is going to spend multisig tx } /** @@ -132,11 +152,10 @@ message TxInputType { * @used_in TransactionType */ message TxOutputType { - optional string address = 1; // target coin address in Base58 encoding - repeated uint32 address_n = 2; // BIP-32 path to derive the key from master node; has higher priority than "address" - required uint64 amount = 3; // amount to spend in satoshis - required ScriptType script_type = 4; // output script type - repeated bytes script_args = 5; // additional parameters for the script (script-dependent) + optional string address = 1; // target coin address in Base58 encoding + repeated uint32 address_n = 2; // BIP-32 path to derive the key from master node; has higher priority than "address" + required uint64 amount = 3; // amount to spend in satoshis + required OutputScriptType script_type = 4; // output script type } /** From b0d84af06fc92dacd16fdaca32d3d58be464be1e Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 12 Jun 2014 16:01:31 +0200 Subject: [PATCH 053/767] add EncryptMessage and DecryptMessage --- protob/messages.proto | 31 ++++++++++++++++++++++++++++--- protob/types.proto | 8 +++++--- 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/protob/messages.proto b/protob/messages.proto index c486e770d..67eb82d3e 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -48,6 +48,8 @@ enum MessageType { MessageType_SignMessage = 38 [(wire_in) = true]; MessageType_VerifyMessage = 39 [(wire_in) = true]; MessageType_MessageSignature = 40 [(wire_out) = true]; + MessageType_EncryptMessage = 48 [(wire_in) = true]; + MessageType_DecryptMessage = 49 [(wire_in) = true]; MessageType_PassphraseRequest = 41 [(wire_out) = true]; MessageType_PassphraseAck = 42 [(wire_in) = true]; MessageType_EstimateTxSize = 43 [(wire_in) = true]; @@ -384,15 +386,38 @@ message MessageSignature { // Encryption/decryption // /////////////////////////// +/** + * Request: Ask device to encrypt message + * @next Success + * @next Failure + */ +message EncryptMessage { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional bytes pubkey = 2; // public key + optional bytes message = 3; // message to encrypt +} + +/** + * Request: Ask device to decrypt message + * @next Success + * @next Failure + */ +message DecryptMessage { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional bytes pubkey = 2; // public key + optional bytes message = 3; // message to decrypt + optional bool show_only = 4; // show just on display? (don't send back via wire) +} + /** * Request: Ask device to encrypt or decrypt value of given key * @next Success * @next Failure */ message CipherKeyValue { - repeated uint32 address_n = 1; - optional string key = 2; - optional bytes value = 3; + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional string key = 2; // key component of key:value + optional bytes value = 3; // value component of key:value optional bool encrypt = 4; // are we encrypting (True) or decrypting (False)? optional bool ask_on_encrypt = 5; // should we ask on encrypt operation? optional bool ask_on_decrypt = 6; // should we ask on decrypt operation? diff --git a/protob/types.proto b/protob/types.proto index 75a37fb31..e0ee62782 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -122,7 +122,7 @@ message CoinType { optional uint64 maxfee_kb = 4; } -/* +/** * Type of redeem script used in input * @used_in TxInputType */ @@ -181,7 +181,8 @@ message TransactionType { optional uint32 outputs_cnt = 7; } -/* +/** + * Structure representing request details * @used_in TxRequest */ message TxRequestDetailsType { @@ -189,7 +190,8 @@ message TxRequestDetailsType { optional bytes tx_hash = 2; // tx_hash of requested transaction } -/* +/** + * Structure representing serialized data * @used_in TxRequest */ message TxRequestSerializedType { From 4b9123ab3c11e5b27dbc5f27f3a1c815f08ad612 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 13 Jun 2014 16:32:20 +0200 Subject: [PATCH 054/767] change EncryptMessage / DecryptMessage API --- protob/messages.proto | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/protob/messages.proto b/protob/messages.proto index 67eb82d3e..88c7165b5 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -392,9 +392,9 @@ message MessageSignature { * @next Failure */ message EncryptMessage { - repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - optional bytes pubkey = 2; // public key - optional bytes message = 3; // message to encrypt + optional bytes pubkey = 1; // public key + optional bytes message = 2; // message to encrypt + optional bool display_only = 3; // show just on display? (don't send back via wire) } /** @@ -404,9 +404,7 @@ message EncryptMessage { */ message DecryptMessage { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - optional bytes pubkey = 2; // public key - optional bytes message = 3; // message to decrypt - optional bool show_only = 4; // show just on display? (don't send back via wire) + optional bytes message = 2; // message to decrypt } /** From bf7b99fd286ae6ff5ada0e1bc7e4d403f5a7dc8e Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 17 Jun 2014 13:32:42 +0200 Subject: [PATCH 055/767] add ClearSession message --- protob/messages.proto | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/protob/messages.proto b/protob/messages.proto index 88c7165b5..87ab55041 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -38,6 +38,7 @@ enum MessageType { MessageType_TxRequest = 21 [(wire_out) = true]; MessageType_TxAck = 22 [(wire_in) = true]; MessageType_CipherKeyValue = 23 [(wire_in) = true]; + MessageType_ClearSession = 24 [(wire_in) = true]; MessageType_ApplySettings = 25 [(wire_in) = true]; MessageType_ButtonRequest = 26 [(wire_out) = true]; MessageType_ButtonAck = 27 [(wire_in) = true]; @@ -97,6 +98,13 @@ message Features { optional bool imported = 15; // was storage imported from an external source? } +/** + * Request: clear session (removes cached PIN, passphrase, etc). + * @next Success + */ +message ClearSession { +} + /** * Request: change language and/or label of the device * @next Success From fc98712da5c260f3828dab703880eb5e9da00580 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 2 Jul 2014 17:54:48 +0200 Subject: [PATCH 056/767] add ButtonRequest_FirmwareCheck --- protob/storage.proto | 2 +- protob/types.proto | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/protob/storage.proto b/protob/storage.proto index 3645212ef..9f18c597d 100644 --- a/protob/storage.proto +++ b/protob/storage.proto @@ -23,5 +23,5 @@ message Storage { optional string pin = 6; // current PIN optional string language = 7; // current language optional string label = 8; // device label - optional bool imported = 9; // was storage imported from an external source? + optional bool imported = 9; // was storage imported from an external source? } diff --git a/protob/types.proto b/protob/types.proto index e0ee62782..60ee78cf9 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -82,6 +82,7 @@ enum ButtonRequestType { ButtonRequest_WipeDevice = 6; ButtonRequest_ProtectCall = 7; ButtonRequest_SignTx = 8; + ButtonRequest_FirmwareCheck = 9; } /** From f167569e1d865a4e75f0e2e7eb69969c825e0737 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 18 Jul 2014 17:15:12 +0200 Subject: [PATCH 057/767] sample.key is now "correct horse battery staple" key --- signer/sample.key | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/signer/sample.key b/signer/sample.key index 0e7d7ea54..6369d96a2 100644 --- a/signer/sample.key +++ b/signer/sample.key @@ -1,6 +1,5 @@ -----BEGIN EC PRIVATE KEY----- -MHQCAQEEIBKl1isjNeP4S5uP5S9LI3RZu6+hNQRxO10IGTd8JBq3oAcGBSuBBAAK -oUQDQgAENEoHRLyHw1AM5jl0pbUNgXHFldzn1jWT/tGrlePY/vfKVVc2QM2pz0fb -YUn4WEZC8DDfQ3XEhvKnsyOotsY7QQ== +MHQCAQEEIMS7yx++yZ1lv1nYXIy2LuLblj8P4Qb0g9mvpzvU45qKoAcGBSuBBAAK +oUQDQgAEeNQwJ0+MXsEyEzgVHp8n9MZ2oAi9+GONB8C2vpqzXHGhUYBjJDrNTf6W +tm4/LsgBPI4HLNCbODShn4H2Wcw0VQ== -----END EC PRIVATE KEY----- - From 89d88fa23c9c0032254f6ba4af4012409bd40bf6 Mon Sep 17 00:00:00 2001 From: slush0 Date: Thu, 24 Jul 2014 14:34:06 +0200 Subject: [PATCH 058/767] Validity prolonged to 90 days --- signer/config.json | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/signer/config.json b/signer/config.json index 6d2059a84..f97be329d 100644 --- a/signer/config.json +++ b/signer/config.json @@ -1,9 +1,10 @@ { "whitelist_urls": [ - ".*", - "file://.*", - "https?://.*\\.mytrezor\\.com\\/.*", - "https?://mytrezor\\.com\\/.*" + "https?://localhost\\/.*", + "https://.*\\.mytrezor\\.com\\/.*", + "https://mytrezor\\.com\\/.*", + "https://.*\\.greenaddress\\.it\\/.*", + "https://greenaddress\\.it\\/.*" ], "blacklist_urls": [ ], @@ -11,5 +12,5 @@ ["0x534c", "0x0001", "Trezor"], ["0x10c4", "0xea80", "Trezor Shield"] ], - "valid_days": 30 + "valid_days": 90 } From 7003d10612c2d83f652113e395769daee4a08262 Mon Sep 17 00:00:00 2001 From: slush0 Date: Fri, 25 Jul 2014 18:55:56 +0200 Subject: [PATCH 059/767] Allow various ports on localhost --- signer/config.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/signer/config.json b/signer/config.json index f97be329d..8c3850be6 100644 --- a/signer/config.json +++ b/signer/config.json @@ -1,7 +1,7 @@ { "whitelist_urls": [ - "https?://localhost\\/.*", - "https://.*\\.mytrezor\\.com\\/.*", + "https?://localhost:?.*\\/.*", + "https://.*\\.mytrezor\\.com\\/.*", "https://mytrezor\\.com\\/.*", "https://.*\\.greenaddress\\.it\\/.*", "https://greenaddress\\.it\\/.*" From 1bfaf05652499669f3fa4e0e43504d9101b75aba Mon Sep 17 00:00:00 2001 From: slush0 Date: Fri, 25 Jul 2014 18:57:32 +0200 Subject: [PATCH 060/767] Fixed regexp --- signer/config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/signer/config.json b/signer/config.json index 8c3850be6..c676746d2 100644 --- a/signer/config.json +++ b/signer/config.json @@ -1,6 +1,6 @@ { "whitelist_urls": [ - "https?://localhost:?.*\\/.*", + "https?://localhost:?[0-9]*\\/.*", "https://.*\\.mytrezor\\.com\\/.*", "https://mytrezor\\.com\\/.*", "https://.*\\.greenaddress\\.it\\/.*", From 82df876481fb98544330f8b6784d0d0d8b7511f9 Mon Sep 17 00:00:00 2001 From: slush0 Date: Mon, 28 Jul 2014 16:47:39 +0200 Subject: [PATCH 061/767] Updated whitelists --- signer/config.json | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/signer/config.json b/signer/config.json index c676746d2..88d3baff3 100644 --- a/signer/config.json +++ b/signer/config.json @@ -1,10 +1,11 @@ { "whitelist_urls": [ - "https?://localhost:?[0-9]*\\/.*", - "https://.*\\.mytrezor\\.com\\/.*", - "https://mytrezor\\.com\\/.*", - "https://.*\\.greenaddress\\.it\\/.*", - "https://greenaddress\\.it\\/.*" + "https?://localhost(:\\d+)?(/.*)?", + "https://mytrezor\\.com(/.*)?", + "https://[\\w\\.-]+\\.mytrezor\\.com(/.*)?", + "https://greenaddress\\.it(/.*)?", + "https://[\\w\\.-]+\\.greenaddress\\.it(/.*)?" + ], "blacklist_urls": [ ], From b9f9aea77b9a809a3161048f60a44a87f91e117c Mon Sep 17 00:00:00 2001 From: slush0 Date: Mon, 4 Aug 2014 18:28:28 +0200 Subject: [PATCH 062/767] Added localhost.mytrezor.com --- signer/config.json | 1 + 1 file changed, 1 insertion(+) diff --git a/signer/config.json b/signer/config.json index 88d3baff3..60de5e0c7 100644 --- a/signer/config.json +++ b/signer/config.json @@ -1,6 +1,7 @@ { "whitelist_urls": [ "https?://localhost(:\\d+)?(/.*)?", + "https?://localhost.mytrezor.com(:\\d+)?(/.*)?", "https://mytrezor\\.com(/.*)?", "https://[\\w\\.-]+\\.mytrezor\\.com(/.*)?", "https://greenaddress\\.it(/.*)?", From ce8e99465ea1fbcbdc5e7b477cfdab73244a444d Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 7 Aug 2014 21:03:26 +0200 Subject: [PATCH 063/767] add PublicKey.xpub --- protob/messages.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/protob/messages.proto b/protob/messages.proto index 87ab55041..d4e2711eb 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -246,6 +246,7 @@ message GetPublicKey { */ message PublicKey { required HDNodeType node = 1; // BIP32 public node + optional string xpub = 2; // serialized form of public node } /** From 5bbe684c1068bd9cb6d24b12da5e216feb74351d Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 8 Aug 2014 17:55:56 +0200 Subject: [PATCH 064/767] add GetAddress.show_display; ButtonRequest_Address --- protob/messages.proto | 1 + protob/types.proto | 1 + 2 files changed, 2 insertions(+) diff --git a/protob/messages.proto b/protob/messages.proto index d4e2711eb..7b9cb7501 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -258,6 +258,7 @@ message PublicKey { message GetAddress { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node optional string coin_name = 2 [default='Bitcoin']; + optional bool show_display = 3; } /** diff --git a/protob/types.proto b/protob/types.proto index 60ee78cf9..b5e8463b4 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -83,6 +83,7 @@ enum ButtonRequestType { ButtonRequest_ProtectCall = 7; ButtonRequest_SignTx = 8; ButtonRequest_FirmwareCheck = 9; + ButtonRequest_Address = 10; } /** From e2dab40398da63becf0e815c9fece141d2043d2e Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 22 Oct 2014 17:39:05 +0200 Subject: [PATCH 065/767] add address_n field to EncryptMessage --- protob/messages.proto | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/protob/messages.proto b/protob/messages.proto index 7b9cb7501..f7b3f3765 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -405,6 +405,7 @@ message EncryptMessage { optional bytes pubkey = 1; // public key optional bytes message = 2; // message to encrypt optional bool display_only = 3; // show just on display? (don't send back via wire) + repeated uint32 address_n = 4; // BIP-32 path to derive the signing key from master node } /** @@ -413,7 +414,7 @@ message EncryptMessage { * @next Failure */ message DecryptMessage { - repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + repeated uint32 address_n = 1; // BIP-32 path to derive the decryption key from master node optional bytes message = 2; // message to decrypt } From 71a02eb83dfa4a5f0543743bc8fcfbd74fc0b7d0 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 30 Oct 2014 00:23:32 +0100 Subject: [PATCH 066/767] add coin_name to EncryptMessage --- protob/messages.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/protob/messages.proto b/protob/messages.proto index f7b3f3765..decc934d7 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -406,6 +406,7 @@ message EncryptMessage { optional bytes message = 2; // message to encrypt optional bool display_only = 3; // show just on display? (don't send back via wire) repeated uint32 address_n = 4; // BIP-32 path to derive the signing key from master node + optional string coin_name = 5 [default='Bitcoin']; // coin to use for signing } /** From e675d5fd7684e437bb35fb24330234d43ee2e4db Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 3 Nov 2014 19:43:11 +0100 Subject: [PATCH 067/767] rework EncryptMessage/DecryptMessage --- protob/messages.proto | 43 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 37 insertions(+), 6 deletions(-) diff --git a/protob/messages.proto b/protob/messages.proto index decc934d7..643109670 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -38,6 +38,7 @@ enum MessageType { MessageType_TxRequest = 21 [(wire_out) = true]; MessageType_TxAck = 22 [(wire_in) = true]; MessageType_CipherKeyValue = 23 [(wire_in) = true]; + MessageType_CipheredKeyValue = 48 [(wire_out) = true]; MessageType_ClearSession = 24 [(wire_in) = true]; MessageType_ApplySettings = 25 [(wire_in) = true]; MessageType_ButtonRequest = 26 [(wire_out) = true]; @@ -49,8 +50,10 @@ enum MessageType { MessageType_SignMessage = 38 [(wire_in) = true]; MessageType_VerifyMessage = 39 [(wire_in) = true]; MessageType_MessageSignature = 40 [(wire_out) = true]; - MessageType_EncryptMessage = 48 [(wire_in) = true]; - MessageType_DecryptMessage = 49 [(wire_in) = true]; + MessageType_EncryptMessage = 49 [(wire_in) = true]; + MessageType_EncryptedMessage = 50 [(wire_out) = true]; + MessageType_DecryptMessage = 51 [(wire_in) = true]; + MessageType_DecryptedMessage = 52 [(wire_out) = true]; MessageType_PassphraseRequest = 41 [(wire_out) = true]; MessageType_PassphraseAck = 42 [(wire_in) = true]; MessageType_EstimateTxSize = 43 [(wire_in) = true]; @@ -142,7 +145,6 @@ message Ping { */ message Success { optional string message = 1; // human readable description of action or request-specific payload - optional bytes payload = 2; // request-specific binary payload } /** @@ -398,7 +400,7 @@ message MessageSignature { /** * Request: Ask device to encrypt message - * @next Success + * @next EncryptedMessage * @next Failure */ message EncryptMessage { @@ -409,6 +411,16 @@ message EncryptMessage { optional string coin_name = 5 [default='Bitcoin']; // coin to use for signing } +/** + * Response: Encrypted message + * @prev EncryptMessage + */ +message EncryptedMessage { + optional bytes nonce = 1; // nonce used during encryption + optional bytes message = 2; // encrypted message + optional bytes hmac = 3; // message hmac +} + /** * Request: Ask device to decrypt message * @next Success @@ -416,12 +428,23 @@ message EncryptMessage { */ message DecryptMessage { repeated uint32 address_n = 1; // BIP-32 path to derive the decryption key from master node - optional bytes message = 2; // message to decrypt + optional bytes nonce = 2; // nonce used during encryption + optional bytes message = 3; // message to decrypt + optional bytes hmac = 4; // message hmac +} + +/** + * Response: Decrypted message + * @prev DecryptedMessage + */ +message DecryptedMessage { + optional bytes message = 1; // decrypted message + optional string address = 2; // address used to sign the message (if used) } /** * Request: Ask device to encrypt or decrypt value of given key - * @next Success + * @next CipheredKeyValue * @next Failure */ message CipherKeyValue { @@ -433,6 +456,14 @@ message CipherKeyValue { optional bool ask_on_decrypt = 6; // should we ask on decrypt operation? } +/** + * Response: Return ciphered/deciphered value + * @prev CipherKeyValue + */ +message CipheredKeyValue { + optional bytes value = 1; // ciphered/deciphered value +} + ////////////////////////////////// // Transaction signing messages // ////////////////////////////////// From 3670728fd205ccfc75571ec3a49bfc7d07d11b17 Mon Sep 17 00:00:00 2001 From: slush0 Date: Thu, 4 Dec 2014 01:06:47 +0100 Subject: [PATCH 068/767] Added 'm' to MultisigRedeemScriptType --- protob/types.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/protob/types.proto b/protob/types.proto index b5e8463b4..8e2bbabfe 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -131,6 +131,7 @@ message CoinType { message MultisigRedeemScriptType { repeated bytes pubkeys = 1; // pubkeys from multisig address (sorted lexicographically) repeated bytes signatures = 2; // existing signatures for partially signed input + optional uint32 m = 3; // "m" from n, how many valid signatures is necessary for spending } /** From 437eff319f0673aae9f3416bd771d52dcc983e37 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 10 Dec 2014 15:37:58 +0100 Subject: [PATCH 069/767] add GetAddress.multisig field --- protob/messages.proto | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/protob/messages.proto b/protob/messages.proto index 643109670..38cb447b2 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -258,9 +258,10 @@ message PublicKey { * @next Failure */ message GetAddress { - repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node optional string coin_name = 2 [default='Bitcoin']; optional bool show_display = 3; + optional MultisigRedeemScriptType multisig = 4; // Filled if we are showing a multisig address } /** From 26b5f5ed413961c0efe8afcb0e78cc2dc5e43d64 Mon Sep 17 00:00:00 2001 From: slush0 Date: Fri, 12 Dec 2014 17:17:55 +0100 Subject: [PATCH 070/767] Fixed \\ in whitelist urls --- signer/config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/signer/config.json b/signer/config.json index 60de5e0c7..5f7feb9ef 100644 --- a/signer/config.json +++ b/signer/config.json @@ -1,7 +1,7 @@ { "whitelist_urls": [ "https?://localhost(:\\d+)?(/.*)?", - "https?://localhost.mytrezor.com(:\\d+)?(/.*)?", + "https?://localhost\\.mytrezor\\.com(:\\d+)?(/.*)?", "https://mytrezor\\.com(/.*)?", "https://[\\w\\.-]+\\.mytrezor\\.com(/.*)?", "https://greenaddress\\.it(/.*)?", From 40b3cb414864f970d627651f8be0669be95c5efc Mon Sep 17 00:00:00 2001 From: slush0 Date: Sat, 13 Dec 2014 16:13:46 +0100 Subject: [PATCH 071/767] Added HDPubkeyType and use_passphrase --- protob/messages.proto | 1 + protob/types.proto | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/protob/messages.proto b/protob/messages.proto index 38cb447b2..6b71585a7 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -118,6 +118,7 @@ message ClearSession { message ApplySettings { optional string language = 1; optional string label = 2; + optional bool use_passphrase = 3; } /** diff --git a/protob/types.proto b/protob/types.proto index 8e2bbabfe..f8d201230 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -113,6 +113,11 @@ message HDNodeType { optional bytes public_key = 6; } +message HDPubkeyType { + required HDNodeType node = 1; // BIP-32 node in deserialized form + repeated uint32 address_n = 2; // BIP-32 path to derive the key from node +} + /** * Structure representing Coin * @used_in Features @@ -129,7 +134,7 @@ message CoinType { * @used_in TxInputType */ message MultisigRedeemScriptType { - repeated bytes pubkeys = 1; // pubkeys from multisig address (sorted lexicographically) + repeated HDPubkeyType pubkeys = 1; // pubkeys from multisig address (sorted lexicographically) repeated bytes signatures = 2; // existing signatures for partially signed input optional uint32 m = 3; // "m" from n, how many valid signatures is necessary for spending } From 81d89030dfb3214a1d598c07c834047bb74dfb40 Mon Sep 17 00:00:00 2001 From: slush0 Date: Mon, 15 Dec 2014 14:30:44 +0100 Subject: [PATCH 072/767] Renamed HDPubkeyType to HDNodePathType Added MultisigRedeemScriptType to TXOutputType for defining multisig output addresses --- protob/types.proto | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/protob/types.proto b/protob/types.proto index f8d201230..7afae5277 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -113,7 +113,7 @@ message HDNodeType { optional bytes public_key = 6; } -message HDPubkeyType { +message HDNodePathType { required HDNodeType node = 1; // BIP-32 node in deserialized form repeated uint32 address_n = 2; // BIP-32 path to derive the key from node } @@ -134,7 +134,7 @@ message CoinType { * @used_in TxInputType */ message MultisigRedeemScriptType { - repeated HDPubkeyType pubkeys = 1; // pubkeys from multisig address (sorted lexicographically) + repeated HDNodePathType pubkeys = 1; // pubkeys from multisig address (sorted lexicographically) repeated bytes signatures = 2; // existing signatures for partially signed input optional uint32 m = 3; // "m" from n, how many valid signatures is necessary for spending } @@ -164,6 +164,7 @@ message TxOutputType { repeated uint32 address_n = 2; // BIP-32 path to derive the key from master node; has higher priority than "address" required uint64 amount = 3; // amount to spend in satoshis required OutputScriptType script_type = 4; // output script type + repeated MultisigRedeemScriptType multisig = 5; // Defines multisig address; when filled, it has priority over address/address_n } /** From 85e68ff50e24e99c55710dc3fb046df16d64a73b Mon Sep 17 00:00:00 2001 From: slush0 Date: Mon, 15 Dec 2014 14:56:51 +0100 Subject: [PATCH 073/767] Added PAYTOMULTISIG to TxOutputType --- protob/types.proto | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/protob/types.proto b/protob/types.proto index 7afae5277..de26e0f4f 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -47,6 +47,7 @@ enum FailureType { enum OutputScriptType { PAYTOADDRESS = 0; PAYTOSCRIPTHASH = 1; + PAYTOMULTISIG = 2; } /** @@ -164,7 +165,7 @@ message TxOutputType { repeated uint32 address_n = 2; // BIP-32 path to derive the key from master node; has higher priority than "address" required uint64 amount = 3; // amount to spend in satoshis required OutputScriptType script_type = 4; // output script type - repeated MultisigRedeemScriptType multisig = 5; // Defines multisig address; when filled, it has priority over address/address_n + repeated MultisigRedeemScriptType multisig = 5; // Defines multisig address; script_type must be PAYTOMULTISIG } /** From 94d17ef8bc56d7c0e6ddfed39e84987543259e05 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 15 Dec 2014 15:01:25 +0100 Subject: [PATCH 074/767] TxOutputType.multisig should be optional, not repeated --- protob/types.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protob/types.proto b/protob/types.proto index de26e0f4f..6b9ac3691 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -165,7 +165,7 @@ message TxOutputType { repeated uint32 address_n = 2; // BIP-32 path to derive the key from master node; has higher priority than "address" required uint64 amount = 3; // amount to spend in satoshis required OutputScriptType script_type = 4; // output script type - repeated MultisigRedeemScriptType multisig = 5; // Defines multisig address; script_type must be PAYTOMULTISIG + optional MultisigRedeemScriptType multisig = 5; // Defines multisig address; script_type must be PAYTOMULTISIG } /** From 60bcde46f584062e3a454bcdfdcf01bff927c8ea Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 23 Dec 2014 01:37:36 +0100 Subject: [PATCH 075/767] add CoinType.address_type_p2sh --- protob/types.proto | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/protob/types.proto b/protob/types.proto index 6b9ac3691..96928b8e1 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -126,8 +126,9 @@ message HDNodePathType { message CoinType { optional string coin_name = 1; optional string coin_shortcut = 2; - optional uint32 address_type = 3; + optional uint32 address_type = 3 [default=0]; optional uint64 maxfee_kb = 4; + optional uint32 address_type_p2sh = 5 [default=5]; } /** From addadf367644245a10c8e9de7f33cfc0267d7a21 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 13 Jan 2015 17:18:18 +0100 Subject: [PATCH 076/767] make udev rules consistent across repos --- udev/51-trezor-udev.rules | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/udev/51-trezor-udev.rules b/udev/51-trezor-udev.rules index 1134577e8..82cb3b12a 100644 --- a/udev/51-trezor-udev.rules +++ b/udev/51-trezor-udev.rules @@ -3,7 +3,7 @@ # Put this file to /lib/udev/rules.d/ # TREZOR -SUBSYSTEM=="usb", ATTR{idVendor}=="534c", ATTR{idProduct}=="0001", MODE="0666", GROUP="dialout", SYMLINK+="trezor%n" +SUBSYSTEM=="usb", ATTR{idVendor}=="534c", ATTR{idProduct}=="0001", TAG+="uaccess", TAG+="udev-acl", SYMLINK+="trezor%n" # TREZOR Raspberry Pi Shield -SUBSYSTEM=="usb", ATTR{idVendor}=="10c4", ATTR{idProduct}=="ea80", MODE="0666", GROUP="dialout", SYMLINK+="trezor%n" +SUBSYSTEM=="usb", ATTR{idVendor}=="10c4", ATTR{idProduct}=="ea80", TAG+="uaccess", TAG+="udev-acl", SYMLINK+="trezor%n" From fbcd1af05dab3f20dbef64178129a2ec0f1b8f5a Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 2 Feb 2015 11:05:16 +0100 Subject: [PATCH 077/767] add info about obsolete udev --- udev/51-trezor-udev.rules | 2 ++ 1 file changed, 2 insertions(+) diff --git a/udev/51-trezor-udev.rules b/udev/51-trezor-udev.rules index 82cb3b12a..fb79ccc70 100644 --- a/udev/51-trezor-udev.rules +++ b/udev/51-trezor-udev.rules @@ -7,3 +7,5 @@ SUBSYSTEM=="usb", ATTR{idVendor}=="534c", ATTR{idProduct}=="0001", TAG+="uaccess # TREZOR Raspberry Pi Shield SUBSYSTEM=="usb", ATTR{idVendor}=="10c4", ATTR{idProduct}=="ea80", TAG+="uaccess", TAG+="udev-acl", SYMLINK+="trezor%n" + +# use MODE="0666", GROUP="dialout", instead of TAG+= when using a distribution with obsolete udev From f5d880c96c72c298e0fb412bcb1abba6a4ddac02 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 4 Feb 2015 15:42:26 +0100 Subject: [PATCH 078/767] enable OP_RETURN output --- protob/types.proto | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/protob/types.proto b/protob/types.proto index 96928b8e1..9561901d9 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -48,6 +48,7 @@ enum OutputScriptType { PAYTOADDRESS = 0; PAYTOSCRIPTHASH = 1; PAYTOMULTISIG = 2; + PAYTOOPRETURN = 3; } /** @@ -166,7 +167,8 @@ message TxOutputType { repeated uint32 address_n = 2; // BIP-32 path to derive the key from master node; has higher priority than "address" required uint64 amount = 3; // amount to spend in satoshis required OutputScriptType script_type = 4; // output script type - optional MultisigRedeemScriptType multisig = 5; // Defines multisig address; script_type must be PAYTOMULTISIG + optional MultisigRedeemScriptType multisig = 5; // defines multisig address; script_type must be PAYTOMULTISIG + optional bytes op_return_data = 6; // defines op_return data; script_type must be PAYTOOPRETURN, amount must be 0 } /** From 201b66a559567031f74621615884946c8bf1e837 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 4 Feb 2015 20:17:10 +0100 Subject: [PATCH 079/767] introduce home screen --- protob/messages.proto | 1 + protob/storage.proto | 1 + 2 files changed, 2 insertions(+) diff --git a/protob/messages.proto b/protob/messages.proto index 6b71585a7..7e1a9c080 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -119,6 +119,7 @@ message ApplySettings { optional string language = 1; optional string label = 2; optional bool use_passphrase = 3; + optional bytes homescreen = 4; } /** diff --git a/protob/storage.proto b/protob/storage.proto index 9f18c597d..c1a0fb54c 100644 --- a/protob/storage.proto +++ b/protob/storage.proto @@ -24,4 +24,5 @@ message Storage { optional string language = 7; // current language optional string label = 8; // device label optional bool imported = 9; // was storage imported from an external source? + optional bytes homescreen = 10; // image used as homescreen (logo + label is used when not set) } From 847b15dae8658a455655e5fabcae37378293dab6 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 5 Feb 2015 14:05:56 +0100 Subject: [PATCH 080/767] revert udev rule change --- udev/51-trezor-udev.rules | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/udev/51-trezor-udev.rules b/udev/51-trezor-udev.rules index fb79ccc70..5decaf8a8 100644 --- a/udev/51-trezor-udev.rules +++ b/udev/51-trezor-udev.rules @@ -2,10 +2,10 @@ # http://bitcointrezor.com/ # Put this file to /lib/udev/rules.d/ +# Raspbian does not understand the new TAG+="uaccess", TAG+="udev-acl" syntax, use MODE+GROUP for now ... :-( + # TREZOR -SUBSYSTEM=="usb", ATTR{idVendor}=="534c", ATTR{idProduct}=="0001", TAG+="uaccess", TAG+="udev-acl", SYMLINK+="trezor%n" +SUBSYSTEM=="usb", ATTR{idVendor}=="534c", ATTR{idProduct}=="0001", MODE="0666", GROUP="dialout", SYMLINK+="trezor%n" # TREZOR Raspberry Pi Shield -SUBSYSTEM=="usb", ATTR{idVendor}=="10c4", ATTR{idProduct}=="ea80", TAG+="uaccess", TAG+="udev-acl", SYMLINK+="trezor%n" - -# use MODE="0666", GROUP="dialout", instead of TAG+= when using a distribution with obsolete udev +SUBSYSTEM=="usb", ATTR{idVendor}=="10c4", ATTR{idProduct}=="ea80", MODE="0666", GROUP="dialout", SYMLINK+="trezor%n" From 69d476a3ba10c40209dd26789876b265cf03f384 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 20 Feb 2015 16:45:59 +0100 Subject: [PATCH 081/767] add SignIdentity, SignedIdentity messages --- protob/messages.proto | 37 ++++++++++++++++++++++++++++++++----- protob/types.proto | 13 +++++++++++++ 2 files changed, 45 insertions(+), 5 deletions(-) diff --git a/protob/messages.proto b/protob/messages.proto index 7e1a9c080..d9bfbcf46 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -38,7 +38,6 @@ enum MessageType { MessageType_TxRequest = 21 [(wire_out) = true]; MessageType_TxAck = 22 [(wire_in) = true]; MessageType_CipherKeyValue = 23 [(wire_in) = true]; - MessageType_CipheredKeyValue = 48 [(wire_out) = true]; MessageType_ClearSession = 24 [(wire_in) = true]; MessageType_ApplySettings = 25 [(wire_in) = true]; MessageType_ButtonRequest = 26 [(wire_out) = true]; @@ -50,10 +49,6 @@ enum MessageType { MessageType_SignMessage = 38 [(wire_in) = true]; MessageType_VerifyMessage = 39 [(wire_in) = true]; MessageType_MessageSignature = 40 [(wire_out) = true]; - MessageType_EncryptMessage = 49 [(wire_in) = true]; - MessageType_EncryptedMessage = 50 [(wire_out) = true]; - MessageType_DecryptMessage = 51 [(wire_in) = true]; - MessageType_DecryptedMessage = 52 [(wire_out) = true]; MessageType_PassphraseRequest = 41 [(wire_out) = true]; MessageType_PassphraseAck = 42 [(wire_in) = true]; MessageType_EstimateTxSize = 43 [(wire_in) = true]; @@ -61,6 +56,13 @@ enum MessageType { MessageType_RecoveryDevice = 45 [(wire_in) = true]; MessageType_WordRequest = 46 [(wire_out) = true]; MessageType_WordAck = 47 [(wire_in) = true]; + MessageType_CipheredKeyValue = 48 [(wire_out) = true]; + MessageType_EncryptMessage = 49 [(wire_in) = true]; + MessageType_EncryptedMessage = 50 [(wire_out) = true]; + MessageType_DecryptMessage = 51 [(wire_in) = true]; + MessageType_DecryptedMessage = 52 [(wire_out) = true]; + MessageType_SignIdentity = 53 [(wire_in) = true]; + MessageType_SignedIdentity = 54 [(wire_out) = true]; MessageType_DebugLinkDecision = 100 [(wire_debug_in) = true]; MessageType_DebugLinkGetState = 101 [(wire_debug_in) = true]; MessageType_DebugLinkState = 102 [(wire_debug_out) = true]; @@ -544,6 +546,31 @@ message TxAck { optional TransactionType tx = 1; } +/////////////////////// +// Identity messages // +/////////////////////// + +/** + * Request: Ask device to sign identity + * @next SignedIdentity + * @next Failure + */ +message SignIdentity { + optional IdentityType identity = 1; // identity + optional bytes challenge_hidden = 2; // non-visible challenge + optional string challenge_visual = 3; // challenge shown on display (e.g. date+time) +} + +/** + * Response: Device provides signed identity + * @prev SignIdentity + */ +message SignedIdentity { + optional string address = 1; // identity address + optional bytes public_key = 2; // identity public key + optional bytes signature = 3; // signature of the identity data +} + ///////////////////////// // Bootloader messages // ///////////////////////// diff --git a/protob/types.proto b/protob/types.proto index 9561901d9..8410b3ca3 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -212,3 +212,16 @@ message TxRequestSerializedType { optional bytes signature = 2; // signature of the signature_index input optional bytes serialized_tx = 3; // part of serialized and signed transaction } + +/** + * Structure representing identity data + * @used_in IdentityType + */ +message IdentityType { + optional string proto = 1; // proto part of URI + optional string user = 2; // user part of URI + optional string host = 3; // host part of URI + optional string port = 4; // port part of URI + optional string path = 5; // path part of URI + optional uint32 index = 6 [default=0]; // identity index +} From e95f7016be0956cdd952089d53510f99e4cb1c72 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 23 Feb 2015 12:16:28 +0100 Subject: [PATCH 082/767] add trezor.github.io to whitelist --- signer/config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/signer/config.json b/signer/config.json index 5f7feb9ef..6f939fac6 100644 --- a/signer/config.json +++ b/signer/config.json @@ -4,9 +4,9 @@ "https?://localhost\\.mytrezor\\.com(:\\d+)?(/.*)?", "https://mytrezor\\.com(/.*)?", "https://[\\w\\.-]+\\.mytrezor\\.com(/.*)?", + "https://trezor\\.github\\.io(/.*)?", "https://greenaddress\\.it(/.*)?", "https://[\\w\\.-]+\\.greenaddress\\.it(/.*)?" - ], "blacklist_urls": [ ], From 19a807edda08e470ea2bdcda2da82266cdebc6af Mon Sep 17 00:00:00 2001 From: Flavien Charlon Date: Mon, 2 Mar 2015 17:48:30 +0000 Subject: [PATCH 083/767] Add Coinprism to the URL whitelist --- signer/config.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/signer/config.json b/signer/config.json index 6f939fac6..3a3181362 100644 --- a/signer/config.json +++ b/signer/config.json @@ -6,7 +6,9 @@ "https://[\\w\\.-]+\\.mytrezor\\.com(/.*)?", "https://trezor\\.github\\.io(/.*)?", "https://greenaddress\\.it(/.*)?", - "https://[\\w\\.-]+\\.greenaddress\\.it(/.*)?" + "https://[\\w\\.-]+\\.greenaddress\\.it(/.*)?", + "https://coinprism\\.com(/.*)?", + "https://[\\w\\.-]+\\.coinprism\\.com(/.*)?" ], "blacklist_urls": [ ], From 6dd6deb2ad59cf7d4a432d1aba6f94bd4e9aa09b Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 2 Mar 2015 19:08:46 +0100 Subject: [PATCH 084/767] fix tabs/spaces --- signer/config.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/signer/config.json b/signer/config.json index 3a3181362..c116a8657 100644 --- a/signer/config.json +++ b/signer/config.json @@ -1,14 +1,14 @@ { "whitelist_urls": [ - "https?://localhost(:\\d+)?(/.*)?", - "https?://localhost\\.mytrezor\\.com(:\\d+)?(/.*)?", - "https://mytrezor\\.com(/.*)?", - "https://[\\w\\.-]+\\.mytrezor\\.com(/.*)?", - "https://trezor\\.github\\.io(/.*)?", - "https://greenaddress\\.it(/.*)?", - "https://[\\w\\.-]+\\.greenaddress\\.it(/.*)?", - "https://coinprism\\.com(/.*)?", - "https://[\\w\\.-]+\\.coinprism\\.com(/.*)?" + "https?://localhost(:\\d+)?(/.*)?", + "https?://localhost\\.mytrezor\\.com(:\\d+)?(/.*)?", + "https://mytrezor\\.com(/.*)?", + "https://[\\w\\.-]+\\.mytrezor\\.com(/.*)?", + "https://trezor\\.github\\.io(/.*)?", + "https://greenaddress\\.it(/.*)?", + "https://[\\w\\.-]+\\.greenaddress\\.it(/.*)?", + "https://coinprism\\.com(/.*)?", + "https://[\\w\\.-]+\\.coinprism\\.com(/.*)?" ], "blacklist_urls": [ ], From 6eb2933bfe26510f4fe20968b47e1e41938688a0 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 2 Mar 2015 19:16:45 +0100 Subject: [PATCH 085/767] rework signer to consume secexp format as well --- signer/sign.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/signer/sign.py b/signer/sign.py index 8357c1a37..346370e34 100755 --- a/signer/sign.py +++ b/signer/sign.py @@ -56,10 +56,11 @@ def compose_message(json, proto): return cfg.SerializeToString() -def sign_message(data, key_pem): - # curve = ecdsa.curves.SECP256k1 - # x = ecdsa.keys.SigningKey.generate(curve=curve) - key = ecdsa.keys.SigningKey.from_pem(key_pem) +def sign_message(data, key): + if key.startswith('-----BEGIN'): + key = ecdsa.keys.SigningKey.from_pem(key) + else: + key = ecdsa.keys.SigningKey.from_secret_exponent(secexp = int(key, 16), curve=ecdsa.curves.SECP256k1, hashfunc=hashlib.sha256) verify = key.get_verifying_key() print "Verifying key:" @@ -79,22 +80,22 @@ def pack_datafile(filename, signature, data): print "Signature and data stored to", filename if __name__ == '__main__': - key_pem = '' - print "Paste ECDSA private key (in PEM format) and press Enter:" + key = '' + print "Paste ECDSA private key (in PEM format or SECEXP format) and press Enter:" while True: inp = raw_input() if inp == '': break - key_pem += inp + "\n" + key += inp + "\n" - # key_pem = open('sample.key', 'r').read() + # key = open('sample.key', 'r').read() compile_config() json = parse_json() proto = get_compiled_proto() data = compose_message(json, proto) - signature = sign_message(data, key_pem) + signature = sign_message(data, key) pack_datafile('config_signed.bin', signature, data) From 137ae028531567ec2e042ffcd6d6c73a97cfd4c8 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 18 Mar 2015 10:49:52 +0100 Subject: [PATCH 086/767] fix typo --- README | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README b/README index df3dce820..75dbe1fc0 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -trezor-crypto +trezor-common ============= Common files shared among TREZOR repositories. From e96ec085d55c20eccecb47e0a55b33295164de6d Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 30 Mar 2015 15:38:11 +0200 Subject: [PATCH 087/767] add pin_cached + passphrase_cached fields to Features message; add GetFeatures message --- protob/messages.proto | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/protob/messages.proto b/protob/messages.proto index d9bfbcf46..a94b89912 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -63,6 +63,7 @@ enum MessageType { MessageType_DecryptedMessage = 52 [(wire_out) = true]; MessageType_SignIdentity = 53 [(wire_in) = true]; MessageType_SignedIdentity = 54 [(wire_out) = true]; + MessageType_GetFeatures = 55 [(wire_in) = true]; MessageType_DebugLinkDecision = 100 [(wire_debug_in) = true]; MessageType_DebugLinkGetState = 101 [(wire_debug_in) = true]; MessageType_DebugLinkState = 102 [(wire_debug_out) = true]; @@ -81,9 +82,17 @@ enum MessageType { message Initialize { } +/** + * Request: Ask for device details (no device reset) + * @next Features + */ +message GetFeatures { +} + /** * Response: Reports various information about the device * @prev Initialize + * @prev GetFeatures */ message Features { optional string vendor = 1; // name of the manufacturer, e.g. "bitcointrezor.com" @@ -101,6 +110,8 @@ message Features { optional bytes revision = 13; // SCM revision of firmware optional bytes bootloader_hash = 14; // hash of the bootloader optional bool imported = 15; // was storage imported from an external source? + optional bool pin_cached = 16; // is PIN already cached in session? + optional bool passphrase_cached = 17; // is passphrase already cached in session? } /** From fb846f8144fc2962b805fcddcc4a659df47a566d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20B=C3=ADlek?= Date: Mon, 30 Mar 2015 20:43:43 +0200 Subject: [PATCH 088/767] Adding hidraw for raw HID access This rule is for allowing Chrome's HID API to work with Trezor on Linux --- udev/51-trezor-udev.rules | 1 + 1 file changed, 1 insertion(+) diff --git a/udev/51-trezor-udev.rules b/udev/51-trezor-udev.rules index 5decaf8a8..9a1160c91 100644 --- a/udev/51-trezor-udev.rules +++ b/udev/51-trezor-udev.rules @@ -6,6 +6,7 @@ # TREZOR SUBSYSTEM=="usb", ATTR{idVendor}=="534c", ATTR{idProduct}=="0001", MODE="0666", GROUP="dialout", SYMLINK+="trezor%n" +KERNEL=="hidraw*", ATTRS{idVendor}=="534c", ATTRS{idProduct}=="0001", MODE="0666", GROUP="dialout" # TREZOR Raspberry Pi Shield SUBSYSTEM=="usb", ATTR{idVendor}=="10c4", ATTR{idProduct}=="ea80", MODE="0666", GROUP="dialout", SYMLINK+="trezor%n" From d03f618c2f7e5797809e7e7f19f87bcbef302a33 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 14 Apr 2015 15:38:25 +0200 Subject: [PATCH 089/767] make udev rules filename consistent with the trezord package --- udev/{51-trezor-udev.rules => 23-trezor.rules} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename udev/{51-trezor-udev.rules => 23-trezor.rules} (100%) diff --git a/udev/51-trezor-udev.rules b/udev/23-trezor.rules similarity index 100% rename from udev/51-trezor-udev.rules rename to udev/23-trezor.rules From 2abe8d9879f3318ab79436f5842718b2fb51de8e Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 14 Apr 2015 15:45:35 +0200 Subject: [PATCH 090/767] fix udev rule location in description --- udev/23-trezor.rules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/udev/23-trezor.rules b/udev/23-trezor.rules index 9a1160c91..aa411f52a 100644 --- a/udev/23-trezor.rules +++ b/udev/23-trezor.rules @@ -1,6 +1,6 @@ # TREZOR: The Hardware Bitcoin Wallet # http://bitcointrezor.com/ -# Put this file to /lib/udev/rules.d/ +# Put this file into /usr/lib/udev/rules.d # Raspbian does not understand the new TAG+="uaccess", TAG+="udev-acl" syntax, use MODE+GROUP for now ... :-( From 47fa2c0741606179c50c99968995cbad9f7bdbbd Mon Sep 17 00:00:00 2001 From: slush0 Date: Thu, 16 Apr 2015 11:17:19 +0200 Subject: [PATCH 091/767] Added Coinprism, Bitex.la --- signer/config.json | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/signer/config.json b/signer/config.json index c116a8657..aefa0cb2a 100644 --- a/signer/config.json +++ b/signer/config.json @@ -8,13 +8,15 @@ "https://greenaddress\\.it(/.*)?", "https://[\\w\\.-]+\\.greenaddress\\.it(/.*)?", "https://coinprism\\.com(/.*)?", - "https://[\\w\\.-]+\\.coinprism\\.com(/.*)?" - ], + "https://[\\w\\.-]+\\.coinprism\\.com(/.*)?", + "https://bitex\\.la(/.*)?", + "https://[\\w\\.-]+\\.bitex\\.la(/.*)?" + ], "blacklist_urls": [ ], "known_devices": [ ["0x534c", "0x0001", "Trezor"], ["0x10c4", "0xea80", "Trezor Shield"] ], - "valid_days": 90 + "valid_days": 180 } From 186a4dfdc62bd1b36e4c3d37ad8fd916c8460237 Mon Sep 17 00:00:00 2001 From: Karel Bilek Date: Mon, 27 Apr 2015 19:13:07 +0200 Subject: [PATCH 092/767] Adding udev packaging --- udev/dist/Dockerfile | 35 +++++++++++++++++++++++++++++++++++ udev/dist/Makefile | 18 ++++++++++++++++++ udev/dist/release.sh | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 86 insertions(+) create mode 100644 udev/dist/Dockerfile create mode 100644 udev/dist/Makefile create mode 100755 udev/dist/release.sh diff --git a/udev/dist/Dockerfile b/udev/dist/Dockerfile new file mode 100644 index 000000000..51c4a7bfe --- /dev/null +++ b/udev/dist/Dockerfile @@ -0,0 +1,35 @@ +# initialize from the image + +FROM fedora:21 + +# update package repositories + +RUN yum install -y deltarpm yum-plugin-fastestmirror +RUN yum update -y + +# install tools + +RUN yum install -y cmake make wget +RUN yum install -y gcc gcc-c++ git make patchutils pkgconfig wget + +# install dependencies for Linux packaging + +RUN yum install -y ruby-devel rubygems rpm-build +RUN gem install fpm --no-document + +# install dependencies for Linux build + +#RUN yum install -y glibc-devel glibc-static libgcc libstdc++-static zlib-devel +#RUN yum install -y boost-static libusbx-devel protobuf-static + +#RUN yum install -y glibc-devel.i686 glibc-static.i686 libgcc.i686 libstdc++-static.i686 zlib-devel.i686 +#RUN yum install -y boost-static.i686 libusbx-devel.i686 protobuf-static.i686 + +# protobuf-static does not install protobuf-devel, workaround + +#RUN yum install -y protobuf-devel + +# install used networking libraries + +#RUN yum install -y libcurl-devel libmicrohttpd-devel +#RUN yum install -y libcurl-devel.i686 libmicrohttpd-devel.i686 diff --git a/udev/dist/Makefile b/udev/dist/Makefile new file mode 100644 index 000000000..86adeac9e --- /dev/null +++ b/udev/dist/Makefile @@ -0,0 +1,18 @@ +VOL_MOUNT = -v $(shell pwd):/release +IMAGETAG = trezor-udev-build-env + +all: .package + +.package: .docker-image trezor.rules + $(info Packaging ...) + docker run -t $(VOL_MOUNT) $(IMAGETAG) /release/release.sh + +trezor.rules: + cp ../51-trezor-udev.rules trezor.rules + +.docker-image: + $(info Preparing docker image ...) + docker build -t $(IMAGETAG) . + +shell: .docker-image + docker run -i -t $(VOL_MOUNT) $(IMAGETAG) /bin/bash diff --git a/udev/dist/release.sh b/udev/dist/release.sh new file mode 100755 index 000000000..ec0144b38 --- /dev/null +++ b/udev/dist/release.sh @@ -0,0 +1,33 @@ +#!/bin/sh + +set -e + +cd $(dirname $0) + +VERSION="1" + + +install -D -m 0644 ./trezor.rules ./lib/udev/rules.d/52-trezor-extension.rules + +NAME=trezor-udev + +tar cfj $NAME-$VERSION.tar.bz2 ./lib + +for TYPE in "deb" "rpm"; do + fpm \ + -s tar \ + -t $TYPE \ + -a all \ + -n $NAME \ + -v $VERSION \ + --license "LGPL-3.0" \ + --vendor "SatoshiLabs" \ + --description "Udev rules for using Bitcoin Trezor on Linux" \ + --maintainer "SatoshiLabs " \ + --url "http://bitcointrezor.com/" \ + --category "Productivity/Security" \ + $NAME-$VERSION.tar.bz2 +done + +rm $NAME-$VERSION.tar.bz2 +rm -rf ./lib From 55fa04c24750173787c42a06a048e37f36969b60 Mon Sep 17 00:00:00 2001 From: Karel Bilek Date: Mon, 27 Apr 2015 19:40:45 +0200 Subject: [PATCH 093/767] moving number back to 51 --- udev/{23-trezor.rules => 51-trezor.rules} | 0 udev/dist/Makefile | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename udev/{23-trezor.rules => 51-trezor.rules} (100%) diff --git a/udev/23-trezor.rules b/udev/51-trezor.rules similarity index 100% rename from udev/23-trezor.rules rename to udev/51-trezor.rules diff --git a/udev/dist/Makefile b/udev/dist/Makefile index 86adeac9e..dff2eb293 100644 --- a/udev/dist/Makefile +++ b/udev/dist/Makefile @@ -8,7 +8,7 @@ all: .package docker run -t $(VOL_MOUNT) $(IMAGETAG) /release/release.sh trezor.rules: - cp ../51-trezor-udev.rules trezor.rules + cp ../51-trezor.rules trezor.rules .docker-image: $(info Preparing docker image ...) From 90678eec73c0ac2bccbad011e945476e653137e3 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 11 May 2015 09:16:45 +0200 Subject: [PATCH 094/767] use 51 prefix for udev (same as trezord) --- udev/{23-trezor.rules => 51-trezor.rules} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename udev/{23-trezor.rules => 51-trezor.rules} (100%) diff --git a/udev/23-trezor.rules b/udev/51-trezor.rules similarity index 100% rename from udev/23-trezor.rules rename to udev/51-trezor.rules From e14363eb99ed9365d8f963dfea888a2c86dd007f Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 17 Jun 2015 13:56:51 +0200 Subject: [PATCH 095/767] add CipherKeyValue.iv field (optional initialization vector) --- protob/messages.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/protob/messages.proto b/protob/messages.proto index a94b89912..007b80771 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -470,6 +470,7 @@ message CipherKeyValue { optional bool encrypt = 4; // are we encrypting (True) or decrypting (False)? optional bool ask_on_encrypt = 5; // should we ask on encrypt operation? optional bool ask_on_decrypt = 6; // should we ask on decrypt operation? + optional bytes iv = 7; // initialization vector (will be computed if not set) } /** From 12288143f563cc51e4ae1d990de08db3add87380 Mon Sep 17 00:00:00 2001 From: Roman Zeyde Date: Tue, 23 Jun 2015 14:40:58 +0300 Subject: [PATCH 096/767] add ECDSA curve name specification (for SSH authentication) --- protob/messages.proto | 2 ++ 1 file changed, 2 insertions(+) diff --git a/protob/messages.proto b/protob/messages.proto index a94b89912..6d828a39c 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -255,6 +255,7 @@ message Entropy { */ message GetPublicKey { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional string ecdsa_curve_name = 2; // ECDSA curve name to use } /** @@ -570,6 +571,7 @@ message SignIdentity { optional IdentityType identity = 1; // identity optional bytes challenge_hidden = 2; // non-visible challenge optional string challenge_visual = 3; // challenge shown on display (e.g. date+time) + optional string ecdsa_curve_name = 4; // ECDSA curve name to use } /** From 4e7196bb92a810147ad63447a0516d6355b2d57f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20B=C3=ADlek?= Date: Fri, 17 Jul 2015 14:26:05 +0200 Subject: [PATCH 097/767] Making 256 bits default Making 24 words default (what is already being done in myTREZOR anyway) --- protob/messages.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protob/messages.proto b/protob/messages.proto index 9bd1a2f1e..533743c0a 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -318,7 +318,7 @@ message LoadDevice { */ message ResetDevice { optional bool display_random = 1; // display entropy generated by the device before asking for additional entropy - optional uint32 strength = 2 [default=128]; // strength of seed in bits + optional uint32 strength = 2 [default=256]; // strength of seed in bits optional bool passphrase_protection = 3; // enable master node encryption using passphrase optional bool pin_protection = 4; // enable PIN protection optional string language = 5 [default='english']; // device language From d461a15b016cc1be8f052b65f472d763c45fa55c Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 7 Sep 2015 22:35:02 +0200 Subject: [PATCH 098/767] update Dockerfile to F22 --- udev/dist/Dockerfile | 28 +++++----------------------- udev/dist/release.sh | 3 +-- 2 files changed, 6 insertions(+), 25 deletions(-) diff --git a/udev/dist/Dockerfile b/udev/dist/Dockerfile index 51c4a7bfe..03c172b3b 100644 --- a/udev/dist/Dockerfile +++ b/udev/dist/Dockerfile @@ -1,35 +1,17 @@ # initialize from the image -FROM fedora:21 +FROM fedora:22 # update package repositories -RUN yum install -y deltarpm yum-plugin-fastestmirror -RUN yum update -y +RUN dnf update -y # install tools -RUN yum install -y cmake make wget -RUN yum install -y gcc gcc-c++ git make patchutils pkgconfig wget +RUN dnf install -y cmake make wget +RUN dnf install -y gcc gcc-c++ git make patchutils pkgconfig wget # install dependencies for Linux packaging -RUN yum install -y ruby-devel rubygems rpm-build +RUN dnf install -y ruby-devel rubygems rpm-build RUN gem install fpm --no-document - -# install dependencies for Linux build - -#RUN yum install -y glibc-devel glibc-static libgcc libstdc++-static zlib-devel -#RUN yum install -y boost-static libusbx-devel protobuf-static - -#RUN yum install -y glibc-devel.i686 glibc-static.i686 libgcc.i686 libstdc++-static.i686 zlib-devel.i686 -#RUN yum install -y boost-static.i686 libusbx-devel.i686 protobuf-static.i686 - -# protobuf-static does not install protobuf-devel, workaround - -#RUN yum install -y protobuf-devel - -# install used networking libraries - -#RUN yum install -y libcurl-devel libmicrohttpd-devel -#RUN yum install -y libcurl-devel.i686 libmicrohttpd-devel.i686 diff --git a/udev/dist/release.sh b/udev/dist/release.sh index ec0144b38..54fd3730d 100755 --- a/udev/dist/release.sh +++ b/udev/dist/release.sh @@ -6,7 +6,6 @@ cd $(dirname $0) VERSION="1" - install -D -m 0644 ./trezor.rules ./lib/udev/rules.d/52-trezor-extension.rules NAME=trezor-udev @@ -22,7 +21,7 @@ for TYPE in "deb" "rpm"; do -v $VERSION \ --license "LGPL-3.0" \ --vendor "SatoshiLabs" \ - --description "Udev rules for using Bitcoin Trezor on Linux" \ + --description "Udev rules for TREZOR" \ --maintainer "SatoshiLabs " \ --url "http://bitcointrezor.com/" \ --category "Productivity/Security" \ From 7da678c4469185070b3c2026f910faca505ad780 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 8 Sep 2015 12:08:27 +0200 Subject: [PATCH 099/767] add .gitignore --- udev/dist/.gitignore | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 udev/dist/.gitignore diff --git a/udev/dist/.gitignore b/udev/dist/.gitignore new file mode 100644 index 000000000..f7dec42e8 --- /dev/null +++ b/udev/dist/.gitignore @@ -0,0 +1,3 @@ +trezor.rules +*.rpm +*.deb From a2725807416c0f29c7c6857c5101d7538dbc0ca6 Mon Sep 17 00:00:00 2001 From: Mark Bryars Date: Tue, 3 Nov 2015 00:04:48 +0100 Subject: [PATCH 100/767] Add u2f counter to storage --- protob/storage.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/protob/storage.proto b/protob/storage.proto index c1a0fb54c..36f95d570 100644 --- a/protob/storage.proto +++ b/protob/storage.proto @@ -25,4 +25,5 @@ message Storage { optional string label = 8; // device label optional bool imported = 9; // was storage imported from an external source? optional bytes homescreen = 10; // image used as homescreen (logo + label is used when not set) + optional uint32 u2f_counter = 11; // sequence number for u2f authentications } From 28f26b0de9eeb7d4f74b807273899028bed8490d Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 19 Nov 2015 11:16:46 +0100 Subject: [PATCH 101/767] add GetPublicKey.show_display --- protob/messages.proto | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/protob/messages.proto b/protob/messages.proto index 533743c0a..d1c1815d5 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -255,7 +255,8 @@ message Entropy { */ message GetPublicKey { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - optional string ecdsa_curve_name = 2; // ECDSA curve name to use + optional string ecdsa_curve_name = 2; // ECDSA curve name to use + optional bool show_display = 3; // optionally show on display before sending the result } /** @@ -276,7 +277,7 @@ message PublicKey { message GetAddress { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node optional string coin_name = 2 [default='Bitcoin']; - optional bool show_display = 3; + optional bool show_display = 3; // optionally show on display before sending the result optional MultisigRedeemScriptType multisig = 4; // Filled if we are showing a multisig address } From 9983a12276689afff8e28e1bd78605b8e6d63c1c Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 19 Nov 2015 11:23:14 +0100 Subject: [PATCH 102/767] add ButtonRequest_PublicKey --- protob/types.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/protob/types.proto b/protob/types.proto index 8410b3ca3..d83fad4b7 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -86,6 +86,7 @@ enum ButtonRequestType { ButtonRequest_SignTx = 8; ButtonRequest_FirmwareCheck = 9; ButtonRequest_Address = 10; + ButtonRequest_PublicKey = 11; } /** From 4eca753fcfb94acdb87f73e05c4235bb5420a5a1 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 1 Feb 2016 15:09:39 +0100 Subject: [PATCH 103/767] rename README -> README.md --- README => README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) rename README => README.md (87%) diff --git a/README b/README.md similarity index 87% rename from README rename to README.md index 75dbe1fc0..5133c1c09 100644 --- a/README +++ b/README.md @@ -1,8 +1,9 @@ -trezor-common -============= +#trezor-common Common files shared among TREZOR repositories. This repo is meant to be included as submodule to others using: +``` git submodule add https://github.com/trezor/trezor-common.git trezor-common +``` From 31d7134d6a6bc8f916396e594dc580abcf81f6bb Mon Sep 17 00:00:00 2001 From: Alex Beregszaszi Date: Mon, 7 Mar 2016 23:37:26 +0000 Subject: [PATCH 104/767] Add Quorum Wallet to the URL whitelist --- signer/config.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/signer/config.json b/signer/config.json index aefa0cb2a..8515fc063 100644 --- a/signer/config.json +++ b/signer/config.json @@ -10,7 +10,9 @@ "https://coinprism\\.com(/.*)?", "https://[\\w\\.-]+\\.coinprism\\.com(/.*)?", "https://bitex\\.la(/.*)?", - "https://[\\w\\.-]+\\.bitex\\.la(/.*)?" + "https://[\\w\\.-]+\\.bitex\\.la(/.*)?", + "https://quorumwallet\\.com(/.*)?", + "https://[\\w\\.-]+\\.quorumwallet\\.com(/.*)?" ], "blacklist_urls": [ ], From 5695400c98ea09267635e797ed36eab4b20b9517 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Sat, 16 Apr 2016 04:38:02 +0200 Subject: [PATCH 105/767] add version and lock_time fields to (Simple)SignTx --- protob/messages.proto | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/protob/messages.proto b/protob/messages.proto index d1c1815d5..5a42abdeb 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -519,6 +519,8 @@ message SignTx { required uint32 outputs_count = 1; // number of transaction outputs required uint32 inputs_count = 2; // number of transaction inputs optional string coin_name = 3 [default='Bitcoin']; // coin to use + optional uint32 version = 4 [default=1]; // transaction version + optional uint32 lock_time = 5 [default=0]; // transaction lock_time } /** @@ -535,6 +537,8 @@ message SimpleSignTx { repeated TxOutputType outputs = 2; // transaction outputs repeated TransactionType transactions = 3; // transactions whose outputs are used to build current inputs optional string coin_name = 4 [default='Bitcoin']; // coin to use + optional uint32 version = 4 [default=1]; // transaction version + optional uint32 lock_time = 5 [default=0]; // transaction lock_time } /** From 0567a429cfc8c6fdf9e08c79270750c102fc4f70 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Sat, 16 Apr 2016 04:42:41 +0200 Subject: [PATCH 106/767] fix typo --- protob/messages.proto | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/protob/messages.proto b/protob/messages.proto index 5a42abdeb..3a6618a82 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -537,8 +537,8 @@ message SimpleSignTx { repeated TxOutputType outputs = 2; // transaction outputs repeated TransactionType transactions = 3; // transactions whose outputs are used to build current inputs optional string coin_name = 4 [default='Bitcoin']; // coin to use - optional uint32 version = 4 [default=1]; // transaction version - optional uint32 lock_time = 5 [default=0]; // transaction lock_time + optional uint32 version = 5 [default=1]; // transaction version + optional uint32 lock_time = 6 [default=0]; // transaction lock_time } /** From 81132bb1d4b3a818d0d135546add0a36dd5761da Mon Sep 17 00:00:00 2001 From: Jochen Hoenicke Date: Wed, 27 Apr 2016 23:17:56 +0200 Subject: [PATCH 107/767] new address types for segwit --- protob/types.proto | 2 ++ 1 file changed, 2 insertions(+) diff --git a/protob/types.proto b/protob/types.proto index d83fad4b7..131bcafd5 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -131,6 +131,8 @@ message CoinType { optional uint32 address_type = 3 [default=0]; optional uint64 maxfee_kb = 4; optional uint32 address_type_p2sh = 5 [default=5]; + optional uint32 address_type_p2wpkh = 6 [default=6]; + optional uint32 address_type_p2wsh = 7 [default=10]; } /** From 70482c82acdc077808cc804420349349d32a4cab Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 17 May 2016 17:35:03 +0200 Subject: [PATCH 108/767] add CoinType.signed_message_header --- protob/types.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/protob/types.proto b/protob/types.proto index 131bcafd5..2fb82bf2e 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -133,6 +133,7 @@ message CoinType { optional uint32 address_type_p2sh = 5 [default=5]; optional uint32 address_type_p2wpkh = 6 [default=6]; optional uint32 address_type_p2wsh = 7 [default=10]; + optional bytes signed_message_header = 8; } /** From 85e1c80cfcfb6f9e5e623c5bbecf7257e03024ae Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 17 May 2016 18:00:03 +0200 Subject: [PATCH 109/767] fix last commit --- protob/types.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protob/types.proto b/protob/types.proto index 2fb82bf2e..339e66b98 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -133,7 +133,7 @@ message CoinType { optional uint32 address_type_p2sh = 5 [default=5]; optional uint32 address_type_p2wpkh = 6 [default=6]; optional uint32 address_type_p2wsh = 7 [default=10]; - optional bytes signed_message_header = 8; + optional string signed_message_header = 8; } /** From 36a574056deacad8943f1412c3db149750f8b163 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 17 May 2016 18:06:00 +0200 Subject: [PATCH 110/767] add coin to VerifyMessage --- protob/messages.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/protob/messages.proto b/protob/messages.proto index 3a6618a82..eca601b63 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -401,6 +401,7 @@ message VerifyMessage { optional string address = 1; // address to verify optional bytes signature = 2; // signature to verify optional bytes message = 3; // message to verify + optional string coin_name = 4 [default='Bitcoin']; // coin to use for verifying } /** From 4d8cf6f8ddaeb6200786ee9600ddacd9c623b584 Mon Sep 17 00:00:00 2001 From: Alex Beregszaszi Date: Sun, 20 Mar 2016 13:12:05 +0000 Subject: [PATCH 111/767] Add support for Ethereum with two new messages: EthereumGetAddress and EthereumSignTx --- protob/messages.proto | 65 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/protob/messages.proto b/protob/messages.proto index eca601b63..802ce92ed 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -64,6 +64,11 @@ enum MessageType { MessageType_SignIdentity = 53 [(wire_in) = true]; MessageType_SignedIdentity = 54 [(wire_out) = true]; MessageType_GetFeatures = 55 [(wire_in) = true]; + MessageType_EthereumGetAddress = 56 [(wire_in) = true]; + MessageType_EthereumAddress = 57 [(wire_out) = true]; + MessageType_EthereumSignTx = 58 [(wire_in) = true]; + MessageType_EthereumTxRequest = 59 [(wire_out) = true]; + MessageType_EthereumTxAck = 60 [(wire_in) = true]; MessageType_DebugLinkDecision = 100 [(wire_debug_in) = true]; MessageType_DebugLinkGetState = 101 [(wire_debug_in) = true]; MessageType_DebugLinkState = 102 [(wire_debug_out) = true]; @@ -281,6 +286,17 @@ message GetAddress { optional MultisigRedeemScriptType multisig = 4; // Filled if we are showing a multisig address } +/** + * Request: Ask device for Ethereum address corresponding to address_n path + * @next PassphraseRequest + * @next EthereumAddress + * @next Failure + */ +message EthereumGetAddress { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional bool show_display = 2; // optionally show on display before sending the result +} + /** * Response: Contains address derived from device private seed * @prev GetAddress @@ -289,6 +305,14 @@ message Address { required string address = 1; // Coin address in Base58 encoding } +/** + * Response: Contains an Ethereum address derived from device private seed + * @prev EthereumGetAddress + */ +message EthereumAddress { + required bytes address = 1; // Coin address as an Ethereum 160 bit hash +} + /** * Request: Request device to wipe all sensitive data and settings * @next ButtonRequest @@ -565,6 +589,47 @@ message TxAck { optional TransactionType tx = 1; } +/** + * Request: Ask device to sign transaction + * All fields are optional from the protocol's point of view. Each field defaults to value `0` if missing. + * @next PassphraseRequest + * @next PinMatrixRequest + * @next EthereumTxRequest + * @next Failure + */ +message EthereumSignTx { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional bytes nonce = 2; // 256 bit unsigned big endian + optional bytes gas_price = 3; // 256 bit unsigned big endian (in wei) + optional bytes gas_limit = 4; // 256 bit unsigned big endian + optional bytes to = 5; // 160 bit address hash + optional bytes value = 6; // 256 bit unsigned big endian (in wei) + optional uint32 data_length = 7; // Length of transaction payload +} + +/** + * Response: Device asks for more data from transaction payload, or returns the signature. + * If data_length is set, device awaits that many more bytes of payload. + * Otherwise, the signature_* fields contain the computed transaction signature. + * @prev EthereumSignTx + * @next EthereumTxAck + */ +message EthereumTxRequest { + optional uint32 data_length = 1; // Number of bytes being requested + optional uint32 signature_v = 2; // Computed signature (recovery parameter, limited to 27 or 28) + optional bytes signature_r = 3; // Computed signature + optional bytes signature_s = 4; // Computed signature +} + +/** + * Request: Transaction payload data. + * @prev EthereumTxRequest + * @next EthereumTxRequest + */ +message EthereumTxAck { + optional bytes data_chunk = 1; // Bytes from transaction payload +} + /////////////////////// // Identity messages // /////////////////////// From 2b72edf8f379e6433ecf53c3c42c14c739123dc8 Mon Sep 17 00:00:00 2001 From: Alex Beregszaszi Date: Mon, 23 May 2016 19:26:15 +0100 Subject: [PATCH 112/767] Include initial data chunk (<= 1024 bytes) in EthereumSignTx --- protob/messages.proto | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/protob/messages.proto b/protob/messages.proto index 802ce92ed..67356edf8 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -604,7 +604,8 @@ message EthereumSignTx { optional bytes gas_limit = 4; // 256 bit unsigned big endian optional bytes to = 5; // 160 bit address hash optional bytes value = 6; // 256 bit unsigned big endian (in wei) - optional uint32 data_length = 7; // Length of transaction payload + optional bytes data_initial_chunk = 7; // The initial data chunk (<= 1024 bytes) + optional uint32 data_length = 8; // Length of transaction payload } /** From 072ca020cfcd767b15a1b617adfb76bbc9b01fd7 Mon Sep 17 00:00:00 2001 From: Alex Beregszaszi Date: Mon, 23 May 2016 19:36:28 +0100 Subject: [PATCH 113/767] Clarify field limits in EthereumSignTx --- protob/messages.proto | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/protob/messages.proto b/protob/messages.proto index 67356edf8..8a07ccf34 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -592,6 +592,7 @@ message TxAck { /** * Request: Ask device to sign transaction * All fields are optional from the protocol's point of view. Each field defaults to value `0` if missing. + * Note: the first at most 1024 bytes of data MUST be transmitted as part of this message. * @next PassphraseRequest * @next PinMatrixRequest * @next EthereumTxRequest @@ -599,11 +600,11 @@ message TxAck { */ message EthereumSignTx { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - optional bytes nonce = 2; // 256 bit unsigned big endian - optional bytes gas_price = 3; // 256 bit unsigned big endian (in wei) - optional bytes gas_limit = 4; // 256 bit unsigned big endian + optional bytes nonce = 2; // <=256 bit unsigned big endian + optional bytes gas_price = 3; // <=256 bit unsigned big endian (in wei) + optional bytes gas_limit = 4; // <=256 bit unsigned big endian optional bytes to = 5; // 160 bit address hash - optional bytes value = 6; // 256 bit unsigned big endian (in wei) + optional bytes value = 6; // <=256 bit unsigned big endian (in wei) optional bytes data_initial_chunk = 7; // The initial data chunk (<= 1024 bytes) optional uint32 data_length = 8; // Length of transaction payload } @@ -611,15 +612,15 @@ message EthereumSignTx { /** * Response: Device asks for more data from transaction payload, or returns the signature. * If data_length is set, device awaits that many more bytes of payload. - * Otherwise, the signature_* fields contain the computed transaction signature. + * Otherwise, the signature_* fields contain the computed transaction signature. All three fields will be present. * @prev EthereumSignTx * @next EthereumTxAck */ message EthereumTxRequest { - optional uint32 data_length = 1; // Number of bytes being requested + optional uint32 data_length = 1; // Number of bytes being requested (<= 1024) optional uint32 signature_v = 2; // Computed signature (recovery parameter, limited to 27 or 28) - optional bytes signature_r = 3; // Computed signature - optional bytes signature_s = 4; // Computed signature + optional bytes signature_r = 3; // Computed signature R component (256 bit) + optional bytes signature_s = 4; // Computed signature S component (256 bit) } /** @@ -628,7 +629,7 @@ message EthereumTxRequest { * @next EthereumTxRequest */ message EthereumTxAck { - optional bytes data_chunk = 1; // Bytes from transaction payload + optional bytes data_chunk = 1; // Bytes from transaction payload (<= 1024 bytes) } /////////////////////// From 6599d7533c7c213ac8c40bfc0fa18815a4eb81a6 Mon Sep 17 00:00:00 2001 From: Jochen Hoenicke Date: Thu, 26 May 2016 20:07:15 +0200 Subject: [PATCH 114/767] DebugLink Memory access --- protob/messages.proto | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/protob/messages.proto b/protob/messages.proto index 8a07ccf34..432b164fa 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -74,6 +74,10 @@ enum MessageType { MessageType_DebugLinkState = 102 [(wire_debug_out) = true]; MessageType_DebugLinkStop = 103 [(wire_debug_in) = true]; MessageType_DebugLinkLog = 104 [(wire_debug_out) = true]; + MessageType_DebugLinkMemoryRead = 110 [(wire_debug_in) = true]; + MessageType_DebugLinkMemory = 111 [(wire_debug_out) = true]; + MessageType_DebugLinkMemoryWrite = 112 [(wire_debug_in) = true]; + MessageType_DebugLinkFlashErase = 113 [(wire_debug_in) = true]; } //////////////////// @@ -729,3 +733,38 @@ message DebugLinkLog { optional string bucket = 2; optional string text = 3; } + +/** + * Request: Read memory from device + * @next DebugLinkMemory + */ +message DebugLinkMemoryRead { + optional uint32 address = 1; + optional uint32 length = 2; +} + +/** + * Response: Device sends memory back + * @prev DebugLinkMemoryRead + */ +message DebugLinkMemory { + optional bytes memory = 1; +} + +/** + * Request: Write memory to device. WARNING: Writing to the wrong + * location can irreparably break the device. + */ +message DebugLinkMemoryWrite { + optional uint32 address = 1; + optional bytes memory = 2; + optional bool flash = 3; +} + +/** + * Request: Erase block of flash on device. WARNING: Writing to the wrong + * location can irreparably break the device. + */ +message DebugLinkFlashErase { + optional uint32 sector = 1; +} From a11339f171d7f68833ce5c4985f3749cbdb1326e Mon Sep 17 00:00:00 2001 From: Roman Zeyde Date: Fri, 10 Jun 2016 20:46:57 +0300 Subject: [PATCH 115/767] Add support for ECDH session key generation (according to SLIP-0017) --- protob/messages.proto | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/protob/messages.proto b/protob/messages.proto index 8a07ccf34..28689636d 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -69,6 +69,8 @@ enum MessageType { MessageType_EthereumSignTx = 58 [(wire_in) = true]; MessageType_EthereumTxRequest = 59 [(wire_out) = true]; MessageType_EthereumTxAck = 60 [(wire_in) = true]; + MessageType_GetECDHSessionKey = 61 [(wire_in) = true]; + MessageType_ECDHSessionKey = 62 [(wire_out) = true]; MessageType_DebugLinkDecision = 100 [(wire_debug_in) = true]; MessageType_DebugLinkGetState = 101 [(wire_debug_in) = true]; MessageType_DebugLinkState = 102 [(wire_debug_out) = true]; @@ -658,6 +660,29 @@ message SignedIdentity { optional bytes signature = 3; // signature of the identity data } +/////////////////// +// ECDH messages // +/////////////////// + +/** + * Request: Ask device to generate ECDH session key + * @next ECDHSessionKey + * @next Failure + */ +message GetECDHSessionKey { + optional IdentityType identity = 1; // identity + optional bytes peer_public_key = 2; // peer's public key + optional string ecdsa_curve_name = 3; // ECDSA curve name to use +} + +/** + * Response: Device provides ECDH session key + * @prev GetECDHSessionKey + */ +message ECDHSessionKey { + optional bytes session_key = 1; // ECDH session key +} + ///////////////////////// // Bootloader messages // ///////////////////////// From 203d95b913903debbaab3333ea2416a7c37e0b95 Mon Sep 17 00:00:00 2001 From: Jochen Hoenicke Date: Sun, 12 Jun 2016 23:37:24 +0200 Subject: [PATCH 116/767] new message SetU2FCounter --- protob/messages.proto | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/protob/messages.proto b/protob/messages.proto index 327549d21..2a2841bab 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -71,6 +71,7 @@ enum MessageType { MessageType_EthereumTxAck = 60 [(wire_in) = true]; MessageType_GetECDHSessionKey = 61 [(wire_in) = true]; MessageType_ECDHSessionKey = 62 [(wire_out) = true]; + MessageType_SetU2FCounter = 63 [(wire_in) = true]; MessageType_DebugLinkDecision = 100 [(wire_debug_in) = true]; MessageType_DebugLinkGetState = 101 [(wire_debug_in) = true]; MessageType_DebugLinkState = 102 [(wire_debug_out) = true]; @@ -687,6 +688,18 @@ message ECDHSessionKey { optional bytes session_key = 1; // ECDH session key } +/////////////////// +// U2F messages // +/////////////////// + +/** + * Request: Set U2F counter + * @next Success + */ +message SetU2FCounter { + optional uint32 u2f_counter = 1; // counter +} + ///////////////////////// // Bootloader messages // ///////////////////////// From 6b8fc64e0a5c700d82fb88ca7f3d469187d14de6 Mon Sep 17 00:00:00 2001 From: slush0 Date: Wed, 29 Jun 2016 20:54:25 +0200 Subject: [PATCH 117/767] Whitelisted trezor.io, Added PID/VID for Trezor2 --- signer/config.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/signer/config.json b/signer/config.json index 8515fc063..863e9fdbc 100644 --- a/signer/config.json +++ b/signer/config.json @@ -4,6 +4,8 @@ "https?://localhost\\.mytrezor\\.com(:\\d+)?(/.*)?", "https://mytrezor\\.com(/.*)?", "https://[\\w\\.-]+\\.mytrezor\\.com(/.*)?", + "https://trezor\\.io(/.*)?", + "https://[\\w\\.-]+\\.trezor\\.io(/.*)?", "https://trezor\\.github\\.io(/.*)?", "https://greenaddress\\.it(/.*)?", "https://[\\w\\.-]+\\.greenaddress\\.it(/.*)?", @@ -18,7 +20,8 @@ ], "known_devices": [ ["0x534c", "0x0001", "Trezor"], - ["0x10c4", "0xea80", "Trezor Shield"] + ["0x1209", "0x53C0", "Trezor2 Bootloader"], + ["0x1209", "0x53C1", "Trezor2"] ], "valid_days": 180 } From 4c2b12b0c51e293fe08f04554cdd55a081250653 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 30 Jun 2016 13:55:30 +0200 Subject: [PATCH 118/767] update whitespace --- signer/config.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/signer/config.json b/signer/config.json index 863e9fdbc..ffdaf4144 100644 --- a/signer/config.json +++ b/signer/config.json @@ -20,8 +20,8 @@ ], "known_devices": [ ["0x534c", "0x0001", "Trezor"], - ["0x1209", "0x53C0", "Trezor2 Bootloader"], - ["0x1209", "0x53C1", "Trezor2"] + ["0x1209", "0x53c0", "Trezor2 Bootloader"], + ["0x1209", "0x53c1", "Trezor2"] ], "valid_days": 180 } From 7e83062352c469f6a5b08976d92254d426ce8697 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Sun, 3 Jul 2016 13:41:17 +0200 Subject: [PATCH 119/767] update dockerfile to fedora:24 --- udev/dist/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/udev/dist/Dockerfile b/udev/dist/Dockerfile index 03c172b3b..1fc03cb0d 100644 --- a/udev/dist/Dockerfile +++ b/udev/dist/Dockerfile @@ -1,6 +1,6 @@ # initialize from the image -FROM fedora:22 +FROM fedora:24 # update package repositories From def589743e0679cd1199b71a83a079fbe583f402 Mon Sep 17 00:00:00 2001 From: Jochen Hoenicke Date: Sat, 30 Apr 2016 14:43:58 +0200 Subject: [PATCH 120/767] Signing protocol extensions for segwit Extended InputScriptType and OutputScriptType for witness. We use the same constant for multisig and normal segwit scripts; they can be differentiated by the fact that multisig is set. Added amount to TxInputType (with segwit we can trust it as it is added to the signed part). --- protob/types.proto | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/protob/types.proto b/protob/types.proto index 339e66b98..e79350a5f 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -45,10 +45,12 @@ enum FailureType { * @used_in TxOutputType */ enum OutputScriptType { - PAYTOADDRESS = 0; - PAYTOSCRIPTHASH = 1; - PAYTOMULTISIG = 2; - PAYTOOPRETURN = 3; + PAYTOADDRESS = 0; // used for all addresses (bitcoin, p2sh, witness) + PAYTOSCRIPTHASH = 1; // p2sh address (deprecated; use PAYTOADDRESS) + PAYTOMULTISIG = 2; // only for change output + PAYTOOPRETURN = 3; // op_return + PAYTOWITNESS = 4; // only for change output + PAYTOP2SHWITNESS = 5; // only for change output } /** @@ -56,8 +58,11 @@ enum OutputScriptType { * @used_in TxInputType */ enum InputScriptType { - SPENDADDRESS = 0; - SPENDMULTISIG = 1; + SPENDADDRESS = 0; // standard p2pkh address + SPENDMULTISIG = 1; // p2sh multisig address + EXTERNAL = 2; // reserved for external inputs (coinjoin) + SPENDWITNESS = 3; // native segwit + SPENDP2SHWITNESS = 4; // segwit over p2sh (backward compatible) } /** @@ -141,7 +146,7 @@ message CoinType { * @used_in TxInputType */ message MultisigRedeemScriptType { - repeated HDNodePathType pubkeys = 1; // pubkeys from multisig address (sorted lexicographically) + repeated HDNodePathType pubkeys = 1; // pubkeys from multisig address (sorted lexicographically) repeated bytes signatures = 2; // existing signatures for partially signed input optional uint32 m = 3; // "m" from n, how many valid signatures is necessary for spending } @@ -159,6 +164,7 @@ message TxInputType { optional uint32 sequence = 5 [default=0xffffffff]; // sequence optional InputScriptType script_type = 6 [default=SPENDADDRESS]; // defines template of input script optional MultisigRedeemScriptType multisig = 7; // Filled if input is going to spend multisig tx + optional uint64 amount = 8; // amount of previous transaction output (for segwit only) } /** From 1a6645406655a43061effe3769e0003f374a3c26 Mon Sep 17 00:00:00 2001 From: Jochen Hoenicke Date: Sun, 3 Jul 2016 14:47:22 +0200 Subject: [PATCH 121/767] GetAddress with scripttype Added script_type field to GetAddress, which can later be used to display segwit addresses on the Trezor. --- protob/messages.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/protob/messages.proto b/protob/messages.proto index 2a2841bab..fd3792f0f 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -291,6 +291,7 @@ message GetAddress { optional string coin_name = 2 [default='Bitcoin']; optional bool show_display = 3; // optionally show on display before sending the result optional MultisigRedeemScriptType multisig = 4; // Filled if we are showing a multisig address + optional InputScriptType script_type = 5 [default=SPENDADDRESS]; // Used to distinguish segwit addresses } /** From 6d0f3083f3163f50f5a3753225cb26425355c83c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20B=C3=ADlek?= Date: Wed, 10 Aug 2016 15:59:28 +0200 Subject: [PATCH 122/767] Adding chrome extension to white-listed domains --- signer/config.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/signer/config.json b/signer/config.json index ffdaf4144..ccbc9dcc7 100644 --- a/signer/config.json +++ b/signer/config.json @@ -14,7 +14,8 @@ "https://bitex\\.la(/.*)?", "https://[\\w\\.-]+\\.bitex\\.la(/.*)?", "https://quorumwallet\\.com(/.*)?", - "https://[\\w\\.-]+\\.quorumwallet\\.com(/.*)?" + "https://[\\w\\.-]+\\.quorumwallet\\.com(/.*)?", + "chrome-extension://jcjjhjgimijdkoamemaghajlhegmoclj(/.*)?" ], "blacklist_urls": [ ], From 153405b843704a6469b1bc004d66130f3a9fba79 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 22 Sep 2016 17:50:48 +0200 Subject: [PATCH 123/767] update udev rules --- udev/51-trezor.rules | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/udev/51-trezor.rules b/udev/51-trezor.rules index aa411f52a..338ed4446 100644 --- a/udev/51-trezor.rules +++ b/udev/51-trezor.rules @@ -8,5 +8,12 @@ SUBSYSTEM=="usb", ATTR{idVendor}=="534c", ATTR{idProduct}=="0001", MODE="0666", GROUP="dialout", SYMLINK+="trezor%n" KERNEL=="hidraw*", ATTRS{idVendor}=="534c", ATTRS{idProduct}=="0001", MODE="0666", GROUP="dialout" +# TREZOR v2 +SUBSYSTEM=="usb", ATTR{idVendor}=="1209", ATTR{idProduct}=="53c0", MODE="0666", GROUP="dialout", SYMLINK+="trezor%n" +SUBSYSTEM=="usb", ATTR{idVendor}=="1209", ATTR{idProduct}=="53c1", MODE="0666", GROUP="dialout", SYMLINK+="trezor%n" +KERNEL=="hidraw*", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="53c0", MODE="0666", GROUP="dialout" +KERNEL=="hidraw*", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="53c1", MODE="0666", GROUP="dialout" + # TREZOR Raspberry Pi Shield SUBSYSTEM=="usb", ATTR{idVendor}=="10c4", ATTR{idProduct}=="ea80", MODE="0666", GROUP="dialout", SYMLINK+="trezor%n" +KERNEL=="hidraw*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea80", MODE="0666", GROUP="dialout" From fb8e76d8f645a540f6a28fc319a2bf74f84d1631 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 23 Sep 2016 13:24:41 +0200 Subject: [PATCH 124/767] add coins.json (extracted from trezor-mcu coins.s) --- coins.json | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 coins.json diff --git a/coins.json b/coins.json new file mode 100644 index 000000000..c7087f552 --- /dev/null +++ b/coins.json @@ -0,0 +1,64 @@ +[{ + "coin_name": "Bitcoin", + "coin_shortcut": "BTC", + "address_type": 0, + "maxfee_kb": 100000, + "address_type_p2sh": 5, + "address_type_p2wpkh": 6, + "address_type_p2wsh": 10, + "signed_message_header": "Bitcoin Signed Message:\n" +}, { + "coin_name": "Testnet", + "coin_shortcut": "TEST", + "address_type": 111, + "maxfee_kb": 10000000, + "address_type_p2sh": 196, + "address_type_p2wpkh": 3, + "address_type_p2wsh": 40, + "signed_message_header": "Bitcoin Signed Message:\n" +}, { + "coin_name": "Namecoin", + "coin_shortcut": "NMC", + "address_type": 52, + "maxfee_kb": 10000000, + "address_type_p2sh": 5, + "address_type_p2wpkh": null, + "address_type_p2wsh": null, + "signed_message_header": "Namecoin Signed Message:\n" +}, { + "coin_name": "Litecoin", + "coin_shortcut": "LTC", + "address_type": 48, + "maxfee_kb": 1000000, + "address_type_p2sh": 5, + "address_type_p2wpkh": null, + "address_type_p2wsh": null, + "signed_message_header": "Litecoin Signed Message:\n" +}, { + "coin_name": "Dogecoin", + "coin_shortcut": "DOGE", + "address_type": 30, + "maxfee_kb": 1000000000, + "address_type_p2sh": 22, + "address_type_p2wpkh": null, + "address_type_p2wsh": null, + "signed_message_header": "Dogecoin Signed Message:\n" +}, { + "coin_name": "Dash", + "coin_shortcut": "DASH", + "address_type": 76, + "maxfee_kb": 100000, + "address_type_p2sh": 16, + "address_type_p2wpkh": null, + "address_type_p2wsh": null, + "signed_message_header": "DarkCoin Signed Message:\n" +}, { + "coin_name": "Zcash", + "coin_shortcut": "ZEC", + "address_type": 65, + "maxfee_kb": 1000000, + "address_type_p2sh": 5, + "address_type_p2wpkh": null, + "address_type_p2wsh": null, + "signed_message_header": "Zcash Signed Message:\n" +}] From 4ba387d4f8b9bed8ab767d4a632ddcc344601370 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20B=C3=ADlek?= Date: Fri, 23 Sep 2016 14:33:52 +0200 Subject: [PATCH 125/767] Adding genesis block hash --- coins.json | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/coins.json b/coins.json index c7087f552..a66814c57 100644 --- a/coins.json +++ b/coins.json @@ -6,7 +6,8 @@ "address_type_p2sh": 5, "address_type_p2wpkh": 6, "address_type_p2wsh": 10, - "signed_message_header": "Bitcoin Signed Message:\n" + "signed_message_header": "Bitcoin Signed Message:\n", + "hash_genesis_block": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f" }, { "coin_name": "Testnet", "coin_shortcut": "TEST", @@ -15,7 +16,8 @@ "address_type_p2sh": 196, "address_type_p2wpkh": 3, "address_type_p2wsh": 40, - "signed_message_header": "Bitcoin Signed Message:\n" + "signed_message_header": "Bitcoin Signed Message:\n", + "hash_genesis_block": "000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943" }, { "coin_name": "Namecoin", "coin_shortcut": "NMC", @@ -24,7 +26,8 @@ "address_type_p2sh": 5, "address_type_p2wpkh": null, "address_type_p2wsh": null, - "signed_message_header": "Namecoin Signed Message:\n" + "signed_message_header": "Namecoin Signed Message:\n", + "hash_genesis_block": "000000000062b72c5e2ceb45fbc8587e807c155b0da735e6483dfba2f0a9c770" }, { "coin_name": "Litecoin", "coin_shortcut": "LTC", @@ -33,7 +36,8 @@ "address_type_p2sh": 5, "address_type_p2wpkh": null, "address_type_p2wsh": null, - "signed_message_header": "Litecoin Signed Message:\n" + "signed_message_header": "Litecoin Signed Message:\n", + "hash_genesis_block": "12a765e31ffd4059bada1e25190f6e98c99d9714d334efa41a195a7e7e04bfe2" }, { "coin_name": "Dogecoin", "coin_shortcut": "DOGE", @@ -42,7 +46,8 @@ "address_type_p2sh": 22, "address_type_p2wpkh": null, "address_type_p2wsh": null, - "signed_message_header": "Dogecoin Signed Message:\n" + "signed_message_header": "Dogecoin Signed Message:\n", + "hash_genesis_block": "1a91e3dace36e2be3bf030a65679fe821aa1d6ef92e7c9902eb318182c355691" }, { "coin_name": "Dash", "coin_shortcut": "DASH", @@ -51,7 +56,8 @@ "address_type_p2sh": 16, "address_type_p2wpkh": null, "address_type_p2wsh": null, - "signed_message_header": "DarkCoin Signed Message:\n" + "signed_message_header": "DarkCoin Signed Message:\n", + "hash_genesis_block": "00000ffd590b1485b3caadc19b22e6379c733355108f107a430458cdf3407ab6" }, { "coin_name": "Zcash", "coin_shortcut": "ZEC", @@ -60,5 +66,6 @@ "address_type_p2sh": 5, "address_type_p2wpkh": null, "address_type_p2wsh": null, - "signed_message_header": "Zcash Signed Message:\n" + "signed_message_header": "Zcash Signed Message:\n", + "hash_genesis_block": "027e3758c3a65b12aa1046462b486d0a63bfa1beae327897f56c5cfb7daaae71" }] From 0461c7d4f04057b7c0a181200cbf0a0386f1dc2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20B=C3=ADlek?= Date: Fri, 23 Sep 2016 15:13:41 +0200 Subject: [PATCH 126/767] Adding xpub and xprv magic --- coins.json | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/coins.json b/coins.json index a66814c57..3593ec963 100644 --- a/coins.json +++ b/coins.json @@ -7,7 +7,9 @@ "address_type_p2wpkh": 6, "address_type_p2wsh": 10, "signed_message_header": "Bitcoin Signed Message:\n", - "hash_genesis_block": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f" + "hash_genesis_block": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", + "xpub_magic": "0488b21e", + "xprv_magic": "0488ade4" }, { "coin_name": "Testnet", "coin_shortcut": "TEST", @@ -17,7 +19,9 @@ "address_type_p2wpkh": 3, "address_type_p2wsh": 40, "signed_message_header": "Bitcoin Signed Message:\n", - "hash_genesis_block": "000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943" + "hash_genesis_block": "000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943", + "xpub_magic": "043587cf", + "xprv_magic": "04358394" }, { "coin_name": "Namecoin", "coin_shortcut": "NMC", @@ -27,7 +31,9 @@ "address_type_p2wpkh": null, "address_type_p2wsh": null, "signed_message_header": "Namecoin Signed Message:\n", - "hash_genesis_block": "000000000062b72c5e2ceb45fbc8587e807c155b0da735e6483dfba2f0a9c770" + "hash_genesis_block": "000000000062b72c5e2ceb45fbc8587e807c155b0da735e6483dfba2f0a9c770", + "xpub_magic": "019da462", + "xprv_magic": "019d9cfe" }, { "coin_name": "Litecoin", "coin_shortcut": "LTC", @@ -37,7 +43,9 @@ "address_type_p2wpkh": null, "address_type_p2wsh": null, "signed_message_header": "Litecoin Signed Message:\n", - "hash_genesis_block": "12a765e31ffd4059bada1e25190f6e98c99d9714d334efa41a195a7e7e04bfe2" + "hash_genesis_block": "12a765e31ffd4059bada1e25190f6e98c99d9714d334efa41a195a7e7e04bfe2", + "xpub_magic": "019da462", + "xprv_magic": "019d9cfe" }, { "coin_name": "Dogecoin", "coin_shortcut": "DOGE", @@ -47,7 +55,9 @@ "address_type_p2wpkh": null, "address_type_p2wsh": null, "signed_message_header": "Dogecoin Signed Message:\n", - "hash_genesis_block": "1a91e3dace36e2be3bf030a65679fe821aa1d6ef92e7c9902eb318182c355691" + "hash_genesis_block": "1a91e3dace36e2be3bf030a65679fe821aa1d6ef92e7c9902eb318182c355691", + "xpub_magic": "02facafd", + "xprv_magic": "02fac398" }, { "coin_name": "Dash", "coin_shortcut": "DASH", @@ -57,7 +67,9 @@ "address_type_p2wpkh": null, "address_type_p2wsh": null, "signed_message_header": "DarkCoin Signed Message:\n", - "hash_genesis_block": "00000ffd590b1485b3caadc19b22e6379c733355108f107a430458cdf3407ab6" + "hash_genesis_block": "00000ffd590b1485b3caadc19b22e6379c733355108f107a430458cdf3407ab6", + "xpub_magic": "02fe52cc", + "xprv_magic": "02fe52f8 }, { "coin_name": "Zcash", "coin_shortcut": "ZEC", @@ -67,5 +79,7 @@ "address_type_p2wpkh": null, "address_type_p2wsh": null, "signed_message_header": "Zcash Signed Message:\n", - "hash_genesis_block": "027e3758c3a65b12aa1046462b486d0a63bfa1beae327897f56c5cfb7daaae71" + "hash_genesis_block": "027e3758c3a65b12aa1046462b486d0a63bfa1beae327897f56c5cfb7daaae71", + "xpub_magic": "0488b21e", + "xprv_magic": "0488ade4" }] From 3c5bc3c77cf6c354422b21ed6debe04a1540aa77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20B=C3=ADlek?= Date: Fri, 23 Sep 2016 15:14:10 +0200 Subject: [PATCH 127/767] Correcting typo --- coins.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coins.json b/coins.json index 3593ec963..fbfbd1267 100644 --- a/coins.json +++ b/coins.json @@ -69,7 +69,7 @@ "signed_message_header": "DarkCoin Signed Message:\n", "hash_genesis_block": "00000ffd590b1485b3caadc19b22e6379c733355108f107a430458cdf3407ab6", "xpub_magic": "02fe52cc", - "xprv_magic": "02fe52f8 + "xprv_magic": "02fe52f8" }, { "coin_name": "Zcash", "coin_shortcut": "ZEC", From ca0f187805dc02338250aef408c053345d2fd2ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20B=C3=ADlek?= Date: Fri, 23 Sep 2016 16:34:25 +0200 Subject: [PATCH 128/767] Adding BIP44 indexes zcash is just temporary --- coins.json | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/coins.json b/coins.json index fbfbd1267..b8f49755f 100644 --- a/coins.json +++ b/coins.json @@ -9,7 +9,8 @@ "signed_message_header": "Bitcoin Signed Message:\n", "hash_genesis_block": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", "xpub_magic": "0488b21e", - "xprv_magic": "0488ade4" + "xprv_magic": "0488ade4", + "bip44": 0 }, { "coin_name": "Testnet", "coin_shortcut": "TEST", @@ -21,7 +22,8 @@ "signed_message_header": "Bitcoin Signed Message:\n", "hash_genesis_block": "000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943", "xpub_magic": "043587cf", - "xprv_magic": "04358394" + "xprv_magic": "04358394", + "bip44": 1 }, { "coin_name": "Namecoin", "coin_shortcut": "NMC", @@ -33,7 +35,8 @@ "signed_message_header": "Namecoin Signed Message:\n", "hash_genesis_block": "000000000062b72c5e2ceb45fbc8587e807c155b0da735e6483dfba2f0a9c770", "xpub_magic": "019da462", - "xprv_magic": "019d9cfe" + "xprv_magic": "019d9cfe", + "bip44": 1 }, { "coin_name": "Litecoin", "coin_shortcut": "LTC", @@ -45,7 +48,8 @@ "signed_message_header": "Litecoin Signed Message:\n", "hash_genesis_block": "12a765e31ffd4059bada1e25190f6e98c99d9714d334efa41a195a7e7e04bfe2", "xpub_magic": "019da462", - "xprv_magic": "019d9cfe" + "xprv_magic": "019d9cfe", + "bip44": 2 }, { "coin_name": "Dogecoin", "coin_shortcut": "DOGE", @@ -57,7 +61,8 @@ "signed_message_header": "Dogecoin Signed Message:\n", "hash_genesis_block": "1a91e3dace36e2be3bf030a65679fe821aa1d6ef92e7c9902eb318182c355691", "xpub_magic": "02facafd", - "xprv_magic": "02fac398" + "xprv_magic": "02fac398", + "bip44": 3 }, { "coin_name": "Dash", "coin_shortcut": "DASH", @@ -69,7 +74,8 @@ "signed_message_header": "DarkCoin Signed Message:\n", "hash_genesis_block": "00000ffd590b1485b3caadc19b22e6379c733355108f107a430458cdf3407ab6", "xpub_magic": "02fe52cc", - "xprv_magic": "02fe52f8" + "xprv_magic": "02fe52f8", + "bip44": 5 }, { "coin_name": "Zcash", "coin_shortcut": "ZEC", @@ -81,5 +87,6 @@ "signed_message_header": "Zcash Signed Message:\n", "hash_genesis_block": "027e3758c3a65b12aa1046462b486d0a63bfa1beae327897f56c5cfb7daaae71", "xpub_magic": "0488b21e", - "xprv_magic": "0488ade4" + "xprv_magic": "0488ade4", + "bip44": 133 }] From c2a0b255ff1ba174085ebe76c46f8e049f85d197 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20B=C3=ADlek?= Date: Sun, 25 Sep 2016 18:44:22 +0200 Subject: [PATCH 129/767] Adding fee/B Aside from Bitcoin, those are made up. We can fix them later. --- coins.json | 38 +++++++++++++++++++++++++++++++------- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/coins.json b/coins.json index b8f49755f..76d9b0d0f 100644 --- a/coins.json +++ b/coins.json @@ -10,7 +10,13 @@ "hash_genesis_block": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", "xpub_magic": "0488b21e", "xprv_magic": "0488ade4", - "bip44": 0 + "bip44": 0, + "default_fee_b": { + "Low": 10, + "Economy": 20, + "Normal": 30, + "High": 40 + } }, { "coin_name": "Testnet", "coin_shortcut": "TEST", @@ -23,7 +29,10 @@ "hash_genesis_block": "000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943", "xpub_magic": "043587cf", "xprv_magic": "04358394", - "bip44": 1 + "bip44": 1, + "default_fee_b": { + "Normal": 10 + } }, { "coin_name": "Namecoin", "coin_shortcut": "NMC", @@ -36,7 +45,10 @@ "hash_genesis_block": "000000000062b72c5e2ceb45fbc8587e807c155b0da735e6483dfba2f0a9c770", "xpub_magic": "019da462", "xprv_magic": "019d9cfe", - "bip44": 1 + "bip44": 1, + "default_fee_b": { + "Normal": 10 + } }, { "coin_name": "Litecoin", "coin_shortcut": "LTC", @@ -49,7 +61,10 @@ "hash_genesis_block": "12a765e31ffd4059bada1e25190f6e98c99d9714d334efa41a195a7e7e04bfe2", "xpub_magic": "019da462", "xprv_magic": "019d9cfe", - "bip44": 2 + "bip44": 2, + "default_fee_b": { + "Normal": 10 + } }, { "coin_name": "Dogecoin", "coin_shortcut": "DOGE", @@ -62,7 +77,10 @@ "hash_genesis_block": "1a91e3dace36e2be3bf030a65679fe821aa1d6ef92e7c9902eb318182c355691", "xpub_magic": "02facafd", "xprv_magic": "02fac398", - "bip44": 3 + "bip44": 3, + "default_fee_b": { + "Normal": 10 + } }, { "coin_name": "Dash", "coin_shortcut": "DASH", @@ -75,7 +93,10 @@ "hash_genesis_block": "00000ffd590b1485b3caadc19b22e6379c733355108f107a430458cdf3407ab6", "xpub_magic": "02fe52cc", "xprv_magic": "02fe52f8", - "bip44": 5 + "bip44": 5, + "default_fee_b": { + "Normal": 10 + } }, { "coin_name": "Zcash", "coin_shortcut": "ZEC", @@ -88,5 +109,8 @@ "hash_genesis_block": "027e3758c3a65b12aa1046462b486d0a63bfa1beae327897f56c5cfb7daaae71", "xpub_magic": "0488b21e", "xprv_magic": "0488ade4", - "bip44": 133 + "bip44": 133, + "default_fee_b": { + "Normal": 10 + } }] From 7c3a4f9dc5550e0ca731f5069b7d51092e6045de Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 26 Sep 2016 12:44:58 +0200 Subject: [PATCH 130/767] add Features.firmware_present field --- protob/messages.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/protob/messages.proto b/protob/messages.proto index fd3792f0f..bcb11fb12 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -124,6 +124,7 @@ message Features { optional bool imported = 15; // was storage imported from an external source? optional bool pin_cached = 16; // is PIN already cached in session? optional bool passphrase_cached = 17; // is passphrase already cached in session? + optional bool firmware_present = 18; // is valid firmware loaded? } /** From 887a45f40b7f1b1a1159418e0d9635ab0f202301 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20B=C3=ADlek?= Date: Mon, 26 Sep 2016 14:51:47 +0200 Subject: [PATCH 131/767] Adding zcash +changing format slightly --- coins.json | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/coins.json b/coins.json index 76d9b0d0f..f2e682804 100644 --- a/coins.json +++ b/coins.json @@ -7,7 +7,7 @@ "address_type_p2wpkh": 6, "address_type_p2wsh": 10, "signed_message_header": "Bitcoin Signed Message:\n", - "hash_genesis_block": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", + "hash_genesis_block": ["000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f"], "xpub_magic": "0488b21e", "xprv_magic": "0488ade4", "bip44": 0, @@ -26,7 +26,10 @@ "address_type_p2wpkh": 3, "address_type_p2wsh": 40, "signed_message_header": "Bitcoin Signed Message:\n", - "hash_genesis_block": "000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943", + "hash_genesis_block": [ + "000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943", + "0cdf00b25a93ded11d73ebe1728cf7867f18e1f62aca9554b95e0f3026174e33" + ], "xpub_magic": "043587cf", "xprv_magic": "04358394", "bip44": 1, @@ -42,7 +45,7 @@ "address_type_p2wpkh": null, "address_type_p2wsh": null, "signed_message_header": "Namecoin Signed Message:\n", - "hash_genesis_block": "000000000062b72c5e2ceb45fbc8587e807c155b0da735e6483dfba2f0a9c770", + "hash_genesis_block": ["000000000062b72c5e2ceb45fbc8587e807c155b0da735e6483dfba2f0a9c770"], "xpub_magic": "019da462", "xprv_magic": "019d9cfe", "bip44": 1, @@ -58,7 +61,7 @@ "address_type_p2wpkh": null, "address_type_p2wsh": null, "signed_message_header": "Litecoin Signed Message:\n", - "hash_genesis_block": "12a765e31ffd4059bada1e25190f6e98c99d9714d334efa41a195a7e7e04bfe2", + "hash_genesis_block": ["12a765e31ffd4059bada1e25190f6e98c99d9714d334efa41a195a7e7e04bfe2"], "xpub_magic": "019da462", "xprv_magic": "019d9cfe", "bip44": 2, @@ -74,7 +77,7 @@ "address_type_p2wpkh": null, "address_type_p2wsh": null, "signed_message_header": "Dogecoin Signed Message:\n", - "hash_genesis_block": "1a91e3dace36e2be3bf030a65679fe821aa1d6ef92e7c9902eb318182c355691", + "hash_genesis_block": ["1a91e3dace36e2be3bf030a65679fe821aa1d6ef92e7c9902eb318182c355691"], "xpub_magic": "02facafd", "xprv_magic": "02fac398", "bip44": 3, @@ -90,7 +93,7 @@ "address_type_p2wpkh": null, "address_type_p2wsh": null, "signed_message_header": "DarkCoin Signed Message:\n", - "hash_genesis_block": "00000ffd590b1485b3caadc19b22e6379c733355108f107a430458cdf3407ab6", + "hash_genesis_block": ["00000ffd590b1485b3caadc19b22e6379c733355108f107a430458cdf3407ab6"], "xpub_magic": "02fe52cc", "xprv_magic": "02fe52f8", "bip44": 5, @@ -106,7 +109,7 @@ "address_type_p2wpkh": null, "address_type_p2wsh": null, "signed_message_header": "Zcash Signed Message:\n", - "hash_genesis_block": "027e3758c3a65b12aa1046462b486d0a63bfa1beae327897f56c5cfb7daaae71", + "hash_genesis_block": ["027e3758c3a65b12aa1046462b486d0a63bfa1beae327897f56c5cfb7daaae71"], "xpub_magic": "0488b21e", "xprv_magic": "0488ade4", "bip44": 133, From b6535b835493f3b8d37f5575a74d5cb23fdb095b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20B=C3=ADlek?= Date: Mon, 26 Sep 2016 15:56:08 +0200 Subject: [PATCH 132/767] Moving zcash testcoin out (it's cleaner) --- coins.json | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/coins.json b/coins.json index f2e682804..4333ee9ed 100644 --- a/coins.json +++ b/coins.json @@ -7,7 +7,7 @@ "address_type_p2wpkh": 6, "address_type_p2wsh": 10, "signed_message_header": "Bitcoin Signed Message:\n", - "hash_genesis_block": ["000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f"], + "hash_genesis_block": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", "xpub_magic": "0488b21e", "xprv_magic": "0488ade4", "bip44": 0, @@ -26,10 +26,7 @@ "address_type_p2wpkh": 3, "address_type_p2wsh": 40, "signed_message_header": "Bitcoin Signed Message:\n", - "hash_genesis_block": [ - "000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943", - "0cdf00b25a93ded11d73ebe1728cf7867f18e1f62aca9554b95e0f3026174e33" - ], + "hash_genesis_block": "000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943", "xpub_magic": "043587cf", "xprv_magic": "04358394", "bip44": 1, @@ -45,7 +42,7 @@ "address_type_p2wpkh": null, "address_type_p2wsh": null, "signed_message_header": "Namecoin Signed Message:\n", - "hash_genesis_block": ["000000000062b72c5e2ceb45fbc8587e807c155b0da735e6483dfba2f0a9c770"], + "hash_genesis_block": "000000000062b72c5e2ceb45fbc8587e807c155b0da735e6483dfba2f0a9c770", "xpub_magic": "019da462", "xprv_magic": "019d9cfe", "bip44": 1, @@ -61,7 +58,7 @@ "address_type_p2wpkh": null, "address_type_p2wsh": null, "signed_message_header": "Litecoin Signed Message:\n", - "hash_genesis_block": ["12a765e31ffd4059bada1e25190f6e98c99d9714d334efa41a195a7e7e04bfe2"], + "hash_genesis_block": "12a765e31ffd4059bada1e25190f6e98c99d9714d334efa41a195a7e7e04bfe2", "xpub_magic": "019da462", "xprv_magic": "019d9cfe", "bip44": 2, @@ -77,7 +74,7 @@ "address_type_p2wpkh": null, "address_type_p2wsh": null, "signed_message_header": "Dogecoin Signed Message:\n", - "hash_genesis_block": ["1a91e3dace36e2be3bf030a65679fe821aa1d6ef92e7c9902eb318182c355691"], + "hash_genesis_block": "1a91e3dace36e2be3bf030a65679fe821aa1d6ef92e7c9902eb318182c355691", "xpub_magic": "02facafd", "xprv_magic": "02fac398", "bip44": 3, @@ -93,7 +90,7 @@ "address_type_p2wpkh": null, "address_type_p2wsh": null, "signed_message_header": "DarkCoin Signed Message:\n", - "hash_genesis_block": ["00000ffd590b1485b3caadc19b22e6379c733355108f107a430458cdf3407ab6"], + "hash_genesis_block": "00000ffd590b1485b3caadc19b22e6379c733355108f107a430458cdf3407ab6", "xpub_magic": "02fe52cc", "xprv_magic": "02fe52f8", "bip44": 5, @@ -109,11 +106,27 @@ "address_type_p2wpkh": null, "address_type_p2wsh": null, "signed_message_header": "Zcash Signed Message:\n", - "hash_genesis_block": ["027e3758c3a65b12aa1046462b486d0a63bfa1beae327897f56c5cfb7daaae71"], + "hash_genesis_block": "027e3758c3a65b12aa1046462b486d0a63bfa1beae327897f56c5cfb7daaae71", "xpub_magic": "0488b21e", "xprv_magic": "0488ade4", "bip44": 133, "default_fee_b": { "Normal": 10 } +}, { + "coin_name": "Testnet", + "coin_shortcut": "TAZ", + "address_type": 111, + "maxfee_kb": 10000000, + "address_type_p2sh": 196, + "address_type_p2wpkh": 3, + "address_type_p2wsh": 40, + "signed_message_header": "Bitcoin Signed Message:\n", + "hash_genesis_block": "0cdf00b25a93ded11d73ebe1728cf7867f18e1f62aca9554b95e0f3026174e33", + "xpub_magic": "043587cf", + "xprv_magic": "04358394", + "bip44": 1, + "default_fee_b": { + "Normal": 10 + } }] From 083e90a092aa60d52cff6c1dcb147c6b037e9241 Mon Sep 17 00:00:00 2001 From: slush0 Date: Wed, 5 Oct 2016 15:48:48 +0200 Subject: [PATCH 133/767] Fixing Namecoin and Zcash testnet --- coins.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/coins.json b/coins.json index 4333ee9ed..ac125639a 100644 --- a/coins.json +++ b/coins.json @@ -45,7 +45,7 @@ "hash_genesis_block": "000000000062b72c5e2ceb45fbc8587e807c155b0da735e6483dfba2f0a9c770", "xpub_magic": "019da462", "xprv_magic": "019d9cfe", - "bip44": 1, + "bip44": 7, "default_fee_b": { "Normal": 10 } @@ -114,6 +114,7 @@ "Normal": 10 } }, { + "comment": "Zcash testnet", "coin_name": "Testnet", "coin_shortcut": "TAZ", "address_type": 111, From 1e749523593506f2f268c038225f2c847ad2d0ef Mon Sep 17 00:00:00 2001 From: str4d Date: Wed, 5 Oct 2016 09:16:32 -0500 Subject: [PATCH 134/767] Update Zcash entries to match spec version 2016.0-beta-1.8 (#18) --- coins.json | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/coins.json b/coins.json index ac125639a..8ebc0c120 100644 --- a/coins.json +++ b/coins.json @@ -100,9 +100,9 @@ }, { "coin_name": "Zcash", "coin_shortcut": "ZEC", - "address_type": 65, + "address_type": 7352, "maxfee_kb": 1000000, - "address_type_p2sh": 5, + "address_type_p2sh": 7357, "address_type_p2wpkh": null, "address_type_p2wsh": null, "signed_message_header": "Zcash Signed Message:\n", @@ -114,15 +114,14 @@ "Normal": 10 } }, { - "comment": "Zcash testnet", - "coin_name": "Testnet", + "coin_name": "Zcash Testnet", "coin_shortcut": "TAZ", - "address_type": 111, + "address_type": 7461, "maxfee_kb": 10000000, - "address_type_p2sh": 196, - "address_type_p2wpkh": 3, - "address_type_p2wsh": 40, - "signed_message_header": "Bitcoin Signed Message:\n", + "address_type_p2sh": 7354, + "address_type_p2wpkh": null, + "address_type_p2wsh": null, + "signed_message_header": "Zcash Signed Message:\n", "hash_genesis_block": "0cdf00b25a93ded11d73ebe1728cf7867f18e1f62aca9554b95e0f3026174e33", "xpub_magic": "043587cf", "xprv_magic": "04358394", From 07a71eb9c0043280a3d4deb0ab3f7117182fc66e Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 19 Oct 2016 09:34:00 +0200 Subject: [PATCH 135/767] add fields for Tx.extra_data --- protob/types.proto | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/protob/types.proto b/protob/types.proto index e79350a5f..53a107fdb 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -74,6 +74,7 @@ enum RequestType { TXOUTPUT = 1; TXMETA = 2; TXFINISHED = 3; + TXEXTRADATA = 4; } /** @@ -202,6 +203,8 @@ message TransactionType { optional uint32 lock_time = 4; optional uint32 inputs_cnt = 6; optional uint32 outputs_cnt = 7; + optional bytes extra_data = 8; + optional uint32 extra_data_len = 9; } /** @@ -211,6 +214,7 @@ message TransactionType { message TxRequestDetailsType { optional uint32 request_index = 1; // device expects TxAck message from the computer optional bytes tx_hash = 2; // tx_hash of requested transaction + optional uint32 extra_data_len = 3; // length of requested extra data } /** From 20c1d05f9de778e28726690c4969e6ce92296ce4 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 20 Oct 2016 13:22:16 +0200 Subject: [PATCH 136/767] add extra_data_offset --- protob/types.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/protob/types.proto b/protob/types.proto index 53a107fdb..43b89886c 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -215,6 +215,7 @@ message TxRequestDetailsType { optional uint32 request_index = 1; // device expects TxAck message from the computer optional bytes tx_hash = 2; // tx_hash of requested transaction optional uint32 extra_data_len = 3; // length of requested extra data + optional uint32 extra_data_offset = 4; // offset of requested extra data } /** From f0100b6e96e907ba16a0898767652bf8bb8fc05f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20B=C3=ADlek?= Date: Tue, 25 Oct 2016 18:03:02 +0200 Subject: [PATCH 137/767] Zcash testnet genesis block change --- coins.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coins.json b/coins.json index 8ebc0c120..43b9406e0 100644 --- a/coins.json +++ b/coins.json @@ -106,7 +106,7 @@ "address_type_p2wpkh": null, "address_type_p2wsh": null, "signed_message_header": "Zcash Signed Message:\n", - "hash_genesis_block": "027e3758c3a65b12aa1046462b486d0a63bfa1beae327897f56c5cfb7daaae71", + "hash_genesis_block": "01f4137ae8aced18e017119ec1a5ddd7f29a163e84e5809eb37aa6bd736b86a2", "xpub_magic": "0488b21e", "xprv_magic": "0488ade4", "bip44": 133, From c638245e4d01c7119d0c0ffcb031fec238242840 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20B=C3=ADlek?= Date: Tue, 25 Oct 2016 18:24:05 +0200 Subject: [PATCH 138/767] Confused zcash and test-zcash --- coins.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/coins.json b/coins.json index 43b9406e0..5c8249e2b 100644 --- a/coins.json +++ b/coins.json @@ -106,7 +106,7 @@ "address_type_p2wpkh": null, "address_type_p2wsh": null, "signed_message_header": "Zcash Signed Message:\n", - "hash_genesis_block": "01f4137ae8aced18e017119ec1a5ddd7f29a163e84e5809eb37aa6bd736b86a2", + "hash_genesis_block": "027e3758c3a65b12aa1046462b486d0a63bfa1beae327897f56c5cfb7daaae71", "xpub_magic": "0488b21e", "xprv_magic": "0488ade4", "bip44": 133, @@ -122,7 +122,7 @@ "address_type_p2wpkh": null, "address_type_p2wsh": null, "signed_message_header": "Zcash Signed Message:\n", - "hash_genesis_block": "0cdf00b25a93ded11d73ebe1728cf7867f18e1f62aca9554b95e0f3026174e33", + "hash_genesis_block": "01f4137ae8aced18e017119ec1a5ddd7f29a163e84e5809eb37aa6bd736b86a2", "xpub_magic": "043587cf", "xprv_magic": "04358394", "bip44": 1, From 0b4b667ff1e7cc15e40e983f17eef03ec62921d1 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 31 Oct 2016 16:09:21 +0100 Subject: [PATCH 139/767] add u2f_counter field to LoadDevice, ResetDevice, RecoveryDevice --- protob/messages.proto | 3 +++ 1 file changed, 3 insertions(+) diff --git a/protob/messages.proto b/protob/messages.proto index bcb11fb12..3afdc94f8 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -343,6 +343,7 @@ message LoadDevice { optional string language = 5 [default='english']; // device language optional string label = 6; // device label optional bool skip_checksum = 7; // do not test mnemonic for valid BIP-39 checksum + optional uint32 u2f_counter = 8; // U2F counter } /** @@ -357,6 +358,7 @@ message ResetDevice { optional bool pin_protection = 4; // enable PIN protection optional string language = 5 [default='english']; // device language optional string label = 6; // device label + optional uint32 u2f_counter = 7; // U2F counter } /** @@ -388,6 +390,7 @@ message RecoveryDevice { optional string language = 4 [default='english']; // device language optional string label = 5; // device label optional bool enforce_wordlist = 6; // enforce BIP-39 wordlist during the process + optional uint32 u2f_counter = 7; // U2F counter } /** From 92bcbc74d7704f07240a171e2a0f4fb15188db2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20B=C3=ADlek?= Date: Mon, 31 Oct 2016 17:08:47 +0100 Subject: [PATCH 140/767] Genesis block hashes for zcash + zcash testnet rc4 --- coins.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/coins.json b/coins.json index 5c8249e2b..1a6c20e96 100644 --- a/coins.json +++ b/coins.json @@ -106,7 +106,7 @@ "address_type_p2wpkh": null, "address_type_p2wsh": null, "signed_message_header": "Zcash Signed Message:\n", - "hash_genesis_block": "027e3758c3a65b12aa1046462b486d0a63bfa1beae327897f56c5cfb7daaae71", + "hash_genesis_block": "00040fe8ec8471911baa1db1266ea15dd06b4a8a5c453883c000b031973dce08", "xpub_magic": "0488b21e", "xprv_magic": "0488ade4", "bip44": 133, @@ -122,7 +122,7 @@ "address_type_p2wpkh": null, "address_type_p2wsh": null, "signed_message_header": "Zcash Signed Message:\n", - "hash_genesis_block": "01f4137ae8aced18e017119ec1a5ddd7f29a163e84e5809eb37aa6bd736b86a2", + "hash_genesis_block": "05a60a92d99d85997cce3b87616c089f6124d7342af37106edc76126334a2c38", "xpub_magic": "043587cf", "xprv_magic": "04358394", "bip44": 1, From 85adb1ea7808e3bc1824104aae722339129d8310 Mon Sep 17 00:00:00 2001 From: Karel Bilek Date: Mon, 31 Oct 2016 18:43:06 +0100 Subject: [PATCH 141/767] Adding dust limits --- coins.json | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/coins.json b/coins.json index 1a6c20e96..239a98c0b 100644 --- a/coins.json +++ b/coins.json @@ -16,7 +16,8 @@ "Economy": 20, "Normal": 30, "High": 40 - } + }, + "dust_limit": 546 }, { "coin_name": "Testnet", "coin_shortcut": "TEST", @@ -32,7 +33,8 @@ "bip44": 1, "default_fee_b": { "Normal": 10 - } + }, + "dust_limit": 546 }, { "coin_name": "Namecoin", "coin_shortcut": "NMC", @@ -48,7 +50,8 @@ "bip44": 7, "default_fee_b": { "Normal": 10 - } + }, + "dust_limit": 2940 }, { "coin_name": "Litecoin", "coin_shortcut": "LTC", @@ -64,7 +67,8 @@ "bip44": 2, "default_fee_b": { "Normal": 10 - } + }, + "dust_limit": 1 }, { "coin_name": "Dogecoin", "coin_shortcut": "DOGE", @@ -80,7 +84,8 @@ "bip44": 3, "default_fee_b": { "Normal": 10 - } + }, + "dust_limit": 10000000 }, { "coin_name": "Dash", "coin_shortcut": "DASH", @@ -96,7 +101,8 @@ "bip44": 5, "default_fee_b": { "Normal": 10 - } + }, + "dust_limit": 5460 }, { "coin_name": "Zcash", "coin_shortcut": "ZEC", @@ -112,7 +118,8 @@ "bip44": 133, "default_fee_b": { "Normal": 10 - } + }, + "dust_limit": 546 }, { "coin_name": "Zcash Testnet", "coin_shortcut": "TAZ", @@ -128,5 +135,6 @@ "bip44": 1, "default_fee_b": { "Normal": 10 - } + }, + "dust_limit": 546 }] From 7237cefbb48989d218b7393e2eeb7943cce1cd16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20B=C3=ADlek?= Date: Thu, 10 Nov 2016 18:20:39 +0100 Subject: [PATCH 142/767] Add null to allow electron apps (#20) Electron discussion there https://github.com/electron/electron/issues/7931 It seems `Origin: 'null'` from electron apps is a feature, not a bug --- signer/config.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/signer/config.json b/signer/config.json index ccbc9dcc7..2a6bae3e0 100644 --- a/signer/config.json +++ b/signer/config.json @@ -15,7 +15,8 @@ "https://[\\w\\.-]+\\.bitex\\.la(/.*)?", "https://quorumwallet\\.com(/.*)?", "https://[\\w\\.-]+\\.quorumwallet\\.com(/.*)?", - "chrome-extension://jcjjhjgimijdkoamemaghajlhegmoclj(/.*)?" + "chrome-extension://jcjjhjgimijdkoamemaghajlhegmoclj(/.*)?", + "null" ], "blacklist_urls": [ ], From 8253f862377b7ff6befe2b8606657a04fcdf575d Mon Sep 17 00:00:00 2001 From: Karel Bilek Date: Mon, 14 Nov 2016 19:46:40 +0100 Subject: [PATCH 143/767] Revert "Add null to allow electron apps (#20)" This reverts commit 7237cefbb48989d218b7393e2eeb7943cce1cd16. --- signer/config.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/signer/config.json b/signer/config.json index 2a6bae3e0..ccbc9dcc7 100644 --- a/signer/config.json +++ b/signer/config.json @@ -15,8 +15,7 @@ "https://[\\w\\.-]+\\.bitex\\.la(/.*)?", "https://quorumwallet\\.com(/.*)?", "https://[\\w\\.-]+\\.quorumwallet\\.com(/.*)?", - "chrome-extension://jcjjhjgimijdkoamemaghajlhegmoclj(/.*)?", - "null" + "chrome-extension://jcjjhjgimijdkoamemaghajlhegmoclj(/.*)?" ], "blacklist_urls": [ ], From 61af3d5e931ab41f0b81f462fbdc626d6bbec4f4 Mon Sep 17 00:00:00 2001 From: Jochen Hoenicke Date: Wed, 29 Jun 2016 22:34:55 +0200 Subject: [PATCH 144/767] Matrix Recovery This adds a new type in the message RecoveryDevice, which can be used by the host to signal which recovery procedures it supports. It is a bitfield containing a bit for every supported procedure. --- protob/messages.proto | 5 ++++- protob/types.proto | 26 ++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/protob/messages.proto b/protob/messages.proto index 3afdc94f8..2e107e033 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -390,7 +390,9 @@ message RecoveryDevice { optional string language = 4 [default='english']; // device language optional string label = 5; // device label optional bool enforce_wordlist = 6; // enforce BIP-39 wordlist during the process - optional uint32 u2f_counter = 7; // U2F counter + // 7 reserved for unused recovery method + optional uint32 type = 8; // supported recovery type (see RecoveryType) + optional uint32 u2f_counter = 9; // U2F counter } /** @@ -400,6 +402,7 @@ message RecoveryDevice { * @prev WordAck */ message WordRequest { + optional WordRequestType type = 1; } /** diff --git a/protob/types.proto b/protob/types.proto index 43b89886c..2bb8cf0cf 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -105,6 +105,32 @@ enum PinMatrixRequestType { PinMatrixRequestType_NewSecond = 3; } +/** + * Type of recovery procedure. These should be used as bitmask, e.g., + * `RecoveryDeviceType_ScrambledWords | RecoveryDeviceType_Matrix` + * listing every method supported by the host computer. + * + * Note that ScrambledWords must be supported by every implementation + * for backward compatibility; there is no way to not support it. + * + * @used_in RecoveryDevice + */ +enum RecoveryDeviceType { + // use powers of two when extending this field + RecoveryDeviceType_ScrambledWords = 0; // words in scrambled order + RecoveryDeviceType_Matrix = 1; // matrix recovery type +} + +/** + * Type of Recovery Word request + * @used_in WordRequest + */ +enum WordRequestType { + WordRequestType_Plain = 0; + WordRequestType_Matrix9 = 1; + WordRequestType_Matrix6 = 2; +} + /** * Structure representing BIP32 (hierarchical deterministic) node * Used for imports of private key into the device and exporting public key out of device From b32ea69c6bbfce3d41f506266ef0fc13c651acf0 Mon Sep 17 00:00:00 2001 From: slush0 Date: Sun, 4 Dec 2016 19:23:45 +0100 Subject: [PATCH 145/767] Adde pb2py, generator for simplified python protobuf definitions as used by TREZOR Core and python-trezor. --- tools/pb2py | 186 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 186 insertions(+) create mode 100755 tools/pb2py diff --git a/tools/pb2py b/tools/pb2py new file mode 100755 index 000000000..407f442be --- /dev/null +++ b/tools/pb2py @@ -0,0 +1,186 @@ +#!/usr/bin/env python +# Converts Google's protobuf python definitions of TREZOR wire messages +# to plain-python objects as used in TREZOR Core and python-trezor + +import sys +import os +import argparse + +from google.protobuf.internal.enum_type_wrapper import EnumTypeWrapper + + +def process_type(t, cls, msg_id, indexfile, is_upy): + print(" * type %s" % t) + + imports = ["import protobuf as p", ] + + out = ["", "class %s(p.MessageType):" % t, ] + + if cls.DESCRIPTOR.fields_by_name: + out.append(" FIELDS = {") + elif msg_id is None: + out.append(" pass") + + for v in sorted(cls.DESCRIPTOR.fields_by_name.values(), key=lambda x: x.number): + number = v.number + fieldname = v.name + type = None + repeated = v.label == 3 + required = v.label == 2 + + # print v.has_default_value, v.default_value + + if v.type in (4, 13, 14): + # TYPE_UINT64 = 4 + # TYPE_UINT32 = 13 + # TYPE_ENUM = 14 + type = 'p.UVarintType' + + elif v.type == 9: + # TYPE_STRING = 9 + type = 'p.UnicodeType' + + elif v.type == 8: + # TYPE_BOOL = 8 + type = 'p.BoolType' + + elif v.type == 12: + # TYPE_BYTES = 12 + type = 'p.BytesType' + + elif v.type == 11: + # TYPE_MESSAGE = 1 + type = v.message_type.name + imports.append("from .%s import %s" % + (v.message_type.name, v.message_type.name)) + + else: + raise Exception("Unknown field type %s for field %s" % + (v.type, fieldname)) + + if required: + comment = ' # required' + elif v.has_default_value: + comment = ' # default=%s' % repr(v.default_value) + else: + comment = '' + + if repeated: + flags = 'p.FLAG_REPEATED' + else: + flags = '0' + + out.append(" %d: ('%s', %s, %s),%s" % + (number, fieldname, type, flags, comment)) + + # print fieldname, number, type, repeated, comment + # print v.__dict__ + # print v.CPPTYPE_STRING + # print v.LABEL_REPEATED + # print v.enum_type + # v.has_default_value, v.default_value + # v.label == 3 # repeated + # print v.number + + if cls.DESCRIPTOR.fields_by_name: + out.append(" }") + + if msg_id is not None: + out.append(" MESSAGE_WIRE_TYPE = %d" % msg_id) + if indexfile is not None: + if is_upy: + indexfile.write("%s = const(%d)\n" % (t, msg_id)) + else: + indexfile.write("%s = %d\n" % (t, msg_id)) + + return imports + out + + +def process_enum(t, cls, is_upy): + out = [] + + print(" * enum %s" % t) + + for k, v in cls.items(): + # Remove type name from the beginning of the constant + # For example "PinMatrixRequestType_Current" -> "Current" + if k.startswith("%s_" % t): + k = k.replace("%s_" % t, '') + + # If type ends with *Type, but constant use type name without *Type, remove it too :) + # For example "ButtonRequestType & ButtonRequest_Other" => "Other" + if t.endswith("Type") and k.startswith("%s_" % t.replace("Type", '')): + k = k.replace("%s_" % t.replace("Type", ''), '') + + if is_upy: + out.append("%s = const(%s)" % (k, v)) + else: + out.append("%s = %s" % (k, v)) + + return out + + +def find_msg_type(msg_types, t): + for k, v in msg_types: + msg_name = k.replace('MessageType_', '') + if msg_name == t: + return v + + +def process_module(mod, genpath, indexfile, is_upy): + + print("Processing module %s" % mod.__name__) + types = dict([(name, cls) + for name, cls in mod.__dict__.items() if isinstance(cls, type)]) + + msg_types = __import__('pb2', globals(), locals(), [ + 'messages_pb2', ]).messages_pb2.MessageType.items() + + for t, cls in types.items(): + # Find message type for given class + msg_id = find_msg_type(msg_types, t) + + out = process_type(t, cls, msg_id, indexfile, is_upy) + + write_to_file(genpath, t, out) + + enums = dict([(name, cls) for name, cls in mod.__dict__.items() + if isinstance(cls, EnumTypeWrapper)]) + + for t, cls in enums.items(): + out = process_enum(t, cls, is_upy) + write_to_file(genpath, t, out) + + +def write_to_file(genpath, t, out): + # Write generated sourcecode to given file + f = open(os.path.join(genpath, "%s.py" % t), 'w') + out = ["# Automatically generated by pb2py"] + out + + data = "\n".join(out) + "\n" + + f.write(data) + f.close() + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument('modulename', type=str, help="Name of module to generate") + parser.add_argument('genpath', type=str, help="Directory for generated source code") + parser.add_argument('-i', '--indexfile', type=str, help="[optional] Generate index file of wire types") + parser.add_argument('-p', '--protopath', type=str, help="[optional] Path to search for pregenerated Google's python sources") + parser.add_argument('-m', '--micropython', action='store_true', help="Use micropython-favoured source code") + args = parser.parse_args() + + if args.indexfile: + indexfile = open(args.indexfile, 'a') + else: + indexfile = None + + if args.protopath: + sys.path.append(args.protopath) + + # Dynamically load module from argv[1] + tmp = __import__('pb2', globals(), locals(), ['%s_pb2' % args.modulename]) + mod = getattr(tmp, "%s_pb2" % args.modulename) + + process_module(mod, args.genpath, indexfile, args.micropython) From 72ff43714fc62fa504237a9605fa84cf1eaa4e12 Mon Sep 17 00:00:00 2001 From: Saleem Rashid Date: Wed, 21 Dec 2016 20:17:12 +0000 Subject: [PATCH 146/767] Configuration: Add Java package name (#22) --- protob/config.proto | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/protob/config.proto b/protob/config.proto index 51b03a7de..6779c9537 100644 --- a/protob/config.proto +++ b/protob/config.proto @@ -5,6 +5,10 @@ * @version 1.0 */ +// Sugar for easier handling in Java +option java_package = "com.satoshilabs.trezor.protobuf"; +option java_outer_classname = "TrezorConfig"; + import "google/protobuf/descriptor.proto"; /** From 2288fbd00570b3aa65767fe26247868877196a1b Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Sun, 25 Dec 2016 19:39:54 +0100 Subject: [PATCH 147/767] add trezorv1 public keys --- keys/public_trezor1.h | 6 ++++++ keys/public_trezor1.pem | 24 ++++++++++++++++++++++++ keys/sample.h | 2 ++ keys/sample.pem | 4 ++++ 4 files changed, 36 insertions(+) create mode 100644 keys/public_trezor1.h create mode 100644 keys/public_trezor1.pem create mode 100644 keys/sample.h create mode 100644 keys/sample.pem diff --git a/keys/public_trezor1.h b/keys/public_trezor1.h new file mode 100644 index 000000000..ebd7d5b3e --- /dev/null +++ b/keys/public_trezor1.h @@ -0,0 +1,6 @@ +// TREZORv1 production public keys +"\x04\xd5\x71\xb7\xf1\x48\xc5\xe4\x23\x2c\x38\x14\xf7\x77\xd8\xfa\xea\xf1\xa8\x42\x16\xc7\x8d\x56\x9b\x71\x04\x1f\xfc\x76\x8a\x5b\x2d\x81\x0f\xc3\xbb\x13\x4d\xd0\x26\xb5\x7e\x65\x00\x52\x75\xae\xde\xf4\x3e\x15\x5f\x48\xfc\x11\xa3\x2e\xc7\x90\xa9\x33\x12\xbd\x58", +"\x04\x63\x27\x9c\x0c\x08\x66\xe5\x0c\x05\xc7\x99\xd3\x2b\xd6\xba\xb0\x18\x8b\x6d\xe0\x65\x36\xd1\x10\x9d\x2e\xd9\xce\x76\xcb\x33\x5c\x49\x0e\x55\xae\xe1\x0c\xc9\x01\x21\x51\x32\xe8\x53\x09\x7d\x54\x32\xed\xa0\x6b\x79\x20\x73\xbd\x77\x40\xc9\x4c\xe4\x51\x6c\xb1", +"\x04\x43\xae\xdb\xb6\xf7\xe7\x1c\x56\x3f\x8e\xd2\xef\x64\xec\x99\x81\x48\x25\x19\xe7\xef\x4f\x4a\xa9\x8b\x27\x85\x4e\x8c\x49\x12\x6d\x49\x56\xd3\x00\xab\x45\xfd\xc3\x4c\xd2\x6b\xc8\x71\x0d\xe0\xa3\x1d\xbd\xf6\xde\x74\x35\xfd\x0b\x49\x2b\xe7\x0a\xc7\x5f\xde\x58", +"\x04\x87\x7c\x39\xfd\x7c\x62\x23\x7e\x03\x82\x35\xe9\xc0\x75\xda\xb2\x61\x63\x0f\x78\xee\xb8\xed\xb9\x24\x87\x15\x9f\xff\xed\xfd\xf6\x04\x6c\x6f\x8b\x88\x1f\xa4\x07\xc4\xa4\xce\x6c\x28\xde\x0b\x19\xc1\xf4\xe2\x9f\x1f\xcb\xc5\xa5\x8f\xfd\x14\x32\xa3\xe0\x93\x8a", +"\x04\x73\x84\xc5\x1a\xe8\x1a\xdd\x0a\x52\x3a\xdb\xb1\x86\xc9\x1b\x90\x6f\xfb\x64\xc2\xc7\x65\x80\x2b\xf2\x6d\xbd\x13\xbd\xf1\x2c\x31\x9e\x80\xc2\x21\x3a\x13\x6c\x8e\xe0\x3d\x78\x74\xfd\x22\xb7\x0d\x68\xe7\xde\xe4\x69\xde\xcf\xbb\xb5\x10\xee\x9a\x46\x0c\xda\x45", diff --git a/keys/public_trezor1.pem b/keys/public_trezor1.pem new file mode 100644 index 000000000..5ca09ff4d --- /dev/null +++ b/keys/public_trezor1.pem @@ -0,0 +1,24 @@ +-----BEGIN PUBLIC KEY----- +MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAE1XG38UjF5CMsOBT3d9j66vGoQhbHjVab +cQQf/HaKWy2BD8O7E03QJrV+ZQBSda7e9D4VX0j8EaMux5CpMxK9WA== +-----END PUBLIC KEY----- + +-----BEGIN PUBLIC KEY----- +MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEYyecDAhm5QwFx5nTK9a6sBiLbeBlNtEQ +nS7ZznbLM1xJDlWu4QzJASFRMuhTCX1UMu2ga3kgc713QMlM5FFssQ== +-----END PUBLIC KEY----- + +-----BEGIN PUBLIC KEY----- +MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEQ67btvfnHFY/jtLvZOyZgUglGefvT0qp +iyeFToxJEm1JVtMAq0X9w0zSa8hxDeCjHb323nQ1/QtJK+cKx1/eWA== +-----END PUBLIC KEY----- + +-----BEGIN PUBLIC KEY----- +MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEh3w5/XxiI34DgjXpwHXasmFjD3juuO25 +JIcVn//t/fYEbG+LiB+kB8Skzmwo3gsZwfTinx/LxaWP/RQyo+CTig== +-----END PUBLIC KEY----- + +-----BEGIN PUBLIC KEY----- +MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEc4TFGuga3QpSOtuxhskbkG/7ZMLHZYAr +8m29E73xLDGegMIhOhNsjuA9eHT9IrcNaOfe5Gnez7u1EO6aRgzaRQ== +-----END PUBLIC KEY----- diff --git a/keys/sample.h b/keys/sample.h new file mode 100644 index 000000000..1518d4f3b --- /dev/null +++ b/keys/sample.h @@ -0,0 +1,2 @@ +// sample public key "correct horse battery staple" +"\x04\x78\xd4\x30\x27\x4f\x8c\x5e\xc1\x32\x13\x38\x15\x1e\x9f\x27\xf4\xc6\x76\xa0\x08\xbd\xf8\x63\x8d\x07\xc0\xb6\xbe\x9a\xb3\x5c\x71\xa1\x51\x80\x63\x24\x3a\xcd\x4d\xfe\x96\xb6\x6e\x3f\x2e\xc8\x01\x3c\x8e\x07\x2c\xd0\x9b\x38\x34\xa1\x9f\x81\xf6\x59\xcc\x34\x55" diff --git a/keys/sample.pem b/keys/sample.pem new file mode 100644 index 000000000..08b0a588c --- /dev/null +++ b/keys/sample.pem @@ -0,0 +1,4 @@ +-----BEGIN PUBLIC KEY----- +MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAENEoHRLyHw1AM5jl0pbUNgXHFldzn1jWT +/tGrlePY/vfKVVc2QM2pz0fbYUn4WEZC8DDfQ3XEhvKnsyOotsY7QQ== +-----END PUBLIC KEY----- From f94f7cb02b62218f289c7e491b0439de18514f5b Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 10 Jan 2017 15:11:32 +0100 Subject: [PATCH 148/767] -> trezor.io --- udev/51-trezor.rules | 4 ++-- udev/dist/release.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/udev/51-trezor.rules b/udev/51-trezor.rules index 338ed4446..c920a26e8 100644 --- a/udev/51-trezor.rules +++ b/udev/51-trezor.rules @@ -1,5 +1,5 @@ -# TREZOR: The Hardware Bitcoin Wallet -# http://bitcointrezor.com/ +# TREZOR: The Original Hardware Wallet +# https://trezor.io/ # Put this file into /usr/lib/udev/rules.d # Raspbian does not understand the new TAG+="uaccess", TAG+="udev-acl" syntax, use MODE+GROUP for now ... :-( diff --git a/udev/dist/release.sh b/udev/dist/release.sh index 54fd3730d..81259ff57 100755 --- a/udev/dist/release.sh +++ b/udev/dist/release.sh @@ -23,7 +23,7 @@ for TYPE in "deb" "rpm"; do --vendor "SatoshiLabs" \ --description "Udev rules for TREZOR" \ --maintainer "SatoshiLabs " \ - --url "http://bitcointrezor.com/" \ + --url "https://trezor.io/" \ --category "Productivity/Security" \ $NAME-$VERSION.tar.bz2 done From 9d2ab7318db08a47b35588b0593fb66129214f8d Mon Sep 17 00:00:00 2001 From: Jochen Hoenicke Date: Sun, 22 Jan 2017 12:16:49 +0100 Subject: [PATCH 149/767] Ethereum: chain id for EIP-155 replay protection (#23) Added a field chain_id. To get a backwards compatible signature this field should not be set. Otherwise it should be set to the EIP-155 chain id. Currently only chain id between 1 and 109 are supported. See trezor/trezor-mcu#142 --- protob/messages.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/protob/messages.proto b/protob/messages.proto index 2e107e033..981a5a11f 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -622,6 +622,7 @@ message EthereumSignTx { optional bytes value = 6; // <=256 bit unsigned big endian (in wei) optional bytes data_initial_chunk = 7; // The initial data chunk (<= 1024 bytes) optional uint32 data_length = 8; // Length of transaction payload + optional uint32 chain_id = 9; // Chain Id for EIP 155 } /** From f50db0e6640b4a0ee1734b27e12304c318578c33 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Sat, 18 Feb 2017 18:16:47 +0100 Subject: [PATCH 150/767] update config.json: remove quorumwallet it seems that quorumwallet.com is dead --- signer/config.json | 2 -- 1 file changed, 2 deletions(-) diff --git a/signer/config.json b/signer/config.json index ccbc9dcc7..a97ffddb0 100644 --- a/signer/config.json +++ b/signer/config.json @@ -13,8 +13,6 @@ "https://[\\w\\.-]+\\.coinprism\\.com(/.*)?", "https://bitex\\.la(/.*)?", "https://[\\w\\.-]+\\.bitex\\.la(/.*)?", - "https://quorumwallet\\.com(/.*)?", - "https://[\\w\\.-]+\\.quorumwallet\\.com(/.*)?", "chrome-extension://jcjjhjgimijdkoamemaghajlhegmoclj(/.*)?" ], "blacklist_urls": [ From 80c7b666a204c74be1d1ed6b019d1fad2d2fe909 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20B=C3=ADlek?= Date: Mon, 27 Feb 2017 20:59:34 +0100 Subject: [PATCH 151/767] Raising the maxfee (#24) Right now, the recommended fee by 21.co is 200 satoshis per b. (see https://bitcoinfees.21.co/api/v1/fees/recommended ) We use 21.co on mytrezor. 200 satoshis per byte == 200.000 satoshis per kB. I am raising it to 300.000 so we have some breathing room. --- coins.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coins.json b/coins.json index 239a98c0b..846153655 100644 --- a/coins.json +++ b/coins.json @@ -2,7 +2,7 @@ "coin_name": "Bitcoin", "coin_shortcut": "BTC", "address_type": 0, - "maxfee_kb": 100000, + "maxfee_kb": 300000, "address_type_p2sh": 5, "address_type_p2wpkh": 6, "address_type_p2wsh": 10, From 6a1adef5f9334007549c1ce25eeb2a1284e4886f Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 6 Apr 2017 14:48:13 +0200 Subject: [PATCH 152/767] whitespace cleanup --- protob/messages.proto | 12 ++++++------ protob/types.proto | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/protob/messages.proto b/protob/messages.proto index 981a5a11f..a01d85360 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -528,7 +528,7 @@ message CipheredKeyValue { ////////////////////////////////// /** - * Request: Estimated size of the transaction + * Request: Estimated size of the transaction * This behaves exactly like SignTx, which means that it can ask using TxRequest * This call is non-blocking (except possible PassphraseRequest to unlock the seed) * @next TxSize @@ -694,7 +694,7 @@ message GetECDHSessionKey { * @prev GetECDHSessionKey */ message ECDHSessionKey { - optional bytes session_key = 1; // ECDH session key + optional bytes session_key = 1; // ECDH session key } /////////////////// @@ -799,8 +799,8 @@ message DebugLinkMemory { } /** - * Request: Write memory to device. WARNING: Writing to the wrong - * location can irreparably break the device. + * Request: Write memory to device. + * WARNING: Writing to the wrong location can irreparably break the device. */ message DebugLinkMemoryWrite { optional uint32 address = 1; @@ -809,8 +809,8 @@ message DebugLinkMemoryWrite { } /** - * Request: Erase block of flash on device. WARNING: Writing to the wrong - * location can irreparably break the device. + * Request: Erase block of flash on device + * WARNING: Writing to the wrong location can irreparably break the device. */ message DebugLinkFlashErase { optional uint32 sector = 1; diff --git a/protob/types.proto b/protob/types.proto index 2bb8cf0cf..fccedb205 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -191,7 +191,7 @@ message TxInputType { optional uint32 sequence = 5 [default=0xffffffff]; // sequence optional InputScriptType script_type = 6 [default=SPENDADDRESS]; // defines template of input script optional MultisigRedeemScriptType multisig = 7; // Filled if input is going to spend multisig tx - optional uint64 amount = 8; // amount of previous transaction output (for segwit only) + optional uint64 amount = 8; // amount of previous transaction output (for segwit only) } /** From 072770f51a6df5a4f9f3de1a5e0697a4857fb913 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 6 Apr 2017 14:50:28 +0200 Subject: [PATCH 153/767] add FirmwareRequest message --- protob/messages.proto | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/protob/messages.proto b/protob/messages.proto index a01d85360..3a5ea5e7c 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -23,6 +23,7 @@ enum MessageType { MessageType_WipeDevice = 5 [(wire_in) = true]; MessageType_FirmwareErase = 6 [(wire_in) = true]; MessageType_FirmwareUpload = 7 [(wire_in) = true]; + MessageType_FirmwareRequest = 8 [(wire_out) = true]; MessageType_GetEntropy = 9 [(wire_in) = true]; MessageType_Entropy = 10 [(wire_out) = true]; MessageType_GetPublicKey = 11 [(wire_in) = true]; @@ -714,13 +715,23 @@ message SetU2FCounter { ///////////////////////// /** - * Request: Ask device to erase its firmware + * Request: Ask device to erase its firmware (so it can be replaced via FirmwareUpload) * @next Success + * @next FirmwareRequest * @next Failure */ message FirmwareErase { } +/** + * Response: Ask for firmware chunk + * @next FirmwareUpload + */ +message FirmwareRequest { + optional uint32 offset = 1; // offset of requested firmware chunk + optional uint32 length = 2; // length of requested firmware chunk +} + /** * Request: Send firmware in binary form to the device * @next Success @@ -728,6 +739,7 @@ message FirmwareErase { */ message FirmwareUpload { required bytes payload = 1; // firmware to be loaded into device + optional bytes hash = 2; // hash of the payload } ///////////////////////////////////////////////////////////// From a08782bd8c253b176a221ba68d2cfcc486601362 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 13 Apr 2017 21:58:29 +0200 Subject: [PATCH 154/767] add gitter badge --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 5133c1c09..c324b05e8 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ -#trezor-common +# trezor-common + +[![gitter](https://badges.gitter.im/trezor/community.svg)](https://gitter.im/trezor/community) Common files shared among TREZOR repositories. From dd1f7a2b0b44793734e286239f64ddb3d816058d Mon Sep 17 00:00:00 2001 From: Peter Banik Date: Fri, 21 Apr 2017 12:47:23 +0200 Subject: [PATCH 155/767] Added xpub_magic and xprv_magic to CoinType structure and coin_name to GetPublicKey message structure (#26) --- protob/messages.proto | 1 + protob/types.proto | 2 ++ 2 files changed, 3 insertions(+) diff --git a/protob/messages.proto b/protob/messages.proto index 3a5ea5e7c..6d9288dc4 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -271,6 +271,7 @@ message GetPublicKey { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node optional string ecdsa_curve_name = 2; // ECDSA curve name to use optional bool show_display = 3; // optionally show on display before sending the result + optional string coin_name = 4 [default='Bitcoin']; } /** diff --git a/protob/types.proto b/protob/types.proto index fccedb205..34a9ff436 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -166,6 +166,8 @@ message CoinType { optional uint32 address_type_p2wpkh = 6 [default=6]; optional uint32 address_type_p2wsh = 7 [default=10]; optional string signed_message_header = 8; + optional uint32 xpub_magic = 9 [default=0x0488b21e]; + optional uint32 xprv_magic = 10 [default=0x0488ade4]; } /** From 29ecc3e24b40a3adb97e6212675a5c2e78adb29d Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 24 Apr 2017 17:52:35 +0200 Subject: [PATCH 156/767] added dash.run to whitelist --- signer/config.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/signer/config.json b/signer/config.json index a97ffddb0..68ad16072 100644 --- a/signer/config.json +++ b/signer/config.json @@ -13,6 +13,8 @@ "https://[\\w\\.-]+\\.coinprism\\.com(/.*)?", "https://bitex\\.la(/.*)?", "https://[\\w\\.-]+\\.bitex\\.la(/.*)?", + "https://dash\\.run(/.*)?", + "https://[\\w\\.-]+\\.dash\\.run(/.*)?", "chrome-extension://jcjjhjgimijdkoamemaghajlhegmoclj(/.*)?" ], "blacklist_urls": [ From 78da723c063ae0aa76e06a517fe48d0013928cc4 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 24 Apr 2017 20:32:07 +0200 Subject: [PATCH 157/767] add EthereumSignTx.prefix --- protob/messages.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/protob/messages.proto b/protob/messages.proto index 6d9288dc4..7e5d39b98 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -625,6 +625,7 @@ message EthereumSignTx { optional bytes data_initial_chunk = 7; // The initial data chunk (<= 1024 bytes) optional uint32 data_length = 8; // Length of transaction payload optional uint32 chain_id = 9; // Chain Id for EIP 155 + optional bytes prefix = 10; // Prefix to be serialized as first item of RLP list } /** From b9198eb2b65508eebf6b53a36d1ed33da43fe230 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 26 Apr 2017 15:30:38 +0200 Subject: [PATCH 158/767] coins.json: add segwit bool --- coins.json | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/coins.json b/coins.json index 846153655..170d23c5c 100644 --- a/coins.json +++ b/coins.json @@ -11,13 +11,14 @@ "xpub_magic": "0488b21e", "xprv_magic": "0488ade4", "bip44": 0, + "segwit": false, "default_fee_b": { "Low": 10, "Economy": 20, "Normal": 30, "High": 40 }, - "dust_limit": 546 + "dust_limit": 546 }, { "coin_name": "Testnet", "coin_shortcut": "TEST", @@ -31,10 +32,11 @@ "xpub_magic": "043587cf", "xprv_magic": "04358394", "bip44": 1, + "segwit": true, "default_fee_b": { "Normal": 10 }, - "dust_limit": 546 + "dust_limit": 546 }, { "coin_name": "Namecoin", "coin_shortcut": "NMC", @@ -48,10 +50,11 @@ "xpub_magic": "019da462", "xprv_magic": "019d9cfe", "bip44": 7, + "segwit": false, "default_fee_b": { "Normal": 10 }, - "dust_limit": 2940 + "dust_limit": 2940 }, { "coin_name": "Litecoin", "coin_shortcut": "LTC", @@ -65,10 +68,11 @@ "xpub_magic": "019da462", "xprv_magic": "019d9cfe", "bip44": 2, + "segwit": true, "default_fee_b": { "Normal": 10 }, - "dust_limit": 1 + "dust_limit": 1 }, { "coin_name": "Dogecoin", "coin_shortcut": "DOGE", @@ -82,10 +86,11 @@ "xpub_magic": "02facafd", "xprv_magic": "02fac398", "bip44": 3, + "segwit": false, "default_fee_b": { "Normal": 10 }, - "dust_limit": 10000000 + "dust_limit": 10000000 }, { "coin_name": "Dash", "coin_shortcut": "DASH", @@ -99,10 +104,11 @@ "xpub_magic": "02fe52cc", "xprv_magic": "02fe52f8", "bip44": 5, + "segwit": false, "default_fee_b": { "Normal": 10 }, - "dust_limit": 5460 + "dust_limit": 5460 }, { "coin_name": "Zcash", "coin_shortcut": "ZEC", @@ -116,10 +122,11 @@ "xpub_magic": "0488b21e", "xprv_magic": "0488ade4", "bip44": 133, + "segwit": false, "default_fee_b": { "Normal": 10 }, - "dust_limit": 546 + "dust_limit": 546 }, { "coin_name": "Zcash Testnet", "coin_shortcut": "TAZ", @@ -133,8 +140,9 @@ "xpub_magic": "043587cf", "xprv_magic": "04358394", "bip44": 1, + "segwit": false, "default_fee_b": { "Normal": 10 }, - "dust_limit": 546 + "dust_limit": 546 }] From 2148e5ff8d76444f82f8e4c833157df7de8eaba5 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 26 Apr 2017 15:32:01 +0200 Subject: [PATCH 159/767] proto: add cointype.segwit to types --- protob/types.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/protob/types.proto b/protob/types.proto index 34a9ff436..f69d7dd69 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -168,6 +168,7 @@ message CoinType { optional string signed_message_header = 8; optional uint32 xpub_magic = 9 [default=0x0488b21e]; optional uint32 xprv_magic = 10 [default=0x0488ade4]; + optional bool segwit = 11; } /** From fe6e62c11f7dca8cb601e53c5865f15f770fd079 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Sun, 30 Apr 2017 03:24:54 +0200 Subject: [PATCH 160/767] Revert "add EthereumSignTx.prefix" This reverts commit 78da723c063ae0aa76e06a517fe48d0013928cc4. --- protob/messages.proto | 1 - 1 file changed, 1 deletion(-) diff --git a/protob/messages.proto b/protob/messages.proto index 7e5d39b98..6d9288dc4 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -625,7 +625,6 @@ message EthereumSignTx { optional bytes data_initial_chunk = 7; // The initial data chunk (<= 1024 bytes) optional uint32 data_length = 8; // Length of transaction payload optional uint32 chain_id = 9; // Chain Id for EIP 155 - optional bytes prefix = 10; // Prefix to be serialized as first item of RLP list } /** From a8a40b32d7a2486c5f78860a65da2d370f3d3168 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20B=C3=ADlek?= Date: Wed, 3 May 2017 21:04:38 +0200 Subject: [PATCH 161/767] Higher fees for litecoin Litecoin has 2 orders higher minimal fees and dust limit than bitcoin --- coins.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/coins.json b/coins.json index 170d23c5c..95fe2b5e3 100644 --- a/coins.json +++ b/coins.json @@ -70,9 +70,9 @@ "bip44": 2, "segwit": true, "default_fee_b": { - "Normal": 10 + "Normal": 1000 }, - "dust_limit": 1 + "dust_limit": 54600 }, { "coin_name": "Dogecoin", "coin_shortcut": "DOGE", From 805ef189f43ea0cc14dcbaf227e53b3e8dcf7cc5 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 12 May 2017 22:43:18 +0200 Subject: [PATCH 162/767] remove address_type_p2wpkh and address_type_p2wsh from coins.json, update litecoin address_p2sh to new value --- coins.json | 32 ++++++++------------------------ 1 file changed, 8 insertions(+), 24 deletions(-) diff --git a/coins.json b/coins.json index 95fe2b5e3..893783978 100644 --- a/coins.json +++ b/coins.json @@ -2,10 +2,8 @@ "coin_name": "Bitcoin", "coin_shortcut": "BTC", "address_type": 0, - "maxfee_kb": 300000, "address_type_p2sh": 5, - "address_type_p2wpkh": 6, - "address_type_p2wsh": 10, + "maxfee_kb": 300000, "signed_message_header": "Bitcoin Signed Message:\n", "hash_genesis_block": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", "xpub_magic": "0488b21e", @@ -23,10 +21,8 @@ "coin_name": "Testnet", "coin_shortcut": "TEST", "address_type": 111, - "maxfee_kb": 10000000, "address_type_p2sh": 196, - "address_type_p2wpkh": 3, - "address_type_p2wsh": 40, + "maxfee_kb": 10000000, "signed_message_header": "Bitcoin Signed Message:\n", "hash_genesis_block": "000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943", "xpub_magic": "043587cf", @@ -41,10 +37,8 @@ "coin_name": "Namecoin", "coin_shortcut": "NMC", "address_type": 52, - "maxfee_kb": 10000000, "address_type_p2sh": 5, - "address_type_p2wpkh": null, - "address_type_p2wsh": null, + "maxfee_kb": 10000000, "signed_message_header": "Namecoin Signed Message:\n", "hash_genesis_block": "000000000062b72c5e2ceb45fbc8587e807c155b0da735e6483dfba2f0a9c770", "xpub_magic": "019da462", @@ -59,10 +53,8 @@ "coin_name": "Litecoin", "coin_shortcut": "LTC", "address_type": 48, + "address_type_p2sh": 50, "maxfee_kb": 1000000, - "address_type_p2sh": 5, - "address_type_p2wpkh": null, - "address_type_p2wsh": null, "signed_message_header": "Litecoin Signed Message:\n", "hash_genesis_block": "12a765e31ffd4059bada1e25190f6e98c99d9714d334efa41a195a7e7e04bfe2", "xpub_magic": "019da462", @@ -77,10 +69,8 @@ "coin_name": "Dogecoin", "coin_shortcut": "DOGE", "address_type": 30, - "maxfee_kb": 1000000000, "address_type_p2sh": 22, - "address_type_p2wpkh": null, - "address_type_p2wsh": null, + "maxfee_kb": 1000000000, "signed_message_header": "Dogecoin Signed Message:\n", "hash_genesis_block": "1a91e3dace36e2be3bf030a65679fe821aa1d6ef92e7c9902eb318182c355691", "xpub_magic": "02facafd", @@ -95,10 +85,8 @@ "coin_name": "Dash", "coin_shortcut": "DASH", "address_type": 76, - "maxfee_kb": 100000, "address_type_p2sh": 16, - "address_type_p2wpkh": null, - "address_type_p2wsh": null, + "maxfee_kb": 100000, "signed_message_header": "DarkCoin Signed Message:\n", "hash_genesis_block": "00000ffd590b1485b3caadc19b22e6379c733355108f107a430458cdf3407ab6", "xpub_magic": "02fe52cc", @@ -113,10 +101,8 @@ "coin_name": "Zcash", "coin_shortcut": "ZEC", "address_type": 7352, - "maxfee_kb": 1000000, "address_type_p2sh": 7357, - "address_type_p2wpkh": null, - "address_type_p2wsh": null, + "maxfee_kb": 1000000, "signed_message_header": "Zcash Signed Message:\n", "hash_genesis_block": "00040fe8ec8471911baa1db1266ea15dd06b4a8a5c453883c000b031973dce08", "xpub_magic": "0488b21e", @@ -131,10 +117,8 @@ "coin_name": "Zcash Testnet", "coin_shortcut": "TAZ", "address_type": 7461, - "maxfee_kb": 10000000, "address_type_p2sh": 7354, - "address_type_p2wpkh": null, - "address_type_p2wsh": null, + "maxfee_kb": 10000000, "signed_message_header": "Zcash Signed Message:\n", "hash_genesis_block": "05a60a92d99d85997cce3b87616c089f6124d7342af37106edc76126334a2c38", "xpub_magic": "043587cf", From 3e703b2d6d380bd9b8ca8c383afb869007a4ceb4 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 12 May 2017 22:43:50 +0200 Subject: [PATCH 163/767] add keys in txt format --- keys/public_trezor1.txt | 5 +++++ keys/sample.txt | 1 + 2 files changed, 6 insertions(+) create mode 100644 keys/public_trezor1.txt create mode 100644 keys/sample.txt diff --git a/keys/public_trezor1.txt b/keys/public_trezor1.txt new file mode 100644 index 000000000..fb63d9149 --- /dev/null +++ b/keys/public_trezor1.txt @@ -0,0 +1,5 @@ +04d571b7f148c5e4232c3814f777d8faeaf1a84216c78d569b71041ffc768a5b2d810fc3bb134dd026b57e65005275aedef43e155f48fc11a32ec790a93312bd58 +0463279c0c0866e50c05c799d32bd6bab0188b6de06536d1109d2ed9ce76cb335c490e55aee10cc901215132e853097d5432eda06b792073bd7740c94ce4516cb1 +0443aedbb6f7e71c563f8ed2ef64ec9981482519e7ef4f4aa98b27854e8c49126d4956d300ab45fdc34cd26bc8710de0a31dbdf6de7435fd0b492be70ac75fde58 +04877c39fd7c62237e038235e9c075dab261630f78eeb8edb92487159fffedfdf6046c6f8b881fa407c4a4ce6c28de0b19c1f4e29f1fcbc5a58ffd1432a3e0938a +047384c51ae81add0a523adbb186c91b906ffb64c2c765802bf26dbd13bdf12c319e80c2213a136c8ee03d7874fd22b70d68e7dee469decfbbb510ee9a460cda45 diff --git a/keys/sample.txt b/keys/sample.txt new file mode 100644 index 000000000..53fd380d2 --- /dev/null +++ b/keys/sample.txt @@ -0,0 +1 @@ +0478d430274f8c5ec1321338151e9f27f4c676a008bdf8638d07c0b6be9ab35c71a1518063243acd4dfe96b66e3f2ec8013c8e072cd09b3834a19f81f659cc3455 From 564801fddc908c30e0ef8410465a193ae35e2992 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 12 May 2017 22:46:54 +0200 Subject: [PATCH 164/767] remove CoinType.address_type_p2wpkh and CoinType.address_type_p2wsh --- protob/types.proto | 2 -- 1 file changed, 2 deletions(-) diff --git a/protob/types.proto b/protob/types.proto index f69d7dd69..18cf33491 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -163,8 +163,6 @@ message CoinType { optional uint32 address_type = 3 [default=0]; optional uint64 maxfee_kb = 4; optional uint32 address_type_p2sh = 5 [default=5]; - optional uint32 address_type_p2wpkh = 6 [default=6]; - optional uint32 address_type_p2wsh = 7 [default=10]; optional string signed_message_header = 8; optional uint32 xpub_magic = 9 [default=0x0488b21e]; optional uint32 xprv_magic = 10 [default=0x0488ade4]; From 54000d8438bedc9b762a58846a21535444f6db9d Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Sat, 13 May 2017 01:28:16 +0200 Subject: [PATCH 165/767] bump bitcoin maxfee --- coins.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coins.json b/coins.json index 893783978..5a78dd17d 100644 --- a/coins.json +++ b/coins.json @@ -3,7 +3,7 @@ "coin_shortcut": "BTC", "address_type": 0, "address_type_p2sh": 5, - "maxfee_kb": 300000, + "maxfee_kb": 500000, "signed_message_header": "Bitcoin Signed Message:\n", "hash_genesis_block": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", "xpub_magic": "0488b21e", From 81deb790d75dd570e2ffdbfb2888aa5e84fe7053 Mon Sep 17 00:00:00 2001 From: Karel Bilek Date: Thu, 18 May 2017 16:02:07 +0200 Subject: [PATCH 166/767] Higher default BTC fees --- coins.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/coins.json b/coins.json index 5a78dd17d..5cfa35f5f 100644 --- a/coins.json +++ b/coins.json @@ -12,9 +12,9 @@ "segwit": false, "default_fee_b": { "Low": 10, - "Economy": 20, - "Normal": 30, - "High": 40 + "Economy": 70, + "Normal": 140, + "High": 200 }, "dust_limit": 546 }, { From 95834d75ffe28b912f5289e501cb05d333880e16 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 19 May 2017 16:52:58 +0200 Subject: [PATCH 167/767] update litecoin maxfee/kb --- coins.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coins.json b/coins.json index 5cfa35f5f..f97de5e6e 100644 --- a/coins.json +++ b/coins.json @@ -54,7 +54,7 @@ "coin_shortcut": "LTC", "address_type": 48, "address_type_p2sh": 50, - "maxfee_kb": 1000000, + "maxfee_kb": 40000000, "signed_message_header": "Litecoin Signed Message:\n", "hash_genesis_block": "12a765e31ffd4059bada1e25190f6e98c99d9714d334efa41a195a7e7e04bfe2", "xpub_magic": "019da462", From b87ead1409cd6c49523161c08b433f0c24cbe14f Mon Sep 17 00:00:00 2001 From: Karel Bilek Date: Mon, 22 May 2017 11:30:03 +0200 Subject: [PATCH 168/767] Adding blocktime --- coins.json | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/coins.json b/coins.json index f97de5e6e..5bff7532a 100644 --- a/coins.json +++ b/coins.json @@ -16,7 +16,8 @@ "Normal": 140, "High": 200 }, - "dust_limit": 546 + "dust_limit": 546, + "blocktime_minutes": 10 }, { "coin_name": "Testnet", "coin_shortcut": "TEST", @@ -32,7 +33,8 @@ "default_fee_b": { "Normal": 10 }, - "dust_limit": 546 + "dust_limit": 546, + "blocktime_minutes": 10 }, { "coin_name": "Namecoin", "coin_shortcut": "NMC", @@ -48,7 +50,8 @@ "default_fee_b": { "Normal": 10 }, - "dust_limit": 2940 + "dust_limit": 2940, + "blocktime_minutes": 10 }, { "coin_name": "Litecoin", "coin_shortcut": "LTC", @@ -64,7 +67,8 @@ "default_fee_b": { "Normal": 1000 }, - "dust_limit": 54600 + "dust_limit": 54600, + "blocktime_minutes": 2.5 }, { "coin_name": "Dogecoin", "coin_shortcut": "DOGE", @@ -80,7 +84,8 @@ "default_fee_b": { "Normal": 10 }, - "dust_limit": 10000000 + "dust_limit": 10000000, + "blocktime_minutes": 1 }, { "coin_name": "Dash", "coin_shortcut": "DASH", @@ -96,7 +101,8 @@ "default_fee_b": { "Normal": 10 }, - "dust_limit": 5460 + "dust_limit": 5460, + "blocktime_minutes": 2.5 }, { "coin_name": "Zcash", "coin_shortcut": "ZEC", @@ -112,7 +118,8 @@ "default_fee_b": { "Normal": 10 }, - "dust_limit": 546 + "dust_limit": 546, + "blocktime_minutes": 2.5 }, { "coin_name": "Zcash Testnet", "coin_shortcut": "TAZ", @@ -128,5 +135,6 @@ "default_fee_b": { "Normal": 10 }, - "dust_limit": 546 + "dust_limit": 546, + "blocktime_minutes": 2.5 }] From e7322269092e0253b0cb1a9c18ba84fd5cd75f91 Mon Sep 17 00:00:00 2001 From: Saleem Rashid Date: Mon, 29 May 2017 02:05:13 +0100 Subject: [PATCH 169/767] types: Add wire_tiny & wire_bootloader (#29) --- protob/messages.proto | 24 ++++++++++++------------ protob/types.proto | 2 ++ 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/protob/messages.proto b/protob/messages.proto index 6d9288dc4..601572099 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -21,9 +21,9 @@ enum MessageType { MessageType_Failure = 3 [(wire_out) = true]; MessageType_ChangePin = 4 [(wire_in) = true]; MessageType_WipeDevice = 5 [(wire_in) = true]; - MessageType_FirmwareErase = 6 [(wire_in) = true]; - MessageType_FirmwareUpload = 7 [(wire_in) = true]; - MessageType_FirmwareRequest = 8 [(wire_out) = true]; + MessageType_FirmwareErase = 6 [(wire_in) = true, (wire_bootloader) = true]; + MessageType_FirmwareUpload = 7 [(wire_in) = true, (wire_bootloader) = true]; + MessageType_FirmwareRequest = 8 [(wire_out) = true, (wire_bootloader) = true]; MessageType_GetEntropy = 9 [(wire_in) = true]; MessageType_Entropy = 10 [(wire_out) = true]; MessageType_GetPublicKey = 11 [(wire_in) = true]; @@ -31,10 +31,10 @@ enum MessageType { MessageType_LoadDevice = 13 [(wire_in) = true]; MessageType_ResetDevice = 14 [(wire_in) = true]; MessageType_SignTx = 15 [(wire_in) = true]; - MessageType_SimpleSignTx = 16 [(wire_in) = true]; + MessageType_SimpleSignTx = 16 [(wire_in) = true, deprecated = true]; MessageType_Features = 17 [(wire_out) = true]; MessageType_PinMatrixRequest = 18 [(wire_out) = true]; - MessageType_PinMatrixAck = 19 [(wire_in) = true]; + MessageType_PinMatrixAck = 19 [(wire_in) = true, (wire_tiny) = true]; MessageType_Cancel = 20 [(wire_in) = true]; MessageType_TxRequest = 21 [(wire_out) = true]; MessageType_TxAck = 22 [(wire_in) = true]; @@ -42,7 +42,7 @@ enum MessageType { MessageType_ClearSession = 24 [(wire_in) = true]; MessageType_ApplySettings = 25 [(wire_in) = true]; MessageType_ButtonRequest = 26 [(wire_out) = true]; - MessageType_ButtonAck = 27 [(wire_in) = true]; + MessageType_ButtonAck = 27 [(wire_in) = true, (wire_tiny) = true]; MessageType_GetAddress = 29 [(wire_in) = true]; MessageType_Address = 30 [(wire_out) = true]; MessageType_EntropyRequest = 35 [(wire_out) = true]; @@ -51,17 +51,17 @@ enum MessageType { MessageType_VerifyMessage = 39 [(wire_in) = true]; MessageType_MessageSignature = 40 [(wire_out) = true]; MessageType_PassphraseRequest = 41 [(wire_out) = true]; - MessageType_PassphraseAck = 42 [(wire_in) = true]; + MessageType_PassphraseAck = 42 [(wire_in) = true, (wire_tiny) = true]; MessageType_EstimateTxSize = 43 [(wire_in) = true]; MessageType_TxSize = 44 [(wire_out) = true]; MessageType_RecoveryDevice = 45 [(wire_in) = true]; MessageType_WordRequest = 46 [(wire_out) = true]; MessageType_WordAck = 47 [(wire_in) = true]; MessageType_CipheredKeyValue = 48 [(wire_out) = true]; - MessageType_EncryptMessage = 49 [(wire_in) = true]; - MessageType_EncryptedMessage = 50 [(wire_out) = true]; - MessageType_DecryptMessage = 51 [(wire_in) = true]; - MessageType_DecryptedMessage = 52 [(wire_out) = true]; + MessageType_EncryptMessage = 49 [(wire_in) = true, deprecated = true]; + MessageType_EncryptedMessage = 50 [(wire_out) = true, deprecated = true]; + MessageType_DecryptMessage = 51 [(wire_in) = true, deprecated = true]; + MessageType_DecryptedMessage = 52 [(wire_out) = true, deprecated = true]; MessageType_SignIdentity = 53 [(wire_in) = true]; MessageType_SignedIdentity = 54 [(wire_out) = true]; MessageType_GetFeatures = 55 [(wire_in) = true]; @@ -73,7 +73,7 @@ enum MessageType { MessageType_GetECDHSessionKey = 61 [(wire_in) = true]; MessageType_ECDHSessionKey = 62 [(wire_out) = true]; MessageType_SetU2FCounter = 63 [(wire_in) = true]; - MessageType_DebugLinkDecision = 100 [(wire_debug_in) = true]; + MessageType_DebugLinkDecision = 100 [(wire_debug_in) = true, (wire_tiny) = true]; MessageType_DebugLinkGetState = 101 [(wire_debug_in) = true]; MessageType_DebugLinkState = 102 [(wire_debug_out) = true]; MessageType_DebugLinkStop = 103 [(wire_debug_in) = true]; diff --git a/protob/types.proto b/protob/types.proto index 18cf33491..d2b8b73d4 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -19,6 +19,8 @@ extend google.protobuf.EnumValueOptions { optional bool wire_out = 50003; // message can be transmitted via wire from TREZOR to PC optional bool wire_debug_in = 50004; // message can be transmitted via debug wire from PC to TREZOR optional bool wire_debug_out = 50005; // message can be transmitted via debug wire from TREZOR to PC + optional bool wire_tiny = 50006; // message is handled by TREZOR when the USB stack is in tiny mode + optional bool wire_bootloader = 50007; // message is only handled by TREZOR Bootloader } /** From 4e450bb50b7aa0721edb0d4837302ca1e1a96a49 Mon Sep 17 00:00:00 2001 From: Karel Bilek Date: Mon, 29 May 2017 18:30:55 +0200 Subject: [PATCH 170/767] Adding minimal fee --- coins.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/coins.json b/coins.json index 5bff7532a..4d0d528c0 100644 --- a/coins.json +++ b/coins.json @@ -4,6 +4,7 @@ "address_type": 0, "address_type_p2sh": 5, "maxfee_kb": 500000, + "minfee_kb": 1000, "signed_message_header": "Bitcoin Signed Message:\n", "hash_genesis_block": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", "xpub_magic": "0488b21e", @@ -24,6 +25,7 @@ "address_type": 111, "address_type_p2sh": 196, "maxfee_kb": 10000000, + "minfee_kb": 1000, "signed_message_header": "Bitcoin Signed Message:\n", "hash_genesis_block": "000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943", "xpub_magic": "043587cf", @@ -41,6 +43,7 @@ "address_type": 52, "address_type_p2sh": 5, "maxfee_kb": 10000000, + "minfee_kb": 1000, "signed_message_header": "Namecoin Signed Message:\n", "hash_genesis_block": "000000000062b72c5e2ceb45fbc8587e807c155b0da735e6483dfba2f0a9c770", "xpub_magic": "019da462", @@ -58,6 +61,7 @@ "address_type": 48, "address_type_p2sh": 50, "maxfee_kb": 40000000, + "minfee_kb": 100000, "signed_message_header": "Litecoin Signed Message:\n", "hash_genesis_block": "12a765e31ffd4059bada1e25190f6e98c99d9714d334efa41a195a7e7e04bfe2", "xpub_magic": "019da462", @@ -75,6 +79,7 @@ "address_type": 30, "address_type_p2sh": 22, "maxfee_kb": 1000000000, + "minfee_kb": 1000, "signed_message_header": "Dogecoin Signed Message:\n", "hash_genesis_block": "1a91e3dace36e2be3bf030a65679fe821aa1d6ef92e7c9902eb318182c355691", "xpub_magic": "02facafd", @@ -92,6 +97,7 @@ "address_type": 76, "address_type_p2sh": 16, "maxfee_kb": 100000, + "minfee_kb": 10000, "signed_message_header": "DarkCoin Signed Message:\n", "hash_genesis_block": "00000ffd590b1485b3caadc19b22e6379c733355108f107a430458cdf3407ab6", "xpub_magic": "02fe52cc", @@ -109,6 +115,7 @@ "address_type": 7352, "address_type_p2sh": 7357, "maxfee_kb": 1000000, + "minfee_kb": 1000, "signed_message_header": "Zcash Signed Message:\n", "hash_genesis_block": "00040fe8ec8471911baa1db1266ea15dd06b4a8a5c453883c000b031973dce08", "xpub_magic": "0488b21e", @@ -126,6 +133,7 @@ "address_type": 7461, "address_type_p2sh": 7354, "maxfee_kb": 10000000, + "minfee_kb": 1000, "signed_message_header": "Zcash Signed Message:\n", "hash_genesis_block": "05a60a92d99d85997cce3b87616c089f6124d7342af37106edc76126334a2c38", "xpub_magic": "043587cf", From 53aa74092e83e4113f0ca19e254588b5bd43878a Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 7 Jun 2017 19:05:26 +0200 Subject: [PATCH 171/767] pb2py: add const import for micropython --- tools/pb2py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/tools/pb2py b/tools/pb2py index 407f442be..68b4b9372 100755 --- a/tools/pb2py +++ b/tools/pb2py @@ -12,7 +12,12 @@ from google.protobuf.internal.enum_type_wrapper import EnumTypeWrapper def process_type(t, cls, msg_id, indexfile, is_upy): print(" * type %s" % t) - imports = ["import protobuf as p", ] + if is_upy: + imports = ["from micropython import const", ""] + else: + imports = [] + + imports.append("import protobuf as p") out = ["", "class %s(p.MessageType):" % t, ] @@ -99,6 +104,9 @@ def process_type(t, cls, msg_id, indexfile, is_upy): def process_enum(t, cls, is_upy): out = [] + if is_upy: + out += ("from micropython import const", "") + print(" * enum %s" % t) for k, v in cls.items(): From 73b9ffc36a9b54c56bbfa643b4735c63cf309ca2 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 13 Jun 2017 19:07:59 +0200 Subject: [PATCH 172/767] move tools/pb2py to trezor-core repo --- tools/pb2py | 194 ---------------------------------------------------- 1 file changed, 194 deletions(-) delete mode 100755 tools/pb2py diff --git a/tools/pb2py b/tools/pb2py deleted file mode 100755 index 68b4b9372..000000000 --- a/tools/pb2py +++ /dev/null @@ -1,194 +0,0 @@ -#!/usr/bin/env python -# Converts Google's protobuf python definitions of TREZOR wire messages -# to plain-python objects as used in TREZOR Core and python-trezor - -import sys -import os -import argparse - -from google.protobuf.internal.enum_type_wrapper import EnumTypeWrapper - - -def process_type(t, cls, msg_id, indexfile, is_upy): - print(" * type %s" % t) - - if is_upy: - imports = ["from micropython import const", ""] - else: - imports = [] - - imports.append("import protobuf as p") - - out = ["", "class %s(p.MessageType):" % t, ] - - if cls.DESCRIPTOR.fields_by_name: - out.append(" FIELDS = {") - elif msg_id is None: - out.append(" pass") - - for v in sorted(cls.DESCRIPTOR.fields_by_name.values(), key=lambda x: x.number): - number = v.number - fieldname = v.name - type = None - repeated = v.label == 3 - required = v.label == 2 - - # print v.has_default_value, v.default_value - - if v.type in (4, 13, 14): - # TYPE_UINT64 = 4 - # TYPE_UINT32 = 13 - # TYPE_ENUM = 14 - type = 'p.UVarintType' - - elif v.type == 9: - # TYPE_STRING = 9 - type = 'p.UnicodeType' - - elif v.type == 8: - # TYPE_BOOL = 8 - type = 'p.BoolType' - - elif v.type == 12: - # TYPE_BYTES = 12 - type = 'p.BytesType' - - elif v.type == 11: - # TYPE_MESSAGE = 1 - type = v.message_type.name - imports.append("from .%s import %s" % - (v.message_type.name, v.message_type.name)) - - else: - raise Exception("Unknown field type %s for field %s" % - (v.type, fieldname)) - - if required: - comment = ' # required' - elif v.has_default_value: - comment = ' # default=%s' % repr(v.default_value) - else: - comment = '' - - if repeated: - flags = 'p.FLAG_REPEATED' - else: - flags = '0' - - out.append(" %d: ('%s', %s, %s),%s" % - (number, fieldname, type, flags, comment)) - - # print fieldname, number, type, repeated, comment - # print v.__dict__ - # print v.CPPTYPE_STRING - # print v.LABEL_REPEATED - # print v.enum_type - # v.has_default_value, v.default_value - # v.label == 3 # repeated - # print v.number - - if cls.DESCRIPTOR.fields_by_name: - out.append(" }") - - if msg_id is not None: - out.append(" MESSAGE_WIRE_TYPE = %d" % msg_id) - if indexfile is not None: - if is_upy: - indexfile.write("%s = const(%d)\n" % (t, msg_id)) - else: - indexfile.write("%s = %d\n" % (t, msg_id)) - - return imports + out - - -def process_enum(t, cls, is_upy): - out = [] - - if is_upy: - out += ("from micropython import const", "") - - print(" * enum %s" % t) - - for k, v in cls.items(): - # Remove type name from the beginning of the constant - # For example "PinMatrixRequestType_Current" -> "Current" - if k.startswith("%s_" % t): - k = k.replace("%s_" % t, '') - - # If type ends with *Type, but constant use type name without *Type, remove it too :) - # For example "ButtonRequestType & ButtonRequest_Other" => "Other" - if t.endswith("Type") and k.startswith("%s_" % t.replace("Type", '')): - k = k.replace("%s_" % t.replace("Type", ''), '') - - if is_upy: - out.append("%s = const(%s)" % (k, v)) - else: - out.append("%s = %s" % (k, v)) - - return out - - -def find_msg_type(msg_types, t): - for k, v in msg_types: - msg_name = k.replace('MessageType_', '') - if msg_name == t: - return v - - -def process_module(mod, genpath, indexfile, is_upy): - - print("Processing module %s" % mod.__name__) - types = dict([(name, cls) - for name, cls in mod.__dict__.items() if isinstance(cls, type)]) - - msg_types = __import__('pb2', globals(), locals(), [ - 'messages_pb2', ]).messages_pb2.MessageType.items() - - for t, cls in types.items(): - # Find message type for given class - msg_id = find_msg_type(msg_types, t) - - out = process_type(t, cls, msg_id, indexfile, is_upy) - - write_to_file(genpath, t, out) - - enums = dict([(name, cls) for name, cls in mod.__dict__.items() - if isinstance(cls, EnumTypeWrapper)]) - - for t, cls in enums.items(): - out = process_enum(t, cls, is_upy) - write_to_file(genpath, t, out) - - -def write_to_file(genpath, t, out): - # Write generated sourcecode to given file - f = open(os.path.join(genpath, "%s.py" % t), 'w') - out = ["# Automatically generated by pb2py"] + out - - data = "\n".join(out) + "\n" - - f.write(data) - f.close() - -if __name__ == '__main__': - parser = argparse.ArgumentParser() - parser.add_argument('modulename', type=str, help="Name of module to generate") - parser.add_argument('genpath', type=str, help="Directory for generated source code") - parser.add_argument('-i', '--indexfile', type=str, help="[optional] Generate index file of wire types") - parser.add_argument('-p', '--protopath', type=str, help="[optional] Path to search for pregenerated Google's python sources") - parser.add_argument('-m', '--micropython', action='store_true', help="Use micropython-favoured source code") - args = parser.parse_args() - - if args.indexfile: - indexfile = open(args.indexfile, 'a') - else: - indexfile = None - - if args.protopath: - sys.path.append(args.protopath) - - # Dynamically load module from argv[1] - tmp = __import__('pb2', globals(), locals(), ['%s_pb2' % args.modulename]) - mod = getattr(tmp, "%s_pb2" % args.modulename) - - process_module(mod, args.genpath, indexfile, args.micropython) From 4eef33b05afb5e8465c8947272bc5421b1b6d896 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Sun, 18 Jun 2017 21:06:39 +0200 Subject: [PATCH 173/767] rename failures: SyntaxError => DataError; Other => ProcessError --- protob/types.proto | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/protob/types.proto b/protob/types.proto index d2b8b73d4..feefcfc63 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -30,13 +30,13 @@ extend google.protobuf.EnumValueOptions { enum FailureType { Failure_UnexpectedMessage = 1; Failure_ButtonExpected = 2; - Failure_SyntaxError = 3; + Failure_DataError = 3; Failure_ActionCancelled = 4; Failure_PinExpected = 5; Failure_PinCancelled = 6; Failure_PinInvalid = 7; Failure_InvalidSignature = 8; - Failure_Other = 9; + Failure_ProcessError = 9; Failure_NotEnoughFunds = 10; Failure_NotInitialized = 11; Failure_FirmwareError = 99; From 0001cb18c065d7f3aacd6f8d7c5be42cd7477a94 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 20 Jun 2017 11:26:39 +0200 Subject: [PATCH 174/767] add FirmwareErase.length --- protob/messages.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/protob/messages.proto b/protob/messages.proto index 601572099..4a3a14f75 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -722,6 +722,7 @@ message SetU2FCounter { * @next Failure */ message FirmwareErase { + optional uint32 length = 1; // length of new firmware } /** From ae1900a2bcc9a140f636d9ef2c5e029fe397441a Mon Sep 17 00:00:00 2001 From: Roman Zeyde Date: Thu, 22 Jun 2017 13:38:06 +0300 Subject: [PATCH 175/767] Allow testing recovery with initialized device (#33) This would allow safe mnemonic validation by using a dry-run flag. --- protob/messages.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/protob/messages.proto b/protob/messages.proto index 4a3a14f75..b52a48dbc 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -395,6 +395,7 @@ message RecoveryDevice { // 7 reserved for unused recovery method optional uint32 type = 8; // supported recovery type (see RecoveryType) optional uint32 u2f_counter = 9; // U2F counter + optional bool dry_run = 10; // perform dry-run recovery workflow (for safe mnemonic validation) } /** From e04ecf819bf5e00413408b735f446431e28428e1 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 23 Jun 2017 19:06:24 +0200 Subject: [PATCH 176/767] preparation for delegated backup --- protob/config.proto | 3 --- protob/messages.proto | 12 +++++++++--- protob/storage.proto | 4 +--- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/protob/config.proto b/protob/config.proto index 6779c9537..6dfe3b129 100644 --- a/protob/config.proto +++ b/protob/config.proto @@ -1,8 +1,5 @@ /** * Configuration format for TREZOR plugin - * - * @author Marek Palatinus - * @version 1.0 */ // Sugar for easier handling in Java diff --git a/protob/messages.proto b/protob/messages.proto index b52a48dbc..dd77528b8 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -1,8 +1,5 @@ /** * Messages for TREZOR communication - * - * @author Marek Palatinus - * @version 1.2 */ // Sugar for easier handling in Java @@ -45,6 +42,7 @@ enum MessageType { MessageType_ButtonAck = 27 [(wire_in) = true, (wire_tiny) = true]; MessageType_GetAddress = 29 [(wire_in) = true]; MessageType_Address = 30 [(wire_out) = true]; + MessageType_BackupDevice = 34 [(wire_in) = true]; MessageType_EntropyRequest = 35 [(wire_out) = true]; MessageType_EntropyAck = 36 [(wire_in) = true]; MessageType_SignMessage = 38 [(wire_in) = true]; @@ -361,6 +359,14 @@ message ResetDevice { optional string language = 5 [default='english']; // device language optional string label = 6; // device label optional uint32 u2f_counter = 7; // U2F counter + optional bool skip_backup = 8; // postpone seed backup to BackupDevice workflow +} + +/** + * Request: Perform backup of the device seed if not backed up using ResetDevice + * @next ButtonRequest + */ +message BackupDevice { } /** diff --git a/protob/storage.proto b/protob/storage.proto index 36f95d570..8415fde09 100644 --- a/protob/storage.proto +++ b/protob/storage.proto @@ -1,8 +1,5 @@ /** * Storage area of TREZOR - * - * @author Marek Palatinus - * @version 1 */ // Sugar for easier handling in Java @@ -26,4 +23,5 @@ message Storage { optional bool imported = 9; // was storage imported from an external source? optional bytes homescreen = 10; // image used as homescreen (logo + label is used when not set) optional uint32 u2f_counter = 11; // sequence number for u2f authentications + optional bool needs_backup = 12; // seed is not backed up yet } From 9e7922d61a6a40a2c9b23a7e7f95db488848bb3d Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 26 Jun 2017 11:37:20 +0200 Subject: [PATCH 177/767] added license (LGPL-3.0+) --- COPYING | 165 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 165 insertions(+) create mode 100644 COPYING diff --git a/COPYING b/COPYING new file mode 100644 index 000000000..65c5ca88a --- /dev/null +++ b/COPYING @@ -0,0 +1,165 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. From 654ee5d8ec575331b6be15343617a8fcfdd66cdd Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 26 Jun 2017 19:49:29 +0200 Subject: [PATCH 178/767] add Features.needs_backup --- protob/messages.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/protob/messages.proto b/protob/messages.proto index dd77528b8..ce1090cb1 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -124,6 +124,7 @@ message Features { optional bool pin_cached = 16; // is PIN already cached in session? optional bool passphrase_cached = 17; // is passphrase already cached in session? optional bool firmware_present = 18; // is valid firmware loaded? + optional bool needs_backup = 19; // does storage need backup? (equals to Storage.needs_backup) } /** From 68f5246e2f6e8a7265c297b05958df4e2b2b2ad9 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 28 Jun 2017 18:44:19 +0200 Subject: [PATCH 179/767] deprecate EstimateTxSize and TxSize --- protob/messages.proto | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/protob/messages.proto b/protob/messages.proto index ce1090cb1..107d92ccd 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -50,8 +50,8 @@ enum MessageType { MessageType_MessageSignature = 40 [(wire_out) = true]; MessageType_PassphraseRequest = 41 [(wire_out) = true]; MessageType_PassphraseAck = 42 [(wire_in) = true, (wire_tiny) = true]; - MessageType_EstimateTxSize = 43 [(wire_in) = true]; - MessageType_TxSize = 44 [(wire_out) = true]; + MessageType_EstimateTxSize = 43 [(wire_in) = true, deprecated = true]; + MessageType_TxSize = 44 [(wire_out) = true, deprecated = true]; MessageType_RecoveryDevice = 45 [(wire_in) = true]; MessageType_WordRequest = 46 [(wire_out) = true]; MessageType_WordAck = 47 [(wire_in) = true]; From c2a40f4b675ed3bf137360a6fa22ff72775f38ff Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 29 Jun 2017 17:21:26 +0200 Subject: [PATCH 180/767] add SelfTest message --- protob/messages.proto | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/protob/messages.proto b/protob/messages.proto index 107d92ccd..4713561cf 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -42,6 +42,7 @@ enum MessageType { MessageType_ButtonAck = 27 [(wire_in) = true, (wire_tiny) = true]; MessageType_GetAddress = 29 [(wire_in) = true]; MessageType_Address = 30 [(wire_out) = true]; + MessageType_SelfTest = 32 [(wire_in) = true, (wire_bootloader) = true]; MessageType_BackupDevice = 34 [(wire_in) = true]; MessageType_EntropyRequest = 35 [(wire_out) = true]; MessageType_EntropyAck = 36 [(wire_in) = true]; @@ -752,6 +753,15 @@ message FirmwareUpload { optional bytes hash = 2; // hash of the payload } + +/** + * Request: Perform a device self-test + * @next Success + * @next Failure + */ +message SelfTest { +} + ///////////////////////////////////////////////////////////// // Debug messages (only available if DebugLink is enabled) // ///////////////////////////////////////////////////////////// From 2a86fb0503f432063fc899c02dcdc09ee21c29d4 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 4 Jul 2017 14:02:22 +0200 Subject: [PATCH 181/767] change com.satoshilabs.trezor.protobuf to com.satoshilabs.trezor.lib.protobuf --- protob/config.proto | 2 +- protob/messages.proto | 2 +- protob/storage.proto | 2 +- protob/types.proto | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/protob/config.proto b/protob/config.proto index 6dfe3b129..b7ffedd85 100644 --- a/protob/config.proto +++ b/protob/config.proto @@ -3,7 +3,7 @@ */ // Sugar for easier handling in Java -option java_package = "com.satoshilabs.trezor.protobuf"; +option java_package = "com.satoshilabs.trezor.lib.protobuf"; option java_outer_classname = "TrezorConfig"; import "google/protobuf/descriptor.proto"; diff --git a/protob/messages.proto b/protob/messages.proto index 4713561cf..a0f87965c 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -3,7 +3,7 @@ */ // Sugar for easier handling in Java -option java_package = "com.satoshilabs.trezor.protobuf"; +option java_package = "com.satoshilabs.trezor.lib.protobuf"; option java_outer_classname = "TrezorMessage"; import "types.proto"; diff --git a/protob/storage.proto b/protob/storage.proto index 8415fde09..9f047c98c 100644 --- a/protob/storage.proto +++ b/protob/storage.proto @@ -3,7 +3,7 @@ */ // Sugar for easier handling in Java -option java_package = "com.satoshilabs.trezor.protobuf"; +option java_package = "com.satoshilabs.trezor.lib.protobuf"; option java_outer_classname = "TrezorStorage"; import "types.proto"; diff --git a/protob/types.proto b/protob/types.proto index feefcfc63..136ea7db0 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -6,7 +6,7 @@ */ // Sugar for easier handling in Java -option java_package = "com.satoshilabs.trezor.protobuf"; +option java_package = "com.satoshilabs.trezor.lib.protobuf"; option java_outer_classname = "TrezorType"; import "google/protobuf/descriptor.proto"; From fac66c686735246f32fe6b1f276a5a8e2d9c61d8 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 10 Jul 2017 17:26:55 +0200 Subject: [PATCH 182/767] add SelfTest.payload --- protob/messages.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/protob/messages.proto b/protob/messages.proto index a0f87965c..2d7afca17 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -760,6 +760,7 @@ message FirmwareUpload { * @next Failure */ message SelfTest { + optional bytes payload = 1; // payload to be used in self-test } ///////////////////////////////////////////////////////////// From b29b98d69ba43571dcbe54dc927aa3ecd2b95113 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 12 Jul 2017 17:34:03 +0200 Subject: [PATCH 183/767] Added Ethereum Sign/Verify Message (#35) --- protob/messages.proto | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/protob/messages.proto b/protob/messages.proto index 2d7afca17..104885bac 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -72,6 +72,9 @@ enum MessageType { MessageType_GetECDHSessionKey = 61 [(wire_in) = true]; MessageType_ECDHSessionKey = 62 [(wire_out) = true]; MessageType_SetU2FCounter = 63 [(wire_in) = true]; + MessageType_EthereumSignMessage = 64 [(wire_in) = true]; + MessageType_EthereumVerifyMessage = 65 [(wire_in) = true]; + MessageType_EthereumMessageSignature = 66 [(wire_out) = true]; MessageType_DebugLinkDecision = 100 [(wire_debug_in) = true, (wire_tiny) = true]; MessageType_DebugLinkGetState = 101 [(wire_debug_in) = true]; MessageType_DebugLinkState = 102 [(wire_debug_out) = true]; @@ -659,6 +662,40 @@ message EthereumTxAck { optional bytes data_chunk = 1; // Bytes from transaction payload (<= 1024 bytes) } +//////////////////////////////////////// +// Ethereum: Message signing messages // +//////////////////////////////////////// + +/** + * Request: Ask device to sign message + * @next EthereumMessageSignature + * @next Failure + */ +message EthereumSignMessage { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + required bytes message = 2; // message to be signed +} + +/** + * Request: Ask device to verify message + * @next Success + * @next Failure + */ +message EthereumVerifyMessage { + optional bytes address = 1; // address to verify + optional bytes signature = 2; // signature to verify + optional bytes message = 3; // message to verify +} + +/** + * Response: Signed message + * @prev EthereumSignMessage + */ +message EthereumMessageSignature { + optional bytes address = 1; // address used to sign the message + optional bytes signature = 2; // signature of the message +} + /////////////////////// // Identity messages // /////////////////////// From 440c9437238ea8e1646360bb14c8b63bb545f020 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 13 Jul 2017 14:26:45 +0200 Subject: [PATCH 184/767] remove google/protobuf/descriptor.proto, should be distributed with protobuf --- protob/google/protobuf/descriptor.proto | 620 ------------------------ 1 file changed, 620 deletions(-) delete mode 100644 protob/google/protobuf/descriptor.proto diff --git a/protob/google/protobuf/descriptor.proto b/protob/google/protobuf/descriptor.proto deleted file mode 100644 index a785f79fa..000000000 --- a/protob/google/protobuf/descriptor.proto +++ /dev/null @@ -1,620 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// http://code.google.com/p/protobuf/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Author: kenton@google.com (Kenton Varda) -// Based on original Protocol Buffers design by -// Sanjay Ghemawat, Jeff Dean, and others. -// -// The messages in this file describe the definitions found in .proto files. -// A valid .proto file can be translated directly to a FileDescriptorProto -// without any other information (e.g. without reading its imports). - - - -package google.protobuf; -option java_package = "com.google.protobuf"; -option java_outer_classname = "DescriptorProtos"; - -// descriptor.proto must be optimized for speed because reflection-based -// algorithms don't work during bootstrapping. -option optimize_for = SPEED; - -// The protocol compiler can output a FileDescriptorSet containing the .proto -// files it parses. -message FileDescriptorSet { - repeated FileDescriptorProto file = 1; -} - -// Describes a complete .proto file. -message FileDescriptorProto { - optional string name = 1; // file name, relative to root of source tree - optional string package = 2; // e.g. "foo", "foo.bar", etc. - - // Names of files imported by this file. - repeated string dependency = 3; - // Indexes of the public imported files in the dependency list above. - repeated int32 public_dependency = 10; - // Indexes of the weak imported files in the dependency list. - // For Google-internal migration only. Do not use. - repeated int32 weak_dependency = 11; - - // All top-level definitions in this file. - repeated DescriptorProto message_type = 4; - repeated EnumDescriptorProto enum_type = 5; - repeated ServiceDescriptorProto service = 6; - repeated FieldDescriptorProto extension = 7; - - optional FileOptions options = 8; - - // This field contains optional information about the original source code. - // You may safely remove this entire field whithout harming runtime - // functionality of the descriptors -- the information is needed only by - // development tools. - optional SourceCodeInfo source_code_info = 9; -} - -// Describes a message type. -message DescriptorProto { - optional string name = 1; - - repeated FieldDescriptorProto field = 2; - repeated FieldDescriptorProto extension = 6; - - repeated DescriptorProto nested_type = 3; - repeated EnumDescriptorProto enum_type = 4; - - message ExtensionRange { - optional int32 start = 1; - optional int32 end = 2; - } - repeated ExtensionRange extension_range = 5; - - optional MessageOptions options = 7; -} - -// Describes a field within a message. -message FieldDescriptorProto { - enum Type { - // 0 is reserved for errors. - // Order is weird for historical reasons. - TYPE_DOUBLE = 1; - TYPE_FLOAT = 2; - // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if - // negative values are likely. - TYPE_INT64 = 3; - TYPE_UINT64 = 4; - // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if - // negative values are likely. - TYPE_INT32 = 5; - TYPE_FIXED64 = 6; - TYPE_FIXED32 = 7; - TYPE_BOOL = 8; - TYPE_STRING = 9; - TYPE_GROUP = 10; // Tag-delimited aggregate. - TYPE_MESSAGE = 11; // Length-delimited aggregate. - - // New in version 2. - TYPE_BYTES = 12; - TYPE_UINT32 = 13; - TYPE_ENUM = 14; - TYPE_SFIXED32 = 15; - TYPE_SFIXED64 = 16; - TYPE_SINT32 = 17; // Uses ZigZag encoding. - TYPE_SINT64 = 18; // Uses ZigZag encoding. - }; - - enum Label { - // 0 is reserved for errors - LABEL_OPTIONAL = 1; - LABEL_REQUIRED = 2; - LABEL_REPEATED = 3; - // TODO(sanjay): Should we add LABEL_MAP? - }; - - optional string name = 1; - optional int32 number = 3; - optional Label label = 4; - - // If type_name is set, this need not be set. If both this and type_name - // are set, this must be either TYPE_ENUM or TYPE_MESSAGE. - optional Type type = 5; - - // For message and enum types, this is the name of the type. If the name - // starts with a '.', it is fully-qualified. Otherwise, C++-like scoping - // rules are used to find the type (i.e. first the nested types within this - // message are searched, then within the parent, on up to the root - // namespace). - optional string type_name = 6; - - // For extensions, this is the name of the type being extended. It is - // resolved in the same manner as type_name. - optional string extendee = 2; - - // For numeric types, contains the original text representation of the value. - // For booleans, "true" or "false". - // For strings, contains the default text contents (not escaped in any way). - // For bytes, contains the C escaped value. All bytes >= 128 are escaped. - // TODO(kenton): Base-64 encode? - optional string default_value = 7; - - optional FieldOptions options = 8; -} - -// Describes an enum type. -message EnumDescriptorProto { - optional string name = 1; - - repeated EnumValueDescriptorProto value = 2; - - optional EnumOptions options = 3; -} - -// Describes a value within an enum. -message EnumValueDescriptorProto { - optional string name = 1; - optional int32 number = 2; - - optional EnumValueOptions options = 3; -} - -// Describes a service. -message ServiceDescriptorProto { - optional string name = 1; - repeated MethodDescriptorProto method = 2; - - optional ServiceOptions options = 3; -} - -// Describes a method of a service. -message MethodDescriptorProto { - optional string name = 1; - - // Input and output type names. These are resolved in the same way as - // FieldDescriptorProto.type_name, but must refer to a message type. - optional string input_type = 2; - optional string output_type = 3; - - optional MethodOptions options = 4; -} - - -// =================================================================== -// Options - -// Each of the definitions above may have "options" attached. These are -// just annotations which may cause code to be generated slightly differently -// or may contain hints for code that manipulates protocol messages. -// -// Clients may define custom options as extensions of the *Options messages. -// These extensions may not yet be known at parsing time, so the parser cannot -// store the values in them. Instead it stores them in a field in the *Options -// message called uninterpreted_option. This field must have the same name -// across all *Options messages. We then use this field to populate the -// extensions when we build a descriptor, at which point all protos have been -// parsed and so all extensions are known. -// -// Extension numbers for custom options may be chosen as follows: -// * For options which will only be used within a single application or -// organization, or for experimental options, use field numbers 50000 -// through 99999. It is up to you to ensure that you do not use the -// same number for multiple options. -// * For options which will be published and used publicly by multiple -// independent entities, e-mail protobuf-global-extension-registry@google.com -// to reserve extension numbers. Simply provide your project name (e.g. -// Object-C plugin) and your porject website (if available) -- there's no need -// to explain how you intend to use them. Usually you only need one extension -// number. You can declare multiple options with only one extension number by -// putting them in a sub-message. See the Custom Options section of the docs -// for examples: -// http://code.google.com/apis/protocolbuffers/docs/proto.html#options -// If this turns out to be popular, a web service will be set up -// to automatically assign option numbers. - - -message FileOptions { - - // Sets the Java package where classes generated from this .proto will be - // placed. By default, the proto package is used, but this is often - // inappropriate because proto packages do not normally start with backwards - // domain names. - optional string java_package = 1; - - - // If set, all the classes from the .proto file are wrapped in a single - // outer class with the given name. This applies to both Proto1 - // (equivalent to the old "--one_java_file" option) and Proto2 (where - // a .proto always translates to a single class, but you may want to - // explicitly choose the class name). - optional string java_outer_classname = 8; - - // If set true, then the Java code generator will generate a separate .java - // file for each top-level message, enum, and service defined in the .proto - // file. Thus, these types will *not* be nested inside the outer class - // named by java_outer_classname. However, the outer class will still be - // generated to contain the file's getDescriptor() method as well as any - // top-level extensions defined in the file. - optional bool java_multiple_files = 10 [default=false]; - - // If set true, then the Java code generator will generate equals() and - // hashCode() methods for all messages defined in the .proto file. This is - // purely a speed optimization, as the AbstractMessage base class includes - // reflection-based implementations of these methods. - optional bool java_generate_equals_and_hash = 20 [default=false]; - - // Generated classes can be optimized for speed or code size. - enum OptimizeMode { - SPEED = 1; // Generate complete code for parsing, serialization, - // etc. - CODE_SIZE = 2; // Use ReflectionOps to implement these methods. - LITE_RUNTIME = 3; // Generate code using MessageLite and the lite runtime. - } - optional OptimizeMode optimize_for = 9 [default=SPEED]; - - // Sets the Go package where structs generated from this .proto will be - // placed. There is no default. - optional string go_package = 11; - - - - // Should generic services be generated in each language? "Generic" services - // are not specific to any particular RPC system. They are generated by the - // main code generators in each language (without additional plugins). - // Generic services were the only kind of service generation supported by - // early versions of proto2. - // - // Generic services are now considered deprecated in favor of using plugins - // that generate code specific to your particular RPC system. Therefore, - // these default to false. Old code which depends on generic services should - // explicitly set them to true. - optional bool cc_generic_services = 16 [default=false]; - optional bool java_generic_services = 17 [default=false]; - optional bool py_generic_services = 18 [default=false]; - - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; -} - -message MessageOptions { - // Set true to use the old proto1 MessageSet wire format for extensions. - // This is provided for backwards-compatibility with the MessageSet wire - // format. You should not use this for any other reason: It's less - // efficient, has fewer features, and is more complicated. - // - // The message must be defined exactly as follows: - // message Foo { - // option message_set_wire_format = true; - // extensions 4 to max; - // } - // Note that the message cannot have any defined fields; MessageSets only - // have extensions. - // - // All extensions of your type must be singular messages; e.g. they cannot - // be int32s, enums, or repeated messages. - // - // Because this is an option, the above two restrictions are not enforced by - // the protocol compiler. - optional bool message_set_wire_format = 1 [default=false]; - - // Disables the generation of the standard "descriptor()" accessor, which can - // conflict with a field of the same name. This is meant to make migration - // from proto1 easier; new code should avoid fields named "descriptor". - optional bool no_standard_descriptor_accessor = 2 [default=false]; - - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; -} - -message FieldOptions { - // The ctype option instructs the C++ code generator to use a different - // representation of the field than it normally would. See the specific - // options below. This option is not yet implemented in the open source - // release -- sorry, we'll try to include it in a future version! - optional CType ctype = 1 [default = STRING]; - enum CType { - // Default mode. - STRING = 0; - - CORD = 1; - - STRING_PIECE = 2; - } - // The packed option can be enabled for repeated primitive fields to enable - // a more efficient representation on the wire. Rather than repeatedly - // writing the tag and type for each element, the entire array is encoded as - // a single length-delimited blob. - optional bool packed = 2; - - - - // Should this field be parsed lazily? Lazy applies only to message-type - // fields. It means that when the outer message is initially parsed, the - // inner message's contents will not be parsed but instead stored in encoded - // form. The inner message will actually be parsed when it is first accessed. - // - // This is only a hint. Implementations are free to choose whether to use - // eager or lazy parsing regardless of the value of this option. However, - // setting this option true suggests that the protocol author believes that - // using lazy parsing on this field is worth the additional bookkeeping - // overhead typically needed to implement it. - // - // This option does not affect the public interface of any generated code; - // all method signatures remain the same. Furthermore, thread-safety of the - // interface is not affected by this option; const methods remain safe to - // call from multiple threads concurrently, while non-const methods continue - // to require exclusive access. - // - // - // Note that implementations may choose not to check required fields within - // a lazy sub-message. That is, calling IsInitialized() on the outher message - // may return true even if the inner message has missing required fields. - // This is necessary because otherwise the inner message would have to be - // parsed in order to perform the check, defeating the purpose of lazy - // parsing. An implementation which chooses not to check required fields - // must be consistent about it. That is, for any particular sub-message, the - // implementation must either *always* check its required fields, or *never* - // check its required fields, regardless of whether or not the message has - // been parsed. - optional bool lazy = 5 [default=false]; - - // Is this field deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for accessors, or it will be completely ignored; in the very least, this - // is a formalization for deprecating fields. - optional bool deprecated = 3 [default=false]; - - // EXPERIMENTAL. DO NOT USE. - // For "map" fields, the name of the field in the enclosed type that - // is the key for this map. For example, suppose we have: - // message Item { - // required string name = 1; - // required string value = 2; - // } - // message Config { - // repeated Item items = 1 [experimental_map_key="name"]; - // } - // In this situation, the map key for Item will be set to "name". - // TODO: Fully-implement this, then remove the "experimental_" prefix. - optional string experimental_map_key = 9; - - // For Google-internal migration only. Do not use. - optional bool weak = 10 [default=false]; - - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; -} - -message EnumOptions { - - // Set this option to false to disallow mapping different tag names to a same - // value. - optional bool allow_alias = 2 [default=true]; - - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; -} - -message EnumValueOptions { - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; -} - -message ServiceOptions { - - // Note: Field numbers 1 through 32 are reserved for Google's internal RPC - // framework. We apologize for hoarding these numbers to ourselves, but - // we were already using them long before we decided to release Protocol - // Buffers. - - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; -} - -message MethodOptions { - - // Note: Field numbers 1 through 32 are reserved for Google's internal RPC - // framework. We apologize for hoarding these numbers to ourselves, but - // we were already using them long before we decided to release Protocol - // Buffers. - - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; -} - - -// A message representing a option the parser does not recognize. This only -// appears in options protos created by the compiler::Parser class. -// DescriptorPool resolves these when building Descriptor objects. Therefore, -// options protos in descriptor objects (e.g. returned by Descriptor::options(), -// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions -// in them. -message UninterpretedOption { - // The name of the uninterpreted option. Each string represents a segment in - // a dot-separated name. is_extension is true iff a segment represents an - // extension (denoted with parentheses in options specs in .proto files). - // E.g.,{ ["foo", false], ["bar.baz", true], ["qux", false] } represents - // "foo.(bar.baz).qux". - message NamePart { - required string name_part = 1; - required bool is_extension = 2; - } - repeated NamePart name = 2; - - // The value of the uninterpreted option, in whatever type the tokenizer - // identified it as during parsing. Exactly one of these should be set. - optional string identifier_value = 3; - optional uint64 positive_int_value = 4; - optional int64 negative_int_value = 5; - optional double double_value = 6; - optional bytes string_value = 7; - optional string aggregate_value = 8; -} - -// =================================================================== -// Optional source code info - -// Encapsulates information about the original source file from which a -// FileDescriptorProto was generated. -message SourceCodeInfo { - // A Location identifies a piece of source code in a .proto file which - // corresponds to a particular definition. This information is intended - // to be useful to IDEs, code indexers, documentation generators, and similar - // tools. - // - // For example, say we have a file like: - // message Foo { - // optional string foo = 1; - // } - // Let's look at just the field definition: - // optional string foo = 1; - // ^ ^^ ^^ ^ ^^^ - // a bc de f ghi - // We have the following locations: - // span path represents - // [a,i) [ 4, 0, 2, 0 ] The whole field definition. - // [a,b) [ 4, 0, 2, 0, 4 ] The label (optional). - // [c,d) [ 4, 0, 2, 0, 5 ] The type (string). - // [e,f) [ 4, 0, 2, 0, 1 ] The name (foo). - // [g,h) [ 4, 0, 2, 0, 3 ] The number (1). - // - // Notes: - // - A location may refer to a repeated field itself (i.e. not to any - // particular index within it). This is used whenever a set of elements are - // logically enclosed in a single code segment. For example, an entire - // extend block (possibly containing multiple extension definitions) will - // have an outer location whose path refers to the "extensions" repeated - // field without an index. - // - Multiple locations may have the same path. This happens when a single - // logical declaration is spread out across multiple places. The most - // obvious example is the "extend" block again -- there may be multiple - // extend blocks in the same scope, each of which will have the same path. - // - A location's span is not always a subset of its parent's span. For - // example, the "extendee" of an extension declaration appears at the - // beginning of the "extend" block and is shared by all extensions within - // the block. - // - Just because a location's span is a subset of some other location's span - // does not mean that it is a descendent. For example, a "group" defines - // both a type and a field in a single declaration. Thus, the locations - // corresponding to the type and field and their components will overlap. - // - Code which tries to interpret locations should probably be designed to - // ignore those that it doesn't understand, as more types of locations could - // be recorded in the future. - repeated Location location = 1; - message Location { - // Identifies which part of the FileDescriptorProto was defined at this - // location. - // - // Each element is a field number or an index. They form a path from - // the root FileDescriptorProto to the place where the definition. For - // example, this path: - // [ 4, 3, 2, 7, 1 ] - // refers to: - // file.message_type(3) // 4, 3 - // .field(7) // 2, 7 - // .name() // 1 - // This is because FileDescriptorProto.message_type has field number 4: - // repeated DescriptorProto message_type = 4; - // and DescriptorProto.field has field number 2: - // repeated FieldDescriptorProto field = 2; - // and FieldDescriptorProto.name has field number 1: - // optional string name = 1; - // - // Thus, the above path gives the location of a field name. If we removed - // the last element: - // [ 4, 3, 2, 7 ] - // this path refers to the whole field declaration (from the beginning - // of the label to the terminating semicolon). - repeated int32 path = 1 [packed=true]; - - // Always has exactly three or four elements: start line, start column, - // end line (optional, otherwise assumed same as start line), end column. - // These are packed into a single field for efficiency. Note that line - // and column numbers are zero-based -- typically you will want to add - // 1 to each before displaying to a user. - repeated int32 span = 2 [packed=true]; - - // If this SourceCodeInfo represents a complete declaration, these are any - // comments appearing before and after the declaration which appear to be - // attached to the declaration. - // - // A series of line comments appearing on consecutive lines, with no other - // tokens appearing on those lines, will be treated as a single comment. - // - // Only the comment content is provided; comment markers (e.g. //) are - // stripped out. For block comments, leading whitespace and an asterisk - // will be stripped from the beginning of each line other than the first. - // Newlines are included in the output. - // - // Examples: - // - // optional int32 foo = 1; // Comment attached to foo. - // // Comment attached to bar. - // optional int32 bar = 2; - // - // optional string baz = 3; - // // Comment attached to baz. - // // Another line attached to baz. - // - // // Comment attached to qux. - // // - // // Another line attached to qux. - // optional double qux = 4; - // - // optional string corge = 5; - // /* Block comment attached - // * to corge. Leading asterisks - // * will be removed. */ - // /* Block comment attached to - // * grault. */ - // optional int32 grault = 6; - optional string leading_comments = 3; - optional string trailing_comments = 4; - } -} From 224bdde39f23df2c08b3506a0763215ec99ffbbe Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 13 Jul 2017 14:42:39 +0200 Subject: [PATCH 185/767] don't use hex for uint32 default values --- protob/types.proto | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/protob/types.proto b/protob/types.proto index 136ea7db0..6264de6b5 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -166,8 +166,8 @@ message CoinType { optional uint64 maxfee_kb = 4; optional uint32 address_type_p2sh = 5 [default=5]; optional string signed_message_header = 8; - optional uint32 xpub_magic = 9 [default=0x0488b21e]; - optional uint32 xprv_magic = 10 [default=0x0488ade4]; + optional uint32 xpub_magic = 9 [default=76067358]; // default=0x0488b21e + optional uint32 xprv_magic = 10 [default=76066276]; // default=0x0488ade4 optional bool segwit = 11; } @@ -191,7 +191,7 @@ message TxInputType { required bytes prev_hash = 2; // hash of previous transaction output to spend by this input required uint32 prev_index = 3; // index of previous output to spend optional bytes script_sig = 4; // script signature, unset for tx to sign - optional uint32 sequence = 5 [default=0xffffffff]; // sequence + optional uint32 sequence = 5 [default=4294967295]; // sequence (default=0xffffffff) optional InputScriptType script_type = 6 [default=SPENDADDRESS]; // defines template of input script optional MultisigRedeemScriptType multisig = 7; // Filled if input is going to spend multisig tx optional uint64 amount = 8; // amount of previous transaction output (for segwit only) From 2eb9c7e352f708506d910f2d5b9aac1e85cafa10 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 17 Jul 2017 15:12:40 +0200 Subject: [PATCH 186/767] added Storage.subscribed, Features.subscribed and ApplySettings.subscribed --- protob/messages.proto | 11 +++++++++++ protob/storage.proto | 1 + 2 files changed, 12 insertions(+) diff --git a/protob/messages.proto b/protob/messages.proto index 104885bac..2a2c071c8 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -40,6 +40,7 @@ enum MessageType { MessageType_ApplySettings = 25 [(wire_in) = true]; MessageType_ButtonRequest = 26 [(wire_out) = true]; MessageType_ButtonAck = 27 [(wire_in) = true, (wire_tiny) = true]; + MessageType_ApplyFlags = 28 [(wire_in) = true]; MessageType_GetAddress = 29 [(wire_in) = true]; MessageType_Address = 30 [(wire_out) = true]; MessageType_SelfTest = 32 [(wire_in) = true, (wire_bootloader) = true]; @@ -129,6 +130,7 @@ message Features { optional bool passphrase_cached = 17; // is passphrase already cached in session? optional bool firmware_present = 18; // is valid firmware loaded? optional bool needs_backup = 19; // does storage need backup? (equals to Storage.needs_backup) + optional uint32 flags = 20; // device flags (equals to Storage.flags) } /** @@ -152,6 +154,15 @@ message ApplySettings { optional bytes homescreen = 4; } +/** + * Request: set flags of the device + * @next Success + * @next Failure + */ +message ApplyFlags { + optional uint32 flags = 1; // bitmask, can only set bits, not unset +} + /** * Request: Starts workflow for setting/changing/removing the PIN * @next ButtonRequest diff --git a/protob/storage.proto b/protob/storage.proto index 9f047c98c..1af164ccb 100644 --- a/protob/storage.proto +++ b/protob/storage.proto @@ -24,4 +24,5 @@ message Storage { optional bytes homescreen = 10; // image used as homescreen (logo + label is used when not set) optional uint32 u2f_counter = 11; // sequence number for u2f authentications optional bool needs_backup = 12; // seed is not backed up yet + optional uint32 flags = 13; // device flags } From 00900951e072aaa2d7c48da807bb0032b6b898c1 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 24 Jul 2017 16:05:13 +0200 Subject: [PATCH 187/767] add SignMessage.script_type --- protob/messages.proto | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/protob/messages.proto b/protob/messages.proto index 2a2c071c8..cab381484 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -304,11 +304,11 @@ message PublicKey { * @next Failure */ message GetAddress { - repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node optional string coin_name = 2 [default='Bitcoin']; - optional bool show_display = 3; // optionally show on display before sending the result - optional MultisigRedeemScriptType multisig = 4; // Filled if we are showing a multisig address - optional InputScriptType script_type = 5 [default=SPENDADDRESS]; // Used to distinguish segwit addresses + optional bool show_display = 3 ; // optionally show on display before sending the result + optional MultisigRedeemScriptType multisig = 4; // filled if we are showing a multisig address + optional InputScriptType script_type = 5 [default=SPENDADDRESS]; // used to distinguish between various address formats (non-segwit, segwit, etc.) } /** @@ -451,9 +451,10 @@ message WordAck { * @next Failure */ message SignMessage { - repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - required bytes message = 2; // message to be signed - optional string coin_name = 3 [default='Bitcoin']; // coin to use for signing + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + required bytes message = 2; // message to be signed + optional string coin_name = 3 [default='Bitcoin']; // coin to use for signing + optional InputScriptType script_type = 4 [default=SPENDADDRESS]; // used to distinguish between various address formats (non-segwit, segwit, etc.) } /** From dd8ec3231fb5f7992360aff9bdfe30bb58130f4b Mon Sep 17 00:00:00 2001 From: Saleem Rashid Date: Tue, 25 Jul 2017 15:21:01 +0100 Subject: [PATCH 188/767] coins: Add forkid --- coins.json | 8 ++++++++ protob/types.proto | 1 + 2 files changed, 9 insertions(+) diff --git a/coins.json b/coins.json index 4d0d528c0..5238fa8e0 100644 --- a/coins.json +++ b/coins.json @@ -11,6 +11,7 @@ "xprv_magic": "0488ade4", "bip44": 0, "segwit": false, + "forkid": null, "default_fee_b": { "Low": 10, "Economy": 70, @@ -32,6 +33,7 @@ "xprv_magic": "04358394", "bip44": 1, "segwit": true, + "forkid": null, "default_fee_b": { "Normal": 10 }, @@ -50,6 +52,7 @@ "xprv_magic": "019d9cfe", "bip44": 7, "segwit": false, + "forkid": null, "default_fee_b": { "Normal": 10 }, @@ -68,6 +71,7 @@ "xprv_magic": "019d9cfe", "bip44": 2, "segwit": true, + "forkid": null, "default_fee_b": { "Normal": 1000 }, @@ -86,6 +90,7 @@ "xprv_magic": "02fac398", "bip44": 3, "segwit": false, + "forkid": null, "default_fee_b": { "Normal": 10 }, @@ -104,6 +109,7 @@ "xprv_magic": "02fe52f8", "bip44": 5, "segwit": false, + "forkid": null, "default_fee_b": { "Normal": 10 }, @@ -122,6 +128,7 @@ "xprv_magic": "0488ade4", "bip44": 133, "segwit": false, + "forkid": null, "default_fee_b": { "Normal": 10 }, @@ -140,6 +147,7 @@ "xprv_magic": "04358394", "bip44": 1, "segwit": false, + "forkid": null, "default_fee_b": { "Normal": 10 }, diff --git a/protob/types.proto b/protob/types.proto index 6264de6b5..ee15ab3d3 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -169,6 +169,7 @@ message CoinType { optional uint32 xpub_magic = 9 [default=76067358]; // default=0x0488b21e optional uint32 xprv_magic = 10 [default=76066276]; // default=0x0488ade4 optional bool segwit = 11; + optional uint32 forkid = 12; } /** From 1d0399d0b0757430db6cdefee07b9923f812e058 Mon Sep 17 00:00:00 2001 From: Saleem Rashid Date: Tue, 25 Jul 2017 15:21:46 +0100 Subject: [PATCH 189/767] coins: Add Bitcoin Cash --- coins.json | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/coins.json b/coins.json index 5238fa8e0..0e9f5418c 100644 --- a/coins.json +++ b/coins.json @@ -39,6 +39,47 @@ }, "dust_limit": 546, "blocktime_minutes": 10 +}, { + "coin_name": "Bitcoin Cash", + "coin_shortcut": "BCC", + "address_type": 0, + "address_type_p2sh": 5, + "maxfee_kb": 500000, + "minfee_kb": 1000, + "signed_message_header": "Bitcoin Signed Message:\n", + "hash_genesis_block": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", + "xpub_magic": "0488b21e", + "xprv_magic": "0488ade4", + "bip44": 145, + "segwit": false, + "forkid": 0, + "default_fee_b": { + "Low": 10, + "Economy": 70, + "Normal": 140, + "High": 200 + }, + "dust_limit": 546, + "blocktime_minutes": 10 +}, { + "coin_name": "Testnet Cash", + "coin_shortcut": "TBCC", + "address_type": 111, + "address_type_p2sh": 196, + "maxfee_kb": 10000000, + "minfee_kb": 1000, + "signed_message_header": "Bitcoin Signed Message:\n", + "hash_genesis_block": "000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943", + "xpub_magic": "043587cf", + "xprv_magic": "04358394", + "bip44": 1, + "segwit": false, + "forkid": 0, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 546, + "blocktime_minutes": 10 }, { "coin_name": "Namecoin", "coin_shortcut": "NMC", From f3010097c34706c0d62fdd9ddf05f5718a3967f8 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 28 Jul 2017 15:13:26 +0200 Subject: [PATCH 190/767] reformat coins.json --- coins.json | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/coins.json b/coins.json index 0e9f5418c..b68c90013 100644 --- a/coins.json +++ b/coins.json @@ -1,4 +1,5 @@ -[{ +[ +{ "coin_name": "Bitcoin", "coin_shortcut": "BTC", "address_type": 0, @@ -20,7 +21,8 @@ }, "dust_limit": 546, "blocktime_minutes": 10 -}, { +}, +{ "coin_name": "Testnet", "coin_shortcut": "TEST", "address_type": 111, @@ -39,7 +41,8 @@ }, "dust_limit": 546, "blocktime_minutes": 10 -}, { +}, +{ "coin_name": "Bitcoin Cash", "coin_shortcut": "BCC", "address_type": 0, @@ -61,7 +64,8 @@ }, "dust_limit": 546, "blocktime_minutes": 10 -}, { +}, +{ "coin_name": "Testnet Cash", "coin_shortcut": "TBCC", "address_type": 111, @@ -80,7 +84,8 @@ }, "dust_limit": 546, "blocktime_minutes": 10 -}, { +}, +{ "coin_name": "Namecoin", "coin_shortcut": "NMC", "address_type": 52, @@ -99,7 +104,8 @@ }, "dust_limit": 2940, "blocktime_minutes": 10 -}, { +}, +{ "coin_name": "Litecoin", "coin_shortcut": "LTC", "address_type": 48, @@ -118,7 +124,8 @@ }, "dust_limit": 54600, "blocktime_minutes": 2.5 -}, { +}, +{ "coin_name": "Dogecoin", "coin_shortcut": "DOGE", "address_type": 30, @@ -137,7 +144,8 @@ }, "dust_limit": 10000000, "blocktime_minutes": 1 -}, { +}, +{ "coin_name": "Dash", "coin_shortcut": "DASH", "address_type": 76, @@ -156,7 +164,8 @@ }, "dust_limit": 5460, "blocktime_minutes": 2.5 -}, { +}, +{ "coin_name": "Zcash", "coin_shortcut": "ZEC", "address_type": 7352, @@ -175,7 +184,8 @@ }, "dust_limit": 546, "blocktime_minutes": 2.5 -}, { +}, +{ "coin_name": "Zcash Testnet", "coin_shortcut": "TAZ", "address_type": 7461, @@ -194,4 +204,5 @@ }, "dust_limit": 546, "blocktime_minutes": 2.5 -}] +} +] From dc1ed85c96e3766f9e99dc4c8af12ecf6de22f1e Mon Sep 17 00:00:00 2001 From: Saleem Rashid Date: Sun, 30 Jul 2017 16:23:13 +0100 Subject: [PATCH 191/767] coins: Change BCC to BCH --- coins.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/coins.json b/coins.json index b68c90013..dfed48770 100644 --- a/coins.json +++ b/coins.json @@ -44,7 +44,7 @@ }, { "coin_name": "Bitcoin Cash", - "coin_shortcut": "BCC", + "coin_shortcut": "BCH", "address_type": 0, "address_type_p2sh": 5, "maxfee_kb": 500000, @@ -67,7 +67,7 @@ }, { "coin_name": "Testnet Cash", - "coin_shortcut": "TBCC", + "coin_shortcut": "TBCH", "address_type": 111, "address_type_p2sh": 196, "maxfee_kb": 10000000, From 3ec5d354ba2519813ca5df8e92929890777ba8fd Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Sun, 30 Jul 2017 23:14:34 +0200 Subject: [PATCH 192/767] coins: change coin_name for TBCH, add coin.firmware flag --- coins.json | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/coins.json b/coins.json index dfed48770..0e01a08f6 100644 --- a/coins.json +++ b/coins.json @@ -20,7 +20,8 @@ "High": 200 }, "dust_limit": 546, - "blocktime_minutes": 10 + "blocktime_minutes": 10, + "firmware": true }, { "coin_name": "Testnet", @@ -40,7 +41,8 @@ "Normal": 10 }, "dust_limit": 546, - "blocktime_minutes": 10 + "blocktime_minutes": 10, + "firmware": true }, { "coin_name": "Bitcoin Cash", @@ -63,10 +65,11 @@ "High": 200 }, "dust_limit": 546, - "blocktime_minutes": 10 + "blocktime_minutes": 10, + "firmware": true }, { - "coin_name": "Testnet Cash", + "coin_name": "Bitcoin Cash Testnet", "coin_shortcut": "TBCH", "address_type": 111, "address_type_p2sh": 196, @@ -83,7 +86,8 @@ "Normal": 10 }, "dust_limit": 546, - "blocktime_minutes": 10 + "blocktime_minutes": 10, + "firmware": false }, { "coin_name": "Namecoin", @@ -103,7 +107,8 @@ "Normal": 10 }, "dust_limit": 2940, - "blocktime_minutes": 10 + "blocktime_minutes": 10, + "firmware": true }, { "coin_name": "Litecoin", @@ -123,7 +128,8 @@ "Normal": 1000 }, "dust_limit": 54600, - "blocktime_minutes": 2.5 + "blocktime_minutes": 2.5, + "firmware": true }, { "coin_name": "Dogecoin", @@ -143,7 +149,8 @@ "Normal": 10 }, "dust_limit": 10000000, - "blocktime_minutes": 1 + "blocktime_minutes": 1, + "firmware": true }, { "coin_name": "Dash", @@ -163,7 +170,8 @@ "Normal": 10 }, "dust_limit": 5460, - "blocktime_minutes": 2.5 + "blocktime_minutes": 2.5, + "firmware": true }, { "coin_name": "Zcash", @@ -183,7 +191,8 @@ "Normal": 10 }, "dust_limit": 546, - "blocktime_minutes": 2.5 + "blocktime_minutes": 2.5, + "firmware": true }, { "coin_name": "Zcash Testnet", @@ -203,6 +212,7 @@ "Normal": 10 }, "dust_limit": 546, - "blocktime_minutes": 2.5 + "blocktime_minutes": 2.5, + "firmware": true } ] From e7832b2beb2085ea02130db8ad090eaacdf8b2ff Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Sun, 30 Jul 2017 23:37:02 +0200 Subject: [PATCH 193/767] Bitcoin Cash -> Bcash --- coins.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/coins.json b/coins.json index 0e01a08f6..4223fc831 100644 --- a/coins.json +++ b/coins.json @@ -45,7 +45,7 @@ "firmware": true }, { - "coin_name": "Bitcoin Cash", + "coin_name": "Bcash", "coin_shortcut": "BCH", "address_type": 0, "address_type_p2sh": 5, @@ -69,7 +69,7 @@ "firmware": true }, { - "coin_name": "Bitcoin Cash Testnet", + "coin_name": "Bcash Testnet", "coin_shortcut": "TBCH", "address_type": 111, "address_type_p2sh": 196, From dca395dd6c1c1092e1daf5f9ffdb118fa3149263 Mon Sep 17 00:00:00 2001 From: Fabio Berger Date: Tue, 8 Aug 2017 12:47:02 -0400 Subject: [PATCH 194/767] Add 0xproject.com to domain whitelist (#39) --- signer/config.json | 1 + 1 file changed, 1 insertion(+) diff --git a/signer/config.json b/signer/config.json index 68ad16072..641674fd5 100644 --- a/signer/config.json +++ b/signer/config.json @@ -15,6 +15,7 @@ "https://[\\w\\.-]+\\.bitex\\.la(/.*)?", "https://dash\\.run(/.*)?", "https://[\\w\\.-]+\\.dash\\.run(/.*)?", + "https://0xproject\\.com(/.*)?", "chrome-extension://jcjjhjgimijdkoamemaghajlhegmoclj(/.*)?" ], "blacklist_urls": [ From ccff14d685958447740e4c3ffdf4296c818df54a Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Sun, 13 Aug 2017 20:53:52 +0200 Subject: [PATCH 195/767] change firmware field from boolean to string --- coins.json | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/coins.json b/coins.json index 4223fc831..4ea87cc2a 100644 --- a/coins.json +++ b/coins.json @@ -21,7 +21,7 @@ }, "dust_limit": 546, "blocktime_minutes": 10, - "firmware": true + "firmware": "stable" }, { "coin_name": "Testnet", @@ -42,7 +42,7 @@ }, "dust_limit": 546, "blocktime_minutes": 10, - "firmware": true + "firmware": "stable" }, { "coin_name": "Bcash", @@ -66,7 +66,7 @@ }, "dust_limit": 546, "blocktime_minutes": 10, - "firmware": true + "firmware": "stable" }, { "coin_name": "Bcash Testnet", @@ -87,7 +87,7 @@ }, "dust_limit": 546, "blocktime_minutes": 10, - "firmware": false + "firmware": "debug" }, { "coin_name": "Namecoin", @@ -108,7 +108,7 @@ }, "dust_limit": 2940, "blocktime_minutes": 10, - "firmware": true + "firmware": "stable" }, { "coin_name": "Litecoin", @@ -129,7 +129,7 @@ }, "dust_limit": 54600, "blocktime_minutes": 2.5, - "firmware": true + "firmware": "stable" }, { "coin_name": "Dogecoin", @@ -150,7 +150,7 @@ }, "dust_limit": 10000000, "blocktime_minutes": 1, - "firmware": true + "firmware": "stable" }, { "coin_name": "Dash", @@ -171,7 +171,7 @@ }, "dust_limit": 5460, "blocktime_minutes": 2.5, - "firmware": true + "firmware": "stable" }, { "coin_name": "Zcash", @@ -192,7 +192,7 @@ }, "dust_limit": 546, "blocktime_minutes": 2.5, - "firmware": true + "firmware": "stable" }, { "coin_name": "Zcash Testnet", @@ -213,6 +213,6 @@ }, "dust_limit": 546, "blocktime_minutes": 2.5, - "firmware": true + "firmware": "debug" } ] From 5f7a1a7a5a4311fd71ed113624dd1d0fe9e72ff5 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 15 Aug 2017 17:47:05 +0200 Subject: [PATCH 196/767] add protocol description --- protob/protocol.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 protob/protocol.md diff --git a/protob/protocol.md b/protob/protocol.md new file mode 100644 index 000000000..38dc411e0 --- /dev/null +++ b/protob/protocol.md @@ -0,0 +1,21 @@ +# TREZOR Protocol + +## version 1 + +Messages are sent in packets of 64 bytes. + +First packet has the following structure: + +| offset | length | type | contents | +|--------|--------|-------------|---------------------------------------------------------------------------------------| +| 0 | 3 | char[3] | '?##' magic constant | +| 3 | 2 | BE uint16_t | numerical [message type](messages.proto#L14) | +| 5 | 4 | BE uint32_t | message size | +| 9 | 55 | uint8_t[55] | first 55 bytes of message encoded in Protocol Buffers (padded with zeroes if shorter) | + +Following packets has the following structure: + +| offset | length | type | contents | +|--------|--------|-------------|----------------------------------------------------------------------------------------| +| 0 | 1 | char[1] | '?' magic constant | +| 1 | 63 | uint8_t[63] | following bytes of message encoded in Protocol Buffers (padded with zeroes if shorter) | From 4ac8e8cdffb04f83ba9f71c27513f8dced1aa3b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20B=C3=ADlek?= Date: Wed, 23 Aug 2017 15:11:28 +0200 Subject: [PATCH 197/767] Setting segwit to true with bitcoin --- coins.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coins.json b/coins.json index 4ea87cc2a..b994eb418 100644 --- a/coins.json +++ b/coins.json @@ -11,7 +11,7 @@ "xpub_magic": "0488b21e", "xprv_magic": "0488ade4", "bip44": 0, - "segwit": false, + "segwit": true, "forkid": null, "default_fee_b": { "Low": 10, From 21716a5632b739a46d69036998d9f3a50dc5d26e Mon Sep 17 00:00:00 2001 From: Saleem Rashid Date: Mon, 29 May 2017 14:56:29 +0100 Subject: [PATCH 198/767] protob: Add NEMGetAddress & NEMAddress --- protob/messages.proto | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/protob/messages.proto b/protob/messages.proto index cab381484..97a3fff47 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -76,6 +76,8 @@ enum MessageType { MessageType_EthereumSignMessage = 64 [(wire_in) = true]; MessageType_EthereumVerifyMessage = 65 [(wire_in) = true]; MessageType_EthereumMessageSignature = 66 [(wire_out) = true]; + MessageType_NEMGetAddress = 67 [(wire_in) = true]; + MessageType_NEMAddress = 68 [(wire_out) = true]; MessageType_DebugLinkDecision = 100 [(wire_debug_in) = true, (wire_tiny) = true]; MessageType_DebugLinkGetState = 101 [(wire_debug_in) = true]; MessageType_DebugLinkState = 102 [(wire_debug_out) = true]; @@ -812,6 +814,30 @@ message SelfTest { optional bytes payload = 1; // payload to be used in self-test } +////////////////// +// NEM messages // +////////////////// + +/** + * Request: Ask device for NEM address corresponding to address_n path + * @next PassphraseRequest + * @next NEMAddress + * @next Failure + */ +message NEMGetAddress { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional uint32 network = 2; // Network ID (0x68 = Mainnet, 0x98 = Testnet, 0x60 = Mijin) + optional bool show_display = 3; // Optionally show on display before sending the result +} + +/** + * Response: Contains NEM address derived from device private seed + * @prev NEMGetAddress + */ +message NEMAddress { + required string address = 1; // NEM address in Base32 encoding +} + ///////////////////////////////////////////////////////////// // Debug messages (only available if DebugLink is enabled) // ///////////////////////////////////////////////////////////// From 89ce7275485ecdd84d2aef907bfa21b907870197 Mon Sep 17 00:00:00 2001 From: Saleem Rashid Date: Tue, 30 May 2017 09:34:21 +0100 Subject: [PATCH 199/767] protob: Add NEMTransaction & NEMRequestAnnounce --- protob/messages.proto | 27 +++++++++ protob/types.proto | 134 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 161 insertions(+) diff --git a/protob/messages.proto b/protob/messages.proto index 97a3fff47..5a521c14c 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -78,6 +78,8 @@ enum MessageType { MessageType_EthereumMessageSignature = 66 [(wire_out) = true]; MessageType_NEMGetAddress = 67 [(wire_in) = true]; MessageType_NEMAddress = 68 [(wire_out) = true]; + MessageType_NEMTransaction = 69 [(wire_in) = true]; + MessageType_NEMRequestAnnounce = 70 [(wire_out) = true]; MessageType_DebugLinkDecision = 100 [(wire_debug_in) = true, (wire_tiny) = true]; MessageType_DebugLinkGetState = 101 [(wire_debug_in) = true]; MessageType_DebugLinkState = 102 [(wire_debug_out) = true]; @@ -838,6 +840,31 @@ message NEMAddress { required string address = 1; // NEM address in Base32 encoding } +/** + * Request: Ask device to sign transaction + * @next NEMRequestAnnounce + * @next Failure + */ +message NEMTransaction { + optional NEMTransactionCommon transaction = 1; // Common part of transaction + optional NEMTransactionCommon multisig = 2; // Common part of inner transaction for multisig transactions + optional NEMTransfer transfer = 3; // Transfer transaction part + optional bool cosigning = 4; // Whether cosigning or initiating the multisig transaction + optional NEMProvisionNamespace provision_namespace = 5; // Provision namespace part + optional NEMMosaicCreation mosaic_creation = 6; // Mosaic definition creation part + optional NEMMosaicSupplyChange supply_change = 7; // Mosaic supply change part + optional NEMAggregateModification aggregate_modification = 8; // Aggregate modification part +} + +/** + * Response: Contains NEM transaction data and signature + * @prev NEMTransaction + */ +message NEMRequestAnnounce { + optional bytes data = 1; // Transaction data + optional bytes signature = 2; // Signature for the transaction +} + ///////////////////////////////////////////////////////////// // Debug messages (only available if DebugLink is enabled) // ///////////////////////////////////////////////////////////// diff --git a/protob/types.proto b/protob/types.proto index ee15ab3d3..48091f0cf 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -270,3 +270,137 @@ message IdentityType { optional string path = 5; // path part of URI optional uint32 index = 6 [default=0]; // identity index } + +/** + * Structure representing the common part for NEM transactions + * @used_in NEMTransaction + */ +message NEMTransactionCommon { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional uint32 network = 2; // Network ID (0x68 = Mainnet, 0x98 = Testnet, 0x60 = Mijin) + optional uint32 timestamp = 3; // Number of seconds elapsed since the creation of the nemesis block + optional uint64 fee = 4; // Fee for the transaction + optional uint32 deadline = 5; // Deadline of the transaction + optional bytes signer = 6; // Public key of the account (for multisig transactions) +} + +/** + * Structure representing the transfer transaction part for NEM transactions + * @used_in NEMTransaction + */ +message NEMTransfer { + optional string recipient = 1; // Address of the recipient + optional uint64 amount = 2; // Amount of micro NEM that is transferred + optional bytes payload = 3; // Actual message data (unencrypted) + optional bytes public_key = 4; // Public key of the recipient (for encrypted payloads) + repeated NEMMosaic mosaics = 5; // Attached mosaics +} + +/** + * Structure representing the mosaic attachment for NEM transfer transactions + * @used_in NEMTransfer + */ +message NEMMosaic { + optional string namespace = 1; // Fully qualified name of the namespace + optional string mosaic = 2; // Name of the mosaic definition + optional uint64 quantity = 3; // Mosaic quantity, always given in smallest units +} + +/** + * Structure representing the provision namespace part for NEM transactions + * @used_in NEMTransaction + */ +message NEMProvisionNamespace { + optional string namespace = 1; // New part concatenated to the parent + optional string parent = 2; // Parent namespace (for child namespaces) + optional string sink = 3; // Rental fee sink address + optional uint64 fee = 4; // Rental fee +} + +/** + * Type of levy which will be used for mosaic + * @used_in NEMMosaicDefinition + */ +enum NEMMosaicLevy { + MosaicLevy_Absolute = 1; + MosaicLevy_Percentile = 2; +} + +/** + * Structure representing the mosaic definition creation part for NEM transactions + * @used_in NEMTransaction + */ +message NEMMosaicCreation { + optional NEMMosaicDefinition definition = 1; // Mosaic definition + optional string sink = 2; // Creation fee sink address + optional uint64 fee = 3; // Creation fee +} + +/** + * Structure representing a mosaic definition + * @used_in NEMMosaicCreation + */ +message NEMMosaicDefinition { + optional string name = 1; // User-friendly name of the mosaic (for whitelisted mosaics) + optional string ticker = 2; // Ticker of the mosaic (for whitelisted mosaics) + optional string namespace = 3; // Fully qualified name of the namespace + optional string mosaic = 4; // Name of the mosaic definition + optional uint32 divisibility = 5; // Number of decimal places that a mosaic can be divided into + optional NEMMosaicLevy levy = 6; // Levy type + optional uint64 fee = 7; // Levy fee (interpretation depends on levy type) + optional string levy_address = 8; // Levy address + optional string levy_namespace = 9; // Fully qualified name of the namespace of the levy mosaic + optional string levy_mosaic = 10; // Name of the levy mosaic + optional uint64 supply = 11; // Initial supply to create, always given in entire units + optional bool mutable_supply = 12; // Mutable supply + optional bool transferable = 13; // Mosaic allows transfers among accounts other than the creator + optional string description = 14; // Mosaic description + repeated uint32 networks = 15; // Networks that the mosaic is valid on (for whitelisted mosaics) +} + +/** + * Structure representing the mosaic supply change part for NEM transactions + * @used_in NEMTransaction + */ +message NEMMosaicSupplyChange { + optional string namespace = 1; // Fully qualified name of the namespace + optional string mosaic = 2; // Name of the mosaic definition + optional NEMSupplyChangeType type = 3; // Type of supply change + optional uint64 delta = 4; // Supply delta +} + +/** + * Type of supply change which will be applied to mosaic + * @used_in NEMMosaicSupplyChange + */ +enum NEMSupplyChangeType { + SupplyChange_Increase = 1; + SupplyChange_Decrease = 2; +} + +/** + * Structure representing the aggregate modification part for NEM transactions + * @used_in NEMTransaction + */ +message NEMAggregateModification { + repeated NEMCosignatoryModification modifications = 1; // Cosignatory modifications + optional sint32 relative_change = 2; // Relative change of the minimum cosignatories +} + +/** + * Structure representing the cosignatory modification for aggregate modification transactions + * @used_in NEMAggregateMdofiication + */ +message NEMCosignatoryModification { + optional NEMModificationType type = 1; // Type of cosignatory modification + optional bytes public_key = 2; // Public key of the cosignatory +} + +/** + * Type of cosignatory modification + * @used_in NEMCosignatoryModification + */ +enum NEMModificationType { + CosignatoryModification_Add = 1; + CosignatoryModification_Delete = 2; +} From 0e3f6e73ed1d97c653fea162581d47a74d0c2854 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Sat, 2 Sep 2017 23:43:46 +0200 Subject: [PATCH 200/767] nem: rename NEMTransaction to NEMSignTx and NEMRequestAnnounce to NEMSignedTx --- protob/messages.proto | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/protob/messages.proto b/protob/messages.proto index 5a521c14c..0f3c0327b 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -78,8 +78,8 @@ enum MessageType { MessageType_EthereumMessageSignature = 66 [(wire_out) = true]; MessageType_NEMGetAddress = 67 [(wire_in) = true]; MessageType_NEMAddress = 68 [(wire_out) = true]; - MessageType_NEMTransaction = 69 [(wire_in) = true]; - MessageType_NEMRequestAnnounce = 70 [(wire_out) = true]; + MessageType_NEMSignTx = 69 [(wire_in) = true]; + MessageType_NEMSignedTx = 70 [(wire_out) = true]; MessageType_DebugLinkDecision = 100 [(wire_debug_in) = true, (wire_tiny) = true]; MessageType_DebugLinkGetState = 101 [(wire_debug_in) = true]; MessageType_DebugLinkState = 102 [(wire_debug_out) = true]; @@ -842,10 +842,10 @@ message NEMAddress { /** * Request: Ask device to sign transaction - * @next NEMRequestAnnounce + * @next NEMSignedTx * @next Failure */ -message NEMTransaction { +message NEMSignTx { optional NEMTransactionCommon transaction = 1; // Common part of transaction optional NEMTransactionCommon multisig = 2; // Common part of inner transaction for multisig transactions optional NEMTransfer transfer = 3; // Transfer transaction part @@ -858,9 +858,9 @@ message NEMTransaction { /** * Response: Contains NEM transaction data and signature - * @prev NEMTransaction + * @prev NEMSignTx */ -message NEMRequestAnnounce { +message NEMSignedTx { optional bytes data = 1; // Transaction data optional bytes signature = 2; // Signature for the transaction } From b55fb61218431e9c99c9d6c1673801902fc9e92e Mon Sep 17 00:00:00 2001 From: Michal Novacek Date: Wed, 6 Sep 2017 15:40:20 +0200 Subject: [PATCH 201/767] Bug #1493 - QR code fail u L addresses (Litecoin) - add address prefix, minimum and maximum address length --- coins.json | 50 ++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 40 insertions(+), 10 deletions(-) diff --git a/coins.json b/coins.json index b994eb418..427176feb 100644 --- a/coins.json +++ b/coins.json @@ -21,7 +21,10 @@ }, "dust_limit": 546, "blocktime_minutes": 10, - "firmware": "stable" + "firmware": "stable", + "address_prefix": "bitcoin:", + "min_address_length": 27, + "max_address_length": 34 }, { "coin_name": "Testnet", @@ -42,7 +45,10 @@ }, "dust_limit": 546, "blocktime_minutes": 10, - "firmware": "stable" + "firmware": "stable", + "address_prefix": "bitcoin:", + "min_address_length": 27, + "max_address_length": 34 }, { "coin_name": "Bcash", @@ -66,7 +72,10 @@ }, "dust_limit": 546, "blocktime_minutes": 10, - "firmware": "stable" + "firmware": "stable", + "address_prefix": "bitcoin:", + "min_address_length": 27, + "max_address_length": 34 }, { "coin_name": "Bcash Testnet", @@ -87,7 +96,10 @@ }, "dust_limit": 546, "blocktime_minutes": 10, - "firmware": "debug" + "firmware": "debug", + "address_prefix": "bitcoin:", + "min_address_length": 27, + "max_address_length": 34 }, { "coin_name": "Namecoin", @@ -108,7 +120,10 @@ }, "dust_limit": 2940, "blocktime_minutes": 10, - "firmware": "stable" + "firmware": "stable", + "address_prefix": "namecoin:", + "min_address_length": 27, + "max_address_length": 34 }, { "coin_name": "Litecoin", @@ -129,7 +144,10 @@ }, "dust_limit": 54600, "blocktime_minutes": 2.5, - "firmware": "stable" + "firmware": "stable", + "address_prefix": "litecoin:", + "min_address_length": 27, + "max_address_length": 34 }, { "coin_name": "Dogecoin", @@ -150,7 +168,10 @@ }, "dust_limit": 10000000, "blocktime_minutes": 1, - "firmware": "stable" + "firmware": "stable", + "address_prefix": "dogecoin:", + "min_address_length": 27, + "max_address_length": 34 }, { "coin_name": "Dash", @@ -171,7 +192,10 @@ }, "dust_limit": 5460, "blocktime_minutes": 2.5, - "firmware": "stable" + "firmware": "stable", + "address_prefix": "dash:", + "min_address_length": 27, + "max_address_length": 34 }, { "coin_name": "Zcash", @@ -192,7 +216,10 @@ }, "dust_limit": 546, "blocktime_minutes": 2.5, - "firmware": "stable" + "firmware": "stable", + "address_prefix": "zcash:", + "min_address_length": 35, + "max_address_length": 95 }, { "coin_name": "Zcash Testnet", @@ -213,6 +240,9 @@ }, "dust_limit": 546, "blocktime_minutes": 2.5, - "firmware": "debug" + "firmware": "debug", + "address_prefix": "zcash:", + "min_address_length": 35, + "max_address_length": 95 } ] From 6e00c9883084bac51cd743b09094dd0959c506fc Mon Sep 17 00:00:00 2001 From: "Lance R. Vick" Date: Tue, 19 Sep 2017 09:15:01 -0700 Subject: [PATCH 202/767] udev compat with all major linux distros (#43) --- udev/51-trezor.rules | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/udev/51-trezor.rules b/udev/51-trezor.rules index c920a26e8..67b0f9562 100644 --- a/udev/51-trezor.rules +++ b/udev/51-trezor.rules @@ -2,18 +2,16 @@ # https://trezor.io/ # Put this file into /usr/lib/udev/rules.d -# Raspbian does not understand the new TAG+="uaccess", TAG+="udev-acl" syntax, use MODE+GROUP for now ... :-( - # TREZOR -SUBSYSTEM=="usb", ATTR{idVendor}=="534c", ATTR{idProduct}=="0001", MODE="0666", GROUP="dialout", SYMLINK+="trezor%n" -KERNEL=="hidraw*", ATTRS{idVendor}=="534c", ATTRS{idProduct}=="0001", MODE="0666", GROUP="dialout" +SUBSYSTEM=="usb", ATTR{idVendor}=="534c", ATTR{idProduct}=="0001", MODE="0666", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl", SYMLINK+="trezor%n" +KERNEL=="hidraw*", ATTRS{idVendor}=="534c", ATTRS{idProduct}=="0001", MODE="0666", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl" # TREZOR v2 -SUBSYSTEM=="usb", ATTR{idVendor}=="1209", ATTR{idProduct}=="53c0", MODE="0666", GROUP="dialout", SYMLINK+="trezor%n" -SUBSYSTEM=="usb", ATTR{idVendor}=="1209", ATTR{idProduct}=="53c1", MODE="0666", GROUP="dialout", SYMLINK+="trezor%n" -KERNEL=="hidraw*", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="53c0", MODE="0666", GROUP="dialout" -KERNEL=="hidraw*", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="53c1", MODE="0666", GROUP="dialout" +SUBSYSTEM=="usb", ATTR{idVendor}=="1209", ATTR{idProduct}=="53c0", MODE="0666", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl", SYMLINK+="trezor%n" +SUBSYSTEM=="usb", ATTR{idVendor}=="1209", ATTR{idProduct}=="53c1", MODE="0666", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl", SYMLINK+="trezor%n" +KERNEL=="hidraw*", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="53c0", MODE="0666", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl" +KERNEL=="hidraw*", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="53c1", MODE="0666", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl" # TREZOR Raspberry Pi Shield -SUBSYSTEM=="usb", ATTR{idVendor}=="10c4", ATTR{idProduct}=="ea80", MODE="0666", GROUP="dialout", SYMLINK+="trezor%n" -KERNEL=="hidraw*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea80", MODE="0666", GROUP="dialout" +SUBSYSTEM=="usb", ATTR{idVendor}=="10c4", ATTR{idProduct}=="ea80", MODE="0666", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl", SYMLINK+="trezor%n" +KERNEL=="hidraw*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea80", MODE="0666", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl" From c41f84e221f0fc370fcad399541f6fff00f717b8 Mon Sep 17 00:00:00 2001 From: "Lance R. Vick" Date: Sun, 24 Sep 2017 05:33:59 -0700 Subject: [PATCH 203/767] Set udev permissions to 0660 (#45) --- udev/51-trezor.rules | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/udev/51-trezor.rules b/udev/51-trezor.rules index 67b0f9562..6d675fe2c 100644 --- a/udev/51-trezor.rules +++ b/udev/51-trezor.rules @@ -3,15 +3,15 @@ # Put this file into /usr/lib/udev/rules.d # TREZOR -SUBSYSTEM=="usb", ATTR{idVendor}=="534c", ATTR{idProduct}=="0001", MODE="0666", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl", SYMLINK+="trezor%n" -KERNEL=="hidraw*", ATTRS{idVendor}=="534c", ATTRS{idProduct}=="0001", MODE="0666", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl" +SUBSYSTEM=="usb", ATTR{idVendor}=="534c", ATTR{idProduct}=="0001", MODE="0660", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl", SYMLINK+="trezor%n" +KERNEL=="hidraw*", ATTRS{idVendor}=="534c", ATTRS{idProduct}=="0001", MODE="0660", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl" # TREZOR v2 -SUBSYSTEM=="usb", ATTR{idVendor}=="1209", ATTR{idProduct}=="53c0", MODE="0666", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl", SYMLINK+="trezor%n" -SUBSYSTEM=="usb", ATTR{idVendor}=="1209", ATTR{idProduct}=="53c1", MODE="0666", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl", SYMLINK+="trezor%n" -KERNEL=="hidraw*", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="53c0", MODE="0666", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl" -KERNEL=="hidraw*", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="53c1", MODE="0666", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl" +SUBSYSTEM=="usb", ATTR{idVendor}=="1209", ATTR{idProduct}=="53c0", MODE="0660", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl", SYMLINK+="trezor%n" +SUBSYSTEM=="usb", ATTR{idVendor}=="1209", ATTR{idProduct}=="53c1", MODE="0660", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl", SYMLINK+="trezor%n" +KERNEL=="hidraw*", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="53c0", MODE="0660", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl" +KERNEL=="hidraw*", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="53c1", MODE="0660", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl" # TREZOR Raspberry Pi Shield -SUBSYSTEM=="usb", ATTR{idVendor}=="10c4", ATTR{idProduct}=="ea80", MODE="0666", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl", SYMLINK+="trezor%n" -KERNEL=="hidraw*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea80", MODE="0666", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl" +SUBSYSTEM=="usb", ATTR{idVendor}=="10c4", ATTR{idProduct}=="ea80", MODE="0660", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl", SYMLINK+="trezor%n" +KERNEL=="hidraw*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea80", MODE="0660", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl" From f8e6b1ec434f0096053ef44340f905a0c434f012 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20Nov=C3=A1=C4=8Dek?= Date: Tue, 3 Oct 2017 08:30:37 +0200 Subject: [PATCH 204/767] change BCH address prefix (#44) --- coins.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/coins.json b/coins.json index 427176feb..d984aaa6d 100644 --- a/coins.json +++ b/coins.json @@ -73,7 +73,7 @@ "dust_limit": 546, "blocktime_minutes": 10, "firmware": "stable", - "address_prefix": "bitcoin:", + "address_prefix": "bitcoincash:", "min_address_length": 27, "max_address_length": 34 }, @@ -97,7 +97,7 @@ "dust_limit": 546, "blocktime_minutes": 10, "firmware": "debug", - "address_prefix": "bitcoin:", + "address_prefix": "bitcoincash:", "min_address_length": 27, "max_address_length": 34 }, From c20bb1c567ac0c1ddabf74354f204043eeacad10 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 3 Oct 2017 08:53:53 +0200 Subject: [PATCH 205/767] protob: add CoSi messages --- protob/messages.proto | 47 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/protob/messages.proto b/protob/messages.proto index 0f3c0327b..e73d7524b 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -80,6 +80,10 @@ enum MessageType { MessageType_NEMAddress = 68 [(wire_out) = true]; MessageType_NEMSignTx = 69 [(wire_in) = true]; MessageType_NEMSignedTx = 70 [(wire_out) = true]; + MessageType_CosiCommit = 71 [(wire_in) = true]; + MessageType_CosiCommitment = 72 [(wire_out) = true]; + MessageType_CosiSign = 73 [(wire_in) = true]; + MessageType_CosiSignature = 74 [(wire_out) = true]; MessageType_DebugLinkDecision = 100 [(wire_debug_in) = true, (wire_tiny) = true]; MessageType_DebugLinkGetState = 101 [(wire_debug_in) = true]; MessageType_DebugLinkState = 102 [(wire_debug_out) = true]; @@ -865,6 +869,49 @@ message NEMSignedTx { optional bytes signature = 2; // Signature for the transaction } +/////////////////// +// CoSi messages // +/////////////////// + +/** + * Request: Ask device to commit to CoSi signing + * @next CosiCommitment + * @next Failure + */ +message CosiCommit { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional bytes data = 2; // Data to be signed +} + +/** + * Response: Contains a CoSi commitment + * @prev CosiCommit + */ +message CosiCommitment { + optional bytes commitment = 1; // Commitment + optional bytes pubkey = 2; // Public key +} + +/** + * Request: Ask device to sign using CoSi + * @next CosiSignature + * @next Failure + */ +message CosiSign { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional bytes data = 2; // Data to be signed + optional bytes global_commitment = 3; // Aggregated commitment + optional bytes global_pubkey = 4; // Aggregated public key +} + +/** + * Response: Contains a CoSi signature + * @prev CosiSign + */ +message CosiSignature { + optional bytes signature = 1; // Signature +} + ///////////////////////////////////////////////////////////// // Debug messages (only available if DebugLink is enabled) // ///////////////////////////////////////////////////////////// From b2ce773f80a79999382e6838776d3d7125612249 Mon Sep 17 00:00:00 2001 From: Saleem Rashid Date: Sat, 7 Oct 2017 21:29:02 +0100 Subject: [PATCH 206/767] protob: Update @used_in to NEMSignTx --- protob/types.proto | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/protob/types.proto b/protob/types.proto index 48091f0cf..7da5831ac 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -273,7 +273,7 @@ message IdentityType { /** * Structure representing the common part for NEM transactions - * @used_in NEMTransaction + * @used_in NEMSignTx */ message NEMTransactionCommon { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node @@ -286,7 +286,7 @@ message NEMTransactionCommon { /** * Structure representing the transfer transaction part for NEM transactions - * @used_in NEMTransaction + * @used_in NEMSignTx */ message NEMTransfer { optional string recipient = 1; // Address of the recipient @@ -308,7 +308,7 @@ message NEMMosaic { /** * Structure representing the provision namespace part for NEM transactions - * @used_in NEMTransaction + * @used_in NEMSignTx */ message NEMProvisionNamespace { optional string namespace = 1; // New part concatenated to the parent @@ -328,7 +328,7 @@ enum NEMMosaicLevy { /** * Structure representing the mosaic definition creation part for NEM transactions - * @used_in NEMTransaction + * @used_in NEMSignTx */ message NEMMosaicCreation { optional NEMMosaicDefinition definition = 1; // Mosaic definition @@ -360,7 +360,7 @@ message NEMMosaicDefinition { /** * Structure representing the mosaic supply change part for NEM transactions - * @used_in NEMTransaction + * @used_in NEMSignTx */ message NEMMosaicSupplyChange { optional string namespace = 1; // Fully qualified name of the namespace @@ -380,7 +380,7 @@ enum NEMSupplyChangeType { /** * Structure representing the aggregate modification part for NEM transactions - * @used_in NEMTransaction + * @used_in NEMSignTx */ message NEMAggregateModification { repeated NEMCosignatoryModification modifications = 1; // Cosignatory modifications From b9a2a9c3defd8a4b84d674116cbae2cf46b6080b Mon Sep 17 00:00:00 2001 From: Saleem Rashid Date: Sat, 7 Oct 2017 21:32:36 +0100 Subject: [PATCH 207/767] protob: Add NEMImportanceTransfer --- protob/messages.proto | 1 + protob/types.proto | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/protob/messages.proto b/protob/messages.proto index e73d7524b..02f6f306a 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -858,6 +858,7 @@ message NEMSignTx { optional NEMMosaicCreation mosaic_creation = 6; // Mosaic definition creation part optional NEMMosaicSupplyChange supply_change = 7; // Mosaic supply change part optional NEMAggregateModification aggregate_modification = 8; // Aggregate modification part + optional NEMImportanceTransfer importance_transfer = 9; // Importance transfer part } /** diff --git a/protob/types.proto b/protob/types.proto index 7da5831ac..531125681 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -404,3 +404,21 @@ enum NEMModificationType { CosignatoryModification_Add = 1; CosignatoryModification_Delete = 2; } + +/** + * Structure representing the importance transfer part for NEM transactions + * @used_in NEMSignTx + */ +message NEMImportanceTransfer { + optional NEMImportanceTransferMode mode = 1; // Mode of importance transfer + optional bytes public_key = 2; // Public key of the remote account +} + +/** + * Mode of importance transfer + * @used_in NEMModificationType + */ +enum NEMImportanceTransferMode { + ImportanceTransfer_Activate = 1; + ImportanceTransfer_Deactivate = 2; +} From d4dfe126763e545287b4f73bdabed957857fa181 Mon Sep 17 00:00:00 2001 From: Szymon Lesisz Date: Thu, 12 Oct 2017 15:02:06 +0200 Subject: [PATCH 208/767] add Bitcore URLs and add coin_label to coins --- coins.json | 55 ++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 45 insertions(+), 10 deletions(-) diff --git a/coins.json b/coins.json index d984aaa6d..64c774090 100644 --- a/coins.json +++ b/coins.json @@ -2,6 +2,7 @@ { "coin_name": "Bitcoin", "coin_shortcut": "BTC", + "coin_label": "Bitcoin", "address_type": 0, "address_type_p2sh": 5, "maxfee_kb": 500000, @@ -24,11 +25,16 @@ "firmware": "stable", "address_prefix": "bitcoin:", "min_address_length": 27, - "max_address_length": 34 + "max_address_length": 34, + "bitcore": [ + "https://btc-bitcore3.trezor.io", + "https://btc-bitcore1.trezor.io" + ] }, { "coin_name": "Testnet", "coin_shortcut": "TEST", + "coin_label": "Testnet", "address_type": 111, "address_type_p2sh": 196, "maxfee_kb": 10000000, @@ -48,11 +54,16 @@ "firmware": "stable", "address_prefix": "bitcoin:", "min_address_length": 27, - "max_address_length": 34 + "max_address_length": 34, + "bitcore": [ + "https://testnet-bitcore3.trezor.io", + "https://testnet-bitcore4.trezor.io" + ] }, { "coin_name": "Bcash", "coin_shortcut": "BCH", + "coin_label": "Bitcoin Cash", "address_type": 0, "address_type_p2sh": 5, "maxfee_kb": 500000, @@ -75,11 +86,15 @@ "firmware": "stable", "address_prefix": "bitcoincash:", "min_address_length": 27, - "max_address_length": 34 + "max_address_length": 34, + "bitcore": [ + "https://bch-bitcore2.trezor.io" + ] }, { "coin_name": "Bcash Testnet", "coin_shortcut": "TBCH", + "coin_label": "Bitcoin Cash Testnet", "address_type": 111, "address_type_p2sh": 196, "maxfee_kb": 10000000, @@ -99,11 +114,13 @@ "firmware": "debug", "address_prefix": "bitcoincash:", "min_address_length": 27, - "max_address_length": 34 + "max_address_length": 34, + "bitcore": [] }, { "coin_name": "Namecoin", "coin_shortcut": "NMC", + "coin_label": "Namecoin", "address_type": 52, "address_type_p2sh": 5, "maxfee_kb": 10000000, @@ -123,11 +140,13 @@ "firmware": "stable", "address_prefix": "namecoin:", "min_address_length": 27, - "max_address_length": 34 + "max_address_length": 34, + "bitcore": [] }, { "coin_name": "Litecoin", "coin_shortcut": "LTC", + "coin_label": "Litecoin", "address_type": 48, "address_type_p2sh": 50, "maxfee_kb": 40000000, @@ -147,11 +166,15 @@ "firmware": "stable", "address_prefix": "litecoin:", "min_address_length": 27, - "max_address_length": 34 + "max_address_length": 34, + "bitcore": [ + "https://ltc-bitcore3.trezor.io" + ] }, { "coin_name": "Dogecoin", "coin_shortcut": "DOGE", + "coin_label": "Dogecoin", "address_type": 30, "address_type_p2sh": 22, "maxfee_kb": 1000000000, @@ -171,11 +194,13 @@ "firmware": "stable", "address_prefix": "dogecoin:", "min_address_length": 27, - "max_address_length": 34 + "max_address_length": 34, + "bitcore": [] }, { "coin_name": "Dash", "coin_shortcut": "DASH", + "coin_label": "Dash", "address_type": 76, "address_type_p2sh": 16, "maxfee_kb": 100000, @@ -195,11 +220,16 @@ "firmware": "stable", "address_prefix": "dash:", "min_address_length": 27, - "max_address_length": 34 + "max_address_length": 34, + "bitcore": [ + "https://dash-bitcore1.trezor.io", + "https://dash-bitcore3.trezor.io" + ] }, { "coin_name": "Zcash", "coin_shortcut": "ZEC", + "coin_label": "Zcash", "address_type": 7352, "address_type_p2sh": 7357, "maxfee_kb": 1000000, @@ -219,11 +249,15 @@ "firmware": "stable", "address_prefix": "zcash:", "min_address_length": 35, - "max_address_length": 95 + "max_address_length": 95, + "bitcore": [ + "https://zec-bitcore1.trezor.io/" + ] }, { "coin_name": "Zcash Testnet", "coin_shortcut": "TAZ", + "coin_label": "Zcash Testnet", "address_type": 7461, "address_type_p2sh": 7354, "maxfee_kb": 10000000, @@ -243,6 +277,7 @@ "firmware": "debug", "address_prefix": "zcash:", "min_address_length": 35, - "max_address_length": 95 + "max_address_length": 95, + "bitcore": [] } ] From 2ac76d1cd19db1687e8ba0b2a9be7f21dc1ab9f5 Mon Sep 17 00:00:00 2001 From: Szymon Lesisz Date: Thu, 12 Oct 2017 15:02:06 +0200 Subject: [PATCH 209/767] add magic for segwit xpubs --- coins.json | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/coins.json b/coins.json index 64c774090..5fbabcd85 100644 --- a/coins.json +++ b/coins.json @@ -9,8 +9,9 @@ "minfee_kb": 1000, "signed_message_header": "Bitcoin Signed Message:\n", "hash_genesis_block": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", - "xpub_magic": "0488b21e", "xprv_magic": "0488ade4", + "xpub_magic": "0488b21e", + "xpub_magic_segwit_p2sh": "049d7cb2", "bip44": 0, "segwit": true, "forkid": null, @@ -27,7 +28,7 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [ - "https://btc-bitcore3.trezor.io", + "https://btc-bitcore3.trezor.io", "https://btc-bitcore1.trezor.io" ] }, @@ -41,8 +42,9 @@ "minfee_kb": 1000, "signed_message_header": "Bitcoin Signed Message:\n", "hash_genesis_block": "000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943", - "xpub_magic": "043587cf", "xprv_magic": "04358394", + "xpub_magic": "043587cf", + "xpub_magic_segwit_p2sh": "043587cf", "bip44": 1, "segwit": true, "forkid": null, @@ -70,8 +72,8 @@ "minfee_kb": 1000, "signed_message_header": "Bitcoin Signed Message:\n", "hash_genesis_block": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", - "xpub_magic": "0488b21e", "xprv_magic": "0488ade4", + "xpub_magic": "0488b21e", "bip44": 145, "segwit": false, "forkid": 0, @@ -101,8 +103,8 @@ "minfee_kb": 1000, "signed_message_header": "Bitcoin Signed Message:\n", "hash_genesis_block": "000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943", - "xpub_magic": "043587cf", "xprv_magic": "04358394", + "xpub_magic": "043587cf", "bip44": 1, "segwit": false, "forkid": 0, @@ -127,8 +129,8 @@ "minfee_kb": 1000, "signed_message_header": "Namecoin Signed Message:\n", "hash_genesis_block": "000000000062b72c5e2ceb45fbc8587e807c155b0da735e6483dfba2f0a9c770", - "xpub_magic": "019da462", "xprv_magic": "019d9cfe", + "xpub_magic": "019da462", "bip44": 7, "segwit": false, "forkid": null, @@ -153,8 +155,9 @@ "minfee_kb": 100000, "signed_message_header": "Litecoin Signed Message:\n", "hash_genesis_block": "12a765e31ffd4059bada1e25190f6e98c99d9714d334efa41a195a7e7e04bfe2", - "xpub_magic": "019da462", "xprv_magic": "019d9cfe", + "xpub_magic": "019da462", + "xpub_magic_segwit_p2sh": "01b26ef6", "bip44": 2, "segwit": true, "forkid": null, @@ -181,8 +184,8 @@ "minfee_kb": 1000, "signed_message_header": "Dogecoin Signed Message:\n", "hash_genesis_block": "1a91e3dace36e2be3bf030a65679fe821aa1d6ef92e7c9902eb318182c355691", - "xpub_magic": "02facafd", "xprv_magic": "02fac398", + "xpub_magic": "02facafd", "bip44": 3, "segwit": false, "forkid": null, @@ -207,8 +210,8 @@ "minfee_kb": 10000, "signed_message_header": "DarkCoin Signed Message:\n", "hash_genesis_block": "00000ffd590b1485b3caadc19b22e6379c733355108f107a430458cdf3407ab6", - "xpub_magic": "02fe52cc", "xprv_magic": "02fe52f8", + "xpub_magic": "02fe52cc", "bip44": 5, "segwit": false, "forkid": null, @@ -236,8 +239,8 @@ "minfee_kb": 1000, "signed_message_header": "Zcash Signed Message:\n", "hash_genesis_block": "00040fe8ec8471911baa1db1266ea15dd06b4a8a5c453883c000b031973dce08", - "xpub_magic": "0488b21e", "xprv_magic": "0488ade4", + "xpub_magic": "0488b21e", "bip44": 133, "segwit": false, "forkid": null, @@ -264,8 +267,8 @@ "minfee_kb": 1000, "signed_message_header": "Zcash Signed Message:\n", "hash_genesis_block": "05a60a92d99d85997cce3b87616c089f6124d7342af37106edc76126334a2c38", - "xpub_magic": "043587cf", "xprv_magic": "04358394", + "xpub_magic": "043587cf", "bip44": 1, "segwit": false, "forkid": null, From 0c85bc8ebc2c5805e2b533effe9137252366b9ab Mon Sep 17 00:00:00 2001 From: Dhruv Bansal Date: Mon, 23 Oct 2017 08:25:03 -0500 Subject: [PATCH 210/767] Add *.unchained-capital.com to domain whitelist (#49) --- signer/config.json | 1 + 1 file changed, 1 insertion(+) diff --git a/signer/config.json b/signer/config.json index 641674fd5..b55ff6e42 100644 --- a/signer/config.json +++ b/signer/config.json @@ -16,6 +16,7 @@ "https://dash\\.run(/.*)?", "https://[\\w\\.-]+\\.dash\\.run(/.*)?", "https://0xproject\\.com(/.*)?", + "https://[\\w\\.-]+\\.unchained-capital\\.com(/.*)?", "chrome-extension://jcjjhjgimijdkoamemaghajlhegmoclj(/.*)?" ], "blacklist_urls": [ From 5761ea237d2ddcfde91f00a823ab3223024a237f Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 23 Oct 2017 15:34:17 +0200 Subject: [PATCH 211/767] effectively disable expiry field --- signer/config.json | 3 +-- signer/sign.py | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/signer/config.json b/signer/config.json index b55ff6e42..1a3186b39 100644 --- a/signer/config.json +++ b/signer/config.json @@ -25,6 +25,5 @@ ["0x534c", "0x0001", "Trezor"], ["0x1209", "0x53c0", "Trezor2 Bootloader"], ["0x1209", "0x53c1", "Trezor2"] - ], - "valid_days": 180 + ] } diff --git a/signer/sign.py b/signer/sign.py index 346370e34..31bf26e6d 100755 --- a/signer/sign.py +++ b/signer/sign.py @@ -40,7 +40,7 @@ def compose_message(json, proto): import config_pb2 cfg = config_pb2.Configuration() - cfg.valid_until = int(time.time()) + json['valid_days'] * 3600 * 24 + cfg.valid_until = 2147483647 # maxint cfg.wire_protocol.MergeFrom(proto) for url in json['whitelist_urls']: From 36ce303e4e2599bfc4e32f4ae7dd0cf1a374f45f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20B=C3=ADlek?= Date: Tue, 17 Oct 2017 22:13:26 +0200 Subject: [PATCH 212/767] Adding bitcoin2x .. --- coins.json | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/coins.json b/coins.json index 5fbabcd85..2fdfde8ba 100644 --- a/coins.json +++ b/coins.json @@ -282,5 +282,34 @@ "min_address_length": 35, "max_address_length": 95, "bitcore": [] -} -] +}, { + "coin_name": "Bitcoin", + "coin_shortcut": "BTC", + "coin_label": "Bitcoin Segwit2x", + "address_type": 0, + "address_type_p2sh": 5, + "maxfee_kb": 500000, + "minfee_kb": 1000, + "signed_message_header": "Bitcoin Signed Message:\n", + "hash_genesis_block": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", + "xpub_magic": "0488b21e", + "xprv_magic": "0488ade4", + "bip44": 157, + "segwit": true, + "forkid": null, + "default_fee_b": { + "Low": 10, + "Economy": 70, + "Normal": 140, + "High": 200 + }, + "dust_limit": 546, + "blocktime_minutes": 10, + "firmware": null, + "address_prefix": "bitcoin:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "https://2x-bitcore4.trezor.io" + ] +}] From 55b80137981b64d70d2378207ff5f5029c1bf992 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Sat, 28 Oct 2017 18:06:28 +0200 Subject: [PATCH 213/767] coins.json: use upub prefix for bitcoin testnet segwit --- coins.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coins.json b/coins.json index 5fbabcd85..140e71d5a 100644 --- a/coins.json +++ b/coins.json @@ -44,7 +44,7 @@ "hash_genesis_block": "000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943", "xprv_magic": "04358394", "xpub_magic": "043587cf", - "xpub_magic_segwit_p2sh": "043587cf", + "xpub_magic_segwit_p2sh": "044a5262", "bip44": 1, "segwit": true, "forkid": null, From 026aa4a9ea176974ec9bb506d9af1a322d0e1bb9 Mon Sep 17 00:00:00 2001 From: Jochen Hoenicke Date: Fri, 3 Nov 2017 18:50:17 +0100 Subject: [PATCH 214/767] Added bech32_prefix fields (#52) --- coins.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/coins.json b/coins.json index 6aba22f01..087bb2126 100644 --- a/coins.json +++ b/coins.json @@ -12,6 +12,7 @@ "xprv_magic": "0488ade4", "xpub_magic": "0488b21e", "xpub_magic_segwit_p2sh": "049d7cb2", + "bech32_prefix": "bc", "bip44": 0, "segwit": true, "forkid": null, @@ -45,6 +46,7 @@ "xprv_magic": "04358394", "xpub_magic": "043587cf", "xpub_magic_segwit_p2sh": "044a5262", + "bech32_prefix": "tb", "bip44": 1, "segwit": true, "forkid": null, @@ -74,6 +76,7 @@ "hash_genesis_block": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", "xprv_magic": "0488ade4", "xpub_magic": "0488b21e", + "bech32_prefix": null, "bip44": 145, "segwit": false, "forkid": 0, @@ -105,6 +108,7 @@ "hash_genesis_block": "000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943", "xprv_magic": "04358394", "xpub_magic": "043587cf", + "bech32_prefix": null, "bip44": 1, "segwit": false, "forkid": 0, @@ -131,6 +135,7 @@ "hash_genesis_block": "000000000062b72c5e2ceb45fbc8587e807c155b0da735e6483dfba2f0a9c770", "xprv_magic": "019d9cfe", "xpub_magic": "019da462", + "bech32_prefix": null, "bip44": 7, "segwit": false, "forkid": null, @@ -158,6 +163,7 @@ "xprv_magic": "019d9cfe", "xpub_magic": "019da462", "xpub_magic_segwit_p2sh": "01b26ef6", + "bech32_prefix": "ltc", "bip44": 2, "segwit": true, "forkid": null, @@ -186,6 +192,7 @@ "hash_genesis_block": "1a91e3dace36e2be3bf030a65679fe821aa1d6ef92e7c9902eb318182c355691", "xprv_magic": "02fac398", "xpub_magic": "02facafd", + "bech32_prefix": null, "bip44": 3, "segwit": false, "forkid": null, @@ -212,6 +219,7 @@ "hash_genesis_block": "00000ffd590b1485b3caadc19b22e6379c733355108f107a430458cdf3407ab6", "xprv_magic": "02fe52f8", "xpub_magic": "02fe52cc", + "bech32_prefix": null, "bip44": 5, "segwit": false, "forkid": null, @@ -241,6 +249,7 @@ "hash_genesis_block": "00040fe8ec8471911baa1db1266ea15dd06b4a8a5c453883c000b031973dce08", "xprv_magic": "0488ade4", "xpub_magic": "0488b21e", + "bech32_prefix": null, "bip44": 133, "segwit": false, "forkid": null, @@ -269,6 +278,7 @@ "hash_genesis_block": "05a60a92d99d85997cce3b87616c089f6124d7342af37106edc76126334a2c38", "xprv_magic": "04358394", "xpub_magic": "043587cf", + "bech32_prefix": null, "bip44": 1, "segwit": false, "forkid": null, From e1fbae35d41ac009b44715ffa122b9e9909d28f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20B=C3=ADlek?= Date: Wed, 8 Nov 2017 14:50:37 +0100 Subject: [PATCH 215/767] Renaming BTC->B2X --- coins.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coins.json b/coins.json index 087bb2126..463036037 100644 --- a/coins.json +++ b/coins.json @@ -294,7 +294,7 @@ "bitcore": [] }, { "coin_name": "Bitcoin", - "coin_shortcut": "BTC", + "coin_shortcut": "B2X", "coin_label": "Bitcoin Segwit2x", "address_type": 0, "address_type_p2sh": 5, From b5423a606cd0f78ec95b9fc31908887950cfb0d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20B=C3=ADlek?= Date: Wed, 8 Nov 2017 15:03:50 +0100 Subject: [PATCH 216/767] Correcting Bitcoin2x coin name --- coins.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coins.json b/coins.json index 463036037..fd88ab2c5 100644 --- a/coins.json +++ b/coins.json @@ -295,7 +295,7 @@ }, { "coin_name": "Bitcoin", "coin_shortcut": "B2X", - "coin_label": "Bitcoin Segwit2x", + "coin_label": "Bitcoin2x", "address_type": 0, "address_type_p2sh": 5, "maxfee_kb": 500000, From c9cc3537aae54f36f1225c56fe0d3c44c3618bc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20B=C3=ADlek?= Date: Wed, 8 Nov 2017 16:41:26 +0100 Subject: [PATCH 217/767] Bitcoin2x xpub segwit magic --- coins.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/coins.json b/coins.json index fd88ab2c5..85a70b498 100644 --- a/coins.json +++ b/coins.json @@ -302,8 +302,9 @@ "minfee_kb": 1000, "signed_message_header": "Bitcoin Signed Message:\n", "hash_genesis_block": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", - "xpub_magic": "0488b21e", "xprv_magic": "0488ade4", + "xpub_magic": "0488b21e", + "xpub_magic_segwit_p2sh": "049d7cb2", "bip44": 157, "segwit": true, "forkid": null, From 9c1e61e4608e1d49043fb668eb9c7621fcc20648 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20B=C3=ADlek?= Date: Wed, 8 Nov 2017 18:42:53 +0100 Subject: [PATCH 218/767] Removing Bitcoin2x from coins.json Goodbye, Bitcoin2x, we hardly even knew you. --- coins.json | 31 ------------------------------- 1 file changed, 31 deletions(-) diff --git a/coins.json b/coins.json index 85a70b498..c88806ca1 100644 --- a/coins.json +++ b/coins.json @@ -292,35 +292,4 @@ "min_address_length": 35, "max_address_length": 95, "bitcore": [] -}, { - "coin_name": "Bitcoin", - "coin_shortcut": "B2X", - "coin_label": "Bitcoin2x", - "address_type": 0, - "address_type_p2sh": 5, - "maxfee_kb": 500000, - "minfee_kb": 1000, - "signed_message_header": "Bitcoin Signed Message:\n", - "hash_genesis_block": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", - "xprv_magic": "0488ade4", - "xpub_magic": "0488b21e", - "xpub_magic_segwit_p2sh": "049d7cb2", - "bip44": 157, - "segwit": true, - "forkid": null, - "default_fee_b": { - "Low": 10, - "Economy": 70, - "Normal": 140, - "High": 200 - }, - "dust_limit": 546, - "blocktime_minutes": 10, - "firmware": null, - "address_prefix": "bitcoin:", - "min_address_length": 27, - "max_address_length": 34, - "bitcore": [ - "https://2x-bitcore4.trezor.io" - ] }] From 6701821fb9faeae739c9f3ccb3ddbd090c47acf1 Mon Sep 17 00:00:00 2001 From: Saleem Rashid Date: Tue, 31 Oct 2017 20:56:39 +0000 Subject: [PATCH 219/767] coins: Add force_bip143 --- coins.json | 10 ++++++++++ protob/types.proto | 1 + 2 files changed, 11 insertions(+) diff --git a/coins.json b/coins.json index c88806ca1..db1e0aade 100644 --- a/coins.json +++ b/coins.json @@ -16,6 +16,7 @@ "bip44": 0, "segwit": true, "forkid": null, + "force_bip143": false, "default_fee_b": { "Low": 10, "Economy": 70, @@ -50,6 +51,7 @@ "bip44": 1, "segwit": true, "forkid": null, + "force_bip143": false, "default_fee_b": { "Normal": 10 }, @@ -80,6 +82,7 @@ "bip44": 145, "segwit": false, "forkid": 0, + "force_bip143": true, "default_fee_b": { "Low": 10, "Economy": 70, @@ -112,6 +115,7 @@ "bip44": 1, "segwit": false, "forkid": 0, + "force_bip143": true, "default_fee_b": { "Normal": 10 }, @@ -139,6 +143,7 @@ "bip44": 7, "segwit": false, "forkid": null, + "force_bip143": false, "default_fee_b": { "Normal": 10 }, @@ -167,6 +172,7 @@ "bip44": 2, "segwit": true, "forkid": null, + "force_bip143": false, "default_fee_b": { "Normal": 1000 }, @@ -196,6 +202,7 @@ "bip44": 3, "segwit": false, "forkid": null, + "force_bip143": false, "default_fee_b": { "Normal": 10 }, @@ -223,6 +230,7 @@ "bip44": 5, "segwit": false, "forkid": null, + "force_bip143": false, "default_fee_b": { "Normal": 10 }, @@ -253,6 +261,7 @@ "bip44": 133, "segwit": false, "forkid": null, + "force_bip143": false, "default_fee_b": { "Normal": 10 }, @@ -282,6 +291,7 @@ "bip44": 1, "segwit": false, "forkid": null, + "force_bip143": false, "default_fee_b": { "Normal": 10 }, diff --git a/protob/types.proto b/protob/types.proto index 531125681..a6aaeee5a 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -170,6 +170,7 @@ message CoinType { optional uint32 xprv_magic = 10 [default=76066276]; // default=0x0488ade4 optional bool segwit = 11; optional uint32 forkid = 12; + optional bool force_bip143 = 13; } /** From 782ac45158c5c92bd74ceb89ad58121cbb56edd0 Mon Sep 17 00:00:00 2001 From: Saleem Rashid Date: Tue, 31 Oct 2017 20:59:07 +0000 Subject: [PATCH 220/767] coins: Add Bitcoin Gold --- coins.json | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/coins.json b/coins.json index db1e0aade..a65a12308 100644 --- a/coins.json +++ b/coins.json @@ -302,4 +302,37 @@ "min_address_length": 35, "max_address_length": 95, "bitcore": [] -}] +}, +{ + "coin_name": "Bitcoin Gold", + "coin_shortcut": "BTG", + "coin_label": "Bitcoin Gold", + "address_type": 38, + "address_type_p2sh": 23, + "maxfee_kb": 500000, + "minfee_kb": 1000, + "signed_message_header": "Bitcoin Gold Signed Message:\n", + "hash_genesis_block": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", + "xprv_magic": "0488ade4", + "xpub_magic": "0488b21e", + "xpub_magic_segwit_p2sh": "049d7cb2", + "bech32_prefix": "btg", + "bip44": 156, + "segwit": true, + "forkid": 79, + "force_bip143": true, + "default_fee_b": { + "Low": 10, + "Economy": 70, + "Normal": 140, + "High": 200 + }, + "dust_limit": 546, + "blocktime_minutes": 10, + "firmware": "stable", + "address_prefix": "bitcoingold:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [] +} +] From ff32a2e8a6a6bb7d394d4974817de1a8fb36f863 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20B=C3=ADlek?= Date: Sun, 12 Nov 2017 01:40:40 +0100 Subject: [PATCH 221/767] Increase maxfee for bitcoin --- coins.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coins.json b/coins.json index a65a12308..f26659a4e 100644 --- a/coins.json +++ b/coins.json @@ -5,7 +5,7 @@ "coin_label": "Bitcoin", "address_type": 0, "address_type_p2sh": 5, - "maxfee_kb": 500000, + "maxfee_kb": 2000000, "minfee_kb": 1000, "signed_message_header": "Bitcoin Signed Message:\n", "hash_genesis_block": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", From 193be4d4a50eba25dda231dffe4eaceb94b3a4ff Mon Sep 17 00:00:00 2001 From: DigiByte Date: Fri, 27 Oct 2017 10:19:51 -0500 Subject: [PATCH 222/767] add DigiByte to coins.json --- coins.json | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/coins.json b/coins.json index f26659a4e..4a32a080d 100644 --- a/coins.json +++ b/coins.json @@ -334,5 +334,36 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [] +}, +{ + "coin_name": "DigiByte", + "coin_shortcut": "DGB", + "coin_label": "DigiByte", + "address_type": 30, + "address_type_p2sh": 5, + "maxfee_kb": 500000, + "minfee_kb": 1000, + "signed_message_header": "DigiByte Signed Message:\n", + "hash_genesis_block": "7497ea1b465eb39f1c8f507bc877078fe016d6fcb6dfad3a64c98dcc6e1e8496", + "xprv_magic": "0488ade4", + "xpub_magic": "0488b21e", + "xpub_magic_segwit_p2sh": "049d7cb2", + "bip44": 20, + "segwit": true, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Low": 10, + "Economy": 70, + "Normal": 140, + "High": 200 + }, + "dust_limit": 546, + "blocktime_minutes": 0.25, + "firmware": "stable", + "address_prefix": "digibyte:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [] } ] From 9c21bc758e90e7380fe7166c0628bf9375d3899f Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 13 Nov 2017 21:46:06 +0100 Subject: [PATCH 223/767] add digiexplorer to digicoin in coins.json --- coins.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/coins.json b/coins.json index 4a32a080d..14e0e96f6 100644 --- a/coins.json +++ b/coins.json @@ -364,6 +364,8 @@ "address_prefix": "digibyte:", "min_address_length": 27, "max_address_length": 34, - "bitcore": [] + "bitcore": [ + "https://digiexplorer.info" + ] } ] From 7325936f8612ce1cadff6cfb0c0045b3668c3260 Mon Sep 17 00:00:00 2001 From: cryptcoin-junkey Date: Tue, 20 Jun 2017 13:00:24 +0900 Subject: [PATCH 224/767] add Monacoin to coins.json --- coins.json | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/coins.json b/coins.json index 14e0e96f6..68eb6d644 100644 --- a/coins.json +++ b/coins.json @@ -348,6 +348,7 @@ "xprv_magic": "0488ade4", "xpub_magic": "0488b21e", "xpub_magic_segwit_p2sh": "049d7cb2", + "bech32_prefix": "dgb", "bip44": 20, "segwit": true, "forkid": null, @@ -367,5 +368,35 @@ "bitcore": [ "https://digiexplorer.info" ] +}, +{ + "coin_name": "Monacoin", + "coin_shortcut": "MONA", + "address_type": 50, + "address_type_p2sh": 55, + "maxfee_kb": 5000000, + "minfee_kb": 100000, + "signed_message_header": "Monacoin Signed Message:\n", + "hash_genesis_block": "ff9f1c0116d19de7c9963845e129f9ed1bfc0b376eb54fd7afa42e0d418c8bb6", + "xpub_magic": "0488b21e", + "xprv_magic": "0488ade4", + "xpub_magic_segwit_p2sh": "049d7cb2", + "bech32_prefix": "mona", + "bip44": 22, + "segwit": true, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 100000 + }, + "dust_limit": 54600, + "blocktime_minutes": 1.5, + "firmware": "stable", + "address_prefix": "monacoin:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "https://mona.chainsight.info" + ] } ] From 21ea45bc0e90d055315c5325225d16a76a922bc0 Mon Sep 17 00:00:00 2001 From: motty Date: Tue, 14 Nov 2017 07:54:30 +0900 Subject: [PATCH 225/767] Add Fujicoin --- coins.json | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/coins.json b/coins.json index 68eb6d644..a2b3e2bd9 100644 --- a/coins.json +++ b/coins.json @@ -398,5 +398,34 @@ "bitcore": [ "https://mona.chainsight.info" ] +}, +{ + "coin_name": "Fujicoin", + "coin_shortcut": "FJC", + "address_type": 36, + "address_type_p2sh": 16, + "maxfee_kb": 1000000, + "minfee_kb": 100000, + "signed_message_header": "FujiCoin Signed Message:\n", + "hash_genesis_block": "adb6d9cfd74075e7f91608add4bd2a2ea636f70856183086842667a1597714a0", + "xpub_magic": "0488b21e", + "xprv_magic": "0488ade4", + "bech32_prefix": null, + "bip44": 75, + "segwit": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 100000 + }, + "dust_limit": 100000, + "blocktime_minutes": 1.0, + "firmware": "stable", + "address_prefix": "fujicoin:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "http://explorer.fujicoin.org/" + ] } ] From 05ab19e58e79ed683729912ff67a95be66326d61 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 14 Nov 2017 02:18:28 +0100 Subject: [PATCH 226/767] add travis check for coins.json --- .travis.yml | 23 +++++++++++++++++++++++ README.md | 3 ++- coins-check.py | 42 ++++++++++++++++++++++++++++++++++++++++++ coins.json | 10 ++++++++++ 4 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 .travis.yml create mode 100755 coins-check.py diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..cdb1c751e --- /dev/null +++ b/.travis.yml @@ -0,0 +1,23 @@ +language: python + +# Runs jobs on container based infrastructure +sudo: false + +# Saves pip downloads/wheels between builds +cache: + directories: + - $HOME/.cache/pip + +python: + - "3.5" + +script: + - python coins-check.py + +notifications: + webhooks: + urls: + - http://ci-bot.satoshilabs.com:5000/travis + on_success: always + on_failure: always + on_start: always diff --git a/README.md b/README.md index c324b05e8..2a5bf751a 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ # trezor-common -[![gitter](https://badges.gitter.im/trezor/community.svg)](https://gitter.im/trezor/community) +[![Build Status](https://travis-ci.org/trezor/trezor-common.svg?branch=master)](https://travis-ci.org/trezor/trezor-common) +[![Gitter](https://badges.gitter.im/trezor/community.svg)](https://gitter.im/trezor/community) Common files shared among TREZOR repositories. diff --git a/coins-check.py b/coins-check.py new file mode 100755 index 000000000..94dab8755 --- /dev/null +++ b/coins-check.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python3 +import json + + +def is_hex(val): + try: + int(val, 16) + return True + except: + return False + + +for coin in json.load(open('coins.json')): + assert isinstance(coin['coin_name'], str) + assert isinstance(coin['coin_shortcut'], str) + assert isinstance(coin['coin_label'], str) + assert isinstance(coin['address_type'], int) + assert isinstance(coin['address_type_p2sh'], int) + assert coin['address_type'] != coin['address_type_p2sh'] + assert isinstance(coin['maxfee_kb'], int) + assert isinstance(coin['minfee_kb'], int) + assert coin['maxfee_kb'] > coin['minfee_kb'] + assert coin['signed_message_header'] + assert is_hex(coin['hash_genesis_block']) + assert is_hex(coin['xprv_magic']) + assert is_hex(coin['xpub_magic']) + assert isinstance(coin['bip44'], int) + assert isinstance(coin['segwit'], bool) + assert coin['forkid'] is None or isinstance(coin['forkid'], int) + assert isinstance(coin['force_bip143'], bool) + assert isinstance(coin['default_fee_b'], dict) + assert isinstance(coin['dust_limit'], int) + assert isinstance(coin['blocktime_minutes'], int) or isinstance(coin['blocktime_minutes'], float) + assert coin['firmware'] is None or coin['firmware'] in ['stable', 'debug'] + assert isinstance(coin['signed_message_header'], str) + assert isinstance(coin['min_address_length'], int) + assert isinstance(coin['max_address_length'], int) + assert isinstance(coin['bitcore'], list) + assert coin['xpub_magic_segwit_p2sh'] is None or is_hex(coin['xpub_magic_segwit_p2sh']) + assert coin['bech32_prefix'] is None or isinstance(coin['bech32_prefix'], str) + +print('OK') diff --git a/coins.json b/coins.json index a2b3e2bd9..dcf210ce4 100644 --- a/coins.json +++ b/coins.json @@ -78,6 +78,7 @@ "hash_genesis_block": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", "xprv_magic": "0488ade4", "xpub_magic": "0488b21e", + "xpub_magic_segwit_p2sh": null, "bech32_prefix": null, "bip44": 145, "segwit": false, @@ -111,6 +112,7 @@ "hash_genesis_block": "000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943", "xprv_magic": "04358394", "xpub_magic": "043587cf", + "xpub_magic_segwit_p2sh": null, "bech32_prefix": null, "bip44": 1, "segwit": false, @@ -139,6 +141,7 @@ "hash_genesis_block": "000000000062b72c5e2ceb45fbc8587e807c155b0da735e6483dfba2f0a9c770", "xprv_magic": "019d9cfe", "xpub_magic": "019da462", + "xpub_magic_segwit_p2sh": null, "bech32_prefix": null, "bip44": 7, "segwit": false, @@ -198,6 +201,7 @@ "hash_genesis_block": "1a91e3dace36e2be3bf030a65679fe821aa1d6ef92e7c9902eb318182c355691", "xprv_magic": "02fac398", "xpub_magic": "02facafd", + "xpub_magic_segwit_p2sh": null, "bech32_prefix": null, "bip44": 3, "segwit": false, @@ -226,6 +230,7 @@ "hash_genesis_block": "00000ffd590b1485b3caadc19b22e6379c733355108f107a430458cdf3407ab6", "xprv_magic": "02fe52f8", "xpub_magic": "02fe52cc", + "xpub_magic_segwit_p2sh": null, "bech32_prefix": null, "bip44": 5, "segwit": false, @@ -257,6 +262,7 @@ "hash_genesis_block": "00040fe8ec8471911baa1db1266ea15dd06b4a8a5c453883c000b031973dce08", "xprv_magic": "0488ade4", "xpub_magic": "0488b21e", + "xpub_magic_segwit_p2sh": null, "bech32_prefix": null, "bip44": 133, "segwit": false, @@ -287,6 +293,7 @@ "hash_genesis_block": "05a60a92d99d85997cce3b87616c089f6124d7342af37106edc76126334a2c38", "xprv_magic": "04358394", "xpub_magic": "043587cf", + "xpub_magic_segwit_p2sh": null, "bech32_prefix": null, "bip44": 1, "segwit": false, @@ -372,6 +379,7 @@ { "coin_name": "Monacoin", "coin_shortcut": "MONA", + "coin_label": "Monacoin", "address_type": 50, "address_type_p2sh": 55, "maxfee_kb": 5000000, @@ -402,6 +410,7 @@ { "coin_name": "Fujicoin", "coin_shortcut": "FJC", + "coin_label": "Fujicoin", "address_type": 36, "address_type_p2sh": 16, "maxfee_kb": 1000000, @@ -410,6 +419,7 @@ "hash_genesis_block": "adb6d9cfd74075e7f91608add4bd2a2ea636f70856183086842667a1597714a0", "xpub_magic": "0488b21e", "xprv_magic": "0488ade4", + "xpub_magic_segwit_p2sh": null, "bech32_prefix": null, "bip44": 75, "segwit": false, From 452d210312bc67790e96be57040d4b7f23044255 Mon Sep 17 00:00:00 2001 From: Michal Novacek Date: Mon, 20 Nov 2017 15:15:17 +0100 Subject: [PATCH 227/767] add BTG bitcore address --- coins.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/coins.json b/coins.json index dcf210ce4..8732595da 100644 --- a/coins.json +++ b/coins.json @@ -340,7 +340,9 @@ "address_prefix": "bitcoingold:", "min_address_length": 27, "max_address_length": 34, - "bitcore": [] + "bitcore": [ + "https://btg-bitcore2.trezor.io" + ] }, { "coin_name": "DigiByte", From dc181b97b864cc667a11f7a82f2ef43eedb585a4 Mon Sep 17 00:00:00 2001 From: Jochen Hoenicke Date: Wed, 29 Nov 2017 22:48:21 +0100 Subject: [PATCH 228/767] Vertcoin support --- coins.json | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/coins.json b/coins.json index 8732595da..c185c11ae 100644 --- a/coins.json +++ b/coins.json @@ -439,5 +439,34 @@ "bitcore": [ "http://explorer.fujicoin.org/" ] +}, +{ + "coin_name": "Vertcoin", + "coin_shortcut": "VTC", + "coin_label": "Vertcoin", + "address_type": 71, + "address_type_p2sh": 5, + "maxfee_kb": 40000000, + "minfee_kb": 100000, + "signed_message_header": "Vertcoin Signed Message:\n", + "hash_genesis_block": "4d96a915f49d40b1e5c2844d1ee2dccb90013a990ccea12c492d22110489f0c4", + "xprv_magic": "0488ade4", + "xpub_magic": "0488b21e", + "xpub_magic_segwit_p2sh": "049d7cb2", + "bech32_prefix": "vtc", + "bip44": 28, + "segwit": true, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 1000 + }, + "dust_limit": 54600, + "blocktime_minutes": 2.5, + "firmware": "stable", + "address_prefix": "vertcoin:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [] } ] From df12bc5e2cfce757788d06b565394327ee4e42b9 Mon Sep 17 00:00:00 2001 From: Szymon Lesisz Date: Thu, 30 Nov 2017 14:47:13 +0100 Subject: [PATCH 229/767] changed testnet bitcore urls --- coins.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/coins.json b/coins.json index c185c11ae..6032e14e7 100644 --- a/coins.json +++ b/coins.json @@ -62,8 +62,8 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [ - "https://testnet-bitcore3.trezor.io", - "https://testnet-bitcore4.trezor.io" + "https://testnet-bitcore1.trezor.io", + "https://testnet-bitcore2.trezor.io" ] }, { From 8aca4dd2895b4a16c84f59bb45697129608580f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20B=C3=ADlek?= Date: Fri, 1 Dec 2017 23:16:54 +0100 Subject: [PATCH 230/767] Removing digiexplorer Digiexplorer's API is not working Websocket starts, but the query `getBlockHeader` times out. --- coins.json | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/coins.json b/coins.json index 6032e14e7..3334e1423 100644 --- a/coins.json +++ b/coins.json @@ -374,9 +374,7 @@ "address_prefix": "digibyte:", "min_address_length": 27, "max_address_length": 34, - "bitcore": [ - "https://digiexplorer.info" - ] + "bitcore": [] }, { "coin_name": "Monacoin", From 8e96b42260b84e1e0f0b00a5e528d19258c57031 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 4 Dec 2017 22:13:34 +0100 Subject: [PATCH 231/767] add Features.model --- protob/messages.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/protob/messages.proto b/protob/messages.proto index 02f6f306a..3efbcf116 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -139,6 +139,7 @@ message Features { optional bool firmware_present = 18; // is valid firmware loaded? optional bool needs_backup = 19; // does storage need backup? (equals to Storage.needs_backup) optional uint32 flags = 20; // device flags (equals to Storage.flags) + optional string model = 21; // device hardware model } /** From 4c6252962576e171d4ffa58120783df96e610e8d Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 5 Dec 2017 22:08:58 +0100 Subject: [PATCH 232/767] remove obsolete udev rule --- udev/51-trezor.rules | 4 ---- 1 file changed, 4 deletions(-) diff --git a/udev/51-trezor.rules b/udev/51-trezor.rules index 6d675fe2c..bd8a83809 100644 --- a/udev/51-trezor.rules +++ b/udev/51-trezor.rules @@ -11,7 +11,3 @@ SUBSYSTEM=="usb", ATTR{idVendor}=="1209", ATTR{idProduct}=="53c0", MODE="0660", SUBSYSTEM=="usb", ATTR{idVendor}=="1209", ATTR{idProduct}=="53c1", MODE="0660", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl", SYMLINK+="trezor%n" KERNEL=="hidraw*", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="53c0", MODE="0660", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl" KERNEL=="hidraw*", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="53c1", MODE="0660", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl" - -# TREZOR Raspberry Pi Shield -SUBSYSTEM=="usb", ATTR{idVendor}=="10c4", ATTR{idProduct}=="ea80", MODE="0660", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl", SYMLINK+="trezor%n" -KERNEL=="hidraw*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea80", MODE="0660", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl" From 8019bd2730ce7e4b2351e2441dbea38191ed14d9 Mon Sep 17 00:00:00 2001 From: Jochen Hoenicke Date: Wed, 13 Dec 2017 09:19:24 +0100 Subject: [PATCH 233/767] Storage.proto: Added u2f root key Cache U2F private key to avoid doing computation on seed when u2f is used. See issue trezor/trezor-mcu#251 --- protob/storage.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/protob/storage.proto b/protob/storage.proto index 1af164ccb..4b707d15d 100644 --- a/protob/storage.proto +++ b/protob/storage.proto @@ -25,4 +25,5 @@ message Storage { optional uint32 u2f_counter = 11; // sequence number for u2f authentications optional bool needs_backup = 12; // seed is not backed up yet optional uint32 flags = 13; // device flags + optional HDNodeType u2froot = 14; // U2F root node } From 8bd52248fab2c025e3970d0ba2cc32d39e13caa0 Mon Sep 17 00:00:00 2001 From: Saleem Rashid Date: Fri, 15 Dec 2017 20:06:38 +0000 Subject: [PATCH 234/767] protob: Add NEMDecryptMessage --- protob/messages.proto | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/protob/messages.proto b/protob/messages.proto index 3efbcf116..4faca73ea 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -84,6 +84,8 @@ enum MessageType { MessageType_CosiCommitment = 72 [(wire_out) = true]; MessageType_CosiSign = 73 [(wire_in) = true]; MessageType_CosiSignature = 74 [(wire_out) = true]; + MessageType_NEMDecryptMessage = 75 [(wire_in) = true]; + MessageType_NEMDecryptedMessage = 76 [(wire_out) = true]; MessageType_DebugLinkDecision = 100 [(wire_debug_in) = true, (wire_tiny) = true]; MessageType_DebugLinkGetState = 101 [(wire_debug_in) = true]; MessageType_DebugLinkState = 102 [(wire_debug_out) = true]; @@ -871,6 +873,26 @@ message NEMSignedTx { optional bytes signature = 2; // Signature for the transaction } +/** + * Request: Ask device to decrypt NEM transaction payload + * @next NEMDecryptedMessage + * @next Failure + */ +message NEMDecryptMessage { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional uint32 network = 2; // Network ID (0x68 = Mainnet, 0x98 = Testnet, 0x60 = Mijin) + optional bytes public_key = 3; // Public key of the other party + optional bytes payload = 4; // Actual message data (encrypted) +} + +/** + * Response: Contains decrypted NEM transaction payload + * @prev NEMDecryptMessage + */ +message NEMDecryptedMessage { + optional bytes payload = 1; // Actual message data (unencrypted) +} + /////////////////// // CoSi messages // /////////////////// From bfff18a634865d29589bb0eddc186544158b08d8 Mon Sep 17 00:00:00 2001 From: Saleem Rashid Date: Sun, 17 Dec 2017 21:56:13 +0000 Subject: [PATCH 235/767] coins: Add curve_name --- coins.json | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/coins.json b/coins.json index 3334e1423..e06645201 100644 --- a/coins.json +++ b/coins.json @@ -3,6 +3,7 @@ "coin_name": "Bitcoin", "coin_shortcut": "BTC", "coin_label": "Bitcoin", + "curve_name": "secp256k1", "address_type": 0, "address_type_p2sh": 5, "maxfee_kb": 2000000, @@ -38,6 +39,7 @@ "coin_name": "Testnet", "coin_shortcut": "TEST", "coin_label": "Testnet", + "curve_name": "secp256k1", "address_type": 111, "address_type_p2sh": 196, "maxfee_kb": 10000000, @@ -70,6 +72,7 @@ "coin_name": "Bcash", "coin_shortcut": "BCH", "coin_label": "Bitcoin Cash", + "curve_name": "secp256k1", "address_type": 0, "address_type_p2sh": 5, "maxfee_kb": 500000, @@ -104,6 +107,7 @@ "coin_name": "Bcash Testnet", "coin_shortcut": "TBCH", "coin_label": "Bitcoin Cash Testnet", + "curve_name": "secp256k1", "address_type": 111, "address_type_p2sh": 196, "maxfee_kb": 10000000, @@ -133,6 +137,7 @@ "coin_name": "Namecoin", "coin_shortcut": "NMC", "coin_label": "Namecoin", + "curve_name": "secp256k1", "address_type": 52, "address_type_p2sh": 5, "maxfee_kb": 10000000, @@ -162,6 +167,7 @@ "coin_name": "Litecoin", "coin_shortcut": "LTC", "coin_label": "Litecoin", + "curve_name": "secp256k1", "address_type": 48, "address_type_p2sh": 50, "maxfee_kb": 40000000, @@ -193,6 +199,7 @@ "coin_name": "Dogecoin", "coin_shortcut": "DOGE", "coin_label": "Dogecoin", + "curve_name": "secp256k1", "address_type": 30, "address_type_p2sh": 22, "maxfee_kb": 1000000000, @@ -222,6 +229,7 @@ "coin_name": "Dash", "coin_shortcut": "DASH", "coin_label": "Dash", + "curve_name": "secp256k1", "address_type": 76, "address_type_p2sh": 16, "maxfee_kb": 100000, @@ -254,6 +262,7 @@ "coin_name": "Zcash", "coin_shortcut": "ZEC", "coin_label": "Zcash", + "curve_name": "secp256k1", "address_type": 7352, "address_type_p2sh": 7357, "maxfee_kb": 1000000, @@ -285,6 +294,7 @@ "coin_name": "Zcash Testnet", "coin_shortcut": "TAZ", "coin_label": "Zcash Testnet", + "curve_name": "secp256k1", "address_type": 7461, "address_type_p2sh": 7354, "maxfee_kb": 10000000, @@ -314,6 +324,7 @@ "coin_name": "Bitcoin Gold", "coin_shortcut": "BTG", "coin_label": "Bitcoin Gold", + "curve_name": "secp256k1", "address_type": 38, "address_type_p2sh": 23, "maxfee_kb": 500000, @@ -348,6 +359,7 @@ "coin_name": "DigiByte", "coin_shortcut": "DGB", "coin_label": "DigiByte", + "curve_name": "secp256k1", "address_type": 30, "address_type_p2sh": 5, "maxfee_kb": 500000, @@ -380,6 +392,7 @@ "coin_name": "Monacoin", "coin_shortcut": "MONA", "coin_label": "Monacoin", + "curve_name": "secp256k1", "address_type": 50, "address_type_p2sh": 55, "maxfee_kb": 5000000, @@ -411,6 +424,7 @@ "coin_name": "Fujicoin", "coin_shortcut": "FJC", "coin_label": "Fujicoin", + "curve_name": "secp256k1", "address_type": 36, "address_type_p2sh": 16, "maxfee_kb": 1000000, @@ -442,6 +456,7 @@ "coin_name": "Vertcoin", "coin_shortcut": "VTC", "coin_label": "Vertcoin", + "curve_name": "secp256k1", "address_type": 71, "address_type_p2sh": 5, "maxfee_kb": 40000000, From 5afb028b2f1f5c8dbc6e6173e63b47c71f31695d Mon Sep 17 00:00:00 2001 From: Saleem Rashid Date: Sun, 17 Dec 2017 21:56:21 +0000 Subject: [PATCH 236/767] coins: Add Decred Testnet --- coins.json | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/coins.json b/coins.json index e06645201..598dc2491 100644 --- a/coins.json +++ b/coins.json @@ -16,6 +16,7 @@ "bech32_prefix": "bc", "bip44": 0, "segwit": true, + "decred": false, "forkid": null, "force_bip143": false, "default_fee_b": { @@ -52,6 +53,7 @@ "bech32_prefix": "tb", "bip44": 1, "segwit": true, + "decred": false, "forkid": null, "force_bip143": false, "default_fee_b": { @@ -85,6 +87,7 @@ "bech32_prefix": null, "bip44": 145, "segwit": false, + "decred": false, "forkid": 0, "force_bip143": true, "default_fee_b": { @@ -120,6 +123,7 @@ "bech32_prefix": null, "bip44": 1, "segwit": false, + "decred": false, "forkid": 0, "force_bip143": true, "default_fee_b": { @@ -150,6 +154,7 @@ "bech32_prefix": null, "bip44": 7, "segwit": false, + "decred": false, "forkid": null, "force_bip143": false, "default_fee_b": { @@ -180,6 +185,7 @@ "bech32_prefix": "ltc", "bip44": 2, "segwit": true, + "decred": false, "forkid": null, "force_bip143": false, "default_fee_b": { @@ -212,6 +218,7 @@ "bech32_prefix": null, "bip44": 3, "segwit": false, + "decred": false, "forkid": null, "force_bip143": false, "default_fee_b": { @@ -242,6 +249,7 @@ "bech32_prefix": null, "bip44": 5, "segwit": false, + "decred": false, "forkid": null, "force_bip143": false, "default_fee_b": { @@ -275,6 +283,7 @@ "bech32_prefix": null, "bip44": 133, "segwit": false, + "decred": false, "forkid": null, "force_bip143": false, "default_fee_b": { @@ -307,6 +316,7 @@ "bech32_prefix": null, "bip44": 1, "segwit": false, + "decred": false, "forkid": null, "force_bip143": false, "default_fee_b": { @@ -337,6 +347,7 @@ "bech32_prefix": "btg", "bip44": 156, "segwit": true, + "decred": false, "forkid": 79, "force_bip143": true, "default_fee_b": { @@ -372,6 +383,7 @@ "bech32_prefix": "dgb", "bip44": 20, "segwit": true, + "decred": false, "forkid": null, "force_bip143": false, "default_fee_b": { @@ -405,6 +417,7 @@ "bech32_prefix": "mona", "bip44": 22, "segwit": true, + "decred": false, "forkid": null, "force_bip143": false, "default_fee_b": { @@ -437,6 +450,7 @@ "bech32_prefix": null, "bip44": 75, "segwit": false, + "decred": false, "forkid": null, "force_bip143": false, "default_fee_b": { @@ -469,6 +483,7 @@ "bech32_prefix": "vtc", "bip44": 28, "segwit": true, + "decred": false, "forkid": null, "force_bip143": false, "default_fee_b": { @@ -481,5 +496,36 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [] +}, +{ + "coin_name": "Decred Testnet", + "coin_shortcut": "TDCR", + "coin_label": "Testnet", + "curve_name": "secp256k1_decred", + "address_type": 3873, + "address_type_p2sh": 3836, + "maxfee_kb": 10000000, + "minfee_kb": 1000, + "signed_message_header": "Decred Signed Message:\n", + "hash_genesis_block": "4261602a9d07d80ad47621a64ba6a07754902e496777edc4ff581946bd7bc29c", + "xprv_magic": "04358397", + "xpub_magic": "043587d1", + "xpub_magic_segwit_p2sh": null, + "bech32_prefix": null, + "bip44": 1, + "segwit": false, + "decred": true, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 546, + "blocktime_minutes": 10, + "firmware": "debug", + "address_prefix": "bitcoin:", + "min_address_length": 35, + "max_address_length": 35, + "bitcore": [] } ] From 65c3251a4280112d8069a2f6c7117e5043c75d24 Mon Sep 17 00:00:00 2001 From: Saleem Rashid Date: Sun, 17 Dec 2017 21:56:31 +0000 Subject: [PATCH 237/767] protob: Add Decred support --- protob/messages.proto | 1 + protob/types.proto | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/protob/messages.proto b/protob/messages.proto index 4faca73ea..e31d5b0fe 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -598,6 +598,7 @@ message SignTx { optional string coin_name = 3 [default='Bitcoin']; // coin to use optional uint32 version = 4 [default=1]; // transaction version optional uint32 lock_time = 5 [default=0]; // transaction lock_time + optional uint32 decred_expiry = 6; } /** diff --git a/protob/types.proto b/protob/types.proto index a6aaeee5a..33c01ea28 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -197,6 +197,7 @@ message TxInputType { optional InputScriptType script_type = 6 [default=SPENDADDRESS]; // defines template of input script optional MultisigRedeemScriptType multisig = 7; // Filled if input is going to spend multisig tx optional uint64 amount = 8; // amount of previous transaction output (for segwit only) + optional uint32 decred_tree = 9; } /** @@ -211,6 +212,7 @@ message TxOutputType { required OutputScriptType script_type = 4; // output script type optional MultisigRedeemScriptType multisig = 5; // defines multisig address; script_type must be PAYTOMULTISIG optional bytes op_return_data = 6; // defines op_return data; script_type must be PAYTOOPRETURN, amount must be 0 + optional uint32 decred_script_version = 7; } /** @@ -220,6 +222,7 @@ message TxOutputType { message TxOutputBinType { required uint64 amount = 1; required bytes script_pubkey = 2; + optional uint32 decred_script_version = 3; } /** @@ -236,6 +239,7 @@ message TransactionType { optional uint32 outputs_cnt = 7; optional bytes extra_data = 8; optional uint32 extra_data_len = 9; + optional uint32 decred_expiry = 10; } /** From 22fecb414a67d7b053ba82f2a6be6810be4c4e7e Mon Sep 17 00:00:00 2001 From: Saleem Rashid Date: Mon, 18 Dec 2017 16:21:50 +0000 Subject: [PATCH 238/767] coins-check: Update for Decred --- coins-check.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/coins-check.py b/coins-check.py index 94dab8755..66cd57728 100755 --- a/coins-check.py +++ b/coins-check.py @@ -14,6 +14,7 @@ for coin in json.load(open('coins.json')): assert isinstance(coin['coin_name'], str) assert isinstance(coin['coin_shortcut'], str) assert isinstance(coin['coin_label'], str) + assert isinstance(coin['curve_name'], str) assert isinstance(coin['address_type'], int) assert isinstance(coin['address_type_p2sh'], int) assert coin['address_type'] != coin['address_type_p2sh'] @@ -26,6 +27,7 @@ for coin in json.load(open('coins.json')): assert is_hex(coin['xpub_magic']) assert isinstance(coin['bip44'], int) assert isinstance(coin['segwit'], bool) + assert isinstance(coin['decred'], bool) assert coin['forkid'] is None or isinstance(coin['forkid'], int) assert isinstance(coin['force_bip143'], bool) assert isinstance(coin['default_fee_b'], dict) From 13499e256acfdde662b98ea402146ca105fb03b3 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 18 Dec 2017 18:34:11 +0100 Subject: [PATCH 239/767] add ethereum_tokens-gen.py script --- ethereum_tokens-gen.py | 76 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100755 ethereum_tokens-gen.py diff --git a/ethereum_tokens-gen.py b/ethereum_tokens-gen.py new file mode 100755 index 000000000..82e473d17 --- /dev/null +++ b/ethereum_tokens-gen.py @@ -0,0 +1,76 @@ +#!/usr/bin/env python3 +import sys +import requests + +subst = { + (1, 'AVA \U0001F434'): 'AVA', + (1, 'BeerCoin \U0001F37A '): 'BEER', + (1, 'CryptoCarbon'): 'CCRB', + (1, 'DGX 1.0'): 'DGX1', + (1, 'JetCoins'): 'JTC', + (1, 'Unicorn \U0001F984'): 'UNCRN', + (1, '\U00002600\U0000FE0F PLASMA'): 'PLASMA', + (3, '\U0001F4A5 PLASMA'): 'PLASMA', + (4, '\U0000263C PLASMA'): 'PLASMA', + (42, '\U0001F4A5 PLASMA'): 'PLASMA', +} + + +def get_tokens(chain): + URL = 'https://raw.githubusercontent.com/kvhnuke/etherwallet/mercury/app/scripts/tokens/%sTokens.json' % chain + r = requests.get(URL) + return r.json() + + +def print_tokens(chain, chain_id, python=False): + tokens = get_tokens(chain) + if len(tokens) > 0: + if python: + print(' # %s' % chain) + else: + print('\t// %s' % chain) + for t in sorted(tokens, key=lambda x: x['symbol'].upper()): + address, symbol, decimal = t['address'], t['symbol'], int(t['decimal']) + s = (chain_id, symbol) + if s in subst: + symbol = subst[s] + address = '\\x'.join([address[i:i + 2] for i in range(0, len(address), 2)])[2:].lower() + if python: + print(" {'chain_id': %2d, 'address': b'%s', 'symbol': '%s', 'decimal': %d}," % (chain_id, address, symbol, decimal)) + else: + print('\t{%2d, "%s", " %s", %d},' % (chain_id, address, symbol, decimal)) + + return len(tokens) + + +networks = [ + ('eth', 1), + ('exp', 2), + ('ropsten', 3), + ('rinkeby', 4), + ('ubq', 8), + ('rsk', 30), + ('kovan', 42), + ('etc', 61), +] + + +def generate_c(): + count = 0 + for s, i in networks: + count += print_tokens(s, i) + print('-' * 32) + print('#define TOKENS_COUNT %d' % count) + + +def generate_python(): + print('tokens = [') + for s, i in networks: + print_tokens(s, i, python=True) + print(']') + +if __name__ == '__main__': + if len(sys.argv) > 1 and sys.argv[1] == '--python': + generate_python() + else: + generate_c() From ee211f4bc8d9b85182039e1728c6c1313fa0062a Mon Sep 17 00:00:00 2001 From: Saleem Rashid Date: Wed, 20 Dec 2017 20:43:29 +0000 Subject: [PATCH 240/767] protob: Add decred_script_version to TxInputType --- protob/types.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/protob/types.proto b/protob/types.proto index 33c01ea28..fa382e3e5 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -198,6 +198,7 @@ message TxInputType { optional MultisigRedeemScriptType multisig = 7; // Filled if input is going to spend multisig tx optional uint64 amount = 8; // amount of previous transaction output (for segwit only) optional uint32 decred_tree = 9; + optional uint32 decred_script_version = 10; } /** From c88d7b962a8494403ca562c2f3373a917c370bdb Mon Sep 17 00:00:00 2001 From: Aleksey Popov Date: Sat, 23 Dec 2017 21:34:23 +0300 Subject: [PATCH 241/767] protob: Add protobuf syntax tag --- protob/config.proto | 2 ++ protob/messages.proto | 2 ++ protob/storage.proto | 2 ++ protob/types.proto | 2 ++ 4 files changed, 8 insertions(+) diff --git a/protob/config.proto b/protob/config.proto index b7ffedd85..fe44a0dc3 100644 --- a/protob/config.proto +++ b/protob/config.proto @@ -1,3 +1,5 @@ +syntax = "proto2"; + /** * Configuration format for TREZOR plugin */ diff --git a/protob/messages.proto b/protob/messages.proto index e31d5b0fe..516391fa7 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -1,3 +1,5 @@ +syntax = "proto2"; + /** * Messages for TREZOR communication */ diff --git a/protob/storage.proto b/protob/storage.proto index 4b707d15d..764fcdfb9 100644 --- a/protob/storage.proto +++ b/protob/storage.proto @@ -1,3 +1,5 @@ +syntax = "proto2"; + /** * Storage area of TREZOR */ diff --git a/protob/types.proto b/protob/types.proto index fa382e3e5..95695e368 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -1,3 +1,5 @@ +syntax = "proto2"; + /** * Types for TREZOR communication * From 056299c472a756ecf2d70d5569ec88b18cf7bd2a Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 5 Feb 2018 16:09:43 +0100 Subject: [PATCH 242/767] udev: remove hidraw rules for T2 --- udev/51-trezor.rules | 2 -- 1 file changed, 2 deletions(-) diff --git a/udev/51-trezor.rules b/udev/51-trezor.rules index bd8a83809..54bd9fd56 100644 --- a/udev/51-trezor.rules +++ b/udev/51-trezor.rules @@ -9,5 +9,3 @@ KERNEL=="hidraw*", ATTRS{idVendor}=="534c", ATTRS{idProduct}=="0001", MODE="066 # TREZOR v2 SUBSYSTEM=="usb", ATTR{idVendor}=="1209", ATTR{idProduct}=="53c0", MODE="0660", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl", SYMLINK+="trezor%n" SUBSYSTEM=="usb", ATTR{idVendor}=="1209", ATTR{idProduct}=="53c1", MODE="0660", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl", SYMLINK+="trezor%n" -KERNEL=="hidraw*", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="53c0", MODE="0660", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl" -KERNEL=="hidraw*", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="53c1", MODE="0660", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl" From 64859a1039368ebd8b45767a83eb333bbd797085 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 6 Feb 2018 15:42:38 +0100 Subject: [PATCH 243/767] add firmware version/vendor to bootloader Features message --- protob/messages.proto | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/protob/messages.proto b/protob/messages.proto index 516391fa7..f71bae144 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -123,10 +123,10 @@ message GetFeatures { * @prev GetFeatures */ message Features { - optional string vendor = 1; // name of the manufacturer, e.g. "bitcointrezor.com" - optional uint32 major_version = 2; // major version of the device, e.g. 1 - optional uint32 minor_version = 3; // minor version of the device, e.g. 0 - optional uint32 patch_version = 4; // patch version of the device, e.g. 0 + optional string vendor = 1; // name of the manufacturer, e.g. "trezor.io" + optional uint32 major_version = 2; // major version of the firmware/bootloader, e.g. 1 + optional uint32 minor_version = 3; // minor version of the firmware/bootloader, e.g. 0 + optional uint32 patch_version = 4; // patch version of the firmware/bootloader, e.g. 0 optional bool bootloader_mode = 5; // is device in bootloader mode? optional string device_id = 6; // device's unique identifier optional bool pin_protection = 7; // is device protected by PIN? @@ -144,6 +144,10 @@ message Features { optional bool needs_backup = 19; // does storage need backup? (equals to Storage.needs_backup) optional uint32 flags = 20; // device flags (equals to Storage.flags) optional string model = 21; // device hardware model + optional uint32 fw_major = 22; // reported firmware version if in bootloader mode + optional uint32 fw_minor = 23; // reported firmware version if in bootloader mode + optional uint32 fw_patch = 24; // reported firmware version if in bootloader mode + optional string fw_vendor = 25; // reported firmware vendor if in bootloader mode } /** From 8652df0c692ea4f13042539dcb6bde57b79137bc Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 6 Feb 2018 16:24:46 +0100 Subject: [PATCH 244/767] messages: add fw_vendor_keys to Features message --- protob/messages.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/protob/messages.proto b/protob/messages.proto index f71bae144..602c59ffe 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -148,6 +148,7 @@ message Features { optional uint32 fw_minor = 23; // reported firmware version if in bootloader mode optional uint32 fw_patch = 24; // reported firmware version if in bootloader mode optional string fw_vendor = 25; // reported firmware vendor if in bootloader mode + optional bytes fw_vendor_keys = 26; // reported firmware vendor keys (their hash) } /** From c7dcca60c724c32ca3a688a6f20a055b0b4b3b1f Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 9 Feb 2018 17:13:41 +0100 Subject: [PATCH 245/767] protob: add `state` field to Initialize and Features --- protob/messages.proto | 2 ++ 1 file changed, 2 insertions(+) diff --git a/protob/messages.proto b/protob/messages.proto index 602c59ffe..5814537d7 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -108,6 +108,7 @@ enum MessageType { * @next Features */ message Initialize { + optional bytes state = 1; // assumed device state } /** @@ -149,6 +150,7 @@ message Features { optional uint32 fw_patch = 24; // reported firmware version if in bootloader mode optional string fw_vendor = 25; // reported firmware vendor if in bootloader mode optional bytes fw_vendor_keys = 26; // reported firmware vendor keys (their hash) + optional bytes state = 27; // current device state } /** From b9f2a1c27fc16f4a33934ef0816a05c834416436 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 14 Feb 2018 18:13:18 +0100 Subject: [PATCH 246/767] protob: add PassphraseRequest.on_device and PassphraseRequest.state --- protob/messages.proto | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/protob/messages.proto b/protob/messages.proto index 5814537d7..efa88cca1 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -108,7 +108,7 @@ enum MessageType { * @next Features */ message Initialize { - optional bytes state = 1; // assumed device state + optional bytes state = 1; // assumed device state, clear session if set and different } /** @@ -267,6 +267,7 @@ message Cancel { * @next Cancel */ message PassphraseRequest { + optional bool on_device = 1; // passphrase is being entered on the device } /** @@ -275,6 +276,7 @@ message PassphraseRequest { */ message PassphraseAck { required string passphrase = 1; + optional bytes state = 2; // assumed device state, throw error if set and different } /** From 389c895a71bb77a6a2d726979c17c11a0091cb2e Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 16 Feb 2018 22:46:57 +0100 Subject: [PATCH 247/767] tokens: rewrite generator to use ethereum-lists/tokens repo as source --- ethereum_tokens-gen.py | 63 ++++++++++++++++++------------------------ 1 file changed, 27 insertions(+), 36 deletions(-) diff --git a/ethereum_tokens-gen.py b/ethereum_tokens-gen.py index 82e473d17..93abf118a 100755 --- a/ethereum_tokens-gen.py +++ b/ethereum_tokens-gen.py @@ -2,75 +2,66 @@ import sys import requests -subst = { - (1, 'AVA \U0001F434'): 'AVA', - (1, 'BeerCoin \U0001F37A '): 'BEER', - (1, 'CryptoCarbon'): 'CCRB', - (1, 'DGX 1.0'): 'DGX1', - (1, 'JetCoins'): 'JTC', - (1, 'Unicorn \U0001F984'): 'UNCRN', - (1, '\U00002600\U0000FE0F PLASMA'): 'PLASMA', - (3, '\U0001F4A5 PLASMA'): 'PLASMA', - (4, '\U0000263C PLASMA'): 'PLASMA', - (42, '\U0001F4A5 PLASMA'): 'PLASMA', -} - -def get_tokens(chain): - URL = 'https://raw.githubusercontent.com/kvhnuke/etherwallet/mercury/app/scripts/tokens/%sTokens.json' % chain +def get_tokens(ipfs_hash, chain): + URL = 'https://gateway.ipfs.io/ipfs/%s/%s.json' % (ipfs_hash, chain) r = requests.get(URL) return r.json() -def print_tokens(chain, chain_id, python=False): - tokens = get_tokens(chain) +def print_tokens(ipfs_hash, chain, chain_id, python=False): + tokens = get_tokens(ipfs_hash, chain) if len(tokens) > 0: if python: print(' # %s' % chain) else: print('\t// %s' % chain) for t in sorted(tokens, key=lambda x: x['symbol'].upper()): - address, symbol, decimal = t['address'], t['symbol'], int(t['decimal']) - s = (chain_id, symbol) - if s in subst: - symbol = subst[s] + address, name, symbol, decimal = t['address'], t['name'], t['symbol'], int(t['decimals']) address = '\\x'.join([address[i:i + 2] for i in range(0, len(address), 2)])[2:].lower() if python: - print(" {'chain_id': %2d, 'address': b'%s', 'symbol': '%s', 'decimal': %d}," % (chain_id, address, symbol, decimal)) + print(" {'chain_id': %2d, 'address': b'%s', 'symbol': '%s', 'decimal': %d}, # %s " % (chain_id, address, symbol, decimal, name)) else: - print('\t{%2d, "%s", " %s", %d},' % (chain_id, address, symbol, decimal)) + print('\t{%2d, "%s", " %s", %d}, // %s ' % (chain_id, address, symbol, decimal, name)) return len(tokens) +# disabled are networks with no tokens defined in ethereum-lists/tokens repo + networks = [ ('eth', 1), - ('exp', 2), - ('ropsten', 3), - ('rinkeby', 4), + # ('exp', 2), + # ('rop', 3), + ('rin', 4), ('ubq', 8), - ('rsk', 30), - ('kovan', 42), + # ('rsk', 30), + ('kov', 42), ('etc', 61), ] -def generate_c(): +def generate_c(ipfs_hash): count = 0 for s, i in networks: - count += print_tokens(s, i) + count += print_tokens(ipfs_hash, s, i) print('-' * 32) print('#define TOKENS_COUNT %d' % count) -def generate_python(): +def generate_python(ipfs_hash): print('tokens = [') for s, i in networks: - print_tokens(s, i, python=True) + print_tokens(ipfs_hash, s, i, python=True) print(']') -if __name__ == '__main__': - if len(sys.argv) > 1 and sys.argv[1] == '--python': - generate_python() + +if __name__ == '__main__': + if len(sys.argv) < 2: + print('Usage: ethereum_tokens-gen.py ipfs_hash [--python]') + sys.exit(1) + ipfs_hash = sys.argv[1] + if len(sys.argv) > 2 and sys.argv[2] == '--python': + generate_python(ipfs_hash) else: - generate_c() + generate_c(ipfs_hash) From 5c5fb7204ef853383cb272a2522f7a931866ba17 Mon Sep 17 00:00:00 2001 From: Karel Bilek Date: Tue, 30 Jan 2018 19:18:34 +0100 Subject: [PATCH 248/767] Increasing udev package version (T2) --- udev/dist/release.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/udev/dist/release.sh b/udev/dist/release.sh index 81259ff57..617ab7b5d 100755 --- a/udev/dist/release.sh +++ b/udev/dist/release.sh @@ -4,7 +4,7 @@ set -e cd $(dirname $0) -VERSION="1" +VERSION="2" install -D -m 0644 ./trezor.rules ./lib/udev/rules.d/52-trezor-extension.rules From 43b64648832028efbb93079a1bd17794ed4044cb Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 20 Feb 2018 17:27:26 +0100 Subject: [PATCH 249/767] proto: add Failure_PinMismatch --- protob/types.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/protob/types.proto b/protob/types.proto index 95695e368..5b94f6581 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -41,6 +41,7 @@ enum FailureType { Failure_ProcessError = 9; Failure_NotEnoughFunds = 10; Failure_NotInitialized = 11; + Failure_PinMismatch = 12; Failure_FirmwareError = 99; } From 6112d67c6a3d071c3b45828b3ea16edff05c0ce3 Mon Sep 17 00:00:00 2001 From: Jochen Hoenicke Date: Thu, 4 Jan 2018 20:20:06 +0100 Subject: [PATCH 250/767] Added cashaddr_prefix --- coins.json | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/coins.json b/coins.json index 598dc2491..c7fd0184c 100644 --- a/coins.json +++ b/coins.json @@ -14,6 +14,7 @@ "xpub_magic": "0488b21e", "xpub_magic_segwit_p2sh": "049d7cb2", "bech32_prefix": "bc", + "cashaddr_prefix": null, "bip44": 0, "segwit": true, "decred": false, @@ -51,6 +52,7 @@ "xpub_magic": "043587cf", "xpub_magic_segwit_p2sh": "044a5262", "bech32_prefix": "tb", + "cashaddr_prefix": null, "bip44": 1, "segwit": true, "decred": false, @@ -85,6 +87,7 @@ "xpub_magic": "0488b21e", "xpub_magic_segwit_p2sh": null, "bech32_prefix": null, + "cashaddr_prefix": "bitcoincash", "bip44": 145, "segwit": false, "decred": false, @@ -121,6 +124,7 @@ "xpub_magic": "043587cf", "xpub_magic_segwit_p2sh": null, "bech32_prefix": null, + "cashaddr_prefix": null, "bip44": 1, "segwit": false, "decred": false, @@ -152,6 +156,7 @@ "xpub_magic": "019da462", "xpub_magic_segwit_p2sh": null, "bech32_prefix": null, + "cashaddr_prefix": null, "bip44": 7, "segwit": false, "decred": false, @@ -183,6 +188,7 @@ "xpub_magic": "019da462", "xpub_magic_segwit_p2sh": "01b26ef6", "bech32_prefix": "ltc", + "cashaddr_prefix": null, "bip44": 2, "segwit": true, "decred": false, @@ -216,6 +222,7 @@ "xpub_magic": "02facafd", "xpub_magic_segwit_p2sh": null, "bech32_prefix": null, + "cashaddr_prefix": null, "bip44": 3, "segwit": false, "decred": false, @@ -247,6 +254,7 @@ "xpub_magic": "02fe52cc", "xpub_magic_segwit_p2sh": null, "bech32_prefix": null, + "cashaddr_prefix": null, "bip44": 5, "segwit": false, "decred": false, @@ -281,6 +289,7 @@ "xpub_magic": "0488b21e", "xpub_magic_segwit_p2sh": null, "bech32_prefix": null, + "cashaddr_prefix": null, "bip44": 133, "segwit": false, "decred": false, @@ -314,6 +323,7 @@ "xpub_magic": "043587cf", "xpub_magic_segwit_p2sh": null, "bech32_prefix": null, + "cashaddr_prefix": null, "bip44": 1, "segwit": false, "decred": false, @@ -345,6 +355,7 @@ "xpub_magic": "0488b21e", "xpub_magic_segwit_p2sh": "049d7cb2", "bech32_prefix": "btg", + "cashaddr_prefix": null, "bip44": 156, "segwit": true, "decred": false, @@ -381,6 +392,7 @@ "xpub_magic": "0488b21e", "xpub_magic_segwit_p2sh": "049d7cb2", "bech32_prefix": "dgb", + "cashaddr_prefix": null, "bip44": 20, "segwit": true, "decred": false, @@ -415,6 +427,7 @@ "xprv_magic": "0488ade4", "xpub_magic_segwit_p2sh": "049d7cb2", "bech32_prefix": "mona", + "cashaddr_prefix": null, "bip44": 22, "segwit": true, "decred": false, @@ -448,6 +461,7 @@ "xprv_magic": "0488ade4", "xpub_magic_segwit_p2sh": null, "bech32_prefix": null, + "cashaddr_prefix": null, "bip44": 75, "segwit": false, "decred": false, @@ -481,6 +495,7 @@ "xpub_magic": "0488b21e", "xpub_magic_segwit_p2sh": "049d7cb2", "bech32_prefix": "vtc", + "cashaddr_prefix": null, "bip44": 28, "segwit": true, "decred": false, @@ -512,6 +527,7 @@ "xpub_magic": "043587d1", "xpub_magic_segwit_p2sh": null, "bech32_prefix": null, + "cashaddr_prefix": null, "bip44": 1, "segwit": false, "decred": true, From 7b828472b984494df95c285d8631cf83e38e83e6 Mon Sep 17 00:00:00 2001 From: Jochen Hoenicke Date: Thu, 4 Jan 2018 21:49:52 +0100 Subject: [PATCH 251/767] Added cashaddr prefix for Bitcoin Cash testnet --- coins.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coins.json b/coins.json index c7fd0184c..081030455 100644 --- a/coins.json +++ b/coins.json @@ -124,7 +124,7 @@ "xpub_magic": "043587cf", "xpub_magic_segwit_p2sh": null, "bech32_prefix": null, - "cashaddr_prefix": null, + "cashaddr_prefix": "bchtest", "bip44": 1, "segwit": false, "decred": false, From 98d2869456b50c0b0bea35fde4fd87a08cd19329 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 26 Feb 2018 16:16:17 +0100 Subject: [PATCH 252/767] udev: return hidraw udev rule for T2 (for U2F HID) --- udev/51-trezor.rules | 1 + 1 file changed, 1 insertion(+) diff --git a/udev/51-trezor.rules b/udev/51-trezor.rules index 54bd9fd56..c937ad791 100644 --- a/udev/51-trezor.rules +++ b/udev/51-trezor.rules @@ -9,3 +9,4 @@ KERNEL=="hidraw*", ATTRS{idVendor}=="534c", ATTRS{idProduct}=="0001", MODE="066 # TREZOR v2 SUBSYSTEM=="usb", ATTR{idVendor}=="1209", ATTR{idProduct}=="53c0", MODE="0660", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl", SYMLINK+="trezor%n" SUBSYSTEM=="usb", ATTR{idVendor}=="1209", ATTR{idProduct}=="53c1", MODE="0660", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl", SYMLINK+="trezor%n" +KERNEL=="hidraw*", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="53c1", MODE="0660", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl" From e5db98205a10404aa38ef8a50cdf8f14e3638795 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 26 Feb 2018 16:19:33 +0100 Subject: [PATCH 253/767] bump dockerfile for udev build --- udev/dist/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/udev/dist/Dockerfile b/udev/dist/Dockerfile index 1fc03cb0d..8fec8e06e 100644 --- a/udev/dist/Dockerfile +++ b/udev/dist/Dockerfile @@ -1,6 +1,6 @@ # initialize from the image -FROM fedora:24 +FROM fedora:25 # update package repositories From 06f3b79a44d7e1e43663000fe0b457bb456ac801 Mon Sep 17 00:00:00 2001 From: Jan Pochyla Date: Tue, 27 Feb 2018 12:01:06 +0100 Subject: [PATCH 254/767] protob: add trezor t-specific ButtonRequestTypes --- protob/types.proto | 3 +++ 1 file changed, 3 insertions(+) diff --git a/protob/types.proto b/protob/types.proto index 5b94f6581..57dfdd0d7 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -98,6 +98,9 @@ enum ButtonRequestType { ButtonRequest_FirmwareCheck = 9; ButtonRequest_Address = 10; ButtonRequest_PublicKey = 11; + ButtonRequest_MnemonicWordCount = 12; + ButtonRequest_MnemonicInput = 13; + ButtonRequest_PassphraseType = 14; } /** From d85f7ac6bbcccbc83012d85fdf25635e57c5f15b Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 27 Feb 2018 15:37:08 +0100 Subject: [PATCH 255/767] PassphraseAck.passphrase is now optional --- protob/messages.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protob/messages.proto b/protob/messages.proto index efa88cca1..174e2d444 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -275,7 +275,7 @@ message PassphraseRequest { * @prev PassphraseRequest */ message PassphraseAck { - required string passphrase = 1; + optional string passphrase = 1; optional bytes state = 2; // assumed device state, throw error if set and different } From a58e24ad2be819510d7a1b06916488138c1a10c9 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 28 Feb 2018 22:47:59 +0100 Subject: [PATCH 256/767] update typo in ethereum_tokens-gen.py --- ethereum_tokens-gen.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ethereum_tokens-gen.py b/ethereum_tokens-gen.py index 93abf118a..36958deb8 100755 --- a/ethereum_tokens-gen.py +++ b/ethereum_tokens-gen.py @@ -20,9 +20,9 @@ def print_tokens(ipfs_hash, chain, chain_id, python=False): address, name, symbol, decimal = t['address'], t['name'], t['symbol'], int(t['decimals']) address = '\\x'.join([address[i:i + 2] for i in range(0, len(address), 2)])[2:].lower() if python: - print(" {'chain_id': %2d, 'address': b'%s', 'symbol': '%s', 'decimal': %d}, # %s " % (chain_id, address, symbol, decimal, name)) + print(" (%d, b'%s', '%s', %d), # %s" % (chain_id, address, symbol, decimal, name)) else: - print('\t{%2d, "%s", " %s", %d}, // %s ' % (chain_id, address, symbol, decimal, name)) + print('\t{%2d, "%s", " %s", %d}, // %s' % (chain_id, address, symbol, decimal, name)) return len(tokens) From 68be165ffaa8118ec787c118360fc7e8c1187481 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 28 Feb 2018 22:53:37 +0100 Subject: [PATCH 257/767] proto: new passphrase messages --- protob/messages.proto | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/protob/messages.proto b/protob/messages.proto index 174e2d444..522e4606b 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -150,7 +150,6 @@ message Features { optional uint32 fw_patch = 24; // reported firmware version if in bootloader mode optional string fw_vendor = 25; // reported firmware vendor if in bootloader mode optional bytes fw_vendor_keys = 26; // reported firmware vendor keys (their hash) - optional bytes state = 27; // current device state } /** @@ -273,10 +272,24 @@ message PassphraseRequest { /** * Request: Send passphrase back * @prev PassphraseRequest + * @next PassphraseStateRequest */ message PassphraseAck { optional string passphrase = 1; - optional bytes state = 2; // assumed device state, throw error if set and different +} + +/** + * @prev PassphraseAck + * @next PassphraseStateAck + */ +message PassphraseStateRequest { + optional bytes state = 1; // device state +} + +/** + * @prev PassphraseStateRequest + */ +message PassphraseStateAck { } /** From 317d8af67569ad228b7cc81ffdd806c323fd488f Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 28 Feb 2018 23:03:44 +0100 Subject: [PATCH 258/767] proto: add wire types for PassphraseState{Request,Ack} --- protob/messages.proto | 2 ++ 1 file changed, 2 insertions(+) diff --git a/protob/messages.proto b/protob/messages.proto index 522e4606b..d96fc3d44 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -54,6 +54,8 @@ enum MessageType { MessageType_MessageSignature = 40 [(wire_out) = true]; MessageType_PassphraseRequest = 41 [(wire_out) = true]; MessageType_PassphraseAck = 42 [(wire_in) = true, (wire_tiny) = true]; + MessageType_PassphraseStateRequest = 77 [(wire_out) = true]; + MessageType_PassphraseStateAck = 78 [(wire_in) = true, (wire_tiny) = true]; MessageType_EstimateTxSize = 43 [(wire_in) = true, deprecated = true]; MessageType_TxSize = 44 [(wire_out) = true, deprecated = true]; MessageType_RecoveryDevice = 45 [(wire_in) = true]; From 0924bd6826bb63f66010e2e511356d54ea733df3 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 28 Feb 2018 23:25:06 +0100 Subject: [PATCH 259/767] proto: return of PassphraseAck.state --- protob/messages.proto | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/protob/messages.proto b/protob/messages.proto index d96fc3d44..5d193282c 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -278,6 +278,7 @@ message PassphraseRequest { */ message PassphraseAck { optional string passphrase = 1; + optional bytes state = 2; // expected device state } /** @@ -285,7 +286,7 @@ message PassphraseAck { * @next PassphraseStateAck */ message PassphraseStateRequest { - optional bytes state = 1; // device state + optional bytes state = 1; // actual device state } /** From bdefc5ac372493ee5fc84e91f10ceb2faac9676e Mon Sep 17 00:00:00 2001 From: Peter van Mourik Date: Mon, 5 Mar 2018 13:17:53 +0100 Subject: [PATCH 260/767] Added txtype as optional field in preparation of Wanchain support --- protob/messages.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/protob/messages.proto b/protob/messages.proto index 5d193282c..ef8075f33 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -688,6 +688,7 @@ message EthereumSignTx { optional bytes data_initial_chunk = 7; // The initial data chunk (<= 1024 bytes) optional uint32 data_length = 8; // Length of transaction payload optional uint32 chain_id = 9; // Chain Id for EIP 155 + optional bytes txtype = 10; // <=256 bit unsigned big endian } /** From ec24aa1d804d0dbd9ae866f25724c607ccb34f81 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 5 Mar 2018 15:56:10 +0100 Subject: [PATCH 261/767] proto: rename EthereumSignTx.txtype to tx_type --- protob/messages.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protob/messages.proto b/protob/messages.proto index ef8075f33..34108bab5 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -688,7 +688,7 @@ message EthereumSignTx { optional bytes data_initial_chunk = 7; // The initial data chunk (<= 1024 bytes) optional uint32 data_length = 8; // Length of transaction payload optional uint32 chain_id = 9; // Chain Id for EIP 155 - optional bytes txtype = 10; // <=256 bit unsigned big endian + optional bytes tx_type = 10; // <=256 bit unsigned big endian (for Wanchain) } /** From 42e2f494b2ca16948549d764b1798996dd14ba4d Mon Sep 17 00:00:00 2001 From: Peter van Mourik Date: Wed, 7 Mar 2018 12:14:32 +0100 Subject: [PATCH 262/767] Changed tx_type to uint32 --- protob/messages.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protob/messages.proto b/protob/messages.proto index 34108bab5..b11620466 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -688,7 +688,7 @@ message EthereumSignTx { optional bytes data_initial_chunk = 7; // The initial data chunk (<= 1024 bytes) optional uint32 data_length = 8; // Length of transaction payload optional uint32 chain_id = 9; // Chain Id for EIP 155 - optional bytes tx_type = 10; // <=256 bit unsigned big endian (for Wanchain) + optional uint32 tx_type = 10; // <=256 bit unsigned big endian (for Wanchain) } /** From 7e61f3703883da2f58d1988b373503cfe7c3561c Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 7 Mar 2018 12:18:26 +0100 Subject: [PATCH 263/767] protob: change comment for tx_type --- protob/messages.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protob/messages.proto b/protob/messages.proto index b11620466..44a11953d 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -688,7 +688,7 @@ message EthereumSignTx { optional bytes data_initial_chunk = 7; // The initial data chunk (<= 1024 bytes) optional uint32 data_length = 8; // Length of transaction payload optional uint32 chain_id = 9; // Chain Id for EIP 155 - optional uint32 tx_type = 10; // <=256 bit unsigned big endian (for Wanchain) + optional uint32 tx_type = 10; // (only for Wanchain) } /** From 998eb4c7a76bdb5190f5f9f52bf8c53d795fbb25 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 12 Mar 2018 14:50:20 +0100 Subject: [PATCH 264/767] add ApplySettings.passphrase_source --- protob/messages.proto | 1 + protob/types.proto | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/protob/messages.proto b/protob/messages.proto index 44a11953d..1b20b4d61 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -173,6 +173,7 @@ message ApplySettings { optional string label = 2; optional bool use_passphrase = 3; optional bytes homescreen = 4; + optional PassphraseSourceType passphrase_source = 5; } /** diff --git a/protob/types.proto b/protob/types.proto index 57dfdd0d7..680a4bffd 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -283,6 +283,16 @@ message IdentityType { optional uint32 index = 6 [default=0]; // identity index } +/** + * Structure representing passphrase source + * @used_in ApplySettings + */ +enum PassphraseSourceType { + ASK = 0; + DEVICE = 1; + HOST = 2; +} + /** * Structure representing the common part for NEM transactions * @used_in NEMSignTx From d83bb5464c4efc1e90c9575dd3088333d1066f5f Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 12 Mar 2018 16:10:23 +0100 Subject: [PATCH 265/767] add {Storage,Features}.unfinished_backup --- protob/messages.proto | 1 + protob/storage.proto | 1 + 2 files changed, 2 insertions(+) diff --git a/protob/messages.proto b/protob/messages.proto index 1b20b4d61..2ffc08f41 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -152,6 +152,7 @@ message Features { optional uint32 fw_patch = 24; // reported firmware version if in bootloader mode optional string fw_vendor = 25; // reported firmware vendor if in bootloader mode optional bytes fw_vendor_keys = 26; // reported firmware vendor keys (their hash) + optional bool unfinished_backup = 27; // report unfinished backup (equals to Storage.unfinished_backup) } /** diff --git a/protob/storage.proto b/protob/storage.proto index 764fcdfb9..bb3789b6e 100644 --- a/protob/storage.proto +++ b/protob/storage.proto @@ -28,4 +28,5 @@ message Storage { optional bool needs_backup = 12; // seed is not backed up yet optional uint32 flags = 13; // device flags optional HDNodeType u2froot = 14; // U2F root node + optional bool unfinished_backup = 15; // seed was improperly backed up } From 66a85673ed303f2cf48bdb3d027adbc7e8464364 Mon Sep 17 00:00:00 2001 From: Jan Pochyla Date: Tue, 20 Mar 2018 16:45:10 +0100 Subject: [PATCH 266/767] add debug link fields --- protob/messages.proto | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/protob/messages.proto b/protob/messages.proto index 2ffc08f41..f40469bb9 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -976,7 +976,9 @@ message CosiSignature { * @next Success */ message DebugLinkDecision { - required bool yes_no = 1; // true for "Confirm", false for "Cancel" + optional bool yes_no = 1; // true for "Confirm", false for "Cancel" + optional bool up_down = 2; // true for scroll up, false for scroll down + optional string input = 3; // keyboard input } /** @@ -1001,6 +1003,7 @@ message DebugLinkState { optional bytes reset_entropy = 8; // current entropy during ResetDevice workflow optional string recovery_fake_word = 9; // (fake) word on display during RecoveryDevice workflow optional uint32 recovery_word_pos = 10; // index of mnemonic word the device is expecting during RecoveryDevice workflow + optional uint32 reset_word_pos = 11; // index of mnemonic word the device is expecting during ResetDevice workflow } /** From 260747dfa44ab77cd1e9f27f16db116eed0b45fc Mon Sep 17 00:00:00 2001 From: Roman Zeyde Date: Tue, 13 Mar 2018 13:50:03 +0200 Subject: [PATCH 267/767] proto: add {ApplySettings,Storage}.auto_lock_delay_ms --- protob/messages.proto | 1 + protob/storage.proto | 1 + 2 files changed, 2 insertions(+) diff --git a/protob/messages.proto b/protob/messages.proto index f40469bb9..e1b81495b 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -175,6 +175,7 @@ message ApplySettings { optional bool use_passphrase = 3; optional bytes homescreen = 4; optional PassphraseSourceType passphrase_source = 5; + optional uint32 auto_lock_delay_ms = 6; } /** diff --git a/protob/storage.proto b/protob/storage.proto index bb3789b6e..c04aa4b7d 100644 --- a/protob/storage.proto +++ b/protob/storage.proto @@ -29,4 +29,5 @@ message Storage { optional uint32 flags = 13; // device flags optional HDNodeType u2froot = 14; // U2F root node optional bool unfinished_backup = 15; // seed was improperly backed up + optional uint32 auto_lock_delay_ms = 16; // configurable auto-lock delay (in milliseconds) } From ddc7918c83682f6338dc0e15e5e04ae71834a50d Mon Sep 17 00:00:00 2001 From: slush Date: Fri, 6 Apr 2018 22:11:14 +0200 Subject: [PATCH 268/767] Generator of list of coins and tokens supported by Trezor. --- coins_details.py | 121 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100755 coins_details.py diff --git a/coins_details.py b/coins_details.py new file mode 100755 index 000000000..b82dfa6f8 --- /dev/null +++ b/coins_details.py @@ -0,0 +1,121 @@ +#!/usr/bin/env python3 +"""Fetch information about coins and tokens supported by Trezor and update it in coins_details.json.""" +import time +import json +import requests +import pprint + +SKIP_COINMARKETCAP = False + +def coinmarketcap_info(shortcut): + if SKIP_COINMARKETCAP: + raise Exception("Skipping coinmarketcap call") + + shortcut = shortcut.replace(' ', '-') + url = 'https://api.coinmarketcap.com/v1/ticker/%s/?convert=USD' % shortcut + ret = requests.get(url) + data = ret.json() + try: + return data[0] + except: + print("Cannot fetch info for %s" % shortcut) + +def update_marketcap(obj, shortcut): + try: + obj['marketcap_usd'] = int(float(coinmarketcap_info(shortcut)['market_cap_usd'])) + except: + pass + +def coinmarketcap_global(): + if SKIP_COINMARKETCAP: + raise Exception("Skipping coinmarketcap call") + + url = 'https://api.coinmarketcap.com/v1/global' + ret = requests.get(url) + data = ret.json() + return data + +def set_default(obj, key, default_value): + obj[key] = obj.setdefault(key, default_value) + +def update_info(details): + details['info']['updated_at'] = int(time.time()) + details['info']['updated_at_readable'] = time.asctime() + details['info']['coins'] = len(details['coins']) + + try: + details['info']['total_marketcap_usd'] = int(coinmarketcap_global()['total_market_cap_usd']) + except: + pass + + marketcap = 0 + for c in details['coins']: + marketcap += details['coins'][c].setdefault('marketcap_usd', 0) + details['info']['marketcap_usd'] = marketcap + +def update_coins(details): + coins = json.load(open('coins.json', 'r')) + + for coin in coins: + if coin['firmware'] != 'stable': + continue + + print("Updating", coin['coin_label'], coin['coin_shortcut']) + out = details['coins'].setdefault(coin['coin_shortcut'], {}) + out['shortcut'] = coin['coin_shortcut'] + out['type'] = 'coin' + + set_default(out, 'name', coin['coin_label']) + set_default(out, 't1_enabled', 'yes') + set_default(out, 't2_enabled', 'yes') + update_marketcap(out, coin['coin_label']) + + #pprint.pprint(coin) + +def update_erc20(details): + # FIXME Parse tokens using trezor-common/ethereum_tokens-gen.py + r = requests.get('https://raw.githubusercontent.com/trezor/trezor-core/master/src/apps/ethereum/tokens.py') + d = {} + exec(r.text, d) + for t in d['tokens']: + token = t[2] + print('Updating', token) + + out = details['coins'].setdefault(token, {}) + out['type'] = 'erc20' + out['chain_id'] = t[0] + set_default(out, 't1_enabled', 'yes') + set_default(out, 't2_enabled', 'yes') + +def update_ethereum(details): + print('Updating Ethereum ETH') + out = details['coins'].setdefault('ETH', {}) + out['name'] = 'Ethereum' + out['type'] = 'coin' + set_default(out, 't1_enabled', 'yes') + set_default(out, 't2_enabled', 'yes') + update_marketcap(out, 'ethereum') + +def update_nem(details): + print('Updating NEM') + out = details['coins'].setdefault('NEM', {}) + out['name'] = 'NEM' + out['type'] = 'coin' + set_default(out, 't1_enabled', 'yes') + set_default(out, 't2_enabled', 'yes') + update_marketcap(out, 'nem') + +if __name__ == '__main__': + try: + details = json.load(open('coins_details.json', 'r')) + except FileNotFoundError: + details = {'coins': {}, 'info': {}} + + update_coins(details) + update_erc20(details) + update_ethereum(details) + update_nem(details) + update_info(details) + + print(json.dumps(details, sort_keys=True, indent=4)) + json.dump(details, open('coins_details.json', 'w'), sort_keys=True, indent=4) From 11e7af3a396d831a76411e09cb4c842bc999afcf Mon Sep 17 00:00:00 2001 From: slush Date: Fri, 6 Apr 2018 22:48:32 +0200 Subject: [PATCH 269/767] ethereum_tokens: Store ipfs_hash used for generating the list --- ethereum_tokens-gen.py | 1 + 1 file changed, 1 insertion(+) diff --git a/ethereum_tokens-gen.py b/ethereum_tokens-gen.py index 36958deb8..f8443ebd4 100755 --- a/ethereum_tokens-gen.py +++ b/ethereum_tokens-gen.py @@ -50,6 +50,7 @@ def generate_c(ipfs_hash): def generate_python(ipfs_hash): + print('ipfs_hash = "%s"' % ipfs_hash) print('tokens = [') for s, i in networks: print_tokens(ipfs_hash, s, i, python=True) From 46bc119962eb43749aa0ff1d0a747cb46d4134a6 Mon Sep 17 00:00:00 2001 From: slush Date: Fri, 6 Apr 2018 23:10:35 +0200 Subject: [PATCH 270/767] coins_details: better erc20 parsing --- coins_details.py | 71 ++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 59 insertions(+), 12 deletions(-) diff --git a/coins_details.py b/coins_details.py index b82dfa6f8..55818f48e 100755 --- a/coins_details.py +++ b/coins_details.py @@ -63,7 +63,7 @@ def update_coins(details): print("Updating", coin['coin_label'], coin['coin_shortcut']) out = details['coins'].setdefault(coin['coin_shortcut'], {}) out['shortcut'] = coin['coin_shortcut'] - out['type'] = 'coin' + out['type'] = 'blockchain' set_default(out, 'name', coin['coin_label']) set_default(out, 't1_enabled', 'yes') @@ -73,19 +73,61 @@ def update_coins(details): #pprint.pprint(coin) def update_erc20(details): - # FIXME Parse tokens using trezor-common/ethereum_tokens-gen.py + networks = [ + ('eth', 1), + # ('exp', 2), + # ('rop', 3), + ('rin', 4), + ('ubq', 8), + # ('rsk', 30), + ('kov', 42), + ('etc', 61), + ] + + # Fetch list of tokens already included in Trezor Core r = requests.get('https://raw.githubusercontent.com/trezor/trezor-core/master/src/apps/ethereum/tokens.py') d = {} exec(r.text, d) + + # TODO 'Qmede...' can be removed after ipfs_hash is being generated into tokens.py + ipfs_hash = d.get('ipfs_hash') or 'QmedefcF1fecLVpRymJJmyJFRpJuCTiNfPYBhzUdHPUq3T' + + infos = {} + for n in networks: + print("Updating info about erc20 tokens for", n[0]) + url = 'https://gateway.ipfs.io/ipfs/%s/%s.json' % (ipfs_hash, n[0]) + r = requests.get(url) + infos[n[0]] = r.json() + + #print(infos) + for t in d['tokens']: token = t[2] print('Updating', token) + try: + network = [ n[0] for n in networks if n[1] == t[0] ][0] + except: + raise Exception("Unknown network", t[0], "for erc20 token", token) + + try: + info = [ i for i in infos[network] if i['symbol'] == token ][0] + except: + raise Exception("Unknown details for erc20 token", token) + out = details['coins'].setdefault(token, {}) + out['name'] = info['name'] out['type'] = 'erc20' - out['chain_id'] = t[0] + out['network'] = network + out['address'] = info['address'] set_default(out, 't1_enabled', 'yes') set_default(out, 't2_enabled', 'yes') + set_default(out, 'links', {}) + + if info['website']: + out['links']['Homepage'] = info['website'] + if info.get('social', {}).get('github', None): + out['links']['Github'] = info['social']['github'] def update_ethereum(details): print('Updating Ethereum ETH') @@ -96,14 +138,19 @@ def update_ethereum(details): set_default(out, 't2_enabled', 'yes') update_marketcap(out, 'ethereum') -def update_nem(details): - print('Updating NEM') - out = details['coins'].setdefault('NEM', {}) - out['name'] = 'NEM' - out['type'] = 'coin' - set_default(out, 't1_enabled', 'yes') - set_default(out, 't2_enabled', 'yes') - update_marketcap(out, 'nem') +def update_mosaics(details): + r = requests.get('https://raw.githubusercontent.com/trezor/trezor-mcu/master/firmware/nem_mosaics.json') + for mosaic in r.json(): + print('Updating', mosaic['name'], mosaic['ticker']) + + out = details['coins'].setdefault(mosaic['ticker'].strip(), {}) + out['name'] = mosaic['name'] + out['type'] = 'mosaic' + set_default(out, 't1_enabled', 'yes') + set_default(out, 't2_enabled', 'yes') + + # Update NEM marketcap + update_marketcap(details['coins']['XEM'], 'NEM') if __name__ == '__main__': try: @@ -114,7 +161,7 @@ if __name__ == '__main__': update_coins(details) update_erc20(details) update_ethereum(details) - update_nem(details) + update_mosaics(details) update_info(details) print(json.dumps(details, sort_keys=True, indent=4)) From 233456f0774dd31cc10c445313dd429ba1140971 Mon Sep 17 00:00:00 2001 From: matejcik Date: Mon, 9 Apr 2018 22:07:54 +0200 Subject: [PATCH 271/767] coins: add bitcore URL for Decred Testnet (copied from python-trezor) --- coins.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/coins.json b/coins.json index 081030455..52d4bcdb5 100644 --- a/coins.json +++ b/coins.json @@ -542,6 +542,8 @@ "address_prefix": "bitcoin:", "min_address_length": 35, "max_address_length": 35, - "bitcore": [] + "bitcore": [ + "https://testnet.decred.org" + ] } ] From 8ac9068e02ecfeb7ba8438efc5da2f02c5c3f277 Mon Sep 17 00:00:00 2001 From: ZuluCrypto Date: Fri, 6 Apr 2018 12:36:15 -0600 Subject: [PATCH 272/767] Stellar - add protobuf messages and types --- protob/messages.proto | 297 ++++++++++++++++++++++++++++++++++++++++++ protob/types.proto | 10 ++ 2 files changed, 307 insertions(+) diff --git a/protob/messages.proto b/protob/messages.proto index e1b81495b..ec02d67f7 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -99,6 +99,31 @@ enum MessageType { MessageType_DebugLinkMemory = 111 [(wire_debug_out) = true]; MessageType_DebugLinkMemoryWrite = 112 [(wire_debug_in) = true]; MessageType_DebugLinkFlashErase = 113 [(wire_debug_in) = true]; + + // Stellar + MessageType_StellarGetPublicKey = 200 [(wire_in) = true]; + MessageType_StellarPublicKey = 201 [(wire_out) = true]; + + MessageType_StellarSignTx = 202 [(wire_in) = true]; + MessageType_StellarTxOpRequest = 203 [(wire_out) = true]; + MessageType_StellarSignMessage = 204 [(wire_in) = true]; + MessageType_StellarMessageSignature = 205 [(wire_out) = true]; + MessageType_StellarVerifyMessage = 206 [(wire_in) = true]; + + MessageType_StellarCreateAccountOp = 210 [(wire_in) = true]; + MessageType_StellarPaymentOp = 211 [(wire_in) = true]; + MessageType_StellarPathPaymentOp = 212 [(wire_in) = true]; + MessageType_StellarManageOfferOp = 213 [(wire_in) = true]; + MessageType_StellarCreatePassiveOfferOp = 214 [(wire_in) = true]; + MessageType_StellarSetOptionsOp = 215 [(wire_in) = true]; + MessageType_StellarChangeTrustOp = 216 [(wire_in) = true]; + MessageType_StellarAllowTrustOp = 217 [(wire_in) = true]; + MessageType_StellarAccountMergeOp = 218 [(wire_in) = true]; + // Omitted: inflation is not a supported operation, would be 219 + MessageType_StellarManageDataOp = 220 [(wire_in) = true]; + MessageType_StellarBumpSequenceOp = 221 [(wire_in) = true]; + + MessageType_StellarSignedTx = 230 [(wire_out) = true]; } //////////////////// @@ -968,6 +993,278 @@ message CosiSignature { optional bytes signature = 1; // Signature } +////////////////////// +// Stellar messages // +////////////////////// + +/** + * Request: Public key at the specified index + * @next StellarPublicKey + */ +message StellarGetPublicKey { + repeated uint32 address_n = 1; // BIP-32 path. For compatibility with other wallets, must be m/44'/148'/index' +} + +/** + * Response: Public key for the given index + * @prev StellarGetPublicKey + */ +message StellarPublicKey { + optional bytes public_key = 1; // Raw bytes of the public key (no version or checksum) +} + +/** + * Request: ask device to sign the given string + * @next StellarMessageSignature + */ +message StellarSignMessage { + repeated uint32 address_n = 1; // BIP-32 path. For compatibility with other wallets, must be m/44'/148'/index' + + optional string message = 2; // Message to sign +} + +/** + * Response: device has signed data + * @prev StellarSignMessage + */ +message StellarMessageSignature { + optional bytes public_key = 1; // Raw bytes of the public key (no version or checksum) + optional bytes signature = 2; // ed25519 signature bytes +} + +/** + * Request: ask device to verify that signature is valid (public_key has signed message) + * @next Success + * @next Failure + */ +message StellarVerifyMessage { + optional bytes public_key = 1; // Public key corresponding to the private key that signed the message + optional bytes message = 2; // Binary data that was signed + optional bytes signature = 3; // Signature to verify +} + +/** + * Request: ask device to sign Stellar transaction + * @next StellarTxOpRequest + */ +message StellarSignTx { + optional uint32 protocol_version = 1; // version of the protofbuf messaging protocol the client is using + repeated uint32 address_n = 2; // BIP-32 path. For compatibility with other wallets, must be m/44'/148'/index' + optional string network_passphrase = 3; // passphrase for signing messages on the destination network + optional bytes source_account = 4; // 32-byte source + optional uint32 fee = 5; // Fee (in stroops) for the transaction + optional uint64 sequence_number = 6; // transaction sequence number + optional uint32 timebounds_start = 8; // unix timestamp (client must truncate this to 32 bytes) + optional uint32 timebounds_end = 9; // unix timestamp (client must truncate this to 32 bytes) + optional uint32 memo_type = 10; // 0 = none, 1 = text, 2 = id, 3 = hash, 4 = return + optional string memo_text = 11; // up to 28 characters (4 bytes are for length) + optional uint64 memo_id = 12; // 8-byte uint64 + optional bytes memo_hash = 13; // 32 bytes representing a hash + optional uint32 num_operations = 14; // number of operations in this transaction +} + +/** + * Response: device is ready for client to send the next operation + * @prev StellarSignTx + * @next StellarPaymentOp + * @next StellarCreateAccountOp + * @next StellarPathPaymentOp + * @next StellarManageOfferOp + * @next StellarCreatePassiveOfferOp + * @next StellarSetOptionsOp + * @next StellarChangeTrustOp + * @next StellarAllowTrustOp + * @next StellarAccountMergeOp + * @next StellarManageDataOp + * @next StellarBumpSequenceOp + */ +message StellarTxOpRequest { +} + +/** + * Request: ask device to confirm this operation type + * @prev StellarTxOpRequest + * @next StellarTxOpRequest + * @next StellarSignedTx + */ +message StellarPaymentOp { + optional bytes source_account = 1; // (optional) 32-byte source account + + optional bytes destination_account = 2; // 32-byte destination account + optional StellarAssetType asset = 3; // asset involved in the operation + optional int64 amount = 4; // amount of the given asset to pay +} + +/** + * Request: ask device to confirm this operation type + * @prev StellarTxOpRequest + * @next StellarTxOpRequest + * @next StellarSignedTx + */ +message StellarCreateAccountOp { + optional bytes source_account = 1; // (optional) 32-byte source account + + optional bytes new_account = 2; // 32-byte account ID to create + optional int64 starting_balance = 3; // initial starting balance for the new account +} + +/** + * Request: ask device to confirm this operation type + * @prev StellarTxOpRequest + * @next StellarTxOpRequest + * @next StellarSignedTx + */ +message StellarPathPaymentOp { + optional bytes source_account = 1; // (optional) 32-byte source account + + optional StellarAssetType send_asset = 2; + optional int64 send_max = 3; + optional bytes destination_account = 4; + optional StellarAssetType destination_asset = 5; + optional int64 destination_amount = 6; + repeated StellarAssetType paths = 7; +} + +/** + * Request: ask device to confirm this operation type + * @prev StellarTxOpRequest + * @next StellarTxOpRequest + * @next StellarSignedTx + */ +message StellarManageOfferOp { + optional bytes source_account = 1; // (optional) 32-byte source account + + optional StellarAssetType selling_asset = 2; + optional StellarAssetType buying_asset = 3; + optional int64 amount = 4; + optional uint32 price_n = 5; // Price numerator + optional uint32 price_d = 6; // Price denominator + optional uint64 offer_id = 7; // Offer ID for updating an existing offer +} + +/** + * Request: ask device to confirm this operation type + * @prev StellarTxOpRequest + * @next StellarTxOpRequest + * @next StellarSignedTx + */ +message StellarCreatePassiveOfferOp { + optional bytes source_account = 1; // (optional) 32-byte source account + + optional StellarAssetType selling_asset = 2; + optional StellarAssetType buying_asset = 3; + optional int64 amount = 4; + optional uint32 price_n = 5; // Price numerator + optional uint32 price_d = 6; // Price denominator +} + +/** + * Request: ask device to confirm this operation type + * @prev StellarTxOpRequest + * @next StellarTxOpRequest + * @next StellarSignedTx + */ +message StellarSetOptionsOp { + optional bytes source_account = 1; // (optional) 32-byte source account + + optional bytes inflation_destination_account = 2; // (optional) 32-byte inflation destination + optional uint32 clear_flags = 3; + optional uint32 set_flags = 4; + optional uint32 master_weight = 5; + optional uint32 low_threshold = 6; + optional uint32 medium_threshold = 7; + optional uint32 high_threshold = 8; + optional string home_domain = 9; + optional uint32 signer_type = 10; + optional bytes signer_key = 11; + optional uint32 signer_weight = 12; +} + +/** + * Request: ask device to confirm this operation type + * @prev StellarTxOpRequest + * @next StellarTxOpRequest + * @next StellarSignedTx + */ +message StellarChangeTrustOp { + optional bytes source_account = 1; // (optional) 32-byte source account + + optional StellarAssetType asset = 2; + optional uint64 limit = 3; +} + +/** + * Request: ask device to confirm this operation type + * @prev StellarTxOpRequest + * @next StellarTxOpRequest + * @next StellarSignedTx + */ +message StellarAllowTrustOp { + optional bytes source_account = 1; // (optional) 32-byte source account + + optional bytes trusted_account = 2; // The account being allowed to hold the asset + optional uint32 asset_type = 3; // 1 = 4-character, 2 = 12-character + optional string asset_code = 4; // human-readable asset code + optional uint32 is_authorized = 5; +} + +/** + * Request: ask device to confirm this operation type + * @prev StellarTxOpRequest + * @next StellarTxOpRequest + * @next StellarSignedTx + */ +message StellarAccountMergeOp { + optional bytes source_account = 1; // (optional) 32-byte source account + + optional bytes destination_account = 2; // 32-byte destination account +} + +/** + * Request: ask device to confirm this operation type + * @prev StellarTxOpRequest + * @next StellarTxOpRequest + * @next StellarSignedTx + */ +message StellarManageDataOp { + optional bytes source_account = 1; // (optional) 32-byte source account + + optional string key = 2; + optional bytes value = 3; // 64 bytes of arbitrary data +} + +/** + * Request: ask device to confirm this operation type + * @prev StellarTxOpRequest + * @next StellarTxOpRequest + * @next StellarSignedTx + */ +message StellarBumpSequenceOp { + optional bytes source_account = 1; // (optional) 32-byte source account + + optional uint64 bump_to = 2; // new sequence number +} + +/** + * Response: signature for transaction + * @prev StellarPaymentOp + * @prev StellarCreateAccountOp + * @prev StellarPathPaymentOp + * @prev StellarManageOfferOp + * @prev StellarCreatePassiveOfferOp + * @prev StellarSetOptionsOp + * @prev StellarChangeTrustOp + * @prev StellarAllowTrustOp + * @prev StellarAccountMergeOp + * @prev StellarManageDataOp + * @prev StellarBumpSequenceOp + */ +message StellarSignedTx { + optional bytes public_key = 1; // public key for the private key used to sign data + optional bytes signature = 2; // signature suitable for sending to the Stellar network +} + + ///////////////////////////////////////////////////////////// // Debug messages (only available if DebugLink is enabled) // ///////////////////////////////////////////////////////////// diff --git a/protob/types.proto b/protob/types.proto index 680a4bffd..4b0d5265f 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -444,3 +444,13 @@ enum NEMImportanceTransferMode { ImportanceTransfer_Activate = 1; ImportanceTransfer_Deactivate = 2; } + +/** + * Describes a Stellar asset + * @used_in StellarTxOpAck + */ +message StellarAssetType { + optional uint32 type = 1; // 0 = native asset (XLM), 1 = alphanum 4, 2 = alphanum 12 + optional string code = 2; // for non-native assets, string describing the code + optional bytes issuer = 3; // 32-byte issuing address +} \ No newline at end of file From 45cde2249cb03aad89e1829f449716950e7a7de8 Mon Sep 17 00:00:00 2001 From: motty Date: Tue, 10 Apr 2018 09:53:01 +0900 Subject: [PATCH 273/767] mod fujicoin SegWit --- coins.json | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/coins.json b/coins.json index 52d4bcdb5..8f8a63382 100644 --- a/coins.json +++ b/coins.json @@ -459,16 +459,19 @@ "hash_genesis_block": "adb6d9cfd74075e7f91608add4bd2a2ea636f70856183086842667a1597714a0", "xpub_magic": "0488b21e", "xprv_magic": "0488ade4", - "xpub_magic_segwit_p2sh": null, - "bech32_prefix": null, + "xpub_magic_segwit_p2sh": "049d7cb2", + "bech32_prefix": "fc", "cashaddr_prefix": null, "bip44": 75, - "segwit": false, + "segwit": true, "decred": false, "forkid": null, "force_bip143": false, "default_fee_b": { - "Normal": 100000 + "Low": 100000, + "Economy": 200000, + "Normal": 500000, + "High": 1000000 }, "dust_limit": 100000, "blocktime_minutes": 1.0, From 59147463e20199cf1067e2eb6e587eeea26fff6f Mon Sep 17 00:00:00 2001 From: Saleem Rashid Date: Thu, 5 Apr 2018 17:50:38 +0100 Subject: [PATCH 274/767] coins: Update DigiByte --- coins.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/coins.json b/coins.json index 8f8a63382..dd5425625 100644 --- a/coins.json +++ b/coins.json @@ -383,7 +383,7 @@ "coin_label": "DigiByte", "curve_name": "secp256k1", "address_type": 30, - "address_type_p2sh": 5, + "address_type_p2sh": 63, "maxfee_kb": 500000, "minfee_kb": 1000, "signed_message_header": "DigiByte Signed Message:\n", @@ -410,7 +410,9 @@ "address_prefix": "digibyte:", "min_address_length": 27, "max_address_length": 34, - "bitcore": [] + "bitcore": [ + "https://explorer.digibyteprojects.com" + ] }, { "coin_name": "Monacoin", From 6a7710c026d748f09aca1d95bc82995c52a60479 Mon Sep 17 00:00:00 2001 From: Aleksey Popov Date: Tue, 19 Dec 2017 18:48:07 +0300 Subject: [PATCH 275/767] protob: Add messages for Lisk support --- protob/messages.proto | 101 ++++++++++++++++++++++++++++++++++++++++-- protob/types.proto | 71 ++++++++++++++++++++++++++++- 2 files changed, 168 insertions(+), 4 deletions(-) diff --git a/protob/messages.proto b/protob/messages.proto index ec02d67f7..aebe459f5 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -100,16 +100,25 @@ enum MessageType { MessageType_DebugLinkMemoryWrite = 112 [(wire_debug_in) = true]; MessageType_DebugLinkFlashErase = 113 [(wire_debug_in) = true]; + // Lisk + MessageType_LiskGetAddress = 114 [(wire_in) = true]; + MessageType_LiskAddress = 115 [(wire_out) = true]; + MessageType_LiskSignTx = 116 [(wire_in) = true]; + MessageType_LiskSignedTx = 117 [(wire_out) = true]; + MessageType_LiskSignMessage = 118 [(wire_in) = true]; + MessageType_LiskMessageSignature = 119 [(wire_out) = true]; + MessageType_LiskVerifyMessage = 120 [(wire_in) = true]; + MessageType_LiskGetPublicKey = 121 [(wire_in) = true]; + MessageType_LiskPublicKey = 122 [(wire_out) = true]; + // Stellar MessageType_StellarGetPublicKey = 200 [(wire_in) = true]; MessageType_StellarPublicKey = 201 [(wire_out) = true]; - MessageType_StellarSignTx = 202 [(wire_in) = true]; MessageType_StellarTxOpRequest = 203 [(wire_out) = true]; MessageType_StellarSignMessage = 204 [(wire_in) = true]; MessageType_StellarMessageSignature = 205 [(wire_out) = true]; MessageType_StellarVerifyMessage = 206 [(wire_in) = true]; - MessageType_StellarCreateAccountOp = 210 [(wire_in) = true]; MessageType_StellarPaymentOp = 211 [(wire_in) = true]; MessageType_StellarPathPaymentOp = 212 [(wire_in) = true]; @@ -122,7 +131,6 @@ enum MessageType { // Omitted: inflation is not a supported operation, would be 219 MessageType_StellarManageDataOp = 220 [(wire_in) = true]; MessageType_StellarBumpSequenceOp = 221 [(wire_in) = true]; - MessageType_StellarSignedTx = 230 [(wire_out) = true]; } @@ -1265,6 +1273,93 @@ message StellarSignedTx { } +//////////////////// +// Lisk messages // +////////////////// + +/** + * Request: Ask device for Lisk public key corresponding to address_n path + * @next LiskPublicKey +*/ +message LiskGetPublicKey { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional bool show_display = 2; // Optionally show on display before sending the result +} + +/** + * Response: Contains Lisk public key derived from device private seed + * @prev LiskGetPublicKey +*/ +message LiskPublicKey { + optional bytes public_key = 1; // Lisk public key +} + +/** + * Request: Ask device for Lisk address corresponding to address_n path + * @next PassphraseRequest + * @next LiskAddress + * @next Failure + */ + message LiskGetAddress { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional bool show_display = 2; // Optionally show on display before sending the result +} + +/** + * Response: Contains Lisk address derived from device private seed + * @prev LiskGetAddress + */ + message LiskAddress { + optional string address = 1; // Lisk address +} + +/** + * Request: Ask device to sign Lisk transaction + * @next LiskSignedTx + */ + message LiskSignTx { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional LiskTransactionCommon transaction = 2; // Lisk transaction structure +} + +/** +* Response: Contains Lisk transaction signature +* @prev LiskSignTx +*/ +message LiskSignedTx { + optional bytes signature = 1; +} + +/** +* Request: Ask device to sign message +* @next LiskMessageSignature +* @next Failure +*/ +message LiskSignMessage { + repeated uint32 address_n = 1; + optional bytes message = 2; +} + +/** + * Response: Signed message + * @prev LiskSignMessage + */ +message LiskMessageSignature { + optional string address = 1; + optional bytes signature = 2; +} + +/** + * Request: Ask device to verify message + * @next Success + * @next Failure + */ +message LiskVerifyMessage { + optional bytes signature = 1; + optional bytes public_key = 2; + optional bytes message = 3; +} + ///////////////////////////////////////////////////////////// // Debug messages (only available if DebugLink is enabled) // ///////////////////////////////////////////////////////////// diff --git a/protob/types.proto b/protob/types.proto index 4b0d5265f..fccf1363d 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -453,4 +453,73 @@ message StellarAssetType { optional uint32 type = 1; // 0 = native asset (XLM), 1 = alphanum 4, 2 = alphanum 12 optional string code = 2; // for non-native assets, string describing the code optional bytes issuer = 3; // 32-byte issuing address -} \ No newline at end of file +} + +/** +* Type of Lisk transaction +* @used_in LiskTransactionCommon +*/ +enum LiskTransactionType { + Transfer = 0; + RegisterSecondPassphrase = 1; + RegisterDelegate = 2; + CastVotes = 3; + RegisterMultisignatureAccount = 4; + CreateDapp = 5; + TransferIntoDapp = 6; + TransferOutOfDapp = 7; +} + +/** +* Structure representing the common part for Lisk transactions +* @used_in LiskSignTx +*/ +message LiskTransactionCommon { + optional LiskTransactionType type = 1; + optional string amount = 2 [default='0']; + optional string fee = 3; + optional string recipient_id = 4; + optional string sender_public_key = 5; + optional string requester_public_key = 6; + optional string signature = 7; + optional uint32 timestamp = 8; + optional LiskTransactionAsset asset = 9; +} + +/** +* Structure representing the asset field in the Lisk transaction +* @used_in LiskTransactionCommon +*/ +message LiskTransactionAsset { + optional LiskSignatureType signature = 1; + optional LiskDelegateType delegate = 2; + repeated string votes = 3; + optional LiskMultisignatureType multisignature = 4; + optional string data = 5; +} + +/** +* Structure representing the signature field in the Lisk transaction asset field +* @used_in LiskTransactionAsset +*/ +message LiskSignatureType { + optional bytes public_key = 1; +} + +/** +* Structure representing the delegate field in the Lisk transaction asset field +* @used_in LiskTransactionAsset +*/ +message LiskDelegateType { + optional string username = 1; +} + +/** +* Structure representing the multisignature field in the Lisk transaction asset field +* @used_in LiskTransactionAsset +*/ +message LiskMultisignatureType { + optional uint32 min = 1; + optional uint32 life_time = 2; + repeated string keys_group = 3; +} From 0e4a8f50195e58119d77d0df10e8aaff34a5e9eb Mon Sep 17 00:00:00 2001 From: slush Date: Wed, 11 Apr 2018 18:37:30 +0200 Subject: [PATCH 276/767] coins_details: Improved sanity checks --- coins_details.py | 102 +++++++++++++++++++++++++++++++++-------------- 1 file changed, 72 insertions(+), 30 deletions(-) diff --git a/coins_details.py b/coins_details.py index 55818f48e..128a705d3 100755 --- a/coins_details.py +++ b/coins_details.py @@ -5,7 +5,7 @@ import json import requests import pprint -SKIP_COINMARKETCAP = False +SKIP_COINMARKETCAP = True def coinmarketcap_info(shortcut): if SKIP_COINMARKETCAP: @@ -13,12 +13,12 @@ def coinmarketcap_info(shortcut): shortcut = shortcut.replace(' ', '-') url = 'https://api.coinmarketcap.com/v1/ticker/%s/?convert=USD' % shortcut - ret = requests.get(url) - data = ret.json() try: - return data[0] + return requests.get(url).json()[0] + except KeyboardInterrupt: + raise except: - print("Cannot fetch info for %s" % shortcut) + print("Cannot fetch Coinmarketcap info for %s" % shortcut) def update_marketcap(obj, shortcut): try: @@ -41,7 +41,8 @@ def set_default(obj, key, default_value): def update_info(details): details['info']['updated_at'] = int(time.time()) details['info']['updated_at_readable'] = time.asctime() - details['info']['coins'] = len(details['coins']) + details['info']['t1_coins'] = len([True for _, c in details['coins'].items() if c['t1_enabled'] == 'yes']) + details['info']['t2_coins'] = len([True for _, c in details['coins'].items() if c['t2_enabled'] == 'yes']) try: details['info']['total_marketcap_usd'] = int(coinmarketcap_global()['total_market_cap_usd']) @@ -49,28 +50,39 @@ def update_info(details): pass marketcap = 0 - for c in details['coins']: - marketcap += details['coins'][c].setdefault('marketcap_usd', 0) + for k, c in details['coins'].items(): + if c['t1_enabled'] == 'yes' or c['t2_enabled'] == 'yes': + marketcap += details['coins'][k].setdefault('marketcap_usd', 0) details['info']['marketcap_usd'] = marketcap +def check_unsupported(details, prefix, supported): + for k in details['coins'].keys(): + if not k.startswith(prefix): + continue + if k not in supported: + print("%s not supported by Trezor? (Possible manual entry)" % k) + def update_coins(details): coins = json.load(open('coins.json', 'r')) + supported = [] for coin in coins: if coin['firmware'] != 'stable': continue - print("Updating", coin['coin_label'], coin['coin_shortcut']) - out = details['coins'].setdefault(coin['coin_shortcut'], {}) - out['shortcut'] = coin['coin_shortcut'] - out['type'] = 'blockchain' - + # print("Updating", coin['coin_label'], coin['coin_shortcut']) + key = "coin:%s" % coin['coin_shortcut'] + supported.append(key) + out = details['coins'].setdefault(key, {}) + out['type'] = 'coin' + set_default(out, 'shortcut', coin['coin_shortcut']) set_default(out, 'name', coin['coin_label']) + set_default(out, 'links', {}) set_default(out, 't1_enabled', 'yes') set_default(out, 't2_enabled', 'yes') - update_marketcap(out, coin['coin_label']) + update_marketcap(out, coin.get('coinmarketcap_alias', coin['coin_label'])) - #pprint.pprint(coin) + check_unsupported(details, 'coin:', supported) def update_erc20(details): networks = [ @@ -94,16 +106,15 @@ def update_erc20(details): infos = {} for n in networks: - print("Updating info about erc20 tokens for", n[0]) + # print("Updating info about erc20 tokens for", n[0]) url = 'https://gateway.ipfs.io/ipfs/%s/%s.json' % (ipfs_hash, n[0]) r = requests.get(url) infos[n[0]] = r.json() - #print(infos) - + supported = [] for t in d['tokens']: token = t[2] - print('Updating', token) + # print('Updating', token) try: network = [ n[0] for n in networks if n[1] == t[0] ][0] @@ -115,11 +126,15 @@ def update_erc20(details): except: raise Exception("Unknown details for erc20 token", token) - out = details['coins'].setdefault(token, {}) - out['name'] = info['name'] + key = "erc20:%s:%s" % (network, token) + supported.append(key) + out = details['coins'].setdefault(key, {}) out['type'] = 'erc20' out['network'] = network out['address'] = info['address'] + + set_default(out, 'shortcut', token) + set_default(out, 'name', info['name']) set_default(out, 't1_enabled', 'yes') set_default(out, 't2_enabled', 'yes') set_default(out, 'links', {}) @@ -129,28 +144,54 @@ def update_erc20(details): if info.get('social', {}).get('github', None): out['links']['Github'] = info['social']['github'] + update_marketcap(out, out.get('coinmarketcap_alias', token)) + + check_unsupported(details, 'erc20:', supported) + def update_ethereum(details): - print('Updating Ethereum ETH') - out = details['coins'].setdefault('ETH', {}) - out['name'] = 'Ethereum' + # print('Updating Ethereum ETH') + out = details['coins'].setdefault('coin2:ETH', {}) out['type'] = 'coin' + set_default(out, 'shortcut', 'ETH') + set_default(out, 'name', 'Ethereum') set_default(out, 't1_enabled', 'yes') set_default(out, 't2_enabled', 'yes') update_marketcap(out, 'ethereum') def update_mosaics(details): r = requests.get('https://raw.githubusercontent.com/trezor/trezor-mcu/master/firmware/nem_mosaics.json') + supported = [] for mosaic in r.json(): - print('Updating', mosaic['name'], mosaic['ticker']) + # print('Updating', mosaic['name'], mosaic['ticker']) - out = details['coins'].setdefault(mosaic['ticker'].strip(), {}) - out['name'] = mosaic['name'] + key = "mosaic:%s" % mosaic['ticker'].strip() + supported.append(key) + out = details['coins'].setdefault(key, {}) out['type'] = 'mosaic' + set_default(out, 'shortcut', mosaic['ticker'].strip()) + set_default(out, 'name', mosaic['name']) set_default(out, 't1_enabled', 'yes') set_default(out, 't2_enabled', 'yes') - # Update NEM marketcap - update_marketcap(details['coins']['XEM'], 'NEM') + update_marketcap(out, out.get('coinmarketcap_alias', out['name'])) + + check_unsupported(details, 'mosaic:', supported) + +def check_missing_details(details): + for k in details['coins'].keys(): + coin = details['coins'][k] + + if 'links' not in coin: + print("%s: Missing links" % k) + continue + if 'Homepage' not in coin['links']: + print("%s: Missing homepage" % k) + if coin['t1_enabled'] not in ('yes', 'no', 'planned', 'in progress'): + print("%s: Unknown t1_enabled" % k) + if coin['t2_enabled'] not in ('yes', 'no', 'planned', 'in progress'): + print("%s: Unknown t2_enabled" % k) + if 'TREZOR Wallet' in coin['links'] and coin['links']['TREZOR Wallet'] != 'https://wallet.trezor.io': + print("%s: Strange URL for TREZOR Wallet" % k) if __name__ == '__main__': try: @@ -163,6 +204,7 @@ if __name__ == '__main__': update_ethereum(details) update_mosaics(details) update_info(details) + check_missing_details(details) - print(json.dumps(details, sort_keys=True, indent=4)) + print(json.dumps(details['info'], sort_keys=True, indent=4)) json.dump(details, open('coins_details.json', 'w'), sort_keys=True, indent=4) From 9a9bca0310421af0d984ddb6909b37772e41f75b Mon Sep 17 00:00:00 2001 From: slush Date: Wed, 11 Apr 2018 18:45:55 +0200 Subject: [PATCH 277/767] Initial import --- coins_details.json | 8095 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 8095 insertions(+) create mode 100644 coins_details.json diff --git a/coins_details.json b/coins_details.json new file mode 100644 index 000000000..953f5ef40 --- /dev/null +++ b/coins_details.json @@ -0,0 +1,8095 @@ +{ + "coins": { + "coin2:ETH": { + "links": { + "Homepage": "https://www.ethereum.org", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 41657474634, + "name": "Ethereum", + "shortcut": "ETH", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin" + }, + "coin2:XLM": { + "links": { + "Homepage": "https://www.stellar.org" + }, + "marketcap_usd": 0, + "name": "Stellar", + "notes": "In development", + "shortcut": "XLM", + "t1_enabled": "no", + "t2_enabled": "in progress" + }, + "coin2:XMR": { + "links": { + "Homepage": "https://getmonero.org" + }, + "marketcap_usd": 0, + "name": "Monero", + "notes": "In development", + "shortcut": "XMR", + "t1_enabled": "no", + "t2_enabled": "in progress", + "type": "coin" + }, + "coin2:XRP": { + "links": { + "Homepage": "https://ripple.com" + }, + "marketcap_usd": 0, + "name": "Ripple", + "notes": "In development", + "shortcut": "XRP", + "t1_enabled": "no", + "t2_enabled": "in progress", + "type": "coin" + }, + "coin:BCH": { + "links": { + "Electron Cash": "https://electroncash.org", + "Homepage": "https://www.bitcoincash.org/", + "TREZOR Wallet": "https://wallet.trezor.io" + }, + "marketcap_usd": 11187273830, + "name": "Bitcoin Cash", + "shortcut": "BCH", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin" + }, + "coin:BTC": { + "links": { + "Electrum": "https://electrum.org", + "Github": "https://github.com/bitcoin/bitcoin", + "Homepage": "https://bitcoin.org", + "TREZOR Wallet": "https://wallet.trezor.io" + }, + "marketcap_usd": 117810371208, + "name": "Bitcoin", + "shortcut": "BTC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin" + }, + "coin:BTG": { + "links": { + "Homepage": "https://bitcoingold.org", + "TREZOR Wallet": "https://wallet.trezor.io" + }, + "marketcap_usd": 716872866, + "name": "Bitcoin Gold", + "shortcut": "BTG", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin" + }, + "coin:DASH": { + "links": { + "Homepage": "https://www.dash.org", + "TREZOR Wallet": "https://wallet.trezor.io" + }, + "marketcap_usd": 2431702245, + "name": "Dash", + "shortcut": "DASH", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin" + }, + "coin:DGB": { + "links": { + "Homepage": "https://www.digibyte.co" + }, + "marketcap_usd": 228250448, + "name": "DigiByte", + "shortcut": "DGB", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin" + }, + "coin:DOGE": { + "links": { + "Homepage": "https://dogecoin.com" + }, + "marketcap_usd": 394277478, + "name": "Dogecoin", + "shortcut": "DOGE", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin" + }, + "coin:FJC": { + "links": { + "Electrum-FJC": "http://www.fujicoin.org/downloads.php", + "Homepage": "https://www.fujicoin.org" + }, + "marketcap_usd": 631311, + "name": "Fujicoin", + "shortcut": "FJC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin" + }, + "coin:LTC": { + "links": { + "Electrum-LTC": "https://electrum-ltc.org", + "Homepage": "https://litecoin.org", + "TREZOR Wallet": "https://wallet.trezor.io" + }, + "marketcap_usd": 6472837124, + "name": "Litecoin", + "shortcut": "LTC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin" + }, + "coin:MONA": { + "links": { + "Electrum-MONA": "https://electrum-mona.org", + "Homepage": "https://monacoin.org" + }, + "marketcap_usd": 194942030, + "name": "Monacoin", + "shortcut": "MONA", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin" + }, + "coin:NMC": { + "links": { + "Homepage": "https://namecoin.org" + }, + "marketcap_usd": 22255795, + "name": "Namecoin", + "shortcut": "NMC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin" + }, + "coin:TEST": { + "links": { + "Homepage": "https://bitcoin.org" + }, + "marketcap_usd": 0, + "name": "Testnet", + "shortcut": "TEST", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin" + }, + "coin:VTC": { + "links": { + "Homepage": "https://vertcoin.org" + }, + "marketcap_usd": 87115863, + "name": "Vertcoin", + "shortcut": "VTC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin" + }, + "coin:ZEC": { + "links": { + "Homepage": "z.cash", + "TREZOR Wallet": "https://wallet.trezor.io" + }, + "marketcap_usd": 673868263, + "name": "Zcash", + "shortcut": "ZEC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin" + }, + "erc20:etc:BEC": { + "address": "0x085fb4f24031EAedbC2B611AA528f22343eB52Db", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "BEC", + "network": "etc", + "shortcut": "BEC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:etc:PLAY": { + "address": "0x5acE17f87c7391E5792a7683069A8025B83bbd85", + "links": { + "Homepage": "http://smartbillions.com/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Smart Billions", + "network": "etc", + "shortcut": "PLAY", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:$TEAK": { + "address": "0x7DD7F56D697Cc0f2b52bD55C057f378F1fE6Ab4b", + "links": { + "Homepage": "https://steak.network", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "$TEAK", + "network": "eth", + "shortcut": "$TEAK", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:1ST": { + "address": "0xAf30D2a7E90d7DC361c8C4585e9BB7D2F6f15bc7", + "links": { + "Homepage": "https://firstblood.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 13758727, + "name": "FirstBlood", + "network": "eth", + "shortcut": "1ST", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:1WO": { + "address": "0xfDBc1aDc26F0F8f8606a5d63b7D3a3CD21c22B23", + "links": { + "Homepage": "https://ico.1worldonline.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "1WO", + "network": "eth", + "shortcut": "1WO", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:300": { + "address": "0xaEc98A708810414878c3BCDF46Aad31dEd4a4557", + "links": { + "Homepage": "https://300tokensparta.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "300 Token Sparta", + "network": "eth", + "shortcut": "300", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ABT": { + "address": "0xB98d4C97425d9908E66E53A6fDf673ACcA0BE986", + "links": { + "Homepage": "https://www.arcblock.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "ArcBlock Token", + "network": "eth", + "shortcut": "ABT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ACC": { + "address": "0x13F1b7FDFbE1fc66676D56483e21B1ecb40b58E2", + "links": { + "Homepage": "http://accelerator.network", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 710980, + "name": "Accelerator Network", + "network": "eth", + "shortcut": "ACC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ADI": { + "address": "0x8810C63470d38639954c6B41AaC545848C46484a", + "links": { + "Github": "https://github.com/aditus", + "Homepage": "https://aditus.net", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Aditus", + "network": "eth", + "shortcut": "ADI", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ADST": { + "address": "0x422866a8F0b032c5cf1DfBDEf31A20F4509562b0", + "links": { + "Homepage": "https://adshares.net", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 3578041, + "name": "AdShares", + "network": "eth", + "shortcut": "ADST", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ADT": { + "address": "0xD0D6D6C5Fe4a677D343cC433536BB717bAe167dD", + "links": { + "Github": "https://github.com/adchain", + "Homepage": "https://adtoken.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 19698480, + "name": "AdToken", + "network": "eth", + "shortcut": "ADT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ADX": { + "address": "0x4470BB87d77b963A013DB939BE332f927f2b992e", + "links": { + "Github": "https://github.com/AdExBlockchain", + "Homepage": "https://www.adex.network", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "AdEx Network", + "network": "eth", + "shortcut": "ADX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:AE": { + "address": "0x5CA9a71B1d01849C0a95490Cc00559717fCF0D1d", + "links": { + "Github": "https://github.com/aeternity", + "Homepage": "https://www.aeternity.com/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 332928000, + "name": "aeternity", + "network": "eth", + "shortcut": "AE", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:AGI": { + "address": "0x8eB24319393716668D768dCEC29356ae9CfFe285", + "links": { + "Github": "https://github.com/singnet/singnet", + "Homepage": "https://singularitynet.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 74892428, + "name": "SingularityNET", + "network": "eth", + "shortcut": "AGI", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:AION": { + "address": "0x4CEdA7906a5Ed2179785Cd3A40A69ee8bc99C466", + "links": { + "Github": "https://github.com/aionnetwork", + "Homepage": "https://aion.network/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 265397151, + "name": "Aion", + "network": "eth", + "shortcut": "AION", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:AIR": { + "address": "0x27Dce1eC4d3f72C3E457Cc50354f1F975dDEf488", + "links": { + "Homepage": "https://airtoken.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 6595323, + "name": "AirToken", + "network": "eth", + "shortcut": "AIR", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:AIX": { + "address": "0x1063ce524265d5a3A624f4914acd573dD89ce988", + "links": { + "Github": "https://github.com/AigangNetwork", + "Homepage": "https://aigang.network/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 2486099, + "name": "Aigang", + "network": "eth", + "shortcut": "AIX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ALCO": { + "address": "0x181a63746d3Adcf356CBc73aCE22832FFBB1EE5A", + "links": { + "Homepage": "https://alaricoin.org", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "ALCO", + "network": "eth", + "shortcut": "ALCO", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ALIS": { + "address": "0xEA610B1153477720748DC13ED378003941d84fAB", + "links": { + "Github": "https://github.com/AlisProject", + "Homepage": "https://alismedia.jp", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "ALIS Token", + "network": "eth", + "shortcut": "ALIS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ALTS": { + "address": "0x638AC149eA8EF9a1286C41B977017AA7359E6Cfa", + "links": { + "Homepage": "http://www.altcoinstalks.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "ALTS Token", + "network": "eth", + "shortcut": "ALTS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:AMB": { + "address": "0x4DC3643DbC642b72C158E7F3d2ff232df61cb6CE", + "links": { + "Github": "https://github.com/ambrosus", + "Homepage": "https://ambrosus.com/index.html", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Amber Token", + "network": "eth", + "shortcut": "AMB", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:AMIS": { + "address": "0x949bEd886c739f1A3273629b3320db0C5024c719", + "links": { + "Github": "https://github.com/amisolution/ERC20-AMIS", + "Homepage": "http://erc20-amis.amisolution.net", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "AMIS", + "network": "eth", + "shortcut": "AMIS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ANT": { + "address": "0x960b236A07cf122663c4303350609A66A7B288C0", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "ANT", + "network": "eth", + "shortcut": "ANT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:APPC": { + "address": "0x1a7a8BD9106F2B8D977E08582DC7d24c723ab0DB", + "links": { + "Github": "https://github.com/Aptoide/AppCoins-ethereumj", + "Homepage": "https://appcoins.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 35209513, + "name": "AppCoins", + "network": "eth", + "shortcut": "APPC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:APT": { + "address": "0x23aE3C5B39B12f0693e05435EeaA1e51d8c61530", + "links": { + "Homepage": "https://aigang.network", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 2486099, + "name": "AIGang", + "network": "eth", + "shortcut": "APT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ARC": { + "address": "0xAc709FcB44a43c35F0DA4e3163b117A17F3770f5", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "ARC", + "network": "eth", + "shortcut": "ARC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ARCT": { + "address": "0x1245ef80F4d9e02ED9425375e8F649B9221b31D8", + "links": { + "Homepage": "https://www.arbitragect.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 572078, + "name": "ArbitrageCT", + "network": "eth", + "shortcut": "ARCT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ARD": { + "address": "0x75Aa7B0d02532f3833b66c7f0Ad35376d373ddF8", + "links": { + "Github": "https://github.com/accordtoken", + "Homepage": "https://accordtoken.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Accord", + "network": "eth", + "shortcut": "ARD", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ARN": { + "address": "0xBA5F11b16B155792Cf3B2E6880E8706859A8AEB6", + "links": { + "Homepage": "https://aeron.aero", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Aeron Token", + "network": "eth", + "shortcut": "ARN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ART": { + "address": "0xfec0cF7fE078a500abf15F1284958F22049c2C7e", + "links": { + "Homepage": "https://cofound.it/en/projects/maecenas", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "ART", + "network": "eth", + "shortcut": "ART", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ARX": { + "address": "0x7705FaA34B16EB6d77Dfc7812be2367ba6B0248e", + "links": { + "Github": "https://github.com/va109/Artex", + "Homepage": "https://artex.global", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "ARX", + "network": "eth", + "shortcut": "ARX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:AST": { + "address": "0x27054b13b1B798B345b591a4d22e6562d47eA75a", + "links": { + "Homepage": "https://airswap.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 39937200, + "name": "Airswap", + "network": "eth", + "shortcut": "AST", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ATH": { + "address": "0x17052d51E954592C1046320c2371AbaB6C73Ef10", + "links": { + "Homepage": "https://athenianwarriortoken.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Athenian Warrior Token", + "network": "eth", + "shortcut": "ATH", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ATL": { + "address": "0x78B7FADA55A64dD895D8c8c35779DD8b67fA8a05", + "links": { + "Homepage": "https://atlant.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "ATL", + "network": "eth", + "shortcut": "ATL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ATT": { + "address": "0x887834D3b8D450B6bAB109c252Df3DA286d73CE4", + "links": { + "Github": "https://github.com/ATMatrix", + "Homepage": "https://atmatrix.org/?locale=en", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Atmatrix Token", + "network": "eth", + "shortcut": "ATT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ATTN": { + "address": "0x6339784d9478dA43106A429196772A029C2f177d", + "links": { + "Homepage": "https://attentionnetwork.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Attention Token", + "network": "eth", + "shortcut": "ATTN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:AVA": { + "address": "0xeD247980396B10169BB1d36f6e278eD16700a60f", + "links": { + "Github": "https://github.com/AvalonPlatform", + "Homepage": "https://avalon.nu", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "AVA", + "network": "eth", + "shortcut": "AVA", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:AVT": { + "address": "0x0d88eD6E74bbFD96B831231638b66C05571e824F", + "links": { + "Homepage": "https://aventus.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "AVT", + "network": "eth", + "shortcut": "AVT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:AXP": { + "address": "0x9af2c6B1A28D3d6BC084bd267F70e90d49741D5B", + "links": { + "Homepage": "https://www.axpire.io/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "AXP", + "network": "eth", + "shortcut": "AXP", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:BANX": { + "address": "0xF87F0D9153fea549c728Ad61cb801595a68b73de", + "links": { + "Homepage": "https://pre.ubanx.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "BANX", + "network": "eth", + "shortcut": "BANX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:BAT": { + "address": "0x0D8775F648430679A709E98d2b0Cb6250d2887EF", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "BAT", + "network": "eth", + "shortcut": "BAT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:BCBC": { + "address": "0x7367A68039d4704f30BfBF6d948020C3B07DFC59", + "links": { + "Github": "https://github.com/beerchain/beercoin", + "Homepage": "https://www.beerchain.technology", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Beercoin", + "network": "eth", + "shortcut": "BCBC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:BCDN": { + "address": "0x1e797Ce986C3CFF4472F7D38d5C4aba55DfEFE40", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "BCDN", + "network": "eth", + "shortcut": "BCDN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:BCDT": { + "address": "0xAcfa209Fb73bF3Dd5bBfb1101B9Bc999C49062a5", + "links": { + "Github": "https://github.com/VinceBCD/BCDiploma", + "Homepage": "https://www.bcdiploma.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Blockchain Certified Data Token", + "network": "eth", + "shortcut": "BCDT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:BCL": { + "address": "0xbc1234552EBea32B5121190356bBa6D3Bb225bb5", + "links": { + "Homepage": "https://www.bitclave.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "BCL", + "network": "eth", + "shortcut": "BCL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:BCPT": { + "address": "0x1c4481750daa5Ff521A2a7490d9981eD46465Dbd", + "links": { + "Github": "https://github.com/blockmason", + "Homepage": "https://blockmason.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "BCPT", + "network": "eth", + "shortcut": "BCPT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:BDG": { + "address": "0x1961B3331969eD52770751fC718ef530838b6dEE", + "links": { + "Github": "https://github.com/bitdegree", + "Homepage": "https://bitdegree.org", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "BitDegree Token", + "network": "eth", + "shortcut": "BDG", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:BEE": { + "address": "0x4D8fc1453a0F359e99c9675954e656D80d996FbF", + "links": { + "Github": "https://github.com/thebeetoken", + "Homepage": "https://www.beetoken.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Bee Token", + "network": "eth", + "shortcut": "BEE", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:BET": { + "address": "0x8aA33A7899FCC8eA5fBe6A608A109c3893A1B8b2", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "BET", + "network": "eth", + "shortcut": "BET", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:BKB": { + "address": "0xB2Bfeb70B903F1BAaC7f2ba2c62934C7e5B974C4", + "links": { + "Homepage": "https://betking.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "BetKing Bankroll Token", + "network": "eth", + "shortcut": "BKB", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:BLT": { + "address": "0x107c4504cd79C5d2696Ea0030a8dD4e92601B82e", + "links": { + "Github": "https://github.com/hellobloom", + "Homepage": "https://hellobloom.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Bloom", + "network": "eth", + "shortcut": "BLT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:BLX (Bullion)": { + "address": "0xcE59d29b09aAE565fEEEf8E52f47c3CD5368C663", + "links": { + "Github": "https://github.com/bullioncoin", + "Homepage": "http://www.bullioncrypto.info", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Bullion Crypto", + "network": "eth", + "shortcut": "BLX (Bullion)", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:BLX (Iconomi)": { + "address": "0xE5a7c12972f3bbFe70ed29521C8949b8Af6a0970", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 94059629, + "name": "Iconomi", + "network": "eth", + "shortcut": "BLX (Iconomi)", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:BMC": { + "address": "0xDf6Ef343350780BF8C3410BF062e0C015B1DD671", + "links": { + "Github": "https://github.com/blackmoonfg", + "Homepage": "https://blackmooncrypto.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Blackmoon Crypto BMC Token", + "network": "eth", + "shortcut": "BMC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:BMT": { + "address": "0xf028ADEe51533b1B47BEaa890fEb54a457f51E89", + "links": { + "Github": "https://github.com/BMChain/BMChain-Token-Distribution-Interface", + "Homepage": "https://bmchain.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "BMT", + "network": "eth", + "shortcut": "BMT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:BMX": { + "address": "0x986EE2B944c42D017F52Af21c4c69B84DBeA35d8", + "links": { + "Homepage": "https://bitmart.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "BitMartToken", + "network": "eth", + "shortcut": "BMX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:BNB": { + "address": "0xB8c77482e45F1F44dE1745F52C74426C631bDD52", + "links": { + "Homepage": "https://www.binance.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "BNB", + "network": "eth", + "shortcut": "BNB", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:BNC": { + "address": "0xdD6Bf56CA2ada24c683FAC50E37783e55B57AF9F", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "BNC", + "network": "eth", + "shortcut": "BNC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:BNT": { + "address": "0x1F573D6Fb3F13d689FF844B4cE37794d79a7FF1C", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 113885827, + "name": "Bancor", + "network": "eth", + "shortcut": "BNT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:BNTY": { + "address": "0xd2d6158683aeE4Cc838067727209a0aAF4359de3", + "links": { + "Homepage": "https://bounty0x.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Bounty0x Token", + "network": "eth", + "shortcut": "BNTY", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:BON": { + "address": "0xCc34366E3842cA1BD36c1f324d15257960fCC801", + "links": { + "Homepage": "https://bonpay.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 2713511, + "name": "Bonpay", + "network": "eth", + "shortcut": "BON", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:BOP": { + "address": "0x7F1E2C7d6A69bf34824D72C53B4550E895C0D8C2", + "links": { + "Homepage": "https://blockoptions.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "BlockOptiopns Token", + "network": "eth", + "shortcut": "BOP", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:BOU": { + "address": "0xC2C63F23ec5E97efbD7565dF9Ec764FDc7d4e91d", + "links": { + "Homepage": "https://www.boule.one", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Boule Coin", + "network": "eth", + "shortcut": "BOU", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:BPT": { + "address": "0x327682779bAB2BF4d1337e8974ab9dE8275A7Ca8", + "links": { + "Github": "https://github.com/Blockport/tokensale", + "Homepage": "https://blockport.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Blockport Token", + "network": "eth", + "shortcut": "BPT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:BQX": { + "address": "0x5Af2Be193a6ABCa9c8817001F45744777Db30756", + "links": { + "Homepage": "https://www.bitquence.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 156890221, + "name": "Bitquence", + "network": "eth", + "shortcut": "BQX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:BRAT": { + "address": "0x9E77D5a1251b6F7D456722A6eaC6D2d5980bd891", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 144047, + "name": "BRAT", + "network": "eth", + "shortcut": "BRAT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:BSDC": { + "address": "0xF26ef5E0545384b7Dcc0f297F2674189586830DF", + "links": { + "Github": "https://github.com/BitsIdea/BitsIdea", + "Homepage": "http://bitsidea.org", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "BSDC", + "network": "eth", + "shortcut": "BSDC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:BST": { + "address": "0x509A38b7a1cC0dcd83Aa9d06214663D9eC7c7F4a", + "links": { + "Homepage": "https://blocksquare.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "BlocksquareToken", + "network": "eth", + "shortcut": "BST", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:BTCE": { + "address": "0x0886949c1b8C412860c4264Ceb8083d1365e86CF", + "links": { + "Homepage": "https://btcetoken.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "EthereumBitcoin", + "network": "eth", + "shortcut": "BTCE", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:BTE": { + "address": "0x73dD069c299A5d691E9836243BcaeC9c8C1D8734", + "links": { + "Github": "https://github.com/bitcoineum/Sharkpool", + "Homepage": "http://bitcoineum.com/miner", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "BTE", + "network": "eth", + "shortcut": "BTE", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:BTH": { + "address": "0xFAd572db566E5234AC9Fc3d570c4EdC0050eAA92", + "links": { + "Homepage": "https://www.bytether.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Bytether", + "network": "eth", + "shortcut": "BTH", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:BTL (Battle)": { + "address": "0x2accaB9cb7a48c3E82286F0b2f8798D201F4eC3f", + "links": { + "Github": "https://github.com/Neurone/persians", + "Homepage": "http://persians.network", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "BTL (Battle)", + "network": "eth", + "shortcut": "BTL (Battle)", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:BTL (Bitlle)": { + "address": "0x92685E93956537c25Bb75D5d47fca4266dd628B8", + "links": { + "Homepage": "https://bitlle.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Bitlle Token", + "network": "eth", + "shortcut": "BTL (Bitlle)", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:BTM": { + "address": "0xcB97e65F07DA24D46BcDD078EBebd7C6E6E3d750", + "links": { + "Github": "https://github.com/bytom", + "Homepage": "https://bytom.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Bytom", + "network": "eth", + "shortcut": "BTM", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:BTQ": { + "address": "0x16B0E62aC13a2fAeD36D18bce2356d25Ab3CfAD3", + "links": { + "Homepage": "https://thebtcbtq.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Bitcoin Boutique", + "network": "eth", + "shortcut": "BTQ", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:BTT": { + "address": "0x080aa07E2C7185150d7e4DA98838A8d2feac3dfC", + "links": { + "Github": "https://github.com/Andyss4545/BitEther", + "Homepage": "https://bytom.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Bitether", + "network": "eth", + "shortcut": "BTT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:BeerCoin": { + "address": "0x74C1E4b8caE59269ec1D85D3D4F324396048F4ac", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "BeerCoin", + "network": "eth", + "shortcut": "BeerCoin", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:C20": { + "address": "0x26E75307Fc0C021472fEb8F727839531F112f317", + "links": { + "Github": "https://github.com/cryptotwenty", + "Homepage": "https://crypto20.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Crypto20's Token", + "network": "eth", + "shortcut": "C20", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:CAG": { + "address": "0x7d4b8Cce0591C9044a22ee543533b72E976E36C3", + "links": { + "Homepage": "https://change-bank.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Change Bank", + "network": "eth", + "shortcut": "CAG", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:CAN": { + "address": "0x1d462414fe14cf489c7A21CaC78509f4bF8CD7c0", + "links": { + "Homepage": "https://canya.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "CAN", + "network": "eth", + "shortcut": "CAN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:CAR": { + "address": "0x423e4322CDDa29156b49a17dfbd2aCC4b280600D", + "links": { + "Homepage": "https://mycarcoin.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Car Sharing Community", + "network": "eth", + "shortcut": "CAR", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:CARCO": { + "address": "0x2108E62D335Bbdc89eC3E9d8582F18DCFB0cDFf4", + "links": { + "Homepage": "https://carcohub.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "CARCO", + "network": "eth", + "shortcut": "CARCO", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:CAS": { + "address": "0xe8780B48bdb05F928697A5e8155f672ED91462F7", + "links": { + "Homepage": "https://cashaa.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Cashaa", + "network": "eth", + "shortcut": "CAS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:CAT (BitClave)": { + "address": "0x1234567461d3f8Db7496581774Bd869C83D51c93", + "links": { + "Homepage": "https://www.bitclave.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "CAT (BitClave)", + "network": "eth", + "shortcut": "CAT (BitClave)", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:CAT (Blockcat)": { + "address": "0x56ba2Ee7890461f463F7be02aAC3099f6d5811A8", + "links": { + "Homepage": "https://blockcat.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "CAT (Blockcat)", + "network": "eth", + "shortcut": "CAT (Blockcat)", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:CATs (BitClave)_Old": { + "address": "0x68e14bb5A45B9681327E16E528084B9d962C1a39", + "links": { + "Homepage": "https://www.bitclave.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "CATs (BitClave)_Old", + "network": "eth", + "shortcut": "CATs (BitClave)_Old", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:CC3": { + "address": "0xc166038705FFBAb3794185b3a9D925632A1DF37D", + "links": { + "Homepage": "https://coalcoin.tech/en", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Coal Coin", + "network": "eth", + "shortcut": "CC3", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:CCC (CryptoCrashCourse)": { + "address": "0x28577A6d31559bd265Ce3ADB62d0458550F7b8a7", + "links": { + "Homepage": "http://cryptocrashcourse.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "CryptoCrashCourse", + "network": "eth", + "shortcut": "CCC (CryptoCrashCourse)", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:CCC (ICONOMI)": { + "address": "0xBE11eEb186e624b8f26A5045575a1340E4054552", + "links": { + "Homepage": "https://www.iconomi.net/dashboard/#/daa/CCC", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "CCC (ICONOMI)", + "network": "eth", + "shortcut": "CCC (ICONOMI)", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:CCLC": { + "address": "0xd348e07A2806505B856123045d27aeeD90924b50", + "links": { + "Github": "https://github.com/lifechange-io/christ-coin", + "Homepage": "https://christcoins.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Christ Coin", + "network": "eth", + "shortcut": "CCLC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:CCS": { + "address": "0x315cE59FAFd3A8d562b7Ec1C8542382d2710b06c", + "links": { + "Github": "github.com/AnalemaTechnologies/CacaoShares", + "Homepage": "http://www.cacaoshares.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "CacaoShares", + "network": "eth", + "shortcut": "CCS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:CDL": { + "address": "0x8a95ca448A52C0ADf0054bB3402dC5e09CD6B232", + "links": { + "Github": "https://github.com/confideal", + "Homepage": "https://confideal.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Confideal", + "network": "eth", + "shortcut": "CDL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:CDT": { + "address": "0x177d39AC676ED1C67A2b268AD7F1E58826E5B0af", + "links": { + "Homepage": "https://www.coindash.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "CoinDash", + "network": "eth", + "shortcut": "CDT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:CDX": { + "address": "0x6fFF3806Bbac52A20e0d79BC538d527f6a22c96b", + "links": { + "Homepage": "https://commodityadnetwork.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "CDX", + "network": "eth", + "shortcut": "CDX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:CFI": { + "address": "0x12FEF5e57bF45873Cd9B62E9DBd7BFb99e32D73e", + "links": { + "Homepage": "https://cofound.it/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Cofound.it", + "network": "eth", + "shortcut": "CFI", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:CK": { + "address": "0x06012c8cf97BEaD5deAe237070F9587f8E7A266d", + "links": { + "Homepage": "https://cryptokitties.co", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "CK", + "network": "eth", + "shortcut": "CK", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:CLN": { + "address": "0x4162178B78D6985480A308B2190EE5517460406D", + "links": { + "Github": "https://github.com/colucom/CLN-solidity", + "Homepage": "https://cln.network", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "ColuLocalNetwork", + "network": "eth", + "shortcut": "CLN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:CLP": { + "address": "0x7FCE2856899a6806eeEf70807985fc7554C66340", + "links": { + "Homepage": "https://cryptolending.org", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "CryptoLending", + "network": "eth", + "shortcut": "CLP", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:CMBT": { + "address": "0x3EDD235C3E840C1F29286B2e39370a255C7B6fdb", + "links": { + "Homepage": "https://www.coinmarketbrasil.com.br", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "CMBToken", + "network": "eth", + "shortcut": "CMBT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:CMC": { + "address": "0x7e667525521cF61352e2E01b50FaaaE7Df39749a", + "links": { + "Homepage": "https://www.cryptomart.me", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "CryptoMart", + "network": "eth", + "shortcut": "CMC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:CMT": { + "address": "0xf85fEea2FdD81d51177F6b8F35F0e6734Ce45F5F", + "links": { + "Github": "https://github.com/CyberMiles", + "Homepage": "https://cm.5miles.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "CyberMiles Token", + "network": "eth", + "shortcut": "CMT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:CND": { + "address": "0xd4c435F5B09F855C3317c8524Cb1F586E42795fa", + "links": { + "Homepage": "https://cindicator.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Cindicator", + "network": "eth", + "shortcut": "CND", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:CO2": { + "address": "0xB4b1D2C217EC0776584CE08D3DD98F90EDedA44b", + "links": { + "Github": "https://github.com/climatecoinio", + "Homepage": "https://climatecoin.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Climatecoin", + "network": "eth", + "shortcut": "CO2", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:COB": { + "address": "0xb2F7EB1f2c37645bE61d73953035360e768D81E6", + "links": { + "Github": "https://github.com/cobinhood", + "Homepage": "https://cobinhood.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Cobinhood Token", + "network": "eth", + "shortcut": "COB", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:COFI": { + "address": "0x3136eF851592aCf49CA4C825131E364170FA32b3", + "links": { + "Github": "https://github.com/coinfi", + "Homepage": "https://www.coinfi.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "CoinFi Token", + "network": "eth", + "shortcut": "COFI", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:COSS": { + "address": "0x65292EeadF1426Cd2dF1C4793a3d7519f253913b", + "links": { + "Homepage": "https://coss.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Coss Token", + "network": "eth", + "shortcut": "COSS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:CPY": { + "address": "0xf44745fBd41F6A1ba151df190db0564c5fCc4410", + "links": { + "Github": "https://github.com/aditus", + "Homepage": "https://copytrack.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "COPYTRACK", + "network": "eth", + "shortcut": "CPY", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:CR7": { + "address": "0x7F585B9130c64e9e9F470b618A7badD03D79cA7E", + "links": { + "Github": "https://github.com/CR7CoinProject", + "Homepage": "https://cr7coin.org", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "CR7Coin", + "network": "eth", + "shortcut": "CR7", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:CRB": { + "address": "0xAef38fBFBF932D1AeF3B808Bc8fBd8Cd8E1f8BC5", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "CRB", + "network": "eth", + "shortcut": "CRB", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:CRED": { + "address": "0x672a1AD4f667FB18A333Af13667aa0Af1F5b5bDD", + "links": { + "Github": "https://github.com/verifyas", + "Homepage": "https://verify.as", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "CRED", + "network": "eth", + "shortcut": "CRED", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:CREDO": { + "address": "0x4E0603e2A27A30480E5e3a4Fe548e29EF12F64bE", + "links": { + "Homepage": "https://bitbounce.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Credo / Bitbounce", + "network": "eth", + "shortcut": "CREDO", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:CRPT": { + "address": "0x80A7E048F37A50500351C204Cb407766fA3baE7f", + "links": { + "Homepage": "https://crypterium.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "CrypteriumToken", + "network": "eth", + "shortcut": "CRPT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:CRT": { + "address": "0xF0da1186a4977226b9135d0613ee72e229EC3F4d", + "links": { + "Homepage": "http://creamtoecoin.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "CreamtoeCoin", + "network": "eth", + "shortcut": "CRT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:CTF": { + "address": "0x4545750F39aF6Be4F237B6869D4EccA928Fd5A85", + "links": { + "Github": "https://github.com/vkajic/cryptotask", + "Homepage": "http://www.cryptotask.org", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "CryptoTask", + "network": "eth", + "shortcut": "CTF", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:CTL": { + "address": "0xBf4cFD7d1eDeeEA5f6600827411B41A21eB08abd", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "CTL", + "network": "eth", + "shortcut": "CTL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:CTT": { + "address": "0xE3Fa177AcecfB86721Cf6f9f4206bd3Bd672D7d5", + "links": { + "Homepage": "https://chaintrade.net", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "ChainTrade Token", + "network": "eth", + "shortcut": "CTT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:CTX": { + "address": "0x662aBcAd0b7f345AB7FfB1b1fbb9Df7894f18e66", + "links": { + "Homepage": "https://cartaxi.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "CarTaxi", + "network": "eth", + "shortcut": "CTX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:CVC": { + "address": "0x41e5560054824eA6B0732E656E3Ad64E20e94E45", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "CVC", + "network": "eth", + "shortcut": "CVC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:CXC": { + "address": "0x2134057C0b461F898D375Cead652Acae62b59541", + "links": { + "Github": "https://github.com/coxxxcoin/smart_contract", + "Homepage": "http://coxxxcoin.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "CoxxxCoin", + "network": "eth", + "shortcut": "CXC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:CXO": { + "address": "0xb6EE9668771a79be7967ee29a63D4184F8097143", + "links": { + "Github": "https://github.com/cargoxio", + "Homepage": "https://cargox.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "CargoX", + "network": "eth", + "shortcut": "CXO", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:CryptoCarbon": { + "address": "0xE4c94d45f7Aef7018a5D66f44aF780ec6023378e", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "CryptoCarbon", + "network": "eth", + "shortcut": "CryptoCarbon", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:DAB": { + "address": "0xdab0C31BF34C897Fb0Fe90D12EC9401caf5c36Ec", + "links": { + "Homepage": "https://dabco.in", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "DAB", + "network": "eth", + "shortcut": "DAB", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:DADI": { + "address": "0xFb2f26F266Fb2805a387230f2aa0a331b4d96Fba", + "links": { + "Homepage": "https://dadi.cloud", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "DADI", + "network": "eth", + "shortcut": "DADI", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:DAI": { + "address": "0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359", + "links": { + "Github": "https://github.com/makerdao", + "Homepage": "https://makerdao.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Dai Stablecoin v1.0", + "network": "eth", + "shortcut": "DAI", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:DALC": { + "address": "0x07D9e49Ea402194bf48A8276dAfB16E4eD633317", + "links": { + "Homepage": "http://www.dalecoin.org", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "DaleCoin", + "network": "eth", + "shortcut": "DALC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:DAN": { + "address": "0x9B70740e708a083C6fF38Df52297020f5DfAa5EE", + "links": { + "Github": "https://github.com/project-daneel", + "Homepage": "https://daneel.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "DaneelToken", + "network": "eth", + "shortcut": "DAN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:DAO": { + "address": "0xBB9bc244D798123fDe783fCc1C72d3Bb8C189413", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "DAO", + "network": "eth", + "shortcut": "DAO", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:DAT": { + "address": "0x81c9151de0C8bafCd325a57E3dB5a5dF1CEBf79c", + "links": { + "Homepage": "https://datum.org", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Datum Token", + "network": "eth", + "shortcut": "DAT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:DATABroker": { + "address": "0x1B5f21ee98eed48d292e8e2d3Ed82b40a9728A22", + "links": { + "Github": "https://github.com/DataBrokerDAO", + "Homepage": "https://databrokerdao.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "DataBrokerDAO Token", + "network": "eth", + "shortcut": "DATABroker", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:DATACoin": { + "address": "0x0Cf0Ee63788A0849fE5297F3407f701E122cC023", + "links": { + "Github": "https://github.com/streamr-dev", + "Homepage": "https://www.streamr.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "DATACoin", + "network": "eth", + "shortcut": "DATACoin", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:DCA": { + "address": "0x386Faa4703a34a7Fdb19Bec2e14Fd427C9638416", + "links": { + "Github": "https://github.com/dobetacceptbet", + "Homepage": "http://www.dobetacceptbet.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "DoBetAcceptBet", + "network": "eth", + "shortcut": "DCA", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:DCL": { + "address": "0x399A0e6FbEb3d74c85357439f4c8AeD9678a5cbF", + "links": { + "Homepage": "https://www.DisLedger.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "DCL", + "network": "eth", + "shortcut": "DCL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:DCN": { + "address": "0x08d32b0da63e2C3bcF8019c9c5d849d7a9d791e6", + "links": { + "Github": "https://github.com/Dentacoin", + "Homepage": "https://dentacoin.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Dentacoin", + "network": "eth", + "shortcut": "DCN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:DDF": { + "address": "0xcC4eF9EEAF656aC1a2Ab886743E98e97E090ed38", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "DDF", + "network": "eth", + "shortcut": "DDF", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:DEB": { + "address": "0x151202C9c18e495656f372281F493EB7698961D5", + "links": { + "Homepage": "https://debitum.network/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "DEBITUM", + "network": "eth", + "shortcut": "DEB", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:DENT": { + "address": "0x3597bfD533a99c9aa083587B074434E61Eb0A258", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "DENT", + "network": "eth", + "shortcut": "DENT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:DGD": { + "address": "0xE0B7927c4aF23765Cb51314A0E0521A9645F0E2A", + "links": { + "Homepage": "https://www.dgx.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Digix DAO", + "network": "eth", + "shortcut": "DGD", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:DGPT": { + "address": "0xf6cFe53d6FEbaEEA051f400ff5fc14F0cBBDacA1", + "links": { + "Github": "https://github.com/digipulseio", + "Homepage": "https://www.digipulse.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "DigiPulse", + "network": "eth", + "shortcut": "DGPT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:DGX": { + "address": "0x55b9a11c2e8351b4Ffc7b11561148bfaC9977855", + "links": { + "Homepage": "https://www.dgx.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "DGX", + "network": "eth", + "shortcut": "DGX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:DICE": { + "address": "0x2e071D2966Aa7D8dECB1005885bA1977D6038A65", + "links": { + "Homepage": "https://etheroll.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Etheroll", + "network": "eth", + "shortcut": "DICE", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:DIVX": { + "address": "0x13f11C9905A08ca76e3e853bE63D4f0944326C72", + "links": { + "Homepage": "https://www.diviproject.org", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "DIVX", + "network": "eth", + "shortcut": "DIVX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:DKP": { + "address": "0xBA187B09fFA8DDdc80d2571eD3cbC4Be0Af69E0c", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Draggin Karma Points", + "network": "eth", + "shortcut": "DKP", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:DLT": { + "address": "0x07e3c70653548B04f0A75970C1F81B4CBbFB606f", + "links": { + "Homepage": "https://www.agrello.org", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Agrello", + "network": "eth", + "shortcut": "DLT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:DMT": { + "address": "0x2ccbFF3A042c68716Ed2a2Cb0c544A9f1d1935E1", + "links": { + "Github": "https://github.com/suntechsoft/dmarket-smartcontract", + "Homepage": "https://dmarket.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "DMarket Token", + "network": "eth", + "shortcut": "DMT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:DNT": { + "address": "0x0AbdAce70D3790235af448C88547603b945604ea", + "links": { + "Github": "https://github.com/district0x", + "Homepage": "https://district0x.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "DistrictOx", + "network": "eth", + "shortcut": "DNT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:DNX": { + "address": "0xE43E2041dc3786e166961eD9484a5539033d10fB", + "links": { + "Github": "https://github.com/DenCity-life", + "Homepage": "https://dencity.life", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "DenCity", + "network": "eth", + "shortcut": "DNX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:DOW": { + "address": "0x76974C7B79dC8a6a109Fd71fd7cEb9E40eff5382", + "links": { + "Homepage": "https://dowcoin.io/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "DOW", + "network": "eth", + "shortcut": "DOW", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:DPP": { + "address": "0x01b3Ec4aAe1B8729529BEB4965F27d008788B0EB", + "links": { + "Homepage": "https://cofound.it/en/projects/digital-assets-power-play", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Digital Assets Power Play", + "network": "eth", + "shortcut": "DPP", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:DRGN": { + "address": "0x419c4dB4B9e25d6Db2AD9691ccb832C8D9fDA05E", + "links": { + "Github": "https://github.com/dragonchain/dragonchain", + "Homepage": "https://dragonchain.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Dragon", + "network": "eth", + "shortcut": "DRGN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:DROP": { + "address": "0x3c75226555FC496168d48B88DF83B95F16771F37", + "links": { + "Homepage": "https://droplex.org", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Droplex", + "network": "eth", + "shortcut": "DROP", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:DROP (dropil)": { + "address": "0x4672bAD527107471cB5067a887f4656D585a8A31", + "links": { + "Homepage": "https://dropil.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Dropil", + "network": "eth", + "shortcut": "DROP (dropil)", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:DRP": { + "address": "0x2799D90C6d44Cb9Aa5fBC377177F16C33E056b82", + "links": { + "Homepage": "http://drpcoin.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Dripcoin", + "network": "eth", + "shortcut": "DRP", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:DSC": { + "address": "0x1e09BD8Cadb441632e441Db3e1D79909EE0A2256", + "links": { + "Homepage": "https://github.com/xxxxyy1", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Digital Safe Coin", + "network": "eth", + "shortcut": "DSC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:DTR": { + "address": "0xd234BF2410a0009dF9c3C63b610c09738f18ccD7", + "links": { + "Homepage": "https://www.tokens.net", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "DTR", + "network": "eth", + "shortcut": "DTR", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:DUBI": { + "address": "0xD4CffeeF10F60eCA581b5E1146B5Aca4194a4C3b", + "links": { + "Github": "https://github.com/nionis/purpose", + "Homepage": "https://prps.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Decentralized Universal Basic Income", + "network": "eth", + "shortcut": "DUBI", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:Devcon2 Token": { + "address": "0xdd94De9cFE063577051A5eb7465D08317d8808B6", + "links": { + "Homepage": "https://www.devcon2-token.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Devcon2 Token", + "network": "eth", + "shortcut": "Devcon2 Token", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:EAGLE": { + "address": "0x994f0DffdbaE0BbF09b652D6f11A493fd33F42B9", + "links": { + "Github": "https://github.com/elangindonesia/EagleCoin", + "Homepage": "https://eaglepay.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "EagleCoin", + "network": "eth", + "shortcut": "EAGLE", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ECN": { + "address": "0xa578aCc0cB7875781b7880903F4594D13cFa8B98", + "links": { + "Homepage": "http://www.cewrd.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "ECN", + "network": "eth", + "shortcut": "ECN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ECO2": { + "address": "0x17F93475d2A978f527c3f7c44aBf44AdfBa60D5C", + "links": { + "Homepage": "http://www.ethco2.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "EtherCO2", + "network": "eth", + "shortcut": "ECO2", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:EDG": { + "address": "0x08711D3B02C8758F2FB3ab4e80228418a7F8e39c", + "links": { + "Homepage": "https://edgeless.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Edgeless", + "network": "eth", + "shortcut": "EDG", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:EDO": { + "address": "0xCeD4E93198734dDaFf8492d525Bd258D49eb388E", + "links": { + "Homepage": "https://eidoo.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Eidoo", + "network": "eth", + "shortcut": "EDO", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:EDU": { + "address": "0x5b26C5D0772E5bbaC8b3182AE9a13f9BB2D03765", + "links": { + "Github": "https://github.com/livecodingtvofficial", + "Homepage": "https://tokensale.liveedu.tv", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "EDU", + "network": "eth", + "shortcut": "EDU", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:EHT": { + "address": "0xf9F0FC7167c311Dd2F1e21E9204F87EBA9012fB2", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "EasyHomes", + "network": "eth", + "shortcut": "EHT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ELF": { + "address": "0xbf2179859fc6D5BEE9Bf9158632Dc51678a4100e", + "links": { + "Github": "https://github.com/aelfProject", + "Homepage": "https://aelf.io/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "ELF Token", + "network": "eth", + "shortcut": "ELF", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ELIX": { + "address": "0xc8C6A31A4A806d3710A7B38b7B296D2fABCCDBA8", + "links": { + "Homepage": "https://elixirtoken.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Elixir Token", + "network": "eth", + "shortcut": "ELIX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ELTCOIN": { + "address": "0x44197A4c44D6A059297cAf6be4F7e172BD56Caaf", + "links": { + "Github": "https://github.com/eltcoin", + "Homepage": "http://www.eltcoin.tech/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "ELTCOIN", + "network": "eth", + "shortcut": "ELTCOIN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:EMON": { + "address": "0xb67b88a25708a35AE7c2d736D398D268CE4f7F83", + "links": { + "Github": "https://github.com/etheremon/smartcontract", + "Homepage": "https://www.etheremon.com/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Etheremon", + "network": "eth", + "shortcut": "EMON", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:EMONT": { + "address": "0x95dAaaB98046846bF4B2853e23cba236fa394A31", + "links": { + "Homepage": "https://www.etheremon.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Etheremon Token", + "network": "eth", + "shortcut": "EMONT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:EMV": { + "address": "0xB802b24E0637c2B87D2E8b7784C055BBE921011a", + "links": { + "Homepage": "http://emovieventure.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "EMovieVenture", + "network": "eth", + "shortcut": "EMV", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ENJ": { + "address": "0xF629cBd94d3791C9250152BD8dfBDF380E2a3B9c", + "links": { + "Github": "https://github.com/enjin/contracts", + "Homepage": "https://enjincoin.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "ENJIN", + "network": "eth", + "shortcut": "ENJ", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ENTRP": { + "address": "0x5BC7e5f0Ab8b2E10D2D0a3F21739FCe62459aeF3", + "links": { + "Github": "https://github.com/hut34", + "Homepage": "https://hut34.io/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Hut34 Entropy Token", + "network": "eth", + "shortcut": "ENTRP", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:EOS": { + "address": "0x86Fa049857E0209aa7D9e616F7eb3b3B78ECfdb0", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "EOS", + "network": "eth", + "shortcut": "EOS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ESZ": { + "address": "0xe8A1Df958bE379045E2B46a31A98B93A2eCDfDeD", + "links": { + "Github": "https://github.com/EtherSportz/ESZCoin", + "Homepage": "https://ethersportz.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "ESZCoin", + "network": "eth", + "shortcut": "ESZ", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ETBS": { + "address": "0x1B9743f556D65e757c4c650B4555bAF354cB8bd3", + "links": { + "Homepage": "https://www.ethbits.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Ethbits", + "network": "eth", + "shortcut": "ETBS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ETHB": { + "address": "0x3a26746Ddb79B1B8e4450e3F4FFE3285A307387E", + "links": { + "Homepage": "https://etherbtc.io/faq", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "EtherBTC", + "network": "eth", + "shortcut": "ETHB", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:EURT": { + "address": "0xAbdf147870235FcFC34153828c769A70B3FAe01F", + "links": { + "Homepage": "https://tether.to", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "EUR Tether (erc20)", + "network": "eth", + "shortcut": "EURT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:EVE": { + "address": "0x923108a439C4e8C2315c4f6521E5cE95B44e9B4c", + "links": { + "Github": "https://github.com/devery", + "Homepage": "https://devery.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "EVE", + "network": "eth", + "shortcut": "EVE", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:EVN": { + "address": "0xd780Ae2Bf04cD96E577D3D014762f831d97129d0", + "links": { + "Github": "https://github.com/envion/Smart-Contracts", + "Homepage": "https://envion.org", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Envion AG", + "network": "eth", + "shortcut": "EVN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:EVX": { + "address": "0xf3Db5Fa2C66B7aF3Eb0C0b782510816cbe4813b8", + "links": { + "Homepage": "https://everex.io ", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "EVX Token", + "network": "eth", + "shortcut": "EVX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:EXMR": { + "address": "0xc98e0639c6d2EC037A615341c369666B110e80E5", + "links": { + "Github": "https://github.com/eXMRcoin/", + "Homepage": "https://exmr.io/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "eXMRcoin", + "network": "eth", + "shortcut": "EXMR", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:E\u20b9": { + "address": "0xb67734521eAbBE9C773729dB73E16CC2dfb20A58", + "links": { + "Github": "https://github.com/eRupee", + "Homepage": "https://erupee.wordpress.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "eRupee", + "network": "eth", + "shortcut": "E\u20b9", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:FAM": { + "address": "0x190e569bE071F40c704e15825F285481CB74B6cC", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "FAM", + "network": "eth", + "shortcut": "FAM", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:FKX": { + "address": "0x009e864923b49263c7F10D19B7f8Ab7a9A5AAd33", + "links": { + "Github": "https://github.com/FortKnoxster", + "Homepage": "https://fortknoxster.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Knoxstertoken", + "network": "eth", + "shortcut": "FKX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:FLIXX": { + "address": "0xf04a8ac553FceDB5BA99A64799155826C136b0Be", + "links": { + "Homepage": "http://flixxo.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "FLIXX", + "network": "eth", + "shortcut": "FLIXX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:FLP": { + "address": "0x3a1Bda28AdB5B0a812a7CF10A1950c920F79BcD3", + "links": { + "Github": "https://github.com/gameflip", + "Homepage": "https://gameflip.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "FLIP Token", + "network": "eth", + "shortcut": "FLP", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:FLUZ": { + "address": "0x954b5De09A55e59755aCBda29e1Eb74A45D30175", + "links": { + "Homepage": "https://ico.fluzfluz.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Fluz Fluz Global", + "network": "eth", + "shortcut": "FLUZ", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:FLX": { + "address": "0x70b147E01E9285E7cE68B9BA437Fe3a9190E756a", + "links": { + "Homepage": "http://fluxproject.xyz", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "BitFlux", + "network": "eth", + "shortcut": "FLX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:FND": { + "address": "0x4DF47B4969B2911C966506E3592c41389493953b", + "links": { + "Github": "https://github.com/FundRequest", + "Homepage": "https://fundrequest.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "FundRequest", + "network": "eth", + "shortcut": "FND", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:FRD": { + "address": "0x0ABeFb7611Cb3A01EA3FaD85f33C3C934F8e2cF4", + "links": { + "Homepage": "https://farad.energy", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "FARAD Cryptoken", + "network": "eth", + "shortcut": "FRD", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:FTC": { + "address": "0xe6f74dcfa0E20883008d8C16b6d9a329189D0C30", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "FTC", + "network": "eth", + "shortcut": "FTC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:FTR": { + "address": "0x2023DCf7c438c8C8C0B0F28dBaE15520B4f3Ee20", + "links": { + "Homepage": "https://futourist.io/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Futourist Token", + "network": "eth", + "shortcut": "FTR", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:FUCK": { + "address": "0x65Be44C747988fBF606207698c944Df4442efE19", + "links": { + "Homepage": "https://fucktoken.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Finally Usable Crypto Karma", + "network": "eth", + "shortcut": "FUCK", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:FUEL": { + "address": "0xEA38eAa3C86c8F9B751533Ba2E562deb9acDED40", + "links": { + "Github": "https://github.com/etherparty", + "Homepage": "https://etherparty.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Etherparty FUEL", + "network": "eth", + "shortcut": "FUEL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:FUN": { + "address": "0x419D0d8BdD9aF5e606Ae2232ed285Aff190E711b", + "links": { + "Homepage": "https://funfair.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Funfair", + "network": "eth", + "shortcut": "FUN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:FYN": { + "address": "0x88FCFBc22C6d3dBaa25aF478C578978339BDe77a", + "links": { + "Homepage": "http://www.fundyourselfnow.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Fund Yourself Now", + "network": "eth", + "shortcut": "FYN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:GAM": { + "address": "0xF67451Dc8421F0e0afEB52faa8101034ed081Ed9", + "links": { + "Github": "https://github.com/BlockchainLabsNZ/gambit", + "Homepage": "http://gambitcrypto.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Gambit", + "network": "eth", + "shortcut": "GAM", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:GAVEL": { + "address": "0x708876f486e448Ee89eB332bFbC8E593553058b9", + "links": { + "Homepage": "http://gavelcoin.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "GAVEL", + "network": "eth", + "shortcut": "GAVEL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:GBT": { + "address": "0x7585F835ae2d522722d2684323a0ba83401f32f5", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "GBT", + "network": "eth", + "shortcut": "GBT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:GEE": { + "address": "0x4F4f0Db4de903B88f2B1a2847971E231D54F8fd3", + "links": { + "Github": "https://github.com/GeensNPO", + "Homepage": "https://www.geens.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Geens NPO", + "network": "eth", + "shortcut": "GEE", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:GELD": { + "address": "0x24083Bb30072643C3bB90B44B7285860a755e687", + "links": { + "Homepage": "https://www.soerengelder.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "GELD", + "network": "eth", + "shortcut": "GELD", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:GIM": { + "address": "0xaE4f56F072c34C0a65B3ae3E4DB797D831439D93", + "links": { + "Github": "https://github.com/thegimliproject/GimliToken", + "Homepage": "https://gimli.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Gimli", + "network": "eth", + "shortcut": "GIM", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:GMT": { + "address": "0xb3Bd49E28f8F832b8d1E246106991e546c323502", + "links": { + "Homepage": "http://www.mercuryprotocol.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "GMT", + "network": "eth", + "shortcut": "GMT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:GNO": { + "address": "0x6810e776880C02933D47DB1b9fc05908e5386b96", + "links": { + "Homepage": "https://gnosis.pm", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Gnosis", + "network": "eth", + "shortcut": "GNO", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:GNT": { + "address": "0xa74476443119A942dE498590Fe1f2454d7D4aC0d", + "coinmarketcap_alias": "golem-network-tokens", + "links": { + "Homepage": "https://golem.network", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Golem", + "network": "eth", + "shortcut": "GNT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:GOLDX": { + "address": "0xeAb43193CF0623073Ca89DB9B712796356FA7414", + "links": { + "Github": "https://github.com/myHelloGold/Foundation", + "Homepage": "https://www.hellogold.org/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "GOLDX", + "network": "eth", + "shortcut": "GOLDX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:GRID": { + "address": "0x12B19D3e2ccc14Da04FAe33e63652ce469b3F2FD", + "links": { + "Homepage": "https://gridplus.io/token-sale", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "GRID", + "network": "eth", + "shortcut": "GRID", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:GTC": { + "address": "0xB70835D7822eBB9426B56543E391846C107bd32C", + "links": { + "Github": "https://github.com/GameLeLe", + "Homepage": "https://game.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "GTC Token", + "network": "eth", + "shortcut": "GTC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:GTKT": { + "address": "0x025abAD9e518516fdaAFBDcdB9701b37fb7eF0FA", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "GTKT", + "network": "eth", + "shortcut": "GTKT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:GUP": { + "address": "0xf7B098298f7C69Fc14610bf71d5e02c60792894C", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "GUP", + "network": "eth", + "shortcut": "GUP", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:GVT": { + "address": "0x103c3A209da59d3E7C4A89307e66521e081CFDF0", + "links": { + "Github": "https://github.com/GenesisVision", + "Homepage": "https://genesis.vision", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Genesis Vision", + "network": "eth", + "shortcut": "GVT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:GXC": { + "address": "0x58ca3065C0F24C7c96Aee8d6056b5B5deCf9c2f8", + "links": { + "Homepage": "https://genevieveco.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "GXC", + "network": "eth", + "shortcut": "GXC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:GXVC": { + "address": "0x22F0AF8D78851b72EE799e05F54A77001586B18A", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Genevieve VC", + "network": "eth", + "shortcut": "GXVC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:GZE": { + "address": "0x8C65e992297d5f092A756dEf24F4781a280198Ff", + "links": { + "Homepage": "https://gazecoin.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "GazeCoin", + "network": "eth", + "shortcut": "GZE", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:HAT": { + "address": "0x9002D4485b7594e3E850F0a206713B305113f69e", + "links": { + "Homepage": "https://www.hawala.today/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Hawala Today", + "network": "eth", + "shortcut": "HAT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:HDG": { + "address": "0xfFe8196bc259E8dEDc544d935786Aa4709eC3E64", + "links": { + "Homepage": "https://www.hedge-crypto.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Hedge Crypto", + "network": "eth", + "shortcut": "HDG", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:HGT": { + "address": "0xba2184520A1cC49a6159c57e61E1844E085615B6", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "HGT", + "network": "eth", + "shortcut": "HGT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:HIG": { + "address": "0xa9240fBCAC1F0b9A6aDfB04a53c8E3B0cC1D1444", + "links": { + "Github": "https://github.com/ethereumhigh/Ethereum-High", + "Homepage": "https://www.ethereumhigh.org/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "ethereumhigh ", + "network": "eth", + "shortcut": "HIG", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:HKG": { + "address": "0x14F37B574242D366558dB61f3335289a5035c506", + "links": { + "Homepage": "http://www.ether.camp", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "HKG", + "network": "eth", + "shortcut": "HKG", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:HMQ": { + "address": "0xcbCC0F036ED4788F63FC0fEE32873d6A7487b908", + "links": { + "Homepage": "https://humaniq.co", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "HMQ", + "network": "eth", + "shortcut": "HMQ", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:HODL": { + "address": "0xb45d7Bc4cEBcAB98aD09BABDF8C818B2292B672c", + "links": { + "Homepage": "https://github.com/arachnid/hodlcoin", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "HODLCoin", + "network": "eth", + "shortcut": "HODL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:HST": { + "address": "0x554C20B7c486beeE439277b4540A434566dC4C02", + "links": { + "Homepage": "https://horizonstate.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "HST", + "network": "eth", + "shortcut": "HST", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:HVN": { + "address": "0xC0Eb85285d83217CD7c891702bcbC0FC401E2D9D", + "links": { + "Github": "https://github.com/HiveProjectLTD", + "Homepage": "https://hive-project.net", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Hive Project", + "network": "eth", + "shortcut": "HVN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:Hdp": { + "address": "0xE9fF07809CCff05daE74990e25831d0Bc5cbe575", + "links": { + "Github": "https://github.com/HEDPAY", + "Homepage": "http://hedpay.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "HEdpAY", + "network": "eth", + "shortcut": "Hdp", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:Hdp.\u0444": { + "address": "0x84543F868eC1b1FAC510d49d13C069f64cD2d5f9", + "links": { + "Github": "https://github.com/HEDPAY", + "Homepage": "http://hedpay.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "HEdpAY", + "network": "eth", + "shortcut": "Hdp.\u0444", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ICE": { + "address": "0x5a84969bb663fb64F6d015DcF9F622Aedc796750", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "ICE", + "network": "eth", + "shortcut": "ICE", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ICN": { + "address": "0x888666CA69E0f178DED6D75b5726Cee99A87D698", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "ICN", + "network": "eth", + "shortcut": "ICN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ICO": { + "address": "0xa33e729bf4fdeb868B534e1f20523463D9C46bEe", + "links": { + "Homepage": "http://icocoin.org", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "ICO", + "network": "eth", + "shortcut": "ICO", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ICOS": { + "address": "0x014B50466590340D41307Cc54DCee990c8D58aa8", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "ICOS", + "network": "eth", + "shortcut": "ICOS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ICX": { + "address": "0xb5A5F22694352C15B00323844aD545ABb2B11028", + "links": { + "Homepage": "https://www.icon.foundation", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "ICON", + "network": "eth", + "shortcut": "ICX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:IDEA": { + "address": "0x814CAfd4782d2e728170FDA68257983F03321c58", + "links": { + "Homepage": "http://www.ideatoken.io/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "IDEA Token", + "network": "eth", + "shortcut": "IDEA", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:IFT": { + "address": "0x7654915A1b82D6D2D0AFc37c52Af556eA8983c7E", + "links": { + "Homepage": "https://investfeed.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "InvestFeed", + "network": "eth", + "shortcut": "IFT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:IIC": { + "address": "0x16662F73dF3e79e54c6c5938b4313f92C524C120", + "links": { + "Homepage": "https://ibiscoin.co", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "IIC", + "network": "eth", + "shortcut": "IIC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:IKB": { + "address": "0x88AE96845e157558ef59e9Ff90E766E22E480390", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "IKB", + "network": "eth", + "shortcut": "IKB", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:IMC": { + "address": "0xe3831c5A982B279A198456D577cfb90424cb6340", + "links": { + "Homepage": "http://immunecoin.info", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Immune Coin", + "network": "eth", + "shortcut": "IMC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:IMT": { + "address": "0x22E5F62D0FA19974749faa194e3d3eF6d89c08d7", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "IMT", + "network": "eth", + "shortcut": "IMT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:IND": { + "address": "0xf8e386EDa857484f5a12e4B5DAa9984E06E73705", + "links": { + "Homepage": "https://indorse.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Indorse", + "network": "eth", + "shortcut": "IND", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:INS": { + "address": "0x5B2e4a700dfBc560061e957edec8F6EeEb74a320", + "links": { + "Homepage": "https://ins.world", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "INS", + "network": "eth", + "shortcut": "INS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:INXT": { + "address": "0xa8006C4ca56F24d6836727D106349320dB7fEF82", + "links": { + "Homepage": "https://internxt.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Internxt", + "network": "eth", + "shortcut": "INXT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:IPL": { + "address": "0x64CdF819d3E75Ac8eC217B3496d7cE167Be42e80", + "links": { + "Github": "https://github.com/InsurePal", + "Homepage": "https://insurepal.io/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "InsurePal token", + "network": "eth", + "shortcut": "IPL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ITC": { + "address": "0x5E6b6d9aBAd9093fdc861Ea1600eBa1b355Cd940", + "links": { + "Github": "https://github.com/IoTChainCode", + "Homepage": "https://iotchain.io/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "IoT Chain", + "network": "eth", + "shortcut": "ITC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ITT": { + "address": "0x0aeF06DcCCC531e581f0440059E6FfCC206039EE", + "links": { + "Github": "https://github.com/IntelligentTrading", + "Homepage": "http://intelligenttrading.org", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "ITT Token", + "network": "eth", + "shortcut": "ITT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:IXT": { + "address": "0xfcA47962D45ADFdfd1Ab2D972315dB4ce7CCf094", + "links": { + "Homepage": "https://www.insurex.co", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "InsureX", + "network": "eth", + "shortcut": "IXT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:IoT": { + "address": "0xC34B21f6F8e51cC965c2393B3ccFa3b82BEb2403", + "links": { + "Homepage": "http://www.bitcoin-biz.net", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "IoT\u30b3\u30a4\u30f3", + "network": "eth", + "shortcut": "IoT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:J8T": { + "address": "0x0D262e5dC4A06a0F1c90cE79C7a60C09DfC884E4", + "links": { + "Github": "https://github.com/jet8", + "Homepage": "https://jet8.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "J8T Token", + "network": "eth", + "shortcut": "J8T", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:JBX": { + "address": "0x0Aaf561eFF5BD9c8F911616933F84166A17cfE0C", + "links": { + "Homepage": "https://www.jboxcoin.org", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "JBX", + "network": "eth", + "shortcut": "JBX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:JET": { + "address": "0x8727c112C712c4a03371AC87a74dD6aB104Af768", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "JET", + "network": "eth", + "shortcut": "JET", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:JNT": { + "address": "0xa5Fd1A791C4dfcaacC963D4F73c6Ae5824149eA7", + "links": { + "Github": "https://github.com/jibrelnetwork", + "Homepage": "https://jibrel.network", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "JNT", + "network": "eth", + "shortcut": "JNT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:JetCoins": { + "address": "0x773450335eD4ec3DB45aF74f34F2c85348645D39", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "JetCoins", + "network": "eth", + "shortcut": "JetCoins", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:KEE": { + "address": "0x72D32ac1c5E66BfC5b08806271f8eEF915545164", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "CryptoKEE", + "network": "eth", + "shortcut": "KEE", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:KEY": { + "address": "0x4CC19356f2D37338b9802aa8E8fc58B0373296E7", + "links": { + "Homepage": "https://selfkey.org", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "SelfKey", + "network": "eth", + "shortcut": "KEY", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:KICK": { + "address": "0x27695E09149AdC738A978e9A678F99E4c39e9eb9", + "links": { + "Github": "https://github.com/kickico", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "KICK", + "network": "eth", + "shortcut": "KICK", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:KIN": { + "address": "0x818Fc6C2Ec5986bc6E2CBf00939d90556aB12ce5", + "links": { + "Github": "https://github.com/kikinteractive/kin-token", + "Homepage": "https://kin.kik.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Kin Foundation", + "network": "eth", + "shortcut": "KIN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:KNC": { + "address": "0xdd974D5C2e2928deA5F71b9825b8b646686BD200", + "links": { + "Github": "https://github.com/KyberNetwork", + "Homepage": "https://kyber.network", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Kyber Network", + "network": "eth", + "shortcut": "KNC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:KZN": { + "address": "0x9541FD8B9b5FA97381783783CeBF2F5fA793C262", + "links": { + "Homepage": "http://kaizencoin.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "KaizenCoin", + "network": "eth", + "shortcut": "KZN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:LA": { + "address": "0xE50365f5D679CB98a1dd62D6F6e58e59321BcdDf", + "links": { + "Github": "https://github.com/latoken", + "Homepage": "https://latoken.com/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "LATOKEN", + "network": "eth", + "shortcut": "LA", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:LALA": { + "address": "0xfD107B473AB90e8Fbd89872144a3DC92C40Fa8C9", + "links": { + "Homepage": "https://lalaworld.io/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "LALA World Token", + "network": "eth", + "shortcut": "LALA", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:LEMO": { + "address": "0xd6e354F07319e2474491D8c7c712137bEe6862a2", + "links": { + "Homepage": "http://www.lemochain.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Lemo", + "network": "eth", + "shortcut": "LEMO", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:LFR": { + "address": "0xc798cd1c49db0E297312E4c682752668CE1dB2AD", + "links": { + "Homepage": "https://www.liferun.cc", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "LifeRun Coin", + "network": "eth", + "shortcut": "LFR", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:LGR": { + "address": "0x2eb86e8fC520E0F6Bb5D9Af08F924fe70558Ab89", + "links": { + "Homepage": "https://getlogarithm.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Logarithm", + "network": "eth", + "shortcut": "LGR", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:LIF": { + "address": "0xEB9951021698B42e4399f9cBb6267Aa35F82D59D", + "links": { + "Github": "https://github.com/windingtree", + "Homepage": "https://windingtree.com/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "LIF", + "network": "eth", + "shortcut": "LIF", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:LIFE": { + "address": "0xfF18DBc487b4c2E3222d115952bABfDa8BA52F5F", + "links": { + "Homepage": "http://www.lifelabs.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "LIFE", + "network": "eth", + "shortcut": "LIFE", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:LINK (Chainlink)": { + "address": "0x514910771AF9Ca656af840dff83E8264EcF986CA", + "links": { + "Homepage": "https://link.smartcontract.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "LINK Chainlink", + "network": "eth", + "shortcut": "LINK (Chainlink)", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:LINK Platform": { + "address": "0xE2E6D4BE086c6938B53B22144855eef674281639", + "links": { + "Github": "https://github.com/ethlink", + "Homepage": "https://ethereum.link", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Link Platform", + "network": "eth", + "shortcut": "LINK Platform", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:LIVE": { + "address": "0x24A77c1F17C547105E14813e517be06b0040aa76", + "links": { + "Homepage": "https://livestars.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "LIVE Token", + "network": "eth", + "shortcut": "LIVE", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:LNC": { + "address": "0x63e634330A20150DbB61B15648bC73855d6CCF07", + "links": { + "Github": "https://github.com/Blocklancer/Blocklancer-Contracts", + "Homepage": "https://blocklancer.net", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Lancer Token", + "network": "eth", + "shortcut": "LNC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:LNC-Linker Coin": { + "address": "0x6BEB418Fc6E1958204aC8baddCf109B8E9694966", + "links": { + "Github": "https://github.com/linkercoinfoundation", + "Homepage": "https://www.linkercoin.com/en", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Linker Coin", + "network": "eth", + "shortcut": "LNC-Linker Coin", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:LOC": { + "address": "0x5e3346444010135322268a4630d2ED5F8D09446c", + "links": { + "Homepage": "https://LockChain.co", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "LockChain", + "network": "eth", + "shortcut": "LOC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:LOCI": { + "address": "0x9c23D67AEA7B95D80942e3836BCDF7E708A747C2", + "links": { + "Github": "http://github.com/locipro/loci-coin-sale", + "Homepage": "https://locipro.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "LOCIcoin", + "network": "eth", + "shortcut": "LOCI", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:LOK": { + "address": "0x21aE23B882A340A22282162086bC98D3E2B73018", + "links": { + "Homepage": "https://lookrev.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "LOK", + "network": "eth", + "shortcut": "LOK", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:LRC": { + "address": "0xEF68e7C694F40c8202821eDF525dE3782458639f", + "links": { + "Homepage": "https://loopring.org", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "LRC", + "network": "eth", + "shortcut": "LRC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:LUCK": { + "address": "0xFB12e3CcA983B9f59D90912Fd17F8D745A8B2953", + "links": { + "Homepage": "http://www.luckytoken.info", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "LUCK", + "network": "eth", + "shortcut": "LUCK", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:LUM": { + "address": "0xA89b5934863447f6E4Fc53B315a93e873bdA69a3", + "links": { + "Homepage": "https://www.luminocoin.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Lumino Coin", + "network": "eth", + "shortcut": "LUM", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:LUN": { + "address": "0xfa05A73FfE78ef8f1a739473e462c54bae6567D9", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "LUN", + "network": "eth", + "shortcut": "LUN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:M-ETH": { + "address": "0x3f4B726668da46f5e0E75aA5D478ACEc9f38210F", + "links": { + "Homepage": "http://www.mostexclusive.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "M-ETH", + "network": "eth", + "shortcut": "M-ETH", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:MANA": { + "address": "0x0F5D2fB29fb7d3CFeE444a200298f468908cC942", + "links": { + "Github": "https://github.com/decentraland", + "Homepage": "https://decentraland.org", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Decentraland MANA", + "network": "eth", + "shortcut": "MANA", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:MBRS": { + "address": "0x386467F1f3ddbE832448650418311a479EECFC57", + "links": { + "Github": "https://github.com/theembermine", + "Homepage": "https://embermine.com/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Embers", + "network": "eth", + "shortcut": "MBRS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:MCAP": { + "address": "0x93E682107d1E9defB0b5ee701C71707a4B2E46Bc", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "MCAP", + "network": "eth", + "shortcut": "MCAP", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:MCI": { + "address": "0x138A8752093F4f9a79AaeDF48d4B9248fab93c9C", + "links": { + "Github": "https://github.com/musiconomi/", + "Homepage": "https://musiconomi.com/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Musiconomi", + "network": "eth", + "shortcut": "MCI", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:MCO": { + "address": "0xB63B606Ac810a52cCa15e44bB630fd42D8d1d83d", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "MCO", + "network": "eth", + "shortcut": "MCO", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:MDA": { + "address": "0x51DB5Ad35C671a87207d88fC11d593AC0C8415bd", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "MDA", + "network": "eth", + "shortcut": "MDA", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:MEST": { + "address": "0x5B8D43FfdE4a2982B9A5387cDF21D54Ead64Ac8d", + "links": { + "Github": "https://github.com/monacoestate", + "Homepage": "https://monacoestate.io/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Monaco Estate", + "network": "eth", + "shortcut": "MEST", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:MGO": { + "address": "0x40395044Ac3c0C57051906dA938B54BD6557F212", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "MGO", + "network": "eth", + "shortcut": "MGO", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:MIT": { + "address": "0xe23cd160761f63FC3a1cF78Aa034b6cdF97d3E0C", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "MIT", + "network": "eth", + "shortcut": "MIT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:MKR": { + "address": "0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2", + "links": { + "Github": "https://github.com/makerdao", + "Homepage": "https://makerdao.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "MakerDAO", + "network": "eth", + "shortcut": "MKR", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:MLN": { + "address": "0xBEB9eF514a379B997e0798FDcC901Ee474B6D9A1", + "links": { + "Homepage": "https://melonport.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Melonport", + "network": "eth", + "shortcut": "MLN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:MNE": { + "address": "0x1a95B271B0535D15fa49932Daba31BA612b52946", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "MNE", + "network": "eth", + "shortcut": "MNE", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:MNT": { + "address": "0xA9877b1e05D035899131DBd1e403825166D09f92", + "links": { + "Github": "https://github.com/coinjoker/cjtoken", + "Homepage": "https://coinjoker.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Media Network Token", + "network": "eth", + "shortcut": "MNT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:MNTP": { + "address": "0x83cee9e086A77e492eE0bB93C2B0437aD6fdECCc", + "links": { + "Github": "https://github.com/Goldmint", + "Homepage": "https://goldmint.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Goldmint MNT Prelaunch Token", + "network": "eth", + "shortcut": "MNTP", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:MOD": { + "address": "0x957c30aB0426e0C93CD8241E2c60392d08c6aC8e", + "links": { + "Github": "https://github.com/modum-io", + "Homepage": "https://modum.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Modum", + "network": "eth", + "shortcut": "MOD", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:MRP": { + "address": "0x21f0F0fD3141Ee9E11B3d7f13a1028CD515f459c", + "links": { + "Homepage": "https://moneyrebel.io/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "MoneyRebel Token", + "network": "eth", + "shortcut": "MRP", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:MRV": { + "address": "0xAB6CF87a50F17d7F5E1FEaf81B6fE9FfBe8EBF84", + "links": { + "Homepage": "https://macroverse.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "MRV", + "network": "eth", + "shortcut": "MRV", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:MSP": { + "address": "0x68AA3F232dA9bdC2343465545794ef3eEa5209BD", + "links": { + "Homepage": "https://mothership.cx", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Mothership", + "network": "eth", + "shortcut": "MSP", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:MTH": { + "address": "0xaF4DcE16Da2877f8c9e00544c93B62Ac40631F16", + "links": { + "Homepage": "http://www.monetha.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Monetha", + "network": "eth", + "shortcut": "MTH", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:MTL": { + "address": "0xF433089366899D83a9f26A773D59ec7eCF30355e", + "links": { + "Homepage": "https://www.metalpay.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "MetalPay", + "network": "eth", + "shortcut": "MTL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:MTN": { + "address": "0x41dBECc1cdC5517C6f76f6a6E836aDbEe2754DE3", + "links": { + "Homepage": "https://medicalchain.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "MedToken", + "network": "eth", + "shortcut": "MTN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:MTR": { + "address": "0x7FC408011165760eE31bE2BF20dAf450356692Af", + "links": { + "Homepage": "https://mitrav.co", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Mitrav", + "network": "eth", + "shortcut": "MTR", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:MTRc": { + "address": "0x1e49fF77c355A3e38D6651ce8404AF0E48c5395f", + "links": { + "Homepage": "https://modultrade.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "MTRCToken", + "network": "eth", + "shortcut": "MTRc", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:MTX": { + "address": "0x0AF44e2784637218dD1D32A322D44e603A8f0c6A", + "links": { + "Homepage": "https://www.matryx.ai", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "MTX", + "network": "eth", + "shortcut": "MTX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:MWAT": { + "address": "0x6425c6BE902d692AE2db752B3c268AFAdb099D3b", + "links": { + "Homepage": "https://www.restartenergy.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "RED MWAT", + "network": "eth", + "shortcut": "MWAT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:MYD": { + "address": "0xf7e983781609012307f2514f63D526D83D24F466", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "MYD", + "network": "eth", + "shortcut": "MYD", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:MYST": { + "address": "0xa645264C5603E96c3b0B078cdab68733794B0A71", + "links": { + "Homepage": "https://mysterium.network", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Mysterium", + "network": "eth", + "shortcut": "MYST", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:NCT": { + "address": "0x9E46A38F5DaaBe8683E10793b06749EEF7D733d1", + "links": { + "Github": "https://github.com/polyswarm", + "Homepage": "https://polyswarm.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Nectar", + "network": "eth", + "shortcut": "NCT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:NDC": { + "address": "0xA54ddC7B3CcE7FC8b1E3Fa0256D0DB80D2c10970", + "links": { + "Homepage": "https://neverdie.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Neverdie", + "network": "eth", + "shortcut": "NDC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:NET": { + "address": "0xcfb98637bcae43C13323EAa1731cED2B716962fD", + "links": { + "Homepage": "https://nimiq.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "NIMIQ", + "network": "eth", + "shortcut": "NET", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:NEU": { + "address": "0xA823E6722006afe99E91c30FF5295052fe6b8E32", + "links": { + "Github": "https://github.com/neufund", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "NEU Fund", + "network": "eth", + "shortcut": "NEU", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:NGC": { + "address": "0x72dD4b6bd852A3AA172Be4d6C5a6dbEc588cf131", + "links": { + "Homepage": "https://www.nagaico.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "NAGA Coin", + "network": "eth", + "shortcut": "NGC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:NIMFA": { + "address": "0xe26517A9967299453d3F1B48Aa005E6127e67210", + "links": { + "Github": "https://github.com/nimfamoney", + "Homepage": "https://nimfamoney.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Ninfa Money", + "network": "eth", + "shortcut": "NIMFA", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:NMR": { + "address": "0x1776e1F26f98b1A5dF9cD347953a26dd3Cb46671", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "NMR", + "network": "eth", + "shortcut": "NMR", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:NOX": { + "address": "0xeC46f8207D766012454c408De210BCBc2243E71c", + "links": { + "Github": "https://github.com/nitrotoken/nitro-crowdsale", + "Homepage": "https://nitro.live", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "NOX", + "network": "eth", + "shortcut": "NOX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:NULS": { + "address": "0xB91318F35Bdb262E9423Bc7c7c2A3A93DD93C92C", + "links": { + "Homepage": "https://nuls.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "NULS", + "network": "eth", + "shortcut": "NULS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:NXX": { + "address": "0x7627de4B93263a6a7570b8dAfa64bae812e5c394", + "links": { + "Homepage": "https://www.nexxuscoin.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "NXX", + "network": "eth", + "shortcut": "NXX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:NXX OLD": { + "address": "0x5c6183d10A00CD747a6Dbb5F658aD514383e9419", + "links": { + "Homepage": "https://www.nexxuscoin.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "NXX OLD", + "network": "eth", + "shortcut": "NXX OLD", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:NxC": { + "address": "0x45e42D659D9f9466cD5DF622506033145a9b89Bc", + "links": { + "Homepage": "https://beyond-the-void.net", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Nexium", + "network": "eth", + "shortcut": "NxC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:OAX": { + "address": "0x701C244b988a513c945973dEFA05de933b23Fe1D", + "links": { + "Homepage": "https://www.openanx.org/en", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "OAX", + "network": "eth", + "shortcut": "OAX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:OCC": { + "address": "0x0235fE624e044A05eeD7A43E16E3083bc8A4287A", + "links": { + "Github": "https://github.com/OriginalCrypto/", + "Homepage": "https://www.OriginalCryptoCoin.com/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Original Crypto Coin", + "network": "eth", + "shortcut": "OCC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:OHNI": { + "address": "0x6f539a9456A5BCb6334A1A41207c3788f5825207", + "links": { + "Github": "ohnicoin", + "Homepage": "http://ohni.us", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Ohni", + "network": "eth", + "shortcut": "OHNI", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:OLD_MKR": { + "address": "0xC66eA802717bFb9833400264Dd12c2bCeAa34a6d", + "links": { + "Github": "https://github.com/makerdao", + "Homepage": "https://makerdao.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "MakerDAO", + "network": "eth", + "shortcut": "OLD_MKR", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:OMG": { + "address": "0xd26114cd6EE289AccF82350c8d8487fedB8A0C07", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "OMG", + "network": "eth", + "shortcut": "OMG", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ONEK": { + "address": "0xB23be73573bC7E03DB6e5dfc62405368716d28a8", + "links": { + "Homepage": "http://onek.one", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "One K Token", + "network": "eth", + "shortcut": "ONEK", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:OPT": { + "address": "0x4355fC160f74328f9b383dF2EC589bB3dFd82Ba0", + "links": { + "Homepage": "https://opus-foundation.org", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Opus Foundation", + "network": "eth", + "shortcut": "OPT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:OST": { + "address": "0x2C4e8f2D746113d0696cE89B35F0d8bF88E0AEcA", + "links": { + "Github": "https://github.com/OpenSTFoundation", + "Homepage": "https://simpletoken.org", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Simple Token 'OST'", + "network": "eth", + "shortcut": "OST", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:Ox Fina": { + "address": "0x65A15014964F2102Ff58647e16a16a6B9E14bCF6", + "links": { + "Github": "https://github.com/oxfina", + "Homepage": "https://oxfina.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Ox Fina", + "network": "eth", + "shortcut": "Ox Fina", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:PARETO": { + "address": "0xea5f88E54d982Cbb0c441cde4E79bC305e5b43Bc", + "links": { + "Github": "https://github.com/ParetoNetwork", + "Homepage": "https://pareto.network", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "PARETO", + "network": "eth", + "shortcut": "PARETO", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:PATENTS": { + "address": "0x694404595e3075A942397F466AAcD462FF1a7BD0", + "links": { + "Homepage": "https://www.smartillions.ch", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "PATENTS", + "network": "eth", + "shortcut": "PATENTS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:PAY": { + "address": "0xB97048628DB6B661D4C2aA833e95Dbe1A905B280", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "TenX", + "network": "eth", + "shortcut": "PAY", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:PBL": { + "address": "0x55648De19836338549130B1af587F16beA46F66B", + "links": { + "Homepage": "https://publica.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "PBL", + "network": "eth", + "shortcut": "PBL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:PCH": { + "address": "0xfcAC7A7515e9A9d7619fA77A1fa738111f66727e", + "links": { + "Homepage": "https://www.pitchapply.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "PITCH", + "network": "eth", + "shortcut": "PCH", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:PCL": { + "address": "0x3618516F45CD3c913F81F9987AF41077932Bc40d", + "links": { + "Github": "https://github.com/PeculiumPCL/Peculium", + "Homepage": "https://peculium.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Peculium", + "network": "eth", + "shortcut": "PCL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:PCLOLD": { + "address": "0x53148Bb4551707edF51a1e8d7A93698d18931225", + "links": { + "Github": "https://github.com/PeculiumPCL/Peculium", + "Homepage": "https://peculium.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "PeculiumOLD", + "network": "eth", + "shortcut": "PCLOLD", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:PET": { + "address": "0x5884969Ec0480556E11d119980136a4C17eDDEd1", + "links": { + "Github": "https://github.com/Pethereum", + "Homepage": "https://pethereum.org/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "PETHEREUM", + "network": "eth", + "shortcut": "PET", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:PETRO": { + "address": "0xeC18f898B4076A3E18f1089D33376CC380BDe61D", + "links": { + "Github": "https://github.com/getpetro", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "PETRO", + "network": "eth", + "shortcut": "PETRO", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:PEXT": { + "address": "0x55c2A0C171D920843560594dE3d6EEcC09eFc098", + "links": { + "Homepage": "https://prime-ex.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "PEX-Token", + "network": "eth", + "shortcut": "PEXT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:PIPL": { + "address": "0xE64509F0bf07ce2d29A7eF19A8A9bc065477C1B4", + "links": { + "Homepage": "https://piplcoin.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "PIPL Coin", + "network": "eth", + "shortcut": "PIPL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:PIX": { + "address": "0x8eFFd494eB698cc399AF6231fCcd39E08fd20B15", + "links": { + "Homepage": "http://www.lampix.co", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "PIX", + "network": "eth", + "shortcut": "PIX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:PLASMA": { + "address": "0x59416A25628A76b4730eC51486114c32E0B582A1", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "PLASMA", + "network": "eth", + "shortcut": "PLASMA", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:PLAY": { + "address": "0xE477292f1B3268687A29376116B0ED27A9c76170", + "links": { + "Homepage": "http://www.herocoin.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "HeroCoin", + "network": "eth", + "shortcut": "PLAY", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:PLBT": { + "address": "0x0AfFa06e7Fbe5bC9a764C979aA66E8256A631f02", + "links": { + "Homepage": "https://polybius.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Polybius", + "network": "eth", + "shortcut": "PLBT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:PLR": { + "address": "0xe3818504c1B32bF1557b16C238B2E01Fd3149C17", + "links": { + "Github": "https://github.com/twentythirty/PillarToken", + "Homepage": "https://www.pillarproject.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Pillar Project", + "network": "eth", + "shortcut": "PLR", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:PLU": { + "address": "0xD8912C10681D8B21Fd3742244f44658dBA12264E", + "links": { + "Homepage": "https://plutus.it", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Plutus", + "network": "eth", + "shortcut": "PLU", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:POE": { + "address": "0x0e0989b1f9B8A38983c2BA8053269Ca62Ec9B195", + "links": { + "Homepage": "https://po.et", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Po.et Tokens", + "network": "eth", + "shortcut": "POE", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:POIN": { + "address": "0x43F6a1BE992deE408721748490772B15143CE0a7", + "links": { + "Homepage": "https://potatoin.foundation", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Potatoin", + "network": "eth", + "shortcut": "POIN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:POLY": { + "address": "0x9992eC3cF6A55b00978cdDF2b27BC6882d88D1eC", + "links": { + "Homepage": "https://polymath.network", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Polymath Network", + "network": "eth", + "shortcut": "POLY", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:POOL": { + "address": "0x779B7b713C86e3E6774f5040D9cCC2D43ad375F8", + "links": { + "Homepage": "http://stakepool.co", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Stake Pool", + "network": "eth", + "shortcut": "POOL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:POS": { + "address": "0xEe609fE292128Cad03b786DBb9Bc2634Ccdbe7fC", + "links": { + "Github": "https://github.com/PoSToken", + "Homepage": "https://postoken.org", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "PoSToken", + "network": "eth", + "shortcut": "POS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:POWR": { + "address": "0x595832F8FC6BF59c85C527fEC3740A1b7a361269", + "links": { + "Homepage": "https://powerledger.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "PowerLedger", + "network": "eth", + "shortcut": "POWR", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:PPP": { + "address": "0xc42209aCcC14029c1012fB5680D95fBd6036E2a0", + "links": { + "Homepage": "https://www.paypie.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "PayPie", + "network": "eth", + "shortcut": "PPP", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:PPT": { + "address": "0xd4fa1460F537bb9085d22C7bcCB5DD450Ef28e3a", + "links": { + "Homepage": "https://populous.co", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Populous", + "network": "eth", + "shortcut": "PPT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:PRE": { + "address": "0x88A3E4F35D64aAD41A6d4030ac9AFE4356cB84fA", + "links": { + "Homepage": "https://presearch.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Presearch", + "network": "eth", + "shortcut": "PRE", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:PRG": { + "address": "0x7728dFEF5aBd468669EB7f9b48A7f70a501eD29D", + "links": { + "Github": "https://github.com/paragon-coin/token", + "Homepage": "https://paragoncoin.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "PRG", + "network": "eth", + "shortcut": "PRG", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:PRL": { + "address": "0x1844b21593262668B7248d0f57a220CaaBA46ab9", + "links": { + "Github": "https://github.com/oysterprotocol", + "Homepage": "https://oyster.ws", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Oyster Pearl", + "network": "eth", + "shortcut": "PRL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:PRO": { + "address": "0x226bb599a12C826476e3A771454697EA52E9E220", + "links": { + "Homepage": "https://propy.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Propy", + "network": "eth", + "shortcut": "PRO", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:PRPS": { + "address": "0x7641b2Ca9DDD58adDf6e3381c1F994Aac5f1A32f", + "links": { + "Github": "https://github.com/nionis/purpose", + "Homepage": "https://prps.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Purpose", + "network": "eth", + "shortcut": "PRPS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:PRS": { + "address": "0x163733bcc28dbf26B41a8CfA83e369b5B3af741b", + "links": { + "Github": "https://github.com/Neurone/persians", + "Homepage": "http://persians.network", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Persians", + "network": "eth", + "shortcut": "PRS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:PRSP": { + "address": "0x0C04d4f331DA8dF75f9E2e271E3f3F1494C66C36", + "links": { + "Homepage": "http://www.prsp.me", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "PRSP", + "network": "eth", + "shortcut": "PRSP", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:PT": { + "address": "0x66497A283E0a007bA3974e837784C6AE323447de", + "links": { + "Github": "https://github.com/porntoken/smart_contract", + "Homepage": "https://www.porntoken.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "PornToken", + "network": "eth", + "shortcut": "PT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:PTOY": { + "address": "0x8Ae4BF2C33a8e667de34B54938B0ccD03Eb8CC06", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "PTOY", + "network": "eth", + "shortcut": "PTOY", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:PTWO": { + "address": "0x5512e1D6A7BE424b4323126B4f9E86D023F95764", + "links": { + "Github": "https://github.com/porntoken/smart_contract", + "Homepage": "https://www.porntoken.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "PornTokenV2", + "network": "eth", + "shortcut": "PTWO", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:PUC": { + "address": "0xEf6B4cE8C9Bc83744fbcdE2657b32eC18790458A", + "links": { + "Github": "https://github.com/pourcoin/pourcoin-PUC/projects", + "Homepage": "http://price-s.info", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Pour Coin", + "network": "eth", + "shortcut": "PUC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:PXT": { + "address": "0xc14830E53aA344E8c14603A91229A0b925b0B262", + "links": { + "Homepage": "https://populous.co", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Populous XBRL Token (PXT)", + "network": "eth", + "shortcut": "PXT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:QAU": { + "address": "0x671AbBe5CE652491985342e85428EB1b07bC6c64", + "links": { + "Homepage": "http://www.quantumproject.org", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "QAU", + "network": "eth", + "shortcut": "QAU", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:QRL": { + "address": "0x697beac28B09E122C4332D163985e8a73121b97F", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "QRL", + "network": "eth", + "shortcut": "QRL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:QSP": { + "address": "0x99ea4dB9EE77ACD40B119BD1dC4E33e1C070b80d", + "links": { + "Github": "https://github.com/quantstamp", + "Homepage": "https://quantstamp.com/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Quantstamp Token", + "network": "eth", + "shortcut": "QSP", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:QTQ": { + "address": "0x2C3C1F05187dBa7A5f2Dd47Dca57281C4d4F183F", + "links": { + "Github": "https://github.com/TiiQu-Network/TiiQu-Network", + "Homepage": "http://tiiqu.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "TiiQu's Q Token", + "network": "eth", + "shortcut": "QTQ", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:QTUM": { + "address": "0x9a642d6b3368ddc662CA244bAdf32cDA716005BC", + "links": { + "Github": "https://github.com/qtumproject", + "Homepage": "https://qtum.org/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Qtum", + "network": "eth", + "shortcut": "QTUM", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:RCT": { + "address": "0x2a3Aa9ECA41E720Ed46B5A70D6C37EfA47f768Ac", + "links": { + "Homepage": "http://www.rcfund.org", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "RCT", + "network": "eth", + "shortcut": "RCT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:RDN": { + "address": "0x255Aa6DF07540Cb5d3d297f0D0D4D84cb52bc8e6", + "links": { + "Github": "https://github.com/raiden-network/raiden/", + "Homepage": "https://raiden.network", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Raiden Network", + "network": "eth", + "shortcut": "RDN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:REA": { + "address": "0x767bA2915EC344015a7938E3eEDfeC2785195D05", + "links": { + "Homepage": "https://www.realisto.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Realisto", + "network": "eth", + "shortcut": "REA", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:REBL": { + "address": "0x5F53f7A8075614b699Baad0bC2c899f4bAd8FBBF", + "links": { + "Homepage": "https://www.rebellious.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Rebellious", + "network": "eth", + "shortcut": "REBL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:REN": { + "address": "0x408e41876cCCDC0F92210600ef50372656052a38", + "links": { + "Github": "https://github.com/republicprotocol", + "Homepage": "https://republicprotocol.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Republic Token", + "network": "eth", + "shortcut": "REN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:REP": { + "address": "0xE94327D07Fc17907b4DB788E5aDf2ed424adDff6", + "links": { + "Homepage": "https://augur.net", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Augur", + "network": "eth", + "shortcut": "REP", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:REQ": { + "address": "0x8f8221aFbB33998d8584A2B05749bA73c37a938a", + "links": { + "Homepage": "https://request.network", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Request Network", + "network": "eth", + "shortcut": "REQ", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:REX": { + "address": "0xf05a9382A4C3F29E2784502754293D88b835109C", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "REX", + "network": "eth", + "shortcut": "REX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:RIPT": { + "address": "0xdd007278B667F6bef52fD0a4c23604aA1f96039a", + "links": { + "Github": "https://github.com/riptidecoin/riptide-coin", + "Homepage": "https://riptidecoin.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "RiptideCoin", + "network": "eth", + "shortcut": "RIPT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:RLC": { + "address": "0x607F4C5BB672230e8672085532f7e901544a7375", + "links": { + "Homepage": "http://crowdsale.iex.ec", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "IEx.ec", + "network": "eth", + "shortcut": "RLC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:RLT": { + "address": "0xcCeD5B8288086BE8c38E23567e684C3740be4D48", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "RLT", + "network": "eth", + "shortcut": "RLT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:RLTY": { + "address": "0xbe99B09709fc753b09BCf557A992F6605D5997B0", + "links": { + "Homepage": "http://www.smartrealty.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "SMARTRealty", + "network": "eth", + "shortcut": "RLTY", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:RLX": { + "address": "0x4A42d2c580f83dcE404aCad18dab26Db11a1750E", + "links": { + "Homepage": "http://www.relex.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Relex", + "network": "eth", + "shortcut": "RLX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:RNDR": { + "address": "0x0996bFb5D057faa237640E2506BE7B4f9C46de0B", + "links": { + "Homepage": "https://rendertoken.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Render Token", + "network": "eth", + "shortcut": "RNDR", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ROK": { + "address": "0xc9De4B7F0C3d991e967158E4D4bFA4b51Ec0b114", + "links": { + "Homepage": "https://rockchain.org", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Rocketchain", + "network": "eth", + "shortcut": "ROK", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ROUND": { + "address": "0x4993CB95c7443bdC06155c5f5688Be9D8f6999a5", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "ROUND", + "network": "eth", + "shortcut": "ROUND", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:RPL": { + "address": "0xB4EFd85c19999D84251304bDA99E90B92300Bd93", + "links": { + "Homepage": "https://www.rocketpool.net", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Rocket Pool", + "network": "eth", + "shortcut": "RPL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:RTN": { + "address": "0x54b293226000ccBFC04DF902eEC567CB4C35a903", + "links": { + "Github": "https://github.com/Ridercoin2/RiderCoin/blob/master/README.md", + "Homepage": "http://ridertoken.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "RiderToken", + "network": "eth", + "shortcut": "RTN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:RVL": { + "address": "0x41f615E24fAbd2b097a320E9E6c1f448cb40521c", + "links": { + "Homepage": "https://www.r-evolutioncoin.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "RVL", + "network": "eth", + "shortcut": "RVL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:RVT": { + "address": "0x3d1BA9be9f66B8ee101911bC36D3fB562eaC2244", + "links": { + "Homepage": "https://rivetzintl.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Rivetz", + "network": "eth", + "shortcut": "RVT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:S-A-PAT": { + "address": "0x1EC8fE51a9B6A3a6C427D17d9ECC3060fbc4a45c", + "links": { + "Homepage": "https://www.smartillions.ch", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "S-A-PAT", + "network": "eth", + "shortcut": "S-A-PAT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:S-ETH": { + "address": "0x3eb91D237e491E0DEE8582c402D85CB440fb6b54", + "links": { + "Homepage": "https://www.smartillions.ch", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "S-ETH", + "network": "eth", + "shortcut": "S-ETH", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:SALT": { + "address": "0x4156D3342D5c385a87D264F90653733592000581", + "links": { + "Homepage": "https://saltlending.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Salt Lending Token", + "network": "eth", + "shortcut": "SALT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:SAN": { + "address": "0x7C5A0CE9267ED19B22F8cae653F198e3E8daf098", + "links": { + "Homepage": "https://santiment.net", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Santiment", + "network": "eth", + "shortcut": "SAN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:SCANDI": { + "address": "0x78fE18e41f436e1981a3a60D1557c8a7a9370461", + "links": { + "Homepage": "https://scandiweb.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Scandiweb Coin", + "network": "eth", + "shortcut": "SCANDI", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:SCL": { + "address": "0xd7631787B4dCc87b1254cfd1e5cE48e96823dEe8", + "links": { + "Homepage": "https://ico.nexus.social", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "SocialCoin", + "network": "eth", + "shortcut": "SCL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:SENSE": { + "address": "0x6745fAB6801e376cD24F03572B9C9B0D4EdDDCcf", + "links": { + "Homepage": "https://sensay.it", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Sensay", + "network": "eth", + "shortcut": "SENSE", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:SET": { + "address": "0xe06eda7435bA749b047380CEd49121ddE93334Ae", + "links": { + "Github": "https://github.com/SydEthereum/meetup-token#meetup-token", + "Homepage": "http://sydeth.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "SET", + "network": "eth", + "shortcut": "SET", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:SEXY": { + "address": "0x98F5e9b7F0e33956C0443E81bF7deB8B5b1ed545", + "links": { + "Homepage": "http://sexytoken.co", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Sexy Token", + "network": "eth", + "shortcut": "SEXY", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:SGEL": { + "address": "0xa1ccc166faf0E998b3E33225A1A0301B1C86119D", + "links": { + "Homepage": "https://www.soerengelder.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "SGELDER", + "network": "eth", + "shortcut": "SGEL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:SGT": { + "address": "0xd248B0D48E44aaF9c49aea0312be7E13a6dc1468", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "SGT", + "network": "eth", + "shortcut": "SGT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:SHIT": { + "address": "0xEF2E9966eb61BB494E5375d5Df8d67B7dB8A780D", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "SHIT", + "network": "eth", + "shortcut": "SHIT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:SIFT": { + "address": "0x8a187D5285d316bcBC9ADafc08b51d70a0d8e000", + "links": { + "Homepage": "https://smartift.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "SIFT", + "network": "eth", + "shortcut": "SIFT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:SKIN": { + "address": "0x2bDC0D42996017fCe214b21607a515DA41A9E0C5", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "SKIN", + "network": "eth", + "shortcut": "SKIN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:SKO1": { + "address": "0x4994e81897a920c0FEA235eb8CEdEEd3c6fFF697", + "links": { + "Homepage": "http://www.sikoba.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Sikoba", + "network": "eth", + "shortcut": "SKO1", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:SKR": { + "address": "0x4c382F8E09615AC86E08CE58266CC227e7d4D913", + "links": { + "Homepage": "https://tokensale.skrilla.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "SKR Token", + "network": "eth", + "shortcut": "SKR", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:SKRP": { + "address": "0xfdFE8b7aB6CF1bD1E3d14538Ef40686296C42052", + "links": { + "Github": "https://github.com/SkrapsIO", + "Homepage": "https://skraps.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Skraps", + "network": "eth", + "shortcut": "SKRP", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:SLT": { + "address": "0x7A5fF295Dc8239d5C2374E4D894202aAF029Cab6", + "links": { + "Homepage": "http://smartlands.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Smartlands", + "network": "eth", + "shortcut": "SLT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:SMART": { + "address": "0x6F6DEb5db0C4994A8283A01D6CFeEB27Fc3bBe9C", + "links": { + "Github": "https://github.com/SmartBillions/SmartBillions", + "Homepage": "http://smartbillions.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Smart Billions", + "network": "eth", + "shortcut": "SMART", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:SMT": { + "address": "0x55F93985431Fc9304077687a35A1BA103dC1e081", + "links": { + "Github": "https://github.com/SmartMeshFoundation", + "Homepage": "http://smartmesh.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "SmartMesh", + "network": "eth", + "shortcut": "SMT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:SNC": { + "address": "0xF4134146AF2d511Dd5EA8cDB1C4AC88C57D60404", + "links": { + "Homepage": "https://suncontract.org", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "SNC", + "network": "eth", + "shortcut": "SNC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:SND": { + "address": "0xf333b2Ace992ac2bBD8798bF57Bc65a06184afBa", + "links": { + "Homepage": "https://www.sandcoin.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Sandcoin", + "network": "eth", + "shortcut": "SND", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:SNG": { + "address": "0xcFD6Ae8BF13f42DE14867351eAff7A8A3b9FbBe7", + "links": { + "Github": "https://github.com/SinergiaBlockchain", + "Homepage": "https://sinergiablockchain.org/index-en.html", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "SINERGIA", + "network": "eth", + "shortcut": "SNG", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:SNGLS": { + "address": "0xaeC2E87E0A235266D9C5ADc9DEb4b2E29b54D009", + "links": { + "Homepage": "https://singulardtv.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "SingularDTV", + "network": "eth", + "shortcut": "SNGLS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:SNIP": { + "address": "0x44F588aEeB8C44471439D1270B3603c66a9262F1", + "links": { + "Homepage": "https://www.snip.network", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "SNIP", + "network": "eth", + "shortcut": "SNIP", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:SNM": { + "address": "0x983F6d60db79ea8cA4eB9968C6aFf8cfA04B3c63", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "SNM", + "network": "eth", + "shortcut": "SNM", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:SNOV": { + "address": "0xBDC5bAC39Dbe132B1E030e898aE3830017D7d969", + "links": { + "Homepage": "https://tokensale.snov.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "SNOV", + "network": "eth", + "shortcut": "SNOV", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:SNT": { + "address": "0x744d70FDBE2Ba4CF95131626614a1763DF805B9E", + "links": { + "Homepage": "https://status.im", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Status Network Token", + "network": "eth", + "shortcut": "SNT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:SOL": { + "address": "0x1F54638b7737193FFd86c19Ec51907A7c41755D8", + "links": { + "Homepage": "https://sola.foundation", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Sola Token", + "network": "eth", + "shortcut": "SOL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:SPANK": { + "address": "0x42d6622deCe394b54999Fbd73D108123806f6a18", + "links": { + "Homepage": "https://spankchain.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "SpankChain", + "network": "eth", + "shortcut": "SPANK", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:SPARC": { + "address": "0x58bf7df57d9DA7113c4cCb49d8463D4908C735cb", + "links": { + "Homepage": "https://kingsds.network", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "SPARC", + "network": "eth", + "shortcut": "SPARC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:SPARTA": { + "address": "0x24AEF3BF1A47561500f9430D74Ed4097C47F51F2", + "links": { + "Homepage": "https://www.spartaico.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "SPARTA", + "network": "eth", + "shortcut": "SPARTA", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:SPF": { + "address": "0x85089389C14Bd9c77FC2b8F0c3d1dC3363Bf06Ef", + "links": { + "Homepage": "https://sportyfi.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Sportify", + "network": "eth", + "shortcut": "SPF", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:SRN": { + "address": "0x68d57c9a1C35f63E2c83eE8e49A64e9d70528D25", + "links": { + "Github": "https://github.com/sirin-labs/crowdsale-smart-contract", + "Homepage": "https://sirinlabs.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Sirin Labs", + "network": "eth", + "shortcut": "SRN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:SS": { + "address": "0xB15fE5a123e647ba594CEa7A1E648646f95EB4AA", + "links": { + "Github": "https://github.com/Sharders", + "Homepage": "https://sharder.org", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Sharder", + "network": "eth", + "shortcut": "SS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:STAC": { + "address": "0x9a005c9a89BD72a4Bd27721E7a09A3c11D2b03C4", + "links": { + "Homepage": "https://coinstarter.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Starter Coin", + "network": "eth", + "shortcut": "STAC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:STAR": { + "address": "0xF70a642bD387F94380fFb90451C2c81d4Eb82CBc", + "links": { + "Homepage": "http://starbase.co", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Star Token", + "network": "eth", + "shortcut": "STAR", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:STC": { + "address": "0x629aEe55ed49581C33ab27f9403F7992A289ffd5", + "links": { + "Github": "https://github.com/DimensionsNetwork", + "Homepage": "https://dimensions.network", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "StrikeCoin Token", + "network": "eth", + "shortcut": "STC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:STK": { + "address": "0xaE73B38d1c9A8b274127ec30160a4927C4d71824", + "links": { + "Homepage": "https://stktoken.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "STK Token", + "network": "eth", + "shortcut": "STK", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:STN": { + "address": "0x599346779e90fc3F5F997b5ea715349820F91571", + "links": { + "Homepage": "https://saturn.network", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Saturn Network", + "network": "eth", + "shortcut": "STN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:STORJ": { + "address": "0xB64ef51C888972c908CFacf59B47C1AfBC0Ab8aC", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "STORJ", + "network": "eth", + "shortcut": "STORJ", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:STORM": { + "address": "0xD0a4b8946Cb52f0661273bfbC6fD0E0C75Fc6433", + "links": { + "Homepage": "https://www.stormtoken.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Storm Token", + "network": "eth", + "shortcut": "STORM", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:STP": { + "address": "0xecd570bBf74761b960Fa04Cc10fe2c4e86FfDA36", + "links": { + "Github": "https://github.com/stashpayio", + "Homepage": "https://stashpay.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "StashPay", + "network": "eth", + "shortcut": "STP", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:STRC": { + "address": "0x46492473755e8dF960F8034877F61732D718CE96", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "STRC", + "network": "eth", + "shortcut": "STRC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:STX": { + "address": "0x006BeA43Baa3f7A6f765F14f10A1a1b08334EF45", + "links": { + "Github": "https://github.com/stx-technologies/stox-token", + "Homepage": "https://www.stox.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "StoxToken", + "network": "eth", + "shortcut": "STX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:SUB": { + "address": "0x12480E24eb5bec1a9D4369CaB6a80caD3c0A377A", + "links": { + "Homepage": "https://substratum.net", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Substratum", + "network": "eth", + "shortcut": "SUB", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:SWM": { + "address": "0x9e88613418cF03dCa54D6a2cf6Ad934A78C7A17A", + "links": { + "Github": "https://github.com/swarmfund", + "Homepage": "https://swarm.fund", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Swarm Fund Token", + "network": "eth", + "shortcut": "SWM", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:SWT": { + "address": "0xB9e7F8568e08d5659f5D29C4997173d84CdF2607", + "links": { + "Homepage": "http://swarm.city", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Swarm City Token", + "network": "eth", + "shortcut": "SWT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:SXDT": { + "address": "0x12B306fA98F4CbB8d4457FdFf3a0A0a56f07cCdf", + "links": { + "Homepage": "http://www.spectre.ai", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Spectre.ai D-Token", + "network": "eth", + "shortcut": "SXDT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:SXUT": { + "address": "0x2C82c73d5B34AA015989462b2948cd616a37641F", + "links": { + "Homepage": "http://www.spectre.ai", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Spectre.ai U-Token", + "network": "eth", + "shortcut": "SXUT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:SYN": { + "address": "0x10B123FdDde003243199aaD03522065dC05827A0", + "links": { + "Homepage": "https://synapse.ai", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Synapse", + "network": "eth", + "shortcut": "SYN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:SenSatorI": { + "address": "0x4cA74185532DC1789527194e5B9c866dD33F4E82", + "links": { + "Homepage": "http://theglobalbitcoin.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "SenSatorI Token", + "network": "eth", + "shortcut": "SenSatorI", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:TAU": { + "address": "0xc27A2F05fa577a83BA0fDb4c38443c0718356501", + "links": { + "Github": "https://github.com/lamden", + "Homepage": "https://www.lamden.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Lamden Tau", + "network": "eth", + "shortcut": "TAU", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:TBC2": { + "address": "0xFACCD5Fc83c3E4C3c1AC1EF35D15adf06bCF209C", + "links": { + "Github": "https://github.com/erc20club", + "Homepage": "https://www.tbc.erc20.club", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "TBC2", + "network": "eth", + "shortcut": "TBC2", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:TBT": { + "address": "0xAFe60511341a37488de25Bef351952562E31fCc1", + "links": { + "Github": "https://github.com/tbitbot", + "Homepage": "https://tbitbot.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "TBitBot", + "network": "eth", + "shortcut": "TBT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:TEL": { + "address": "0x85e076361cc813A908Ff672F9BAd1541474402b2", + "links": { + "Github": "https://github.com/telcoin", + "Homepage": "https://www.telco.in", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Telcoin", + "network": "eth", + "shortcut": "TEL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:TFL": { + "address": "0xa7f976C360ebBeD4465c2855684D1AAE5271eFa9", + "links": { + "Github": "https://github.com/TrueFlip", + "Homepage": "https://trueflip.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "TrueFlip", + "network": "eth", + "shortcut": "TFL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:TIME": { + "address": "0x6531f133e6DeeBe7F2dcE5A0441aA7ef330B4e53", + "links": { + "Homepage": "https://chronobank.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Chronobank", + "network": "eth", + "shortcut": "TIME", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:TIO": { + "address": "0x80BC5512561c7f85A3A9508c7df7901b370Fa1DF", + "links": { + "Homepage": "https://trade.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "TIO", + "network": "eth", + "shortcut": "TIO", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:TIX": { + "address": "0xEa1f346faF023F974Eb5adaf088BbCdf02d761F4", + "links": { + "Homepage": "https://www.blocktix.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Blocktix", + "network": "eth", + "shortcut": "TIX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:TKN": { + "address": "0xaAAf91D9b90dF800Df4F55c205fd6989c977E73a", + "links": { + "Homepage": "https://etherscan.io/token/TokenCard", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "TokenCard", + "network": "eth", + "shortcut": "TKN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:TNT": { + "address": "0x08f5a9235B08173b7569F83645d2c7fB55e8cCD8", + "links": { + "Github": "https://github.com/tierion", + "Homepage": "https://tierion.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Tierion Network Token", + "network": "eth", + "shortcut": "TNT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:TRC": { + "address": "0xcB3F902bf97626391bF8bA87264bbC3DC13469be", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "The Real Coin", + "network": "eth", + "shortcut": "TRC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:TRCN": { + "address": "0x566Fd7999B1Fc3988022bD38507A48F0bCf22c77", + "links": { + "Homepage": "http://www.therealcoinz.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "The Real Coin", + "network": "eth", + "shortcut": "TRCN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:TRST": { + "address": "0xCb94be6f13A1182E4A4B6140cb7bf2025d28e41B", + "links": { + "Github": "https://github.com/WeTrustPlatform", + "Homepage": "https://www.wetrust.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "TRST", + "network": "eth", + "shortcut": "TRST", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:TRX": { + "address": "0xf230b790E05390FC8295F4d3F60332c93BEd42e2", + "links": { + "Homepage": "https://tronlab.com/en.html", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Tron Lab Token", + "network": "eth", + "shortcut": "TRX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:TWN": { + "address": "0x2eF1aB8a26187C58BB8aAeB11B2fC6D25C5c0716", + "links": { + "Homepage": "https://ico.theworldnews.net", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "The World News", + "network": "eth", + "shortcut": "TWN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:TWNKL": { + "address": "0xfbd0d1c77B501796A35D86cF91d65D9778EeE695", + "links": { + "Homepage": "https://www.rainbowcurrency.com/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Twinkle", + "network": "eth", + "shortcut": "TWNKL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:TaaS": { + "address": "0xE7775A6e9Bcf904eb39DA2b68c5efb4F9360e08C", + "links": { + "Homepage": "https://taas.fund", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Token-as-a-Service", + "network": "eth", + "shortcut": "TaaS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:UKG": { + "address": "0x24692791Bc444c5Cd0b81e3CBCaba4b04Acd1F3B", + "links": { + "Github": "https://github.com/unikoingold/UnikoinGold-UKG-Contract", + "Homepage": "https://unikoingold.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "UnikoinGold", + "network": "eth", + "shortcut": "UKG", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:UQC": { + "address": "0xD01DB73E047855Efb414e6202098C4Be4Cd2423B", + "links": { + "Homepage": "https://uquidcoin.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Uquid Coin", + "network": "eth", + "shortcut": "UQC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:USDT": { + "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7", + "links": { + "Homepage": "https://tether.to", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "USD Tether (erc20)", + "network": "eth", + "shortcut": "USDT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:UTK": { + "address": "0x70a72833d6bF7F508C8224CE59ea1Ef3d0Ea3A38", + "links": { + "Homepage": "https://utrust.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "UTK", + "network": "eth", + "shortcut": "UTK", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:UTN-P": { + "address": "0x9e3319636e2126e3c0bc9e3134AEC5e1508A46c7", + "links": { + "Github": "https://github.com/UniversaBlockchain/universa", + "Homepage": "https://www.universa.io/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Universa", + "network": "eth", + "shortcut": "UTN-P", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:Unicorn": { + "address": "0x89205A3A3b2A69De6Dbf7f01ED13B2108B2c43e7", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Unicorn", + "network": "eth", + "shortcut": "Unicorn", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:VEE": { + "address": "0x340D2bdE5Eb28c1eed91B2f790723E3B160613B7", + "links": { + "Github": "https://github.com/blockv", + "Homepage": "https://blockv.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "BLOCKv", + "network": "eth", + "shortcut": "VEE", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:VENUS": { + "address": "0xEbeD4fF9fe34413db8fC8294556BBD1528a4DAca", + "links": { + "Homepage": "http://venuscoin.net", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "VENUS", + "network": "eth", + "shortcut": "VENUS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:VERI": { + "address": "0x8f3470A7388c05eE4e7AF3d01D8C722b0FF52374", + "links": { + "Homepage": "http://veritas.veritaseum.com/index.php", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Veritas", + "network": "eth", + "shortcut": "VERI", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:VET": { + "address": "0xD850942eF8811f2A866692A623011bDE52a462C1", + "links": { + "Github": "https://github.com/vechain-team", + "Homepage": "https://tokensale.vechain.com/en", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Vechain", + "network": "eth", + "shortcut": "VET", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:VIB": { + "address": "0x2C974B2d0BA1716E644c1FC59982a89DDD2fF724", + "links": { + "Homepage": "https://www.viberate.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "VIB", + "network": "eth", + "shortcut": "VIB", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:VIBEX": { + "address": "0xe8Ff5C9c75dEb346acAc493C463C8950Be03Dfba", + "links": { + "Homepage": "http://vibehub.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "VIBEX", + "network": "eth", + "shortcut": "VIBEX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:VIU": { + "address": "0x519475b31653E46D20cD09F9FdcF3B12BDAcB4f5", + "links": { + "Github": "https://github.com/viuly", + "Homepage": "https://viuly.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "VIU", + "network": "eth", + "shortcut": "VIU", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:VOISE": { + "address": "0x83eEA00D838f92dEC4D1475697B9f4D3537b56E3", + "links": { + "Homepage": "https://voise.it", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Voise", + "network": "eth", + "shortcut": "VOISE", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:VRS": { + "address": "0xeDBaF3c5100302dCddA53269322f3730b1F0416d", + "links": { + "Homepage": "https://veros.org", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Veros", + "network": "eth", + "shortcut": "VRS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:VSL": { + "address": "0x5c543e7AE0A1104f78406C340E9C64FD9fCE5170", + "links": { + "Homepage": "https://www.vdice.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Vdice", + "network": "eth", + "shortcut": "VSL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:WAX": { + "address": "0x39Bb259F66E1C59d5ABEF88375979b4D20D98022", + "links": { + "Github": "https://github.com/waxio", + "Homepage": "https://wax.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "WAX", + "network": "eth", + "shortcut": "WAX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:WBA": { + "address": "0x74951B677de32D596EE851A233336926e6A2cd09", + "links": { + "Homepage": "http://webetcrypto.io/wbc", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "WeBetCrypto", + "network": "eth", + "shortcut": "WBA", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:WCT": { + "address": "0x6a0A97E47d15aAd1D132a1Ac79a480E3F2079063", + "links": { + "Homepage": "https://wepower.network", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "WePower", + "network": "eth", + "shortcut": "WCT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:WETH": { + "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "links": { + "Homepage": "https://weth.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "WETH", + "network": "eth", + "shortcut": "WETH", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:WHO": { + "address": "0xe200641890772FCe8eE6EDc5354cCEa30ac92F49", + "links": { + "Github": "https://github.com/chrisbsd/whohas", + "Homepage": "https://whohas.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "WhoHas", + "network": "eth", + "shortcut": "WHO", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:WIC": { + "address": "0x62CD07D414Ec50B68C7EcAa863a23d344f2d062f", + "links": { + "Github": "https://github.com/wicknote/wicknote", + "Homepage": "https://wicknote.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "WickNote", + "network": "eth", + "shortcut": "WIC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:WILD": { + "address": "0xD3C00772B24D997A812249ca637a921e81357701", + "links": { + "Github": "https://github.com/WildCryptoICO/Wild-Crypto-Token", + "Homepage": "http://www.wildcrypto.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "WILD Token", + "network": "eth", + "shortcut": "WILD", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:WINGS": { + "address": "0x667088b212ce3d06a1b553a7221E1fD19000d9aF", + "links": { + "Homepage": "https://wings.ai", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "WINGS", + "network": "eth", + "shortcut": "WINGS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:WOLK": { + "address": "0xF6B55acBBC49f4524Aa48D19281A9A77c54DE10f", + "links": { + "Homepage": "https://www.wolk.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Wolk Token", + "network": "eth", + "shortcut": "WOLK", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:WPC": { + "address": "0x62087245087125d3DB5B9A3D713d78E7BBc31e54", + "links": { + "Homepage": "http://www.worldpeacecoin.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "WorldPeaceCoin", + "network": "eth", + "shortcut": "WPC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:WPR": { + "address": "0x4CF488387F035FF08c371515562CBa712f9015d4", + "links": { + "Homepage": "https://wepower.network", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "WePower Token", + "network": "eth", + "shortcut": "WPR", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:WRK": { + "address": "0x71e8d74fF1C923E369D0e70DFb09866629C4DD35", + "links": { + "Github": "https://github.com/TMWorkCoin", + "Homepage": "https://workcoin.net/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "WorkCoin", + "network": "eth", + "shortcut": "WRK", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:WYV": { + "address": "0x056017c55aE7AE32d12AeF7C679dF83A85ca75Ff", + "links": { + "Github": "https://github.com/ProjectWyvern", + "Homepage": "https://projectwyvern.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "WyvernToken", + "network": "eth", + "shortcut": "WYV", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:WaBi": { + "address": "0x286BDA1413a2Df81731D4930ce2F862a35A609fE", + "links": { + "Homepage": "https://www.wacoin.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "WaBi", + "network": "eth", + "shortcut": "WaBi", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:WiC": { + "address": "0x5e4ABE6419650CA839Ce5BB7Db422b881a6064bB", + "links": { + "Homepage": "https://www.cryptowi.com/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Wi Coin", + "network": "eth", + "shortcut": "WiC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:X8X": { + "address": "0x910Dfc18D6EA3D6a7124A6F8B5458F281060fa4c", + "links": { + "Homepage": "https://x8currency.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "X8X", + "network": "eth", + "shortcut": "X8X", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:XAUR": { + "address": "0x4DF812F6064def1e5e029f1ca858777CC98D2D81", + "links": { + "Homepage": "http://www.xaurum.org", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Xaurum", + "network": "eth", + "shortcut": "XAUR", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:XCC": { + "address": "0x4d829f8C92a6691c56300D020c9e0dB984Cfe2BA", + "links": { + "Github": "https://github.com/coincrowd-it", + "Homepage": "https://www.coincrowd.it", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "CoinCrowd", + "network": "eth", + "shortcut": "XCC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:XGM": { + "address": "0x533ef0984b2FAA227AcC620C67cce12aA39CD8CD", + "links": { + "Homepage": "https://www.xaurum.org/gamma", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "XGM", + "network": "eth", + "shortcut": "XGM", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:XGT": { + "address": "0x30f4A3e0aB7a76733D8b60b89DD93c3D0b4c9E2f", + "links": { + "Github": "https://github.com/CryptogeneProject/CryptogeneToken", + "Homepage": "https://cryptogene.co", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "XGT", + "network": "eth", + "shortcut": "XGT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:XID": { + "address": "0xB110eC7B1dcb8FAB8dEDbf28f53Bc63eA5BEdd84", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "XID", + "network": "eth", + "shortcut": "XID", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:XNN": { + "address": "0xab95E915c123fdEd5BDfB6325e35ef5515F1EA69", + "links": { + "Homepage": "https://xenon.network", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "XENON", + "network": "eth", + "shortcut": "XNN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:XNT": { + "address": "0x572E6f318056ba0C5d47A422653113843D250691", + "links": { + "Homepage": "https://exante.eu", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "XNT", + "network": "eth", + "shortcut": "XNT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:XRL": { + "address": "0xB24754bE79281553dc1adC160ddF5Cd9b74361a4", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "XRL", + "network": "eth", + "shortcut": "XRL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:XSC": { + "address": "0x0F513fFb4926ff82D7F60A05069047AcA295C413", + "links": { + "Homepage": "http://crowdstart.capital", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "XSC", + "network": "eth", + "shortcut": "XSC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:YUPIE": { + "address": "0x0F33bb20a282A7649C7B3AFf644F084a9348e933", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "YUPIE", + "network": "eth", + "shortcut": "YUPIE", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ZAP": { + "address": "0x6781a0F84c7E9e846DCb84A9a5bd49333067b104", + "links": { + "Github": "https://github.com/zapproject", + "Homepage": "https://zap.store", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "ZAP", + "network": "eth", + "shortcut": "ZAP", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ZIL": { + "address": "0x05f4a42e251f2d52b8ed15E9FEdAacFcEF1FAD27", + "links": { + "Github": "https://github.com/zilliqa", + "Homepage": "https://www.zilliqa.com/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Zilliqa", + "network": "eth", + "shortcut": "ZIL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ZRX": { + "address": "0xE41d2489571d322189246DaFA5ebDe1F4699F498", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "0x Project", + "network": "eth", + "shortcut": "ZRX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:ZST": { + "address": "0xe386B139Ed3715Ca4B18Fd52671bDcea1cdFE4b1", + "links": { + "Homepage": "http://zeus.exchange", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Zeus Exchange", + "network": "eth", + "shortcut": "ZST", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:cV": { + "address": "0xdA6cb58A0D0C01610a29c5A65c303e13e885887C", + "links": { + "Github": "https://github.com/carVertical", + "Homepage": "https://www.carvertical.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "carVertical", + "network": "eth", + "shortcut": "cV", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:eBCH": { + "address": "0xaFC39788c51f0c1Ff7B55317f3e70299e521Fff6", + "links": { + "Homepage": "https://ebitcoincash.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "eBCH", + "network": "eth", + "shortcut": "eBCH", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:eBTC": { + "address": "0xeB7C20027172E5d143fB030d50f91Cece2D1485D", + "links": { + "Github": "https://github.com/eBTCCommunityTrustToken/eBTC", + "Homepage": "https://ebitcoin.org", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "eBTC", + "network": "eth", + "shortcut": "eBTC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:eGAS": { + "address": "0xb53A96bcBdD9CF78dfF20BAB6C2be7bAec8f00f8", + "links": { + "Homepage": "http://www.ethgas.stream", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "ETH GAS", + "network": "eth", + "shortcut": "eGAS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:onG": { + "address": "0xd341d1680Eeee3255b8C4c75bCCE7EB57f144dAe", + "links": { + "Github": "https://github.com/onGsocial", + "Homepage": "https://ongcoin.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "onG", + "network": "eth", + "shortcut": "onG", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:kov:Aeternity": { + "address": "0x8667559254241ddeD4d11392f868d72092765367", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Aeternity", + "network": "kov", + "shortcut": "Aeternity", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:kov:GUP": { + "address": "0x3C67f7D4decF7795225f51b54134F81137385f83", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "GUP", + "network": "kov", + "shortcut": "GUP", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:rin:AETH": { + "address": "0x398A7A69f3c59181A1ffe34bed11DCb5DF863A8a", + "links": { + "Homepage": "http://akasha.world", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "AKASHA Tokens", + "network": "rin", + "shortcut": "AETH", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:rin:BHNT": { + "address": "0xe27826eE778B6F78a49a686dA7D64f6E7b084a4f", + "links": { + "Homepage": "http://berlin.hackandtell.org", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Berlin Hack&Tell winner token", + "network": "rin", + "shortcut": "BHNT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:rin:WALL": { + "address": "0x0A057a87CE9C56D7e336B417c79cf30E8d27860B", + "links": { + "Homepage": "http://walleth.org", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "WALLETH Community-Token", + "network": "rin", + "shortcut": "WALL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:ubq:BEER": { + "address": "0xFF3bF057ADF3b0E015b6465331a6236e55688274", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "BEER", + "network": "ubq", + "shortcut": "BEER", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:ubq:CEFS": { + "address": "0x08533D6A06CE365298b12Ef92eb407cBA8Aa8273", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "CEFS", + "network": "ubq", + "shortcut": "CEFS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:ubq:DOT": { + "address": "0x94aD7e41c1D44022C4F47cb1Ba019Fd1a022c536", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "DOT", + "network": "ubq", + "shortcut": "DOT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:ubq:QWARK": { + "address": "0x4b4899a10F3E507DB207b0ee2426029eFa168a67", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "QWARK", + "network": "ubq", + "shortcut": "QWARK", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:ubq:RICKS": { + "address": "0x5e1715bB79805Bd672729760B3f7F34D6f485098", + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "RICKS", + "network": "ubq", + "shortcut": "RICKS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "mosaic:BREEZE": { + "links": { + "Homepage": "https://breeze.chat", + "Nano Wallet": "https://nem.io/downloads/" + }, + "marketcap_usd": 0, + "name": "Breeze Token", + "shortcut": "BREEZE", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "mosaic" + }, + "mosaic:DIM": { + "links": { + "Homepage": "https://www.dimcoin.io", + "Nano Wallet": "https://nem.io/downloads/" + }, + "marketcap_usd": 7760658, + "name": "DIMCOIN", + "shortcut": "DIM", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "mosaic" + }, + "mosaic:DIMTOK": { + "coinmarketcap_alias": "dimcoin", + "links": { + "Homepage": "https://www.dimcoin.io", + "Nano Wallet": "https://nem.io/downloads/" + }, + "marketcap_usd": 7760658, + "name": "DIM TOKEN", + "shortcut": "DIMTOK", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "mosaic" + }, + "mosaic:PAC:CHS": { + "links": { + "Homepage": "https://pacnem.com", + "Nano Wallet": "https://nem.io/downloads/" + }, + "marketcap_usd": 0, + "name": "PacNEM Score Tokens", + "shortcut": "PAC:CHS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "mosaic" + }, + "mosaic:PAC:HRT": { + "links": { + "Homepage": "https://pacnem.com", + "Nano Wallet": "https://nem.io/downloads/" + }, + "marketcap_usd": 0, + "name": "PacNEM Game Credits", + "shortcut": "PAC:HRT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "mosaic" + }, + "mosaic:XEM": { + "links": { + "Homepage": "https://nem.io", + "Nano Wallet": "https://nem.io/downloads/" + }, + "marketcap_usd": 2146275000, + "name": "NEM", + "shortcut": "XEM", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "mosaic" + } + }, + "info": { + "marketcap_usd": 185205612765, + "t1_coins": 534, + "t2_coins": 534, + "total_marketcap_usd": 270230834613, + "updated_at": 1523464863, + "updated_at_readable": "Wed Apr 11 18:41:03 2018" + } +} From a33e8d2ccd08dce3064da831eef43dc2e87f306d Mon Sep 17 00:00:00 2001 From: slush Date: Wed, 11 Apr 2018 19:30:25 +0200 Subject: [PATCH 278/767] coins_details: Added missing ETC, UBQ. --- coins_details.json | 36 +++++++++++++++++++++++++++++++----- coins_details.py | 17 ++++++++++++++++- 2 files changed, 47 insertions(+), 6 deletions(-) diff --git a/coins_details.json b/coins_details.json index 953f5ef40..1d12b570c 100644 --- a/coins_details.json +++ b/coins_details.json @@ -1,5 +1,18 @@ { "coins": { + "coin2:ETC": { + "links": { + "Homepage": "https://ethereumclassic.github.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Ethereum Classic", + "shortcut": "ETC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin" + }, "coin2:ETH": { "links": { "Homepage": "https://www.ethereum.org", @@ -13,6 +26,19 @@ "t2_enabled": "yes", "type": "coin" }, + "coin2:UBQ": { + "links": { + "Homepage": "https://ubiqsmart.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Ubiq", + "shortcut": "UBQ", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin" + }, "coin2:XLM": { "links": { "Homepage": "https://www.stellar.org" @@ -8086,10 +8112,10 @@ }, "info": { "marketcap_usd": 185205612765, - "t1_coins": 534, - "t2_coins": 534, + "t1_coins": 536, + "t2_coins": 536, "total_marketcap_usd": 270230834613, - "updated_at": 1523464863, - "updated_at_readable": "Wed Apr 11 18:41:03 2018" + "updated_at": 1523467778, + "updated_at_readable": "Wed Apr 11 19:29:38 2018" } -} +} \ No newline at end of file diff --git a/coins_details.py b/coins_details.py index 128a705d3..852697ebc 100755 --- a/coins_details.py +++ b/coins_details.py @@ -149,7 +149,6 @@ def update_erc20(details): check_unsupported(details, 'erc20:', supported) def update_ethereum(details): - # print('Updating Ethereum ETH') out = details['coins'].setdefault('coin2:ETH', {}) out['type'] = 'coin' set_default(out, 'shortcut', 'ETH') @@ -158,6 +157,22 @@ def update_ethereum(details): set_default(out, 't2_enabled', 'yes') update_marketcap(out, 'ethereum') + out = details['coins'].setdefault('coin2:ETC', {}) + out['type'] = 'coin' + set_default(out, 'shortcut', 'ETC') + set_default(out, 'name', 'Ethereum Classic') + set_default(out, 't1_enabled', 'yes') + set_default(out, 't2_enabled', 'yes') + update_marketcap(out, 'ethereum-classic') + + out = details['coins'].setdefault('coin2:UBQ', {}) + out['type'] = 'coin' + set_default(out, 'shortcut', 'UBQ') + set_default(out, 'name', 'Ubiq') + set_default(out, 't1_enabled', 'yes') + set_default(out, 't2_enabled', 'yes') + update_marketcap(out, 'ubiq') + def update_mosaics(details): r = requests.get('https://raw.githubusercontent.com/trezor/trezor-mcu/master/firmware/nem_mosaics.json') supported = [] From 9e80d32b5f476f165033f2c31e841ff6f795eed6 Mon Sep 17 00:00:00 2001 From: slush Date: Wed, 11 Apr 2018 19:39:04 +0200 Subject: [PATCH 279/767] coins_details: Added EXP, RSK. --- coins_details.json | 34 ++++++++++++++++++++++++++++++---- coins_details.py | 16 ++++++++++++++++ 2 files changed, 46 insertions(+), 4 deletions(-) diff --git a/coins_details.json b/coins_details.json index 1d12b570c..6f3c3394d 100644 --- a/coins_details.json +++ b/coins_details.json @@ -26,6 +26,32 @@ "t2_enabled": "yes", "type": "coin" }, + "coin2:EXP": { + "links": { + "Homepage": "https://www.expanse.tech", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Expanse", + "shortcut": "EXP", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin" + }, + "coin2:RSK": { + "links": { + "Homepage": "https://www.rsk.co", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "Rootstock", + "shortcut": "RSK", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin" + }, "coin2:UBQ": { "links": { "Homepage": "https://ubiqsmart.com", @@ -8112,10 +8138,10 @@ }, "info": { "marketcap_usd": 185205612765, - "t1_coins": 536, - "t2_coins": 536, + "t1_coins": 538, + "t2_coins": 538, "total_marketcap_usd": 270230834613, - "updated_at": 1523467778, - "updated_at_readable": "Wed Apr 11 19:29:38 2018" + "updated_at": 1523468285, + "updated_at_readable": "Wed Apr 11 19:38:05 2018" } } \ No newline at end of file diff --git a/coins_details.py b/coins_details.py index 852697ebc..618d741d4 100755 --- a/coins_details.py +++ b/coins_details.py @@ -165,6 +165,22 @@ def update_ethereum(details): set_default(out, 't2_enabled', 'yes') update_marketcap(out, 'ethereum-classic') + out = details['coins'].setdefault('coin2:RSK', {}) + out['type'] = 'coin' + set_default(out, 'shortcut', 'RSK') + set_default(out, 'name', 'Rootstock') + set_default(out, 't1_enabled', 'yes') + set_default(out, 't2_enabled', 'yes') + update_marketcap(out, 'rootstock') + + out = details['coins'].setdefault('coin2:EXP', {}) + out['type'] = 'coin' + set_default(out, 'shortcut', 'EXP') + set_default(out, 'name', 'Expanse') + set_default(out, 't1_enabled', 'yes') + set_default(out, 't2_enabled', 'yes') + update_marketcap(out, 'expanse') + out = details['coins'].setdefault('coin2:UBQ', {}) out['type'] = 'coin' set_default(out, 'shortcut', 'UBQ') From 4fc9fdff7d83a2af331b06e19986a50c12a69245 Mon Sep 17 00:00:00 2001 From: Aleksey Popov Date: Thu, 12 Apr 2018 20:22:16 +0300 Subject: [PATCH 280/767] protob: Fix `amount` and `fee` Lisk fields string -> uint64 --- protob/types.proto | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/protob/types.proto b/protob/types.proto index fccf1363d..545859930 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -476,8 +476,8 @@ enum LiskTransactionType { */ message LiskTransactionCommon { optional LiskTransactionType type = 1; - optional string amount = 2 [default='0']; - optional string fee = 3; + optional uint64 amount = 2 [default=0]; + optional uint64 fee = 3; optional string recipient_id = 4; optional string sender_public_key = 5; optional string requester_public_key = 6; From 6dd5d17a8e8f53429255579b3d78a8189252472e Mon Sep 17 00:00:00 2001 From: Aleksey Popov Date: Sat, 14 Apr 2018 10:09:13 +0300 Subject: [PATCH 281/767] protob: Change some Lisk transaction fields to `bytes` --- protob/types.proto | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/protob/types.proto b/protob/types.proto index 545859930..2874b2bb2 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -479,9 +479,9 @@ message LiskTransactionCommon { optional uint64 amount = 2 [default=0]; optional uint64 fee = 3; optional string recipient_id = 4; - optional string sender_public_key = 5; - optional string requester_public_key = 6; - optional string signature = 7; + optional bytes sender_public_key = 5; + optional bytes requester_public_key = 6; + optional bytes signature = 7; optional uint32 timestamp = 8; optional LiskTransactionAsset asset = 9; } From 9abe3a7c69000cc7ee3cda2ec940193fa9d62e6c Mon Sep 17 00:00:00 2001 From: Aleksey Popov Date: Sat, 14 Apr 2018 07:35:31 +0300 Subject: [PATCH 282/767] protob: Change stellar fields from int64 -> sint64 --- protob/messages.proto | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/protob/messages.proto b/protob/messages.proto index aebe459f5..9667cf5c9 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -1100,7 +1100,7 @@ message StellarPaymentOp { optional bytes destination_account = 2; // 32-byte destination account optional StellarAssetType asset = 3; // asset involved in the operation - optional int64 amount = 4; // amount of the given asset to pay + optional sint64 amount = 4; // amount of the given asset to pay } /** @@ -1113,7 +1113,7 @@ message StellarCreateAccountOp { optional bytes source_account = 1; // (optional) 32-byte source account optional bytes new_account = 2; // 32-byte account ID to create - optional int64 starting_balance = 3; // initial starting balance for the new account + optional sint64 starting_balance = 3; // initial starting balance for the new account } /** @@ -1126,10 +1126,10 @@ message StellarPathPaymentOp { optional bytes source_account = 1; // (optional) 32-byte source account optional StellarAssetType send_asset = 2; - optional int64 send_max = 3; + optional sint64 send_max = 3; optional bytes destination_account = 4; optional StellarAssetType destination_asset = 5; - optional int64 destination_amount = 6; + optional sint64 destination_amount = 6; repeated StellarAssetType paths = 7; } @@ -1144,7 +1144,7 @@ message StellarManageOfferOp { optional StellarAssetType selling_asset = 2; optional StellarAssetType buying_asset = 3; - optional int64 amount = 4; + optional sint64 amount = 4; optional uint32 price_n = 5; // Price numerator optional uint32 price_d = 6; // Price denominator optional uint64 offer_id = 7; // Offer ID for updating an existing offer @@ -1161,7 +1161,7 @@ message StellarCreatePassiveOfferOp { optional StellarAssetType selling_asset = 2; optional StellarAssetType buying_asset = 3; - optional int64 amount = 4; + optional sint64 amount = 4; optional uint32 price_n = 5; // Price numerator optional uint32 price_d = 6; // Price denominator } From 8a40c5f9ed73a6b07fe47d2db3e041872d544bfb Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 23 Apr 2018 14:55:08 +0100 Subject: [PATCH 283/767] defs: add coins subdirectory (extracted from coins.json and pull requests) --- defs/coins/bcash.json | 37 +++++++++++++++++++++++++++++++ defs/coins/bcash_testnet.json | 33 +++++++++++++++++++++++++++ defs/coins/bgold.json | 37 +++++++++++++++++++++++++++++++ defs/coins/bitcoin.json | 38 ++++++++++++++++++++++++++++++++ defs/coins/bitcoin_testnet.json | 35 +++++++++++++++++++++++++++++ defs/coins/bprivate.json | 34 ++++++++++++++++++++++++++++ defs/coins/dash.json | 35 +++++++++++++++++++++++++++++ defs/coins/dash_testnet.json | 31 ++++++++++++++++++++++++++ defs/coins/decred_testnet.json | 35 +++++++++++++++++++++++++++++ defs/coins/denarius.json | 32 +++++++++++++++++++++++++++ defs/coins/digibyte.json | 37 +++++++++++++++++++++++++++++++ defs/coins/dogecoin.json | 32 +++++++++++++++++++++++++++ defs/coins/fujicoin.json | 37 +++++++++++++++++++++++++++++++ defs/coins/groestlcoin.json | 33 +++++++++++++++++++++++++++ defs/coins/litecoin.json | 34 ++++++++++++++++++++++++++++ defs/coins/litecoin_testnet.json | 33 +++++++++++++++++++++++++++ defs/coins/monacoin.json | 34 ++++++++++++++++++++++++++++ defs/coins/namecoin.json | 32 +++++++++++++++++++++++++++ defs/coins/schema.proto | 28 +++++++++++++++++++++++ defs/coins/terracoin.json | 33 +++++++++++++++++++++++++++ defs/coins/vertcoin.json | 32 +++++++++++++++++++++++++++ defs/coins/viacoin.json | 37 +++++++++++++++++++++++++++++++ defs/coins/zcash.json | 34 ++++++++++++++++++++++++++++ defs/coins/zcash_testnet.json | 32 +++++++++++++++++++++++++++ defs/coins/zcoin.json | 37 +++++++++++++++++++++++++++++++ defs/coins/zcoin_testnet.json | 35 +++++++++++++++++++++++++++++ 26 files changed, 887 insertions(+) create mode 100644 defs/coins/bcash.json create mode 100644 defs/coins/bcash_testnet.json create mode 100644 defs/coins/bgold.json create mode 100644 defs/coins/bitcoin.json create mode 100644 defs/coins/bitcoin_testnet.json create mode 100644 defs/coins/bprivate.json create mode 100644 defs/coins/dash.json create mode 100644 defs/coins/dash_testnet.json create mode 100644 defs/coins/decred_testnet.json create mode 100644 defs/coins/denarius.json create mode 100644 defs/coins/digibyte.json create mode 100644 defs/coins/dogecoin.json create mode 100644 defs/coins/fujicoin.json create mode 100644 defs/coins/groestlcoin.json create mode 100644 defs/coins/litecoin.json create mode 100644 defs/coins/litecoin_testnet.json create mode 100644 defs/coins/monacoin.json create mode 100644 defs/coins/namecoin.json create mode 100644 defs/coins/schema.proto create mode 100644 defs/coins/terracoin.json create mode 100644 defs/coins/vertcoin.json create mode 100644 defs/coins/viacoin.json create mode 100644 defs/coins/zcash.json create mode 100644 defs/coins/zcash_testnet.json create mode 100644 defs/coins/zcoin.json create mode 100644 defs/coins/zcoin_testnet.json diff --git a/defs/coins/bcash.json b/defs/coins/bcash.json new file mode 100644 index 000000000..2db1b8d62 --- /dev/null +++ b/defs/coins/bcash.json @@ -0,0 +1,37 @@ +{ + "maintainer": "Jochen Hoenicke ", + "coin_name": "Bcash", + "coin_shortcut": "BCH", + "coin_label": "Bitcoin Cash", + "curve_name": "secp256k1", + "address_type": 0, + "address_type_p2sh": 5, + "maxfee_kb": 500000, + "minfee_kb": 1000, + "signed_message_header": "Bitcoin Signed Message:\n", + "hash_genesis_block": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", + "xprv_magic": "0488ade4", + "xpub_magic": "0488b21e", + "xpub_magic_segwit_p2sh": null, + "bech32_prefix": null, + "cashaddr_prefix": "bitcoincash", + "bip44": 145, + "segwit": false, + "decred": false, + "forkid": 0, + "force_bip143": true, + "default_fee_b": { + "Low": 10, + "Economy": 70, + "Normal": 140, + "High": 200 + }, + "dust_limit": 546, + "blocktime_minutes": 10, + "address_prefix": "bitcoincash:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "https://bch-bitcore2.trezor.io" + ] +} diff --git a/defs/coins/bcash_testnet.json b/defs/coins/bcash_testnet.json new file mode 100644 index 000000000..428bb892a --- /dev/null +++ b/defs/coins/bcash_testnet.json @@ -0,0 +1,33 @@ +{ + "maintainer": "Jochen Hoenicke ", + "coin_name": "Bcash Testnet", + "coin_shortcut": "TBCH", + "coin_label": "Bitcoin Cash Testnet", + "curve_name": "secp256k1", + "address_type": 111, + "address_type_p2sh": 196, + "maxfee_kb": 10000000, + "minfee_kb": 1000, + "signed_message_header": "Bitcoin Signed Message:\n", + "hash_genesis_block": "000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943", + "xprv_magic": "04358394", + "xpub_magic": "043587cf", + "xpub_magic_segwit_p2sh": null, + "bech32_prefix": null, + "cashaddr_prefix": "bchtest", + "bip44": 1, + "segwit": false, + "decred": false, + "forkid": 0, + "force_bip143": true, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 546, + "blocktime_minutes": 10, + "address_prefix": "bitcoincash:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [] +} + diff --git a/defs/coins/bgold.json b/defs/coins/bgold.json new file mode 100644 index 000000000..cba5fe4b7 --- /dev/null +++ b/defs/coins/bgold.json @@ -0,0 +1,37 @@ +{ + "maintainer": "Saleem Rashid ", + "coin_name": "Bgold", + "coin_shortcut": "BTG", + "coin_label": "Bitcoin Gold", + "curve_name": "secp256k1", + "address_type": 38, + "address_type_p2sh": 23, + "maxfee_kb": 500000, + "minfee_kb": 1000, + "signed_message_header": "Bitcoin Gold Signed Message:\n", + "hash_genesis_block": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", + "xprv_magic": "0488ade4", + "xpub_magic": "0488b21e", + "xpub_magic_segwit_p2sh": "049d7cb2", + "bech32_prefix": "btg", + "cashaddr_prefix": null, + "bip44": 156, + "segwit": true, + "decred": false, + "forkid": 79, + "force_bip143": true, + "default_fee_b": { + "Low": 10, + "Economy": 70, + "Normal": 140, + "High": 200 + }, + "dust_limit": 546, + "blocktime_minutes": 10, + "address_prefix": "bitcoingold:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "https://btg-bitcore2.trezor.io" + ] +} diff --git a/defs/coins/bitcoin.json b/defs/coins/bitcoin.json new file mode 100644 index 000000000..b0967216d --- /dev/null +++ b/defs/coins/bitcoin.json @@ -0,0 +1,38 @@ +{ + "maintainer": "Pavol Rusnak ", + "coin_name": "Bitcoin", + "coin_shortcut": "BTC", + "coin_label": "Bitcoin", + "curve_name": "secp256k1", + "address_type": 0, + "address_type_p2sh": 5, + "maxfee_kb": 2000000, + "minfee_kb": 1000, + "signed_message_header": "Bitcoin Signed Message:\n", + "hash_genesis_block": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", + "xprv_magic": "0488ade4", + "xpub_magic": "0488b21e", + "xpub_magic_segwit_p2sh": "049d7cb2", + "bech32_prefix": "bc", + "cashaddr_prefix": null, + "bip44": 0, + "segwit": true, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Low": 10, + "Economy": 70, + "Normal": 140, + "High": 200 + }, + "dust_limit": 546, + "blocktime_minutes": 10, + "address_prefix": "bitcoin:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "https://btc-bitcore3.trezor.io", + "https://btc-bitcore1.trezor.io" + ] +} diff --git a/defs/coins/bitcoin_testnet.json b/defs/coins/bitcoin_testnet.json new file mode 100644 index 000000000..0554d3a83 --- /dev/null +++ b/defs/coins/bitcoin_testnet.json @@ -0,0 +1,35 @@ +{ + "maintainer": "Pavol Rusnak ", + "coin_name": "Testnet", + "coin_shortcut": "TEST", + "coin_label": "Testnet", + "curve_name": "secp256k1", + "address_type": 111, + "address_type_p2sh": 196, + "maxfee_kb": 10000000, + "minfee_kb": 1000, + "signed_message_header": "Bitcoin Signed Message:\n", + "hash_genesis_block": "000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943", + "xprv_magic": "04358394", + "xpub_magic": "043587cf", + "xpub_magic_segwit_p2sh": "044a5262", + "bech32_prefix": "tb", + "cashaddr_prefix": null, + "bip44": 1, + "segwit": true, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 546, + "blocktime_minutes": 10, + "address_prefix": "bitcoin:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "https://testnet-bitcore1.trezor.io", + "https://testnet-bitcore2.trezor.io" + ] +} diff --git a/defs/coins/bprivate.json b/defs/coins/bprivate.json new file mode 100644 index 000000000..c54dae9e5 --- /dev/null +++ b/defs/coins/bprivate.json @@ -0,0 +1,34 @@ +{ + "maintainer": "Chris Sulmone ", + "coin_name": "Bprivate", + "coin_shortcut": "BTCP", + "coin_label": "Bitcoin Private", + "curve_name": "secp256k1", + "address_type": 4901, + "address_type_p2sh": 5039, + "maxfee_kb": 1000000, + "minfee_kb": 1000, + "signed_message_header": "BitcoinPrivate Signed Message:\n", + "hash_genesis_block": "0007104ccda289427919efc39dc9e4d499804b7bebc22df55f8b834301260602", + "xprv_magic": "0488ade4", + "xpub_magic": "0488b21e", + "xpub_magic_segwit_p2sh": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "bip44": 183, + "segwit": false, + "decred": false, + "forkid": 42, + "force_bip143": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 546, + "blocktime_minutes": 2.5, + "address_prefix": "bitcoinprivate:", + "min_address_length": 35, + "max_address_length": 95, + "bitcore": [ + "https://explorer.btcprivate.org/" + ] +} diff --git a/defs/coins/dash.json b/defs/coins/dash.json new file mode 100644 index 000000000..925ed9772 --- /dev/null +++ b/defs/coins/dash.json @@ -0,0 +1,35 @@ +{ + "maintainer": "Karel Bilek ", + "coin_name": "Dash", + "coin_shortcut": "DASH", + "coin_label": "Dash", + "curve_name": "secp256k1", + "address_type": 76, + "address_type_p2sh": 16, + "maxfee_kb": 100000, + "minfee_kb": 10000, + "signed_message_header": "DarkCoin Signed Message:\n", + "hash_genesis_block": "00000ffd590b1485b3caadc19b22e6379c733355108f107a430458cdf3407ab6", + "xprv_magic": "02fe52f8", + "xpub_magic": "02fe52cc", + "xpub_magic_segwit_p2sh": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "bip44": 5, + "segwit": false, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 5460, + "blocktime_minutes": 2.5, + "address_prefix": "dash:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "https://dash-bitcore1.trezor.io", + "https://dash-bitcore3.trezor.io" + ] +} diff --git a/defs/coins/dash_testnet.json b/defs/coins/dash_testnet.json new file mode 100644 index 000000000..db809303d --- /dev/null +++ b/defs/coins/dash_testnet.json @@ -0,0 +1,31 @@ +{ + "maintainer": "Karel Bilek ", + "coin_name": "Dash Testnet", + "coin_shortcut": "tDASH", + "coin_label": "Dash Testnet", + "curve_name": "secp256k1", + "address_type": 140, + "address_type_p2sh": 19, + "maxfee_kb": 100000, + "minfee_kb": 10000, + "signed_message_header": "DarkCoin Signed Message:\n", + "hash_genesis_block": "00000bafbc94add76cb75e2ec92894837288a481e5c005f6563d91623bf8bc2c", + "xprv_magic": "04358394", + "xpub_magic": "043587cf", + "xpub_magic_segwit_p2sh": null, + "bech32_prefix": null, + "bip44": 1, + "segwit": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 5460, + "blocktime_minutes": 2.5, + "address_prefix": "dash:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + ] +} diff --git a/defs/coins/decred_testnet.json b/defs/coins/decred_testnet.json new file mode 100644 index 000000000..f92623f7b --- /dev/null +++ b/defs/coins/decred_testnet.json @@ -0,0 +1,35 @@ +{ + "maintainer": "Saleem Rashid ", + "coin_name": "Decred Testnet", + "coin_shortcut": "TDCR", + "coin_label": "Testnet", + "curve_name": "secp256k1_decred", + "address_type": 3873, + "address_type_p2sh": 3836, + "maxfee_kb": 10000000, + "minfee_kb": 1000, + "signed_message_header": "Decred Signed Message:\n", + "hash_genesis_block": "4261602a9d07d80ad47621a64ba6a07754902e496777edc4ff581946bd7bc29c", + "xprv_magic": "04358397", + "xpub_magic": "043587d1", + "xpub_magic_segwit_p2sh": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "bip44": 1, + "segwit": false, + "decred": true, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 546, + "blocktime_minutes": 10, + "address_prefix": "bitcoin:", + "min_address_length": 35, + "max_address_length": 35, + "bitcore": [ + "https://testnet.decred.org" + ] +} + diff --git a/defs/coins/denarius.json b/defs/coins/denarius.json new file mode 100644 index 000000000..bc861abde --- /dev/null +++ b/defs/coins/denarius.json @@ -0,0 +1,32 @@ +{ + "maintainer": "carsenk ", + "coin_name": "Denarius", + "coin_shortcut": "DNR", + "coin_label": "Denarius", + "curve_name": "secp256k1", + "address_type": 30, + "address_type_p2sh": 90, + "maxfee_kb": 100000, + "minfee_kb": 10000, + "signed_message_header": "Denarius Signed Message:\n", + "hash_genesis_block": "00000d5dbbda01621cfc16bbc1f9bf3264d641a5dbf0de89fd0182c2c4828fcd", + "xprv_magic": "0488ade4", + "xpub_magic": "0488b21e", + "xpub_magic_segwit_p2sh": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "bip44": 116, + "segwit": false, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 54600, + "blocktime_minutes": 0.5, + "address_prefix": "denarius:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [] +} diff --git a/defs/coins/digibyte.json b/defs/coins/digibyte.json new file mode 100644 index 000000000..4b3fb8cae --- /dev/null +++ b/defs/coins/digibyte.json @@ -0,0 +1,37 @@ +{ + "maintainer": "DigiByte ", + "coin_name": "DigiByte", + "coin_shortcut": "DGB", + "coin_label": "DigiByte", + "curve_name": "secp256k1", + "address_type": 30, + "address_type_p2sh": 63, + "maxfee_kb": 500000, + "minfee_kb": 1000, + "signed_message_header": "DigiByte Signed Message:\n", + "hash_genesis_block": "7497ea1b465eb39f1c8f507bc877078fe016d6fcb6dfad3a64c98dcc6e1e8496", + "xprv_magic": "0488ade4", + "xpub_magic": "0488b21e", + "xpub_magic_segwit_p2sh": "049d7cb2", + "bech32_prefix": "dgb", + "cashaddr_prefix": null, + "bip44": 20, + "segwit": true, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Low": 10, + "Economy": 70, + "Normal": 140, + "High": 200 + }, + "dust_limit": 546, + "blocktime_minutes": 0.25, + "address_prefix": "digibyte:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "https://explorer.digibyteprojects.com" + ] +} diff --git a/defs/coins/dogecoin.json b/defs/coins/dogecoin.json new file mode 100644 index 000000000..cd96ce13e --- /dev/null +++ b/defs/coins/dogecoin.json @@ -0,0 +1,32 @@ +{ + "maintainer": "Karel Bilek ", + "coin_name": "Dogecoin", + "coin_shortcut": "DOGE", + "coin_label": "Dogecoin", + "curve_name": "secp256k1", + "address_type": 30, + "address_type_p2sh": 22, + "maxfee_kb": 1000000000, + "minfee_kb": 1000, + "signed_message_header": "Dogecoin Signed Message:\n", + "hash_genesis_block": "1a91e3dace36e2be3bf030a65679fe821aa1d6ef92e7c9902eb318182c355691", + "xprv_magic": "02fac398", + "xpub_magic": "02facafd", + "xpub_magic_segwit_p2sh": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "bip44": 3, + "segwit": false, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 10000000, + "blocktime_minutes": 1, + "address_prefix": "dogecoin:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [] +} diff --git a/defs/coins/fujicoin.json b/defs/coins/fujicoin.json new file mode 100644 index 000000000..72562642a --- /dev/null +++ b/defs/coins/fujicoin.json @@ -0,0 +1,37 @@ +{ + "maintainer": "motty ", + "coin_name": "Fujicoin", + "coin_shortcut": "FJC", + "coin_label": "Fujicoin", + "curve_name": "secp256k1", + "address_type": 36, + "address_type_p2sh": 16, + "maxfee_kb": 1000000, + "minfee_kb": 100000, + "signed_message_header": "FujiCoin Signed Message:\n", + "hash_genesis_block": "adb6d9cfd74075e7f91608add4bd2a2ea636f70856183086842667a1597714a0", + "xpub_magic": "0488b21e", + "xprv_magic": "0488ade4", + "xpub_magic_segwit_p2sh": "049d7cb2", + "bech32_prefix": "fc", + "cashaddr_prefix": null, + "bip44": 75, + "segwit": true, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Low": 100000, + "Economy": 200000, + "Normal": 500000, + "High": 1000000 + }, + "dust_limit": 100000, + "blocktime_minutes": 1.0, + "address_prefix": "fujicoin:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "http://explorer.fujicoin.org/" + ] +} diff --git a/defs/coins/groestlcoin.json b/defs/coins/groestlcoin.json new file mode 100644 index 000000000..1813cd2c9 --- /dev/null +++ b/defs/coins/groestlcoin.json @@ -0,0 +1,33 @@ +{ + "maintainer": "Yura Pakhuchiy ", + "coin_name": "Groestlcoin", + "coin_shortcut": "GRS", + "coin_label": "Groestlcoin", + "curve_name": "secp256k1_groestl", + "address_type": 36, + "address_type_p2sh": 5, + "maxfee_kb": 100000, + "minfee_kb": 1000, + "signed_message_header": "GroestlCoin Signed Message:\n", + "hash_genesis_block": "00000ac5927c594d49cc0bdb81759d0da8297eb614683d3acb62f0703b639023", + "xprv_magic": "0488ade4", + "xpub_magic": "0488b21e", + "xpub_magic_segwit_p2sh": "049d7cb2", + "bech32_prefix": "grs", + "bip44": 17, + "segwit": true, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 546, + "blocktime_minutes": 1, + "address_prefix": "groestlcoin:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "https://groestlsight.groestlcoin.org/" + ] +} diff --git a/defs/coins/litecoin.json b/defs/coins/litecoin.json new file mode 100644 index 000000000..0ac28f606 --- /dev/null +++ b/defs/coins/litecoin.json @@ -0,0 +1,34 @@ +{ + "maintainer": "Pavol Rusnak ", + "coin_name": "Litecoin", + "coin_shortcut": "LTC", + "coin_label": "Litecoin", + "curve_name": "secp256k1", + "address_type": 48, + "address_type_p2sh": 50, + "maxfee_kb": 40000000, + "minfee_kb": 100000, + "signed_message_header": "Litecoin Signed Message:\n", + "hash_genesis_block": "12a765e31ffd4059bada1e25190f6e98c99d9714d334efa41a195a7e7e04bfe2", + "xprv_magic": "019d9cfe", + "xpub_magic": "019da462", + "xpub_magic_segwit_p2sh": "01b26ef6", + "bech32_prefix": "ltc", + "cashaddr_prefix": null, + "bip44": 2, + "segwit": true, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 1000 + }, + "dust_limit": 54600, + "blocktime_minutes": 2.5, + "address_prefix": "litecoin:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "https://ltc-bitcore3.trezor.io" + ] +} diff --git a/defs/coins/litecoin_testnet.json b/defs/coins/litecoin_testnet.json new file mode 100644 index 000000000..697a7a462 --- /dev/null +++ b/defs/coins/litecoin_testnet.json @@ -0,0 +1,33 @@ +{ + "maintainer": "Pavol Rusnak ", + "coin_name": "Litecoin Testnet", + "coin_shortcut": "TLTC", + "coin_label": "Litecoin Testnet", + "curve_name": "secp256k1", + "address_type": 111, + "address_type_p2sh": 58, + "maxfee_kb": 40000000, + "minfee_kb": 1000, + "signed_message_header": "Litecoin Signed Message:\n", + "hash_genesis_block": "4966625a4b2851d9fdee139e56211a0d88575f59ed816ff5e6a63deb4e3e29a0", + "xprv_magic": "04358394", + "xpub_magic": "043587cf", + "xpub_magic_segwit_p2sh": null, + "bech32_prefix": "tltc", + "bip44": 1, + "segwit": true, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 54600, + "blocktime_minutes": 2.5, + "address_prefix": "litecoin:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "https://testnet.litecore.io" + ] +} diff --git a/defs/coins/monacoin.json b/defs/coins/monacoin.json new file mode 100644 index 000000000..a8a9547df --- /dev/null +++ b/defs/coins/monacoin.json @@ -0,0 +1,34 @@ +{ + "maintainer": "cryptcoin-junkey ", + "coin_name": "Monacoin", + "coin_shortcut": "MONA", + "coin_label": "Monacoin", + "curve_name": "secp256k1", + "address_type": 50, + "address_type_p2sh": 55, + "maxfee_kb": 5000000, + "minfee_kb": 100000, + "signed_message_header": "Monacoin Signed Message:\n", + "hash_genesis_block": "ff9f1c0116d19de7c9963845e129f9ed1bfc0b376eb54fd7afa42e0d418c8bb6", + "xpub_magic": "0488b21e", + "xprv_magic": "0488ade4", + "xpub_magic_segwit_p2sh": "049d7cb2", + "bech32_prefix": "mona", + "cashaddr_prefix": null, + "bip44": 22, + "segwit": true, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 100000 + }, + "dust_limit": 54600, + "blocktime_minutes": 1.5, + "address_prefix": "monacoin:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "https://mona.chainsight.info" + ] +} diff --git a/defs/coins/namecoin.json b/defs/coins/namecoin.json new file mode 100644 index 000000000..bff137422 --- /dev/null +++ b/defs/coins/namecoin.json @@ -0,0 +1,32 @@ +{ + "maintainer": "Pavol Rusnak ", + "coin_name": "Namecoin", + "coin_shortcut": "NMC", + "coin_label": "Namecoin", + "curve_name": "secp256k1", + "address_type": 52, + "address_type_p2sh": 5, + "maxfee_kb": 10000000, + "minfee_kb": 1000, + "signed_message_header": "Namecoin Signed Message:\n", + "hash_genesis_block": "000000000062b72c5e2ceb45fbc8587e807c155b0da735e6483dfba2f0a9c770", + "xprv_magic": "019d9cfe", + "xpub_magic": "019da462", + "xpub_magic_segwit_p2sh": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "bip44": 7, + "segwit": false, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 2940, + "blocktime_minutes": 10, + "address_prefix": "namecoin:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [] +} diff --git a/defs/coins/schema.proto b/defs/coins/schema.proto new file mode 100644 index 000000000..865ac5036 --- /dev/null +++ b/defs/coins/schema.proto @@ -0,0 +1,28 @@ +message CoinDef { +{ + optional string coin_name = 1; + optional string coin_shortcut = 2; + optional string coin_label = 3; + optional string curve_name = 4; + optional uint32 address_type = 5; + optional uint32 address_type_p2sh = 6; + optional uint64 maxfee_kb = 7; + optional uint64 minfee_kb = 8; + optional bytes signed_message_header = 9; + optional bytes hash_genesis_block = 10; + optional uint32 xprv_magic = 11; + optional uint32 xpub_magic = 12; + optional uint32 xpub_magic_segwit_p2sh = 13; + optional string bech32_prefix = 14; + optional string cashaddr_prefix = 15; + optional uint32 slip44 = 16; + optional bool segwit = 17; + optional bool decred = 18; + optional uint32 fork_id = 19; + optional bool force_bip143 = 20; + optional uint64 dust_limit = 21; + optional float blocktime_minute = 22; + optional string address_prefix = 23; + optional uint32 min_address_length = 24; + optional uint32 max_address_length = 25; +} diff --git a/defs/coins/terracoin.json b/defs/coins/terracoin.json new file mode 100644 index 000000000..d4b9c6dff --- /dev/null +++ b/defs/coins/terracoin.json @@ -0,0 +1,33 @@ +{ + "maintainer": "Justin F. Hallett ", + "coin_name": "Terracoin", + "coin_shortcut": "TRC", + "coin_label": "Terracoin", + "curve_name": "secp256k1", + "address_type": 0, + "address_type_p2sh": 5, + "maxfee_kb": 100000, + "minfee_kb": 10000, + "signed_message_header": "DarkCoin Signed Message:\n", + "hash_genesis_block": "00000000804bbc6a621a9dbb564ce469f492e1ccf2d70f8a6b241e26a277afa2", + "xprv_magic": "0488ade4", + "xpub_magic": "0488b21e", + "xpub_magic_segwit_p2sh": null, + "bech32_prefix": null, + "bip44": 0, + "segwit": false, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 5460, + "blocktime_minutes": 2, + "address_prefix": "terracoin:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "https://insight.terracoin.io" + ] +} diff --git a/defs/coins/vertcoin.json b/defs/coins/vertcoin.json new file mode 100644 index 000000000..404290c1c --- /dev/null +++ b/defs/coins/vertcoin.json @@ -0,0 +1,32 @@ +{ + "maintainer": "Jochen Hoenicke ", + "coin_name": "Vertcoin", + "coin_shortcut": "VTC", + "coin_label": "Vertcoin", + "curve_name": "secp256k1", + "address_type": 71, + "address_type_p2sh": 5, + "maxfee_kb": 40000000, + "minfee_kb": 100000, + "signed_message_header": "Vertcoin Signed Message:\n", + "hash_genesis_block": "4d96a915f49d40b1e5c2844d1ee2dccb90013a990ccea12c492d22110489f0c4", + "xprv_magic": "0488ade4", + "xpub_magic": "0488b21e", + "xpub_magic_segwit_p2sh": "049d7cb2", + "bech32_prefix": "vtc", + "cashaddr_prefix": null, + "bip44": 28, + "segwit": true, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 1000 + }, + "dust_limit": 54600, + "blocktime_minutes": 2.5, + "address_prefix": "vertcoin:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [] +} diff --git a/defs/coins/viacoin.json b/defs/coins/viacoin.json new file mode 100644 index 000000000..615ad1b14 --- /dev/null +++ b/defs/coins/viacoin.json @@ -0,0 +1,37 @@ +{ + "maintainer": "romanornr ", + "coin_name": "viacoin", + "coin_shortcut": "VIA", + "coin_label": "viacoin", + "curve_name": "secp256k1", + "address_type": 71, + "address_type_p2sh": 33, + "maxfee_kb": 40000000, + "minfee_kb": 1000, + "signed_message_header": "Viacoin Signed Message:\n", + "hash_genesis_block": "4e9b54001f9976049830128ec0331515eaabe35a70970d79971da1539a400ba1", + "xprv_magic": "0488ade4", + "xpub_magic": "0488b21e", + "xpub_magic_segwit_p2sh": "049d7cb2", + "bech32_prefix": "via", + "cashaddr_prefix": null, + "bip44": 14, + "segwit": true, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Low": 1000, + "Economy": 7000, + "Normal": 14000, + "High": 20000 + }, + "dust_limit": 54600, + "blocktime_minutes": 0.4, + "address_prefix": "viacoin:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "https://explorer.viacoin.org" + ] +} diff --git a/defs/coins/zcash.json b/defs/coins/zcash.json new file mode 100644 index 000000000..73203f4bf --- /dev/null +++ b/defs/coins/zcash.json @@ -0,0 +1,34 @@ +{ + "maintainer": "Pavol Rusnak ", + "coin_name": "Zcash", + "coin_shortcut": "ZEC", + "coin_label": "Zcash", + "curve_name": "secp256k1", + "address_type": 7352, + "address_type_p2sh": 7357, + "maxfee_kb": 1000000, + "minfee_kb": 1000, + "signed_message_header": "Zcash Signed Message:\n", + "hash_genesis_block": "00040fe8ec8471911baa1db1266ea15dd06b4a8a5c453883c000b031973dce08", + "xprv_magic": "0488ade4", + "xpub_magic": "0488b21e", + "xpub_magic_segwit_p2sh": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "bip44": 133, + "segwit": false, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 546, + "blocktime_minutes": 2.5, + "address_prefix": "zcash:", + "min_address_length": 35, + "max_address_length": 95, + "bitcore": [ + "https://zec-bitcore1.trezor.io/" + ] +} diff --git a/defs/coins/zcash_testnet.json b/defs/coins/zcash_testnet.json new file mode 100644 index 000000000..9c12aed1f --- /dev/null +++ b/defs/coins/zcash_testnet.json @@ -0,0 +1,32 @@ +{ + "maintainer": "Pavol Rusnak ", + "coin_name": "Zcash Testnet", + "coin_shortcut": "TAZ", + "coin_label": "Zcash Testnet", + "curve_name": "secp256k1", + "address_type": 7461, + "address_type_p2sh": 7354, + "maxfee_kb": 10000000, + "minfee_kb": 1000, + "signed_message_header": "Zcash Signed Message:\n", + "hash_genesis_block": "05a60a92d99d85997cce3b87616c089f6124d7342af37106edc76126334a2c38", + "xprv_magic": "04358394", + "xpub_magic": "043587cf", + "xpub_magic_segwit_p2sh": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "bip44": 1, + "segwit": false, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 546, + "blocktime_minutes": 2.5, + "address_prefix": "zcash:", + "min_address_length": 35, + "max_address_length": 95, + "bitcore": [] +} diff --git a/defs/coins/zcoin.json b/defs/coins/zcoin.json new file mode 100644 index 000000000..64def87b3 --- /dev/null +++ b/defs/coins/zcoin.json @@ -0,0 +1,37 @@ +{ + "maintainer": "Yura Pakhuchiy ", + "coin_name": "Zcoin", + "coin_shortcut": "XZC", + "coin_label": "Zcoin", + "curve_name": "secp256k1", + "address_type": 82, + "address_type_p2sh": 7, + "maxfee_kb": 1000000, + "minfee_kb": 0, + "signed_message_header": "Zcoin Signed Message:\n", + "hash_genesis_block": "4381deb85b1b2c9843c222944b616d997516dcbd6a964e1eaf0def0830695233", + "xprv_magic": "0488ade4", + "xpub_magic": "0488b21e", + "xpub_magic_segwit_p2sh": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "bip44": 136, + "segwit": false, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Low": 1, + "Economy": 10, + "Normal": 100, + "High": 200 + }, + "dust_limit": 546, + "blocktime_minutes": 10, + "address_prefix": "zcoin:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "https://insight.zcoin.io" + ] +} diff --git a/defs/coins/zcoin_testnet.json b/defs/coins/zcoin_testnet.json new file mode 100644 index 000000000..014a984e1 --- /dev/null +++ b/defs/coins/zcoin_testnet.json @@ -0,0 +1,35 @@ +{ + "maintainer": "Yura Pakhuchiy ", + "coin_name": "Zcoin Testnet", + "coin_shortcut": "tXZC", + "coin_label": "Zcoin Testnet", + "curve_name": "secp256k1", + "address_type": 65, + "address_type_p2sh": 178, + "maxfee_kb": 1000000, + "minfee_kb": 0, + "signed_message_header": "Zcoin Signed Message:\n", + "hash_genesis_block": "7ac038c193c2158c428c59f9ae0c02a07115141c6e9dc244ae96132e99b4e642", + "xprv_magic": "04358394", + "xpub_magic": "043587cf", + "xpub_magic_segwit_p2sh": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "bip44": 1, + "segwit": false, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Low": 1, + "Economy": 10, + "Normal": 100, + "High": 200 + }, + "dust_limit": 546, + "blocktime_minutes": 10, + "address_prefix": "testzcoin:", + "min_address_length": 27, + "max_address_length": 35, + "bitcore": [] +} From 4fff5fbb7f3b184677e93e6cce320774835dc888 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 23 Apr 2018 15:04:25 +0100 Subject: [PATCH 284/767] defs: add more altcoins --- defs/coins/crown.json | 33 +++++++++++++++++++++++++++++++++ defs/coins/flashcoin.json | 34 ++++++++++++++++++++++++++++++++++ defs/coins/myriad.json | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 101 insertions(+) create mode 100644 defs/coins/crown.json create mode 100644 defs/coins/flashcoin.json create mode 100644 defs/coins/myriad.json diff --git a/defs/coins/crown.json b/defs/coins/crown.json new file mode 100644 index 000000000..225c425f5 --- /dev/null +++ b/defs/coins/crown.json @@ -0,0 +1,33 @@ +{ + "coin_name": "Crown", + "coin_shortcut": "CRW", + "coin_label": "Crown", + "curve_name": "secp256k1", + "address_type": 0, + "address_type_p2sh": 28, + "maxfee_kb": 2000000, + "minfee_kb": 1000, + "signed_message_header": "Crown Signed Message:\n", + "hash_genesis_block": "0000000085370d5e122f64f4ab19c68614ff3df78c8d13cb814fd7e69a1dc6da", + "xprv_magic": "0488ade4", + "xpub_magic": "0488b21e", + "xpub_magic_segwit_p2sh": null, + "bech32_prefix": null, + "bip44": 72, + "segwit": false, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 546, + "blocktime_minutes": 1, + "address_prefix": "crown:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "https://crw-bitcore.crown.tech/", + "https://crw2-bitcore.crown.tech/" + ] +} diff --git a/defs/coins/flashcoin.json b/defs/coins/flashcoin.json new file mode 100644 index 000000000..0f032d107 --- /dev/null +++ b/defs/coins/flashcoin.json @@ -0,0 +1,34 @@ +{ + "coin_name": "Flashcoin", + "coin_shortcut": "FLASH", + "coin_label": "Flashcoin", + "curve_name": "secp256k1", + "address_type": 68, + "address_type_p2sh": 130, + "maxfee_kb": 4000000, + "minfee_kb": 1000, + "signed_message_header": "Flashcoin Signed Message:\n", + "hash_genesis_block": "aa0cf4f5ce0a3c550ce5674c1e808c417cf5077b4e95bda1d6fbaeaf4258972b", + "xprv_magic": "0488ade4", + "xpub_magic": "0488b21e", + "xpub_magic_segwit_p2sh": "049d7cb2", + "bech32_prefix": null, + "cashaddr_prefix": null, + "bip44": 120, + "segwit": true, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 0 + }, + "dust_limit": 10000, + "blocktime_minutes": 1, + "firmware": "stable", + "address_prefix": "flashcoin:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "https://explorer.flashcoin.io" + ] +} diff --git a/defs/coins/myriad.json b/defs/coins/myriad.json new file mode 100644 index 000000000..0cee3d94e --- /dev/null +++ b/defs/coins/myriad.json @@ -0,0 +1,34 @@ +{ + "coin_name": "Myriad", + "coin_shortcut": "XMY", + "coin_label": "Myriad", + "curve_name": "secp256k1", + "address_type": 50, + "address_type_p2sh": 9, + "maxfee_kb": 2000000, + "minfee_kb": 1000, + "signed_message_header": "Myriadcoin Signed Message:\n", + "hash_genesis_block": "00000ffde4c020b5938441a0ea3d314bf619eff0b38f32f78f7583cffa1ea485", + "xprv_magic": "0488ade4", + "xpub_magic": "0488b21e", + "xpub_magic_segwit_p2sh": null, + "bech32_prefix": null, + "bip44": 90, + "segwit": true, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Low": 10, + "Economy": 70, + "Normal": 140, + "High": 200 + }, + "dust_limit": 546, + "blocktime_minutes": 1, + "firmware": "stable", + "address_prefix": "myriadcoin:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [] +} From 9f1c77c1d73dae8783e2ee0cba52ecb3e2e16a76 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 23 Apr 2018 15:05:40 +0100 Subject: [PATCH 285/767] defs: fix last commit --- defs/coins/flashcoin.json | 1 - defs/coins/myriad.json | 1 - 2 files changed, 2 deletions(-) diff --git a/defs/coins/flashcoin.json b/defs/coins/flashcoin.json index 0f032d107..c0d0a2ad3 100644 --- a/defs/coins/flashcoin.json +++ b/defs/coins/flashcoin.json @@ -24,7 +24,6 @@ }, "dust_limit": 10000, "blocktime_minutes": 1, - "firmware": "stable", "address_prefix": "flashcoin:", "min_address_length": 27, "max_address_length": 34, diff --git a/defs/coins/myriad.json b/defs/coins/myriad.json index 0cee3d94e..d5cc06c28 100644 --- a/defs/coins/myriad.json +++ b/defs/coins/myriad.json @@ -26,7 +26,6 @@ }, "dust_limit": 546, "blocktime_minutes": 1, - "firmware": "stable", "address_prefix": "myriadcoin:", "min_address_length": 27, "max_address_length": 34, From 7dd3b37f66226f4e8d7aa20db9d21959d42b78d1 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 23 Apr 2018 16:57:59 +0100 Subject: [PATCH 286/767] defs: introduce combine script, add more fields to coin definitions --- defs/.gitignore | 1 + defs/coins/bcash.json | 6 ++++-- defs/coins/bcash_testnet.json | 6 ++++-- defs/coins/bgold.json | 6 ++++-- defs/coins/bitcoin.json | 6 ++++-- defs/coins/bitcoin_testnet.json | 6 ++++-- defs/coins/bprivate.json | 6 ++++-- defs/coins/crown.json | 6 +++++- defs/coins/dash.json | 6 ++++-- defs/coins/dash_testnet.json | 8 ++++++-- defs/coins/decred_testnet.json | 8 +++++--- defs/coins/denarius.json | 6 ++++-- defs/coins/digibyte.json | 6 ++++-- defs/coins/dogecoin.json | 6 ++++-- defs/coins/flashcoin.json | 5 ++++- defs/coins/fujicoin.json | 6 ++++-- defs/coins/groestlcoin.json | 7 +++++-- defs/coins/litecoin.json | 6 ++++-- defs/coins/litecoin_testnet.json | 7 +++++-- defs/coins/monacoin.json | 6 ++++-- defs/coins/myriad.json | 6 +++++- defs/coins/namecoin.json | 6 ++++-- defs/coins/terracoin.json | 7 +++++-- defs/coins/vertcoin.json | 6 ++++-- defs/coins/viacoin.json | 6 ++++-- defs/coins/zcash.json | 6 ++++-- defs/coins/zcash_testnet.json | 6 ++++-- defs/coins/zcoin.json | 6 ++++-- defs/coins/zcoin_testnet.json | 6 ++++-- 29 files changed, 121 insertions(+), 54 deletions(-) create mode 100644 defs/.gitignore diff --git a/defs/.gitignore b/defs/.gitignore new file mode 100644 index 000000000..e42d9910a --- /dev/null +++ b/defs/.gitignore @@ -0,0 +1 @@ +coins.json diff --git a/defs/coins/bcash.json b/defs/coins/bcash.json index 2db1b8d62..277cbc740 100644 --- a/defs/coins/bcash.json +++ b/defs/coins/bcash.json @@ -1,8 +1,10 @@ { - "maintainer": "Jochen Hoenicke ", "coin_name": "Bcash", "coin_shortcut": "BCH", "coin_label": "Bitcoin Cash", + "website": "", + "github": "", + "maintainer": "Jochen Hoenicke ", "curve_name": "secp256k1", "address_type": 0, "address_type_p2sh": 5, @@ -15,7 +17,7 @@ "xpub_magic_segwit_p2sh": null, "bech32_prefix": null, "cashaddr_prefix": "bitcoincash", - "bip44": 145, + "slip44": 145, "segwit": false, "decred": false, "forkid": 0, diff --git a/defs/coins/bcash_testnet.json b/defs/coins/bcash_testnet.json index 428bb892a..a896d9acc 100644 --- a/defs/coins/bcash_testnet.json +++ b/defs/coins/bcash_testnet.json @@ -1,8 +1,10 @@ { - "maintainer": "Jochen Hoenicke ", "coin_name": "Bcash Testnet", "coin_shortcut": "TBCH", "coin_label": "Bitcoin Cash Testnet", + "website": "", + "github": "", + "maintainer": "Jochen Hoenicke ", "curve_name": "secp256k1", "address_type": 111, "address_type_p2sh": 196, @@ -15,7 +17,7 @@ "xpub_magic_segwit_p2sh": null, "bech32_prefix": null, "cashaddr_prefix": "bchtest", - "bip44": 1, + "slip44": 1, "segwit": false, "decred": false, "forkid": 0, diff --git a/defs/coins/bgold.json b/defs/coins/bgold.json index cba5fe4b7..2e37f36ef 100644 --- a/defs/coins/bgold.json +++ b/defs/coins/bgold.json @@ -1,8 +1,10 @@ { - "maintainer": "Saleem Rashid ", "coin_name": "Bgold", "coin_shortcut": "BTG", "coin_label": "Bitcoin Gold", + "website": "", + "github": "", + "maintainer": "Saleem Rashid ", "curve_name": "secp256k1", "address_type": 38, "address_type_p2sh": 23, @@ -15,7 +17,7 @@ "xpub_magic_segwit_p2sh": "049d7cb2", "bech32_prefix": "btg", "cashaddr_prefix": null, - "bip44": 156, + "slip44": 156, "segwit": true, "decred": false, "forkid": 79, diff --git a/defs/coins/bitcoin.json b/defs/coins/bitcoin.json index b0967216d..e755e4498 100644 --- a/defs/coins/bitcoin.json +++ b/defs/coins/bitcoin.json @@ -1,8 +1,10 @@ { - "maintainer": "Pavol Rusnak ", "coin_name": "Bitcoin", "coin_shortcut": "BTC", "coin_label": "Bitcoin", + "website": "", + "github": "", + "maintainer": "Pavol Rusnak ", "curve_name": "secp256k1", "address_type": 0, "address_type_p2sh": 5, @@ -15,7 +17,7 @@ "xpub_magic_segwit_p2sh": "049d7cb2", "bech32_prefix": "bc", "cashaddr_prefix": null, - "bip44": 0, + "slip44": 0, "segwit": true, "decred": false, "forkid": null, diff --git a/defs/coins/bitcoin_testnet.json b/defs/coins/bitcoin_testnet.json index 0554d3a83..ffa0eb18e 100644 --- a/defs/coins/bitcoin_testnet.json +++ b/defs/coins/bitcoin_testnet.json @@ -1,8 +1,10 @@ { - "maintainer": "Pavol Rusnak ", "coin_name": "Testnet", "coin_shortcut": "TEST", "coin_label": "Testnet", + "website": "", + "github": "", + "maintainer": "Pavol Rusnak ", "curve_name": "secp256k1", "address_type": 111, "address_type_p2sh": 196, @@ -15,7 +17,7 @@ "xpub_magic_segwit_p2sh": "044a5262", "bech32_prefix": "tb", "cashaddr_prefix": null, - "bip44": 1, + "slip44": 1, "segwit": true, "decred": false, "forkid": null, diff --git a/defs/coins/bprivate.json b/defs/coins/bprivate.json index c54dae9e5..b89070ba9 100644 --- a/defs/coins/bprivate.json +++ b/defs/coins/bprivate.json @@ -1,8 +1,10 @@ { - "maintainer": "Chris Sulmone ", "coin_name": "Bprivate", "coin_shortcut": "BTCP", "coin_label": "Bitcoin Private", + "website": "", + "github": "", + "maintainer": "Chris Sulmone ", "curve_name": "secp256k1", "address_type": 4901, "address_type_p2sh": 5039, @@ -15,7 +17,7 @@ "xpub_magic_segwit_p2sh": null, "bech32_prefix": null, "cashaddr_prefix": null, - "bip44": 183, + "slip44": 183, "segwit": false, "decred": false, "forkid": 42, diff --git a/defs/coins/crown.json b/defs/coins/crown.json index 225c425f5..a6a37dedc 100644 --- a/defs/coins/crown.json +++ b/defs/coins/crown.json @@ -2,6 +2,9 @@ "coin_name": "Crown", "coin_shortcut": "CRW", "coin_label": "Crown", + "website": "", + "github": "", + "maintainer": "hypermist ", "curve_name": "secp256k1", "address_type": 0, "address_type_p2sh": 28, @@ -13,7 +16,8 @@ "xpub_magic": "0488b21e", "xpub_magic_segwit_p2sh": null, "bech32_prefix": null, - "bip44": 72, + "cashaddr_prefix": null, + "slip44": 72, "segwit": false, "decred": false, "forkid": null, diff --git a/defs/coins/dash.json b/defs/coins/dash.json index 925ed9772..200224a00 100644 --- a/defs/coins/dash.json +++ b/defs/coins/dash.json @@ -1,8 +1,10 @@ { - "maintainer": "Karel Bilek ", "coin_name": "Dash", "coin_shortcut": "DASH", "coin_label": "Dash", + "website": "", + "github": "", + "maintainer": "Karel Bilek ", "curve_name": "secp256k1", "address_type": 76, "address_type_p2sh": 16, @@ -15,7 +17,7 @@ "xpub_magic_segwit_p2sh": null, "bech32_prefix": null, "cashaddr_prefix": null, - "bip44": 5, + "slip44": 5, "segwit": false, "decred": false, "forkid": null, diff --git a/defs/coins/dash_testnet.json b/defs/coins/dash_testnet.json index db809303d..9d03022b1 100644 --- a/defs/coins/dash_testnet.json +++ b/defs/coins/dash_testnet.json @@ -1,8 +1,10 @@ { - "maintainer": "Karel Bilek ", "coin_name": "Dash Testnet", "coin_shortcut": "tDASH", "coin_label": "Dash Testnet", + "website": "", + "github": "", + "maintainer": "Karel Bilek ", "curve_name": "secp256k1", "address_type": 140, "address_type_p2sh": 19, @@ -14,8 +16,10 @@ "xpub_magic": "043587cf", "xpub_magic_segwit_p2sh": null, "bech32_prefix": null, - "bip44": 1, + "cashaddr_prefix": null, + "slip44": 1, "segwit": false, + "decred": false, "forkid": null, "force_bip143": false, "default_fee_b": { diff --git a/defs/coins/decred_testnet.json b/defs/coins/decred_testnet.json index f92623f7b..98e0630ce 100644 --- a/defs/coins/decred_testnet.json +++ b/defs/coins/decred_testnet.json @@ -1,8 +1,10 @@ { - "maintainer": "Saleem Rashid ", "coin_name": "Decred Testnet", "coin_shortcut": "TDCR", - "coin_label": "Testnet", + "coin_label": "Decred Testnet", + "website": "", + "github": "", + "maintainer": "Saleem Rashid ", "curve_name": "secp256k1_decred", "address_type": 3873, "address_type_p2sh": 3836, @@ -15,7 +17,7 @@ "xpub_magic_segwit_p2sh": null, "bech32_prefix": null, "cashaddr_prefix": null, - "bip44": 1, + "slip44": 1, "segwit": false, "decred": true, "forkid": null, diff --git a/defs/coins/denarius.json b/defs/coins/denarius.json index bc861abde..9c8b3ea47 100644 --- a/defs/coins/denarius.json +++ b/defs/coins/denarius.json @@ -1,8 +1,10 @@ { - "maintainer": "carsenk ", "coin_name": "Denarius", "coin_shortcut": "DNR", "coin_label": "Denarius", + "website": "", + "github": "", + "maintainer": "carsenk ", "curve_name": "secp256k1", "address_type": 30, "address_type_p2sh": 90, @@ -15,7 +17,7 @@ "xpub_magic_segwit_p2sh": null, "bech32_prefix": null, "cashaddr_prefix": null, - "bip44": 116, + "slip44": 116, "segwit": false, "decred": false, "forkid": null, diff --git a/defs/coins/digibyte.json b/defs/coins/digibyte.json index 4b3fb8cae..c13035ecf 100644 --- a/defs/coins/digibyte.json +++ b/defs/coins/digibyte.json @@ -1,8 +1,10 @@ { - "maintainer": "DigiByte ", "coin_name": "DigiByte", "coin_shortcut": "DGB", "coin_label": "DigiByte", + "website": "", + "github": "", + "maintainer": "DigiByte ", "curve_name": "secp256k1", "address_type": 30, "address_type_p2sh": 63, @@ -15,7 +17,7 @@ "xpub_magic_segwit_p2sh": "049d7cb2", "bech32_prefix": "dgb", "cashaddr_prefix": null, - "bip44": 20, + "slip44": 20, "segwit": true, "decred": false, "forkid": null, diff --git a/defs/coins/dogecoin.json b/defs/coins/dogecoin.json index cd96ce13e..f1b2d350c 100644 --- a/defs/coins/dogecoin.json +++ b/defs/coins/dogecoin.json @@ -1,8 +1,10 @@ { - "maintainer": "Karel Bilek ", "coin_name": "Dogecoin", "coin_shortcut": "DOGE", "coin_label": "Dogecoin", + "website": "", + "github": "", + "maintainer": "Karel Bilek ", "curve_name": "secp256k1", "address_type": 30, "address_type_p2sh": 22, @@ -15,7 +17,7 @@ "xpub_magic_segwit_p2sh": null, "bech32_prefix": null, "cashaddr_prefix": null, - "bip44": 3, + "slip44": 3, "segwit": false, "decred": false, "forkid": null, diff --git a/defs/coins/flashcoin.json b/defs/coins/flashcoin.json index c0d0a2ad3..44a5ce6bb 100644 --- a/defs/coins/flashcoin.json +++ b/defs/coins/flashcoin.json @@ -2,6 +2,9 @@ "coin_name": "Flashcoin", "coin_shortcut": "FLASH", "coin_label": "Flashcoin", + "website": "", + "github": "", + "maintainer": "flashbountyhunter ", "curve_name": "secp256k1", "address_type": 68, "address_type_p2sh": 130, @@ -14,7 +17,7 @@ "xpub_magic_segwit_p2sh": "049d7cb2", "bech32_prefix": null, "cashaddr_prefix": null, - "bip44": 120, + "slip44": 120, "segwit": true, "decred": false, "forkid": null, diff --git a/defs/coins/fujicoin.json b/defs/coins/fujicoin.json index 72562642a..6e4d12960 100644 --- a/defs/coins/fujicoin.json +++ b/defs/coins/fujicoin.json @@ -1,8 +1,10 @@ { - "maintainer": "motty ", "coin_name": "Fujicoin", "coin_shortcut": "FJC", "coin_label": "Fujicoin", + "website": "", + "github": "", + "maintainer": "motty ", "curve_name": "secp256k1", "address_type": 36, "address_type_p2sh": 16, @@ -15,7 +17,7 @@ "xpub_magic_segwit_p2sh": "049d7cb2", "bech32_prefix": "fc", "cashaddr_prefix": null, - "bip44": 75, + "slip44": 75, "segwit": true, "decred": false, "forkid": null, diff --git a/defs/coins/groestlcoin.json b/defs/coins/groestlcoin.json index 1813cd2c9..b8048dd19 100644 --- a/defs/coins/groestlcoin.json +++ b/defs/coins/groestlcoin.json @@ -1,8 +1,10 @@ { - "maintainer": "Yura Pakhuchiy ", "coin_name": "Groestlcoin", "coin_shortcut": "GRS", "coin_label": "Groestlcoin", + "website": "", + "github": "", + "maintainer": "Yura Pakhuchiy ", "curve_name": "secp256k1_groestl", "address_type": 36, "address_type_p2sh": 5, @@ -14,7 +16,8 @@ "xpub_magic": "0488b21e", "xpub_magic_segwit_p2sh": "049d7cb2", "bech32_prefix": "grs", - "bip44": 17, + "cashaddr_prefix": null, + "slip44": 17, "segwit": true, "decred": false, "forkid": null, diff --git a/defs/coins/litecoin.json b/defs/coins/litecoin.json index 0ac28f606..a6ec22b39 100644 --- a/defs/coins/litecoin.json +++ b/defs/coins/litecoin.json @@ -1,8 +1,10 @@ { - "maintainer": "Pavol Rusnak ", "coin_name": "Litecoin", "coin_shortcut": "LTC", "coin_label": "Litecoin", + "website": "", + "github": "", + "maintainer": "Pavol Rusnak ", "curve_name": "secp256k1", "address_type": 48, "address_type_p2sh": 50, @@ -15,7 +17,7 @@ "xpub_magic_segwit_p2sh": "01b26ef6", "bech32_prefix": "ltc", "cashaddr_prefix": null, - "bip44": 2, + "slip44": 2, "segwit": true, "decred": false, "forkid": null, diff --git a/defs/coins/litecoin_testnet.json b/defs/coins/litecoin_testnet.json index 697a7a462..18ff7e58d 100644 --- a/defs/coins/litecoin_testnet.json +++ b/defs/coins/litecoin_testnet.json @@ -1,8 +1,10 @@ { - "maintainer": "Pavol Rusnak ", "coin_name": "Litecoin Testnet", "coin_shortcut": "TLTC", "coin_label": "Litecoin Testnet", + "website": "", + "github": "", + "maintainer": "Pavol Rusnak ", "curve_name": "secp256k1", "address_type": 111, "address_type_p2sh": 58, @@ -14,7 +16,8 @@ "xpub_magic": "043587cf", "xpub_magic_segwit_p2sh": null, "bech32_prefix": "tltc", - "bip44": 1, + "cashaddr_prefix": null, + "slip44": 1, "segwit": true, "decred": false, "forkid": null, diff --git a/defs/coins/monacoin.json b/defs/coins/monacoin.json index a8a9547df..30b640c6a 100644 --- a/defs/coins/monacoin.json +++ b/defs/coins/monacoin.json @@ -1,8 +1,10 @@ { - "maintainer": "cryptcoin-junkey ", "coin_name": "Monacoin", "coin_shortcut": "MONA", "coin_label": "Monacoin", + "website": "", + "github": "", + "maintainer": "cryptcoin-junkey ", "curve_name": "secp256k1", "address_type": 50, "address_type_p2sh": 55, @@ -15,7 +17,7 @@ "xpub_magic_segwit_p2sh": "049d7cb2", "bech32_prefix": "mona", "cashaddr_prefix": null, - "bip44": 22, + "slip44": 22, "segwit": true, "decred": false, "forkid": null, diff --git a/defs/coins/myriad.json b/defs/coins/myriad.json index d5cc06c28..ede048de5 100644 --- a/defs/coins/myriad.json +++ b/defs/coins/myriad.json @@ -3,6 +3,9 @@ "coin_shortcut": "XMY", "coin_label": "Myriad", "curve_name": "secp256k1", + "website": "", + "github": "", + "maintainer": "Adam Hickerson ", "address_type": 50, "address_type_p2sh": 9, "maxfee_kb": 2000000, @@ -13,7 +16,8 @@ "xpub_magic": "0488b21e", "xpub_magic_segwit_p2sh": null, "bech32_prefix": null, - "bip44": 90, + "cashaddr_prefix": null, + "slip44": 90, "segwit": true, "decred": false, "forkid": null, diff --git a/defs/coins/namecoin.json b/defs/coins/namecoin.json index bff137422..5990ad295 100644 --- a/defs/coins/namecoin.json +++ b/defs/coins/namecoin.json @@ -1,8 +1,10 @@ { - "maintainer": "Pavol Rusnak ", "coin_name": "Namecoin", "coin_shortcut": "NMC", "coin_label": "Namecoin", + "website": "", + "github": "", + "maintainer": "Pavol Rusnak ", "curve_name": "secp256k1", "address_type": 52, "address_type_p2sh": 5, @@ -15,7 +17,7 @@ "xpub_magic_segwit_p2sh": null, "bech32_prefix": null, "cashaddr_prefix": null, - "bip44": 7, + "slip44": 7, "segwit": false, "decred": false, "forkid": null, diff --git a/defs/coins/terracoin.json b/defs/coins/terracoin.json index d4b9c6dff..adf68cf74 100644 --- a/defs/coins/terracoin.json +++ b/defs/coins/terracoin.json @@ -1,8 +1,10 @@ { - "maintainer": "Justin F. Hallett ", "coin_name": "Terracoin", "coin_shortcut": "TRC", "coin_label": "Terracoin", + "website": "", + "github": "", + "maintainer": "Justin F. Hallett ", "curve_name": "secp256k1", "address_type": 0, "address_type_p2sh": 5, @@ -14,7 +16,8 @@ "xpub_magic": "0488b21e", "xpub_magic_segwit_p2sh": null, "bech32_prefix": null, - "bip44": 0, + "cashaddr_prefix": null, + "slip44": 0, "segwit": false, "decred": false, "forkid": null, diff --git a/defs/coins/vertcoin.json b/defs/coins/vertcoin.json index 404290c1c..8bf5dac43 100644 --- a/defs/coins/vertcoin.json +++ b/defs/coins/vertcoin.json @@ -1,8 +1,10 @@ { - "maintainer": "Jochen Hoenicke ", "coin_name": "Vertcoin", "coin_shortcut": "VTC", "coin_label": "Vertcoin", + "website": "", + "github": "", + "maintainer": "Jochen Hoenicke ", "curve_name": "secp256k1", "address_type": 71, "address_type_p2sh": 5, @@ -15,7 +17,7 @@ "xpub_magic_segwit_p2sh": "049d7cb2", "bech32_prefix": "vtc", "cashaddr_prefix": null, - "bip44": 28, + "slip44": 28, "segwit": true, "decred": false, "forkid": null, diff --git a/defs/coins/viacoin.json b/defs/coins/viacoin.json index 615ad1b14..bb928403e 100644 --- a/defs/coins/viacoin.json +++ b/defs/coins/viacoin.json @@ -1,8 +1,10 @@ { - "maintainer": "romanornr ", "coin_name": "viacoin", "coin_shortcut": "VIA", "coin_label": "viacoin", + "website": "", + "github": "", + "maintainer": "romanornr ", "curve_name": "secp256k1", "address_type": 71, "address_type_p2sh": 33, @@ -15,7 +17,7 @@ "xpub_magic_segwit_p2sh": "049d7cb2", "bech32_prefix": "via", "cashaddr_prefix": null, - "bip44": 14, + "slip44": 14, "segwit": true, "decred": false, "forkid": null, diff --git a/defs/coins/zcash.json b/defs/coins/zcash.json index 73203f4bf..593807525 100644 --- a/defs/coins/zcash.json +++ b/defs/coins/zcash.json @@ -1,8 +1,10 @@ { - "maintainer": "Pavol Rusnak ", "coin_name": "Zcash", "coin_shortcut": "ZEC", "coin_label": "Zcash", + "website": "", + "github": "", + "maintainer": "Pavol Rusnak ", "curve_name": "secp256k1", "address_type": 7352, "address_type_p2sh": 7357, @@ -15,7 +17,7 @@ "xpub_magic_segwit_p2sh": null, "bech32_prefix": null, "cashaddr_prefix": null, - "bip44": 133, + "slip44": 133, "segwit": false, "decred": false, "forkid": null, diff --git a/defs/coins/zcash_testnet.json b/defs/coins/zcash_testnet.json index 9c12aed1f..1619f900f 100644 --- a/defs/coins/zcash_testnet.json +++ b/defs/coins/zcash_testnet.json @@ -1,8 +1,10 @@ { - "maintainer": "Pavol Rusnak ", "coin_name": "Zcash Testnet", "coin_shortcut": "TAZ", "coin_label": "Zcash Testnet", + "website": "", + "github": "", + "maintainer": "Pavol Rusnak ", "curve_name": "secp256k1", "address_type": 7461, "address_type_p2sh": 7354, @@ -15,7 +17,7 @@ "xpub_magic_segwit_p2sh": null, "bech32_prefix": null, "cashaddr_prefix": null, - "bip44": 1, + "slip44": 1, "segwit": false, "decred": false, "forkid": null, diff --git a/defs/coins/zcoin.json b/defs/coins/zcoin.json index 64def87b3..c1e628847 100644 --- a/defs/coins/zcoin.json +++ b/defs/coins/zcoin.json @@ -1,8 +1,10 @@ { - "maintainer": "Yura Pakhuchiy ", "coin_name": "Zcoin", "coin_shortcut": "XZC", "coin_label": "Zcoin", + "website": "", + "github": "", + "maintainer": "Yura Pakhuchiy ", "curve_name": "secp256k1", "address_type": 82, "address_type_p2sh": 7, @@ -15,7 +17,7 @@ "xpub_magic_segwit_p2sh": null, "bech32_prefix": null, "cashaddr_prefix": null, - "bip44": 136, + "slip44": 136, "segwit": false, "decred": false, "forkid": null, diff --git a/defs/coins/zcoin_testnet.json b/defs/coins/zcoin_testnet.json index 014a984e1..3629d0834 100644 --- a/defs/coins/zcoin_testnet.json +++ b/defs/coins/zcoin_testnet.json @@ -1,8 +1,10 @@ { - "maintainer": "Yura Pakhuchiy ", "coin_name": "Zcoin Testnet", "coin_shortcut": "tXZC", "coin_label": "Zcoin Testnet", + "website": "", + "github": "", + "maintainer": "Yura Pakhuchiy ", "curve_name": "secp256k1", "address_type": 65, "address_type_p2sh": 178, @@ -15,7 +17,7 @@ "xpub_magic_segwit_p2sh": null, "bech32_prefix": null, "cashaddr_prefix": null, - "bip44": 1, + "slip44": 1, "segwit": false, "decred": false, "forkid": null, From 71a38266caafee11bb17db82c0f0a36607b7d591 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 23 Apr 2018 21:15:58 +0100 Subject: [PATCH 287/767] defs: add combine script --- defs/coins/combine.py | 80 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100755 defs/coins/combine.py diff --git a/defs/coins/combine.py b/defs/coins/combine.py new file mode 100755 index 000000000..d883bbb55 --- /dev/null +++ b/defs/coins/combine.py @@ -0,0 +1,80 @@ +#!/usr/bin/env python3 + +import json +import glob +import re + + +def check_type(val, types, nullable=False, empty=False, regex=None): + # check nullable + if nullable and val is None: + return True + # check empty + try: + if not empty and len(val) == 0: + return False + except TypeError: + pass + # check regex + if regex is not None: + if types is not str: + return False + m = re.match(regex, val) + if not m or m.string != val: + return False + # check type + if isinstance(types, list): + return True in [isinstance(val, t) for t in types] + else: + return isinstance(val, types) + + +def validate_coin(coin): + assert check_type(coin['coin_name'], str) + assert check_type(coin['coin_shortcut'], str) + assert check_type(coin['coin_label'], str) + assert check_type(coin['website'], str, empty=True) + assert check_type(coin['github'], str, empty=True) + assert check_type(coin['maintainer'], str) + assert check_type(coin['curve_name'], str) + assert check_type(coin['address_type'], int) + assert check_type(coin['address_type_p2sh'], int) + assert coin['address_type'] != coin['address_type_p2sh'] + assert check_type(coin['maxfee_kb'], int) + assert check_type(coin['minfee_kb'], int) + assert coin['maxfee_kb'] > coin['minfee_kb'] + assert check_type(coin['hash_genesis_block'], str, regex=r'[0-9a-f]{64}') + assert check_type(coin['xprv_magic'], str, regex=r'[0-9a-f]{8}') + assert check_type(coin['xpub_magic'], str, regex=r'[0-9a-f]{8}') + assert check_type(coin['xpub_magic_segwit_p2sh'], str, regex=r'[0-9a-f]{8}', nullable=True) + assert check_type(coin['slip44'], int) + assert check_type(coin['segwit'], bool) + assert check_type(coin['decred'], bool) + assert check_type(coin['forkid'], int, nullable=True) + assert check_type(coin['force_bip143'], bool, nullable=True) + assert check_type(coin['default_fee_b'], dict) + assert check_type(coin['dust_limit'], int) + assert check_type(coin['blocktime_minutes'], [int, float]) + assert check_type(coin['signed_message_header'], str) + assert check_type(coin['min_address_length'], int) + assert check_type(coin['max_address_length'], int) + assert check_type(coin['bitcore'], list, empty=True) + assert check_type(coin['bech32_prefix'], str, nullable=True) + assert check_type(coin['cashaddr_prefix'], str, nullable=True) + + +def process_json(fn): + j = json.load(open(fn)) + validate_coin(j) + return j + + +coins = {} +for fn in glob.glob('*.json'): + c = process_json(fn) + n = c['coin_name'] + coins[n] = c + +json.dump(coins, open('../coins.json', 'w'), indent=4, sort_keys=True) + +print('OK') From d44f4f65b1b3bc129e5e06587eb50c8c1e770958 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 23 Apr 2018 22:02:44 +0100 Subject: [PATCH 288/767] defs: add more info to coin definitions --- defs/coins/bcash.json | 4 ++-- defs/coins/bcash_testnet.json | 4 ++-- defs/coins/bgold.json | 4 ++-- defs/coins/bitcoin.json | 4 ++-- defs/coins/bitcoin_testnet.json | 4 ++-- defs/coins/bprivate.json | 6 +++--- defs/coins/combine.py | 24 ++++++++++++++++++------ defs/coins/crown.json | 8 ++++---- defs/coins/dash.json | 4 ++-- defs/coins/dash_testnet.json | 4 ++-- defs/coins/decred_testnet.json | 4 ++-- defs/coins/denarius.json | 4 ++-- defs/coins/digibyte.json | 4 ++-- defs/coins/dogecoin.json | 4 ++-- defs/coins/flashcoin.json | 4 ++-- defs/coins/fujicoin.json | 6 +++--- defs/coins/groestlcoin.json | 6 +++--- defs/coins/litecoin.json | 4 ++-- defs/coins/litecoin_testnet.json | 4 ++-- defs/coins/monacoin.json | 4 ++-- defs/coins/myriad.json | 4 ++-- defs/coins/namecoin.json | 4 ++-- defs/coins/terracoin.json | 4 ++-- defs/coins/vertcoin.json | 4 ++-- defs/coins/viacoin.json | 4 ++-- defs/coins/zcash.json | 6 +++--- defs/coins/zcash_testnet.json | 4 ++-- defs/coins/zcoin.json | 4 ++-- defs/coins/zcoin_testnet.json | 4 ++-- 29 files changed, 80 insertions(+), 68 deletions(-) diff --git a/defs/coins/bcash.json b/defs/coins/bcash.json index 277cbc740..89fbcec8f 100644 --- a/defs/coins/bcash.json +++ b/defs/coins/bcash.json @@ -2,8 +2,8 @@ "coin_name": "Bcash", "coin_shortcut": "BCH", "coin_label": "Bitcoin Cash", - "website": "", - "github": "", + "website": "https://www.bitcoincash.org", + "github": "https://github.com/Bitcoin-ABC/bitcoin-abc", "maintainer": "Jochen Hoenicke ", "curve_name": "secp256k1", "address_type": 0, diff --git a/defs/coins/bcash_testnet.json b/defs/coins/bcash_testnet.json index a896d9acc..a31b3caca 100644 --- a/defs/coins/bcash_testnet.json +++ b/defs/coins/bcash_testnet.json @@ -2,8 +2,8 @@ "coin_name": "Bcash Testnet", "coin_shortcut": "TBCH", "coin_label": "Bitcoin Cash Testnet", - "website": "", - "github": "", + "website": "https://www.bitcoincash.org", + "github": "https://github.com/Bitcoin-ABC/bitcoin-abc", "maintainer": "Jochen Hoenicke ", "curve_name": "secp256k1", "address_type": 111, diff --git a/defs/coins/bgold.json b/defs/coins/bgold.json index 2e37f36ef..c70f45142 100644 --- a/defs/coins/bgold.json +++ b/defs/coins/bgold.json @@ -2,8 +2,8 @@ "coin_name": "Bgold", "coin_shortcut": "BTG", "coin_label": "Bitcoin Gold", - "website": "", - "github": "", + "website": "https://bitcoingold.org", + "github": "https://github.com/BTCGPU/BTCGPU", "maintainer": "Saleem Rashid ", "curve_name": "secp256k1", "address_type": 38, diff --git a/defs/coins/bitcoin.json b/defs/coins/bitcoin.json index e755e4498..312e2f4d8 100644 --- a/defs/coins/bitcoin.json +++ b/defs/coins/bitcoin.json @@ -2,8 +2,8 @@ "coin_name": "Bitcoin", "coin_shortcut": "BTC", "coin_label": "Bitcoin", - "website": "", - "github": "", + "website": "https://bitcoin.org", + "github": "https://github.com/bitcoin/bitcoin", "maintainer": "Pavol Rusnak ", "curve_name": "secp256k1", "address_type": 0, diff --git a/defs/coins/bitcoin_testnet.json b/defs/coins/bitcoin_testnet.json index ffa0eb18e..cc0068f75 100644 --- a/defs/coins/bitcoin_testnet.json +++ b/defs/coins/bitcoin_testnet.json @@ -2,8 +2,8 @@ "coin_name": "Testnet", "coin_shortcut": "TEST", "coin_label": "Testnet", - "website": "", - "github": "", + "website": "https://bitcoin.org", + "github": "https://github.com/bitcoin/bitcoin", "maintainer": "Pavol Rusnak ", "curve_name": "secp256k1", "address_type": 111, diff --git a/defs/coins/bprivate.json b/defs/coins/bprivate.json index b89070ba9..d1595f328 100644 --- a/defs/coins/bprivate.json +++ b/defs/coins/bprivate.json @@ -2,8 +2,8 @@ "coin_name": "Bprivate", "coin_shortcut": "BTCP", "coin_label": "Bitcoin Private", - "website": "", - "github": "", + "website": "https://btcprivate.org", + "github": "https://github.com/BTCPrivate/BitcoinPrivate", "maintainer": "Chris Sulmone ", "curve_name": "secp256k1", "address_type": 4901, @@ -31,6 +31,6 @@ "min_address_length": 35, "max_address_length": 95, "bitcore": [ - "https://explorer.btcprivate.org/" + "https://explorer.btcprivate.org" ] } diff --git a/defs/coins/combine.py b/defs/coins/combine.py index d883bbb55..8b133ee41 100755 --- a/defs/coins/combine.py +++ b/defs/coins/combine.py @@ -5,7 +5,7 @@ import glob import re -def check_type(val, types, nullable=False, empty=False, regex=None): +def check_type(val, types, nullable=False, empty=False, regex=None, choice=None): # check nullable if nullable and val is None: return True @@ -22,6 +22,10 @@ def check_type(val, types, nullable=False, empty=False, regex=None): m = re.match(regex, val) if not m or m.string != val: return False + # check choice + if choice is not None: + if val not in choice: + return False # check type if isinstance(types, list): return True in [isinstance(val, t) for t in types] @@ -33,20 +37,25 @@ def validate_coin(coin): assert check_type(coin['coin_name'], str) assert check_type(coin['coin_shortcut'], str) assert check_type(coin['coin_label'], str) - assert check_type(coin['website'], str, empty=True) - assert check_type(coin['github'], str, empty=True) + assert check_type(coin['website'], str) + assert check_type(coin['github'], str) + assert not coin['website'].endswith('/') + assert not coin['github'].endswith('/') assert check_type(coin['maintainer'], str) - assert check_type(coin['curve_name'], str) + assert check_type(coin['curve_name'], str, choice=['secp256k1', 'secp256k1_decred', 'secp256k1_groestl']) assert check_type(coin['address_type'], int) assert check_type(coin['address_type_p2sh'], int) assert coin['address_type'] != coin['address_type_p2sh'] assert check_type(coin['maxfee_kb'], int) assert check_type(coin['minfee_kb'], int) - assert coin['maxfee_kb'] > coin['minfee_kb'] + assert coin['maxfee_kb'] >= coin['minfee_kb'] assert check_type(coin['hash_genesis_block'], str, regex=r'[0-9a-f]{64}') assert check_type(coin['xprv_magic'], str, regex=r'[0-9a-f]{8}') assert check_type(coin['xpub_magic'], str, regex=r'[0-9a-f]{8}') assert check_type(coin['xpub_magic_segwit_p2sh'], str, regex=r'[0-9a-f]{8}', nullable=True) + assert coin['xprv_magic'] != coin['xpub_magic'] + assert coin['xprv_magic'] != coin['xpub_magic_segwit_p2sh'] + assert coin['xpub_magic'] != coin['xpub_magic_segwit_p2sh'] assert check_type(coin['slip44'], int) assert check_type(coin['segwit'], bool) assert check_type(coin['decred'], bool) @@ -58,9 +67,12 @@ def validate_coin(coin): assert check_type(coin['signed_message_header'], str) assert check_type(coin['min_address_length'], int) assert check_type(coin['max_address_length'], int) - assert check_type(coin['bitcore'], list, empty=True) + assert coin['max_address_length'] >= coin['min_address_length'] assert check_type(coin['bech32_prefix'], str, nullable=True) assert check_type(coin['cashaddr_prefix'], str, nullable=True) + assert check_type(coin['bitcore'], list, empty=True) + for bc in coin['bitcore']: + assert not bc.endswith('/') def process_json(fn): diff --git a/defs/coins/crown.json b/defs/coins/crown.json index a6a37dedc..ec5ba08a7 100644 --- a/defs/coins/crown.json +++ b/defs/coins/crown.json @@ -2,8 +2,8 @@ "coin_name": "Crown", "coin_shortcut": "CRW", "coin_label": "Crown", - "website": "", - "github": "", + "website": "https://crown.tech", + "github": "https://github.com/Crowndev/crowncoin", "maintainer": "hypermist ", "curve_name": "secp256k1", "address_type": 0, @@ -31,7 +31,7 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [ - "https://crw-bitcore.crown.tech/", - "https://crw2-bitcore.crown.tech/" + "https://crw-bitcore.crown.tech", + "https://crw2-bitcore.crown.tech" ] } diff --git a/defs/coins/dash.json b/defs/coins/dash.json index 200224a00..c90396d32 100644 --- a/defs/coins/dash.json +++ b/defs/coins/dash.json @@ -2,8 +2,8 @@ "coin_name": "Dash", "coin_shortcut": "DASH", "coin_label": "Dash", - "website": "", - "github": "", + "website": "https://www.dash.org", + "github": "https://github.com/dashpay/dash", "maintainer": "Karel Bilek ", "curve_name": "secp256k1", "address_type": 76, diff --git a/defs/coins/dash_testnet.json b/defs/coins/dash_testnet.json index 9d03022b1..c76ba7c63 100644 --- a/defs/coins/dash_testnet.json +++ b/defs/coins/dash_testnet.json @@ -2,8 +2,8 @@ "coin_name": "Dash Testnet", "coin_shortcut": "tDASH", "coin_label": "Dash Testnet", - "website": "", - "github": "", + "website": "https://www.dash.org", + "github": "https://github.com/dashpay/dash", "maintainer": "Karel Bilek ", "curve_name": "secp256k1", "address_type": 140, diff --git a/defs/coins/decred_testnet.json b/defs/coins/decred_testnet.json index 98e0630ce..f8ac4d717 100644 --- a/defs/coins/decred_testnet.json +++ b/defs/coins/decred_testnet.json @@ -2,8 +2,8 @@ "coin_name": "Decred Testnet", "coin_shortcut": "TDCR", "coin_label": "Decred Testnet", - "website": "", - "github": "", + "website": "https://www.decred.org", + "github": "https://github.com/decred/dcrd", "maintainer": "Saleem Rashid ", "curve_name": "secp256k1_decred", "address_type": 3873, diff --git a/defs/coins/denarius.json b/defs/coins/denarius.json index 9c8b3ea47..ffcf1836c 100644 --- a/defs/coins/denarius.json +++ b/defs/coins/denarius.json @@ -2,8 +2,8 @@ "coin_name": "Denarius", "coin_shortcut": "DNR", "coin_label": "Denarius", - "website": "", - "github": "", + "website": "https://denarius.io", + "github": "https://github.com/carsenk/denarius", "maintainer": "carsenk ", "curve_name": "secp256k1", "address_type": 30, diff --git a/defs/coins/digibyte.json b/defs/coins/digibyte.json index c13035ecf..f73a5e6c4 100644 --- a/defs/coins/digibyte.json +++ b/defs/coins/digibyte.json @@ -2,8 +2,8 @@ "coin_name": "DigiByte", "coin_shortcut": "DGB", "coin_label": "DigiByte", - "website": "", - "github": "", + "website": "https://digibyte.io", + "github": "https://github.com/digibyte/digibyte", "maintainer": "DigiByte ", "curve_name": "secp256k1", "address_type": 30, diff --git a/defs/coins/dogecoin.json b/defs/coins/dogecoin.json index f1b2d350c..b1bcad658 100644 --- a/defs/coins/dogecoin.json +++ b/defs/coins/dogecoin.json @@ -2,8 +2,8 @@ "coin_name": "Dogecoin", "coin_shortcut": "DOGE", "coin_label": "Dogecoin", - "website": "", - "github": "", + "website": "http://dogecoin.com", + "github": "https://github.com/dogecoin/dogecoin", "maintainer": "Karel Bilek ", "curve_name": "secp256k1", "address_type": 30, diff --git a/defs/coins/flashcoin.json b/defs/coins/flashcoin.json index 44a5ce6bb..cea9997ac 100644 --- a/defs/coins/flashcoin.json +++ b/defs/coins/flashcoin.json @@ -2,8 +2,8 @@ "coin_name": "Flashcoin", "coin_shortcut": "FLASH", "coin_label": "Flashcoin", - "website": "", - "github": "", + "website": "https://www.flashcoin.io", + "github": "https://github.com/flash-coin", "maintainer": "flashbountyhunter ", "curve_name": "secp256k1", "address_type": 68, diff --git a/defs/coins/fujicoin.json b/defs/coins/fujicoin.json index 6e4d12960..4af581887 100644 --- a/defs/coins/fujicoin.json +++ b/defs/coins/fujicoin.json @@ -2,8 +2,8 @@ "coin_name": "Fujicoin", "coin_shortcut": "FJC", "coin_label": "Fujicoin", - "website": "", - "github": "", + "website": "http://fujicoin.org", + "github": "https://github.com/fujicoin/fujicoin", "maintainer": "motty ", "curve_name": "secp256k1", "address_type": 36, @@ -34,6 +34,6 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [ - "http://explorer.fujicoin.org/" + "http://explorer.fujicoin.org" ] } diff --git a/defs/coins/groestlcoin.json b/defs/coins/groestlcoin.json index b8048dd19..74e5a6906 100644 --- a/defs/coins/groestlcoin.json +++ b/defs/coins/groestlcoin.json @@ -2,8 +2,8 @@ "coin_name": "Groestlcoin", "coin_shortcut": "GRS", "coin_label": "Groestlcoin", - "website": "", - "github": "", + "website": "https://www.groestlcoin.org", + "github": "https://github.com/Groestlcoin/groestlcoin", "maintainer": "Yura Pakhuchiy ", "curve_name": "secp256k1_groestl", "address_type": 36, @@ -31,6 +31,6 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [ - "https://groestlsight.groestlcoin.org/" + "https://groestlsight.groestlcoin.org" ] } diff --git a/defs/coins/litecoin.json b/defs/coins/litecoin.json index a6ec22b39..bb8d805aa 100644 --- a/defs/coins/litecoin.json +++ b/defs/coins/litecoin.json @@ -2,8 +2,8 @@ "coin_name": "Litecoin", "coin_shortcut": "LTC", "coin_label": "Litecoin", - "website": "", - "github": "", + "website": "https://litecoin.org", + "github": "https://github.com/litecoin-project/litecoin", "maintainer": "Pavol Rusnak ", "curve_name": "secp256k1", "address_type": 48, diff --git a/defs/coins/litecoin_testnet.json b/defs/coins/litecoin_testnet.json index 18ff7e58d..b1936454d 100644 --- a/defs/coins/litecoin_testnet.json +++ b/defs/coins/litecoin_testnet.json @@ -2,8 +2,8 @@ "coin_name": "Litecoin Testnet", "coin_shortcut": "TLTC", "coin_label": "Litecoin Testnet", - "website": "", - "github": "", + "website": "https://litecoin.org", + "github": "https://github.com/litecoin-project/litecoin", "maintainer": "Pavol Rusnak ", "curve_name": "secp256k1", "address_type": 111, diff --git a/defs/coins/monacoin.json b/defs/coins/monacoin.json index 30b640c6a..baf17ae23 100644 --- a/defs/coins/monacoin.json +++ b/defs/coins/monacoin.json @@ -2,8 +2,8 @@ "coin_name": "Monacoin", "coin_shortcut": "MONA", "coin_label": "Monacoin", - "website": "", - "github": "", + "website": "https://monacoin.org", + "github": "https://github.com/monacoinproject/monacoin", "maintainer": "cryptcoin-junkey ", "curve_name": "secp256k1", "address_type": 50, diff --git a/defs/coins/myriad.json b/defs/coins/myriad.json index ede048de5..c5e1c366b 100644 --- a/defs/coins/myriad.json +++ b/defs/coins/myriad.json @@ -3,8 +3,8 @@ "coin_shortcut": "XMY", "coin_label": "Myriad", "curve_name": "secp256k1", - "website": "", - "github": "", + "website": "https://www.myriadcoin.org", + "github": "https://github.com/myriadcoin/myriadcoin", "maintainer": "Adam Hickerson ", "address_type": 50, "address_type_p2sh": 9, diff --git a/defs/coins/namecoin.json b/defs/coins/namecoin.json index 5990ad295..28b425eed 100644 --- a/defs/coins/namecoin.json +++ b/defs/coins/namecoin.json @@ -2,8 +2,8 @@ "coin_name": "Namecoin", "coin_shortcut": "NMC", "coin_label": "Namecoin", - "website": "", - "github": "", + "website": "https://namecoin.org", + "github": "https://github.com/namecoin/namecoin-core", "maintainer": "Pavol Rusnak ", "curve_name": "secp256k1", "address_type": 52, diff --git a/defs/coins/terracoin.json b/defs/coins/terracoin.json index adf68cf74..5eeb56215 100644 --- a/defs/coins/terracoin.json +++ b/defs/coins/terracoin.json @@ -2,8 +2,8 @@ "coin_name": "Terracoin", "coin_shortcut": "TRC", "coin_label": "Terracoin", - "website": "", - "github": "", + "website": "https://terracoin.io", + "github": "https://github.com/terracoin/terracoin", "maintainer": "Justin F. Hallett ", "curve_name": "secp256k1", "address_type": 0, diff --git a/defs/coins/vertcoin.json b/defs/coins/vertcoin.json index 8bf5dac43..97777a34e 100644 --- a/defs/coins/vertcoin.json +++ b/defs/coins/vertcoin.json @@ -2,8 +2,8 @@ "coin_name": "Vertcoin", "coin_shortcut": "VTC", "coin_label": "Vertcoin", - "website": "", - "github": "", + "website": "https://vertcoin.org", + "github": "https://github.com/vertcoin-project/vertcoin-core", "maintainer": "Jochen Hoenicke ", "curve_name": "secp256k1", "address_type": 71, diff --git a/defs/coins/viacoin.json b/defs/coins/viacoin.json index bb928403e..786cb8214 100644 --- a/defs/coins/viacoin.json +++ b/defs/coins/viacoin.json @@ -2,8 +2,8 @@ "coin_name": "viacoin", "coin_shortcut": "VIA", "coin_label": "viacoin", - "website": "", - "github": "", + "website": "https://viacoin.org", + "github": "https://github.com/viacoin", "maintainer": "romanornr ", "curve_name": "secp256k1", "address_type": 71, diff --git a/defs/coins/zcash.json b/defs/coins/zcash.json index 593807525..9d94a224d 100644 --- a/defs/coins/zcash.json +++ b/defs/coins/zcash.json @@ -2,8 +2,8 @@ "coin_name": "Zcash", "coin_shortcut": "ZEC", "coin_label": "Zcash", - "website": "", - "github": "", + "website": "https://z.cash", + "github": "https://github.com/zcash/zcash", "maintainer": "Pavol Rusnak ", "curve_name": "secp256k1", "address_type": 7352, @@ -31,6 +31,6 @@ "min_address_length": 35, "max_address_length": 95, "bitcore": [ - "https://zec-bitcore1.trezor.io/" + "https://zec-bitcore1.trezor.io" ] } diff --git a/defs/coins/zcash_testnet.json b/defs/coins/zcash_testnet.json index 1619f900f..47fc22a62 100644 --- a/defs/coins/zcash_testnet.json +++ b/defs/coins/zcash_testnet.json @@ -2,8 +2,8 @@ "coin_name": "Zcash Testnet", "coin_shortcut": "TAZ", "coin_label": "Zcash Testnet", - "website": "", - "github": "", + "website": "https://z.cash", + "github": "https://github.com/zcash/zcash", "maintainer": "Pavol Rusnak ", "curve_name": "secp256k1", "address_type": 7461, diff --git a/defs/coins/zcoin.json b/defs/coins/zcoin.json index c1e628847..0d3d9cedf 100644 --- a/defs/coins/zcoin.json +++ b/defs/coins/zcoin.json @@ -2,8 +2,8 @@ "coin_name": "Zcoin", "coin_shortcut": "XZC", "coin_label": "Zcoin", - "website": "", - "github": "", + "website": "https://zcoin.io", + "github": "https://github.com/zcoinofficial/zcoin", "maintainer": "Yura Pakhuchiy ", "curve_name": "secp256k1", "address_type": 82, diff --git a/defs/coins/zcoin_testnet.json b/defs/coins/zcoin_testnet.json index 3629d0834..1f5465fc5 100644 --- a/defs/coins/zcoin_testnet.json +++ b/defs/coins/zcoin_testnet.json @@ -2,8 +2,8 @@ "coin_name": "Zcoin Testnet", "coin_shortcut": "tXZC", "coin_label": "Zcoin Testnet", - "website": "", - "github": "", + "website": "https://zcoin.io", + "github": "https://github.com/zcoinofficial/zcoin", "maintainer": "Yura Pakhuchiy ", "curve_name": "secp256k1", "address_type": 65, From e0da01371b0dfaf345f784e7cfa3bde47c2c011d Mon Sep 17 00:00:00 2001 From: Jon D Date: Tue, 24 Apr 2018 15:11:06 +0200 Subject: [PATCH 289/767] Add Bitcore (BTX) support (#98) --- defs/coins/bitcore.json | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 defs/coins/bitcore.json diff --git a/defs/coins/bitcore.json b/defs/coins/bitcore.json new file mode 100644 index 000000000..1be56fab1 --- /dev/null +++ b/defs/coins/bitcore.json @@ -0,0 +1,36 @@ +{ + "coin_name": "Bitcore", + "coin_shortcut": "BTX", + "coin_label": "Bitcore", + "website": "https://bitcore.cc", + "github": "https://github.com/LIMXTEC/BitCore", + "maintainer": "limxdev ", + "curve_name": "secp256k1", + "address_type": 0, + "address_type_p2sh": 5, + "maxfee_kb": 2000000, + "minfee_kb": 1000, + "signed_message_header": "Bitcore Signed Message:\n", + "hash_genesis_block": "604148281e5c4b7f2487e5d03cd60d8e6f69411d613f6448034508cea52e9574", + "xprv_magic": "0488ade4", + "xpub_magic": "0488b21e", + "xpub_magic_segwit_p2sh": "049d7cb2", + "bech32_prefix": "bc", + "cashaddr_prefix": null, + "slip44": 0, + "segwit": true, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Low": 10, + }, + "dust_limit": 546, + "blocktime_minutes": 2.5, + "address_prefix": "bitcore:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "https://insight.bitcore.cc" + ] +} From 31fbb2b0a3e0213290f4691f3ae9eac51da6daa4 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 24 Apr 2018 15:03:40 +0100 Subject: [PATCH 290/767] defs: update coin definitions --- defs/coins/bcash.json | 2 +- defs/coins/bcash_testnet.json | 2 +- defs/coins/bgold.json | 2 +- defs/coins/bitcoin.json | 2 +- defs/coins/bitcoin_testnet.json | 2 +- defs/coins/bprivate.json | 2 +- defs/coins/combine.py | 31 +++++++++++++++---------------- defs/coins/crown.json | 2 +- defs/coins/dash.json | 2 +- defs/coins/dash_testnet.json | 2 +- defs/coins/decred_testnet.json | 2 +- defs/coins/denarius.json | 2 +- defs/coins/digibyte.json | 2 +- defs/coins/dogecoin.json | 2 +- defs/coins/flashcoin.json | 2 +- defs/coins/fujicoin.json | 2 +- defs/coins/groestlcoin.json | 2 +- defs/coins/litecoin.json | 2 +- defs/coins/litecoin_testnet.json | 2 +- defs/coins/monacoin.json | 2 +- defs/coins/myriad.json | 2 +- defs/coins/namecoin.json | 2 +- defs/coins/terracoin.json | 2 +- defs/coins/vertcoin.json | 2 +- defs/coins/viacoin.json | 6 +++--- defs/coins/zcash.json | 2 +- defs/coins/zcash_testnet.json | 2 +- defs/coins/zcoin.json | 2 +- defs/coins/zcoin_testnet.json | 2 +- 29 files changed, 45 insertions(+), 46 deletions(-) diff --git a/defs/coins/bcash.json b/defs/coins/bcash.json index 89fbcec8f..c72fed992 100644 --- a/defs/coins/bcash.json +++ b/defs/coins/bcash.json @@ -29,7 +29,7 @@ "High": 200 }, "dust_limit": 546, - "blocktime_minutes": 10, + "blocktime_seconds": 600, "address_prefix": "bitcoincash:", "min_address_length": 27, "max_address_length": 34, diff --git a/defs/coins/bcash_testnet.json b/defs/coins/bcash_testnet.json index a31b3caca..219ed1b3d 100644 --- a/defs/coins/bcash_testnet.json +++ b/defs/coins/bcash_testnet.json @@ -26,7 +26,7 @@ "Normal": 10 }, "dust_limit": 546, - "blocktime_minutes": 10, + "blocktime_seconds": 600, "address_prefix": "bitcoincash:", "min_address_length": 27, "max_address_length": 34, diff --git a/defs/coins/bgold.json b/defs/coins/bgold.json index c70f45142..233173c6c 100644 --- a/defs/coins/bgold.json +++ b/defs/coins/bgold.json @@ -29,7 +29,7 @@ "High": 200 }, "dust_limit": 546, - "blocktime_minutes": 10, + "blocktime_seconds": 600, "address_prefix": "bitcoingold:", "min_address_length": 27, "max_address_length": 34, diff --git a/defs/coins/bitcoin.json b/defs/coins/bitcoin.json index 312e2f4d8..bcae7be88 100644 --- a/defs/coins/bitcoin.json +++ b/defs/coins/bitcoin.json @@ -29,7 +29,7 @@ "High": 200 }, "dust_limit": 546, - "blocktime_minutes": 10, + "blocktime_seconds": 600, "address_prefix": "bitcoin:", "min_address_length": 27, "max_address_length": 34, diff --git a/defs/coins/bitcoin_testnet.json b/defs/coins/bitcoin_testnet.json index cc0068f75..bd31b6c20 100644 --- a/defs/coins/bitcoin_testnet.json +++ b/defs/coins/bitcoin_testnet.json @@ -26,7 +26,7 @@ "Normal": 10 }, "dust_limit": 546, - "blocktime_minutes": 10, + "blocktime_seconds": 600, "address_prefix": "bitcoin:", "min_address_length": 27, "max_address_length": 34, diff --git a/defs/coins/bprivate.json b/defs/coins/bprivate.json index d1595f328..dbe2d3a34 100644 --- a/defs/coins/bprivate.json +++ b/defs/coins/bprivate.json @@ -26,7 +26,7 @@ "Normal": 10 }, "dust_limit": 546, - "blocktime_minutes": 2.5, + "blocktime_seconds": 150, "address_prefix": "bitcoinprivate:", "min_address_length": 35, "max_address_length": 95, diff --git a/defs/coins/combine.py b/defs/coins/combine.py index 8b133ee41..8b483ce2e 100755 --- a/defs/coins/combine.py +++ b/defs/coins/combine.py @@ -20,7 +20,7 @@ def check_type(val, types, nullable=False, empty=False, regex=None, choice=None) if types is not str: return False m = re.match(regex, val) - if not m or m.string != val: + if not m: return False # check choice if choice is not None: @@ -34,13 +34,11 @@ def check_type(val, types, nullable=False, empty=False, regex=None, choice=None) def validate_coin(coin): - assert check_type(coin['coin_name'], str) - assert check_type(coin['coin_shortcut'], str) - assert check_type(coin['coin_label'], str) - assert check_type(coin['website'], str) - assert check_type(coin['github'], str) - assert not coin['website'].endswith('/') - assert not coin['github'].endswith('/') + assert check_type(coin['coin_name'], str, regex=r'^[A-Z]') + assert check_type(coin['coin_shortcut'], str, regex=r'^[A-Zt][A-Z][A-Z]+$') + assert check_type(coin['coin_label'], str, regex=r'^[A-Z]') + assert check_type(coin['website'], str, regex=r'^http.*[^/]$') + assert check_type(coin['github'], str, regex=r'^https://github.com/.*[^/]$') assert check_type(coin['maintainer'], str) assert check_type(coin['curve_name'], str, choice=['secp256k1', 'secp256k1_decred', 'secp256k1_groestl']) assert check_type(coin['address_type'], int) @@ -49,10 +47,10 @@ def validate_coin(coin): assert check_type(coin['maxfee_kb'], int) assert check_type(coin['minfee_kb'], int) assert coin['maxfee_kb'] >= coin['minfee_kb'] - assert check_type(coin['hash_genesis_block'], str, regex=r'[0-9a-f]{64}') - assert check_type(coin['xprv_magic'], str, regex=r'[0-9a-f]{8}') - assert check_type(coin['xpub_magic'], str, regex=r'[0-9a-f]{8}') - assert check_type(coin['xpub_magic_segwit_p2sh'], str, regex=r'[0-9a-f]{8}', nullable=True) + assert check_type(coin['hash_genesis_block'], str, regex=r'^[0-9a-f]{64}$') + assert check_type(coin['xprv_magic'], str, regex=r'^[0-9a-f]{8}$') + assert check_type(coin['xpub_magic'], str, regex=r'^[0-9a-f]{8}$') + assert check_type(coin['xpub_magic_segwit_p2sh'], str, regex=r'^[0-9a-f]{8}$', nullable=True) assert coin['xprv_magic'] != coin['xpub_magic'] assert coin['xprv_magic'] != coin['xpub_magic_segwit_p2sh'] assert coin['xpub_magic'] != coin['xpub_magic_segwit_p2sh'] @@ -60,11 +58,12 @@ def validate_coin(coin): assert check_type(coin['segwit'], bool) assert check_type(coin['decred'], bool) assert check_type(coin['forkid'], int, nullable=True) - assert check_type(coin['force_bip143'], bool, nullable=True) + assert check_type(coin['force_bip143'], bool) assert check_type(coin['default_fee_b'], dict) assert check_type(coin['dust_limit'], int) - assert check_type(coin['blocktime_minutes'], [int, float]) + assert check_type(coin['blocktime_seconds'], int) assert check_type(coin['signed_message_header'], str) + assert check_type(coin['address_prefix'], str, regex=r'^.*:$') assert check_type(coin['min_address_length'], int) assert check_type(coin['max_address_length'], int) assert coin['max_address_length'] >= coin['min_address_length'] @@ -76,8 +75,10 @@ def validate_coin(coin): def process_json(fn): + print(fn, end=' ... ') j = json.load(open(fn)) validate_coin(j) + print('OK') return j @@ -88,5 +89,3 @@ for fn in glob.glob('*.json'): coins[n] = c json.dump(coins, open('../coins.json', 'w'), indent=4, sort_keys=True) - -print('OK') diff --git a/defs/coins/crown.json b/defs/coins/crown.json index ec5ba08a7..6c1ab6430 100644 --- a/defs/coins/crown.json +++ b/defs/coins/crown.json @@ -26,7 +26,7 @@ "Normal": 10 }, "dust_limit": 546, - "blocktime_minutes": 1, + "blocktime_seconds": 60, "address_prefix": "crown:", "min_address_length": 27, "max_address_length": 34, diff --git a/defs/coins/dash.json b/defs/coins/dash.json index c90396d32..be568f587 100644 --- a/defs/coins/dash.json +++ b/defs/coins/dash.json @@ -26,7 +26,7 @@ "Normal": 10 }, "dust_limit": 5460, - "blocktime_minutes": 2.5, + "blocktime_seconds": 150, "address_prefix": "dash:", "min_address_length": 27, "max_address_length": 34, diff --git a/defs/coins/dash_testnet.json b/defs/coins/dash_testnet.json index c76ba7c63..3bd3f55ed 100644 --- a/defs/coins/dash_testnet.json +++ b/defs/coins/dash_testnet.json @@ -26,7 +26,7 @@ "Normal": 10 }, "dust_limit": 5460, - "blocktime_minutes": 2.5, + "blocktime_seconds": 150, "address_prefix": "dash:", "min_address_length": 27, "max_address_length": 34, diff --git a/defs/coins/decred_testnet.json b/defs/coins/decred_testnet.json index f8ac4d717..0ae331a25 100644 --- a/defs/coins/decred_testnet.json +++ b/defs/coins/decred_testnet.json @@ -26,7 +26,7 @@ "Normal": 10 }, "dust_limit": 546, - "blocktime_minutes": 10, + "blocktime_seconds": 600, "address_prefix": "bitcoin:", "min_address_length": 35, "max_address_length": 35, diff --git a/defs/coins/denarius.json b/defs/coins/denarius.json index ffcf1836c..6a1fc28a7 100644 --- a/defs/coins/denarius.json +++ b/defs/coins/denarius.json @@ -26,7 +26,7 @@ "Normal": 10 }, "dust_limit": 54600, - "blocktime_minutes": 0.5, + "blocktime_seconds": 30, "address_prefix": "denarius:", "min_address_length": 27, "max_address_length": 34, diff --git a/defs/coins/digibyte.json b/defs/coins/digibyte.json index f73a5e6c4..510da8104 100644 --- a/defs/coins/digibyte.json +++ b/defs/coins/digibyte.json @@ -29,7 +29,7 @@ "High": 200 }, "dust_limit": 546, - "blocktime_minutes": 0.25, + "blocktime_seconds": 15, "address_prefix": "digibyte:", "min_address_length": 27, "max_address_length": 34, diff --git a/defs/coins/dogecoin.json b/defs/coins/dogecoin.json index b1bcad658..cc70bb0ea 100644 --- a/defs/coins/dogecoin.json +++ b/defs/coins/dogecoin.json @@ -26,7 +26,7 @@ "Normal": 10 }, "dust_limit": 10000000, - "blocktime_minutes": 1, + "blocktime_seconds": 60, "address_prefix": "dogecoin:", "min_address_length": 27, "max_address_length": 34, diff --git a/defs/coins/flashcoin.json b/defs/coins/flashcoin.json index cea9997ac..5aeef8e16 100644 --- a/defs/coins/flashcoin.json +++ b/defs/coins/flashcoin.json @@ -26,7 +26,7 @@ "Normal": 0 }, "dust_limit": 10000, - "blocktime_minutes": 1, + "blocktime_seconds": 60, "address_prefix": "flashcoin:", "min_address_length": 27, "max_address_length": 34, diff --git a/defs/coins/fujicoin.json b/defs/coins/fujicoin.json index 4af581887..57e73570f 100644 --- a/defs/coins/fujicoin.json +++ b/defs/coins/fujicoin.json @@ -29,7 +29,7 @@ "High": 1000000 }, "dust_limit": 100000, - "blocktime_minutes": 1.0, + "blocktime_seconds": 60, "address_prefix": "fujicoin:", "min_address_length": 27, "max_address_length": 34, diff --git a/defs/coins/groestlcoin.json b/defs/coins/groestlcoin.json index 74e5a6906..43cb4eeb4 100644 --- a/defs/coins/groestlcoin.json +++ b/defs/coins/groestlcoin.json @@ -26,7 +26,7 @@ "Normal": 10 }, "dust_limit": 546, - "blocktime_minutes": 1, + "blocktime_seconds": 60, "address_prefix": "groestlcoin:", "min_address_length": 27, "max_address_length": 34, diff --git a/defs/coins/litecoin.json b/defs/coins/litecoin.json index bb8d805aa..1cd9bd041 100644 --- a/defs/coins/litecoin.json +++ b/defs/coins/litecoin.json @@ -26,7 +26,7 @@ "Normal": 1000 }, "dust_limit": 54600, - "blocktime_minutes": 2.5, + "blocktime_seconds": 150, "address_prefix": "litecoin:", "min_address_length": 27, "max_address_length": 34, diff --git a/defs/coins/litecoin_testnet.json b/defs/coins/litecoin_testnet.json index b1936454d..071ff8c80 100644 --- a/defs/coins/litecoin_testnet.json +++ b/defs/coins/litecoin_testnet.json @@ -26,7 +26,7 @@ "Normal": 10 }, "dust_limit": 54600, - "blocktime_minutes": 2.5, + "blocktime_seconds": 150, "address_prefix": "litecoin:", "min_address_length": 27, "max_address_length": 34, diff --git a/defs/coins/monacoin.json b/defs/coins/monacoin.json index baf17ae23..977b628fb 100644 --- a/defs/coins/monacoin.json +++ b/defs/coins/monacoin.json @@ -26,7 +26,7 @@ "Normal": 100000 }, "dust_limit": 54600, - "blocktime_minutes": 1.5, + "blocktime_seconds": 90, "address_prefix": "monacoin:", "min_address_length": 27, "max_address_length": 34, diff --git a/defs/coins/myriad.json b/defs/coins/myriad.json index c5e1c366b..5bcc847c6 100644 --- a/defs/coins/myriad.json +++ b/defs/coins/myriad.json @@ -29,7 +29,7 @@ "High": 200 }, "dust_limit": 546, - "blocktime_minutes": 1, + "blocktime_seconds": 60, "address_prefix": "myriadcoin:", "min_address_length": 27, "max_address_length": 34, diff --git a/defs/coins/namecoin.json b/defs/coins/namecoin.json index 28b425eed..38382517d 100644 --- a/defs/coins/namecoin.json +++ b/defs/coins/namecoin.json @@ -26,7 +26,7 @@ "Normal": 10 }, "dust_limit": 2940, - "blocktime_minutes": 10, + "blocktime_seconds": 600, "address_prefix": "namecoin:", "min_address_length": 27, "max_address_length": 34, diff --git a/defs/coins/terracoin.json b/defs/coins/terracoin.json index 5eeb56215..5fdc34f89 100644 --- a/defs/coins/terracoin.json +++ b/defs/coins/terracoin.json @@ -26,7 +26,7 @@ "Normal": 10 }, "dust_limit": 5460, - "blocktime_minutes": 2, + "blocktime_seconds": 120, "address_prefix": "terracoin:", "min_address_length": 27, "max_address_length": 34, diff --git a/defs/coins/vertcoin.json b/defs/coins/vertcoin.json index 97777a34e..3d9f85c3d 100644 --- a/defs/coins/vertcoin.json +++ b/defs/coins/vertcoin.json @@ -26,7 +26,7 @@ "Normal": 1000 }, "dust_limit": 54600, - "blocktime_minutes": 2.5, + "blocktime_seconds": 150, "address_prefix": "vertcoin:", "min_address_length": 27, "max_address_length": 34, diff --git a/defs/coins/viacoin.json b/defs/coins/viacoin.json index 786cb8214..aeb245c4b 100644 --- a/defs/coins/viacoin.json +++ b/defs/coins/viacoin.json @@ -1,7 +1,7 @@ { - "coin_name": "viacoin", + "coin_name": "Viacoin", "coin_shortcut": "VIA", - "coin_label": "viacoin", + "coin_label": "Viacoin", "website": "https://viacoin.org", "github": "https://github.com/viacoin", "maintainer": "romanornr ", @@ -29,7 +29,7 @@ "High": 20000 }, "dust_limit": 54600, - "blocktime_minutes": 0.4, + "blocktime_seconds": 24, "address_prefix": "viacoin:", "min_address_length": 27, "max_address_length": 34, diff --git a/defs/coins/zcash.json b/defs/coins/zcash.json index 9d94a224d..9699e0431 100644 --- a/defs/coins/zcash.json +++ b/defs/coins/zcash.json @@ -26,7 +26,7 @@ "Normal": 10 }, "dust_limit": 546, - "blocktime_minutes": 2.5, + "blocktime_seconds": 150, "address_prefix": "zcash:", "min_address_length": 35, "max_address_length": 95, diff --git a/defs/coins/zcash_testnet.json b/defs/coins/zcash_testnet.json index 47fc22a62..ae5a361f4 100644 --- a/defs/coins/zcash_testnet.json +++ b/defs/coins/zcash_testnet.json @@ -26,7 +26,7 @@ "Normal": 10 }, "dust_limit": 546, - "blocktime_minutes": 2.5, + "blocktime_seconds": 150, "address_prefix": "zcash:", "min_address_length": 35, "max_address_length": 95, diff --git a/defs/coins/zcoin.json b/defs/coins/zcoin.json index 0d3d9cedf..0154c365d 100644 --- a/defs/coins/zcoin.json +++ b/defs/coins/zcoin.json @@ -29,7 +29,7 @@ "High": 200 }, "dust_limit": 546, - "blocktime_minutes": 10, + "blocktime_seconds": 600, "address_prefix": "zcoin:", "min_address_length": 27, "max_address_length": 34, diff --git a/defs/coins/zcoin_testnet.json b/defs/coins/zcoin_testnet.json index 1f5465fc5..716fba60a 100644 --- a/defs/coins/zcoin_testnet.json +++ b/defs/coins/zcoin_testnet.json @@ -29,7 +29,7 @@ "High": 200 }, "dust_limit": 546, - "blocktime_minutes": 10, + "blocktime_seconds": 600, "address_prefix": "testzcoin:", "min_address_length": 27, "max_address_length": 35, From cc789677f051f0f113580b6c1e4404eb3e1db72b Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 24 Apr 2018 15:13:34 +0100 Subject: [PATCH 291/767] defs: fix last commit --- defs/coins/bitcore.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/defs/coins/bitcore.json b/defs/coins/bitcore.json index 1be56fab1..5f99fbb74 100644 --- a/defs/coins/bitcore.json +++ b/defs/coins/bitcore.json @@ -23,10 +23,10 @@ "forkid": null, "force_bip143": false, "default_fee_b": { - "Low": 10, + "Low": 10 }, "dust_limit": 546, - "blocktime_minutes": 2.5, + "blocktime_seconds": 150, "address_prefix": "bitcore:", "min_address_length": 27, "max_address_length": 34, From 5ccdb5b3f8f781f8a0a11a54b0ba9c2ba1f94aa7 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 24 Apr 2018 15:14:45 +0100 Subject: [PATCH 292/767] defs: enable travis build --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index cdb1c751e..ce6b62d85 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,6 +13,7 @@ python: script: - python coins-check.py + - cd defs/coins && python combine.py notifications: webhooks: From d75bf98c1501e464351b23298f3ccfadb43248b2 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 25 Apr 2018 19:12:42 +0100 Subject: [PATCH 293/767] defs: add coins images --- defs/coins/bcash.json | 1 + defs/coins/bcash.png | Bin 0 -> 3975 bytes defs/coins/bcash_testnet.json | 1 + defs/coins/bgold.json | 1 + defs/coins/bgold.png | Bin 0 -> 12624 bytes defs/coins/bitcoin.json | 1 + defs/coins/bitcoin.png | Bin 0 -> 3784 bytes defs/coins/bitcoin_testnet.json | 1 + defs/coins/bitcoin_testnet.png | Bin 0 -> 2333 bytes defs/coins/bitcore.json | 1 + defs/coins/bprivate.json | 1 + defs/coins/combine.py | 4 ++++ defs/coins/crown.json | 1 + defs/coins/dash.json | 1 + defs/coins/dash.png | Bin 0 -> 4721 bytes defs/coins/dash_testnet.json | 1 + defs/coins/decred_testnet.json | 1 + defs/coins/denarius.json | 1 + defs/coins/digibyte.json | 1 + defs/coins/dogecoin.json | 1 + defs/coins/flashcoin.json | 1 + defs/coins/fujicoin.json | 1 + defs/coins/groestlcoin.json | 1 + defs/coins/litecoin.json | 1 + defs/coins/litecoin.png | Bin 0 -> 5308 bytes defs/coins/litecoin_testnet.json | 1 + defs/coins/monacoin.json | 1 + defs/coins/myriad.json | 1 + defs/coins/namecoin.json | 1 + defs/coins/schema.proto | 25 +++++++++++++------------ defs/coins/terracoin.json | 1 + defs/coins/vertcoin.json | 1 + defs/coins/viacoin.json | 1 + defs/coins/zcash.json | 1 + defs/coins/zcash.png | Bin 0 -> 6003 bytes defs/coins/zcash_testnet.json | 1 + defs/coins/zcoin.json | 1 + defs/coins/zcoin_testnet.json | 1 + 38 files changed, 46 insertions(+), 12 deletions(-) create mode 100644 defs/coins/bcash.png create mode 100644 defs/coins/bgold.png create mode 100644 defs/coins/bitcoin.png create mode 100644 defs/coins/bitcoin_testnet.png create mode 100644 defs/coins/dash.png create mode 100644 defs/coins/litecoin.png create mode 100644 defs/coins/zcash.png diff --git a/defs/coins/bcash.json b/defs/coins/bcash.json index c72fed992..e9a10b137 100644 --- a/defs/coins/bcash.json +++ b/defs/coins/bcash.json @@ -15,6 +15,7 @@ "xprv_magic": "0488ade4", "xpub_magic": "0488b21e", "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, "bech32_prefix": null, "cashaddr_prefix": "bitcoincash", "slip44": 145, diff --git a/defs/coins/bcash.png b/defs/coins/bcash.png new file mode 100644 index 0000000000000000000000000000000000000000..e6192b00755a1c2ce5ab92a422710b7441ff1eaa GIT binary patch literal 3975 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 literal 0 HcmV?d00001 diff --git a/defs/coins/bcash_testnet.json b/defs/coins/bcash_testnet.json index 219ed1b3d..c65fea84b 100644 --- a/defs/coins/bcash_testnet.json +++ b/defs/coins/bcash_testnet.json @@ -15,6 +15,7 @@ "xprv_magic": "04358394", "xpub_magic": "043587cf", "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, "bech32_prefix": null, "cashaddr_prefix": "bchtest", "slip44": 1, diff --git a/defs/coins/bgold.json b/defs/coins/bgold.json index 233173c6c..e2c892490 100644 --- a/defs/coins/bgold.json +++ b/defs/coins/bgold.json @@ -15,6 +15,7 @@ "xprv_magic": "0488ade4", "xpub_magic": "0488b21e", "xpub_magic_segwit_p2sh": "049d7cb2", + "xpub_magic_segwit_native": null, "bech32_prefix": "btg", "cashaddr_prefix": null, "slip44": 156, diff --git a/defs/coins/bgold.png b/defs/coins/bgold.png new file mode 100644 index 0000000000000000000000000000000000000000..dd5484e976411ebb6dc55c1590a24909ec7de31e GIT binary patch literal 12624 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 literal 0 HcmV?d00001 diff --git a/defs/coins/zcash_testnet.json b/defs/coins/zcash_testnet.json index ae5a361f4..70a16cd30 100644 --- a/defs/coins/zcash_testnet.json +++ b/defs/coins/zcash_testnet.json @@ -15,6 +15,7 @@ "xprv_magic": "04358394", "xpub_magic": "043587cf", "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, "bech32_prefix": null, "cashaddr_prefix": null, "slip44": 1, diff --git a/defs/coins/zcoin.json b/defs/coins/zcoin.json index 0154c365d..45ce95d1a 100644 --- a/defs/coins/zcoin.json +++ b/defs/coins/zcoin.json @@ -15,6 +15,7 @@ "xprv_magic": "0488ade4", "xpub_magic": "0488b21e", "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, "bech32_prefix": null, "cashaddr_prefix": null, "slip44": 136, diff --git a/defs/coins/zcoin_testnet.json b/defs/coins/zcoin_testnet.json index 716fba60a..66eb0eea4 100644 --- a/defs/coins/zcoin_testnet.json +++ b/defs/coins/zcoin_testnet.json @@ -15,6 +15,7 @@ "xprv_magic": "04358394", "xpub_magic": "043587cf", "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, "bech32_prefix": null, "cashaddr_prefix": null, "slip44": 1, From ceacaaedc02431cf8f86de7402c0234a7b8d6bdb Mon Sep 17 00:00:00 2001 From: Jon D Date: Sat, 28 Apr 2018 15:06:01 +0200 Subject: [PATCH 294/767] add btx logo (#99) --- defs/coins/bitcore.png | Bin 0 -> 12248 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 defs/coins/bitcore.png diff --git a/defs/coins/bitcore.png b/defs/coins/bitcore.png new file mode 100644 index 0000000000000000000000000000000000000000..43dd8fc1481d3084cbd53d805e6050d1d7c57620 GIT binary patch literal 12248 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 m^8Y%^FP~pNzkJ?D&;JjloGhst+wouk0000 Date: Sat, 28 Apr 2018 15:16:57 +0100 Subject: [PATCH 295/767] defs: add more icons --- defs/coins/bcash_testnet.png | Bin 0 -> 2256 bytes defs/coins/dash_testnet.png | Bin 0 -> 1797 bytes defs/coins/litecoin_testnet.png | Bin 0 -> 3765 bytes defs/coins/zcash_testnet.png | Bin 0 -> 3316 bytes defs/coins/zcoin.png | Bin 0 -> 1588 bytes defs/coins/zcoin_testnet.png | Bin 0 -> 1011 bytes 6 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 defs/coins/bcash_testnet.png create mode 100644 defs/coins/dash_testnet.png create mode 100644 defs/coins/litecoin_testnet.png create mode 100644 defs/coins/zcash_testnet.png create mode 100644 defs/coins/zcoin.png create mode 100644 defs/coins/zcoin_testnet.png diff --git a/defs/coins/bcash_testnet.png b/defs/coins/bcash_testnet.png new file mode 100644 index 0000000000000000000000000000000000000000..d3c1088730df412db55aff62634cca15bc34402d GIT binary patch literal 2256 zcmV;>2ru`EP)&1MAure@JS7qh zabNOK@l**Vh=+JB5K@)2HNk2X1qe!knzXwtP~!r=U$70n?0Qchyq=w%o$=0`9eZsx z-_v?`eCGVm_kI8GGUp6@EtwU?$-&w^W7V@h#YYVl6jC4xlmZar$~fbU(M3Q6vx0@U zcTX)d0G-)^?bK4oPLX5bmeXA35*;;HH-$3}AmqAP8$F=>O5{u2dP1CYeYm-!Dw-hx z=gT99*)P_oxq=Tk>pr!&dx-&@uZkQKzb4xuLk=rv+$Z;jmIy#wr8q&Oa5>B-QCgMb z`|d3=fQvaJO}r&Mi$sZ2{I0m=mFYzT;NK(uK-D4>dq_Fb@Yh8E(3u@^kuP9MZJuD8`Y1i*hVdO;K|b&ey7q8I!J z9RSdJl+(B~lBc;j-Fh_DMOi6U|6Sg8HsP~L^1B;7{!gU=v>xT{jOWX{8lL(;mtrCR zK~4)L;{Z?uziIfuHh{MJ=!Fc~ezHVdzu5P&Edc%suBXpDtC%F}j21@OY8)3_#!;7# z(wV*+FI#wxdc2O2Dj#)bTLutp5!=$a-A~v>75U&801(@PEfxXz_sHZt&#{Tz*yjQD z+cge4Li7#)9t%EjF=x2bUdFkO^^}nVT;~n|Yk4tV=rihIrn-8QKG{yvz(}**gxNtvr+zAp4Hwp|x}yN#t+vVq0f-a!tF0bQST9Qg zRqSXm5gu`30UtPD6$!}Hx<6wc^)o z@^YT$f%_>NqoWF0?JKmUbE z*07fHl>arv-!@>sGiH$+q79kShtm&04u8VFA_rm=a0o-;(2^^*3vioH%;GX6u7eym-kc9Vw!a zF`2aD0G}o}ac6d5*lLH_gBLGl7Ww@NQz&@IGx_}*T@nD4iJH}Oouk++0^6-O$Y^sq(ujgbZ_b$Kb2 zvw=za>7^HmC$2Sd02S#0m|#K|kqgLWQuB8q-!aU46!NH`f*Cro{dlY*4xljIO6d{R zNjm6K`xQRCDLTZ@@B@krX?6iAi~}f07eJ38fLu1P(emoNK%YHMDo_E4v;hnf))f=$ zc+GaA_kH?ol$vw1o@1f30YsCcbCyJ&>akTHCb7Aqlho3Oc7dylZRo|2g@P)8EXOn;l4#M) zrnC9Bp;Uh>rgZHi9>hj#~)A>~5k~08$Qv!I7mwCys&Gncoc5Zbkk#;+r0Wic2&*-Q$pNUup zsDh2A#M;XhdsSIS0)U#UfeDfC1cd&ijB+jgc=58@G*^ny8GF8I*#jnOt|s(3HigAG zXLK--^vz~=^Ib|zrZ4E?&o-wI;@te6x_F=cLuUY#+PF4Mh)=kdP(53d_-xf>3At|E zPj4G>9_y(vWEW$~4RQ~;-QUWCEzi&IxK=e#73Hk_P7|#9UvgWM_pg$?mvTnC z*FB*ocAr!vTa{5mM~s8Yi6t2Wnsixi6M_(t6W|PRi*~-$gtJvK z#ve%&0IiAJ^mWOia-3hv?M3Nzug}gXzRs z=Nqw*qb)qk?A|0)+>+eK(8(*)$`KrsK1~5rqRCii=;jOlZFl{TBp;42cwXwi`+AYs z;S7LDs?}gW71PIKy1Bta9^2gN;d;N}lu;+iKzvPHa|S?|q1dNcl~gAfmKo}rugQ9A zz@d$=06waCM33f~niTt+ZhT$wTaQh<)B8SF4k=!1OCq&J?zTx`k!okXTjf7rXEL?_cC>gKoO$3@%JgNNj;4Jp!j1(+&Q8gTF7`T z1Aw-AadxTCF)5?UeskBg31B%Ng!_LviWt+wN;x(Z??zZ5|AxRv}`1}((~wo^x~jTd8daA{e*7$Z?)uO_L%XYy*2pa?kq eYLc%d)ABz`39A~H>(QS80000x?QZpl zXaXVfe%WZHXrv?!(5=LPV8RweOKrgyv@G_)?#}VYF57K8yL)G!v+?|CJDof8efNI% z+;h&%9U#t)h4W%X$+i*DLW_aWKm!fk4F|Kq1{+%FvdYS=X}=YS3M8;*usxG9=}9~o z@Om9M&#HuDiPgoo6hXi+o^mmphRVLJgKCAns@=xFVn)D_jwNC)Mu&8B2P(0nPx(WhFQG z&J8#ji8U8s2U4OMAB+@pGEQ0=!!QB`>ekP(G$t`lJA2XeWr!nClzi(T7Q`q@Q_})n zljX+{2;`--A4O&i15E*QCOT@XgCy|YUH^VZx|m1HnHlYt6G0F#_i8*$PbneZr)e2i zENA=;lceXlw2huqO3Ff8^|NG-K=TG#si34wz&zbomOr@NsD2ublAy56u`YRnbg0(@ zs3DDZDh@s{qU}>I2^9-B%P~fg+54lqMyXYyTVFRVr>7NLfH39{2tXjeA8k@@0fjVn zV*mp7&6ENqTaIC>A1|bzMAhM~6Gb4zvnGuxcK8?p+Msm!0BPG^@-YGiop=gyV9Yvj zw0CvSGXhkExG>UQ&6beRsQ*)Uiyq#;%(A%^o;Az+I9dM_fD!3U1Wvcz*R)@)E zUdsZzlfEr8z2-ncZ<-O5Lu)EI5ebQpD`r0hJSoeI!0jiH7?eXhz$g*~UUp)8;9S{@ zfS9Qi0eL*jk$|0-ZqRxNP^OXu1OQ?y$N0NZ3q{FzTuA}~07~OH$z3y1w`zl|_y28p zCRCuR2IB=u0xxioe8f$Fv_al|L+H;-X$2$+U_M9Vhl_;*5fGeO#L7r5S-j03&DE)i z*MZZ@ zyaEz@2#B&|K)1;tp!y=b0%DQ`3htxHGCJSp%87XhTyl;y@YJjm#MNBzFP5H@I^H%{ z)=MNV0>ndLI8}r-^bCW5?hp`IeGGz#gVOVdO_g<(deM^`^_De`Kf70hjjdG6+j+eXMGC%t7!}GC;&D$^La5?w^23&f$iOd3#y%v;Y*f`r z;8fqmhHUMyUlEWSz8gKB)ePem63_k7dx52XfZ)Zeg{7-Pf$ z#>n%NF@TuR`8N?U5(#kq1`sjNPa*&UQZcA8llleCeoyDy*6#G-^-r(@abrS;sm5y# z0Dx+1{J_WAPWT=IrDxgK@q%BqscTAkM@t*y13t43I3P*DRKvcH3j!Z>-G$>_m3RlF z{QmFVt-RosgIXGNLoiO+1caO|zjQCFc;`58up5fTzsJ-==3S})r&@I_%6(^o*?P@B z)#J^@Zk4(8t*lD11oEVwC-f-f8PdeF=&wNdyUdFvXGQk|rfY056BUQQF6mVt%UaJv zmdiS|GG6@lSQ~rR*uYHys5xFa9FHkRJPwv^_PL8dvb@e{_%c?h7y`@9e&RGA&jBmOcPgl&$$&5d+32E_P&g*i2skxpe~E+ z?YQnhFTOWKyT@UaxSkfp>6UcQq>ks00(j&U&!1)R64V573C+Pn@}bB4!x-Kc$DbzY nYCb*=bBk=OIZ_{oiF^AG)Ye-=1>?BA00000NkvXXu0mjf8P8Jr literal 0 HcmV?d00001 diff --git a/defs/coins/litecoin_testnet.png b/defs/coins/litecoin_testnet.png new file mode 100644 index 0000000000000000000000000000000000000000..fefa3af063be4c3566a4bdd744f49853f59e700e GIT binary patch literal 3765 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 literal 0 HcmV?d00001 diff --git a/defs/coins/zcash_testnet.png b/defs/coins/zcash_testnet.png new file mode 100644 index 0000000000000000000000000000000000000000..01e07457b8e771a8030193212e1fb4393a291a75 GIT binary patch literal 3316 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 literal 0 HcmV?d00001 From f20e374fcc9f5d6f59acbe07c64436aab46302b8 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Sat, 28 Apr 2018 15:27:23 +0100 Subject: [PATCH 296/767] defs: generate wip coindefs in defs/coins/combine.py --- defs/.gitignore | 2 +- defs/coins/combine.py | 24 ++++++++++++++++++++++-- defs/coins/schema.proto | 8 ++++---- 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/defs/.gitignore b/defs/.gitignore index e42d9910a..a6c57f5fb 100644 --- a/defs/.gitignore +++ b/defs/.gitignore @@ -1 +1 @@ -coins.json +*.json diff --git a/defs/coins/combine.py b/defs/coins/combine.py index 0d0b79dcb..cdd08b775 100755 --- a/defs/coins/combine.py +++ b/defs/coins/combine.py @@ -3,6 +3,8 @@ import json import glob import re +from hashlib import sha256 +import ed25519 def check_type(val, types, nullable=False, empty=False, regex=None, choice=None): @@ -78,18 +80,36 @@ def validate_coin(coin): assert not bc.endswith('/') +def serialize(coin): + # TODO: replace with protobuf serialization + return json.dumps(coin).encode() + + +def sign(data): + h = sha256(data).digest() + sign_key = ed25519.SigningKey(b'A' * 32) + return sign_key.sign(h) + + def process_json(fn): print(fn, end=' ... ') j = json.load(open(fn)) validate_coin(j) + ser = serialize(j) + sig = sign(ser) + definition = (sig + ser).hex() print('OK') - return j + return j, definition coins = {} +defs = {} for fn in glob.glob('*.json'): - c = process_json(fn) + c, d = process_json(fn) n = c['coin_name'] coins[n] = c + defs[n] = d + json.dump(coins, open('../coins.json', 'w'), indent=4, sort_keys=True) +json.dump(defs, open('../coindefs.json', 'w'), indent=4, sort_keys=True) diff --git a/defs/coins/schema.proto b/defs/coins/schema.proto index 88d13f9b8..912e45f8e 100644 --- a/defs/coins/schema.proto +++ b/defs/coins/schema.proto @@ -22,8 +22,8 @@ message CoinDef { optional uint32 fork_id = 20; optional bool force_bip143 = 21; optional uint64 dust_limit = 22; - optional uint32 blocktime_seconds = 23; - optional string address_prefix = 24; - optional uint32 min_address_length = 25; - optional uint32 max_address_length = 26; + optional string address_prefix = 23; + optional uint32 min_address_length = 24; + optional uint32 max_address_length = 25; + optional bytes icon = 26; } From 8fd80a5d0967567610168d737f0f24dde744d3e3 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Sat, 28 Apr 2018 16:07:32 +0100 Subject: [PATCH 297/767] defs: json cleanup --- defs/coins/bcash.json | 77 ++++++++++++++--------------- defs/coins/bcash_testnet.json | 68 +++++++++++++------------- defs/coins/bgold.json | 77 ++++++++++++++--------------- defs/coins/bitcoin.json | 83 +++++++++++++++++--------------- defs/coins/bitcoin_testnet.json | 73 ++++++++++++++-------------- defs/coins/bitcore.json | 71 +++++++++++++-------------- defs/coins/bprivate.json | 71 +++++++++++++-------------- defs/coins/crown.json | 73 ++++++++++++++-------------- defs/coins/dash.json | 73 ++++++++++++++-------------- defs/coins/dash_testnet.json | 68 +++++++++++++------------- defs/coins/decred_testnet.json | 72 +++++++++++++-------------- defs/coins/denarius.json | 67 +++++++++++++------------- defs/coins/digibyte.json | 77 ++++++++++++++--------------- defs/coins/dogecoin.json | 67 +++++++++++++------------- defs/coins/flashcoin.json | 71 +++++++++++++-------------- defs/coins/fujicoin.json | 77 ++++++++++++++--------------- defs/coins/groestlcoin.json | 71 +++++++++++++-------------- defs/coins/litecoin.json | 71 +++++++++++++-------------- defs/coins/litecoin_testnet.json | 71 +++++++++++++-------------- defs/coins/monacoin.json | 71 +++++++++++++-------------- defs/coins/myriad.json | 73 ++++++++++++++-------------- defs/coins/namecoin.json | 67 +++++++++++++------------- defs/coins/terracoin.json | 71 +++++++++++++-------------- defs/coins/vertcoin.json | 67 +++++++++++++------------- defs/coins/viacoin.json | 77 ++++++++++++++--------------- defs/coins/zcash.json | 71 +++++++++++++-------------- defs/coins/zcash_testnet.json | 67 +++++++++++++------------- defs/coins/zcoin.json | 77 ++++++++++++++--------------- defs/coins/zcoin_testnet.json | 73 ++++++++++++++-------------- 29 files changed, 1061 insertions(+), 1031 deletions(-) diff --git a/defs/coins/bcash.json b/defs/coins/bcash.json index e9a10b137..76e754841 100644 --- a/defs/coins/bcash.json +++ b/defs/coins/bcash.json @@ -1,40 +1,41 @@ { - "coin_name": "Bcash", - "coin_shortcut": "BCH", - "coin_label": "Bitcoin Cash", - "website": "https://www.bitcoincash.org", - "github": "https://github.com/Bitcoin-ABC/bitcoin-abc", - "maintainer": "Jochen Hoenicke ", - "curve_name": "secp256k1", - "address_type": 0, - "address_type_p2sh": 5, - "maxfee_kb": 500000, - "minfee_kb": 1000, - "signed_message_header": "Bitcoin Signed Message:\n", - "hash_genesis_block": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", - "xprv_magic": "0488ade4", - "xpub_magic": "0488b21e", - "xpub_magic_segwit_p2sh": null, - "xpub_magic_segwit_native": null, - "bech32_prefix": null, - "cashaddr_prefix": "bitcoincash", - "slip44": 145, - "segwit": false, - "decred": false, - "forkid": 0, - "force_bip143": true, - "default_fee_b": { - "Low": 10, - "Economy": 70, - "Normal": 140, - "High": 200 - }, - "dust_limit": 546, - "blocktime_seconds": 600, - "address_prefix": "bitcoincash:", - "min_address_length": 27, - "max_address_length": 34, - "bitcore": [ - "https://bch-bitcore2.trezor.io" - ] + "coin_name": "Bcash", + "coin_shortcut": "BCH", + "coin_label": "Bitcoin Cash", + "website": "https://www.bitcoincash.org", + "github": "https://github.com/Bitcoin-ABC/bitcoin-abc", + "maintainer": "Jochen Hoenicke ", + "curve_name": "secp256k1", + "address_type": 0, + "address_type_p2sh": 5, + "maxfee_kb": 500000, + "minfee_kb": 1000, + "signed_message_header": "Bitcoin Signed Message:\n", + "hash_genesis_block": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", + "xprv_magic": "0488ade4", + "xpub_magic": "0488b21e", + "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, + "bech32_prefix": null, + "cashaddr_prefix": "bitcoincash", + "slip44": 145, + "segwit": false, + "decred": false, + "forkid": 0, + "force_bip143": true, + "default_fee_b": { + "Low": 10, + "Economy": 70, + "Normal": 140, + "High": 200 + }, + "dust_limit": 546, + "blocktime_seconds": 600, + "address_prefix": "bitcoincash:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "https://bch-bitcore2.trezor.io" + ], + "blockbook": [] } diff --git a/defs/coins/bcash_testnet.json b/defs/coins/bcash_testnet.json index c65fea84b..3ab0a42e1 100644 --- a/defs/coins/bcash_testnet.json +++ b/defs/coins/bcash_testnet.json @@ -1,36 +1,36 @@ { - "coin_name": "Bcash Testnet", - "coin_shortcut": "TBCH", - "coin_label": "Bitcoin Cash Testnet", - "website": "https://www.bitcoincash.org", - "github": "https://github.com/Bitcoin-ABC/bitcoin-abc", - "maintainer": "Jochen Hoenicke ", - "curve_name": "secp256k1", - "address_type": 111, - "address_type_p2sh": 196, - "maxfee_kb": 10000000, - "minfee_kb": 1000, - "signed_message_header": "Bitcoin Signed Message:\n", - "hash_genesis_block": "000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943", - "xprv_magic": "04358394", - "xpub_magic": "043587cf", - "xpub_magic_segwit_p2sh": null, - "xpub_magic_segwit_native": null, - "bech32_prefix": null, - "cashaddr_prefix": "bchtest", - "slip44": 1, - "segwit": false, - "decred": false, - "forkid": 0, - "force_bip143": true, - "default_fee_b": { - "Normal": 10 - }, - "dust_limit": 546, - "blocktime_seconds": 600, - "address_prefix": "bitcoincash:", - "min_address_length": 27, - "max_address_length": 34, - "bitcore": [] + "coin_name": "Bcash Testnet", + "coin_shortcut": "TBCH", + "coin_label": "Bitcoin Cash Testnet", + "website": "https://www.bitcoincash.org", + "github": "https://github.com/Bitcoin-ABC/bitcoin-abc", + "maintainer": "Jochen Hoenicke ", + "curve_name": "secp256k1", + "address_type": 111, + "address_type_p2sh": 196, + "maxfee_kb": 10000000, + "minfee_kb": 1000, + "signed_message_header": "Bitcoin Signed Message:\n", + "hash_genesis_block": "000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943", + "xprv_magic": "04358394", + "xpub_magic": "043587cf", + "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, + "bech32_prefix": null, + "cashaddr_prefix": "bchtest", + "slip44": 1, + "segwit": false, + "decred": false, + "forkid": 0, + "force_bip143": true, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 546, + "blocktime_seconds": 600, + "address_prefix": "bitcoincash:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [], + "blockbook": [] } - diff --git a/defs/coins/bgold.json b/defs/coins/bgold.json index e2c892490..b42546388 100644 --- a/defs/coins/bgold.json +++ b/defs/coins/bgold.json @@ -1,40 +1,41 @@ { - "coin_name": "Bgold", - "coin_shortcut": "BTG", - "coin_label": "Bitcoin Gold", - "website": "https://bitcoingold.org", - "github": "https://github.com/BTCGPU/BTCGPU", - "maintainer": "Saleem Rashid ", - "curve_name": "secp256k1", - "address_type": 38, - "address_type_p2sh": 23, - "maxfee_kb": 500000, - "minfee_kb": 1000, - "signed_message_header": "Bitcoin Gold Signed Message:\n", - "hash_genesis_block": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", - "xprv_magic": "0488ade4", - "xpub_magic": "0488b21e", - "xpub_magic_segwit_p2sh": "049d7cb2", - "xpub_magic_segwit_native": null, - "bech32_prefix": "btg", - "cashaddr_prefix": null, - "slip44": 156, - "segwit": true, - "decred": false, - "forkid": 79, - "force_bip143": true, - "default_fee_b": { - "Low": 10, - "Economy": 70, - "Normal": 140, - "High": 200 - }, - "dust_limit": 546, - "blocktime_seconds": 600, - "address_prefix": "bitcoingold:", - "min_address_length": 27, - "max_address_length": 34, - "bitcore": [ - "https://btg-bitcore2.trezor.io" - ] + "coin_name": "Bgold", + "coin_shortcut": "BTG", + "coin_label": "Bitcoin Gold", + "website": "https://bitcoingold.org", + "github": "https://github.com/BTCGPU/BTCGPU", + "maintainer": "Saleem Rashid ", + "curve_name": "secp256k1", + "address_type": 38, + "address_type_p2sh": 23, + "maxfee_kb": 500000, + "minfee_kb": 1000, + "signed_message_header": "Bitcoin Gold Signed Message:\n", + "hash_genesis_block": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", + "xprv_magic": "0488ade4", + "xpub_magic": "0488b21e", + "xpub_magic_segwit_p2sh": "049d7cb2", + "xpub_magic_segwit_native": null, + "bech32_prefix": "btg", + "cashaddr_prefix": null, + "slip44": 156, + "segwit": true, + "decred": false, + "forkid": 79, + "force_bip143": true, + "default_fee_b": { + "Low": 10, + "Economy": 70, + "Normal": 140, + "High": 200 + }, + "dust_limit": 546, + "blocktime_seconds": 600, + "address_prefix": "bitcoingold:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "https://btg-bitcore2.trezor.io" + ], + "blockbook": [] } diff --git a/defs/coins/bitcoin.json b/defs/coins/bitcoin.json index 07f8b9bd6..00eb68c1a 100644 --- a/defs/coins/bitcoin.json +++ b/defs/coins/bitcoin.json @@ -1,41 +1,46 @@ { - "coin_name": "Bitcoin", - "coin_shortcut": "BTC", - "coin_label": "Bitcoin", - "website": "https://bitcoin.org", - "github": "https://github.com/bitcoin/bitcoin", - "maintainer": "Pavol Rusnak ", - "curve_name": "secp256k1", - "address_type": 0, - "address_type_p2sh": 5, - "maxfee_kb": 2000000, - "minfee_kb": 1000, - "signed_message_header": "Bitcoin Signed Message:\n", - "hash_genesis_block": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", - "xprv_magic": "0488ade4", - "xpub_magic": "0488b21e", - "xpub_magic_segwit_p2sh": "049d7cb2", - "xpub_magic_segwit_native": "04b24746", - "bech32_prefix": "bc", - "cashaddr_prefix": null, - "slip44": 0, - "segwit": true, - "decred": false, - "forkid": null, - "force_bip143": false, - "default_fee_b": { - "Low": 10, - "Economy": 70, - "Normal": 140, - "High": 200 - }, - "dust_limit": 546, - "blocktime_seconds": 600, - "address_prefix": "bitcoin:", - "min_address_length": 27, - "max_address_length": 34, - "bitcore": [ - "https://btc-bitcore3.trezor.io", - "https://btc-bitcore1.trezor.io" - ] + "coin_name": "Bitcoin", + "coin_shortcut": "BTC", + "coin_label": "Bitcoin", + "website": "https://bitcoin.org", + "github": "https://github.com/bitcoin/bitcoin", + "maintainer": "Pavol Rusnak ", + "curve_name": "secp256k1", + "address_type": 0, + "address_type_p2sh": 5, + "maxfee_kb": 2000000, + "minfee_kb": 1000, + "signed_message_header": "Bitcoin Signed Message:\n", + "hash_genesis_block": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", + "xprv_magic": "0488ade4", + "xpub_magic": "0488b21e", + "xpub_magic_segwit_p2sh": "049d7cb2", + "xpub_magic_segwit_native": "04b24746", + "bech32_prefix": "bc", + "cashaddr_prefix": null, + "slip44": 0, + "segwit": true, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Low": 10, + "Economy": 70, + "Normal": 140, + "High": 200 + }, + "dust_limit": 546, + "blocktime_seconds": 600, + "address_prefix": "bitcoin:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "https://btc-bitcore1.trezor.io", + "https://btc-bitcore2.trezor.io", + "https://btc-bitcore3.trezor.io", + "https://btc-bitcore4.trezor.io", + "https://btc-bitcore5.trezor.io", + "https://btc-bitcore6.trezor.io" + ], + "blockbook": [] } diff --git a/defs/coins/bitcoin_testnet.json b/defs/coins/bitcoin_testnet.json index 4e3076f89..cbe5b273b 100644 --- a/defs/coins/bitcoin_testnet.json +++ b/defs/coins/bitcoin_testnet.json @@ -1,38 +1,39 @@ { - "coin_name": "Testnet", - "coin_shortcut": "TEST", - "coin_label": "Testnet", - "website": "https://bitcoin.org", - "github": "https://github.com/bitcoin/bitcoin", - "maintainer": "Pavol Rusnak ", - "curve_name": "secp256k1", - "address_type": 111, - "address_type_p2sh": 196, - "maxfee_kb": 10000000, - "minfee_kb": 1000, - "signed_message_header": "Bitcoin Signed Message:\n", - "hash_genesis_block": "000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943", - "xprv_magic": "04358394", - "xpub_magic": "043587cf", - "xpub_magic_segwit_p2sh": "044a5262", - "xpub_magic_segwit_native": null, - "bech32_prefix": "tb", - "cashaddr_prefix": null, - "slip44": 1, - "segwit": true, - "decred": false, - "forkid": null, - "force_bip143": false, - "default_fee_b": { - "Normal": 10 - }, - "dust_limit": 546, - "blocktime_seconds": 600, - "address_prefix": "bitcoin:", - "min_address_length": 27, - "max_address_length": 34, - "bitcore": [ - "https://testnet-bitcore1.trezor.io", - "https://testnet-bitcore2.trezor.io" - ] + "coin_name": "Testnet", + "coin_shortcut": "TEST", + "coin_label": "Testnet", + "website": "https://bitcoin.org", + "github": "https://github.com/bitcoin/bitcoin", + "maintainer": "Pavol Rusnak ", + "curve_name": "secp256k1", + "address_type": 111, + "address_type_p2sh": 196, + "maxfee_kb": 10000000, + "minfee_kb": 1000, + "signed_message_header": "Bitcoin Signed Message:\n", + "hash_genesis_block": "000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943", + "xprv_magic": "04358394", + "xpub_magic": "043587cf", + "xpub_magic_segwit_p2sh": "044a5262", + "xpub_magic_segwit_native": null, + "bech32_prefix": "tb", + "cashaddr_prefix": null, + "slip44": 1, + "segwit": true, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 546, + "blocktime_seconds": 600, + "address_prefix": "bitcoin:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "https://testnet-bitcore1.trezor.io", + "https://testnet-bitcore2.trezor.io" + ], + "blockbook": [] } diff --git a/defs/coins/bitcore.json b/defs/coins/bitcore.json index ecab52457..309f6e2db 100644 --- a/defs/coins/bitcore.json +++ b/defs/coins/bitcore.json @@ -1,37 +1,38 @@ { - "coin_name": "Bitcore", - "coin_shortcut": "BTX", - "coin_label": "Bitcore", - "website": "https://bitcore.cc", - "github": "https://github.com/LIMXTEC/BitCore", - "maintainer": "limxdev ", - "curve_name": "secp256k1", - "address_type": 0, - "address_type_p2sh": 5, - "maxfee_kb": 2000000, - "minfee_kb": 1000, - "signed_message_header": "Bitcore Signed Message:\n", - "hash_genesis_block": "604148281e5c4b7f2487e5d03cd60d8e6f69411d613f6448034508cea52e9574", - "xprv_magic": "0488ade4", - "xpub_magic": "0488b21e", - "xpub_magic_segwit_p2sh": "049d7cb2", - "xpub_magic_segwit_native": null, - "bech32_prefix": "bc", - "cashaddr_prefix": null, - "slip44": 0, - "segwit": true, - "decred": false, - "forkid": null, - "force_bip143": false, - "default_fee_b": { - "Low": 10 - }, - "dust_limit": 546, - "blocktime_seconds": 150, - "address_prefix": "bitcore:", - "min_address_length": 27, - "max_address_length": 34, - "bitcore": [ - "https://insight.bitcore.cc" - ] + "coin_name": "Bitcore", + "coin_shortcut": "BTX", + "coin_label": "Bitcore", + "website": "https://bitcore.cc", + "github": "https://github.com/LIMXTEC/BitCore", + "maintainer": "limxdev ", + "curve_name": "secp256k1", + "address_type": 0, + "address_type_p2sh": 5, + "maxfee_kb": 2000000, + "minfee_kb": 1000, + "signed_message_header": "Bitcore Signed Message:\n", + "hash_genesis_block": "604148281e5c4b7f2487e5d03cd60d8e6f69411d613f6448034508cea52e9574", + "xprv_magic": "0488ade4", + "xpub_magic": "0488b21e", + "xpub_magic_segwit_p2sh": "049d7cb2", + "xpub_magic_segwit_native": null, + "bech32_prefix": "bc", + "cashaddr_prefix": null, + "slip44": 0, + "segwit": true, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Low": 10 + }, + "dust_limit": 546, + "blocktime_seconds": 150, + "address_prefix": "bitcore:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "https://insight.bitcore.cc" + ], + "blockbook": [] } diff --git a/defs/coins/bprivate.json b/defs/coins/bprivate.json index 96a5b3e53..9751da15e 100644 --- a/defs/coins/bprivate.json +++ b/defs/coins/bprivate.json @@ -1,37 +1,38 @@ { - "coin_name": "Bprivate", - "coin_shortcut": "BTCP", - "coin_label": "Bitcoin Private", - "website": "https://btcprivate.org", - "github": "https://github.com/BTCPrivate/BitcoinPrivate", - "maintainer": "Chris Sulmone ", - "curve_name": "secp256k1", - "address_type": 4901, - "address_type_p2sh": 5039, - "maxfee_kb": 1000000, - "minfee_kb": 1000, - "signed_message_header": "BitcoinPrivate Signed Message:\n", - "hash_genesis_block": "0007104ccda289427919efc39dc9e4d499804b7bebc22df55f8b834301260602", - "xprv_magic": "0488ade4", - "xpub_magic": "0488b21e", - "xpub_magic_segwit_p2sh": null, - "xpub_magic_segwit_native": null, - "bech32_prefix": null, - "cashaddr_prefix": null, - "slip44": 183, - "segwit": false, - "decred": false, - "forkid": 42, - "force_bip143": false, - "default_fee_b": { - "Normal": 10 - }, - "dust_limit": 546, - "blocktime_seconds": 150, - "address_prefix": "bitcoinprivate:", - "min_address_length": 35, - "max_address_length": 95, - "bitcore": [ - "https://explorer.btcprivate.org" - ] + "coin_name": "Bprivate", + "coin_shortcut": "BTCP", + "coin_label": "Bitcoin Private", + "website": "https://btcprivate.org", + "github": "https://github.com/BTCPrivate/BitcoinPrivate", + "maintainer": "Chris Sulmone ", + "curve_name": "secp256k1", + "address_type": 4901, + "address_type_p2sh": 5039, + "maxfee_kb": 1000000, + "minfee_kb": 1000, + "signed_message_header": "BitcoinPrivate Signed Message:\n", + "hash_genesis_block": "0007104ccda289427919efc39dc9e4d499804b7bebc22df55f8b834301260602", + "xprv_magic": "0488ade4", + "xpub_magic": "0488b21e", + "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "slip44": 183, + "segwit": false, + "decred": false, + "forkid": 42, + "force_bip143": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 546, + "blocktime_seconds": 150, + "address_prefix": "bitcoinprivate:", + "min_address_length": 35, + "max_address_length": 95, + "bitcore": [ + "https://explorer.btcprivate.org" + ], + "blockbook": [] } diff --git a/defs/coins/crown.json b/defs/coins/crown.json index eab56cfcc..655df38fd 100644 --- a/defs/coins/crown.json +++ b/defs/coins/crown.json @@ -1,38 +1,39 @@ { - "coin_name": "Crown", - "coin_shortcut": "CRW", - "coin_label": "Crown", - "website": "https://crown.tech", - "github": "https://github.com/Crowndev/crowncoin", - "maintainer": "hypermist ", - "curve_name": "secp256k1", - "address_type": 0, - "address_type_p2sh": 28, - "maxfee_kb": 2000000, - "minfee_kb": 1000, - "signed_message_header": "Crown Signed Message:\n", - "hash_genesis_block": "0000000085370d5e122f64f4ab19c68614ff3df78c8d13cb814fd7e69a1dc6da", - "xprv_magic": "0488ade4", - "xpub_magic": "0488b21e", - "xpub_magic_segwit_p2sh": null, - "xpub_magic_segwit_native": null, - "bech32_prefix": null, - "cashaddr_prefix": null, - "slip44": 72, - "segwit": false, - "decred": false, - "forkid": null, - "force_bip143": false, - "default_fee_b": { - "Normal": 10 - }, - "dust_limit": 546, - "blocktime_seconds": 60, - "address_prefix": "crown:", - "min_address_length": 27, - "max_address_length": 34, - "bitcore": [ - "https://crw-bitcore.crown.tech", - "https://crw2-bitcore.crown.tech" - ] + "coin_name": "Crown", + "coin_shortcut": "CRW", + "coin_label": "Crown", + "website": "https://crown.tech", + "github": "https://github.com/Crowndev/crowncoin", + "maintainer": "hypermist ", + "curve_name": "secp256k1", + "address_type": 0, + "address_type_p2sh": 28, + "maxfee_kb": 2000000, + "minfee_kb": 1000, + "signed_message_header": "Crown Signed Message:\n", + "hash_genesis_block": "0000000085370d5e122f64f4ab19c68614ff3df78c8d13cb814fd7e69a1dc6da", + "xprv_magic": "0488ade4", + "xpub_magic": "0488b21e", + "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "slip44": 72, + "segwit": false, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 546, + "blocktime_seconds": 60, + "address_prefix": "crown:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "https://crw-bitcore.crown.tech", + "https://crw2-bitcore.crown.tech" + ], + "blockbook": [] } diff --git a/defs/coins/dash.json b/defs/coins/dash.json index 30c1ec968..3dcc7fb17 100644 --- a/defs/coins/dash.json +++ b/defs/coins/dash.json @@ -1,38 +1,39 @@ { - "coin_name": "Dash", - "coin_shortcut": "DASH", - "coin_label": "Dash", - "website": "https://www.dash.org", - "github": "https://github.com/dashpay/dash", - "maintainer": "Karel Bilek ", - "curve_name": "secp256k1", - "address_type": 76, - "address_type_p2sh": 16, - "maxfee_kb": 100000, - "minfee_kb": 10000, - "signed_message_header": "DarkCoin Signed Message:\n", - "hash_genesis_block": "00000ffd590b1485b3caadc19b22e6379c733355108f107a430458cdf3407ab6", - "xprv_magic": "02fe52f8", - "xpub_magic": "02fe52cc", - "xpub_magic_segwit_p2sh": null, - "xpub_magic_segwit_native": null, - "bech32_prefix": null, - "cashaddr_prefix": null, - "slip44": 5, - "segwit": false, - "decred": false, - "forkid": null, - "force_bip143": false, - "default_fee_b": { - "Normal": 10 - }, - "dust_limit": 5460, - "blocktime_seconds": 150, - "address_prefix": "dash:", - "min_address_length": 27, - "max_address_length": 34, - "bitcore": [ - "https://dash-bitcore1.trezor.io", - "https://dash-bitcore3.trezor.io" - ] + "coin_name": "Dash", + "coin_shortcut": "DASH", + "coin_label": "Dash", + "website": "https://www.dash.org", + "github": "https://github.com/dashpay/dash", + "maintainer": "Karel Bilek ", + "curve_name": "secp256k1", + "address_type": 76, + "address_type_p2sh": 16, + "maxfee_kb": 100000, + "minfee_kb": 10000, + "signed_message_header": "DarkCoin Signed Message:\n", + "hash_genesis_block": "00000ffd590b1485b3caadc19b22e6379c733355108f107a430458cdf3407ab6", + "xprv_magic": "02fe52f8", + "xpub_magic": "02fe52cc", + "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "slip44": 5, + "segwit": false, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 5460, + "blocktime_seconds": 150, + "address_prefix": "dash:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "https://dash-bitcore1.trezor.io", + "https://dash-bitcore3.trezor.io" + ], + "blockbook": [] } diff --git a/defs/coins/dash_testnet.json b/defs/coins/dash_testnet.json index 2d8e51b43..7927473ff 100644 --- a/defs/coins/dash_testnet.json +++ b/defs/coins/dash_testnet.json @@ -1,36 +1,36 @@ { - "coin_name": "Dash Testnet", - "coin_shortcut": "tDASH", - "coin_label": "Dash Testnet", - "website": "https://www.dash.org", - "github": "https://github.com/dashpay/dash", - "maintainer": "Karel Bilek ", - "curve_name": "secp256k1", - "address_type": 140, - "address_type_p2sh": 19, - "maxfee_kb": 100000, - "minfee_kb": 10000, - "signed_message_header": "DarkCoin Signed Message:\n", - "hash_genesis_block": "00000bafbc94add76cb75e2ec92894837288a481e5c005f6563d91623bf8bc2c", - "xprv_magic": "04358394", - "xpub_magic": "043587cf", - "xpub_magic_segwit_p2sh": null, - "xpub_magic_segwit_native": null, - "bech32_prefix": null, - "cashaddr_prefix": null, - "slip44": 1, - "segwit": false, - "decred": false, - "forkid": null, - "force_bip143": false, - "default_fee_b": { - "Normal": 10 - }, - "dust_limit": 5460, - "blocktime_seconds": 150, - "address_prefix": "dash:", - "min_address_length": 27, - "max_address_length": 34, - "bitcore": [ - ] + "coin_name": "Dash Testnet", + "coin_shortcut": "tDASH", + "coin_label": "Dash Testnet", + "website": "https://www.dash.org", + "github": "https://github.com/dashpay/dash", + "maintainer": "Karel Bilek ", + "curve_name": "secp256k1", + "address_type": 140, + "address_type_p2sh": 19, + "maxfee_kb": 100000, + "minfee_kb": 10000, + "signed_message_header": "DarkCoin Signed Message:\n", + "hash_genesis_block": "00000bafbc94add76cb75e2ec92894837288a481e5c005f6563d91623bf8bc2c", + "xprv_magic": "04358394", + "xpub_magic": "043587cf", + "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "slip44": 1, + "segwit": false, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 5460, + "blocktime_seconds": 150, + "address_prefix": "dash:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [], + "blockbook": [] } diff --git a/defs/coins/decred_testnet.json b/defs/coins/decred_testnet.json index bedc740ea..673eea979 100644 --- a/defs/coins/decred_testnet.json +++ b/defs/coins/decred_testnet.json @@ -1,38 +1,38 @@ { - "coin_name": "Decred Testnet", - "coin_shortcut": "TDCR", - "coin_label": "Decred Testnet", - "website": "https://www.decred.org", - "github": "https://github.com/decred/dcrd", - "maintainer": "Saleem Rashid ", - "curve_name": "secp256k1_decred", - "address_type": 3873, - "address_type_p2sh": 3836, - "maxfee_kb": 10000000, - "minfee_kb": 1000, - "signed_message_header": "Decred Signed Message:\n", - "hash_genesis_block": "4261602a9d07d80ad47621a64ba6a07754902e496777edc4ff581946bd7bc29c", - "xprv_magic": "04358397", - "xpub_magic": "043587d1", - "xpub_magic_segwit_p2sh": null, - "xpub_magic_segwit_native": null, - "bech32_prefix": null, - "cashaddr_prefix": null, - "slip44": 1, - "segwit": false, - "decred": true, - "forkid": null, - "force_bip143": false, - "default_fee_b": { - "Normal": 10 - }, - "dust_limit": 546, - "blocktime_seconds": 600, - "address_prefix": "bitcoin:", - "min_address_length": 35, - "max_address_length": 35, - "bitcore": [ - "https://testnet.decred.org" - ] + "coin_name": "Decred Testnet", + "coin_shortcut": "TDCR", + "coin_label": "Decred Testnet", + "website": "https://www.decred.org", + "github": "https://github.com/decred/dcrd", + "maintainer": "Saleem Rashid ", + "curve_name": "secp256k1_decred", + "address_type": 3873, + "address_type_p2sh": 3836, + "maxfee_kb": 10000000, + "minfee_kb": 1000, + "signed_message_header": "Decred Signed Message:\n", + "hash_genesis_block": "4261602a9d07d80ad47621a64ba6a07754902e496777edc4ff581946bd7bc29c", + "xprv_magic": "04358397", + "xpub_magic": "043587d1", + "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "slip44": 1, + "segwit": false, + "decred": true, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 546, + "blocktime_seconds": 600, + "address_prefix": "bitcoin:", + "min_address_length": 35, + "max_address_length": 35, + "bitcore": [ + "https://testnet.decred.org" + ], + "blockbook": [] } - diff --git a/defs/coins/denarius.json b/defs/coins/denarius.json index 06228599f..485f220d7 100644 --- a/defs/coins/denarius.json +++ b/defs/coins/denarius.json @@ -1,35 +1,36 @@ { - "coin_name": "Denarius", - "coin_shortcut": "DNR", - "coin_label": "Denarius", - "website": "https://denarius.io", - "github": "https://github.com/carsenk/denarius", - "maintainer": "carsenk ", - "curve_name": "secp256k1", - "address_type": 30, - "address_type_p2sh": 90, - "maxfee_kb": 100000, - "minfee_kb": 10000, - "signed_message_header": "Denarius Signed Message:\n", - "hash_genesis_block": "00000d5dbbda01621cfc16bbc1f9bf3264d641a5dbf0de89fd0182c2c4828fcd", - "xprv_magic": "0488ade4", - "xpub_magic": "0488b21e", - "xpub_magic_segwit_p2sh": null, - "xpub_magic_segwit_native": null, - "bech32_prefix": null, - "cashaddr_prefix": null, - "slip44": 116, - "segwit": false, - "decred": false, - "forkid": null, - "force_bip143": false, - "default_fee_b": { - "Normal": 10 - }, - "dust_limit": 54600, - "blocktime_seconds": 30, - "address_prefix": "denarius:", - "min_address_length": 27, - "max_address_length": 34, - "bitcore": [] + "coin_name": "Denarius", + "coin_shortcut": "DNR", + "coin_label": "Denarius", + "website": "https://denarius.io", + "github": "https://github.com/carsenk/denarius", + "maintainer": "carsenk ", + "curve_name": "secp256k1", + "address_type": 30, + "address_type_p2sh": 90, + "maxfee_kb": 100000, + "minfee_kb": 10000, + "signed_message_header": "Denarius Signed Message:\n", + "hash_genesis_block": "00000d5dbbda01621cfc16bbc1f9bf3264d641a5dbf0de89fd0182c2c4828fcd", + "xprv_magic": "0488ade4", + "xpub_magic": "0488b21e", + "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "slip44": 116, + "segwit": false, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 54600, + "blocktime_seconds": 30, + "address_prefix": "denarius:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [], + "blockbook": [] } diff --git a/defs/coins/digibyte.json b/defs/coins/digibyte.json index 953c4211e..bf4b10ef6 100644 --- a/defs/coins/digibyte.json +++ b/defs/coins/digibyte.json @@ -1,40 +1,41 @@ { - "coin_name": "DigiByte", - "coin_shortcut": "DGB", - "coin_label": "DigiByte", - "website": "https://digibyte.io", - "github": "https://github.com/digibyte/digibyte", - "maintainer": "DigiByte ", - "curve_name": "secp256k1", - "address_type": 30, - "address_type_p2sh": 63, - "maxfee_kb": 500000, - "minfee_kb": 1000, - "signed_message_header": "DigiByte Signed Message:\n", - "hash_genesis_block": "7497ea1b465eb39f1c8f507bc877078fe016d6fcb6dfad3a64c98dcc6e1e8496", - "xprv_magic": "0488ade4", - "xpub_magic": "0488b21e", - "xpub_magic_segwit_p2sh": "049d7cb2", - "xpub_magic_segwit_native": null, - "bech32_prefix": "dgb", - "cashaddr_prefix": null, - "slip44": 20, - "segwit": true, - "decred": false, - "forkid": null, - "force_bip143": false, - "default_fee_b": { - "Low": 10, - "Economy": 70, - "Normal": 140, - "High": 200 - }, - "dust_limit": 546, - "blocktime_seconds": 15, - "address_prefix": "digibyte:", - "min_address_length": 27, - "max_address_length": 34, - "bitcore": [ - "https://explorer.digibyteprojects.com" - ] + "coin_name": "DigiByte", + "coin_shortcut": "DGB", + "coin_label": "DigiByte", + "website": "https://digibyte.io", + "github": "https://github.com/digibyte/digibyte", + "maintainer": "DigiByte ", + "curve_name": "secp256k1", + "address_type": 30, + "address_type_p2sh": 63, + "maxfee_kb": 500000, + "minfee_kb": 1000, + "signed_message_header": "DigiByte Signed Message:\n", + "hash_genesis_block": "7497ea1b465eb39f1c8f507bc877078fe016d6fcb6dfad3a64c98dcc6e1e8496", + "xprv_magic": "0488ade4", + "xpub_magic": "0488b21e", + "xpub_magic_segwit_p2sh": "049d7cb2", + "xpub_magic_segwit_native": null, + "bech32_prefix": "dgb", + "cashaddr_prefix": null, + "slip44": 20, + "segwit": true, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Low": 10, + "Economy": 70, + "Normal": 140, + "High": 200 + }, + "dust_limit": 546, + "blocktime_seconds": 15, + "address_prefix": "digibyte:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "https://explorer.digibyteprojects.com" + ], + "blockbook": [] } diff --git a/defs/coins/dogecoin.json b/defs/coins/dogecoin.json index 35f4277e1..e0d5b6d6d 100644 --- a/defs/coins/dogecoin.json +++ b/defs/coins/dogecoin.json @@ -1,35 +1,36 @@ { - "coin_name": "Dogecoin", - "coin_shortcut": "DOGE", - "coin_label": "Dogecoin", - "website": "http://dogecoin.com", - "github": "https://github.com/dogecoin/dogecoin", - "maintainer": "Karel Bilek ", - "curve_name": "secp256k1", - "address_type": 30, - "address_type_p2sh": 22, - "maxfee_kb": 1000000000, - "minfee_kb": 1000, - "signed_message_header": "Dogecoin Signed Message:\n", - "hash_genesis_block": "1a91e3dace36e2be3bf030a65679fe821aa1d6ef92e7c9902eb318182c355691", - "xprv_magic": "02fac398", - "xpub_magic": "02facafd", - "xpub_magic_segwit_p2sh": null, - "xpub_magic_segwit_native": null, - "bech32_prefix": null, - "cashaddr_prefix": null, - "slip44": 3, - "segwit": false, - "decred": false, - "forkid": null, - "force_bip143": false, - "default_fee_b": { - "Normal": 10 - }, - "dust_limit": 10000000, - "blocktime_seconds": 60, - "address_prefix": "dogecoin:", - "min_address_length": 27, - "max_address_length": 34, - "bitcore": [] + "coin_name": "Dogecoin", + "coin_shortcut": "DOGE", + "coin_label": "Dogecoin", + "website": "http://dogecoin.com", + "github": "https://github.com/dogecoin/dogecoin", + "maintainer": "Karel Bilek ", + "curve_name": "secp256k1", + "address_type": 30, + "address_type_p2sh": 22, + "maxfee_kb": 1000000000, + "minfee_kb": 1000, + "signed_message_header": "Dogecoin Signed Message:\n", + "hash_genesis_block": "1a91e3dace36e2be3bf030a65679fe821aa1d6ef92e7c9902eb318182c355691", + "xprv_magic": "02fac398", + "xpub_magic": "02facafd", + "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "slip44": 3, + "segwit": false, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 10000000, + "blocktime_seconds": 60, + "address_prefix": "dogecoin:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [], + "blockbook": [] } diff --git a/defs/coins/flashcoin.json b/defs/coins/flashcoin.json index 0b28d83ca..9e529f49b 100644 --- a/defs/coins/flashcoin.json +++ b/defs/coins/flashcoin.json @@ -1,37 +1,38 @@ { - "coin_name": "Flashcoin", - "coin_shortcut": "FLASH", - "coin_label": "Flashcoin", - "website": "https://www.flashcoin.io", - "github": "https://github.com/flash-coin", - "maintainer": "flashbountyhunter ", - "curve_name": "secp256k1", - "address_type": 68, - "address_type_p2sh": 130, - "maxfee_kb": 4000000, - "minfee_kb": 1000, - "signed_message_header": "Flashcoin Signed Message:\n", - "hash_genesis_block": "aa0cf4f5ce0a3c550ce5674c1e808c417cf5077b4e95bda1d6fbaeaf4258972b", - "xprv_magic": "0488ade4", - "xpub_magic": "0488b21e", - "xpub_magic_segwit_p2sh": "049d7cb2", - "xpub_magic_segwit_native": null, - "bech32_prefix": null, - "cashaddr_prefix": null, - "slip44": 120, - "segwit": true, - "decred": false, - "forkid": null, - "force_bip143": false, - "default_fee_b": { - "Normal": 0 - }, - "dust_limit": 10000, - "blocktime_seconds": 60, - "address_prefix": "flashcoin:", - "min_address_length": 27, - "max_address_length": 34, - "bitcore": [ - "https://explorer.flashcoin.io" - ] + "coin_name": "Flashcoin", + "coin_shortcut": "FLASH", + "coin_label": "Flashcoin", + "website": "https://www.flashcoin.io", + "github": "https://github.com/flash-coin", + "maintainer": "flashbountyhunter ", + "curve_name": "secp256k1", + "address_type": 68, + "address_type_p2sh": 130, + "maxfee_kb": 4000000, + "minfee_kb": 1000, + "signed_message_header": "Flashcoin Signed Message:\n", + "hash_genesis_block": "aa0cf4f5ce0a3c550ce5674c1e808c417cf5077b4e95bda1d6fbaeaf4258972b", + "xprv_magic": "0488ade4", + "xpub_magic": "0488b21e", + "xpub_magic_segwit_p2sh": "049d7cb2", + "xpub_magic_segwit_native": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "slip44": 120, + "segwit": true, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 0 + }, + "dust_limit": 10000, + "blocktime_seconds": 60, + "address_prefix": "flashcoin:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "https://explorer.flashcoin.io" + ], + "blockbook": [] } diff --git a/defs/coins/fujicoin.json b/defs/coins/fujicoin.json index e8da0e9a6..8d14b3493 100644 --- a/defs/coins/fujicoin.json +++ b/defs/coins/fujicoin.json @@ -1,40 +1,41 @@ { - "coin_name": "Fujicoin", - "coin_shortcut": "FJC", - "coin_label": "Fujicoin", - "website": "http://fujicoin.org", - "github": "https://github.com/fujicoin/fujicoin", - "maintainer": "motty ", - "curve_name": "secp256k1", - "address_type": 36, - "address_type_p2sh": 16, - "maxfee_kb": 1000000, - "minfee_kb": 100000, - "signed_message_header": "FujiCoin Signed Message:\n", - "hash_genesis_block": "adb6d9cfd74075e7f91608add4bd2a2ea636f70856183086842667a1597714a0", - "xpub_magic": "0488b21e", - "xprv_magic": "0488ade4", - "xpub_magic_segwit_p2sh": "049d7cb2", - "xpub_magic_segwit_native": null, - "bech32_prefix": "fc", - "cashaddr_prefix": null, - "slip44": 75, - "segwit": true, - "decred": false, - "forkid": null, - "force_bip143": false, - "default_fee_b": { - "Low": 100000, - "Economy": 200000, - "Normal": 500000, - "High": 1000000 - }, - "dust_limit": 100000, - "blocktime_seconds": 60, - "address_prefix": "fujicoin:", - "min_address_length": 27, - "max_address_length": 34, - "bitcore": [ - "http://explorer.fujicoin.org" - ] + "coin_name": "Fujicoin", + "coin_shortcut": "FJC", + "coin_label": "Fujicoin", + "website": "http://fujicoin.org", + "github": "https://github.com/fujicoin/fujicoin", + "maintainer": "motty ", + "curve_name": "secp256k1", + "address_type": 36, + "address_type_p2sh": 16, + "maxfee_kb": 1000000, + "minfee_kb": 100000, + "signed_message_header": "FujiCoin Signed Message:\n", + "hash_genesis_block": "adb6d9cfd74075e7f91608add4bd2a2ea636f70856183086842667a1597714a0", + "xpub_magic": "0488b21e", + "xprv_magic": "0488ade4", + "xpub_magic_segwit_p2sh": "049d7cb2", + "xpub_magic_segwit_native": null, + "bech32_prefix": "fc", + "cashaddr_prefix": null, + "slip44": 75, + "segwit": true, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Low": 100000, + "Economy": 200000, + "Normal": 500000, + "High": 1000000 + }, + "dust_limit": 100000, + "blocktime_seconds": 60, + "address_prefix": "fujicoin:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "http://explorer.fujicoin.org" + ], + "blockbook": [] } diff --git a/defs/coins/groestlcoin.json b/defs/coins/groestlcoin.json index 1f74761ee..075ef8972 100644 --- a/defs/coins/groestlcoin.json +++ b/defs/coins/groestlcoin.json @@ -1,37 +1,38 @@ { - "coin_name": "Groestlcoin", - "coin_shortcut": "GRS", - "coin_label": "Groestlcoin", - "website": "https://www.groestlcoin.org", - "github": "https://github.com/Groestlcoin/groestlcoin", - "maintainer": "Yura Pakhuchiy ", - "curve_name": "secp256k1_groestl", - "address_type": 36, - "address_type_p2sh": 5, - "maxfee_kb": 100000, - "minfee_kb": 1000, - "signed_message_header": "GroestlCoin Signed Message:\n", - "hash_genesis_block": "00000ac5927c594d49cc0bdb81759d0da8297eb614683d3acb62f0703b639023", - "xprv_magic": "0488ade4", - "xpub_magic": "0488b21e", - "xpub_magic_segwit_p2sh": "049d7cb2", - "xpub_magic_segwit_native": null, - "bech32_prefix": "grs", - "cashaddr_prefix": null, - "slip44": 17, - "segwit": true, - "decred": false, - "forkid": null, - "force_bip143": false, - "default_fee_b": { - "Normal": 10 - }, - "dust_limit": 546, - "blocktime_seconds": 60, - "address_prefix": "groestlcoin:", - "min_address_length": 27, - "max_address_length": 34, - "bitcore": [ - "https://groestlsight.groestlcoin.org" - ] + "coin_name": "Groestlcoin", + "coin_shortcut": "GRS", + "coin_label": "Groestlcoin", + "website": "https://www.groestlcoin.org", + "github": "https://github.com/Groestlcoin/groestlcoin", + "maintainer": "Yura Pakhuchiy ", + "curve_name": "secp256k1_groestl", + "address_type": 36, + "address_type_p2sh": 5, + "maxfee_kb": 100000, + "minfee_kb": 1000, + "signed_message_header": "GroestlCoin Signed Message:\n", + "hash_genesis_block": "00000ac5927c594d49cc0bdb81759d0da8297eb614683d3acb62f0703b639023", + "xprv_magic": "0488ade4", + "xpub_magic": "0488b21e", + "xpub_magic_segwit_p2sh": "049d7cb2", + "xpub_magic_segwit_native": null, + "bech32_prefix": "grs", + "cashaddr_prefix": null, + "slip44": 17, + "segwit": true, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 546, + "blocktime_seconds": 60, + "address_prefix": "groestlcoin:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "https://groestlsight.groestlcoin.org" + ], + "blockbook": [] } diff --git a/defs/coins/litecoin.json b/defs/coins/litecoin.json index 34e35c7ab..bcab64b93 100644 --- a/defs/coins/litecoin.json +++ b/defs/coins/litecoin.json @@ -1,37 +1,38 @@ { - "coin_name": "Litecoin", - "coin_shortcut": "LTC", - "coin_label": "Litecoin", - "website": "https://litecoin.org", - "github": "https://github.com/litecoin-project/litecoin", - "maintainer": "Pavol Rusnak ", - "curve_name": "secp256k1", - "address_type": 48, - "address_type_p2sh": 50, - "maxfee_kb": 40000000, - "minfee_kb": 100000, - "signed_message_header": "Litecoin Signed Message:\n", - "hash_genesis_block": "12a765e31ffd4059bada1e25190f6e98c99d9714d334efa41a195a7e7e04bfe2", - "xprv_magic": "019d9cfe", - "xpub_magic": "019da462", - "xpub_magic_segwit_p2sh": "01b26ef6", - "xpub_magic_segwit_native": null, - "bech32_prefix": "ltc", - "cashaddr_prefix": null, - "slip44": 2, - "segwit": true, - "decred": false, - "forkid": null, - "force_bip143": false, - "default_fee_b": { - "Normal": 1000 - }, - "dust_limit": 54600, - "blocktime_seconds": 150, - "address_prefix": "litecoin:", - "min_address_length": 27, - "max_address_length": 34, - "bitcore": [ - "https://ltc-bitcore3.trezor.io" - ] + "coin_name": "Litecoin", + "coin_shortcut": "LTC", + "coin_label": "Litecoin", + "website": "https://litecoin.org", + "github": "https://github.com/litecoin-project/litecoin", + "maintainer": "Pavol Rusnak ", + "curve_name": "secp256k1", + "address_type": 48, + "address_type_p2sh": 50, + "maxfee_kb": 40000000, + "minfee_kb": 100000, + "signed_message_header": "Litecoin Signed Message:\n", + "hash_genesis_block": "12a765e31ffd4059bada1e25190f6e98c99d9714d334efa41a195a7e7e04bfe2", + "xprv_magic": "019d9cfe", + "xpub_magic": "019da462", + "xpub_magic_segwit_p2sh": "01b26ef6", + "xpub_magic_segwit_native": null, + "bech32_prefix": "ltc", + "cashaddr_prefix": null, + "slip44": 2, + "segwit": true, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 1000 + }, + "dust_limit": 54600, + "blocktime_seconds": 150, + "address_prefix": "litecoin:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "https://ltc-bitcore3.trezor.io" + ], + "blockbook": [] } diff --git a/defs/coins/litecoin_testnet.json b/defs/coins/litecoin_testnet.json index 6c5c59df9..cbcf88a15 100644 --- a/defs/coins/litecoin_testnet.json +++ b/defs/coins/litecoin_testnet.json @@ -1,37 +1,38 @@ { - "coin_name": "Litecoin Testnet", - "coin_shortcut": "TLTC", - "coin_label": "Litecoin Testnet", - "website": "https://litecoin.org", - "github": "https://github.com/litecoin-project/litecoin", - "maintainer": "Pavol Rusnak ", - "curve_name": "secp256k1", - "address_type": 111, - "address_type_p2sh": 58, - "maxfee_kb": 40000000, - "minfee_kb": 1000, - "signed_message_header": "Litecoin Signed Message:\n", - "hash_genesis_block": "4966625a4b2851d9fdee139e56211a0d88575f59ed816ff5e6a63deb4e3e29a0", - "xprv_magic": "04358394", - "xpub_magic": "043587cf", - "xpub_magic_segwit_p2sh": null, - "xpub_magic_segwit_native": null, - "bech32_prefix": "tltc", - "cashaddr_prefix": null, - "slip44": 1, - "segwit": true, - "decred": false, - "forkid": null, - "force_bip143": false, - "default_fee_b": { - "Normal": 10 - }, - "dust_limit": 54600, - "blocktime_seconds": 150, - "address_prefix": "litecoin:", - "min_address_length": 27, - "max_address_length": 34, - "bitcore": [ - "https://testnet.litecore.io" - ] + "coin_name": "Litecoin Testnet", + "coin_shortcut": "TLTC", + "coin_label": "Litecoin Testnet", + "website": "https://litecoin.org", + "github": "https://github.com/litecoin-project/litecoin", + "maintainer": "Pavol Rusnak ", + "curve_name": "secp256k1", + "address_type": 111, + "address_type_p2sh": 58, + "maxfee_kb": 40000000, + "minfee_kb": 1000, + "signed_message_header": "Litecoin Signed Message:\n", + "hash_genesis_block": "4966625a4b2851d9fdee139e56211a0d88575f59ed816ff5e6a63deb4e3e29a0", + "xprv_magic": "04358394", + "xpub_magic": "043587cf", + "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, + "bech32_prefix": "tltc", + "cashaddr_prefix": null, + "slip44": 1, + "segwit": true, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 54600, + "blocktime_seconds": 150, + "address_prefix": "litecoin:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "https://testnet.litecore.io" + ], + "blockbook": [] } diff --git a/defs/coins/monacoin.json b/defs/coins/monacoin.json index f30997de6..ff799d394 100644 --- a/defs/coins/monacoin.json +++ b/defs/coins/monacoin.json @@ -1,37 +1,38 @@ { - "coin_name": "Monacoin", - "coin_shortcut": "MONA", - "coin_label": "Monacoin", - "website": "https://monacoin.org", - "github": "https://github.com/monacoinproject/monacoin", - "maintainer": "cryptcoin-junkey ", - "curve_name": "secp256k1", - "address_type": 50, - "address_type_p2sh": 55, - "maxfee_kb": 5000000, - "minfee_kb": 100000, - "signed_message_header": "Monacoin Signed Message:\n", - "hash_genesis_block": "ff9f1c0116d19de7c9963845e129f9ed1bfc0b376eb54fd7afa42e0d418c8bb6", - "xpub_magic": "0488b21e", - "xprv_magic": "0488ade4", - "xpub_magic_segwit_p2sh": "049d7cb2", - "xpub_magic_segwit_native": null, - "bech32_prefix": "mona", - "cashaddr_prefix": null, - "slip44": 22, - "segwit": true, - "decred": false, - "forkid": null, - "force_bip143": false, - "default_fee_b": { - "Normal": 100000 - }, - "dust_limit": 54600, - "blocktime_seconds": 90, - "address_prefix": "monacoin:", - "min_address_length": 27, - "max_address_length": 34, - "bitcore": [ - "https://mona.chainsight.info" - ] + "coin_name": "Monacoin", + "coin_shortcut": "MONA", + "coin_label": "Monacoin", + "website": "https://monacoin.org", + "github": "https://github.com/monacoinproject/monacoin", + "maintainer": "cryptcoin-junkey ", + "curve_name": "secp256k1", + "address_type": 50, + "address_type_p2sh": 55, + "maxfee_kb": 5000000, + "minfee_kb": 100000, + "signed_message_header": "Monacoin Signed Message:\n", + "hash_genesis_block": "ff9f1c0116d19de7c9963845e129f9ed1bfc0b376eb54fd7afa42e0d418c8bb6", + "xpub_magic": "0488b21e", + "xprv_magic": "0488ade4", + "xpub_magic_segwit_p2sh": "049d7cb2", + "xpub_magic_segwit_native": null, + "bech32_prefix": "mona", + "cashaddr_prefix": null, + "slip44": 22, + "segwit": true, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 100000 + }, + "dust_limit": 54600, + "blocktime_seconds": 90, + "address_prefix": "monacoin:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "https://mona.chainsight.info" + ], + "blockbook": [] } diff --git a/defs/coins/myriad.json b/defs/coins/myriad.json index 1c67083bd..b7db8ac24 100644 --- a/defs/coins/myriad.json +++ b/defs/coins/myriad.json @@ -1,38 +1,39 @@ { - "coin_name": "Myriad", - "coin_shortcut": "XMY", - "coin_label": "Myriad", - "curve_name": "secp256k1", - "website": "https://www.myriadcoin.org", - "github": "https://github.com/myriadcoin/myriadcoin", - "maintainer": "Adam Hickerson ", - "address_type": 50, - "address_type_p2sh": 9, - "maxfee_kb": 2000000, - "minfee_kb": 1000, - "signed_message_header": "Myriadcoin Signed Message:\n", - "hash_genesis_block": "00000ffde4c020b5938441a0ea3d314bf619eff0b38f32f78f7583cffa1ea485", - "xprv_magic": "0488ade4", - "xpub_magic": "0488b21e", - "xpub_magic_segwit_p2sh": null, - "xpub_magic_segwit_native": null, - "bech32_prefix": null, - "cashaddr_prefix": null, - "slip44": 90, - "segwit": true, - "decred": false, - "forkid": null, - "force_bip143": false, - "default_fee_b": { - "Low": 10, - "Economy": 70, - "Normal": 140, - "High": 200 - }, - "dust_limit": 546, - "blocktime_seconds": 60, - "address_prefix": "myriadcoin:", - "min_address_length": 27, - "max_address_length": 34, - "bitcore": [] + "coin_name": "Myriad", + "coin_shortcut": "XMY", + "coin_label": "Myriad", + "curve_name": "secp256k1", + "website": "https://www.myriadcoin.org", + "github": "https://github.com/myriadcoin/myriadcoin", + "maintainer": "Adam Hickerson ", + "address_type": 50, + "address_type_p2sh": 9, + "maxfee_kb": 2000000, + "minfee_kb": 1000, + "signed_message_header": "Myriadcoin Signed Message:\n", + "hash_genesis_block": "00000ffde4c020b5938441a0ea3d314bf619eff0b38f32f78f7583cffa1ea485", + "xprv_magic": "0488ade4", + "xpub_magic": "0488b21e", + "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "slip44": 90, + "segwit": true, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Low": 10, + "Economy": 70, + "Normal": 140, + "High": 200 + }, + "dust_limit": 546, + "blocktime_seconds": 60, + "address_prefix": "myriadcoin:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [], + "blockbook": [] } diff --git a/defs/coins/namecoin.json b/defs/coins/namecoin.json index 58d5c4964..b5d12a4f4 100644 --- a/defs/coins/namecoin.json +++ b/defs/coins/namecoin.json @@ -1,35 +1,36 @@ { - "coin_name": "Namecoin", - "coin_shortcut": "NMC", - "coin_label": "Namecoin", - "website": "https://namecoin.org", - "github": "https://github.com/namecoin/namecoin-core", - "maintainer": "Pavol Rusnak ", - "curve_name": "secp256k1", - "address_type": 52, - "address_type_p2sh": 5, - "maxfee_kb": 10000000, - "minfee_kb": 1000, - "signed_message_header": "Namecoin Signed Message:\n", - "hash_genesis_block": "000000000062b72c5e2ceb45fbc8587e807c155b0da735e6483dfba2f0a9c770", - "xprv_magic": "019d9cfe", - "xpub_magic": "019da462", - "xpub_magic_segwit_p2sh": null, - "xpub_magic_segwit_native": null, - "bech32_prefix": null, - "cashaddr_prefix": null, - "slip44": 7, - "segwit": false, - "decred": false, - "forkid": null, - "force_bip143": false, - "default_fee_b": { - "Normal": 10 - }, - "dust_limit": 2940, - "blocktime_seconds": 600, - "address_prefix": "namecoin:", - "min_address_length": 27, - "max_address_length": 34, - "bitcore": [] + "coin_name": "Namecoin", + "coin_shortcut": "NMC", + "coin_label": "Namecoin", + "website": "https://namecoin.org", + "github": "https://github.com/namecoin/namecoin-core", + "maintainer": "Pavol Rusnak ", + "curve_name": "secp256k1", + "address_type": 52, + "address_type_p2sh": 5, + "maxfee_kb": 10000000, + "minfee_kb": 1000, + "signed_message_header": "Namecoin Signed Message:\n", + "hash_genesis_block": "000000000062b72c5e2ceb45fbc8587e807c155b0da735e6483dfba2f0a9c770", + "xprv_magic": "019d9cfe", + "xpub_magic": "019da462", + "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "slip44": 7, + "segwit": false, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 2940, + "blocktime_seconds": 600, + "address_prefix": "namecoin:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [], + "blockbook": [] } diff --git a/defs/coins/terracoin.json b/defs/coins/terracoin.json index 410fdb660..ba7d43e4f 100644 --- a/defs/coins/terracoin.json +++ b/defs/coins/terracoin.json @@ -1,37 +1,38 @@ { - "coin_name": "Terracoin", - "coin_shortcut": "TRC", - "coin_label": "Terracoin", - "website": "https://terracoin.io", - "github": "https://github.com/terracoin/terracoin", - "maintainer": "Justin F. Hallett ", - "curve_name": "secp256k1", - "address_type": 0, - "address_type_p2sh": 5, - "maxfee_kb": 100000, - "minfee_kb": 10000, - "signed_message_header": "DarkCoin Signed Message:\n", - "hash_genesis_block": "00000000804bbc6a621a9dbb564ce469f492e1ccf2d70f8a6b241e26a277afa2", - "xprv_magic": "0488ade4", - "xpub_magic": "0488b21e", - "xpub_magic_segwit_p2sh": null, - "xpub_magic_segwit_native": null, - "bech32_prefix": null, - "cashaddr_prefix": null, - "slip44": 0, - "segwit": false, - "decred": false, - "forkid": null, - "force_bip143": false, - "default_fee_b": { - "Normal": 10 - }, - "dust_limit": 5460, - "blocktime_seconds": 120, - "address_prefix": "terracoin:", - "min_address_length": 27, - "max_address_length": 34, - "bitcore": [ - "https://insight.terracoin.io" - ] + "coin_name": "Terracoin", + "coin_shortcut": "TRC", + "coin_label": "Terracoin", + "website": "https://terracoin.io", + "github": "https://github.com/terracoin/terracoin", + "maintainer": "Justin F. Hallett ", + "curve_name": "secp256k1", + "address_type": 0, + "address_type_p2sh": 5, + "maxfee_kb": 100000, + "minfee_kb": 10000, + "signed_message_header": "DarkCoin Signed Message:\n", + "hash_genesis_block": "00000000804bbc6a621a9dbb564ce469f492e1ccf2d70f8a6b241e26a277afa2", + "xprv_magic": "0488ade4", + "xpub_magic": "0488b21e", + "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "slip44": 0, + "segwit": false, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 5460, + "blocktime_seconds": 120, + "address_prefix": "terracoin:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "https://insight.terracoin.io" + ], + "blockbook": [] } diff --git a/defs/coins/vertcoin.json b/defs/coins/vertcoin.json index 338300a63..69026886a 100644 --- a/defs/coins/vertcoin.json +++ b/defs/coins/vertcoin.json @@ -1,35 +1,36 @@ { - "coin_name": "Vertcoin", - "coin_shortcut": "VTC", - "coin_label": "Vertcoin", - "website": "https://vertcoin.org", - "github": "https://github.com/vertcoin-project/vertcoin-core", - "maintainer": "Jochen Hoenicke ", - "curve_name": "secp256k1", - "address_type": 71, - "address_type_p2sh": 5, - "maxfee_kb": 40000000, - "minfee_kb": 100000, - "signed_message_header": "Vertcoin Signed Message:\n", - "hash_genesis_block": "4d96a915f49d40b1e5c2844d1ee2dccb90013a990ccea12c492d22110489f0c4", - "xprv_magic": "0488ade4", - "xpub_magic": "0488b21e", - "xpub_magic_segwit_p2sh": "049d7cb2", - "xpub_magic_segwit_native": null, - "bech32_prefix": "vtc", - "cashaddr_prefix": null, - "slip44": 28, - "segwit": true, - "decred": false, - "forkid": null, - "force_bip143": false, - "default_fee_b": { - "Normal": 1000 - }, - "dust_limit": 54600, - "blocktime_seconds": 150, - "address_prefix": "vertcoin:", - "min_address_length": 27, - "max_address_length": 34, - "bitcore": [] + "coin_name": "Vertcoin", + "coin_shortcut": "VTC", + "coin_label": "Vertcoin", + "website": "https://vertcoin.org", + "github": "https://github.com/vertcoin-project/vertcoin-core", + "maintainer": "Jochen Hoenicke ", + "curve_name": "secp256k1", + "address_type": 71, + "address_type_p2sh": 5, + "maxfee_kb": 40000000, + "minfee_kb": 100000, + "signed_message_header": "Vertcoin Signed Message:\n", + "hash_genesis_block": "4d96a915f49d40b1e5c2844d1ee2dccb90013a990ccea12c492d22110489f0c4", + "xprv_magic": "0488ade4", + "xpub_magic": "0488b21e", + "xpub_magic_segwit_p2sh": "049d7cb2", + "xpub_magic_segwit_native": null, + "bech32_prefix": "vtc", + "cashaddr_prefix": null, + "slip44": 28, + "segwit": true, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 1000 + }, + "dust_limit": 54600, + "blocktime_seconds": 150, + "address_prefix": "vertcoin:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [], + "blockbook": [] } diff --git a/defs/coins/viacoin.json b/defs/coins/viacoin.json index 719345616..b0c1df9da 100644 --- a/defs/coins/viacoin.json +++ b/defs/coins/viacoin.json @@ -1,40 +1,41 @@ { - "coin_name": "Viacoin", - "coin_shortcut": "VIA", - "coin_label": "Viacoin", - "website": "https://viacoin.org", - "github": "https://github.com/viacoin", - "maintainer": "romanornr ", - "curve_name": "secp256k1", - "address_type": 71, - "address_type_p2sh": 33, - "maxfee_kb": 40000000, - "minfee_kb": 1000, - "signed_message_header": "Viacoin Signed Message:\n", - "hash_genesis_block": "4e9b54001f9976049830128ec0331515eaabe35a70970d79971da1539a400ba1", - "xprv_magic": "0488ade4", - "xpub_magic": "0488b21e", - "xpub_magic_segwit_p2sh": "049d7cb2", - "xpub_magic_segwit_native": null, - "bech32_prefix": "via", - "cashaddr_prefix": null, - "slip44": 14, - "segwit": true, - "decred": false, - "forkid": null, - "force_bip143": false, - "default_fee_b": { - "Low": 1000, - "Economy": 7000, - "Normal": 14000, - "High": 20000 - }, - "dust_limit": 54600, - "blocktime_seconds": 24, - "address_prefix": "viacoin:", - "min_address_length": 27, - "max_address_length": 34, - "bitcore": [ - "https://explorer.viacoin.org" - ] + "coin_name": "Viacoin", + "coin_shortcut": "VIA", + "coin_label": "Viacoin", + "website": "https://viacoin.org", + "github": "https://github.com/viacoin", + "maintainer": "romanornr ", + "curve_name": "secp256k1", + "address_type": 71, + "address_type_p2sh": 33, + "maxfee_kb": 40000000, + "minfee_kb": 1000, + "signed_message_header": "Viacoin Signed Message:\n", + "hash_genesis_block": "4e9b54001f9976049830128ec0331515eaabe35a70970d79971da1539a400ba1", + "xprv_magic": "0488ade4", + "xpub_magic": "0488b21e", + "xpub_magic_segwit_p2sh": "049d7cb2", + "xpub_magic_segwit_native": null, + "bech32_prefix": "via", + "cashaddr_prefix": null, + "slip44": 14, + "segwit": true, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Low": 1000, + "Economy": 7000, + "Normal": 14000, + "High": 20000 + }, + "dust_limit": 54600, + "blocktime_seconds": 24, + "address_prefix": "viacoin:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "https://explorer.viacoin.org" + ], + "blockbook": [] } diff --git a/defs/coins/zcash.json b/defs/coins/zcash.json index f19d7a065..67b7a6927 100644 --- a/defs/coins/zcash.json +++ b/defs/coins/zcash.json @@ -1,37 +1,38 @@ { - "coin_name": "Zcash", - "coin_shortcut": "ZEC", - "coin_label": "Zcash", - "website": "https://z.cash", - "github": "https://github.com/zcash/zcash", - "maintainer": "Pavol Rusnak ", - "curve_name": "secp256k1", - "address_type": 7352, - "address_type_p2sh": 7357, - "maxfee_kb": 1000000, - "minfee_kb": 1000, - "signed_message_header": "Zcash Signed Message:\n", - "hash_genesis_block": "00040fe8ec8471911baa1db1266ea15dd06b4a8a5c453883c000b031973dce08", - "xprv_magic": "0488ade4", - "xpub_magic": "0488b21e", - "xpub_magic_segwit_p2sh": null, - "xpub_magic_segwit_native": null, - "bech32_prefix": null, - "cashaddr_prefix": null, - "slip44": 133, - "segwit": false, - "decred": false, - "forkid": null, - "force_bip143": false, - "default_fee_b": { - "Normal": 10 - }, - "dust_limit": 546, - "blocktime_seconds": 150, - "address_prefix": "zcash:", - "min_address_length": 35, - "max_address_length": 95, - "bitcore": [ - "https://zec-bitcore1.trezor.io" - ] + "coin_name": "Zcash", + "coin_shortcut": "ZEC", + "coin_label": "Zcash", + "website": "https://z.cash", + "github": "https://github.com/zcash/zcash", + "maintainer": "Pavol Rusnak ", + "curve_name": "secp256k1", + "address_type": 7352, + "address_type_p2sh": 7357, + "maxfee_kb": 1000000, + "minfee_kb": 1000, + "signed_message_header": "Zcash Signed Message:\n", + "hash_genesis_block": "00040fe8ec8471911baa1db1266ea15dd06b4a8a5c453883c000b031973dce08", + "xprv_magic": "0488ade4", + "xpub_magic": "0488b21e", + "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "slip44": 133, + "segwit": false, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 546, + "blocktime_seconds": 150, + "address_prefix": "zcash:", + "min_address_length": 35, + "max_address_length": 95, + "bitcore": [ + "https://zec-bitcore1.trezor.io" + ], + "blockbook": [] } diff --git a/defs/coins/zcash_testnet.json b/defs/coins/zcash_testnet.json index 70a16cd30..bd1a7335d 100644 --- a/defs/coins/zcash_testnet.json +++ b/defs/coins/zcash_testnet.json @@ -1,35 +1,36 @@ { - "coin_name": "Zcash Testnet", - "coin_shortcut": "TAZ", - "coin_label": "Zcash Testnet", - "website": "https://z.cash", - "github": "https://github.com/zcash/zcash", - "maintainer": "Pavol Rusnak ", - "curve_name": "secp256k1", - "address_type": 7461, - "address_type_p2sh": 7354, - "maxfee_kb": 10000000, - "minfee_kb": 1000, - "signed_message_header": "Zcash Signed Message:\n", - "hash_genesis_block": "05a60a92d99d85997cce3b87616c089f6124d7342af37106edc76126334a2c38", - "xprv_magic": "04358394", - "xpub_magic": "043587cf", - "xpub_magic_segwit_p2sh": null, - "xpub_magic_segwit_native": null, - "bech32_prefix": null, - "cashaddr_prefix": null, - "slip44": 1, - "segwit": false, - "decred": false, - "forkid": null, - "force_bip143": false, - "default_fee_b": { - "Normal": 10 - }, - "dust_limit": 546, - "blocktime_seconds": 150, - "address_prefix": "zcash:", - "min_address_length": 35, - "max_address_length": 95, - "bitcore": [] + "coin_name": "Zcash Testnet", + "coin_shortcut": "TAZ", + "coin_label": "Zcash Testnet", + "website": "https://z.cash", + "github": "https://github.com/zcash/zcash", + "maintainer": "Pavol Rusnak ", + "curve_name": "secp256k1", + "address_type": 7461, + "address_type_p2sh": 7354, + "maxfee_kb": 10000000, + "minfee_kb": 1000, + "signed_message_header": "Zcash Signed Message:\n", + "hash_genesis_block": "05a60a92d99d85997cce3b87616c089f6124d7342af37106edc76126334a2c38", + "xprv_magic": "04358394", + "xpub_magic": "043587cf", + "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "slip44": 1, + "segwit": false, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 546, + "blocktime_seconds": 150, + "address_prefix": "zcash:", + "min_address_length": 35, + "max_address_length": 95, + "bitcore": [], + "blockbook": [] } diff --git a/defs/coins/zcoin.json b/defs/coins/zcoin.json index 45ce95d1a..6d899de96 100644 --- a/defs/coins/zcoin.json +++ b/defs/coins/zcoin.json @@ -1,40 +1,41 @@ { - "coin_name": "Zcoin", - "coin_shortcut": "XZC", - "coin_label": "Zcoin", - "website": "https://zcoin.io", - "github": "https://github.com/zcoinofficial/zcoin", - "maintainer": "Yura Pakhuchiy ", - "curve_name": "secp256k1", - "address_type": 82, - "address_type_p2sh": 7, - "maxfee_kb": 1000000, - "minfee_kb": 0, - "signed_message_header": "Zcoin Signed Message:\n", - "hash_genesis_block": "4381deb85b1b2c9843c222944b616d997516dcbd6a964e1eaf0def0830695233", - "xprv_magic": "0488ade4", - "xpub_magic": "0488b21e", - "xpub_magic_segwit_p2sh": null, - "xpub_magic_segwit_native": null, - "bech32_prefix": null, - "cashaddr_prefix": null, - "slip44": 136, - "segwit": false, - "decred": false, - "forkid": null, - "force_bip143": false, - "default_fee_b": { - "Low": 1, - "Economy": 10, - "Normal": 100, - "High": 200 - }, - "dust_limit": 546, - "blocktime_seconds": 600, - "address_prefix": "zcoin:", - "min_address_length": 27, - "max_address_length": 34, - "bitcore": [ - "https://insight.zcoin.io" - ] + "coin_name": "Zcoin", + "coin_shortcut": "XZC", + "coin_label": "Zcoin", + "website": "https://zcoin.io", + "github": "https://github.com/zcoinofficial/zcoin", + "maintainer": "Yura Pakhuchiy ", + "curve_name": "secp256k1", + "address_type": 82, + "address_type_p2sh": 7, + "maxfee_kb": 1000000, + "minfee_kb": 0, + "signed_message_header": "Zcoin Signed Message:\n", + "hash_genesis_block": "4381deb85b1b2c9843c222944b616d997516dcbd6a964e1eaf0def0830695233", + "xprv_magic": "0488ade4", + "xpub_magic": "0488b21e", + "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "slip44": 136, + "segwit": false, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Low": 1, + "Economy": 10, + "Normal": 100, + "High": 200 + }, + "dust_limit": 546, + "blocktime_seconds": 600, + "address_prefix": "zcoin:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "https://insight.zcoin.io" + ], + "blockbook": [] } diff --git a/defs/coins/zcoin_testnet.json b/defs/coins/zcoin_testnet.json index 66eb0eea4..e6e05a5ae 100644 --- a/defs/coins/zcoin_testnet.json +++ b/defs/coins/zcoin_testnet.json @@ -1,38 +1,39 @@ { - "coin_name": "Zcoin Testnet", - "coin_shortcut": "tXZC", - "coin_label": "Zcoin Testnet", - "website": "https://zcoin.io", - "github": "https://github.com/zcoinofficial/zcoin", - "maintainer": "Yura Pakhuchiy ", - "curve_name": "secp256k1", - "address_type": 65, - "address_type_p2sh": 178, - "maxfee_kb": 1000000, - "minfee_kb": 0, - "signed_message_header": "Zcoin Signed Message:\n", - "hash_genesis_block": "7ac038c193c2158c428c59f9ae0c02a07115141c6e9dc244ae96132e99b4e642", - "xprv_magic": "04358394", - "xpub_magic": "043587cf", - "xpub_magic_segwit_p2sh": null, - "xpub_magic_segwit_native": null, - "bech32_prefix": null, - "cashaddr_prefix": null, - "slip44": 1, - "segwit": false, - "decred": false, - "forkid": null, - "force_bip143": false, - "default_fee_b": { - "Low": 1, - "Economy": 10, - "Normal": 100, - "High": 200 - }, - "dust_limit": 546, - "blocktime_seconds": 600, - "address_prefix": "testzcoin:", - "min_address_length": 27, - "max_address_length": 35, - "bitcore": [] + "coin_name": "Zcoin Testnet", + "coin_shortcut": "tXZC", + "coin_label": "Zcoin Testnet", + "website": "https://zcoin.io", + "github": "https://github.com/zcoinofficial/zcoin", + "maintainer": "Yura Pakhuchiy ", + "curve_name": "secp256k1", + "address_type": 65, + "address_type_p2sh": 178, + "maxfee_kb": 1000000, + "minfee_kb": 0, + "signed_message_header": "Zcoin Signed Message:\n", + "hash_genesis_block": "7ac038c193c2158c428c59f9ae0c02a07115141c6e9dc244ae96132e99b4e642", + "xprv_magic": "04358394", + "xpub_magic": "043587cf", + "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "slip44": 1, + "segwit": false, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Low": 1, + "Economy": 10, + "Normal": 100, + "High": 200 + }, + "dust_limit": 546, + "blocktime_seconds": 600, + "address_prefix": "testzcoin:", + "min_address_length": 27, + "max_address_length": 35, + "bitcore": [], + "blockbook": [] } From 7f2f37c62e57c339d05964f6870b0535ef939be3 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Sat, 28 Apr 2018 19:14:28 +0100 Subject: [PATCH 298/767] defs: use plain ints for coin defs --- defs/coins/bcash.json | 4 ++-- defs/coins/bcash_testnet.json | 4 ++-- defs/coins/bgold.json | 6 +++--- defs/coins/bitcoin.json | 8 ++++---- defs/coins/bitcoin_testnet.json | 6 +++--- defs/coins/bitcore.json | 6 +++--- defs/coins/bprivate.json | 4 ++-- defs/coins/crown.json | 4 ++-- defs/coins/dash.json | 4 ++-- defs/coins/dash_testnet.json | 4 ++-- defs/coins/decred_testnet.json | 4 ++-- defs/coins/denarius.json | 4 ++-- defs/coins/digibyte.json | 6 +++--- defs/coins/dogecoin.json | 4 ++-- defs/coins/flashcoin.json | 6 +++--- defs/coins/fujicoin.json | 6 +++--- defs/coins/groestlcoin.json | 6 +++--- defs/coins/litecoin.json | 6 +++--- defs/coins/litecoin_testnet.json | 4 ++-- defs/coins/monacoin.json | 6 +++--- defs/coins/myriad.json | 4 ++-- defs/coins/namecoin.json | 4 ++-- defs/coins/terracoin.json | 4 ++-- defs/coins/vertcoin.json | 6 +++--- defs/coins/viacoin.json | 6 +++--- defs/coins/zcash.json | 4 ++-- defs/coins/zcash_testnet.json | 4 ++-- defs/coins/zcoin.json | 4 ++-- defs/coins/zcoin_testnet.json | 4 ++-- 29 files changed, 71 insertions(+), 71 deletions(-) diff --git a/defs/coins/bcash.json b/defs/coins/bcash.json index 76e754841..dbbf52375 100644 --- a/defs/coins/bcash.json +++ b/defs/coins/bcash.json @@ -12,8 +12,8 @@ "minfee_kb": 1000, "signed_message_header": "Bitcoin Signed Message:\n", "hash_genesis_block": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", - "xprv_magic": "0488ade4", - "xpub_magic": "0488b21e", + "xprv_magic": 76066276, + "xpub_magic": 76067358, "xpub_magic_segwit_p2sh": null, "xpub_magic_segwit_native": null, "bech32_prefix": null, diff --git a/defs/coins/bcash_testnet.json b/defs/coins/bcash_testnet.json index 3ab0a42e1..940ed1b1e 100644 --- a/defs/coins/bcash_testnet.json +++ b/defs/coins/bcash_testnet.json @@ -12,8 +12,8 @@ "minfee_kb": 1000, "signed_message_header": "Bitcoin Signed Message:\n", "hash_genesis_block": "000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943", - "xprv_magic": "04358394", - "xpub_magic": "043587cf", + "xprv_magic": 70615956, + "xpub_magic": 70617039, "xpub_magic_segwit_p2sh": null, "xpub_magic_segwit_native": null, "bech32_prefix": null, diff --git a/defs/coins/bgold.json b/defs/coins/bgold.json index b42546388..02ead2303 100644 --- a/defs/coins/bgold.json +++ b/defs/coins/bgold.json @@ -12,9 +12,9 @@ "minfee_kb": 1000, "signed_message_header": "Bitcoin Gold Signed Message:\n", "hash_genesis_block": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", - "xprv_magic": "0488ade4", - "xpub_magic": "0488b21e", - "xpub_magic_segwit_p2sh": "049d7cb2", + "xprv_magic": 76066276, + "xpub_magic": 76067358, + "xpub_magic_segwit_p2sh": 77429938, "xpub_magic_segwit_native": null, "bech32_prefix": "btg", "cashaddr_prefix": null, diff --git a/defs/coins/bitcoin.json b/defs/coins/bitcoin.json index 00eb68c1a..a2df42850 100644 --- a/defs/coins/bitcoin.json +++ b/defs/coins/bitcoin.json @@ -12,10 +12,10 @@ "minfee_kb": 1000, "signed_message_header": "Bitcoin Signed Message:\n", "hash_genesis_block": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", - "xprv_magic": "0488ade4", - "xpub_magic": "0488b21e", - "xpub_magic_segwit_p2sh": "049d7cb2", - "xpub_magic_segwit_native": "04b24746", + "xprv_magic": 76066276, + "xpub_magic": 76067358, + "xpub_magic_segwit_p2sh": 77429938, + "xpub_magic_segwit_native": 78792518, "bech32_prefix": "bc", "cashaddr_prefix": null, "slip44": 0, diff --git a/defs/coins/bitcoin_testnet.json b/defs/coins/bitcoin_testnet.json index cbe5b273b..9097b0d66 100644 --- a/defs/coins/bitcoin_testnet.json +++ b/defs/coins/bitcoin_testnet.json @@ -12,9 +12,9 @@ "minfee_kb": 1000, "signed_message_header": "Bitcoin Signed Message:\n", "hash_genesis_block": "000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943", - "xprv_magic": "04358394", - "xpub_magic": "043587cf", - "xpub_magic_segwit_p2sh": "044a5262", + "xprv_magic": 70615956, + "xpub_magic": 70617039, + "xpub_magic_segwit_p2sh": 71979618, "xpub_magic_segwit_native": null, "bech32_prefix": "tb", "cashaddr_prefix": null, diff --git a/defs/coins/bitcore.json b/defs/coins/bitcore.json index 309f6e2db..9525fe497 100644 --- a/defs/coins/bitcore.json +++ b/defs/coins/bitcore.json @@ -12,9 +12,9 @@ "minfee_kb": 1000, "signed_message_header": "Bitcore Signed Message:\n", "hash_genesis_block": "604148281e5c4b7f2487e5d03cd60d8e6f69411d613f6448034508cea52e9574", - "xprv_magic": "0488ade4", - "xpub_magic": "0488b21e", - "xpub_magic_segwit_p2sh": "049d7cb2", + "xprv_magic": 76066276, + "xpub_magic": 76067358, + "xpub_magic_segwit_p2sh": 77429938, "xpub_magic_segwit_native": null, "bech32_prefix": "bc", "cashaddr_prefix": null, diff --git a/defs/coins/bprivate.json b/defs/coins/bprivate.json index 9751da15e..5d9cf4c60 100644 --- a/defs/coins/bprivate.json +++ b/defs/coins/bprivate.json @@ -12,8 +12,8 @@ "minfee_kb": 1000, "signed_message_header": "BitcoinPrivate Signed Message:\n", "hash_genesis_block": "0007104ccda289427919efc39dc9e4d499804b7bebc22df55f8b834301260602", - "xprv_magic": "0488ade4", - "xpub_magic": "0488b21e", + "xprv_magic": 76066276, + "xpub_magic": 76067358, "xpub_magic_segwit_p2sh": null, "xpub_magic_segwit_native": null, "bech32_prefix": null, diff --git a/defs/coins/crown.json b/defs/coins/crown.json index 655df38fd..532ee5104 100644 --- a/defs/coins/crown.json +++ b/defs/coins/crown.json @@ -12,8 +12,8 @@ "minfee_kb": 1000, "signed_message_header": "Crown Signed Message:\n", "hash_genesis_block": "0000000085370d5e122f64f4ab19c68614ff3df78c8d13cb814fd7e69a1dc6da", - "xprv_magic": "0488ade4", - "xpub_magic": "0488b21e", + "xprv_magic": 76066276, + "xpub_magic": 76067358, "xpub_magic_segwit_p2sh": null, "xpub_magic_segwit_native": null, "bech32_prefix": null, diff --git a/defs/coins/dash.json b/defs/coins/dash.json index 3dcc7fb17..b5d7e5731 100644 --- a/defs/coins/dash.json +++ b/defs/coins/dash.json @@ -12,8 +12,8 @@ "minfee_kb": 10000, "signed_message_header": "DarkCoin Signed Message:\n", "hash_genesis_block": "00000ffd590b1485b3caadc19b22e6379c733355108f107a430458cdf3407ab6", - "xprv_magic": "02fe52f8", - "xpub_magic": "02fe52cc", + "xprv_magic": 50221816, + "xpub_magic": 50221772, "xpub_magic_segwit_p2sh": null, "xpub_magic_segwit_native": null, "bech32_prefix": null, diff --git a/defs/coins/dash_testnet.json b/defs/coins/dash_testnet.json index 7927473ff..5e834f15a 100644 --- a/defs/coins/dash_testnet.json +++ b/defs/coins/dash_testnet.json @@ -12,8 +12,8 @@ "minfee_kb": 10000, "signed_message_header": "DarkCoin Signed Message:\n", "hash_genesis_block": "00000bafbc94add76cb75e2ec92894837288a481e5c005f6563d91623bf8bc2c", - "xprv_magic": "04358394", - "xpub_magic": "043587cf", + "xprv_magic": 70615956, + "xpub_magic": 70617039, "xpub_magic_segwit_p2sh": null, "xpub_magic_segwit_native": null, "bech32_prefix": null, diff --git a/defs/coins/decred_testnet.json b/defs/coins/decred_testnet.json index 673eea979..a54a6b30d 100644 --- a/defs/coins/decred_testnet.json +++ b/defs/coins/decred_testnet.json @@ -12,8 +12,8 @@ "minfee_kb": 1000, "signed_message_header": "Decred Signed Message:\n", "hash_genesis_block": "4261602a9d07d80ad47621a64ba6a07754902e496777edc4ff581946bd7bc29c", - "xprv_magic": "04358397", - "xpub_magic": "043587d1", + "xprv_magic": 70615959, + "xpub_magic": 70617041, "xpub_magic_segwit_p2sh": null, "xpub_magic_segwit_native": null, "bech32_prefix": null, diff --git a/defs/coins/denarius.json b/defs/coins/denarius.json index 485f220d7..972148618 100644 --- a/defs/coins/denarius.json +++ b/defs/coins/denarius.json @@ -12,8 +12,8 @@ "minfee_kb": 10000, "signed_message_header": "Denarius Signed Message:\n", "hash_genesis_block": "00000d5dbbda01621cfc16bbc1f9bf3264d641a5dbf0de89fd0182c2c4828fcd", - "xprv_magic": "0488ade4", - "xpub_magic": "0488b21e", + "xprv_magic": 76066276, + "xpub_magic": 76067358, "xpub_magic_segwit_p2sh": null, "xpub_magic_segwit_native": null, "bech32_prefix": null, diff --git a/defs/coins/digibyte.json b/defs/coins/digibyte.json index bf4b10ef6..8d108b6b1 100644 --- a/defs/coins/digibyte.json +++ b/defs/coins/digibyte.json @@ -12,9 +12,9 @@ "minfee_kb": 1000, "signed_message_header": "DigiByte Signed Message:\n", "hash_genesis_block": "7497ea1b465eb39f1c8f507bc877078fe016d6fcb6dfad3a64c98dcc6e1e8496", - "xprv_magic": "0488ade4", - "xpub_magic": "0488b21e", - "xpub_magic_segwit_p2sh": "049d7cb2", + "xprv_magic": 76066276, + "xpub_magic": 76067358, + "xpub_magic_segwit_p2sh": 77429938, "xpub_magic_segwit_native": null, "bech32_prefix": "dgb", "cashaddr_prefix": null, diff --git a/defs/coins/dogecoin.json b/defs/coins/dogecoin.json index e0d5b6d6d..3ff4245a5 100644 --- a/defs/coins/dogecoin.json +++ b/defs/coins/dogecoin.json @@ -12,8 +12,8 @@ "minfee_kb": 1000, "signed_message_header": "Dogecoin Signed Message:\n", "hash_genesis_block": "1a91e3dace36e2be3bf030a65679fe821aa1d6ef92e7c9902eb318182c355691", - "xprv_magic": "02fac398", - "xpub_magic": "02facafd", + "xprv_magic": 49988504, + "xpub_magic": 49990397, "xpub_magic_segwit_p2sh": null, "xpub_magic_segwit_native": null, "bech32_prefix": null, diff --git a/defs/coins/flashcoin.json b/defs/coins/flashcoin.json index 9e529f49b..0bff965a6 100644 --- a/defs/coins/flashcoin.json +++ b/defs/coins/flashcoin.json @@ -12,9 +12,9 @@ "minfee_kb": 1000, "signed_message_header": "Flashcoin Signed Message:\n", "hash_genesis_block": "aa0cf4f5ce0a3c550ce5674c1e808c417cf5077b4e95bda1d6fbaeaf4258972b", - "xprv_magic": "0488ade4", - "xpub_magic": "0488b21e", - "xpub_magic_segwit_p2sh": "049d7cb2", + "xprv_magic": 76066276, + "xpub_magic": 76067358, + "xpub_magic_segwit_p2sh": 77429938, "xpub_magic_segwit_native": null, "bech32_prefix": null, "cashaddr_prefix": null, diff --git a/defs/coins/fujicoin.json b/defs/coins/fujicoin.json index 8d14b3493..128fcf23a 100644 --- a/defs/coins/fujicoin.json +++ b/defs/coins/fujicoin.json @@ -12,9 +12,9 @@ "minfee_kb": 100000, "signed_message_header": "FujiCoin Signed Message:\n", "hash_genesis_block": "adb6d9cfd74075e7f91608add4bd2a2ea636f70856183086842667a1597714a0", - "xpub_magic": "0488b21e", - "xprv_magic": "0488ade4", - "xpub_magic_segwit_p2sh": "049d7cb2", + "xpub_magic": 76067358, + "xprv_magic": 76066276, + "xpub_magic_segwit_p2sh": 77429938, "xpub_magic_segwit_native": null, "bech32_prefix": "fc", "cashaddr_prefix": null, diff --git a/defs/coins/groestlcoin.json b/defs/coins/groestlcoin.json index 075ef8972..0016046e0 100644 --- a/defs/coins/groestlcoin.json +++ b/defs/coins/groestlcoin.json @@ -12,9 +12,9 @@ "minfee_kb": 1000, "signed_message_header": "GroestlCoin Signed Message:\n", "hash_genesis_block": "00000ac5927c594d49cc0bdb81759d0da8297eb614683d3acb62f0703b639023", - "xprv_magic": "0488ade4", - "xpub_magic": "0488b21e", - "xpub_magic_segwit_p2sh": "049d7cb2", + "xprv_magic": 76066276, + "xpub_magic": 76067358, + "xpub_magic_segwit_p2sh": 77429938, "xpub_magic_segwit_native": null, "bech32_prefix": "grs", "cashaddr_prefix": null, diff --git a/defs/coins/litecoin.json b/defs/coins/litecoin.json index bcab64b93..9f93e72f3 100644 --- a/defs/coins/litecoin.json +++ b/defs/coins/litecoin.json @@ -12,9 +12,9 @@ "minfee_kb": 100000, "signed_message_header": "Litecoin Signed Message:\n", "hash_genesis_block": "12a765e31ffd4059bada1e25190f6e98c99d9714d334efa41a195a7e7e04bfe2", - "xprv_magic": "019d9cfe", - "xpub_magic": "019da462", - "xpub_magic_segwit_p2sh": "01b26ef6", + "xprv_magic": 27106558, + "xpub_magic": 27108450, + "xpub_magic_segwit_p2sh": 28471030, "xpub_magic_segwit_native": null, "bech32_prefix": "ltc", "cashaddr_prefix": null, diff --git a/defs/coins/litecoin_testnet.json b/defs/coins/litecoin_testnet.json index cbcf88a15..6010158a5 100644 --- a/defs/coins/litecoin_testnet.json +++ b/defs/coins/litecoin_testnet.json @@ -12,8 +12,8 @@ "minfee_kb": 1000, "signed_message_header": "Litecoin Signed Message:\n", "hash_genesis_block": "4966625a4b2851d9fdee139e56211a0d88575f59ed816ff5e6a63deb4e3e29a0", - "xprv_magic": "04358394", - "xpub_magic": "043587cf", + "xprv_magic": 70615956, + "xpub_magic": 70617039, "xpub_magic_segwit_p2sh": null, "xpub_magic_segwit_native": null, "bech32_prefix": "tltc", diff --git a/defs/coins/monacoin.json b/defs/coins/monacoin.json index ff799d394..feca4e757 100644 --- a/defs/coins/monacoin.json +++ b/defs/coins/monacoin.json @@ -12,9 +12,9 @@ "minfee_kb": 100000, "signed_message_header": "Monacoin Signed Message:\n", "hash_genesis_block": "ff9f1c0116d19de7c9963845e129f9ed1bfc0b376eb54fd7afa42e0d418c8bb6", - "xpub_magic": "0488b21e", - "xprv_magic": "0488ade4", - "xpub_magic_segwit_p2sh": "049d7cb2", + "xpub_magic": 76067358, + "xprv_magic": 76066276, + "xpub_magic_segwit_p2sh": 77429938, "xpub_magic_segwit_native": null, "bech32_prefix": "mona", "cashaddr_prefix": null, diff --git a/defs/coins/myriad.json b/defs/coins/myriad.json index b7db8ac24..f731f8a9b 100644 --- a/defs/coins/myriad.json +++ b/defs/coins/myriad.json @@ -12,8 +12,8 @@ "minfee_kb": 1000, "signed_message_header": "Myriadcoin Signed Message:\n", "hash_genesis_block": "00000ffde4c020b5938441a0ea3d314bf619eff0b38f32f78f7583cffa1ea485", - "xprv_magic": "0488ade4", - "xpub_magic": "0488b21e", + "xprv_magic": 76066276, + "xpub_magic": 76067358, "xpub_magic_segwit_p2sh": null, "xpub_magic_segwit_native": null, "bech32_prefix": null, diff --git a/defs/coins/namecoin.json b/defs/coins/namecoin.json index b5d12a4f4..37d7ed72e 100644 --- a/defs/coins/namecoin.json +++ b/defs/coins/namecoin.json @@ -12,8 +12,8 @@ "minfee_kb": 1000, "signed_message_header": "Namecoin Signed Message:\n", "hash_genesis_block": "000000000062b72c5e2ceb45fbc8587e807c155b0da735e6483dfba2f0a9c770", - "xprv_magic": "019d9cfe", - "xpub_magic": "019da462", + "xprv_magic": 27106558, + "xpub_magic": 27108450, "xpub_magic_segwit_p2sh": null, "xpub_magic_segwit_native": null, "bech32_prefix": null, diff --git a/defs/coins/terracoin.json b/defs/coins/terracoin.json index ba7d43e4f..58b82a395 100644 --- a/defs/coins/terracoin.json +++ b/defs/coins/terracoin.json @@ -12,8 +12,8 @@ "minfee_kb": 10000, "signed_message_header": "DarkCoin Signed Message:\n", "hash_genesis_block": "00000000804bbc6a621a9dbb564ce469f492e1ccf2d70f8a6b241e26a277afa2", - "xprv_magic": "0488ade4", - "xpub_magic": "0488b21e", + "xprv_magic": 76066276, + "xpub_magic": 76067358, "xpub_magic_segwit_p2sh": null, "xpub_magic_segwit_native": null, "bech32_prefix": null, diff --git a/defs/coins/vertcoin.json b/defs/coins/vertcoin.json index 69026886a..fd75e878e 100644 --- a/defs/coins/vertcoin.json +++ b/defs/coins/vertcoin.json @@ -12,9 +12,9 @@ "minfee_kb": 100000, "signed_message_header": "Vertcoin Signed Message:\n", "hash_genesis_block": "4d96a915f49d40b1e5c2844d1ee2dccb90013a990ccea12c492d22110489f0c4", - "xprv_magic": "0488ade4", - "xpub_magic": "0488b21e", - "xpub_magic_segwit_p2sh": "049d7cb2", + "xprv_magic": 76066276, + "xpub_magic": 76067358, + "xpub_magic_segwit_p2sh": 77429938, "xpub_magic_segwit_native": null, "bech32_prefix": "vtc", "cashaddr_prefix": null, diff --git a/defs/coins/viacoin.json b/defs/coins/viacoin.json index b0c1df9da..312811cc1 100644 --- a/defs/coins/viacoin.json +++ b/defs/coins/viacoin.json @@ -12,9 +12,9 @@ "minfee_kb": 1000, "signed_message_header": "Viacoin Signed Message:\n", "hash_genesis_block": "4e9b54001f9976049830128ec0331515eaabe35a70970d79971da1539a400ba1", - "xprv_magic": "0488ade4", - "xpub_magic": "0488b21e", - "xpub_magic_segwit_p2sh": "049d7cb2", + "xprv_magic": 76066276, + "xpub_magic": 76067358, + "xpub_magic_segwit_p2sh": 77429938, "xpub_magic_segwit_native": null, "bech32_prefix": "via", "cashaddr_prefix": null, diff --git a/defs/coins/zcash.json b/defs/coins/zcash.json index 67b7a6927..1af17df39 100644 --- a/defs/coins/zcash.json +++ b/defs/coins/zcash.json @@ -12,8 +12,8 @@ "minfee_kb": 1000, "signed_message_header": "Zcash Signed Message:\n", "hash_genesis_block": "00040fe8ec8471911baa1db1266ea15dd06b4a8a5c453883c000b031973dce08", - "xprv_magic": "0488ade4", - "xpub_magic": "0488b21e", + "xprv_magic": 76066276, + "xpub_magic": 76067358, "xpub_magic_segwit_p2sh": null, "xpub_magic_segwit_native": null, "bech32_prefix": null, diff --git a/defs/coins/zcash_testnet.json b/defs/coins/zcash_testnet.json index bd1a7335d..7f1c0c992 100644 --- a/defs/coins/zcash_testnet.json +++ b/defs/coins/zcash_testnet.json @@ -12,8 +12,8 @@ "minfee_kb": 1000, "signed_message_header": "Zcash Signed Message:\n", "hash_genesis_block": "05a60a92d99d85997cce3b87616c089f6124d7342af37106edc76126334a2c38", - "xprv_magic": "04358394", - "xpub_magic": "043587cf", + "xprv_magic": 70615956, + "xpub_magic": 70617039, "xpub_magic_segwit_p2sh": null, "xpub_magic_segwit_native": null, "bech32_prefix": null, diff --git a/defs/coins/zcoin.json b/defs/coins/zcoin.json index 6d899de96..911f6e4ff 100644 --- a/defs/coins/zcoin.json +++ b/defs/coins/zcoin.json @@ -12,8 +12,8 @@ "minfee_kb": 0, "signed_message_header": "Zcoin Signed Message:\n", "hash_genesis_block": "4381deb85b1b2c9843c222944b616d997516dcbd6a964e1eaf0def0830695233", - "xprv_magic": "0488ade4", - "xpub_magic": "0488b21e", + "xprv_magic": 76066276, + "xpub_magic": 76067358, "xpub_magic_segwit_p2sh": null, "xpub_magic_segwit_native": null, "bech32_prefix": null, diff --git a/defs/coins/zcoin_testnet.json b/defs/coins/zcoin_testnet.json index e6e05a5ae..317ecbb41 100644 --- a/defs/coins/zcoin_testnet.json +++ b/defs/coins/zcoin_testnet.json @@ -12,8 +12,8 @@ "minfee_kb": 0, "signed_message_header": "Zcoin Signed Message:\n", "hash_genesis_block": "7ac038c193c2158c428c59f9ae0c02a07115141c6e9dc244ae96132e99b4e642", - "xprv_magic": "04358394", - "xpub_magic": "043587cf", + "xprv_magic": 70615956, + "xpub_magic": 70617039, "xpub_magic_segwit_p2sh": null, "xpub_magic_segwit_native": null, "bech32_prefix": null, From 81ca42a749b9497439ceb6198665ca83f8f966b5 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Sat, 28 Apr 2018 19:14:46 +0100 Subject: [PATCH 299/767] defs: move tools to def/coins/tools --- .gitignore | 1 + .travis.yml | 2 +- .../{combine.py => tools/build_coins.py} | 36 ++++++-- .../{schema.proto => tools/coindef.proto} | 3 +- defs/coins/tools/coindef.py | 91 +++++++++++++++++++ 5 files changed, 122 insertions(+), 11 deletions(-) create mode 100644 .gitignore rename defs/coins/{combine.py => tools/build_coins.py} (80%) rename defs/coins/{schema.proto => tools/coindef.proto} (97%) create mode 100644 defs/coins/tools/coindef.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..c18dd8d83 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +__pycache__/ diff --git a/.travis.yml b/.travis.yml index ce6b62d85..e745ab61a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,7 +13,7 @@ python: script: - python coins-check.py - - cd defs/coins && python combine.py + - cd defs/coins/tools && python build_coins.py notifications: webhooks: diff --git a/defs/coins/combine.py b/defs/coins/tools/build_coins.py similarity index 80% rename from defs/coins/combine.py rename to defs/coins/tools/build_coins.py index cdd08b775..4ab147978 100755 --- a/defs/coins/combine.py +++ b/defs/coins/tools/build_coins.py @@ -5,6 +5,10 @@ import glob import re from hashlib import sha256 import ed25519 +from binascii import unhexlify + +from trezorlib.protobuf import dump_message +from coindef import CoinDef def check_type(val, types, nullable=False, empty=False, regex=None, choice=None): @@ -50,10 +54,10 @@ def validate_coin(coin): assert check_type(coin['minfee_kb'], int) assert coin['maxfee_kb'] >= coin['minfee_kb'] assert check_type(coin['hash_genesis_block'], str, regex=r'^[0-9a-f]{64}$') - assert check_type(coin['xprv_magic'], str, regex=r'^[0-9a-f]{8}$') - assert check_type(coin['xpub_magic'], str, regex=r'^[0-9a-f]{8}$') - assert check_type(coin['xpub_magic_segwit_p2sh'], str, regex=r'^[0-9a-f]{8}$', nullable=True) - assert check_type(coin['xpub_magic_segwit_native'], str, regex=r'^[0-9a-f]{8}$', nullable=True) + assert check_type(coin['xprv_magic'], int) + assert check_type(coin['xpub_magic'], int) + assert check_type(coin['xpub_magic_segwit_p2sh'], int, nullable=True) + assert check_type(coin['xpub_magic_segwit_native'], int, nullable=True) assert coin['xprv_magic'] != coin['xpub_magic'] assert coin['xprv_magic'] != coin['xpub_magic_segwit_p2sh'] assert coin['xprv_magic'] != coin['xpub_magic_segwit_native'] @@ -80,9 +84,23 @@ def validate_coin(coin): assert not bc.endswith('/') +class Writer: + + def __init__(self): + self.buf = bytearray() + + def write(self, buf): + self.buf.extend(buf) + + def serialize(coin): - # TODO: replace with protobuf serialization - return json.dumps(coin).encode() + c = dict(coin) + c['signed_message_header'] = c['signed_message_header'].encode() + c['hash_genesis_block'] = unhexlify(c['hash_genesis_block']) + msg = CoinDef(**c) + w = Writer() + dump_message(w, msg) + return bytes(w.buf) def sign(data): @@ -104,12 +122,12 @@ def process_json(fn): coins = {} defs = {} -for fn in glob.glob('*.json'): +for fn in glob.glob('../*.json'): c, d = process_json(fn) n = c['coin_name'] coins[n] = c defs[n] = d -json.dump(coins, open('../coins.json', 'w'), indent=4, sort_keys=True) -json.dump(defs, open('../coindefs.json', 'w'), indent=4, sort_keys=True) +json.dump(coins, open('../../coins.json', 'w'), indent=4, sort_keys=True) +json.dump(defs, open('../../coindefs.json', 'w'), indent=4, sort_keys=True) diff --git a/defs/coins/schema.proto b/defs/coins/tools/coindef.proto similarity index 97% rename from defs/coins/schema.proto rename to defs/coins/tools/coindef.proto index 912e45f8e..9bf27cce6 100644 --- a/defs/coins/schema.proto +++ b/defs/coins/tools/coindef.proto @@ -1,5 +1,6 @@ +syntax = "proto2"; + message CoinDef { -{ optional string coin_name = 1; optional string coin_shortcut = 2; optional string coin_label = 3; diff --git a/defs/coins/tools/coindef.py b/defs/coins/tools/coindef.py new file mode 100644 index 000000000..c2dc0ccb5 --- /dev/null +++ b/defs/coins/tools/coindef.py @@ -0,0 +1,91 @@ +# Automatically generated by pb2py +from trezorlib import protobuf as p + + +class CoinDef(p.MessageType): + FIELDS = { + 1: ('coin_name', p.UnicodeType, 0), + 2: ('coin_shortcut', p.UnicodeType, 0), + 3: ('coin_label', p.UnicodeType, 0), + 4: ('curve_name', p.UnicodeType, 0), + 5: ('address_type', p.UVarintType, 0), + 6: ('address_type_p2sh', p.UVarintType, 0), + 7: ('maxfee_kb', p.UVarintType, 0), + 8: ('minfee_kb', p.UVarintType, 0), + 9: ('signed_message_header', p.BytesType, 0), + 10: ('hash_genesis_block', p.BytesType, 0), + 11: ('xprv_magic', p.UVarintType, 0), + 12: ('xpub_magic', p.UVarintType, 0), + 13: ('xpub_magic_segwit_p2sh', p.UVarintType, 0), + 14: ('xpub_magic_segwit_native', p.UVarintType, 0), + 15: ('bech32_prefix', p.UnicodeType, 0), + 16: ('cashaddr_prefix', p.UnicodeType, 0), + 17: ('slip44', p.UVarintType, 0), + 18: ('segwit', p.BoolType, 0), + 19: ('decred', p.BoolType, 0), + 20: ('fork_id', p.UVarintType, 0), + 21: ('force_bip143', p.BoolType, 0), + 22: ('dust_limit', p.UVarintType, 0), + 23: ('address_prefix', p.UnicodeType, 0), + 24: ('min_address_length', p.UVarintType, 0), + 25: ('max_address_length', p.UVarintType, 0), + 26: ('icon', p.BytesType, 0), + } + + def __init__( + self, + coin_name: str = None, + coin_shortcut: str = None, + coin_label: str = None, + curve_name: str = None, + address_type: int = None, + address_type_p2sh: int = None, + maxfee_kb: int = None, + minfee_kb: int = None, + signed_message_header: bytes = None, + hash_genesis_block: bytes = None, + xprv_magic: int = None, + xpub_magic: int = None, + xpub_magic_segwit_p2sh: int = None, + xpub_magic_segwit_native: int = None, + bech32_prefix: str = None, + cashaddr_prefix: str = None, + slip44: int = None, + segwit: bool = None, + decred: bool = None, + fork_id: int = None, + force_bip143: bool = None, + dust_limit: int = None, + address_prefix: str = None, + min_address_length: int = None, + max_address_length: int = None, + icon: bytes = None, + **kwargs, + ): + self.coin_name = coin_name + self.coin_shortcut = coin_shortcut + self.coin_label = coin_label + self.curve_name = curve_name + self.address_type = address_type + self.address_type_p2sh = address_type_p2sh + self.maxfee_kb = maxfee_kb + self.minfee_kb = minfee_kb + self.signed_message_header = signed_message_header + self.hash_genesis_block = hash_genesis_block + self.xprv_magic = xprv_magic + self.xpub_magic = xpub_magic + self.xpub_magic_segwit_p2sh = xpub_magic_segwit_p2sh + self.xpub_magic_segwit_native = xpub_magic_segwit_native + self.bech32_prefix = bech32_prefix + self.cashaddr_prefix = cashaddr_prefix + self.slip44 = slip44 + self.segwit = segwit + self.decred = decred + self.fork_id = fork_id + self.force_bip143 = force_bip143 + self.dust_limit = dust_limit + self.address_prefix = address_prefix + self.min_address_length = min_address_length + self.max_address_length = max_address_length + self.icon = icon + p.MessageType.__init__(self, **kwargs) From bc6ccb66e4e736e2ac7e5aec5e88270353f61a3f Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Sat, 28 Apr 2018 20:59:30 +0100 Subject: [PATCH 300/767] defs: update coin icons --- defs/coins/bcash_testnet.png | Bin 2256 -> 3512 bytes defs/coins/bitcoin_testnet.png | Bin 2333 -> 3650 bytes defs/coins/bprivate.png | Bin 0 -> 6971 bytes defs/coins/crown.png | Bin 0 -> 2823 bytes defs/coins/dash_testnet.png | Bin 1797 -> 2605 bytes defs/coins/decred.png | Bin 0 -> 4027 bytes defs/coins/decred_testnet.png | Bin 0 -> 4085 bytes defs/coins/denarius.png | Bin 0 -> 16949 bytes defs/coins/digibyte.png | Bin 0 -> 6008 bytes defs/coins/dogecoin.png | Bin 0 -> 11434 bytes defs/coins/flashcoin.png | Bin 0 -> 12207 bytes defs/coins/fujicoin.png | Bin 0 -> 6552 bytes defs/coins/groestlcoin.png | Bin 0 -> 9636 bytes defs/coins/litecoin_testnet.png | Bin 3765 -> 5308 bytes defs/coins/monacoin.png | Bin 0 -> 3732 bytes defs/coins/myriad.png | Bin 0 -> 7234 bytes defs/coins/namecoin.png | Bin 0 -> 4013 bytes defs/coins/terracoin.png | Bin 0 -> 8824 bytes defs/coins/vertcoin.png | Bin 0 -> 6016 bytes defs/coins/viacoin.png | Bin 0 -> 3828 bytes defs/coins/zcash_testnet.png | Bin 3316 -> 5127 bytes defs/coins/zcoin_testnet.png | Bin 1011 -> 1274 bytes 22 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 defs/coins/bprivate.png create mode 100644 defs/coins/crown.png create mode 100644 defs/coins/decred.png create mode 100644 defs/coins/decred_testnet.png create mode 100644 defs/coins/denarius.png create mode 100644 defs/coins/digibyte.png create mode 100644 defs/coins/dogecoin.png create mode 100644 defs/coins/flashcoin.png create mode 100644 defs/coins/fujicoin.png create mode 100644 defs/coins/groestlcoin.png create mode 100644 defs/coins/monacoin.png create mode 100644 defs/coins/myriad.png create mode 100644 defs/coins/namecoin.png create mode 100644 defs/coins/terracoin.png create mode 100644 defs/coins/vertcoin.png create mode 100644 defs/coins/viacoin.png diff --git a/defs/coins/bcash_testnet.png b/defs/coins/bcash_testnet.png index d3c1088730df412db55aff62634cca15bc34402d..0da886e85b8e4f3f74ff92a74b9d6bc4f59a8af0 100644 GIT binary patch literal 3512 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 delta 2255 zcmV;=2r&1!8_*Gu8Gi%-002mlzq0@U2$xAjK~#9!?VMX|6xSKYf3sf4Yhyb$j%${S zW1QOSUMSG2TpFU(ZXk-QUZ}A1fC{S06XGE+*d#n95)E-*@=)TW&YT^4Z8hK1dVhC(=KRn1egE$==L~!; znH9y!!P-4z)w4duM-3GeQXmSH0ubZMIOB}bML-0zf`zwtPc1V5o!Noy)KbSzkz?VO z(_H2f9W_@sg)B-QCgMb`|d3=fQvaJO}r&Mi$sZ2 z{I0m=mFYzT;NK(uK-D4>dq_Fb@Yh8E(3u@^kuP9MZJuD8`Y1i*hVdO;K|b&ey7qJJ0s2OR*=dX&?+Gm@vdIo*0R z)kRq;R{vezb~fR&N%FfJJ^oLn0kj_F?TqKkyBePQKbK-5|3OX*CF1~41ixwcz&3!k z`sjrW*?zJ_T))`&u`K}p3a+QmJgb-_>Wmgf*=igYT*gtCkJ6dG8!uaUje5L}kt!c` zW?KdjY=05k(z)GF*hLlj;1~c9+k!0?0r>aGR_h2dXqlcPSU_gv)zQ*M>%t~yjRtLP=ED0$wpNp zO({&Mt&%tGj@qYwDvb>n)~vdt0N|~*$^`+46My!rtsYHSFG~Vd>}W6%9&us;A2?qX z3CPsCKVu&CUH%bs>00&IyFA51F1h63Vv-4Z=piCqJG*PN<$uERM2^Xo>OE}KvCbe7 zb?6rouFa!_=b0tMEsdwx(19y*jNck+;Cy-bj$ET;9Y0b(|Ak4`u$J!@>sGiH$+q79 zkShtm&04u8VFA_rm=a0o-;(2^^*3vioH%;GX6u7eym-kc9Vw!aF`2aD0G}o}ac6d5 z*lLH_gBLGl7Ww@NQz&@IGx_}*T@nD4iGP~abDg8uECSoDH^^t$nyQp0$`E}FF~WR* z>RGl@YN!J#BgzkK=QFJd)!9%VgKESzmRp390@Y*w&Wi@wX^yP*)y@HMseejkKPE(N z7-yrgD6QA0q||9xsNKU(`v7L?C&+z+VB|IRhvd|HP!_<>c8_X8W7WczCP(=fgMSRf z>fQhFvaYNs#br_p>tnTbTuOdVN4?$rH=Ry}FU~@~^Z@j*MfZ)71}b%VDU`E;N&4xf7l|jX zHE{qH=>eEvLKl$>$YoOVcOl;~%zt|n@~EJK89K53c&s80pfKG^=@HdQI_OgS6+XNv zI>gWL1Bwi3b^$4j11LxrK#w7STsE-L^6I=mpFK`0PyvXv0Spq>6%*@t&32;qefn&a znsc+BW1+MGM3bU(mPDTFu~i=^1ty(2StD{n?6b+735`ovBpLw1)KO>XXMc!MCYiyF zhce1d+^)nlh8vjBxC%fS7ij~SX4qgAp7M}K^e0^RgdqZKV}oI;QE0gpsl)*=?u-%X z0X*Qcsn1*?pJGF9wA@P_kNd!w69D>b7Aqlho3*bh_}i3Sjq?Dc_}SL`J2}8tQn~P=oia z-|F(*?$h~H;*v7}dQ$>;j+c4Ku+8M5CTgxG^f@+##W`nmFp%`k zW_I&kN=&9N=;F^drw`)X{GPgapZ!B;0F>IeHcW_5xRy{oTa)-~)ny5}Zro3A8*v`% zsW4<0W6BM354qjn%723`&(H6;Ry9x+<*fYVb9t4Yvf1+V;Q>LUH?N3Nzug}gXzRs=Nqw* zqb)qk?A|0)+<%hX$I!_u)5;MXlRixWQ=-XOXXxe&{%v>tk0c+CFnC_-zx#TT*x?L- zNvhRgKNZu*W4gJ)Lmu1Q>fw67;gnG)$v}KfTyq9Mn4#FGS(Q{L7?v68ny<-vYrvt6 zuK+%(ctnrpnVJ;)n{Iqv@mr5gyVLtVRt_m*Im})W%6}oV=`Yw`Z}>noF9!gk*?jMM zit_{h&l^4L%JBN1YsX6)5A(W3_2$lb4HqZa}kf@zFYj>A|A($x%5gt z5Irv|`bbE+3SuR{6hQU3mHb);EyV`5Q%9|h7h`mAX<57&BT-_nCaJ+^@@kTx2sr&} dlCLGx@;^!ms~VT<(VqYS002ovPDHLkV1h0{PTBwf diff --git a/defs/coins/bitcoin_testnet.png b/defs/coins/bitcoin_testnet.png index fcb258eeefd904aec1c7bf6ea1c177c92cc3a8af..7a2399f616e263d0fa30dc16cb6ca417f985f334 100644 GIT binary patch literal 3650 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 URUUkeNdN!<07*qoM6N<$g3)mkAOHXW literal 2333 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 N002ovPDHLkV1jUjKz0BC literal 0 HcmV?d00001 diff --git a/defs/coins/crown.png b/defs/coins/crown.png new file mode 100644 index 0000000000000000000000000000000000000000..9ca4e8a48d78cd6ff2b0e84705a8030daa0767d1 GIT binary patch literal 2823 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 P00000NkvXXu0mjfqbBS$ delta 1792 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 literal 0 HcmV?d00001 diff --git a/defs/coins/decred_testnet.png b/defs/coins/decred_testnet.png new file mode 100644 index 0000000000000000000000000000000000000000..961d27b1e7dbfb27f717bbfb335e5ff622c2767b GIT binary patch literal 4085 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 literal 0 HcmV?d00001 diff --git a/defs/coins/denarius.png b/defs/coins/denarius.png new file mode 100644 index 0000000000000000000000000000000000000000..e3ba79130374258c1ace5038bb80285e95e67657 GIT binary patch literal 16949 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 literal 0 HcmV?d00001 diff --git a/defs/coins/dogecoin.png b/defs/coins/dogecoin.png new file mode 100644 index 0000000000000000000000000000000000000000..856d99eefdb85c8ccf8f2cffab814f6bc93545d5 GIT binary patch literal 11434 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 KMNUMnLSTaXy`q)? literal 0 HcmV?d00001 diff --git a/defs/coins/groestlcoin.png b/defs/coins/groestlcoin.png new file mode 100644 index 0000000000000000000000000000000000000000..97bf6bd69b2d021f76c9d1ada2a30303bacf3020 GIT binary patch literal 9636 zcmV;VC0p8wP)NTBor?Zm<0wg4m4F&-babZM7$I)S#fXpb21L6V#&bTm+qCZqn z$8l5^Wr-NsB_Roc03jqa3F)MhPVY-~?c1%poHKvis_N>b_a%h+-RH@3t1Gwe@_y%h z=Ud+Iy9B4u_Kk-(5iw9f?)u0fm2nk943U4MF7*XL`Qbb};GwX(xi>2SFM z3~+JI1ppv`B>-tHos4Sfbf2jkor=rV;*g}n&982MyJ^?X{oDWiMC|s>TWBsE;`e;v zQ~XqUX7XO&z%9RdM3{Tgg$LmP zCxeb51R#tdmr6BRy0*@&Ip^!xihbX`$iSWoGR8a&a040Dx z2nZpivVf)K3})n>h;?<|FDi0l)7EF>PyXWP=Km=HTzS=J#U=l6LzR|@uX9z+xJh)m zSFys#A#rodjZ`2!p_=U zR$K2V3*IWYT+11^!Q&h-7=vaqL^T~<=`8v(8Z?uEma36bppOH6#C^$U#yJ?X_liJK z;Z!ig>q5|}!Xb%}1p$PhC2L(cAMb# zoX_&3mjlQc7LvMw&Xk6(w1$jf+G+v=vtlGb#{+(Gc9eW(oWn3JC;~;bTScAE1Fu7d zOI9FIfD#Hq06m#_DIE=eSBu4W|Kx_hkGyXL@U0hKSq3U>lsA&MZ}UfWWJg@~r3 zHJL$AS_9{RKt=$4ioq|aJIWX;95O1LDx4IMDM7&HK$Xu6B2XlB(>{(;aKk`09{VY` z%m@Dcic1<#X#w2$!~6V|%g(w?aCz<|s$(93y-21F6Jbq9OCpP&v<3nj_=x~IVekQ% zrUkz&;GF6JJ}|omD`!&KbcOWH>0B^kw$YgiLjX@izT*fL}0KOTafw z3l)lpzgt|7&z!XgvMi7IJk8-4o^S3zZzcz)B!L0omc_I2$d6ez^Rw@K`Xh%=83BCr zscq|3pZ^Zxa9#)i0wsuPI@;43j>gl-nij-@Q9f2+#|l1UgB`Ww!O!b_Ck3uvHV0R) zUIu_5oYByo%phl4a7ZF%`#o^V;-Kd`5{lxNyAQx30xCRCu)IHFq|+~E;*q<*|LKox zpDcF5WKVF%^Eq47Ti>`&^7_6HQJPH&fyo#S$J2N>mO@N7AYcp&>@c=ABYfJz+VSXrRx zNoMfJy@z0xtS$4({rOwuXbZ=%x3vpB@gyXHf>I%zAl-02>oIqD52T~F$I2FL>oI?==bS5+SOH(^y+1y}b;P`XrJ>?ghj)9eo zWmy#LFi2jd_QliKcdQGY;W#8g0HxHgx;(dkS&B4 z(68w>@TU;?DDk}C>WN@yYd2(pj(Tnapg)^KDytQrJDSl3&nj?4QW-S1b)z#9gG2>T zK`2u_-n(vlWb>8NB7ko`y?veR^M4znSZ%8v9q&Yv2y4dpZT6D@e(5a87$&lYIkZ7= z{J8-zi-G68cg}%>y^#T+^5-T1qUkK&Y3o5xGyzGV5G1kM87TYqtq=Zb{geve?q|2n zSG>M&5lLQ12|-dfaUhyPNYhVg@CQaL#s+@=w@v|Ys!B1T^U~oq2$Y;~ZUP{Z%3yy- zH^Rv@1WF;w@KCcQc_ASLI%7B(OBHqgsSf^l&Rwv0 z7MA-VQX85>eNi-a_uD`XrRD(i#Zq{;qX!u+2MPkk<-SmMxW4$AuixdLv;ZoWopqV) z^?$i=!6WfBT2tElV&sn(eA{g0IDc*}XnwK&<*WO^@(c9v=j7<H)_bIO^T6CMmh>;+55rArq;pcHSm^eg2%T)_WExmu)WFlR2ID%?UeCwry6|DIb5*th4Yp}5k>r9%j;;3#K#1F;crR^ z`r|3I_J*P91_%JB$A6>C8(1+e0etKEmunq?vfChvAOL!^I*ul?BTvQm1NbA{zor|w zY5iH48T8|YgU7IG-=PzdIU|8z_$*L@mhKRGB5@E7h>`?XpzO9=AAGWQOal1Wm7fxg zthQeAcrPHFA!V3oOJ%G9xGV9McZ>>1008YR5pQ_Yg@K%-wpR*hPTy(EWQ}q>$6z|jxWVTf9s#)P!|UKw75vK+ThJa$P7M6x zzM}+a=?Wo{(ExC$9?$Y@BEIf|PyU@atN`jZT;%gq&$x-_MNCZ#_pilx4926YPvS2X=#uzvodUTeKd=(tuyyzS>R0Q$$%{$Q4 z8yVWd8z=b11v!yKe>4uuVgLsMHMKV{|G=fbQp}6excnckrKX-+Cb>MTIOj+k7LFw{ zAO)J>Nd}*BfH4aSC2-3kT#^ErFa#9|L5B*DEJ79qFvgKJOeC}%LTL?2lObnXNb3et zIRj=s4^2t{v>1m%IBs6Q94qF`!gpSH4ZGXA!SgzNSn!Wee~vQK1VYi$9YSTm2d~Qk z)$KVa+|jmd^`)0@-}TI9Hb?*~KYzUpLat}9@lNOldNa9`!(J%)%s2;U41QTer9;Ky zfE#DeD94h@02->w0Wz}lu4S`06tcqydpbin8cU%+l|?dVK%fK`V{j0HjjNX6!o~A& z-}blg(&1L{yaziR_}sD}Q3`Ve-GBV|lmPwlBx1=F+zthlQUq#dTz}!!H|*N=%w}zn z03yeZRFp4Ras>g9vlu#3*|F>XDWHyU0G4IJCy7{8?!g6hRk(D~Z1~)+6F^SuCQN1l zAW%gCia3ziQymVRUgyB+bu;i;0BxZNo;lcpoyWS-+#d(yz%?ru;ls-p;y17F$5Z={ zz_OSfdKfaA3NXvUqH-@(MaJHa&_G~r4E_Zr6m32Is0{d^DiS0`{dniQjkf@3FQz1K z{`EtG;`V()t*HDM;T&nxL}NHH^pu=x@bjada*hQ)Cq8pp9lpHw44hRr18NC%B&8c@ z3dOLitrssH?ZPXq-PqIFkLGX;v1|^Ea|E2~2{aF%%Yha3Gq7&X3=qb!roI{%FP)Ev z-a3Sbb{{|{X8_y|!dcAbs9F|-$v8}lK?cLpnjrr5;?-!4r*WvKe{e=^6buM}bT)^X zl>w-V3{jGWTrzp!^tBuI?RoJzn@oRyXIcy$X?l)2J%7VELu(>~*L$OoDVbiKpSPJE z6xdK(hA*7C5Q}OmPZ;rs`eS(dP#c~<)Q)3OdtlJK>f#oIBoLfcTY<|KHQ<7IGg0nx zjHsqwIns_t_q>aA&VX3*jGWua76Jl+5-0-2ET0P>K4Ss=UN1iQqu;@@c%IHXb_@*D z!t!}_m_Mrqq97ofjBlx#yWo-=mN%Fp0Brr~4}!}+@`()uw$!`QS%?JF%iGDT9G5_F z#k?7~dc|S{hEO-JwfEwuyWYXxu6|GgI7`%x&26OMoMTT%AKvZ^;XrQ~*R5WP8D960 z;4{v#up)rlE<6VUr9zDKGi4V;~TMu22{aGb$kp z0z_Ha@YK)#GYFtpyyf?g5kXPc5K$I5XV4i#e^wu4HB3i%!D1XvN^sS}nYiYhrEn<9 z2|(=W3gHJk_Tf-}43a>HwNMBEnNl#$@u$XSWOV~yyYL+N94DTW5`y3`!WnKeErzGx zK3vQVk9YP{0z~2|XgM8oqzD-mKRuakMzZjf>14!hIk;4vC06yb@ zLV?Q~s&LK9p}`NOv-tJygJ=%hgefvyV6Ehy3he5whuiR**WbZZZJn_s-fr(1Aec=+ z^_mt#B%T1vBK^EWH_q>fNnB8bD#yU9Gx0!|JHYp!Z58#t$TzLgrW&Bi-CYcQj`t% zeEv!%uKmare#Pxs#5f1b$NkA@&c-CbXN;jz5pl!H(@-{q&If>SM#CHJeMshXo5?VS zOx9qX3xrY`JifOHt7q4M(vf|KeeJzSYB}2v7+7G6r+j+fAv;AmLGXEgV1#4&8Nex2 zw|CL2`v||6F5fj z2L#P=us4jIM>?=>e%*)y=!nMg`_~$g*7Otn0S=%mngGSb!7rGj$xIfeVL}!~5K0j- ztR-~*dFz)J?D4E=o*0Im%6LBKD3b+z?yS>B1f;n?hTdeRn3o+d_=Sb9H<8A+=Jrul z%!Y-tVOb2V;W%3RV`vS>iu<A~w0I7@stii);yt0TCzulO z!8s@hlBrD5@MVN7q*^A`P)cAT(*!=}9I7bbl6kcwf)Uqr#5LU>2onUqbQXk?X&mV8 zA9WU7ykst%vNSk~%K4OmUksyU3p0R2mBa=ric)Q%@Hu0eG7kcUq* z%m8J8v()7#qfPw@vKJ^JsPZ^R1>uC^?8!u93)4PlAePZay>^w?1%c9$)0`6ozi0`W zR>=h6PRhZB!t`MI#bG+ABLsj)mPQ3ZqV&Xg`vk!+Y&p|JMmI*iwp)?MM!lIJ_%?(V zc)qa+=Ukwr9bgDbf`ik*+o5Bq$&^I_az4U272p$a7^Vr$7+nPw2)Ppmf7EnkK@|-E zO(}>~0N;*t^J(GjaK?}}MsLmImL)hOaZ121JT&9B6Eu3%(;73&f=`f%K}$v<0W3p-JhC)8D{ai|g_8X!TQsAM>ADjIAK(xuEymgi;Tf7u z#-nz#BLYdFBkQzDkfs=8I2KEc$s8V&U62rnbo7GIj&K~NWev}am=yT7 zGb)Q>QP-=Y7^Qk9+XrrU%utTEfu{)k0txD1UwljgnCWw)%&88J!AuZ*&H+WFa4F)b z*KO+VgJD_Y2Y)oqP>DKJB&nFvl&H{0O~dFcwE1#~G(S_O7JPdR;0S9vj)h0}O6LT9 zsB}4Oy*&x=3u})&hdQzVwjMZ&L{^(N@C!4* z68S03N5a*i4XetBD@mv9*{yb&Aq)Gz~tbv=q)cx)NzT zwr})KFXzvng@&Nd=2cDre4BN_Q0aDIX>HYr*V_K>QM}XM4fD8I*i?d#Jom}tb`~>l zbISei&_l1kvfs|L0s;kmid1Y9In|sX0wALsc%rcx-J`_l=al<#?(7+GO5)%$p|KKW zxy|319rR*(!;E3ClgMazaOYcyrLzN$;xvHI8H2~=fF#+`0A?8|lZE|s_p^VAY01Pv z4Zx00jhS@%G<{~VuDYq9PHa?cJX)y#GGA>>`2eKp& z%MtqTZM)If);&nbd^FG}fC1wiLBAK25)cAt$>hN`XDp4;+y3-dYUZ?U1p-mIOC4xb zG1bKp`B7<@7G6Bmh6i^a7&SQdg>#po#_P;;K{4XFOY^}J;kangY+QWCqG8Yf`0I^$ za`!vP<_2=Xld?@RFwH_PnZLGPTO|tFCU^b-PgmjvFP)5r&)r4LxDu-)D^@H z6BA11bo};>{doAzcSj5pteHCt|Fq$3)OeiGP0RKTMz|-_VgNJo!P6RW%?0N`5Qnz^ z|FnBQe)ZyOh@>($LvFah+7y6aa0Y{A{vtyo9f>?2>+Ryg>zkiI_3Va7^@2q=3xY_& zZCXe=U*$Iy`QhRCJ89j(f$n}}4HNS!0(J~&h;4pV5VOmCNTf4p>5t}{x!U@S=SRF@ zG3bVgN{58ctzL%DZ&-<{fbWEJWpV}{dgU$rddutRi>Dw8bo^1x@%Alc3_+h8b7#+l zB#JO{n$@^t%T15`@VhAj06%XDi#>-AJ+F8?7g!dLkVOGrRY9fKHKfDU8I5D}o_Dcz{}CMR>4#}qCk_0sce4(IwR(J0%g-9tS#Nsj)TOn>2fYAe+L50sV;sT!1bnI^Fz^=os*w@;P_HYcztOk+N6LtPHf^S(2 zGs^vNIvpT{K+mM~Y%1~GukZT0RTKaKR5Z*B8CrIeq&hw&ivsHW9<)Ugc?$RRfzJWx zx`A_NRpKibt-_+(Y7j#3R$CA5-?kf}WClT(1NA{4>VrO1d))}SoNy`4zj)A=}Rp8s!kBR!3HTIz59C|jpsj7ZX zsF(yQ#zKB|pMK_LSKROL1wKUy;CCn}cR3KvXv3%JrT~1?FtC1h6>ht9EoPP5Efw~* z_u$^Y?m}Z{9~k3k>5rnZqX&v8LKY|_NG>A=>|;3ifrlQnGPon ze8v#;c~BPcf>H{`7$QC0_rLMG}O(3%V}5aXvxIulA<)e@zRS$4|EW1c;B;sjz_!N?*;5uj^!=~%AM+o9YZDw zK44cJuBffRogY2F2tEM(d0!KD9%(POurGbN1Igbog#JSmWXCOd z-D79$DJs1#)Og)?cw&NakmL1YrOSb@{LM<#1OtPveYh`z=HBq2i0u0ke9J<0c>vV~ z)01<=`}^+M^#AVZJs$591aM%>v!*P|+cWXlRsirhWHbc55Xl(A)1#@Ke0{(N=FPy$ z`3)zSjyc1$>5-$+J5FKn?GEuAbL(s2^LfDmq+^k-vLtVBey7nKRR92R&y^qQOhv-q zGj$!D1JzzP8iM|zWAo#=QO;4OD!6*x*+bgyXUwd`88a*Fc+PZyKZSxFHur6sXqZ)l z>Z%HW0H&TpG8*~bf86l-A?u}vt=&mSBfB&4=ubJfGgS3uJ_KDV7@PQwN|a!AeI?4g zLpxDRYOC<|OV{H3xixTz6e6V%^IZKw3oRK~ln1WCiuGgscxz{h18XBKyk%ZD8tQ7{ zbgJN-BOQzWG!^OJJsi#>a@D^2=(Ecl9`6&1%QcS@;7D&6``UY8Okk1ZjKd>~xbs8j z;{3&{@oN@S_3V!vOOVChNf$7}zoCYnYBa<_b$>~Vt za!6}A#M2sL=?walY4k)BXz2~3Kbb+!u%H=+&0Gcfl|z`4kDe)p(BzQ2Oq}fK61{XnbZHW zI$2R6D=NHW5>^g-kG5gUz9#HC)P_(zX%~o$C)dpwYOBhzU~WA`NdmJN(y_=-n)kf= z^k~-~l`i(q%UiWoAO7f3Du{~(NuHxhBAl{>L{>v4XNucWGLL8!;?azGUY#M9c)LKrH6&N<@Q99lwAEU&AEXP7Ga_j(I>-1xxq#c1gX z;b?bg$VN__b9h}2EL$`eb#*gf7$(eIt~=Quy7dQN{K7M1o`K`Jv7L`Sd|>rQKamt= z`8*Ed47i<8MFEM-aY7i5y?}wYP&9S*V^+|I3Xf}`9{3d6L{Y%{r3 z79|AHbOz~67Hj6$!S8Y+ozt zF2qwA>~3lSB|vReIZj_}>-@sV&%|SQfA{K7--lxP-PpIuJO=stqt9ID@cHi)B&kLe zC{md$4tMt9NKY7sWexOQ7^)SeWnn>uAOHHHbyzX49v0)+w0l2(`ob$nWHbcbPIy!W z9#w`*k>HYLI28#FS%M;pQ1kB!mIMK^C_oY^L@L;CvY@oM7bt}&P)PaSa*8Cup-6D6 z3Ou7QrVCp~D1yJef!ZzS(lJG000GFNkl41^(i{VyEzN6YdKU7^z4en~U6vt*(GkraR@b{IpTc5#Mae=iFH zRM{4yTan>)st9;os1A5hUm3)b`dT|#f853x$K4NahUjuamSr%;^43oH_Is}X+@q7h zZ%QWezy9{|buPdETZ-FzAtCm=x%#3>wD$JnSWmy*yE8u<7-N{}b>JJ9pN~}w=Kuf> z_4MQJO)p~au`Z~EmSkg$YVwkW5hbAqpoHJbF^KQVx&1b7&KM+7M48)(nlc~e)>Pnw zE0w zvb>5=fw)x#WgaJdP6rIbKs;l&!K`vB_{K*sz`2X&0svx}EdG1jo7l3y8L}u0*{fo- z^8bN%$e)-cqlA<+;24-4k|5Zxpdx^lGte82<3MW{8jrT4%=wHR3~^&h4ae8xCT z(*orjH9meFqVXCD0j)Ad*PK%6B=T$A^U{0Y1;i{Vj_@ z07se6joRvRR8^G2<#a%ir9pk=vWeKf#eU~^S1g>nWA5BJUDJurNpWXBwsy5}{~sQ& z>gw%X)6mdxv)}JOH>DeR_T8g+w>J!uZxgI(IYeS{^hFa0#}Y{9TN2xAgPjQ*DD}@T zkA?pGF%Q7Ubhn-w;PfqfzW(vlhR_9 zA^_-_w4TePHbr~7@0S#{anEy4#&APRv#!faC?|B&Vx_|qDaMp)DPM-SN4}uL#&s^gw3tlWK$_CZ# zT|@+Nz{4j4T4#VQhrtm5f)l&Fz%Gc>l8J+cmfMz&^gn-e|Gu4 z)_eKajmqJ=pC0000p$+E4-YNdVL(?2}!w_MGvc2~R7 zI`#QJefoB0?wxzj@7#0GJ#+54z$uzmqI_-~GgE78>pW&&5|7815YZB5t|6jg07U?b z0eAt702pNE0U{a%&Is)(dYBMa|(b2rkkdD5i{RFL?2@2k|}uYegMC8xm?fq{r=bfUjks7=2^`A zX#m$UbImmJU?&l6P*wF=pU>C(7Y{%%82oD?#JvEnU}j1~jYI(a5x~35JOp5fh=!PX z%$f^Ih^PcWIWsQ;FgMMnjRJV0prGIzO-)UI{)+=(%a$$m@pyb4Ghdtnv!l$sjfgf9 z(eG7N?OM5Vcr~1Cm&d%Z^M~*CI<};bu&&;ai0a!IbdqRq$+~@cEA10#M zNeO^ynroT)o6KD8An6R?H$=2y-n@A~U$9`o=v0kJ!!YI%(HbGdjmbs^5$yo*8C}=g zP8t9#ssBDRf5f3vf|-A+D9Sob)83qBD@+LngI8Pg(()vN@-0o%?#cFOpd2v2As&yv z0N`|oM}AUJQ1F$erlz;^ZP8~K#uWe_0IoLvAqHp6m@!aaUq3RL`a3&23l1MXd?$c= znb~UtLZ6~2*ZKYa-{lnmhGDE{=DTff#ffPB{Q2|0p01AHwryKgI2_gh_=#v4GcN&f z1^`zQoqZI*E&#iTXeSYEZf0NGhb=b>5U$b=laIR#zU!q7z_rlW#*eL|4%OIFcCfHa=E_O z+}zxiqBW;8^YhF++oqrQ>AL>aX#v16j1A2E37cC_=(>LML<=WN-+mIn7nynCl)3

S;WHa8N9yaJ%krmj16U4Ljw0Wb{XL1wtk_}$3_s)ifhW-gasEkA+zXH%G*P$rN^?twq`6&UwFpSSK^CLE$`GT(N z-%3`twY9Y-8jXGjz{ikZ)bDb+?)3Zp-=Dw=n-L0y{*#$6vhh`2s_XiuoB|LC1pELt z+e}Im>cT)Eu!@L&WT#8>g^1|CN=r-Eo_F4P$C80CJUqNn9ti-Bc|4x;R<2yRKh^gs zY1-g30X%PG20k$n^G(zI3K9J-pP6qN1Roh39DL0*&A)PbroO&@#Ow8520)&~%g4sX zo@Zt?>i{q_g+ifcFy77kvaahlC$n$@fxy#3h_6lH{K_W~7Bce|(=g!3-#Ia#nbl}C`cf8|9|sUi=P%vWuMMdH zo;6K#t{=Kuavmh%YAP@*V3t){jS>3Jc`Zt`^m1&wAnEB(`u-6+J z8n${oo;m3n4ILdF;laVdGqW)g09@YE((-F3HES3~06??U_Iq?)e{fO&7>1!SvmsUd z2TjxdhKPhinfsaf%h?e7%F4=ZXPZxR9INJtg*52PZ_HqX8xAE=y17Qw>mLD7z|zl;NEO0;W=~WWE9gAiA1`x$b0}O zip63->FDSvx4Y^0`*+K{0#GzMI=VjNIlwTCivZM1m!EEKZhqBixgL+lpUs8??F5yT zmDOfa?#PiNBgj6TJ~%k|l+(@P;^K8gB!5S~HW&;p%yb0YD@p$d5#5tS>YfBJGh4k? zRkcr5)w)c|9y)ZWHU|KJnXfVoI(R^6C z{H)V#e)#a=JCJ@L)Pz)0QgV8R`hO~-D{gdhS5#G1Jwrr2(&ZcMgu)hpp`oFV0q{u3 ze$PqznfZ=v_s;9}?j@p()JSh{@0=-cR}eGXy4~yQ>LNt+r1boJ(=`1l0l>^RNX*}* zY1$v`p6%=Fy9Gd14%E;742vEe7#NtUk2_bkwY4pC;Gy03;_D{_pslTKuFZ<>S%;S> z0B+Ak&uVIF)J)2S!{I$s=(JNJk;v!m?&-R|hlsXImp|6t-tJBcKs+8_E$b>pQEZ)2 zTefUj4dAqFcZ`UH*Xv!Hq5h9drMHfVu4!v)^E%x7p*(pH4-eN*1i&h(lDC?hn-4fx zN^5h`sp8_|P5>F%@rMo_I&CTeVCIroEanse_^WX$M^RcPngdozzc<@ezGu%K4}dFk z(W%+9XTO)J{vR3|Is;QoLWt`f+!K4{l`%6r1F&`L)-!NC@F@{RTL5}`dVI`0BNrX2 zs;bIpmrOVu{v)P=h-h^Z*YjoxfTqMRX72+a8jXHXF75Gn0uDp(f?RY)QIv2&LBaA& z%J%p7M{V30drM18U(2x?n$g$S*Wl0}nSaH>VDKzk0E7@rBxHM>LN$nJbuKznSy{OQ z$9KG>O?`cRC+z=NO-;>~hK7bsKA&%PX=!QBM}e%{6L|W%&E>`aCm<42momTaBT|=> z`DL2sIl1V_tXZ=LGS&a#a9Au`w(RAanwmNyI$=ulp+kq3<{AKIZnV2zUS7WY=+UF{ zvx}W3VY#8Z9n8-&>>`J=L1krS)fpCbH8nNW*4EZuMnnq|th&9?Xta0=0I&@(vv&IY z*=YpG04$V7gj4L~SveZU{i>=i&#-tYZ1xln4Gq1Asi6h(A}fK9vLG+A1%R1LrQf#O zHskSlPL}$$wY6`_YH_lH+1=eecZvXTjgF2w@uf%NYvniqEVqIzK|>A|mgh+Sk7cvI z-rnBVj~zQUW$S`iELQ1oYgif)MdK#nZQHgL+vv3+hapuVP1aeVl9H17*;p5ij*jl$ zw{KrzZ*T8;Q@kEYS_pBdx3~9DcX#)a z(b3Umm>w#2;FrwDB0B(FHoD#^zMr!!IU~!LFMmy5g{MmIzWeU3y?ghbnW_IMi{vy3 zM-nv#GkeAX;C8!1vDmmBm?aJshO?o9+-~>IMT-`_U0q$hoQVE5L-Vi4V*a#~q9_9? zj*Ovk0Myjfgu1)CQyNkL!joy}%$YL-ixw>!^>{ojaM+uhDuqI!0|4ga0{}$i6w)pW z^09GNkhOy`p2`SFVjZO-CBt=fb@d*P=Mn&glkIe0UtiwjJW>?JDNa`ADOs%SLIJ`e!)DIE8 z<-mL*B3Y1kIk_TsOO@IJuwuoE_lW3Vx{a)=s@i#CI7T9oecj#NyE-~L{)7xS3-4<5Xr`deCvIjs>lsyt43$0I&b`(svh1J#7p`oFnH#<5y`nPV~x?unQ{byEH zRdr8d0zN&D0NCts{Y)G4d)GKK)FOEpsRs`pYy@DJYQO|=bviBV>gsBe*ALaz)$R;+ zZeJ)A%9jm)V{W%Q=%AW>QlDex<>k9=N5Jgav)e75oY>J-4vVOb88A(5obY(D%u5LR)*%M z$Rhw=vb%1@3pGg3zE5x!8^i+A@5VRYc%#VS#m`Ts;j?DVI+$tMfq{WiMNvXT6miaH_8HU;6$2qYn43kv%8H#l^2C1whlZR>Lq3A;GiA%xmlbXl`yk5C{Z*iVX5T z5K+|Q@nq}MrVGFf05gav@g0f6l4@Nd7K^3)VaVljeb?4iuy0@CfddCVD)sq)@E^yl6p{nXPGvQciX=x{b3gj6HA@)Y2QE!Su)av*919tZg95`^f%_rVx z#`%vNDwczBT_YnSwtIe?o15F^i6s@9J$rT^@{opyhf_{p%*`6-f1MHl znx<_hqCHXtpLJT4sjB*gbSJ{f%F5Dw1faLK*OQ|32c0%FMdQ%Z>$~&-Xfj$5ZX3q9`M7w|jXW@?Z4!_NEfV6;oC9mLzKI9tkW~RrN_* zUN}`!QBm<25gn00_#!jA92|6C25>l)URG38bRrAq0%V(FvDofZg1Ct2UwuB`P6yk6 zk&RLE3#aED0k9&vChXl-rnv3yiN$BrHAPsO8BUS9ssPB$Zw z$o-JE)+U=Pl6oPnyq(>N(n>@}3JVLDI0fw*hVdvf-!_2_-(FHuQkhT8kH_QD9Xoc+ z92pr&w%=`3QIrO!bjyK2U=@H((r9@_*Y!&>0>GM3?h``%lXUrsmX;RV-Qs)p?D6#U z^q9=N0)JsdME{`cy6s%o-rnvGg+i}0^I3_yUs05me!qX4<9s;LOI1~U5XX=FNNmWb z48yR^@40yK;xScKKMZNN_{mO+qI}zl`2Y|Kg+8Cie2bn=#{853XliN-D~j?tNvA2y z{G3zf5TDQ2OGKBZIw_w7lK&&W-~WXqT4Du`XV*=n{=&k-yCwuSl?G^<_H!bVZQi7r zLv&r=<954OW%A`L&*OrNej?g;l1lzlx~_jTS+42f;o&Eld4W{!w|>9>sgzV(s*P!CYWlOw z?S3b~#-?5eY?6u1n`QthA#M ztc2T}ZL*yAD~h5`lnC22%`2GsyUaW%51HSls_JzR*XODqaVPfEiEm-PgefbS6?k18ykB7z|HxP%$10a5YgR!zyHaJREJ?0 zpJL|6Fg|tj)4HyID(!b?+Gy)YsI4}VJnVA0u1w{KkJi@K55{7#uL8I{mkE}Vt!#%b$z2czL zHxw5a-T4Ge<^7)>uhE&dsu#5jY+^^@Eu+Xa20Nu5LJuk^UkxH`vs<(dBYo z+1%WmakO|=hW*y9ThAC98~ZKn4@BFkD9SadoKhjp6Q@O^(F^18_(cF#64Cq&)YLlw zHWSfiuh+XN6=|28Yab?}4T-xN6X>Pt>gqL#F+S4@4o@?>~!(md4}pY5?U{_Lt;rkRt`A5Is|8hRA0jxubZUu0^-MPj@6b5j+uIo=_ zO*Q7CBbJ@~M3TdqUnQdZbzT4Od|c0PdB09xdLDLa9%&Jun!muCr2832i<<=EKRUCewF zQrsa)M7;psX67y;>LQ|UW*%hbA-CH-1Rxxb$BSScX)c5)Bcg@OybQon>wj5_O*~9Q zj}#RZeW$*@eqbtiGA&y?w{PD*Yjkw~_0DUaxm}s`dCOIz^`_Q~F;E^>Ng``WLML O0000Q&XN7l8lq3q#u+VSZ0abR}XUC14~(KqQ1iBh*nX)am`hArhi63Sy~0bobF%6Ko25HT~yX2H;?-D~IlG z)s%ydU@m^EDH(AAT~gl_MP5syfuyHV(7#n-Gi=3`#vgAw081RV0v;ok$IDvSt^PRL zGSsSg2zt5hf@v_)s~xLqnSL!gZz2G5HoZojn9m8m!fic2?b{T{OqzP)3~sjPY~U$) z+*oi^09fL%2 z!m1a+QVJIdt5QwVe-k1Arj@iEVDVOs)7ZZzR6w=F^ba_5X~{zVn7Bgoa#U z7T|{N&Jh=-zEkh*0Ca!dcjjNQZ&Dk>$Aci`vCTV4qZk08 zb-QT#?lsQ!)H!)uxtB>5dheF{(LwXQ?3=V2?cE?~z2WBNido1!pIgu0mdD(|PHaKA zeK(B1i9Wg$vyJb0&@!67Y8fshxU01!NQ~ssE?kb#oaT2d`J{2|QAEBAoYH^3)?o3{ zzz%aZ`@)b5D+RuQzZZomn1Q?l_0tg1Znp@-(fH{K<{Ov|V74!Z9xJOyH3B{gXfCowS zwf+54sjCW^K{M(s z6=O^t90fg;JBZ;)G7?}9&`+3B5Y9ZkD+qW)syBd{TW@O{hkAX-vI!) z6XNZF77wU})Fj?jDq&Tad5H2(y41=^fQ?Jun~;K;06%!XstPl&0 zmNF`|4}~l5B&L&0p*p>D=keGV0Kj$L5$QJoCU`c~3O}U=bdbPbCHI-gyS9xcE zYXQ5)2sB2D064K&!vG+~GoZVOvN3AzYUS1P#HQpR0$!1L0_s` ziP@+Z0VG())iyg28RXs4hXb-~k{Tcozowh6tcX=eim(#@#4gW# z1=)e&33{bx^9rK~Z zSBssj^(T+l9O`>@|O$B3ngV|S$CF#e8)O7#==%kh5 z-70G+wgQ{A%s^s>U>?PmG61?30w4IJk<2oc>ytEhC`HDIu$>Qy1Qet*E0RDT9!aq? z00uPUA-)FVzNMdq@8uhhD26UFDwGQefIaT}f^gvdW6bpmt5BZczJ1T6uHw!%%;*Za z(%NX173~-tjAs16{ov5^TTQ_6xkREHf_Xe!=xQf{7=u*rbghuv6YePMbl%>gYF*F> zcCw=#?BoOoI5;P{z(Fp~NiL29C&v-TaV4oXDWm*z{dMMPieRBc9`*uY$TwYWu^DNG z8$jlzypMcmM4&^b#O+i=duZRHYmt8;Wpg_vog(#{jA_vB(gS?Y{}!^1#L-0;?h>Lw z><)x|&1QxQwo2Rvyv9R#mKaHE z_X1S6?lZ2a?Xv=kqYkC5!(I5-jMK~t&|g$0pRw;f01UN)kfm~)d5-&iS`EyWhy~pU z9RuB{X>F~<{+WHWFBg=Tr(Aehl1Dn&%3H=2ueD2L1HGp8G~Y|h7e>X0hJ2UfRL4fo zowz1d8k^LdHxl?n8{B8SM+N|Zc^UU7{&rIqvsYfGyKJUmaEmVdgOQQDLap@#4Qk9&4@va?RI>_rCj=igF}a`vnl<;qxm!cN>UE=s+OR%N!h*TglYGg1A@fA;6aLmK zU&}Or3Y6tc1U35a8D_GHQRZQEkk8w$2~YA)(3G%q44hMgj1PF`R5xs|jNtkgCGqB($k^hQuj%RYSX(b5eTZLwZRK}eTQ(3pO(j3^X^RUZ&D(rZ)(?-XtGM0%6Dg^c_H z&9n@!@PKIwyf647_@Xh#$CthvEr_@0i^oE0U|iO>p5=$5n^(Zx;8S4n8ZOpv_GS;$ zqqIRxecoz()aTc7O&{##IwX#AgL+cyBO&>BIA4MZ6nOlz2{%V9OKoLonVust*$F>0 zOqM>E)+PV|^AO4--f2O*>T&NJ^A-?}=W!xw{dWOyL-^`ptv3A%wbs|&W(($P$E3@| z$=e*e{K3wB46kpCoF{dhr?6w=3@#gnDr6cC4!}DdKTc_oob}x#?#yGZdQzrrlw85& zAL`TmHFH?)v}#K0GZ(y6^l*%EjfD}|%O_Kvg9CUVeE%>Xo2_~G;Wl!ch2$RNjec3T*N?_IwzZ z8~+tN@kL?P*|1nJ7ytm^EIwpBrBI&y>B=;KHnO2d06d0&3G^sv%Ua`nn0uN{YeS+f zot~0owIBch09a;ntG&)}*WxaG$B^$|JB3>7IG6?F$>T%-p2R2oYbk&w$P&lpz#Q^A zihvccANGgsmp-b)a61;HI7h=M$Rh8cOs#5}e!YLEi32{8ez-^Tb2JCqNi2B zu$=0sURw_~R|G_16c>a2C>fF{8Dbry@$z(`y8V=z8p8EpV zUm*qHmJE9u4TNM!rX-1N@LDXT5>+V`p~VoguyBa~w+g#F*`jUHT#Q=BHDZI-8r~2n fm;e9zWncdRp=T0|cF0Jo00000NkvXXu0mjf5m^wl diff --git a/defs/coins/monacoin.png b/defs/coins/monacoin.png new file mode 100644 index 0000000000000000000000000000000000000000..e026429d353d852bdd85b872dd83aa26103fec8b GIT binary patch literal 3732 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%0Dja4QM%%X5S5@#Ai!U`k{-k4rbL(_kx!iZ? zoWHwT+azGg)06hf;qo}h_+#H23<8$Zt?wzZY83$JA7p9p=_BFv$G4_&mju^;`9X9? ziK1gqfl0HqX=X&Aii%)fxOfVVVUe1ihs+_9Bfbhc-7=3%1XG%MP1LBUZ}uzk(i{`J z19!t`viqh*;--5?Nu(AJhY*+8j-5zyNXzNQ&uwK}CBbKJ2?fYSW=kO5!}?x+Lb z%DsKW8|$xWQQm)W5bkpjHkwK(^D59=K|rn51P2R_j><-KM3A~f)@$G9YM08g5=Si|QB}d6yW~p3e=~aY-c5an z7E43YeK-!JEn62?0~jObZhl?-l>0elmxq91hT!IFZHR_L-axu1hv0Hiqs2EOK#~lo zii^X;^KsQ>pOoJ*{>f+}1B<@^FbT(twD~nw(wOdRIm?k|%-J}WN?jw6U)>2raqt;6 zd)Ob&GME8d15Z46>|s>bsRJ?Z>ywlLlZhe84p_`P*&6aIpLxbwW$L4!5s@Dg?!fUV zNAyK*`WqXP>32seJpLgF@F4j0p4jU=@FFgv1B4g?=pGIEjZ5m?gE)U^3|CjLMs;-; zFaz=N;PB9LNr*K<(|#7QF`HGNe?8uQt%Q!!Lz3f`fPJxn#H@`f`JEBiT^)+vu@@UV z92ZDFaS7}$Gm2a_zxvk&a9#(J%@z;xxgp?CzpCbA@zEoeocRc>649H&ooo+g9El$cwIVmUQr2HN7|5^%Gyj|9j QF#rGn07*qoM6N<$f^odvhX4Qo literal 0 HcmV?d00001 diff --git a/defs/coins/namecoin.png b/defs/coins/namecoin.png new file mode 100644 index 0000000000000000000000000000000000000000..7f99692c692fc530c4c4d802136366476fe5ff6f GIT binary patch literal 4013 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 THdR&(00000NkvXXu0mjf^o8sQ literal 0 HcmV?d00001 diff --git a/defs/coins/terracoin.png b/defs/coins/terracoin.png new file mode 100644 index 0000000000000000000000000000000000000000..3c4af1c0038f563181eb28a5d3ce72abcb6cfda8 GIT binary patch literal 8824 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 bTJG-xG@#7cm3Ns%00000NkvXXu0mjfu5DYE delta 1000 zcmVK~#9!)!Msj6j2n%@!z?w*k~sb5U~)1 zG=haqTtN^)Ed;?l@Wm#+AIxqN^C#H&h%-}|L}RgTOet#66%>Ui7M3;&VxgcBEGz^e zlgG7)lGS8q&fS^Wx#x7t4!fW4%$>`1OA<`4U}wt1_8

CpGz;Y-9POwXO~`;_?N>3KcIs= zzTc}&77vT><}nd(2?cb}nPBay5_|E?a~F@Brz%$Gn#0F+E}wcF1Ad&7I4yqJgx`38 zCHzJMO!$Lo@*4{XbUTw@#Nfie5fkMd;nR61b^gK;m`RC0ls+F&n4ykL`PDdlAcuDLsmtZh<23InBX5Jg zgbxuLt;NQ$w|RGw@VYUY^xkKF^9kIF^NTEFew^O}BKV8|w_r0rGQcg+ZJYTK0VaHX zA%6>gXn@;AqkMkp24Gcy+eKqoVLQKWfE0e606F|+1KcjENZ~IN;CE65IVt=l0e+_* zlf?foKpy{}0EzsX+iCAG%FI(2n54VS0_r@DG6K8~+(ixoM*)C$2;(yO00G`^Ji4N2<8JyAAsmlv_*J8?P1eT0%uy`yXb(g3U5RQyj1#*WIvVF<_WwI z>woAxSNpU+jE^Gu?`I2u0!mYJc|4W3_h;Msf7ISi??C}=XtDmTXc}MjB$bPQ7XELx Wwlbn5)LQ=l0000 Date: Sat, 28 Apr 2018 21:00:06 +0100 Subject: [PATCH 301/767] defs: add icons to coin definitions --- .travis.yml | 3 +++ defs/coins/tools/build_coins.py | 40 ++++++++++++++++++++++++++++++--- 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index e745ab61a..15b0ef8b1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,6 +11,9 @@ cache: python: - "3.5" +install: + - pip install Pillow + script: - python coins-check.py - cd defs/coins/tools && python build_coins.py diff --git a/defs/coins/tools/build_coins.py b/defs/coins/tools/build_coins.py index 4ab147978..f354e0ad9 100755 --- a/defs/coins/tools/build_coins.py +++ b/defs/coins/tools/build_coins.py @@ -4,9 +4,11 @@ import json import glob import re from hashlib import sha256 -import ed25519 from binascii import unhexlify +import ed25519 +from PIL import Image + from trezorlib.protobuf import dump_message from coindef import CoinDef @@ -84,6 +86,11 @@ def validate_coin(coin): assert not bc.endswith('/') +def validate_icon(icon): + assert icon.size == (96, 96) + assert icon.mode == 'RGBA' + + class Writer: def __init__(self): @@ -93,10 +100,11 @@ class Writer: self.buf.extend(buf) -def serialize(coin): +def serialize(coin, icon): c = dict(coin) c['signed_message_header'] = c['signed_message_header'].encode() c['hash_genesis_block'] = unhexlify(c['hash_genesis_block']) + c['icon'] = icon msg = CoinDef(**c) w = Writer() dump_message(w, msg) @@ -109,11 +117,37 @@ def sign(data): return sign_key.sign(h) +# conversion copied from trezor-core/tools/png2toi +# TODO: extract into common module in python-trezor +def convert_icon(icon): + import struct + import zlib + w, h = 32, 32 + icon = icon.resize((w, h), Image.LANCZOS) + # remove alpha channel, replace with black + bg = Image.new('RGBA', icon.size, (0, 0, 0, 255)) + icon = Image.alpha_composite(bg, icon) + # process pixels + pix = icon.load() + data = bytes() + for j in range(h): + for i in range(w): + r, g, b, _ = pix[i, j] + c = ((r & 0xF8) << 8) | ((g & 0xFC) << 3) | ((b & 0xF8) >> 3) + data += struct.pack('>H', c) + z = zlib.compressobj(level=9, wbits=10) + zdata = z.compress(data) + z.flush() + zdata = zdata[2:-4] # strip header and checksum + return zdata + + def process_json(fn): print(fn, end=' ... ') j = json.load(open(fn)) + i = Image.open(fn.replace('.json', '.png')) validate_coin(j) - ser = serialize(j) + validate_icon(i) + ser = serialize(j, convert_icon(i)) sig = sign(ser) definition = (sig + ser).hex() print('OK') From eb7d98ff5ce29cfec0214bed85d789bf6a210bf6 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 30 Apr 2018 18:51:55 +0100 Subject: [PATCH 302/767] defs: fix travis build --- .travis.yml | 3 ++- defs/coins/tools/coindef.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 15b0ef8b1..2ce7951f2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,7 +12,8 @@ python: - "3.5" install: - - pip install Pillow + - pip install ed25519 Pillow + - pip install --no-deps trezor script: - python coins-check.py diff --git a/defs/coins/tools/coindef.py b/defs/coins/tools/coindef.py index c2dc0ccb5..1c1beaba1 100644 --- a/defs/coins/tools/coindef.py +++ b/defs/coins/tools/coindef.py @@ -60,7 +60,7 @@ class CoinDef(p.MessageType): min_address_length: int = None, max_address_length: int = None, icon: bytes = None, - **kwargs, + **kwargs ): self.coin_name = coin_name self.coin_shortcut = coin_shortcut From 17e89412a35448065134edaa74af69d6ce7e85e9 Mon Sep 17 00:00:00 2001 From: Alex Yocom-Piatt Date: Mon, 30 Apr 2018 18:00:51 -0500 Subject: [PATCH 303/767] Add Decred mainnet coin definition (#101) --- defs/coins/decred.json | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 defs/coins/decred.json diff --git a/defs/coins/decred.json b/defs/coins/decred.json new file mode 100644 index 000000000..c796cbe38 --- /dev/null +++ b/defs/coins/decred.json @@ -0,0 +1,38 @@ +{ + "coin_name": "Decred", + "coin_shortcut": "DCR", + "coin_label": "Decred", + "website": "https://www.decred.org", + "github": "https://github.com/decred/dcrd", + "maintainer": "Alex Yocom-Piatt ", + "curve_name": "secp256k1_decred", + "address_type": 1855, + "address_type_p2sh": 1818, + "maxfee_kb": 1000000, + "minfee_kb": 10000, + "signed_message_header": "Decred Signed Message:\n", + "hash_genesis_block": "298e5cc3d985bfe7f81dc135f360abe089edd4396b86d2de66b0cef42b21d980", + "xprv_magic": 50177256, + "xpub_magic": 50178342, + "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "slip44": 42, + "segwit": false, + "decred": true, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 546, + "blocktime_seconds": 600, + "address_prefix": "bitcoin:", + "min_address_length": 35, + "max_address_length": 35, + "bitcore": [ + "https://mainnet.decred.org" + ], + "blockbook": [] +} From b466b721a213a354ff7d8feacb27d2be80f61312 Mon Sep 17 00:00:00 2001 From: Tomas Susanka Date: Wed, 2 May 2018 15:11:39 +0200 Subject: [PATCH 304/767] defs: nem mosaics --- defs/{ => coins}/.gitignore | 0 defs/nem/nem_mosaics.json | 57 +++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) rename defs/{ => coins}/.gitignore (100%) create mode 100644 defs/nem/nem_mosaics.json diff --git a/defs/.gitignore b/defs/coins/.gitignore similarity index 100% rename from defs/.gitignore rename to defs/coins/.gitignore diff --git a/defs/nem/nem_mosaics.json b/defs/nem/nem_mosaics.json new file mode 100644 index 000000000..c547e93af --- /dev/null +++ b/defs/nem/nem_mosaics.json @@ -0,0 +1,57 @@ +[ + { + "name": "XEM", + "ticker": " XEM", + "namespace": "nem", + "mosaic": "xem", + "divisibility": 6 + }, + { + "name": "DIMCOIN", + "ticker": " DIM", + "namespace": "dim", + "mosaic": "coin", + "divisibility": 6, + "levy": "MosaicLevy_Percentile", + "fee": 10, + "levy_namespace": "dim", + "levy_mosaic": "coin", + "networks": [ 104 ] + }, + { + "name": "DIM TOKEN", + "ticker": " DIMTOK", + "namespace": "dim", + "mosaic": "token", + "divisibility": 6, + "networks": [ 104 ] + }, + { + "name": "Breeze Token", + "ticker": " BREEZE", + "namespace": "breeze", + "mosaic": "breeze-token", + "divisibility": 0, + "networks": [ 104 ] + }, + { + "name": "PacNEM Game Credits", + "ticker": " PAC:HRT", + "namespace": "pacnem", + "mosaic": "heart", + "divisibility": 0, + "networks": [ 104 ] + }, + { + "name": "PacNEM Score Tokens", + "ticker": " PAC:CHS", + "namespace": "pacnem", + "mosaic": "cheese", + "divisibility": 6, + "levy": "MosaicLevy_Percentile", + "fee": 100, + "levy_namespace": "nem", + "levy_mosaic": "xem", + "networks": [ 104 ] + } +] From ce88b30686595eef871fe797d0e081e1d96f4d55 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 3 May 2018 17:27:47 +0200 Subject: [PATCH 305/767] defs/nem: use standard json formatting for nem_mosaics.json --- defs/nem/nem_mosaics.json | 120 +++++++++++++++++++++----------------- 1 file changed, 65 insertions(+), 55 deletions(-) diff --git a/defs/nem/nem_mosaics.json b/defs/nem/nem_mosaics.json index c547e93af..83ec417ce 100644 --- a/defs/nem/nem_mosaics.json +++ b/defs/nem/nem_mosaics.json @@ -1,57 +1,67 @@ [ - { - "name": "XEM", - "ticker": " XEM", - "namespace": "nem", - "mosaic": "xem", - "divisibility": 6 - }, - { - "name": "DIMCOIN", - "ticker": " DIM", - "namespace": "dim", - "mosaic": "coin", - "divisibility": 6, - "levy": "MosaicLevy_Percentile", - "fee": 10, - "levy_namespace": "dim", - "levy_mosaic": "coin", - "networks": [ 104 ] - }, - { - "name": "DIM TOKEN", - "ticker": " DIMTOK", - "namespace": "dim", - "mosaic": "token", - "divisibility": 6, - "networks": [ 104 ] - }, - { - "name": "Breeze Token", - "ticker": " BREEZE", - "namespace": "breeze", - "mosaic": "breeze-token", - "divisibility": 0, - "networks": [ 104 ] - }, - { - "name": "PacNEM Game Credits", - "ticker": " PAC:HRT", - "namespace": "pacnem", - "mosaic": "heart", - "divisibility": 0, - "networks": [ 104 ] - }, - { - "name": "PacNEM Score Tokens", - "ticker": " PAC:CHS", - "namespace": "pacnem", - "mosaic": "cheese", - "divisibility": 6, - "levy": "MosaicLevy_Percentile", - "fee": 100, - "levy_namespace": "nem", - "levy_mosaic": "xem", - "networks": [ 104 ] - } + { + "name": "XEM", + "ticker": " XEM", + "namespace": "nem", + "mosaic": "xem", + "divisibility": 6 + }, + { + "name": "DIMCOIN", + "ticker": " DIM", + "namespace": "dim", + "mosaic": "coin", + "divisibility": 6, + "levy": "MosaicLevy_Percentile", + "fee": 10, + "levy_namespace": "dim", + "levy_mosaic": "coin", + "networks": [ + 104 + ] + }, + { + "name": "DIM TOKEN", + "ticker": " DIMTOK", + "namespace": "dim", + "mosaic": "token", + "divisibility": 6, + "networks": [ + 104 + ] + }, + { + "name": "Breeze Token", + "ticker": " BREEZE", + "namespace": "breeze", + "mosaic": "breeze-token", + "divisibility": 0, + "networks": [ + 104 + ] + }, + { + "name": "PacNEM Game Credits", + "ticker": " PAC:HRT", + "namespace": "pacnem", + "mosaic": "heart", + "divisibility": 0, + "networks": [ + 104 + ] + }, + { + "name": "PacNEM Score Tokens", + "ticker": " PAC:CHS", + "namespace": "pacnem", + "mosaic": "cheese", + "divisibility": 6, + "levy": "MosaicLevy_Percentile", + "fee": 100, + "levy_namespace": "nem", + "levy_mosaic": "xem", + "networks": [ + 104 + ] + } ] From 44dfb07cfaafffada4b2ce0d15ba1d90d17cf35e Mon Sep 17 00:00:00 2001 From: WO <35449969+wo01@users.noreply.github.com> Date: Fri, 4 May 2018 23:23:12 +0900 Subject: [PATCH 306/767] Add Koto (#103) --- defs/coins/koto.json | 38 ++++++++++++++++++++++++++++++++++++++ defs/coins/koto.png | Bin 0 -> 14063 bytes 2 files changed, 38 insertions(+) create mode 100644 defs/coins/koto.json create mode 100644 defs/coins/koto.png diff --git a/defs/coins/koto.json b/defs/coins/koto.json new file mode 100644 index 000000000..5ce91d837 --- /dev/null +++ b/defs/coins/koto.json @@ -0,0 +1,38 @@ +{ + "coin_name": "Koto", + "coin_shortcut": "KOTO", + "coin_label": "Koto", + "website": "https://koto.cash", + "github": "https://github.com/koto-dev/koto", + "maintainer": "WO ", + "curve_name": "secp256k1", + "address_type": 7352, + "address_type_p2sh": 7357, + "maxfee_kb": 1000000, + "minfee_kb": 1000, + "signed_message_header": "Koto Signed Message:\n", + "hash_genesis_block": "6d424c350729ae633275d51dc3496e16cd1b1d195c164da00f39c499a2e9959e", + "xprv_magic": 76066276, + "xpub_magic": 76067358, + "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "slip44": 510, + "segwit": false, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 546, + "blocktime_seconds": 60, + "address_prefix": "koto:", + "min_address_length": 35, + "max_address_length": 95, + "bitcore": [ + "https://insight.kotocoin.info" + ], + "blockbook": [] +} diff --git a/defs/coins/koto.png b/defs/coins/koto.png new file mode 100644 index 0000000000000000000000000000000000000000..a9c1d6d181c9553b9887748a7c1abb57edb79596 GIT binary patch literal 14063 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%0D#varPDN=HwC9();@v?cuT1FTbe6p99` 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 literal 0 HcmV?d00001 From 039263589f17ab058bae49f7fc34341e05514732 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 9 May 2018 01:01:03 +0200 Subject: [PATCH 307/767] defs: remove .gitignore --- defs/coins/.gitignore | 1 - 1 file changed, 1 deletion(-) delete mode 100644 defs/coins/.gitignore diff --git a/defs/coins/.gitignore b/defs/coins/.gitignore deleted file mode 100644 index a6c57f5fb..000000000 --- a/defs/coins/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.json From 093696d00f66fae48aa7f3c8bd728ebec24cb304 Mon Sep 17 00:00:00 2001 From: Derek May <32908855+riddlez666@users.noreply.github.com> Date: Wed, 9 May 2018 04:53:55 -0700 Subject: [PATCH 308/767] EGEM trezor support (#104) --- coins_details.json | 15 ++++++++++++++- coins_details.py | 8 ++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/coins_details.json b/coins_details.json index 6f3c3394d..f70739531 100644 --- a/coins_details.json +++ b/coins_details.json @@ -65,6 +65,19 @@ "t2_enabled": "yes", "type": "coin" }, + "coin2:EGEM": { + "links": { + "Homepage": "https://egem.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "EtherGem", + "shortcut": "EGEM", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin" + }, "coin2:XLM": { "links": { "Homepage": "https://www.stellar.org" @@ -8144,4 +8157,4 @@ "updated_at": 1523468285, "updated_at_readable": "Wed Apr 11 19:38:05 2018" } -} \ No newline at end of file +} diff --git a/coins_details.py b/coins_details.py index 618d741d4..de2f1614f 100755 --- a/coins_details.py +++ b/coins_details.py @@ -188,6 +188,14 @@ def update_ethereum(details): set_default(out, 't1_enabled', 'yes') set_default(out, 't2_enabled', 'yes') update_marketcap(out, 'ubiq') + + out = details['coins'].setdefault('coin2:EGEM', {}) + out['type'] = 'coin' + set_default(out, 'shortcut', 'EGEM') + set_default(out, 'name', 'EtherGem') + set_default(out, 't1_enabled', 'yes') + set_default(out, 't2_enabled', 'yes') + update_marketcap(out, 'egem') def update_mosaics(details): r = requests.get('https://raw.githubusercontent.com/trezor/trezor-mcu/master/firmware/nem_mosaics.json') From e400accca6299f72cfa5e9624ff0534f15e9f35b Mon Sep 17 00:00:00 2001 From: Lucas Betschart Date: Fri, 11 May 2018 11:40:30 +0200 Subject: [PATCH 309/767] Add Feathercoin (#105) --- defs/coins/feathercoin.json | 38 ++++++++++++++++++++++++++++++++++++ defs/coins/feathercoin.png | Bin 0 -> 10171 bytes 2 files changed, 38 insertions(+) create mode 100644 defs/coins/feathercoin.json create mode 100644 defs/coins/feathercoin.png diff --git a/defs/coins/feathercoin.json b/defs/coins/feathercoin.json new file mode 100644 index 000000000..4f66bd4ee --- /dev/null +++ b/defs/coins/feathercoin.json @@ -0,0 +1,38 @@ +{ + "coin_name": "Feathercoin", + "coin_shortcut": "FTC", + "coin_label": "Feathercoin", + "website": "https://feathercoin.com", + "github": "https://github.com/FeatherCoin/Feathercoin", + "maintainer": "Lucas Betschart ", + "curve_name": "secp256k1", + "address_type": 14, + "address_type_p2sh": 5, + "maxfee_kb": 40000000, + "minfee_kb": 1000, + "signed_message_header": "Feathercoin Signed Message:\n", + "hash_genesis_block": "12a765e31ffd4059bada1e25190f6e98c99d9714d334efa41a195a7e7e04bfe2", + "xprv_magic": 76077806, + "xpub_magic": 76069926, + "xpub_magic_segwit_p2sh": 77429938, + "xpub_magic_segwit_native": null, + "bech32_prefix": "fc", + "cashaddr_prefix": null, + "slip44": 8, + "segwit": true, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 1000 + }, + "dust_limit": 54600, + "blocktime_seconds": 60, + "address_prefix": "feathercoin:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "https://bitcore.feathercoin.com" + ], + "blockbook": [] +} diff --git a/defs/coins/feathercoin.png b/defs/coins/feathercoin.png new file mode 100644 index 0000000000000000000000000000000000000000..8f2ef24dd15acdb87caa55a9e5397e565c3e27ff GIT binary patch literal 10171 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 literal 0 HcmV?d00001 From b91db285ba8947d6c65a6a807fba87ebc1d43f5d Mon Sep 17 00:00:00 2001 From: Tomas Susanka Date: Mon, 14 May 2018 15:12:09 +0200 Subject: [PATCH 310/767] stellar: StellarSignMessage.message is bytes not string --- protob/messages.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protob/messages.proto b/protob/messages.proto index 9667cf5c9..3b9ee9a19 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -1028,7 +1028,7 @@ message StellarPublicKey { message StellarSignMessage { repeated uint32 address_n = 1; // BIP-32 path. For compatibility with other wallets, must be m/44'/148'/index' - optional string message = 2; // Message to sign + optional bytes message = 2; // Message to sign } /** From e78e33c8c6a64b3a9203aeee42d4c4fed0c3344a Mon Sep 17 00:00:00 2001 From: Akira Takizawa Date: Thu, 17 May 2018 00:30:28 +0900 Subject: [PATCH 311/767] Add ETSC support (#106) --- coins_details.json | 13 +++++++++++++ coins_details.py | 12 ++++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/coins_details.json b/coins_details.json index f70739531..29bb6f8f9 100644 --- a/coins_details.json +++ b/coins_details.json @@ -78,6 +78,19 @@ "t2_enabled": "yes", "type": "coin" }, + "coin2:ETSC": { + "links": { + "Homepage": "https://ethereumsocial.kr", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "EthereumSocial", + "shortcut": "ETSC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin" + }, "coin2:XLM": { "links": { "Homepage": "https://www.stellar.org" diff --git a/coins_details.py b/coins_details.py index de2f1614f..b7c184f7e 100755 --- a/coins_details.py +++ b/coins_details.py @@ -43,7 +43,7 @@ def update_info(details): details['info']['updated_at_readable'] = time.asctime() details['info']['t1_coins'] = len([True for _, c in details['coins'].items() if c['t1_enabled'] == 'yes']) details['info']['t2_coins'] = len([True for _, c in details['coins'].items() if c['t2_enabled'] == 'yes']) - + try: details['info']['total_marketcap_usd'] = int(coinmarketcap_global()['total_market_cap_usd']) except: @@ -188,7 +188,7 @@ def update_ethereum(details): set_default(out, 't1_enabled', 'yes') set_default(out, 't2_enabled', 'yes') update_marketcap(out, 'ubiq') - + out = details['coins'].setdefault('coin2:EGEM', {}) out['type'] = 'coin' set_default(out, 'shortcut', 'EGEM') @@ -197,6 +197,14 @@ def update_ethereum(details): set_default(out, 't2_enabled', 'yes') update_marketcap(out, 'egem') + out = details['coins'].setdefault('coin2:ETSC', {}) + out['type'] = 'coin' + set_default(out, 'shortcut', 'ETSC') + set_default(out, 'name', 'EthereumSocial') + set_default(out, 't1_enabled', 'yes') + set_default(out, 't2_enabled', 'yes') + update_marketcap(out, 'etsc') + def update_mosaics(details): r = requests.get('https://raw.githubusercontent.com/trezor/trezor-mcu/master/firmware/nem_mosaics.json') supported = [] From 87645b2600c3a0bac153ecd634e84fcf10c67b3e Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 9 May 2018 14:00:53 +0200 Subject: [PATCH 312/767] defs: add ethereum/networks.json --- defs/ethereum/networks.json | 74 +++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 defs/ethereum/networks.json diff --git a/defs/ethereum/networks.json b/defs/ethereum/networks.json new file mode 100644 index 000000000..bed593b1f --- /dev/null +++ b/defs/ethereum/networks.json @@ -0,0 +1,74 @@ +[ + { + "chain_id": 1, + "shortcut": "ETH", + "name": "Ethereum", + "url": "https://www.ethereum.org" + }, + { + "chain_id": 2, + "shortcut": "EXP", + "name": "Expanse", + "url": "https://expanse.tech" + }, + { + "chain_id": 3, + "shortcut": "tETH", + "name": "Ethereum Testnet/Ropsten", + "url": "https://www.ethereum.org" + }, + { + "chain_id": 4, + "shortcut": "tETH", + "name": "Ethereum Testnet/Rinkeby", + "url": "https://www.ethereum.org" + }, + { + "chain_id": 8, + "shortcut": "UBQ", + "name": "UBIQ", + "url": "https://ubiqsmart.com" + }, + { + "chain_id": 30, + "shortcut": "RSK", + "name": "Rootstock", + "url": "https://www.rsk.co" + }, + { + "chain_id": 31, + "shortcut": "tRSK", + "name": "Rootstock Testnet", + "url": "https://www.rsk.co" + }, + { + "chain_id": 42, + "shortcut": "tETH", + "name": "Ethereum Testnet/Kovan", + "url": "https://www.ethereum.org" + }, + { + "chain_id": 61, + "shortcut": "ETC", + "name": "Ethereum Classic", + "url": "https://ethereumclassic.github.io" + }, + { + "chain_id": 62, + "shortcut": "tETC", + "name": "Ethereum Classic Testnet", + "url": "https://ethereumclassic.github.io" + }, + { + "chain_id": 1128, + "shortcut": "ETSC", + "name": "Ethereum Social", + "url": "https://ethereumsocial.kr" + }, + { + "chain_id": 1987, + "shortcut": "EGEM", + "name": "EtherGem", + "url": "https://egem.io" + } +] From 5254c12b0c5b6484449971db9b0011ca357b9192 Mon Sep 17 00:00:00 2001 From: Akira Takizawa Date: Thu, 17 May 2018 20:34:28 +0900 Subject: [PATCH 313/767] Fix chainid for Ethereum Social (#107) --- defs/ethereum/networks.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/defs/ethereum/networks.json b/defs/ethereum/networks.json index bed593b1f..df0acab2e 100644 --- a/defs/ethereum/networks.json +++ b/defs/ethereum/networks.json @@ -29,6 +29,12 @@ "name": "UBIQ", "url": "https://ubiqsmart.com" }, + { + "chain_id": 28, + "shortcut": "ETSC", + "name": "Ethereum Social", + "url": "https://ethereumsocial.kr" + }, { "chain_id": 30, "shortcut": "RSK", @@ -59,12 +65,6 @@ "name": "Ethereum Classic Testnet", "url": "https://ethereumclassic.github.io" }, - { - "chain_id": 1128, - "shortcut": "ETSC", - "name": "Ethereum Social", - "url": "https://ethereumsocial.kr" - }, { "chain_id": 1987, "shortcut": "EGEM", From 83f022f0e689cc6ca6293be952f023687c197778 Mon Sep 17 00:00:00 2001 From: Sotiris Blad Date: Mon, 21 May 2018 10:20:24 +0000 Subject: [PATCH 314/767] MonetaryUnit Support (#109) --- defs/coins/monetaryunit.json | 36 +++++++++++++++++++++++++++++++++++ defs/coins/monetaryunit.png | Bin 0 -> 3757 bytes 2 files changed, 36 insertions(+) create mode 100644 defs/coins/monetaryunit.json create mode 100644 defs/coins/monetaryunit.png diff --git a/defs/coins/monetaryunit.json b/defs/coins/monetaryunit.json new file mode 100644 index 000000000..4fcd35d81 --- /dev/null +++ b/defs/coins/monetaryunit.json @@ -0,0 +1,36 @@ +{ + "coin_name": "MonetaryUnit", + "coin_shortcut": "MUE", + "coin_label": "MUE", + "website": "https://www.monetaryunit.org", + "github": "https://github.com/muecoin/MUECore", + "maintainer": "Sotiris Blad ", + "curve_name": "secp256k1", + "address_type": 16, + "address_type_p2sh": 76, + "maxfee_kb": 100000, + "minfee_kb": 1000, + "signed_message_header": "MonetaryUnit Signed Message:\n", + "hash_genesis_block": "000002acd994a815401fbaae0e52404b32857efd0b7b0c77b8e0715ccdd6d437", + "xprv_magic": 76066276, + "xpub_magic": 76067358, + "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "slip44": 5, + "segwit": false, + "decred": false, + "forkid": null, + "force_bip143": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 5460, + "blocktime_seconds": 40, + "address_prefix": "monetaryunit:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [], + "blockbook": [] +} diff --git a/defs/coins/monetaryunit.png b/defs/coins/monetaryunit.png new file mode 100644 index 0000000000000000000000000000000000000000..19a646b9bf484b4cdc8def9cbda661b758cda0a9 GIT binary patch literal 3757 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 Date: Mon, 21 May 2018 14:43:05 +0200 Subject: [PATCH 315/767] protob: add TransactionType.overwintered flag (for Zcash) --- protob/types.proto | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/protob/types.proto b/protob/types.proto index 2874b2bb2..3f9c2201a 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -234,7 +234,7 @@ message TxOutputBinType { /** * Structure representing transaction - * @used_in SimpleSignTx + * @used_in TxAck */ message TransactionType { optional uint32 version = 1; @@ -246,7 +246,8 @@ message TransactionType { optional uint32 outputs_cnt = 7; optional bytes extra_data = 8; optional uint32 extra_data_len = 9; - optional uint32 decred_expiry = 10; + optional uint32 decred_expiry = 10; // only for Decred + optional bool overwintered = 11; // only for Zcash } /** From f54cf5073c550d92338beb7e8c70ec703d63aee8 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 21 May 2018 15:14:48 +0200 Subject: [PATCH 316/767] defs: add more fields to coin definitions --- coins-check.py | 1 + coins.json | 16 ++++++++++++++++ defs/coins/bcash.json | 3 ++- defs/coins/bcash_testnet.json | 3 ++- defs/coins/bgold.json | 3 ++- defs/coins/bitcoin.json | 3 ++- defs/coins/bitcoin_testnet.json | 3 ++- defs/coins/bitcore.json | 3 ++- defs/coins/bprivate.json | 3 ++- defs/coins/crown.json | 3 ++- defs/coins/dash.json | 3 ++- defs/coins/dash_testnet.json | 3 ++- defs/coins/decred.json | 3 ++- defs/coins/decred_testnet.json | 3 ++- defs/coins/denarius.json | 3 ++- defs/coins/digibyte.json | 3 ++- defs/coins/dogecoin.json | 3 ++- defs/coins/feathercoin.json | 3 ++- defs/coins/flashcoin.json | 3 ++- defs/coins/fujicoin.json | 3 ++- defs/coins/groestlcoin.json | 3 ++- defs/coins/koto.json | 3 ++- defs/coins/litecoin.json | 3 ++- defs/coins/litecoin_testnet.json | 3 ++- defs/coins/monacoin.json | 3 ++- defs/coins/monetaryunit.json | 3 ++- defs/coins/myriad.json | 3 ++- defs/coins/namecoin.json | 3 ++- defs/coins/terracoin.json | 3 ++- defs/coins/tools/build_coins.py | 3 ++- defs/coins/tools/coindef.proto | 5 +++++ defs/coins/tools/coindef.py | 24 ++++++++++++++++++++++-- defs/coins/vertcoin.json | 3 ++- defs/coins/viacoin.json | 3 ++- defs/coins/zcash.json | 3 ++- defs/coins/zcash_testnet.json | 3 ++- defs/coins/zcoin.json | 3 ++- defs/coins/zcoin_testnet.json | 3 ++- 38 files changed, 112 insertions(+), 36 deletions(-) diff --git a/coins-check.py b/coins-check.py index 66cd57728..892026e84 100755 --- a/coins-check.py +++ b/coins-check.py @@ -30,6 +30,7 @@ for coin in json.load(open('coins.json')): assert isinstance(coin['decred'], bool) assert coin['forkid'] is None or isinstance(coin['forkid'], int) assert isinstance(coin['force_bip143'], bool) + assert coin['version_group_id'] is None or is_hex(coin['version_group_id']) assert isinstance(coin['default_fee_b'], dict) assert isinstance(coin['dust_limit'], int) assert isinstance(coin['blocktime_minutes'], int) or isinstance(coin['blocktime_minutes'], float) diff --git a/coins.json b/coins.json index dd5425625..a2349ec93 100644 --- a/coins.json +++ b/coins.json @@ -20,6 +20,7 @@ "decred": false, "forkid": null, "force_bip143": false, + "version_group_id": null, "default_fee_b": { "Low": 10, "Economy": 70, @@ -58,6 +59,7 @@ "decred": false, "forkid": null, "force_bip143": false, + "version_group_id": null, "default_fee_b": { "Normal": 10 }, @@ -93,6 +95,7 @@ "decred": false, "forkid": 0, "force_bip143": true, + "version_group_id": null, "default_fee_b": { "Low": 10, "Economy": 70, @@ -130,6 +133,7 @@ "decred": false, "forkid": 0, "force_bip143": true, + "version_group_id": null, "default_fee_b": { "Normal": 10 }, @@ -162,6 +166,7 @@ "decred": false, "forkid": null, "force_bip143": false, + "version_group_id": null, "default_fee_b": { "Normal": 10 }, @@ -194,6 +199,7 @@ "decred": false, "forkid": null, "force_bip143": false, + "version_group_id": null, "default_fee_b": { "Normal": 1000 }, @@ -228,6 +234,7 @@ "decred": false, "forkid": null, "force_bip143": false, + "version_group_id": null, "default_fee_b": { "Normal": 10 }, @@ -260,6 +267,7 @@ "decred": false, "forkid": null, "force_bip143": false, + "version_group_id": null, "default_fee_b": { "Normal": 10 }, @@ -295,6 +303,7 @@ "decred": false, "forkid": null, "force_bip143": false, + "version_group_id": null, "default_fee_b": { "Normal": 10 }, @@ -329,6 +338,7 @@ "decred": false, "forkid": null, "force_bip143": false, + "version_group_id": "03c48270", "default_fee_b": { "Normal": 10 }, @@ -361,6 +371,7 @@ "decred": false, "forkid": 79, "force_bip143": true, + "version_group_id": null, "default_fee_b": { "Low": 10, "Economy": 70, @@ -398,6 +409,7 @@ "decred": false, "forkid": null, "force_bip143": false, + "version_group_id": null, "default_fee_b": { "Low": 10, "Economy": 70, @@ -435,6 +447,7 @@ "decred": false, "forkid": null, "force_bip143": false, + "version_group_id": null, "default_fee_b": { "Normal": 100000 }, @@ -469,6 +482,7 @@ "decred": false, "forkid": null, "force_bip143": false, + "version_group_id": null, "default_fee_b": { "Low": 100000, "Economy": 200000, @@ -506,6 +520,7 @@ "decred": false, "forkid": null, "force_bip143": false, + "version_group_id": null, "default_fee_b": { "Normal": 1000 }, @@ -538,6 +553,7 @@ "decred": true, "forkid": null, "force_bip143": false, + "version_group_id": null, "default_fee_b": { "Normal": 10 }, diff --git a/defs/coins/bcash.json b/defs/coins/bcash.json index dbbf52375..eabb996ec 100644 --- a/defs/coins/bcash.json +++ b/defs/coins/bcash.json @@ -21,8 +21,9 @@ "slip44": 145, "segwit": false, "decred": false, - "forkid": 0, + "fork_id": 0, "force_bip143": true, + "version_group_id": null, "default_fee_b": { "Low": 10, "Economy": 70, diff --git a/defs/coins/bcash_testnet.json b/defs/coins/bcash_testnet.json index 940ed1b1e..6107f5ea4 100644 --- a/defs/coins/bcash_testnet.json +++ b/defs/coins/bcash_testnet.json @@ -21,8 +21,9 @@ "slip44": 1, "segwit": false, "decred": false, - "forkid": 0, + "fork_id": 0, "force_bip143": true, + "version_group_id": null, "default_fee_b": { "Normal": 10 }, diff --git a/defs/coins/bgold.json b/defs/coins/bgold.json index 02ead2303..fff12d910 100644 --- a/defs/coins/bgold.json +++ b/defs/coins/bgold.json @@ -21,8 +21,9 @@ "slip44": 156, "segwit": true, "decred": false, - "forkid": 79, + "fork_id": 79, "force_bip143": true, + "version_group_id": null, "default_fee_b": { "Low": 10, "Economy": 70, diff --git a/defs/coins/bitcoin.json b/defs/coins/bitcoin.json index a2df42850..c81dd7195 100644 --- a/defs/coins/bitcoin.json +++ b/defs/coins/bitcoin.json @@ -21,8 +21,9 @@ "slip44": 0, "segwit": true, "decred": false, - "forkid": null, + "fork_id": null, "force_bip143": false, + "version_group_id": null, "default_fee_b": { "Low": 10, "Economy": 70, diff --git a/defs/coins/bitcoin_testnet.json b/defs/coins/bitcoin_testnet.json index 9097b0d66..f911521c6 100644 --- a/defs/coins/bitcoin_testnet.json +++ b/defs/coins/bitcoin_testnet.json @@ -21,8 +21,9 @@ "slip44": 1, "segwit": true, "decred": false, - "forkid": null, + "fork_id": null, "force_bip143": false, + "version_group_id": null, "default_fee_b": { "Normal": 10 }, diff --git a/defs/coins/bitcore.json b/defs/coins/bitcore.json index 9525fe497..8bf54fcf6 100644 --- a/defs/coins/bitcore.json +++ b/defs/coins/bitcore.json @@ -21,8 +21,9 @@ "slip44": 0, "segwit": true, "decred": false, - "forkid": null, + "fork_id": null, "force_bip143": false, + "version_group_id": null, "default_fee_b": { "Low": 10 }, diff --git a/defs/coins/bprivate.json b/defs/coins/bprivate.json index 5d9cf4c60..09a065c6d 100644 --- a/defs/coins/bprivate.json +++ b/defs/coins/bprivate.json @@ -21,8 +21,9 @@ "slip44": 183, "segwit": false, "decred": false, - "forkid": 42, + "fork_id": 42, "force_bip143": false, + "version_group_id": null, "default_fee_b": { "Normal": 10 }, diff --git a/defs/coins/crown.json b/defs/coins/crown.json index 532ee5104..9e353cb03 100644 --- a/defs/coins/crown.json +++ b/defs/coins/crown.json @@ -21,8 +21,9 @@ "slip44": 72, "segwit": false, "decred": false, - "forkid": null, + "fork_id": null, "force_bip143": false, + "version_group_id": null, "default_fee_b": { "Normal": 10 }, diff --git a/defs/coins/dash.json b/defs/coins/dash.json index b5d7e5731..fb16f3d85 100644 --- a/defs/coins/dash.json +++ b/defs/coins/dash.json @@ -21,8 +21,9 @@ "slip44": 5, "segwit": false, "decred": false, - "forkid": null, + "fork_id": null, "force_bip143": false, + "version_group_id": null, "default_fee_b": { "Normal": 10 }, diff --git a/defs/coins/dash_testnet.json b/defs/coins/dash_testnet.json index 5e834f15a..ddf425bc5 100644 --- a/defs/coins/dash_testnet.json +++ b/defs/coins/dash_testnet.json @@ -21,8 +21,9 @@ "slip44": 1, "segwit": false, "decred": false, - "forkid": null, + "fork_id": null, "force_bip143": false, + "version_group_id": null, "default_fee_b": { "Normal": 10 }, diff --git a/defs/coins/decred.json b/defs/coins/decred.json index c796cbe38..5b3741efa 100644 --- a/defs/coins/decred.json +++ b/defs/coins/decred.json @@ -21,8 +21,9 @@ "slip44": 42, "segwit": false, "decred": true, - "forkid": null, + "fork_id": null, "force_bip143": false, + "version_group_id": null, "default_fee_b": { "Normal": 10 }, diff --git a/defs/coins/decred_testnet.json b/defs/coins/decred_testnet.json index a54a6b30d..0d7ffb9d2 100644 --- a/defs/coins/decred_testnet.json +++ b/defs/coins/decred_testnet.json @@ -21,8 +21,9 @@ "slip44": 1, "segwit": false, "decred": true, - "forkid": null, + "fork_id": null, "force_bip143": false, + "version_group_id": null, "default_fee_b": { "Normal": 10 }, diff --git a/defs/coins/denarius.json b/defs/coins/denarius.json index 972148618..8a0627fcf 100644 --- a/defs/coins/denarius.json +++ b/defs/coins/denarius.json @@ -21,8 +21,9 @@ "slip44": 116, "segwit": false, "decred": false, - "forkid": null, + "fork_id": null, "force_bip143": false, + "version_group_id": null, "default_fee_b": { "Normal": 10 }, diff --git a/defs/coins/digibyte.json b/defs/coins/digibyte.json index 8d108b6b1..65f52a106 100644 --- a/defs/coins/digibyte.json +++ b/defs/coins/digibyte.json @@ -21,8 +21,9 @@ "slip44": 20, "segwit": true, "decred": false, - "forkid": null, + "fork_id": null, "force_bip143": false, + "version_group_id": null, "default_fee_b": { "Low": 10, "Economy": 70, diff --git a/defs/coins/dogecoin.json b/defs/coins/dogecoin.json index 3ff4245a5..8e03ed9b5 100644 --- a/defs/coins/dogecoin.json +++ b/defs/coins/dogecoin.json @@ -21,8 +21,9 @@ "slip44": 3, "segwit": false, "decred": false, - "forkid": null, + "fork_id": null, "force_bip143": false, + "version_group_id": null, "default_fee_b": { "Normal": 10 }, diff --git a/defs/coins/feathercoin.json b/defs/coins/feathercoin.json index 4f66bd4ee..58a66a110 100644 --- a/defs/coins/feathercoin.json +++ b/defs/coins/feathercoin.json @@ -21,8 +21,9 @@ "slip44": 8, "segwit": true, "decred": false, - "forkid": null, + "fork_id": null, "force_bip143": false, + "version_group_id": null, "default_fee_b": { "Normal": 1000 }, diff --git a/defs/coins/flashcoin.json b/defs/coins/flashcoin.json index 0bff965a6..3b37be349 100644 --- a/defs/coins/flashcoin.json +++ b/defs/coins/flashcoin.json @@ -21,8 +21,9 @@ "slip44": 120, "segwit": true, "decred": false, - "forkid": null, + "fork_id": null, "force_bip143": false, + "version_group_id": null, "default_fee_b": { "Normal": 0 }, diff --git a/defs/coins/fujicoin.json b/defs/coins/fujicoin.json index 128fcf23a..e654d990a 100644 --- a/defs/coins/fujicoin.json +++ b/defs/coins/fujicoin.json @@ -21,8 +21,9 @@ "slip44": 75, "segwit": true, "decred": false, - "forkid": null, + "fork_id": null, "force_bip143": false, + "version_group_id": null, "default_fee_b": { "Low": 100000, "Economy": 200000, diff --git a/defs/coins/groestlcoin.json b/defs/coins/groestlcoin.json index 0016046e0..8fa053130 100644 --- a/defs/coins/groestlcoin.json +++ b/defs/coins/groestlcoin.json @@ -21,8 +21,9 @@ "slip44": 17, "segwit": true, "decred": false, - "forkid": null, + "fork_id": null, "force_bip143": false, + "version_group_id": null, "default_fee_b": { "Normal": 10 }, diff --git a/defs/coins/koto.json b/defs/coins/koto.json index 5ce91d837..eb96ee98e 100644 --- a/defs/coins/koto.json +++ b/defs/coins/koto.json @@ -21,8 +21,9 @@ "slip44": 510, "segwit": false, "decred": false, - "forkid": null, + "fork_id": null, "force_bip143": false, + "version_group_id": null, "default_fee_b": { "Normal": 10 }, diff --git a/defs/coins/litecoin.json b/defs/coins/litecoin.json index 9f93e72f3..453fe1776 100644 --- a/defs/coins/litecoin.json +++ b/defs/coins/litecoin.json @@ -21,8 +21,9 @@ "slip44": 2, "segwit": true, "decred": false, - "forkid": null, + "fork_id": null, "force_bip143": false, + "version_group_id": null, "default_fee_b": { "Normal": 1000 }, diff --git a/defs/coins/litecoin_testnet.json b/defs/coins/litecoin_testnet.json index 6010158a5..a6e626345 100644 --- a/defs/coins/litecoin_testnet.json +++ b/defs/coins/litecoin_testnet.json @@ -21,8 +21,9 @@ "slip44": 1, "segwit": true, "decred": false, - "forkid": null, + "fork_id": null, "force_bip143": false, + "version_group_id": null, "default_fee_b": { "Normal": 10 }, diff --git a/defs/coins/monacoin.json b/defs/coins/monacoin.json index feca4e757..b261793cd 100644 --- a/defs/coins/monacoin.json +++ b/defs/coins/monacoin.json @@ -21,8 +21,9 @@ "slip44": 22, "segwit": true, "decred": false, - "forkid": null, + "fork_id": null, "force_bip143": false, + "version_group_id": null, "default_fee_b": { "Normal": 100000 }, diff --git a/defs/coins/monetaryunit.json b/defs/coins/monetaryunit.json index 4fcd35d81..875681226 100644 --- a/defs/coins/monetaryunit.json +++ b/defs/coins/monetaryunit.json @@ -21,8 +21,9 @@ "slip44": 5, "segwit": false, "decred": false, - "forkid": null, + "fork_id": null, "force_bip143": false, + "version_group_id": null, "default_fee_b": { "Normal": 10 }, diff --git a/defs/coins/myriad.json b/defs/coins/myriad.json index f731f8a9b..e8c36c303 100644 --- a/defs/coins/myriad.json +++ b/defs/coins/myriad.json @@ -21,8 +21,9 @@ "slip44": 90, "segwit": true, "decred": false, - "forkid": null, + "fork_id": null, "force_bip143": false, + "version_group_id": null, "default_fee_b": { "Low": 10, "Economy": 70, diff --git a/defs/coins/namecoin.json b/defs/coins/namecoin.json index 37d7ed72e..ff839e65e 100644 --- a/defs/coins/namecoin.json +++ b/defs/coins/namecoin.json @@ -21,8 +21,9 @@ "slip44": 7, "segwit": false, "decred": false, - "forkid": null, + "fork_id": null, "force_bip143": false, + "version_group_id": null, "default_fee_b": { "Normal": 10 }, diff --git a/defs/coins/terracoin.json b/defs/coins/terracoin.json index 58b82a395..d9844d886 100644 --- a/defs/coins/terracoin.json +++ b/defs/coins/terracoin.json @@ -21,8 +21,9 @@ "slip44": 0, "segwit": false, "decred": false, - "forkid": null, + "fork_id": null, "force_bip143": false, + "version_group_id": null, "default_fee_b": { "Normal": 10 }, diff --git a/defs/coins/tools/build_coins.py b/defs/coins/tools/build_coins.py index f354e0ad9..ec27a1a4f 100755 --- a/defs/coins/tools/build_coins.py +++ b/defs/coins/tools/build_coins.py @@ -69,8 +69,9 @@ def validate_coin(coin): assert check_type(coin['slip44'], int) assert check_type(coin['segwit'], bool) assert check_type(coin['decred'], bool) - assert check_type(coin['forkid'], int, nullable=True) + assert check_type(coin['fork_id'], int, nullable=True) assert check_type(coin['force_bip143'], bool) + assert check_type(coin['version_group_id'], int, nullable=True) assert check_type(coin['default_fee_b'], dict) assert check_type(coin['dust_limit'], int) assert check_type(coin['blocktime_seconds'], int) diff --git a/defs/coins/tools/coindef.proto b/defs/coins/tools/coindef.proto index 9bf27cce6..66c8a5b27 100644 --- a/defs/coins/tools/coindef.proto +++ b/defs/coins/tools/coindef.proto @@ -27,4 +27,9 @@ message CoinDef { optional uint32 min_address_length = 24; optional uint32 max_address_length = 25; optional bytes icon = 26; + optional uint32 version_group_id = 27; + optional string website = 28; + optional string github = 29; + optional string maintainer = 30; + optional uint32 blocktime_seconds = 31; } diff --git a/defs/coins/tools/coindef.py b/defs/coins/tools/coindef.py index 1c1beaba1..598dc68b3 100644 --- a/defs/coins/tools/coindef.py +++ b/defs/coins/tools/coindef.py @@ -30,6 +30,11 @@ class CoinDef(p.MessageType): 24: ('min_address_length', p.UVarintType, 0), 25: ('max_address_length', p.UVarintType, 0), 26: ('icon', p.BytesType, 0), + 27: ('version_group_id', p.UVarintType, 0), + 28: ('website', p.UnicodeType, 0), + 29: ('github', p.UnicodeType, 0), + 30: ('maintainer', p.UnicodeType, 0), + 31: ('blocktime_seconds', p.UVarintType, 0), } def __init__( @@ -60,7 +65,14 @@ class CoinDef(p.MessageType): min_address_length: int = None, max_address_length: int = None, icon: bytes = None, - **kwargs + version_group_id: int = None, + website: str = None, + github: str = None, + maintainer: str = None, + blocktime_seconds: int = None, + default_fee_b: dict = None, + bitcore: dict = None, + blockbook: dict = None ): self.coin_name = coin_name self.coin_shortcut = coin_shortcut @@ -88,4 +100,12 @@ class CoinDef(p.MessageType): self.min_address_length = min_address_length self.max_address_length = max_address_length self.icon = icon - p.MessageType.__init__(self, **kwargs) + self.version_group_id = version_group_id + self.website = website + self.github = github + self.maintainer = maintainer + self.blocktime_seconds = blocktime_seconds + self.default_fee_b = default_fee_b + self.bitcore = bitcore + self.blockbook = blockbook + p.MessageType.__init__(self) diff --git a/defs/coins/vertcoin.json b/defs/coins/vertcoin.json index fd75e878e..b6cb72eb1 100644 --- a/defs/coins/vertcoin.json +++ b/defs/coins/vertcoin.json @@ -21,8 +21,9 @@ "slip44": 28, "segwit": true, "decred": false, - "forkid": null, + "fork_id": null, "force_bip143": false, + "version_group_id": null, "default_fee_b": { "Normal": 1000 }, diff --git a/defs/coins/viacoin.json b/defs/coins/viacoin.json index 312811cc1..ced4d467b 100644 --- a/defs/coins/viacoin.json +++ b/defs/coins/viacoin.json @@ -21,8 +21,9 @@ "slip44": 14, "segwit": true, "decred": false, - "forkid": null, + "fork_id": null, "force_bip143": false, + "version_group_id": null, "default_fee_b": { "Low": 1000, "Economy": 7000, diff --git a/defs/coins/zcash.json b/defs/coins/zcash.json index 1af17df39..336c110c4 100644 --- a/defs/coins/zcash.json +++ b/defs/coins/zcash.json @@ -21,8 +21,9 @@ "slip44": 133, "segwit": false, "decred": false, - "forkid": null, + "fork_id": null, "force_bip143": false, + "version_group_id": null, "default_fee_b": { "Normal": 10 }, diff --git a/defs/coins/zcash_testnet.json b/defs/coins/zcash_testnet.json index 7f1c0c992..8a0ff7188 100644 --- a/defs/coins/zcash_testnet.json +++ b/defs/coins/zcash_testnet.json @@ -21,8 +21,9 @@ "slip44": 1, "segwit": false, "decred": false, - "forkid": null, + "fork_id": null, "force_bip143": false, + "version_group_id": 63210096, "default_fee_b": { "Normal": 10 }, diff --git a/defs/coins/zcoin.json b/defs/coins/zcoin.json index 911f6e4ff..57dd3f68d 100644 --- a/defs/coins/zcoin.json +++ b/defs/coins/zcoin.json @@ -21,8 +21,9 @@ "slip44": 136, "segwit": false, "decred": false, - "forkid": null, + "fork_id": null, "force_bip143": false, + "version_group_id": null, "default_fee_b": { "Low": 1, "Economy": 10, diff --git a/defs/coins/zcoin_testnet.json b/defs/coins/zcoin_testnet.json index 317ecbb41..954522884 100644 --- a/defs/coins/zcoin_testnet.json +++ b/defs/coins/zcoin_testnet.json @@ -21,8 +21,9 @@ "slip44": 1, "segwit": false, "decred": false, - "forkid": null, + "fork_id": null, "force_bip143": false, + "version_group_id": null, "default_fee_b": { "Low": 1, "Economy": 10, From ede4833c134bf3a1ad34d4cff565652829681f8d Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 22 May 2018 12:36:15 +0200 Subject: [PATCH 317/767] protob: add Initialize.skip_passphrase --- protob/messages.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/protob/messages.proto b/protob/messages.proto index 3b9ee9a19..d57fa1aaa 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -144,6 +144,7 @@ enum MessageType { */ message Initialize { optional bytes state = 1; // assumed device state, clear session if set and different + optional bool skip_passphrase = 2; // this session should always assume empty passphrase } /** From fb662e53b129b250149d982259696531ff4c2b95 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 22 May 2018 18:22:24 +0200 Subject: [PATCH 318/767] protob: remove {Lisk,Stellar}{SignMessage,MessageSignature,VerifyMessage} --- protob/messages.proto | 66 ------------------------------------------- 1 file changed, 66 deletions(-) diff --git a/protob/messages.proto b/protob/messages.proto index d57fa1aaa..04e869fda 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -105,9 +105,6 @@ enum MessageType { MessageType_LiskAddress = 115 [(wire_out) = true]; MessageType_LiskSignTx = 116 [(wire_in) = true]; MessageType_LiskSignedTx = 117 [(wire_out) = true]; - MessageType_LiskSignMessage = 118 [(wire_in) = true]; - MessageType_LiskMessageSignature = 119 [(wire_out) = true]; - MessageType_LiskVerifyMessage = 120 [(wire_in) = true]; MessageType_LiskGetPublicKey = 121 [(wire_in) = true]; MessageType_LiskPublicKey = 122 [(wire_out) = true]; @@ -116,9 +113,6 @@ enum MessageType { MessageType_StellarPublicKey = 201 [(wire_out) = true]; MessageType_StellarSignTx = 202 [(wire_in) = true]; MessageType_StellarTxOpRequest = 203 [(wire_out) = true]; - MessageType_StellarSignMessage = 204 [(wire_in) = true]; - MessageType_StellarMessageSignature = 205 [(wire_out) = true]; - MessageType_StellarVerifyMessage = 206 [(wire_in) = true]; MessageType_StellarCreateAccountOp = 210 [(wire_in) = true]; MessageType_StellarPaymentOp = 211 [(wire_in) = true]; MessageType_StellarPathPaymentOp = 212 [(wire_in) = true]; @@ -1022,36 +1016,6 @@ message StellarPublicKey { optional bytes public_key = 1; // Raw bytes of the public key (no version or checksum) } -/** - * Request: ask device to sign the given string - * @next StellarMessageSignature - */ -message StellarSignMessage { - repeated uint32 address_n = 1; // BIP-32 path. For compatibility with other wallets, must be m/44'/148'/index' - - optional bytes message = 2; // Message to sign -} - -/** - * Response: device has signed data - * @prev StellarSignMessage - */ -message StellarMessageSignature { - optional bytes public_key = 1; // Raw bytes of the public key (no version or checksum) - optional bytes signature = 2; // ed25519 signature bytes -} - -/** - * Request: ask device to verify that signature is valid (public_key has signed message) - * @next Success - * @next Failure - */ -message StellarVerifyMessage { - optional bytes public_key = 1; // Public key corresponding to the private key that signed the message - optional bytes message = 2; // Binary data that was signed - optional bytes signature = 3; // Signature to verify -} - /** * Request: ask device to sign Stellar transaction * @next StellarTxOpRequest @@ -1331,36 +1295,6 @@ message LiskSignedTx { optional bytes signature = 1; } -/** -* Request: Ask device to sign message -* @next LiskMessageSignature -* @next Failure -*/ -message LiskSignMessage { - repeated uint32 address_n = 1; - optional bytes message = 2; -} - -/** - * Response: Signed message - * @prev LiskSignMessage - */ -message LiskMessageSignature { - optional string address = 1; - optional bytes signature = 2; -} - -/** - * Request: Ask device to verify message - * @next Success - * @next Failure - */ -message LiskVerifyMessage { - optional bytes signature = 1; - optional bytes public_key = 2; - optional bytes message = 3; -} - ///////////////////////////////////////////////////////////// // Debug messages (only available if DebugLink is enabled) // ///////////////////////////////////////////////////////////// From 9ac3515afd01a5f72f2b8ad17bb8329c1b93b5bd Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 22 May 2018 19:33:21 +0200 Subject: [PATCH 319/767] defs: add ethereum/tokens submodules --- .gitmodules | 3 +++ defs/ethereum/tokens | 1 + 2 files changed, 4 insertions(+) create mode 100644 .gitmodules create mode 160000 defs/ethereum/tokens diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..d8c45b3c3 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "defs/ethereum/tokens"] + path = defs/ethereum/tokens + url = https://github.com/ethereum-lists/tokens.git diff --git a/defs/ethereum/tokens b/defs/ethereum/tokens new file mode 160000 index 000000000..0c36adf6b --- /dev/null +++ b/defs/ethereum/tokens @@ -0,0 +1 @@ +Subproject commit 0c36adf6bda829578b0d32713342b6486c2ab591 From 70ae181ac9ccc927389efc3cab0a78d3c4577b0d Mon Sep 17 00:00:00 2001 From: slush Date: Tue, 22 May 2018 19:42:49 +0200 Subject: [PATCH 320/767] Use coinmarketcap v2 API. Ethereum tokens WIP. --- coins_details.py | 69 +++++++++++++++++++++++++++++++++--------------- 1 file changed, 48 insertions(+), 21 deletions(-) diff --git a/coins_details.py b/coins_details.py index b7c184f7e..255ec5718 100755 --- a/coins_details.py +++ b/coins_details.py @@ -5,32 +5,58 @@ import json import requests import pprint -SKIP_COINMARKETCAP = True +COINS = {} -def coinmarketcap_info(shortcut): - if SKIP_COINMARKETCAP: - raise Exception("Skipping coinmarketcap call") +def coinmarketcap_init(): + global COINS - shortcut = shortcut.replace(' ', '-') - url = 'https://api.coinmarketcap.com/v1/ticker/%s/?convert=USD' % shortcut try: - return requests.get(url).json()[0] - except KeyboardInterrupt: - raise - except: - print("Cannot fetch Coinmarketcap info for %s" % shortcut) + COINS = json.load(open('coinmarketcap.json', 'r')) + except FileNotFoundError: + pass + else: + if COINS["1"]["last_updated"] > time.time() - 3600: + print("Using local cache of coinmarketcap") + return + + print("Updating coins from coinmarketcap") + total = None + COINS = {} + + while total is None or len(COINS) < total: + url = 'https://api.coinmarketcap.com/v2/ticker/?start=%d&convert=USD&limit=100' % (len(COINS)+1) + data = requests.get(url).json() + COINS.update(data['data']) + if total is None: + total = data['metadata']['num_cryptocurrencies'] + + print("Fetched %d of %d coins" % (len(COINS), total)) + time.sleep(1) + + # pprint.pprint(COINS) + json.dump(COINS, open('coinmarketcap.json', 'w'), sort_keys=True, indent=4) + + +def coinmarketcap_info(shortcut): + global COINS + shortcut = shortcut.replace(' ', '-').lower() + + for _id in COINS: + coin = COINS[_id] + #print(shortcut, coin['website_slug']) + if shortcut == coin['website_slug']: + #print(coin) + return coin def update_marketcap(obj, shortcut): try: - obj['marketcap_usd'] = int(float(coinmarketcap_info(shortcut)['market_cap_usd'])) + obj['marketcap_usd'] = int(float(coinmarketcap_info(shortcut)['quotes']['USD']['market_cap'])) except: - pass + del obj['marketcap_usd'] + print("Marketcap info not found for", shortcut) def coinmarketcap_global(): - if SKIP_COINMARKETCAP: - raise Exception("Skipping coinmarketcap call") - - url = 'https://api.coinmarketcap.com/v1/global' + url = 'https://api.coinmarketcap.com/v2/global' ret = requests.get(url) data = ret.json() return data @@ -45,7 +71,7 @@ def update_info(details): details['info']['t2_coins'] = len([True for _, c in details['coins'].items() if c['t2_enabled'] == 'yes']) try: - details['info']['total_marketcap_usd'] = int(coinmarketcap_global()['total_market_cap_usd']) + details['info']['total_marketcap_usd'] = int(coinmarketcap_global()['data']['quotes']['USD']['total_market_cap']) except: pass @@ -206,9 +232,9 @@ def update_ethereum(details): update_marketcap(out, 'etsc') def update_mosaics(details): - r = requests.get('https://raw.githubusercontent.com/trezor/trezor-mcu/master/firmware/nem_mosaics.json') + d = json.load(open('defs/nem/nem_mosaics.json')) supported = [] - for mosaic in r.json(): + for mosaic in d: # print('Updating', mosaic['name'], mosaic['ticker']) key = "mosaic:%s" % mosaic['ticker'].strip() @@ -246,8 +272,9 @@ if __name__ == '__main__': except FileNotFoundError: details = {'coins': {}, 'info': {}} + coinmarketcap_init() update_coins(details) - update_erc20(details) + #update_erc20(details) update_ethereum(details) update_mosaics(details) update_info(details) From 8fc001154e49c2c1747957c4a9a1ab92dcc86edb Mon Sep 17 00:00:00 2001 From: slush Date: Tue, 22 May 2018 19:44:00 +0200 Subject: [PATCH 321/767] Ignore cache files for coins_details.py --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index c18dd8d83..be9f15e5d 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ __pycache__/ +coinmarketcap.json From 078cf07658a99888adca19e3284864a5354da550 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 23 May 2018 14:38:23 +0200 Subject: [PATCH 322/767] updated coins_details.json --- coins_details.json | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/coins_details.json b/coins_details.json index 29bb6f8f9..a9888c2f0 100644 --- a/coins_details.json +++ b/coins_details.json @@ -95,18 +95,18 @@ "links": { "Homepage": "https://www.stellar.org" }, - "marketcap_usd": 0, + "marketcap_usd": 5331912521, "name": "Stellar", "notes": "In development", "shortcut": "XLM", - "t1_enabled": "no", + "t1_enabled": "in progress", "t2_enabled": "in progress" }, "coin2:XMR": { "links": { "Homepage": "https://getmonero.org" }, - "marketcap_usd": 0, + "marketcap_usd": 2831629582, "name": "Monero", "notes": "In development", "shortcut": "XMR", @@ -118,7 +118,7 @@ "links": { "Homepage": "https://ripple.com" }, - "marketcap_usd": 0, + "marketcap_usd": 24313181966, "name": "Ripple", "notes": "In development", "shortcut": "XRP", @@ -126,6 +126,18 @@ "t2_enabled": "in progress", "type": "coin" }, + "coin2:LSK": { + "links": { + "Homepage": "https://lisk.io/" + }, + "marketcap_usd": 997454377, + "name": "Lisk", + "notes": "In development", + "shortcut": "LSK", + "t1_enabled": "no", + "t2_enabled": "in progress", + "type": "coin" + }, "coin:BCH": { "links": { "Electron Cash": "https://electroncash.org", From 64c114f8b11edcf0a5eab41ba6ba0aa430e52b97 Mon Sep 17 00:00:00 2001 From: slush Date: Wed, 23 May 2018 16:21:33 +0200 Subject: [PATCH 323/767] Generate from git submodule instead of IPFS. --- ethereum_tokens_gen.py | 67 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100755 ethereum_tokens_gen.py diff --git a/ethereum_tokens_gen.py b/ethereum_tokens_gen.py new file mode 100755 index 000000000..73cd64f5b --- /dev/null +++ b/ethereum_tokens_gen.py @@ -0,0 +1,67 @@ +#!/usr/bin/env python3 +import sys +import os +import json + +def get_tokens(): + tokens = [] + for s, i in networks: + try: + files = os.scandir('defs/ethereum/tokens/tokens/%s' % s) + except FileNotFoundError: + continue + + for f in files: + data = json.load(open(f.path, 'r')) + data['chain'] = s + data['chain_id'] = i + tokens.append(data) + + return tokens + + +def print_tokens(tokens, python=False): + for t in sorted(tokens, key=lambda x: x['chain'] + x['symbol'].upper()): + address, name, symbol, decimal, chain, chain_id = t['address'], t['name'], t['symbol'], int(t['decimals']), t['chain'], t['chain_id'] + address = '\\x'.join([address[i:i + 2] for i in range(0, len(address), 2)])[2:].lower() + if python: + print(" (%d, b'%s', '%s', %d), # %s / %s" % (chain_id, address, symbol, decimal, chain, name)) + else: + print('\t{%2d, "%s", " %s", %d}, // %s / %s' % (chain_id, address, symbol, decimal, chain, name)) + + return len(tokens) + + +# disabled are networks with no tokens defined in ethereum-lists/tokens repo + +networks = [ + ('eth', 1), + ('exp', 2), + # ('rop', 3), + # ('rin', 4), + ('ubq', 8), + # ('rsk', 30), + # ('kov', 42), + ('etc', 61), +] + + +def generate_c(tokens): + count = print_tokens(tokens) + print('-' * 32) + print('#define TOKENS_COUNT %d' % count) + + +def generate_python(tokens): + print('tokens = [') + print_tokens(tokens, python=True) + print(']') + + +if __name__ == '__main__': + tokens = get_tokens() + + if len(sys.argv) > 1 and sys.argv[1] == '--python': + generate_python(tokens) + else: + generate_c(tokens) From 30fa1f9c6b634acf360c7e3380a453b26d7c83e7 Mon Sep 17 00:00:00 2001 From: slush Date: Wed, 23 May 2018 16:41:43 +0200 Subject: [PATCH 324/767] Moved to ethereum_tokens_gen.py --- ethereum_tokens-gen.py | 68 ------------------------------------------ 1 file changed, 68 deletions(-) delete mode 100755 ethereum_tokens-gen.py diff --git a/ethereum_tokens-gen.py b/ethereum_tokens-gen.py deleted file mode 100755 index f8443ebd4..000000000 --- a/ethereum_tokens-gen.py +++ /dev/null @@ -1,68 +0,0 @@ -#!/usr/bin/env python3 -import sys -import requests - - -def get_tokens(ipfs_hash, chain): - URL = 'https://gateway.ipfs.io/ipfs/%s/%s.json' % (ipfs_hash, chain) - r = requests.get(URL) - return r.json() - - -def print_tokens(ipfs_hash, chain, chain_id, python=False): - tokens = get_tokens(ipfs_hash, chain) - if len(tokens) > 0: - if python: - print(' # %s' % chain) - else: - print('\t// %s' % chain) - for t in sorted(tokens, key=lambda x: x['symbol'].upper()): - address, name, symbol, decimal = t['address'], t['name'], t['symbol'], int(t['decimals']) - address = '\\x'.join([address[i:i + 2] for i in range(0, len(address), 2)])[2:].lower() - if python: - print(" (%d, b'%s', '%s', %d), # %s" % (chain_id, address, symbol, decimal, name)) - else: - print('\t{%2d, "%s", " %s", %d}, // %s' % (chain_id, address, symbol, decimal, name)) - - return len(tokens) - - -# disabled are networks with no tokens defined in ethereum-lists/tokens repo - -networks = [ - ('eth', 1), - # ('exp', 2), - # ('rop', 3), - ('rin', 4), - ('ubq', 8), - # ('rsk', 30), - ('kov', 42), - ('etc', 61), -] - - -def generate_c(ipfs_hash): - count = 0 - for s, i in networks: - count += print_tokens(ipfs_hash, s, i) - print('-' * 32) - print('#define TOKENS_COUNT %d' % count) - - -def generate_python(ipfs_hash): - print('ipfs_hash = "%s"' % ipfs_hash) - print('tokens = [') - for s, i in networks: - print_tokens(ipfs_hash, s, i, python=True) - print(']') - - -if __name__ == '__main__': - if len(sys.argv) < 2: - print('Usage: ethereum_tokens-gen.py ipfs_hash [--python]') - sys.exit(1) - ipfs_hash = sys.argv[1] - if len(sys.argv) > 2 and sys.argv[2] == '--python': - generate_python(ipfs_hash) - else: - generate_c(ipfs_hash) From 564af04dd6256717c6108cfad3859a10139aafb9 Mon Sep 17 00:00:00 2001 From: slush Date: Wed, 23 May 2018 16:42:08 +0200 Subject: [PATCH 325/767] Updated scraping of ethereum based tokens --- coins_details.py | 74 +++++++++++++++--------------------------- ethereum_tokens_gen.py | 4 +++ 2 files changed, 30 insertions(+), 48 deletions(-) diff --git a/coins_details.py b/coins_details.py index 255ec5718..1814a3941 100755 --- a/coins_details.py +++ b/coins_details.py @@ -4,6 +4,7 @@ import time import json import requests import pprint +import ethereum_tokens_gen COINS = {} @@ -52,7 +53,6 @@ def update_marketcap(obj, shortcut): try: obj['marketcap_usd'] = int(float(coinmarketcap_info(shortcut)['quotes']['USD']['market_cap'])) except: - del obj['marketcap_usd'] print("Marketcap info not found for", shortcut) def coinmarketcap_global(): @@ -111,66 +111,44 @@ def update_coins(details): check_unsupported(details, 'coin:', supported) def update_erc20(details): - networks = [ - ('eth', 1), - # ('exp', 2), - # ('rop', 3), - ('rin', 4), - ('ubq', 8), - # ('rsk', 30), - ('kov', 42), - ('etc', 61), + networks = ['eth', + 'exp', + # 'rop', + # 'rin', + 'ubq', + # 'rsk', + # 'kov', + 'etc', ] - # Fetch list of tokens already included in Trezor Core - r = requests.get('https://raw.githubusercontent.com/trezor/trezor-core/master/src/apps/ethereum/tokens.py') - d = {} - exec(r.text, d) - - # TODO 'Qmede...' can be removed after ipfs_hash is being generated into tokens.py - ipfs_hash = d.get('ipfs_hash') or 'QmedefcF1fecLVpRymJJmyJFRpJuCTiNfPYBhzUdHPUq3T' - - infos = {} - for n in networks: - # print("Updating info about erc20 tokens for", n[0]) - url = 'https://gateway.ipfs.io/ipfs/%s/%s.json' % (ipfs_hash, n[0]) - r = requests.get(url) - infos[n[0]] = r.json() - + tokens = ethereum_tokens_gen.get_tokens() supported = [] - for t in d['tokens']: - token = t[2] - # print('Updating', token) + for t in tokens: + print('Updating', t['symbol']) - try: - network = [ n[0] for n in networks if n[1] == t[0] ][0] - except: - raise Exception("Unknown network", t[0], "for erc20 token", token) - - try: - info = [ i for i in infos[network] if i['symbol'] == token ][0] - except: - raise Exception("Unknown details for erc20 token", token) + if t['chain'] not in networks: + print('Skipping, %s is disabled' % t['chain']) + continue - key = "erc20:%s:%s" % (network, token) + key = "erc20:%s:%s" % (t['chain'], t['symbol']) supported.append(key) out = details['coins'].setdefault(key, {}) out['type'] = 'erc20' - out['network'] = network - out['address'] = info['address'] + out['network'] = t['chain'] + out['address'] = t['address'] - set_default(out, 'shortcut', token) - set_default(out, 'name', info['name']) + set_default(out, 'shortcut', t['symbol']) + set_default(out, 'name', t['name']) set_default(out, 't1_enabled', 'yes') set_default(out, 't2_enabled', 'yes') set_default(out, 'links', {}) - if info['website']: - out['links']['Homepage'] = info['website'] - if info.get('social', {}).get('github', None): - out['links']['Github'] = info['social']['github'] + if t['website']: + out['links']['Homepage'] = t['website'] + if t.get('social', {}).get('github', None): + out['links']['Github'] = t['social']['github'] - update_marketcap(out, out.get('coinmarketcap_alias', token)) + update_marketcap(out, out.get('coinmarketcap_alias', t['symbol'])) check_unsupported(details, 'erc20:', supported) @@ -274,7 +252,7 @@ if __name__ == '__main__': coinmarketcap_init() update_coins(details) - #update_erc20(details) + update_erc20(details) update_ethereum(details) update_mosaics(details) update_info(details) diff --git a/ethereum_tokens_gen.py b/ethereum_tokens_gen.py index 73cd64f5b..5ef25d7c1 100755 --- a/ethereum_tokens_gen.py +++ b/ethereum_tokens_gen.py @@ -12,6 +12,10 @@ def get_tokens(): continue for f in files: + if not f.path.endswith('.json'): + continue + + print('Processing', f.path) data = json.load(open(f.path, 'r')) data['chain'] = s data['chain_id'] = i From 8c61c4c81e5487241b5c5930f4b23b48dd9702ae Mon Sep 17 00:00:00 2001 From: slush Date: Wed, 23 May 2018 16:42:46 +0200 Subject: [PATCH 326/767] Updated coins details --- coins_details.json | 1917 ++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 1781 insertions(+), 136 deletions(-) diff --git a/coins_details.json b/coins_details.json index a9888c2f0..7cc592fd9 100644 --- a/coins_details.json +++ b/coins_details.json @@ -1,12 +1,25 @@ { "coins": { + "coin2:EGEM": { + "links": { + "Homepage": "https://egem.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "EtherGem", + "shortcut": "EGEM", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin" + }, "coin2:ETC": { "links": { "Homepage": "https://ethereumclassic.github.io", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 0, + "marketcap_usd": 1615843905, "name": "Ethereum Classic", "shortcut": "ETC", "t1_enabled": "yes", @@ -19,74 +32,73 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 41657474634, + "marketcap_usd": 61903701994, "name": "Ethereum", "shortcut": "ETH", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin" }, - "coin2:EXP": { + "coin2:ETSC": { "links": { - "Homepage": "https://www.expanse.tech", + "Homepage": "https://ethereumsocial.kr", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, - "name": "Expanse", - "shortcut": "EXP", + "name": "EthereumSocial", + "shortcut": "ETSC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin" }, - "coin2:RSK": { + "coin2:EXP": { "links": { - "Homepage": "https://www.rsk.co", + "Homepage": "https://www.expanse.tech", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 0, - "name": "Rootstock", - "shortcut": "RSK", + "marketcap_usd": 12801879, + "name": "Expanse", + "shortcut": "EXP", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin" }, - "coin2:UBQ": { + "coin2:LSK": { "links": { - "Homepage": "https://ubiqsmart.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://lisk.io/" }, - "marketcap_usd": 0, - "name": "Ubiq", - "shortcut": "UBQ", - "t1_enabled": "yes", - "t2_enabled": "yes", + "marketcap_usd": 997454377, + "name": "Lisk", + "notes": "In development", + "shortcut": "LSK", + "t1_enabled": "no", + "t2_enabled": "in progress", "type": "coin" }, - "coin2:EGEM": { + "coin2:RSK": { "links": { - "Homepage": "https://egem.io", + "Homepage": "https://www.rsk.co", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, - "name": "EtherGem", - "shortcut": "EGEM", + "name": "Rootstock", + "shortcut": "RSK", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin" }, - "coin2:ETSC": { + "coin2:UBQ": { "links": { - "Homepage": "https://ethereumsocial.kr", + "Homepage": "https://ubiqsmart.com", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 0, - "name": "EthereumSocial", - "shortcut": "ETSC", + "marketcap_usd": 67176919, + "name": "Ubiq", + "shortcut": "UBQ", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin" @@ -126,25 +138,13 @@ "t2_enabled": "in progress", "type": "coin" }, - "coin2:LSK": { - "links": { - "Homepage": "https://lisk.io/" - }, - "marketcap_usd": 997454377, - "name": "Lisk", - "notes": "In development", - "shortcut": "LSK", - "t1_enabled": "no", - "t2_enabled": "in progress", - "type": "coin" - }, "coin:BCH": { "links": { "Electron Cash": "https://electroncash.org", "Homepage": "https://www.bitcoincash.org/", "TREZOR Wallet": "https://wallet.trezor.io" }, - "marketcap_usd": 11187273830, + "marketcap_usd": 18102441394, "name": "Bitcoin Cash", "shortcut": "BCH", "t1_enabled": "yes", @@ -158,7 +158,7 @@ "Homepage": "https://bitcoin.org", "TREZOR Wallet": "https://wallet.trezor.io" }, - "marketcap_usd": 117810371208, + "marketcap_usd": 134898215037, "name": "Bitcoin", "shortcut": "BTC", "t1_enabled": "yes", @@ -170,7 +170,7 @@ "Homepage": "https://bitcoingold.org", "TREZOR Wallet": "https://wallet.trezor.io" }, - "marketcap_usd": 716872866, + "marketcap_usd": 826356886, "name": "Bitcoin Gold", "shortcut": "BTG", "t1_enabled": "yes", @@ -182,7 +182,7 @@ "Homepage": "https://www.dash.org", "TREZOR Wallet": "https://wallet.trezor.io" }, - "marketcap_usd": 2431702245, + "marketcap_usd": 2852529795, "name": "Dash", "shortcut": "DASH", "t1_enabled": "yes", @@ -193,7 +193,7 @@ "links": { "Homepage": "https://www.digibyte.co" }, - "marketcap_usd": 228250448, + "marketcap_usd": 387020636, "name": "DigiByte", "shortcut": "DGB", "t1_enabled": "yes", @@ -204,7 +204,7 @@ "links": { "Homepage": "https://dogecoin.com" }, - "marketcap_usd": 394277478, + "marketcap_usd": 434277034, "name": "Dogecoin", "shortcut": "DOGE", "t1_enabled": "yes", @@ -216,7 +216,7 @@ "Electrum-FJC": "http://www.fujicoin.org/downloads.php", "Homepage": "https://www.fujicoin.org" }, - "marketcap_usd": 631311, + "marketcap_usd": 828203, "name": "Fujicoin", "shortcut": "FJC", "t1_enabled": "yes", @@ -229,7 +229,7 @@ "Homepage": "https://litecoin.org", "TREZOR Wallet": "https://wallet.trezor.io" }, - "marketcap_usd": 6472837124, + "marketcap_usd": 7095804859, "name": "Litecoin", "shortcut": "LTC", "t1_enabled": "yes", @@ -241,7 +241,7 @@ "Electrum-MONA": "https://electrum-mona.org", "Homepage": "https://monacoin.org" }, - "marketcap_usd": 194942030, + "marketcap_usd": 204486823, "name": "Monacoin", "shortcut": "MONA", "t1_enabled": "yes", @@ -252,7 +252,7 @@ "links": { "Homepage": "https://namecoin.org" }, - "marketcap_usd": 22255795, + "marketcap_usd": 29676162, "name": "Namecoin", "shortcut": "NMC", "t1_enabled": "yes", @@ -274,7 +274,7 @@ "links": { "Homepage": "https://vertcoin.org" }, - "marketcap_usd": 87115863, + "marketcap_usd": 85745890, "name": "Vertcoin", "shortcut": "VTC", "t1_enabled": "yes", @@ -286,7 +286,7 @@ "Homepage": "z.cash", "TREZOR Wallet": "https://wallet.trezor.io" }, - "marketcap_usd": 673868263, + "marketcap_usd": 1255619672, "name": "Zcash", "shortcut": "ZEC", "t1_enabled": "yes", @@ -344,7 +344,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 13758727, + "marketcap_usd": 0, "name": "FirstBlood", "network": "eth", "shortcut": "1ST", @@ -367,6 +367,17 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:2DC": { + "address": "0x9fC0583220eB44fAeE9e2dc1E63F39204DDD9090", + "links": {}, + "marketcap_usd": 0, + "name": "DualChain", + "network": "eth", + "shortcut": "2DC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:300": { "address": "0xaEc98A708810414878c3BCDF46Aad31dEd4a4557", "links": { @@ -382,6 +393,19 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:A18": { + "address": "0xBDe8f7820b5544a49D34F9dDeaCAbEDC7C0B5adc", + "links": { + "Homepage": "https://apollo18.co.in" + }, + "marketcap_usd": 0, + "name": "Apollo18", + "network": "eth", + "shortcut": "A18", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:ABT": { "address": "0xB98d4C97425d9908E66E53A6fDf673ACcA0BE986", "links": { @@ -397,6 +421,20 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:ABYSS": { + "address": "0x0E8d6b471e332F140e7d9dbB99E5E3822F728DA6", + "links": { + "Github": "https://github.com/theabyssportal", + "Homepage": "https://www.theabyss.com" + }, + "marketcap_usd": 0, + "name": "ABYSS", + "network": "eth", + "shortcut": "ABYSS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:ACC": { "address": "0x13F1b7FDFbE1fc66676D56483e21B1ecb40b58E2", "links": { @@ -404,7 +442,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 710980, + "marketcap_usd": 0, "name": "Accelerator Network", "network": "eth", "shortcut": "ACC", @@ -412,6 +450,19 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:ADH": { + "address": "0xE69a353b3152Dd7b706ff7dD40fe1d18b7802d31", + "links": { + "Homepage": "https://adhive.tv" + }, + "marketcap_usd": 0, + "name": "AdHive Token", + "network": "eth", + "shortcut": "ADH", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:ADI": { "address": "0x8810C63470d38639954c6B41AaC545848C46484a", "links": { @@ -435,7 +486,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 3578041, + "marketcap_usd": 0, "name": "AdShares", "network": "eth", "shortcut": "ADST", @@ -451,7 +502,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 19698480, + "marketcap_usd": 0, "name": "AdToken", "network": "eth", "shortcut": "ADT", @@ -483,7 +534,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 332928000, + "marketcap_usd": 0, "name": "aeternity", "network": "eth", "shortcut": "AE", @@ -499,7 +550,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 74892428, + "marketcap_usd": 0, "name": "SingularityNET", "network": "eth", "shortcut": "AGI", @@ -515,7 +566,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 265397151, + "marketcap_usd": 319288351, "name": "Aion", "network": "eth", "shortcut": "AION", @@ -530,7 +581,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 6595323, + "marketcap_usd": 0, "name": "AirToken", "network": "eth", "shortcut": "AIR", @@ -546,7 +597,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 2486099, + "marketcap_usd": 0, "name": "Aigang", "network": "eth", "shortcut": "AIX", @@ -577,7 +628,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 0, + "marketcap_usd": 7985008, "name": "ALIS Token", "network": "eth", "shortcut": "ALIS", @@ -632,6 +683,47 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:AMN": { + "address": "0x737F98AC8cA59f2C68aD658E3C3d8C8963E40a4c", + "links": { + "Github": "https://github.com/amontech", + "Homepage": "https://amon.tech" + }, + "marketcap_usd": 0, + "name": "Amon", + "network": "eth", + "shortcut": "AMN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:AMO": { + "address": "0x38c87AA89B2B8cD9B95b736e1Fa7b612EA972169", + "links": { + "Github": "https://github.com/AMO-Project/", + "Homepage": "https://amo.foundation" + }, + "marketcap_usd": 0, + "name": "AMO Coin", + "network": "eth", + "shortcut": "AMO", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:AMTC": { + "address": "0x84936cF7630AA3e27Dd9AfF968b140d5AEE49F5a", + "links": { + "Homepage": "https://ambertime.org/" + }, + "marketcap_usd": 0, + "name": "AmberTime Coin", + "network": "eth", + "shortcut": "AMTC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:ANT": { "address": "0x960b236A07cf122663c4303350609A66A7B288C0", "links": { @@ -646,6 +738,20 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:APIS": { + "address": "0x4C0fBE1BB46612915E7967d2C3213cd4d87257AD", + "links": { + "Github": "https://github.com/Oxchild/crowdsale", + "Homepage": "https://apisplatform.io" + }, + "marketcap_usd": 0, + "name": "APIS", + "network": "eth", + "shortcut": "APIS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:APPC": { "address": "0x1a7a8BD9106F2B8D977E08582DC7d24c723ab0DB", "links": { @@ -654,7 +760,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 35209513, + "marketcap_usd": 0, "name": "AppCoins", "network": "eth", "shortcut": "APPC", @@ -669,7 +775,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 2486099, + "marketcap_usd": 0, "name": "AIGang", "network": "eth", "shortcut": "APT", @@ -698,7 +804,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 572078, + "marketcap_usd": 0, "name": "ArbitrageCT", "network": "eth", "shortcut": "ARCT", @@ -768,6 +874,20 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:ARXT": { + "address": "0xb0D926c1BC3d78064F3e1075D5bD9A24F35Ae6C5", + "links": { + "Github": "https://github.com/va109/Artex", + "Homepage": "https://aronline.io" + }, + "marketcap_usd": 0, + "name": "Assistive Reality ARX", + "network": "eth", + "shortcut": "ARXT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:AST": { "address": "0x27054b13b1B798B345b591a4d22e6562d47eA75a", "links": { @@ -775,7 +895,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 39937200, + "marketcap_usd": 0, "name": "Airswap", "network": "eth", "shortcut": "AST", @@ -875,6 +995,20 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:AX1": { + "address": "0xCd4b4b0F3284a33AC49C67961EC6e111708318Cf", + "links": { + "Github": "https://github.com/Pickeringwareltd/AX1_v1.03", + "Homepage": "https://ax1.io" + }, + "marketcap_usd": 0, + "name": "AX1 Mining Token", + "network": "eth", + "shortcut": "AX1", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:AXP": { "address": "0x9af2c6B1A28D3d6BC084bd267F70e90d49741D5B", "links": { @@ -996,6 +1130,20 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:BCV": { + "address": "0x1014613E2B3CBc4d575054D4982E580d9b99d7B1", + "links": { + "Github": "https://github.com/bitcv", + "Homepage": "https://bitcv.one/" + }, + "marketcap_usd": 0, + "name": "BitCapitalVendor Token", + "network": "eth", + "shortcut": "BCV", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:BDG": { "address": "0x1961B3331969eD52770751fC718ef530838b6dEE", "links": { @@ -1028,6 +1176,20 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:BERRY": { + "address": "0x6aEB95F06CDA84cA345c2dE0F3B7f96923a44f4c", + "links": { + "Github": "https://github.com/Rentberry", + "Homepage": "https://rentberry.com" + }, + "marketcap_usd": 0, + "name": "Berry", + "network": "eth", + "shortcut": "BERRY", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:BET": { "address": "0x8aA33A7899FCC8eA5fBe6A608A109c3893A1B8b2", "links": { @@ -1042,6 +1204,20 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:BETR": { + "address": "0x763186eB8d4856D536eD4478302971214FEbc6A9", + "links": { + "Github": "https://github.com/betterbetting", + "Homepage": "https://www.betterbetting.org" + }, + "marketcap_usd": 0, + "name": "BETR", + "network": "eth", + "shortcut": "BETR", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:BKB": { "address": "0xB2Bfeb70B903F1BAaC7f2ba2c62934C7e5B974C4", "links": { @@ -1057,6 +1233,33 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:BKRx": { + "address": "0x3cf9E0c385a5ABEC9FD2a71790AA344C4e8E3570", + "links": { + "Homepage": "https://www.blockrx.com" + }, + "marketcap_usd": 0, + "name": "BlockRx", + "network": "eth", + "shortcut": "BKRx", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:BKX": { + "address": "0x45245bc59219eeaAF6cD3f382e078A461FF9De7B", + "links": { + "Github": "https://github.com/BankEx", + "Homepage": "https://bankex.com/" + }, + "marketcap_usd": 0, + "name": "BANKEX", + "network": "eth", + "shortcut": "BKX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:BLT": { "address": "0x107c4504cd79C5d2696Ea0030a8dD4e92601B82e", "links": { @@ -1095,7 +1298,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 94059629, + "marketcap_usd": 0, "name": "Iconomi", "network": "eth", "shortcut": "BLX (Iconomi)", @@ -1179,13 +1382,24 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:BNFT": { + "address": "0xdA2C424Fc98c741c2d4ef2f42897CEfed897CA75", + "links": {}, + "marketcap_usd": 0, + "name": "Benefits Coin", + "network": "eth", + "shortcut": "BNFT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:BNT": { "address": "0x1F573D6Fb3F13d689FF844B4cE37794d79a7FF1C", "links": { "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 113885827, + "marketcap_usd": 0, "name": "Bancor", "network": "eth", "shortcut": "BNT", @@ -1208,6 +1422,19 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:BOB": { + "address": "0xDF347911910b6c9A4286bA8E2EE5ea4a39eB2134", + "links": { + "Homepage": "https://bobsrepair.com" + }, + "marketcap_usd": 0, + "name": "Bob's repair", + "network": "eth", + "shortcut": "BOB", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:BON": { "address": "0xCc34366E3842cA1BD36c1f324d15257960fCC801", "links": { @@ -1215,7 +1442,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 2713511, + "marketcap_usd": 0, "name": "Bonpay", "network": "eth", "shortcut": "BON", @@ -1276,7 +1503,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 156890221, + "marketcap_usd": 0, "name": "Bitquence", "network": "eth", "shortcut": "BQX", @@ -1290,7 +1517,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 144047, + "marketcap_usd": 80798, "name": "BRAT", "network": "eth", "shortcut": "BRAT", @@ -1298,6 +1525,17 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:BRD": { + "address": "0x558EC3152e2eb2174905cd19AeA4e34A23DE9aD6", + "links": {}, + "marketcap_usd": 0, + "name": "Bread", + "network": "eth", + "shortcut": "BRD", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:BSDC": { "address": "0xF26ef5E0545384b7Dcc0f297F2674189586830DF", "links": { @@ -1375,6 +1613,31 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:BTHR": { + "address": "0xa02e3bB9cEbc03952601B3724B4940e0845BeBcf", + "links": { + "Github": "https://github.com/bethereumproject", + "Homepage": "https://www.bethereum.com/" + }, + "marketcap_usd": 0, + "name": "Bethereum", + "network": "eth", + "shortcut": "BTHR", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:BTK": { + "address": "0xdb8646F5b487B5Dd979FAC618350e85018F557d4", + "links": {}, + "marketcap_usd": 0, + "name": "Bitcoin Token", + "network": "eth", + "shortcut": "BTK", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:BTL (Battle)": { "address": "0x2accaB9cb7a48c3E82286F0b2f8798D201F4eC3f", "links": { @@ -1453,6 +1716,19 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:BUC": { + "address": "0xCa3c18a65b802eC267f8f4802545e7F53D24C75e", + "links": { + "Homepage": "https://beeunity.org" + }, + "marketcap_usd": 0, + "name": "BeeUnity Chain", + "network": "eth", + "shortcut": "BUC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:BeerCoin": { "address": "0x74C1E4b8caE59269ec1D85D3D4F324396048F4ac", "links": { @@ -1475,7 +1751,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 0, + "marketcap_usd": 54431971, "name": "Crypto20's Token", "network": "eth", "shortcut": "C20", @@ -1528,6 +1804,19 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:CARB": { + "address": "0xA517a46Baad6B054A76bD19c46844f717fe69fea", + "links": { + "Homepage": "https://carbcoin.eu/" + }, + "marketcap_usd": 0, + "name": "CarbCoin", + "network": "eth", + "shortcut": "CARB", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:CARCO": { "address": "0x2108E62D335Bbdc89eC3E9d8582F18DCFB0cDFf4", "links": { @@ -1741,6 +2030,19 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:CHSB": { + "address": "0xba9d4199faB4f26eFE3551D490E3821486f135Ba", + "links": { + "Homepage": "https://swissborg.com" + }, + "marketcap_usd": 0, + "name": "CHSB", + "network": "eth", + "shortcut": "CHSB", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:CK": { "address": "0x06012c8cf97BEaD5deAe237070F9587f8E7A266d", "links": { @@ -1756,6 +2058,20 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:CLL": { + "address": "0x3dC9a42fa7Afe57BE03c58fD7F4411b1E466C508", + "links": { + "Github": "https://github.com/CryptoLiveLeak/CLL-Token", + "Homepage": "https://www.cryptoliveleak.com/" + }, + "marketcap_usd": 0, + "name": "CryptoLiveLeak", + "network": "eth", + "shortcut": "CLL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:CLN": { "address": "0x4162178B78D6985480A308B2190EE5517460406D", "links": { @@ -1833,6 +2149,19 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:CNB": { + "address": "0xEBf2F9E8De960f64ec0fDCDa6Cb282423133347B", + "links": { + "Homepage": "https://canabio.net" + }, + "marketcap_usd": 0, + "name": "Canabio", + "network": "eth", + "shortcut": "CNB", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:CND": { "address": "0xd4c435F5B09F855C3317c8524Cb1F586E42795fa", "links": { @@ -1896,6 +2225,20 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:COIL": { + "address": "0x0C91B015AbA6f7B4738dcD36E7410138b29ADC29", + "links": { + "Github": "https://github.com/CoinOil", + "Homepage": "https://coinoil.io/" + }, + "marketcap_usd": 0, + "name": "CoinOil", + "network": "eth", + "shortcut": "COIL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:COSS": { "address": "0x65292EeadF1426Cd2dF1C4793a3d7519f253913b", "links": { @@ -1903,7 +2246,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 0, + "marketcap_usd": 22012994, "name": "Coss Token", "network": "eth", "shortcut": "COSS", @@ -1911,6 +2254,19 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:COV": { + "address": "0xE2FB6529EF566a080e6d23dE0bd351311087D567", + "links": { + "Homepage": "https://covesting.io/" + }, + "marketcap_usd": 0, + "name": "Covesting", + "network": "eth", + "shortcut": "COV", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:CPY": { "address": "0xf44745fBd41F6A1ba151df190db0564c5fCc4410", "links": { @@ -1980,7 +2336,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 0, + "marketcap_usd": 10200161, "name": "Credo / Bitbounce", "network": "eth", "shortcut": "CREDO", @@ -2034,6 +2390,20 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:CTG": { + "address": "0xC87c5dD86A3d567fF28701886fB0745aaa898da4", + "links": { + "Github": "github.com/CTGlobal/ChristianTraders", + "Homepage": "https://christiantraders.com" + }, + "marketcap_usd": 0, + "name": "CT Global Token", + "network": "eth", + "shortcut": "CTG", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:CTL": { "address": "0xBf4cFD7d1eDeeEA5f6600827411B41A21eB08abd", "links": { @@ -2130,7 +2500,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 0, + "marketcap_usd": 531392, "name": "CryptoCarbon", "network": "eth", "shortcut": "CryptoCarbon", @@ -2160,7 +2530,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 0, + "marketcap_usd": 16140984, "name": "DADI", "network": "eth", "shortcut": "DADI", @@ -2176,7 +2546,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 0, + "marketcap_usd": 37785915, "name": "Dai Stablecoin v1.0", "network": "eth", "shortcut": "DAI", @@ -2268,7 +2638,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 0, + "marketcap_usd": 173975, "name": "DATACoin", "network": "eth", "shortcut": "DATACoin", @@ -2276,6 +2646,33 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:DAXT": { + "address": "0x61725f3db4004AFE014745B21DAb1E1677CC328b", + "links": { + "Homepage": "https://www.daxt.io" + }, + "marketcap_usd": 0, + "name": "Digital Asset Exchange Token", + "network": "eth", + "shortcut": "DAXT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:DAY": { + "address": "0xE814aeE960a85208C3dB542C53E7D4a6C8D5f60F", + "links": { + "Github": "https://github.com/chronologic", + "Homepage": "https://chronologic.network" + }, + "marketcap_usd": 0, + "name": "ChronoLogic DAY", + "network": "eth", + "shortcut": "DAY", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:DCA": { "address": "0x386Faa4703a34a7Fdb19Bec2e14Fd427C9638416", "links": { @@ -2352,13 +2749,27 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:DEEZ": { + "address": "0x075c60EE2cD308ff47873b38Bd9A0Fa5853382c4", + "links": { + "Github": "https://github.com/DeezNutsToken/DEEZ", + "Homepage": "https://deeznuts.in" + }, + "marketcap_usd": 0, + "name": "DeezNuts", + "network": "eth", + "shortcut": "DEEZ", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:DENT": { "address": "0x3597bfD533a99c9aa083587B074434E61Eb0A258", "links": { "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 0, + "marketcap_usd": 86385897, "name": "DENT", "network": "eth", "shortcut": "DENT", @@ -2366,6 +2777,19 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:DEPO": { + "address": "0x7cF271966F36343Bf0150F25E5364f7961c58201", + "links": { + "Homepage": "https://aridika.com" + }, + "marketcap_usd": 0, + "name": "CRYPTODEPOZIT", + "network": "eth", + "shortcut": "DEPO", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:DGD": { "address": "0xE0B7927c4aF23765Cb51314A0E0521A9645F0E2A", "links": { @@ -2520,9 +2944,9 @@ "type": "erc20" }, "erc20:eth:DOW": { - "address": "0x76974C7B79dC8a6a109Fd71fd7cEb9E40eff5382", + "address": "0xEEF6E90034eEa89E31Eb4B8eaCd323F28A92eaE4", "links": { - "Homepage": "https://dowcoin.io/", + "Homepage": "https://www.dowico.com", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -2596,9 +3020,9 @@ "type": "erc20" }, "erc20:eth:DRP": { - "address": "0x2799D90C6d44Cb9Aa5fBC377177F16C33E056b82", + "address": "0x621d78f2EF2fd937BFca696CabaF9A779F59B3Ed", "links": { - "Homepage": "http://drpcoin.com", + "Homepage": "https://www.dcorp.it", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -2625,6 +3049,20 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:DTH": { + "address": "0x5adc961D6AC3f7062D2eA45FEFB8D8167d44b190", + "links": { + "Github": "https://github.com/dethertech", + "Homepage": "https://dether.io" + }, + "marketcap_usd": 0, + "name": "dether", + "network": "eth", + "shortcut": "DTH", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:DTR": { "address": "0xd234BF2410a0009dF9c3C63b610c09738f18ccD7", "links": { @@ -2640,8 +3078,47 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:DTT": { + "address": "0xf9F7c29CFdf19FCf1f2AA6B84aA367Bcf1bD1676", + "links": { + "Github": "https://github.com/DTToken", + "Homepage": "https://delphifund.org/" + }, + "marketcap_usd": 0, + "name": "Delphi Tech Token", + "network": "eth", + "shortcut": "DTT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:DTX": { + "address": "0x765f0C16D1Ddc279295c1a7C24B0883F62d33F75", + "links": { + "Github": "https://github.com/DataBrokerDAO", + "Homepage": "https://databrokerdao.com" + }, + "marketcap_usd": 0, + "name": "DaTa eXchange Token", + "network": "eth", + "shortcut": "DTX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:DTx": { + "address": "0x82fdedfB7635441aA5A92791D001fA7388da8025", + "links": {}, + "marketcap_usd": 0, + "name": "DigitalTicks", + "network": "eth", + "shortcut": "DTx", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:DUBI": { - "address": "0xD4CffeeF10F60eCA581b5E1146B5Aca4194a4C3b", + "address": "0x9c6Fa42209169bCeA032e401188a6fc3e9C9f59c", "links": { "Github": "https://github.com/nionis/purpose", "Homepage": "https://prps.io", @@ -2717,6 +3194,19 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:EDC": { + "address": "0xFA1DE2Ee97e4c10C94C91Cb2b5062b89Fb140b82", + "links": { + "Homepage": "https://www.edc.network" + }, + "marketcap_usd": 0, + "name": "Education Credits", + "network": "eth", + "shortcut": "EDC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:EDG": { "address": "0x08711D3B02C8758F2FB3ab4e80228418a7F8e39c", "links": { @@ -2816,7 +3306,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 0, + "marketcap_usd": 818346, "name": "ELTCOIN", "network": "eth", "shortcut": "ELTCOIN", @@ -2855,6 +3345,20 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:EMT": { + "address": "0x9501BFc48897DCEEadf73113EF635d2fF7ee4B97", + "links": { + "Github": "https://github.com/easyMINE", + "Homepage": "https://easymine.io" + }, + "marketcap_usd": 0, + "name": "easyMINE Token", + "network": "eth", + "shortcut": "EMT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:EMV": { "address": "0xB802b24E0637c2B87D2E8b7784C055BBE921011a", "links": { @@ -2870,6 +3374,20 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:ENG": { + "address": "0xf0Ee6b27b759C9893Ce4f094b49ad28fd15A23e4", + "links": { + "Github": "https://github.com/enigmampc", + "Homepage": "https://enigma.co/" + }, + "marketcap_usd": 0, + "name": "Enigma", + "network": "eth", + "shortcut": "ENG", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:ENJ": { "address": "0xF629cBd94d3791C9250152BD8dfBDF380E2a3B9c", "links": { @@ -2908,7 +3426,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 0, + "marketcap_usd": 10030409181, "name": "EOS", "network": "eth", "shortcut": "EOS", @@ -2916,6 +3434,20 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:EPX": { + "address": "0x35BAA72038F127f9f8C8f9B491049f64f377914d", + "links": { + "Github": "https://github.com/EthPokerIO/ethpokerIO", + "Homepage": "https://ethPoker.io" + }, + "marketcap_usd": 0, + "name": "ethPoker.io EPX", + "network": "eth", + "shortcut": "EPX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:ESZ": { "address": "0xe8A1Df958bE379045E2B46a31A98B93A2eCDfDeD", "links": { @@ -2947,6 +3479,19 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:ETCH": { + "address": "0xDd74a7A3769fA72561B3A69e65968F49748c690c", + "links": { + "Homepage": "https://etch.work" + }, + "marketcap_usd": 0, + "name": "ETCH", + "network": "eth", + "shortcut": "ETCH", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:ETHB": { "address": "0x3a26746Ddb79B1B8e4450e3F4FFE3285A307387E", "links": { @@ -2962,6 +3507,17 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:ETR": { + "address": "0x6927C69fb4daf2043fbB1Cb7b86c5661416bea29", + "links": {}, + "marketcap_usd": 0, + "name": "Etheruem Risen", + "network": "eth", + "shortcut": "ETR", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:EURT": { "address": "0xAbdf147870235FcFC34153828c769A70B3FAe01F", "links": { @@ -3070,6 +3626,19 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:FANX": { + "address": "0x7f6715c3FC4740A02F70De85B9FD50ac6001fEd9", + "links": { + "Homepage": "http://www.fanx.one/" + }, + "marketcap_usd": 0, + "name": "FANX Token", + "network": "eth", + "shortcut": "FANX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:FKX": { "address": "0x009e864923b49263c7F10D19B7f8Ab7a9A5AAd33", "links": { @@ -3101,6 +3670,19 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:FLMC": { + "address": "0x5976F7dac1525eF3277836043bA474a35E6B4272", + "links": { + "Homepage": "https://filmscoin.io" + }, + "marketcap_usd": 0, + "name": "Filmscoin", + "network": "eth", + "shortcut": "FLMC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:FLP": { "address": "0x3a1Bda28AdB5B0a812a7CF10A1950c920F79BcD3", "links": { @@ -3117,6 +3699,19 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:FLR": { + "address": "0x9aeFBE0b3C3ba9Eab262CB9856E8157AB7648e09", + "links": { + "Homepage": "https://flaircoin.co/" + }, + "marketcap_usd": 0, + "name": "Flair Coin", + "network": "eth", + "shortcut": "FLR", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:FLUZ": { "address": "0x954b5De09A55e59755aCBda29e1Eb74A45D30175", "links": { @@ -3207,10 +3802,24 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:FTT": { + "address": "0x2AEC18c5500f21359CE1BEA5Dc1777344dF4C0Dc", + "links": { + "Github": "https://github.com/farmatrust", + "Homepage": "https://www.farmatrust.io" + }, + "marketcap_usd": 0, + "name": "FarmaTrust Token", + "network": "eth", + "shortcut": "FTT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:FUCK": { - "address": "0x65Be44C747988fBF606207698c944Df4442efE19", + "address": "0xAb16E0d25c06CB376259cc18C1de4ACA57605589", "links": { - "Homepage": "https://fucktoken.com", + "Homepage": "http://fucktoken.io", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -3284,6 +3893,20 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:GANA": { + "address": "0x6754e21b9EAa053c62d7854dD6561ae451B0cBCf", + "links": { + "Github": "https://github.com/GanaProject", + "Homepage": "https://ganacoin.io" + }, + "marketcap_usd": 0, + "name": "GANA", + "network": "eth", + "shortcut": "GANA", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:GAVEL": { "address": "0x708876f486e448Ee89eB332bFbC8E593553058b9", "links": { @@ -3313,6 +3936,33 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:GBX": { + "address": "0x12fCd6463E66974cF7bBC24FFC4d40d6bE458283", + "links": { + "Homepage": "https://www.globitexico.com" + }, + "marketcap_usd": 0, + "name": "Globitex", + "network": "eth", + "shortcut": "GBX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:GCP": { + "address": "0xdb0F69306FF8F949f258E83f6b87ee5D052d0b23", + "links": { + "Github": "https://github.com/Globcoin", + "Homepage": "https://globcoin.io/" + }, + "marketcap_usd": 0, + "name": "Globcoin Crypto Platform", + "network": "eth", + "shortcut": "GCP", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:GEE": { "address": "0x4F4f0Db4de903B88f2B1a2847971E231D54F8fd3", "links": { @@ -3344,6 +3994,47 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:GEN": { + "address": "0x543Ff227F64Aa17eA132Bf9886cAb5DB55DCAddf", + "links": { + "Github": "https://github.com/daostack", + "Homepage": "https://daostack.io" + }, + "marketcap_usd": 0, + "name": "DAOstack", + "network": "eth", + "shortcut": "GEN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:GET": { + "address": "0x8a854288a5976036A725879164Ca3e91d30c6A1B", + "links": { + "Github": "https://github.com/Getprotocol", + "Homepage": "http://www.get-protocol.io" + }, + "marketcap_usd": 0, + "name": "GET", + "network": "eth", + "shortcut": "GET", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:GIF": { + "address": "0xFcD862985628b254061F7A918035B80340D045d3", + "links": { + "Homepage": "https://gifcoin.io/" + }, + "marketcap_usd": 0, + "name": "GIFcoin Token", + "network": "eth", + "shortcut": "GIF", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:GIM": { "address": "0xaE4f56F072c34C0a65B3ae3E4DB797D831439D93", "links": { @@ -3398,7 +4089,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 0, + "marketcap_usd": 414623359, "name": "Golem", "network": "eth", "shortcut": "GNT", @@ -3429,7 +4120,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 0, + "marketcap_usd": 15995972, "name": "GRID", "network": "eth", "shortcut": "GRID", @@ -3437,6 +4128,20 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:GROW": { + "address": "0x0a9A9ce600D08BF9b76F49FA4e7b38A67EBEB1E6", + "links": { + "Github": "https://github.com/growchainnet", + "Homepage": "http://www.growchain.us" + }, + "marketcap_usd": 0, + "name": "Growchain", + "network": "eth", + "shortcut": "GROW", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:GTC": { "address": "0xB70835D7822eBB9426B56543E391846C107bd32C", "links": { @@ -3467,6 +4172,20 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:GTO": { + "address": "0xC5bBaE50781Be1669306b9e001EFF57a2957b09d", + "links": { + "Github": "https://github.com/GIFTO-io", + "Homepage": "https://gifto.io/" + }, + "marketcap_usd": 0, + "name": "Gifto", + "network": "eth", + "shortcut": "GTO", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:GUP": { "address": "0xf7B098298f7C69Fc14610bf71d5e02c60792894C", "links": { @@ -3556,6 +4275,20 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:HAV": { + "address": "0xF244176246168F24e3187f7288EdbCA29267739b", + "links": { + "Github": "https://github.com/havven/havven", + "Homepage": "https://havven.io" + }, + "marketcap_usd": 0, + "name": "Havven", + "network": "eth", + "shortcut": "HAV", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:HDG": { "address": "0xfFe8196bc259E8dEDc544d935786Aa4709eC3E64", "links": { @@ -3616,6 +4349,20 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:HKY": { + "address": "0x88aC94D5d175130347Fc95E109d77AC09dbF5ab7", + "links": { + "Github": "https://github.com/HickyToken/hickycontracts", + "Homepage": "https://hicky.io" + }, + "marketcap_usd": 0, + "name": "Hicky", + "network": "eth", + "shortcut": "HKY", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:HMQ": { "address": "0xcbCC0F036ED4788F63FC0fEE32873d6A7487b908", "links": { @@ -3646,6 +4393,34 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:HORSE": { + "address": "0x5B0751713b2527d7f002c0c4e2a37e1219610A6B", + "links": { + "Github": "https://github.com/ethorse", + "Homepage": "https://ethorse.com" + }, + "marketcap_usd": 0, + "name": "HORSE", + "network": "eth", + "shortcut": "HORSE", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:HOT": { + "address": "0x6c6EE5e31d828De241282B9606C8e98Ea48526E2", + "links": { + "Github": "https://github.com/Holo-Host", + "Homepage": "https://holo.host/" + }, + "marketcap_usd": 0, + "name": "Hydro Protocol", + "network": "eth", + "shortcut": "HOT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:HST": { "address": "0x554C20B7c486beeE439277b4540A434566dC4C02", "links": { @@ -3758,7 +4533,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 0, + "marketcap_usd": 10733272, "name": "ICOS", "network": "eth", "shortcut": "ICOS", @@ -3884,6 +4659,17 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:INRM": { + "address": "0x48e5413b73add2434e47504E2a22d14940dBFe78", + "links": {}, + "marketcap_usd": 0, + "name": "Integrated Money", + "network": "eth", + "shortcut": "INRM", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:INS": { "address": "0x5B2e4a700dfBc560061e957edec8F6EeEb74a320", "links": { @@ -3899,6 +4685,19 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:INSTAR": { + "address": "0xc72fe8e3Dd5BeF0F9f31f259399F301272eF2a2D", + "links": { + "Homepage": "https://insights.network" + }, + "marketcap_usd": 0, + "name": "Insights Network", + "network": "eth", + "shortcut": "INSTAR", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:INXT": { "address": "0xa8006C4ca56F24d6836727D106349320dB7fEF82", "links": { @@ -3914,6 +4713,19 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:IOST": { + "address": "0xFA1a856Cfa3409CFa145Fa4e20Eb270dF3EB21ab", + "links": { + "Homepage": "https://iost.io/" + }, + "marketcap_usd": 0, + "name": "IOSToken", + "network": "eth", + "shortcut": "IOST", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:IPL": { "address": "0x64CdF819d3E75Ac8eC217B3496d7cE167Be42e80", "links": { @@ -3930,6 +4742,19 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:IPSX": { + "address": "0x001F0aA5dA15585e5b2305DbaB2bac425ea71007", + "links": { + "Homepage": "https://ip.sx" + }, + "marketcap_usd": 0, + "name": "IPSX", + "network": "eth", + "shortcut": "IPSX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:ITC": { "address": "0x5E6b6d9aBAd9093fdc861Ea1600eBa1b355Cd940", "links": { @@ -4053,6 +4878,19 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:JOY": { + "address": "0xDDe12a12A6f67156e0DA672be05c374e1B0a3e57", + "links": { + "Homepage": "https://joyso.io/" + }, + "marketcap_usd": 0, + "name": "JOYSO", + "network": "eth", + "shortcut": "JOY", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:JetCoins": { "address": "0x773450335eD4ec3DB45aF74f34F2c85348645D39", "links": { @@ -4067,6 +4905,19 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:KC": { + "address": "0x0D6DD9f68d24EC1d5fE2174f3EC8DAB52B52BaF5", + "links": { + "Homepage": "https://www.kmcc.io" + }, + "marketcap_usd": 0, + "name": "KMCC", + "network": "eth", + "shortcut": "KC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:KEE": { "address": "0x72D32ac1c5E66BfC5b08806271f8eEF915545164", "links": { @@ -4084,6 +4935,7 @@ "erc20:eth:KEY": { "address": "0x4CC19356f2D37338b9802aa8E8fc58B0373296E7", "links": { + "Github": "https://github.com/bihu-id", "Homepage": "https://selfkey.org", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" @@ -4119,7 +4971,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 0, + "marketcap_usd": 155062756, "name": "Kin Foundation", "network": "eth", "shortcut": "KIN", @@ -4143,6 +4995,34 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:KPR": { + "address": "0xb5C33F965C8899D255c34CDD2A3efA8AbCbB3DeA", + "links": { + "Github": "https://github.com/KPRToken/KPR-code-for-ICO", + "Homepage": "https://www.kprms.com/" + }, + "marketcap_usd": 0, + "name": "KPRCoin", + "network": "eth", + "shortcut": "KPR", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:KRL": { + "address": "0x464eBE77c293E473B48cFe96dDCf88fcF7bFDAC0", + "links": { + "Github": "https://github.com/Cryptense/", + "Homepage": "https://kryll.io/" + }, + "marketcap_usd": 0, + "name": "Kryll", + "network": "eth", + "shortcut": "KRL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:KZN": { "address": "0x9541FD8B9b5FA97381783783CeBF2F5fA793C262", "links": { @@ -4189,6 +5069,19 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:LDC": { + "address": "0x5102791cA02FC3595398400BFE0e33d7B6C82267", + "links": { + "Homepage": "https://www.leadcoin.network/" + }, + "marketcap_usd": 0, + "name": "LEADCOIN", + "network": "eth", + "shortcut": "LDC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:LEMO": { "address": "0xd6e354F07319e2474491D8c7c712137bEe6862a2", "links": { @@ -4219,6 +5112,19 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:LGO": { + "address": "0x123aB195DD38B1b40510d467a6a359b201af056f", + "links": { + "Homepage": "https://legolas.exchange/" + }, + "marketcap_usd": 0, + "name": "LGO", + "network": "eth", + "shortcut": "LGO", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:LGR": { "address": "0x2eb86e8fC520E0F6Bb5D9Af08F924fe70558Ab89", "links": { @@ -4257,7 +5163,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 0, + "marketcap_usd": 7090655, "name": "LIFE", "network": "eth", "shortcut": "LIFE", @@ -4343,6 +5249,20 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:LND": { + "address": "0x0947b0e6D821378805c9598291385CE7c791A6B2", + "links": { + "Github": "https://github.com/lendingblock", + "Homepage": "https://lendingblock.com" + }, + "marketcap_usd": 0, + "name": "Lendingblock", + "network": "eth", + "shortcut": "LND", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:LOC": { "address": "0x5e3346444010135322268a4630d2ED5F8D09446c", "links": { @@ -4374,6 +5294,19 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:LOCUS": { + "address": "0xC64500DD7B0f1794807e67802F8Abbf5F8Ffb054", + "links": { + "Homepage": "https://www.locuschain.com" + }, + "marketcap_usd": 0, + "name": "Locus Chain", + "network": "eth", + "shortcut": "LOCUS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:LOK": { "address": "0x21aE23B882A340A22282162086bC98D3E2B73018", "links": { @@ -4389,6 +5322,34 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:LOOM": { + "address": "0xA4e8C3Ec456107eA67d3075bF9e3DF3A75823DB0", + "links": { + "Github": "github.com/loomnetwork/", + "Homepage": "https://loomx.io" + }, + "marketcap_usd": 0, + "name": "LOOM", + "network": "eth", + "shortcut": "LOOM", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:LPT": { + "address": "0x58b6A8A3302369DAEc383334672404Ee733aB239", + "links": { + "Github": "https://github.com/livepeer", + "Homepage": "https://livepeer.org/" + }, + "marketcap_usd": 0, + "name": "Livepeer Token", + "network": "eth", + "shortcut": "LPT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:LRC": { "address": "0xEF68e7C694F40c8202821eDF525dE3782458639f", "links": { @@ -4404,6 +5365,20 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:LUC": { + "address": "0x5dbe296F97B23C4A6AA6183D73e574D02bA5c719", + "links": { + "Github": "https://github.com/Play2Live/blockchain", + "Homepage": "https://play2live.io" + }, + "marketcap_usd": 0, + "name": "LUCToken", + "network": "eth", + "shortcut": "LUC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:LUCK": { "address": "0xFB12e3CcA983B9f59D90912Fd17F8D745A8B2953", "links": { @@ -4448,6 +5423,20 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:LYS": { + "address": "0xdD41fBd1Ae95C5D9B198174A28e04Be6b3d1aa27", + "links": { + "Github": "https://github.com/LIGHTYEARS-LYS/LIGHTYEARS-Token", + "Homepage": "https://lightyearstoken.com" + }, + "marketcap_usd": 0, + "name": "Lightyears", + "network": "eth", + "shortcut": "LYS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:M-ETH": { "address": "0x3f4B726668da46f5e0E75aA5D478ACEc9f38210F", "links": { @@ -4463,6 +5452,28 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:MAD": { + "address": "0x5B09A0371C1DA44A8E24D36Bf5DEb1141a84d875", + "links": {}, + "marketcap_usd": 0, + "name": "MAD", + "network": "eth", + "shortcut": "MAD", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:MAN": { + "address": "0xe25bCec5D3801cE3a794079BF94adF1B8cCD802D", + "links": {}, + "marketcap_usd": 0, + "name": "MAN", + "network": "eth", + "shortcut": "MAN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:MANA": { "address": "0x0F5D2fB29fb7d3CFeE444a200298f468908cC942", "links": { @@ -4479,6 +5490,19 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:MART": { + "address": "0xfdcc07Ab60660de533b5Ad26e1457b565a9D59Bd", + "links": { + "Homepage": "https://martcoin.io" + }, + "marketcap_usd": 0, + "name": "Martcoin", + "network": "eth", + "shortcut": "MART", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:MBRS": { "address": "0x386467F1f3ddbE832448650418311a479EECFC57", "links": { @@ -4501,7 +5525,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 0, + "marketcap_usd": 835843, "name": "MCAP", "network": "eth", "shortcut": "MCAP", @@ -4553,6 +5577,20 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:MESH": { + "address": "0x01F2AcF2914860331C1Cb1a9AcecDa7475e06Af8", + "links": { + "Github": "https://github.com/MeshBox", + "Homepage": "https://meshbox.network" + }, + "marketcap_usd": 0, + "name": "Meshbox", + "network": "eth", + "shortcut": "MESH", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:MEST": { "address": "0x5B8D43FfdE4a2982B9A5387cDF21D54Ead64Ac8d", "links": { @@ -4569,6 +5607,20 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:MFG": { + "address": "0x6710c63432A2De02954fc0f851db07146a6c0312", + "links": { + "Github": "https://github.com/syncfab", + "Homepage": "https://syncfab.com/" + }, + "marketcap_usd": 0, + "name": "SyncFab Smart Manufacturing Blockchain", + "network": "eth", + "shortcut": "MFG", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:MGO": { "address": "0x40395044Ac3c0C57051906dA938B54BD6557F212", "links": { @@ -4597,6 +5649,19 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:MIT (Mychatcoin)": { + "address": "0xAd8DD4c725dE1D31b9E8F8D146089e9DC6882093", + "links": { + "Homepage": "https://mychatcoin.com" + }, + "marketcap_usd": 0, + "name": "Mychatcoin", + "network": "eth", + "shortcut": "MIT (Mychatcoin)", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:MKR": { "address": "0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2", "links": { @@ -4690,6 +5755,20 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:MRL": { + "address": "0x82125AFe01819Dff1535D0D6276d57045291B6c0", + "links": { + "Github": "https://github.com/MarceloMRL", + "Homepage": "https://moneyrebel.io/" + }, + "marketcap_usd": 0, + "name": "Marcelo", + "network": "eth", + "shortcut": "MRL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:MRP": { "address": "0x21f0F0fD3141Ee9E11B3d7f13a1028CD515f459c", "links": { @@ -4825,6 +5904,33 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:MUXE": { + "address": "0x515669d308f887Fd83a471C7764F5d084886D34D", + "links": { + "Homepage": "https://www.muxe.io" + }, + "marketcap_usd": 0, + "name": "MUXE", + "network": "eth", + "shortcut": "MUXE", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:MVP": { + "address": "0x8a77e40936BbC27e80E9a3F526368C967869c86D", + "links": { + "Github": "https://github.com/Merculet", + "Homepage": "https://www.merculet.io" + }, + "marketcap_usd": 0, + "name": "Merculet", + "network": "eth", + "shortcut": "MVP", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:MWAT": { "address": "0x6425c6BE902d692AE2db752B3c268AFAdb099D3b", "links": { @@ -4869,6 +5975,47 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:NAC": { + "address": "0x8d80de8A78198396329dfA769aD54d24bF90E7aa", + "links": { + "Homepage": "https://nami.trade" + }, + "marketcap_usd": 0, + "name": "Nami ICO", + "network": "eth", + "shortcut": "NAC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:NAVI": { + "address": "0x588047365dF5BA589F923604AAC23d673555c623", + "links": { + "Github": "https://github.com/naviworld", + "Homepage": "https://naviaddress.com" + }, + "marketcap_usd": 0, + "name": "NaviToken", + "network": "eth", + "shortcut": "NAVI", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:NBAI": { + "address": "0x17f8aFB63DfcDcC90ebE6e84F060Cc306A98257D", + "links": { + "Github": "https://github.com/nebulaai", + "Homepage": "https://tokensale.nebula-ai.network" + }, + "marketcap_usd": 0, + "name": "NebulaAiToken", + "network": "eth", + "shortcut": "NBAI", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:NCT": { "address": "0x9E46A38F5DaaBe8683E10793b06749EEF7D733d1", "links": { @@ -4900,6 +6047,20 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:NEC": { + "address": "0xCc80C051057B774cD75067Dc48f8987C4Eb97A5e", + "links": { + "Github": "https://github.com/ethfinex/", + "Homepage": "https://nectar.community" + }, + "marketcap_usd": 0, + "name": "Ethfinex Nectar Token", + "network": "eth", + "shortcut": "NEC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:NET": { "address": "0xcfb98637bcae43C13323EAa1731cED2B716962fD", "links": { @@ -4991,6 +6152,34 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:NPER": { + "address": "0x4cE6B362Bc77A24966Dda9078f9cEF81b3B886a7", + "links": { + "Github": "https://github.com/NperProject", + "Homepage": "https://nper.io" + }, + "marketcap_usd": 13280024, + "name": "NPER", + "network": "eth", + "shortcut": "NPER", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:NPXS": { + "address": "0xA15C7Ebe1f07CaF6bFF097D8a589fb8AC49Ae5B3", + "links": { + "Github": "https://github.com/pundix", + "Homepage": "https://pundix.com" + }, + "marketcap_usd": 0, + "name": "Pundi X Token", + "network": "eth", + "shortcut": "NPXS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:NULS": { "address": "0xB91318F35Bdb262E9423Bc7c7c2A3A93DD93C92C", "links": { @@ -4998,7 +6187,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 0, + "marketcap_usd": 157247200, "name": "NULS", "network": "eth", "shortcut": "NULS", @@ -5058,7 +6247,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 0, + "marketcap_usd": 14905688, "name": "OAX", "network": "eth", "shortcut": "OAX", @@ -5083,7 +6272,7 @@ "type": "erc20" }, "erc20:eth:OHNI": { - "address": "0x6f539a9456A5BCb6334A1A41207c3788f5825207", + "address": "0x7F2176cEB16dcb648dc924eff617c3dC2BEfd30d", "links": { "Github": "ohnicoin", "Homepage": "http://ohni.us", @@ -5143,6 +6332,20 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:OPEN": { + "address": "0x69c4BB240cF05D51eeab6985Bab35527d04a8C64", + "links": { + "Github": "https://github.com/OpenMoneyDigital", + "Homepage": "https://openfuture.io" + }, + "marketcap_usd": 0, + "name": "OPEN", + "network": "eth", + "shortcut": "OPEN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:OPT": { "address": "0x4355fC160f74328f9b383dF2EC589bB3dFd82Ba0", "links": { @@ -5166,7 +6369,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 0, + "marketcap_usd": 50942482, "name": "Simple Token 'OST'", "network": "eth", "shortcut": "OST", @@ -5190,6 +6393,20 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:PAL": { + "address": "0xfeDAE5642668f8636A11987Ff386bfd215F942EE", + "links": { + "Github": "https://github.com/policypalnet", + "Homepage": "https://www.policypal.network" + }, + "marketcap_usd": 0, + "name": "PolicyPal Network", + "network": "eth", + "shortcut": "PAL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:PARETO": { "address": "0xea5f88E54d982Cbb0c441cde4E79bC305e5b43Bc", "links": { @@ -5209,14 +6426,28 @@ "erc20:eth:PATENTS": { "address": "0x694404595e3075A942397F466AAcD462FF1a7BD0", "links": { - "Homepage": "https://www.smartillions.ch", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.smartillions.ch", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "PATENTS", + "network": "eth", + "shortcut": "PATENTS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:PATH": { + "address": "0xF813F3902bBc00A6DCe378634d3B79D84F9803d7", + "links": { + "Github": "https://github.com/path-network-token", + "Homepage": "https://path.network" }, "marketcap_usd": 0, - "name": "PATENTS", + "name": "PATH", "network": "eth", - "shortcut": "PATENTS", + "shortcut": "PATH", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20" @@ -5250,6 +6481,19 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:PBT": { + "address": "0xF4c07b1865bC326A3c01339492Ca7538FD038Cc0", + "links": { + "Homepage": "http://primalbase.com/" + }, + "marketcap_usd": 0, + "name": "Primalbase Token (PBT)", + "network": "eth", + "shortcut": "PBT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:PCH": { "address": "0xfcAC7A7515e9A9d7619fA77A1fa738111f66727e", "links": { @@ -5631,6 +6875,19 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:PRON": { + "address": "0xA3149E0fA0061A9007fAf307074cdCd290f0e2Fd", + "links": { + "Homepage": "https://proncoin.io" + }, + "marketcap_usd": 0, + "name": "PronCoin", + "network": "eth", + "shortcut": "PRON", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:PRPS": { "address": "0x7641b2Ca9DDD58adDf6e3381c1F994Aac5f1A32f", "links": { @@ -5694,6 +6951,20 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:PTC": { + "address": "0x2a8E98e256f32259b5E5Cb55Dd63C8e891950666", + "links": { + "Github": "https://github.com/ParrotCoin", + "Homepage": "http://parrotcoin.club" + }, + "marketcap_usd": 0, + "name": "ParrotCoin", + "network": "eth", + "shortcut": "PTC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:PTOY": { "address": "0x8Ae4BF2C33a8e667de34B54938B0ccD03Eb8CC06", "links": { @@ -5755,6 +7026,19 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:QASH": { + "address": "0x618E75Ac90b12c6049Ba3b27f5d5F8651b0037F6", + "links": { + "Homepage": "https://liquid.plus" + }, + "marketcap_usd": 179982950, + "name": "QASH", + "network": "eth", + "shortcut": "QASH", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:QAU": { "address": "0x671AbBe5CE652491985342e85428EB1b07bC6c64", "links": { @@ -5770,6 +7054,20 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:QBX": { + "address": "0x2467AA6B5A2351416fD4C3DeF8462d841feeecEC", + "links": { + "Github": "https://github.com/qiibee", + "Homepage": "https://www.qiibee.com" + }, + "marketcap_usd": 0, + "name": "qiibeeToken", + "network": "eth", + "shortcut": "QBX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:QRL": { "address": "0x697beac28B09E122C4332D163985e8a73121b97F", "links": { @@ -5824,7 +7122,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 0, + "marketcap_usd": 1270631901, "name": "Qtum", "network": "eth", "shortcut": "QTUM", @@ -5832,6 +7130,31 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:RBLX": { + "address": "0xFc2C4D8f95002C14eD0a7aA65102Cac9e5953b5E", + "links": { + "Github": "https://github.com/rublixdev", + "Homepage": "https://rublix.io/" + }, + "marketcap_usd": 0, + "name": "Rublix", + "network": "eth", + "shortcut": "RBLX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:RCN": { + "address": "0xF970b8E36e23F7fC3FD752EeA86f8Be8D83375A6", + "links": {}, + "marketcap_usd": 0, + "name": "Ripio Credit Network", + "network": "eth", + "shortcut": "RCN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:RCT": { "address": "0x2a3Aa9ECA41E720Ed46B5A70D6C37EfA47f768Ac", "links": { @@ -5885,7 +7208,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 0, + "marketcap_usd": 12748276, "name": "Rebellious", "network": "eth", "shortcut": "REBL", @@ -5953,6 +7276,19 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:RFR": { + "address": "0xd0929d411954c47438dc1d871dd6081F5C5e149c", + "links": { + "Homepage": "https://refereum.com" + }, + "marketcap_usd": 0, + "name": "Refereum", + "network": "eth", + "shortcut": "RFR", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:RIPT": { "address": "0xdd007278B667F6bef52fD0a4c23604aA1f96039a", "links": { @@ -5976,7 +7312,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 0, + "marketcap_usd": 153929694, "name": "IEx.ec", "network": "eth", "shortcut": "RLC", @@ -6043,6 +7379,20 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:ROCK": { + "address": "0xA40106134c5bF4c41411554e6db99B95A15ed9d8", + "links": { + "Github": "https://github.com/rocketico", + "Homepage": "https://rocketico.io" + }, + "marketcap_usd": 47436645, + "name": "Rocket Token", + "network": "eth", + "shortcut": "ROCK", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:ROK": { "address": "0xc9De4B7F0C3d991e967158E4D4bFA4b51Ec0b114", "links": { @@ -6170,7 +7520,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 0, + "marketcap_usd": 132490424, "name": "Salt Lending Token", "network": "eth", "shortcut": "SALT", @@ -6230,7 +7580,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 0, + "marketcap_usd": 2405611, "name": "Sensay", "network": "eth", "shortcut": "SENSE", @@ -6285,8 +7635,9 @@ "type": "erc20" }, "erc20:eth:SGT": { - "address": "0xd248B0D48E44aaF9c49aea0312be7E13a6dc1468", + "address": "0x37427576324fE1f3625c9102674772d7CF71377d", "links": { + "Homepage": "https://sgt.selfieyo.com", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -6327,6 +7678,20 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:SIG": { + "address": "0x6888a16eA9792c15A4DCF2f6C623D055c8eDe792", + "links": { + "Github": "https://github.com/SpectivOfficial", + "Homepage": "https://spectivvr.com" + }, + "marketcap_usd": 0, + "name": "Signal", + "network": "eth", + "shortcut": "SIG", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:SKIN": { "address": "0x2bDC0D42996017fCe214b21607a515DA41A9E0C5", "links": { @@ -6372,7 +7737,7 @@ "type": "erc20" }, "erc20:eth:SKRP": { - "address": "0xfdFE8b7aB6CF1bD1E3d14538Ef40686296C42052", + "address": "0x6E34d8d84764D40f6D7b39cd569Fd017bF53177D", "links": { "Github": "https://github.com/SkrapsIO", "Homepage": "https://skraps.io", @@ -6419,10 +7784,10 @@ "type": "erc20" }, "erc20:eth:SMT": { - "address": "0x55F93985431Fc9304077687a35A1BA103dC1e081", + "address": "0x2dCFAAc11c9EebD8C6C42103Fe9e2a6AD237aF27", "links": { "Github": "https://github.com/SmartMeshFoundation", - "Homepage": "http://smartmesh.io", + "Homepage": "http://smartnode.org", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -6629,6 +7994,19 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:SPN": { + "address": "0x20F7A3DdF244dc9299975b4Da1C39F8D5D75f05A", + "links": { + "Homepage": "https://www.sapien.network/" + }, + "marketcap_usd": 0, + "name": "Sapien", + "network": "eth", + "shortcut": "SPN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:SRN": { "address": "0x68d57c9a1C35f63E2c83eE8e49A64e9d70528D25", "links": { @@ -6646,7 +8024,7 @@ "type": "erc20" }, "erc20:eth:SS": { - "address": "0xB15fE5a123e647ba594CEa7A1E648646f95EB4AA", + "address": "0xbbFF862d906E348E9946Bfb2132ecB157Da3D4b4", "links": { "Github": "https://github.com/Sharders", "Homepage": "https://sharder.org", @@ -6661,6 +8039,17 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:SSH": { + "address": "0x6e2050CBFB3eD8A4d39b64cC9f47E711a03a5a89", + "links": {}, + "marketcap_usd": 0, + "name": "StreamShares", + "network": "eth", + "shortcut": "SSH", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:STAC": { "address": "0x9a005c9a89BD72a4Bd27721E7a09A3c11D2b03C4", "links": { @@ -6714,7 +8103,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 0, + "marketcap_usd": 20700203, "name": "STK Token", "network": "eth", "shortcut": "STK", @@ -6743,7 +8132,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 0, + "marketcap_usd": 106451456, "name": "STORJ", "network": "eth", "shortcut": "STORJ", @@ -6758,7 +8147,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 0, + "marketcap_usd": 156048954, "name": "Storm Token", "network": "eth", "shortcut": "STORM", @@ -6998,6 +8387,30 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:THETA": { + "address": "0x3883f5e181fccaF8410FA61e12b59BAd963fb645", + "links": { + "Homepage": "https://www.thetatoken.org/" + }, + "marketcap_usd": 0, + "name": "Theta Token", + "network": "eth", + "shortcut": "THETA", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:THUG": { + "address": "0xfe7B915A0bAA0E79f85c5553266513F7C1c03Ed0", + "links": {}, + "marketcap_usd": 0, + "name": "THUG", + "network": "eth", + "shortcut": "THUG", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:TIME": { "address": "0x6531f133e6DeeBe7F2dcE5A0441aA7ef330B4e53", "links": { @@ -7171,7 +8584,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 0, + "marketcap_usd": 29980378, "name": "Token-as-a-Service", "network": "eth", "shortcut": "TaaS", @@ -7195,6 +8608,20 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:UMKA": { + "address": "0x105d97ef2E723f1cfb24519Bc6fF15a6D091a3F1", + "links": { + "Github": "https://github.com/UMKAman", + "Homepage": "https://umka.city" + }, + "marketcap_usd": 0, + "name": "UMKA", + "network": "eth", + "shortcut": "UMKA", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:UQC": { "address": "0xD01DB73E047855Efb414e6202098C4Be4Cd2423B", "links": { @@ -7210,6 +8637,17 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:USDM": { + "address": "0xD760ADdFb24D9C01Fe4Bfea7475C5e3636684058", + "links": {}, + "marketcap_usd": 0, + "name": "Mether (USDM)", + "network": "eth", + "shortcut": "USDM", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:USDT": { "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7", "links": { @@ -7270,6 +8708,20 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:VDOC": { + "address": "0x82BD526bDB718C6d4DD2291Ed013A5186cAE2DCa", + "links": { + "Github": "https://github.com/BlueBikeSolutions", + "Homepage": "https://www.dutyof.care/token-launch/" + }, + "marketcap_usd": 0, + "name": "Duty of Care Token", + "network": "eth", + "shortcut": "VDOC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:VEE": { "address": "0x340D2bdE5Eb28c1eed91B2f790723E3B160613B7", "links": { @@ -7348,9 +8800,10 @@ "type": "erc20" }, "erc20:eth:VIBEX": { - "address": "0xe8Ff5C9c75dEb346acAc493C463C8950Be03Dfba", + "address": "0x882448f83d90B2bf477Af2eA79327fDEA1335D93", "links": { - "Homepage": "http://vibehub.io", + "Github": "https://github.com/amack2u/VibeHub", + "Homepage": "https://vibehub.io/ico/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -7362,6 +8815,33 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:VIEW": { + "address": "0xF03f8D65BaFA598611C3495124093c56e8F638f0", + "links": { + "Homepage": "https://view.ly/" + }, + "marketcap_usd": 0, + "name": "Viewly", + "network": "eth", + "shortcut": "VIEW", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:VIT": { + "address": "0x23b75Bc7AaF28e2d6628C3f424B3882F8f072a3c", + "links": { + "Github": "https://github.com/ViceIndustryToken", + "Homepage": "https://vicetoken.com/" + }, + "marketcap_usd": 0, + "name": "Vice Industry Token", + "network": "eth", + "shortcut": "VIT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:VIU": { "address": "0x519475b31653E46D20cD09F9FdcF3B12BDAcB4f5", "links": { @@ -7378,6 +8858,34 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:VLD": { + "address": "0x922aC473A3cC241fD3a0049Ed14536452D58D73c", + "links": { + "Github": "https://github.com/valid-global/", + "Homepage": "https://valid.global/" + }, + "marketcap_usd": 0, + "name": "VLD", + "network": "eth", + "shortcut": "VLD", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:VOC": { + "address": "0xc3bC9Eb71f75Ec439A6b6C8E8b746fCF5b62F703", + "links": { + "Github": "https://github.com/vormacoin", + "Homepage": "https://vormacoin.io/" + }, + "marketcap_usd": 0, + "name": "VORMACOIN", + "network": "eth", + "shortcut": "VOC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:VOISE": { "address": "0x83eEA00D838f92dEC4D1475697B9f4D3537b56E3", "links": { @@ -7431,7 +8939,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 0, + "marketcap_usd": 126817543, "name": "WAX", "network": "eth", "shortcut": "WAX", @@ -7454,6 +8962,20 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:WCN": { + "address": "0x8F936fE0faF0604c9C0Ef2406bde0A65365515d6", + "links": { + "Github": "https://github.com/WorldCoinNetwork", + "Homepage": "https://worldcoin.cash/" + }, + "marketcap_usd": 0, + "name": "WorldCoinNetwork", + "network": "eth", + "shortcut": "WCN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:WCT": { "address": "0x6a0A97E47d15aAd1D132a1Ac79a480E3F2079063", "links": { @@ -7484,6 +9006,20 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:WHEN": { + "address": "0xF4FE95603881D0e07954fD7605E0e9a916e42C44", + "links": { + "Github": "https://github.com/WhenHub", + "Homepage": "https://interface.whenhub.com" + }, + "marketcap_usd": 0, + "name": "WHEN Token", + "network": "eth", + "shortcut": "WHEN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:WHO": { "address": "0xe200641890772FCe8eE6EDc5354cCEa30ac92F49", "links": { @@ -7539,7 +9075,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 0, + "marketcap_usd": 37710782, "name": "WINGS", "network": "eth", "shortcut": "WINGS", @@ -7548,7 +9084,7 @@ "type": "erc20" }, "erc20:eth:WOLK": { - "address": "0xF6B55acBBC49f4524Aa48D19281A9A77c54DE10f", + "address": "0x728781E75735dc0962Df3a51d7Ef47E798A7107E", "links": { "Homepage": "https://www.wolk.com", "MyCrypto Wallet": "https://mycrypto.com", @@ -7631,7 +9167,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 0, + "marketcap_usd": 34889717, "name": "WaBi", "network": "eth", "shortcut": "WaBi", @@ -7684,6 +9220,20 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:XBP": { + "address": "0x28dee01D53FED0Edf5f6E310BF8Ef9311513Ae40", + "links": { + "Github": "https://github.com/blitzpredict", + "Homepage": "https://www.blitzpredict.io" + }, + "marketcap_usd": 0, + "name": "BlitzPredict", + "network": "eth", + "shortcut": "XBP", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:XCC": { "address": "0x4d829f8C92a6691c56300D020c9e0dB984Cfe2BA", "links": { @@ -7700,6 +9250,20 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:XGG": { + "address": "0xf6b6AA0Ef0f5Edc2C1c5d925477F97eAF66303e7", + "links": { + "Github": "https://github.com/GoingGems", + "Homepage": "https://www.going-gems.com" + }, + "marketcap_usd": 0, + "name": "Going Gems", + "network": "eth", + "shortcut": "XGG", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:XGM": { "address": "0x533ef0984b2FAA227AcC620C67cce12aA39CD8CD", "links": { @@ -7745,6 +9309,20 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:XNK": { + "address": "0xBC86727E770de68B1060C91f6BB6945c73e10388", + "links": { + "Github": "https://github.com/InkProtocol/", + "Homepage": "https://paywithink.com" + }, + "marketcap_usd": 0, + "name": "Ink Protocol", + "network": "eth", + "shortcut": "XNK", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:XNN": { "address": "0xab95E915c123fdEd5BDfB6325e35ef5515F1EA69", "links": { @@ -7804,6 +9382,19 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:YEED": { + "address": "0x6F7A4bac3315B5082F793161a22e26666d22717f", + "links": { + "Homepage": "https://yggdrash.io" + }, + "marketcap_usd": 0, + "name": "YEED", + "network": "eth", + "shortcut": "YEED", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:YUPIE": { "address": "0x0F33bb20a282A7649C7B3AFf644F084a9348e933", "links": { @@ -7826,7 +9417,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 0, + "marketcap_usd": 13021651, "name": "ZAP", "network": "eth", "shortcut": "ZAP", @@ -7834,6 +9425,19 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:ZCS": { + "address": "0x7A41e0517a5ecA4FdbC7FbebA4D4c47B9fF6DC63", + "links": { + "Homepage": "https://zsc.io/" + }, + "marketcap_usd": 0, + "name": "Zeusshield", + "network": "eth", + "shortcut": "ZCS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:ZIL": { "address": "0x05f4a42e251f2d52b8ed15E9FEdAacFcEF1FAD27", "links": { @@ -7850,6 +9454,19 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:ZMN": { + "address": "0x554FFc77F4251a9fB3c0E3590a6a205f8d4e067D", + "links": { + "Homepage": "https://www.zmine.com" + }, + "marketcap_usd": 0, + "name": "ZMINE", + "network": "eth", + "shortcut": "ZMN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:ZRX": { "address": "0xE41d2489571d322189246DaFA5ebDe1F4699F498", "links": { @@ -7941,6 +9558,34 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:eUSD": { + "address": "0x523630976eB6147621B5c31c781eBe2Ec2a806E0", + "links": { + "Github": "https://github.com/havven/havven", + "Homepage": "https://havven.io" + }, + "marketcap_usd": 0, + "name": "Ether-Backed USD Nomins (erc20)", + "network": "eth", + "shortcut": "eUSD", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, + "erc20:eth:eosDAC": { + "address": "0x7e9e431a0B8c4D532C745B1043c7FA29a48D4fBa", + "links": { + "Github": "https://github.com/eosdac", + "Homepage": "https://eosdac.io/" + }, + "marketcap_usd": 119033063, + "name": "eosDAC", + "network": "eth", + "shortcut": "eosDAC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:onG": { "address": "0xd341d1680Eeee3255b8C4c75bCCE7EB57f144dAe", "links": { @@ -8078,7 +9723,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 0, + "marketcap_usd": 4507832, "name": "QWARK", "network": "ubq", "shortcut": "QWARK", @@ -8117,7 +9762,7 @@ "Homepage": "https://www.dimcoin.io", "Nano Wallet": "https://nem.io/downloads/" }, - "marketcap_usd": 7760658, + "marketcap_usd": 17968307, "name": "DIMCOIN", "shortcut": "DIM", "t1_enabled": "yes", @@ -8130,7 +9775,7 @@ "Homepage": "https://www.dimcoin.io", "Nano Wallet": "https://nem.io/downloads/" }, - "marketcap_usd": 7760658, + "marketcap_usd": 17968307, "name": "DIM TOKEN", "shortcut": "DIMTOK", "t1_enabled": "yes", @@ -8166,7 +9811,7 @@ "Homepage": "https://nem.io", "Nano Wallet": "https://nem.io/downloads/" }, - "marketcap_usd": 2146275000, + "marketcap_usd": 2565009000, "name": "NEM", "shortcut": "XEM", "t1_enabled": "yes", @@ -8175,11 +9820,11 @@ } }, "info": { - "marketcap_usd": 185205612765, - "t1_coins": 538, - "t2_coins": 538, - "total_marketcap_usd": 270230834613, - "updated_at": 1523468285, - "updated_at_readable": "Wed Apr 11 19:38:05 2018" + "marketcap_usd": 246249222006, + "t1_coins": 663, + "t2_coins": 663, + "total_marketcap_usd": 346115620704, + "updated_at": 1527086460, + "updated_at_readable": "Wed May 23 16:41:00 2018" } -} +} \ No newline at end of file From 0c9d67954c871553a7d44575a7a9198cba83df88 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 24 May 2018 13:49:54 +0200 Subject: [PATCH 327/767] protob: drop CoinType --- protob/messages.proto | 1 - protob/types.proto | 18 ------------------ 2 files changed, 19 deletions(-) diff --git a/protob/messages.proto b/protob/messages.proto index 04e869fda..62d8300fc 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -164,7 +164,6 @@ message Features { optional bool passphrase_protection = 8; // is node/mnemonic encrypted using passphrase? optional string language = 9; // device language optional string label = 10; // device description label - repeated CoinType coins = 11; // supported coins optional bool initialized = 12; // does device contain seed? optional bytes revision = 13; // SCM revision of firmware optional bytes bootloader_hash = 14; // hash of the bootloader diff --git a/protob/types.proto b/protob/types.proto index 3f9c2201a..2f408bfaa 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -161,24 +161,6 @@ message HDNodePathType { repeated uint32 address_n = 2; // BIP-32 path to derive the key from node } -/** - * Structure representing Coin - * @used_in Features - */ -message CoinType { - optional string coin_name = 1; - optional string coin_shortcut = 2; - optional uint32 address_type = 3 [default=0]; - optional uint64 maxfee_kb = 4; - optional uint32 address_type_p2sh = 5 [default=5]; - optional string signed_message_header = 8; - optional uint32 xpub_magic = 9 [default=76067358]; // default=0x0488b21e - optional uint32 xprv_magic = 10 [default=76066276]; // default=0x0488ade4 - optional bool segwit = 11; - optional uint32 forkid = 12; - optional bool force_bip143 = 13; -} - /** * Type of redeem script used in input * @used_in TxInputType From 44d2c3636a18258eeb0937ae677d773b1577810c Mon Sep 17 00:00:00 2001 From: slush Date: Thu, 24 May 2018 16:20:36 +0200 Subject: [PATCH 328/767] Updated coins details --- coins_details.json | 981 +++++++++++++++++++++++++++------------------ 1 file changed, 584 insertions(+), 397 deletions(-) diff --git a/coins_details.json b/coins_details.json index 7cc592fd9..4b9cd8bb5 100644 --- a/coins_details.json +++ b/coins_details.json @@ -19,7 +19,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 1615843905, + "marketcap_usd": 1564732714, "name": "Ethereum Classic", "shortcut": "ETC", "t1_enabled": "yes", @@ -32,7 +32,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 61903701994, + "marketcap_usd": 58426427451, "name": "Ethereum", "shortcut": "ETH", "t1_enabled": "yes", @@ -58,7 +58,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 12801879, + "marketcap_usd": 12239260, "name": "Expanse", "shortcut": "EXP", "t1_enabled": "yes", @@ -74,7 +74,7 @@ "notes": "In development", "shortcut": "LSK", "t1_enabled": "no", - "t2_enabled": "in progress", + "t2_enabled": "soon", "type": "coin" }, "coin2:RSK": { @@ -96,7 +96,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 67176919, + "marketcap_usd": 68228380, "name": "Ubiq", "shortcut": "UBQ", "t1_enabled": "yes", @@ -111,8 +111,8 @@ "name": "Stellar", "notes": "In development", "shortcut": "XLM", - "t1_enabled": "in progress", - "t2_enabled": "in progress" + "t1_enabled": "soon", + "t2_enabled": "soon" }, "coin2:XMR": { "links": { @@ -123,7 +123,7 @@ "notes": "In development", "shortcut": "XMR", "t1_enabled": "no", - "t2_enabled": "in progress", + "t2_enabled": "soon", "type": "coin" }, "coin2:XRP": { @@ -135,7 +135,7 @@ "notes": "In development", "shortcut": "XRP", "t1_enabled": "no", - "t2_enabled": "in progress", + "t2_enabled": "soon", "type": "coin" }, "coin:BCH": { @@ -144,7 +144,7 @@ "Homepage": "https://www.bitcoincash.org/", "TREZOR Wallet": "https://wallet.trezor.io" }, - "marketcap_usd": 18102441394, + "marketcap_usd": 17423612642, "name": "Bitcoin Cash", "shortcut": "BCH", "t1_enabled": "yes", @@ -158,7 +158,7 @@ "Homepage": "https://bitcoin.org", "TREZOR Wallet": "https://wallet.trezor.io" }, - "marketcap_usd": 134898215037, + "marketcap_usd": 128658649837, "name": "Bitcoin", "shortcut": "BTC", "t1_enabled": "yes", @@ -170,7 +170,7 @@ "Homepage": "https://bitcoingold.org", "TREZOR Wallet": "https://wallet.trezor.io" }, - "marketcap_usd": 826356886, + "marketcap_usd": 786560294, "name": "Bitcoin Gold", "shortcut": "BTG", "t1_enabled": "yes", @@ -182,7 +182,7 @@ "Homepage": "https://www.dash.org", "TREZOR Wallet": "https://wallet.trezor.io" }, - "marketcap_usd": 2852529795, + "marketcap_usd": 2732645384, "name": "Dash", "shortcut": "DASH", "t1_enabled": "yes", @@ -193,22 +193,22 @@ "links": { "Homepage": "https://www.digibyte.co" }, - "marketcap_usd": 387020636, + "marketcap_usd": 360007696, "name": "DigiByte", "shortcut": "DGB", - "t1_enabled": "yes", - "t2_enabled": "yes", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "coin" }, "coin:DOGE": { "links": { "Homepage": "https://dogecoin.com" }, - "marketcap_usd": 434277034, + "marketcap_usd": 389584072, "name": "Dogecoin", "shortcut": "DOGE", - "t1_enabled": "yes", - "t2_enabled": "yes", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "coin" }, "coin:FJC": { @@ -216,11 +216,11 @@ "Electrum-FJC": "http://www.fujicoin.org/downloads.php", "Homepage": "https://www.fujicoin.org" }, - "marketcap_usd": 828203, + "marketcap_usd": 723541, "name": "Fujicoin", "shortcut": "FJC", - "t1_enabled": "yes", - "t2_enabled": "yes", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "coin" }, "coin:LTC": { @@ -229,7 +229,7 @@ "Homepage": "https://litecoin.org", "TREZOR Wallet": "https://wallet.trezor.io" }, - "marketcap_usd": 7095804859, + "marketcap_usd": 6881853713, "name": "Litecoin", "shortcut": "LTC", "t1_enabled": "yes", @@ -241,25 +241,26 @@ "Electrum-MONA": "https://electrum-mona.org", "Homepage": "https://monacoin.org" }, - "marketcap_usd": 204486823, + "marketcap_usd": 198881587, "name": "Monacoin", "shortcut": "MONA", - "t1_enabled": "yes", - "t2_enabled": "yes", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "coin" }, "coin:NMC": { "links": { "Homepage": "https://namecoin.org" }, - "marketcap_usd": 29676162, + "marketcap_usd": 26948013, "name": "Namecoin", "shortcut": "NMC", - "t1_enabled": "yes", - "t2_enabled": "yes", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "coin" }, "coin:TEST": { + "hidden": 1, "links": { "Homepage": "https://bitcoin.org" }, @@ -274,11 +275,11 @@ "links": { "Homepage": "https://vertcoin.org" }, - "marketcap_usd": 85745890, + "marketcap_usd": 81187041, "name": "Vertcoin", "shortcut": "VTC", - "t1_enabled": "yes", - "t2_enabled": "yes", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "coin" }, "coin:ZEC": { @@ -286,7 +287,7 @@ "Homepage": "z.cash", "TREZOR Wallet": "https://wallet.trezor.io" }, - "marketcap_usd": 1255619672, + "marketcap_usd": 1163096165, "name": "Zcash", "shortcut": "ZEC", "t1_enabled": "yes", @@ -369,12 +370,15 @@ }, "erc20:eth:2DC": { "address": "0x9fC0583220eB44fAeE9e2dc1E63F39204DDD9090", - "links": {}, + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, "marketcap_usd": 0, "name": "DualChain", "network": "eth", "shortcut": "2DC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -396,13 +400,15 @@ "erc20:eth:A18": { "address": "0xBDe8f7820b5544a49D34F9dDeaCAbEDC7C0B5adc", "links": { - "Homepage": "https://apollo18.co.in" + "Homepage": "https://apollo18.co.in", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Apollo18", "network": "eth", "shortcut": "A18", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -425,13 +431,15 @@ "address": "0x0E8d6b471e332F140e7d9dbB99E5E3822F728DA6", "links": { "Github": "https://github.com/theabyssportal", - "Homepage": "https://www.theabyss.com" + "Homepage": "https://www.theabyss.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "ABYSS", "network": "eth", "shortcut": "ABYSS", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -453,13 +461,15 @@ "erc20:eth:ADH": { "address": "0xE69a353b3152Dd7b706ff7dD40fe1d18b7802d31", "links": { - "Homepage": "https://adhive.tv" + "Homepage": "https://adhive.tv", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "AdHive Token", "network": "eth", "shortcut": "ADH", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -566,7 +576,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 319288351, + "marketcap_usd": 319084722, "name": "Aion", "network": "eth", "shortcut": "AION", @@ -628,7 +638,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 7985008, + "marketcap_usd": 7296874, "name": "ALIS Token", "network": "eth", "shortcut": "ALIS", @@ -687,13 +697,15 @@ "address": "0x737F98AC8cA59f2C68aD658E3C3d8C8963E40a4c", "links": { "Github": "https://github.com/amontech", - "Homepage": "https://amon.tech" + "Homepage": "https://amon.tech", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Amon", "network": "eth", "shortcut": "AMN", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -701,26 +713,30 @@ "address": "0x38c87AA89B2B8cD9B95b736e1Fa7b612EA972169", "links": { "Github": "https://github.com/AMO-Project/", - "Homepage": "https://amo.foundation" + "Homepage": "https://amo.foundation", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "AMO Coin", "network": "eth", "shortcut": "AMO", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:AMTC": { "address": "0x84936cF7630AA3e27Dd9AfF968b140d5AEE49F5a", "links": { - "Homepage": "https://ambertime.org/" + "Homepage": "https://ambertime.org/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "AmberTime Coin", "network": "eth", "shortcut": "AMTC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -742,13 +758,15 @@ "address": "0x4C0fBE1BB46612915E7967d2C3213cd4d87257AD", "links": { "Github": "https://github.com/Oxchild/crowdsale", - "Homepage": "https://apisplatform.io" + "Homepage": "https://apisplatform.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "APIS", "network": "eth", "shortcut": "APIS", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -878,13 +896,15 @@ "address": "0xb0D926c1BC3d78064F3e1075D5bD9A24F35Ae6C5", "links": { "Github": "https://github.com/va109/Artex", - "Homepage": "https://aronline.io" + "Homepage": "https://aronline.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Assistive Reality ARX", "network": "eth", "shortcut": "ARXT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -999,13 +1019,15 @@ "address": "0xCd4b4b0F3284a33AC49C67961EC6e111708318Cf", "links": { "Github": "https://github.com/Pickeringwareltd/AX1_v1.03", - "Homepage": "https://ax1.io" + "Homepage": "https://ax1.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "AX1 Mining Token", "network": "eth", "shortcut": "AX1", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1134,13 +1156,15 @@ "address": "0x1014613E2B3CBc4d575054D4982E580d9b99d7B1", "links": { "Github": "https://github.com/bitcv", - "Homepage": "https://bitcv.one/" + "Homepage": "https://bitcv.one/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "BitCapitalVendor Token", "network": "eth", "shortcut": "BCV", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1180,13 +1204,15 @@ "address": "0x6aEB95F06CDA84cA345c2dE0F3B7f96923a44f4c", "links": { "Github": "https://github.com/Rentberry", - "Homepage": "https://rentberry.com" + "Homepage": "https://rentberry.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Berry", "network": "eth", "shortcut": "BERRY", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1208,13 +1234,15 @@ "address": "0x763186eB8d4856D536eD4478302971214FEbc6A9", "links": { "Github": "https://github.com/betterbetting", - "Homepage": "https://www.betterbetting.org" + "Homepage": "https://www.betterbetting.org", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "BETR", "network": "eth", "shortcut": "BETR", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1236,13 +1264,15 @@ "erc20:eth:BKRx": { "address": "0x3cf9E0c385a5ABEC9FD2a71790AA344C4e8E3570", "links": { - "Homepage": "https://www.blockrx.com" + "Homepage": "https://www.blockrx.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "BlockRx", "network": "eth", "shortcut": "BKRx", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1250,13 +1280,15 @@ "address": "0x45245bc59219eeaAF6cD3f382e078A461FF9De7B", "links": { "Github": "https://github.com/BankEx", - "Homepage": "https://bankex.com/" + "Homepage": "https://bankex.com/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "BANKEX", "network": "eth", "shortcut": "BKX", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1384,12 +1416,15 @@ }, "erc20:eth:BNFT": { "address": "0xdA2C424Fc98c741c2d4ef2f42897CEfed897CA75", - "links": {}, + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, "marketcap_usd": 0, "name": "Benefits Coin", "network": "eth", "shortcut": "BNFT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1425,13 +1460,15 @@ "erc20:eth:BOB": { "address": "0xDF347911910b6c9A4286bA8E2EE5ea4a39eB2134", "links": { - "Homepage": "https://bobsrepair.com" + "Homepage": "https://bobsrepair.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Bob's repair", "network": "eth", "shortcut": "BOB", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1517,7 +1554,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 80798, + "marketcap_usd": 108378, "name": "BRAT", "network": "eth", "shortcut": "BRAT", @@ -1527,12 +1564,15 @@ }, "erc20:eth:BRD": { "address": "0x558EC3152e2eb2174905cd19AeA4e34A23DE9aD6", - "links": {}, + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, "marketcap_usd": 0, "name": "Bread", "network": "eth", "shortcut": "BRD", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1617,24 +1657,29 @@ "address": "0xa02e3bB9cEbc03952601B3724B4940e0845BeBcf", "links": { "Github": "https://github.com/bethereumproject", - "Homepage": "https://www.bethereum.com/" + "Homepage": "https://www.bethereum.com/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Bethereum", "network": "eth", "shortcut": "BTHR", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:BTK": { "address": "0xdb8646F5b487B5Dd979FAC618350e85018F557d4", - "links": {}, + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, "marketcap_usd": 0, "name": "Bitcoin Token", "network": "eth", "shortcut": "BTK", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1719,13 +1764,15 @@ "erc20:eth:BUC": { "address": "0xCa3c18a65b802eC267f8f4802545e7F53D24C75e", "links": { - "Homepage": "https://beeunity.org" + "Homepage": "https://beeunity.org", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "BeeUnity Chain", "network": "eth", "shortcut": "BUC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1751,7 +1798,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 54431971, + "marketcap_usd": 53380562, "name": "Crypto20's Token", "network": "eth", "shortcut": "C20", @@ -1807,13 +1854,15 @@ "erc20:eth:CARB": { "address": "0xA517a46Baad6B054A76bD19c46844f717fe69fea", "links": { - "Homepage": "https://carbcoin.eu/" + "Homepage": "https://carbcoin.eu/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "CarbCoin", "network": "eth", "shortcut": "CARB", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2033,13 +2082,15 @@ "erc20:eth:CHSB": { "address": "0xba9d4199faB4f26eFE3551D490E3821486f135Ba", "links": { - "Homepage": "https://swissborg.com" + "Homepage": "https://swissborg.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "CHSB", "network": "eth", "shortcut": "CHSB", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2062,13 +2113,15 @@ "address": "0x3dC9a42fa7Afe57BE03c58fD7F4411b1E466C508", "links": { "Github": "https://github.com/CryptoLiveLeak/CLL-Token", - "Homepage": "https://www.cryptoliveleak.com/" + "Homepage": "https://www.cryptoliveleak.com/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "CryptoLiveLeak", "network": "eth", "shortcut": "CLL", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2152,13 +2205,15 @@ "erc20:eth:CNB": { "address": "0xEBf2F9E8De960f64ec0fDCDa6Cb282423133347B", "links": { - "Homepage": "https://canabio.net" + "Homepage": "https://canabio.net", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Canabio", "network": "eth", "shortcut": "CNB", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2229,13 +2284,15 @@ "address": "0x0C91B015AbA6f7B4738dcD36E7410138b29ADC29", "links": { "Github": "https://github.com/CoinOil", - "Homepage": "https://coinoil.io/" + "Homepage": "https://coinoil.io/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "CoinOil", "network": "eth", "shortcut": "COIL", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2246,7 +2303,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 22012994, + "marketcap_usd": 21540128, "name": "Coss Token", "network": "eth", "shortcut": "COSS", @@ -2257,13 +2314,15 @@ "erc20:eth:COV": { "address": "0xE2FB6529EF566a080e6d23dE0bd351311087D567", "links": { - "Homepage": "https://covesting.io/" + "Homepage": "https://covesting.io/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Covesting", "network": "eth", "shortcut": "COV", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2336,7 +2395,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 10200161, + "marketcap_usd": 10841500, "name": "Credo / Bitbounce", "network": "eth", "shortcut": "CREDO", @@ -2394,13 +2453,15 @@ "address": "0xC87c5dD86A3d567fF28701886fB0745aaa898da4", "links": { "Github": "github.com/CTGlobal/ChristianTraders", - "Homepage": "https://christiantraders.com" + "Homepage": "https://christiantraders.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "CT Global Token", "network": "eth", "shortcut": "CTG", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2500,7 +2561,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 531392, + "marketcap_usd": 467370, "name": "CryptoCarbon", "network": "eth", "shortcut": "CryptoCarbon", @@ -2530,7 +2591,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 16140984, + "marketcap_usd": 14724361, "name": "DADI", "network": "eth", "shortcut": "DADI", @@ -2546,7 +2607,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 37785915, + "marketcap_usd": 36311467, "name": "Dai Stablecoin v1.0", "network": "eth", "shortcut": "DAI", @@ -2638,7 +2699,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 173975, + "marketcap_usd": 168147, "name": "DATACoin", "network": "eth", "shortcut": "DATACoin", @@ -2649,13 +2710,15 @@ "erc20:eth:DAXT": { "address": "0x61725f3db4004AFE014745B21DAb1E1677CC328b", "links": { - "Homepage": "https://www.daxt.io" + "Homepage": "https://www.daxt.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Digital Asset Exchange Token", "network": "eth", "shortcut": "DAXT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2663,13 +2726,15 @@ "address": "0xE814aeE960a85208C3dB542C53E7D4a6C8D5f60F", "links": { "Github": "https://github.com/chronologic", - "Homepage": "https://chronologic.network" + "Homepage": "https://chronologic.network", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "ChronoLogic DAY", "network": "eth", "shortcut": "DAY", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2753,13 +2818,15 @@ "address": "0x075c60EE2cD308ff47873b38Bd9A0Fa5853382c4", "links": { "Github": "https://github.com/DeezNutsToken/DEEZ", - "Homepage": "https://deeznuts.in" + "Homepage": "https://deeznuts.in", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "DeezNuts", "network": "eth", "shortcut": "DEEZ", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2769,7 +2836,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 86385897, + "marketcap_usd": 83518956, "name": "DENT", "network": "eth", "shortcut": "DENT", @@ -2780,13 +2847,15 @@ "erc20:eth:DEPO": { "address": "0x7cF271966F36343Bf0150F25E5364f7961c58201", "links": { - "Homepage": "https://aridika.com" + "Homepage": "https://aridika.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "CRYPTODEPOZIT", "network": "eth", "shortcut": "DEPO", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3053,13 +3122,15 @@ "address": "0x5adc961D6AC3f7062D2eA45FEFB8D8167d44b190", "links": { "Github": "https://github.com/dethertech", - "Homepage": "https://dether.io" + "Homepage": "https://dether.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "dether", "network": "eth", "shortcut": "DTH", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3082,13 +3153,15 @@ "address": "0xf9F7c29CFdf19FCf1f2AA6B84aA367Bcf1bD1676", "links": { "Github": "https://github.com/DTToken", - "Homepage": "https://delphifund.org/" + "Homepage": "https://delphifund.org/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Delphi Tech Token", "network": "eth", "shortcut": "DTT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3096,24 +3169,29 @@ "address": "0x765f0C16D1Ddc279295c1a7C24B0883F62d33F75", "links": { "Github": "https://github.com/DataBrokerDAO", - "Homepage": "https://databrokerdao.com" + "Homepage": "https://databrokerdao.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "DaTa eXchange Token", "network": "eth", "shortcut": "DTX", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:DTx": { "address": "0x82fdedfB7635441aA5A92791D001fA7388da8025", - "links": {}, + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, "marketcap_usd": 0, "name": "DigitalTicks", "network": "eth", "shortcut": "DTx", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3197,13 +3275,15 @@ "erc20:eth:EDC": { "address": "0xFA1DE2Ee97e4c10C94C91Cb2b5062b89Fb140b82", "links": { - "Homepage": "https://www.edc.network" + "Homepage": "https://www.edc.network", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Education Credits", "network": "eth", "shortcut": "EDC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3306,7 +3386,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 818346, + "marketcap_usd": 799760, "name": "ELTCOIN", "network": "eth", "shortcut": "ELTCOIN", @@ -3349,13 +3429,15 @@ "address": "0x9501BFc48897DCEEadf73113EF635d2fF7ee4B97", "links": { "Github": "https://github.com/easyMINE", - "Homepage": "https://easymine.io" + "Homepage": "https://easymine.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "easyMINE Token", "network": "eth", "shortcut": "EMT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3378,13 +3460,15 @@ "address": "0xf0Ee6b27b759C9893Ce4f094b49ad28fd15A23e4", "links": { "Github": "https://github.com/enigmampc", - "Homepage": "https://enigma.co/" + "Homepage": "https://enigma.co/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Enigma", "network": "eth", "shortcut": "ENG", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3426,7 +3510,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 10030409181, + "marketcap_usd": 10155343130, "name": "EOS", "network": "eth", "shortcut": "EOS", @@ -3438,13 +3522,15 @@ "address": "0x35BAA72038F127f9f8C8f9B491049f64f377914d", "links": { "Github": "https://github.com/EthPokerIO/ethpokerIO", - "Homepage": "https://ethPoker.io" + "Homepage": "https://ethPoker.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "ethPoker.io EPX", "network": "eth", "shortcut": "EPX", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3482,13 +3568,15 @@ "erc20:eth:ETCH": { "address": "0xDd74a7A3769fA72561B3A69e65968F49748c690c", "links": { - "Homepage": "https://etch.work" + "Homepage": "https://etch.work", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "ETCH", "network": "eth", "shortcut": "ETCH", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3509,7 +3597,10 @@ }, "erc20:eth:ETR": { "address": "0x6927C69fb4daf2043fbB1Cb7b86c5661416bea29", - "links": {}, + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, "marketcap_usd": 0, "name": "Etheruem Risen", "network": "eth", @@ -3629,13 +3720,15 @@ "erc20:eth:FANX": { "address": "0x7f6715c3FC4740A02F70De85B9FD50ac6001fEd9", "links": { - "Homepage": "http://www.fanx.one/" + "Homepage": "http://www.fanx.one/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "FANX Token", "network": "eth", "shortcut": "FANX", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3673,13 +3766,15 @@ "erc20:eth:FLMC": { "address": "0x5976F7dac1525eF3277836043bA474a35E6B4272", "links": { - "Homepage": "https://filmscoin.io" + "Homepage": "https://filmscoin.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Filmscoin", "network": "eth", "shortcut": "FLMC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3702,13 +3797,15 @@ "erc20:eth:FLR": { "address": "0x9aeFBE0b3C3ba9Eab262CB9856E8157AB7648e09", "links": { - "Homepage": "https://flaircoin.co/" + "Homepage": "https://flaircoin.co/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Flair Coin", "network": "eth", "shortcut": "FLR", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3806,13 +3903,15 @@ "address": "0x2AEC18c5500f21359CE1BEA5Dc1777344dF4C0Dc", "links": { "Github": "https://github.com/farmatrust", - "Homepage": "https://www.farmatrust.io" + "Homepage": "https://www.farmatrust.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "FarmaTrust Token", "network": "eth", "shortcut": "FTT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3897,13 +3996,15 @@ "address": "0x6754e21b9EAa053c62d7854dD6561ae451B0cBCf", "links": { "Github": "https://github.com/GanaProject", - "Homepage": "https://ganacoin.io" + "Homepage": "https://ganacoin.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "GANA", "network": "eth", "shortcut": "GANA", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3939,13 +4040,15 @@ "erc20:eth:GBX": { "address": "0x12fCd6463E66974cF7bBC24FFC4d40d6bE458283", "links": { - "Homepage": "https://www.globitexico.com" + "Homepage": "https://www.globitexico.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Globitex", "network": "eth", "shortcut": "GBX", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3953,13 +4056,15 @@ "address": "0xdb0F69306FF8F949f258E83f6b87ee5D052d0b23", "links": { "Github": "https://github.com/Globcoin", - "Homepage": "https://globcoin.io/" + "Homepage": "https://globcoin.io/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Globcoin Crypto Platform", "network": "eth", "shortcut": "GCP", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3998,13 +4103,15 @@ "address": "0x543Ff227F64Aa17eA132Bf9886cAb5DB55DCAddf", "links": { "Github": "https://github.com/daostack", - "Homepage": "https://daostack.io" + "Homepage": "https://daostack.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "DAOstack", "network": "eth", "shortcut": "GEN", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4012,26 +4119,30 @@ "address": "0x8a854288a5976036A725879164Ca3e91d30c6A1B", "links": { "Github": "https://github.com/Getprotocol", - "Homepage": "http://www.get-protocol.io" + "Homepage": "http://www.get-protocol.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "GET", "network": "eth", "shortcut": "GET", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:GIF": { "address": "0xFcD862985628b254061F7A918035B80340D045d3", "links": { - "Homepage": "https://gifcoin.io/" + "Homepage": "https://gifcoin.io/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "GIFcoin Token", "network": "eth", "shortcut": "GIF", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4089,7 +4200,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 414623359, + "marketcap_usd": 390462453, "name": "Golem", "network": "eth", "shortcut": "GNT", @@ -4120,7 +4231,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 15995972, + "marketcap_usd": 15392475, "name": "GRID", "network": "eth", "shortcut": "GRID", @@ -4132,13 +4243,15 @@ "address": "0x0a9A9ce600D08BF9b76F49FA4e7b38A67EBEB1E6", "links": { "Github": "https://github.com/growchainnet", - "Homepage": "http://www.growchain.us" + "Homepage": "http://www.growchain.us", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Growchain", "network": "eth", "shortcut": "GROW", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4176,13 +4289,15 @@ "address": "0xC5bBaE50781Be1669306b9e001EFF57a2957b09d", "links": { "Github": "https://github.com/GIFTO-io", - "Homepage": "https://gifto.io/" + "Homepage": "https://gifto.io/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Gifto", "network": "eth", "shortcut": "GTO", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4279,13 +4394,15 @@ "address": "0xF244176246168F24e3187f7288EdbCA29267739b", "links": { "Github": "https://github.com/havven/havven", - "Homepage": "https://havven.io" + "Homepage": "https://havven.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Havven", "network": "eth", "shortcut": "HAV", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4353,13 +4470,15 @@ "address": "0x88aC94D5d175130347Fc95E109d77AC09dbF5ab7", "links": { "Github": "https://github.com/HickyToken/hickycontracts", - "Homepage": "https://hicky.io" + "Homepage": "https://hicky.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Hicky", "network": "eth", "shortcut": "HKY", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4397,13 +4516,15 @@ "address": "0x5B0751713b2527d7f002c0c4e2a37e1219610A6B", "links": { "Github": "https://github.com/ethorse", - "Homepage": "https://ethorse.com" + "Homepage": "https://ethorse.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "HORSE", "network": "eth", "shortcut": "HORSE", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4411,13 +4532,15 @@ "address": "0x6c6EE5e31d828De241282B9606C8e98Ea48526E2", "links": { "Github": "https://github.com/Holo-Host", - "Homepage": "https://holo.host/" + "Homepage": "https://holo.host/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Hydro Protocol", "network": "eth", "shortcut": "HOT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4533,7 +4656,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 10733272, + "marketcap_usd": 9983778, "name": "ICOS", "network": "eth", "shortcut": "ICOS", @@ -4661,12 +4784,15 @@ }, "erc20:eth:INRM": { "address": "0x48e5413b73add2434e47504E2a22d14940dBFe78", - "links": {}, + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, "marketcap_usd": 0, "name": "Integrated Money", "network": "eth", "shortcut": "INRM", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4688,13 +4814,15 @@ "erc20:eth:INSTAR": { "address": "0xc72fe8e3Dd5BeF0F9f31f259399F301272eF2a2D", "links": { - "Homepage": "https://insights.network" + "Homepage": "https://insights.network", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Insights Network", "network": "eth", "shortcut": "INSTAR", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4716,13 +4844,15 @@ "erc20:eth:IOST": { "address": "0xFA1a856Cfa3409CFa145Fa4e20Eb270dF3EB21ab", "links": { - "Homepage": "https://iost.io/" + "Homepage": "https://iost.io/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "IOSToken", "network": "eth", "shortcut": "IOST", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4745,13 +4875,15 @@ "erc20:eth:IPSX": { "address": "0x001F0aA5dA15585e5b2305DbaB2bac425ea71007", "links": { - "Homepage": "https://ip.sx" + "Homepage": "https://ip.sx", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "IPSX", "network": "eth", "shortcut": "IPSX", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4881,13 +5013,15 @@ "erc20:eth:JOY": { "address": "0xDDe12a12A6f67156e0DA672be05c374e1B0a3e57", "links": { - "Homepage": "https://joyso.io/" + "Homepage": "https://joyso.io/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "JOYSO", "network": "eth", "shortcut": "JOY", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4908,13 +5042,15 @@ "erc20:eth:KC": { "address": "0x0D6DD9f68d24EC1d5fE2174f3EC8DAB52B52BaF5", "links": { - "Homepage": "https://www.kmcc.io" + "Homepage": "https://www.kmcc.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "KMCC", "network": "eth", "shortcut": "KC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4971,7 +5107,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 155062756, + "marketcap_usd": 143043073, "name": "Kin Foundation", "network": "eth", "shortcut": "KIN", @@ -4999,13 +5135,15 @@ "address": "0xb5C33F965C8899D255c34CDD2A3efA8AbCbB3DeA", "links": { "Github": "https://github.com/KPRToken/KPR-code-for-ICO", - "Homepage": "https://www.kprms.com/" + "Homepage": "https://www.kprms.com/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "KPRCoin", "network": "eth", "shortcut": "KPR", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5013,13 +5151,15 @@ "address": "0x464eBE77c293E473B48cFe96dDCf88fcF7bFDAC0", "links": { "Github": "https://github.com/Cryptense/", - "Homepage": "https://kryll.io/" + "Homepage": "https://kryll.io/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Kryll", "network": "eth", "shortcut": "KRL", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5072,13 +5212,15 @@ "erc20:eth:LDC": { "address": "0x5102791cA02FC3595398400BFE0e33d7B6C82267", "links": { - "Homepage": "https://www.leadcoin.network/" + "Homepage": "https://www.leadcoin.network/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "LEADCOIN", "network": "eth", "shortcut": "LDC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5115,13 +5257,15 @@ "erc20:eth:LGO": { "address": "0x123aB195DD38B1b40510d467a6a359b201af056f", "links": { - "Homepage": "https://legolas.exchange/" + "Homepage": "https://legolas.exchange/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "LGO", "network": "eth", "shortcut": "LGO", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5163,7 +5307,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 7090655, + "marketcap_usd": 5844747, "name": "LIFE", "network": "eth", "shortcut": "LIFE", @@ -5253,13 +5397,15 @@ "address": "0x0947b0e6D821378805c9598291385CE7c791A6B2", "links": { "Github": "https://github.com/lendingblock", - "Homepage": "https://lendingblock.com" + "Homepage": "https://lendingblock.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Lendingblock", "network": "eth", "shortcut": "LND", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5297,13 +5443,15 @@ "erc20:eth:LOCUS": { "address": "0xC64500DD7B0f1794807e67802F8Abbf5F8Ffb054", "links": { - "Homepage": "https://www.locuschain.com" + "Homepage": "https://www.locuschain.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Locus Chain", "network": "eth", "shortcut": "LOCUS", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5326,13 +5474,15 @@ "address": "0xA4e8C3Ec456107eA67d3075bF9e3DF3A75823DB0", "links": { "Github": "github.com/loomnetwork/", - "Homepage": "https://loomx.io" + "Homepage": "https://loomx.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "LOOM", "network": "eth", "shortcut": "LOOM", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5340,13 +5490,15 @@ "address": "0x58b6A8A3302369DAEc383334672404Ee733aB239", "links": { "Github": "https://github.com/livepeer", - "Homepage": "https://livepeer.org/" + "Homepage": "https://livepeer.org/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Livepeer Token", "network": "eth", "shortcut": "LPT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5369,7 +5521,9 @@ "address": "0x5dbe296F97B23C4A6AA6183D73e574D02bA5c719", "links": { "Github": "https://github.com/Play2Live/blockchain", - "Homepage": "https://play2live.io" + "Homepage": "https://play2live.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "LUCToken", @@ -5427,13 +5581,15 @@ "address": "0xdD41fBd1Ae95C5D9B198174A28e04Be6b3d1aa27", "links": { "Github": "https://github.com/LIGHTYEARS-LYS/LIGHTYEARS-Token", - "Homepage": "https://lightyearstoken.com" + "Homepage": "https://lightyearstoken.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Lightyears", "network": "eth", "shortcut": "LYS", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5454,18 +5610,24 @@ }, "erc20:eth:MAD": { "address": "0x5B09A0371C1DA44A8E24D36Bf5DEb1141a84d875", - "links": {}, + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, "marketcap_usd": 0, "name": "MAD", "network": "eth", "shortcut": "MAD", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:MAN": { "address": "0xe25bCec5D3801cE3a794079BF94adF1B8cCD802D", - "links": {}, + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, "marketcap_usd": 0, "name": "MAN", "network": "eth", @@ -5493,7 +5655,9 @@ "erc20:eth:MART": { "address": "0xfdcc07Ab60660de533b5Ad26e1457b565a9D59Bd", "links": { - "Homepage": "https://martcoin.io" + "Homepage": "https://martcoin.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Martcoin", @@ -5525,7 +5689,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 835843, + "marketcap_usd": 713532, "name": "MCAP", "network": "eth", "shortcut": "MCAP", @@ -5581,13 +5745,15 @@ "address": "0x01F2AcF2914860331C1Cb1a9AcecDa7475e06Af8", "links": { "Github": "https://github.com/MeshBox", - "Homepage": "https://meshbox.network" + "Homepage": "https://meshbox.network", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Meshbox", "network": "eth", "shortcut": "MESH", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5611,13 +5777,15 @@ "address": "0x6710c63432A2De02954fc0f851db07146a6c0312", "links": { "Github": "https://github.com/syncfab", - "Homepage": "https://syncfab.com/" + "Homepage": "https://syncfab.com/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "SyncFab Smart Manufacturing Blockchain", "network": "eth", "shortcut": "MFG", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5652,13 +5820,15 @@ "erc20:eth:MIT (Mychatcoin)": { "address": "0xAd8DD4c725dE1D31b9E8F8D146089e9DC6882093", "links": { - "Homepage": "https://mychatcoin.com" + "Homepage": "https://mychatcoin.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Mychatcoin", "network": "eth", "shortcut": "MIT (Mychatcoin)", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5759,13 +5929,15 @@ "address": "0x82125AFe01819Dff1535D0D6276d57045291B6c0", "links": { "Github": "https://github.com/MarceloMRL", - "Homepage": "https://moneyrebel.io/" + "Homepage": "https://moneyrebel.io/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Marcelo", "network": "eth", "shortcut": "MRL", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5907,13 +6079,15 @@ "erc20:eth:MUXE": { "address": "0x515669d308f887Fd83a471C7764F5d084886D34D", "links": { - "Homepage": "https://www.muxe.io" + "Homepage": "https://www.muxe.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "MUXE", "network": "eth", "shortcut": "MUXE", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5921,13 +6095,15 @@ "address": "0x8a77e40936BbC27e80E9a3F526368C967869c86D", "links": { "Github": "https://github.com/Merculet", - "Homepage": "https://www.merculet.io" + "Homepage": "https://www.merculet.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Merculet", "network": "eth", "shortcut": "MVP", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5978,13 +6154,15 @@ "erc20:eth:NAC": { "address": "0x8d80de8A78198396329dfA769aD54d24bF90E7aa", "links": { - "Homepage": "https://nami.trade" + "Homepage": "https://nami.trade", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Nami ICO", "network": "eth", "shortcut": "NAC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5992,13 +6170,15 @@ "address": "0x588047365dF5BA589F923604AAC23d673555c623", "links": { "Github": "https://github.com/naviworld", - "Homepage": "https://naviaddress.com" + "Homepage": "https://naviaddress.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "NaviToken", "network": "eth", "shortcut": "NAVI", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6006,13 +6186,15 @@ "address": "0x17f8aFB63DfcDcC90ebE6e84F060Cc306A98257D", "links": { "Github": "https://github.com/nebulaai", - "Homepage": "https://tokensale.nebula-ai.network" + "Homepage": "https://tokensale.nebula-ai.network", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "NebulaAiToken", "network": "eth", "shortcut": "NBAI", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6051,13 +6233,15 @@ "address": "0xCc80C051057B774cD75067Dc48f8987C4Eb97A5e", "links": { "Github": "https://github.com/ethfinex/", - "Homepage": "https://nectar.community" + "Homepage": "https://nectar.community", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Ethfinex Nectar Token", "network": "eth", "shortcut": "NEC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6156,13 +6340,15 @@ "address": "0x4cE6B362Bc77A24966Dda9078f9cEF81b3B886a7", "links": { "Github": "https://github.com/NperProject", - "Homepage": "https://nper.io" + "Homepage": "https://nper.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 13280024, + "marketcap_usd": 12076174, "name": "NPER", "network": "eth", "shortcut": "NPER", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6170,13 +6356,15 @@ "address": "0xA15C7Ebe1f07CaF6bFF097D8a589fb8AC49Ae5B3", "links": { "Github": "https://github.com/pundix", - "Homepage": "https://pundix.com" + "Homepage": "https://pundix.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Pundi X Token", "network": "eth", "shortcut": "NPXS", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6187,7 +6375,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 157247200, + "marketcap_usd": 140896400, "name": "NULS", "network": "eth", "shortcut": "NULS", @@ -6247,7 +6435,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 14905688, + "marketcap_usd": 13106397, "name": "OAX", "network": "eth", "shortcut": "OAX", @@ -6336,13 +6524,15 @@ "address": "0x69c4BB240cF05D51eeab6985Bab35527d04a8C64", "links": { "Github": "https://github.com/OpenMoneyDigital", - "Homepage": "https://openfuture.io" + "Homepage": "https://openfuture.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "OPEN", "network": "eth", "shortcut": "OPEN", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6369,7 +6559,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 50942482, + "marketcap_usd": 45473798, "name": "Simple Token 'OST'", "network": "eth", "shortcut": "OST", @@ -6397,13 +6587,15 @@ "address": "0xfeDAE5642668f8636A11987Ff386bfd215F942EE", "links": { "Github": "https://github.com/policypalnet", - "Homepage": "https://www.policypal.network" + "Homepage": "https://www.policypal.network", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "PolicyPal Network", "network": "eth", "shortcut": "PAL", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6442,13 +6634,15 @@ "address": "0xF813F3902bBc00A6DCe378634d3B79D84F9803d7", "links": { "Github": "https://github.com/path-network-token", - "Homepage": "https://path.network" + "Homepage": "https://path.network", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "PATH", "network": "eth", "shortcut": "PATH", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6484,13 +6678,15 @@ "erc20:eth:PBT": { "address": "0xF4c07b1865bC326A3c01339492Ca7538FD038Cc0", "links": { - "Homepage": "http://primalbase.com/" + "Homepage": "http://primalbase.com/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Primalbase Token (PBT)", "network": "eth", "shortcut": "PBT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6878,13 +7074,15 @@ "erc20:eth:PRON": { "address": "0xA3149E0fA0061A9007fAf307074cdCd290f0e2Fd", "links": { - "Homepage": "https://proncoin.io" + "Homepage": "https://proncoin.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "PronCoin", "network": "eth", "shortcut": "PRON", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6955,13 +7153,15 @@ "address": "0x2a8E98e256f32259b5E5Cb55Dd63C8e891950666", "links": { "Github": "https://github.com/ParrotCoin", - "Homepage": "http://parrotcoin.club" + "Homepage": "http://parrotcoin.club", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "ParrotCoin", "network": "eth", "shortcut": "PTC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7029,13 +7229,15 @@ "erc20:eth:QASH": { "address": "0x618E75Ac90b12c6049Ba3b27f5d5F8651b0037F6", "links": { - "Homepage": "https://liquid.plus" + "Homepage": "https://liquid.plus", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 179982950, + "marketcap_usd": 172346650, "name": "QASH", "network": "eth", "shortcut": "QASH", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7058,13 +7260,15 @@ "address": "0x2467AA6B5A2351416fD4C3DeF8462d841feeecEC", "links": { "Github": "https://github.com/qiibee", - "Homepage": "https://www.qiibee.com" + "Homepage": "https://www.qiibee.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "qiibeeToken", "network": "eth", "shortcut": "QBX", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7122,7 +7326,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 1270631901, + "marketcap_usd": 1202286810, "name": "Qtum", "network": "eth", "shortcut": "QTUM", @@ -7134,19 +7338,24 @@ "address": "0xFc2C4D8f95002C14eD0a7aA65102Cac9e5953b5E", "links": { "Github": "https://github.com/rublixdev", - "Homepage": "https://rublix.io/" + "Homepage": "https://rublix.io/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Rublix", "network": "eth", "shortcut": "RBLX", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:RCN": { "address": "0xF970b8E36e23F7fC3FD752EeA86f8Be8D83375A6", - "links": {}, + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, "marketcap_usd": 0, "name": "Ripio Credit Network", "network": "eth", @@ -7208,7 +7417,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 12748276, + "marketcap_usd": 12237520, "name": "Rebellious", "network": "eth", "shortcut": "REBL", @@ -7279,13 +7488,15 @@ "erc20:eth:RFR": { "address": "0xd0929d411954c47438dc1d871dd6081F5C5e149c", "links": { - "Homepage": "https://refereum.com" + "Homepage": "https://refereum.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Refereum", "network": "eth", "shortcut": "RFR", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7312,7 +7523,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 153929694, + "marketcap_usd": 133381127, "name": "IEx.ec", "network": "eth", "shortcut": "RLC", @@ -7383,13 +7594,15 @@ "address": "0xA40106134c5bF4c41411554e6db99B95A15ed9d8", "links": { "Github": "https://github.com/rocketico", - "Homepage": "https://rocketico.io" + "Homepage": "https://rocketico.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 47436645, + "marketcap_usd": 43552219, "name": "Rocket Token", "network": "eth", "shortcut": "ROCK", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7520,7 +7733,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 132490424, + "marketcap_usd": 124346229, "name": "Salt Lending Token", "network": "eth", "shortcut": "SALT", @@ -7580,7 +7793,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 2405611, + "marketcap_usd": 2361249, "name": "Sensay", "network": "eth", "shortcut": "SENSE", @@ -7682,13 +7895,15 @@ "address": "0x6888a16eA9792c15A4DCF2f6C623D055c8eDe792", "links": { "Github": "https://github.com/SpectivOfficial", - "Homepage": "https://spectivvr.com" + "Homepage": "https://spectivvr.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Signal", "network": "eth", "shortcut": "SIG", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7997,13 +8212,15 @@ "erc20:eth:SPN": { "address": "0x20F7A3DdF244dc9299975b4Da1C39F8D5D75f05A", "links": { - "Homepage": "https://www.sapien.network/" + "Homepage": "https://www.sapien.network/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Sapien", "network": "eth", "shortcut": "SPN", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8041,12 +8258,15 @@ }, "erc20:eth:SSH": { "address": "0x6e2050CBFB3eD8A4d39b64cC9f47E711a03a5a89", - "links": {}, + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, "marketcap_usd": 0, "name": "StreamShares", "network": "eth", "shortcut": "SSH", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8103,7 +8323,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 20700203, + "marketcap_usd": 19248500, "name": "STK Token", "network": "eth", "shortcut": "STK", @@ -8132,7 +8352,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 106451456, + "marketcap_usd": 101352634, "name": "STORJ", "network": "eth", "shortcut": "STORJ", @@ -8147,7 +8367,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 156048954, + "marketcap_usd": 143008708, "name": "Storm Token", "network": "eth", "shortcut": "STORM", @@ -8390,24 +8610,29 @@ "erc20:eth:THETA": { "address": "0x3883f5e181fccaF8410FA61e12b59BAd963fb645", "links": { - "Homepage": "https://www.thetatoken.org/" + "Homepage": "https://www.thetatoken.org/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Theta Token", "network": "eth", "shortcut": "THETA", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:THUG": { "address": "0xfe7B915A0bAA0E79f85c5553266513F7C1c03Ed0", - "links": {}, + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, "marketcap_usd": 0, "name": "THUG", "network": "eth", "shortcut": "THUG", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8584,7 +8809,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 29980378, + "marketcap_usd": 27764014, "name": "Token-as-a-Service", "network": "eth", "shortcut": "TaaS", @@ -8612,13 +8837,15 @@ "address": "0x105d97ef2E723f1cfb24519Bc6fF15a6D091a3F1", "links": { "Github": "https://github.com/UMKAman", - "Homepage": "https://umka.city" + "Homepage": "https://umka.city", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "UMKA", "network": "eth", "shortcut": "UMKA", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8639,12 +8866,15 @@ }, "erc20:eth:USDM": { "address": "0xD760ADdFb24D9C01Fe4Bfea7475C5e3636684058", - "links": {}, + "links": { + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, "marketcap_usd": 0, "name": "Mether (USDM)", "network": "eth", "shortcut": "USDM", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8712,13 +8942,15 @@ "address": "0x82BD526bDB718C6d4DD2291Ed013A5186cAE2DCa", "links": { "Github": "https://github.com/BlueBikeSolutions", - "Homepage": "https://www.dutyof.care/token-launch/" + "Homepage": "https://www.dutyof.care/token-launch/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Duty of Care Token", "network": "eth", "shortcut": "VDOC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8818,13 +9050,15 @@ "erc20:eth:VIEW": { "address": "0xF03f8D65BaFA598611C3495124093c56e8F638f0", "links": { - "Homepage": "https://view.ly/" + "Homepage": "https://view.ly/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Viewly", "network": "eth", "shortcut": "VIEW", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8832,13 +9066,15 @@ "address": "0x23b75Bc7AaF28e2d6628C3f424B3882F8f072a3c", "links": { "Github": "https://github.com/ViceIndustryToken", - "Homepage": "https://vicetoken.com/" + "Homepage": "https://vicetoken.com/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Vice Industry Token", "network": "eth", "shortcut": "VIT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8862,13 +9098,15 @@ "address": "0x922aC473A3cC241fD3a0049Ed14536452D58D73c", "links": { "Github": "https://github.com/valid-global/", - "Homepage": "https://valid.global/" + "Homepage": "https://valid.global/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "VLD", "network": "eth", "shortcut": "VLD", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8876,13 +9114,15 @@ "address": "0xc3bC9Eb71f75Ec439A6b6C8E8b746fCF5b62F703", "links": { "Github": "https://github.com/vormacoin", - "Homepage": "https://vormacoin.io/" + "Homepage": "https://vormacoin.io/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "VORMACOIN", "network": "eth", "shortcut": "VOC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8939,7 +9179,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 126817543, + "marketcap_usd": 116718928, "name": "WAX", "network": "eth", "shortcut": "WAX", @@ -8966,13 +9206,15 @@ "address": "0x8F936fE0faF0604c9C0Ef2406bde0A65365515d6", "links": { "Github": "https://github.com/WorldCoinNetwork", - "Homepage": "https://worldcoin.cash/" + "Homepage": "https://worldcoin.cash/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "WorldCoinNetwork", "network": "eth", "shortcut": "WCN", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9010,13 +9252,15 @@ "address": "0xF4FE95603881D0e07954fD7605E0e9a916e42C44", "links": { "Github": "https://github.com/WhenHub", - "Homepage": "https://interface.whenhub.com" + "Homepage": "https://interface.whenhub.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "WHEN Token", "network": "eth", "shortcut": "WHEN", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9075,7 +9319,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 37710782, + "marketcap_usd": 34315590, "name": "WINGS", "network": "eth", "shortcut": "WINGS", @@ -9167,7 +9411,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 34889717, + "marketcap_usd": 32886813, "name": "WaBi", "network": "eth", "shortcut": "WaBi", @@ -9224,13 +9468,15 @@ "address": "0x28dee01D53FED0Edf5f6E310BF8Ef9311513Ae40", "links": { "Github": "https://github.com/blitzpredict", - "Homepage": "https://www.blitzpredict.io" + "Homepage": "https://www.blitzpredict.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "BlitzPredict", "network": "eth", "shortcut": "XBP", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9254,13 +9500,15 @@ "address": "0xf6b6AA0Ef0f5Edc2C1c5d925477F97eAF66303e7", "links": { "Github": "https://github.com/GoingGems", - "Homepage": "https://www.going-gems.com" + "Homepage": "https://www.going-gems.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Going Gems", "network": "eth", "shortcut": "XGG", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9313,13 +9561,15 @@ "address": "0xBC86727E770de68B1060C91f6BB6945c73e10388", "links": { "Github": "https://github.com/InkProtocol/", - "Homepage": "https://paywithink.com" + "Homepage": "https://paywithink.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Ink Protocol", "network": "eth", "shortcut": "XNK", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9385,13 +9635,15 @@ "erc20:eth:YEED": { "address": "0x6F7A4bac3315B5082F793161a22e26666d22717f", "links": { - "Homepage": "https://yggdrash.io" + "Homepage": "https://yggdrash.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "YEED", "network": "eth", "shortcut": "YEED", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9417,7 +9669,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 13021651, + "marketcap_usd": 11210245, "name": "ZAP", "network": "eth", "shortcut": "ZAP", @@ -9428,13 +9680,15 @@ "erc20:eth:ZCS": { "address": "0x7A41e0517a5ecA4FdbC7FbebA4D4c47B9fF6DC63", "links": { - "Homepage": "https://zsc.io/" + "Homepage": "https://zsc.io/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Zeusshield", "network": "eth", "shortcut": "ZCS", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9457,13 +9711,15 @@ "erc20:eth:ZMN": { "address": "0x554FFc77F4251a9fB3c0E3590a6a205f8d4e067D", "links": { - "Homepage": "https://www.zmine.com" + "Homepage": "https://www.zmine.com", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "ZMINE", "network": "eth", "shortcut": "ZMN", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9562,13 +9818,15 @@ "address": "0x523630976eB6147621B5c31c781eBe2Ec2a806E0", "links": { "Github": "https://github.com/havven/havven", - "Homepage": "https://havven.io" + "Homepage": "https://havven.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, "name": "Ether-Backed USD Nomins (erc20)", "network": "eth", "shortcut": "eUSD", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9576,13 +9834,15 @@ "address": "0x7e9e431a0B8c4D532C745B1043c7FA29a48D4fBa", "links": { "Github": "https://github.com/eosdac", - "Homepage": "https://eosdac.io/" + "Homepage": "https://eosdac.io/", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 119033063, + "marketcap_usd": 114584198, "name": "eosDAC", "network": "eth", "shortcut": "eosDAC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9602,79 +9862,6 @@ "t2_enabled": "yes", "type": "erc20" }, - "erc20:kov:Aeternity": { - "address": "0x8667559254241ddeD4d11392f868d72092765367", - "links": { - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - }, - "marketcap_usd": 0, - "name": "Aeternity", - "network": "kov", - "shortcut": "Aeternity", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20" - }, - "erc20:kov:GUP": { - "address": "0x3C67f7D4decF7795225f51b54134F81137385f83", - "links": { - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - }, - "marketcap_usd": 0, - "name": "GUP", - "network": "kov", - "shortcut": "GUP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20" - }, - "erc20:rin:AETH": { - "address": "0x398A7A69f3c59181A1ffe34bed11DCb5DF863A8a", - "links": { - "Homepage": "http://akasha.world", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - }, - "marketcap_usd": 0, - "name": "AKASHA Tokens", - "network": "rin", - "shortcut": "AETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20" - }, - "erc20:rin:BHNT": { - "address": "0xe27826eE778B6F78a49a686dA7D64f6E7b084a4f", - "links": { - "Homepage": "http://berlin.hackandtell.org", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - }, - "marketcap_usd": 0, - "name": "Berlin Hack&Tell winner token", - "network": "rin", - "shortcut": "BHNT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20" - }, - "erc20:rin:WALL": { - "address": "0x0A057a87CE9C56D7e336B417c79cf30E8d27860B", - "links": { - "Homepage": "http://walleth.org", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - }, - "marketcap_usd": 0, - "name": "WALLETH Community-Token", - "network": "rin", - "shortcut": "WALL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20" - }, "erc20:ubq:BEER": { "address": "0xFF3bF057ADF3b0E015b6465331a6236e55688274", "links": { @@ -9723,7 +9910,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 4507832, + "marketcap_usd": 4216460, "name": "QWARK", "network": "ubq", "shortcut": "QWARK", @@ -9762,7 +9949,7 @@ "Homepage": "https://www.dimcoin.io", "Nano Wallet": "https://nem.io/downloads/" }, - "marketcap_usd": 17968307, + "marketcap_usd": 14998650, "name": "DIMCOIN", "shortcut": "DIM", "t1_enabled": "yes", @@ -9775,7 +9962,7 @@ "Homepage": "https://www.dimcoin.io", "Nano Wallet": "https://nem.io/downloads/" }, - "marketcap_usd": 17968307, + "marketcap_usd": 14998650, "name": "DIM TOKEN", "shortcut": "DIMTOK", "t1_enabled": "yes", @@ -9811,7 +9998,7 @@ "Homepage": "https://nem.io", "Nano Wallet": "https://nem.io/downloads/" }, - "marketcap_usd": 2565009000, + "marketcap_usd": 2377260000, "name": "NEM", "shortcut": "XEM", "t1_enabled": "yes", @@ -9820,11 +10007,11 @@ } }, "info": { - "marketcap_usd": 246249222006, - "t1_coins": 663, - "t2_coins": 663, - "total_marketcap_usd": 346115620704, - "updated_at": 1527086460, - "updated_at_readable": "Wed May 23 16:41:00 2018" + "marketcap_usd": 233901699216, + "t1_coins": 533, + "t2_coins": 651, + "total_marketcap_usd": 329998812276, + "updated_at": 1527171333, + "updated_at_readable": "Thu May 24 16:15:33 2018" } -} \ No newline at end of file +} From 46268d655dbe1b6c5003d0e192bf7a5389afe4ea Mon Sep 17 00:00:00 2001 From: slush Date: Thu, 24 May 2018 16:25:44 +0200 Subject: [PATCH 329/767] Added filtering erc20 by released firmwares. --- coins_details.py | 41 +++++++++++++++++++++++++++++++++++------ 1 file changed, 35 insertions(+), 6 deletions(-) diff --git a/coins_details.py b/coins_details.py index 1814a3941..e446697e4 100755 --- a/coins_details.py +++ b/coins_details.py @@ -67,8 +67,8 @@ def set_default(obj, key, default_value): def update_info(details): details['info']['updated_at'] = int(time.time()) details['info']['updated_at_readable'] = time.asctime() - details['info']['t1_coins'] = len([True for _, c in details['coins'].items() if c['t1_enabled'] == 'yes']) - details['info']['t2_coins'] = len([True for _, c in details['coins'].items() if c['t2_enabled'] == 'yes']) + details['info']['t1_coins'] = len([True for _, c in details['coins'].items() if c['t1_enabled'] == 'yes' and not c.get('hidden', False)]) + details['info']['t2_coins'] = len([True for _, c in details['coins'].items() if c['t2_enabled'] == 'yes' and not c.get('hidden', False)]) try: details['info']['total_marketcap_usd'] = int(coinmarketcap_global()['data']['quotes']['USD']['total_market_cap']) @@ -121,7 +121,13 @@ def update_erc20(details): 'etc', ] + LATEST_T1 = 'https://raw.githubusercontent.com/trezor/trezor-mcu/v1.6.1/firmware/ethereum_tokens.c' + LATEST_T2 = 'https://raw.githubusercontent.com/trezor/trezor-core/v2.0.6/src/apps/ethereum/tokens.py' + tokens = ethereum_tokens_gen.get_tokens() + tokens_t1 = requests.get(LATEST_T1).text + tokens_t2 = requests.get(LATEST_T2).text + supported = [] for t in tokens: print('Updating', t['symbol']) @@ -139,10 +145,23 @@ def update_erc20(details): set_default(out, 'shortcut', t['symbol']) set_default(out, 'name', t['name']) - set_default(out, 't1_enabled', 'yes') - set_default(out, 't2_enabled', 'yes') + #set_default(out, 't1_enabled', 'yes') + #set_default(out, 't2_enabled', 'yes') set_default(out, 'links', {}) + if t['symbol'] in tokens_t1: + out['t1_enabled'] = 'yes' + else: + out['t1_enabled'] = 'soon' + + if t['symbol'] in tokens_t2: + out['t1_enabled'] = 'yes' + else: + out['t1_enabled'] = 'soon' + + out['links']['MyCrypto Wallet'] = 'https://mycrypto.com' + out['links']['MyEtherWallet'] = 'https://www.myetherwallet.com' + if t['website']: out['links']['Homepage'] = t['website'] if t.get('social', {}).get('github', None): @@ -232,18 +251,28 @@ def check_missing_details(details): for k in details['coins'].keys(): coin = details['coins'][k] + if coin.get('hidden'): + continue + if 'links' not in coin: print("%s: Missing links" % k) continue if 'Homepage' not in coin['links']: print("%s: Missing homepage" % k) - if coin['t1_enabled'] not in ('yes', 'no', 'planned', 'in progress'): + if coin['t1_enabled'] not in ('yes', 'no', 'planned', 'soon'): print("%s: Unknown t1_enabled" % k) - if coin['t2_enabled'] not in ('yes', 'no', 'planned', 'in progress'): + if coin['t2_enabled'] not in ('yes', 'no', 'planned', 'soon'): print("%s: Unknown t2_enabled" % k) if 'TREZOR Wallet' in coin['links'] and coin['links']['TREZOR Wallet'] != 'https://wallet.trezor.io': print("%s: Strange URL for TREZOR Wallet" % k) + for w in [ x.lower() for x in coin['links'].keys() ]: + if 'wallet' in w: + break + else: + if coin['t1_enabled'] == 'yes' or coin['t2_enabled'] == 'yes': + print("%s: Missing wallet" % k) + if __name__ == '__main__': try: details = json.load(open('coins_details.json', 'r')) From 5eadbddce920ca31e5162bddc5d24162d1d111a4 Mon Sep 17 00:00:00 2001 From: slush Date: Fri, 25 May 2018 11:29:37 +0200 Subject: [PATCH 330/767] Better categorizing of erc20 in coins_details. --- coins_details.py | 43 ++++++++++++++++++++++++++++-------------- ethereum_tokens_gen.py | 2 +- 2 files changed, 30 insertions(+), 15 deletions(-) diff --git a/coins_details.py b/coins_details.py index e446697e4..9d3f899e8 100755 --- a/coins_details.py +++ b/coins_details.py @@ -34,7 +34,6 @@ def coinmarketcap_init(): print("Fetched %d of %d coins" % (len(COINS), total)) time.sleep(1) - # pprint.pprint(COINS) json.dump(COINS, open('coinmarketcap.json', 'w'), sort_keys=True, indent=4) @@ -53,7 +52,8 @@ def update_marketcap(obj, shortcut): try: obj['marketcap_usd'] = int(float(coinmarketcap_info(shortcut)['quotes']['USD']['market_cap'])) except: - print("Marketcap info not found for", shortcut) + pass + # print("Marketcap info not found for", shortcut) def coinmarketcap_global(): url = 'https://api.coinmarketcap.com/v2/global' @@ -67,6 +67,7 @@ def set_default(obj, key, default_value): def update_info(details): details['info']['updated_at'] = int(time.time()) details['info']['updated_at_readable'] = time.asctime() + details['info']['t1_coins'] = len([True for _, c in details['coins'].items() if c['t1_enabled'] == 'yes' and not c.get('hidden', False)]) details['info']['t2_coins'] = len([True for _, c in details['coins'].items() if c['t2_enabled'] == 'yes' and not c.get('hidden', False)]) @@ -130,7 +131,7 @@ def update_erc20(details): supported = [] for t in tokens: - print('Updating', t['symbol']) + # print('Updating', t['symbol']) if t['chain'] not in networks: print('Skipping, %s is disabled' % t['chain']) @@ -145,19 +146,17 @@ def update_erc20(details): set_default(out, 'shortcut', t['symbol']) set_default(out, 'name', t['name']) - #set_default(out, 't1_enabled', 'yes') - #set_default(out, 't2_enabled', 'yes') set_default(out, 'links', {}) - if t['symbol'] in tokens_t1: + if "\" %s\"" % t['symbol'] in tokens_t1: out['t1_enabled'] = 'yes' else: out['t1_enabled'] = 'soon' - if t['symbol'] in tokens_t2: - out['t1_enabled'] = 'yes' + if "'%s'" % t['symbol'] in tokens_t2: + out['t2_enabled'] = 'yes' else: - out['t1_enabled'] = 'soon' + out['t2_enabled'] = 'soon' out['links']['MyCrypto Wallet'] = 'https://mycrypto.com' out['links']['MyEtherWallet'] = 'https://www.myetherwallet.com' @@ -250,28 +249,44 @@ def update_mosaics(details): def check_missing_details(details): for k in details['coins'].keys(): coin = details['coins'][k] - - if coin.get('hidden'): - continue + hide = False if 'links' not in coin: print("%s: Missing links" % k) - continue + hide = True if 'Homepage' not in coin['links']: print("%s: Missing homepage" % k) + hide = True if coin['t1_enabled'] not in ('yes', 'no', 'planned', 'soon'): print("%s: Unknown t1_enabled" % k) + hide = True if coin['t2_enabled'] not in ('yes', 'no', 'planned', 'soon'): print("%s: Unknown t2_enabled" % k) + hide = True if 'TREZOR Wallet' in coin['links'] and coin['links']['TREZOR Wallet'] != 'https://wallet.trezor.io': print("%s: Strange URL for TREZOR Wallet" % k) + hide = True for w in [ x.lower() for x in coin['links'].keys() ]: - if 'wallet' in w: + if 'wallet' in w or 'electrum' in w: break else: if coin['t1_enabled'] == 'yes' or coin['t2_enabled'] == 'yes': print("%s: Missing wallet" % k) + hide = True + else: + print("%s: Missing wallet, but not hiding" % k) + + if hide: + # If any of important detail is missing, hide coin from list + coin['hidden'] = 1 + + if not hide and coin.get('hidden'): + print("%s: Details are OK, but coin is still hidden" % k) + + for k in details['coins'].keys(): + if details['coins'][k].get('hidden') == 1: + print("%s: Coin is hidden" % k) if __name__ == '__main__': try: diff --git a/ethereum_tokens_gen.py b/ethereum_tokens_gen.py index 5ef25d7c1..d1718a8c7 100755 --- a/ethereum_tokens_gen.py +++ b/ethereum_tokens_gen.py @@ -15,7 +15,7 @@ def get_tokens(): if not f.path.endswith('.json'): continue - print('Processing', f.path) + # print('Processing', f.path) data = json.load(open(f.path, 'r')) data['chain'] = s data['chain_id'] = i From e455dd70c7dbe31847af3353814545a6235b4688 Mon Sep 17 00:00:00 2001 From: slush Date: Fri, 25 May 2018 11:30:11 +0200 Subject: [PATCH 331/767] Updated coins_details --- coins_details.json | 1299 ++++++++++++++++++++++++-------------------- 1 file changed, 708 insertions(+), 591 deletions(-) diff --git a/coins_details.json b/coins_details.json index 4b9cd8bb5..b47725ba7 100644 --- a/coins_details.json +++ b/coins_details.json @@ -19,7 +19,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 1564732714, + "marketcap_usd": 1559080683, "name": "Ethereum Classic", "shortcut": "ETC", "t1_enabled": "yes", @@ -32,7 +32,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 58426427451, + "marketcap_usd": 59529131244, "name": "Ethereum", "shortcut": "ETH", "t1_enabled": "yes", @@ -58,7 +58,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 12239260, + "marketcap_usd": 12006970, "name": "Expanse", "shortcut": "EXP", "t1_enabled": "yes", @@ -96,7 +96,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 68228380, + "marketcap_usd": 65739013, "name": "Ubiq", "shortcut": "UBQ", "t1_enabled": "yes", @@ -144,7 +144,7 @@ "Homepage": "https://www.bitcoincash.org/", "TREZOR Wallet": "https://wallet.trezor.io" }, - "marketcap_usd": 17423612642, + "marketcap_usd": 17678633222, "name": "Bitcoin Cash", "shortcut": "BCH", "t1_enabled": "yes", @@ -158,7 +158,7 @@ "Homepage": "https://bitcoin.org", "TREZOR Wallet": "https://wallet.trezor.io" }, - "marketcap_usd": 128658649837, + "marketcap_usd": 127422469449, "name": "Bitcoin", "shortcut": "BTC", "t1_enabled": "yes", @@ -170,7 +170,7 @@ "Homepage": "https://bitcoingold.org", "TREZOR Wallet": "https://wallet.trezor.io" }, - "marketcap_usd": 786560294, + "marketcap_usd": 783345559, "name": "Bitcoin Gold", "shortcut": "BTG", "t1_enabled": "yes", @@ -182,7 +182,7 @@ "Homepage": "https://www.dash.org", "TREZOR Wallet": "https://wallet.trezor.io" }, - "marketcap_usd": 2732645384, + "marketcap_usd": 2690224346, "name": "Dash", "shortcut": "DASH", "t1_enabled": "yes", @@ -190,21 +190,22 @@ "type": "coin" }, "coin:DGB": { + "hidden": 1, "links": { "Homepage": "https://www.digibyte.co" }, - "marketcap_usd": 360007696, + "marketcap_usd": 360349528, "name": "DigiByte", "shortcut": "DGB", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "coin" }, "coin:DOGE": { "links": { "Homepage": "https://dogecoin.com" }, - "marketcap_usd": 389584072, + "marketcap_usd": 397785287, "name": "Dogecoin", "shortcut": "DOGE", "t1_enabled": "soon", @@ -216,11 +217,11 @@ "Electrum-FJC": "http://www.fujicoin.org/downloads.php", "Homepage": "https://www.fujicoin.org" }, - "marketcap_usd": 723541, + "marketcap_usd": 683096, "name": "Fujicoin", "shortcut": "FJC", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "coin" }, "coin:LTC": { @@ -229,7 +230,7 @@ "Homepage": "https://litecoin.org", "TREZOR Wallet": "https://wallet.trezor.io" }, - "marketcap_usd": 6881853713, + "marketcap_usd": 6807028767, "name": "Litecoin", "shortcut": "LTC", "t1_enabled": "yes", @@ -241,18 +242,18 @@ "Electrum-MONA": "https://electrum-mona.org", "Homepage": "https://monacoin.org" }, - "marketcap_usd": 198881587, + "marketcap_usd": 198457711, "name": "Monacoin", "shortcut": "MONA", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "coin" }, "coin:NMC": { "links": { "Homepage": "https://namecoin.org" }, - "marketcap_usd": 26948013, + "marketcap_usd": 26167573, "name": "Namecoin", "shortcut": "NMC", "t1_enabled": "soon", @@ -275,7 +276,7 @@ "links": { "Homepage": "https://vertcoin.org" }, - "marketcap_usd": 81187041, + "marketcap_usd": 82075977, "name": "Vertcoin", "shortcut": "VTC", "t1_enabled": "soon", @@ -287,7 +288,7 @@ "Homepage": "z.cash", "TREZOR Wallet": "https://wallet.trezor.io" }, - "marketcap_usd": 1163096165, + "marketcap_usd": 1142522957, "name": "Zcash", "shortcut": "ZEC", "t1_enabled": "yes", @@ -296,6 +297,7 @@ }, "erc20:etc:BEC": { "address": "0x085fb4f24031EAedbC2B611AA528f22343eB52Db", + "hidden": 1, "links": { "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" @@ -319,7 +321,7 @@ "name": "Smart Billions", "network": "etc", "shortcut": "PLAY", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -334,7 +336,7 @@ "name": "$TEAK", "network": "eth", "shortcut": "$TEAK", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -364,12 +366,13 @@ "name": "1WO", "network": "eth", "shortcut": "1WO", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:2DC": { "address": "0x9fC0583220eB44fAeE9e2dc1E63F39204DDD9090", + "hidden": 1, "links": { "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" @@ -379,7 +382,7 @@ "network": "eth", "shortcut": "2DC", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:300": { @@ -409,7 +412,7 @@ "network": "eth", "shortcut": "A18", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:ABT": { @@ -423,7 +426,7 @@ "name": "ArcBlock Token", "network": "eth", "shortcut": "ABT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -440,7 +443,7 @@ "network": "eth", "shortcut": "ABYSS", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:ACC": { @@ -454,7 +457,7 @@ "name": "Accelerator Network", "network": "eth", "shortcut": "ACC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -470,7 +473,7 @@ "network": "eth", "shortcut": "ADH", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:ADI": { @@ -485,7 +488,7 @@ "name": "Aditus", "network": "eth", "shortcut": "ADI", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -548,7 +551,7 @@ "name": "aeternity", "network": "eth", "shortcut": "AE", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -564,7 +567,7 @@ "name": "SingularityNET", "network": "eth", "shortcut": "AGI", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -576,11 +579,11 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 319084722, + "marketcap_usd": 332396950, "name": "Aion", "network": "eth", "shortcut": "AION", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -595,7 +598,7 @@ "name": "AirToken", "network": "eth", "shortcut": "AIR", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -611,7 +614,7 @@ "name": "Aigang", "network": "eth", "shortcut": "AIX", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -626,7 +629,7 @@ "name": "ALCO", "network": "eth", "shortcut": "ALCO", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -638,11 +641,11 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 7296874, + "marketcap_usd": 6907307, "name": "ALIS Token", "network": "eth", "shortcut": "ALIS", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -657,7 +660,7 @@ "name": "ALTS Token", "network": "eth", "shortcut": "ALTS", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -673,7 +676,7 @@ "name": "Amber Token", "network": "eth", "shortcut": "AMB", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -689,7 +692,7 @@ "name": "AMIS", "network": "eth", "shortcut": "AMIS", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -706,7 +709,7 @@ "network": "eth", "shortcut": "AMN", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:AMO": { @@ -722,7 +725,7 @@ "network": "eth", "shortcut": "AMO", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:AMTC": { @@ -737,12 +740,13 @@ "network": "eth", "shortcut": "AMTC", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:ANT": { "address": "0x960b236A07cf122663c4303350609A66A7B288C0", "links": { + "Homepage": "https://aragon.one/network/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -767,7 +771,7 @@ "network": "eth", "shortcut": "APIS", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:APPC": { @@ -782,7 +786,7 @@ "name": "AppCoins", "network": "eth", "shortcut": "APPC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -803,6 +807,7 @@ }, "erc20:eth:ARC": { "address": "0xAc709FcB44a43c35F0DA4e3163b117A17F3770f5", + "hidden": 1, "links": { "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" @@ -826,7 +831,7 @@ "name": "ArbitrageCT", "network": "eth", "shortcut": "ARCT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -842,7 +847,7 @@ "name": "Accord", "network": "eth", "shortcut": "ARD", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -857,7 +862,7 @@ "name": "Aeron Token", "network": "eth", "shortcut": "ARN", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -872,7 +877,7 @@ "name": "ART", "network": "eth", "shortcut": "ART", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -888,7 +893,7 @@ "name": "ARX", "network": "eth", "shortcut": "ARX", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -905,7 +910,7 @@ "network": "eth", "shortcut": "ARXT", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:AST": { @@ -919,7 +924,7 @@ "name": "Airswap", "network": "eth", "shortcut": "AST", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -949,7 +954,7 @@ "name": "ATL", "network": "eth", "shortcut": "ATL", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -965,7 +970,7 @@ "name": "Atmatrix Token", "network": "eth", "shortcut": "ATT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -980,7 +985,7 @@ "name": "Attention Token", "network": "eth", "shortcut": "ATTN", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1011,7 +1016,7 @@ "name": "AVT", "network": "eth", "shortcut": "AVT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1028,7 +1033,7 @@ "network": "eth", "shortcut": "AX1", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:AXP": { @@ -1042,7 +1047,7 @@ "name": "AXP", "network": "eth", "shortcut": "AXP", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1057,13 +1062,14 @@ "name": "BANX", "network": "eth", "shortcut": "BANX", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:BAT": { "address": "0x0D8775F648430679A709E98d2b0Cb6250d2887EF", "links": { + "Homepage": "https://basicattentiontoken.org/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -1087,13 +1093,15 @@ "name": "Beercoin", "network": "eth", "shortcut": "BCBC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:BCDN": { "address": "0x1e797Ce986C3CFF4472F7D38d5C4aba55DfEFE40", "links": { + "Github": "https://github.com/Blockcdnteam", + "Homepage": "https://www.blockcdn.org/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -1117,7 +1125,7 @@ "name": "Blockchain Certified Data Token", "network": "eth", "shortcut": "BCDT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1132,7 +1140,7 @@ "name": "BCL", "network": "eth", "shortcut": "BCL", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1148,7 +1156,7 @@ "name": "BCPT", "network": "eth", "shortcut": "BCPT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1165,7 +1173,7 @@ "network": "eth", "shortcut": "BCV", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:BDG": { @@ -1180,7 +1188,7 @@ "name": "BitDegree Token", "network": "eth", "shortcut": "BDG", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1196,7 +1204,7 @@ "name": "Bee Token", "network": "eth", "shortcut": "BEE", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1213,12 +1221,14 @@ "network": "eth", "shortcut": "BERRY", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:BET": { "address": "0x8aA33A7899FCC8eA5fBe6A608A109c3893A1B8b2", "links": { + "Github": "https://github.com/daocasino", + "Homepage": "https://dao.casino/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -1243,7 +1253,7 @@ "network": "eth", "shortcut": "BETR", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:BKB": { @@ -1257,7 +1267,7 @@ "name": "BetKing Bankroll Token", "network": "eth", "shortcut": "BKB", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1273,7 +1283,7 @@ "network": "eth", "shortcut": "BKRx", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:BKX": { @@ -1289,7 +1299,7 @@ "network": "eth", "shortcut": "BKX", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:BLT": { @@ -1304,7 +1314,7 @@ "name": "Bloom", "network": "eth", "shortcut": "BLT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1320,13 +1330,14 @@ "name": "Bullion Crypto", "network": "eth", "shortcut": "BLX (Bullion)", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:BLX (Iconomi)": { "address": "0xE5a7c12972f3bbFe70ed29521C8949b8Af6a0970", "links": { + "Homepage": "https://www.iconomi.net/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -1334,7 +1345,7 @@ "name": "Iconomi", "network": "eth", "shortcut": "BLX (Iconomi)", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1350,7 +1361,7 @@ "name": "Blackmoon Crypto BMC Token", "network": "eth", "shortcut": "BMC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1366,7 +1377,7 @@ "name": "BMT", "network": "eth", "shortcut": "BMT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1381,7 +1392,7 @@ "name": "BitMartToken", "network": "eth", "shortcut": "BMX", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1396,13 +1407,14 @@ "name": "BNB", "network": "eth", "shortcut": "BNB", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:BNC": { "address": "0xdD6Bf56CA2ada24c683FAC50E37783e55B57AF9F", "links": { + "Homepage": "https://bravenewcoin.com/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -1416,6 +1428,7 @@ }, "erc20:eth:BNFT": { "address": "0xdA2C424Fc98c741c2d4ef2f42897CEfed897CA75", + "hidden": 1, "links": { "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" @@ -1425,12 +1438,14 @@ "network": "eth", "shortcut": "BNFT", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:BNT": { "address": "0x1F573D6Fb3F13d689FF844B4cE37794d79a7FF1C", "links": { + "Github": "https://github.com/bancorprotocol/", + "Homepage": "https://www.bancor.network/discover", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -1453,7 +1468,7 @@ "name": "Bounty0x Token", "network": "eth", "shortcut": "BNTY", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1469,7 +1484,7 @@ "network": "eth", "shortcut": "BOB", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:BON": { @@ -1483,7 +1498,7 @@ "name": "Bonpay", "network": "eth", "shortcut": "BON", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1498,7 +1513,7 @@ "name": "BlockOptiopns Token", "network": "eth", "shortcut": "BOP", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1513,7 +1528,7 @@ "name": "Boule Coin", "network": "eth", "shortcut": "BOU", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1529,7 +1544,7 @@ "name": "Blockport Token", "network": "eth", "shortcut": "BPT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1551,20 +1566,23 @@ "erc20:eth:BRAT": { "address": "0x9E77D5a1251b6F7D456722A6eaC6D2d5980bd891", "links": { + "Homepage": "http://bro-consortium.io/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 108378, + "marketcap_usd": 71832, "name": "BRAT", "network": "eth", "shortcut": "BRAT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:BRD": { "address": "0x558EC3152e2eb2174905cd19AeA4e34A23DE9aD6", "links": { + "Github": "https://github.com/breadwallet", + "Homepage": "https://token.breadapp.com/en/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -1573,7 +1591,7 @@ "network": "eth", "shortcut": "BRD", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:BSDC": { @@ -1588,7 +1606,7 @@ "name": "BSDC", "network": "eth", "shortcut": "BSDC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1603,7 +1621,7 @@ "name": "BlocksquareToken", "network": "eth", "shortcut": "BST", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1618,7 +1636,7 @@ "name": "EthereumBitcoin", "network": "eth", "shortcut": "BTCE", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1634,7 +1652,7 @@ "name": "BTE", "network": "eth", "shortcut": "BTE", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1649,7 +1667,7 @@ "name": "Bytether", "network": "eth", "shortcut": "BTH", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1666,12 +1684,14 @@ "network": "eth", "shortcut": "BTHR", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:BTK": { "address": "0xdb8646F5b487B5Dd979FAC618350e85018F557d4", "links": { + "Github": "https://github.com/bitcoin-token", + "Homepage": "https://btk.community/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -1680,7 +1700,7 @@ "network": "eth", "shortcut": "BTK", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:BTL (Battle)": { @@ -1695,7 +1715,7 @@ "name": "BTL (Battle)", "network": "eth", "shortcut": "BTL (Battle)", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1710,7 +1730,7 @@ "name": "Bitlle Token", "network": "eth", "shortcut": "BTL (Bitlle)", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1726,7 +1746,7 @@ "name": "Bytom", "network": "eth", "shortcut": "BTM", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1741,7 +1761,7 @@ "name": "Bitcoin Boutique", "network": "eth", "shortcut": "BTQ", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1757,7 +1777,7 @@ "name": "Bitether", "network": "eth", "shortcut": "BTT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1773,11 +1793,12 @@ "network": "eth", "shortcut": "BUC", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:BeerCoin": { "address": "0x74C1E4b8caE59269ec1D85D3D4F324396048F4ac", + "hidden": 1, "links": { "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" @@ -1786,7 +1807,7 @@ "name": "BeerCoin", "network": "eth", "shortcut": "BeerCoin", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1798,11 +1819,11 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 53380562, + "marketcap_usd": 55807655, "name": "Crypto20's Token", "network": "eth", "shortcut": "C20", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1817,7 +1838,7 @@ "name": "Change Bank", "network": "eth", "shortcut": "CAG", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1832,7 +1853,7 @@ "name": "CAN", "network": "eth", "shortcut": "CAN", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1847,7 +1868,7 @@ "name": "Car Sharing Community", "network": "eth", "shortcut": "CAR", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1863,7 +1884,7 @@ "network": "eth", "shortcut": "CARB", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:CARCO": { @@ -1877,7 +1898,7 @@ "name": "CARCO", "network": "eth", "shortcut": "CARCO", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1892,7 +1913,7 @@ "name": "Cashaa", "network": "eth", "shortcut": "CAS", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1907,7 +1928,7 @@ "name": "CAT (BitClave)", "network": "eth", "shortcut": "CAT (BitClave)", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1922,7 +1943,7 @@ "name": "CAT (Blockcat)", "network": "eth", "shortcut": "CAT (Blockcat)", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1937,7 +1958,7 @@ "name": "CATs (BitClave)_Old", "network": "eth", "shortcut": "CATs (BitClave)_Old", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1952,7 +1973,7 @@ "name": "Coal Coin", "network": "eth", "shortcut": "CC3", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1967,7 +1988,7 @@ "name": "CryptoCrashCourse", "network": "eth", "shortcut": "CCC (CryptoCrashCourse)", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1982,7 +2003,7 @@ "name": "CCC (ICONOMI)", "network": "eth", "shortcut": "CCC (ICONOMI)", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -1998,7 +2019,7 @@ "name": "Christ Coin", "network": "eth", "shortcut": "CCLC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2014,7 +2035,7 @@ "name": "CacaoShares", "network": "eth", "shortcut": "CCS", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2030,7 +2051,7 @@ "name": "Confideal", "network": "eth", "shortcut": "CDL", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2045,7 +2066,7 @@ "name": "CoinDash", "network": "eth", "shortcut": "CDT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2060,7 +2081,7 @@ "name": "CDX", "network": "eth", "shortcut": "CDX", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2091,7 +2112,7 @@ "network": "eth", "shortcut": "CHSB", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:CK": { @@ -2105,7 +2126,7 @@ "name": "CK", "network": "eth", "shortcut": "CK", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2122,7 +2143,7 @@ "network": "eth", "shortcut": "CLL", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:CLN": { @@ -2137,7 +2158,7 @@ "name": "ColuLocalNetwork", "network": "eth", "shortcut": "CLN", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2152,7 +2173,7 @@ "name": "CryptoLending", "network": "eth", "shortcut": "CLP", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2167,7 +2188,7 @@ "name": "CMBToken", "network": "eth", "shortcut": "CMBT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2182,7 +2203,7 @@ "name": "CryptoMart", "network": "eth", "shortcut": "CMC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2198,7 +2219,7 @@ "name": "CyberMiles Token", "network": "eth", "shortcut": "CMT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2214,7 +2235,7 @@ "network": "eth", "shortcut": "CNB", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:CND": { @@ -2228,7 +2249,7 @@ "name": "Cindicator", "network": "eth", "shortcut": "CND", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2244,7 +2265,7 @@ "name": "Climatecoin", "network": "eth", "shortcut": "CO2", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2260,7 +2281,7 @@ "name": "Cobinhood Token", "network": "eth", "shortcut": "COB", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2276,7 +2297,7 @@ "name": "CoinFi Token", "network": "eth", "shortcut": "COFI", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2293,7 +2314,7 @@ "network": "eth", "shortcut": "COIL", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:COSS": { @@ -2303,11 +2324,11 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 21540128, + "marketcap_usd": 21645513, "name": "Coss Token", "network": "eth", "shortcut": "COSS", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2323,7 +2344,7 @@ "network": "eth", "shortcut": "COV", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:CPY": { @@ -2338,7 +2359,7 @@ "name": "COPYTRACK", "network": "eth", "shortcut": "CPY", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2354,13 +2375,14 @@ "name": "CR7Coin", "network": "eth", "shortcut": "CR7", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:CRB": { "address": "0xAef38fBFBF932D1AeF3B808Bc8fBd8Cd8E1f8BC5", "links": { + "Homepage": "https://www.creditbit.org/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -2384,7 +2406,7 @@ "name": "CRED", "network": "eth", "shortcut": "CRED", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2395,7 +2417,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 10841500, + "marketcap_usd": 12732962, "name": "Credo / Bitbounce", "network": "eth", "shortcut": "CREDO", @@ -2414,7 +2436,7 @@ "name": "CrypteriumToken", "network": "eth", "shortcut": "CRPT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2429,7 +2451,7 @@ "name": "CreamtoeCoin", "network": "eth", "shortcut": "CRT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2445,7 +2467,7 @@ "name": "CryptoTask", "network": "eth", "shortcut": "CTF", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2462,11 +2484,12 @@ "network": "eth", "shortcut": "CTG", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:CTL": { "address": "0xBf4cFD7d1eDeeEA5f6600827411B41A21eB08abd", + "hidden": 1, "links": { "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" @@ -2490,7 +2513,7 @@ "name": "ChainTrade Token", "network": "eth", "shortcut": "CTT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2505,13 +2528,14 @@ "name": "CarTaxi", "network": "eth", "shortcut": "CTX", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:CVC": { "address": "0x41e5560054824eA6B0732E656E3Ad64E20e94E45", "links": { + "Homepage": "https://www.civic.com/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -2535,7 +2559,7 @@ "name": "CoxxxCoin", "network": "eth", "shortcut": "CXC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2551,21 +2575,22 @@ "name": "CargoX", "network": "eth", "shortcut": "CXO", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:CryptoCarbon": { "address": "0xE4c94d45f7Aef7018a5D66f44aF780ec6023378e", "links": { + "Homepage": "https://ccrb.io/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 467370, + "marketcap_usd": 455872, "name": "CryptoCarbon", "network": "eth", "shortcut": "CryptoCarbon", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2580,7 +2605,7 @@ "name": "DAB", "network": "eth", "shortcut": "DAB", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2591,11 +2616,11 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 14724361, + "marketcap_usd": 14758475, "name": "DADI", "network": "eth", "shortcut": "DADI", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2607,11 +2632,11 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 36311467, + "marketcap_usd": 36443734, "name": "Dai Stablecoin v1.0", "network": "eth", "shortcut": "DAI", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2626,7 +2651,7 @@ "name": "DaleCoin", "network": "eth", "shortcut": "DALC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2642,13 +2667,14 @@ "name": "DaneelToken", "network": "eth", "shortcut": "DAN", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:DAO": { "address": "0xBB9bc244D798123fDe783fCc1C72d3Bb8C189413", "links": { + "Homepage": "https://blog.daohub.org/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -2671,7 +2697,7 @@ "name": "Datum Token", "network": "eth", "shortcut": "DAT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2687,7 +2713,7 @@ "name": "DataBrokerDAO Token", "network": "eth", "shortcut": "DATABroker", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2699,11 +2725,11 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 168147, + "marketcap_usd": 166353, "name": "DATACoin", "network": "eth", "shortcut": "DATACoin", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2719,7 +2745,7 @@ "network": "eth", "shortcut": "DAXT", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:DAY": { @@ -2735,7 +2761,7 @@ "network": "eth", "shortcut": "DAY", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:DCA": { @@ -2750,7 +2776,7 @@ "name": "DoBetAcceptBet", "network": "eth", "shortcut": "DCA", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2765,7 +2791,7 @@ "name": "DCL", "network": "eth", "shortcut": "DCL", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2781,13 +2807,15 @@ "name": "Dentacoin", "network": "eth", "shortcut": "DCN", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:DDF": { "address": "0xcC4eF9EEAF656aC1a2Ab886743E98e97E090ed38", "links": { + "Github": "https://github.com/digitaldevelopersfund/ddf", + "Homepage": "https://www.digitaldevelopersfund.com/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -2810,7 +2838,7 @@ "name": "DEBITUM", "network": "eth", "shortcut": "DEB", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2827,16 +2855,17 @@ "network": "eth", "shortcut": "DEEZ", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:DENT": { "address": "0x3597bfD533a99c9aa083587B074434E61Eb0A258", "links": { + "Homepage": "https://www.dentwireless.com/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 83518956, + "marketcap_usd": 78782331, "name": "DENT", "network": "eth", "shortcut": "DENT", @@ -2856,7 +2885,7 @@ "network": "eth", "shortcut": "DEPO", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:DGD": { @@ -2886,7 +2915,7 @@ "name": "DigiPulse", "network": "eth", "shortcut": "DGPT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2901,7 +2930,7 @@ "name": "DGX", "network": "eth", "shortcut": "DGX", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2931,12 +2960,13 @@ "name": "DIVX", "network": "eth", "shortcut": "DIVX", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:DKP": { "address": "0xBA187B09fFA8DDdc80d2571eD3cbC4Be0Af69E0c", + "hidden": 1, "links": { "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" @@ -2945,7 +2975,7 @@ "name": "Draggin Karma Points", "network": "eth", "shortcut": "DKP", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2960,7 +2990,7 @@ "name": "Agrello", "network": "eth", "shortcut": "DLT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -2976,7 +3006,7 @@ "name": "DMarket Token", "network": "eth", "shortcut": "DMT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3008,7 +3038,7 @@ "name": "DenCity", "network": "eth", "shortcut": "DNX", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3023,7 +3053,7 @@ "name": "DOW", "network": "eth", "shortcut": "DOW", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3038,7 +3068,7 @@ "name": "Digital Assets Power Play", "network": "eth", "shortcut": "DPP", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3054,7 +3084,7 @@ "name": "Dragon", "network": "eth", "shortcut": "DRGN", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3084,7 +3114,7 @@ "name": "Dropil", "network": "eth", "shortcut": "DROP (dropil)", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3114,7 +3144,7 @@ "name": "Digital Safe Coin", "network": "eth", "shortcut": "DSC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3131,7 +3161,7 @@ "network": "eth", "shortcut": "DTH", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:DTR": { @@ -3145,7 +3175,7 @@ "name": "DTR", "network": "eth", "shortcut": "DTR", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3162,7 +3192,7 @@ "network": "eth", "shortcut": "DTT", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:DTX": { @@ -3178,12 +3208,13 @@ "network": "eth", "shortcut": "DTX", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:DTx": { "address": "0x82fdedfB7635441aA5A92791D001fA7388da8025", "links": { + "Homepage": "https://www.digitalticks.com/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -3192,7 +3223,7 @@ "network": "eth", "shortcut": "DTx", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:DUBI": { @@ -3207,7 +3238,7 @@ "name": "Decentralized Universal Basic Income", "network": "eth", "shortcut": "DUBI", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3222,7 +3253,7 @@ "name": "Devcon2 Token", "network": "eth", "shortcut": "Devcon2 Token", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3238,7 +3269,7 @@ "name": "EagleCoin", "network": "eth", "shortcut": "EAGLE", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3268,7 +3299,7 @@ "name": "EtherCO2", "network": "eth", "shortcut": "ECO2", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3284,7 +3315,7 @@ "network": "eth", "shortcut": "EDC", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:EDG": { @@ -3313,7 +3344,7 @@ "name": "Eidoo", "network": "eth", "shortcut": "EDO", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3329,13 +3360,15 @@ "name": "EDU", "network": "eth", "shortcut": "EDU", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:EHT": { "address": "0xf9F0FC7167c311Dd2F1e21E9204F87EBA9012fB2", "links": { + "Github": "https://github.com/team-easyhomes", + "Homepage": "https://easyhomes.io/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -3343,7 +3376,7 @@ "name": "EasyHomes", "network": "eth", "shortcut": "EHT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3359,7 +3392,7 @@ "name": "ELF Token", "network": "eth", "shortcut": "ELF", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3374,7 +3407,7 @@ "name": "Elixir Token", "network": "eth", "shortcut": "ELIX", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3386,11 +3419,11 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 799760, + "marketcap_usd": 803223, "name": "ELTCOIN", "network": "eth", "shortcut": "ELTCOIN", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3406,7 +3439,7 @@ "name": "Etheremon", "network": "eth", "shortcut": "EMON", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3421,7 +3454,7 @@ "name": "Etheremon Token", "network": "eth", "shortcut": "EMONT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3438,7 +3471,7 @@ "network": "eth", "shortcut": "EMT", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:EMV": { @@ -3469,7 +3502,7 @@ "network": "eth", "shortcut": "ENG", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:ENJ": { @@ -3484,7 +3517,7 @@ "name": "ENJIN", "network": "eth", "shortcut": "ENJ", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3500,17 +3533,19 @@ "name": "Hut34 Entropy Token", "network": "eth", "shortcut": "ENTRP", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:EOS": { "address": "0x86Fa049857E0209aa7D9e616F7eb3b3B78ECfdb0", "links": { + "Github": "https://github.com/eosio", + "Homepage": "https://eos.io/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 10155343130, + "marketcap_usd": 10757511883, "name": "EOS", "network": "eth", "shortcut": "EOS", @@ -3531,7 +3566,7 @@ "network": "eth", "shortcut": "EPX", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:ESZ": { @@ -3546,7 +3581,7 @@ "name": "ESZCoin", "network": "eth", "shortcut": "ESZ", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3561,7 +3596,7 @@ "name": "Ethbits", "network": "eth", "shortcut": "ETBS", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3577,7 +3612,7 @@ "network": "eth", "shortcut": "ETCH", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:ETHB": { @@ -3591,13 +3626,15 @@ "name": "EtherBTC", "network": "eth", "shortcut": "ETHB", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:ETR": { "address": "0x6927C69fb4daf2043fbB1Cb7b86c5661416bea29", "links": { + "Github": "https://github.com/pironmind/EthereumRisen", + "Homepage": "http://ethereumrisen.io/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -3605,8 +3642,8 @@ "name": "Etheruem Risen", "network": "eth", "shortcut": "ETR", - "t1_enabled": "yes", - "t2_enabled": "yes", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:EURT": { @@ -3620,7 +3657,7 @@ "name": "EUR Tether (erc20)", "network": "eth", "shortcut": "EURT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3636,7 +3673,7 @@ "name": "EVE", "network": "eth", "shortcut": "EVE", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3652,7 +3689,7 @@ "name": "Envion AG", "network": "eth", "shortcut": "EVN", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3667,7 +3704,7 @@ "name": "EVX Token", "network": "eth", "shortcut": "EVX", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3683,7 +3720,7 @@ "name": "eXMRcoin", "network": "eth", "shortcut": "EXMR", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3699,13 +3736,15 @@ "name": "eRupee", "network": "eth", "shortcut": "E\u20b9", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:FAM": { "address": "0x190e569bE071F40c704e15825F285481CB74B6cC", "links": { + "Github": "https://github.com/BattleDrome", + "Homepage": "http://www.battledrome.io/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -3729,7 +3768,7 @@ "network": "eth", "shortcut": "FANX", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:FKX": { @@ -3744,7 +3783,7 @@ "name": "Knoxstertoken", "network": "eth", "shortcut": "FKX", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3759,7 +3798,7 @@ "name": "FLIXX", "network": "eth", "shortcut": "FLIXX", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3775,7 +3814,7 @@ "network": "eth", "shortcut": "FLMC", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:FLP": { @@ -3790,7 +3829,7 @@ "name": "FLIP Token", "network": "eth", "shortcut": "FLP", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3806,7 +3845,7 @@ "network": "eth", "shortcut": "FLR", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:FLUZ": { @@ -3820,7 +3859,7 @@ "name": "Fluz Fluz Global", "network": "eth", "shortcut": "FLUZ", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3835,7 +3874,7 @@ "name": "BitFlux", "network": "eth", "shortcut": "FLX", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3851,7 +3890,7 @@ "name": "FundRequest", "network": "eth", "shortcut": "FND", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3866,13 +3905,14 @@ "name": "FARAD Cryptoken", "network": "eth", "shortcut": "FRD", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:FTC": { "address": "0xe6f74dcfa0E20883008d8C16b6d9a329189D0C30", "links": { + "Homepage": "https://ftccoins.org/en", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -3880,7 +3920,7 @@ "name": "FTC", "network": "eth", "shortcut": "FTC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3895,7 +3935,7 @@ "name": "Futourist Token", "network": "eth", "shortcut": "FTR", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3912,7 +3952,7 @@ "network": "eth", "shortcut": "FTT", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:FUCK": { @@ -3926,7 +3966,7 @@ "name": "Finally Usable Crypto Karma", "network": "eth", "shortcut": "FUCK", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3942,7 +3982,7 @@ "name": "Etherparty FUEL", "network": "eth", "shortcut": "FUEL", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -3988,7 +4028,7 @@ "name": "Gambit", "network": "eth", "shortcut": "GAM", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4005,7 +4045,7 @@ "network": "eth", "shortcut": "GANA", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:GAVEL": { @@ -4019,13 +4059,15 @@ "name": "GAVEL", "network": "eth", "shortcut": "GAVEL", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:GBT": { "address": "0x7585F835ae2d522722d2684323a0ba83401f32f5", "links": { + "Github": "https://github.com/myHelloGold/Foundation", + "Homepage": "https://www.hellogold.org/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -4033,7 +4075,7 @@ "name": "GBT", "network": "eth", "shortcut": "GBT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4049,7 +4091,7 @@ "network": "eth", "shortcut": "GBX", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:GCP": { @@ -4065,7 +4107,7 @@ "network": "eth", "shortcut": "GCP", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:GEE": { @@ -4080,7 +4122,7 @@ "name": "Geens NPO", "network": "eth", "shortcut": "GEE", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4112,7 +4154,7 @@ "network": "eth", "shortcut": "GEN", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:GET": { @@ -4128,7 +4170,7 @@ "network": "eth", "shortcut": "GET", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:GIF": { @@ -4143,7 +4185,7 @@ "network": "eth", "shortcut": "GIF", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:GIM": { @@ -4158,7 +4200,7 @@ "name": "Gimli", "network": "eth", "shortcut": "GIM", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4173,7 +4215,7 @@ "name": "GMT", "network": "eth", "shortcut": "GMT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4200,7 +4242,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 390462453, + "marketcap_usd": 398524715, "name": "Golem", "network": "eth", "shortcut": "GNT", @@ -4220,7 +4262,7 @@ "name": "GOLDX", "network": "eth", "shortcut": "GOLDX", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4231,11 +4273,11 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 15392475, + "marketcap_usd": 15659833, "name": "GRID", "network": "eth", "shortcut": "GRID", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4252,7 +4294,7 @@ "network": "eth", "shortcut": "GROW", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:GTC": { @@ -4267,13 +4309,15 @@ "name": "GTC Token", "network": "eth", "shortcut": "GTC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:GTKT": { "address": "0x025abAD9e518516fdaAFBDcdB9701b37fb7eF0FA", "links": { + "Github": "https://github.com/sprux/BackToEarth", + "Homepage": "https://backto.earth/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -4298,12 +4342,14 @@ "network": "eth", "shortcut": "GTO", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:GUP": { "address": "0xf7B098298f7C69Fc14610bf71d5e02c60792894C", "links": { + "Github": "https://github.com/Matchpool/", + "Homepage": "https://github.com/Matchpool/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -4327,7 +4373,7 @@ "name": "Genesis Vision", "network": "eth", "shortcut": "GVT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4342,13 +4388,15 @@ "name": "GXC", "network": "eth", "shortcut": "GXC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:GXVC": { "address": "0x22F0AF8D78851b72EE799e05F54A77001586B18A", "links": { + "Github": "https://github.com/GxC17Genevieve/GXVC", + "Homepage": "https://genevieveco.io/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -4356,7 +4404,7 @@ "name": "Genevieve VC", "network": "eth", "shortcut": "GXVC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4371,7 +4419,7 @@ "name": "GazeCoin", "network": "eth", "shortcut": "GZE", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4386,7 +4434,7 @@ "name": "Hawala Today", "network": "eth", "shortcut": "HAT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4403,7 +4451,7 @@ "network": "eth", "shortcut": "HAV", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:HDG": { @@ -4417,13 +4465,15 @@ "name": "Hedge Crypto", "network": "eth", "shortcut": "HDG", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:HGT": { "address": "0xba2184520A1cC49a6159c57e61E1844E085615B6", "links": { + "Github": "https://github.com/myHelloGold/Foundation", + "Homepage": "https://www.hellogold.org/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -4431,7 +4481,7 @@ "name": "HGT", "network": "eth", "shortcut": "HGT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4447,7 +4497,7 @@ "name": "ethereumhigh ", "network": "eth", "shortcut": "HIG", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4479,7 +4529,7 @@ "network": "eth", "shortcut": "HKY", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:HMQ": { @@ -4508,7 +4558,7 @@ "name": "HODLCoin", "network": "eth", "shortcut": "HODL", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4525,7 +4575,7 @@ "network": "eth", "shortcut": "HORSE", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:HOT": { @@ -4541,7 +4591,7 @@ "network": "eth", "shortcut": "HOT", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:HST": { @@ -4555,7 +4605,7 @@ "name": "HST", "network": "eth", "shortcut": "HST", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4571,7 +4621,7 @@ "name": "Hive Project", "network": "eth", "shortcut": "HVN", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4587,7 +4637,7 @@ "name": "HEdpAY", "network": "eth", "shortcut": "Hdp", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4603,13 +4653,14 @@ "name": "HEdpAY", "network": "eth", "shortcut": "Hdp.\u0444", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:ICE": { "address": "0x5a84969bb663fb64F6d015DcF9F622Aedc796750", "links": { + "Homepage": "https://idice.io/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -4623,6 +4674,7 @@ }, "erc20:eth:ICN": { "address": "0x888666CA69E0f178DED6D75b5726Cee99A87D698", + "hidden": 1, "links": { "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" @@ -4646,21 +4698,22 @@ "name": "ICO", "network": "eth", "shortcut": "ICO", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:ICOS": { "address": "0x014B50466590340D41307Cc54DCee990c8D58aa8", "links": { + "Homepage": "https://icos.icobox.io/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 9983778, + "marketcap_usd": 10012832, "name": "ICOS", "network": "eth", "shortcut": "ICOS", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4675,7 +4728,7 @@ "name": "ICON", "network": "eth", "shortcut": "ICX", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4690,7 +4743,7 @@ "name": "IDEA Token", "network": "eth", "shortcut": "IDEA", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4705,7 +4758,7 @@ "name": "InvestFeed", "network": "eth", "shortcut": "IFT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4720,13 +4773,15 @@ "name": "IIC", "network": "eth", "shortcut": "IIC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:IKB": { "address": "0x88AE96845e157558ef59e9Ff90E766E22E480390", "links": { + "Github": "https://github.com/mitchellfchan/IKB", + "Homepage": "http://www.mitchellfchan.com/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -4734,7 +4789,7 @@ "name": "IKB", "network": "eth", "shortcut": "IKB", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4749,12 +4804,13 @@ "name": "Immune Coin", "network": "eth", "shortcut": "IMC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:IMT": { "address": "0x22E5F62D0FA19974749faa194e3d3eF6d89c08d7", + "hidden": 1, "links": { "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" @@ -4778,12 +4834,13 @@ "name": "Indorse", "network": "eth", "shortcut": "IND", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:INRM": { "address": "0x48e5413b73add2434e47504E2a22d14940dBFe78", + "hidden": 1, "links": { "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" @@ -4793,7 +4850,7 @@ "network": "eth", "shortcut": "INRM", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:INS": { @@ -4807,7 +4864,7 @@ "name": "INS", "network": "eth", "shortcut": "INS", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4823,7 +4880,7 @@ "network": "eth", "shortcut": "INSTAR", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:INXT": { @@ -4837,7 +4894,7 @@ "name": "Internxt", "network": "eth", "shortcut": "INXT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4853,7 +4910,7 @@ "network": "eth", "shortcut": "IOST", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:IPL": { @@ -4868,7 +4925,7 @@ "name": "InsurePal token", "network": "eth", "shortcut": "IPL", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4884,7 +4941,7 @@ "network": "eth", "shortcut": "IPSX", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:ITC": { @@ -4899,7 +4956,7 @@ "name": "IoT Chain", "network": "eth", "shortcut": "ITC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4915,7 +4972,7 @@ "name": "ITT Token", "network": "eth", "shortcut": "ITT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4930,7 +4987,7 @@ "name": "InsureX", "network": "eth", "shortcut": "IXT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4945,7 +5002,7 @@ "name": "IoT\u30b3\u30a4\u30f3", "network": "eth", "shortcut": "IoT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4961,7 +5018,7 @@ "name": "J8T Token", "network": "eth", "shortcut": "J8T", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -4976,13 +5033,14 @@ "name": "JBX", "network": "eth", "shortcut": "JBX", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:JET": { "address": "0x8727c112C712c4a03371AC87a74dD6aB104Af768", "links": { + "Homepage": "https://jetcoin.io/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -5006,7 +5064,7 @@ "name": "JNT", "network": "eth", "shortcut": "JNT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5022,12 +5080,13 @@ "network": "eth", "shortcut": "JOY", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:JetCoins": { "address": "0x773450335eD4ec3DB45aF74f34F2c85348645D39", "links": { + "Homepage": "http://www.jetcoins.trade/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -5035,7 +5094,7 @@ "name": "JetCoins", "network": "eth", "shortcut": "JetCoins", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5051,11 +5110,12 @@ "network": "eth", "shortcut": "KC", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:KEE": { "address": "0x72D32ac1c5E66BfC5b08806271f8eEF915545164", + "hidden": 1, "links": { "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" @@ -5064,7 +5124,7 @@ "name": "CryptoKEE", "network": "eth", "shortcut": "KEE", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5080,7 +5140,7 @@ "name": "SelfKey", "network": "eth", "shortcut": "KEY", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5088,6 +5148,7 @@ "address": "0x27695E09149AdC738A978e9A678F99E4c39e9eb9", "links": { "Github": "https://github.com/kickico", + "Homepage": "https://www.kickico.com/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -5095,7 +5156,7 @@ "name": "KICK", "network": "eth", "shortcut": "KICK", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5107,11 +5168,11 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 143043073, + "marketcap_usd": 156336780, "name": "Kin Foundation", "network": "eth", "shortcut": "KIN", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5127,7 +5188,7 @@ "name": "Kyber Network", "network": "eth", "shortcut": "KNC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5144,7 +5205,7 @@ "network": "eth", "shortcut": "KPR", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:KRL": { @@ -5160,7 +5221,7 @@ "network": "eth", "shortcut": "KRL", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:KZN": { @@ -5174,7 +5235,7 @@ "name": "KaizenCoin", "network": "eth", "shortcut": "KZN", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5190,7 +5251,7 @@ "name": "LATOKEN", "network": "eth", "shortcut": "LA", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5205,7 +5266,7 @@ "name": "LALA World Token", "network": "eth", "shortcut": "LALA", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5221,7 +5282,7 @@ "network": "eth", "shortcut": "LDC", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:LEMO": { @@ -5235,7 +5296,7 @@ "name": "Lemo", "network": "eth", "shortcut": "LEMO", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5250,7 +5311,7 @@ "name": "LifeRun Coin", "network": "eth", "shortcut": "LFR", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5266,7 +5327,7 @@ "network": "eth", "shortcut": "LGO", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:LGR": { @@ -5280,7 +5341,7 @@ "name": "Logarithm", "network": "eth", "shortcut": "LGR", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5296,7 +5357,7 @@ "name": "LIF", "network": "eth", "shortcut": "LIF", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5307,11 +5368,11 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 5844747, + "marketcap_usd": 6625789, "name": "LIFE", "network": "eth", "shortcut": "LIFE", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5326,7 +5387,7 @@ "name": "LINK Chainlink", "network": "eth", "shortcut": "LINK (Chainlink)", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5342,7 +5403,7 @@ "name": "Link Platform", "network": "eth", "shortcut": "LINK Platform", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5357,7 +5418,7 @@ "name": "LIVE Token", "network": "eth", "shortcut": "LIVE", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5373,7 +5434,7 @@ "name": "Lancer Token", "network": "eth", "shortcut": "LNC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5389,7 +5450,7 @@ "name": "Linker Coin", "network": "eth", "shortcut": "LNC-Linker Coin", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5406,7 +5467,7 @@ "network": "eth", "shortcut": "LND", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:LOC": { @@ -5420,7 +5481,7 @@ "name": "LockChain", "network": "eth", "shortcut": "LOC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5436,7 +5497,7 @@ "name": "LOCIcoin", "network": "eth", "shortcut": "LOCI", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5452,7 +5513,7 @@ "network": "eth", "shortcut": "LOCUS", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:LOK": { @@ -5483,7 +5544,7 @@ "network": "eth", "shortcut": "LOOM", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:LPT": { @@ -5499,7 +5560,7 @@ "network": "eth", "shortcut": "LPT", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:LRC": { @@ -5513,7 +5574,7 @@ "name": "LRC", "network": "eth", "shortcut": "LRC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5529,8 +5590,8 @@ "name": "LUCToken", "network": "eth", "shortcut": "LUC", - "t1_enabled": "yes", - "t2_enabled": "yes", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:LUCK": { @@ -5559,13 +5620,15 @@ "name": "Lumino Coin", "network": "eth", "shortcut": "LUM", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:LUN": { "address": "0xfa05A73FfE78ef8f1a739473e462c54bae6567D9", "links": { + "Github": "https://github.com/lunyr", + "Homepage": "https://lunyr.com/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -5590,7 +5653,7 @@ "network": "eth", "shortcut": "LYS", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:M-ETH": { @@ -5604,13 +5667,14 @@ "name": "M-ETH", "network": "eth", "shortcut": "M-ETH", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:MAD": { "address": "0x5B09A0371C1DA44A8E24D36Bf5DEb1141a84d875", "links": { + "Homepage": "https://madnetwork.io/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -5619,12 +5683,14 @@ "network": "eth", "shortcut": "MAD", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:MAN": { "address": "0xe25bCec5D3801cE3a794079BF94adF1B8cCD802D", "links": { + "Github": "https://github.com/MatrixAINetwork", + "Homepage": "https://www.matrix.io/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -5632,8 +5698,8 @@ "name": "MAN", "network": "eth", "shortcut": "MAN", - "t1_enabled": "yes", - "t2_enabled": "yes", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:MANA": { @@ -5648,7 +5714,7 @@ "name": "Decentraland MANA", "network": "eth", "shortcut": "MANA", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5663,8 +5729,8 @@ "name": "Martcoin", "network": "eth", "shortcut": "MART", - "t1_enabled": "yes", - "t2_enabled": "yes", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:MBRS": { @@ -5679,17 +5745,18 @@ "name": "Embers", "network": "eth", "shortcut": "MBRS", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:MCAP": { "address": "0x93E682107d1E9defB0b5ee701C71707a4B2E46Bc", "links": { + "Homepage": "https://www.mcaplabs.com/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 713532, + "marketcap_usd": 701901, "name": "MCAP", "network": "eth", "shortcut": "MCAP", @@ -5709,13 +5776,14 @@ "name": "Musiconomi", "network": "eth", "shortcut": "MCI", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:MCO": { "address": "0xB63B606Ac810a52cCa15e44bB630fd42D8d1d83d", "links": { + "Homepage": "https://mona.co/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -5730,6 +5798,7 @@ "erc20:eth:MDA": { "address": "0x51DB5Ad35C671a87207d88fC11d593AC0C8415bd", "links": { + "Homepage": "https://moeda.in", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -5754,7 +5823,7 @@ "network": "eth", "shortcut": "MESH", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:MEST": { @@ -5769,7 +5838,7 @@ "name": "Monaco Estate", "network": "eth", "shortcut": "MEST", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5786,12 +5855,13 @@ "network": "eth", "shortcut": "MFG", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:MGO": { "address": "0x40395044Ac3c0C57051906dA938B54BD6557F212", "links": { + "Homepage": "https://gamecredits.com/mobilego/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -5805,6 +5875,7 @@ }, "erc20:eth:MIT": { "address": "0xe23cd160761f63FC3a1cF78Aa034b6cdF97d3E0C", + "hidden": 1, "links": { "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" @@ -5829,7 +5900,7 @@ "network": "eth", "shortcut": "MIT (Mychatcoin)", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:MKR": { @@ -5866,6 +5937,7 @@ "erc20:eth:MNE": { "address": "0x1a95B271B0535D15fa49932Daba31BA612b52946", "links": { + "Homepage": "https://minereum.com/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -5889,7 +5961,7 @@ "name": "Media Network Token", "network": "eth", "shortcut": "MNT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5905,7 +5977,7 @@ "name": "Goldmint MNT Prelaunch Token", "network": "eth", "shortcut": "MNTP", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5921,7 +5993,7 @@ "name": "Modum", "network": "eth", "shortcut": "MOD", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5938,7 +6010,7 @@ "network": "eth", "shortcut": "MRL", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:MRP": { @@ -5952,7 +6024,7 @@ "name": "MoneyRebel Token", "network": "eth", "shortcut": "MRP", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -5997,7 +6069,7 @@ "name": "Monetha", "network": "eth", "shortcut": "MTH", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6027,7 +6099,7 @@ "name": "MedToken", "network": "eth", "shortcut": "MTN", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6042,7 +6114,7 @@ "name": "Mitrav", "network": "eth", "shortcut": "MTR", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6057,7 +6129,7 @@ "name": "MTRCToken", "network": "eth", "shortcut": "MTRc", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6072,7 +6144,7 @@ "name": "MTX", "network": "eth", "shortcut": "MTX", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6088,7 +6160,7 @@ "network": "eth", "shortcut": "MUXE", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:MVP": { @@ -6104,7 +6176,7 @@ "network": "eth", "shortcut": "MVP", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:MWAT": { @@ -6118,12 +6190,13 @@ "name": "RED MWAT", "network": "eth", "shortcut": "MWAT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:MYD": { "address": "0xf7e983781609012307f2514f63D526D83D24F466", + "hidden": 1, "links": { "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" @@ -6163,7 +6236,7 @@ "network": "eth", "shortcut": "NAC", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:NAVI": { @@ -6179,7 +6252,7 @@ "network": "eth", "shortcut": "NAVI", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:NBAI": { @@ -6195,7 +6268,7 @@ "network": "eth", "shortcut": "NBAI", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:NCT": { @@ -6210,7 +6283,7 @@ "name": "Nectar", "network": "eth", "shortcut": "NCT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6225,7 +6298,7 @@ "name": "Neverdie", "network": "eth", "shortcut": "NDC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6242,7 +6315,7 @@ "network": "eth", "shortcut": "NEC", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:NET": { @@ -6264,6 +6337,7 @@ "address": "0xA823E6722006afe99E91c30FF5295052fe6b8E32", "links": { "Github": "https://github.com/neufund", + "Homepage": "https://neufund.org/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -6271,7 +6345,7 @@ "name": "NEU Fund", "network": "eth", "shortcut": "NEU", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6286,7 +6360,7 @@ "name": "NAGA Coin", "network": "eth", "shortcut": "NGC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6302,13 +6376,15 @@ "name": "Ninfa Money", "network": "eth", "shortcut": "NIMFA", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:NMR": { "address": "0x1776e1F26f98b1A5dF9cD347953a26dd3Cb46671", "links": { + "Github": "https://github.com/numerai", + "Homepage": "https://numer.ai/homepage", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -6332,7 +6408,7 @@ "name": "NOX", "network": "eth", "shortcut": "NOX", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6344,12 +6420,12 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 12076174, + "marketcap_usd": 12349660, "name": "NPER", "network": "eth", "shortcut": "NPER", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:NPXS": { @@ -6365,7 +6441,7 @@ "network": "eth", "shortcut": "NPXS", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:NULS": { @@ -6375,11 +6451,11 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 140896400, + "marketcap_usd": 142359200, "name": "NULS", "network": "eth", "shortcut": "NULS", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6409,7 +6485,7 @@ "name": "NXX OLD", "network": "eth", "shortcut": "NXX OLD", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6435,7 +6511,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 13106397, + "marketcap_usd": 13818836, "name": "OAX", "network": "eth", "shortcut": "OAX", @@ -6455,7 +6531,7 @@ "name": "Original Crypto Coin", "network": "eth", "shortcut": "OCC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6487,13 +6563,15 @@ "name": "MakerDAO", "network": "eth", "shortcut": "OLD_MKR", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:OMG": { "address": "0xd26114cd6EE289AccF82350c8d8487fedB8A0C07", "links": { + "Github": "https://github.com/omisego", + "Homepage": "https://omisego.network/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -6516,7 +6594,7 @@ "name": "One K Token", "network": "eth", "shortcut": "ONEK", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6533,7 +6611,7 @@ "network": "eth", "shortcut": "OPEN", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:OPT": { @@ -6547,7 +6625,7 @@ "name": "Opus Foundation", "network": "eth", "shortcut": "OPT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6559,11 +6637,11 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 45473798, + "marketcap_usd": 48943780, "name": "Simple Token 'OST'", "network": "eth", "shortcut": "OST", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6579,7 +6657,7 @@ "name": "Ox Fina", "network": "eth", "shortcut": "Ox Fina", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6596,7 +6674,7 @@ "network": "eth", "shortcut": "PAL", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:PARETO": { @@ -6611,7 +6689,7 @@ "name": "PARETO", "network": "eth", "shortcut": "PARETO", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6626,7 +6704,7 @@ "name": "PATENTS", "network": "eth", "shortcut": "PATENTS", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6643,12 +6721,13 @@ "network": "eth", "shortcut": "PATH", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:PAY": { "address": "0xB97048628DB6B661D4C2aA833e95Dbe1A905B280", "links": { + "Homepage": "http://www.tenx.tech/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -6671,7 +6750,7 @@ "name": "PBL", "network": "eth", "shortcut": "PBL", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6687,7 +6766,7 @@ "network": "eth", "shortcut": "PBT", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:PCH": { @@ -6701,7 +6780,7 @@ "name": "PITCH", "network": "eth", "shortcut": "PCH", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6717,7 +6796,7 @@ "name": "Peculium", "network": "eth", "shortcut": "PCL", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6733,7 +6812,7 @@ "name": "PeculiumOLD", "network": "eth", "shortcut": "PCLOLD", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6749,12 +6828,13 @@ "name": "PETHEREUM", "network": "eth", "shortcut": "PET", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:PETRO": { "address": "0xeC18f898B4076A3E18f1089D33376CC380BDe61D", + "hidden": 1, "links": { "Github": "https://github.com/getpetro", "MyCrypto Wallet": "https://mycrypto.com", @@ -6764,7 +6844,7 @@ "name": "PETRO", "network": "eth", "shortcut": "PETRO", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6779,7 +6859,7 @@ "name": "PEX-Token", "network": "eth", "shortcut": "PEXT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6794,7 +6874,7 @@ "name": "PIPL Coin", "network": "eth", "shortcut": "PIPL", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6809,13 +6889,14 @@ "name": "PIX", "network": "eth", "shortcut": "PIX", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:PLASMA": { "address": "0x59416A25628A76b4730eC51486114c32E0B582A1", "links": { + "Homepage": "https://plasma.io/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -6823,7 +6904,7 @@ "name": "PLASMA", "network": "eth", "shortcut": "PLASMA", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6838,7 +6919,7 @@ "name": "HeroCoin", "network": "eth", "shortcut": "PLAY", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6899,7 +6980,7 @@ "name": "Po.et Tokens", "network": "eth", "shortcut": "POE", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6914,7 +6995,7 @@ "name": "Potatoin", "network": "eth", "shortcut": "POIN", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6929,7 +7010,7 @@ "name": "Polymath Network", "network": "eth", "shortcut": "POLY", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6944,7 +7025,7 @@ "name": "Stake Pool", "network": "eth", "shortcut": "POOL", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6960,7 +7041,7 @@ "name": "PoSToken", "network": "eth", "shortcut": "POS", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6975,7 +7056,7 @@ "name": "PowerLedger", "network": "eth", "shortcut": "POWR", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -6990,7 +7071,7 @@ "name": "PayPie", "network": "eth", "shortcut": "PPP", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7020,7 +7101,7 @@ "name": "Presearch", "network": "eth", "shortcut": "PRE", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7036,7 +7117,7 @@ "name": "PRG", "network": "eth", "shortcut": "PRG", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7052,7 +7133,7 @@ "name": "Oyster Pearl", "network": "eth", "shortcut": "PRL", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7083,7 +7164,7 @@ "network": "eth", "shortcut": "PRON", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:PRPS": { @@ -7098,7 +7179,7 @@ "name": "Purpose", "network": "eth", "shortcut": "PRPS", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7129,7 +7210,7 @@ "name": "PRSP", "network": "eth", "shortcut": "PRSP", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7145,7 +7226,7 @@ "name": "PornToken", "network": "eth", "shortcut": "PT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7162,12 +7243,13 @@ "network": "eth", "shortcut": "PTC", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:PTOY": { "address": "0x8Ae4BF2C33a8e667de34B54938B0ccD03Eb8CC06", "links": { + "Homepage": "https://patientory.com/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -7191,7 +7273,7 @@ "name": "PornTokenV2", "network": "eth", "shortcut": "PTWO", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7207,7 +7289,7 @@ "name": "Pour Coin", "network": "eth", "shortcut": "PUC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7222,7 +7304,7 @@ "name": "Populous XBRL Token (PXT)", "network": "eth", "shortcut": "PXT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7233,12 +7315,12 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 172346650, + "marketcap_usd": 177431800, "name": "QASH", "network": "eth", "shortcut": "QASH", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:QAU": { @@ -7269,12 +7351,14 @@ "network": "eth", "shortcut": "QBX", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:QRL": { "address": "0x697beac28B09E122C4332D163985e8a73121b97F", "links": { + "Github": "https://github.com/theQRL", + "Homepage": "https://theqrl.org/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -7298,7 +7382,7 @@ "name": "Quantstamp Token", "network": "eth", "shortcut": "QSP", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7314,7 +7398,7 @@ "name": "TiiQu's Q Token", "network": "eth", "shortcut": "QTQ", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7326,11 +7410,11 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 1202286810, + "marketcap_usd": 1182427083, "name": "Qtum", "network": "eth", "shortcut": "QTUM", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7347,12 +7431,14 @@ "network": "eth", "shortcut": "RBLX", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:RCN": { "address": "0xF970b8E36e23F7fC3FD752EeA86f8Be8D83375A6", "links": { + "Github": "https://github.com/ripio/rcn-token", + "Homepage": "https://ripiocredit.network/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -7360,8 +7446,8 @@ "name": "Ripio Credit Network", "network": "eth", "shortcut": "RCN", - "t1_enabled": "yes", - "t2_enabled": "yes", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:RCT": { @@ -7375,7 +7461,7 @@ "name": "RCT", "network": "eth", "shortcut": "RCT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7391,7 +7477,7 @@ "name": "Raiden Network", "network": "eth", "shortcut": "RDN", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7406,7 +7492,7 @@ "name": "Realisto", "network": "eth", "shortcut": "REA", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7417,11 +7503,11 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 12237520, + "marketcap_usd": 12294162, "name": "Rebellious", "network": "eth", "shortcut": "REBL", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7437,7 +7523,7 @@ "name": "Republic Token", "network": "eth", "shortcut": "REN", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7467,13 +7553,15 @@ "name": "Request Network", "network": "eth", "shortcut": "REQ", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:REX": { "address": "0xf05a9382A4C3F29E2784502754293D88b835109C", "links": { + "Github": "https://github.com/rexmls/RexToken", + "Homepage": "https://imbrex.io/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -7497,7 +7585,7 @@ "network": "eth", "shortcut": "RFR", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:RIPT": { @@ -7512,7 +7600,7 @@ "name": "RiptideCoin", "network": "eth", "shortcut": "RIPT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7523,7 +7611,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 133381127, + "marketcap_usd": 138313488, "name": "IEx.ec", "network": "eth", "shortcut": "RLC", @@ -7534,6 +7622,8 @@ "erc20:eth:RLT": { "address": "0xcCeD5B8288086BE8c38E23567e684C3740be4D48", "links": { + "Github": "https://github.com/Smartroulette", + "Homepage": "https://smartplay.tech/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -7556,7 +7646,7 @@ "name": "SMARTRealty", "network": "eth", "shortcut": "RLTY", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7571,7 +7661,7 @@ "name": "Relex", "network": "eth", "shortcut": "RLX", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7586,7 +7676,7 @@ "name": "Render Token", "network": "eth", "shortcut": "RNDR", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7598,12 +7688,12 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 43552219, + "marketcap_usd": 45148263, "name": "Rocket Token", "network": "eth", "shortcut": "ROCK", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:ROK": { @@ -7617,13 +7707,14 @@ "name": "Rocketchain", "network": "eth", "shortcut": "ROK", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:ROUND": { "address": "0x4993CB95c7443bdC06155c5f5688Be9D8f6999a5", "links": { + "Homepage": "http://roundcoin.org/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -7646,7 +7737,7 @@ "name": "Rocket Pool", "network": "eth", "shortcut": "RPL", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7662,7 +7753,7 @@ "name": "RiderToken", "network": "eth", "shortcut": "RTN", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7677,7 +7768,7 @@ "name": "RVL", "network": "eth", "shortcut": "RVL", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7692,7 +7783,7 @@ "name": "Rivetz", "network": "eth", "shortcut": "RVT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7707,7 +7798,7 @@ "name": "S-A-PAT", "network": "eth", "shortcut": "S-A-PAT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7722,7 +7813,7 @@ "name": "S-ETH", "network": "eth", "shortcut": "S-ETH", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7733,11 +7824,11 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 124346229, + "marketcap_usd": 127335801, "name": "Salt Lending Token", "network": "eth", "shortcut": "SALT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7767,7 +7858,7 @@ "name": "Scandiweb Coin", "network": "eth", "shortcut": "SCANDI", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7793,11 +7884,11 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 2361249, + "marketcap_usd": 2468047, "name": "Sensay", "network": "eth", "shortcut": "SENSE", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7813,7 +7904,7 @@ "name": "SET", "network": "eth", "shortcut": "SET", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7828,7 +7919,7 @@ "name": "Sexy Token", "network": "eth", "shortcut": "SEXY", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7865,6 +7956,7 @@ "erc20:eth:SHIT": { "address": "0xEF2E9966eb61BB494E5375d5Df8d67B7dB8A780D", "links": { + "Homepage": "https://www.shitcoin.io/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -7887,7 +7979,7 @@ "name": "SIFT", "network": "eth", "shortcut": "SIFT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7904,12 +7996,14 @@ "network": "eth", "shortcut": "SIG", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:SKIN": { "address": "0x2bDC0D42996017fCe214b21607a515DA41A9E0C5", "links": { + "Github": "https://github.com/Steamtradenet/smart-contract", + "Homepage": "https://skincoin.org/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -7947,7 +8041,7 @@ "name": "SKR Token", "network": "eth", "shortcut": "SKR", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7963,7 +8057,7 @@ "name": "Skraps", "network": "eth", "shortcut": "SKRP", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7978,7 +8072,7 @@ "name": "Smartlands", "network": "eth", "shortcut": "SLT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -7994,7 +8088,7 @@ "name": "Smart Billions", "network": "eth", "shortcut": "SMART", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8010,7 +8104,7 @@ "name": "SmartMesh", "network": "eth", "shortcut": "SMT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8040,7 +8134,7 @@ "name": "Sandcoin", "network": "eth", "shortcut": "SND", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8056,7 +8150,7 @@ "name": "SINERGIA", "network": "eth", "shortcut": "SNG", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8086,13 +8180,15 @@ "name": "SNIP", "network": "eth", "shortcut": "SNIP", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:SNM": { "address": "0x983F6d60db79ea8cA4eB9968C6aFf8cfA04B3c63", "links": { + "Github": "https://github.com/sonm-io", + "Homepage": "https://sonm.com/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -8115,7 +8211,7 @@ "name": "SNOV", "network": "eth", "shortcut": "SNOV", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8145,7 +8241,7 @@ "name": "Sola Token", "network": "eth", "shortcut": "SOL", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8160,7 +8256,7 @@ "name": "SpankChain", "network": "eth", "shortcut": "SPANK", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8190,7 +8286,7 @@ "name": "SPARTA", "network": "eth", "shortcut": "SPARTA", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8205,7 +8301,7 @@ "name": "Sportify", "network": "eth", "shortcut": "SPF", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8221,7 +8317,7 @@ "network": "eth", "shortcut": "SPN", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:SRN": { @@ -8236,7 +8332,7 @@ "name": "Sirin Labs", "network": "eth", "shortcut": "SRN", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8252,13 +8348,14 @@ "name": "Sharder", "network": "eth", "shortcut": "SS", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:SSH": { "address": "0x6e2050CBFB3eD8A4d39b64cC9f47E711a03a5a89", "links": { + "Homepage": "https://www.stream.space/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -8267,7 +8364,7 @@ "network": "eth", "shortcut": "SSH", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:STAC": { @@ -8281,7 +8378,7 @@ "name": "Starter Coin", "network": "eth", "shortcut": "STAC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8296,7 +8393,7 @@ "name": "Star Token", "network": "eth", "shortcut": "STAR", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8312,7 +8409,7 @@ "name": "StrikeCoin Token", "network": "eth", "shortcut": "STC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8323,11 +8420,11 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 19248500, + "marketcap_usd": 19818646, "name": "STK Token", "network": "eth", "shortcut": "STK", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8342,17 +8439,19 @@ "name": "Saturn Network", "network": "eth", "shortcut": "STN", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:STORJ": { "address": "0xB64ef51C888972c908CFacf59B47C1AfBC0Ab8aC", "links": { + "Github": "https://github.com/Storj/", + "Homepage": "https://storj.io/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 101352634, + "marketcap_usd": 101564055, "name": "STORJ", "network": "eth", "shortcut": "STORJ", @@ -8367,11 +8466,11 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 143008708, + "marketcap_usd": 143010374, "name": "Storm Token", "network": "eth", "shortcut": "STORM", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8387,13 +8486,15 @@ "name": "StashPay", "network": "eth", "shortcut": "STP", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:STRC": { "address": "0x46492473755e8dF960F8034877F61732D718CE96", "links": { + "Github": "https://github.com/sprux/BackToEarth", + "Homepage": "https://backto.earth/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -8432,7 +8533,7 @@ "name": "Substratum", "network": "eth", "shortcut": "SUB", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8448,7 +8549,7 @@ "name": "Swarm Fund Token", "network": "eth", "shortcut": "SWM", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8478,7 +8579,7 @@ "name": "Spectre.ai D-Token", "network": "eth", "shortcut": "SXDT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8493,7 +8594,7 @@ "name": "Spectre.ai U-Token", "network": "eth", "shortcut": "SXUT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8508,7 +8609,7 @@ "name": "Synapse", "network": "eth", "shortcut": "SYN", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8523,7 +8624,7 @@ "name": "SenSatorI Token", "network": "eth", "shortcut": "SenSatorI", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8539,7 +8640,7 @@ "name": "Lamden Tau", "network": "eth", "shortcut": "TAU", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8555,7 +8656,7 @@ "name": "TBC2", "network": "eth", "shortcut": "TBC2", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8571,7 +8672,7 @@ "name": "TBitBot", "network": "eth", "shortcut": "TBT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8587,7 +8688,7 @@ "name": "Telcoin", "network": "eth", "shortcut": "TEL", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8619,12 +8720,14 @@ "network": "eth", "shortcut": "THETA", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:THUG": { "address": "0xfe7B915A0bAA0E79f85c5553266513F7C1c03Ed0", "links": { + "Github": "https://github.com/THUGCOIN/THUGCoin", + "Homepage": "https://thugcoin.cash/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -8633,7 +8736,7 @@ "network": "eth", "shortcut": "THUG", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:TIME": { @@ -8662,7 +8765,7 @@ "name": "TIO", "network": "eth", "shortcut": "TIO", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8708,12 +8811,13 @@ "name": "Tierion Network Token", "network": "eth", "shortcut": "TNT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:TRC": { "address": "0xcB3F902bf97626391bF8bA87264bbC3DC13469be", + "hidden": 1, "links": { "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" @@ -8722,7 +8826,7 @@ "name": "The Real Coin", "network": "eth", "shortcut": "TRC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8737,7 +8841,7 @@ "name": "The Real Coin", "network": "eth", "shortcut": "TRCN", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8768,7 +8872,7 @@ "name": "Tron Lab Token", "network": "eth", "shortcut": "TRX", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8783,7 +8887,7 @@ "name": "The World News", "network": "eth", "shortcut": "TWN", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8798,7 +8902,7 @@ "name": "Twinkle", "network": "eth", "shortcut": "TWNKL", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8809,7 +8913,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 27764014, + "marketcap_usd": 28509211, "name": "Token-as-a-Service", "network": "eth", "shortcut": "TaaS", @@ -8829,7 +8933,7 @@ "name": "UnikoinGold", "network": "eth", "shortcut": "UKG", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8846,7 +8950,7 @@ "network": "eth", "shortcut": "UMKA", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:UQC": { @@ -8860,12 +8964,13 @@ "name": "Uquid Coin", "network": "eth", "shortcut": "UQC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:USDM": { "address": "0xD760ADdFb24D9C01Fe4Bfea7475C5e3636684058", + "hidden": 1, "links": { "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" @@ -8875,7 +8980,7 @@ "network": "eth", "shortcut": "USDM", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:USDT": { @@ -8889,7 +8994,7 @@ "name": "USD Tether (erc20)", "network": "eth", "shortcut": "USDT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8904,7 +9009,7 @@ "name": "UTK", "network": "eth", "shortcut": "UTK", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8920,12 +9025,13 @@ "name": "Universa", "network": "eth", "shortcut": "UTN-P", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:Unicorn": { "address": "0x89205A3A3b2A69De6Dbf7f01ED13B2108B2c43e7", + "hidden": 1, "links": { "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" @@ -8934,7 +9040,7 @@ "name": "Unicorn", "network": "eth", "shortcut": "Unicorn", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8951,7 +9057,7 @@ "network": "eth", "shortcut": "VDOC", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:VEE": { @@ -8966,7 +9072,7 @@ "name": "BLOCKv", "network": "eth", "shortcut": "VEE", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -8981,7 +9087,7 @@ "name": "VENUS", "network": "eth", "shortcut": "VENUS", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9012,7 +9118,7 @@ "name": "Vechain", "network": "eth", "shortcut": "VET", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9027,7 +9133,7 @@ "name": "VIB", "network": "eth", "shortcut": "VIB", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9043,7 +9149,7 @@ "name": "VIBEX", "network": "eth", "shortcut": "VIBEX", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9059,7 +9165,7 @@ "network": "eth", "shortcut": "VIEW", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:VIT": { @@ -9075,7 +9181,7 @@ "network": "eth", "shortcut": "VIT", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:VIU": { @@ -9090,7 +9196,7 @@ "name": "VIU", "network": "eth", "shortcut": "VIU", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9107,7 +9213,7 @@ "network": "eth", "shortcut": "VLD", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:VOC": { @@ -9123,7 +9229,7 @@ "network": "eth", "shortcut": "VOC", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:VOISE": { @@ -9137,7 +9243,7 @@ "name": "Voise", "network": "eth", "shortcut": "VOISE", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9179,11 +9285,11 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 116718928, + "marketcap_usd": 120818483, "name": "WAX", "network": "eth", "shortcut": "WAX", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9198,7 +9304,7 @@ "name": "WeBetCrypto", "network": "eth", "shortcut": "WBA", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9215,7 +9321,7 @@ "network": "eth", "shortcut": "WCN", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:WCT": { @@ -9244,7 +9350,7 @@ "name": "WETH", "network": "eth", "shortcut": "WETH", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9261,7 +9367,7 @@ "network": "eth", "shortcut": "WHEN", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:WHO": { @@ -9276,7 +9382,7 @@ "name": "WhoHas", "network": "eth", "shortcut": "WHO", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9292,7 +9398,7 @@ "name": "WickNote", "network": "eth", "shortcut": "WIC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9308,7 +9414,7 @@ "name": "WILD Token", "network": "eth", "shortcut": "WILD", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9319,7 +9425,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 34315590, + "marketcap_usd": 34689405, "name": "WINGS", "network": "eth", "shortcut": "WINGS", @@ -9338,7 +9444,7 @@ "name": "Wolk Token", "network": "eth", "shortcut": "WOLK", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9353,7 +9459,7 @@ "name": "WorldPeaceCoin", "network": "eth", "shortcut": "WPC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9368,7 +9474,7 @@ "name": "WePower Token", "network": "eth", "shortcut": "WPR", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9384,7 +9490,7 @@ "name": "WorkCoin", "network": "eth", "shortcut": "WRK", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9400,7 +9506,7 @@ "name": "WyvernToken", "network": "eth", "shortcut": "WYV", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9411,11 +9517,11 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 32886813, + "marketcap_usd": 33254634, "name": "WaBi", "network": "eth", "shortcut": "WaBi", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9430,7 +9536,7 @@ "name": "Wi Coin", "network": "eth", "shortcut": "WiC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9445,7 +9551,7 @@ "name": "X8X", "network": "eth", "shortcut": "X8X", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9477,7 +9583,7 @@ "network": "eth", "shortcut": "XBP", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:XCC": { @@ -9492,7 +9598,7 @@ "name": "CoinCrowd", "network": "eth", "shortcut": "XCC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9509,7 +9615,7 @@ "network": "eth", "shortcut": "XGG", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:XGM": { @@ -9523,7 +9629,7 @@ "name": "XGM", "network": "eth", "shortcut": "XGM", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9539,13 +9645,14 @@ "name": "XGT", "network": "eth", "shortcut": "XGT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:XID": { "address": "0xB110eC7B1dcb8FAB8dEDbf28f53Bc63eA5BEdd84", "links": { + "Homepage": "https://sphereidentity.com/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -9570,7 +9677,7 @@ "network": "eth", "shortcut": "XNK", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:XNN": { @@ -9584,7 +9691,7 @@ "name": "XENON", "network": "eth", "shortcut": "XNN", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9599,13 +9706,14 @@ "name": "XNT", "network": "eth", "shortcut": "XNT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:eth:XRL": { "address": "0xB24754bE79281553dc1adC160ddF5Cd9b74361a4", "links": { + "Homepage": "https://rialto.ai/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -9628,7 +9736,7 @@ "name": "XSC", "network": "eth", "shortcut": "XSC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9644,12 +9752,14 @@ "network": "eth", "shortcut": "YEED", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:YUPIE": { "address": "0x0F33bb20a282A7649C7B3AFf644F084a9348e933", "links": { + "Github": "https://github.com/crowdholdingico/YupieSmartContract", + "Homepage": "https://www.crowdholding.com/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -9657,7 +9767,7 @@ "name": "YUPIE", "network": "eth", "shortcut": "YUPIE", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9669,11 +9779,11 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 11210245, + "marketcap_usd": 10945554, "name": "ZAP", "network": "eth", "shortcut": "ZAP", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9689,7 +9799,7 @@ "network": "eth", "shortcut": "ZCS", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:ZIL": { @@ -9704,7 +9814,7 @@ "name": "Zilliqa", "network": "eth", "shortcut": "ZIL", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9720,12 +9830,14 @@ "network": "eth", "shortcut": "ZMN", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:ZRX": { "address": "0xE41d2489571d322189246DaFA5ebDe1F4699F498", "links": { + "Github": "https://github.com/0xProject", + "Homepage": "https://0xproject.com/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -9748,7 +9860,7 @@ "name": "Zeus Exchange", "network": "eth", "shortcut": "ZST", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9764,7 +9876,7 @@ "name": "carVertical", "network": "eth", "shortcut": "cV", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9779,7 +9891,7 @@ "name": "eBCH", "network": "eth", "shortcut": "eBCH", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9795,7 +9907,7 @@ "name": "eBTC", "network": "eth", "shortcut": "eBTC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9810,7 +9922,7 @@ "name": "ETH GAS", "network": "eth", "shortcut": "eGAS", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9827,7 +9939,7 @@ "network": "eth", "shortcut": "eUSD", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:eosDAC": { @@ -9838,12 +9950,12 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 114584198, + "marketcap_usd": 113134501, "name": "eosDAC", "network": "eth", "shortcut": "eosDAC", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20" }, "erc20:eth:onG": { @@ -9858,12 +9970,13 @@ "name": "onG", "network": "eth", "shortcut": "onG", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:ubq:BEER": { "address": "0xFF3bF057ADF3b0E015b6465331a6236e55688274", + "hidden": 1, "links": { "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" @@ -9879,6 +9992,7 @@ "erc20:ubq:CEFS": { "address": "0x08533D6A06CE365298b12Ef92eb407cBA8Aa8273", "links": { + "Homepage": "https://www.cryptopiashares.com/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -9886,12 +10000,13 @@ "name": "CEFS", "network": "ubq", "shortcut": "CEFS", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:ubq:DOT": { "address": "0x94aD7e41c1D44022C4F47cb1Ba019Fd1a022c536", + "hidden": 1, "links": { "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" @@ -9900,27 +10015,29 @@ "name": "DOT", "network": "ubq", "shortcut": "DOT", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:ubq:QWARK": { "address": "0x4b4899a10F3E507DB207b0ee2426029eFa168a67", "links": { + "Homepage": "https://www.qwark.io/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 4216460, + "marketcap_usd": 4081182, "name": "QWARK", "network": "ubq", "shortcut": "QWARK", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, "erc20:ubq:RICKS": { "address": "0x5e1715bB79805Bd672729760B3f7F34D6f485098", "links": { + "Homepage": "https://picklericks.wixsite.com/picklewix", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, @@ -9928,7 +10045,7 @@ "name": "RICKS", "network": "ubq", "shortcut": "RICKS", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20" }, @@ -9949,7 +10066,7 @@ "Homepage": "https://www.dimcoin.io", "Nano Wallet": "https://nem.io/downloads/" }, - "marketcap_usd": 14998650, + "marketcap_usd": 15282234, "name": "DIMCOIN", "shortcut": "DIM", "t1_enabled": "yes", @@ -9962,7 +10079,7 @@ "Homepage": "https://www.dimcoin.io", "Nano Wallet": "https://nem.io/downloads/" }, - "marketcap_usd": 14998650, + "marketcap_usd": 15282234, "name": "DIM TOKEN", "shortcut": "DIMTOK", "t1_enabled": "yes", @@ -9998,7 +10115,7 @@ "Homepage": "https://nem.io", "Nano Wallet": "https://nem.io/downloads/" }, - "marketcap_usd": 2377260000, + "marketcap_usd": 2390067000, "name": "NEM", "shortcut": "XEM", "t1_enabled": "yes", @@ -10007,11 +10124,11 @@ } }, "info": { - "marketcap_usd": 233901699216, - "t1_coins": 533, - "t2_coins": 651, - "total_marketcap_usd": 329998812276, - "updated_at": 1527171333, - "updated_at_readable": "Thu May 24 16:15:33 2018" + "marketcap_usd": 234741301894, + "t1_coins": 131, + "t2_coins": 515, + "total_marketcap_usd": 333046926165, + "updated_at": 1527240389, + "updated_at_readable": "Fri May 25 11:26:29 2018" } -} +} \ No newline at end of file From e86421ee89a8cff3c6f7ed95849aec083348dfed Mon Sep 17 00:00:00 2001 From: Ellaismer Date: Sun, 27 May 2018 04:19:36 -0400 Subject: [PATCH 332/767] Add Ellaism network support --- coins_details.json | 15 ++++++++++++++- coins_details.py | 8 ++++++++ defs/ethereum/networks.json | 6 ++++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/coins_details.json b/coins_details.json index b47725ba7..0edb55b5d 100644 --- a/coins_details.json +++ b/coins_details.json @@ -103,6 +103,19 @@ "t2_enabled": "yes", "type": "coin" }, + "coin2:ELLA": { + "links": { + "Homepage": "https://ellaism.org", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 1274724, + "name": "Ellaism", + "shortcut": "ELLA", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin" + }, "coin2:XLM": { "links": { "Homepage": "https://www.stellar.org" @@ -10131,4 +10144,4 @@ "updated_at": 1527240389, "updated_at_readable": "Fri May 25 11:26:29 2018" } -} \ No newline at end of file +} diff --git a/coins_details.py b/coins_details.py index 9d3f899e8..f02182124 100755 --- a/coins_details.py +++ b/coins_details.py @@ -211,6 +211,14 @@ def update_ethereum(details): set_default(out, 't2_enabled', 'yes') update_marketcap(out, 'ubiq') + out = details['coins'].setdefault('coin2:ELLA', {}) + out['type'] = 'coin' + set_default(out, 'shortcut', 'ELLA') + set_default(out, 'name', 'Ellaism') + set_default(out, 't1_enabled', 'yes') + set_default(out, 't2_enabled', 'yes') + update_marketcap(out, 'ellaism') + out = details['coins'].setdefault('coin2:EGEM', {}) out['type'] = 'coin' set_default(out, 'shortcut', 'EGEM') diff --git a/defs/ethereum/networks.json b/defs/ethereum/networks.json index df0acab2e..73fe7fa02 100644 --- a/defs/ethereum/networks.json +++ b/defs/ethereum/networks.json @@ -65,6 +65,12 @@ "name": "Ethereum Classic Testnet", "url": "https://ethereumclassic.github.io" }, + { + "chain_id": 64, + "shortcut": "ELLA", + "name": "Ellaism", + "url": "https://ellaism.org" + }, { "chain_id": 1987, "shortcut": "EGEM", From bfcfabba250b2a6b8de2b005aaaafb21fa3dd912 Mon Sep 17 00:00:00 2001 From: oliverlikes <36271109+oliverlikes@users.noreply.github.com> Date: Fri, 25 May 2018 11:26:43 +0200 Subject: [PATCH 333/767] added links to coins_details.json --- coins_details.json | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/coins_details.json b/coins_details.json index b47725ba7..a294a9c42 100644 --- a/coins_details.json +++ b/coins_details.json @@ -805,17 +805,19 @@ "t2_enabled": "yes", "type": "erc20" }, - "erc20:eth:ARC": { + "erc20:eth:ARCD": { "address": "0xAc709FcB44a43c35F0DA4e3163b117A17F3770f5", "hidden": 1, "links": { + "Github": "https://github.com/swarmcity/ac-token", + "Homepage": "https://arcade.city/" "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, - "name": "ARC", + "name": "Arcade", "network": "eth", - "shortcut": "ARC", + "shortcut": "ARCD", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20" @@ -10131,4 +10133,4 @@ "updated_at": 1527240389, "updated_at_readable": "Fri May 25 11:26:29 2018" } -} \ No newline at end of file +} From 5b919e35950c7e2b26343873d2df7ebc320687b4 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 28 May 2018 12:57:12 +0200 Subject: [PATCH 334/767] ethereum: add slip44 entries to networks.json --- defs/ethereum/networks.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/defs/ethereum/networks.json b/defs/ethereum/networks.json index 73fe7fa02..2d7f69206 100644 --- a/defs/ethereum/networks.json +++ b/defs/ethereum/networks.json @@ -1,66 +1,77 @@ [ { "chain_id": 1, + "slip44": 60, "shortcut": "ETH", "name": "Ethereum", "url": "https://www.ethereum.org" }, { "chain_id": 2, + "slip44": 40, "shortcut": "EXP", "name": "Expanse", "url": "https://expanse.tech" }, { "chain_id": 3, + "slip44": 1, "shortcut": "tETH", "name": "Ethereum Testnet/Ropsten", "url": "https://www.ethereum.org" }, { "chain_id": 4, + "slip44": 1, "shortcut": "tETH", "name": "Ethereum Testnet/Rinkeby", "url": "https://www.ethereum.org" }, { "chain_id": 8, + "slip44": 108, "shortcut": "UBQ", "name": "UBIQ", "url": "https://ubiqsmart.com" }, { "chain_id": 28, + "slip44": 1128, "shortcut": "ETSC", "name": "Ethereum Social", "url": "https://ethereumsocial.kr" }, { "chain_id": 30, + "slip44": 137, "shortcut": "RSK", "name": "Rootstock", "url": "https://www.rsk.co" }, { "chain_id": 31, + "slip44": 1, "shortcut": "tRSK", "name": "Rootstock Testnet", "url": "https://www.rsk.co" }, { "chain_id": 42, + "slip44": 1, "shortcut": "tETH", "name": "Ethereum Testnet/Kovan", "url": "https://www.ethereum.org" }, { "chain_id": 61, + "slip44": 61, "shortcut": "ETC", "name": "Ethereum Classic", "url": "https://ethereumclassic.github.io" }, { "chain_id": 62, + "slip44": 1, "shortcut": "tETC", "name": "Ethereum Classic Testnet", "url": "https://ethereumclassic.github.io" @@ -73,6 +84,7 @@ }, { "chain_id": 1987, + "slip44": 1987, "shortcut": "EGEM", "name": "EtherGem", "url": "https://egem.io" From 3b689d42f8671f2a312ca1f39c593b9fc635f667 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 28 May 2018 12:59:43 +0200 Subject: [PATCH 335/767] coins_details: fix typo --- coins_details.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coins_details.json b/coins_details.json index e5c77f7fc..281434dc7 100644 --- a/coins_details.json +++ b/coins_details.json @@ -823,7 +823,7 @@ "hidden": 1, "links": { "Github": "https://github.com/swarmcity/ac-token", - "Homepage": "https://arcade.city/" + "Homepage": "https://arcade.city/", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, From e95227ef711c9d7ab58aab0a20c3134e1121861e Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 28 May 2018 14:54:49 +0200 Subject: [PATCH 336/767] ethereum: add CLO to networks --- defs/ethereum/networks.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/defs/ethereum/networks.json b/defs/ethereum/networks.json index 2d7f69206..8241ef6d9 100644 --- a/defs/ethereum/networks.json +++ b/defs/ethereum/networks.json @@ -78,10 +78,18 @@ }, { "chain_id": 64, + "slip44": 163, "shortcut": "ELLA", "name": "Ellaism", "url": "https://ellaism.org" }, + { + "chain_id": 820, + "slip44": 820, + "shortcut": "CLO", + "name": "Callisto", + "url": "https://callisto.network" + }, { "chain_id": 1987, "slip44": 1987, From a0d37a0371aba597d3e0f3f1055adf1a9683a5e4 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 28 May 2018 15:11:57 +0200 Subject: [PATCH 337/767] defs: add support.json; add json validators --- .travis.yml | 5 ++++- defs/support.json | 51 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 defs/support.json diff --git a/.travis.yml b/.travis.yml index 2ce7951f2..24d9bc518 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,10 +12,13 @@ python: - "3.5" install: - - pip install ed25519 Pillow + - pip install ed25519 Pillow demjson - pip install --no-deps trezor script: + - jsonlint coins.json + - jsonlint coins_details.json + - jsonlint defs/support.json - python coins-check.py - cd defs/coins/tools && python build_coins.py diff --git a/defs/support.json b/defs/support.json new file mode 100644 index 000000000..78f7b6892 --- /dev/null +++ b/defs/support.json @@ -0,0 +1,51 @@ +{ + "trezor1": { + "Bitcoin": "1.5.2", + "Testnet": "1.5.2", + "Bcash": "1.5.2", + "Namecoin": "1.5.2", + "Litecoin": "1.5.2", + "Dogecoin": "1.5.2", + "Dash": "1.5.2", + "Zcash": "1.5.2", + "Bgold": "1.6.0", + "DigiByte": "1.6.0", + "Monacoin": "1.6.0", + "Fujicoin": "1.6.1", + "Vertcoin": "1.6.1", + "Bcash Testnet": "1.5.2", + "Zcash Testnet": "1.5.2", + "Decred Testnet": "1.6.1" + }, + "trezor2": { + "Bitcoin": "2.0.5", + "Testnet": "2.0.5", + "Bcash": "2.0.5", + "Bcash Testnet": "2.0.5", + "Namecoin": "2.0.5", + "Litecoin": "2.0.5", + "Dogecoin": "2.0.5", + "Dash": "2.0.5", + "Zcash": "2.0.5", + "Zcash Testnet": "2.0.5", + "Bgold": "2.0.5", + "DigiByte": "2.0.5", + "Monacoin": "2.0.5", + "Fujicoin": "2.0.5", + "Vertcoin": "2.0.5" + }, + "webwallet": { + "Bitcoin": true, + "Bcash": true, + "Bgold": true, + "Dash": true, + "Litecoin": true, + "Zcash": true + }, + "electrum": { + "Bitcoin": "https://electrum.org/", + "Litecoin": "https://electrum-ltc.org", + "Bcash": "https://electroncash.org", + "Dash": "https://electrum.dash.org" + } +} From 374283df51f92c0c08b0a28c8a84d12b5591ebc5 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 29 May 2018 17:19:20 +0200 Subject: [PATCH 338/767] drop obsoleted coins.json (use defs/coins/) --- .travis.yml | 2 - coins-check.py | 45 ---- coins.json | 570 ------------------------------------------------- 3 files changed, 617 deletions(-) delete mode 100755 coins-check.py delete mode 100644 coins.json diff --git a/.travis.yml b/.travis.yml index 24d9bc518..52b7fc4d3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,10 +16,8 @@ install: - pip install --no-deps trezor script: - - jsonlint coins.json - jsonlint coins_details.json - jsonlint defs/support.json - - python coins-check.py - cd defs/coins/tools && python build_coins.py notifications: diff --git a/coins-check.py b/coins-check.py deleted file mode 100755 index 892026e84..000000000 --- a/coins-check.py +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/env python3 -import json - - -def is_hex(val): - try: - int(val, 16) - return True - except: - return False - - -for coin in json.load(open('coins.json')): - assert isinstance(coin['coin_name'], str) - assert isinstance(coin['coin_shortcut'], str) - assert isinstance(coin['coin_label'], str) - assert isinstance(coin['curve_name'], str) - assert isinstance(coin['address_type'], int) - assert isinstance(coin['address_type_p2sh'], int) - assert coin['address_type'] != coin['address_type_p2sh'] - assert isinstance(coin['maxfee_kb'], int) - assert isinstance(coin['minfee_kb'], int) - assert coin['maxfee_kb'] > coin['minfee_kb'] - assert coin['signed_message_header'] - assert is_hex(coin['hash_genesis_block']) - assert is_hex(coin['xprv_magic']) - assert is_hex(coin['xpub_magic']) - assert isinstance(coin['bip44'], int) - assert isinstance(coin['segwit'], bool) - assert isinstance(coin['decred'], bool) - assert coin['forkid'] is None or isinstance(coin['forkid'], int) - assert isinstance(coin['force_bip143'], bool) - assert coin['version_group_id'] is None or is_hex(coin['version_group_id']) - assert isinstance(coin['default_fee_b'], dict) - assert isinstance(coin['dust_limit'], int) - assert isinstance(coin['blocktime_minutes'], int) or isinstance(coin['blocktime_minutes'], float) - assert coin['firmware'] is None or coin['firmware'] in ['stable', 'debug'] - assert isinstance(coin['signed_message_header'], str) - assert isinstance(coin['min_address_length'], int) - assert isinstance(coin['max_address_length'], int) - assert isinstance(coin['bitcore'], list) - assert coin['xpub_magic_segwit_p2sh'] is None or is_hex(coin['xpub_magic_segwit_p2sh']) - assert coin['bech32_prefix'] is None or isinstance(coin['bech32_prefix'], str) - -print('OK') diff --git a/coins.json b/coins.json deleted file mode 100644 index a2349ec93..000000000 --- a/coins.json +++ /dev/null @@ -1,570 +0,0 @@ -[ -{ - "coin_name": "Bitcoin", - "coin_shortcut": "BTC", - "coin_label": "Bitcoin", - "curve_name": "secp256k1", - "address_type": 0, - "address_type_p2sh": 5, - "maxfee_kb": 2000000, - "minfee_kb": 1000, - "signed_message_header": "Bitcoin Signed Message:\n", - "hash_genesis_block": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", - "xprv_magic": "0488ade4", - "xpub_magic": "0488b21e", - "xpub_magic_segwit_p2sh": "049d7cb2", - "bech32_prefix": "bc", - "cashaddr_prefix": null, - "bip44": 0, - "segwit": true, - "decred": false, - "forkid": null, - "force_bip143": false, - "version_group_id": null, - "default_fee_b": { - "Low": 10, - "Economy": 70, - "Normal": 140, - "High": 200 - }, - "dust_limit": 546, - "blocktime_minutes": 10, - "firmware": "stable", - "address_prefix": "bitcoin:", - "min_address_length": 27, - "max_address_length": 34, - "bitcore": [ - "https://btc-bitcore3.trezor.io", - "https://btc-bitcore1.trezor.io" - ] -}, -{ - "coin_name": "Testnet", - "coin_shortcut": "TEST", - "coin_label": "Testnet", - "curve_name": "secp256k1", - "address_type": 111, - "address_type_p2sh": 196, - "maxfee_kb": 10000000, - "minfee_kb": 1000, - "signed_message_header": "Bitcoin Signed Message:\n", - "hash_genesis_block": "000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943", - "xprv_magic": "04358394", - "xpub_magic": "043587cf", - "xpub_magic_segwit_p2sh": "044a5262", - "bech32_prefix": "tb", - "cashaddr_prefix": null, - "bip44": 1, - "segwit": true, - "decred": false, - "forkid": null, - "force_bip143": false, - "version_group_id": null, - "default_fee_b": { - "Normal": 10 - }, - "dust_limit": 546, - "blocktime_minutes": 10, - "firmware": "stable", - "address_prefix": "bitcoin:", - "min_address_length": 27, - "max_address_length": 34, - "bitcore": [ - "https://testnet-bitcore1.trezor.io", - "https://testnet-bitcore2.trezor.io" - ] -}, -{ - "coin_name": "Bcash", - "coin_shortcut": "BCH", - "coin_label": "Bitcoin Cash", - "curve_name": "secp256k1", - "address_type": 0, - "address_type_p2sh": 5, - "maxfee_kb": 500000, - "minfee_kb": 1000, - "signed_message_header": "Bitcoin Signed Message:\n", - "hash_genesis_block": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", - "xprv_magic": "0488ade4", - "xpub_magic": "0488b21e", - "xpub_magic_segwit_p2sh": null, - "bech32_prefix": null, - "cashaddr_prefix": "bitcoincash", - "bip44": 145, - "segwit": false, - "decred": false, - "forkid": 0, - "force_bip143": true, - "version_group_id": null, - "default_fee_b": { - "Low": 10, - "Economy": 70, - "Normal": 140, - "High": 200 - }, - "dust_limit": 546, - "blocktime_minutes": 10, - "firmware": "stable", - "address_prefix": "bitcoincash:", - "min_address_length": 27, - "max_address_length": 34, - "bitcore": [ - "https://bch-bitcore2.trezor.io" - ] -}, -{ - "coin_name": "Bcash Testnet", - "coin_shortcut": "TBCH", - "coin_label": "Bitcoin Cash Testnet", - "curve_name": "secp256k1", - "address_type": 111, - "address_type_p2sh": 196, - "maxfee_kb": 10000000, - "minfee_kb": 1000, - "signed_message_header": "Bitcoin Signed Message:\n", - "hash_genesis_block": "000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943", - "xprv_magic": "04358394", - "xpub_magic": "043587cf", - "xpub_magic_segwit_p2sh": null, - "bech32_prefix": null, - "cashaddr_prefix": "bchtest", - "bip44": 1, - "segwit": false, - "decred": false, - "forkid": 0, - "force_bip143": true, - "version_group_id": null, - "default_fee_b": { - "Normal": 10 - }, - "dust_limit": 546, - "blocktime_minutes": 10, - "firmware": "debug", - "address_prefix": "bitcoincash:", - "min_address_length": 27, - "max_address_length": 34, - "bitcore": [] -}, -{ - "coin_name": "Namecoin", - "coin_shortcut": "NMC", - "coin_label": "Namecoin", - "curve_name": "secp256k1", - "address_type": 52, - "address_type_p2sh": 5, - "maxfee_kb": 10000000, - "minfee_kb": 1000, - "signed_message_header": "Namecoin Signed Message:\n", - "hash_genesis_block": "000000000062b72c5e2ceb45fbc8587e807c155b0da735e6483dfba2f0a9c770", - "xprv_magic": "019d9cfe", - "xpub_magic": "019da462", - "xpub_magic_segwit_p2sh": null, - "bech32_prefix": null, - "cashaddr_prefix": null, - "bip44": 7, - "segwit": false, - "decred": false, - "forkid": null, - "force_bip143": false, - "version_group_id": null, - "default_fee_b": { - "Normal": 10 - }, - "dust_limit": 2940, - "blocktime_minutes": 10, - "firmware": "stable", - "address_prefix": "namecoin:", - "min_address_length": 27, - "max_address_length": 34, - "bitcore": [] -}, -{ - "coin_name": "Litecoin", - "coin_shortcut": "LTC", - "coin_label": "Litecoin", - "curve_name": "secp256k1", - "address_type": 48, - "address_type_p2sh": 50, - "maxfee_kb": 40000000, - "minfee_kb": 100000, - "signed_message_header": "Litecoin Signed Message:\n", - "hash_genesis_block": "12a765e31ffd4059bada1e25190f6e98c99d9714d334efa41a195a7e7e04bfe2", - "xprv_magic": "019d9cfe", - "xpub_magic": "019da462", - "xpub_magic_segwit_p2sh": "01b26ef6", - "bech32_prefix": "ltc", - "cashaddr_prefix": null, - "bip44": 2, - "segwit": true, - "decred": false, - "forkid": null, - "force_bip143": false, - "version_group_id": null, - "default_fee_b": { - "Normal": 1000 - }, - "dust_limit": 54600, - "blocktime_minutes": 2.5, - "firmware": "stable", - "address_prefix": "litecoin:", - "min_address_length": 27, - "max_address_length": 34, - "bitcore": [ - "https://ltc-bitcore3.trezor.io" - ] -}, -{ - "coin_name": "Dogecoin", - "coin_shortcut": "DOGE", - "coin_label": "Dogecoin", - "curve_name": "secp256k1", - "address_type": 30, - "address_type_p2sh": 22, - "maxfee_kb": 1000000000, - "minfee_kb": 1000, - "signed_message_header": "Dogecoin Signed Message:\n", - "hash_genesis_block": "1a91e3dace36e2be3bf030a65679fe821aa1d6ef92e7c9902eb318182c355691", - "xprv_magic": "02fac398", - "xpub_magic": "02facafd", - "xpub_magic_segwit_p2sh": null, - "bech32_prefix": null, - "cashaddr_prefix": null, - "bip44": 3, - "segwit": false, - "decred": false, - "forkid": null, - "force_bip143": false, - "version_group_id": null, - "default_fee_b": { - "Normal": 10 - }, - "dust_limit": 10000000, - "blocktime_minutes": 1, - "firmware": "stable", - "address_prefix": "dogecoin:", - "min_address_length": 27, - "max_address_length": 34, - "bitcore": [] -}, -{ - "coin_name": "Dash", - "coin_shortcut": "DASH", - "coin_label": "Dash", - "curve_name": "secp256k1", - "address_type": 76, - "address_type_p2sh": 16, - "maxfee_kb": 100000, - "minfee_kb": 10000, - "signed_message_header": "DarkCoin Signed Message:\n", - "hash_genesis_block": "00000ffd590b1485b3caadc19b22e6379c733355108f107a430458cdf3407ab6", - "xprv_magic": "02fe52f8", - "xpub_magic": "02fe52cc", - "xpub_magic_segwit_p2sh": null, - "bech32_prefix": null, - "cashaddr_prefix": null, - "bip44": 5, - "segwit": false, - "decred": false, - "forkid": null, - "force_bip143": false, - "version_group_id": null, - "default_fee_b": { - "Normal": 10 - }, - "dust_limit": 5460, - "blocktime_minutes": 2.5, - "firmware": "stable", - "address_prefix": "dash:", - "min_address_length": 27, - "max_address_length": 34, - "bitcore": [ - "https://dash-bitcore1.trezor.io", - "https://dash-bitcore3.trezor.io" - ] -}, -{ - "coin_name": "Zcash", - "coin_shortcut": "ZEC", - "coin_label": "Zcash", - "curve_name": "secp256k1", - "address_type": 7352, - "address_type_p2sh": 7357, - "maxfee_kb": 1000000, - "minfee_kb": 1000, - "signed_message_header": "Zcash Signed Message:\n", - "hash_genesis_block": "00040fe8ec8471911baa1db1266ea15dd06b4a8a5c453883c000b031973dce08", - "xprv_magic": "0488ade4", - "xpub_magic": "0488b21e", - "xpub_magic_segwit_p2sh": null, - "bech32_prefix": null, - "cashaddr_prefix": null, - "bip44": 133, - "segwit": false, - "decred": false, - "forkid": null, - "force_bip143": false, - "version_group_id": null, - "default_fee_b": { - "Normal": 10 - }, - "dust_limit": 546, - "blocktime_minutes": 2.5, - "firmware": "stable", - "address_prefix": "zcash:", - "min_address_length": 35, - "max_address_length": 95, - "bitcore": [ - "https://zec-bitcore1.trezor.io/" - ] -}, -{ - "coin_name": "Zcash Testnet", - "coin_shortcut": "TAZ", - "coin_label": "Zcash Testnet", - "curve_name": "secp256k1", - "address_type": 7461, - "address_type_p2sh": 7354, - "maxfee_kb": 10000000, - "minfee_kb": 1000, - "signed_message_header": "Zcash Signed Message:\n", - "hash_genesis_block": "05a60a92d99d85997cce3b87616c089f6124d7342af37106edc76126334a2c38", - "xprv_magic": "04358394", - "xpub_magic": "043587cf", - "xpub_magic_segwit_p2sh": null, - "bech32_prefix": null, - "cashaddr_prefix": null, - "bip44": 1, - "segwit": false, - "decred": false, - "forkid": null, - "force_bip143": false, - "version_group_id": "03c48270", - "default_fee_b": { - "Normal": 10 - }, - "dust_limit": 546, - "blocktime_minutes": 2.5, - "firmware": "debug", - "address_prefix": "zcash:", - "min_address_length": 35, - "max_address_length": 95, - "bitcore": [] -}, -{ - "coin_name": "Bitcoin Gold", - "coin_shortcut": "BTG", - "coin_label": "Bitcoin Gold", - "curve_name": "secp256k1", - "address_type": 38, - "address_type_p2sh": 23, - "maxfee_kb": 500000, - "minfee_kb": 1000, - "signed_message_header": "Bitcoin Gold Signed Message:\n", - "hash_genesis_block": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", - "xprv_magic": "0488ade4", - "xpub_magic": "0488b21e", - "xpub_magic_segwit_p2sh": "049d7cb2", - "bech32_prefix": "btg", - "cashaddr_prefix": null, - "bip44": 156, - "segwit": true, - "decred": false, - "forkid": 79, - "force_bip143": true, - "version_group_id": null, - "default_fee_b": { - "Low": 10, - "Economy": 70, - "Normal": 140, - "High": 200 - }, - "dust_limit": 546, - "blocktime_minutes": 10, - "firmware": "stable", - "address_prefix": "bitcoingold:", - "min_address_length": 27, - "max_address_length": 34, - "bitcore": [ - "https://btg-bitcore2.trezor.io" - ] -}, -{ - "coin_name": "DigiByte", - "coin_shortcut": "DGB", - "coin_label": "DigiByte", - "curve_name": "secp256k1", - "address_type": 30, - "address_type_p2sh": 63, - "maxfee_kb": 500000, - "minfee_kb": 1000, - "signed_message_header": "DigiByte Signed Message:\n", - "hash_genesis_block": "7497ea1b465eb39f1c8f507bc877078fe016d6fcb6dfad3a64c98dcc6e1e8496", - "xprv_magic": "0488ade4", - "xpub_magic": "0488b21e", - "xpub_magic_segwit_p2sh": "049d7cb2", - "bech32_prefix": "dgb", - "cashaddr_prefix": null, - "bip44": 20, - "segwit": true, - "decred": false, - "forkid": null, - "force_bip143": false, - "version_group_id": null, - "default_fee_b": { - "Low": 10, - "Economy": 70, - "Normal": 140, - "High": 200 - }, - "dust_limit": 546, - "blocktime_minutes": 0.25, - "firmware": "stable", - "address_prefix": "digibyte:", - "min_address_length": 27, - "max_address_length": 34, - "bitcore": [ - "https://explorer.digibyteprojects.com" - ] -}, -{ - "coin_name": "Monacoin", - "coin_shortcut": "MONA", - "coin_label": "Monacoin", - "curve_name": "secp256k1", - "address_type": 50, - "address_type_p2sh": 55, - "maxfee_kb": 5000000, - "minfee_kb": 100000, - "signed_message_header": "Monacoin Signed Message:\n", - "hash_genesis_block": "ff9f1c0116d19de7c9963845e129f9ed1bfc0b376eb54fd7afa42e0d418c8bb6", - "xpub_magic": "0488b21e", - "xprv_magic": "0488ade4", - "xpub_magic_segwit_p2sh": "049d7cb2", - "bech32_prefix": "mona", - "cashaddr_prefix": null, - "bip44": 22, - "segwit": true, - "decred": false, - "forkid": null, - "force_bip143": false, - "version_group_id": null, - "default_fee_b": { - "Normal": 100000 - }, - "dust_limit": 54600, - "blocktime_minutes": 1.5, - "firmware": "stable", - "address_prefix": "monacoin:", - "min_address_length": 27, - "max_address_length": 34, - "bitcore": [ - "https://mona.chainsight.info" - ] -}, -{ - "coin_name": "Fujicoin", - "coin_shortcut": "FJC", - "coin_label": "Fujicoin", - "curve_name": "secp256k1", - "address_type": 36, - "address_type_p2sh": 16, - "maxfee_kb": 1000000, - "minfee_kb": 100000, - "signed_message_header": "FujiCoin Signed Message:\n", - "hash_genesis_block": "adb6d9cfd74075e7f91608add4bd2a2ea636f70856183086842667a1597714a0", - "xpub_magic": "0488b21e", - "xprv_magic": "0488ade4", - "xpub_magic_segwit_p2sh": "049d7cb2", - "bech32_prefix": "fc", - "cashaddr_prefix": null, - "bip44": 75, - "segwit": true, - "decred": false, - "forkid": null, - "force_bip143": false, - "version_group_id": null, - "default_fee_b": { - "Low": 100000, - "Economy": 200000, - "Normal": 500000, - "High": 1000000 - }, - "dust_limit": 100000, - "blocktime_minutes": 1.0, - "firmware": "stable", - "address_prefix": "fujicoin:", - "min_address_length": 27, - "max_address_length": 34, - "bitcore": [ - "http://explorer.fujicoin.org/" - ] -}, -{ - "coin_name": "Vertcoin", - "coin_shortcut": "VTC", - "coin_label": "Vertcoin", - "curve_name": "secp256k1", - "address_type": 71, - "address_type_p2sh": 5, - "maxfee_kb": 40000000, - "minfee_kb": 100000, - "signed_message_header": "Vertcoin Signed Message:\n", - "hash_genesis_block": "4d96a915f49d40b1e5c2844d1ee2dccb90013a990ccea12c492d22110489f0c4", - "xprv_magic": "0488ade4", - "xpub_magic": "0488b21e", - "xpub_magic_segwit_p2sh": "049d7cb2", - "bech32_prefix": "vtc", - "cashaddr_prefix": null, - "bip44": 28, - "segwit": true, - "decred": false, - "forkid": null, - "force_bip143": false, - "version_group_id": null, - "default_fee_b": { - "Normal": 1000 - }, - "dust_limit": 54600, - "blocktime_minutes": 2.5, - "firmware": "stable", - "address_prefix": "vertcoin:", - "min_address_length": 27, - "max_address_length": 34, - "bitcore": [] -}, -{ - "coin_name": "Decred Testnet", - "coin_shortcut": "TDCR", - "coin_label": "Testnet", - "curve_name": "secp256k1_decred", - "address_type": 3873, - "address_type_p2sh": 3836, - "maxfee_kb": 10000000, - "minfee_kb": 1000, - "signed_message_header": "Decred Signed Message:\n", - "hash_genesis_block": "4261602a9d07d80ad47621a64ba6a07754902e496777edc4ff581946bd7bc29c", - "xprv_magic": "04358397", - "xpub_magic": "043587d1", - "xpub_magic_segwit_p2sh": null, - "bech32_prefix": null, - "cashaddr_prefix": null, - "bip44": 1, - "segwit": false, - "decred": true, - "forkid": null, - "force_bip143": false, - "version_group_id": null, - "default_fee_b": { - "Normal": 10 - }, - "dust_limit": 546, - "blocktime_minutes": 10, - "firmware": "debug", - "address_prefix": "bitcoin:", - "min_address_length": 35, - "max_address_length": 35, - "bitcore": [ - "https://testnet.decred.org" - ] -} -] From 70ad6838207fa0e8b730d233d4eac25ae0f2363b Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 30 May 2018 11:10:54 +0200 Subject: [PATCH 339/767] defs: fix build_coins.py --- defs/coins/tools/build_coins.py | 4 ++-- defs/support.json | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/defs/coins/tools/build_coins.py b/defs/coins/tools/build_coins.py index ec27a1a4f..da1d6a600 100755 --- a/defs/coins/tools/build_coins.py +++ b/defs/coins/tools/build_coins.py @@ -164,5 +164,5 @@ for fn in glob.glob('../*.json'): defs[n] = d -json.dump(coins, open('../../coins.json', 'w'), indent=4, sort_keys=True) -json.dump(defs, open('../../coindefs.json', 'w'), indent=4, sort_keys=True) +json.dump(coins, open('coins.json', 'w'), indent=4, sort_keys=True) +json.dump(defs, open('coindefs.json', 'w'), indent=4, sort_keys=True) diff --git a/defs/support.json b/defs/support.json index 78f7b6892..eda792511 100644 --- a/defs/support.json +++ b/defs/support.json @@ -34,6 +34,14 @@ "Fujicoin": "2.0.5", "Vertcoin": "2.0.5" }, + "connect": { + "Bitcoin": true, + "Bcash": true, + "Bgold": true, + "Dash": true, + "Litecoin": true, + "Zcash": true + }, "webwallet": { "Bitcoin": true, "Bcash": true, From 714c33b1427c0921c5d8259a93f354628180014f Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 30 May 2018 11:24:07 +0200 Subject: [PATCH 340/767] defs: small changes to build_coins.py --- defs/coins/tools/build_coins.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/defs/coins/tools/build_coins.py b/defs/coins/tools/build_coins.py index da1d6a600..3564604d4 100755 --- a/defs/coins/tools/build_coins.py +++ b/defs/coins/tools/build_coins.py @@ -3,6 +3,7 @@ import json import glob import re +import os from hashlib import sha256 from binascii import unhexlify @@ -157,7 +158,8 @@ def process_json(fn): coins = {} defs = {} -for fn in glob.glob('../*.json'): +scriptdir = os.path.dirname(os.path.realpath(__file__)) +for fn in glob.glob(scriptdir + '/../*.json'): c, d = process_json(fn) n = c['coin_name'] coins[n] = c @@ -165,4 +167,4 @@ for fn in glob.glob('../*.json'): json.dump(coins, open('coins.json', 'w'), indent=4, sort_keys=True) -json.dump(defs, open('coindefs.json', 'w'), indent=4, sort_keys=True) +# json.dump(defs, open('coindefs.json', 'w'), indent=4, sort_keys=True) From aed1d7632f5ad309db8a10f9c8f597f320e83aa5 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 30 May 2018 11:51:25 +0200 Subject: [PATCH 341/767] defs: refactor build_coins.py --- defs/coins/tools/build_coins.py | 49 +++++++++++++++++++-------------- 1 file changed, 29 insertions(+), 20 deletions(-) diff --git a/defs/coins/tools/build_coins.py b/defs/coins/tools/build_coins.py index 3564604d4..fbb76673c 100755 --- a/defs/coins/tools/build_coins.py +++ b/defs/coins/tools/build_coins.py @@ -4,17 +4,21 @@ import json import glob import re import os -from hashlib import sha256 -from binascii import unhexlify +import sys -import ed25519 -from PIL import Image +if '--defs' in sys.argv: + from binascii import unhexlify + from hashlib import sha256 + import ed25519 + from PIL import Image + from trezorlib.protobuf import dump_message + from coindef import CoinDef + BUILD_DEFS = True +else: + BUILD_DEFS = False -from trezorlib.protobuf import dump_message -from coindef import CoinDef - -def check_type(val, types, nullable=False, empty=False, regex=None, choice=None): +def check_type(val, types, nullable=False, empty=False, regex=None, choice=None): # noqa:E501 # check nullable if nullable and val is None: return True @@ -47,9 +51,9 @@ def validate_coin(coin): assert check_type(coin['coin_shortcut'], str, regex=r'^[A-Zt][A-Z][A-Z]+$') assert check_type(coin['coin_label'], str, regex=r'^[A-Z]') assert check_type(coin['website'], str, regex=r'^http.*[^/]$') - assert check_type(coin['github'], str, regex=r'^https://github.com/.*[^/]$') + assert check_type(coin['github'], str, regex=r'^https://github.com/.*[^/]$') # noqa:E501 assert check_type(coin['maintainer'], str) - assert check_type(coin['curve_name'], str, choice=['secp256k1', 'secp256k1_decred', 'secp256k1_groestl']) + assert check_type(coin['curve_name'], str, choice=['secp256k1', 'secp256k1_decred', 'secp256k1_groestl']) # noqa:E501 assert check_type(coin['address_type'], int) assert check_type(coin['address_type_p2sh'], int) assert coin['address_type'] != coin['address_type_p2sh'] @@ -66,7 +70,7 @@ def validate_coin(coin): assert coin['xprv_magic'] != coin['xpub_magic_segwit_native'] assert coin['xpub_magic'] != coin['xpub_magic_segwit_p2sh'] assert coin['xpub_magic'] != coin['xpub_magic_segwit_native'] - assert coin['xpub_magic_segwit_p2sh'] is None or coin['xpub_magic_segwit_native'] is None or coin['xpub_magic_segwit_p2sh'] != coin['xpub_magic_segwit_native'] + assert coin['xpub_magic_segwit_p2sh'] is None or coin['xpub_magic_segwit_native'] is None or coin['xpub_magic_segwit_p2sh'] != coin['xpub_magic_segwit_native'] # noqa:E501 assert check_type(coin['slip44'], int) assert check_type(coin['segwit'], bool) assert check_type(coin['decred'], bool) @@ -146,14 +150,18 @@ def convert_icon(icon): def process_json(fn): print(fn, end=' ... ') j = json.load(open(fn)) - i = Image.open(fn.replace('.json', '.png')) - validate_coin(j) - validate_icon(i) - ser = serialize(j, convert_icon(i)) - sig = sign(ser) - definition = (sig + ser).hex() - print('OK') - return j, definition + if BUILD_DEFS: + i = Image.open(fn.replace('.json', '.png')) + validate_coin(j) + validate_icon(i) + ser = serialize(j, convert_icon(i)) + sig = sign(ser) + definition = (sig + ser).hex() + print('OK') + return j, definition + else: + print('OK') + return j, None coins = {} @@ -167,4 +175,5 @@ for fn in glob.glob(scriptdir + '/../*.json'): json.dump(coins, open('coins.json', 'w'), indent=4, sort_keys=True) -# json.dump(defs, open('coindefs.json', 'w'), indent=4, sort_keys=True) +if BUILD_DEFS: + json.dump(defs, open('coindefs.json', 'w'), indent=4, sort_keys=True) From 8ea2d044785b2285c4390b3afddb08e8d093cc8e Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 30 May 2018 13:39:19 +0200 Subject: [PATCH 342/767] defs: add filter to build_coins.py --- defs/coins/tools/build_coins.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/defs/coins/tools/build_coins.py b/defs/coins/tools/build_coins.py index fbb76673c..d5f83de21 100755 --- a/defs/coins/tools/build_coins.py +++ b/defs/coins/tools/build_coins.py @@ -148,7 +148,7 @@ def convert_icon(icon): def process_json(fn): - print(fn, end=' ... ') + print(os.path.basename(fn), end=' ... ') j = json.load(open(fn)) if BUILD_DEFS: i = Image.open(fn.replace('.json', '.png')) @@ -164,14 +164,24 @@ def process_json(fn): return j, None +scriptdir = os.path.dirname(os.path.realpath(__file__)) + + +if len(sys.argv) > 1 and not sys.argv[1].startswith('-'): + support_json = json.load(open(scriptdir + '/../../support.json')) + support_list = support_json[sys.argv[1]].keys() +else: + support_list = None + + coins = {} defs = {} -scriptdir = os.path.dirname(os.path.realpath(__file__)) for fn in glob.glob(scriptdir + '/../*.json'): c, d = process_json(fn) n = c['coin_name'] - coins[n] = c - defs[n] = d + if support_list is None or n in support_list: + coins[n] = c + defs[n] = d json.dump(coins, open('coins.json', 'w'), indent=4, sort_keys=True) From 5520e98f4ab3ffb3ca347b1bfe417c5a380b9cbf Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 5 Jun 2018 11:07:21 +0200 Subject: [PATCH 343/767] defs/coins: fix parameters for zcash and zcash testnet --- defs/coins/zcash.json | 2 +- defs/coins/zcash_testnet.json | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/defs/coins/zcash.json b/defs/coins/zcash.json index 336c110c4..c5704e730 100644 --- a/defs/coins/zcash.json +++ b/defs/coins/zcash.json @@ -23,7 +23,7 @@ "decred": false, "fork_id": null, "force_bip143": false, - "version_group_id": null, + "version_group_id": 63210096, "default_fee_b": { "Normal": 10 }, diff --git a/defs/coins/zcash_testnet.json b/defs/coins/zcash_testnet.json index 8a0ff7188..5160b0b47 100644 --- a/defs/coins/zcash_testnet.json +++ b/defs/coins/zcash_testnet.json @@ -32,6 +32,8 @@ "address_prefix": "zcash:", "min_address_length": 35, "max_address_length": 95, - "bitcore": [], + "bitcore": [ + "https://explorer.testnet.z.cash" + ], "blockbook": [] } From aa9f46c9abee6ea0d856c91d5fcb8b064d237994 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 5 Jun 2018 12:50:57 +0200 Subject: [PATCH 344/767] defs: coins/tools - add support field to generated coins.json --- defs/coins/tools/build_coins.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/defs/coins/tools/build_coins.py b/defs/coins/tools/build_coins.py index d5f83de21..4e89777ba 100755 --- a/defs/coins/tools/build_coins.py +++ b/defs/coins/tools/build_coins.py @@ -167,18 +167,20 @@ def process_json(fn): scriptdir = os.path.dirname(os.path.realpath(__file__)) +support_json = json.load(open(scriptdir + '/../../support.json')) if len(sys.argv) > 1 and not sys.argv[1].startswith('-'): - support_json = json.load(open(scriptdir + '/../../support.json')) support_list = support_json[sys.argv[1]].keys() else: support_list = None - coins = {} defs = {} for fn in glob.glob(scriptdir + '/../*.json'): c, d = process_json(fn) n = c['coin_name'] + c['support'] = {} + for s in support_json.keys(): + c['support'][s] = support_json[s][n] if n in support_json[s] else None if support_list is None or n in support_list: coins[n] = c defs[n] = d From 0f7118bb3d27c3c51a89c776c1b083db91f50541 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 5 Jun 2018 13:31:07 +0200 Subject: [PATCH 345/767] protob: add missing flags for decred and zcash --- protob/messages.proto | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/protob/messages.proto b/protob/messages.proto index 62d8300fc..02392bd54 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -655,7 +655,8 @@ message SignTx { optional string coin_name = 3 [default='Bitcoin']; // coin to use optional uint32 version = 4 [default=1]; // transaction version optional uint32 lock_time = 5 [default=0]; // transaction lock_time - optional uint32 decred_expiry = 6; + optional uint32 decred_expiry = 6; // only for Decred + optional bool overwintered = 7; // only for Zcash } /** @@ -674,6 +675,8 @@ message SimpleSignTx { optional string coin_name = 4 [default='Bitcoin']; // coin to use optional uint32 version = 5 [default=1]; // transaction version optional uint32 lock_time = 6 [default=0]; // transaction lock_time + optional uint32 decred_expiry = 7; // only for Decred + optional bool overwintered = 8; // only for Zcash } /** From 018eebac7e64ed082486d746d78d279fe815c65d Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 5 Jun 2018 14:06:59 +0200 Subject: [PATCH 346/767] protob: rename decred_expiry to expiry (so we can use this field for Zcash too) --- protob/messages.proto | 4 ++-- protob/types.proto | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/protob/messages.proto b/protob/messages.proto index 02392bd54..01e7e1e57 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -655,7 +655,7 @@ message SignTx { optional string coin_name = 3 [default='Bitcoin']; // coin to use optional uint32 version = 4 [default=1]; // transaction version optional uint32 lock_time = 5 [default=0]; // transaction lock_time - optional uint32 decred_expiry = 6; // only for Decred + optional uint32 expiry = 6; // only for Decred and Zcash optional bool overwintered = 7; // only for Zcash } @@ -675,7 +675,7 @@ message SimpleSignTx { optional string coin_name = 4 [default='Bitcoin']; // coin to use optional uint32 version = 5 [default=1]; // transaction version optional uint32 lock_time = 6 [default=0]; // transaction lock_time - optional uint32 decred_expiry = 7; // only for Decred + optional uint32 expiry = 7; // only for Decred and Zcash optional bool overwintered = 8; // only for Zcash } diff --git a/protob/types.proto b/protob/types.proto index 2f408bfaa..1593e4a5b 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -226,9 +226,9 @@ message TransactionType { optional uint32 lock_time = 4; optional uint32 inputs_cnt = 6; optional uint32 outputs_cnt = 7; - optional bytes extra_data = 8; - optional uint32 extra_data_len = 9; - optional uint32 decred_expiry = 10; // only for Decred + optional bytes extra_data = 8; // only for Zcash + optional uint32 extra_data_len = 9; // only for Zcash + optional uint32 expiry = 10; // only for Decred and Zcash optional bool overwintered = 11; // only for Zcash } From 6d87bdcd579d53adc17e1ec67199434645e5a0aa Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 5 Jun 2018 14:25:00 +0200 Subject: [PATCH 347/767] defs: rename ethereum networks --- defs/ethereum/networks.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/defs/ethereum/networks.json b/defs/ethereum/networks.json index 8241ef6d9..a13d8219c 100644 --- a/defs/ethereum/networks.json +++ b/defs/ethereum/networks.json @@ -17,14 +17,14 @@ "chain_id": 3, "slip44": 1, "shortcut": "tETH", - "name": "Ethereum Testnet/Ropsten", + "name": "Ethereum Testnet Ropsten", "url": "https://www.ethereum.org" }, { "chain_id": 4, "slip44": 1, "shortcut": "tETH", - "name": "Ethereum Testnet/Rinkeby", + "name": "Ethereum Testnet Rinkeby", "url": "https://www.ethereum.org" }, { @@ -59,7 +59,7 @@ "chain_id": 42, "slip44": 1, "shortcut": "tETH", - "name": "Ethereum Testnet/Kovan", + "name": "Ethereum Testnet Kovan", "url": "https://www.ethereum.org" }, { From 239ee399c06cde74c4cec7b05fcb8d9e8167bc5f Mon Sep 17 00:00:00 2001 From: EOS Classic Date: Wed, 6 Jun 2018 17:16:51 +0900 Subject: [PATCH 348/767] Add EOS Classic network support (#119) As per https://github.com/satoshilabs/slips/pull/279 --- coins_details.json | 13 +++++++++++++ coins_details.py | 8 ++++++++ defs/ethereum/networks.json | 7 +++++++ 3 files changed, 28 insertions(+) diff --git a/coins_details.json b/coins_details.json index 281434dc7..b78a26e56 100644 --- a/coins_details.json +++ b/coins_details.json @@ -65,6 +65,19 @@ "t2_enabled": "yes", "type": "coin" }, + "coin2:EOSC": { + "links": { + "Homepage": "https://eos-classic.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "EOS Classic", + "shortcut": "EOSC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin" + }, "coin2:LSK": { "links": { "Homepage": "https://lisk.io/" diff --git a/coins_details.py b/coins_details.py index f02182124..c3ad2fd88 100755 --- a/coins_details.py +++ b/coins_details.py @@ -235,6 +235,14 @@ def update_ethereum(details): set_default(out, 't2_enabled', 'yes') update_marketcap(out, 'etsc') + ut = details['coins'].setdefault('coin2:EOSC', {}) + out['type'] = 'coin' + set_default(out, 'shortcut', 'EOSC') + set_default(out, 'name', 'EOS Classic') + set_default(out, 't1_enabled', 'yes') + set_default(out, 't2_enabled', 'yes') + update_marketcap(out, 'eosc') + def update_mosaics(details): d = json.load(open('defs/nem/nem_mosaics.json')) supported = [] diff --git a/defs/ethereum/networks.json b/defs/ethereum/networks.json index a13d8219c..c7d8a0ee6 100644 --- a/defs/ethereum/networks.json +++ b/defs/ethereum/networks.json @@ -96,5 +96,12 @@ "shortcut": "EGEM", "name": "EtherGem", "url": "https://egem.io" + }, + { + "chain_id": 2018, + "slip44": 2018, + "shortcut": "EOSC", + "name": "EOS Classic", + "url": "https://eos-classic.io" } ] From 18f7dee11871612d7d51b1027ae6d9b76655b340 Mon Sep 17 00:00:00 2001 From: alepop Date: Thu, 7 Jun 2018 14:48:47 +0300 Subject: [PATCH 349/767] protob: restore Lisk {SignMessage, MessageSignature, VerifyMessage} (#120) --- protob/messages.proto | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/protob/messages.proto b/protob/messages.proto index 01e7e1e57..549a1a53b 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -105,6 +105,9 @@ enum MessageType { MessageType_LiskAddress = 115 [(wire_out) = true]; MessageType_LiskSignTx = 116 [(wire_in) = true]; MessageType_LiskSignedTx = 117 [(wire_out) = true]; + MessageType_LiskSignMessage = 118 [(wire_in) = true]; + MessageType_LiskMessageSignature = 119 [(wire_out) = true]; + MessageType_LiskVerifyMessage = 120 [(wire_in) = true]; MessageType_LiskGetPublicKey = 121 [(wire_in) = true]; MessageType_LiskPublicKey = 122 [(wire_out) = true]; @@ -1297,6 +1300,36 @@ message LiskSignedTx { optional bytes signature = 1; } +/** +* Request: Ask device to sign message +* @next LiskMessageSignature +* @next Failure +*/ +message LiskSignMessage { + repeated uint32 address_n = 1; + optional bytes message = 2; +} + +/** +* Response: Signed message +* @prev LiskSignMessage +*/ +message LiskMessageSignature { + optional bytes public_key = 1; + optional bytes signature = 2; +} + +/** +* Request: Ask device to verify message +* @next Success +* @next Failure +*/ +message LiskVerifyMessage { + optional bytes signature = 1; + optional bytes public_key = 2; + optional bytes message = 3; +} + ///////////////////////////////////////////////////////////// // Debug messages (only available if DebugLink is enabled) // ///////////////////////////////////////////////////////////// From babc60a48ec95df8de0ddd11b9d7e24b0e7e1d46 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 7 Jun 2018 13:51:37 +0200 Subject: [PATCH 350/767] protob: reorder fields in LiskVerifyMessage to match VerifyMessage --- protob/messages.proto | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/protob/messages.proto b/protob/messages.proto index 549a1a53b..010365434 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -1325,8 +1325,8 @@ message LiskMessageSignature { * @next Failure */ message LiskVerifyMessage { - optional bytes signature = 1; - optional bytes public_key = 2; + optional bytes public_key = 1; + optional bytes signature = 2; optional bytes message = 3; } From 98300ea5db9b816dfd9a6bc7d1fed7f40457ab63 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 8 Jun 2018 13:15:36 +0200 Subject: [PATCH 351/767] coins_details: EOS is not ERC-20 anymore --- coins_details.json | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/coins_details.json b/coins_details.json index b78a26e56..7f41a0b18 100644 --- a/coins_details.json +++ b/coins_details.json @@ -3565,22 +3565,6 @@ "t2_enabled": "yes", "type": "erc20" }, - "erc20:eth:EOS": { - "address": "0x86Fa049857E0209aa7D9e616F7eb3b3B78ECfdb0", - "links": { - "Github": "https://github.com/eosio", - "Homepage": "https://eos.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - }, - "marketcap_usd": 10757511883, - "name": "EOS", - "network": "eth", - "shortcut": "EOS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20" - }, "erc20:eth:EPX": { "address": "0x35BAA72038F127f9f8C8f9B491049f64f377914d", "links": { From 6ac200abce208c8a2eb59cd3790d4f13ec2d93b4 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 8 Jun 2018 14:15:47 +0200 Subject: [PATCH 352/767] defs: add detection of colliding address versions --- defs/coins/tools/build_coins.py | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/defs/coins/tools/build_coins.py b/defs/coins/tools/build_coins.py index 4e89777ba..bef69bcaa 100755 --- a/defs/coins/tools/build_coins.py +++ b/defs/coins/tools/build_coins.py @@ -185,7 +185,33 @@ for fn in glob.glob(scriptdir + '/../*.json'): coins[n] = c defs[n] = d - json.dump(coins, open('coins.json', 'w'), indent=4, sort_keys=True) if BUILD_DEFS: json.dump(defs, open('coindefs.json', 'w'), indent=4, sort_keys=True) + +# check for colliding address versions +at_p2pkh = {} +at_p2sh = {} + +for n, c in coins.items(): + if c['cashaddr_prefix']: # skip cashaddr currencies + continue + a1, a2 = c['address_type'], c['address_type_p2sh'] + if a1 not in at_p2pkh: + at_p2pkh[a1] = [] + if a2 not in at_p2sh: + at_p2sh[a2] = [] + at_p2pkh[a1].append(n) + at_p2sh[a2].append(n) + +print() +print('Colliding address_types for P2PKH:') +for k, v in at_p2pkh.items(): + if len(v) > 2: + print('-', k, ':', ','.join(v)) + +print() +print('Colliding address_types for P2SH:') +for k, v in at_p2sh.items(): + if len(v) > 2: + print('-', k, ':', ','.join(v)) From 55dc5c8f185a397d66fc0c63f39bdd32549fe040 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20B=C3=ADlek?= Date: Fri, 8 Jun 2018 16:31:57 +0200 Subject: [PATCH 353/767] Add comments about build_coins.py (#121) --- defs/coins/tools/build_coins.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/defs/coins/tools/build_coins.py b/defs/coins/tools/build_coins.py index bef69bcaa..38fb2225c 100755 --- a/defs/coins/tools/build_coins.py +++ b/defs/coins/tools/build_coins.py @@ -1,5 +1,14 @@ #!/usr/bin/env python3 +# This script generates coins.json files from the definitions in defs/ +# +# - `./build_coins.py` generates a big file with everything +# - `./build_coins.py XXX` generates a file with coins that are supported by XXX +# for example: `./build_coins.py webwallet` or `./build_coins.py trezor1` +# - `./build_coins.py XXX --defs` also adds protobuf definitions with TOIF icon +# +# generated file is coins.json in current directory, and coindefs.json if --def is enabled + import json import glob import re From a4b2331462d2d11296b1e8160cc4c29e9721c811 Mon Sep 17 00:00:00 2001 From: Kefkius Date: Sun, 10 Jun 2018 16:26:31 -0400 Subject: [PATCH 354/767] Add groestlcoin testnet (#124) --- defs/coins/groestlcoin_testnet.json | 37 ++++++++++++++++++++++++++++ defs/coins/groestlcoin_testnet.png | Bin 0 -> 5132 bytes 2 files changed, 37 insertions(+) create mode 100644 defs/coins/groestlcoin_testnet.json create mode 100644 defs/coins/groestlcoin_testnet.png diff --git a/defs/coins/groestlcoin_testnet.json b/defs/coins/groestlcoin_testnet.json new file mode 100644 index 000000000..2550c36b3 --- /dev/null +++ b/defs/coins/groestlcoin_testnet.json @@ -0,0 +1,37 @@ +{ + "coin_name": "Groestlcoin Testnet", + "coin_shortcut": "tGRS", + "coin_label": "Groestlcoin Testnet", + "website": "https://www.groestlcoin.org", + "github": "https://github.com/Groestlcoin/groestlcoin", + "maintainer": "Yura Pakhuchiy ", + "curve_name": "secp256k1_groestl", + "address_type": 111, + "address_type_p2sh": 196, + "maxfee_kb": 100000, + "minfee_kb": 1000, + "signed_message_header": "GroestlCoin Signed Message:\n", + "hash_genesis_block": "000000ffbb50fc9898cdd36ec163e6ba23230164c0052a28876255b7dcf2cd36", + "xprv_magic": 70615956, + "xpub_magic": 70617039, + "xpub_magic_segwit_p2sh": 71979618, + "xpub_magic_segwit_native": null, + "bech32_prefix": "tgrs", + "cashaddr_prefix": null, + "slip44": 1, + "segwit": true, + "decred": false, + "fork_id": null, + "force_bip143": false, + "version_group_id": null, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 546, + "blocktime_seconds": 60, + "address_prefix": "groestlcoin:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [], + "blockbook": [] +} diff --git a/defs/coins/groestlcoin_testnet.png b/defs/coins/groestlcoin_testnet.png new file mode 100644 index 0000000000000000000000000000000000000000..68ffd86e2ea466967daf63111f1afdb1991b7616 GIT binary patch literal 5132 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 Date: Sun, 10 Jun 2018 16:27:17 -0400 Subject: [PATCH 355/767] Add groestlcoin native segwit header (#125) --- defs/coins/groestlcoin.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/defs/coins/groestlcoin.json b/defs/coins/groestlcoin.json index 8fa053130..49be14632 100644 --- a/defs/coins/groestlcoin.json +++ b/defs/coins/groestlcoin.json @@ -15,7 +15,7 @@ "xprv_magic": 76066276, "xpub_magic": 76067358, "xpub_magic_segwit_p2sh": 77429938, - "xpub_magic_segwit_native": null, + "xpub_magic_segwit_native": 78792518, "bech32_prefix": "grs", "cashaddr_prefix": null, "slip44": 17, From 7be980ae9651b990d497355a5978abb9a9d0d152 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Sun, 10 Jun 2018 22:41:18 +0200 Subject: [PATCH 356/767] defs/coins: fix slip44 values --- defs/coins/bitcore.json | 2 +- defs/coins/monetaryunit.json | 2 +- defs/coins/terracoin.json | 2 +- defs/coins/tools/build_coins.py | 21 +++++++++++++++++---- 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/defs/coins/bitcore.json b/defs/coins/bitcore.json index 8bf54fcf6..909be5270 100644 --- a/defs/coins/bitcore.json +++ b/defs/coins/bitcore.json @@ -18,7 +18,7 @@ "xpub_magic_segwit_native": null, "bech32_prefix": "bc", "cashaddr_prefix": null, - "slip44": 0, + "slip44": 160, "segwit": true, "decred": false, "fork_id": null, diff --git a/defs/coins/monetaryunit.json b/defs/coins/monetaryunit.json index 875681226..4d7d77ae1 100644 --- a/defs/coins/monetaryunit.json +++ b/defs/coins/monetaryunit.json @@ -18,7 +18,7 @@ "xpub_magic_segwit_native": null, "bech32_prefix": null, "cashaddr_prefix": null, - "slip44": 5, + "slip44": 31, "segwit": false, "decred": false, "fork_id": null, diff --git a/defs/coins/terracoin.json b/defs/coins/terracoin.json index d9844d886..8086a7c98 100644 --- a/defs/coins/terracoin.json +++ b/defs/coins/terracoin.json @@ -18,7 +18,7 @@ "xpub_magic_segwit_native": null, "bech32_prefix": null, "cashaddr_prefix": null, - "slip44": 0, + "slip44": 83, "segwit": false, "decred": false, "fork_id": null, diff --git a/defs/coins/tools/build_coins.py b/defs/coins/tools/build_coins.py index 38fb2225c..cb6a9acb3 100755 --- a/defs/coins/tools/build_coins.py +++ b/defs/coins/tools/build_coins.py @@ -3,11 +3,12 @@ # This script generates coins.json files from the definitions in defs/ # # - `./build_coins.py` generates a big file with everything -# - `./build_coins.py XXX` generates a file with coins that are supported by XXX +# - `./build_coins.py XXX` generates a file with coins supported by XXX # for example: `./build_coins.py webwallet` or `./build_coins.py trezor1` # - `./build_coins.py XXX --defs` also adds protobuf definitions with TOIF icon # -# generated file is coins.json in current directory, and coindefs.json if --def is enabled +# generated file is coins.json in current directory, +# and coindefs.json if --def is enabled import json import glob @@ -201,8 +202,14 @@ if BUILD_DEFS: # check for colliding address versions at_p2pkh = {} at_p2sh = {} +slip44 = {} for n, c in coins.items(): + s = c['slip44'] + if s not in slip44: + slip44[s] = [] + if not(n.endswith('Testnet') and s == 1): + slip44[s].append(n) if c['cashaddr_prefix']: # skip cashaddr currencies continue a1, a2 = c['address_type'], c['address_type_p2sh'] @@ -216,11 +223,17 @@ for n, c in coins.items(): print() print('Colliding address_types for P2PKH:') for k, v in at_p2pkh.items(): - if len(v) > 2: + if len(v) >= 2: print('-', k, ':', ','.join(v)) print() print('Colliding address_types for P2SH:') for k, v in at_p2sh.items(): - if len(v) > 2: + if len(v) >= 2: + print('-', k, ':', ','.join(v)) + +print() +print('Colliding SLIP44 constants:') +for k, v in slip44.items(): + if len(v) >= 2: print('-', k, ':', ','.join(v)) From bd5d543399b7dee8dfaeea1091530783fa7ed75a Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 11 Jun 2018 13:14:37 +0200 Subject: [PATCH 357/767] defs: due to changes in Bcash/Zcash, require recent versions of FW --- defs/support.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/defs/support.json b/defs/support.json index eda792511..6470ab966 100644 --- a/defs/support.json +++ b/defs/support.json @@ -2,32 +2,32 @@ "trezor1": { "Bitcoin": "1.5.2", "Testnet": "1.5.2", - "Bcash": "1.5.2", + "Bcash": "1.6.2", "Namecoin": "1.5.2", "Litecoin": "1.5.2", "Dogecoin": "1.5.2", "Dash": "1.5.2", - "Zcash": "1.5.2", + "Zcash": "1.6.2", "Bgold": "1.6.0", "DigiByte": "1.6.0", "Monacoin": "1.6.0", "Fujicoin": "1.6.1", "Vertcoin": "1.6.1", - "Bcash Testnet": "1.5.2", - "Zcash Testnet": "1.5.2", + "Bcash Testnet": "1.6.2", + "Zcash Testnet": "1.6.2", "Decred Testnet": "1.6.1" }, "trezor2": { "Bitcoin": "2.0.5", "Testnet": "2.0.5", - "Bcash": "2.0.5", - "Bcash Testnet": "2.0.5", + "Bcash": "2.0.7", + "Bcash Testnet": "2.0.7", "Namecoin": "2.0.5", "Litecoin": "2.0.5", "Dogecoin": "2.0.5", "Dash": "2.0.5", - "Zcash": "2.0.5", - "Zcash Testnet": "2.0.5", + "Zcash": "2.0.7", + "Zcash Testnet": "2.0.7", "Bgold": "2.0.5", "DigiByte": "2.0.5", "Monacoin": "2.0.5", From dcda93322a2a0085e88acffab493403afb9d1d83 Mon Sep 17 00:00:00 2001 From: Tomas Susanka Date: Mon, 11 Jun 2018 13:58:22 +0200 Subject: [PATCH 358/767] protob: stellar get address --- protob/messages.proto | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/protob/messages.proto b/protob/messages.proto index 010365434..7c61c45c6 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -116,6 +116,8 @@ enum MessageType { MessageType_StellarPublicKey = 201 [(wire_out) = true]; MessageType_StellarSignTx = 202 [(wire_in) = true]; MessageType_StellarTxOpRequest = 203 [(wire_out) = true]; + MessageType_StellarGetAddress = 207 [(wire_in) = true]; + MessageType_StellarAddress = 208 [(wire_out) = true]; MessageType_StellarCreateAccountOp = 210 [(wire_in) = true]; MessageType_StellarPaymentOp = 211 [(wire_in) = true]; MessageType_StellarPathPaymentOp = 212 [(wire_in) = true]; @@ -1021,6 +1023,22 @@ message StellarPublicKey { optional bytes public_key = 1; // Raw bytes of the public key (no version or checksum) } +/** + * Request: Address at the specified index + * @next StellarAddress + */ +message StellarGetAddress { + repeated uint32 address_n = 1; // BIP-32 path. For compatibility with other wallets, must be m/44'/148'/index' +} + +/** + * Response: Address for the given index + * @prev StellarGetAddress + */ +message StellarAddress { + optional string address = 1; // Address in Stellar format (base32 of a pubkey with checksum) +} + /** * Request: ask device to sign Stellar transaction * @next StellarTxOpRequest From 31469336c367c96673e4436b5bbc2d021493c654 Mon Sep 17 00:00:00 2001 From: Ilan <36084092+ilanolkies@users.noreply.github.com> Date: Mon, 11 Jun 2018 10:51:55 -0300 Subject: [PATCH 359/767] Rootstock to RSK - Network name (#131) --- coins_details.json | 2 +- defs/ethereum/networks.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/coins_details.json b/coins_details.json index 7f41a0b18..e3b1970bf 100644 --- a/coins_details.json +++ b/coins_details.json @@ -97,7 +97,7 @@ "MyEtherWallet": "https://www.myetherwallet.com" }, "marketcap_usd": 0, - "name": "Rootstock", + "name": "RSK", "shortcut": "RSK", "t1_enabled": "yes", "t2_enabled": "yes", diff --git a/defs/ethereum/networks.json b/defs/ethereum/networks.json index c7d8a0ee6..450c93947 100644 --- a/defs/ethereum/networks.json +++ b/defs/ethereum/networks.json @@ -45,14 +45,14 @@ "chain_id": 30, "slip44": 137, "shortcut": "RSK", - "name": "Rootstock", + "name": "RSK", "url": "https://www.rsk.co" }, { "chain_id": 31, "slip44": 1, "shortcut": "tRSK", - "name": "Rootstock Testnet", + "name": "RSK Testnet", "url": "https://www.rsk.co" }, { From 95d25702ee608429324e5bfff4332116c6a3bfc8 Mon Sep 17 00:00:00 2001 From: Kefkius Date: Mon, 11 Jun 2018 09:56:08 -0400 Subject: [PATCH 360/767] Add groestlcoin testnet native segwit header (#128) --- defs/coins/groestlcoin_testnet.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/defs/coins/groestlcoin_testnet.json b/defs/coins/groestlcoin_testnet.json index 2550c36b3..2232f34fb 100644 --- a/defs/coins/groestlcoin_testnet.json +++ b/defs/coins/groestlcoin_testnet.json @@ -15,7 +15,7 @@ "xprv_magic": 70615956, "xpub_magic": 70617039, "xpub_magic_segwit_p2sh": 71979618, - "xpub_magic_segwit_native": null, + "xpub_magic_segwit_native": 73342198, "bech32_prefix": "tgrs", "cashaddr_prefix": null, "slip44": 1, From 19448419e60361dd7764de1e0b0b24e7ceddc3ee Mon Sep 17 00:00:00 2001 From: EOS Classic Date: Tue, 12 Jun 2018 00:43:18 +0900 Subject: [PATCH 361/767] [EOSC] Change EOSC Chainid (#127) --- defs/ethereum/networks.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/defs/ethereum/networks.json b/defs/ethereum/networks.json index 450c93947..1bbac0379 100644 --- a/defs/ethereum/networks.json +++ b/defs/ethereum/networks.json @@ -34,6 +34,13 @@ "name": "UBIQ", "url": "https://ubiqsmart.com" }, + { + "chain_id": 20, + "slip44": 2018, + "shortcut": "EOSC", + "name": "EOS Classic", + "url": "https://eos-classic.io" + }, { "chain_id": 28, "slip44": 1128, @@ -96,12 +103,5 @@ "shortcut": "EGEM", "name": "EtherGem", "url": "https://egem.io" - }, - { - "chain_id": 2018, - "slip44": 2018, - "shortcut": "EOSC", - "name": "EOS Classic", - "url": "https://eos-classic.io" } ] From 57a31feb2e48ac5057761fd07e5c7b280b66b5c6 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 11 Jun 2018 17:51:47 +0200 Subject: [PATCH 362/767] defs/ethereum: add rskip60 attribute to networks.json --- defs/ethereum/networks.json | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/defs/ethereum/networks.json b/defs/ethereum/networks.json index 1bbac0379..078f2bbb2 100644 --- a/defs/ethereum/networks.json +++ b/defs/ethereum/networks.json @@ -4,6 +4,7 @@ "slip44": 60, "shortcut": "ETH", "name": "Ethereum", + "rskip60": false, "url": "https://www.ethereum.org" }, { @@ -11,6 +12,7 @@ "slip44": 40, "shortcut": "EXP", "name": "Expanse", + "rskip60": false, "url": "https://expanse.tech" }, { @@ -18,6 +20,7 @@ "slip44": 1, "shortcut": "tETH", "name": "Ethereum Testnet Ropsten", + "rskip60": false, "url": "https://www.ethereum.org" }, { @@ -25,6 +28,7 @@ "slip44": 1, "shortcut": "tETH", "name": "Ethereum Testnet Rinkeby", + "rskip60": false, "url": "https://www.ethereum.org" }, { @@ -32,6 +36,7 @@ "slip44": 108, "shortcut": "UBQ", "name": "UBIQ", + "rskip60": false, "url": "https://ubiqsmart.com" }, { @@ -39,6 +44,7 @@ "slip44": 2018, "shortcut": "EOSC", "name": "EOS Classic", + "rskip60": false, "url": "https://eos-classic.io" }, { @@ -46,6 +52,7 @@ "slip44": 1128, "shortcut": "ETSC", "name": "Ethereum Social", + "rskip60": false, "url": "https://ethereumsocial.kr" }, { @@ -53,6 +60,7 @@ "slip44": 137, "shortcut": "RSK", "name": "RSK", + "rskip60": true, "url": "https://www.rsk.co" }, { @@ -60,6 +68,7 @@ "slip44": 1, "shortcut": "tRSK", "name": "RSK Testnet", + "rskip60": true, "url": "https://www.rsk.co" }, { @@ -67,6 +76,7 @@ "slip44": 1, "shortcut": "tETH", "name": "Ethereum Testnet Kovan", + "rskip60": false, "url": "https://www.ethereum.org" }, { @@ -74,6 +84,7 @@ "slip44": 61, "shortcut": "ETC", "name": "Ethereum Classic", + "rskip60": false, "url": "https://ethereumclassic.github.io" }, { @@ -81,6 +92,7 @@ "slip44": 1, "shortcut": "tETC", "name": "Ethereum Classic Testnet", + "rskip60": false, "url": "https://ethereumclassic.github.io" }, { @@ -88,6 +100,7 @@ "slip44": 163, "shortcut": "ELLA", "name": "Ellaism", + "rskip60": false, "url": "https://ellaism.org" }, { @@ -95,6 +108,7 @@ "slip44": 820, "shortcut": "CLO", "name": "Callisto", + "rskip60": false, "url": "https://callisto.network" }, { @@ -102,6 +116,7 @@ "slip44": 1987, "shortcut": "EGEM", "name": "EtherGem", + "rskip60": false, "url": "https://egem.io" } ] From 0bf60dbda9bd85db01ed36e5d9045a223744a35c Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 11 Jun 2018 18:52:42 +0200 Subject: [PATCH 363/767] protob: add show_display to StellarGetPublicKey/StellarGetAddress --- protob/messages.proto | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/protob/messages.proto b/protob/messages.proto index 7c61c45c6..b1f3f40b4 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -379,7 +379,7 @@ message PublicKey { message GetAddress { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node optional string coin_name = 2 [default='Bitcoin']; - optional bool show_display = 3 ; // optionally show on display before sending the result + optional bool show_display = 3; // optionally show on display before sending the result optional MultisigRedeemScriptType multisig = 4; // filled if we are showing a multisig address optional InputScriptType script_type = 5 [default=SPENDADDRESS]; // used to distinguish between various address formats (non-segwit, segwit, etc.) } @@ -1012,7 +1012,8 @@ message CosiSignature { * @next StellarPublicKey */ message StellarGetPublicKey { - repeated uint32 address_n = 1; // BIP-32 path. For compatibility with other wallets, must be m/44'/148'/index' + repeated uint32 address_n = 1; // BIP-32 path. For compatibility with other wallets, must be m/44'/148'/index' + optional bool show_display = 2; // optionally show on display before sending the result } /** @@ -1028,7 +1029,8 @@ message StellarPublicKey { * @next StellarAddress */ message StellarGetAddress { - repeated uint32 address_n = 1; // BIP-32 path. For compatibility with other wallets, must be m/44'/148'/index' + repeated uint32 address_n = 1; // BIP-32 path. For compatibility with other wallets, must be m/44'/148'/index' + optional bool show_display = 2; // optionally show on display before sending the result } /** From f22dafa7eb739c3702585d946c5ae28f813f492f Mon Sep 17 00:00:00 2001 From: Ilan <36084092+ilanolkies@users.noreply.github.com> Date: Tue, 12 Jun 2018 11:45:48 -0300 Subject: [PATCH 364/767] Update networks.json - tRSK slip44 (#133) --- defs/ethereum/networks.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/defs/ethereum/networks.json b/defs/ethereum/networks.json index 078f2bbb2..2750ddca0 100644 --- a/defs/ethereum/networks.json +++ b/defs/ethereum/networks.json @@ -65,7 +65,7 @@ }, { "chain_id": 31, - "slip44": 1, + "slip44": 37310, "shortcut": "tRSK", "name": "RSK Testnet", "rskip60": true, From c5687663b9c794c7a865a9bd2493bded73c42253 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 13 Jun 2018 13:50:00 +0200 Subject: [PATCH 365/767] defs: enable Testnet in connect/webwallet --- defs/support.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/defs/support.json b/defs/support.json index 6470ab966..456900372 100644 --- a/defs/support.json +++ b/defs/support.json @@ -40,7 +40,8 @@ "Bgold": true, "Dash": true, "Litecoin": true, - "Zcash": true + "Zcash": true, + "Testnet": true }, "webwallet": { "Bitcoin": true, @@ -48,7 +49,8 @@ "Bgold": true, "Dash": true, "Litecoin": true, - "Zcash": true + "Zcash": true, + "Testnet": true }, "electrum": { "Bitcoin": "https://electrum.org/", From 97027f5c88e71d8ca3fbf0e3447d52ad69626ff9 Mon Sep 17 00:00:00 2001 From: Gruve_p Date: Wed, 13 Jun 2018 18:16:24 +0200 Subject: [PATCH 366/767] Add groestlcoin testnet insight server (#136) --- defs/coins/groestlcoin_testnet.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/defs/coins/groestlcoin_testnet.json b/defs/coins/groestlcoin_testnet.json index 2232f34fb..33837a74c 100644 --- a/defs/coins/groestlcoin_testnet.json +++ b/defs/coins/groestlcoin_testnet.json @@ -32,6 +32,8 @@ "address_prefix": "groestlcoin:", "min_address_length": 27, "max_address_length": 34, - "bitcore": [], + "bitcore": [ + "https://groestlsight-test.groestlcoin.org" + ], "blockbook": [] } From 2f2888fba1962bdd13ff68ce7eb6467e45fe1985 Mon Sep 17 00:00:00 2001 From: Tomas Susanka Date: Thu, 14 Jun 2018 11:12:52 +0200 Subject: [PATCH 367/767] stellar: account fields are strings (addresses) not bytes (pubkeys) --- protob/messages.proto | 37 ++++++++++++++++++------------------- protob/types.proto | 2 +- 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/protob/messages.proto b/protob/messages.proto index b1f3f40b4..fbfb88d19 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -1049,7 +1049,7 @@ message StellarSignTx { optional uint32 protocol_version = 1; // version of the protofbuf messaging protocol the client is using repeated uint32 address_n = 2; // BIP-32 path. For compatibility with other wallets, must be m/44'/148'/index' optional string network_passphrase = 3; // passphrase for signing messages on the destination network - optional bytes source_account = 4; // 32-byte source + optional string source_account = 4; // source account address optional uint32 fee = 5; // Fee (in stroops) for the transaction optional uint64 sequence_number = 6; // transaction sequence number optional uint32 timebounds_start = 8; // unix timestamp (client must truncate this to 32 bytes) @@ -1086,9 +1086,9 @@ message StellarTxOpRequest { * @next StellarSignedTx */ message StellarPaymentOp { - optional bytes source_account = 1; // (optional) 32-byte source account + optional string source_account = 1; // (optional) source account address - optional bytes destination_account = 2; // 32-byte destination account + optional string destination_account = 2; // destination account address optional StellarAssetType asset = 3; // asset involved in the operation optional sint64 amount = 4; // amount of the given asset to pay } @@ -1100,9 +1100,9 @@ message StellarPaymentOp { * @next StellarSignedTx */ message StellarCreateAccountOp { - optional bytes source_account = 1; // (optional) 32-byte source account + optional string source_account = 1; // (optional) source account address - optional bytes new_account = 2; // 32-byte account ID to create + optional string new_account = 2; // account address to create optional sint64 starting_balance = 3; // initial starting balance for the new account } @@ -1113,11 +1113,11 @@ message StellarCreateAccountOp { * @next StellarSignedTx */ message StellarPathPaymentOp { - optional bytes source_account = 1; // (optional) 32-byte source account + optional string source_account = 1; // (optional) source address optional StellarAssetType send_asset = 2; optional sint64 send_max = 3; - optional bytes destination_account = 4; + optional string destination_account = 4; optional StellarAssetType destination_asset = 5; optional sint64 destination_amount = 6; repeated StellarAssetType paths = 7; @@ -1130,7 +1130,7 @@ message StellarPathPaymentOp { * @next StellarSignedTx */ message StellarManageOfferOp { - optional bytes source_account = 1; // (optional) 32-byte source account + optional string source_account = 1; // (optional) source account address optional StellarAssetType selling_asset = 2; optional StellarAssetType buying_asset = 3; @@ -1147,7 +1147,7 @@ message StellarManageOfferOp { * @next StellarSignedTx */ message StellarCreatePassiveOfferOp { - optional bytes source_account = 1; // (optional) 32-byte source account + optional string source_account = 1; // (optional) source account address optional StellarAssetType selling_asset = 2; optional StellarAssetType buying_asset = 3; @@ -1163,9 +1163,9 @@ message StellarCreatePassiveOfferOp { * @next StellarSignedTx */ message StellarSetOptionsOp { - optional bytes source_account = 1; // (optional) 32-byte source account + optional string source_account = 1; // (optional) source account address - optional bytes inflation_destination_account = 2; // (optional) 32-byte inflation destination + optional string inflation_destination_account = 2; // (optional) inflation destination address optional uint32 clear_flags = 3; optional uint32 set_flags = 4; optional uint32 master_weight = 5; @@ -1185,7 +1185,7 @@ message StellarSetOptionsOp { * @next StellarSignedTx */ message StellarChangeTrustOp { - optional bytes source_account = 1; // (optional) 32-byte source account + optional string source_account = 1; // (optional) source account address optional StellarAssetType asset = 2; optional uint64 limit = 3; @@ -1198,9 +1198,9 @@ message StellarChangeTrustOp { * @next StellarSignedTx */ message StellarAllowTrustOp { - optional bytes source_account = 1; // (optional) 32-byte source account + optional string source_account = 1; // (optional) source account address - optional bytes trusted_account = 2; // The account being allowed to hold the asset + optional string trusted_account = 2; // The account being allowed to hold the asset optional uint32 asset_type = 3; // 1 = 4-character, 2 = 12-character optional string asset_code = 4; // human-readable asset code optional uint32 is_authorized = 5; @@ -1213,9 +1213,8 @@ message StellarAllowTrustOp { * @next StellarSignedTx */ message StellarAccountMergeOp { - optional bytes source_account = 1; // (optional) 32-byte source account - - optional bytes destination_account = 2; // 32-byte destination account + optional string source_account = 1; // (optional) source account address + optional string destination_account = 2; // destination account address } /** @@ -1225,7 +1224,7 @@ message StellarAccountMergeOp { * @next StellarSignedTx */ message StellarManageDataOp { - optional bytes source_account = 1; // (optional) 32-byte source account + optional string source_account = 1; // (optional) source account address optional string key = 2; optional bytes value = 3; // 64 bytes of arbitrary data @@ -1238,7 +1237,7 @@ message StellarManageDataOp { * @next StellarSignedTx */ message StellarBumpSequenceOp { - optional bytes source_account = 1; // (optional) 32-byte source account + optional string source_account = 1; // (optional) source account address optional uint64 bump_to = 2; // new sequence number } diff --git a/protob/types.proto b/protob/types.proto index 1593e4a5b..8e3799bf2 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -435,7 +435,7 @@ enum NEMImportanceTransferMode { message StellarAssetType { optional uint32 type = 1; // 0 = native asset (XLM), 1 = alphanum 4, 2 = alphanum 12 optional string code = 2; // for non-native assets, string describing the code - optional bytes issuer = 3; // 32-byte issuing address + optional string issuer = 3; // issuing address } /** From 47640c6828603951e619ba9d327c2c080d4072aa Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 15 Jun 2018 11:48:41 +0200 Subject: [PATCH 368/767] defs: bump bgold support version --- defs/support.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/defs/support.json b/defs/support.json index 456900372..3ff1c7f1f 100644 --- a/defs/support.json +++ b/defs/support.json @@ -8,7 +8,7 @@ "Dogecoin": "1.5.2", "Dash": "1.5.2", "Zcash": "1.6.2", - "Bgold": "1.6.0", + "Bgold": "1.6.2", "DigiByte": "1.6.0", "Monacoin": "1.6.0", "Fujicoin": "1.6.1", @@ -28,7 +28,7 @@ "Dash": "2.0.5", "Zcash": "2.0.7", "Zcash Testnet": "2.0.7", - "Bgold": "2.0.5", + "Bgold": "2.0.7", "DigiByte": "2.0.5", "Monacoin": "2.0.5", "Fujicoin": "2.0.5", From 3a64ff455a6af708d444ede6a6ef450c747fa2c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20B=C3=ADlek?= Date: Tue, 12 Jun 2018 12:47:10 +0200 Subject: [PATCH 369/767] Adding testnet to wallet support We want to support testnet in wallet, even when they are not in the list on the left. --- defs/support.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/defs/support.json b/defs/support.json index 3ff1c7f1f..a8994a16f 100644 --- a/defs/support.json +++ b/defs/support.json @@ -50,7 +50,8 @@ "Dash": true, "Litecoin": true, "Zcash": true, - "Testnet": true + "Testnet": true, + "Zcash Testnet": true }, "electrum": { "Bitcoin": "https://electrum.org/", From fa5b9516757d44d2cf2add3f13635cd2e895e97b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20B=C3=ADlek?= Date: Thu, 21 Jun 2018 12:05:41 +0200 Subject: [PATCH 370/767] Add dogecoin to supported coins --- defs/support.json | 1 + 1 file changed, 1 insertion(+) diff --git a/defs/support.json b/defs/support.json index a8994a16f..c82aa1c36 100644 --- a/defs/support.json +++ b/defs/support.json @@ -48,6 +48,7 @@ "Bcash": true, "Bgold": true, "Dash": true, + "Dogecoin": true, "Litecoin": true, "Zcash": true, "Testnet": true, From d71239faff0c70c9f904fe3832acbb7c8d270105 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 21 Jun 2018 13:15:46 +0200 Subject: [PATCH 371/767] defs: enable decred for T1 --- defs/support.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/defs/support.json b/defs/support.json index c82aa1c36..a798458ee 100644 --- a/defs/support.json +++ b/defs/support.json @@ -9,13 +9,14 @@ "Dash": "1.5.2", "Zcash": "1.6.2", "Bgold": "1.6.2", + "Decred": "1.6.2", "DigiByte": "1.6.0", "Monacoin": "1.6.0", "Fujicoin": "1.6.1", "Vertcoin": "1.6.1", "Bcash Testnet": "1.6.2", "Zcash Testnet": "1.6.2", - "Decred Testnet": "1.6.1" + "Decred Testnet": "1.6.2" }, "trezor2": { "Bitcoin": "2.0.5", @@ -55,7 +56,7 @@ "Zcash Testnet": true }, "electrum": { - "Bitcoin": "https://electrum.org/", + "Bitcoin": "https://electrum.org", "Litecoin": "https://electrum-ltc.org", "Bcash": "https://electroncash.org", "Dash": "https://electrum.dash.org" From e74d966cf6794553fb91f4f6980ce4f8466de504 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 21 Jun 2018 13:40:03 +0200 Subject: [PATCH 372/767] defs: add new coins to support.json --- defs/support.json | 64 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 44 insertions(+), 20 deletions(-) diff --git a/defs/support.json b/defs/support.json index a798458ee..8c557c364 100644 --- a/defs/support.json +++ b/defs/support.json @@ -3,57 +3,81 @@ "Bitcoin": "1.5.2", "Testnet": "1.5.2", "Bcash": "1.6.2", - "Namecoin": "1.5.2", - "Litecoin": "1.5.2", - "Dogecoin": "1.5.2", - "Dash": "1.5.2", - "Zcash": "1.6.2", + "Bcash Testnet": "1.6.2", "Bgold": "1.6.2", + "Bprivate": "1.6.2", + "Dash": "1.5.2", + "Dash Testnet": "1.6.2", "Decred": "1.6.2", + "Decred Testnet": "1.6.2", "DigiByte": "1.6.0", - "Monacoin": "1.6.0", + "Dogecoin": "1.5.2", "Fujicoin": "1.6.1", + "Groestlcoin": "1.6.2", + "Groestlcoin Testnet": "1.6.2", + "Litecoin": "1.5.2", + "Litecoin Testnet": "1.6.2", + "Monacoin": "1.6.0", + "Namecoin": "1.5.2", "Vertcoin": "1.6.1", - "Bcash Testnet": "1.6.2", + "Viacoin": "1.6.2", + "Zcash": "1.6.2", "Zcash Testnet": "1.6.2", - "Decred Testnet": "1.6.2" + "Zcoin": "1.6.2", + "Zcoin Testnet": "1.6.2" }, "trezor2": { "Bitcoin": "2.0.5", "Testnet": "2.0.5", "Bcash": "2.0.7", "Bcash Testnet": "2.0.7", - "Namecoin": "2.0.5", - "Litecoin": "2.0.5", - "Dogecoin": "2.0.5", - "Dash": "2.0.5", - "Zcash": "2.0.7", - "Zcash Testnet": "2.0.7", "Bgold": "2.0.7", + "Bprivate": "2.0.7", + "Dash": "2.0.5", "DigiByte": "2.0.5", - "Monacoin": "2.0.5", + "Dogecoin": "2.0.5", "Fujicoin": "2.0.5", - "Vertcoin": "2.0.5" + "Litecoin": "2.0.5", + "Litecoin Testnet": "2.0.7", + "Monacoin": "2.0.5", + "Namecoin": "2.0.5", + "Vertcoin": "2.0.5", + "Viacoin": "2.0.7", + "Zcash": "2.0.7", + "Zcash Testnet": "2.0.7", + "Zcoin": "2.0.7", + "Zcoin Testnet": "2.0.7" }, "connect": { "Bitcoin": true, + "Testnet": true, "Bcash": true, "Bgold": true, "Dash": true, "Litecoin": true, - "Zcash": true, - "Testnet": true + "Zcash": true }, "webwallet": { "Bitcoin": true, + "Testnet": true, "Bcash": true, "Bgold": true, + "Bprivate": true, "Dash": true, + "Decred": true, + "Decred Testnet": true, + "DigiByte": true, "Dogecoin": true, + "Fujicoin": true, + "Groestlcoin": true, + "Groestlcoin Testnet": true, "Litecoin": true, + "Litecoin Testnet": true, + "Monacoin": true, + "Viacoin": true, "Zcash": true, - "Testnet": true, - "Zcash Testnet": true + "Zcash Testnet": true, + "Zcoin": true }, "electrum": { "Bitcoin": "https://electrum.org", From f7059a62a1d44d6d0b798a90e668c425f7a4c8c8 Mon Sep 17 00:00:00 2001 From: slush Date: Thu, 21 Jun 2018 13:51:37 +0200 Subject: [PATCH 373/767] Symlink to tools/build_coins for backward compatibility --- defs/coins/tools/build_coins.py | 240 +------------------------------- 1 file changed, 1 insertion(+), 239 deletions(-) mode change 100755 => 120000 defs/coins/tools/build_coins.py diff --git a/defs/coins/tools/build_coins.py b/defs/coins/tools/build_coins.py deleted file mode 100755 index cb6a9acb3..000000000 --- a/defs/coins/tools/build_coins.py +++ /dev/null @@ -1,239 +0,0 @@ -#!/usr/bin/env python3 - -# This script generates coins.json files from the definitions in defs/ -# -# - `./build_coins.py` generates a big file with everything -# - `./build_coins.py XXX` generates a file with coins supported by XXX -# for example: `./build_coins.py webwallet` or `./build_coins.py trezor1` -# - `./build_coins.py XXX --defs` also adds protobuf definitions with TOIF icon -# -# generated file is coins.json in current directory, -# and coindefs.json if --def is enabled - -import json -import glob -import re -import os -import sys - -if '--defs' in sys.argv: - from binascii import unhexlify - from hashlib import sha256 - import ed25519 - from PIL import Image - from trezorlib.protobuf import dump_message - from coindef import CoinDef - BUILD_DEFS = True -else: - BUILD_DEFS = False - - -def check_type(val, types, nullable=False, empty=False, regex=None, choice=None): # noqa:E501 - # check nullable - if nullable and val is None: - return True - # check empty - try: - if not empty and len(val) == 0: - return False - except TypeError: - pass - # check regex - if regex is not None: - if types is not str: - return False - m = re.match(regex, val) - if not m: - return False - # check choice - if choice is not None: - if val not in choice: - return False - # check type - if isinstance(types, list): - return True in [isinstance(val, t) for t in types] - else: - return isinstance(val, types) - - -def validate_coin(coin): - assert check_type(coin['coin_name'], str, regex=r'^[A-Z]') - assert check_type(coin['coin_shortcut'], str, regex=r'^[A-Zt][A-Z][A-Z]+$') - assert check_type(coin['coin_label'], str, regex=r'^[A-Z]') - assert check_type(coin['website'], str, regex=r'^http.*[^/]$') - assert check_type(coin['github'], str, regex=r'^https://github.com/.*[^/]$') # noqa:E501 - assert check_type(coin['maintainer'], str) - assert check_type(coin['curve_name'], str, choice=['secp256k1', 'secp256k1_decred', 'secp256k1_groestl']) # noqa:E501 - assert check_type(coin['address_type'], int) - assert check_type(coin['address_type_p2sh'], int) - assert coin['address_type'] != coin['address_type_p2sh'] - assert check_type(coin['maxfee_kb'], int) - assert check_type(coin['minfee_kb'], int) - assert coin['maxfee_kb'] >= coin['minfee_kb'] - assert check_type(coin['hash_genesis_block'], str, regex=r'^[0-9a-f]{64}$') - assert check_type(coin['xprv_magic'], int) - assert check_type(coin['xpub_magic'], int) - assert check_type(coin['xpub_magic_segwit_p2sh'], int, nullable=True) - assert check_type(coin['xpub_magic_segwit_native'], int, nullable=True) - assert coin['xprv_magic'] != coin['xpub_magic'] - assert coin['xprv_magic'] != coin['xpub_magic_segwit_p2sh'] - assert coin['xprv_magic'] != coin['xpub_magic_segwit_native'] - assert coin['xpub_magic'] != coin['xpub_magic_segwit_p2sh'] - assert coin['xpub_magic'] != coin['xpub_magic_segwit_native'] - assert coin['xpub_magic_segwit_p2sh'] is None or coin['xpub_magic_segwit_native'] is None or coin['xpub_magic_segwit_p2sh'] != coin['xpub_magic_segwit_native'] # noqa:E501 - assert check_type(coin['slip44'], int) - assert check_type(coin['segwit'], bool) - assert check_type(coin['decred'], bool) - assert check_type(coin['fork_id'], int, nullable=True) - assert check_type(coin['force_bip143'], bool) - assert check_type(coin['version_group_id'], int, nullable=True) - assert check_type(coin['default_fee_b'], dict) - assert check_type(coin['dust_limit'], int) - assert check_type(coin['blocktime_seconds'], int) - assert check_type(coin['signed_message_header'], str) - assert check_type(coin['address_prefix'], str, regex=r'^.*:$') - assert check_type(coin['min_address_length'], int) - assert check_type(coin['max_address_length'], int) - assert coin['max_address_length'] >= coin['min_address_length'] - assert check_type(coin['bech32_prefix'], str, nullable=True) - assert check_type(coin['cashaddr_prefix'], str, nullable=True) - assert check_type(coin['bitcore'], list, empty=True) - for bc in coin['bitcore']: - assert not bc.endswith('/') - - -def validate_icon(icon): - assert icon.size == (96, 96) - assert icon.mode == 'RGBA' - - -class Writer: - - def __init__(self): - self.buf = bytearray() - - def write(self, buf): - self.buf.extend(buf) - - -def serialize(coin, icon): - c = dict(coin) - c['signed_message_header'] = c['signed_message_header'].encode() - c['hash_genesis_block'] = unhexlify(c['hash_genesis_block']) - c['icon'] = icon - msg = CoinDef(**c) - w = Writer() - dump_message(w, msg) - return bytes(w.buf) - - -def sign(data): - h = sha256(data).digest() - sign_key = ed25519.SigningKey(b'A' * 32) - return sign_key.sign(h) - - -# conversion copied from trezor-core/tools/png2toi -# TODO: extract into common module in python-trezor -def convert_icon(icon): - import struct - import zlib - w, h = 32, 32 - icon = icon.resize((w, h), Image.LANCZOS) - # remove alpha channel, replace with black - bg = Image.new('RGBA', icon.size, (0, 0, 0, 255)) - icon = Image.alpha_composite(bg, icon) - # process pixels - pix = icon.load() - data = bytes() - for j in range(h): - for i in range(w): - r, g, b, _ = pix[i, j] - c = ((r & 0xF8) << 8) | ((g & 0xFC) << 3) | ((b & 0xF8) >> 3) - data += struct.pack('>H', c) - z = zlib.compressobj(level=9, wbits=10) - zdata = z.compress(data) + z.flush() - zdata = zdata[2:-4] # strip header and checksum - return zdata - - -def process_json(fn): - print(os.path.basename(fn), end=' ... ') - j = json.load(open(fn)) - if BUILD_DEFS: - i = Image.open(fn.replace('.json', '.png')) - validate_coin(j) - validate_icon(i) - ser = serialize(j, convert_icon(i)) - sig = sign(ser) - definition = (sig + ser).hex() - print('OK') - return j, definition - else: - print('OK') - return j, None - - -scriptdir = os.path.dirname(os.path.realpath(__file__)) - - -support_json = json.load(open(scriptdir + '/../../support.json')) -if len(sys.argv) > 1 and not sys.argv[1].startswith('-'): - support_list = support_json[sys.argv[1]].keys() -else: - support_list = None - -coins = {} -defs = {} -for fn in glob.glob(scriptdir + '/../*.json'): - c, d = process_json(fn) - n = c['coin_name'] - c['support'] = {} - for s in support_json.keys(): - c['support'][s] = support_json[s][n] if n in support_json[s] else None - if support_list is None or n in support_list: - coins[n] = c - defs[n] = d - -json.dump(coins, open('coins.json', 'w'), indent=4, sort_keys=True) -if BUILD_DEFS: - json.dump(defs, open('coindefs.json', 'w'), indent=4, sort_keys=True) - -# check for colliding address versions -at_p2pkh = {} -at_p2sh = {} -slip44 = {} - -for n, c in coins.items(): - s = c['slip44'] - if s not in slip44: - slip44[s] = [] - if not(n.endswith('Testnet') and s == 1): - slip44[s].append(n) - if c['cashaddr_prefix']: # skip cashaddr currencies - continue - a1, a2 = c['address_type'], c['address_type_p2sh'] - if a1 not in at_p2pkh: - at_p2pkh[a1] = [] - if a2 not in at_p2sh: - at_p2sh[a2] = [] - at_p2pkh[a1].append(n) - at_p2sh[a2].append(n) - -print() -print('Colliding address_types for P2PKH:') -for k, v in at_p2pkh.items(): - if len(v) >= 2: - print('-', k, ':', ','.join(v)) - -print() -print('Colliding address_types for P2SH:') -for k, v in at_p2sh.items(): - if len(v) >= 2: - print('-', k, ':', ','.join(v)) - -print() -print('Colliding SLIP44 constants:') -for k, v in slip44.items(): - if len(v) >= 2: - print('-', k, ':', ','.join(v)) diff --git a/defs/coins/tools/build_coins.py b/defs/coins/tools/build_coins.py new file mode 120000 index 000000000..78034573b --- /dev/null +++ b/defs/coins/tools/build_coins.py @@ -0,0 +1 @@ +../../../tools/build_coins.py \ No newline at end of file From d2388ab6fd1ffbc8c173f5cf3caf86d8fa135bd7 Mon Sep 17 00:00:00 2001 From: slush Date: Thu, 21 Jun 2018 13:52:42 +0200 Subject: [PATCH 374/767] Ignore temporary files in tools/ --- .gitignore | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index be9f15e5d..c8bfd1acb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,6 @@ __pycache__/ -coinmarketcap.json +defs/coins/tools/coins.json +defs/coins/tools/coindefs.json +tools/coins.json +tools/coindefs.json +tools/coinmarketcap.json From 86dfde4a75cab96232f4e09382ed50ca5096c7c3 Mon Sep 17 00:00:00 2001 From: slush Date: Thu, 21 Jun 2018 15:09:10 +0200 Subject: [PATCH 375/767] Updated coins_details --- coins_details.json | 501 +++++++++++++++++++++++++++++++++++---------- 1 file changed, 395 insertions(+), 106 deletions(-) diff --git a/coins_details.json b/coins_details.json index e3b1970bf..a11c666e4 100644 --- a/coins_details.json +++ b/coins_details.json @@ -13,13 +13,39 @@ "t2_enabled": "yes", "type": "coin" }, + "coin2:ELLA": { + "links": { + "Homepage": "https://ellaism.org", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 1034880, + "name": "Ellaism", + "shortcut": "ELLA", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin" + }, + "coin2:EOSC": { + "links": { + "Homepage": "https://eos-classic.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 0, + "name": "EOS Classic", + "shortcut": "EOSC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin" + }, "coin2:ETC": { "links": { "Homepage": "https://ethereumclassic.github.io", "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 1559080683, + "marketcap_usd": 1732952315, "name": "Ethereum Classic", "shortcut": "ETC", "t1_enabled": "yes", @@ -32,7 +58,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 59529131244, + "marketcap_usd": 53683595636, "name": "Ethereum", "shortcut": "ETH", "t1_enabled": "yes", @@ -58,36 +84,23 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 12006970, + "marketcap_usd": 8295154, "name": "Expanse", "shortcut": "EXP", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin" }, - "coin2:EOSC": { - "links": { - "Homepage": "https://eos-classic.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - }, - "marketcap_usd": 0, - "name": "EOS Classic", - "shortcut": "EOSC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin" - }, "coin2:LSK": { + "hidden": 1, "links": { "Homepage": "https://lisk.io/" }, "marketcap_usd": 997454377, "name": "Lisk", - "notes": "In development", "shortcut": "LSK", "t1_enabled": "no", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "coin" }, "coin2:RSK": { @@ -109,26 +122,13 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 65739013, + "marketcap_usd": 41143159, "name": "Ubiq", "shortcut": "UBQ", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin" }, - "coin2:ELLA": { - "links": { - "Homepage": "https://ellaism.org", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - }, - "marketcap_usd": 1274724, - "name": "Ellaism", - "shortcut": "ELLA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin" - }, "coin2:XLM": { "links": { "Homepage": "https://www.stellar.org" @@ -167,10 +167,11 @@ "coin:BCH": { "links": { "Electron Cash": "https://electroncash.org", + "Github": "https://github.com/Bitcoin-ABC/bitcoin-abc", "Homepage": "https://www.bitcoincash.org/", - "TREZOR Wallet": "https://wallet.trezor.io" + "Trezor Wallet": "https://wallet.trezor.io" }, - "marketcap_usd": 17678633222, + "marketcap_usd": 15146310159, "name": "Bitcoin Cash", "shortcut": "BCH", "t1_enabled": "yes", @@ -182,81 +183,196 @@ "Electrum": "https://electrum.org", "Github": "https://github.com/bitcoin/bitcoin", "Homepage": "https://bitcoin.org", - "TREZOR Wallet": "https://wallet.trezor.io" + "Trezor Wallet": "https://wallet.trezor.io" }, - "marketcap_usd": 127422469449, + "marketcap_usd": 115314468942, "name": "Bitcoin", "shortcut": "BTC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin" }, + "coin:BTCP": { + "hidden": 1, + "links": { + "Github": "https://github.com/BTCPrivate/BitcoinPrivate", + "Homepage": "https://btcprivate.org" + }, + "marketcap_usd": 307489356, + "name": "Bitcoin Private", + "shortcut": "BTCP", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin" + }, "coin:BTG": { "links": { + "Github": "https://github.com/BTCGPU/BTCGPU", "Homepage": "https://bitcoingold.org", - "TREZOR Wallet": "https://wallet.trezor.io" + "Trezor Wallet": "https://wallet.trezor.io" }, - "marketcap_usd": 783345559, + "marketcap_usd": 549893116, "name": "Bitcoin Gold", "shortcut": "BTG", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin" }, + "coin:BTX": { + "links": { + "Github": "https://github.com/LIMXTEC/BitCore", + "Homepage": "https://bitcore.cc" + }, + "marketcap_usd": 36589136, + "name": "Bitcore", + "shortcut": "BTX", + "t1_enabled": "no", + "t2_enabled": "no", + "type": "coin" + }, + "coin:CRW": { + "links": { + "Github": "https://github.com/Crowndev/crowncoin", + "Homepage": "https://crown.tech" + }, + "marketcap_usd": 11991951, + "name": "Crown", + "shortcut": "CRW", + "t1_enabled": "no", + "t2_enabled": "no", + "type": "coin" + }, "coin:DASH": { "links": { + "Github": "https://github.com/dashpay/dash", "Homepage": "https://www.dash.org", - "TREZOR Wallet": "https://wallet.trezor.io" + "Trezor Wallet": "https://wallet.trezor.io" }, - "marketcap_usd": 2690224346, + "marketcap_usd": 2155909044, "name": "Dash", "shortcut": "DASH", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin" }, + "coin:DCR": { + "hidden": 1, + "links": { + "Github": "https://github.com/decred/dcrd", + "Homepage": "https://www.decred.org" + }, + "marketcap_usd": 649318652, + "name": "Decred", + "shortcut": "DCR", + "t1_enabled": "yes", + "t2_enabled": "no", + "type": "coin" + }, "coin:DGB": { "hidden": 1, "links": { + "Github": "https://github.com/digibyte/digibyte", "Homepage": "https://www.digibyte.co" }, - "marketcap_usd": 360349528, + "marketcap_usd": 276825915, "name": "DigiByte", "shortcut": "DGB", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin" }, + "coin:DNR": { + "links": { + "Github": "https://github.com/carsenk/denarius", + "Homepage": "https://denarius.io" + }, + "name": "Denarius", + "shortcut": "DNR", + "t1_enabled": "no", + "t2_enabled": "no", + "type": "coin" + }, "coin:DOGE": { "links": { - "Homepage": "https://dogecoin.com" + "Github": "https://github.com/dogecoin/dogecoin", + "Homepage": "https://dogecoin.com", + "Trezor Wallet": "https://wallet.trezor.io" }, - "marketcap_usd": 397785287, + "marketcap_usd": 343695749, "name": "Dogecoin", "shortcut": "DOGE", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "coin" }, "coin:FJC": { "links": { "Electrum-FJC": "http://www.fujicoin.org/downloads.php", + "Github": "https://github.com/fujicoin/fujicoin", "Homepage": "https://www.fujicoin.org" }, - "marketcap_usd": 683096, + "marketcap_usd": 617323, "name": "Fujicoin", "shortcut": "FJC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin" }, + "coin:FLASH": { + "links": { + "Github": "https://github.com/flash-coin", + "Homepage": "https://www.flashcoin.io" + }, + "name": "Flashcoin", + "shortcut": "FLASH", + "t1_enabled": "no", + "t2_enabled": "no", + "type": "coin" + }, + "coin:FTC": { + "links": { + "Github": "https://github.com/FeatherCoin/Feathercoin", + "Homepage": "https://feathercoin.com" + }, + "marketcap_usd": 18778588, + "name": "Feathercoin", + "shortcut": "FTC", + "t1_enabled": "no", + "t2_enabled": "no", + "type": "coin" + }, + "coin:GRS": { + "hidden": 1, + "links": { + "Github": "https://github.com/Groestlcoin/groestlcoin", + "Homepage": "https://www.groestlcoin.org" + }, + "marketcap_usd": 52812326, + "name": "Groestlcoin", + "shortcut": "GRS", + "t1_enabled": "yes", + "t2_enabled": "no", + "type": "coin" + }, + "coin:KOTO": { + "links": { + "Github": "https://github.com/koto-dev/koto", + "Homepage": "https://koto.cash" + }, + "name": "Koto", + "shortcut": "KOTO", + "t1_enabled": "no", + "t2_enabled": "no", + "type": "coin" + }, "coin:LTC": { "links": { "Electrum-LTC": "https://electrum-ltc.org", + "Github": "https://github.com/litecoin-project/litecoin", "Homepage": "https://litecoin.org", - "TREZOR Wallet": "https://wallet.trezor.io" + "Trezor Wallet": "https://wallet.trezor.io" }, - "marketcap_usd": 6807028767, + "marketcap_usd": 5520287505, "name": "Litecoin", "shortcut": "LTC", "t1_enabled": "yes", @@ -266,29 +382,83 @@ "coin:MONA": { "links": { "Electrum-MONA": "https://electrum-mona.org", + "Github": "https://github.com/monacoinproject/monacoin", "Homepage": "https://monacoin.org" }, - "marketcap_usd": 198457711, + "marketcap_usd": 158649861, "name": "Monacoin", "shortcut": "MONA", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin" }, + "coin:MUE": { + "links": { + "Github": "https://github.com/muecoin/MUECore", + "Homepage": "https://www.monetaryunit.org" + }, + "name": "MUE", + "shortcut": "MUE", + "t1_enabled": "no", + "t2_enabled": "no", + "type": "coin" + }, "coin:NMC": { "links": { + "Electrum-NMC": "https://github.com/namecoin/electrum-nmc", + "Github": "https://github.com/namecoin/namecoin-core", "Homepage": "https://namecoin.org" }, - "marketcap_usd": 26167573, + "marketcap_usd": 20915520, "name": "Namecoin", "shortcut": "NMC", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin" + }, + "coin:TAZ": { + "hidden": 1, + "links": { + "Github": "https://github.com/zcash/zcash", + "Homepage": "https://z.cash" + }, + "marketcap_usd": 0, + "name": "Zcash Testnet", + "shortcut": "TAZ", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin" + }, + "coin:TBCH": { + "hidden": 1, + "links": { + "Github": "https://github.com/Bitcoin-ABC/bitcoin-abc", + "Homepage": "https://www.bitcoincash.org" + }, + "marketcap_usd": 0, + "name": "Bitcoin Cash Testnet", + "shortcut": "TBCH", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin" + }, + "coin:TDCR": { + "hidden": 1, + "links": { + "Github": "https://github.com/decred/dcrd", + "Homepage": "https://www.decred.org" + }, + "marketcap_usd": 0, + "name": "Decred Testnet", + "shortcut": "TDCR", + "t1_enabled": "yes", + "t2_enabled": "no", "type": "coin" }, "coin:TEST": { "hidden": 1, "links": { + "Github": "https://github.com/bitcoin/bitcoin", "Homepage": "https://bitcoin.org" }, "marketcap_usd": 0, @@ -298,29 +468,133 @@ "t2_enabled": "yes", "type": "coin" }, + "coin:TLTC": { + "hidden": 1, + "links": { + "Github": "https://github.com/litecoin-project/litecoin", + "Homepage": "https://litecoin.org" + }, + "marketcap_usd": 0, + "name": "Litecoin Testnet", + "shortcut": "TLTC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin" + }, + "coin:TRC": { + "links": { + "Github": "https://github.com/terracoin/terracoin", + "Homepage": "https://terracoin.io" + }, + "marketcap_usd": 1914922, + "name": "Terracoin", + "shortcut": "TRC", + "t1_enabled": "no", + "t2_enabled": "no", + "type": "coin" + }, + "coin:VIA": { + "hidden": 1, + "links": { + "Github": "https://github.com/viacoin", + "Homepage": "https://viacoin.org" + }, + "marketcap_usd": 27861709, + "name": "Viacoin", + "shortcut": "VIA", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin" + }, "coin:VTC": { "links": { + "Github": "https://github.com/vertcoin-project/vertcoin-core", "Homepage": "https://vertcoin.org" }, - "marketcap_usd": 82075977, + "marketcap_usd": 46503831, "name": "Vertcoin", "shortcut": "VTC", "t1_enabled": "soon", "t2_enabled": "soon", "type": "coin" }, + "coin:XMY": { + "links": { + "Github": "https://github.com/myriadcoin/myriadcoin", + "Homepage": "https://www.myriadcoin.org" + }, + "marketcap_usd": 7373483, + "name": "Myriad", + "shortcut": "XMY", + "t1_enabled": "no", + "t2_enabled": "no", + "type": "coin" + }, + "coin:XZC": { + "hidden": 1, + "links": { + "Github": "https://github.com/zcoinofficial/zcoin", + "Homepage": "https://zcoin.io" + }, + "marketcap_usd": 99825951, + "name": "Zcoin", + "shortcut": "XZC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin" + }, "coin:ZEC": { "links": { + "Github": "https://github.com/zcash/zcash", "Homepage": "z.cash", - "TREZOR Wallet": "https://wallet.trezor.io" + "Trezor Wallet": "https://wallet.trezor.io" }, - "marketcap_usd": 1142522957, + "marketcap_usd": 809511172, "name": "Zcash", "shortcut": "ZEC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin" }, + "coin:tDASH": { + "hidden": 1, + "links": { + "Github": "https://github.com/dashpay/dash", + "Homepage": "https://www.dash.org" + }, + "marketcap_usd": 0, + "name": "Dash Testnet", + "shortcut": "tDASH", + "t1_enabled": "yes", + "t2_enabled": "no", + "type": "coin" + }, + "coin:tGRS": { + "hidden": 1, + "links": { + "Github": "https://github.com/Groestlcoin/groestlcoin", + "Homepage": "https://www.groestlcoin.org" + }, + "marketcap_usd": 0, + "name": "Groestlcoin Testnet", + "shortcut": "tGRS", + "t1_enabled": "yes", + "t2_enabled": "no", + "type": "coin" + }, + "coin:tXZC": { + "hidden": 1, + "links": { + "Github": "https://github.com/zcoinofficial/zcoin", + "Homepage": "https://zcoin.io" + }, + "marketcap_usd": 0, + "name": "Zcoin Testnet", + "shortcut": "tXZC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin" + }, "erc20:etc:BEC": { "address": "0x085fb4f24031EAedbC2B611AA528f22343eB52Db", "hidden": 1, @@ -605,7 +879,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 332396950, + "marketcap_usd": 226661511, "name": "Aion", "network": "eth", "shortcut": "AION", @@ -667,7 +941,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 6907307, + "marketcap_usd": 4779922, "name": "ALIS Token", "network": "eth", "shortcut": "ALIS", @@ -792,7 +1066,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 0, + "marketcap_usd": 31848380, "name": "APIS", "network": "eth", "shortcut": "APIS", @@ -831,9 +1105,8 @@ "t2_enabled": "yes", "type": "erc20" }, - "erc20:eth:ARCD": { + "erc20:eth:ARC": { "address": "0xAc709FcB44a43c35F0DA4e3163b117A17F3770f5", - "hidden": 1, "links": { "Github": "https://github.com/swarmcity/ac-token", "Homepage": "https://arcade.city/", @@ -1598,7 +1871,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 71832, + "marketcap_usd": 108537, "name": "BRAT", "network": "eth", "shortcut": "BRAT", @@ -1847,7 +2120,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 55807655, + "marketcap_usd": 46281896, "name": "Crypto20's Token", "network": "eth", "shortcut": "C20", @@ -2352,7 +2625,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 21645513, + "marketcap_usd": 17746743, "name": "Coss Token", "network": "eth", "shortcut": "COSS", @@ -2445,7 +2718,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 12732962, + "marketcap_usd": 23242658, "name": "Credo / Bitbounce", "network": "eth", "shortcut": "CREDO", @@ -2614,7 +2887,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 455872, + "marketcap_usd": 277931, "name": "CryptoCarbon", "network": "eth", "shortcut": "CryptoCarbon", @@ -2644,7 +2917,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 14758475, + "marketcap_usd": 11958354, "name": "DADI", "network": "eth", "shortcut": "DADI", @@ -2660,7 +2933,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 36443734, + "marketcap_usd": 43138249, "name": "Dai Stablecoin v1.0", "network": "eth", "shortcut": "DAI", @@ -2753,7 +3026,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 166353, + "marketcap_usd": 152629, "name": "DATACoin", "network": "eth", "shortcut": "DATACoin", @@ -2893,7 +3166,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 78782331, + "marketcap_usd": 57714154, "name": "DENT", "network": "eth", "shortcut": "DENT", @@ -3447,7 +3720,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 803223, + "marketcap_usd": 413855, "name": "ELTCOIN", "network": "eth", "shortcut": "ELTCOIN", @@ -3565,6 +3838,22 @@ "t2_enabled": "yes", "type": "erc20" }, + "erc20:eth:EOS": { + "address": "0x86Fa049857E0209aa7D9e616F7eb3b3B78ECfdb0", + "hidden": 1, + "links": { + "Homepage": "https://eos.io", + "MyCrypto Wallet": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + }, + "marketcap_usd": 9384925557, + "name": "EOS", + "network": "eth", + "shortcut": "EOS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20" + }, "erc20:eth:EPX": { "address": "0x35BAA72038F127f9f8C8f9B491049f64f377914d", "links": { @@ -4254,7 +4543,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 398524715, + "marketcap_usd": 308018599, "name": "Golem", "network": "eth", "shortcut": "GNT", @@ -4285,7 +4574,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 15659833, + "marketcap_usd": 12602486, "name": "GRID", "network": "eth", "shortcut": "GRID", @@ -4721,7 +5010,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 10012832, + "marketcap_usd": 6526689, "name": "ICOS", "network": "eth", "shortcut": "ICOS", @@ -5180,7 +5469,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 156336780, + "marketcap_usd": 111054098, "name": "Kin Foundation", "network": "eth", "shortcut": "KIN", @@ -5380,7 +5669,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 6625789, + "marketcap_usd": 16158793, "name": "LIFE", "network": "eth", "shortcut": "LIFE", @@ -5768,7 +6057,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 701901, + "marketcap_usd": 514674, "name": "MCAP", "network": "eth", "shortcut": "MCAP", @@ -6432,7 +6721,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 12349660, + "marketcap_usd": 3777358, "name": "NPER", "network": "eth", "shortcut": "NPER", @@ -6463,7 +6752,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 142359200, + "marketcap_usd": 106352000, "name": "NULS", "network": "eth", "shortcut": "NULS", @@ -6523,7 +6812,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 13818836, + "marketcap_usd": 9466926, "name": "OAX", "network": "eth", "shortcut": "OAX", @@ -6649,7 +6938,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 48943780, + "marketcap_usd": 29130493, "name": "Simple Token 'OST'", "network": "eth", "shortcut": "OST", @@ -7327,7 +7616,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 177431800, + "marketcap_usd": 119497700, "name": "QASH", "network": "eth", "shortcut": "QASH", @@ -7422,7 +7711,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 1182427083, + "marketcap_usd": 920789865, "name": "Qtum", "network": "eth", "shortcut": "QTUM", @@ -7515,7 +7804,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 12294162, + "marketcap_usd": 7606164, "name": "Rebellious", "network": "eth", "shortcut": "REBL", @@ -7623,7 +7912,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 138313488, + "marketcap_usd": 73457426, "name": "IEx.ec", "network": "eth", "shortcut": "RLC", @@ -7700,7 +7989,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 45148263, + "marketcap_usd": 35337095, "name": "Rocket Token", "network": "eth", "shortcut": "ROCK", @@ -7836,7 +8125,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 127335801, + "marketcap_usd": 78147744, "name": "Salt Lending Token", "network": "eth", "shortcut": "SALT", @@ -7896,7 +8185,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 2468047, + "marketcap_usd": 3044591, "name": "Sensay", "network": "eth", "shortcut": "SENSE", @@ -8432,7 +8721,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 19818646, + "marketcap_usd": 11785670, "name": "STK Token", "network": "eth", "shortcut": "STK", @@ -8463,7 +8752,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 101564055, + "marketcap_usd": 76105113, "name": "STORJ", "network": "eth", "shortcut": "STORJ", @@ -8478,7 +8767,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 143010374, + "marketcap_usd": 89475720, "name": "Storm Token", "network": "eth", "shortcut": "STORM", @@ -8925,7 +9214,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 28509211, + "marketcap_usd": 20394165, "name": "Token-as-a-Service", "network": "eth", "shortcut": "TaaS", @@ -9297,7 +9586,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 120818483, + "marketcap_usd": 75667822, "name": "WAX", "network": "eth", "shortcut": "WAX", @@ -9437,7 +9726,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 34689405, + "marketcap_usd": 22437220, "name": "WINGS", "network": "eth", "shortcut": "WINGS", @@ -9529,7 +9818,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 33254634, + "marketcap_usd": 19071548, "name": "WaBi", "network": "eth", "shortcut": "WaBi", @@ -9791,7 +10080,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 10945554, + "marketcap_usd": 5778446, "name": "ZAP", "network": "eth", "shortcut": "ZAP", @@ -9962,7 +10251,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 113134501, + "marketcap_usd": 85974160, "name": "eosDAC", "network": "eth", "shortcut": "eosDAC", @@ -10038,7 +10327,7 @@ "MyCrypto Wallet": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" }, - "marketcap_usd": 4081182, + "marketcap_usd": 2625904, "name": "QWARK", "network": "ubq", "shortcut": "QWARK", @@ -10078,7 +10367,7 @@ "Homepage": "https://www.dimcoin.io", "Nano Wallet": "https://nem.io/downloads/" }, - "marketcap_usd": 15282234, + "marketcap_usd": 11611041, "name": "DIMCOIN", "shortcut": "DIM", "t1_enabled": "yes", @@ -10091,7 +10380,7 @@ "Homepage": "https://www.dimcoin.io", "Nano Wallet": "https://nem.io/downloads/" }, - "marketcap_usd": 15282234, + "marketcap_usd": 11611041, "name": "DIM TOKEN", "shortcut": "DIMTOK", "t1_enabled": "yes", @@ -10127,7 +10416,7 @@ "Homepage": "https://nem.io", "Nano Wallet": "https://nem.io/downloads/" }, - "marketcap_usd": 2390067000, + "marketcap_usd": 1732770000, "name": "NEM", "shortcut": "XEM", "t1_enabled": "yes", @@ -10136,11 +10425,11 @@ } }, "info": { - "marketcap_usd": 234741301894, - "t1_coins": 131, - "t2_coins": 515, - "total_marketcap_usd": 333046926165, - "updated_at": 1527240389, - "updated_at_readable": "Fri May 25 11:26:29 2018" + "marketcap_usd": 211478474055, + "t1_coins": 135, + "t2_coins": 520, + "total_marketcap_usd": 287894027181, + "updated_at": 1529586398, + "updated_at_readable": "Thu Jun 21 15:06:38 2018" } } From 98fb5c87c07317e8e47834ba96815060ff48d75c Mon Sep 17 00:00:00 2001 From: slush Date: Thu, 21 Jun 2018 15:13:30 +0200 Subject: [PATCH 376/767] Moving coins_details.json to defs/ --- coins_details.json => defs/coins_details.json | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename coins_details.json => defs/coins_details.json (100%) diff --git a/coins_details.json b/defs/coins_details.json similarity index 100% rename from coins_details.json rename to defs/coins_details.json From 1de038e3c075e347142664cdb12636727c20178f Mon Sep 17 00:00:00 2001 From: slush Date: Thu, 21 Jun 2018 15:14:34 +0200 Subject: [PATCH 377/767] Scripts moved to tools/ --- tools/build_coins.py | 248 ++++++++++++++++++ tools/coindef.py | 110 ++++++++ coins_details.py => tools/coins_details.py | 40 +-- .../ethereum_tokens_gen.py | 2 +- 4 files changed, 383 insertions(+), 17 deletions(-) create mode 100755 tools/build_coins.py create mode 100644 tools/coindef.py rename coins_details.py => tools/coins_details.py (88%) rename ethereum_tokens_gen.py => tools/ethereum_tokens_gen.py (96%) diff --git a/tools/build_coins.py b/tools/build_coins.py new file mode 100755 index 000000000..cb3053db5 --- /dev/null +++ b/tools/build_coins.py @@ -0,0 +1,248 @@ +#!/usr/bin/env python3 + +# This script generates coins.json files from the definitions in defs/ +# +# - `./build_coins.py` generates a big file with everything +# - `./build_coins.py XXX` generates a file with coins supported by XXX +# for example: `./build_coins.py webwallet` or `./build_coins.py trezor1` +# - `./build_coins.py XXX --defs` also adds protobuf definitions with TOIF icon +# +# generated file is coins.json in current directory, +# and coindefs.json if --def is enabled + +import json +import glob +import re +import os +import sys + +if '--defs' in sys.argv: + from binascii import unhexlify + from hashlib import sha256 + import ed25519 + from PIL import Image + from trezorlib.protobuf import dump_message + from coindef import CoinDef + BUILD_DEFS = True +else: + BUILD_DEFS = False + + +def check_type(val, types, nullable=False, empty=False, regex=None, choice=None): # noqa:E501 + # check nullable + if nullable and val is None: + return True + # check empty + try: + if not empty and len(val) == 0: + return False + except TypeError: + pass + # check regex + if regex is not None: + if types is not str: + return False + m = re.match(regex, val) + if not m: + return False + # check choice + if choice is not None: + if val not in choice: + return False + # check type + if isinstance(types, list): + return True in [isinstance(val, t) for t in types] + else: + return isinstance(val, types) + + +def validate_coin(coin): + assert check_type(coin['coin_name'], str, regex=r'^[A-Z]') + assert check_type(coin['coin_shortcut'], str, regex=r'^[A-Zt][A-Z][A-Z]+$') + assert check_type(coin['coin_label'], str, regex=r'^[A-Z]') + assert check_type(coin['website'], str, regex=r'^http.*[^/]$') + assert check_type(coin['github'], str, regex=r'^https://github.com/.*[^/]$') # noqa:E501 + assert check_type(coin['maintainer'], str) + assert check_type(coin['curve_name'], str, choice=['secp256k1', 'secp256k1_decred', 'secp256k1_groestl']) # noqa:E501 + assert check_type(coin['address_type'], int) + assert check_type(coin['address_type_p2sh'], int) + assert coin['address_type'] != coin['address_type_p2sh'] + assert check_type(coin['maxfee_kb'], int) + assert check_type(coin['minfee_kb'], int) + assert coin['maxfee_kb'] >= coin['minfee_kb'] + assert check_type(coin['hash_genesis_block'], str, regex=r'^[0-9a-f]{64}$') + assert check_type(coin['xprv_magic'], int) + assert check_type(coin['xpub_magic'], int) + assert check_type(coin['xpub_magic_segwit_p2sh'], int, nullable=True) + assert check_type(coin['xpub_magic_segwit_native'], int, nullable=True) + assert coin['xprv_magic'] != coin['xpub_magic'] + assert coin['xprv_magic'] != coin['xpub_magic_segwit_p2sh'] + assert coin['xprv_magic'] != coin['xpub_magic_segwit_native'] + assert coin['xpub_magic'] != coin['xpub_magic_segwit_p2sh'] + assert coin['xpub_magic'] != coin['xpub_magic_segwit_native'] + assert coin['xpub_magic_segwit_p2sh'] is None or coin['xpub_magic_segwit_native'] is None or coin['xpub_magic_segwit_p2sh'] != coin['xpub_magic_segwit_native'] # noqa:E501 + assert check_type(coin['slip44'], int) + assert check_type(coin['segwit'], bool) + assert check_type(coin['decred'], bool) + assert check_type(coin['fork_id'], int, nullable=True) + assert check_type(coin['force_bip143'], bool) + assert check_type(coin['version_group_id'], int, nullable=True) + assert check_type(coin['default_fee_b'], dict) + assert check_type(coin['dust_limit'], int) + assert check_type(coin['blocktime_seconds'], int) + assert check_type(coin['signed_message_header'], str) + assert check_type(coin['address_prefix'], str, regex=r'^.*:$') + assert check_type(coin['min_address_length'], int) + assert check_type(coin['max_address_length'], int) + assert coin['max_address_length'] >= coin['min_address_length'] + assert check_type(coin['bech32_prefix'], str, nullable=True) + assert check_type(coin['cashaddr_prefix'], str, nullable=True) + assert check_type(coin['bitcore'], list, empty=True) + for bc in coin['bitcore']: + assert not bc.endswith('/') + + +def validate_icon(icon): + assert icon.size == (96, 96) + assert icon.mode == 'RGBA' + + +class Writer: + + def __init__(self): + self.buf = bytearray() + + def write(self, buf): + self.buf.extend(buf) + + +def serialize(coin, icon): + c = dict(coin) + c['signed_message_header'] = c['signed_message_header'].encode() + c['hash_genesis_block'] = unhexlify(c['hash_genesis_block']) + c['icon'] = icon + msg = CoinDef(**c) + w = Writer() + dump_message(w, msg) + return bytes(w.buf) + + +def sign(data): + h = sha256(data).digest() + sign_key = ed25519.SigningKey(b'A' * 32) + return sign_key.sign(h) + + +# conversion copied from trezor-core/tools/png2toi +# TODO: extract into common module in python-trezor +def convert_icon(icon): + import struct + import zlib + w, h = 32, 32 + icon = icon.resize((w, h), Image.LANCZOS) + # remove alpha channel, replace with black + bg = Image.new('RGBA', icon.size, (0, 0, 0, 255)) + icon = Image.alpha_composite(bg, icon) + # process pixels + pix = icon.load() + data = bytes() + for j in range(h): + for i in range(w): + r, g, b, _ = pix[i, j] + c = ((r & 0xF8) << 8) | ((g & 0xFC) << 3) | ((b & 0xF8) >> 3) + data += struct.pack('>H', c) + z = zlib.compressobj(level=9, wbits=10) + zdata = z.compress(data) + z.flush() + zdata = zdata[2:-4] # strip header and checksum + return zdata + + +def process_json(fn): + print(os.path.basename(fn), end=' ... ') + j = json.load(open(fn)) + if BUILD_DEFS: + i = Image.open(fn.replace('.json', '.png')) + validate_coin(j) + validate_icon(i) + ser = serialize(j, convert_icon(i)) + sig = sign(ser) + definition = (sig + ser).hex() + print('OK') + return j, definition + else: + print('OK') + return j, None + +def process(for_device=None): + scriptdir = os.path.dirname(os.path.realpath(__file__)) + + support_json = json.load(open(scriptdir + '/../defs/support.json')) + if for_device is not None: + support_list = support_json[for_device].keys() + else: + support_list = None + + coins = {} + defs = {} + for fn in glob.glob(scriptdir + '/../defs/coins/*.json'): + c, d = process_json(fn) + n = c['coin_name'] + c['support'] = {} + for s in support_json.keys(): + c['support'][s] = support_json[s][n] if n in support_json[s] else None + if support_list is None or n in support_list: + coins[n] = c + defs[n] = d + + return (coins, defs) + +if __name__ == '__main__': + if len(sys.argv) > 1 and not sys.argv[1].startswith('-'): + for_device = sys.argv[1] + else: + for_device = None + + (coins, defs) = process(for_device) + + json.dump(coins, open('coins.json', 'w'), indent=4, sort_keys=True) + if BUILD_DEFS: + json.dump(defs, open('coindefs.json', 'w'), indent=4, sort_keys=True) + + # check for colliding address versions + at_p2pkh = {} + at_p2sh = {} + slip44 = {} + + for n, c in coins.items(): + s = c['slip44'] + if s not in slip44: + slip44[s] = [] + if not(n.endswith('Testnet') and s == 1): + slip44[s].append(n) + if c['cashaddr_prefix']: # skip cashaddr currencies + continue + a1, a2 = c['address_type'], c['address_type_p2sh'] + if a1 not in at_p2pkh: + at_p2pkh[a1] = [] + if a2 not in at_p2sh: + at_p2sh[a2] = [] + at_p2pkh[a1].append(n) + at_p2sh[a2].append(n) + + print() + print('Colliding address_types for P2PKH:') + for k, v in at_p2pkh.items(): + if len(v) >= 2: + print('-', k, ':', ','.join(v)) + + print() + print('Colliding address_types for P2SH:') + for k, v in at_p2sh.items(): + if len(v) >= 2: + print('-', k, ':', ','.join(v)) + + print() + print('Colliding SLIP44 constants:') + for k, v in slip44.items(): + if len(v) >= 2: + print('-', k, ':', ','.join(v)) diff --git a/tools/coindef.py b/tools/coindef.py new file mode 100644 index 000000000..fad14fbc0 --- /dev/null +++ b/tools/coindef.py @@ -0,0 +1,110 @@ +from trezorlib import protobuf as p + + +class CoinDef(p.MessageType): + FIELDS = { + 1: ('coin_name', p.UnicodeType, 0), + 2: ('coin_shortcut', p.UnicodeType, 0), + 3: ('coin_label', p.UnicodeType, 0), + 4: ('curve_name', p.UnicodeType, 0), + 5: ('address_type', p.UVarintType, 0), + 6: ('address_type_p2sh', p.UVarintType, 0), + 7: ('maxfee_kb', p.UVarintType, 0), + 8: ('minfee_kb', p.UVarintType, 0), + 9: ('signed_message_header', p.BytesType, 0), + 10: ('hash_genesis_block', p.BytesType, 0), + 11: ('xprv_magic', p.UVarintType, 0), + 12: ('xpub_magic', p.UVarintType, 0), + 13: ('xpub_magic_segwit_p2sh', p.UVarintType, 0), + 14: ('xpub_magic_segwit_native', p.UVarintType, 0), + 15: ('bech32_prefix', p.UnicodeType, 0), + 16: ('cashaddr_prefix', p.UnicodeType, 0), + 17: ('slip44', p.UVarintType, 0), + 18: ('segwit', p.BoolType, 0), + 19: ('decred', p.BoolType, 0), + 20: ('fork_id', p.UVarintType, 0), + 21: ('force_bip143', p.BoolType, 0), + 22: ('dust_limit', p.UVarintType, 0), + 23: ('address_prefix', p.UnicodeType, 0), + 24: ('min_address_length', p.UVarintType, 0), + 25: ('max_address_length', p.UVarintType, 0), + 26: ('icon', p.BytesType, 0), + 27: ('version_group_id', p.UVarintType, 0), + 28: ('website', p.UnicodeType, 0), + 29: ('github', p.UnicodeType, 0), + 30: ('maintainer', p.UnicodeType, 0), + 31: ('blocktime_seconds', p.UVarintType, 0), + } + + def __init__( + self, + coin_name: str = None, + coin_shortcut: str = None, + coin_label: str = None, + curve_name: str = None, + address_type: int = None, + address_type_p2sh: int = None, + maxfee_kb: int = None, + minfee_kb: int = None, + signed_message_header: bytes = None, + hash_genesis_block: bytes = None, + xprv_magic: int = None, + xpub_magic: int = None, + xpub_magic_segwit_p2sh: int = None, + xpub_magic_segwit_native: int = None, + bech32_prefix: str = None, + cashaddr_prefix: str = None, + slip44: int = None, + segwit: bool = None, + decred: bool = None, + fork_id: int = None, + force_bip143: bool = None, + dust_limit: int = None, + address_prefix: str = None, + min_address_length: int = None, + max_address_length: int = None, + icon: bytes = None, + version_group_id: int = None, + website: str = None, + github: str = None, + maintainer: str = None, + blocktime_seconds: int = None, + default_fee_b: dict = None, + bitcore: dict = None, + blockbook: dict = None + ): + self.coin_name = coin_name + self.coin_shortcut = coin_shortcut + self.coin_label = coin_label + self.curve_name = curve_name + self.address_type = address_type + self.address_type_p2sh = address_type_p2sh + self.maxfee_kb = maxfee_kb + self.minfee_kb = minfee_kb + self.signed_message_header = signed_message_header + self.hash_genesis_block = hash_genesis_block + self.xprv_magic = xprv_magic + self.xpub_magic = xpub_magic + self.xpub_magic_segwit_p2sh = xpub_magic_segwit_p2sh + self.xpub_magic_segwit_native = xpub_magic_segwit_native + self.bech32_prefix = bech32_prefix + self.cashaddr_prefix = cashaddr_prefix + self.slip44 = slip44 + self.segwit = segwit + self.decred = decred + self.fork_id = fork_id + self.force_bip143 = force_bip143 + self.dust_limit = dust_limit + self.address_prefix = address_prefix + self.min_address_length = min_address_length + self.max_address_length = max_address_length + self.icon = icon + self.version_group_id = version_group_id + self.website = website + self.github = github + self.maintainer = maintainer + self.blocktime_seconds = blocktime_seconds + self.default_fee_b = default_fee_b + self.bitcore = bitcore + self.blockbook = blockbook + p.MessageType.__init__(self) diff --git a/coins_details.py b/tools/coins_details.py similarity index 88% rename from coins_details.py rename to tools/coins_details.py index c3ad2fd88..841b5f958 100755 --- a/coins_details.py +++ b/tools/coins_details.py @@ -5,6 +5,7 @@ import json import requests import pprint import ethereum_tokens_gen +import build_coins COINS = {} @@ -68,8 +69,8 @@ def update_info(details): details['info']['updated_at'] = int(time.time()) details['info']['updated_at_readable'] = time.asctime() - details['info']['t1_coins'] = len([True for _, c in details['coins'].items() if c['t1_enabled'] == 'yes' and not c.get('hidden', False)]) - details['info']['t2_coins'] = len([True for _, c in details['coins'].items() if c['t2_enabled'] == 'yes' and not c.get('hidden', False)]) + details['info']['t1_coins'] = len([True for _, c in details['coins'].items() if c.get('t1_enabled') == 'yes' and not c.get('hidden', False)]) + details['info']['t2_coins'] = len([True for _, c in details['coins'].items() if c.get('t2_enabled') == 'yes' and not c.get('hidden', False)]) try: details['info']['total_marketcap_usd'] = int(coinmarketcap_global()['data']['quotes']['USD']['total_market_cap']) @@ -90,12 +91,13 @@ def check_unsupported(details, prefix, supported): print("%s not supported by Trezor? (Possible manual entry)" % k) def update_coins(details): - coins = json.load(open('coins.json', 'r')) + (coins, _) = build_coins.process(None) + firmware = json.load(open('../defs/support.json', 'r')) supported = [] - for coin in coins: - if coin['firmware'] != 'stable': - continue + for key, coin in coins.items(): + t1_enabled = key in firmware['trezor1'] + t2_enabled = key in firmware['trezor2'] # print("Updating", coin['coin_label'], coin['coin_shortcut']) key = "coin:%s" % coin['coin_shortcut'] @@ -105,8 +107,11 @@ def update_coins(details): set_default(out, 'shortcut', coin['coin_shortcut']) set_default(out, 'name', coin['coin_label']) set_default(out, 'links', {}) - set_default(out, 't1_enabled', 'yes') - set_default(out, 't2_enabled', 'yes') + set_default(out['links'], 'Homepage', coin['website']) + set_default(out['links'], 'Github', coin['github']) + set_default(out, 't1_enabled', 'yes' if t1_enabled else 'no') + set_default(out, 't2_enabled', 'yes' if t2_enabled else 'no') + update_marketcap(out, coin.get('coinmarketcap_alias', coin['coin_label'])) check_unsupported(details, 'coin:', supported) @@ -235,7 +240,7 @@ def update_ethereum(details): set_default(out, 't2_enabled', 'yes') update_marketcap(out, 'etsc') - ut = details['coins'].setdefault('coin2:EOSC', {}) + out = details['coins'].setdefault('coin2:EOSC', {}) out['type'] = 'coin' set_default(out, 'shortcut', 'EOSC') set_default(out, 'name', 'EOS Classic') @@ -244,7 +249,7 @@ def update_ethereum(details): update_marketcap(out, 'eosc') def update_mosaics(details): - d = json.load(open('defs/nem/nem_mosaics.json')) + d = json.load(open('../defs/nem/nem_mosaics.json')) supported = [] for mosaic in d: # print('Updating', mosaic['name'], mosaic['ticker']) @@ -270,7 +275,7 @@ def check_missing_details(details): if 'links' not in coin: print("%s: Missing links" % k) hide = True - if 'Homepage' not in coin['links']: + if 'Homepage' not in coin.get('links', {}): print("%s: Missing homepage" % k) hide = True if coin['t1_enabled'] not in ('yes', 'no', 'planned', 'soon'): @@ -279,11 +284,11 @@ def check_missing_details(details): if coin['t2_enabled'] not in ('yes', 'no', 'planned', 'soon'): print("%s: Unknown t2_enabled" % k) hide = True - if 'TREZOR Wallet' in coin['links'] and coin['links']['TREZOR Wallet'] != 'https://wallet.trezor.io': - print("%s: Strange URL for TREZOR Wallet" % k) + if 'Trezor Wallet' in coin.get('links', {}) and coin['links']['Trezor Wallet'] != 'https://wallet.trezor.io': + print("%s: Strange URL for Trezor Wallet" % k) hide = True - for w in [ x.lower() for x in coin['links'].keys() ]: + for w in [ x.lower() for x in coin.get('links', {}).keys() ]: if 'wallet' in w or 'electrum' in w: break else: @@ -294,6 +299,9 @@ def check_missing_details(details): print("%s: Missing wallet, but not hiding" % k) if hide: + if coin.get('hidden') != 1: + print("%s: HIDING COIN!" % k) + # If any of important detail is missing, hide coin from list coin['hidden'] = 1 @@ -306,7 +314,7 @@ def check_missing_details(details): if __name__ == '__main__': try: - details = json.load(open('coins_details.json', 'r')) + details = json.load(open('../defs/coins_details.json', 'r')) except FileNotFoundError: details = {'coins': {}, 'info': {}} @@ -319,4 +327,4 @@ if __name__ == '__main__': check_missing_details(details) print(json.dumps(details['info'], sort_keys=True, indent=4)) - json.dump(details, open('coins_details.json', 'w'), sort_keys=True, indent=4) + json.dump(details, open('../defs/coins_details.json', 'w'), sort_keys=True, indent=4) diff --git a/ethereum_tokens_gen.py b/tools/ethereum_tokens_gen.py similarity index 96% rename from ethereum_tokens_gen.py rename to tools/ethereum_tokens_gen.py index d1718a8c7..5a288a849 100755 --- a/ethereum_tokens_gen.py +++ b/tools/ethereum_tokens_gen.py @@ -7,7 +7,7 @@ def get_tokens(): tokens = [] for s, i in networks: try: - files = os.scandir('defs/ethereum/tokens/tokens/%s' % s) + files = os.scandir('../defs/ethereum/tokens/tokens/%s' % s) except FileNotFoundError: continue From 390f6e9039ccc2df87486aed3440aa66605e7b8e Mon Sep 17 00:00:00 2001 From: slush Date: Thu, 21 Jun 2018 15:23:48 +0200 Subject: [PATCH 378/767] YUPIE token replaced by YUP (to be added) --- defs/coins_details.json | 1 + 1 file changed, 1 insertion(+) diff --git a/defs/coins_details.json b/defs/coins_details.json index a11c666e4..2d133911b 100644 --- a/defs/coins_details.json +++ b/defs/coins_details.json @@ -10057,6 +10057,7 @@ "type": "erc20" }, "erc20:eth:YUPIE": { + "hidden": 1, "address": "0x0F33bb20a282A7649C7B3AFf644F084a9348e933", "links": { "Github": "https://github.com/crowdholdingico/YupieSmartContract", From c61a9336508706b4081615022fb8782b7e0634f9 Mon Sep 17 00:00:00 2001 From: slush Date: Thu, 21 Jun 2018 16:00:01 +0200 Subject: [PATCH 379/767] Updated ethereum tokens --- defs/ethereum/tokens | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/defs/ethereum/tokens b/defs/ethereum/tokens index 0c36adf6b..0b7f34d48 160000 --- a/defs/ethereum/tokens +++ b/defs/ethereum/tokens @@ -1 +1 @@ -Subproject commit 0c36adf6bda829578b0d32713342b6486c2ab591 +Subproject commit 0b7f34d48de1376f39e10adbeb5a0191cdffd73c From a18de043b069be7811d200c7416307c1c6a0132c Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 21 Jun 2018 16:35:29 +0200 Subject: [PATCH 380/767] tools: small nitpicks, fix flake8 warnings --- tools/coins_details.py | 29 ++++++++++++++++------------- tools/ethereum_tokens_gen.py | 29 +++++++++++++++++------------ 2 files changed, 33 insertions(+), 25 deletions(-) diff --git a/tools/coins_details.py b/tools/coins_details.py index 841b5f958..c481b6525 100755 --- a/tools/coins_details.py +++ b/tools/coins_details.py @@ -3,12 +3,12 @@ import time import json import requests -import pprint import ethereum_tokens_gen import build_coins COINS = {} + def coinmarketcap_init(): global COINS @@ -44,11 +44,12 @@ def coinmarketcap_info(shortcut): for _id in COINS: coin = COINS[_id] - #print(shortcut, coin['website_slug']) + # print(shortcut, coin['website_slug']) if shortcut == coin['website_slug']: - #print(coin) + # print(coin) return coin + def update_marketcap(obj, shortcut): try: obj['marketcap_usd'] = int(float(coinmarketcap_info(shortcut)['quotes']['USD']['market_cap'])) @@ -56,15 +57,18 @@ def update_marketcap(obj, shortcut): pass # print("Marketcap info not found for", shortcut) + def coinmarketcap_global(): url = 'https://api.coinmarketcap.com/v2/global' ret = requests.get(url) data = ret.json() return data + def set_default(obj, key, default_value): obj[key] = obj.setdefault(key, default_value) + def update_info(details): details['info']['updated_at'] = int(time.time()) details['info']['updated_at_readable'] = time.asctime() @@ -83,6 +87,7 @@ def update_info(details): marketcap += details['coins'][k].setdefault('marketcap_usd', 0) details['info']['marketcap_usd'] = marketcap + def check_unsupported(details, prefix, supported): for k in details['coins'].keys(): if not k.startswith(prefix): @@ -90,6 +95,7 @@ def check_unsupported(details, prefix, supported): if k not in supported: print("%s not supported by Trezor? (Possible manual entry)" % k) + def update_coins(details): (coins, _) = build_coins.process(None) firmware = json.load(open('../defs/support.json', 'r')) @@ -116,16 +122,9 @@ def update_coins(details): check_unsupported(details, 'coin:', supported) + def update_erc20(details): - networks = ['eth', - 'exp', - # 'rop', - # 'rin', - 'ubq', - # 'rsk', - # 'kov', - 'etc', - ] + networks = [x[0] for x in ethereum_tokens_gen.networks] LATEST_T1 = 'https://raw.githubusercontent.com/trezor/trezor-mcu/v1.6.1/firmware/ethereum_tokens.c' LATEST_T2 = 'https://raw.githubusercontent.com/trezor/trezor-core/v2.0.6/src/apps/ethereum/tokens.py' @@ -175,6 +174,7 @@ def update_erc20(details): check_unsupported(details, 'erc20:', supported) + def update_ethereum(details): out = details['coins'].setdefault('coin2:ETH', {}) out['type'] = 'coin' @@ -248,6 +248,7 @@ def update_ethereum(details): set_default(out, 't2_enabled', 'yes') update_marketcap(out, 'eosc') + def update_mosaics(details): d = json.load(open('../defs/nem/nem_mosaics.json')) supported = [] @@ -267,6 +268,7 @@ def update_mosaics(details): check_unsupported(details, 'mosaic:', supported) + def check_missing_details(details): for k in details['coins'].keys(): coin = details['coins'][k] @@ -288,7 +290,7 @@ def check_missing_details(details): print("%s: Strange URL for Trezor Wallet" % k) hide = True - for w in [ x.lower() for x in coin.get('links', {}).keys() ]: + for w in [x.lower() for x in coin.get('links', {}).keys()]: if 'wallet' in w or 'electrum' in w: break else: @@ -312,6 +314,7 @@ def check_missing_details(details): if details['coins'][k].get('hidden') == 1: print("%s: Coin is hidden" % k) + if __name__ == '__main__': try: details = json.load(open('../defs/coins_details.json', 'r')) diff --git a/tools/ethereum_tokens_gen.py b/tools/ethereum_tokens_gen.py index 5a288a849..0021d5d31 100755 --- a/tools/ethereum_tokens_gen.py +++ b/tools/ethereum_tokens_gen.py @@ -2,6 +2,8 @@ import sys import os import json +import re + def get_tokens(): tokens = [] @@ -25,28 +27,31 @@ def get_tokens(): def print_tokens(tokens, python=False): + count = 0 for t in sorted(tokens, key=lambda x: x['chain'] + x['symbol'].upper()): - address, name, symbol, decimal, chain, chain_id = t['address'], t['name'], t['symbol'], int(t['decimals']), t['chain'], t['chain_id'] - address = '\\x'.join([address[i:i + 2] for i in range(0, len(address), 2)])[2:].lower() + address, name, symbol, decimal, chain, chain_id = t['address'], t['name'], t['symbol'], int(t['decimals']), t['chain'], t['chain_id'] # noqa:E501 + address = '\\x'.join([address[i:i + 2] for i in range(0, len(address), 2)])[2:].lower() # noqa:E501 + ascii_only = re.match(r'^[ -\x7F]+$', symbol) is not None + if not ascii_only: # skip Unicode symbols, they are stupid + continue + count += 1 if python: - print(" (%d, b'%s', '%s', %d), # %s / %s" % (chain_id, address, symbol, decimal, chain, name)) + print(" (%d, b'%s', '%s', %d), # %s / %s" % (chain_id, address, symbol, decimal, chain, name)) # noqa:E501 else: - print('\t{%2d, "%s", " %s", %d}, // %s / %s' % (chain_id, address, symbol, decimal, chain, name)) - - return len(tokens) + print('\t{%2d, "%s", " %s", %d}, // %s / %s' % (chain_id, address, symbol, decimal, chain, name)) # noqa:E501 + return count # disabled are networks with no tokens defined in ethereum-lists/tokens repo networks = [ + ('ella', 64), + ('etc', 61), ('eth', 1), - ('exp', 2), - # ('rop', 3), - # ('rin', 4), + ('kov', 42), + ('rin', 4), + ('rop', 3), ('ubq', 8), - # ('rsk', 30), - # ('kov', 42), - ('etc', 61), ] From ecbf11e1223fd53f605e7bbc152697001668da46 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 21 Jun 2018 16:39:04 +0200 Subject: [PATCH 381/767] travis: fix test --- .travis.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 52b7fc4d3..2de72dd7b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -16,8 +16,7 @@ install: - pip install --no-deps trezor script: - - jsonlint coins_details.json - - jsonlint defs/support.json + - jsonlint defs/*.json - cd defs/coins/tools && python build_coins.py notifications: From 73d62b1dc40656cd971135c4d708e439bd395b5f Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 21 Jun 2018 17:05:02 +0200 Subject: [PATCH 382/767] tools: strip ethereum token names --- tools/ethereum_tokens_gen.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/ethereum_tokens_gen.py b/tools/ethereum_tokens_gen.py index 0021d5d31..0b2577d2d 100755 --- a/tools/ethereum_tokens_gen.py +++ b/tools/ethereum_tokens_gen.py @@ -34,6 +34,7 @@ def print_tokens(tokens, python=False): ascii_only = re.match(r'^[ -\x7F]+$', symbol) is not None if not ascii_only: # skip Unicode symbols, they are stupid continue + name = name.strip() count += 1 if python: print(" (%d, b'%s', '%s', %d), # %s / %s" % (chain_id, address, symbol, decimal, chain, name)) # noqa:E501 From 2a3a7dec147e4688921991b1d5da820e223817c7 Mon Sep 17 00:00:00 2001 From: "wo@kotocoin.info" Date: Fri, 22 Jun 2018 00:22:57 +0900 Subject: [PATCH 383/767] defs: change official site for Koto --- defs/coins/koto.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/defs/coins/koto.json b/defs/coins/koto.json index eb96ee98e..273abe10c 100644 --- a/defs/coins/koto.json +++ b/defs/coins/koto.json @@ -2,9 +2,9 @@ "coin_name": "Koto", "coin_shortcut": "KOTO", "coin_label": "Koto", - "website": "https://koto.cash", - "github": "https://github.com/koto-dev/koto", - "maintainer": "WO ", + "website": "https://ko-to.org", + "github": "https://github.com/KotoDevelopers/koto", + "maintainer": "WO ", "curve_name": "secp256k1", "address_type": 7352, "address_type_p2sh": 7357, From 2f418817cc92e3cd7370b680d3e0acd0b5231c07 Mon Sep 17 00:00:00 2001 From: WO <35449969+wo01@users.noreply.github.com> Date: Fri, 22 Jun 2018 00:48:25 +0900 Subject: [PATCH 384/767] Add Koto (#143) --- defs/coins/koto.json | 4 ++-- defs/support.json | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/defs/coins/koto.json b/defs/coins/koto.json index 273abe10c..0b3a20fc7 100644 --- a/defs/coins/koto.json +++ b/defs/coins/koto.json @@ -6,8 +6,8 @@ "github": "https://github.com/KotoDevelopers/koto", "maintainer": "WO ", "curve_name": "secp256k1", - "address_type": 7352, - "address_type_p2sh": 7357, + "address_type": 6198, + "address_type_p2sh": 6203, "maxfee_kb": 1000000, "minfee_kb": 1000, "signed_message_header": "Koto Signed Message:\n", diff --git a/defs/support.json b/defs/support.json index 8c557c364..2538479cd 100644 --- a/defs/support.json +++ b/defs/support.json @@ -15,6 +15,7 @@ "Fujicoin": "1.6.1", "Groestlcoin": "1.6.2", "Groestlcoin Testnet": "1.6.2", + "Koto": "1.6.2", "Litecoin": "1.5.2", "Litecoin Testnet": "1.6.2", "Monacoin": "1.6.0", @@ -37,6 +38,7 @@ "DigiByte": "2.0.5", "Dogecoin": "2.0.5", "Fujicoin": "2.0.5", + "Koto": "2.0.7", "Litecoin": "2.0.5", "Litecoin Testnet": "2.0.7", "Monacoin": "2.0.5", @@ -71,6 +73,7 @@ "Fujicoin": true, "Groestlcoin": true, "Groestlcoin Testnet": true, + "Koto": true, "Litecoin": true, "Litecoin Testnet": true, "Monacoin": true, From 1e94dbce6a4f09d9080ddfb2f2d6d1ff50809e70 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 21 Jun 2018 18:03:30 +0200 Subject: [PATCH 385/767] defs: add more electrum forks to support.json --- defs/support.json | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/defs/support.json b/defs/support.json index 2538479cd..023126ef3 100644 --- a/defs/support.json +++ b/defs/support.json @@ -84,8 +84,16 @@ }, "electrum": { "Bitcoin": "https://electrum.org", - "Litecoin": "https://electrum-ltc.org", "Bcash": "https://electroncash.org", - "Dash": "https://electrum.dash.org" + "Bgold": "https://github.com/BTCGPU/electrum", + "Bprivate": "https://github.com/BTCPrivate/electrum-btcp", + "Dash": "https://electrum.dash.org", + "Groestlcoin": "https://www.groestlcoin.org/groestlcoin-electrum-wallet/", + "Koto": "https://electrum.kotocoin.info", + "Litecoin": "https://electrum-ltc.org", + "Monacoin": "https://electrum-mona.org", + "Namecoin": "https://github.com/namecoin/electrum-nmc", + "Viacoin": "https://vialectrum.org", + "Zcoin": "https://github.com/zcoinofficial/electrum-xzc" } } From 20f53c1027d941dfc9d3ce62b6b9e24cbb1d5346 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20B=C3=ADlek?= Date: Fri, 22 Jun 2018 01:01:40 +0200 Subject: [PATCH 386/767] Increase doge normal fee Doge has 100.000 sat/B relay fee for unconfirmed transactions. 10 sat/B seems to be enough for confirmed utxos, but let's increase this anyway --- defs/coins/dogecoin.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/defs/coins/dogecoin.json b/defs/coins/dogecoin.json index 8e03ed9b5..19da32f29 100644 --- a/defs/coins/dogecoin.json +++ b/defs/coins/dogecoin.json @@ -25,7 +25,7 @@ "force_bip143": false, "version_group_id": null, "default_fee_b": { - "Normal": 10 + "Normal": 100000 }, "dust_limit": 10000000, "blocktime_seconds": 60, From 2dad4dcd519662b9d69e276e737ac1bba655555d Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 22 Jun 2018 14:26:26 +0200 Subject: [PATCH 387/767] defs: disable Koto for now --- defs/support.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/defs/support.json b/defs/support.json index 023126ef3..ee9c4b933 100644 --- a/defs/support.json +++ b/defs/support.json @@ -15,7 +15,6 @@ "Fujicoin": "1.6.1", "Groestlcoin": "1.6.2", "Groestlcoin Testnet": "1.6.2", - "Koto": "1.6.2", "Litecoin": "1.5.2", "Litecoin Testnet": "1.6.2", "Monacoin": "1.6.0", @@ -38,7 +37,6 @@ "DigiByte": "2.0.5", "Dogecoin": "2.0.5", "Fujicoin": "2.0.5", - "Koto": "2.0.7", "Litecoin": "2.0.5", "Litecoin Testnet": "2.0.7", "Monacoin": "2.0.5", @@ -73,7 +71,6 @@ "Fujicoin": true, "Groestlcoin": true, "Groestlcoin Testnet": true, - "Koto": true, "Litecoin": true, "Litecoin Testnet": true, "Monacoin": true, From 6dc7763e6cafb8c276fec4ccc56a776685f763a4 Mon Sep 17 00:00:00 2001 From: slush Date: Fri, 22 Jun 2018 14:43:51 +0200 Subject: [PATCH 388/767] coins_details: Split links to 'links' and 'wallet' --- defs/coins_details.json | 7717 +++++++++++++++++++++++++-------------- tools/coins_details.py | 18 +- 2 files changed, 5007 insertions(+), 2728 deletions(-) diff --git a/defs/coins_details.json b/defs/coins_details.json index 2d133911b..26cad57a4 100644 --- a/defs/coins_details.json +++ b/defs/coins_details.json @@ -2,94 +2,108 @@ "coins": { "coin2:EGEM": { "links": { - "Homepage": "https://egem.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://egem.io" }, "marketcap_usd": 0, "name": "EtherGem", "shortcut": "EGEM", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "coin" + "type": "coin", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "coin2:ELLA": { "links": { - "Homepage": "https://ellaism.org", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://ellaism.org" }, - "marketcap_usd": 1034880, + "marketcap_usd": 890621, "name": "Ellaism", "shortcut": "ELLA", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "coin" + "type": "coin", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "coin2:EOSC": { "links": { - "Homepage": "https://eos-classic.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://eos-classic.io" }, "marketcap_usd": 0, "name": "EOS Classic", "shortcut": "EOSC", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "coin" + "type": "coin", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "coin2:ETC": { "links": { - "Homepage": "https://ethereumclassic.github.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://ethereumclassic.github.io" }, - "marketcap_usd": 1732952315, + "marketcap_usd": 1647351620, "name": "Ethereum Classic", "shortcut": "ETC", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "coin" + "type": "coin", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "coin2:ETH": { "links": { - "Homepage": "https://www.ethereum.org", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.ethereum.org" }, - "marketcap_usd": 53683595636, + "marketcap_usd": 48815875980, "name": "Ethereum", "shortcut": "ETH", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "coin" + "type": "coin", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "coin2:ETSC": { "links": { - "Homepage": "https://ethereumsocial.kr", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://ethereumsocial.kr" }, "marketcap_usd": 0, "name": "EthereumSocial", "shortcut": "ETSC", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "coin" + "type": "coin", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "coin2:EXP": { "links": { - "Homepage": "https://www.expanse.tech", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.expanse.tech" }, - "marketcap_usd": 8295154, + "marketcap_usd": 7739651, "name": "Expanse", "shortcut": "EXP", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "coin" + "type": "coin", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "coin2:LSK": { "hidden": 1, @@ -105,29 +119,33 @@ }, "coin2:RSK": { "links": { - "Homepage": "https://www.rsk.co", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.rsk.co" }, "marketcap_usd": 0, "name": "RSK", "shortcut": "RSK", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "coin" + "type": "coin", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "coin2:UBQ": { "links": { - "Homepage": "https://ubiqsmart.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://ubiqsmart.com" }, - "marketcap_usd": 41143159, + "marketcap_usd": 37367944, "name": "Ubiq", "shortcut": "UBQ", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "coin" + "type": "coin", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "coin2:XLM": { "links": { @@ -166,31 +184,35 @@ }, "coin:BCH": { "links": { - "Electron Cash": "https://electroncash.org", "Github": "https://github.com/Bitcoin-ABC/bitcoin-abc", - "Homepage": "https://www.bitcoincash.org/", - "Trezor Wallet": "https://wallet.trezor.io" + "Homepage": "https://www.bitcoincash.org/" }, - "marketcap_usd": 15146310159, + "marketcap_usd": 13856637255, "name": "Bitcoin Cash", "shortcut": "BCH", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "coin" + "type": "coin", + "wallet": { + "Electron Cash": "https://electroncash.org", + "Trezor": "https://wallet.trezor.io" + } }, "coin:BTC": { "links": { - "Electrum": "https://electrum.org", "Github": "https://github.com/bitcoin/bitcoin", - "Homepage": "https://bitcoin.org", - "Trezor Wallet": "https://wallet.trezor.io" + "Homepage": "https://bitcoin.org" }, - "marketcap_usd": 115314468942, + "marketcap_usd": 109004270722, "name": "Bitcoin", "shortcut": "BTC", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "coin" + "type": "coin", + "wallet": { + "Electrum": "https://electrum.org", + "Trezor": "https://wallet.trezor.io" + } }, "coin:BTCP": { "hidden": 1, @@ -198,7 +220,7 @@ "Github": "https://github.com/BTCPrivate/BitcoinPrivate", "Homepage": "https://btcprivate.org" }, - "marketcap_usd": 307489356, + "marketcap_usd": 277904492, "name": "Bitcoin Private", "shortcut": "BTCP", "t1_enabled": "yes", @@ -208,22 +230,24 @@ "coin:BTG": { "links": { "Github": "https://github.com/BTCGPU/BTCGPU", - "Homepage": "https://bitcoingold.org", - "Trezor Wallet": "https://wallet.trezor.io" + "Homepage": "https://bitcoingold.org" }, - "marketcap_usd": 549893116, + "marketcap_usd": 499820644, "name": "Bitcoin Gold", "shortcut": "BTG", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "coin" + "type": "coin", + "wallet": { + "Trezor": "https://wallet.trezor.io" + } }, "coin:BTX": { "links": { "Github": "https://github.com/LIMXTEC/BitCore", "Homepage": "https://bitcore.cc" }, - "marketcap_usd": 36589136, + "marketcap_usd": 34933288, "name": "Bitcore", "shortcut": "BTX", "t1_enabled": "no", @@ -235,7 +259,7 @@ "Github": "https://github.com/Crowndev/crowncoin", "Homepage": "https://crown.tech" }, - "marketcap_usd": 11991951, + "marketcap_usd": 10891329, "name": "Crown", "shortcut": "CRW", "t1_enabled": "no", @@ -245,15 +269,17 @@ "coin:DASH": { "links": { "Github": "https://github.com/dashpay/dash", - "Homepage": "https://www.dash.org", - "Trezor Wallet": "https://wallet.trezor.io" + "Homepage": "https://www.dash.org" }, - "marketcap_usd": 2155909044, + "marketcap_usd": 1989333072, "name": "Dash", "shortcut": "DASH", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "coin" + "type": "coin", + "wallet": { + "Trezor": "https://wallet.trezor.io" + } }, "coin:DCR": { "hidden": 1, @@ -261,7 +287,7 @@ "Github": "https://github.com/decred/dcrd", "Homepage": "https://www.decred.org" }, - "marketcap_usd": 649318652, + "marketcap_usd": 595891362, "name": "Decred", "shortcut": "DCR", "t1_enabled": "yes", @@ -274,7 +300,7 @@ "Github": "https://github.com/digibyte/digibyte", "Homepage": "https://www.digibyte.co" }, - "marketcap_usd": 276825915, + "marketcap_usd": 245542735, "name": "DigiByte", "shortcut": "DGB", "t1_enabled": "yes", @@ -295,28 +321,32 @@ "coin:DOGE": { "links": { "Github": "https://github.com/dogecoin/dogecoin", - "Homepage": "https://dogecoin.com", - "Trezor Wallet": "https://wallet.trezor.io" + "Homepage": "https://dogecoin.com" }, - "marketcap_usd": 343695749, + "marketcap_usd": 320352269, "name": "Dogecoin", "shortcut": "DOGE", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "coin" + "type": "coin", + "wallet": { + "Trezor": "https://wallet.trezor.io" + } }, "coin:FJC": { "links": { - "Electrum-FJC": "http://www.fujicoin.org/downloads.php", "Github": "https://github.com/fujicoin/fujicoin", "Homepage": "https://www.fujicoin.org" }, - "marketcap_usd": 617323, + "marketcap_usd": 498907, "name": "Fujicoin", "shortcut": "FJC", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "coin" + "type": "coin", + "wallet": { + "Electrum-FJC": "http://www.fujicoin.org/downloads.php" + } }, "coin:FLASH": { "links": { @@ -334,7 +364,7 @@ "Github": "https://github.com/FeatherCoin/Feathercoin", "Homepage": "https://feathercoin.com" }, - "marketcap_usd": 18778588, + "marketcap_usd": 33149194, "name": "Feathercoin", "shortcut": "FTC", "t1_enabled": "no", @@ -347,7 +377,7 @@ "Github": "https://github.com/Groestlcoin/groestlcoin", "Homepage": "https://www.groestlcoin.org" }, - "marketcap_usd": 52812326, + "marketcap_usd": 49027540, "name": "Groestlcoin", "shortcut": "GRS", "t1_enabled": "yes", @@ -367,30 +397,34 @@ }, "coin:LTC": { "links": { - "Electrum-LTC": "https://electrum-ltc.org", "Github": "https://github.com/litecoin-project/litecoin", - "Homepage": "https://litecoin.org", - "Trezor Wallet": "https://wallet.trezor.io" + "Homepage": "https://litecoin.org" }, - "marketcap_usd": 5520287505, + "marketcap_usd": 5074158720, "name": "Litecoin", "shortcut": "LTC", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "coin" + "type": "coin", + "wallet": { + "Electrum-LTC": "https://electrum-ltc.org", + "Trezor": "https://wallet.trezor.io" + } }, "coin:MONA": { "links": { - "Electrum-MONA": "https://electrum-mona.org", "Github": "https://github.com/monacoinproject/monacoin", "Homepage": "https://monacoin.org" }, - "marketcap_usd": 158649861, + "marketcap_usd": 149443693, "name": "Monacoin", "shortcut": "MONA", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "coin" + "type": "coin", + "wallet": { + "Electrum-MONA": "https://electrum-mona.org" + } }, "coin:MUE": { "links": { @@ -405,16 +439,18 @@ }, "coin:NMC": { "links": { - "Electrum-NMC": "https://github.com/namecoin/electrum-nmc", "Github": "https://github.com/namecoin/namecoin-core", "Homepage": "https://namecoin.org" }, - "marketcap_usd": 20915520, + "marketcap_usd": 20569657, "name": "Namecoin", "shortcut": "NMC", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "coin" + "type": "coin", + "wallet": { + "Electrum-NMC": "https://github.com/namecoin/electrum-nmc" + } }, "coin:TAZ": { "hidden": 1, @@ -486,7 +522,7 @@ "Github": "https://github.com/terracoin/terracoin", "Homepage": "https://terracoin.io" }, - "marketcap_usd": 1914922, + "marketcap_usd": 1846772, "name": "Terracoin", "shortcut": "TRC", "t1_enabled": "no", @@ -499,7 +535,7 @@ "Github": "https://github.com/viacoin", "Homepage": "https://viacoin.org" }, - "marketcap_usd": 27861709, + "marketcap_usd": 24945554, "name": "Viacoin", "shortcut": "VIA", "t1_enabled": "yes", @@ -511,7 +547,7 @@ "Github": "https://github.com/vertcoin-project/vertcoin-core", "Homepage": "https://vertcoin.org" }, - "marketcap_usd": 46503831, + "marketcap_usd": 44267678, "name": "Vertcoin", "shortcut": "VTC", "t1_enabled": "soon", @@ -523,7 +559,7 @@ "Github": "https://github.com/myriadcoin/myriadcoin", "Homepage": "https://www.myriadcoin.org" }, - "marketcap_usd": 7373483, + "marketcap_usd": 6744958, "name": "Myriad", "shortcut": "XMY", "t1_enabled": "no", @@ -536,7 +572,7 @@ "Github": "https://github.com/zcoinofficial/zcoin", "Homepage": "https://zcoin.io" }, - "marketcap_usd": 99825951, + "marketcap_usd": 94362182, "name": "Zcoin", "shortcut": "XZC", "t1_enabled": "yes", @@ -546,15 +582,17 @@ "coin:ZEC": { "links": { "Github": "https://github.com/zcash/zcash", - "Homepage": "z.cash", - "Trezor Wallet": "https://wallet.trezor.io" + "Homepage": "z.cash" }, - "marketcap_usd": 809511172, + "marketcap_usd": 752091024, "name": "Zcash", "shortcut": "ZEC", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "coin" + "type": "coin", + "wallet": { + "Trezor": "https://wallet.trezor.io" + } }, "coin:tDASH": { "hidden": 1, @@ -595,27 +633,42 @@ "t2_enabled": "yes", "type": "coin" }, + "erc20:ella:MINING": { + "address": "0x991e7Fe4b05f2b3db1D788e705963f5D647b0044", + "links": { + "Homepage": "https://pool.ellaism.org" + }, + "name": "Ella Mining Tokens", + "network": "ella", + "shortcut": "MINING", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:etc:BEC": { "address": "0x085fb4f24031EAedbC2B611AA528f22343eB52Db", "hidden": 1, - "links": { - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - }, + "links": {}, "marketcap_usd": 0, "name": "BEC", "network": "etc", "shortcut": "BEC", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:etc:PLAY": { "address": "0x5acE17f87c7391E5792a7683069A8025B83bbd85", "links": { - "Homepage": "http://smartbillions.com/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://smartbillions.com/" }, "marketcap_usd": 0, "name": "Smart Billions", @@ -623,14 +676,50 @@ "shortcut": "PLAY", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:$FFC": { + "address": "0x4E84E9e5fb0A972628Cf4568c403167EF1D40431", + "links": { + "Github": "https://github.com/Fluzcoin", + "Homepage": "https://fluzcoin.io/" + }, + "name": "$Fluzcoin", + "network": "eth", + "shortcut": "$FFC", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:$FXY": { + "address": "0xA024E8057EEC474a9b2356833707Dd0579E26eF3", + "links": { + "Github": "https://github.com/fixynetwork/FIXY-NETWORK", + "Homepage": "https://fixyapp.io" + }, + "name": "$FIXY NETWORK", + "network": "eth", + "shortcut": "$FXY", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:$TEAK": { "address": "0x7DD7F56D697Cc0f2b52bD55C057f378F1fE6Ab4b", "links": { - "Homepage": "https://steak.network", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://steak.network" }, "marketcap_usd": 0, "name": "$TEAK", @@ -638,14 +727,33 @@ "shortcut": "$TEAK", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:0xBTC": { + "address": "0xB6eD7644C69416d67B522e20bC294A9a9B405B31", + "links": { + "Homepage": "https://0xbitcoin.org/" + }, + "marketcap_usd": 2777056, + "name": "0xBitcoin", + "network": "eth", + "shortcut": "0xBTC", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:1ST": { "address": "0xAf30D2a7E90d7DC361c8C4585e9BB7D2F6f15bc7", "links": { - "Homepage": "https://firstblood.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://firstblood.io" }, "marketcap_usd": 0, "name": "FirstBlood", @@ -653,14 +761,16 @@ "shortcut": "1ST", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:1WO": { "address": "0xfDBc1aDc26F0F8f8606a5d63b7D3a3CD21c22B23", "links": { - "Homepage": "https://ico.1worldonline.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://ico.1worldonline.com" }, "marketcap_usd": 0, "name": "1WO", @@ -668,29 +778,32 @@ "shortcut": "1WO", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:2DC": { "address": "0x9fC0583220eB44fAeE9e2dc1E63F39204DDD9090", "hidden": 1, - "links": { - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - }, + "links": {}, "marketcap_usd": 0, "name": "DualChain", "network": "eth", "shortcut": "2DC", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:300": { "address": "0xaEc98A708810414878c3BCDF46Aad31dEd4a4557", "links": { - "Homepage": "https://300tokensparta.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://300tokensparta.com" }, "marketcap_usd": 0, "name": "300 Token Sparta", @@ -698,14 +811,16 @@ "shortcut": "300", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:A18": { "address": "0xBDe8f7820b5544a49D34F9dDeaCAbEDC7C0B5adc", "links": { - "Homepage": "https://apollo18.co.in", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://apollo18.co.in" }, "marketcap_usd": 0, "name": "Apollo18", @@ -713,14 +828,16 @@ "shortcut": "A18", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ABT": { "address": "0xB98d4C97425d9908E66E53A6fDf673ACcA0BE986", "links": { - "Homepage": "https://www.arcblock.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.arcblock.io" }, "marketcap_usd": 0, "name": "ArcBlock Token", @@ -728,15 +845,17 @@ "shortcut": "ABT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ABYSS": { "address": "0x0E8d6b471e332F140e7d9dbB99E5E3822F728DA6", "links": { "Github": "https://github.com/theabyssportal", - "Homepage": "https://www.theabyss.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.theabyss.com" }, "marketcap_usd": 0, "name": "ABYSS", @@ -744,14 +863,16 @@ "shortcut": "ABYSS", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ACC": { "address": "0x13F1b7FDFbE1fc66676D56483e21B1ecb40b58E2", "links": { - "Homepage": "http://accelerator.network", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://accelerator.network" }, "marketcap_usd": 0, "name": "Accelerator Network", @@ -759,14 +880,16 @@ "shortcut": "ACC", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ADH": { "address": "0xE69a353b3152Dd7b706ff7dD40fe1d18b7802d31", "links": { - "Homepage": "https://adhive.tv", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://adhive.tv" }, "marketcap_usd": 0, "name": "AdHive Token", @@ -774,15 +897,17 @@ "shortcut": "ADH", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ADI": { "address": "0x8810C63470d38639954c6B41AaC545848C46484a", "links": { "Github": "https://github.com/aditus", - "Homepage": "https://aditus.net", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://aditus.net" }, "marketcap_usd": 0, "name": "Aditus", @@ -790,14 +915,33 @@ "shortcut": "ADI", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:ADL": { + "address": "0x660e71483785f66133548B10f6926dC332b06e61", + "links": { + "Github": "https://github.com/adelecosystem", + "Homepage": "https://adel.io" + }, + "name": "Adelphoi", + "network": "eth", + "shortcut": "ADL", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ADST": { "address": "0x422866a8F0b032c5cf1DfBDEf31A20F4509562b0", "links": { - "Homepage": "https://adshares.net", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://adshares.net" }, "marketcap_usd": 0, "name": "AdShares", @@ -805,15 +949,17 @@ "shortcut": "ADST", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ADT": { "address": "0xD0D6D6C5Fe4a677D343cC433536BB717bAe167dD", "links": { "Github": "https://github.com/adchain", - "Homepage": "https://adtoken.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://adtoken.com" }, "marketcap_usd": 0, "name": "AdToken", @@ -821,15 +967,17 @@ "shortcut": "ADT", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ADX": { "address": "0x4470BB87d77b963A013DB939BE332f927f2b992e", "links": { "Github": "https://github.com/AdExBlockchain", - "Homepage": "https://www.adex.network", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.adex.network" }, "marketcap_usd": 0, "name": "AdEx Network", @@ -837,15 +985,17 @@ "shortcut": "ADX", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:AE": { "address": "0x5CA9a71B1d01849C0a95490Cc00559717fCF0D1d", "links": { "Github": "https://github.com/aeternity", - "Homepage": "https://www.aeternity.com/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.aeternity.com/" }, "marketcap_usd": 0, "name": "aeternity", @@ -853,15 +1003,17 @@ "shortcut": "AE", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:AGI": { "address": "0x8eB24319393716668D768dCEC29356ae9CfFe285", "links": { "Github": "https://github.com/singnet/singnet", - "Homepage": "https://singularitynet.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://singularitynet.io" }, "marketcap_usd": 0, "name": "SingularityNET", @@ -869,30 +1021,34 @@ "shortcut": "AGI", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:AION": { "address": "0x4CEdA7906a5Ed2179785Cd3A40A69ee8bc99C466", "links": { "Github": "https://github.com/aionnetwork", - "Homepage": "https://aion.network/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://aion.network/" }, - "marketcap_usd": 226661511, + "marketcap_usd": 203802087, "name": "Aion", "network": "eth", "shortcut": "AION", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:AIR": { "address": "0x27Dce1eC4d3f72C3E457Cc50354f1F975dDEf488", "links": { - "Homepage": "https://airtoken.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://airtoken.com" }, "marketcap_usd": 0, "name": "AirToken", @@ -900,15 +1056,17 @@ "shortcut": "AIR", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:AIX": { "address": "0x1063ce524265d5a3A624f4914acd573dD89ce988", "links": { "Github": "https://github.com/AigangNetwork", - "Homepage": "https://aigang.network/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://aigang.network/" }, "marketcap_usd": 0, "name": "Aigang", @@ -916,14 +1074,16 @@ "shortcut": "AIX", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ALCO": { "address": "0x181a63746d3Adcf356CBc73aCE22832FFBB1EE5A", "links": { - "Homepage": "https://alaricoin.org", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://alaricoin.org" }, "marketcap_usd": 0, "name": "ALCO", @@ -931,30 +1091,34 @@ "shortcut": "ALCO", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ALIS": { "address": "0xEA610B1153477720748DC13ED378003941d84fAB", "links": { "Github": "https://github.com/AlisProject", - "Homepage": "https://alismedia.jp", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://alismedia.jp" }, - "marketcap_usd": 4779922, + "marketcap_usd": 4378830, "name": "ALIS Token", "network": "eth", "shortcut": "ALIS", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ALTS": { "address": "0x638AC149eA8EF9a1286C41B977017AA7359E6Cfa", "links": { - "Homepage": "http://www.altcoinstalks.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://www.altcoinstalks.com" }, "marketcap_usd": 0, "name": "ALTS Token", @@ -962,15 +1126,17 @@ "shortcut": "ALTS", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:AMB": { "address": "0x4DC3643DbC642b72C158E7F3d2ff232df61cb6CE", "links": { "Github": "https://github.com/ambrosus", - "Homepage": "https://ambrosus.com/index.html", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://ambrosus.com/index.html" }, "marketcap_usd": 0, "name": "Amber Token", @@ -978,15 +1144,17 @@ "shortcut": "AMB", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:AMIS": { "address": "0x949bEd886c739f1A3273629b3320db0C5024c719", "links": { "Github": "https://github.com/amisolution/ERC20-AMIS", - "Homepage": "http://erc20-amis.amisolution.net", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://erc20-amis.amisolution.net" }, "marketcap_usd": 0, "name": "AMIS", @@ -994,15 +1162,17 @@ "shortcut": "AMIS", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:AMN": { "address": "0x737F98AC8cA59f2C68aD658E3C3d8C8963E40a4c", "links": { "Github": "https://github.com/amontech", - "Homepage": "https://amon.tech", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://amon.tech" }, "marketcap_usd": 0, "name": "Amon", @@ -1010,15 +1180,17 @@ "shortcut": "AMN", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:AMO": { "address": "0x38c87AA89B2B8cD9B95b736e1Fa7b612EA972169", "links": { "Github": "https://github.com/AMO-Project/", - "Homepage": "https://amo.foundation", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://amo.foundation" }, "marketcap_usd": 0, "name": "AMO Coin", @@ -1026,14 +1198,16 @@ "shortcut": "AMO", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:AMTC": { "address": "0x84936cF7630AA3e27Dd9AfF968b140d5AEE49F5a", "links": { - "Homepage": "https://ambertime.org/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://ambertime.org/" }, "marketcap_usd": 0, "name": "AmberTime Coin", @@ -1041,14 +1215,16 @@ "shortcut": "AMTC", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ANT": { "address": "0x960b236A07cf122663c4303350609A66A7B288C0", "links": { - "Homepage": "https://aragon.one/network/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://aragon.one/network/" }, "marketcap_usd": 0, "name": "ANT", @@ -1056,31 +1232,35 @@ "shortcut": "ANT", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:APIS": { "address": "0x4C0fBE1BB46612915E7967d2C3213cd4d87257AD", "links": { "Github": "https://github.com/Oxchild/crowdsale", - "Homepage": "https://apisplatform.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://apisplatform.io" }, - "marketcap_usd": 31848380, + "marketcap_usd": 28591984, "name": "APIS", "network": "eth", "shortcut": "APIS", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:APPC": { "address": "0x1a7a8BD9106F2B8D977E08582DC7d24c723ab0DB", "links": { "Github": "https://github.com/Aptoide/AppCoins-ethereumj", - "Homepage": "https://appcoins.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://appcoins.io" }, "marketcap_usd": 0, "name": "AppCoins", @@ -1088,14 +1268,16 @@ "shortcut": "APPC", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:APT": { "address": "0x23aE3C5B39B12f0693e05435EeaA1e51d8c61530", "links": { - "Homepage": "https://aigang.network", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://aigang.network" }, "marketcap_usd": 0, "name": "AIGang", @@ -1103,15 +1285,17 @@ "shortcut": "APT", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ARC": { "address": "0xAc709FcB44a43c35F0DA4e3163b117A17F3770f5", "links": { "Github": "https://github.com/swarmcity/ac-token", - "Homepage": "https://arcade.city/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://arcade.city/" }, "marketcap_usd": 0, "name": "Arcade", @@ -1119,14 +1303,16 @@ "shortcut": "ARCD", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ARCT": { "address": "0x1245ef80F4d9e02ED9425375e8F649B9221b31D8", "links": { - "Homepage": "https://www.arbitragect.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.arbitragect.com" }, "marketcap_usd": 0, "name": "ArbitrageCT", @@ -1134,15 +1320,17 @@ "shortcut": "ARCT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ARD": { "address": "0x75Aa7B0d02532f3833b66c7f0Ad35376d373ddF8", "links": { "Github": "https://github.com/accordtoken", - "Homepage": "https://accordtoken.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://accordtoken.com" }, "marketcap_usd": 0, "name": "Accord", @@ -1150,14 +1338,16 @@ "shortcut": "ARD", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ARN": { "address": "0xBA5F11b16B155792Cf3B2E6880E8706859A8AEB6", "links": { - "Homepage": "https://aeron.aero", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://aeron.aero" }, "marketcap_usd": 0, "name": "Aeron Token", @@ -1165,14 +1355,16 @@ "shortcut": "ARN", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ART": { "address": "0xfec0cF7fE078a500abf15F1284958F22049c2C7e", "links": { - "Homepage": "https://cofound.it/en/projects/maecenas", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://cofound.it/en/projects/maecenas" }, "marketcap_usd": 0, "name": "ART", @@ -1180,15 +1372,17 @@ "shortcut": "ART", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ARX": { "address": "0x7705FaA34B16EB6d77Dfc7812be2367ba6B0248e", "links": { "Github": "https://github.com/va109/Artex", - "Homepage": "https://artex.global", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://artex.global" }, "marketcap_usd": 0, "name": "ARX", @@ -1196,15 +1390,17 @@ "shortcut": "ARX", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ARXT": { "address": "0xb0D926c1BC3d78064F3e1075D5bD9A24F35Ae6C5", "links": { "Github": "https://github.com/va109/Artex", - "Homepage": "https://aronline.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://aronline.io" }, "marketcap_usd": 0, "name": "Assistive Reality ARX", @@ -1212,14 +1408,16 @@ "shortcut": "ARXT", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:AST": { "address": "0x27054b13b1B798B345b591a4d22e6562d47eA75a", "links": { - "Homepage": "https://airswap.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://airswap.io" }, "marketcap_usd": 0, "name": "Airswap", @@ -1227,14 +1425,16 @@ "shortcut": "AST", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ATH": { "address": "0x17052d51E954592C1046320c2371AbaB6C73Ef10", "links": { - "Homepage": "https://athenianwarriortoken.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://athenianwarriortoken.com" }, "marketcap_usd": 0, "name": "Athenian Warrior Token", @@ -1242,14 +1442,33 @@ "shortcut": "ATH", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:ATH (AIgatha Token)": { + "address": "0x1543d0F83489e82A1344DF6827B23d541F235A50", + "links": { + "Github": "https://github.com/AIgatha", + "Homepage": "https://aigatha.com" + }, + "name": "AIgatha Token", + "network": "eth", + "shortcut": "ATH (AIgatha Token)", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ATL": { "address": "0x78B7FADA55A64dD895D8c8c35779DD8b67fA8a05", "links": { - "Homepage": "https://atlant.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://atlant.io" }, "marketcap_usd": 0, "name": "ATL", @@ -1257,15 +1476,34 @@ "shortcut": "ATL", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:ATMI": { + "address": "0x97AEB5066E1A590e868b511457BEb6FE99d329F5", + "links": { + "Github": "https://github.com/atonomi", + "Homepage": "https://atonomi.io" + }, + "name": "Atonomi", + "network": "eth", + "shortcut": "ATMI", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ATT": { "address": "0x887834D3b8D450B6bAB109c252Df3DA286d73CE4", "links": { "Github": "https://github.com/ATMatrix", - "Homepage": "https://atmatrix.org/?locale=en", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://atmatrix.org/?locale=en" }, "marketcap_usd": 0, "name": "Atmatrix Token", @@ -1273,14 +1511,16 @@ "shortcut": "ATT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ATTN": { "address": "0x6339784d9478dA43106A429196772A029C2f177d", "links": { - "Homepage": "https://attentionnetwork.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://attentionnetwork.io" }, "marketcap_usd": 0, "name": "Attention Token", @@ -1288,15 +1528,17 @@ "shortcut": "ATTN", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:AVA": { "address": "0xeD247980396B10169BB1d36f6e278eD16700a60f", "links": { "Github": "https://github.com/AvalonPlatform", - "Homepage": "https://avalon.nu", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://avalon.nu" }, "marketcap_usd": 0, "name": "AVA", @@ -1304,14 +1546,16 @@ "shortcut": "AVA", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:AVT": { "address": "0x0d88eD6E74bbFD96B831231638b66C05571e824F", "links": { - "Homepage": "https://aventus.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://aventus.io" }, "marketcap_usd": 0, "name": "AVT", @@ -1319,15 +1563,17 @@ "shortcut": "AVT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:AX1": { "address": "0xCd4b4b0F3284a33AC49C67961EC6e111708318Cf", "links": { "Github": "https://github.com/Pickeringwareltd/AX1_v1.03", - "Homepage": "https://ax1.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://ax1.io" }, "marketcap_usd": 0, "name": "AX1 Mining Token", @@ -1335,14 +1581,16 @@ "shortcut": "AX1", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:AXP": { "address": "0x9af2c6B1A28D3d6BC084bd267F70e90d49741D5B", "links": { - "Homepage": "https://www.axpire.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.axpire.io/" }, "marketcap_usd": 0, "name": "AXP", @@ -1350,14 +1598,16 @@ "shortcut": "AXP", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BANX": { "address": "0xF87F0D9153fea549c728Ad61cb801595a68b73de", "links": { - "Homepage": "https://pre.ubanx.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://pre.ubanx.io" }, "marketcap_usd": 0, "name": "BANX", @@ -1365,14 +1615,16 @@ "shortcut": "BANX", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BAT": { "address": "0x0D8775F648430679A709E98d2b0Cb6250d2887EF", "links": { - "Homepage": "https://basicattentiontoken.org/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://basicattentiontoken.org/" }, "marketcap_usd": 0, "name": "BAT", @@ -1380,15 +1632,34 @@ "shortcut": "BAT", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:BBK": { + "address": "0x4a6058666cf1057eaC3CD3A5a614620547559fc9", + "links": { + "Github": "https://github.com/brickblock-io", + "Homepage": "https://www.brickblock.io/" + }, + "name": "BRICKBLOCK TOKEN", + "network": "eth", + "shortcut": "BBK", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BCBC": { "address": "0x7367A68039d4704f30BfBF6d948020C3B07DFC59", "links": { "Github": "https://github.com/beerchain/beercoin", - "Homepage": "https://www.beerchain.technology", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.beerchain.technology" }, "marketcap_usd": 0, "name": "Beercoin", @@ -1396,15 +1667,17 @@ "shortcut": "BCBC", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BCDN": { "address": "0x1e797Ce986C3CFF4472F7D38d5C4aba55DfEFE40", "links": { "Github": "https://github.com/Blockcdnteam", - "Homepage": "https://www.blockcdn.org/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.blockcdn.org/" }, "marketcap_usd": 0, "name": "BCDN", @@ -1412,15 +1685,17 @@ "shortcut": "BCDN", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BCDT": { "address": "0xAcfa209Fb73bF3Dd5bBfb1101B9Bc999C49062a5", "links": { "Github": "https://github.com/VinceBCD/BCDiploma", - "Homepage": "https://www.bcdiploma.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.bcdiploma.com" }, "marketcap_usd": 0, "name": "Blockchain Certified Data Token", @@ -1428,14 +1703,16 @@ "shortcut": "BCDT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BCL": { "address": "0xbc1234552EBea32B5121190356bBa6D3Bb225bb5", "links": { - "Homepage": "https://www.bitclave.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.bitclave.com" }, "marketcap_usd": 0, "name": "BCL", @@ -1443,15 +1720,17 @@ "shortcut": "BCL", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BCPT": { "address": "0x1c4481750daa5Ff521A2a7490d9981eD46465Dbd", "links": { "Github": "https://github.com/blockmason", - "Homepage": "https://blockmason.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://blockmason.io" }, "marketcap_usd": 0, "name": "BCPT", @@ -1459,15 +1738,17 @@ "shortcut": "BCPT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BCV": { "address": "0x1014613E2B3CBc4d575054D4982E580d9b99d7B1", "links": { "Github": "https://github.com/bitcv", - "Homepage": "https://bitcv.one/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://bitcv.one/" }, "marketcap_usd": 0, "name": "BitCapitalVendor Token", @@ -1475,15 +1756,17 @@ "shortcut": "BCV", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BDG": { "address": "0x1961B3331969eD52770751fC718ef530838b6dEE", "links": { "Github": "https://github.com/bitdegree", - "Homepage": "https://bitdegree.org", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://bitdegree.org" }, "marketcap_usd": 0, "name": "BitDegree Token", @@ -1491,15 +1774,17 @@ "shortcut": "BDG", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BEE": { "address": "0x4D8fc1453a0F359e99c9675954e656D80d996FbF", "links": { "Github": "https://github.com/thebeetoken", - "Homepage": "https://www.beetoken.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.beetoken.com" }, "marketcap_usd": 0, "name": "Bee Token", @@ -1507,15 +1792,17 @@ "shortcut": "BEE", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BERRY": { "address": "0x6aEB95F06CDA84cA345c2dE0F3B7f96923a44f4c", "links": { "Github": "https://github.com/Rentberry", - "Homepage": "https://rentberry.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://rentberry.com" }, "marketcap_usd": 0, "name": "Berry", @@ -1523,15 +1810,17 @@ "shortcut": "BERRY", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BET": { "address": "0x8aA33A7899FCC8eA5fBe6A608A109c3893A1B8b2", "links": { "Github": "https://github.com/daocasino", - "Homepage": "https://dao.casino/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://dao.casino/" }, "marketcap_usd": 0, "name": "BET", @@ -1539,15 +1828,17 @@ "shortcut": "BET", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BETR": { "address": "0x763186eB8d4856D536eD4478302971214FEbc6A9", "links": { "Github": "https://github.com/betterbetting", - "Homepage": "https://www.betterbetting.org", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.betterbetting.org" }, "marketcap_usd": 0, "name": "BETR", @@ -1555,14 +1846,16 @@ "shortcut": "BETR", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BKB": { "address": "0xB2Bfeb70B903F1BAaC7f2ba2c62934C7e5B974C4", "links": { - "Homepage": "https://betking.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://betking.io" }, "marketcap_usd": 0, "name": "BetKing Bankroll Token", @@ -1570,14 +1863,16 @@ "shortcut": "BKB", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BKRx": { "address": "0x3cf9E0c385a5ABEC9FD2a71790AA344C4e8E3570", "links": { - "Homepage": "https://www.blockrx.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.blockrx.com" }, "marketcap_usd": 0, "name": "BlockRx", @@ -1585,15 +1880,17 @@ "shortcut": "BKRx", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BKX": { "address": "0x45245bc59219eeaAF6cD3f382e078A461FF9De7B", "links": { "Github": "https://github.com/BankEx", - "Homepage": "https://bankex.com/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://bankex.com/" }, "marketcap_usd": 0, "name": "BANKEX", @@ -1601,15 +1898,17 @@ "shortcut": "BKX", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BLT": { "address": "0x107c4504cd79C5d2696Ea0030a8dD4e92601B82e", "links": { "Github": "https://github.com/hellobloom", - "Homepage": "https://hellobloom.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://hellobloom.io" }, "marketcap_usd": 0, "name": "Bloom", @@ -1617,15 +1916,34 @@ "shortcut": "BLT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:BLUE": { + "address": "0x539EfE69bCDd21a83eFD9122571a64CC25e0282b", + "links": { + "Github": "https://github.com/BlueCrypto", + "Homepage": "https://blueprotocol.com/" + }, + "name": "Ethereum Blue", + "network": "eth", + "shortcut": "BLUE", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BLX (Bullion)": { "address": "0xcE59d29b09aAE565fEEEf8E52f47c3CD5368C663", "links": { "Github": "https://github.com/bullioncoin", - "Homepage": "http://www.bullioncrypto.info", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://www.bullioncrypto.info" }, "marketcap_usd": 0, "name": "Bullion Crypto", @@ -1633,14 +1951,16 @@ "shortcut": "BLX (Bullion)", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BLX (Iconomi)": { "address": "0xE5a7c12972f3bbFe70ed29521C8949b8Af6a0970", "links": { - "Homepage": "https://www.iconomi.net/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.iconomi.net/" }, "marketcap_usd": 0, "name": "Iconomi", @@ -1648,15 +1968,32 @@ "shortcut": "BLX (Iconomi)", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:BLZ": { + "address": "0x5732046A883704404F284Ce41FfADd5b007FD668", + "hidden": 1, + "links": {}, + "name": "Bluezelle", + "network": "eth", + "shortcut": "BLZ", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BMC": { "address": "0xDf6Ef343350780BF8C3410BF062e0C015B1DD671", "links": { "Github": "https://github.com/blackmoonfg", - "Homepage": "https://blackmooncrypto.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://blackmooncrypto.com" }, "marketcap_usd": 0, "name": "Blackmoon Crypto BMC Token", @@ -1664,15 +2001,17 @@ "shortcut": "BMC", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BMT": { "address": "0xf028ADEe51533b1B47BEaa890fEb54a457f51E89", "links": { "Github": "https://github.com/BMChain/BMChain-Token-Distribution-Interface", - "Homepage": "https://bmchain.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://bmchain.io" }, "marketcap_usd": 0, "name": "BMT", @@ -1680,14 +2019,16 @@ "shortcut": "BMT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BMX": { "address": "0x986EE2B944c42D017F52Af21c4c69B84DBeA35d8", "links": { - "Homepage": "https://bitmart.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://bitmart.com" }, "marketcap_usd": 0, "name": "BitMartToken", @@ -1695,14 +2036,16 @@ "shortcut": "BMX", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BNB": { "address": "0xB8c77482e45F1F44dE1745F52C74426C631bDD52", "links": { - "Homepage": "https://www.binance.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.binance.com" }, "marketcap_usd": 0, "name": "BNB", @@ -1710,14 +2053,16 @@ "shortcut": "BNB", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BNC": { "address": "0xdD6Bf56CA2ada24c683FAC50E37783e55B57AF9F", "links": { - "Homepage": "https://bravenewcoin.com/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://bravenewcoin.com/" }, "marketcap_usd": 0, "name": "BNC", @@ -1725,30 +2070,33 @@ "shortcut": "BNC", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BNFT": { "address": "0xdA2C424Fc98c741c2d4ef2f42897CEfed897CA75", "hidden": 1, - "links": { - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - }, + "links": {}, "marketcap_usd": 0, "name": "Benefits Coin", "network": "eth", "shortcut": "BNFT", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BNT": { "address": "0x1F573D6Fb3F13d689FF844B4cE37794d79a7FF1C", "links": { "Github": "https://github.com/bancorprotocol/", - "Homepage": "https://www.bancor.network/discover", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.bancor.network/discover" }, "marketcap_usd": 0, "name": "Bancor", @@ -1756,14 +2104,16 @@ "shortcut": "BNT", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BNTY": { "address": "0xd2d6158683aeE4Cc838067727209a0aAF4359de3", "links": { - "Homepage": "https://bounty0x.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://bounty0x.io" }, "marketcap_usd": 0, "name": "Bounty0x Token", @@ -1771,14 +2121,16 @@ "shortcut": "BNTY", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BOB": { "address": "0xDF347911910b6c9A4286bA8E2EE5ea4a39eB2134", "links": { - "Homepage": "https://bobsrepair.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://bobsrepair.com" }, "marketcap_usd": 0, "name": "Bob's repair", @@ -1786,14 +2138,16 @@ "shortcut": "BOB", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BON": { "address": "0xCc34366E3842cA1BD36c1f324d15257960fCC801", "links": { - "Homepage": "https://bonpay.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://bonpay.com" }, "marketcap_usd": 0, "name": "Bonpay", @@ -1801,14 +2155,16 @@ "shortcut": "BON", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BOP": { "address": "0x7F1E2C7d6A69bf34824D72C53B4550E895C0D8C2", "links": { - "Homepage": "https://blockoptions.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://blockoptions.io" }, "marketcap_usd": 0, "name": "BlockOptiopns Token", @@ -1816,14 +2172,16 @@ "shortcut": "BOP", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BOU": { "address": "0xC2C63F23ec5E97efbD7565dF9Ec764FDc7d4e91d", "links": { - "Homepage": "https://www.boule.one", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.boule.one" }, "marketcap_usd": 0, "name": "Boule Coin", @@ -1831,15 +2189,17 @@ "shortcut": "BOU", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BPT": { "address": "0x327682779bAB2BF4d1337e8974ab9dE8275A7Ca8", "links": { "Github": "https://github.com/Blockport/tokensale", - "Homepage": "https://blockport.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://blockport.io" }, "marketcap_usd": 0, "name": "Blockport Token", @@ -1847,14 +2207,16 @@ "shortcut": "BPT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BQX": { "address": "0x5Af2Be193a6ABCa9c8817001F45744777Db30756", "links": { - "Homepage": "https://www.bitquence.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.bitquence.com" }, "marketcap_usd": 0, "name": "Bitquence", @@ -1862,30 +2224,34 @@ "shortcut": "BQX", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BRAT": { "address": "0x9E77D5a1251b6F7D456722A6eaC6D2d5980bd891", "links": { - "Homepage": "http://bro-consortium.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://bro-consortium.io/" }, - "marketcap_usd": 108537, + "marketcap_usd": 50250, "name": "BRAT", "network": "eth", "shortcut": "BRAT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BRD": { "address": "0x558EC3152e2eb2174905cd19AeA4e34A23DE9aD6", "links": { "Github": "https://github.com/breadwallet", - "Homepage": "https://token.breadapp.com/en/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://token.breadapp.com/en/" }, "marketcap_usd": 0, "name": "Bread", @@ -1893,15 +2259,17 @@ "shortcut": "BRD", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BSDC": { "address": "0xF26ef5E0545384b7Dcc0f297F2674189586830DF", "links": { "Github": "https://github.com/BitsIdea/BitsIdea", - "Homepage": "http://bitsidea.org", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://bitsidea.org" }, "marketcap_usd": 0, "name": "BSDC", @@ -1909,14 +2277,16 @@ "shortcut": "BSDC", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BST": { "address": "0x509A38b7a1cC0dcd83Aa9d06214663D9eC7c7F4a", "links": { - "Homepage": "https://blocksquare.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://blocksquare.io" }, "marketcap_usd": 0, "name": "BlocksquareToken", @@ -1924,14 +2294,16 @@ "shortcut": "BST", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BTCE": { "address": "0x0886949c1b8C412860c4264Ceb8083d1365e86CF", "links": { - "Homepage": "https://btcetoken.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://btcetoken.com" }, "marketcap_usd": 0, "name": "EthereumBitcoin", @@ -1939,15 +2311,33 @@ "shortcut": "BTCE", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:BTCL": { + "address": "0x5acD19b9c91e596b1f062f18e3D02da7eD8D1e50", + "links": { + "Homepage": "http://btclite.org" + }, + "name": "BTC Lite", + "network": "eth", + "shortcut": "BTCL", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BTE": { "address": "0x73dD069c299A5d691E9836243BcaeC9c8C1D8734", "links": { "Github": "https://github.com/bitcoineum/Sharkpool", - "Homepage": "http://bitcoineum.com/miner", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://bitcoineum.com/miner" }, "marketcap_usd": 0, "name": "BTE", @@ -1955,14 +2345,16 @@ "shortcut": "BTE", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BTH": { "address": "0xFAd572db566E5234AC9Fc3d570c4EdC0050eAA92", "links": { - "Homepage": "https://www.bytether.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.bytether.com" }, "marketcap_usd": 0, "name": "Bytether", @@ -1970,15 +2362,17 @@ "shortcut": "BTH", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BTHR": { "address": "0xa02e3bB9cEbc03952601B3724B4940e0845BeBcf", "links": { "Github": "https://github.com/bethereumproject", - "Homepage": "https://www.bethereum.com/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.bethereum.com/" }, "marketcap_usd": 0, "name": "Bethereum", @@ -1986,15 +2380,17 @@ "shortcut": "BTHR", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BTK": { "address": "0xdb8646F5b487B5Dd979FAC618350e85018F557d4", "links": { "Github": "https://github.com/bitcoin-token", - "Homepage": "https://btk.community/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://btk.community/" }, "marketcap_usd": 0, "name": "Bitcoin Token", @@ -2002,15 +2398,17 @@ "shortcut": "BTK", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BTL (Battle)": { "address": "0x2accaB9cb7a48c3E82286F0b2f8798D201F4eC3f", "links": { "Github": "https://github.com/Neurone/persians", - "Homepage": "http://persians.network", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://persians.network" }, "marketcap_usd": 0, "name": "BTL (Battle)", @@ -2018,14 +2416,16 @@ "shortcut": "BTL (Battle)", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BTL (Bitlle)": { "address": "0x92685E93956537c25Bb75D5d47fca4266dd628B8", "links": { - "Homepage": "https://bitlle.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://bitlle.com" }, "marketcap_usd": 0, "name": "Bitlle Token", @@ -2033,15 +2433,17 @@ "shortcut": "BTL (Bitlle)", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BTM": { "address": "0xcB97e65F07DA24D46BcDD078EBebd7C6E6E3d750", "links": { "Github": "https://github.com/bytom", - "Homepage": "https://bytom.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://bytom.io" }, "marketcap_usd": 0, "name": "Bytom", @@ -2049,14 +2451,16 @@ "shortcut": "BTM", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BTQ": { "address": "0x16B0E62aC13a2fAeD36D18bce2356d25Ab3CfAD3", "links": { - "Homepage": "https://thebtcbtq.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://thebtcbtq.com" }, "marketcap_usd": 0, "name": "Bitcoin Boutique", @@ -2064,15 +2468,17 @@ "shortcut": "BTQ", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BTT": { "address": "0x080aa07E2C7185150d7e4DA98838A8d2feac3dfC", "links": { "Github": "https://github.com/Andyss4545/BitEther", - "Homepage": "https://bytom.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://bytom.io" }, "marketcap_usd": 0, "name": "Bitether", @@ -2080,14 +2486,32 @@ "shortcut": "BTT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:BTTX": { + "address": "0xFA456Cf55250A839088b27EE32A424d7DAcB54Ff", + "links": { + "Homepage": "https://blocktrade.com/" + }, + "name": "Blocktrade.com", + "network": "eth", + "shortcut": "BTTX", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BUC": { "address": "0xCa3c18a65b802eC267f8f4802545e7F53D24C75e", "links": { - "Homepage": "https://beeunity.org", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://beeunity.org" }, "marketcap_usd": 0, "name": "BeeUnity Chain", @@ -2095,45 +2519,65 @@ "shortcut": "BUC", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:BeerCoin": { "address": "0x74C1E4b8caE59269ec1D85D3D4F324396048F4ac", "hidden": 1, - "links": { - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - }, + "links": {}, "marketcap_usd": 0, "name": "BeerCoin", "network": "eth", "shortcut": "BeerCoin", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:C20": { "address": "0x26E75307Fc0C021472fEb8F727839531F112f317", "links": { "Github": "https://github.com/cryptotwenty", - "Homepage": "https://crypto20.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://crypto20.com" }, - "marketcap_usd": 46281896, + "marketcap_usd": 41729751, "name": "Crypto20's Token", "network": "eth", "shortcut": "C20", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:C8": { + "address": "0xd42debE4eDc92Bd5a3FBb4243e1ecCf6d63A4A5d", + "hidden": 1, + "links": {}, + "name": "Carboneum", + "network": "eth", + "shortcut": "C8", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CAG": { "address": "0x7d4b8Cce0591C9044a22ee543533b72E976E36C3", "links": { - "Homepage": "https://change-bank.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://change-bank.com" }, "marketcap_usd": 0, "name": "Change Bank", @@ -2141,14 +2585,16 @@ "shortcut": "CAG", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CAN": { "address": "0x1d462414fe14cf489c7A21CaC78509f4bF8CD7c0", "links": { - "Homepage": "https://canya.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://canya.io" }, "marketcap_usd": 0, "name": "CAN", @@ -2156,14 +2602,16 @@ "shortcut": "CAN", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CAR": { "address": "0x423e4322CDDa29156b49a17dfbd2aCC4b280600D", "links": { - "Homepage": "https://mycarcoin.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://mycarcoin.com" }, "marketcap_usd": 0, "name": "Car Sharing Community", @@ -2171,14 +2619,16 @@ "shortcut": "CAR", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CARB": { "address": "0xA517a46Baad6B054A76bD19c46844f717fe69fea", "links": { - "Homepage": "https://carbcoin.eu/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://carbcoin.eu/" }, "marketcap_usd": 0, "name": "CarbCoin", @@ -2186,14 +2636,16 @@ "shortcut": "CARB", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CARCO": { "address": "0x2108E62D335Bbdc89eC3E9d8582F18DCFB0cDFf4", "links": { - "Homepage": "https://carcohub.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://carcohub.com" }, "marketcap_usd": 0, "name": "CARCO", @@ -2201,14 +2653,49 @@ "shortcut": "CARCO", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:CARD": { + "address": "0x1ed2B1eaEd8e968bc36EB90a914660A71827A5E9", + "links": { + "Github": "https://github.com/cardstack", + "Homepage": "https://cardstack.com" + }, + "name": "Cardstack Token", + "network": "eth", + "shortcut": "CARD", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:CARE": { + "address": "0xbF18F246B9301F231e9561B35A3879769BB46375", + "links": { + "Homepage": "https://tombcare.com/" + }, + "name": "Token CARE", + "network": "eth", + "shortcut": "CARE", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CAS": { "address": "0xe8780B48bdb05F928697A5e8155f672ED91462F7", "links": { - "Homepage": "https://cashaa.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://cashaa.com" }, "marketcap_usd": 0, "name": "Cashaa", @@ -2216,14 +2703,16 @@ "shortcut": "CAS", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CAT (BitClave)": { "address": "0x1234567461d3f8Db7496581774Bd869C83D51c93", "links": { - "Homepage": "https://www.bitclave.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.bitclave.com" }, "marketcap_usd": 0, "name": "CAT (BitClave)", @@ -2231,14 +2720,16 @@ "shortcut": "CAT (BitClave)", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CAT (Blockcat)": { "address": "0x56ba2Ee7890461f463F7be02aAC3099f6d5811A8", "links": { - "Homepage": "https://blockcat.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://blockcat.io" }, "marketcap_usd": 0, "name": "CAT (Blockcat)", @@ -2246,14 +2737,16 @@ "shortcut": "CAT (Blockcat)", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CATs (BitClave)_Old": { "address": "0x68e14bb5A45B9681327E16E528084B9d962C1a39", "links": { - "Homepage": "https://www.bitclave.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.bitclave.com" }, "marketcap_usd": 0, "name": "CATs (BitClave)_Old", @@ -2261,14 +2754,16 @@ "shortcut": "CATs (BitClave)_Old", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CC3": { "address": "0xc166038705FFBAb3794185b3a9D925632A1DF37D", "links": { - "Homepage": "https://coalcoin.tech/en", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://coalcoin.tech/en" }, "marketcap_usd": 0, "name": "Coal Coin", @@ -2276,14 +2771,16 @@ "shortcut": "CC3", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CCC (CryptoCrashCourse)": { "address": "0x28577A6d31559bd265Ce3ADB62d0458550F7b8a7", "links": { - "Homepage": "http://cryptocrashcourse.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://cryptocrashcourse.com" }, "marketcap_usd": 0, "name": "CryptoCrashCourse", @@ -2291,14 +2788,16 @@ "shortcut": "CCC (CryptoCrashCourse)", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CCC (ICONOMI)": { "address": "0xBE11eEb186e624b8f26A5045575a1340E4054552", "links": { - "Homepage": "https://www.iconomi.net/dashboard/#/daa/CCC", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.iconomi.net/dashboard/#/daa/CCC" }, "marketcap_usd": 0, "name": "CCC (ICONOMI)", @@ -2306,15 +2805,17 @@ "shortcut": "CCC (ICONOMI)", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CCLC": { "address": "0xd348e07A2806505B856123045d27aeeD90924b50", "links": { "Github": "https://github.com/lifechange-io/christ-coin", - "Homepage": "https://christcoins.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://christcoins.io" }, "marketcap_usd": 0, "name": "Christ Coin", @@ -2322,15 +2823,17 @@ "shortcut": "CCLC", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CCS": { "address": "0x315cE59FAFd3A8d562b7Ec1C8542382d2710b06c", "links": { "Github": "github.com/AnalemaTechnologies/CacaoShares", - "Homepage": "http://www.cacaoshares.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://www.cacaoshares.com" }, "marketcap_usd": 0, "name": "CacaoShares", @@ -2338,15 +2841,17 @@ "shortcut": "CCS", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CDL": { "address": "0x8a95ca448A52C0ADf0054bB3402dC5e09CD6B232", "links": { "Github": "https://github.com/confideal", - "Homepage": "https://confideal.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://confideal.io" }, "marketcap_usd": 0, "name": "Confideal", @@ -2354,14 +2859,16 @@ "shortcut": "CDL", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CDT": { "address": "0x177d39AC676ED1C67A2b268AD7F1E58826E5B0af", "links": { - "Homepage": "https://www.coindash.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.coindash.io" }, "marketcap_usd": 0, "name": "CoinDash", @@ -2369,14 +2876,16 @@ "shortcut": "CDT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CDX": { - "address": "0x6fFF3806Bbac52A20e0d79BC538d527f6a22c96b", + "address": "0x2cb101d7dA0ebaA57D3F2fEf46D7FFB7BB64592B", "links": { - "Homepage": "https://commodityadnetwork.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.carbondollarx.com" }, "marketcap_usd": 0, "name": "CDX", @@ -2384,14 +2893,32 @@ "shortcut": "CDX", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:CEEK": { + "address": "0xb056c38f6b7Dc4064367403E26424CD2c60655e1", + "links": { + "Homepage": "https://www.ceek.com/" + }, + "name": "CEEK VR Token", + "network": "eth", + "shortcut": "CEEK", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CFI": { "address": "0x12FEF5e57bF45873Cd9B62E9DBd7BFb99e32D73e", "links": { - "Homepage": "https://cofound.it/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://cofound.it/" }, "marketcap_usd": 0, "name": "Cofound.it", @@ -2399,14 +2926,33 @@ "shortcut": "CFI", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:CFTY": { + "address": "0x6956983F8B3Ce173B4AB84361AA0ad52f38D936f", + "links": { + "Github": "https://github.com/crafty-work", + "Homepage": "https://crafty.work/" + }, + "name": "Crafty Token", + "network": "eth", + "shortcut": "CFTY", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CHSB": { "address": "0xba9d4199faB4f26eFE3551D490E3821486f135Ba", "links": { - "Homepage": "https://swissborg.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://swissborg.com" }, "marketcap_usd": 0, "name": "CHSB", @@ -2414,14 +2960,16 @@ "shortcut": "CHSB", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CK": { "address": "0x06012c8cf97BEaD5deAe237070F9587f8E7A266d", "links": { - "Homepage": "https://cryptokitties.co", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://cryptokitties.co" }, "marketcap_usd": 0, "name": "CK", @@ -2429,15 +2977,34 @@ "shortcut": "CK", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:CLB": { + "address": "0xb1c1Cb8C7c1992dba24e628bF7d38E71daD46aeB", + "links": { + "Github": "https://github.com/Cloudbric-Project", + "Homepage": "https://www.cloudbric.io/" + }, + "name": "Cloudbric", + "network": "eth", + "shortcut": "CLB", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CLL": { "address": "0x3dC9a42fa7Afe57BE03c58fD7F4411b1E466C508", "links": { "Github": "https://github.com/CryptoLiveLeak/CLL-Token", - "Homepage": "https://www.cryptoliveleak.com/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.cryptoliveleak.com/" }, "marketcap_usd": 0, "name": "CryptoLiveLeak", @@ -2445,15 +3012,17 @@ "shortcut": "CLL", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CLN": { "address": "0x4162178B78D6985480A308B2190EE5517460406D", "links": { "Github": "https://github.com/colucom/CLN-solidity", - "Homepage": "https://cln.network", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://cln.network" }, "marketcap_usd": 0, "name": "ColuLocalNetwork", @@ -2461,14 +3030,16 @@ "shortcut": "CLN", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CLP": { "address": "0x7FCE2856899a6806eeEf70807985fc7554C66340", "links": { - "Homepage": "https://cryptolending.org", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://cryptolending.org" }, "marketcap_usd": 0, "name": "CryptoLending", @@ -2476,14 +3047,16 @@ "shortcut": "CLP", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CMBT": { "address": "0x3EDD235C3E840C1F29286B2e39370a255C7B6fdb", "links": { - "Homepage": "https://www.coinmarketbrasil.com.br", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.coinmarketbrasil.com.br" }, "marketcap_usd": 0, "name": "CMBToken", @@ -2491,14 +3064,16 @@ "shortcut": "CMBT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CMC": { "address": "0x7e667525521cF61352e2E01b50FaaaE7Df39749a", "links": { - "Homepage": "https://www.cryptomart.me", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.cryptomart.me" }, "marketcap_usd": 0, "name": "CryptoMart", @@ -2506,15 +3081,17 @@ "shortcut": "CMC", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CMT": { "address": "0xf85fEea2FdD81d51177F6b8F35F0e6734Ce45F5F", "links": { "Github": "https://github.com/CyberMiles", - "Homepage": "https://cm.5miles.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://cm.5miles.com" }, "marketcap_usd": 0, "name": "CyberMiles Token", @@ -2522,14 +3099,16 @@ "shortcut": "CMT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CNB": { "address": "0xEBf2F9E8De960f64ec0fDCDa6Cb282423133347B", "links": { - "Homepage": "https://canabio.net", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://canabio.net" }, "marketcap_usd": 0, "name": "Canabio", @@ -2537,14 +3116,16 @@ "shortcut": "CNB", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CND": { "address": "0xd4c435F5B09F855C3317c8524Cb1F586E42795fa", "links": { - "Homepage": "https://cindicator.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://cindicator.com" }, "marketcap_usd": 0, "name": "Cindicator", @@ -2552,15 +3133,17 @@ "shortcut": "CND", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CO2": { "address": "0xB4b1D2C217EC0776584CE08D3DD98F90EDedA44b", "links": { "Github": "https://github.com/climatecoinio", - "Homepage": "https://climatecoin.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://climatecoin.io" }, "marketcap_usd": 0, "name": "Climatecoin", @@ -2568,15 +3151,33 @@ "shortcut": "CO2", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:CO2Bit": { + "address": "0x574B36BceD443338875d171CC377E691f7d4F887", + "links": { + "Homepage": "https://co2bit.com" + }, + "name": "CO2Bit", + "network": "eth", + "shortcut": "CO2Bit", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:COB": { "address": "0xb2F7EB1f2c37645bE61d73953035360e768D81E6", "links": { "Github": "https://github.com/cobinhood", - "Homepage": "https://cobinhood.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://cobinhood.com" }, "marketcap_usd": 0, "name": "Cobinhood Token", @@ -2584,15 +3185,17 @@ "shortcut": "COB", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:COFI": { "address": "0x3136eF851592aCf49CA4C825131E364170FA32b3", "links": { "Github": "https://github.com/coinfi", - "Homepage": "https://www.coinfi.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.coinfi.com" }, "marketcap_usd": 0, "name": "CoinFi Token", @@ -2600,15 +3203,17 @@ "shortcut": "COFI", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:COIL": { "address": "0x0C91B015AbA6f7B4738dcD36E7410138b29ADC29", "links": { "Github": "https://github.com/CoinOil", - "Homepage": "https://coinoil.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://coinoil.io/" }, "marketcap_usd": 0, "name": "CoinOil", @@ -2616,29 +3221,51 @@ "shortcut": "COIL", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:COIN": { + "address": "0x5e8F855966D638135a968861E80DdA722291B06d", + "links": { + "Github": "https://github.com/CoinvestHQ", + "Homepage": "https://coinve.st" + }, + "marketcap_usd": 140404, + "name": "Coinvest V2 Token", + "network": "eth", + "shortcut": "COIN", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:COSS": { "address": "0x65292EeadF1426Cd2dF1C4793a3d7519f253913b", "links": { - "Homepage": "https://coss.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://coss.io" }, - "marketcap_usd": 17746743, + "marketcap_usd": 16142086, "name": "Coss Token", "network": "eth", "shortcut": "COSS", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:COV": { "address": "0xE2FB6529EF566a080e6d23dE0bd351311087D567", "links": { - "Homepage": "https://covesting.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://covesting.io/" }, "marketcap_usd": 0, "name": "Covesting", @@ -2646,15 +3273,34 @@ "shortcut": "COV", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:CPEX": { + "address": "0xb787d4eAc8899730bb8C57fc3c998c49c5244ec0", + "links": { + "Github": "https://github.com/coinpulse", + "Homepage": "https://CoinPulse.io" + }, + "name": "CoinPulseToken", + "network": "eth", + "shortcut": "CPEX", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CPY": { "address": "0xf44745fBd41F6A1ba151df190db0564c5fCc4410", "links": { "Github": "https://github.com/aditus", - "Homepage": "https://copytrack.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://copytrack.io" }, "marketcap_usd": 0, "name": "COPYTRACK", @@ -2662,15 +3308,17 @@ "shortcut": "CPY", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CR7": { "address": "0x7F585B9130c64e9e9F470b618A7badD03D79cA7E", "links": { "Github": "https://github.com/CR7CoinProject", - "Homepage": "https://cr7coin.org", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://cr7coin.org" }, "marketcap_usd": 0, "name": "CR7Coin", @@ -2678,14 +3326,16 @@ "shortcut": "CR7", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CRB": { "address": "0xAef38fBFBF932D1AeF3B808Bc8fBd8Cd8E1f8BC5", "links": { - "Homepage": "https://www.creditbit.org/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.creditbit.org/" }, "marketcap_usd": 0, "name": "CRB", @@ -2693,15 +3343,17 @@ "shortcut": "CRB", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CRED": { "address": "0x672a1AD4f667FB18A333Af13667aa0Af1F5b5bDD", "links": { "Github": "https://github.com/verifyas", - "Homepage": "https://verify.as", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://verify.as" }, "marketcap_usd": 0, "name": "CRED", @@ -2709,29 +3361,33 @@ "shortcut": "CRED", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CREDO": { "address": "0x4E0603e2A27A30480E5e3a4Fe548e29EF12F64bE", "links": { - "Homepage": "https://bitbounce.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://bitbounce.io" }, - "marketcap_usd": 23242658, + "marketcap_usd": 14867642, "name": "Credo / Bitbounce", "network": "eth", "shortcut": "CREDO", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CRPT": { "address": "0x80A7E048F37A50500351C204Cb407766fA3baE7f", "links": { - "Homepage": "https://crypterium.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://crypterium.io" }, "marketcap_usd": 0, "name": "CrypteriumToken", @@ -2739,14 +3395,16 @@ "shortcut": "CRPT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CRT": { "address": "0xF0da1186a4977226b9135d0613ee72e229EC3F4d", "links": { - "Homepage": "http://creamtoecoin.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://creamtoecoin.com" }, "marketcap_usd": 0, "name": "CreamtoeCoin", @@ -2754,15 +3412,17 @@ "shortcut": "CRT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CTF": { "address": "0x4545750F39aF6Be4F237B6869D4EccA928Fd5A85", "links": { "Github": "https://github.com/vkajic/cryptotask", - "Homepage": "http://www.cryptotask.org", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://www.cryptotask.org" }, "marketcap_usd": 0, "name": "CryptoTask", @@ -2770,15 +3430,17 @@ "shortcut": "CTF", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CTG": { "address": "0xC87c5dD86A3d567fF28701886fB0745aaa898da4", "links": { "Github": "github.com/CTGlobal/ChristianTraders", - "Homepage": "https://christiantraders.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://christiantraders.com" }, "marketcap_usd": 0, "name": "CT Global Token", @@ -2786,29 +3448,32 @@ "shortcut": "CTG", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CTL": { "address": "0xBf4cFD7d1eDeeEA5f6600827411B41A21eB08abd", "hidden": 1, - "links": { - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - }, + "links": {}, "marketcap_usd": 0, "name": "CTL", "network": "eth", "shortcut": "CTL", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CTT": { "address": "0xE3Fa177AcecfB86721Cf6f9f4206bd3Bd672D7d5", "links": { - "Homepage": "https://chaintrade.net", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://chaintrade.net" }, "marketcap_usd": 0, "name": "ChainTrade Token", @@ -2816,14 +3481,16 @@ "shortcut": "CTT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CTX": { "address": "0x662aBcAd0b7f345AB7FfB1b1fbb9Df7894f18e66", "links": { - "Homepage": "https://cartaxi.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://cartaxi.io" }, "marketcap_usd": 0, "name": "CarTaxi", @@ -2831,14 +3498,16 @@ "shortcut": "CTX", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CVC": { "address": "0x41e5560054824eA6B0732E656E3Ad64E20e94E45", "links": { - "Homepage": "https://www.civic.com/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.civic.com/" }, "marketcap_usd": 0, "name": "CVC", @@ -2846,15 +3515,17 @@ "shortcut": "CVC", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CXC": { "address": "0x2134057C0b461F898D375Cead652Acae62b59541", "links": { "Github": "https://github.com/coxxxcoin/smart_contract", - "Homepage": "http://coxxxcoin.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://coxxxcoin.com" }, "marketcap_usd": 0, "name": "CoxxxCoin", @@ -2862,15 +3533,17 @@ "shortcut": "CXC", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CXO": { "address": "0xb6EE9668771a79be7967ee29a63D4184F8097143", "links": { "Github": "https://github.com/cargoxio", - "Homepage": "https://cargox.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://cargox.io" }, "marketcap_usd": 0, "name": "CargoX", @@ -2878,29 +3551,33 @@ "shortcut": "CXO", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:CryptoCarbon": { "address": "0xE4c94d45f7Aef7018a5D66f44aF780ec6023378e", "links": { - "Homepage": "https://ccrb.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://ccrb.io/" }, - "marketcap_usd": 277931, + "marketcap_usd": 313518, "name": "CryptoCarbon", "network": "eth", "shortcut": "CryptoCarbon", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DAB": { "address": "0xdab0C31BF34C897Fb0Fe90D12EC9401caf5c36Ec", "links": { - "Homepage": "https://dabco.in", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://dabco.in" }, "marketcap_usd": 0, "name": "DAB", @@ -2908,45 +3585,51 @@ "shortcut": "DAB", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DADI": { "address": "0xFb2f26F266Fb2805a387230f2aa0a331b4d96Fba", "links": { - "Homepage": "https://dadi.cloud", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://dadi.cloud" }, - "marketcap_usd": 11958354, + "marketcap_usd": 10832199, "name": "DADI", "network": "eth", "shortcut": "DADI", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DAI": { "address": "0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359", "links": { "Github": "https://github.com/makerdao", - "Homepage": "https://makerdao.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://makerdao.com" }, - "marketcap_usd": 43138249, + "marketcap_usd": 43103757, "name": "Dai Stablecoin v1.0", "network": "eth", "shortcut": "DAI", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DALC": { "address": "0x07D9e49Ea402194bf48A8276dAfB16E4eD633317", "links": { - "Homepage": "http://www.dalecoin.org", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://www.dalecoin.org" }, "marketcap_usd": 0, "name": "DaleCoin", @@ -2954,15 +3637,17 @@ "shortcut": "DALC", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DAN": { "address": "0x9B70740e708a083C6fF38Df52297020f5DfAa5EE", "links": { "Github": "https://github.com/project-daneel", - "Homepage": "https://daneel.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://daneel.io" }, "marketcap_usd": 0, "name": "DaneelToken", @@ -2970,14 +3655,16 @@ "shortcut": "DAN", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DAO": { "address": "0xBB9bc244D798123fDe783fCc1C72d3Bb8C189413", "links": { - "Homepage": "https://blog.daohub.org/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://blog.daohub.org/" }, "marketcap_usd": 0, "name": "DAO", @@ -2985,14 +3672,16 @@ "shortcut": "DAO", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DAT": { "address": "0x81c9151de0C8bafCd325a57E3dB5a5dF1CEBf79c", "links": { - "Homepage": "https://datum.org", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://datum.org" }, "marketcap_usd": 0, "name": "Datum Token", @@ -3000,15 +3689,17 @@ "shortcut": "DAT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DATABroker": { "address": "0x1B5f21ee98eed48d292e8e2d3Ed82b40a9728A22", "links": { "Github": "https://github.com/DataBrokerDAO", - "Homepage": "https://databrokerdao.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://databrokerdao.com" }, "marketcap_usd": 0, "name": "DataBrokerDAO Token", @@ -3016,30 +3707,51 @@ "shortcut": "DATABroker", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DATACoin": { "address": "0x0Cf0Ee63788A0849fE5297F3407f701E122cC023", "links": { "Github": "https://github.com/streamr-dev", - "Homepage": "https://www.streamr.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.streamr.com" }, - "marketcap_usd": 152629, + "marketcap_usd": 143826, "name": "DATACoin", "network": "eth", "shortcut": "DATACoin", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:DAV": { + "address": "0xd82Df0ABD3f51425Eb15ef7580fDA55727875f14", + "links": { + "Github": "https://github.com/DAVFoundation", + "Homepage": "https://dav.network/" + }, + "name": "DAV Token", + "network": "eth", + "shortcut": "DAV", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DAXT": { "address": "0x61725f3db4004AFE014745B21DAb1E1677CC328b", "links": { - "Homepage": "https://www.daxt.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.daxt.io" }, "marketcap_usd": 0, "name": "Digital Asset Exchange Token", @@ -3047,15 +3759,17 @@ "shortcut": "DAXT", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DAY": { "address": "0xE814aeE960a85208C3dB542C53E7D4a6C8D5f60F", "links": { "Github": "https://github.com/chronologic", - "Homepage": "https://chronologic.network", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://chronologic.network" }, "marketcap_usd": 0, "name": "ChronoLogic DAY", @@ -3063,15 +3777,17 @@ "shortcut": "DAY", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DCA": { "address": "0x386Faa4703a34a7Fdb19Bec2e14Fd427C9638416", "links": { "Github": "https://github.com/dobetacceptbet", - "Homepage": "http://www.dobetacceptbet.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://www.dobetacceptbet.com" }, "marketcap_usd": 0, "name": "DoBetAcceptBet", @@ -3079,14 +3795,16 @@ "shortcut": "DCA", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DCL": { "address": "0x399A0e6FbEb3d74c85357439f4c8AeD9678a5cbF", "links": { - "Homepage": "https://www.DisLedger.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.DisLedger.com" }, "marketcap_usd": 0, "name": "DCL", @@ -3094,15 +3812,17 @@ "shortcut": "DCL", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DCN": { "address": "0x08d32b0da63e2C3bcF8019c9c5d849d7a9d791e6", "links": { "Github": "https://github.com/Dentacoin", - "Homepage": "https://dentacoin.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://dentacoin.com" }, "marketcap_usd": 0, "name": "Dentacoin", @@ -3110,15 +3830,17 @@ "shortcut": "DCN", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DDF": { "address": "0xcC4eF9EEAF656aC1a2Ab886743E98e97E090ed38", "links": { "Github": "https://github.com/digitaldevelopersfund/ddf", - "Homepage": "https://www.digitaldevelopersfund.com/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.digitaldevelopersfund.com/" }, "marketcap_usd": 0, "name": "DDF", @@ -3126,14 +3848,16 @@ "shortcut": "DDF", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DEB": { "address": "0x151202C9c18e495656f372281F493EB7698961D5", "links": { - "Homepage": "https://debitum.network/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://debitum.network/" }, "marketcap_usd": 0, "name": "DEBITUM", @@ -3141,15 +3865,17 @@ "shortcut": "DEB", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DEEZ": { "address": "0x075c60EE2cD308ff47873b38Bd9A0Fa5853382c4", "links": { "Github": "https://github.com/DeezNutsToken/DEEZ", - "Homepage": "https://deeznuts.in", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://deeznuts.in" }, "marketcap_usd": 0, "name": "DeezNuts", @@ -3157,29 +3883,33 @@ "shortcut": "DEEZ", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DENT": { "address": "0x3597bfD533a99c9aa083587B074434E61Eb0A258", "links": { - "Homepage": "https://www.dentwireless.com/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.dentwireless.com/" }, - "marketcap_usd": 57714154, + "marketcap_usd": 50914444, "name": "DENT", "network": "eth", "shortcut": "DENT", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DEPO": { "address": "0x7cF271966F36343Bf0150F25E5364f7961c58201", "links": { - "Homepage": "https://aridika.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://aridika.com" }, "marketcap_usd": 0, "name": "CRYPTODEPOZIT", @@ -3187,14 +3917,16 @@ "shortcut": "DEPO", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DGD": { "address": "0xE0B7927c4aF23765Cb51314A0E0521A9645F0E2A", "links": { - "Homepage": "https://www.dgx.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.dgx.io" }, "marketcap_usd": 0, "name": "Digix DAO", @@ -3202,15 +3934,17 @@ "shortcut": "DGD", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DGPT": { "address": "0xf6cFe53d6FEbaEEA051f400ff5fc14F0cBBDacA1", "links": { "Github": "https://github.com/digipulseio", - "Homepage": "https://www.digipulse.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.digipulse.io" }, "marketcap_usd": 0, "name": "DigiPulse", @@ -3218,14 +3952,16 @@ "shortcut": "DGPT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DGX": { "address": "0x55b9a11c2e8351b4Ffc7b11561148bfaC9977855", "links": { - "Homepage": "https://www.dgx.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.dgx.io" }, "marketcap_usd": 0, "name": "DGX", @@ -3233,14 +3969,16 @@ "shortcut": "DGX", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DICE": { "address": "0x2e071D2966Aa7D8dECB1005885bA1977D6038A65", "links": { - "Homepage": "https://etheroll.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://etheroll.com" }, "marketcap_usd": 0, "name": "Etheroll", @@ -3248,14 +3986,16 @@ "shortcut": "DICE", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DIVX": { "address": "0x13f11C9905A08ca76e3e853bE63D4f0944326C72", "links": { - "Homepage": "https://www.diviproject.org", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.diviproject.org" }, "marketcap_usd": 0, "name": "DIVX", @@ -3263,29 +4003,32 @@ "shortcut": "DIVX", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DKP": { "address": "0xBA187B09fFA8DDdc80d2571eD3cbC4Be0Af69E0c", "hidden": 1, - "links": { - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - }, + "links": {}, "marketcap_usd": 0, "name": "Draggin Karma Points", "network": "eth", "shortcut": "DKP", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DLT": { "address": "0x07e3c70653548B04f0A75970C1F81B4CBbFB606f", "links": { - "Homepage": "https://www.agrello.org", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.agrello.org" }, "marketcap_usd": 0, "name": "Agrello", @@ -3293,15 +4036,17 @@ "shortcut": "DLT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DMT": { "address": "0x2ccbFF3A042c68716Ed2a2Cb0c544A9f1d1935E1", "links": { "Github": "https://github.com/suntechsoft/dmarket-smartcontract", - "Homepage": "https://dmarket.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://dmarket.com" }, "marketcap_usd": 0, "name": "DMarket Token", @@ -3309,15 +4054,17 @@ "shortcut": "DMT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DNT": { "address": "0x0AbdAce70D3790235af448C88547603b945604ea", "links": { "Github": "https://github.com/district0x", - "Homepage": "https://district0x.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://district0x.io" }, "marketcap_usd": 0, "name": "DistrictOx", @@ -3325,15 +4072,17 @@ "shortcut": "DNT", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DNX": { "address": "0xE43E2041dc3786e166961eD9484a5539033d10fB", "links": { "Github": "https://github.com/DenCity-life", - "Homepage": "https://dencity.life", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://dencity.life" }, "marketcap_usd": 0, "name": "DenCity", @@ -3341,14 +4090,16 @@ "shortcut": "DNX", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DOW": { "address": "0xEEF6E90034eEa89E31Eb4B8eaCd323F28A92eaE4", "links": { - "Homepage": "https://www.dowico.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.dowico.com" }, "marketcap_usd": 0, "name": "DOW", @@ -3356,14 +4107,16 @@ "shortcut": "DOW", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DPP": { "address": "0x01b3Ec4aAe1B8729529BEB4965F27d008788B0EB", "links": { - "Homepage": "https://cofound.it/en/projects/digital-assets-power-play", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://cofound.it/en/projects/digital-assets-power-play" }, "marketcap_usd": 0, "name": "Digital Assets Power Play", @@ -3371,15 +4124,17 @@ "shortcut": "DPP", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DRGN": { "address": "0x419c4dB4B9e25d6Db2AD9691ccb832C8D9fDA05E", "links": { "Github": "https://github.com/dragonchain/dragonchain", - "Homepage": "https://dragonchain.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://dragonchain.com" }, "marketcap_usd": 0, "name": "Dragon", @@ -3387,14 +4142,16 @@ "shortcut": "DRGN", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DROP": { "address": "0x3c75226555FC496168d48B88DF83B95F16771F37", "links": { - "Homepage": "https://droplex.org", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://droplex.org" }, "marketcap_usd": 0, "name": "Droplex", @@ -3402,14 +4159,16 @@ "shortcut": "DROP", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DROP (dropil)": { "address": "0x4672bAD527107471cB5067a887f4656D585a8A31", "links": { - "Homepage": "https://dropil.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://dropil.com" }, "marketcap_usd": 0, "name": "Dropil", @@ -3417,14 +4176,16 @@ "shortcut": "DROP (dropil)", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DRP": { "address": "0x621d78f2EF2fd937BFca696CabaF9A779F59B3Ed", "links": { - "Homepage": "https://www.dcorp.it", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.dcorp.it" }, "marketcap_usd": 0, "name": "Dripcoin", @@ -3432,14 +4193,16 @@ "shortcut": "DRP", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DSC": { "address": "0x1e09BD8Cadb441632e441Db3e1D79909EE0A2256", "links": { - "Homepage": "https://github.com/xxxxyy1", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://github.com/xxxxyy1" }, "marketcap_usd": 0, "name": "Digital Safe Coin", @@ -3447,15 +4210,17 @@ "shortcut": "DSC", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DTH": { "address": "0x5adc961D6AC3f7062D2eA45FEFB8D8167d44b190", "links": { "Github": "https://github.com/dethertech", - "Homepage": "https://dether.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://dether.io" }, "marketcap_usd": 0, "name": "dether", @@ -3463,14 +4228,16 @@ "shortcut": "DTH", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DTR": { "address": "0xd234BF2410a0009dF9c3C63b610c09738f18ccD7", "links": { - "Homepage": "https://www.tokens.net", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.tokens.net" }, "marketcap_usd": 0, "name": "DTR", @@ -3478,15 +4245,17 @@ "shortcut": "DTR", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DTT": { "address": "0xf9F7c29CFdf19FCf1f2AA6B84aA367Bcf1bD1676", "links": { "Github": "https://github.com/DTToken", - "Homepage": "https://delphifund.org/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://delphifund.org/" }, "marketcap_usd": 0, "name": "Delphi Tech Token", @@ -3494,15 +4263,17 @@ "shortcut": "DTT", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DTX": { "address": "0x765f0C16D1Ddc279295c1a7C24B0883F62d33F75", "links": { "Github": "https://github.com/DataBrokerDAO", - "Homepage": "https://databrokerdao.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://databrokerdao.com" }, "marketcap_usd": 0, "name": "DaTa eXchange Token", @@ -3510,14 +4281,16 @@ "shortcut": "DTX", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DTx": { "address": "0x82fdedfB7635441aA5A92791D001fA7388da8025", "links": { - "Homepage": "https://www.digitalticks.com/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.digitalticks.com/" }, "marketcap_usd": 0, "name": "DigitalTicks", @@ -3525,15 +4298,17 @@ "shortcut": "DTx", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:DUBI": { "address": "0x9c6Fa42209169bCeA032e401188a6fc3e9C9f59c", "links": { "Github": "https://github.com/nionis/purpose", - "Homepage": "https://prps.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://prps.io" }, "marketcap_usd": 0, "name": "Decentralized Universal Basic Income", @@ -3541,14 +4316,16 @@ "shortcut": "DUBI", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:Devcon2 Token": { "address": "0xdd94De9cFE063577051A5eb7465D08317d8808B6", "links": { - "Homepage": "https://www.devcon2-token.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.devcon2-token.com" }, "marketcap_usd": 0, "name": "Devcon2 Token", @@ -3556,15 +4333,17 @@ "shortcut": "Devcon2 Token", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:EAGLE": { "address": "0x994f0DffdbaE0BbF09b652D6f11A493fd33F42B9", "links": { "Github": "https://github.com/elangindonesia/EagleCoin", - "Homepage": "https://eaglepay.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://eaglepay.io" }, "marketcap_usd": 0, "name": "EagleCoin", @@ -3572,14 +4351,16 @@ "shortcut": "EAGLE", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ECN": { "address": "0xa578aCc0cB7875781b7880903F4594D13cFa8B98", "links": { - "Homepage": "http://www.cewrd.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://www.cewrd.com" }, "marketcap_usd": 0, "name": "ECN", @@ -3587,14 +4368,16 @@ "shortcut": "ECN", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ECO2": { "address": "0x17F93475d2A978f527c3f7c44aBf44AdfBa60D5C", "links": { - "Homepage": "http://www.ethco2.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://www.ethco2.com" }, "marketcap_usd": 0, "name": "EtherCO2", @@ -3602,14 +4385,16 @@ "shortcut": "ECO2", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:EDC": { "address": "0xFA1DE2Ee97e4c10C94C91Cb2b5062b89Fb140b82", "links": { - "Homepage": "https://www.edc.network", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.edc.network" }, "marketcap_usd": 0, "name": "Education Credits", @@ -3617,14 +4402,16 @@ "shortcut": "EDC", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:EDG": { "address": "0x08711D3B02C8758F2FB3ab4e80228418a7F8e39c", "links": { - "Homepage": "https://edgeless.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://edgeless.io" }, "marketcap_usd": 0, "name": "Edgeless", @@ -3632,14 +4419,16 @@ "shortcut": "EDG", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:EDO": { "address": "0xCeD4E93198734dDaFf8492d525Bd258D49eb388E", "links": { - "Homepage": "https://eidoo.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://eidoo.io" }, "marketcap_usd": 0, "name": "Eidoo", @@ -3647,15 +4436,17 @@ "shortcut": "EDO", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:EDU": { - "address": "0x5b26C5D0772E5bbaC8b3182AE9a13f9BB2D03765", + "address": "0x2A22e5cCA00a3D63308fa39f29202eB1b39eEf52", "links": { "Github": "https://github.com/livecodingtvofficial", - "Homepage": "https://tokensale.liveedu.tv", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://tokensale.liveedu.tv" }, "marketcap_usd": 0, "name": "EDU", @@ -3663,15 +4454,34 @@ "shortcut": "EDU", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:EGT": { + "address": "0x8e1b448EC7aDFc7Fa35FC2e885678bD323176E34", + "links": { + "Github": "https://github.com/egretia", + "Homepage": "https://www.egretia.io" + }, + "name": "Egretia Token", + "network": "eth", + "shortcut": "EGT", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:EHT": { "address": "0xf9F0FC7167c311Dd2F1e21E9204F87EBA9012fB2", "links": { "Github": "https://github.com/team-easyhomes", - "Homepage": "https://easyhomes.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://easyhomes.io/" }, "marketcap_usd": 0, "name": "EasyHomes", @@ -3679,15 +4489,17 @@ "shortcut": "EHT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ELF": { "address": "0xbf2179859fc6D5BEE9Bf9158632Dc51678a4100e", "links": { "Github": "https://github.com/aelfProject", - "Homepage": "https://aelf.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://aelf.io/" }, "marketcap_usd": 0, "name": "ELF Token", @@ -3695,14 +4507,16 @@ "shortcut": "ELF", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ELIX": { "address": "0xc8C6A31A4A806d3710A7B38b7B296D2fABCCDBA8", "links": { - "Homepage": "https://elixirtoken.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://elixirtoken.io" }, "marketcap_usd": 0, "name": "Elixir Token", @@ -3710,31 +4524,35 @@ "shortcut": "ELIX", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ELTCOIN": { "address": "0x44197A4c44D6A059297cAf6be4F7e172BD56Caaf", "links": { "Github": "https://github.com/eltcoin", - "Homepage": "http://www.eltcoin.tech/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://www.eltcoin.tech/" }, - "marketcap_usd": 413855, + "marketcap_usd": 368436, "name": "ELTCOIN", "network": "eth", "shortcut": "ELTCOIN", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:EMON": { "address": "0xb67b88a25708a35AE7c2d736D398D268CE4f7F83", "links": { "Github": "https://github.com/etheremon/smartcontract", - "Homepage": "https://www.etheremon.com/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.etheremon.com/" }, "marketcap_usd": 0, "name": "Etheremon", @@ -3742,14 +4560,16 @@ "shortcut": "EMON", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:EMONT": { "address": "0x95dAaaB98046846bF4B2853e23cba236fa394A31", "links": { - "Homepage": "https://www.etheremon.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.etheremon.com" }, "marketcap_usd": 0, "name": "Etheremon Token", @@ -3757,15 +4577,17 @@ "shortcut": "EMONT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:EMT": { "address": "0x9501BFc48897DCEEadf73113EF635d2fF7ee4B97", "links": { "Github": "https://github.com/easyMINE", - "Homepage": "https://easymine.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://easymine.io" }, "marketcap_usd": 0, "name": "easyMINE Token", @@ -3773,14 +4595,16 @@ "shortcut": "EMT", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:EMV": { "address": "0xB802b24E0637c2B87D2E8b7784C055BBE921011a", "links": { - "Homepage": "http://emovieventure.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://emovieventure.com" }, "marketcap_usd": 0, "name": "EMovieVenture", @@ -3788,15 +4612,34 @@ "shortcut": "EMV", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:ENC": { + "address": "0x039F5050dE4908f9b5ddF40A4F3Aa3f329086387", + "links": { + "Github": "https://github.com/ethernetcash", + "Homepage": "https://ethernet.cash" + }, + "name": "Ethernet.Cash", + "network": "eth", + "shortcut": "ENC", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ENG": { "address": "0xf0Ee6b27b759C9893Ce4f094b49ad28fd15A23e4", "links": { "Github": "https://github.com/enigmampc", - "Homepage": "https://enigma.co/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://enigma.co/" }, "marketcap_usd": 0, "name": "Enigma", @@ -3804,15 +4647,17 @@ "shortcut": "ENG", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ENJ": { "address": "0xF629cBd94d3791C9250152BD8dfBDF380E2a3B9c", "links": { "Github": "https://github.com/enjin/contracts", - "Homepage": "https://enjincoin.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://enjincoin.io" }, "marketcap_usd": 0, "name": "ENJIN", @@ -3820,15 +4665,17 @@ "shortcut": "ENJ", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ENTRP": { "address": "0x5BC7e5f0Ab8b2E10D2D0a3F21739FCe62459aeF3", "links": { "Github": "https://github.com/hut34", - "Homepage": "https://hut34.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://hut34.io/" }, "marketcap_usd": 0, "name": "Hut34 Entropy Token", @@ -3836,31 +4683,35 @@ "shortcut": "ENTRP", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:EOS": { "address": "0x86Fa049857E0209aa7D9e616F7eb3b3B78ECfdb0", "hidden": 1, "links": { - "Homepage": "https://eos.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://eos.io" }, - "marketcap_usd": 9384925557, + "marketcap_usd": 8360026267, "name": "EOS", "network": "eth", "shortcut": "EOS", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:EPX": { "address": "0x35BAA72038F127f9f8C8f9B491049f64f377914d", "links": { "Github": "https://github.com/EthPokerIO/ethpokerIO", - "Homepage": "https://ethPoker.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://ethPoker.io" }, "marketcap_usd": 0, "name": "ethPoker.io EPX", @@ -3868,15 +4719,17 @@ "shortcut": "EPX", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ESZ": { "address": "0xe8A1Df958bE379045E2B46a31A98B93A2eCDfDeD", "links": { "Github": "https://github.com/EtherSportz/ESZCoin", - "Homepage": "https://ethersportz.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://ethersportz.com" }, "marketcap_usd": 0, "name": "ESZCoin", @@ -3884,14 +4737,16 @@ "shortcut": "ESZ", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ETBS": { "address": "0x1B9743f556D65e757c4c650B4555bAF354cB8bd3", "links": { - "Homepage": "https://www.ethbits.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.ethbits.com" }, "marketcap_usd": 0, "name": "Ethbits", @@ -3899,14 +4754,16 @@ "shortcut": "ETBS", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ETCH": { "address": "0xDd74a7A3769fA72561B3A69e65968F49748c690c", "links": { - "Homepage": "https://etch.work", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://etch.work" }, "marketcap_usd": 0, "name": "ETCH", @@ -3914,14 +4771,16 @@ "shortcut": "ETCH", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ETHB": { "address": "0x3a26746Ddb79B1B8e4450e3F4FFE3285A307387E", "links": { - "Homepage": "https://etherbtc.io/faq", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://etherbtc.io/faq" }, "marketcap_usd": 0, "name": "EtherBTC", @@ -3929,15 +4788,17 @@ "shortcut": "ETHB", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ETR": { "address": "0x6927C69fb4daf2043fbB1Cb7b86c5661416bea29", "links": { "Github": "https://github.com/pironmind/EthereumRisen", - "Homepage": "http://ethereumrisen.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://ethereumrisen.io/" }, "marketcap_usd": 0, "name": "Etheruem Risen", @@ -3945,14 +4806,16 @@ "shortcut": "ETR", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:EURT": { "address": "0xAbdf147870235FcFC34153828c769A70B3FAe01F", "links": { - "Homepage": "https://tether.to", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://tether.to" }, "marketcap_usd": 0, "name": "EUR Tether (erc20)", @@ -3960,15 +4823,17 @@ "shortcut": "EURT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:EVE": { "address": "0x923108a439C4e8C2315c4f6521E5cE95B44e9B4c", "links": { "Github": "https://github.com/devery", - "Homepage": "https://devery.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://devery.io" }, "marketcap_usd": 0, "name": "EVE", @@ -3976,15 +4841,17 @@ "shortcut": "EVE", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:EVN": { "address": "0xd780Ae2Bf04cD96E577D3D014762f831d97129d0", "links": { "Github": "https://github.com/envion/Smart-Contracts", - "Homepage": "https://envion.org", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://envion.org" }, "marketcap_usd": 0, "name": "Envion AG", @@ -3992,14 +4859,16 @@ "shortcut": "EVN", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:EVX": { "address": "0xf3Db5Fa2C66B7aF3Eb0C0b782510816cbe4813b8", "links": { - "Homepage": "https://everex.io ", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://everex.io " }, "marketcap_usd": 0, "name": "EVX Token", @@ -4007,15 +4876,17 @@ "shortcut": "EVX", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:EXMR": { "address": "0xc98e0639c6d2EC037A615341c369666B110e80E5", "links": { "Github": "https://github.com/eXMRcoin/", - "Homepage": "https://exmr.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://exmr.io/" }, "marketcap_usd": 0, "name": "eXMRcoin", @@ -4023,15 +4894,17 @@ "shortcut": "EXMR", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:E\u20b9": { "address": "0xb67734521eAbBE9C773729dB73E16CC2dfb20A58", "links": { "Github": "https://github.com/eRupee", - "Homepage": "https://erupee.wordpress.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://erupee.wordpress.com" }, "marketcap_usd": 0, "name": "eRupee", @@ -4039,15 +4912,17 @@ "shortcut": "E\u20b9", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:FAM": { "address": "0x190e569bE071F40c704e15825F285481CB74B6cC", "links": { "Github": "https://github.com/BattleDrome", - "Homepage": "http://www.battledrome.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://www.battledrome.io/" }, "marketcap_usd": 0, "name": "FAM", @@ -4055,14 +4930,16 @@ "shortcut": "FAM", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:FANX": { "address": "0x7f6715c3FC4740A02F70De85B9FD50ac6001fEd9", "links": { - "Homepage": "http://www.fanx.one/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://www.fanx.one/" }, "marketcap_usd": 0, "name": "FANX Token", @@ -4070,15 +4947,17 @@ "shortcut": "FANX", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:FKX": { "address": "0x009e864923b49263c7F10D19B7f8Ab7a9A5AAd33", "links": { "Github": "https://github.com/FortKnoxster", - "Homepage": "https://fortknoxster.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://fortknoxster.com" }, "marketcap_usd": 0, "name": "Knoxstertoken", @@ -4086,14 +4965,16 @@ "shortcut": "FKX", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:FLIXX": { "address": "0xf04a8ac553FceDB5BA99A64799155826C136b0Be", "links": { - "Homepage": "http://flixxo.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://flixxo.com" }, "marketcap_usd": 0, "name": "FLIXX", @@ -4101,14 +4982,16 @@ "shortcut": "FLIXX", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:FLMC": { "address": "0x5976F7dac1525eF3277836043bA474a35E6B4272", "links": { - "Homepage": "https://filmscoin.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://filmscoin.io" }, "marketcap_usd": 0, "name": "Filmscoin", @@ -4116,15 +4999,17 @@ "shortcut": "FLMC", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:FLP": { "address": "0x3a1Bda28AdB5B0a812a7CF10A1950c920F79BcD3", "links": { "Github": "https://github.com/gameflip", - "Homepage": "https://gameflip.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://gameflip.com" }, "marketcap_usd": 0, "name": "FLIP Token", @@ -4132,14 +5017,16 @@ "shortcut": "FLP", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:FLR": { "address": "0x9aeFBE0b3C3ba9Eab262CB9856E8157AB7648e09", "links": { - "Homepage": "https://flaircoin.co/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://flaircoin.co/" }, "marketcap_usd": 0, "name": "Flair Coin", @@ -4147,14 +5034,16 @@ "shortcut": "FLR", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:FLUZ": { "address": "0x954b5De09A55e59755aCBda29e1Eb74A45D30175", "links": { - "Homepage": "https://ico.fluzfluz.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://ico.fluzfluz.com" }, "marketcap_usd": 0, "name": "Fluz Fluz Global", @@ -4162,14 +5051,16 @@ "shortcut": "FLUZ", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:FLX": { "address": "0x70b147E01E9285E7cE68B9BA437Fe3a9190E756a", "links": { - "Homepage": "http://fluxproject.xyz", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://fluxproject.xyz" }, "marketcap_usd": 0, "name": "BitFlux", @@ -4177,15 +5068,17 @@ "shortcut": "FLX", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:FND": { "address": "0x4DF47B4969B2911C966506E3592c41389493953b", "links": { "Github": "https://github.com/FundRequest", - "Homepage": "https://fundrequest.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://fundrequest.io" }, "marketcap_usd": 0, "name": "FundRequest", @@ -4193,14 +5086,16 @@ "shortcut": "FND", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:FRD": { "address": "0x0ABeFb7611Cb3A01EA3FaD85f33C3C934F8e2cF4", "links": { - "Homepage": "https://farad.energy", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://farad.energy" }, "marketcap_usd": 0, "name": "FARAD Cryptoken", @@ -4208,14 +5103,16 @@ "shortcut": "FRD", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:FTC": { "address": "0xe6f74dcfa0E20883008d8C16b6d9a329189D0C30", "links": { - "Homepage": "https://ftccoins.org/en", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://ftccoins.org/en" }, "marketcap_usd": 0, "name": "FTC", @@ -4223,14 +5120,16 @@ "shortcut": "FTC", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:FTR": { "address": "0x2023DCf7c438c8C8C0B0F28dBaE15520B4f3Ee20", "links": { - "Homepage": "https://futourist.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://futourist.io/" }, "marketcap_usd": 0, "name": "Futourist Token", @@ -4238,15 +5137,17 @@ "shortcut": "FTR", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:FTT": { "address": "0x2AEC18c5500f21359CE1BEA5Dc1777344dF4C0Dc", "links": { "Github": "https://github.com/farmatrust", - "Homepage": "https://www.farmatrust.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.farmatrust.io" }, "marketcap_usd": 0, "name": "FarmaTrust Token", @@ -4254,14 +5155,16 @@ "shortcut": "FTT", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:FUCK": { "address": "0xAb16E0d25c06CB376259cc18C1de4ACA57605589", "links": { - "Homepage": "http://fucktoken.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://fucktoken.io" }, "marketcap_usd": 0, "name": "Finally Usable Crypto Karma", @@ -4269,15 +5172,17 @@ "shortcut": "FUCK", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:FUEL": { "address": "0xEA38eAa3C86c8F9B751533Ba2E562deb9acDED40", "links": { "Github": "https://github.com/etherparty", - "Homepage": "https://etherparty.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://etherparty.io" }, "marketcap_usd": 0, "name": "Etherparty FUEL", @@ -4285,14 +5190,16 @@ "shortcut": "FUEL", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:FUN": { "address": "0x419D0d8BdD9aF5e606Ae2232ed285Aff190E711b", "links": { - "Homepage": "https://funfair.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://funfair.io" }, "marketcap_usd": 0, "name": "Funfair", @@ -4300,14 +5207,16 @@ "shortcut": "FUN", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:FYN": { "address": "0x88FCFBc22C6d3dBaa25aF478C578978339BDe77a", "links": { - "Homepage": "http://www.fundyourselfnow.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://www.fundyourselfnow.com" }, "marketcap_usd": 0, "name": "Fund Yourself Now", @@ -4315,15 +5224,17 @@ "shortcut": "FYN", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:GAM": { "address": "0xF67451Dc8421F0e0afEB52faa8101034ed081Ed9", "links": { "Github": "https://github.com/BlockchainLabsNZ/gambit", - "Homepage": "http://gambitcrypto.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://gambitcrypto.com" }, "marketcap_usd": 0, "name": "Gambit", @@ -4331,15 +5242,17 @@ "shortcut": "GAM", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:GANA": { "address": "0x6754e21b9EAa053c62d7854dD6561ae451B0cBCf", "links": { "Github": "https://github.com/GanaProject", - "Homepage": "https://ganacoin.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://ganacoin.io" }, "marketcap_usd": 0, "name": "GANA", @@ -4347,14 +5260,16 @@ "shortcut": "GANA", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:GAVEL": { "address": "0x708876f486e448Ee89eB332bFbC8E593553058b9", "links": { - "Homepage": "http://gavelcoin.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://gavelcoin.com" }, "marketcap_usd": 0, "name": "GAVEL", @@ -4362,15 +5277,17 @@ "shortcut": "GAVEL", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:GBT": { "address": "0x7585F835ae2d522722d2684323a0ba83401f32f5", "links": { "Github": "https://github.com/myHelloGold/Foundation", - "Homepage": "https://www.hellogold.org/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.hellogold.org/" }, "marketcap_usd": 0, "name": "GBT", @@ -4378,14 +5295,16 @@ "shortcut": "GBT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:GBX": { "address": "0x12fCd6463E66974cF7bBC24FFC4d40d6bE458283", "links": { - "Homepage": "https://www.globitexico.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.globitexico.com" }, "marketcap_usd": 0, "name": "Globitex", @@ -4393,15 +5312,17 @@ "shortcut": "GBX", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:GCP": { "address": "0xdb0F69306FF8F949f258E83f6b87ee5D052d0b23", "links": { "Github": "https://github.com/Globcoin", - "Homepage": "https://globcoin.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://globcoin.io/" }, "marketcap_usd": 0, "name": "Globcoin Crypto Platform", @@ -4409,15 +5330,17 @@ "shortcut": "GCP", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:GEE": { "address": "0x4F4f0Db4de903B88f2B1a2847971E231D54F8fd3", "links": { "Github": "https://github.com/GeensNPO", - "Homepage": "https://www.geens.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.geens.com" }, "marketcap_usd": 0, "name": "Geens NPO", @@ -4425,14 +5348,16 @@ "shortcut": "GEE", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:GELD": { "address": "0x24083Bb30072643C3bB90B44B7285860a755e687", "links": { - "Homepage": "https://www.soerengelder.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.soerengelder.com" }, "marketcap_usd": 0, "name": "GELD", @@ -4440,15 +5365,17 @@ "shortcut": "GELD", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:GEN": { "address": "0x543Ff227F64Aa17eA132Bf9886cAb5DB55DCAddf", "links": { "Github": "https://github.com/daostack", - "Homepage": "https://daostack.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://daostack.io" }, "marketcap_usd": 0, "name": "DAOstack", @@ -4456,15 +5383,17 @@ "shortcut": "GEN", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:GET": { "address": "0x8a854288a5976036A725879164Ca3e91d30c6A1B", "links": { "Github": "https://github.com/Getprotocol", - "Homepage": "http://www.get-protocol.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://www.get-protocol.io" }, "marketcap_usd": 0, "name": "GET", @@ -4472,14 +5401,16 @@ "shortcut": "GET", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:GIF": { "address": "0xFcD862985628b254061F7A918035B80340D045d3", "links": { - "Homepage": "https://gifcoin.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://gifcoin.io/" }, "marketcap_usd": 0, "name": "GIFcoin Token", @@ -4487,15 +5418,17 @@ "shortcut": "GIF", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:GIM": { "address": "0xaE4f56F072c34C0a65B3ae3E4DB797D831439D93", "links": { "Github": "https://github.com/thegimliproject/GimliToken", - "Homepage": "https://gimli.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://gimli.io" }, "marketcap_usd": 0, "name": "Gimli", @@ -4503,14 +5436,16 @@ "shortcut": "GIM", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:GMT": { "address": "0xb3Bd49E28f8F832b8d1E246106991e546c323502", "links": { - "Homepage": "http://www.mercuryprotocol.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://www.mercuryprotocol.com" }, "marketcap_usd": 0, "name": "GMT", @@ -4518,14 +5453,16 @@ "shortcut": "GMT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:GNO": { "address": "0x6810e776880C02933D47DB1b9fc05908e5386b96", "links": { - "Homepage": "https://gnosis.pm", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://gnosis.pm" }, "marketcap_usd": 0, "name": "Gnosis", @@ -4533,31 +5470,35 @@ "shortcut": "GNO", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:GNT": { "address": "0xa74476443119A942dE498590Fe1f2454d7D4aC0d", "coinmarketcap_alias": "golem-network-tokens", "links": { - "Homepage": "https://golem.network", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://golem.network" }, - "marketcap_usd": 308018599, + "marketcap_usd": 276463100, "name": "Golem", "network": "eth", "shortcut": "GNT", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:GOLDX": { "address": "0xeAb43193CF0623073Ca89DB9B712796356FA7414", "links": { "Github": "https://github.com/myHelloGold/Foundation", - "Homepage": "https://www.hellogold.org/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.hellogold.org/" }, "marketcap_usd": 0, "name": "GOLDX", @@ -4565,30 +5506,34 @@ "shortcut": "GOLDX", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:GRID": { "address": "0x12B19D3e2ccc14Da04FAe33e63652ce469b3F2FD", "links": { - "Homepage": "https://gridplus.io/token-sale", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://gridplus.io/token-sale" }, - "marketcap_usd": 12602486, + "marketcap_usd": 14117643, "name": "GRID", "network": "eth", "shortcut": "GRID", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:GROW": { "address": "0x0a9A9ce600D08BF9b76F49FA4e7b38A67EBEB1E6", "links": { "Github": "https://github.com/growchainnet", - "Homepage": "http://www.growchain.us", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://www.growchain.us" }, "marketcap_usd": 0, "name": "Growchain", @@ -4596,15 +5541,17 @@ "shortcut": "GROW", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:GTC": { "address": "0xB70835D7822eBB9426B56543E391846C107bd32C", "links": { "Github": "https://github.com/GameLeLe", - "Homepage": "https://game.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://game.com" }, "marketcap_usd": 0, "name": "GTC Token", @@ -4612,15 +5559,17 @@ "shortcut": "GTC", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:GTKT": { "address": "0x025abAD9e518516fdaAFBDcdB9701b37fb7eF0FA", "links": { "Github": "https://github.com/sprux/BackToEarth", - "Homepage": "https://backto.earth/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://backto.earth/" }, "marketcap_usd": 0, "name": "GTKT", @@ -4628,15 +5577,17 @@ "shortcut": "GTKT", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:GTO": { "address": "0xC5bBaE50781Be1669306b9e001EFF57a2957b09d", "links": { "Github": "https://github.com/GIFTO-io", - "Homepage": "https://gifto.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://gifto.io/" }, "marketcap_usd": 0, "name": "Gifto", @@ -4644,15 +5595,17 @@ "shortcut": "GTO", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:GUP": { "address": "0xf7B098298f7C69Fc14610bf71d5e02c60792894C", "links": { "Github": "https://github.com/Matchpool/", - "Homepage": "https://github.com/Matchpool/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://github.com/Matchpool/" }, "marketcap_usd": 0, "name": "GUP", @@ -4660,15 +5613,17 @@ "shortcut": "GUP", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:GVT": { "address": "0x103c3A209da59d3E7C4A89307e66521e081CFDF0", "links": { "Github": "https://github.com/GenesisVision", - "Homepage": "https://genesis.vision", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://genesis.vision" }, "marketcap_usd": 0, "name": "Genesis Vision", @@ -4676,14 +5631,16 @@ "shortcut": "GVT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:GXC": { "address": "0x58ca3065C0F24C7c96Aee8d6056b5B5deCf9c2f8", "links": { - "Homepage": "https://genevieveco.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://genevieveco.com" }, "marketcap_usd": 0, "name": "GXC", @@ -4691,15 +5648,17 @@ "shortcut": "GXC", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:GXVC": { "address": "0x22F0AF8D78851b72EE799e05F54A77001586B18A", "links": { "Github": "https://github.com/GxC17Genevieve/GXVC", - "Homepage": "https://genevieveco.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://genevieveco.io/" }, "marketcap_usd": 0, "name": "Genevieve VC", @@ -4707,14 +5666,16 @@ "shortcut": "GXVC", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:GZE": { "address": "0x8C65e992297d5f092A756dEf24F4781a280198Ff", "links": { - "Homepage": "https://gazecoin.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://gazecoin.io" }, "marketcap_usd": 0, "name": "GazeCoin", @@ -4722,14 +5683,33 @@ "shortcut": "GZE", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:GZR": { + "address": "0xE638dc39b6aDBEE8526b5C22380b4b45dAf46d8e", + "links": { + "Github": "https://github.com/GizerInc/Gizer", + "Homepage": "https://gizer.io" + }, + "name": "Gizer", + "network": "eth", + "shortcut": "GZR", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:HAT": { "address": "0x9002D4485b7594e3E850F0a206713B305113f69e", "links": { - "Homepage": "https://www.hawala.today/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.hawala.today/" }, "marketcap_usd": 0, "name": "Hawala Today", @@ -4737,15 +5717,17 @@ "shortcut": "HAT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:HAV": { - "address": "0xF244176246168F24e3187f7288EdbCA29267739b", + "address": "0xC011A72400E58ecD99Ee497CF89E3775d4bd732F", "links": { "Github": "https://github.com/havven/havven", - "Homepage": "https://havven.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://havven.io" }, "marketcap_usd": 0, "name": "Havven", @@ -4753,14 +5735,16 @@ "shortcut": "HAV", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:HDG": { "address": "0xfFe8196bc259E8dEDc544d935786Aa4709eC3E64", "links": { - "Homepage": "https://www.hedge-crypto.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.hedge-crypto.com" }, "marketcap_usd": 0, "name": "Hedge Crypto", @@ -4768,15 +5752,17 @@ "shortcut": "HDG", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:HGT": { "address": "0xba2184520A1cC49a6159c57e61E1844E085615B6", "links": { "Github": "https://github.com/myHelloGold/Foundation", - "Homepage": "https://www.hellogold.org/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.hellogold.org/" }, "marketcap_usd": 0, "name": "HGT", @@ -4784,15 +5770,17 @@ "shortcut": "HGT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:HIG": { "address": "0xa9240fBCAC1F0b9A6aDfB04a53c8E3B0cC1D1444", "links": { "Github": "https://github.com/ethereumhigh/Ethereum-High", - "Homepage": "https://www.ethereumhigh.org/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.ethereumhigh.org/" }, "marketcap_usd": 0, "name": "ethereumhigh ", @@ -4800,14 +5788,16 @@ "shortcut": "HIG", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:HKG": { "address": "0x14F37B574242D366558dB61f3335289a5035c506", "links": { - "Homepage": "http://www.ether.camp", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://www.ether.camp" }, "marketcap_usd": 0, "name": "HKG", @@ -4815,15 +5805,17 @@ "shortcut": "HKG", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:HKY": { "address": "0x88aC94D5d175130347Fc95E109d77AC09dbF5ab7", "links": { "Github": "https://github.com/HickyToken/hickycontracts", - "Homepage": "https://hicky.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://hicky.io" }, "marketcap_usd": 0, "name": "Hicky", @@ -4831,14 +5823,16 @@ "shortcut": "HKY", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:HMQ": { "address": "0xcbCC0F036ED4788F63FC0fEE32873d6A7487b908", "links": { - "Homepage": "https://humaniq.co", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://humaniq.co" }, "marketcap_usd": 0, "name": "HMQ", @@ -4846,14 +5840,16 @@ "shortcut": "HMQ", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:HODL": { "address": "0xb45d7Bc4cEBcAB98aD09BABDF8C818B2292B672c", "links": { - "Homepage": "https://github.com/arachnid/hodlcoin", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://github.com/arachnid/hodlcoin" }, "marketcap_usd": 0, "name": "HODLCoin", @@ -4861,15 +5857,17 @@ "shortcut": "HODL", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:HORSE": { "address": "0x5B0751713b2527d7f002c0c4e2a37e1219610A6B", "links": { "Github": "https://github.com/ethorse", - "Homepage": "https://ethorse.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://ethorse.com" }, "marketcap_usd": 0, "name": "HORSE", @@ -4877,15 +5875,17 @@ "shortcut": "HORSE", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:HOT": { "address": "0x6c6EE5e31d828De241282B9606C8e98Ea48526E2", "links": { "Github": "https://github.com/Holo-Host", - "Homepage": "https://holo.host/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://holo.host/" }, "marketcap_usd": 0, "name": "Hydro Protocol", @@ -4893,14 +5893,16 @@ "shortcut": "HOT", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:HST": { "address": "0x554C20B7c486beeE439277b4540A434566dC4C02", "links": { - "Homepage": "https://horizonstate.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://horizonstate.com" }, "marketcap_usd": 0, "name": "HST", @@ -4908,15 +5910,17 @@ "shortcut": "HST", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:HVN": { "address": "0xC0Eb85285d83217CD7c891702bcbC0FC401E2D9D", "links": { "Github": "https://github.com/HiveProjectLTD", - "Homepage": "https://hive-project.net", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://hive-project.net" }, "marketcap_usd": 0, "name": "Hive Project", @@ -4924,15 +5928,34 @@ "shortcut": "HVN", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:HYDRO": { + "address": "0xEBBdf302c940c6bfd49C6b165f457fdb324649bc", + "links": { + "Github": "https://github.com/hydrogen-dev", + "Homepage": "https://www.hydrogenplatform.com/hydro" + }, + "name": "Hydro", + "network": "eth", + "shortcut": "HYDRO", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:Hdp": { "address": "0xE9fF07809CCff05daE74990e25831d0Bc5cbe575", "links": { "Github": "https://github.com/HEDPAY", - "Homepage": "http://hedpay.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://hedpay.com" }, "marketcap_usd": 0, "name": "HEdpAY", @@ -4940,15 +5963,17 @@ "shortcut": "Hdp", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:Hdp.\u0444": { "address": "0x84543F868eC1b1FAC510d49d13C069f64cD2d5f9", "links": { "Github": "https://github.com/HEDPAY", - "Homepage": "http://hedpay.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://hedpay.com" }, "marketcap_usd": 0, "name": "HEdpAY", @@ -4956,14 +5981,33 @@ "shortcut": "Hdp.\u0444", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:IAD": { + "address": "0xC1E2097d788d33701BA3Cc2773BF67155ec93FC4", + "links": { + "Github": "https://github.com/IADOWR", + "Homepage": "https://www.iadowrcoin.com" + }, + "name": "IADOWR Coin", + "network": "eth", + "shortcut": "IAD", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ICE": { "address": "0x5a84969bb663fb64F6d015DcF9F622Aedc796750", "links": { - "Homepage": "https://idice.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://idice.io/" }, "marketcap_usd": 0, "name": "ICE", @@ -4971,29 +6015,32 @@ "shortcut": "ICE", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ICN": { "address": "0x888666CA69E0f178DED6D75b5726Cee99A87D698", "hidden": 1, - "links": { - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - }, + "links": {}, "marketcap_usd": 0, "name": "ICN", "network": "eth", "shortcut": "ICN", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ICO": { "address": "0xa33e729bf4fdeb868B534e1f20523463D9C46bEe", "links": { - "Homepage": "http://icocoin.org", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://icocoin.org" }, "marketcap_usd": 0, "name": "ICO", @@ -5001,29 +6048,33 @@ "shortcut": "ICO", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ICOS": { "address": "0x014B50466590340D41307Cc54DCee990c8D58aa8", "links": { - "Homepage": "https://icos.icobox.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://icos.icobox.io/" }, - "marketcap_usd": 6526689, + "marketcap_usd": 6457472, "name": "ICOS", "network": "eth", "shortcut": "ICOS", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ICX": { "address": "0xb5A5F22694352C15B00323844aD545ABb2B11028", "links": { - "Homepage": "https://www.icon.foundation", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.icon.foundation" }, "marketcap_usd": 0, "name": "ICON", @@ -5031,14 +6082,16 @@ "shortcut": "ICX", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:IDEA": { "address": "0x814CAfd4782d2e728170FDA68257983F03321c58", "links": { - "Homepage": "http://www.ideatoken.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://www.ideatoken.io/" }, "marketcap_usd": 0, "name": "IDEA Token", @@ -5046,14 +6099,16 @@ "shortcut": "IDEA", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:IFT": { "address": "0x7654915A1b82D6D2D0AFc37c52Af556eA8983c7E", "links": { - "Homepage": "https://investfeed.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://investfeed.com" }, "marketcap_usd": 0, "name": "InvestFeed", @@ -5061,14 +6116,16 @@ "shortcut": "IFT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:IIC": { "address": "0x16662F73dF3e79e54c6c5938b4313f92C524C120", "links": { - "Homepage": "https://ibiscoin.co", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://ibiscoin.co" }, "marketcap_usd": 0, "name": "IIC", @@ -5076,15 +6133,17 @@ "shortcut": "IIC", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:IKB": { "address": "0x88AE96845e157558ef59e9Ff90E766E22E480390", "links": { "Github": "https://github.com/mitchellfchan/IKB", - "Homepage": "http://www.mitchellfchan.com/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://www.mitchellfchan.com/" }, "marketcap_usd": 0, "name": "IKB", @@ -5092,14 +6151,16 @@ "shortcut": "IKB", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:IMC": { "address": "0xe3831c5A982B279A198456D577cfb90424cb6340", "links": { - "Homepage": "http://immunecoin.info", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://immunecoin.info" }, "marketcap_usd": 0, "name": "Immune Coin", @@ -5107,29 +6168,32 @@ "shortcut": "IMC", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:IMT": { "address": "0x22E5F62D0FA19974749faa194e3d3eF6d89c08d7", "hidden": 1, - "links": { - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - }, + "links": {}, "marketcap_usd": 0, "name": "IMT", "network": "eth", "shortcut": "IMT", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:IND": { "address": "0xf8e386EDa857484f5a12e4B5DAa9984E06E73705", "links": { - "Homepage": "https://indorse.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://indorse.io" }, "marketcap_usd": 0, "name": "Indorse", @@ -5137,29 +6201,32 @@ "shortcut": "IND", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:INRM": { "address": "0x48e5413b73add2434e47504E2a22d14940dBFe78", "hidden": 1, - "links": { - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - }, + "links": {}, "marketcap_usd": 0, "name": "Integrated Money", "network": "eth", "shortcut": "INRM", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:INS": { "address": "0x5B2e4a700dfBc560061e957edec8F6EeEb74a320", "links": { - "Homepage": "https://ins.world", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://ins.world" }, "marketcap_usd": 0, "name": "INS", @@ -5167,14 +6234,16 @@ "shortcut": "INS", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:INSTAR": { "address": "0xc72fe8e3Dd5BeF0F9f31f259399F301272eF2a2D", "links": { - "Homepage": "https://insights.network", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://insights.network" }, "marketcap_usd": 0, "name": "Insights Network", @@ -5182,14 +6251,16 @@ "shortcut": "INSTAR", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:INXT": { "address": "0xa8006C4ca56F24d6836727D106349320dB7fEF82", "links": { - "Homepage": "https://internxt.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://internxt.io" }, "marketcap_usd": 0, "name": "Internxt", @@ -5197,14 +6268,16 @@ "shortcut": "INXT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:IOST": { "address": "0xFA1a856Cfa3409CFa145Fa4e20Eb270dF3EB21ab", "links": { - "Homepage": "https://iost.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://iost.io/" }, "marketcap_usd": 0, "name": "IOSToken", @@ -5212,15 +6285,34 @@ "shortcut": "IOST", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:IOTX": { + "address": "0x6fB3e0A217407EFFf7Ca062D46c26E5d60a14d69", + "links": { + "Github": "https://github.com/iotexproject/iotex-core", + "Homepage": "http://iotex.io/" + }, + "name": "IoTeX Network", + "network": "eth", + "shortcut": "IOTX", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:IPL": { "address": "0x64CdF819d3E75Ac8eC217B3496d7cE167Be42e80", "links": { "Github": "https://github.com/InsurePal", - "Homepage": "https://insurepal.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://insurepal.io/" }, "marketcap_usd": 0, "name": "InsurePal token", @@ -5228,14 +6320,16 @@ "shortcut": "IPL", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:IPSX": { "address": "0x001F0aA5dA15585e5b2305DbaB2bac425ea71007", "links": { - "Homepage": "https://ip.sx", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://ip.sx" }, "marketcap_usd": 0, "name": "IPSX", @@ -5243,15 +6337,17 @@ "shortcut": "IPSX", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ITC": { "address": "0x5E6b6d9aBAd9093fdc861Ea1600eBa1b355Cd940", "links": { "Github": "https://github.com/IoTChainCode", - "Homepage": "https://iotchain.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://iotchain.io/" }, "marketcap_usd": 0, "name": "IoT Chain", @@ -5259,15 +6355,17 @@ "shortcut": "ITC", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ITT": { "address": "0x0aeF06DcCCC531e581f0440059E6FfCC206039EE", "links": { "Github": "https://github.com/IntelligentTrading", - "Homepage": "http://intelligenttrading.org", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://intelligenttrading.org" }, "marketcap_usd": 0, "name": "ITT Token", @@ -5275,14 +6373,16 @@ "shortcut": "ITT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:IXT": { "address": "0xfcA47962D45ADFdfd1Ab2D972315dB4ce7CCf094", "links": { - "Homepage": "https://www.insurex.co", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.insurex.co" }, "marketcap_usd": 0, "name": "InsureX", @@ -5290,14 +6390,16 @@ "shortcut": "IXT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:IoT": { "address": "0xC34B21f6F8e51cC965c2393B3ccFa3b82BEb2403", "links": { - "Homepage": "http://www.bitcoin-biz.net", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://www.bitcoin-biz.net" }, "marketcap_usd": 0, "name": "IoT\u30b3\u30a4\u30f3", @@ -5305,15 +6407,17 @@ "shortcut": "IoT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:J8T": { "address": "0x0D262e5dC4A06a0F1c90cE79C7a60C09DfC884E4", "links": { "Github": "https://github.com/jet8", - "Homepage": "https://jet8.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://jet8.io" }, "marketcap_usd": 0, "name": "J8T Token", @@ -5321,14 +6425,16 @@ "shortcut": "J8T", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:JBX": { - "address": "0x0Aaf561eFF5BD9c8F911616933F84166A17cfE0C", + "address": "0x884e3902C4d5cFA86de4aCE7A96AA91EbC25C0Ff", "links": { - "Homepage": "https://www.jboxcoin.org", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.jboxcoin.org" }, "marketcap_usd": 0, "name": "JBX", @@ -5336,14 +6442,16 @@ "shortcut": "JBX", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:JET": { "address": "0x8727c112C712c4a03371AC87a74dD6aB104Af768", "links": { - "Homepage": "https://jetcoin.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://jetcoin.io/" }, "marketcap_usd": 0, "name": "JET", @@ -5351,15 +6459,17 @@ "shortcut": "JET", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:JNT": { "address": "0xa5Fd1A791C4dfcaacC963D4F73c6Ae5824149eA7", "links": { "Github": "https://github.com/jibrelnetwork", - "Homepage": "https://jibrel.network", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://jibrel.network" }, "marketcap_usd": 0, "name": "JNT", @@ -5367,14 +6477,16 @@ "shortcut": "JNT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:JOY": { "address": "0xDDe12a12A6f67156e0DA672be05c374e1B0a3e57", "links": { - "Homepage": "https://joyso.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://joyso.io/" }, "marketcap_usd": 0, "name": "JOYSO", @@ -5382,14 +6494,16 @@ "shortcut": "JOY", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:JetCoins": { "address": "0x773450335eD4ec3DB45aF74f34F2c85348645D39", "links": { - "Homepage": "http://www.jetcoins.trade/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://www.jetcoins.trade/" }, "marketcap_usd": 0, "name": "JetCoins", @@ -5397,14 +6511,16 @@ "shortcut": "JetCoins", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:KC": { "address": "0x0D6DD9f68d24EC1d5fE2174f3EC8DAB52B52BaF5", "links": { - "Homepage": "https://www.kmcc.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.kmcc.io" }, "marketcap_usd": 0, "name": "KMCC", @@ -5412,30 +6528,33 @@ "shortcut": "KC", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:KEE": { "address": "0x72D32ac1c5E66BfC5b08806271f8eEF915545164", "hidden": 1, - "links": { - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - }, + "links": {}, "marketcap_usd": 0, "name": "CryptoKEE", "network": "eth", "shortcut": "KEE", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:KEY": { "address": "0x4CC19356f2D37338b9802aa8E8fc58B0373296E7", "links": { "Github": "https://github.com/bihu-id", - "Homepage": "https://selfkey.org", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://selfkey.org" }, "marketcap_usd": 0, "name": "SelfKey", @@ -5443,15 +6562,17 @@ "shortcut": "KEY", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:KICK": { "address": "0x27695E09149AdC738A978e9A678F99E4c39e9eb9", "links": { "Github": "https://github.com/kickico", - "Homepage": "https://www.kickico.com/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.kickico.com/" }, "marketcap_usd": 0, "name": "KICK", @@ -5459,31 +6580,35 @@ "shortcut": "KICK", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:KIN": { "address": "0x818Fc6C2Ec5986bc6E2CBf00939d90556aB12ce5", "links": { "Github": "https://github.com/kikinteractive/kin-token", - "Homepage": "https://kin.kik.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://kin.kik.com" }, - "marketcap_usd": 111054098, + "marketcap_usd": 107334098, "name": "Kin Foundation", "network": "eth", "shortcut": "KIN", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:KNC": { "address": "0xdd974D5C2e2928deA5F71b9825b8b646686BD200", "links": { "Github": "https://github.com/KyberNetwork", - "Homepage": "https://kyber.network", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://kyber.network" }, "marketcap_usd": 0, "name": "Kyber Network", @@ -5491,15 +6616,17 @@ "shortcut": "KNC", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:KPR": { "address": "0xb5C33F965C8899D255c34CDD2A3efA8AbCbB3DeA", "links": { "Github": "https://github.com/KPRToken/KPR-code-for-ICO", - "Homepage": "https://www.kprms.com/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.kprms.com/" }, "marketcap_usd": 0, "name": "KPRCoin", @@ -5507,15 +6634,17 @@ "shortcut": "KPR", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:KRL": { "address": "0x464eBE77c293E473B48cFe96dDCf88fcF7bFDAC0", "links": { "Github": "https://github.com/Cryptense/", - "Homepage": "https://kryll.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://kryll.io/" }, "marketcap_usd": 0, "name": "Kryll", @@ -5523,14 +6652,16 @@ "shortcut": "KRL", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:KZN": { "address": "0x9541FD8B9b5FA97381783783CeBF2F5fA793C262", "links": { - "Homepage": "http://kaizencoin.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://kaizencoin.io" }, "marketcap_usd": 0, "name": "KaizenCoin", @@ -5538,15 +6669,17 @@ "shortcut": "KZN", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:LA": { "address": "0xE50365f5D679CB98a1dd62D6F6e58e59321BcdDf", "links": { "Github": "https://github.com/latoken", - "Homepage": "https://latoken.com/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://latoken.com/" }, "marketcap_usd": 0, "name": "LATOKEN", @@ -5554,14 +6687,16 @@ "shortcut": "LA", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:LALA": { "address": "0xfD107B473AB90e8Fbd89872144a3DC92C40Fa8C9", "links": { - "Homepage": "https://lalaworld.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://lalaworld.io/" }, "marketcap_usd": 0, "name": "LALA World Token", @@ -5569,14 +6704,16 @@ "shortcut": "LALA", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:LDC": { "address": "0x5102791cA02FC3595398400BFE0e33d7B6C82267", "links": { - "Homepage": "https://www.leadcoin.network/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.leadcoin.network/" }, "marketcap_usd": 0, "name": "LEADCOIN", @@ -5584,14 +6721,17 @@ "shortcut": "LDC", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:LEMO": { "address": "0xd6e354F07319e2474491D8c7c712137bEe6862a2", "links": { - "Homepage": "http://www.lemochain.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Github": "https://github.com/LemoFoundationLtd", + "Homepage": "http://www.lemochain.com" }, "marketcap_usd": 0, "name": "Lemo", @@ -5599,14 +6739,31 @@ "shortcut": "LEMO", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:LEND": { + "address": "0x80fB784B7eD66730e8b1DBd9820aFD29931aab03", + "hidden": 1, + "links": {}, + "name": "EHTLend", + "network": "eth", + "shortcut": "LEND", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:LFR": { "address": "0xc798cd1c49db0E297312E4c682752668CE1dB2AD", "links": { - "Homepage": "https://www.liferun.cc", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.liferun.cc" }, "marketcap_usd": 0, "name": "LifeRun Coin", @@ -5614,14 +6771,16 @@ "shortcut": "LFR", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:LGO": { "address": "0x123aB195DD38B1b40510d467a6a359b201af056f", "links": { - "Homepage": "https://legolas.exchange/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://legolas.exchange/" }, "marketcap_usd": 0, "name": "LGO", @@ -5629,14 +6788,16 @@ "shortcut": "LGO", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:LGR": { "address": "0x2eb86e8fC520E0F6Bb5D9Af08F924fe70558Ab89", "links": { - "Homepage": "https://getlogarithm.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://getlogarithm.com" }, "marketcap_usd": 0, "name": "Logarithm", @@ -5644,15 +6805,17 @@ "shortcut": "LGR", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:LIF": { "address": "0xEB9951021698B42e4399f9cBb6267Aa35F82D59D", "links": { "Github": "https://github.com/windingtree", - "Homepage": "https://windingtree.com/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://windingtree.com/" }, "marketcap_usd": 0, "name": "LIF", @@ -5660,29 +6823,33 @@ "shortcut": "LIF", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:LIFE": { "address": "0xfF18DBc487b4c2E3222d115952bABfDa8BA52F5F", "links": { - "Homepage": "http://www.lifelabs.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://www.lifelabs.io" }, - "marketcap_usd": 16158793, + "marketcap_usd": 11733490, "name": "LIFE", "network": "eth", "shortcut": "LIFE", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:LINK (Chainlink)": { "address": "0x514910771AF9Ca656af840dff83E8264EcF986CA", "links": { - "Homepage": "https://link.smartcontract.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://link.smartcontract.com" }, "marketcap_usd": 0, "name": "LINK Chainlink", @@ -5690,15 +6857,17 @@ "shortcut": "LINK (Chainlink)", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:LINK Platform": { "address": "0xE2E6D4BE086c6938B53B22144855eef674281639", "links": { "Github": "https://github.com/ethlink", - "Homepage": "https://ethereum.link", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://ethereum.link" }, "marketcap_usd": 0, "name": "Link Platform", @@ -5706,14 +6875,16 @@ "shortcut": "LINK Platform", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:LIVE": { "address": "0x24A77c1F17C547105E14813e517be06b0040aa76", "links": { - "Homepage": "https://livestars.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://livestars.io" }, "marketcap_usd": 0, "name": "LIVE Token", @@ -5721,15 +6892,17 @@ "shortcut": "LIVE", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:LNC": { "address": "0x63e634330A20150DbB61B15648bC73855d6CCF07", "links": { "Github": "https://github.com/Blocklancer/Blocklancer-Contracts", - "Homepage": "https://blocklancer.net", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://blocklancer.net" }, "marketcap_usd": 0, "name": "Lancer Token", @@ -5737,15 +6910,17 @@ "shortcut": "LNC", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:LNC-Linker Coin": { "address": "0x6BEB418Fc6E1958204aC8baddCf109B8E9694966", "links": { "Github": "https://github.com/linkercoinfoundation", - "Homepage": "https://www.linkercoin.com/en", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.linkercoin.com/en" }, "marketcap_usd": 0, "name": "Linker Coin", @@ -5753,15 +6928,17 @@ "shortcut": "LNC-Linker Coin", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:LND": { "address": "0x0947b0e6D821378805c9598291385CE7c791A6B2", "links": { "Github": "https://github.com/lendingblock", - "Homepage": "https://lendingblock.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://lendingblock.com" }, "marketcap_usd": 0, "name": "Lendingblock", @@ -5769,14 +6946,16 @@ "shortcut": "LND", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:LOC": { "address": "0x5e3346444010135322268a4630d2ED5F8D09446c", "links": { - "Homepage": "https://LockChain.co", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://LockChain.co" }, "marketcap_usd": 0, "name": "LockChain", @@ -5784,15 +6963,17 @@ "shortcut": "LOC", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:LOCI": { "address": "0x9c23D67AEA7B95D80942e3836BCDF7E708A747C2", "links": { "Github": "http://github.com/locipro/loci-coin-sale", - "Homepage": "https://locipro.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://locipro.com" }, "marketcap_usd": 0, "name": "LOCIcoin", @@ -5800,14 +6981,16 @@ "shortcut": "LOCI", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:LOCUS": { "address": "0xC64500DD7B0f1794807e67802F8Abbf5F8Ffb054", "links": { - "Homepage": "https://www.locuschain.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.locuschain.com" }, "marketcap_usd": 0, "name": "Locus Chain", @@ -5815,14 +6998,16 @@ "shortcut": "LOCUS", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:LOK": { "address": "0x21aE23B882A340A22282162086bC98D3E2B73018", "links": { - "Homepage": "https://lookrev.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://lookrev.com" }, "marketcap_usd": 0, "name": "LOK", @@ -5830,15 +7015,17 @@ "shortcut": "LOK", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:LOOM": { "address": "0xA4e8C3Ec456107eA67d3075bF9e3DF3A75823DB0", "links": { "Github": "github.com/loomnetwork/", - "Homepage": "https://loomx.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://loomx.io" }, "marketcap_usd": 0, "name": "LOOM", @@ -5846,15 +7033,17 @@ "shortcut": "LOOM", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:LPT": { "address": "0x58b6A8A3302369DAEc383334672404Ee733aB239", "links": { "Github": "https://github.com/livepeer", - "Homepage": "https://livepeer.org/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://livepeer.org/" }, "marketcap_usd": 0, "name": "Livepeer Token", @@ -5862,14 +7051,16 @@ "shortcut": "LPT", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:LRC": { "address": "0xEF68e7C694F40c8202821eDF525dE3782458639f", "links": { - "Homepage": "https://loopring.org", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://loopring.org" }, "marketcap_usd": 0, "name": "LRC", @@ -5877,15 +7068,17 @@ "shortcut": "LRC", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:LUC": { "address": "0x5dbe296F97B23C4A6AA6183D73e574D02bA5c719", "links": { "Github": "https://github.com/Play2Live/blockchain", - "Homepage": "https://play2live.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://play2live.io" }, "marketcap_usd": 0, "name": "LUCToken", @@ -5893,14 +7086,16 @@ "shortcut": "LUC", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:LUCK": { "address": "0xFB12e3CcA983B9f59D90912Fd17F8D745A8B2953", "links": { - "Homepage": "http://www.luckytoken.info", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://www.luckytoken.info" }, "marketcap_usd": 0, "name": "LUCK", @@ -5908,14 +7103,16 @@ "shortcut": "LUCK", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:LUM": { "address": "0xA89b5934863447f6E4Fc53B315a93e873bdA69a3", "links": { - "Homepage": "https://www.luminocoin.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.luminocoin.com" }, "marketcap_usd": 0, "name": "Lumino Coin", @@ -5923,15 +7120,17 @@ "shortcut": "LUM", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:LUN": { "address": "0xfa05A73FfE78ef8f1a739473e462c54bae6567D9", "links": { "Github": "https://github.com/lunyr", - "Homepage": "https://lunyr.com/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://lunyr.com/" }, "marketcap_usd": 0, "name": "LUN", @@ -5939,15 +7138,17 @@ "shortcut": "LUN", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:LYS": { "address": "0xdD41fBd1Ae95C5D9B198174A28e04Be6b3d1aa27", "links": { "Github": "https://github.com/LIGHTYEARS-LYS/LIGHTYEARS-Token", - "Homepage": "https://lightyearstoken.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://lightyearstoken.com" }, "marketcap_usd": 0, "name": "Lightyears", @@ -5955,14 +7156,16 @@ "shortcut": "LYS", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:M-ETH": { "address": "0x3f4B726668da46f5e0E75aA5D478ACEc9f38210F", "links": { - "Homepage": "http://www.mostexclusive.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://www.mostexclusive.com" }, "marketcap_usd": 0, "name": "M-ETH", @@ -5970,14 +7173,16 @@ "shortcut": "M-ETH", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:MAD": { "address": "0x5B09A0371C1DA44A8E24D36Bf5DEb1141a84d875", "links": { - "Homepage": "https://madnetwork.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://madnetwork.io/" }, "marketcap_usd": 0, "name": "MAD", @@ -5985,15 +7190,17 @@ "shortcut": "MAD", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:MAN": { "address": "0xe25bCec5D3801cE3a794079BF94adF1B8cCD802D", "links": { "Github": "https://github.com/MatrixAINetwork", - "Homepage": "https://www.matrix.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.matrix.io/" }, "marketcap_usd": 0, "name": "MAN", @@ -6001,15 +7208,17 @@ "shortcut": "MAN", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:MANA": { "address": "0x0F5D2fB29fb7d3CFeE444a200298f468908cC942", "links": { "Github": "https://github.com/decentraland", - "Homepage": "https://decentraland.org", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://decentraland.org" }, "marketcap_usd": 0, "name": "Decentraland MANA", @@ -6017,14 +7226,16 @@ "shortcut": "MANA", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:MART": { "address": "0xfdcc07Ab60660de533b5Ad26e1457b565a9D59Bd", "links": { - "Homepage": "https://martcoin.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://martcoin.io" }, "marketcap_usd": 0, "name": "Martcoin", @@ -6032,15 +7243,17 @@ "shortcut": "MART", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:MBRS": { "address": "0x386467F1f3ddbE832448650418311a479EECFC57", "links": { "Github": "https://github.com/theembermine", - "Homepage": "https://embermine.com/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://embermine.com/" }, "marketcap_usd": 0, "name": "Embers", @@ -6048,30 +7261,34 @@ "shortcut": "MBRS", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:MCAP": { "address": "0x93E682107d1E9defB0b5ee701C71707a4B2E46Bc", "links": { - "Homepage": "https://www.mcaplabs.com/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.mcaplabs.com/" }, - "marketcap_usd": 514674, + "marketcap_usd": 526213, "name": "MCAP", "network": "eth", "shortcut": "MCAP", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:MCI": { "address": "0x138A8752093F4f9a79AaeDF48d4B9248fab93c9C", "links": { "Github": "https://github.com/musiconomi/", - "Homepage": "https://musiconomi.com/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://musiconomi.com/" }, "marketcap_usd": 0, "name": "Musiconomi", @@ -6079,14 +7296,16 @@ "shortcut": "MCI", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:MCO": { "address": "0xB63B606Ac810a52cCa15e44bB630fd42D8d1d83d", "links": { - "Homepage": "https://mona.co/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://mona.co/" }, "marketcap_usd": 0, "name": "MCO", @@ -6094,14 +7313,16 @@ "shortcut": "MCO", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:MDA": { "address": "0x51DB5Ad35C671a87207d88fC11d593AC0C8415bd", "links": { - "Homepage": "https://moeda.in", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://moeda.in" }, "marketcap_usd": 0, "name": "MDA", @@ -6109,15 +7330,17 @@ "shortcut": "MDA", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:MESH": { "address": "0x01F2AcF2914860331C1Cb1a9AcecDa7475e06Af8", "links": { "Github": "https://github.com/MeshBox", - "Homepage": "https://meshbox.network", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://meshbox.network" }, "marketcap_usd": 0, "name": "Meshbox", @@ -6125,15 +7348,17 @@ "shortcut": "MESH", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:MEST": { "address": "0x5B8D43FfdE4a2982B9A5387cDF21D54Ead64Ac8d", "links": { "Github": "https://github.com/monacoestate", - "Homepage": "https://monacoestate.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://monacoestate.io/" }, "marketcap_usd": 0, "name": "Monaco Estate", @@ -6141,15 +7366,17 @@ "shortcut": "MEST", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:MFG": { "address": "0x6710c63432A2De02954fc0f851db07146a6c0312", "links": { "Github": "https://github.com/syncfab", - "Homepage": "https://syncfab.com/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://syncfab.com/" }, "marketcap_usd": 0, "name": "SyncFab Smart Manufacturing Blockchain", @@ -6157,14 +7384,16 @@ "shortcut": "MFG", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:MGO": { "address": "0x40395044Ac3c0C57051906dA938B54BD6557F212", "links": { - "Homepage": "https://gamecredits.com/mobilego/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://gamecredits.com/mobilego/" }, "marketcap_usd": 0, "name": "MGO", @@ -6172,29 +7401,32 @@ "shortcut": "MGO", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:MIT": { "address": "0xe23cd160761f63FC3a1cF78Aa034b6cdF97d3E0C", "hidden": 1, - "links": { - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - }, + "links": {}, "marketcap_usd": 0, "name": "MIT", "network": "eth", "shortcut": "MIT", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:MIT (Mychatcoin)": { "address": "0xAd8DD4c725dE1D31b9E8F8D146089e9DC6882093", "links": { - "Homepage": "https://mychatcoin.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://mychatcoin.com" }, "marketcap_usd": 0, "name": "Mychatcoin", @@ -6202,15 +7434,17 @@ "shortcut": "MIT (Mychatcoin)", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:MKR": { "address": "0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2", "links": { "Github": "https://github.com/makerdao", - "Homepage": "https://makerdao.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://makerdao.com" }, "marketcap_usd": 0, "name": "MakerDAO", @@ -6218,14 +7452,33 @@ "shortcut": "MKR", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:MKT": { + "address": "0x7939882b54fcf0bCAe6b53dEc39Ad6e806176442", + "links": { + "Github": "https://github.com/mikadohq", + "Homepage": "https://mikado.io" + }, + "name": "Mikado", + "network": "eth", + "shortcut": "MKT", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:MLN": { "address": "0xBEB9eF514a379B997e0798FDcC901Ee474B6D9A1", "links": { - "Homepage": "https://melonport.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://melonport.com" }, "marketcap_usd": 0, "name": "Melonport", @@ -6233,14 +7486,16 @@ "shortcut": "MLN", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:MNE": { "address": "0x1a95B271B0535D15fa49932Daba31BA612b52946", "links": { - "Homepage": "https://minereum.com/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://minereum.com/" }, "marketcap_usd": 0, "name": "MNE", @@ -6248,15 +7503,17 @@ "shortcut": "MNE", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:MNT": { "address": "0xA9877b1e05D035899131DBd1e403825166D09f92", "links": { "Github": "https://github.com/coinjoker/cjtoken", - "Homepage": "https://coinjoker.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://coinjoker.com" }, "marketcap_usd": 0, "name": "Media Network Token", @@ -6264,15 +7521,17 @@ "shortcut": "MNT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:MNTP": { "address": "0x83cee9e086A77e492eE0bB93C2B0437aD6fdECCc", "links": { "Github": "https://github.com/Goldmint", - "Homepage": "https://goldmint.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://goldmint.io" }, "marketcap_usd": 0, "name": "Goldmint MNT Prelaunch Token", @@ -6280,15 +7539,17 @@ "shortcut": "MNTP", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:MOD": { "address": "0x957c30aB0426e0C93CD8241E2c60392d08c6aC8e", "links": { "Github": "https://github.com/modum-io", - "Homepage": "https://modum.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://modum.io" }, "marketcap_usd": 0, "name": "Modum", @@ -6296,15 +7557,17 @@ "shortcut": "MOD", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:MRL": { "address": "0x82125AFe01819Dff1535D0D6276d57045291B6c0", "links": { "Github": "https://github.com/MarceloMRL", - "Homepage": "https://moneyrebel.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://moneyrebel.io/" }, "marketcap_usd": 0, "name": "Marcelo", @@ -6312,14 +7575,16 @@ "shortcut": "MRL", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:MRP": { "address": "0x21f0F0fD3141Ee9E11B3d7f13a1028CD515f459c", "links": { - "Homepage": "https://moneyrebel.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://moneyrebel.io/" }, "marketcap_usd": 0, "name": "MoneyRebel Token", @@ -6327,14 +7592,16 @@ "shortcut": "MRP", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:MRV": { "address": "0xAB6CF87a50F17d7F5E1FEaf81B6fE9FfBe8EBF84", "links": { - "Homepage": "https://macroverse.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://macroverse.io" }, "marketcap_usd": 0, "name": "MRV", @@ -6342,14 +7609,16 @@ "shortcut": "MRV", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:MSP": { "address": "0x68AA3F232dA9bdC2343465545794ef3eEa5209BD", "links": { - "Homepage": "https://mothership.cx", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://mothership.cx" }, "marketcap_usd": 0, "name": "Mothership", @@ -6357,29 +7626,50 @@ "shortcut": "MSP", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, - "erc20:eth:MTH": { - "address": "0xaF4DcE16Da2877f8c9e00544c93B62Ac40631F16", + "erc20:eth:MTC": { + "address": "0x905E337c6c8645263D3521205Aa37bf4d034e745", "links": { - "Homepage": "http://www.monetha.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Github": "https://github.com/Docademic", + "Homepage": "https://ico.docademic.com/" }, - "marketcap_usd": 0, + "name": "Medical Token Currency", + "network": "eth", + "shortcut": "MTC", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:MTH": { + "address": "0xaF4DcE16Da2877f8c9e00544c93B62Ac40631F16", + "links": { + "Homepage": "http://www.monetha.io" + }, + "marketcap_usd": 0, "name": "Monetha", "network": "eth", "shortcut": "MTH", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:MTL": { "address": "0xF433089366899D83a9f26A773D59ec7eCF30355e", "links": { - "Homepage": "https://www.metalpay.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.metalpay.com" }, "marketcap_usd": 0, "name": "MetalPay", @@ -6387,14 +7677,16 @@ "shortcut": "MTL", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:MTN": { "address": "0x41dBECc1cdC5517C6f76f6a6E836aDbEe2754DE3", "links": { - "Homepage": "https://medicalchain.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://medicalchain.com" }, "marketcap_usd": 0, "name": "MedToken", @@ -6402,14 +7694,16 @@ "shortcut": "MTN", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:MTR": { "address": "0x7FC408011165760eE31bE2BF20dAf450356692Af", "links": { - "Homepage": "https://mitrav.co", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://mitrav.co" }, "marketcap_usd": 0, "name": "Mitrav", @@ -6417,14 +7711,16 @@ "shortcut": "MTR", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:MTRc": { "address": "0x1e49fF77c355A3e38D6651ce8404AF0E48c5395f", "links": { - "Homepage": "https://modultrade.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://modultrade.io" }, "marketcap_usd": 0, "name": "MTRCToken", @@ -6432,14 +7728,16 @@ "shortcut": "MTRc", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:MTX": { "address": "0x0AF44e2784637218dD1D32A322D44e603A8f0c6A", "links": { - "Homepage": "https://www.matryx.ai", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.matryx.ai" }, "marketcap_usd": 0, "name": "MTX", @@ -6447,14 +7745,16 @@ "shortcut": "MTX", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:MUXE": { "address": "0x515669d308f887Fd83a471C7764F5d084886D34D", "links": { - "Homepage": "https://www.muxe.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.muxe.io" }, "marketcap_usd": 0, "name": "MUXE", @@ -6462,15 +7762,17 @@ "shortcut": "MUXE", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:MVP": { "address": "0x8a77e40936BbC27e80E9a3F526368C967869c86D", "links": { "Github": "https://github.com/Merculet", - "Homepage": "https://www.merculet.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.merculet.io" }, "marketcap_usd": 0, "name": "Merculet", @@ -6478,14 +7780,16 @@ "shortcut": "MVP", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:MWAT": { "address": "0x6425c6BE902d692AE2db752B3c268AFAdb099D3b", "links": { - "Homepage": "https://www.restartenergy.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.restartenergy.io" }, "marketcap_usd": 0, "name": "RED MWAT", @@ -6493,29 +7797,32 @@ "shortcut": "MWAT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:MYD": { "address": "0xf7e983781609012307f2514f63D526D83D24F466", "hidden": 1, - "links": { - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - }, + "links": {}, "marketcap_usd": 0, "name": "MYD", "network": "eth", "shortcut": "MYD", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:MYST": { "address": "0xa645264C5603E96c3b0B078cdab68733794B0A71", "links": { - "Homepage": "https://mysterium.network", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://mysterium.network" }, "marketcap_usd": 0, "name": "Mysterium", @@ -6523,14 +7830,16 @@ "shortcut": "MYST", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:NAC": { "address": "0x8d80de8A78198396329dfA769aD54d24bF90E7aa", "links": { - "Homepage": "https://nami.trade", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://nami.trade" }, "marketcap_usd": 0, "name": "Nami ICO", @@ -6538,15 +7847,34 @@ "shortcut": "NAC", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:NANJ": { + "address": "0xFFE02ee4C69eDf1b340fCaD64fbd6b37a7b9e265", + "links": { + "Github": "https://github.com/NANJ-COIN", + "Homepage": "https://nanjcoin.com/" + }, + "name": "NANJCOIN", + "network": "eth", + "shortcut": "NANJ", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:NAVI": { "address": "0x588047365dF5BA589F923604AAC23d673555c623", "links": { "Github": "https://github.com/naviworld", - "Homepage": "https://naviaddress.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://naviaddress.com" }, "marketcap_usd": 0, "name": "NaviToken", @@ -6554,15 +7882,17 @@ "shortcut": "NAVI", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:NBAI": { "address": "0x17f8aFB63DfcDcC90ebE6e84F060Cc306A98257D", "links": { "Github": "https://github.com/nebulaai", - "Homepage": "https://tokensale.nebula-ai.network", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://tokensale.nebula-ai.network" }, "marketcap_usd": 0, "name": "NebulaAiToken", @@ -6570,15 +7900,17 @@ "shortcut": "NBAI", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:NCT": { "address": "0x9E46A38F5DaaBe8683E10793b06749EEF7D733d1", "links": { "Github": "https://github.com/polyswarm", - "Homepage": "https://polyswarm.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://polyswarm.io" }, "marketcap_usd": 0, "name": "Nectar", @@ -6586,14 +7918,16 @@ "shortcut": "NCT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:NDC": { "address": "0xA54ddC7B3CcE7FC8b1E3Fa0256D0DB80D2c10970", "links": { - "Homepage": "https://neverdie.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://neverdie.com" }, "marketcap_usd": 0, "name": "Neverdie", @@ -6601,15 +7935,17 @@ "shortcut": "NDC", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:NEC": { "address": "0xCc80C051057B774cD75067Dc48f8987C4Eb97A5e", "links": { "Github": "https://github.com/ethfinex/", - "Homepage": "https://nectar.community", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://nectar.community" }, "marketcap_usd": 0, "name": "Ethfinex Nectar Token", @@ -6617,14 +7953,16 @@ "shortcut": "NEC", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:NET": { "address": "0xcfb98637bcae43C13323EAa1731cED2B716962fD", "links": { - "Homepage": "https://nimiq.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://nimiq.com" }, "marketcap_usd": 0, "name": "NIMIQ", @@ -6632,15 +7970,17 @@ "shortcut": "NET", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:NEU": { "address": "0xA823E6722006afe99E91c30FF5295052fe6b8E32", "links": { "Github": "https://github.com/neufund", - "Homepage": "https://neufund.org/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://neufund.org/" }, "marketcap_usd": 0, "name": "NEU Fund", @@ -6648,14 +7988,16 @@ "shortcut": "NEU", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:NGC": { "address": "0x72dD4b6bd852A3AA172Be4d6C5a6dbEc588cf131", "links": { - "Homepage": "https://www.nagaico.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.nagaico.com" }, "marketcap_usd": 0, "name": "NAGA Coin", @@ -6663,15 +8005,17 @@ "shortcut": "NGC", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:NIMFA": { "address": "0xe26517A9967299453d3F1B48Aa005E6127e67210", "links": { "Github": "https://github.com/nimfamoney", - "Homepage": "https://nimfamoney.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://nimfamoney.io" }, "marketcap_usd": 0, "name": "Ninfa Money", @@ -6679,15 +8023,17 @@ "shortcut": "NIMFA", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:NMR": { "address": "0x1776e1F26f98b1A5dF9cD347953a26dd3Cb46671", "links": { "Github": "https://github.com/numerai", - "Homepage": "https://numer.ai/homepage", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://numer.ai/homepage" }, "marketcap_usd": 0, "name": "NMR", @@ -6695,15 +8041,32 @@ "shortcut": "NMR", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:NONE": { + "address": "0x643B6870beabee941B9260a0A878bcF4A61Fb0f1", + "hidden": 1, + "links": {}, + "name": "None", + "network": "eth", + "shortcut": "NONE", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:NOX": { "address": "0xeC46f8207D766012454c408De210BCBc2243E71c", "links": { "Github": "https://github.com/nitrotoken/nitro-crowdsale", - "Homepage": "https://nitro.live", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://nitro.live" }, "marketcap_usd": 0, "name": "NOX", @@ -6711,31 +8074,35 @@ "shortcut": "NOX", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:NPER": { "address": "0x4cE6B362Bc77A24966Dda9078f9cEF81b3B886a7", "links": { "Github": "https://github.com/NperProject", - "Homepage": "https://nper.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://nper.io" }, - "marketcap_usd": 3777358, + "marketcap_usd": 3656883, "name": "NPER", "network": "eth", "shortcut": "NPER", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:NPXS": { "address": "0xA15C7Ebe1f07CaF6bFF097D8a589fb8AC49Ae5B3", "links": { "Github": "https://github.com/pundix", - "Homepage": "https://pundix.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://pundix.com" }, "marketcap_usd": 0, "name": "Pundi X Token", @@ -6743,29 +8110,33 @@ "shortcut": "NPXS", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:NULS": { "address": "0xB91318F35Bdb262E9423Bc7c7c2A3A93DD93C92C", "links": { - "Homepage": "https://nuls.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://nuls.io" }, - "marketcap_usd": 106352000, + "marketcap_usd": 90720400, "name": "NULS", "network": "eth", "shortcut": "NULS", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:NXX": { "address": "0x7627de4B93263a6a7570b8dAfa64bae812e5c394", "links": { - "Homepage": "https://www.nexxuscoin.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.nexxuscoin.com" }, "marketcap_usd": 0, "name": "NXX", @@ -6773,14 +8144,16 @@ "shortcut": "NXX", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:NXX OLD": { "address": "0x5c6183d10A00CD747a6Dbb5F658aD514383e9419", "links": { - "Homepage": "https://www.nexxuscoin.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.nexxuscoin.com" }, "marketcap_usd": 0, "name": "NXX OLD", @@ -6788,14 +8161,16 @@ "shortcut": "NXX OLD", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:NxC": { "address": "0x45e42D659D9f9466cD5DF622506033145a9b89Bc", "links": { - "Homepage": "https://beyond-the-void.net", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://beyond-the-void.net" }, "marketcap_usd": 0, "name": "Nexium", @@ -6803,30 +8178,50 @@ "shortcut": "NxC", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:OAK": { + "address": "0x5e888B83B7287EED4fB7DA7b7d0A0D4c735d94b3", + "links": { + "Homepage": "https://aco.ai" + }, + "name": "OAK", + "network": "eth", + "shortcut": "OAK", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:OAX": { "address": "0x701C244b988a513c945973dEFA05de933b23Fe1D", "links": { - "Homepage": "https://www.openanx.org/en", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.openanx.org/en" }, - "marketcap_usd": 9466926, + "marketcap_usd": 9056850, "name": "OAX", "network": "eth", "shortcut": "OAX", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:OCC": { "address": "0x0235fE624e044A05eeD7A43E16E3083bc8A4287A", "links": { "Github": "https://github.com/OriginalCrypto/", - "Homepage": "https://www.OriginalCryptoCoin.com/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.OriginalCryptoCoin.com/" }, "marketcap_usd": 0, "name": "Original Crypto Coin", @@ -6834,15 +8229,17 @@ "shortcut": "OCC", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:OHNI": { "address": "0x7F2176cEB16dcb648dc924eff617c3dC2BEfd30d", "links": { "Github": "ohnicoin", - "Homepage": "http://ohni.us", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://ohni.us" }, "marketcap_usd": 0, "name": "Ohni", @@ -6850,15 +8247,34 @@ "shortcut": "OHNI", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:OJX": { + "address": "0xBeef546ac8a4e0a80DC1E2d696968Ef54138f1d4", + "links": { + "Github": "https://github.com/OjoooInc", + "Homepage": "https://ico.ojooo.com/" + }, + "name": "Ojooo Coin", + "network": "eth", + "shortcut": "OJX", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:OLD_MKR": { "address": "0xC66eA802717bFb9833400264Dd12c2bCeAa34a6d", "links": { "Github": "https://github.com/makerdao", - "Homepage": "https://makerdao.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://makerdao.com" }, "marketcap_usd": 0, "name": "MakerDAO", @@ -6866,15 +8282,17 @@ "shortcut": "OLD_MKR", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:OMG": { "address": "0xd26114cd6EE289AccF82350c8d8487fedB8A0C07", "links": { "Github": "https://github.com/omisego", - "Homepage": "https://omisego.network/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://omisego.network/" }, "marketcap_usd": 0, "name": "OMG", @@ -6882,14 +8300,16 @@ "shortcut": "OMG", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ONEK": { "address": "0xB23be73573bC7E03DB6e5dfc62405368716d28a8", "links": { - "Homepage": "http://onek.one", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://onek.one" }, "marketcap_usd": 0, "name": "One K Token", @@ -6897,15 +8317,17 @@ "shortcut": "ONEK", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:OPEN": { "address": "0x69c4BB240cF05D51eeab6985Bab35527d04a8C64", "links": { "Github": "https://github.com/OpenMoneyDigital", - "Homepage": "https://openfuture.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://openfuture.io" }, "marketcap_usd": 0, "name": "OPEN", @@ -6913,14 +8335,16 @@ "shortcut": "OPEN", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:OPT": { "address": "0x4355fC160f74328f9b383dF2EC589bB3dFd82Ba0", "links": { - "Homepage": "https://opus-foundation.org", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://opus-foundation.org" }, "marketcap_usd": 0, "name": "Opus Foundation", @@ -6928,31 +8352,52 @@ "shortcut": "OPT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:ORBS": { + "address": "0xff56Cc6b1E6dEd347aA0B7676C85AB0B3D08B0FA", + "links": { + "Github": "https://github.com/orbs-network", + "Homepage": "https://orbs.com" + }, + "name": "Orbs", + "network": "eth", + "shortcut": "ORBS", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:OST": { "address": "0x2C4e8f2D746113d0696cE89B35F0d8bF88E0AEcA", "links": { "Github": "https://github.com/OpenSTFoundation", - "Homepage": "https://simpletoken.org", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://simpletoken.org" }, - "marketcap_usd": 29130493, + "marketcap_usd": 24065353, "name": "Simple Token 'OST'", "network": "eth", "shortcut": "OST", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:Ox Fina": { "address": "0x65A15014964F2102Ff58647e16a16a6B9E14bCF6", "links": { "Github": "https://github.com/oxfina", - "Homepage": "https://oxfina.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://oxfina.com" }, "marketcap_usd": 0, "name": "Ox Fina", @@ -6960,15 +8405,17 @@ "shortcut": "Ox Fina", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:PAL": { "address": "0xfeDAE5642668f8636A11987Ff386bfd215F942EE", "links": { "Github": "https://github.com/policypalnet", - "Homepage": "https://www.policypal.network", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.policypal.network" }, "marketcap_usd": 0, "name": "PolicyPal Network", @@ -6976,15 +8423,17 @@ "shortcut": "PAL", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:PARETO": { "address": "0xea5f88E54d982Cbb0c441cde4E79bC305e5b43Bc", "links": { "Github": "https://github.com/ParetoNetwork", - "Homepage": "https://pareto.network", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://pareto.network" }, "marketcap_usd": 0, "name": "PARETO", @@ -6992,14 +8441,33 @@ "shortcut": "PARETO", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:PAT": { + "address": "0xBB1fA4FdEB3459733bF67EbC6f893003fA976a82", + "links": { + "Github": "https://github.com/Bit-Nation/", + "Homepage": "https://bitnation.co" + }, + "name": "Pangea Arbitration Token", + "network": "eth", + "shortcut": "PAT", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:PATENTS": { "address": "0x694404595e3075A942397F466AAcD462FF1a7BD0", "links": { - "Homepage": "https://www.smartillions.ch", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.smartillions.ch" }, "marketcap_usd": 0, "name": "PATENTS", @@ -7007,15 +8475,17 @@ "shortcut": "PATENTS", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:PATH": { "address": "0xF813F3902bBc00A6DCe378634d3B79D84F9803d7", "links": { "Github": "https://github.com/path-network-token", - "Homepage": "https://path.network", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://path.network" }, "marketcap_usd": 0, "name": "PATH", @@ -7023,14 +8493,16 @@ "shortcut": "PATH", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:PAY": { "address": "0xB97048628DB6B661D4C2aA833e95Dbe1A905B280", "links": { - "Homepage": "http://www.tenx.tech/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://www.tenx.tech/" }, "marketcap_usd": 0, "name": "TenX", @@ -7038,14 +8510,16 @@ "shortcut": "PAY", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:PBL": { "address": "0x55648De19836338549130B1af587F16beA46F66B", "links": { - "Homepage": "https://publica.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://publica.io" }, "marketcap_usd": 0, "name": "PBL", @@ -7053,14 +8527,16 @@ "shortcut": "PBL", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:PBT": { "address": "0xF4c07b1865bC326A3c01339492Ca7538FD038Cc0", "links": { - "Homepage": "http://primalbase.com/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://primalbase.com/" }, "marketcap_usd": 0, "name": "Primalbase Token (PBT)", @@ -7068,14 +8544,16 @@ "shortcut": "PBT", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:PCH": { "address": "0xfcAC7A7515e9A9d7619fA77A1fa738111f66727e", "links": { - "Homepage": "https://www.pitchapply.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.pitchapply.com" }, "marketcap_usd": 0, "name": "PITCH", @@ -7083,15 +8561,17 @@ "shortcut": "PCH", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:PCL": { "address": "0x3618516F45CD3c913F81F9987AF41077932Bc40d", "links": { "Github": "https://github.com/PeculiumPCL/Peculium", - "Homepage": "https://peculium.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://peculium.io" }, "marketcap_usd": 0, "name": "Peculium", @@ -7099,15 +8579,17 @@ "shortcut": "PCL", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:PCLOLD": { "address": "0x53148Bb4551707edF51a1e8d7A93698d18931225", "links": { "Github": "https://github.com/PeculiumPCL/Peculium", - "Homepage": "https://peculium.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://peculium.io" }, "marketcap_usd": 0, "name": "PeculiumOLD", @@ -7115,15 +8597,17 @@ "shortcut": "PCLOLD", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:PET": { "address": "0x5884969Ec0480556E11d119980136a4C17eDDEd1", "links": { "Github": "https://github.com/Pethereum", - "Homepage": "https://pethereum.org/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://pethereum.org/" }, "marketcap_usd": 0, "name": "PETHEREUM", @@ -7131,15 +8615,17 @@ "shortcut": "PET", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:PETRO": { "address": "0xeC18f898B4076A3E18f1089D33376CC380BDe61D", "hidden": 1, "links": { - "Github": "https://github.com/getpetro", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Github": "https://github.com/getpetro" }, "marketcap_usd": 0, "name": "PETRO", @@ -7147,14 +8633,16 @@ "shortcut": "PETRO", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:PEXT": { "address": "0x55c2A0C171D920843560594dE3d6EEcC09eFc098", "links": { - "Homepage": "https://prime-ex.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://prime-ex.com" }, "marketcap_usd": 0, "name": "PEX-Token", @@ -7162,14 +8650,16 @@ "shortcut": "PEXT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:PIPL": { "address": "0xE64509F0bf07ce2d29A7eF19A8A9bc065477C1B4", "links": { - "Homepage": "https://piplcoin.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://piplcoin.com" }, "marketcap_usd": 0, "name": "PIPL Coin", @@ -7177,14 +8667,16 @@ "shortcut": "PIPL", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:PIX": { "address": "0x8eFFd494eB698cc399AF6231fCcd39E08fd20B15", "links": { - "Homepage": "http://www.lampix.co", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://www.lampix.co" }, "marketcap_usd": 0, "name": "PIX", @@ -7192,14 +8684,16 @@ "shortcut": "PIX", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:PLASMA": { "address": "0x59416A25628A76b4730eC51486114c32E0B582A1", "links": { - "Homepage": "https://plasma.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://plasma.io/" }, "marketcap_usd": 0, "name": "PLASMA", @@ -7207,14 +8701,16 @@ "shortcut": "PLASMA", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:PLAY": { "address": "0xE477292f1B3268687A29376116B0ED27A9c76170", "links": { - "Homepage": "http://www.herocoin.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://www.herocoin.io" }, "marketcap_usd": 0, "name": "HeroCoin", @@ -7222,14 +8718,16 @@ "shortcut": "PLAY", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:PLBT": { "address": "0x0AfFa06e7Fbe5bC9a764C979aA66E8256A631f02", "links": { - "Homepage": "https://polybius.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://polybius.io" }, "marketcap_usd": 0, "name": "Polybius", @@ -7237,15 +8735,17 @@ "shortcut": "PLBT", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:PLR": { "address": "0xe3818504c1B32bF1557b16C238B2E01Fd3149C17", "links": { "Github": "https://github.com/twentythirty/PillarToken", - "Homepage": "https://www.pillarproject.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.pillarproject.io" }, "marketcap_usd": 0, "name": "Pillar Project", @@ -7253,14 +8753,16 @@ "shortcut": "PLR", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:PLU": { "address": "0xD8912C10681D8B21Fd3742244f44658dBA12264E", "links": { - "Homepage": "https://plutus.it", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://plutus.it" }, "marketcap_usd": 0, "name": "Plutus", @@ -7268,14 +8770,16 @@ "shortcut": "PLU", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:POE": { "address": "0x0e0989b1f9B8A38983c2BA8053269Ca62Ec9B195", "links": { - "Homepage": "https://po.et", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://po.et" }, "marketcap_usd": 0, "name": "Po.et Tokens", @@ -7283,14 +8787,16 @@ "shortcut": "POE", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:POIN": { "address": "0x43F6a1BE992deE408721748490772B15143CE0a7", "links": { - "Homepage": "https://potatoin.foundation", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://potatoin.foundation" }, "marketcap_usd": 0, "name": "Potatoin", @@ -7298,14 +8804,16 @@ "shortcut": "POIN", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:POLY": { "address": "0x9992eC3cF6A55b00978cdDF2b27BC6882d88D1eC", "links": { - "Homepage": "https://polymath.network", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://polymath.network" }, "marketcap_usd": 0, "name": "Polymath Network", @@ -7313,14 +8821,16 @@ "shortcut": "POLY", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:POOL": { "address": "0x779B7b713C86e3E6774f5040D9cCC2D43ad375F8", "links": { - "Homepage": "http://stakepool.co", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://stakepool.co" }, "marketcap_usd": 0, "name": "Stake Pool", @@ -7328,15 +8838,17 @@ "shortcut": "POOL", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:POS": { "address": "0xEe609fE292128Cad03b786DBb9Bc2634Ccdbe7fC", "links": { "Github": "https://github.com/PoSToken", - "Homepage": "https://postoken.org", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://postoken.org" }, "marketcap_usd": 0, "name": "PoSToken", @@ -7344,14 +8856,16 @@ "shortcut": "POS", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:POWR": { "address": "0x595832F8FC6BF59c85C527fEC3740A1b7a361269", "links": { - "Homepage": "https://powerledger.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://powerledger.io" }, "marketcap_usd": 0, "name": "PowerLedger", @@ -7359,14 +8873,16 @@ "shortcut": "POWR", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:PPP": { "address": "0xc42209aCcC14029c1012fB5680D95fBd6036E2a0", "links": { - "Homepage": "https://www.paypie.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.paypie.com" }, "marketcap_usd": 0, "name": "PayPie", @@ -7374,14 +8890,16 @@ "shortcut": "PPP", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:PPT": { "address": "0xd4fa1460F537bb9085d22C7bcCB5DD450Ef28e3a", "links": { - "Homepage": "https://populous.co", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://populous.co" }, "marketcap_usd": 0, "name": "Populous", @@ -7389,14 +8907,16 @@ "shortcut": "PPT", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:PRE": { "address": "0x88A3E4F35D64aAD41A6d4030ac9AFE4356cB84fA", "links": { - "Homepage": "https://presearch.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://presearch.io" }, "marketcap_usd": 0, "name": "Presearch", @@ -7404,15 +8924,17 @@ "shortcut": "PRE", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:PRG": { "address": "0x7728dFEF5aBd468669EB7f9b48A7f70a501eD29D", "links": { "Github": "https://github.com/paragon-coin/token", - "Homepage": "https://paragoncoin.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://paragoncoin.com" }, "marketcap_usd": 0, "name": "PRG", @@ -7420,15 +8942,17 @@ "shortcut": "PRG", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:PRL": { "address": "0x1844b21593262668B7248d0f57a220CaaBA46ab9", "links": { "Github": "https://github.com/oysterprotocol", - "Homepage": "https://oyster.ws", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://oyster.ws" }, "marketcap_usd": 0, "name": "Oyster Pearl", @@ -7436,14 +8960,16 @@ "shortcut": "PRL", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:PRO": { "address": "0x226bb599a12C826476e3A771454697EA52E9E220", "links": { - "Homepage": "https://propy.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://propy.com" }, "marketcap_usd": 0, "name": "Propy", @@ -7451,14 +8977,16 @@ "shortcut": "PRO", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:PRON": { "address": "0xA3149E0fA0061A9007fAf307074cdCd290f0e2Fd", "links": { - "Homepage": "https://proncoin.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://proncoin.io" }, "marketcap_usd": 0, "name": "PronCoin", @@ -7466,15 +8994,17 @@ "shortcut": "PRON", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:PRPS": { "address": "0x7641b2Ca9DDD58adDf6e3381c1F994Aac5f1A32f", "links": { "Github": "https://github.com/nionis/purpose", - "Homepage": "https://prps.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://prps.io" }, "marketcap_usd": 0, "name": "Purpose", @@ -7482,15 +9012,17 @@ "shortcut": "PRPS", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:PRS": { "address": "0x163733bcc28dbf26B41a8CfA83e369b5B3af741b", "links": { "Github": "https://github.com/Neurone/persians", - "Homepage": "http://persians.network", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://persians.network" }, "marketcap_usd": 0, "name": "Persians", @@ -7498,14 +9030,16 @@ "shortcut": "PRS", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:PRSP": { "address": "0x0C04d4f331DA8dF75f9E2e271E3f3F1494C66C36", "links": { - "Homepage": "http://www.prsp.me", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://www.prsp.me" }, "marketcap_usd": 0, "name": "PRSP", @@ -7513,15 +9047,17 @@ "shortcut": "PRSP", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:PT": { "address": "0x66497A283E0a007bA3974e837784C6AE323447de", "links": { "Github": "https://github.com/porntoken/smart_contract", - "Homepage": "https://www.porntoken.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.porntoken.io" }, "marketcap_usd": 0, "name": "PornToken", @@ -7529,15 +9065,17 @@ "shortcut": "PT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:PTC": { "address": "0x2a8E98e256f32259b5E5Cb55Dd63C8e891950666", "links": { "Github": "https://github.com/ParrotCoin", - "Homepage": "http://parrotcoin.club", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://parrotcoin.club" }, "marketcap_usd": 0, "name": "ParrotCoin", @@ -7545,14 +9083,16 @@ "shortcut": "PTC", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:PTOY": { "address": "0x8Ae4BF2C33a8e667de34B54938B0ccD03Eb8CC06", "links": { - "Homepage": "https://patientory.com/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://patientory.com/" }, "marketcap_usd": 0, "name": "PTOY", @@ -7560,15 +9100,17 @@ "shortcut": "PTOY", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:PTWO": { "address": "0x5512e1D6A7BE424b4323126B4f9E86D023F95764", "links": { "Github": "https://github.com/porntoken/smart_contract", - "Homepage": "https://www.porntoken.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.porntoken.io" }, "marketcap_usd": 0, "name": "PornTokenV2", @@ -7576,15 +9118,17 @@ "shortcut": "PTWO", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:PUC": { "address": "0xEf6B4cE8C9Bc83744fbcdE2657b32eC18790458A", "links": { "Github": "https://github.com/pourcoin/pourcoin-PUC/projects", - "Homepage": "http://price-s.info", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://price-s.info" }, "marketcap_usd": 0, "name": "Pour Coin", @@ -7592,14 +9136,16 @@ "shortcut": "PUC", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:PXT": { "address": "0xc14830E53aA344E8c14603A91229A0b925b0B262", "links": { - "Homepage": "https://populous.co", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://populous.co" }, "marketcap_usd": 0, "name": "Populous XBRL Token (PXT)", @@ -7607,29 +9153,33 @@ "shortcut": "PXT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:QASH": { "address": "0x618E75Ac90b12c6049Ba3b27f5d5F8651b0037F6", "links": { - "Homepage": "https://liquid.plus", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://liquid.plus" }, - "marketcap_usd": 119497700, + "marketcap_usd": 100518950, "name": "QASH", "network": "eth", "shortcut": "QASH", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:QAU": { "address": "0x671AbBe5CE652491985342e85428EB1b07bC6c64", "links": { - "Homepage": "http://www.quantumproject.org", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://www.quantumproject.org" }, "marketcap_usd": 0, "name": "QAU", @@ -7637,15 +9187,17 @@ "shortcut": "QAU", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:QBX": { "address": "0x2467AA6B5A2351416fD4C3DeF8462d841feeecEC", "links": { "Github": "https://github.com/qiibee", - "Homepage": "https://www.qiibee.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.qiibee.com" }, "marketcap_usd": 0, "name": "qiibeeToken", @@ -7653,15 +9205,33 @@ "shortcut": "QBX", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:QRG": { + "address": "0xFFAA5ffc455d9131f8A2713A741fD1960330508B", + "links": { + "Homepage": "http://qrg-stamps.com/" + }, + "name": "QRG", + "network": "eth", + "shortcut": "QRG", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:QRL": { "address": "0x697beac28B09E122C4332D163985e8a73121b97F", "links": { "Github": "https://github.com/theQRL", - "Homepage": "https://theqrl.org/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://theqrl.org/" }, "marketcap_usd": 0, "name": "QRL", @@ -7669,15 +9239,17 @@ "shortcut": "QRL", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:QSP": { "address": "0x99ea4dB9EE77ACD40B119BD1dC4E33e1C070b80d", "links": { "Github": "https://github.com/quantstamp", - "Homepage": "https://quantstamp.com/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://quantstamp.com/" }, "marketcap_usd": 0, "name": "Quantstamp Token", @@ -7685,15 +9257,17 @@ "shortcut": "QSP", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:QTQ": { "address": "0x2C3C1F05187dBa7A5f2Dd47Dca57281C4d4F183F", "links": { "Github": "https://github.com/TiiQu-Network/TiiQu-Network", - "Homepage": "http://tiiqu.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://tiiqu.com" }, "marketcap_usd": 0, "name": "TiiQu's Q Token", @@ -7701,31 +9275,52 @@ "shortcut": "QTQ", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:QTUM": { "address": "0x9a642d6b3368ddc662CA244bAdf32cDA716005BC", "links": { "Github": "https://github.com/qtumproject", - "Homepage": "https://qtum.org/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://qtum.org/" }, - "marketcap_usd": 920789865, + "marketcap_usd": 846294825, "name": "Qtum", "network": "eth", "shortcut": "QTUM", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:RAO": { + "address": "0x45eDb535942a8C84D9f4b5D37e1b25F91Ea4804c", + "links": { + "Github": "https://github.com/RadioYoFM/ICO_smartcontract/", + "Homepage": "https://rao.radioyo.fm" + }, + "name": "RadioYo", + "network": "eth", + "shortcut": "RAO", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:RBLX": { "address": "0xFc2C4D8f95002C14eD0a7aA65102Cac9e5953b5E", "links": { "Github": "https://github.com/rublixdev", - "Homepage": "https://rublix.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://rublix.io/" }, "marketcap_usd": 0, "name": "Rublix", @@ -7733,15 +9328,17 @@ "shortcut": "RBLX", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:RCN": { "address": "0xF970b8E36e23F7fC3FD752EeA86f8Be8D83375A6", "links": { "Github": "https://github.com/ripio/rcn-token", - "Homepage": "https://ripiocredit.network/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://ripiocredit.network/" }, "marketcap_usd": 0, "name": "Ripio Credit Network", @@ -7749,14 +9346,16 @@ "shortcut": "RCN", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:RCT": { "address": "0x2a3Aa9ECA41E720Ed46B5A70D6C37EfA47f768Ac", "links": { - "Homepage": "http://www.rcfund.org", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://www.rcfund.org" }, "marketcap_usd": 0, "name": "RCT", @@ -7764,15 +9363,17 @@ "shortcut": "RCT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:RDN": { "address": "0x255Aa6DF07540Cb5d3d297f0D0D4D84cb52bc8e6", "links": { "Github": "https://github.com/raiden-network/raiden/", - "Homepage": "https://raiden.network", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://raiden.network" }, "marketcap_usd": 0, "name": "Raiden Network", @@ -7780,14 +9381,16 @@ "shortcut": "RDN", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:REA": { "address": "0x767bA2915EC344015a7938E3eEDfeC2785195D05", "links": { - "Homepage": "https://www.realisto.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.realisto.io" }, "marketcap_usd": 0, "name": "Realisto", @@ -7795,30 +9398,52 @@ "shortcut": "REA", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:REBL": { "address": "0x5F53f7A8075614b699Baad0bC2c899f4bAd8FBBF", "links": { - "Homepage": "https://www.rebellious.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.rebellious.io" }, - "marketcap_usd": 7606164, + "marketcap_usd": 6779721, "name": "Rebellious", "network": "eth", "shortcut": "REBL", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, - "erc20:eth:REN": { - "address": "0x408e41876cCCDC0F92210600ef50372656052a38", + "erc20:eth:RED": { + "address": "0x76960Dccd5a1fe799F7c29bE9F19ceB4627aEb2f", "links": { - "Github": "https://github.com/republicprotocol", - "Homepage": "https://republicprotocol.com", - "MyCrypto Wallet": "https://mycrypto.com", + "Github": "https://github.com/red", + "Homepage": "https://ico.red-lang.org" + }, + "marketcap_usd": 7700018, + "name": "Red Community Token", + "network": "eth", + "shortcut": "RED", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:REN": { + "address": "0x408e41876cCCDC0F92210600ef50372656052a38", + "links": { + "Github": "https://github.com/republicprotocol", + "Homepage": "https://republicprotocol.com" }, "marketcap_usd": 0, "name": "Republic Token", @@ -7826,14 +9451,16 @@ "shortcut": "REN", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:REP": { "address": "0xE94327D07Fc17907b4DB788E5aDf2ed424adDff6", "links": { - "Homepage": "https://augur.net", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://augur.net" }, "marketcap_usd": 0, "name": "Augur", @@ -7841,14 +9468,16 @@ "shortcut": "REP", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:REQ": { "address": "0x8f8221aFbB33998d8584A2B05749bA73c37a938a", "links": { - "Homepage": "https://request.network", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://request.network" }, "marketcap_usd": 0, "name": "Request Network", @@ -7856,15 +9485,17 @@ "shortcut": "REQ", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:REX": { "address": "0xf05a9382A4C3F29E2784502754293D88b835109C", "links": { "Github": "https://github.com/rexmls/RexToken", - "Homepage": "https://imbrex.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://imbrex.io/" }, "marketcap_usd": 0, "name": "REX", @@ -7872,14 +9503,16 @@ "shortcut": "REX", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:RFR": { "address": "0xd0929d411954c47438dc1d871dd6081F5C5e149c", "links": { - "Homepage": "https://refereum.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://refereum.com" }, "marketcap_usd": 0, "name": "Refereum", @@ -7887,15 +9520,17 @@ "shortcut": "RFR", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:RIPT": { "address": "0xdd007278B667F6bef52fD0a4c23604aA1f96039a", "links": { "Github": "https://github.com/riptidecoin/riptide-coin", - "Homepage": "https://riptidecoin.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://riptidecoin.com" }, "marketcap_usd": 0, "name": "RiptideCoin", @@ -7903,30 +9538,34 @@ "shortcut": "RIPT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:RLC": { "address": "0x607F4C5BB672230e8672085532f7e901544a7375", "links": { - "Homepage": "http://crowdsale.iex.ec", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://crowdsale.iex.ec" }, - "marketcap_usd": 73457426, + "marketcap_usd": 66469888, "name": "IEx.ec", "network": "eth", "shortcut": "RLC", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:RLT": { "address": "0xcCeD5B8288086BE8c38E23567e684C3740be4D48", "links": { "Github": "https://github.com/Smartroulette", - "Homepage": "https://smartplay.tech/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://smartplay.tech/" }, "marketcap_usd": 0, "name": "RLT", @@ -7934,14 +9573,16 @@ "shortcut": "RLT", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:RLTY": { "address": "0xbe99B09709fc753b09BCf557A992F6605D5997B0", "links": { - "Homepage": "http://www.smartrealty.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://www.smartrealty.io" }, "marketcap_usd": 0, "name": "SMARTRealty", @@ -7949,14 +9590,16 @@ "shortcut": "RLTY", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:RLX": { "address": "0x4A42d2c580f83dcE404aCad18dab26Db11a1750E", "links": { - "Homepage": "http://www.relex.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://www.relex.io" }, "marketcap_usd": 0, "name": "Relex", @@ -7964,14 +9607,16 @@ "shortcut": "RLX", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:RNDR": { "address": "0x0996bFb5D057faa237640E2506BE7B4f9C46de0B", "links": { - "Homepage": "https://rendertoken.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://rendertoken.com" }, "marketcap_usd": 0, "name": "Render Token", @@ -7979,30 +9624,34 @@ "shortcut": "RNDR", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ROCK": { "address": "0xA40106134c5bF4c41411554e6db99B95A15ed9d8", "links": { "Github": "https://github.com/rocketico", - "Homepage": "https://rocketico.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://rocketico.io" }, - "marketcap_usd": 35337095, + "marketcap_usd": 31745275, "name": "Rocket Token", "network": "eth", "shortcut": "ROCK", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ROK": { "address": "0xc9De4B7F0C3d991e967158E4D4bFA4b51Ec0b114", "links": { - "Homepage": "https://rockchain.org", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://rockchain.org" }, "marketcap_usd": 0, "name": "Rocketchain", @@ -8010,14 +9659,16 @@ "shortcut": "ROK", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ROUND": { "address": "0x4993CB95c7443bdC06155c5f5688Be9D8f6999a5", "links": { - "Homepage": "http://roundcoin.org/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://roundcoin.org/" }, "marketcap_usd": 0, "name": "ROUND", @@ -8025,14 +9676,16 @@ "shortcut": "ROUND", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:RPL": { "address": "0xB4EFd85c19999D84251304bDA99E90B92300Bd93", "links": { - "Homepage": "https://www.rocketpool.net", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.rocketpool.net" }, "marketcap_usd": 0, "name": "Rocket Pool", @@ -8040,15 +9693,17 @@ "shortcut": "RPL", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:RTN": { "address": "0x54b293226000ccBFC04DF902eEC567CB4C35a903", "links": { "Github": "https://github.com/Ridercoin2/RiderCoin/blob/master/README.md", - "Homepage": "http://ridertoken.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://ridertoken.com" }, "marketcap_usd": 0, "name": "RiderToken", @@ -8056,14 +9711,16 @@ "shortcut": "RTN", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:RVL": { "address": "0x41f615E24fAbd2b097a320E9E6c1f448cb40521c", "links": { - "Homepage": "https://www.r-evolutioncoin.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.r-evolutioncoin.com" }, "marketcap_usd": 0, "name": "RVL", @@ -8071,14 +9728,16 @@ "shortcut": "RVL", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:RVT": { "address": "0x3d1BA9be9f66B8ee101911bC36D3fB562eaC2244", "links": { - "Homepage": "https://rivetzintl.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://rivetzintl.com" }, "marketcap_usd": 0, "name": "Rivetz", @@ -8086,14 +9745,16 @@ "shortcut": "RVT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:S-A-PAT": { "address": "0x1EC8fE51a9B6A3a6C427D17d9ECC3060fbc4a45c", "links": { - "Homepage": "https://www.smartillions.ch", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.smartillions.ch" }, "marketcap_usd": 0, "name": "S-A-PAT", @@ -8101,14 +9762,16 @@ "shortcut": "S-A-PAT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:S-ETH": { "address": "0x3eb91D237e491E0DEE8582c402D85CB440fb6b54", "links": { - "Homepage": "https://www.smartillions.ch", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.smartillions.ch" }, "marketcap_usd": 0, "name": "S-ETH", @@ -8116,29 +9779,33 @@ "shortcut": "S-ETH", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SALT": { "address": "0x4156D3342D5c385a87D264F90653733592000581", "links": { - "Homepage": "https://saltlending.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://saltlending.com" }, - "marketcap_usd": 78147744, + "marketcap_usd": 69746782, "name": "Salt Lending Token", "network": "eth", "shortcut": "SALT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SAN": { "address": "0x7C5A0CE9267ED19B22F8cae653F198e3E8daf098", "links": { - "Homepage": "https://santiment.net", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://santiment.net" }, "marketcap_usd": 0, "name": "Santiment", @@ -8146,14 +9813,16 @@ "shortcut": "SAN", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SCANDI": { "address": "0x78fE18e41f436e1981a3a60D1557c8a7a9370461", "links": { - "Homepage": "https://scandiweb.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://scandiweb.com" }, "marketcap_usd": 0, "name": "Scandiweb Coin", @@ -8161,14 +9830,16 @@ "shortcut": "SCANDI", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SCL": { "address": "0xd7631787B4dCc87b1254cfd1e5cE48e96823dEe8", "links": { - "Homepage": "https://ico.nexus.social", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://ico.nexus.social" }, "marketcap_usd": 0, "name": "SocialCoin", @@ -8176,30 +9847,34 @@ "shortcut": "SCL", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SENSE": { "address": "0x6745fAB6801e376cD24F03572B9C9B0D4EdDDCcf", "links": { - "Homepage": "https://sensay.it", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://sensay.it" }, - "marketcap_usd": 3044591, + "marketcap_usd": 5160205, "name": "Sensay", "network": "eth", "shortcut": "SENSE", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SET": { "address": "0xe06eda7435bA749b047380CEd49121ddE93334Ae", "links": { "Github": "https://github.com/SydEthereum/meetup-token#meetup-token", - "Homepage": "http://sydeth.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://sydeth.com" }, "marketcap_usd": 0, "name": "SET", @@ -8207,14 +9882,16 @@ "shortcut": "SET", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SEXY": { "address": "0x98F5e9b7F0e33956C0443E81bF7deB8B5b1ed545", "links": { - "Homepage": "http://sexytoken.co", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://sexytoken.co" }, "marketcap_usd": 0, "name": "Sexy Token", @@ -8222,14 +9899,16 @@ "shortcut": "SEXY", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SGEL": { "address": "0xa1ccc166faf0E998b3E33225A1A0301B1C86119D", "links": { - "Homepage": "https://www.soerengelder.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.soerengelder.com" }, "marketcap_usd": 0, "name": "SGELDER", @@ -8237,14 +9916,16 @@ "shortcut": "SGEL", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SGT": { "address": "0x37427576324fE1f3625c9102674772d7CF71377d", "links": { - "Homepage": "https://sgt.selfieyo.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://sgt.selfieyo.com" }, "marketcap_usd": 0, "name": "SGT", @@ -8252,14 +9933,16 @@ "shortcut": "SGT", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SHIT": { "address": "0xEF2E9966eb61BB494E5375d5Df8d67B7dB8A780D", "links": { - "Homepage": "https://www.shitcoin.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.shitcoin.io/" }, "marketcap_usd": 0, "name": "SHIT", @@ -8267,14 +9950,16 @@ "shortcut": "SHIT", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SIFT": { "address": "0x8a187D5285d316bcBC9ADafc08b51d70a0d8e000", "links": { - "Homepage": "https://smartift.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://smartift.com" }, "marketcap_usd": 0, "name": "SIFT", @@ -8282,15 +9967,17 @@ "shortcut": "SIFT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SIG": { "address": "0x6888a16eA9792c15A4DCF2f6C623D055c8eDe792", "links": { "Github": "https://github.com/SpectivOfficial", - "Homepage": "https://spectivvr.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://spectivvr.com" }, "marketcap_usd": 0, "name": "Signal", @@ -8298,15 +9985,17 @@ "shortcut": "SIG", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SKIN": { "address": "0x2bDC0D42996017fCe214b21607a515DA41A9E0C5", "links": { "Github": "https://github.com/Steamtradenet/smart-contract", - "Homepage": "https://skincoin.org/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://skincoin.org/" }, "marketcap_usd": 0, "name": "SKIN", @@ -8314,14 +10003,16 @@ "shortcut": "SKIN", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SKO1": { "address": "0x4994e81897a920c0FEA235eb8CEdEEd3c6fFF697", "links": { - "Homepage": "http://www.sikoba.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://www.sikoba.com" }, "marketcap_usd": 0, "name": "Sikoba", @@ -8329,14 +10020,16 @@ "shortcut": "SKO1", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SKR": { "address": "0x4c382F8E09615AC86E08CE58266CC227e7d4D913", "links": { - "Homepage": "https://tokensale.skrilla.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://tokensale.skrilla.com" }, "marketcap_usd": 0, "name": "SKR Token", @@ -8344,15 +10037,17 @@ "shortcut": "SKR", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SKRP": { "address": "0x6E34d8d84764D40f6D7b39cd569Fd017bF53177D", "links": { "Github": "https://github.com/SkrapsIO", - "Homepage": "https://skraps.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://skraps.io" }, "marketcap_usd": 0, "name": "Skraps", @@ -8360,14 +10055,16 @@ "shortcut": "SKRP", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SLT": { "address": "0x7A5fF295Dc8239d5C2374E4D894202aAF029Cab6", "links": { - "Homepage": "http://smartlands.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://smartlands.io" }, "marketcap_usd": 0, "name": "Smartlands", @@ -8375,15 +10072,17 @@ "shortcut": "SLT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SMART": { "address": "0x6F6DEb5db0C4994A8283A01D6CFeEB27Fc3bBe9C", "links": { "Github": "https://github.com/SmartBillions/SmartBillions", - "Homepage": "http://smartbillions.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://smartbillions.com" }, "marketcap_usd": 0, "name": "Smart Billions", @@ -8391,15 +10090,17 @@ "shortcut": "SMART", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SMT": { "address": "0x2dCFAAc11c9EebD8C6C42103Fe9e2a6AD237aF27", "links": { "Github": "https://github.com/SmartMeshFoundation", - "Homepage": "http://smartnode.org", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://smartnode.org" }, "marketcap_usd": 0, "name": "SmartMesh", @@ -8407,14 +10108,16 @@ "shortcut": "SMT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SNC": { "address": "0xF4134146AF2d511Dd5EA8cDB1C4AC88C57D60404", "links": { - "Homepage": "https://suncontract.org", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://suncontract.org" }, "marketcap_usd": 0, "name": "SNC", @@ -8422,14 +10125,16 @@ "shortcut": "SNC", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SND": { "address": "0xf333b2Ace992ac2bBD8798bF57Bc65a06184afBa", "links": { - "Homepage": "https://www.sandcoin.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.sandcoin.io" }, "marketcap_usd": 0, "name": "Sandcoin", @@ -8437,15 +10142,17 @@ "shortcut": "SND", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SNG": { "address": "0xcFD6Ae8BF13f42DE14867351eAff7A8A3b9FbBe7", "links": { "Github": "https://github.com/SinergiaBlockchain", - "Homepage": "https://sinergiablockchain.org/index-en.html", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://sinergiablockchain.org/index-en.html" }, "marketcap_usd": 0, "name": "SINERGIA", @@ -8453,14 +10160,16 @@ "shortcut": "SNG", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SNGLS": { "address": "0xaeC2E87E0A235266D9C5ADc9DEb4b2E29b54D009", "links": { - "Homepage": "https://singulardtv.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://singulardtv.com" }, "marketcap_usd": 0, "name": "SingularDTV", @@ -8468,14 +10177,16 @@ "shortcut": "SNGLS", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SNIP": { "address": "0x44F588aEeB8C44471439D1270B3603c66a9262F1", "links": { - "Homepage": "https://www.snip.network", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.snip.network" }, "marketcap_usd": 0, "name": "SNIP", @@ -8483,15 +10194,17 @@ "shortcut": "SNIP", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SNM": { "address": "0x983F6d60db79ea8cA4eB9968C6aFf8cfA04B3c63", "links": { "Github": "https://github.com/sonm-io", - "Homepage": "https://sonm.com/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://sonm.com/" }, "marketcap_usd": 0, "name": "SNM", @@ -8499,14 +10212,16 @@ "shortcut": "SNM", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SNOV": { "address": "0xBDC5bAC39Dbe132B1E030e898aE3830017D7d969", "links": { - "Homepage": "https://tokensale.snov.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://tokensale.snov.io" }, "marketcap_usd": 0, "name": "SNOV", @@ -8514,14 +10229,16 @@ "shortcut": "SNOV", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SNT": { "address": "0x744d70FDBE2Ba4CF95131626614a1763DF805B9E", "links": { - "Homepage": "https://status.im", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://status.im" }, "marketcap_usd": 0, "name": "Status Network Token", @@ -8529,14 +10246,16 @@ "shortcut": "SNT", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SOL": { "address": "0x1F54638b7737193FFd86c19Ec51907A7c41755D8", "links": { - "Homepage": "https://sola.foundation", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://sola.foundation" }, "marketcap_usd": 0, "name": "Sola Token", @@ -8544,14 +10263,16 @@ "shortcut": "SOL", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SPANK": { "address": "0x42d6622deCe394b54999Fbd73D108123806f6a18", "links": { - "Homepage": "https://spankchain.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://spankchain.com" }, "marketcap_usd": 0, "name": "SpankChain", @@ -8559,14 +10280,16 @@ "shortcut": "SPANK", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SPARC": { "address": "0x58bf7df57d9DA7113c4cCb49d8463D4908C735cb", "links": { - "Homepage": "https://kingsds.network", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://kingsds.network" }, "marketcap_usd": 0, "name": "SPARC", @@ -8574,14 +10297,16 @@ "shortcut": "SPARC", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SPARTA": { "address": "0x24AEF3BF1A47561500f9430D74Ed4097C47F51F2", "links": { - "Homepage": "https://www.spartaico.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.spartaico.com" }, "marketcap_usd": 0, "name": "SPARTA", @@ -8589,14 +10314,16 @@ "shortcut": "SPARTA", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SPF": { "address": "0x85089389C14Bd9c77FC2b8F0c3d1dC3363Bf06Ef", "links": { - "Homepage": "https://sportyfi.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://sportyfi.io" }, "marketcap_usd": 0, "name": "Sportify", @@ -8604,14 +10331,16 @@ "shortcut": "SPF", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SPN": { "address": "0x20F7A3DdF244dc9299975b4Da1C39F8D5D75f05A", "links": { - "Homepage": "https://www.sapien.network/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.sapien.network/" }, "marketcap_usd": 0, "name": "Sapien", @@ -8619,15 +10348,17 @@ "shortcut": "SPN", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SRN": { "address": "0x68d57c9a1C35f63E2c83eE8e49A64e9d70528D25", "links": { "Github": "https://github.com/sirin-labs/crowdsale-smart-contract", - "Homepage": "https://sirinlabs.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://sirinlabs.com" }, "marketcap_usd": 0, "name": "Sirin Labs", @@ -8635,15 +10366,17 @@ "shortcut": "SRN", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SS": { "address": "0xbbFF862d906E348E9946Bfb2132ecB157Da3D4b4", "links": { "Github": "https://github.com/Sharders", - "Homepage": "https://sharder.org", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://sharder.org" }, "marketcap_usd": 0, "name": "Sharder", @@ -8651,14 +10384,16 @@ "shortcut": "SS", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SSH": { "address": "0x6e2050CBFB3eD8A4d39b64cC9f47E711a03a5a89", "links": { - "Homepage": "https://www.stream.space/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.stream.space/" }, "marketcap_usd": 0, "name": "StreamShares", @@ -8666,14 +10401,16 @@ "shortcut": "SSH", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:STAC": { "address": "0x9a005c9a89BD72a4Bd27721E7a09A3c11D2b03C4", "links": { - "Homepage": "https://coinstarter.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://coinstarter.com" }, "marketcap_usd": 0, "name": "Starter Coin", @@ -8681,14 +10418,16 @@ "shortcut": "STAC", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:STAR": { "address": "0xF70a642bD387F94380fFb90451C2c81d4Eb82CBc", "links": { - "Homepage": "http://starbase.co", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://starbase.co" }, "marketcap_usd": 0, "name": "Star Token", @@ -8696,15 +10435,17 @@ "shortcut": "STAR", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:STC": { "address": "0x629aEe55ed49581C33ab27f9403F7992A289ffd5", "links": { "Github": "https://github.com/DimensionsNetwork", - "Homepage": "https://dimensions.network", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://dimensions.network" }, "marketcap_usd": 0, "name": "StrikeCoin Token", @@ -8712,29 +10453,33 @@ "shortcut": "STC", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:STK": { "address": "0xaE73B38d1c9A8b274127ec30160a4927C4d71824", "links": { - "Homepage": "https://stktoken.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://stktoken.com" }, - "marketcap_usd": 11785670, + "marketcap_usd": 10429989, "name": "STK Token", "network": "eth", "shortcut": "STK", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:STN": { "address": "0x599346779e90fc3F5F997b5ea715349820F91571", "links": { - "Homepage": "https://saturn.network", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://saturn.network" }, "marketcap_usd": 0, "name": "Saturn Network", @@ -8742,46 +10487,52 @@ "shortcut": "STN", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:STORJ": { "address": "0xB64ef51C888972c908CFacf59B47C1AfBC0Ab8aC", "links": { "Github": "https://github.com/Storj/", - "Homepage": "https://storj.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://storj.io/" }, - "marketcap_usd": 76105113, + "marketcap_usd": 69113277, "name": "STORJ", "network": "eth", "shortcut": "STORJ", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:STORM": { "address": "0xD0a4b8946Cb52f0661273bfbC6fD0E0C75Fc6433", "links": { - "Homepage": "https://www.stormtoken.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.stormtoken.com" }, - "marketcap_usd": 89475720, + "marketcap_usd": 82563240, "name": "Storm Token", "network": "eth", "shortcut": "STORM", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:STP": { "address": "0xecd570bBf74761b960Fa04Cc10fe2c4e86FfDA36", "links": { "Github": "https://github.com/stashpayio", - "Homepage": "https://stashpay.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://stashpay.io" }, "marketcap_usd": 0, "name": "StashPay", @@ -8789,15 +10540,34 @@ "shortcut": "STP", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:STQ": { + "address": "0x5c3a228510D246b78a3765C20221Cbf3082b44a4", + "links": { + "Github": "https://github.com/Storiqa/", + "Homepage": "https://storiqa.com" + }, + "name": "Storiqa", + "network": "eth", + "shortcut": "STQ", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:STRC": { "address": "0x46492473755e8dF960F8034877F61732D718CE96", "links": { "Github": "https://github.com/sprux/BackToEarth", - "Homepage": "https://backto.earth/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://backto.earth/" }, "marketcap_usd": 0, "name": "STRC", @@ -8805,15 +10575,17 @@ "shortcut": "STRC", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:STX": { "address": "0x006BeA43Baa3f7A6f765F14f10A1a1b08334EF45", "links": { "Github": "https://github.com/stx-technologies/stox-token", - "Homepage": "https://www.stox.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.stox.com" }, "marketcap_usd": 0, "name": "StoxToken", @@ -8821,14 +10593,16 @@ "shortcut": "STX", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SUB": { "address": "0x12480E24eb5bec1a9D4369CaB6a80caD3c0A377A", "links": { - "Homepage": "https://substratum.net", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://substratum.net" }, "marketcap_usd": 0, "name": "Substratum", @@ -8836,15 +10610,17 @@ "shortcut": "SUB", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SWM": { "address": "0x9e88613418cF03dCa54D6a2cf6Ad934A78C7A17A", "links": { "Github": "https://github.com/swarmfund", - "Homepage": "https://swarm.fund", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://swarm.fund" }, "marketcap_usd": 0, "name": "Swarm Fund Token", @@ -8852,14 +10628,16 @@ "shortcut": "SWM", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SWT": { "address": "0xB9e7F8568e08d5659f5D29C4997173d84CdF2607", "links": { - "Homepage": "http://swarm.city", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://swarm.city" }, "marketcap_usd": 0, "name": "Swarm City Token", @@ -8867,14 +10645,16 @@ "shortcut": "SWT", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SXDT": { "address": "0x12B306fA98F4CbB8d4457FdFf3a0A0a56f07cCdf", "links": { - "Homepage": "http://www.spectre.ai", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://www.spectre.ai" }, "marketcap_usd": 0, "name": "Spectre.ai D-Token", @@ -8882,14 +10662,16 @@ "shortcut": "SXDT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SXUT": { "address": "0x2C82c73d5B34AA015989462b2948cd616a37641F", "links": { - "Homepage": "http://www.spectre.ai", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://www.spectre.ai" }, "marketcap_usd": 0, "name": "Spectre.ai U-Token", @@ -8897,14 +10679,16 @@ "shortcut": "SXUT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SYN": { "address": "0x10B123FdDde003243199aaD03522065dC05827A0", "links": { - "Homepage": "https://synapse.ai", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://synapse.ai" }, "marketcap_usd": 0, "name": "Synapse", @@ -8912,14 +10696,16 @@ "shortcut": "SYN", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:SenSatorI": { "address": "0x4cA74185532DC1789527194e5B9c866dD33F4E82", "links": { - "Homepage": "http://theglobalbitcoin.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://theglobalbitcoin.com" }, "marketcap_usd": 0, "name": "SenSatorI Token", @@ -8927,15 +10713,17 @@ "shortcut": "SenSatorI", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:TAU": { "address": "0xc27A2F05fa577a83BA0fDb4c38443c0718356501", "links": { "Github": "https://github.com/lamden", - "Homepage": "https://www.lamden.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.lamden.io" }, "marketcap_usd": 0, "name": "Lamden Tau", @@ -8943,15 +10731,17 @@ "shortcut": "TAU", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:TBC2": { "address": "0xFACCD5Fc83c3E4C3c1AC1EF35D15adf06bCF209C", "links": { "Github": "https://github.com/erc20club", - "Homepage": "https://www.tbc.erc20.club", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.tbc.erc20.club" }, "marketcap_usd": 0, "name": "TBC2", @@ -8959,15 +10749,17 @@ "shortcut": "TBC2", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:TBT": { "address": "0xAFe60511341a37488de25Bef351952562E31fCc1", "links": { "Github": "https://github.com/tbitbot", - "Homepage": "https://tbitbot.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://tbitbot.com" }, "marketcap_usd": 0, "name": "TBitBot", @@ -8975,15 +10767,33 @@ "shortcut": "TBT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:TDH": { + "address": "0x2a1dbabe65c595B0022e75208C34014139d5d357", + "links": { + "Homepage": "https://trustedhealth.io" + }, + "name": "TrustedHealth", + "network": "eth", + "shortcut": "TDH", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:TEL": { "address": "0x85e076361cc813A908Ff672F9BAd1541474402b2", "links": { "Github": "https://github.com/telcoin", - "Homepage": "https://www.telco.in", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.telco.in" }, "marketcap_usd": 0, "name": "Telcoin", @@ -8991,15 +10801,17 @@ "shortcut": "TEL", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:TFL": { "address": "0xa7f976C360ebBeD4465c2855684D1AAE5271eFa9", "links": { "Github": "https://github.com/TrueFlip", - "Homepage": "https://trueflip.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://trueflip.io" }, "marketcap_usd": 0, "name": "TrueFlip", @@ -9007,14 +10819,16 @@ "shortcut": "TFL", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:THETA": { "address": "0x3883f5e181fccaF8410FA61e12b59BAd963fb645", "links": { - "Homepage": "https://www.thetatoken.org/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.thetatoken.org/" }, "marketcap_usd": 0, "name": "Theta Token", @@ -9022,15 +10836,17 @@ "shortcut": "THETA", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:THUG": { "address": "0xfe7B915A0bAA0E79f85c5553266513F7C1c03Ed0", "links": { "Github": "https://github.com/THUGCOIN/THUGCoin", - "Homepage": "https://thugcoin.cash/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://thugcoin.cash/" }, "marketcap_usd": 0, "name": "THUG", @@ -9038,14 +10854,16 @@ "shortcut": "THUG", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:TIME": { "address": "0x6531f133e6DeeBe7F2dcE5A0441aA7ef330B4e53", "links": { - "Homepage": "https://chronobank.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://chronobank.io" }, "marketcap_usd": 0, "name": "Chronobank", @@ -9053,14 +10871,16 @@ "shortcut": "TIME", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:TIO": { "address": "0x80BC5512561c7f85A3A9508c7df7901b370Fa1DF", "links": { - "Homepage": "https://trade.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://trade.io" }, "marketcap_usd": 0, "name": "TIO", @@ -9068,14 +10888,16 @@ "shortcut": "TIO", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:TIX": { "address": "0xEa1f346faF023F974Eb5adaf088BbCdf02d761F4", "links": { - "Homepage": "https://www.blocktix.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.blocktix.io" }, "marketcap_usd": 0, "name": "Blocktix", @@ -9083,14 +10905,16 @@ "shortcut": "TIX", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:TKN": { "address": "0xaAAf91D9b90dF800Df4F55c205fd6989c977E73a", "links": { - "Homepage": "https://etherscan.io/token/TokenCard", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://etherscan.io/token/TokenCard" }, "marketcap_usd": 0, "name": "TokenCard", @@ -9098,15 +10922,17 @@ "shortcut": "TKN", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:TNT": { "address": "0x08f5a9235B08173b7569F83645d2c7fB55e8cCD8", "links": { "Github": "https://github.com/tierion", - "Homepage": "https://tierion.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://tierion.com" }, "marketcap_usd": 0, "name": "Tierion Network Token", @@ -9114,29 +10940,32 @@ "shortcut": "TNT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:TRC": { "address": "0xcB3F902bf97626391bF8bA87264bbC3DC13469be", "hidden": 1, - "links": { - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - }, + "links": {}, "marketcap_usd": 0, "name": "The Real Coin", "network": "eth", "shortcut": "TRC", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:TRCN": { "address": "0x566Fd7999B1Fc3988022bD38507A48F0bCf22c77", "links": { - "Homepage": "http://www.therealcoinz.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://www.therealcoinz.com" }, "marketcap_usd": 0, "name": "The Real Coin", @@ -9144,15 +10973,17 @@ "shortcut": "TRCN", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:TRST": { "address": "0xCb94be6f13A1182E4A4B6140cb7bf2025d28e41B", "links": { "Github": "https://github.com/WeTrustPlatform", - "Homepage": "https://www.wetrust.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.wetrust.io" }, "marketcap_usd": 0, "name": "TRST", @@ -9160,14 +10991,16 @@ "shortcut": "TRST", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:TRX": { "address": "0xf230b790E05390FC8295F4d3F60332c93BEd42e2", "links": { - "Homepage": "https://tronlab.com/en.html", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://tronlab.com/en.html" }, "marketcap_usd": 0, "name": "Tron Lab Token", @@ -9175,14 +11008,16 @@ "shortcut": "TRX", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:TWN": { "address": "0x2eF1aB8a26187C58BB8aAeB11B2fC6D25C5c0716", "links": { - "Homepage": "https://ico.theworldnews.net", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://ico.theworldnews.net" }, "marketcap_usd": 0, "name": "The World News", @@ -9190,14 +11025,16 @@ "shortcut": "TWN", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:TWNKL": { "address": "0xfbd0d1c77B501796A35D86cF91d65D9778EeE695", "links": { - "Homepage": "https://www.rainbowcurrency.com/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.rainbowcurrency.com/" }, "marketcap_usd": 0, "name": "Twinkle", @@ -9205,30 +11042,34 @@ "shortcut": "TWNKL", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:TaaS": { "address": "0xE7775A6e9Bcf904eb39DA2b68c5efb4F9360e08C", "links": { - "Homepage": "https://taas.fund", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://taas.fund" }, - "marketcap_usd": 20394165, + "marketcap_usd": 18556916, "name": "Token-as-a-Service", "network": "eth", "shortcut": "TaaS", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:UKG": { "address": "0x24692791Bc444c5Cd0b81e3CBCaba4b04Acd1F3B", "links": { "Github": "https://github.com/unikoingold/UnikoinGold-UKG-Contract", - "Homepage": "https://unikoingold.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://unikoingold.com" }, "marketcap_usd": 0, "name": "UnikoinGold", @@ -9236,15 +11077,17 @@ "shortcut": "UKG", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:UMKA": { - "address": "0x105d97ef2E723f1cfb24519Bc6fF15a6D091a3F1", + "address": "0x8e5afc69f6227A3ad75eD346c8723Bc62ce97123", "links": { "Github": "https://github.com/UMKAman", - "Homepage": "https://umka.city", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://umka.city" }, "marketcap_usd": 0, "name": "UMKA", @@ -9252,14 +11095,16 @@ "shortcut": "UMKA", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:UQC": { "address": "0xD01DB73E047855Efb414e6202098C4Be4Cd2423B", "links": { - "Homepage": "https://uquidcoin.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://uquidcoin.com" }, "marketcap_usd": 0, "name": "Uquid Coin", @@ -9267,29 +11112,32 @@ "shortcut": "UQC", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:USDM": { "address": "0xD760ADdFb24D9C01Fe4Bfea7475C5e3636684058", "hidden": 1, - "links": { - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - }, + "links": {}, "marketcap_usd": 0, "name": "Mether (USDM)", "network": "eth", "shortcut": "USDM", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:USDT": { "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7", "links": { - "Homepage": "https://tether.to", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://tether.to" }, "marketcap_usd": 0, "name": "USD Tether (erc20)", @@ -9297,14 +11145,16 @@ "shortcut": "USDT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:UTK": { "address": "0x70a72833d6bF7F508C8224CE59ea1Ef3d0Ea3A38", "links": { - "Homepage": "https://utrust.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://utrust.io" }, "marketcap_usd": 0, "name": "UTK", @@ -9312,15 +11162,17 @@ "shortcut": "UTK", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:UTN-P": { "address": "0x9e3319636e2126e3c0bc9e3134AEC5e1508A46c7", "links": { "Github": "https://github.com/UniversaBlockchain/universa", - "Homepage": "https://www.universa.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.universa.io/" }, "marketcap_usd": 0, "name": "Universa", @@ -9328,30 +11180,49 @@ "shortcut": "UTN-P", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:UUU": { + "address": "0x3543638eD4a9006E4840B105944271Bcea15605D", + "links": { + "Homepage": "https://u.network/" + }, + "name": "U Networks", + "network": "eth", + "shortcut": "UUU", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:Unicorn": { "address": "0x89205A3A3b2A69De6Dbf7f01ED13B2108B2c43e7", "hidden": 1, - "links": { - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - }, + "links": {}, "marketcap_usd": 0, "name": "Unicorn", "network": "eth", "shortcut": "Unicorn", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:VDOC": { "address": "0x82BD526bDB718C6d4DD2291Ed013A5186cAE2DCa", "links": { "Github": "https://github.com/BlueBikeSolutions", - "Homepage": "https://www.dutyof.care/token-launch/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.dutyof.care/token-launch/" }, "marketcap_usd": 0, "name": "Duty of Care Token", @@ -9359,15 +11230,17 @@ "shortcut": "VDOC", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:VEE": { "address": "0x340D2bdE5Eb28c1eed91B2f790723E3B160613B7", "links": { "Github": "https://github.com/blockv", - "Homepage": "https://blockv.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://blockv.io" }, "marketcap_usd": 0, "name": "BLOCKv", @@ -9375,14 +11248,16 @@ "shortcut": "VEE", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:VENUS": { "address": "0xEbeD4fF9fe34413db8fC8294556BBD1528a4DAca", "links": { - "Homepage": "http://venuscoin.net", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://venuscoin.net" }, "marketcap_usd": 0, "name": "VENUS", @@ -9390,14 +11265,16 @@ "shortcut": "VENUS", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:VERI": { "address": "0x8f3470A7388c05eE4e7AF3d01D8C722b0FF52374", "links": { - "Homepage": "http://veritas.veritaseum.com/index.php", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://veritas.veritaseum.com/index.php" }, "marketcap_usd": 0, "name": "Veritas", @@ -9405,15 +11282,17 @@ "shortcut": "VERI", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:VET": { "address": "0xD850942eF8811f2A866692A623011bDE52a462C1", "links": { "Github": "https://github.com/vechain-team", - "Homepage": "https://tokensale.vechain.com/en", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://tokensale.vechain.com/en" }, "marketcap_usd": 0, "name": "Vechain", @@ -9421,14 +11300,16 @@ "shortcut": "VET", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:VIB": { "address": "0x2C974B2d0BA1716E644c1FC59982a89DDD2fF724", "links": { - "Homepage": "https://www.viberate.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.viberate.io" }, "marketcap_usd": 0, "name": "VIB", @@ -9436,15 +11317,17 @@ "shortcut": "VIB", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:VIBEX": { "address": "0x882448f83d90B2bf477Af2eA79327fDEA1335D93", "links": { "Github": "https://github.com/amack2u/VibeHub", - "Homepage": "https://vibehub.io/ico/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://vibehub.io/ico/" }, "marketcap_usd": 0, "name": "VIBEX", @@ -9452,14 +11335,16 @@ "shortcut": "VIBEX", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:VIEW": { "address": "0xF03f8D65BaFA598611C3495124093c56e8F638f0", "links": { - "Homepage": "https://view.ly/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://view.ly/" }, "marketcap_usd": 0, "name": "Viewly", @@ -9467,15 +11352,17 @@ "shortcut": "VIEW", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:VIT": { "address": "0x23b75Bc7AaF28e2d6628C3f424B3882F8f072a3c", "links": { "Github": "https://github.com/ViceIndustryToken", - "Homepage": "https://vicetoken.com/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://vicetoken.com/" }, "marketcap_usd": 0, "name": "Vice Industry Token", @@ -9483,15 +11370,17 @@ "shortcut": "VIT", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:VIU": { "address": "0x519475b31653E46D20cD09F9FdcF3B12BDAcB4f5", "links": { "Github": "https://github.com/viuly", - "Homepage": "https://viuly.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://viuly.io" }, "marketcap_usd": 0, "name": "VIU", @@ -9499,15 +11388,17 @@ "shortcut": "VIU", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:VLD": { "address": "0x922aC473A3cC241fD3a0049Ed14536452D58D73c", "links": { "Github": "https://github.com/valid-global/", - "Homepage": "https://valid.global/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://valid.global/" }, "marketcap_usd": 0, "name": "VLD", @@ -9515,15 +11406,17 @@ "shortcut": "VLD", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:VOC": { "address": "0xc3bC9Eb71f75Ec439A6b6C8E8b746fCF5b62F703", "links": { "Github": "https://github.com/vormacoin", - "Homepage": "https://vormacoin.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://vormacoin.io/" }, "marketcap_usd": 0, "name": "VORMACOIN", @@ -9531,14 +11424,16 @@ "shortcut": "VOC", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:VOISE": { "address": "0x83eEA00D838f92dEC4D1475697B9f4D3537b56E3", "links": { - "Homepage": "https://voise.it", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://voise.it" }, "marketcap_usd": 0, "name": "Voise", @@ -9546,14 +11441,16 @@ "shortcut": "VOISE", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:VRS": { "address": "0xeDBaF3c5100302dCddA53269322f3730b1F0416d", "links": { - "Homepage": "https://veros.org", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://veros.org" }, "marketcap_usd": 0, "name": "Veros", @@ -9561,14 +11458,16 @@ "shortcut": "VRS", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:VSL": { "address": "0x5c543e7AE0A1104f78406C340E9C64FD9fCE5170", "links": { - "Homepage": "https://www.vdice.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.vdice.io" }, "marketcap_usd": 0, "name": "Vdice", @@ -9576,30 +11475,34 @@ "shortcut": "VSL", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:WAX": { "address": "0x39Bb259F66E1C59d5ABEF88375979b4D20D98022", "links": { "Github": "https://github.com/waxio", - "Homepage": "https://wax.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://wax.io" }, - "marketcap_usd": 75667822, + "marketcap_usd": 73107807, "name": "WAX", "network": "eth", "shortcut": "WAX", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:WBA": { "address": "0x74951B677de32D596EE851A233336926e6A2cd09", "links": { - "Homepage": "http://webetcrypto.io/wbc", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://webetcrypto.io/wbc" }, "marketcap_usd": 0, "name": "WeBetCrypto", @@ -9607,15 +11510,17 @@ "shortcut": "WBA", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:WCN": { "address": "0x8F936fE0faF0604c9C0Ef2406bde0A65365515d6", "links": { "Github": "https://github.com/WorldCoinNetwork", - "Homepage": "https://worldcoin.cash/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://worldcoin.cash/" }, "marketcap_usd": 0, "name": "WorldCoinNetwork", @@ -9623,14 +11528,16 @@ "shortcut": "WCN", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:WCT": { "address": "0x6a0A97E47d15aAd1D132a1Ac79a480E3F2079063", "links": { - "Homepage": "https://wepower.network", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://wepower.network" }, "marketcap_usd": 0, "name": "WePower", @@ -9638,14 +11545,16 @@ "shortcut": "WCT", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:WETH": { "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", "links": { - "Homepage": "https://weth.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://weth.io" }, "marketcap_usd": 0, "name": "WETH", @@ -9653,15 +11562,17 @@ "shortcut": "WETH", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:WHEN": { "address": "0xF4FE95603881D0e07954fD7605E0e9a916e42C44", "links": { "Github": "https://github.com/WhenHub", - "Homepage": "https://interface.whenhub.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://interface.whenhub.com" }, "marketcap_usd": 0, "name": "WHEN Token", @@ -9669,15 +11580,17 @@ "shortcut": "WHEN", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:WHO": { "address": "0xe200641890772FCe8eE6EDc5354cCEa30ac92F49", "links": { "Github": "https://github.com/chrisbsd/whohas", - "Homepage": "https://whohas.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://whohas.io" }, "marketcap_usd": 0, "name": "WhoHas", @@ -9685,15 +11598,17 @@ "shortcut": "WHO", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:WIC": { "address": "0x62CD07D414Ec50B68C7EcAa863a23d344f2d062f", "links": { "Github": "https://github.com/wicknote/wicknote", - "Homepage": "https://wicknote.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://wicknote.com" }, "marketcap_usd": 0, "name": "WickNote", @@ -9701,15 +11616,17 @@ "shortcut": "WIC", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:WILD": { "address": "0xD3C00772B24D997A812249ca637a921e81357701", "links": { "Github": "https://github.com/WildCryptoICO/Wild-Crypto-Token", - "Homepage": "http://www.wildcrypto.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://www.wildcrypto.com" }, "marketcap_usd": 0, "name": "WILD Token", @@ -9717,29 +11634,33 @@ "shortcut": "WILD", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:WINGS": { "address": "0x667088b212ce3d06a1b553a7221E1fD19000d9aF", "links": { - "Homepage": "https://wings.ai", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://wings.ai" }, - "marketcap_usd": 22437220, + "marketcap_usd": 20449822, "name": "WINGS", "network": "eth", "shortcut": "WINGS", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:WOLK": { "address": "0x728781E75735dc0962Df3a51d7Ef47E798A7107E", "links": { - "Homepage": "https://www.wolk.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.wolk.com" }, "marketcap_usd": 0, "name": "Wolk Token", @@ -9747,14 +11668,33 @@ "shortcut": "WOLK", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:WORK": { + "address": "0xD18e454D844eb0009D32E07A0Cde89E18d64CFb4", + "links": { + "Github": "https://github.com/workchainio", + "Homepage": "https://workchain.io" + }, + "name": "workTOKEN", + "network": "eth", + "shortcut": "WORK", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:WPC": { "address": "0x62087245087125d3DB5B9A3D713d78E7BBc31e54", "links": { - "Homepage": "http://www.worldpeacecoin.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://www.worldpeacecoin.io" }, "marketcap_usd": 0, "name": "WorldPeaceCoin", @@ -9762,14 +11702,16 @@ "shortcut": "WPC", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:WPR": { "address": "0x4CF488387F035FF08c371515562CBa712f9015d4", "links": { - "Homepage": "https://wepower.network", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://wepower.network" }, "marketcap_usd": 0, "name": "WePower Token", @@ -9777,15 +11719,17 @@ "shortcut": "WPR", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:WRK": { "address": "0x71e8d74fF1C923E369D0e70DFb09866629C4DD35", "links": { "Github": "https://github.com/TMWorkCoin", - "Homepage": "https://workcoin.net/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://workcoin.net/" }, "marketcap_usd": 0, "name": "WorkCoin", @@ -9793,15 +11737,49 @@ "shortcut": "WRK", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:WTC": { + "address": "0xb7cB1C96dB6B22b0D3d9536E0108d062BD488F74", + "hidden": 1, + "links": {}, + "name": "Walton", + "network": "eth", + "shortcut": "WTC", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:WYS": { + "address": "0xd8950fDeaa10304B7A7Fd03a2FC66BC39f3c711a", + "links": { + "Github": "https://github.com/wysker", + "Homepage": "https://www.wystoken.org" + }, + "name": "wystoken", + "network": "eth", + "shortcut": "WYS", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:WYV": { "address": "0x056017c55aE7AE32d12AeF7C679dF83A85ca75Ff", "links": { "Github": "https://github.com/ProjectWyvern", - "Homepage": "https://projectwyvern.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://projectwyvern.com" }, "marketcap_usd": 0, "name": "WyvernToken", @@ -9809,29 +11787,33 @@ "shortcut": "WYV", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:WaBi": { "address": "0x286BDA1413a2Df81731D4930ce2F862a35A609fE", "links": { - "Homepage": "https://www.wacoin.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.wacoin.io" }, - "marketcap_usd": 19071548, + "marketcap_usd": 16304857, "name": "WaBi", "network": "eth", "shortcut": "WaBi", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:WiC": { "address": "0x5e4ABE6419650CA839Ce5BB7Db422b881a6064bB", "links": { - "Homepage": "https://www.cryptowi.com/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.cryptowi.com/" }, "marketcap_usd": 0, "name": "Wi Coin", @@ -9839,14 +11821,16 @@ "shortcut": "WiC", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:X8X": { "address": "0x910Dfc18D6EA3D6a7124A6F8B5458F281060fa4c", "links": { - "Homepage": "https://x8currency.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://x8currency.com" }, "marketcap_usd": 0, "name": "X8X", @@ -9854,14 +11838,16 @@ "shortcut": "X8X", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:XAUR": { "address": "0x4DF812F6064def1e5e029f1ca858777CC98D2D81", "links": { - "Homepage": "http://www.xaurum.org", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://www.xaurum.org" }, "marketcap_usd": 0, "name": "Xaurum", @@ -9869,15 +11855,17 @@ "shortcut": "XAUR", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:XBP": { "address": "0x28dee01D53FED0Edf5f6E310BF8Ef9311513Ae40", "links": { "Github": "https://github.com/blitzpredict", - "Homepage": "https://www.blitzpredict.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.blitzpredict.io" }, "marketcap_usd": 0, "name": "BlitzPredict", @@ -9885,15 +11873,17 @@ "shortcut": "XBP", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:XCC": { "address": "0x4d829f8C92a6691c56300D020c9e0dB984Cfe2BA", "links": { "Github": "https://github.com/coincrowd-it", - "Homepage": "https://www.coincrowd.it", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.coincrowd.it" }, "marketcap_usd": 0, "name": "CoinCrowd", @@ -9901,15 +11891,33 @@ "shortcut": "XCC", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:XFS": { + "address": "0x16aF5bfb4Ae7E475b9aDC3Bf5Cb2f1E6a50d7940", + "links": { + "Homepage": "http://fanship.world/" + }, + "name": "Fanship", + "network": "eth", + "shortcut": "XFS", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:XGG": { "address": "0xf6b6AA0Ef0f5Edc2C1c5d925477F97eAF66303e7", "links": { "Github": "https://github.com/GoingGems", - "Homepage": "https://www.going-gems.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.going-gems.com" }, "marketcap_usd": 0, "name": "Going Gems", @@ -9917,14 +11925,16 @@ "shortcut": "XGG", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:XGM": { "address": "0x533ef0984b2FAA227AcC620C67cce12aA39CD8CD", "links": { - "Homepage": "https://www.xaurum.org/gamma", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.xaurum.org/gamma" }, "marketcap_usd": 0, "name": "XGM", @@ -9932,15 +11942,17 @@ "shortcut": "XGM", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:XGT": { "address": "0x30f4A3e0aB7a76733D8b60b89DD93c3D0b4c9E2f", "links": { "Github": "https://github.com/CryptogeneProject/CryptogeneToken", - "Homepage": "https://cryptogene.co", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://cryptogene.co" }, "marketcap_usd": 0, "name": "XGT", @@ -9948,14 +11960,16 @@ "shortcut": "XGT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:XID": { "address": "0xB110eC7B1dcb8FAB8dEDbf28f53Bc63eA5BEdd84", "links": { - "Homepage": "https://sphereidentity.com/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://sphereidentity.com/" }, "marketcap_usd": 0, "name": "XID", @@ -9963,15 +11977,17 @@ "shortcut": "XID", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:XNK": { "address": "0xBC86727E770de68B1060C91f6BB6945c73e10388", "links": { "Github": "https://github.com/InkProtocol/", - "Homepage": "https://paywithink.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://paywithink.com" }, "marketcap_usd": 0, "name": "Ink Protocol", @@ -9979,14 +11995,16 @@ "shortcut": "XNK", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:XNN": { "address": "0xab95E915c123fdEd5BDfB6325e35ef5515F1EA69", "links": { - "Homepage": "https://xenon.network", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://xenon.network" }, "marketcap_usd": 0, "name": "XENON", @@ -9994,14 +12012,16 @@ "shortcut": "XNN", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:XNT": { "address": "0x572E6f318056ba0C5d47A422653113843D250691", "links": { - "Homepage": "https://exante.eu", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://exante.eu" }, "marketcap_usd": 0, "name": "XNT", @@ -10009,14 +12029,16 @@ "shortcut": "XNT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:XRL": { "address": "0xB24754bE79281553dc1adC160ddF5Cd9b74361a4", "links": { - "Homepage": "https://rialto.ai/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://rialto.ai/" }, "marketcap_usd": 0, "name": "XRL", @@ -10024,14 +12046,16 @@ "shortcut": "XRL", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:XSC": { "address": "0x0F513fFb4926ff82D7F60A05069047AcA295C413", "links": { - "Homepage": "http://crowdstart.capital", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://crowdstart.capital" }, "marketcap_usd": 0, "name": "XSC", @@ -10039,14 +12063,16 @@ "shortcut": "XSC", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:YEED": { "address": "0x6F7A4bac3315B5082F793161a22e26666d22717f", "links": { - "Homepage": "https://yggdrash.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://yggdrash.io" }, "marketcap_usd": 0, "name": "YEED", @@ -10054,16 +12080,18 @@ "shortcut": "YEED", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:YUPIE": { - "hidden": 1, "address": "0x0F33bb20a282A7649C7B3AFf644F084a9348e933", + "hidden": 1, "links": { "Github": "https://github.com/crowdholdingico/YupieSmartContract", - "Homepage": "https://www.crowdholding.com/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.crowdholding.com/" }, "marketcap_usd": 0, "name": "YUPIE", @@ -10071,30 +12099,34 @@ "shortcut": "YUPIE", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ZAP": { "address": "0x6781a0F84c7E9e846DCb84A9a5bd49333067b104", "links": { "Github": "https://github.com/zapproject", - "Homepage": "https://zap.store", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://zap.store" }, - "marketcap_usd": 5778446, + "marketcap_usd": 4909978, "name": "ZAP", "network": "eth", "shortcut": "ZAP", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ZCS": { "address": "0x7A41e0517a5ecA4FdbC7FbebA4D4c47B9fF6DC63", "links": { - "Homepage": "https://zsc.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://zsc.io/" }, "marketcap_usd": 0, "name": "Zeusshield", @@ -10102,15 +12134,17 @@ "shortcut": "ZCS", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ZIL": { "address": "0x05f4a42e251f2d52b8ed15E9FEdAacFcEF1FAD27", "links": { "Github": "https://github.com/zilliqa", - "Homepage": "https://www.zilliqa.com/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.zilliqa.com/" }, "marketcap_usd": 0, "name": "Zilliqa", @@ -10118,14 +12152,16 @@ "shortcut": "ZIL", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ZMN": { "address": "0x554FFc77F4251a9fB3c0E3590a6a205f8d4e067D", "links": { - "Homepage": "https://www.zmine.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.zmine.com" }, "marketcap_usd": 0, "name": "ZMINE", @@ -10133,15 +12169,17 @@ "shortcut": "ZMN", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ZRX": { "address": "0xE41d2489571d322189246DaFA5ebDe1F4699F498", "links": { "Github": "https://github.com/0xProject", - "Homepage": "https://0xproject.com/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://0xproject.com/" }, "marketcap_usd": 0, "name": "0x Project", @@ -10149,14 +12187,16 @@ "shortcut": "ZRX", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:ZST": { "address": "0xe386B139Ed3715Ca4B18Fd52671bDcea1cdFE4b1", "links": { - "Homepage": "http://zeus.exchange", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://zeus.exchange" }, "marketcap_usd": 0, "name": "Zeus Exchange", @@ -10164,15 +12204,17 @@ "shortcut": "ZST", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:cV": { "address": "0xdA6cb58A0D0C01610a29c5A65c303e13e885887C", "links": { "Github": "https://github.com/carVertical", - "Homepage": "https://www.carvertical.com", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.carvertical.com" }, "marketcap_usd": 0, "name": "carVertical", @@ -10180,14 +12222,16 @@ "shortcut": "cV", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:eBCH": { "address": "0xaFC39788c51f0c1Ff7B55317f3e70299e521Fff6", "links": { - "Homepage": "https://ebitcoincash.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://ebitcoincash.io" }, "marketcap_usd": 0, "name": "eBCH", @@ -10195,15 +12239,17 @@ "shortcut": "eBCH", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:eBTC": { "address": "0xeB7C20027172E5d143fB030d50f91Cece2D1485D", "links": { "Github": "https://github.com/eBTCCommunityTrustToken/eBTC", - "Homepage": "https://ebitcoin.org", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://ebitcoin.org" }, "marketcap_usd": 0, "name": "eBTC", @@ -10211,14 +12257,16 @@ "shortcut": "eBTC", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:eGAS": { "address": "0xb53A96bcBdD9CF78dfF20BAB6C2be7bAec8f00f8", "links": { - "Homepage": "http://www.ethgas.stream", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "http://www.ethgas.stream" }, "marketcap_usd": 0, "name": "ETH GAS", @@ -10226,15 +12274,17 @@ "shortcut": "eGAS", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:eUSD": { "address": "0x523630976eB6147621B5c31c781eBe2Ec2a806E0", "links": { "Github": "https://github.com/havven/havven", - "Homepage": "https://havven.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://havven.io" }, "marketcap_usd": 0, "name": "Ether-Backed USD Nomins (erc20)", @@ -10242,31 +12292,67 @@ "shortcut": "eUSD", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:eosDAC": { "address": "0x7e9e431a0B8c4D532C745B1043c7FA29a48D4fBa", "links": { "Github": "https://github.com/eosdac", - "Homepage": "https://eosdac.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://eosdac.io/" }, - "marketcap_usd": 85974160, + "marketcap_usd": 75146365, "name": "eosDAC", "network": "eth", "shortcut": "eosDAC", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:nCash": { + "address": "0x809826cceAb68c387726af962713b64Cb5Cb3CCA", + "hidden": 1, + "links": {}, + "name": "NucleusVision", + "network": "eth", + "shortcut": "nCash", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:nUSD": { + "address": "0x57Ab1E02fEE23774580C119740129eAC7081e9D3", + "links": { + "Github": "https://github.com/havven/havven", + "Homepage": "https://www.havven.io" + }, + "name": "Havven-Backed USD Nomins (nUSD)", + "network": "eth", + "shortcut": "nUSD", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:eth:onG": { "address": "0xd341d1680Eeee3255b8C4c75bCCE7EB57f144dAe", "links": { "Github": "https://github.com/onGsocial", - "Homepage": "https://ongcoin.io", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://ongcoin.io" }, "marketcap_usd": 0, "name": "onG", @@ -10274,29 +12360,207 @@ "shortcut": "onG", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, - "erc20:ubq:BEER": { - "address": "0xFF3bF057ADF3b0E015b6465331a6236e55688274", + "erc20:kov:Aeternity": { + "address": "0x8667559254241ddeD4d11392f868d72092765367", + "hidden": 1, + "links": {}, + "marketcap_usd": 516853388, + "name": "Aeternity", + "network": "kov", + "shortcut": "Aeternity", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:kov:GUP": { + "address": "0x3C67f7D4decF7795225f51b54134F81137385f83", "hidden": 1, + "links": {}, + "marketcap_usd": 0, + "name": "GUP", + "network": "kov", + "shortcut": "GUP", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:rin:AETH": { + "address": "0x398A7A69f3c59181A1ffe34bed11DCb5DF863A8a", + "links": { + "Homepage": "http://akasha.world" + }, + "marketcap_usd": 0, + "name": "AKASHA Tokens", + "network": "rin", + "shortcut": "AETH", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:rin:BHNT": { + "address": "0xe27826eE778B6F78a49a686dA7D64f6E7b084a4f", + "links": { + "Homepage": "http://berlin.hackandtell.org" + }, + "marketcap_usd": 0, + "name": "Berlin Hack&Tell winner token", + "network": "rin", + "shortcut": "BHNT", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:rin:CTGA": { + "address": "0x8B65d4B7ee3FFFA986C577F0F4b70a21BaE3dD54", + "links": { + "Homepage": "https://www.ctgcoin.org" + }, + "name": "Convenient To Go", + "network": "rin", + "shortcut": "CTGA", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:rin:KC": { + "address": "0x275A5B346599b56917e7B1C9de019DCf9EaD861a", "links": { - "MyCrypto Wallet": "https://mycrypto.com", + "Homepage": "https://baseblock.io/" + }, + "name": "Karma Token", + "network": "rin", + "shortcut": "KC", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:rin:NONE": { + "address": "0x6475A7FA6Ed2D5180F0e0a07c2d951D12C0EDB91", + "hidden": 1, + "links": {}, + "name": "None", + "network": "rin", + "shortcut": "NONE", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:rin:PPD": { + "address": "0x12fE174C097F6B3e876B3b060C9061F4B9dEBB80", + "hidden": 1, + "links": {}, + "name": "PP Donation", + "network": "rin", + "shortcut": "PPD", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:rin:WALL": { + "address": "0x0A057a87CE9C56D7e336B417c79cf30E8d27860B", + "links": { + "Homepage": "https://walleth.org" }, "marketcap_usd": 0, + "name": "WALLETH Community-Token", + "network": "rin", + "shortcut": "WALL", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:rop:ILSC": { + "address": "0x6f95a3B682F8e9aacC86D057A6DF88A0E68145A8", + "hidden": 1, + "links": {}, + "name": "IsraCoin", + "network": "rop", + "shortcut": "ILSC", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:rop:NONE": { + "address": "0xFD5a69A1309595FF5121553F52C8A5B2B1B31031", + "hidden": 1, + "links": {}, + "name": "None", + "network": "rop", + "shortcut": "NONE", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:ubq:BEER": { + "address": "0xFF3bF057ADF3b0E015b6465331a6236e55688274", + "hidden": 1, + "links": {}, + "marketcap_usd": 0, "name": "BEER", "network": "ubq", "shortcut": "BEER", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:ubq:CEFS": { "address": "0x08533D6A06CE365298b12Ef92eb407cBA8Aa8273", "links": { - "Homepage": "https://www.cryptopiashares.com/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.cryptopiashares.com/" }, "marketcap_usd": 0, "name": "CEFS", @@ -10304,44 +12568,49 @@ "shortcut": "CEFS", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:ubq:DOT": { "address": "0x94aD7e41c1D44022C4F47cb1Ba019Fd1a022c536", "hidden": 1, - "links": { - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - }, + "links": {}, "marketcap_usd": 0, "name": "DOT", "network": "ubq", "shortcut": "DOT", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:ubq:QWARK": { "address": "0x4b4899a10F3E507DB207b0ee2426029eFa168a67", "links": { - "Homepage": "https://www.qwark.io/", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://www.qwark.io/" }, - "marketcap_usd": 2625904, + "marketcap_usd": 2411381, "name": "QWARK", "network": "ubq", "shortcut": "QWARK", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "erc20:ubq:RICKS": { "address": "0x5e1715bB79805Bd672729760B3f7F34D6f485098", "links": { - "Homepage": "https://picklericks.wixsite.com/picklewix", - "MyCrypto Wallet": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" + "Homepage": "https://picklericks.wixsite.com/picklewix" }, "marketcap_usd": 0, "name": "RICKS", @@ -10349,88 +12618,104 @@ "shortcut": "RICKS", "t1_enabled": "soon", "t2_enabled": "yes", - "type": "erc20" + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } }, "mosaic:BREEZE": { "links": { - "Homepage": "https://breeze.chat", - "Nano Wallet": "https://nem.io/downloads/" + "Homepage": "https://breeze.chat" }, "marketcap_usd": 0, "name": "Breeze Token", "shortcut": "BREEZE", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "mosaic" + "type": "mosaic", + "wallet": { + "Nano Wallet": "https://nem.io/downloads/" + } }, "mosaic:DIM": { "links": { - "Homepage": "https://www.dimcoin.io", - "Nano Wallet": "https://nem.io/downloads/" + "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 11611041, + "marketcap_usd": 10436992, "name": "DIMCOIN", "shortcut": "DIM", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "mosaic" + "type": "mosaic", + "wallet": { + "Nano Wallet": "https://nem.io/downloads/" + } }, "mosaic:DIMTOK": { "coinmarketcap_alias": "dimcoin", "links": { - "Homepage": "https://www.dimcoin.io", - "Nano Wallet": "https://nem.io/downloads/" + "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 11611041, + "marketcap_usd": 10436992, "name": "DIM TOKEN", "shortcut": "DIMTOK", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "mosaic" + "type": "mosaic", + "wallet": { + "Nano Wallet": "https://nem.io/downloads/" + } }, "mosaic:PAC:CHS": { "links": { - "Homepage": "https://pacnem.com", - "Nano Wallet": "https://nem.io/downloads/" + "Homepage": "https://pacnem.com" }, "marketcap_usd": 0, "name": "PacNEM Score Tokens", "shortcut": "PAC:CHS", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "mosaic" + "type": "mosaic", + "wallet": { + "Nano Wallet": "https://nem.io/downloads/" + } }, "mosaic:PAC:HRT": { "links": { - "Homepage": "https://pacnem.com", - "Nano Wallet": "https://nem.io/downloads/" + "Homepage": "https://pacnem.com" }, "marketcap_usd": 0, "name": "PacNEM Game Credits", "shortcut": "PAC:HRT", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "mosaic" + "type": "mosaic", + "wallet": { + "Nano Wallet": "https://nem.io/downloads/" + } }, "mosaic:XEM": { "links": { - "Homepage": "https://nem.io", - "Nano Wallet": "https://nem.io/downloads/" + "Homepage": "https://nem.io" }, - "marketcap_usd": 1732770000, + "marketcap_usd": 1560150000, "name": "NEM", "shortcut": "XEM", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "mosaic" + "type": "mosaic", + "wallet": { + "Nano Wallet": "https://nem.io/downloads/" + } } }, "info": { - "marketcap_usd": 211478474055, + "marketcap_usd": 197138853793, "t1_coins": 135, - "t2_coins": 520, - "total_marketcap_usd": 287894027181, - "updated_at": 1529586398, - "updated_at_readable": "Thu Jun 21 15:06:38 2018" + "t2_coins": 521, + "total_marketcap_usd": 267715497595, + "updated_at": 1529671061, + "updated_at_readable": "Fri Jun 22 14:37:41 2018" } -} +} \ No newline at end of file diff --git a/tools/coins_details.py b/tools/coins_details.py index c481b6525..b436c3fb9 100755 --- a/tools/coins_details.py +++ b/tools/coins_details.py @@ -151,6 +151,7 @@ def update_erc20(details): set_default(out, 'shortcut', t['symbol']) set_default(out, 'name', t['name']) set_default(out, 'links', {}) + set_default(out, 'wallet', {}) if "\" %s\"" % t['symbol'] in tokens_t1: out['t1_enabled'] = 'yes' @@ -162,8 +163,8 @@ def update_erc20(details): else: out['t2_enabled'] = 'soon' - out['links']['MyCrypto Wallet'] = 'https://mycrypto.com' - out['links']['MyEtherWallet'] = 'https://www.myetherwallet.com' + out['wallet']['MyCrypto'] = 'https://mycrypto.com' + out['wallet']['MyEtherWallet'] = 'https://www.myetherwallet.com' if t['website']: out['links']['Homepage'] = t['website'] @@ -286,19 +287,12 @@ def check_missing_details(details): if coin['t2_enabled'] not in ('yes', 'no', 'planned', 'soon'): print("%s: Unknown t2_enabled" % k) hide = True - if 'Trezor Wallet' in coin.get('links', {}) and coin['links']['Trezor Wallet'] != 'https://wallet.trezor.io': + if 'Trezor' in coin.get('wallet', {}) and coin['wallet']['Trezor'] != 'https://wallet.trezor.io': print("%s: Strange URL for Trezor Wallet" % k) hide = True - for w in [x.lower() for x in coin.get('links', {}).keys()]: - if 'wallet' in w or 'electrum' in w: - break - else: - if coin['t1_enabled'] == 'yes' or coin['t2_enabled'] == 'yes': - print("%s: Missing wallet" % k) - hide = True - else: - print("%s: Missing wallet, but not hiding" % k) + if len(coin.get('wallet', {})) == 0: + print("%s: Missing wallet" % k) if hide: if coin.get('hidden') != 1: From a2250e16c98ee022fef568c3263f6b1ff26ca7ff Mon Sep 17 00:00:00 2001 From: WO <35449969+wo01@users.noreply.github.com> Date: Sat, 23 Jun 2018 19:28:19 +0900 Subject: [PATCH 389/767] Update version group id (#144) --- defs/coins/koto.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/defs/coins/koto.json b/defs/coins/koto.json index 0b3a20fc7..ff16a40b6 100644 --- a/defs/coins/koto.json +++ b/defs/coins/koto.json @@ -23,7 +23,7 @@ "decred": false, "fork_id": null, "force_bip143": false, - "version_group_id": null, + "version_group_id": 48748912, "default_fee_b": { "Normal": 10 }, From a01314de1a234241d632adf9d110e00d0d0e8c25 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Sat, 23 Jun 2018 12:33:59 +0200 Subject: [PATCH 390/767] travis: update script --- .travis.yml | 2 +- tools/build_coins.py | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 2de72dd7b..4b606dc25 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,7 +17,7 @@ install: script: - jsonlint defs/*.json - - cd defs/coins/tools && python build_coins.py + - python tools/build_coins.py --defs notifications: webhooks: diff --git a/tools/build_coins.py b/tools/build_coins.py index cb3053db5..abac8b6d0 100755 --- a/tools/build_coins.py +++ b/tools/build_coins.py @@ -173,6 +173,7 @@ def process_json(fn): print('OK') return j, None + def process(for_device=None): scriptdir = os.path.dirname(os.path.realpath(__file__)) @@ -189,19 +190,20 @@ def process(for_device=None): n = c['coin_name'] c['support'] = {} for s in support_json.keys(): - c['support'][s] = support_json[s][n] if n in support_json[s] else None + c['support'][s] = support_json[s][n] if n in support_json[s] else None # noqa:E501 if support_list is None or n in support_list: coins[n] = c defs[n] = d return (coins, defs) + if __name__ == '__main__': if len(sys.argv) > 1 and not sys.argv[1].startswith('-'): for_device = sys.argv[1] else: for_device = None - + (coins, defs) = process(for_device) json.dump(coins, open('coins.json', 'w'), indent=4, sort_keys=True) From 6c540dbfff82c0cfcd23b09fe79ef6292e124ae1 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 25 Jun 2018 12:17:52 +0200 Subject: [PATCH 391/767] defs: update trezor.io backends --- .travis.yml | 1 + defs/coins/bcash.json | 12 ++++++++---- defs/coins/bgold.json | 12 ++++++++---- defs/coins/bitcoin.json | 17 ++++++++--------- defs/coins/bitcoin_testnet.json | 5 +---- defs/coins/dash.json | 13 ++++++++----- defs/coins/dogecoin.json | 8 +++++++- defs/coins/litecoin.json | 12 ++++++++---- defs/coins/vertcoin.json | 8 +++++++- defs/coins/zcash.json | 12 ++++++++---- 10 files changed, 64 insertions(+), 36 deletions(-) diff --git a/.travis.yml b/.travis.yml index 4b606dc25..601ad8809 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,6 +17,7 @@ install: script: - jsonlint defs/*.json + - jsonlint defs/*/*.json - python tools/build_coins.py --defs notifications: diff --git a/defs/coins/bcash.json b/defs/coins/bcash.json index eabb996ec..b8888649e 100644 --- a/defs/coins/bcash.json +++ b/defs/coins/bcash.json @@ -35,8 +35,12 @@ "address_prefix": "bitcoincash:", "min_address_length": 27, "max_address_length": 34, - "bitcore": [ - "https://bch-bitcore2.trezor.io" - ], - "blockbook": [] + "bitcore": [], + "blockbook": [ + "https://bch1.trezor.io", + "https://bch2.trezor.io", + "https://bch3.trezor.io", + "https://bch4.trezor.io", + "https://bch5.trezor.io" + ] } diff --git a/defs/coins/bgold.json b/defs/coins/bgold.json index fff12d910..4016b2ad2 100644 --- a/defs/coins/bgold.json +++ b/defs/coins/bgold.json @@ -35,8 +35,12 @@ "address_prefix": "bitcoingold:", "min_address_length": 27, "max_address_length": 34, - "bitcore": [ - "https://btg-bitcore2.trezor.io" - ], - "blockbook": [] + "bitcore": [], + "blockbook": [ + "https://btg1.trezor.io", + "https://btg2.trezor.io", + "https://btg3.trezor.io", + "https://btg4.trezor.io", + "https://btg5.trezor.io" + ] } diff --git a/defs/coins/bitcoin.json b/defs/coins/bitcoin.json index c81dd7195..d3f5e04b2 100644 --- a/defs/coins/bitcoin.json +++ b/defs/coins/bitcoin.json @@ -35,13 +35,12 @@ "address_prefix": "bitcoin:", "min_address_length": 27, "max_address_length": 34, - "bitcore": [ - "https://btc-bitcore1.trezor.io", - "https://btc-bitcore2.trezor.io", - "https://btc-bitcore3.trezor.io", - "https://btc-bitcore4.trezor.io", - "https://btc-bitcore5.trezor.io", - "https://btc-bitcore6.trezor.io" - ], - "blockbook": [] + "bitcore": [], + "blockbook": [ + "https://btc1.trezor.io", + "https://btc2.trezor.io", + "https://btc3.trezor.io", + "https://btc4.trezor.io", + "https://btc5.trezor.io" + ] } diff --git a/defs/coins/bitcoin_testnet.json b/defs/coins/bitcoin_testnet.json index f911521c6..cdf2d5e1c 100644 --- a/defs/coins/bitcoin_testnet.json +++ b/defs/coins/bitcoin_testnet.json @@ -32,9 +32,6 @@ "address_prefix": "bitcoin:", "min_address_length": 27, "max_address_length": 34, - "bitcore": [ - "https://testnet-bitcore1.trezor.io", - "https://testnet-bitcore2.trezor.io" - ], + "bitcore": [], "blockbook": [] } diff --git a/defs/coins/dash.json b/defs/coins/dash.json index fb16f3d85..106d5a1c8 100644 --- a/defs/coins/dash.json +++ b/defs/coins/dash.json @@ -32,9 +32,12 @@ "address_prefix": "dash:", "min_address_length": 27, "max_address_length": 34, - "bitcore": [ - "https://dash-bitcore1.trezor.io", - "https://dash-bitcore3.trezor.io" - ], - "blockbook": [] + "bitcore": [], + "blockbook": [ + "https://dash1.trezor.io", + "https://dash2.trezor.io", + "https://dash3.trezor.io", + "https://dash4.trezor.io", + "https://dash5.trezor.io" + ] } diff --git a/defs/coins/dogecoin.json b/defs/coins/dogecoin.json index 19da32f29..2329f5085 100644 --- a/defs/coins/dogecoin.json +++ b/defs/coins/dogecoin.json @@ -33,5 +33,11 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [], - "blockbook": [] + "blockbook": [ + "https://doge1.trezor.io", + "https://doge2.trezor.io", + "https://doge3.trezor.io", + "https://doge4.trezor.io", + "https://doge5.trezor.io" + ] } diff --git a/defs/coins/litecoin.json b/defs/coins/litecoin.json index 453fe1776..c703e009b 100644 --- a/defs/coins/litecoin.json +++ b/defs/coins/litecoin.json @@ -32,8 +32,12 @@ "address_prefix": "litecoin:", "min_address_length": 27, "max_address_length": 34, - "bitcore": [ - "https://ltc-bitcore3.trezor.io" - ], - "blockbook": [] + "bitcore": [], + "blockbook": [ + "https://ltc1.trezor.io", + "https://ltc2.trezor.io", + "https://ltc3.trezor.io", + "https://ltc4.trezor.io", + "https://ltc5.trezor.io" + ] } diff --git a/defs/coins/vertcoin.json b/defs/coins/vertcoin.json index b6cb72eb1..d511acb74 100644 --- a/defs/coins/vertcoin.json +++ b/defs/coins/vertcoin.json @@ -33,5 +33,11 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [], - "blockbook": [] + "blockbook": [ + "https://vtc1.trezor.io", + "https://vtc2.trezor.io", + "https://vtc3.trezor.io", + "https://vtc4.trezor.io", + "https://vtc5.trezor.io" + ] } diff --git a/defs/coins/zcash.json b/defs/coins/zcash.json index c5704e730..0d83e9d3d 100644 --- a/defs/coins/zcash.json +++ b/defs/coins/zcash.json @@ -32,8 +32,12 @@ "address_prefix": "zcash:", "min_address_length": 35, "max_address_length": 95, - "bitcore": [ - "https://zec-bitcore1.trezor.io" - ], - "blockbook": [] + "bitcore": [], + "blockbook": [ + "https://zec1.trezor.io", + "https://zec2.trezor.io", + "https://zec3.trezor.io", + "https://zec4.trezor.io", + "https://zec5.trezor.io" + ] } From 0463a2adf2d3f3a785117a5c546e27b190a71fc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20B=C3=ADlek?= Date: Mon, 25 Jun 2018 14:58:14 +0200 Subject: [PATCH 392/767] defs: Add vertcoin as wallet supported coin --- defs/support.json | 1 + 1 file changed, 1 insertion(+) diff --git a/defs/support.json b/defs/support.json index ee9c4b933..70180deab 100644 --- a/defs/support.json +++ b/defs/support.json @@ -74,6 +74,7 @@ "Litecoin": true, "Litecoin Testnet": true, "Monacoin": true, + "Vertcoin": true, "Viacoin": true, "Zcash": true, "Zcash Testnet": true, From b3276879db396e65ccd0b970a8275d67f2e78093 Mon Sep 17 00:00:00 2001 From: slush Date: Mon, 25 Jun 2018 20:20:28 +0200 Subject: [PATCH 393/767] Updated coin support for FW 1.6.2/2.0.7 --- defs/coins_details.json | 1733 ++++++++++++++++++++------------------- tools/coins_details.py | 4 +- 2 files changed, 895 insertions(+), 842 deletions(-) diff --git a/defs/coins_details.json b/defs/coins_details.json index 26cad57a4..0ce60adac 100644 --- a/defs/coins_details.json +++ b/defs/coins_details.json @@ -19,7 +19,7 @@ "links": { "Homepage": "https://ellaism.org" }, - "marketcap_usd": 890621, + "marketcap_usd": 857822, "name": "Ellaism", "shortcut": "ELLA", "t1_enabled": "yes", @@ -49,7 +49,7 @@ "links": { "Homepage": "https://ethereumclassic.github.io" }, - "marketcap_usd": 1647351620, + "marketcap_usd": 1609643245, "name": "Ethereum Classic", "shortcut": "ETC", "t1_enabled": "yes", @@ -64,7 +64,7 @@ "links": { "Homepage": "https://www.ethereum.org" }, - "marketcap_usd": 48815875980, + "marketcap_usd": 46417902414, "name": "Ethereum", "shortcut": "ETH", "t1_enabled": "yes", @@ -94,7 +94,7 @@ "links": { "Homepage": "https://www.expanse.tech" }, - "marketcap_usd": 7739651, + "marketcap_usd": 6940780, "name": "Expanse", "shortcut": "EXP", "t1_enabled": "yes", @@ -106,7 +106,6 @@ } }, "coin2:LSK": { - "hidden": 1, "links": { "Homepage": "https://lisk.io/" }, @@ -136,7 +135,7 @@ "links": { "Homepage": "https://ubiqsmart.com" }, - "marketcap_usd": 37367944, + "marketcap_usd": 36399330, "name": "Ubiq", "shortcut": "UBQ", "t1_enabled": "yes", @@ -187,7 +186,7 @@ "Github": "https://github.com/Bitcoin-ABC/bitcoin-abc", "Homepage": "https://www.bitcoincash.org/" }, - "marketcap_usd": 13856637255, + "marketcap_usd": 13126382269, "name": "Bitcoin Cash", "shortcut": "BCH", "t1_enabled": "yes", @@ -203,7 +202,7 @@ "Github": "https://github.com/bitcoin/bitcoin", "Homepage": "https://bitcoin.org" }, - "marketcap_usd": 109004270722, + "marketcap_usd": 108045572488, "name": "Bitcoin", "shortcut": "BTC", "t1_enabled": "yes", @@ -220,7 +219,7 @@ "Github": "https://github.com/BTCPrivate/BitcoinPrivate", "Homepage": "https://btcprivate.org" }, - "marketcap_usd": 277904492, + "marketcap_usd": 248142676, "name": "Bitcoin Private", "shortcut": "BTCP", "t1_enabled": "yes", @@ -232,7 +231,7 @@ "Github": "https://github.com/BTCGPU/BTCGPU", "Homepage": "https://bitcoingold.org" }, - "marketcap_usd": 499820644, + "marketcap_usd": 434612617, "name": "Bitcoin Gold", "shortcut": "BTG", "t1_enabled": "yes", @@ -247,7 +246,7 @@ "Github": "https://github.com/LIMXTEC/BitCore", "Homepage": "https://bitcore.cc" }, - "marketcap_usd": 34933288, + "marketcap_usd": 29535970, "name": "Bitcore", "shortcut": "BTX", "t1_enabled": "no", @@ -259,7 +258,7 @@ "Github": "https://github.com/Crowndev/crowncoin", "Homepage": "https://crown.tech" }, - "marketcap_usd": 10891329, + "marketcap_usd": 10022779, "name": "Crown", "shortcut": "CRW", "t1_enabled": "no", @@ -271,7 +270,7 @@ "Github": "https://github.com/dashpay/dash", "Homepage": "https://www.dash.org" }, - "marketcap_usd": 1989333072, + "marketcap_usd": 1981826537, "name": "Dash", "shortcut": "DASH", "t1_enabled": "yes", @@ -282,16 +281,15 @@ } }, "coin:DCR": { - "hidden": 1, "links": { "Github": "https://github.com/decred/dcrd", "Homepage": "https://www.decred.org" }, - "marketcap_usd": 595891362, + "marketcap_usd": 534974618, "name": "Decred", "shortcut": "DCR", "t1_enabled": "yes", - "t2_enabled": "no", + "t2_enabled": "yes", "type": "coin" }, "coin:DGB": { @@ -300,7 +298,7 @@ "Github": "https://github.com/digibyte/digibyte", "Homepage": "https://www.digibyte.co" }, - "marketcap_usd": 245542735, + "marketcap_usd": 218316945, "name": "DigiByte", "shortcut": "DGB", "t1_enabled": "yes", @@ -323,7 +321,7 @@ "Github": "https://github.com/dogecoin/dogecoin", "Homepage": "https://dogecoin.com" }, - "marketcap_usd": 320352269, + "marketcap_usd": 291002463, "name": "Dogecoin", "shortcut": "DOGE", "t1_enabled": "yes", @@ -338,7 +336,7 @@ "Github": "https://github.com/fujicoin/fujicoin", "Homepage": "https://www.fujicoin.org" }, - "marketcap_usd": 498907, + "marketcap_usd": 483781, "name": "Fujicoin", "shortcut": "FJC", "t1_enabled": "yes", @@ -364,7 +362,7 @@ "Github": "https://github.com/FeatherCoin/Feathercoin", "Homepage": "https://feathercoin.com" }, - "marketcap_usd": 33149194, + "marketcap_usd": 20641823, "name": "Feathercoin", "shortcut": "FTC", "t1_enabled": "no", @@ -377,7 +375,7 @@ "Github": "https://github.com/Groestlcoin/groestlcoin", "Homepage": "https://www.groestlcoin.org" }, - "marketcap_usd": 49027540, + "marketcap_usd": 42239737, "name": "Groestlcoin", "shortcut": "GRS", "t1_enabled": "yes", @@ -400,7 +398,7 @@ "Github": "https://github.com/litecoin-project/litecoin", "Homepage": "https://litecoin.org" }, - "marketcap_usd": 5074158720, + "marketcap_usd": 4729798268, "name": "Litecoin", "shortcut": "LTC", "t1_enabled": "yes", @@ -416,7 +414,7 @@ "Github": "https://github.com/monacoinproject/monacoin", "Homepage": "https://monacoin.org" }, - "marketcap_usd": 149443693, + "marketcap_usd": 131657784, "name": "Monacoin", "shortcut": "MONA", "t1_enabled": "yes", @@ -442,7 +440,7 @@ "Github": "https://github.com/namecoin/namecoin-core", "Homepage": "https://namecoin.org" }, - "marketcap_usd": 20569657, + "marketcap_usd": 20240445, "name": "Namecoin", "shortcut": "NMC", "t1_enabled": "yes", @@ -522,7 +520,7 @@ "Github": "https://github.com/terracoin/terracoin", "Homepage": "https://terracoin.io" }, - "marketcap_usd": 1846772, + "marketcap_usd": 1590237, "name": "Terracoin", "shortcut": "TRC", "t1_enabled": "no", @@ -535,7 +533,7 @@ "Github": "https://github.com/viacoin", "Homepage": "https://viacoin.org" }, - "marketcap_usd": 24945554, + "marketcap_usd": 22798288, "name": "Viacoin", "shortcut": "VIA", "t1_enabled": "yes", @@ -547,19 +545,22 @@ "Github": "https://github.com/vertcoin-project/vertcoin-core", "Homepage": "https://vertcoin.org" }, - "marketcap_usd": 44267678, + "marketcap_usd": 41292751, "name": "Vertcoin", "shortcut": "VTC", - "t1_enabled": "soon", - "t2_enabled": "soon", - "type": "coin" + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin", + "wallet": { + "Trezor": "https://wallet.trezor.io" + } }, "coin:XMY": { "links": { "Github": "https://github.com/myriadcoin/myriadcoin", "Homepage": "https://www.myriadcoin.org" }, - "marketcap_usd": 6744958, + "marketcap_usd": 6562878, "name": "Myriad", "shortcut": "XMY", "t1_enabled": "no", @@ -572,7 +573,7 @@ "Github": "https://github.com/zcoinofficial/zcoin", "Homepage": "https://zcoin.io" }, - "marketcap_usd": 94362182, + "marketcap_usd": 84956418, "name": "Zcoin", "shortcut": "XZC", "t1_enabled": "yes", @@ -584,7 +585,7 @@ "Github": "https://github.com/zcash/zcash", "Homepage": "z.cash" }, - "marketcap_usd": 752091024, + "marketcap_usd": 746003570, "name": "Zcash", "shortcut": "ZEC", "t1_enabled": "yes", @@ -638,11 +639,12 @@ "links": { "Homepage": "https://pool.ellaism.org" }, + "marketcap_usd": 0, "name": "Ella Mining Tokens", "network": "ella", "shortcut": "MINING", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -674,7 +676,7 @@ "name": "Smart Billions", "network": "etc", "shortcut": "PLAY", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -688,11 +690,12 @@ "Github": "https://github.com/Fluzcoin", "Homepage": "https://fluzcoin.io/" }, + "marketcap_usd": 0, "name": "$Fluzcoin", "network": "eth", "shortcut": "$FFC", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -705,11 +708,12 @@ "Github": "https://github.com/fixynetwork/FIXY-NETWORK", "Homepage": "https://fixyapp.io" }, + "marketcap_usd": 0, "name": "$FIXY NETWORK", "network": "eth", "shortcut": "$FXY", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -725,7 +729,7 @@ "name": "$TEAK", "network": "eth", "shortcut": "$TEAK", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -738,12 +742,12 @@ "links": { "Homepage": "https://0xbitcoin.org/" }, - "marketcap_usd": 2777056, + "marketcap_usd": 3428495, "name": "0xBitcoin", "network": "eth", "shortcut": "0xBTC", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -776,7 +780,7 @@ "name": "1WO", "network": "eth", "shortcut": "1WO", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -792,8 +796,8 @@ "name": "DualChain", "network": "eth", "shortcut": "2DC", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -826,8 +830,8 @@ "name": "Apollo18", "network": "eth", "shortcut": "A18", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -843,7 +847,7 @@ "name": "ArcBlock Token", "network": "eth", "shortcut": "ABT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -861,8 +865,8 @@ "name": "ABYSS", "network": "eth", "shortcut": "ABYSS", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -878,7 +882,7 @@ "name": "Accelerator Network", "network": "eth", "shortcut": "ACC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -895,8 +899,8 @@ "name": "AdHive Token", "network": "eth", "shortcut": "ADH", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -913,7 +917,7 @@ "name": "Aditus", "network": "eth", "shortcut": "ADI", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -927,11 +931,12 @@ "Github": "https://github.com/adelecosystem", "Homepage": "https://adel.io" }, + "marketcap_usd": 0, "name": "Adelphoi", "network": "eth", "shortcut": "ADL", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -1001,7 +1006,7 @@ "name": "aeternity", "network": "eth", "shortcut": "AE", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -1019,7 +1024,7 @@ "name": "SingularityNET", "network": "eth", "shortcut": "AGI", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -1033,11 +1038,11 @@ "Github": "https://github.com/aionnetwork", "Homepage": "https://aion.network/" }, - "marketcap_usd": 203802087, + "marketcap_usd": 184163315, "name": "Aion", "network": "eth", "shortcut": "AION", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -1054,7 +1059,7 @@ "name": "AirToken", "network": "eth", "shortcut": "AIR", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -1072,7 +1077,7 @@ "name": "Aigang", "network": "eth", "shortcut": "AIX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -1089,7 +1094,7 @@ "name": "ALCO", "network": "eth", "shortcut": "ALCO", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -1103,11 +1108,11 @@ "Github": "https://github.com/AlisProject", "Homepage": "https://alismedia.jp" }, - "marketcap_usd": 4378830, + "marketcap_usd": 4177043, "name": "ALIS Token", "network": "eth", "shortcut": "ALIS", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -1124,7 +1129,7 @@ "name": "ALTS Token", "network": "eth", "shortcut": "ALTS", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -1142,7 +1147,7 @@ "name": "Amber Token", "network": "eth", "shortcut": "AMB", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -1160,7 +1165,7 @@ "name": "AMIS", "network": "eth", "shortcut": "AMIS", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -1178,8 +1183,8 @@ "name": "Amon", "network": "eth", "shortcut": "AMN", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -1196,8 +1201,8 @@ "name": "AMO Coin", "network": "eth", "shortcut": "AMO", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -1213,8 +1218,8 @@ "name": "AmberTime Coin", "network": "eth", "shortcut": "AMTC", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -1244,12 +1249,12 @@ "Github": "https://github.com/Oxchild/crowdsale", "Homepage": "https://apisplatform.io" }, - "marketcap_usd": 28591984, + "marketcap_usd": 23582517, "name": "APIS", "network": "eth", "shortcut": "APIS", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -1266,7 +1271,7 @@ "name": "AppCoins", "network": "eth", "shortcut": "APPC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -1318,7 +1323,7 @@ "name": "ArbitrageCT", "network": "eth", "shortcut": "ARCT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -1336,7 +1341,7 @@ "name": "Accord", "network": "eth", "shortcut": "ARD", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -1353,7 +1358,7 @@ "name": "Aeron Token", "network": "eth", "shortcut": "ARN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -1370,7 +1375,7 @@ "name": "ART", "network": "eth", "shortcut": "ART", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -1388,7 +1393,7 @@ "name": "ARX", "network": "eth", "shortcut": "ARX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -1406,8 +1411,8 @@ "name": "Assistive Reality ARX", "network": "eth", "shortcut": "ARXT", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -1423,7 +1428,7 @@ "name": "Airswap", "network": "eth", "shortcut": "AST", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -1454,11 +1459,12 @@ "Github": "https://github.com/AIgatha", "Homepage": "https://aigatha.com" }, + "marketcap_usd": 0, "name": "AIgatha Token", "network": "eth", "shortcut": "ATH (AIgatha Token)", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -1474,7 +1480,7 @@ "name": "ATL", "network": "eth", "shortcut": "ATL", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -1488,11 +1494,12 @@ "Github": "https://github.com/atonomi", "Homepage": "https://atonomi.io" }, + "marketcap_usd": 0, "name": "Atonomi", "network": "eth", "shortcut": "ATMI", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -1509,7 +1516,7 @@ "name": "Atmatrix Token", "network": "eth", "shortcut": "ATT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -1526,7 +1533,7 @@ "name": "Attention Token", "network": "eth", "shortcut": "ATTN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -1561,7 +1568,7 @@ "name": "AVT", "network": "eth", "shortcut": "AVT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -1579,8 +1586,8 @@ "name": "AX1 Mining Token", "network": "eth", "shortcut": "AX1", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -1596,7 +1603,7 @@ "name": "AXP", "network": "eth", "shortcut": "AXP", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -1613,7 +1620,7 @@ "name": "BANX", "network": "eth", "shortcut": "BANX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -1644,11 +1651,12 @@ "Github": "https://github.com/brickblock-io", "Homepage": "https://www.brickblock.io/" }, + "marketcap_usd": 0, "name": "BRICKBLOCK TOKEN", "network": "eth", "shortcut": "BBK", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -1665,7 +1673,7 @@ "name": "Beercoin", "network": "eth", "shortcut": "BCBC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -1701,7 +1709,7 @@ "name": "Blockchain Certified Data Token", "network": "eth", "shortcut": "BCDT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -1718,7 +1726,7 @@ "name": "BCL", "network": "eth", "shortcut": "BCL", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -1736,7 +1744,7 @@ "name": "BCPT", "network": "eth", "shortcut": "BCPT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -1754,8 +1762,8 @@ "name": "BitCapitalVendor Token", "network": "eth", "shortcut": "BCV", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -1772,7 +1780,7 @@ "name": "BitDegree Token", "network": "eth", "shortcut": "BDG", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -1790,7 +1798,7 @@ "name": "Bee Token", "network": "eth", "shortcut": "BEE", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -1808,8 +1816,8 @@ "name": "Berry", "network": "eth", "shortcut": "BERRY", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -1844,8 +1852,8 @@ "name": "BETR", "network": "eth", "shortcut": "BETR", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -1861,7 +1869,7 @@ "name": "BetKing Bankroll Token", "network": "eth", "shortcut": "BKB", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -1878,8 +1886,8 @@ "name": "BlockRx", "network": "eth", "shortcut": "BKRx", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -1896,8 +1904,8 @@ "name": "BANKEX", "network": "eth", "shortcut": "BKX", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -1914,7 +1922,7 @@ "name": "Bloom", "network": "eth", "shortcut": "BLT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -1928,11 +1936,12 @@ "Github": "https://github.com/BlueCrypto", "Homepage": "https://blueprotocol.com/" }, + "marketcap_usd": 0, "name": "Ethereum Blue", "network": "eth", "shortcut": "BLUE", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -1949,7 +1958,7 @@ "name": "Bullion Crypto", "network": "eth", "shortcut": "BLX (Bullion)", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -1966,7 +1975,7 @@ "name": "Iconomi", "network": "eth", "shortcut": "BLX (Iconomi)", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -1978,11 +1987,12 @@ "address": "0x5732046A883704404F284Ce41FfADd5b007FD668", "hidden": 1, "links": {}, + "marketcap_usd": 0, "name": "Bluezelle", "network": "eth", "shortcut": "BLZ", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -1999,7 +2009,7 @@ "name": "Blackmoon Crypto BMC Token", "network": "eth", "shortcut": "BMC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -2017,7 +2027,7 @@ "name": "BMT", "network": "eth", "shortcut": "BMT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -2034,7 +2044,7 @@ "name": "BitMartToken", "network": "eth", "shortcut": "BMX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -2051,7 +2061,7 @@ "name": "BNB", "network": "eth", "shortcut": "BNB", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -2084,8 +2094,8 @@ "name": "Benefits Coin", "network": "eth", "shortcut": "BNFT", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -2119,7 +2129,7 @@ "name": "Bounty0x Token", "network": "eth", "shortcut": "BNTY", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -2136,8 +2146,8 @@ "name": "Bob's repair", "network": "eth", "shortcut": "BOB", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -2153,7 +2163,7 @@ "name": "Bonpay", "network": "eth", "shortcut": "BON", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -2170,7 +2180,7 @@ "name": "BlockOptiopns Token", "network": "eth", "shortcut": "BOP", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -2187,7 +2197,7 @@ "name": "Boule Coin", "network": "eth", "shortcut": "BOU", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -2205,7 +2215,7 @@ "name": "Blockport Token", "network": "eth", "shortcut": "BPT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -2235,11 +2245,11 @@ "links": { "Homepage": "http://bro-consortium.io/" }, - "marketcap_usd": 50250, + "marketcap_usd": 49750, "name": "BRAT", "network": "eth", "shortcut": "BRAT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -2257,8 +2267,8 @@ "name": "Bread", "network": "eth", "shortcut": "BRD", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -2275,7 +2285,7 @@ "name": "BSDC", "network": "eth", "shortcut": "BSDC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -2292,7 +2302,7 @@ "name": "BlocksquareToken", "network": "eth", "shortcut": "BST", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -2309,7 +2319,7 @@ "name": "EthereumBitcoin", "network": "eth", "shortcut": "BTCE", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -2322,11 +2332,12 @@ "links": { "Homepage": "http://btclite.org" }, + "marketcap_usd": 0, "name": "BTC Lite", "network": "eth", "shortcut": "BTCL", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -2343,7 +2354,7 @@ "name": "BTE", "network": "eth", "shortcut": "BTE", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -2360,7 +2371,7 @@ "name": "Bytether", "network": "eth", "shortcut": "BTH", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -2378,8 +2389,8 @@ "name": "Bethereum", "network": "eth", "shortcut": "BTHR", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -2396,8 +2407,8 @@ "name": "Bitcoin Token", "network": "eth", "shortcut": "BTK", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -2414,7 +2425,7 @@ "name": "BTL (Battle)", "network": "eth", "shortcut": "BTL (Battle)", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -2431,7 +2442,7 @@ "name": "Bitlle Token", "network": "eth", "shortcut": "BTL (Bitlle)", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -2449,7 +2460,7 @@ "name": "Bytom", "network": "eth", "shortcut": "BTM", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -2466,7 +2477,7 @@ "name": "Bitcoin Boutique", "network": "eth", "shortcut": "BTQ", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -2484,7 +2495,7 @@ "name": "Bitether", "network": "eth", "shortcut": "BTT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -2497,11 +2508,12 @@ "links": { "Homepage": "https://blocktrade.com/" }, + "marketcap_usd": 0, "name": "Blocktrade.com", "network": "eth", "shortcut": "BTTX", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -2517,8 +2529,8 @@ "name": "BeeUnity Chain", "network": "eth", "shortcut": "BUC", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -2533,7 +2545,7 @@ "name": "BeerCoin", "network": "eth", "shortcut": "BeerCoin", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -2547,11 +2559,11 @@ "Github": "https://github.com/cryptotwenty", "Homepage": "https://crypto20.com" }, - "marketcap_usd": 41729751, + "marketcap_usd": 40197958, "name": "Crypto20's Token", "network": "eth", "shortcut": "C20", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -2563,11 +2575,12 @@ "address": "0xd42debE4eDc92Bd5a3FBb4243e1ecCf6d63A4A5d", "hidden": 1, "links": {}, + "marketcap_usd": 0, "name": "Carboneum", "network": "eth", "shortcut": "C8", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -2583,7 +2596,7 @@ "name": "Change Bank", "network": "eth", "shortcut": "CAG", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -2600,7 +2613,7 @@ "name": "CAN", "network": "eth", "shortcut": "CAN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -2617,7 +2630,7 @@ "name": "Car Sharing Community", "network": "eth", "shortcut": "CAR", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -2634,8 +2647,8 @@ "name": "CarbCoin", "network": "eth", "shortcut": "CARB", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -2651,7 +2664,7 @@ "name": "CARCO", "network": "eth", "shortcut": "CARCO", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -2665,11 +2678,12 @@ "Github": "https://github.com/cardstack", "Homepage": "https://cardstack.com" }, + "marketcap_usd": 0, "name": "Cardstack Token", "network": "eth", "shortcut": "CARD", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -2681,11 +2695,12 @@ "links": { "Homepage": "https://tombcare.com/" }, + "marketcap_usd": 0, "name": "Token CARE", "network": "eth", "shortcut": "CARE", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -2701,7 +2716,7 @@ "name": "Cashaa", "network": "eth", "shortcut": "CAS", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -2718,7 +2733,7 @@ "name": "CAT (BitClave)", "network": "eth", "shortcut": "CAT (BitClave)", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -2735,7 +2750,7 @@ "name": "CAT (Blockcat)", "network": "eth", "shortcut": "CAT (Blockcat)", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -2752,7 +2767,7 @@ "name": "CATs (BitClave)_Old", "network": "eth", "shortcut": "CATs (BitClave)_Old", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -2769,7 +2784,7 @@ "name": "Coal Coin", "network": "eth", "shortcut": "CC3", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -2786,7 +2801,7 @@ "name": "CryptoCrashCourse", "network": "eth", "shortcut": "CCC (CryptoCrashCourse)", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -2803,7 +2818,7 @@ "name": "CCC (ICONOMI)", "network": "eth", "shortcut": "CCC (ICONOMI)", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -2821,7 +2836,7 @@ "name": "Christ Coin", "network": "eth", "shortcut": "CCLC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -2839,7 +2854,7 @@ "name": "CacaoShares", "network": "eth", "shortcut": "CCS", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -2857,7 +2872,7 @@ "name": "Confideal", "network": "eth", "shortcut": "CDL", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -2874,7 +2889,7 @@ "name": "CoinDash", "network": "eth", "shortcut": "CDT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -2891,7 +2906,7 @@ "name": "CDX", "network": "eth", "shortcut": "CDX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -2904,11 +2919,12 @@ "links": { "Homepage": "https://www.ceek.com/" }, + "marketcap_usd": 0, "name": "CEEK VR Token", "network": "eth", "shortcut": "CEEK", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -2938,11 +2954,12 @@ "Github": "https://github.com/crafty-work", "Homepage": "https://crafty.work/" }, + "marketcap_usd": 0, "name": "Crafty Token", "network": "eth", "shortcut": "CFTY", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -2958,8 +2975,8 @@ "name": "CHSB", "network": "eth", "shortcut": "CHSB", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -2975,7 +2992,7 @@ "name": "CK", "network": "eth", "shortcut": "CK", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -2989,11 +3006,12 @@ "Github": "https://github.com/Cloudbric-Project", "Homepage": "https://www.cloudbric.io/" }, + "marketcap_usd": 0, "name": "Cloudbric", "network": "eth", "shortcut": "CLB", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -3010,8 +3028,8 @@ "name": "CryptoLiveLeak", "network": "eth", "shortcut": "CLL", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -3028,7 +3046,7 @@ "name": "ColuLocalNetwork", "network": "eth", "shortcut": "CLN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -3045,7 +3063,7 @@ "name": "CryptoLending", "network": "eth", "shortcut": "CLP", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -3062,7 +3080,7 @@ "name": "CMBToken", "network": "eth", "shortcut": "CMBT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -3079,7 +3097,7 @@ "name": "CryptoMart", "network": "eth", "shortcut": "CMC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -3097,7 +3115,7 @@ "name": "CyberMiles Token", "network": "eth", "shortcut": "CMT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -3114,8 +3132,8 @@ "name": "Canabio", "network": "eth", "shortcut": "CNB", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -3131,7 +3149,7 @@ "name": "Cindicator", "network": "eth", "shortcut": "CND", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -3149,7 +3167,7 @@ "name": "Climatecoin", "network": "eth", "shortcut": "CO2", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -3162,11 +3180,12 @@ "links": { "Homepage": "https://co2bit.com" }, + "marketcap_usd": 0, "name": "CO2Bit", "network": "eth", "shortcut": "CO2Bit", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -3183,7 +3202,7 @@ "name": "Cobinhood Token", "network": "eth", "shortcut": "COB", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -3201,7 +3220,7 @@ "name": "CoinFi Token", "network": "eth", "shortcut": "COFI", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -3219,8 +3238,8 @@ "name": "CoinOil", "network": "eth", "shortcut": "COIL", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -3233,12 +3252,12 @@ "Github": "https://github.com/CoinvestHQ", "Homepage": "https://coinve.st" }, - "marketcap_usd": 140404, + "marketcap_usd": 119117, "name": "Coinvest V2 Token", "network": "eth", "shortcut": "COIN", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -3250,11 +3269,11 @@ "links": { "Homepage": "https://coss.io" }, - "marketcap_usd": 16142086, + "marketcap_usd": 14634498, "name": "Coss Token", "network": "eth", "shortcut": "COSS", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -3271,8 +3290,8 @@ "name": "Covesting", "network": "eth", "shortcut": "COV", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -3285,11 +3304,12 @@ "Github": "https://github.com/coinpulse", "Homepage": "https://CoinPulse.io" }, + "marketcap_usd": 0, "name": "CoinPulseToken", "network": "eth", "shortcut": "CPEX", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -3306,7 +3326,7 @@ "name": "COPYTRACK", "network": "eth", "shortcut": "CPY", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -3324,7 +3344,7 @@ "name": "CR7Coin", "network": "eth", "shortcut": "CR7", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -3359,7 +3379,7 @@ "name": "CRED", "network": "eth", "shortcut": "CRED", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -3372,7 +3392,7 @@ "links": { "Homepage": "https://bitbounce.io" }, - "marketcap_usd": 14867642, + "marketcap_usd": 16115566, "name": "Credo / Bitbounce", "network": "eth", "shortcut": "CREDO", @@ -3393,7 +3413,7 @@ "name": "CrypteriumToken", "network": "eth", "shortcut": "CRPT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -3410,7 +3430,7 @@ "name": "CreamtoeCoin", "network": "eth", "shortcut": "CRT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -3428,7 +3448,7 @@ "name": "CryptoTask", "network": "eth", "shortcut": "CTF", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -3446,8 +3466,8 @@ "name": "CT Global Token", "network": "eth", "shortcut": "CTG", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -3479,7 +3499,7 @@ "name": "ChainTrade Token", "network": "eth", "shortcut": "CTT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -3496,7 +3516,7 @@ "name": "CarTaxi", "network": "eth", "shortcut": "CTX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -3531,7 +3551,7 @@ "name": "CoxxxCoin", "network": "eth", "shortcut": "CXC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -3549,7 +3569,7 @@ "name": "CargoX", "network": "eth", "shortcut": "CXO", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -3562,11 +3582,11 @@ "links": { "Homepage": "https://ccrb.io/" }, - "marketcap_usd": 313518, + "marketcap_usd": 313436, "name": "CryptoCarbon", "network": "eth", "shortcut": "CryptoCarbon", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -3583,7 +3603,7 @@ "name": "DAB", "network": "eth", "shortcut": "DAB", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -3596,11 +3616,11 @@ "links": { "Homepage": "https://dadi.cloud" }, - "marketcap_usd": 10832199, + "marketcap_usd": 9817166, "name": "DADI", "network": "eth", "shortcut": "DADI", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -3614,11 +3634,11 @@ "Github": "https://github.com/makerdao", "Homepage": "https://makerdao.com" }, - "marketcap_usd": 43103757, + "marketcap_usd": 43776138, "name": "Dai Stablecoin v1.0", "network": "eth", "shortcut": "DAI", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -3635,7 +3655,7 @@ "name": "DaleCoin", "network": "eth", "shortcut": "DALC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -3653,7 +3673,7 @@ "name": "DaneelToken", "network": "eth", "shortcut": "DAN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -3687,7 +3707,7 @@ "name": "Datum Token", "network": "eth", "shortcut": "DAT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -3705,7 +3725,7 @@ "name": "DataBrokerDAO Token", "network": "eth", "shortcut": "DATABroker", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -3719,11 +3739,11 @@ "Github": "https://github.com/streamr-dev", "Homepage": "https://www.streamr.com" }, - "marketcap_usd": 143826, + "marketcap_usd": 142573, "name": "DATACoin", "network": "eth", "shortcut": "DATACoin", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -3737,11 +3757,12 @@ "Github": "https://github.com/DAVFoundation", "Homepage": "https://dav.network/" }, + "marketcap_usd": 0, "name": "DAV Token", "network": "eth", "shortcut": "DAV", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -3757,8 +3778,8 @@ "name": "Digital Asset Exchange Token", "network": "eth", "shortcut": "DAXT", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -3775,8 +3796,8 @@ "name": "ChronoLogic DAY", "network": "eth", "shortcut": "DAY", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -3793,7 +3814,7 @@ "name": "DoBetAcceptBet", "network": "eth", "shortcut": "DCA", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -3810,7 +3831,7 @@ "name": "DCL", "network": "eth", "shortcut": "DCL", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -3828,7 +3849,7 @@ "name": "Dentacoin", "network": "eth", "shortcut": "DCN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -3863,7 +3884,7 @@ "name": "DEBITUM", "network": "eth", "shortcut": "DEB", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -3881,8 +3902,8 @@ "name": "DeezNuts", "network": "eth", "shortcut": "DEEZ", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -3894,7 +3915,7 @@ "links": { "Homepage": "https://www.dentwireless.com/" }, - "marketcap_usd": 50914444, + "marketcap_usd": 42357567, "name": "DENT", "network": "eth", "shortcut": "DENT", @@ -3915,8 +3936,8 @@ "name": "CRYPTODEPOZIT", "network": "eth", "shortcut": "DEPO", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -3950,7 +3971,7 @@ "name": "DigiPulse", "network": "eth", "shortcut": "DGPT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -3967,7 +3988,7 @@ "name": "DGX", "network": "eth", "shortcut": "DGX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -4001,7 +4022,7 @@ "name": "DIVX", "network": "eth", "shortcut": "DIVX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -4017,7 +4038,7 @@ "name": "Draggin Karma Points", "network": "eth", "shortcut": "DKP", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -4034,7 +4055,7 @@ "name": "Agrello", "network": "eth", "shortcut": "DLT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -4052,7 +4073,7 @@ "name": "DMarket Token", "network": "eth", "shortcut": "DMT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -4088,7 +4109,7 @@ "name": "DenCity", "network": "eth", "shortcut": "DNX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -4105,7 +4126,7 @@ "name": "DOW", "network": "eth", "shortcut": "DOW", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -4122,7 +4143,7 @@ "name": "Digital Assets Power Play", "network": "eth", "shortcut": "DPP", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -4140,7 +4161,7 @@ "name": "Dragon", "network": "eth", "shortcut": "DRGN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -4174,7 +4195,7 @@ "name": "Dropil", "network": "eth", "shortcut": "DROP (dropil)", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -4208,7 +4229,7 @@ "name": "Digital Safe Coin", "network": "eth", "shortcut": "DSC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -4226,8 +4247,8 @@ "name": "dether", "network": "eth", "shortcut": "DTH", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -4243,7 +4264,7 @@ "name": "DTR", "network": "eth", "shortcut": "DTR", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -4261,8 +4282,8 @@ "name": "Delphi Tech Token", "network": "eth", "shortcut": "DTT", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -4279,8 +4300,8 @@ "name": "DaTa eXchange Token", "network": "eth", "shortcut": "DTX", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -4296,9 +4317,9 @@ "name": "DigitalTicks", "network": "eth", "shortcut": "DTx", - "t1_enabled": "soon", - "t2_enabled": "soon", - "type": "erc20", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" @@ -4314,7 +4335,7 @@ "name": "Decentralized Universal Basic Income", "network": "eth", "shortcut": "DUBI", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -4331,7 +4352,7 @@ "name": "Devcon2 Token", "network": "eth", "shortcut": "Devcon2 Token", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -4349,7 +4370,7 @@ "name": "EagleCoin", "network": "eth", "shortcut": "EAGLE", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -4383,7 +4404,7 @@ "name": "EtherCO2", "network": "eth", "shortcut": "ECO2", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -4400,8 +4421,8 @@ "name": "Education Credits", "network": "eth", "shortcut": "EDC", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -4434,7 +4455,7 @@ "name": "Eidoo", "network": "eth", "shortcut": "EDO", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -4452,7 +4473,7 @@ "name": "EDU", "network": "eth", "shortcut": "EDU", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -4466,11 +4487,12 @@ "Github": "https://github.com/egretia", "Homepage": "https://www.egretia.io" }, + "marketcap_usd": 0, "name": "Egretia Token", "network": "eth", "shortcut": "EGT", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -4487,7 +4509,7 @@ "name": "EasyHomes", "network": "eth", "shortcut": "EHT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -4505,7 +4527,7 @@ "name": "ELF Token", "network": "eth", "shortcut": "ELF", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -4522,7 +4544,7 @@ "name": "Elixir Token", "network": "eth", "shortcut": "ELIX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -4536,11 +4558,11 @@ "Github": "https://github.com/eltcoin", "Homepage": "http://www.eltcoin.tech/" }, - "marketcap_usd": 368436, + "marketcap_usd": 421727, "name": "ELTCOIN", "network": "eth", "shortcut": "ELTCOIN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -4558,7 +4580,7 @@ "name": "Etheremon", "network": "eth", "shortcut": "EMON", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -4575,7 +4597,7 @@ "name": "Etheremon Token", "network": "eth", "shortcut": "EMONT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -4593,8 +4615,8 @@ "name": "easyMINE Token", "network": "eth", "shortcut": "EMT", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -4624,11 +4646,12 @@ "Github": "https://github.com/ethernetcash", "Homepage": "https://ethernet.cash" }, + "marketcap_usd": 0, "name": "Ethernet.Cash", "network": "eth", "shortcut": "ENC", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -4645,8 +4668,8 @@ "name": "Enigma", "network": "eth", "shortcut": "ENG", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -4663,7 +4686,7 @@ "name": "ENJIN", "network": "eth", "shortcut": "ENJ", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -4681,7 +4704,7 @@ "name": "Hut34 Entropy Token", "network": "eth", "shortcut": "ENTRP", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -4695,7 +4718,7 @@ "links": { "Homepage": "https://eos.io" }, - "marketcap_usd": 8360026267, + "marketcap_usd": 7499749639, "name": "EOS", "network": "eth", "shortcut": "EOS", @@ -4717,8 +4740,8 @@ "name": "ethPoker.io EPX", "network": "eth", "shortcut": "EPX", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -4735,7 +4758,7 @@ "name": "ESZCoin", "network": "eth", "shortcut": "ESZ", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -4752,7 +4775,7 @@ "name": "Ethbits", "network": "eth", "shortcut": "ETBS", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -4769,8 +4792,8 @@ "name": "ETCH", "network": "eth", "shortcut": "ETCH", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -4786,7 +4809,7 @@ "name": "EtherBTC", "network": "eth", "shortcut": "ETHB", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -4804,8 +4827,8 @@ "name": "Etheruem Risen", "network": "eth", "shortcut": "ETR", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -4821,7 +4844,7 @@ "name": "EUR Tether (erc20)", "network": "eth", "shortcut": "EURT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -4839,7 +4862,7 @@ "name": "EVE", "network": "eth", "shortcut": "EVE", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -4857,7 +4880,7 @@ "name": "Envion AG", "network": "eth", "shortcut": "EVN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -4874,7 +4897,7 @@ "name": "EVX Token", "network": "eth", "shortcut": "EVX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -4892,7 +4915,7 @@ "name": "eXMRcoin", "network": "eth", "shortcut": "EXMR", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -4911,7 +4934,7 @@ "network": "eth", "shortcut": "E\u20b9", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -4945,8 +4968,8 @@ "name": "FANX Token", "network": "eth", "shortcut": "FANX", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -4963,7 +4986,7 @@ "name": "Knoxstertoken", "network": "eth", "shortcut": "FKX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -4980,7 +5003,7 @@ "name": "FLIXX", "network": "eth", "shortcut": "FLIXX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -4997,8 +5020,8 @@ "name": "Filmscoin", "network": "eth", "shortcut": "FLMC", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -5015,7 +5038,7 @@ "name": "FLIP Token", "network": "eth", "shortcut": "FLP", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -5032,8 +5055,8 @@ "name": "Flair Coin", "network": "eth", "shortcut": "FLR", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -5049,7 +5072,7 @@ "name": "Fluz Fluz Global", "network": "eth", "shortcut": "FLUZ", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -5066,7 +5089,7 @@ "name": "BitFlux", "network": "eth", "shortcut": "FLX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -5084,7 +5107,7 @@ "name": "FundRequest", "network": "eth", "shortcut": "FND", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -5101,7 +5124,7 @@ "name": "FARAD Cryptoken", "network": "eth", "shortcut": "FRD", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -5118,7 +5141,7 @@ "name": "FTC", "network": "eth", "shortcut": "FTC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -5135,7 +5158,7 @@ "name": "Futourist Token", "network": "eth", "shortcut": "FTR", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -5153,8 +5176,8 @@ "name": "FarmaTrust Token", "network": "eth", "shortcut": "FTT", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -5170,7 +5193,7 @@ "name": "Finally Usable Crypto Karma", "network": "eth", "shortcut": "FUCK", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -5188,7 +5211,7 @@ "name": "Etherparty FUEL", "network": "eth", "shortcut": "FUEL", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -5240,7 +5263,7 @@ "name": "Gambit", "network": "eth", "shortcut": "GAM", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -5258,8 +5281,8 @@ "name": "GANA", "network": "eth", "shortcut": "GANA", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -5275,7 +5298,7 @@ "name": "GAVEL", "network": "eth", "shortcut": "GAVEL", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -5293,7 +5316,7 @@ "name": "GBT", "network": "eth", "shortcut": "GBT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -5310,8 +5333,8 @@ "name": "Globitex", "network": "eth", "shortcut": "GBX", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -5328,8 +5351,8 @@ "name": "Globcoin Crypto Platform", "network": "eth", "shortcut": "GCP", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -5346,7 +5369,7 @@ "name": "Geens NPO", "network": "eth", "shortcut": "GEE", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -5381,8 +5404,8 @@ "name": "DAOstack", "network": "eth", "shortcut": "GEN", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -5399,8 +5422,8 @@ "name": "GET", "network": "eth", "shortcut": "GET", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -5416,8 +5439,8 @@ "name": "GIFcoin Token", "network": "eth", "shortcut": "GIF", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -5434,7 +5457,7 @@ "name": "Gimli", "network": "eth", "shortcut": "GIM", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -5451,7 +5474,7 @@ "name": "GMT", "network": "eth", "shortcut": "GMT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -5482,7 +5505,7 @@ "links": { "Homepage": "https://golem.network" }, - "marketcap_usd": 276463100, + "marketcap_usd": 258123144, "name": "Golem", "network": "eth", "shortcut": "GNT", @@ -5504,7 +5527,7 @@ "name": "GOLDX", "network": "eth", "shortcut": "GOLDX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -5517,11 +5540,11 @@ "links": { "Homepage": "https://gridplus.io/token-sale" }, - "marketcap_usd": 14117643, + "marketcap_usd": 13571941, "name": "GRID", "network": "eth", "shortcut": "GRID", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -5539,8 +5562,8 @@ "name": "Growchain", "network": "eth", "shortcut": "GROW", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -5557,7 +5580,7 @@ "name": "GTC Token", "network": "eth", "shortcut": "GTC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -5593,8 +5616,8 @@ "name": "Gifto", "network": "eth", "shortcut": "GTO", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -5629,7 +5652,7 @@ "name": "Genesis Vision", "network": "eth", "shortcut": "GVT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -5646,7 +5669,7 @@ "name": "GXC", "network": "eth", "shortcut": "GXC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -5664,7 +5687,7 @@ "name": "Genevieve VC", "network": "eth", "shortcut": "GXVC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -5681,7 +5704,7 @@ "name": "GazeCoin", "network": "eth", "shortcut": "GZE", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -5695,11 +5718,12 @@ "Github": "https://github.com/GizerInc/Gizer", "Homepage": "https://gizer.io" }, + "marketcap_usd": 0, "name": "Gizer", "network": "eth", "shortcut": "GZR", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -5715,7 +5739,7 @@ "name": "Hawala Today", "network": "eth", "shortcut": "HAT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -5733,8 +5757,8 @@ "name": "Havven", "network": "eth", "shortcut": "HAV", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -5750,7 +5774,7 @@ "name": "Hedge Crypto", "network": "eth", "shortcut": "HDG", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -5768,7 +5792,7 @@ "name": "HGT", "network": "eth", "shortcut": "HGT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -5786,7 +5810,7 @@ "name": "ethereumhigh ", "network": "eth", "shortcut": "HIG", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -5821,8 +5845,8 @@ "name": "Hicky", "network": "eth", "shortcut": "HKY", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -5855,7 +5879,7 @@ "name": "HODLCoin", "network": "eth", "shortcut": "HODL", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -5873,8 +5897,8 @@ "name": "HORSE", "network": "eth", "shortcut": "HORSE", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -5891,8 +5915,8 @@ "name": "Hydro Protocol", "network": "eth", "shortcut": "HOT", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -5908,7 +5932,7 @@ "name": "HST", "network": "eth", "shortcut": "HST", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -5926,7 +5950,7 @@ "name": "Hive Project", "network": "eth", "shortcut": "HVN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -5940,11 +5964,12 @@ "Github": "https://github.com/hydrogen-dev", "Homepage": "https://www.hydrogenplatform.com/hydro" }, + "marketcap_usd": 0, "name": "Hydro", "network": "eth", "shortcut": "HYDRO", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -5961,7 +5986,7 @@ "name": "HEdpAY", "network": "eth", "shortcut": "Hdp", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -5980,7 +6005,7 @@ "network": "eth", "shortcut": "Hdp.\u0444", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -5993,11 +6018,12 @@ "Github": "https://github.com/IADOWR", "Homepage": "https://www.iadowrcoin.com" }, + "marketcap_usd": 0, "name": "IADOWR Coin", "network": "eth", "shortcut": "IAD", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -6046,7 +6072,7 @@ "name": "ICO", "network": "eth", "shortcut": "ICO", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -6059,11 +6085,11 @@ "links": { "Homepage": "https://icos.icobox.io/" }, - "marketcap_usd": 6457472, + "marketcap_usd": 6428544, "name": "ICOS", "network": "eth", "shortcut": "ICOS", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -6080,7 +6106,7 @@ "name": "ICON", "network": "eth", "shortcut": "ICX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -6097,7 +6123,7 @@ "name": "IDEA Token", "network": "eth", "shortcut": "IDEA", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -6114,7 +6140,7 @@ "name": "InvestFeed", "network": "eth", "shortcut": "IFT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -6131,7 +6157,7 @@ "name": "IIC", "network": "eth", "shortcut": "IIC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -6149,7 +6175,7 @@ "name": "IKB", "network": "eth", "shortcut": "IKB", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -6166,7 +6192,7 @@ "name": "Immune Coin", "network": "eth", "shortcut": "IMC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -6199,7 +6225,7 @@ "name": "Indorse", "network": "eth", "shortcut": "IND", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -6215,8 +6241,8 @@ "name": "Integrated Money", "network": "eth", "shortcut": "INRM", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -6232,7 +6258,7 @@ "name": "INS", "network": "eth", "shortcut": "INS", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -6249,8 +6275,8 @@ "name": "Insights Network", "network": "eth", "shortcut": "INSTAR", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -6266,7 +6292,7 @@ "name": "Internxt", "network": "eth", "shortcut": "INXT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -6283,8 +6309,8 @@ "name": "IOSToken", "network": "eth", "shortcut": "IOST", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -6297,11 +6323,12 @@ "Github": "https://github.com/iotexproject/iotex-core", "Homepage": "http://iotex.io/" }, + "marketcap_usd": 0, "name": "IoTeX Network", "network": "eth", "shortcut": "IOTX", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -6318,7 +6345,7 @@ "name": "InsurePal token", "network": "eth", "shortcut": "IPL", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -6335,8 +6362,8 @@ "name": "IPSX", "network": "eth", "shortcut": "IPSX", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -6353,7 +6380,7 @@ "name": "IoT Chain", "network": "eth", "shortcut": "ITC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -6371,7 +6398,7 @@ "name": "ITT Token", "network": "eth", "shortcut": "ITT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -6388,7 +6415,7 @@ "name": "InsureX", "network": "eth", "shortcut": "IXT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -6405,7 +6432,7 @@ "name": "IoT\u30b3\u30a4\u30f3", "network": "eth", "shortcut": "IoT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -6423,7 +6450,7 @@ "name": "J8T Token", "network": "eth", "shortcut": "J8T", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -6440,7 +6467,7 @@ "name": "JBX", "network": "eth", "shortcut": "JBX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -6475,7 +6502,7 @@ "name": "JNT", "network": "eth", "shortcut": "JNT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -6492,8 +6519,8 @@ "name": "JOYSO", "network": "eth", "shortcut": "JOY", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -6509,7 +6536,7 @@ "name": "JetCoins", "network": "eth", "shortcut": "JetCoins", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -6526,8 +6553,8 @@ "name": "KMCC", "network": "eth", "shortcut": "KC", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -6542,7 +6569,7 @@ "name": "CryptoKEE", "network": "eth", "shortcut": "KEE", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -6560,7 +6587,7 @@ "name": "SelfKey", "network": "eth", "shortcut": "KEY", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -6578,7 +6605,7 @@ "name": "KICK", "network": "eth", "shortcut": "KICK", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -6592,11 +6619,11 @@ "Github": "https://github.com/kikinteractive/kin-token", "Homepage": "https://kin.kik.com" }, - "marketcap_usd": 107334098, + "marketcap_usd": 101249024, "name": "Kin Foundation", "network": "eth", "shortcut": "KIN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -6614,7 +6641,7 @@ "name": "Kyber Network", "network": "eth", "shortcut": "KNC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -6632,8 +6659,8 @@ "name": "KPRCoin", "network": "eth", "shortcut": "KPR", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -6650,8 +6677,8 @@ "name": "Kryll", "network": "eth", "shortcut": "KRL", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -6667,7 +6694,7 @@ "name": "KaizenCoin", "network": "eth", "shortcut": "KZN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -6685,7 +6712,7 @@ "name": "LATOKEN", "network": "eth", "shortcut": "LA", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -6702,7 +6729,7 @@ "name": "LALA World Token", "network": "eth", "shortcut": "LALA", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -6719,8 +6746,8 @@ "name": "LEADCOIN", "network": "eth", "shortcut": "LDC", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -6737,7 +6764,7 @@ "name": "Lemo", "network": "eth", "shortcut": "LEMO", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -6749,11 +6776,12 @@ "address": "0x80fB784B7eD66730e8b1DBd9820aFD29931aab03", "hidden": 1, "links": {}, + "marketcap_usd": 0, "name": "EHTLend", "network": "eth", "shortcut": "LEND", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -6769,7 +6797,7 @@ "name": "LifeRun Coin", "network": "eth", "shortcut": "LFR", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -6786,8 +6814,8 @@ "name": "LGO", "network": "eth", "shortcut": "LGO", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -6803,7 +6831,7 @@ "name": "Logarithm", "network": "eth", "shortcut": "LGR", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -6821,7 +6849,7 @@ "name": "LIF", "network": "eth", "shortcut": "LIF", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -6834,11 +6862,11 @@ "links": { "Homepage": "http://www.lifelabs.io" }, - "marketcap_usd": 11733490, + "marketcap_usd": 10124856, "name": "LIFE", "network": "eth", "shortcut": "LIFE", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -6855,7 +6883,7 @@ "name": "LINK Chainlink", "network": "eth", "shortcut": "LINK (Chainlink)", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -6873,7 +6901,7 @@ "name": "Link Platform", "network": "eth", "shortcut": "LINK Platform", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -6890,7 +6918,7 @@ "name": "LIVE Token", "network": "eth", "shortcut": "LIVE", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -6908,7 +6936,7 @@ "name": "Lancer Token", "network": "eth", "shortcut": "LNC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -6926,7 +6954,7 @@ "name": "Linker Coin", "network": "eth", "shortcut": "LNC-Linker Coin", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -6944,8 +6972,8 @@ "name": "Lendingblock", "network": "eth", "shortcut": "LND", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -6961,7 +6989,7 @@ "name": "LockChain", "network": "eth", "shortcut": "LOC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -6979,7 +7007,7 @@ "name": "LOCIcoin", "network": "eth", "shortcut": "LOCI", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -6996,8 +7024,8 @@ "name": "Locus Chain", "network": "eth", "shortcut": "LOCUS", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -7031,8 +7059,8 @@ "name": "LOOM", "network": "eth", "shortcut": "LOOM", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -7049,8 +7077,8 @@ "name": "Livepeer Token", "network": "eth", "shortcut": "LPT", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -7066,7 +7094,7 @@ "name": "LRC", "network": "eth", "shortcut": "LRC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -7084,8 +7112,8 @@ "name": "LUCToken", "network": "eth", "shortcut": "LUC", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -7118,7 +7146,7 @@ "name": "Lumino Coin", "network": "eth", "shortcut": "LUM", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -7154,8 +7182,8 @@ "name": "Lightyears", "network": "eth", "shortcut": "LYS", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -7171,7 +7199,7 @@ "name": "M-ETH", "network": "eth", "shortcut": "M-ETH", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -7188,8 +7216,8 @@ "name": "MAD", "network": "eth", "shortcut": "MAD", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -7206,8 +7234,8 @@ "name": "MAN", "network": "eth", "shortcut": "MAN", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -7224,7 +7252,7 @@ "name": "Decentraland MANA", "network": "eth", "shortcut": "MANA", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -7241,8 +7269,8 @@ "name": "Martcoin", "network": "eth", "shortcut": "MART", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -7259,7 +7287,7 @@ "name": "Embers", "network": "eth", "shortcut": "MBRS", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -7272,7 +7300,7 @@ "links": { "Homepage": "https://www.mcaplabs.com/" }, - "marketcap_usd": 526213, + "marketcap_usd": 439614, "name": "MCAP", "network": "eth", "shortcut": "MCAP", @@ -7294,7 +7322,7 @@ "name": "Musiconomi", "network": "eth", "shortcut": "MCI", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -7346,8 +7374,8 @@ "name": "Meshbox", "network": "eth", "shortcut": "MESH", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -7364,7 +7392,7 @@ "name": "Monaco Estate", "network": "eth", "shortcut": "MEST", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -7382,8 +7410,8 @@ "name": "SyncFab Smart Manufacturing Blockchain", "network": "eth", "shortcut": "MFG", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -7432,8 +7460,8 @@ "name": "Mychatcoin", "network": "eth", "shortcut": "MIT (Mychatcoin)", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -7464,11 +7492,12 @@ "Github": "https://github.com/mikadohq", "Homepage": "https://mikado.io" }, + "marketcap_usd": 0, "name": "Mikado", "network": "eth", "shortcut": "MKT", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -7519,7 +7548,7 @@ "name": "Media Network Token", "network": "eth", "shortcut": "MNT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -7537,7 +7566,7 @@ "name": "Goldmint MNT Prelaunch Token", "network": "eth", "shortcut": "MNTP", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -7555,7 +7584,7 @@ "name": "Modum", "network": "eth", "shortcut": "MOD", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -7573,8 +7602,8 @@ "name": "Marcelo", "network": "eth", "shortcut": "MRL", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -7590,7 +7619,7 @@ "name": "MoneyRebel Token", "network": "eth", "shortcut": "MRP", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -7638,11 +7667,12 @@ "Github": "https://github.com/Docademic", "Homepage": "https://ico.docademic.com/" }, + "marketcap_usd": 0, "name": "Medical Token Currency", "network": "eth", "shortcut": "MTC", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -7658,7 +7688,7 @@ "name": "Monetha", "network": "eth", "shortcut": "MTH", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -7692,7 +7722,7 @@ "name": "MedToken", "network": "eth", "shortcut": "MTN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -7709,7 +7739,7 @@ "name": "Mitrav", "network": "eth", "shortcut": "MTR", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -7726,7 +7756,7 @@ "name": "MTRCToken", "network": "eth", "shortcut": "MTRc", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -7743,7 +7773,7 @@ "name": "MTX", "network": "eth", "shortcut": "MTX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -7760,8 +7790,8 @@ "name": "MUXE", "network": "eth", "shortcut": "MUXE", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -7778,8 +7808,8 @@ "name": "Merculet", "network": "eth", "shortcut": "MVP", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -7795,7 +7825,7 @@ "name": "RED MWAT", "network": "eth", "shortcut": "MWAT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -7845,8 +7875,8 @@ "name": "Nami ICO", "network": "eth", "shortcut": "NAC", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -7859,11 +7889,12 @@ "Github": "https://github.com/NANJ-COIN", "Homepage": "https://nanjcoin.com/" }, + "marketcap_usd": 0, "name": "NANJCOIN", "network": "eth", "shortcut": "NANJ", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -7880,8 +7911,8 @@ "name": "NaviToken", "network": "eth", "shortcut": "NAVI", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -7898,8 +7929,8 @@ "name": "NebulaAiToken", "network": "eth", "shortcut": "NBAI", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -7916,7 +7947,7 @@ "name": "Nectar", "network": "eth", "shortcut": "NCT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -7933,7 +7964,7 @@ "name": "Neverdie", "network": "eth", "shortcut": "NDC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -7951,8 +7982,8 @@ "name": "Ethfinex Nectar Token", "network": "eth", "shortcut": "NEC", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -7986,7 +8017,7 @@ "name": "NEU Fund", "network": "eth", "shortcut": "NEU", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -8003,7 +8034,7 @@ "name": "NAGA Coin", "network": "eth", "shortcut": "NGC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -8021,7 +8052,7 @@ "name": "Ninfa Money", "network": "eth", "shortcut": "NIMFA", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -8051,11 +8082,12 @@ "address": "0x643B6870beabee941B9260a0A878bcF4A61Fb0f1", "hidden": 1, "links": {}, + "marketcap_usd": 0, "name": "None", "network": "eth", "shortcut": "NONE", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -8072,7 +8104,7 @@ "name": "NOX", "network": "eth", "shortcut": "NOX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -8086,12 +8118,12 @@ "Github": "https://github.com/NperProject", "Homepage": "https://nper.io" }, - "marketcap_usd": 3656883, + "marketcap_usd": 3586774, "name": "NPER", "network": "eth", "shortcut": "NPER", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -8108,8 +8140,8 @@ "name": "Pundi X Token", "network": "eth", "shortcut": "NPXS", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -8121,11 +8153,11 @@ "links": { "Homepage": "https://nuls.io" }, - "marketcap_usd": 90720400, + "marketcap_usd": 83506400, "name": "NULS", "network": "eth", "shortcut": "NULS", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -8159,7 +8191,7 @@ "name": "NXX OLD", "network": "eth", "shortcut": "NXX OLD", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -8189,11 +8221,12 @@ "links": { "Homepage": "https://aco.ai" }, + "marketcap_usd": 0, "name": "OAK", "network": "eth", "shortcut": "OAK", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -8205,7 +8238,7 @@ "links": { "Homepage": "https://www.openanx.org/en" }, - "marketcap_usd": 9056850, + "marketcap_usd": 7888067, "name": "OAX", "network": "eth", "shortcut": "OAX", @@ -8227,7 +8260,7 @@ "name": "Original Crypto Coin", "network": "eth", "shortcut": "OCC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -8259,11 +8292,12 @@ "Github": "https://github.com/OjoooInc", "Homepage": "https://ico.ojooo.com/" }, + "marketcap_usd": 0, "name": "Ojooo Coin", "network": "eth", "shortcut": "OJX", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -8280,7 +8314,7 @@ "name": "MakerDAO", "network": "eth", "shortcut": "OLD_MKR", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -8315,7 +8349,7 @@ "name": "One K Token", "network": "eth", "shortcut": "ONEK", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -8333,8 +8367,8 @@ "name": "OPEN", "network": "eth", "shortcut": "OPEN", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -8350,7 +8384,7 @@ "name": "Opus Foundation", "network": "eth", "shortcut": "OPT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -8364,11 +8398,12 @@ "Github": "https://github.com/orbs-network", "Homepage": "https://orbs.com" }, + "marketcap_usd": 0, "name": "Orbs", "network": "eth", "shortcut": "ORBS", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -8381,11 +8416,11 @@ "Github": "https://github.com/OpenSTFoundation", "Homepage": "https://simpletoken.org" }, - "marketcap_usd": 24065353, + "marketcap_usd": 20900035, "name": "Simple Token 'OST'", "network": "eth", "shortcut": "OST", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -8403,7 +8438,7 @@ "name": "Ox Fina", "network": "eth", "shortcut": "Ox Fina", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -8421,8 +8456,8 @@ "name": "PolicyPal Network", "network": "eth", "shortcut": "PAL", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -8439,7 +8474,7 @@ "name": "PARETO", "network": "eth", "shortcut": "PARETO", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -8453,11 +8488,12 @@ "Github": "https://github.com/Bit-Nation/", "Homepage": "https://bitnation.co" }, + "marketcap_usd": 0, "name": "Pangea Arbitration Token", "network": "eth", "shortcut": "PAT", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -8473,7 +8509,7 @@ "name": "PATENTS", "network": "eth", "shortcut": "PATENTS", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -8491,8 +8527,8 @@ "name": "PATH", "network": "eth", "shortcut": "PATH", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -8525,7 +8561,7 @@ "name": "PBL", "network": "eth", "shortcut": "PBL", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -8542,8 +8578,8 @@ "name": "Primalbase Token (PBT)", "network": "eth", "shortcut": "PBT", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -8559,7 +8595,7 @@ "name": "PITCH", "network": "eth", "shortcut": "PCH", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -8577,7 +8613,7 @@ "name": "Peculium", "network": "eth", "shortcut": "PCL", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -8595,7 +8631,7 @@ "name": "PeculiumOLD", "network": "eth", "shortcut": "PCLOLD", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -8613,7 +8649,7 @@ "name": "PETHEREUM", "network": "eth", "shortcut": "PET", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -8631,7 +8667,7 @@ "name": "PETRO", "network": "eth", "shortcut": "PETRO", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -8648,7 +8684,7 @@ "name": "PEX-Token", "network": "eth", "shortcut": "PEXT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -8665,7 +8701,7 @@ "name": "PIPL Coin", "network": "eth", "shortcut": "PIPL", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -8682,7 +8718,7 @@ "name": "PIX", "network": "eth", "shortcut": "PIX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -8699,7 +8735,7 @@ "name": "PLASMA", "network": "eth", "shortcut": "PLASMA", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -8716,7 +8752,7 @@ "name": "HeroCoin", "network": "eth", "shortcut": "PLAY", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -8785,7 +8821,7 @@ "name": "Po.et Tokens", "network": "eth", "shortcut": "POE", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -8802,7 +8838,7 @@ "name": "Potatoin", "network": "eth", "shortcut": "POIN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -8819,7 +8855,7 @@ "name": "Polymath Network", "network": "eth", "shortcut": "POLY", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -8836,7 +8872,7 @@ "name": "Stake Pool", "network": "eth", "shortcut": "POOL", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -8854,7 +8890,7 @@ "name": "PoSToken", "network": "eth", "shortcut": "POS", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -8871,7 +8907,7 @@ "name": "PowerLedger", "network": "eth", "shortcut": "POWR", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -8888,7 +8924,7 @@ "name": "PayPie", "network": "eth", "shortcut": "PPP", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -8922,7 +8958,7 @@ "name": "Presearch", "network": "eth", "shortcut": "PRE", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -8940,7 +8976,7 @@ "name": "PRG", "network": "eth", "shortcut": "PRG", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -8958,7 +8994,7 @@ "name": "Oyster Pearl", "network": "eth", "shortcut": "PRL", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -8992,8 +9028,8 @@ "name": "PronCoin", "network": "eth", "shortcut": "PRON", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -9010,7 +9046,7 @@ "name": "Purpose", "network": "eth", "shortcut": "PRPS", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -9045,7 +9081,7 @@ "name": "PRSP", "network": "eth", "shortcut": "PRSP", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -9063,7 +9099,7 @@ "name": "PornToken", "network": "eth", "shortcut": "PT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -9081,8 +9117,8 @@ "name": "ParrotCoin", "network": "eth", "shortcut": "PTC", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -9116,7 +9152,7 @@ "name": "PornTokenV2", "network": "eth", "shortcut": "PTWO", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -9134,7 +9170,7 @@ "name": "Pour Coin", "network": "eth", "shortcut": "PUC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -9151,7 +9187,7 @@ "name": "Populous XBRL Token (PXT)", "network": "eth", "shortcut": "PXT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -9164,12 +9200,12 @@ "links": { "Homepage": "https://liquid.plus" }, - "marketcap_usd": 100518950, + "marketcap_usd": 84980000, "name": "QASH", "network": "eth", "shortcut": "QASH", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -9203,8 +9239,8 @@ "name": "qiibeeToken", "network": "eth", "shortcut": "QBX", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -9216,11 +9252,12 @@ "links": { "Homepage": "http://qrg-stamps.com/" }, + "marketcap_usd": 0, "name": "QRG", "network": "eth", "shortcut": "QRG", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -9255,7 +9292,7 @@ "name": "Quantstamp Token", "network": "eth", "shortcut": "QSP", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -9273,7 +9310,7 @@ "name": "TiiQu's Q Token", "network": "eth", "shortcut": "QTQ", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -9287,11 +9324,11 @@ "Github": "https://github.com/qtumproject", "Homepage": "https://qtum.org/" }, - "marketcap_usd": 846294825, + "marketcap_usd": 753573908, "name": "Qtum", "network": "eth", "shortcut": "QTUM", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -9305,11 +9342,12 @@ "Github": "https://github.com/RadioYoFM/ICO_smartcontract/", "Homepage": "https://rao.radioyo.fm" }, + "marketcap_usd": 0, "name": "RadioYo", "network": "eth", "shortcut": "RAO", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -9326,8 +9364,8 @@ "name": "Rublix", "network": "eth", "shortcut": "RBLX", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -9344,8 +9382,8 @@ "name": "Ripio Credit Network", "network": "eth", "shortcut": "RCN", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -9361,7 +9399,7 @@ "name": "RCT", "network": "eth", "shortcut": "RCT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -9379,7 +9417,7 @@ "name": "Raiden Network", "network": "eth", "shortcut": "RDN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -9396,7 +9434,7 @@ "name": "Realisto", "network": "eth", "shortcut": "REA", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -9409,11 +9447,11 @@ "links": { "Homepage": "https://www.rebellious.io" }, - "marketcap_usd": 6779721, + "marketcap_usd": 6611346, "name": "Rebellious", "network": "eth", "shortcut": "REBL", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -9427,12 +9465,12 @@ "Github": "https://github.com/red", "Homepage": "https://ico.red-lang.org" }, - "marketcap_usd": 7700018, + "marketcap_usd": 6873464, "name": "Red Community Token", "network": "eth", "shortcut": "RED", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -9449,7 +9487,7 @@ "name": "Republic Token", "network": "eth", "shortcut": "REN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -9483,7 +9521,7 @@ "name": "Request Network", "network": "eth", "shortcut": "REQ", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -9518,8 +9556,8 @@ "name": "Refereum", "network": "eth", "shortcut": "RFR", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -9536,7 +9574,7 @@ "name": "RiptideCoin", "network": "eth", "shortcut": "RIPT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -9549,7 +9587,7 @@ "links": { "Homepage": "http://crowdsale.iex.ec" }, - "marketcap_usd": 66469888, + "marketcap_usd": 61307164, "name": "IEx.ec", "network": "eth", "shortcut": "RLC", @@ -9588,7 +9626,7 @@ "name": "SMARTRealty", "network": "eth", "shortcut": "RLTY", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -9605,7 +9643,7 @@ "name": "Relex", "network": "eth", "shortcut": "RLX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -9622,7 +9660,7 @@ "name": "Render Token", "network": "eth", "shortcut": "RNDR", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -9636,12 +9674,12 @@ "Github": "https://github.com/rocketico", "Homepage": "https://rocketico.io" }, - "marketcap_usd": 31745275, + "marketcap_usd": 25504163, "name": "Rocket Token", "network": "eth", "shortcut": "ROCK", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -9657,7 +9695,7 @@ "name": "Rocketchain", "network": "eth", "shortcut": "ROK", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -9691,7 +9729,7 @@ "name": "Rocket Pool", "network": "eth", "shortcut": "RPL", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -9709,7 +9747,7 @@ "name": "RiderToken", "network": "eth", "shortcut": "RTN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -9726,7 +9764,7 @@ "name": "RVL", "network": "eth", "shortcut": "RVL", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -9743,7 +9781,7 @@ "name": "Rivetz", "network": "eth", "shortcut": "RVT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -9760,7 +9798,7 @@ "name": "S-A-PAT", "network": "eth", "shortcut": "S-A-PAT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -9777,7 +9815,7 @@ "name": "S-ETH", "network": "eth", "shortcut": "S-ETH", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -9790,11 +9828,11 @@ "links": { "Homepage": "https://saltlending.com" }, - "marketcap_usd": 69746782, + "marketcap_usd": 62280086, "name": "Salt Lending Token", "network": "eth", "shortcut": "SALT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -9828,7 +9866,7 @@ "name": "Scandiweb Coin", "network": "eth", "shortcut": "SCANDI", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -9858,11 +9896,11 @@ "links": { "Homepage": "https://sensay.it" }, - "marketcap_usd": 5160205, + "marketcap_usd": 5058153, "name": "Sensay", "network": "eth", "shortcut": "SENSE", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -9880,7 +9918,7 @@ "name": "SET", "network": "eth", "shortcut": "SET", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -9897,7 +9935,7 @@ "name": "Sexy Token", "network": "eth", "shortcut": "SEXY", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -9965,7 +10003,7 @@ "name": "SIFT", "network": "eth", "shortcut": "SIFT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -9983,8 +10021,8 @@ "name": "Signal", "network": "eth", "shortcut": "SIG", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -10035,7 +10073,7 @@ "name": "SKR Token", "network": "eth", "shortcut": "SKR", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -10053,7 +10091,7 @@ "name": "Skraps", "network": "eth", "shortcut": "SKRP", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -10070,7 +10108,7 @@ "name": "Smartlands", "network": "eth", "shortcut": "SLT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -10088,7 +10126,7 @@ "name": "Smart Billions", "network": "eth", "shortcut": "SMART", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -10106,7 +10144,7 @@ "name": "SmartMesh", "network": "eth", "shortcut": "SMT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -10140,7 +10178,7 @@ "name": "Sandcoin", "network": "eth", "shortcut": "SND", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -10158,7 +10196,7 @@ "name": "SINERGIA", "network": "eth", "shortcut": "SNG", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -10192,7 +10230,7 @@ "name": "SNIP", "network": "eth", "shortcut": "SNIP", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -10227,7 +10265,7 @@ "name": "SNOV", "network": "eth", "shortcut": "SNOV", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -10261,7 +10299,7 @@ "name": "Sola Token", "network": "eth", "shortcut": "SOL", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -10278,7 +10316,7 @@ "name": "SpankChain", "network": "eth", "shortcut": "SPANK", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -10312,7 +10350,7 @@ "name": "SPARTA", "network": "eth", "shortcut": "SPARTA", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -10329,7 +10367,7 @@ "name": "Sportify", "network": "eth", "shortcut": "SPF", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -10346,8 +10384,8 @@ "name": "Sapien", "network": "eth", "shortcut": "SPN", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -10364,7 +10402,7 @@ "name": "Sirin Labs", "network": "eth", "shortcut": "SRN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -10382,7 +10420,7 @@ "name": "Sharder", "network": "eth", "shortcut": "SS", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -10399,8 +10437,8 @@ "name": "StreamShares", "network": "eth", "shortcut": "SSH", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -10416,7 +10454,7 @@ "name": "Starter Coin", "network": "eth", "shortcut": "STAC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -10433,7 +10471,7 @@ "name": "Star Token", "network": "eth", "shortcut": "STAR", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -10451,7 +10489,7 @@ "name": "StrikeCoin Token", "network": "eth", "shortcut": "STC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -10464,11 +10502,11 @@ "links": { "Homepage": "https://stktoken.com" }, - "marketcap_usd": 10429989, + "marketcap_usd": 10053184, "name": "STK Token", "network": "eth", "shortcut": "STK", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -10485,7 +10523,7 @@ "name": "Saturn Network", "network": "eth", "shortcut": "STN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -10499,7 +10537,7 @@ "Github": "https://github.com/Storj/", "Homepage": "https://storj.io/" }, - "marketcap_usd": 69113277, + "marketcap_usd": 62813279, "name": "STORJ", "network": "eth", "shortcut": "STORJ", @@ -10516,11 +10554,11 @@ "links": { "Homepage": "https://www.stormtoken.com" }, - "marketcap_usd": 82563240, + "marketcap_usd": 75202609, "name": "Storm Token", "network": "eth", "shortcut": "STORM", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -10538,7 +10576,7 @@ "name": "StashPay", "network": "eth", "shortcut": "STP", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -10552,11 +10590,12 @@ "Github": "https://github.com/Storiqa/", "Homepage": "https://storiqa.com" }, + "marketcap_usd": 0, "name": "Storiqa", "network": "eth", "shortcut": "STQ", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -10608,7 +10647,7 @@ "name": "Substratum", "network": "eth", "shortcut": "SUB", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -10626,7 +10665,7 @@ "name": "Swarm Fund Token", "network": "eth", "shortcut": "SWM", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -10660,7 +10699,7 @@ "name": "Spectre.ai D-Token", "network": "eth", "shortcut": "SXDT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -10677,7 +10716,7 @@ "name": "Spectre.ai U-Token", "network": "eth", "shortcut": "SXUT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -10694,7 +10733,7 @@ "name": "Synapse", "network": "eth", "shortcut": "SYN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -10711,7 +10750,7 @@ "name": "SenSatorI Token", "network": "eth", "shortcut": "SenSatorI", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -10729,7 +10768,7 @@ "name": "Lamden Tau", "network": "eth", "shortcut": "TAU", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -10747,7 +10786,7 @@ "name": "TBC2", "network": "eth", "shortcut": "TBC2", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -10765,7 +10804,7 @@ "name": "TBitBot", "network": "eth", "shortcut": "TBT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -10778,11 +10817,12 @@ "links": { "Homepage": "https://trustedhealth.io" }, + "marketcap_usd": 0, "name": "TrustedHealth", "network": "eth", "shortcut": "TDH", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -10799,7 +10839,7 @@ "name": "Telcoin", "network": "eth", "shortcut": "TEL", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -10834,8 +10874,8 @@ "name": "Theta Token", "network": "eth", "shortcut": "THETA", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -10852,8 +10892,8 @@ "name": "THUG", "network": "eth", "shortcut": "THUG", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -10886,7 +10926,7 @@ "name": "TIO", "network": "eth", "shortcut": "TIO", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -10938,7 +10978,7 @@ "name": "Tierion Network Token", "network": "eth", "shortcut": "TNT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -10954,7 +10994,7 @@ "name": "The Real Coin", "network": "eth", "shortcut": "TRC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -10971,7 +11011,7 @@ "name": "The Real Coin", "network": "eth", "shortcut": "TRCN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -11006,7 +11046,7 @@ "name": "Tron Lab Token", "network": "eth", "shortcut": "TRX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -11023,7 +11063,7 @@ "name": "The World News", "network": "eth", "shortcut": "TWN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -11040,7 +11080,7 @@ "name": "Twinkle", "network": "eth", "shortcut": "TWNKL", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -11053,7 +11093,7 @@ "links": { "Homepage": "https://taas.fund" }, - "marketcap_usd": 18556916, + "marketcap_usd": 16361650, "name": "Token-as-a-Service", "network": "eth", "shortcut": "TaaS", @@ -11075,7 +11115,7 @@ "name": "UnikoinGold", "network": "eth", "shortcut": "UKG", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -11093,8 +11133,8 @@ "name": "UMKA", "network": "eth", "shortcut": "UMKA", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -11110,7 +11150,7 @@ "name": "Uquid Coin", "network": "eth", "shortcut": "UQC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -11126,8 +11166,8 @@ "name": "Mether (USDM)", "network": "eth", "shortcut": "USDM", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -11143,7 +11183,7 @@ "name": "USD Tether (erc20)", "network": "eth", "shortcut": "USDT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -11160,7 +11200,7 @@ "name": "UTK", "network": "eth", "shortcut": "UTK", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -11178,7 +11218,7 @@ "name": "Universa", "network": "eth", "shortcut": "UTN-P", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -11191,11 +11231,12 @@ "links": { "Homepage": "https://u.network/" }, + "marketcap_usd": 0, "name": "U Networks", "network": "eth", "shortcut": "UUU", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -11210,7 +11251,7 @@ "name": "Unicorn", "network": "eth", "shortcut": "Unicorn", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -11228,8 +11269,8 @@ "name": "Duty of Care Token", "network": "eth", "shortcut": "VDOC", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -11246,7 +11287,7 @@ "name": "BLOCKv", "network": "eth", "shortcut": "VEE", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -11263,7 +11304,7 @@ "name": "VENUS", "network": "eth", "shortcut": "VENUS", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -11298,7 +11339,7 @@ "name": "Vechain", "network": "eth", "shortcut": "VET", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -11315,7 +11356,7 @@ "name": "VIB", "network": "eth", "shortcut": "VIB", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -11333,7 +11374,7 @@ "name": "VIBEX", "network": "eth", "shortcut": "VIBEX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -11350,8 +11391,8 @@ "name": "Viewly", "network": "eth", "shortcut": "VIEW", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -11368,8 +11409,8 @@ "name": "Vice Industry Token", "network": "eth", "shortcut": "VIT", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -11386,7 +11427,7 @@ "name": "VIU", "network": "eth", "shortcut": "VIU", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -11404,8 +11445,8 @@ "name": "VLD", "network": "eth", "shortcut": "VLD", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -11422,8 +11463,8 @@ "name": "VORMACOIN", "network": "eth", "shortcut": "VOC", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -11439,7 +11480,7 @@ "name": "Voise", "network": "eth", "shortcut": "VOISE", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -11487,11 +11528,11 @@ "Github": "https://github.com/waxio", "Homepage": "https://wax.io" }, - "marketcap_usd": 73107807, + "marketcap_usd": 78201036, "name": "WAX", "network": "eth", "shortcut": "WAX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -11508,7 +11549,7 @@ "name": "WeBetCrypto", "network": "eth", "shortcut": "WBA", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -11526,8 +11567,8 @@ "name": "WorldCoinNetwork", "network": "eth", "shortcut": "WCN", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -11560,7 +11601,7 @@ "name": "WETH", "network": "eth", "shortcut": "WETH", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -11578,8 +11619,8 @@ "name": "WHEN Token", "network": "eth", "shortcut": "WHEN", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -11596,7 +11637,7 @@ "name": "WhoHas", "network": "eth", "shortcut": "WHO", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -11614,7 +11655,7 @@ "name": "WickNote", "network": "eth", "shortcut": "WIC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -11632,7 +11673,7 @@ "name": "WILD Token", "network": "eth", "shortcut": "WILD", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -11645,7 +11686,7 @@ "links": { "Homepage": "https://wings.ai" }, - "marketcap_usd": 20449822, + "marketcap_usd": 19681470, "name": "WINGS", "network": "eth", "shortcut": "WINGS", @@ -11666,7 +11707,7 @@ "name": "Wolk Token", "network": "eth", "shortcut": "WOLK", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -11680,11 +11721,12 @@ "Github": "https://github.com/workchainio", "Homepage": "https://workchain.io" }, + "marketcap_usd": 0, "name": "workTOKEN", "network": "eth", "shortcut": "WORK", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -11700,7 +11742,7 @@ "name": "WorldPeaceCoin", "network": "eth", "shortcut": "WPC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -11717,7 +11759,7 @@ "name": "WePower Token", "network": "eth", "shortcut": "WPR", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -11735,7 +11777,7 @@ "name": "WorkCoin", "network": "eth", "shortcut": "WRK", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -11747,11 +11789,12 @@ "address": "0xb7cB1C96dB6B22b0D3d9536E0108d062BD488F74", "hidden": 1, "links": {}, + "marketcap_usd": 0, "name": "Walton", "network": "eth", "shortcut": "WTC", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -11764,11 +11807,12 @@ "Github": "https://github.com/wysker", "Homepage": "https://www.wystoken.org" }, + "marketcap_usd": 0, "name": "wystoken", "network": "eth", "shortcut": "WYS", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -11785,7 +11829,7 @@ "name": "WyvernToken", "network": "eth", "shortcut": "WYV", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -11798,11 +11842,11 @@ "links": { "Homepage": "https://www.wacoin.io" }, - "marketcap_usd": 16304857, + "marketcap_usd": 15523152, "name": "WaBi", "network": "eth", "shortcut": "WaBi", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -11819,7 +11863,7 @@ "name": "Wi Coin", "network": "eth", "shortcut": "WiC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -11836,7 +11880,7 @@ "name": "X8X", "network": "eth", "shortcut": "X8X", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -11871,8 +11915,8 @@ "name": "BlitzPredict", "network": "eth", "shortcut": "XBP", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -11889,7 +11933,7 @@ "name": "CoinCrowd", "network": "eth", "shortcut": "XCC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -11902,11 +11946,12 @@ "links": { "Homepage": "http://fanship.world/" }, + "marketcap_usd": 0, "name": "Fanship", "network": "eth", "shortcut": "XFS", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -11923,8 +11968,8 @@ "name": "Going Gems", "network": "eth", "shortcut": "XGG", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -11940,7 +11985,7 @@ "name": "XGM", "network": "eth", "shortcut": "XGM", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -11958,7 +12003,7 @@ "name": "XGT", "network": "eth", "shortcut": "XGT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -11993,8 +12038,8 @@ "name": "Ink Protocol", "network": "eth", "shortcut": "XNK", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -12010,7 +12055,7 @@ "name": "XENON", "network": "eth", "shortcut": "XNN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -12027,7 +12072,7 @@ "name": "XNT", "network": "eth", "shortcut": "XNT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -12061,7 +12106,7 @@ "name": "XSC", "network": "eth", "shortcut": "XSC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -12078,8 +12123,8 @@ "name": "YEED", "network": "eth", "shortcut": "YEED", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -12097,7 +12142,7 @@ "name": "YUPIE", "network": "eth", "shortcut": "YUPIE", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -12111,11 +12156,11 @@ "Github": "https://github.com/zapproject", "Homepage": "https://zap.store" }, - "marketcap_usd": 4909978, + "marketcap_usd": 4172943, "name": "ZAP", "network": "eth", "shortcut": "ZAP", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -12132,8 +12177,8 @@ "name": "Zeusshield", "network": "eth", "shortcut": "ZCS", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -12150,7 +12195,7 @@ "name": "Zilliqa", "network": "eth", "shortcut": "ZIL", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -12167,8 +12212,8 @@ "name": "ZMINE", "network": "eth", "shortcut": "ZMN", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -12202,7 +12247,7 @@ "name": "Zeus Exchange", "network": "eth", "shortcut": "ZST", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -12220,7 +12265,7 @@ "name": "carVertical", "network": "eth", "shortcut": "cV", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -12237,7 +12282,7 @@ "name": "eBCH", "network": "eth", "shortcut": "eBCH", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -12255,7 +12300,7 @@ "name": "eBTC", "network": "eth", "shortcut": "eBTC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -12272,7 +12317,7 @@ "name": "ETH GAS", "network": "eth", "shortcut": "eGAS", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -12290,8 +12335,8 @@ "name": "Ether-Backed USD Nomins (erc20)", "network": "eth", "shortcut": "eUSD", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -12304,12 +12349,12 @@ "Github": "https://github.com/eosdac", "Homepage": "https://eosdac.io/" }, - "marketcap_usd": 75146365, + "marketcap_usd": 70445092, "name": "eosDAC", "network": "eth", "shortcut": "eosDAC", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -12320,11 +12365,12 @@ "address": "0x809826cceAb68c387726af962713b64Cb5Cb3CCA", "hidden": 1, "links": {}, + "marketcap_usd": 0, "name": "NucleusVision", "network": "eth", "shortcut": "nCash", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -12337,11 +12383,12 @@ "Github": "https://github.com/havven/havven", "Homepage": "https://www.havven.io" }, + "marketcap_usd": 0, "name": "Havven-Backed USD Nomins (nUSD)", "network": "eth", "shortcut": "nUSD", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -12358,7 +12405,7 @@ "name": "onG", "network": "eth", "shortcut": "onG", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -12370,11 +12417,11 @@ "address": "0x8667559254241ddeD4d11392f868d72092765367", "hidden": 1, "links": {}, - "marketcap_usd": 516853388, + "marketcap_usd": 466173766, "name": "Aeternity", "network": "kov", "shortcut": "Aeternity", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -12407,7 +12454,7 @@ "name": "AKASHA Tokens", "network": "rin", "shortcut": "AETH", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -12424,7 +12471,7 @@ "name": "Berlin Hack&Tell winner token", "network": "rin", "shortcut": "BHNT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -12437,11 +12484,12 @@ "links": { "Homepage": "https://www.ctgcoin.org" }, + "marketcap_usd": 0, "name": "Convenient To Go", "network": "rin", "shortcut": "CTGA", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -12453,11 +12501,12 @@ "links": { "Homepage": "https://baseblock.io/" }, + "marketcap_usd": 0, "name": "Karma Token", "network": "rin", "shortcut": "KC", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -12468,11 +12517,12 @@ "address": "0x6475A7FA6Ed2D5180F0e0a07c2d951D12C0EDB91", "hidden": 1, "links": {}, + "marketcap_usd": 0, "name": "None", "network": "rin", "shortcut": "NONE", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -12483,11 +12533,12 @@ "address": "0x12fE174C097F6B3e876B3b060C9061F4B9dEBB80", "hidden": 1, "links": {}, + "marketcap_usd": 0, "name": "PP Donation", "network": "rin", "shortcut": "PPD", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -12503,7 +12554,7 @@ "name": "WALLETH Community-Token", "network": "rin", "shortcut": "WALL", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -12515,11 +12566,12 @@ "address": "0x6f95a3B682F8e9aacC86D057A6DF88A0E68145A8", "hidden": 1, "links": {}, + "marketcap_usd": 0, "name": "IsraCoin", "network": "rop", "shortcut": "ILSC", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -12530,11 +12582,12 @@ "address": "0xFD5a69A1309595FF5121553F52C8A5B2B1B31031", "hidden": 1, "links": {}, + "marketcap_usd": 0, "name": "None", "network": "rop", "shortcut": "NONE", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -12566,7 +12619,7 @@ "name": "CEFS", "network": "ubq", "shortcut": "CEFS", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -12582,7 +12635,7 @@ "name": "DOT", "network": "ubq", "shortcut": "DOT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -12595,11 +12648,11 @@ "links": { "Homepage": "https://www.qwark.io/" }, - "marketcap_usd": 2411381, + "marketcap_usd": 2257803, "name": "QWARK", "network": "ubq", "shortcut": "QWARK", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -12616,7 +12669,7 @@ "name": "RICKS", "network": "ubq", "shortcut": "RICKS", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -12642,7 +12695,7 @@ "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 10436992, + "marketcap_usd": 11146076, "name": "DIMCOIN", "shortcut": "DIM", "t1_enabled": "yes", @@ -12657,7 +12710,7 @@ "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 10436992, + "marketcap_usd": 11146076, "name": "DIM TOKEN", "shortcut": "DIMTOK", "t1_enabled": "yes", @@ -12699,7 +12752,7 @@ "links": { "Homepage": "https://nem.io" }, - "marketcap_usd": 1560150000, + "marketcap_usd": 1448370000, "name": "NEM", "shortcut": "XEM", "t1_enabled": "yes", @@ -12711,11 +12764,11 @@ } }, "info": { - "marketcap_usd": 197138853793, - "t1_coins": 135, - "t2_coins": 521, - "total_marketcap_usd": 267715497595, - "updated_at": 1529671061, - "updated_at_readable": "Fri Jun 22 14:37:41 2018" + "marketcap_usd": 190921126329, + "t1_coins": 685, + "t2_coins": 686, + "total_marketcap_usd": 258400377510, + "updated_at": 1529950637, + "updated_at_readable": "Mon Jun 25 20:17:17 2018" } -} \ No newline at end of file +} diff --git a/tools/coins_details.py b/tools/coins_details.py index b436c3fb9..c7f27fe66 100755 --- a/tools/coins_details.py +++ b/tools/coins_details.py @@ -126,8 +126,8 @@ def update_coins(details): def update_erc20(details): networks = [x[0] for x in ethereum_tokens_gen.networks] - LATEST_T1 = 'https://raw.githubusercontent.com/trezor/trezor-mcu/v1.6.1/firmware/ethereum_tokens.c' - LATEST_T2 = 'https://raw.githubusercontent.com/trezor/trezor-core/v2.0.6/src/apps/ethereum/tokens.py' + LATEST_T1 = 'https://raw.githubusercontent.com/trezor/trezor-mcu/v1.6.2/firmware/ethereum_tokens.c' + LATEST_T2 = 'https://raw.githubusercontent.com/trezor/trezor-core/v2.0.7/src/apps/ethereum/tokens.py' tokens = ethereum_tokens_gen.get_tokens() tokens_t1 = requests.get(LATEST_T1).text From 0b8a12161feb9f604e40a86d24c72886d3fe0da5 Mon Sep 17 00:00:00 2001 From: slush Date: Mon, 25 Jun 2018 20:31:02 +0200 Subject: [PATCH 394/767] coins_details: Minor updates --- defs/coins_details.json | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/defs/coins_details.json b/defs/coins_details.json index 0ce60adac..3bee37965 100644 --- a/defs/coins_details.json +++ b/defs/coins_details.json @@ -370,7 +370,6 @@ "type": "coin" }, "coin:GRS": { - "hidden": 1, "links": { "Github": "https://github.com/Groestlcoin/groestlcoin", "Homepage": "https://www.groestlcoin.org" @@ -4925,6 +4924,7 @@ }, "erc20:eth:E\u20b9": { "address": "0xb67734521eAbBE9C773729dB73E16CC2dfb20A58", + "hidden": 1, "links": { "Github": "https://github.com/eRupee", "Homepage": "https://erupee.wordpress.com" @@ -5996,6 +5996,7 @@ }, "erc20:eth:Hdp.\u0444": { "address": "0x84543F868eC1b1FAC510d49d13C069f64cD2d5f9", + "hidden": 1, "links": { "Github": "https://github.com/HEDPAY", "Homepage": "http://hedpay.com" @@ -12764,11 +12765,11 @@ } }, "info": { - "marketcap_usd": 190921126329, - "t1_coins": 685, + "marketcap_usd": 191456100947, + "t1_coins": 686, "t2_coins": 686, - "total_marketcap_usd": 258400377510, - "updated_at": 1529950637, - "updated_at_readable": "Mon Jun 25 20:17:17 2018" + "total_marketcap_usd": 258211270341, + "updated_at": 1529951420, + "updated_at_readable": "Mon Jun 25 20:30:20 2018" } } From 0c4f63c418926aef7b096949cc4c66b2260c2aea Mon Sep 17 00:00:00 2001 From: slush Date: Mon, 25 Jun 2018 20:33:43 +0200 Subject: [PATCH 395/767] coins_details: Minor updates --- defs/coins_details.json | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/defs/coins_details.json b/defs/coins_details.json index 3bee37965..606e60b5d 100644 --- a/defs/coins_details.json +++ b/defs/coins_details.json @@ -214,7 +214,6 @@ } }, "coin:BTCP": { - "hidden": 1, "links": { "Github": "https://github.com/BTCPrivate/BitcoinPrivate", "Homepage": "https://btcprivate.org" @@ -293,7 +292,6 @@ "type": "coin" }, "coin:DGB": { - "hidden": 1, "links": { "Github": "https://github.com/digibyte/digibyte", "Homepage": "https://www.digibyte.co" @@ -567,7 +565,6 @@ "type": "coin" }, "coin:XZC": { - "hidden": 1, "links": { "Github": "https://github.com/zcoinofficial/zcoin", "Homepage": "https://zcoin.io" @@ -12766,10 +12763,10 @@ }, "info": { "marketcap_usd": 191456100947, - "t1_coins": 686, - "t2_coins": 686, - "total_marketcap_usd": 258211270341, - "updated_at": 1529951420, - "updated_at_readable": "Mon Jun 25 20:30:20 2018" + "t1_coins": 689, + "t2_coins": 689, + "total_marketcap_usd": 258211684605, + "updated_at": 1529951560, + "updated_at_readable": "Mon Jun 25 20:32:40 2018" } -} +} \ No newline at end of file From e16e58442a63f969dcad8913484ff9559fc5475a Mon Sep 17 00:00:00 2001 From: Travis Reeder Date: Tue, 26 Jun 2018 12:09:23 -0700 Subject: [PATCH 396/767] Adds GoChain network (#147) --- defs/ethereum/networks.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/defs/ethereum/networks.json b/defs/ethereum/networks.json index 2750ddca0..c63938ee8 100644 --- a/defs/ethereum/networks.json +++ b/defs/ethereum/networks.json @@ -79,6 +79,14 @@ "rskip60": false, "url": "https://www.ethereum.org" }, + { + "chain_id": 60, + "slip44": 6060, + "shortcut": "GO", + "name": "GoChain", + "rskip60": false, + "url": "https://gochain.io" + }, { "chain_id": 61, "slip44": 61, From 3f55a0cff78236e17b5f2d3877133f5330728837 Mon Sep 17 00:00:00 2001 From: "JOSEPH NICHOLAS R. ALCANTARA" Date: Wed, 27 Jun 2018 03:18:27 +0800 Subject: [PATCH 397/767] Zencash support (#140) --- defs/coins/zencash.json | 38 ++++++++++++++++++++++++++++++++++++++ defs/coins/zencash.png | Bin 0 -> 21257 bytes protob/types.proto | 4 ++++ 3 files changed, 42 insertions(+) create mode 100644 defs/coins/zencash.json create mode 100644 defs/coins/zencash.png diff --git a/defs/coins/zencash.json b/defs/coins/zencash.json new file mode 100644 index 000000000..ff0109a60 --- /dev/null +++ b/defs/coins/zencash.json @@ -0,0 +1,38 @@ +{ + "coin_name": "Zencash", + "coin_shortcut": "ZEN", + "coin_label": "Zencash", + "website": "https://zencash.com", + "github": "https://github.com/ZencashOfficial/zen", + "maintainer": "Zencash ", + "curve_name": "secp256k1", + "address_type": 8329, + "address_type_p2sh": 8342, + "maxfee_kb": 2000000, + "minfee_kb": 1000, + "signed_message_header": "Zencash Signed Message:\n", + "hash_genesis_block": "0007104ccda289427919efc39dc9e4d499804b7bebc22df55f8b834301260602", + "xprv_magic": 76066276, + "xpub_magic": 76067358, + "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "slip44": 121, + "segwit": false, + "decred": false, + "fork_id": 0, + "force_bip143": false, + "version_group_id": null, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 546, + "blocktime_seconds": 150, + "address_prefix": "zencash:", + "min_address_length": 35, + "max_address_length": 95, + "bitcore": [ + "https://explorer.zen-solutions.io" + ] +} \ No newline at end of file diff --git a/defs/coins/zencash.png b/defs/coins/zencash.png new file mode 100644 index 0000000000000000000000000000000000000000..b4e512b0297b5acf8c27fa5e5649fe424cc78e80 GIT binary patch literal 21257 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 GQ~n1M!6y3v literal 0 HcmV?d00001 diff --git a/protob/types.proto b/protob/types.proto index 8e3799bf2..6e58dcabf 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -187,6 +187,8 @@ message TxInputType { optional uint64 amount = 8; // amount of previous transaction output (for segwit only) optional uint32 decred_tree = 9; optional uint32 decred_script_version = 10; + optional bytes prev_block_hash_bip115 = 11; //block hash of previous transaction output (for bip115 implementation) + optional bytes prev_block_height_bip115 = 12; //block height of previous transaction output (for bip115 implementation) } /** @@ -202,6 +204,8 @@ message TxOutputType { optional MultisigRedeemScriptType multisig = 5; // defines multisig address; script_type must be PAYTOMULTISIG optional bytes op_return_data = 6; // defines op_return data; script_type must be PAYTOOPRETURN, amount must be 0 optional uint32 decred_script_version = 7; + optional bytes block_hash_bip115 = 8; //block hash of existing block (recommended current_block - 300) (for bip115 implementation) + optional bytes block_height_bip115 = 9; //block height of existing block (recommended current_block - 300) (for bip115 implementation) } /** From 9491cd4b9eb5a63dbf1440230c6faf1e1dc3d65c Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 26 Jun 2018 21:22:24 +0200 Subject: [PATCH 398/767] defs: add blockbook field to build_coins script --- defs/coins/zencash.json | 5 +++-- protob/types.proto | 8 ++++---- tools/build_coins.py | 5 ++++- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/defs/coins/zencash.json b/defs/coins/zencash.json index ff0109a60..5971b88d2 100644 --- a/defs/coins/zencash.json +++ b/defs/coins/zencash.json @@ -34,5 +34,6 @@ "max_address_length": 95, "bitcore": [ "https://explorer.zen-solutions.io" - ] -} \ No newline at end of file + ], + "blockbook": [] +} diff --git a/protob/types.proto b/protob/types.proto index 6e58dcabf..b04bd82f5 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -187,8 +187,8 @@ message TxInputType { optional uint64 amount = 8; // amount of previous transaction output (for segwit only) optional uint32 decred_tree = 9; optional uint32 decred_script_version = 10; - optional bytes prev_block_hash_bip115 = 11; //block hash of previous transaction output (for bip115 implementation) - optional bytes prev_block_height_bip115 = 12; //block height of previous transaction output (for bip115 implementation) + optional bytes prev_block_hash_bip115 = 11; // block hash of previous transaction output (for bip115 implementation) + optional bytes prev_block_height_bip115 = 12; // block height of previous transaction output (for bip115 implementation) } /** @@ -204,8 +204,8 @@ message TxOutputType { optional MultisigRedeemScriptType multisig = 5; // defines multisig address; script_type must be PAYTOMULTISIG optional bytes op_return_data = 6; // defines op_return data; script_type must be PAYTOOPRETURN, amount must be 0 optional uint32 decred_script_version = 7; - optional bytes block_hash_bip115 = 8; //block hash of existing block (recommended current_block - 300) (for bip115 implementation) - optional bytes block_height_bip115 = 9; //block height of existing block (recommended current_block - 300) (for bip115 implementation) + optional bytes block_hash_bip115 = 8; // block hash of existing block (recommended current_block - 300) (for bip115 implementation) + optional bytes block_height_bip115 = 9; // block height of existing block (recommended current_block - 300) (for bip115 implementation) } /** diff --git a/tools/build_coins.py b/tools/build_coins.py index abac8b6d0..2403e22bb 100755 --- a/tools/build_coins.py +++ b/tools/build_coins.py @@ -100,6 +100,9 @@ def validate_coin(coin): assert check_type(coin['bitcore'], list, empty=True) for bc in coin['bitcore']: assert not bc.endswith('/') + assert check_type(coin['blockbook'], list, empty=True) + for bb in coin['blockbook']: + assert not bb.endswith('/') def validate_icon(icon): @@ -160,9 +163,9 @@ def convert_icon(icon): def process_json(fn): print(os.path.basename(fn), end=' ... ') j = json.load(open(fn)) + validate_coin(j) if BUILD_DEFS: i = Image.open(fn.replace('.json', '.png')) - validate_coin(j) validate_icon(i) ser = serialize(j, convert_icon(i)) sig = sign(ser) From a19d7c64ca99a7166bd7c70066e274d6a49d4c0e Mon Sep 17 00:00:00 2001 From: Saleem Rashid Date: Wed, 27 Jun 2018 14:17:19 +0100 Subject: [PATCH 399/767] types: Add wire_no_fsm (#146) --- protob/messages.proto | 16 ++++++++-------- protob/types.proto | 1 + 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/protob/messages.proto b/protob/messages.proto index fbfb88d19..48afb6ea5 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -14,7 +14,7 @@ import "types.proto"; * Mapping between Trezor wire identifier (uint) and a protobuf message */ enum MessageType { - MessageType_Initialize = 0 [(wire_in) = true]; + MessageType_Initialize = 0 [(wire_in) = true, (wire_tiny) = true]; MessageType_Ping = 1 [(wire_in) = true]; MessageType_Success = 2 [(wire_out) = true]; MessageType_Failure = 3 [(wire_out) = true]; @@ -33,15 +33,15 @@ enum MessageType { MessageType_SimpleSignTx = 16 [(wire_in) = true, deprecated = true]; MessageType_Features = 17 [(wire_out) = true]; MessageType_PinMatrixRequest = 18 [(wire_out) = true]; - MessageType_PinMatrixAck = 19 [(wire_in) = true, (wire_tiny) = true]; - MessageType_Cancel = 20 [(wire_in) = true]; + MessageType_PinMatrixAck = 19 [(wire_in) = true, (wire_tiny) = true, (wire_no_fsm) = true]; + MessageType_Cancel = 20 [(wire_in) = true, (wire_tiny) = true]; MessageType_TxRequest = 21 [(wire_out) = true]; MessageType_TxAck = 22 [(wire_in) = true]; MessageType_CipherKeyValue = 23 [(wire_in) = true]; MessageType_ClearSession = 24 [(wire_in) = true]; MessageType_ApplySettings = 25 [(wire_in) = true]; MessageType_ButtonRequest = 26 [(wire_out) = true]; - MessageType_ButtonAck = 27 [(wire_in) = true, (wire_tiny) = true]; + MessageType_ButtonAck = 27 [(wire_in) = true, (wire_tiny) = true, (wire_no_fsm) = true]; MessageType_ApplyFlags = 28 [(wire_in) = true]; MessageType_GetAddress = 29 [(wire_in) = true]; MessageType_Address = 30 [(wire_out) = true]; @@ -53,9 +53,9 @@ enum MessageType { MessageType_VerifyMessage = 39 [(wire_in) = true]; MessageType_MessageSignature = 40 [(wire_out) = true]; MessageType_PassphraseRequest = 41 [(wire_out) = true]; - MessageType_PassphraseAck = 42 [(wire_in) = true, (wire_tiny) = true]; + MessageType_PassphraseAck = 42 [(wire_in) = true, (wire_tiny) = true, (wire_no_fsm) = true]; MessageType_PassphraseStateRequest = 77 [(wire_out) = true]; - MessageType_PassphraseStateAck = 78 [(wire_in) = true, (wire_tiny) = true]; + MessageType_PassphraseStateAck = 78 [(wire_in) = true, (wire_tiny) = true, (wire_no_fsm) = true]; MessageType_EstimateTxSize = 43 [(wire_in) = true, deprecated = true]; MessageType_TxSize = 44 [(wire_out) = true, deprecated = true]; MessageType_RecoveryDevice = 45 [(wire_in) = true]; @@ -90,8 +90,8 @@ enum MessageType { MessageType_CosiSignature = 74 [(wire_out) = true]; MessageType_NEMDecryptMessage = 75 [(wire_in) = true]; MessageType_NEMDecryptedMessage = 76 [(wire_out) = true]; - MessageType_DebugLinkDecision = 100 [(wire_debug_in) = true, (wire_tiny) = true]; - MessageType_DebugLinkGetState = 101 [(wire_debug_in) = true]; + MessageType_DebugLinkDecision = 100 [(wire_debug_in) = true, (wire_tiny) = true, (wire_no_fsm) = true]; + MessageType_DebugLinkGetState = 101 [(wire_debug_in) = true, (wire_tiny) = true]; MessageType_DebugLinkState = 102 [(wire_debug_out) = true]; MessageType_DebugLinkStop = 103 [(wire_debug_in) = true]; MessageType_DebugLinkLog = 104 [(wire_debug_out) = true]; diff --git a/protob/types.proto b/protob/types.proto index b04bd82f5..00d6a7f1f 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -23,6 +23,7 @@ extend google.protobuf.EnumValueOptions { optional bool wire_debug_out = 50005; // message can be transmitted via debug wire from TREZOR to PC optional bool wire_tiny = 50006; // message is handled by TREZOR when the USB stack is in tiny mode optional bool wire_bootloader = 50007; // message is only handled by TREZOR Bootloader + optional bool wire_no_fsm = 50008; // message is not handled by TREZOR unless the USB stack is in tiny mode } /** From aa5fbca84cf680debba72b4a4e9452f791dee81e Mon Sep 17 00:00:00 2001 From: Yura Pakhuchiy Date: Thu, 28 Jun 2018 16:22:22 +0700 Subject: [PATCH 400/767] Add Zcoin wallets to coin_details.json (#150) --- defs/coins_details.json | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/defs/coins_details.json b/defs/coins_details.json index 606e60b5d..4b57d5b86 100644 --- a/defs/coins_details.json +++ b/defs/coins_details.json @@ -574,7 +574,11 @@ "shortcut": "XZC", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "coin" + "type": "coin", + "wallet": { + "Electrum-XZC": "https://github.com/zcoinofficial/electrum-xzc", + "Znode Tool": "https://github.com/yura-pakhuchiy/znode-tool" + } }, "coin:ZEC": { "links": { @@ -12769,4 +12773,4 @@ "updated_at": 1529951560, "updated_at_readable": "Mon Jun 25 20:32:40 2018" } -} \ No newline at end of file +} From 5d61471108300a86deff300a482fd0d96f238070 Mon Sep 17 00:00:00 2001 From: Yura Pakhuchiy Date: Thu, 28 Jun 2018 18:54:51 +0700 Subject: [PATCH 401/767] Add Electrum-GRS to coin_details.json (#151) --- defs/coins_details.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/defs/coins_details.json b/defs/coins_details.json index 4b57d5b86..32469999d 100644 --- a/defs/coins_details.json +++ b/defs/coins_details.json @@ -377,7 +377,10 @@ "shortcut": "GRS", "t1_enabled": "yes", "t2_enabled": "no", - "type": "coin" + "type": "coin", + "wallet": { + "Electrum-GRS": "https://www.groestlcoin.org/groestlcoin-electrum-wallet/" + } }, "coin:KOTO": { "links": { From 6e169d6f18695afbdcb1c979606b5113706377b0 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 28 Jun 2018 14:04:19 +0200 Subject: [PATCH 402/767] defs: enable Zencash for T2 --- defs/support.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/defs/support.json b/defs/support.json index 70180deab..6a817355c 100644 --- a/defs/support.json +++ b/defs/support.json @@ -46,7 +46,8 @@ "Zcash": "2.0.7", "Zcash Testnet": "2.0.7", "Zcoin": "2.0.7", - "Zcoin Testnet": "2.0.7" + "Zcoin Testnet": "2.0.7", + "Zencash": "2.0.8" }, "connect": { "Bitcoin": true, From ef306159aa984d0ed33c49c1d8e0d52bd04b33b9 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 28 Jun 2018 14:12:19 +0200 Subject: [PATCH 403/767] defs: add bip115 to coins --- defs/coins/bcash.json | 1 + defs/coins/bcash_testnet.json | 1 + defs/coins/bgold.json | 1 + defs/coins/bitcoin.json | 1 + defs/coins/bitcoin_testnet.json | 1 + defs/coins/bitcore.json | 1 + defs/coins/bprivate.json | 1 + defs/coins/crown.json | 1 + defs/coins/dash.json | 1 + defs/coins/dash_testnet.json | 1 + defs/coins/decred.json | 1 + defs/coins/decred_testnet.json | 1 + defs/coins/denarius.json | 1 + defs/coins/digibyte.json | 1 + defs/coins/dogecoin.json | 1 + defs/coins/feathercoin.json | 1 + defs/coins/flashcoin.json | 1 + defs/coins/fujicoin.json | 1 + defs/coins/groestlcoin.json | 1 + defs/coins/groestlcoin_testnet.json | 1 + defs/coins/koto.json | 1 + defs/coins/litecoin.json | 1 + defs/coins/litecoin_testnet.json | 1 + defs/coins/monacoin.json | 1 + defs/coins/monetaryunit.json | 1 + defs/coins/myriad.json | 1 + defs/coins/namecoin.json | 1 + defs/coins/terracoin.json | 1 + defs/coins/vertcoin.json | 1 + defs/coins/viacoin.json | 1 + defs/coins/zcash.json | 1 + defs/coins/zcash_testnet.json | 1 + defs/coins/zcoin.json | 1 + defs/coins/zcoin_testnet.json | 1 + defs/coins/zencash.json | 75 ++++++++++++++-------------- defs/coins/zencash.png | Bin 21257 -> 21030 bytes tools/build_coins.py | 1 + 37 files changed, 73 insertions(+), 37 deletions(-) diff --git a/defs/coins/bcash.json b/defs/coins/bcash.json index b8888649e..38c1fcb43 100644 --- a/defs/coins/bcash.json +++ b/defs/coins/bcash.json @@ -23,6 +23,7 @@ "decred": false, "fork_id": 0, "force_bip143": true, + "bip115": false, "version_group_id": null, "default_fee_b": { "Low": 10, diff --git a/defs/coins/bcash_testnet.json b/defs/coins/bcash_testnet.json index 6107f5ea4..c3946b6b5 100644 --- a/defs/coins/bcash_testnet.json +++ b/defs/coins/bcash_testnet.json @@ -23,6 +23,7 @@ "decred": false, "fork_id": 0, "force_bip143": true, + "bip115": false, "version_group_id": null, "default_fee_b": { "Normal": 10 diff --git a/defs/coins/bgold.json b/defs/coins/bgold.json index 4016b2ad2..83608398b 100644 --- a/defs/coins/bgold.json +++ b/defs/coins/bgold.json @@ -23,6 +23,7 @@ "decred": false, "fork_id": 79, "force_bip143": true, + "bip115": false, "version_group_id": null, "default_fee_b": { "Low": 10, diff --git a/defs/coins/bitcoin.json b/defs/coins/bitcoin.json index d3f5e04b2..8957df9b8 100644 --- a/defs/coins/bitcoin.json +++ b/defs/coins/bitcoin.json @@ -23,6 +23,7 @@ "decred": false, "fork_id": null, "force_bip143": false, + "bip115": false, "version_group_id": null, "default_fee_b": { "Low": 10, diff --git a/defs/coins/bitcoin_testnet.json b/defs/coins/bitcoin_testnet.json index cdf2d5e1c..69425f930 100644 --- a/defs/coins/bitcoin_testnet.json +++ b/defs/coins/bitcoin_testnet.json @@ -23,6 +23,7 @@ "decred": false, "fork_id": null, "force_bip143": false, + "bip115": false, "version_group_id": null, "default_fee_b": { "Normal": 10 diff --git a/defs/coins/bitcore.json b/defs/coins/bitcore.json index 909be5270..10779b873 100644 --- a/defs/coins/bitcore.json +++ b/defs/coins/bitcore.json @@ -23,6 +23,7 @@ "decred": false, "fork_id": null, "force_bip143": false, + "bip115": false, "version_group_id": null, "default_fee_b": { "Low": 10 diff --git a/defs/coins/bprivate.json b/defs/coins/bprivate.json index 09a065c6d..6f217aec5 100644 --- a/defs/coins/bprivate.json +++ b/defs/coins/bprivate.json @@ -23,6 +23,7 @@ "decred": false, "fork_id": 42, "force_bip143": false, + "bip115": false, "version_group_id": null, "default_fee_b": { "Normal": 10 diff --git a/defs/coins/crown.json b/defs/coins/crown.json index 9e353cb03..4016fb701 100644 --- a/defs/coins/crown.json +++ b/defs/coins/crown.json @@ -23,6 +23,7 @@ "decred": false, "fork_id": null, "force_bip143": false, + "bip115": false, "version_group_id": null, "default_fee_b": { "Normal": 10 diff --git a/defs/coins/dash.json b/defs/coins/dash.json index 106d5a1c8..0ade1f60f 100644 --- a/defs/coins/dash.json +++ b/defs/coins/dash.json @@ -23,6 +23,7 @@ "decred": false, "fork_id": null, "force_bip143": false, + "bip115": false, "version_group_id": null, "default_fee_b": { "Normal": 10 diff --git a/defs/coins/dash_testnet.json b/defs/coins/dash_testnet.json index ddf425bc5..12185287d 100644 --- a/defs/coins/dash_testnet.json +++ b/defs/coins/dash_testnet.json @@ -23,6 +23,7 @@ "decred": false, "fork_id": null, "force_bip143": false, + "bip115": false, "version_group_id": null, "default_fee_b": { "Normal": 10 diff --git a/defs/coins/decred.json b/defs/coins/decred.json index 5b3741efa..3bb2837dc 100644 --- a/defs/coins/decred.json +++ b/defs/coins/decred.json @@ -23,6 +23,7 @@ "decred": true, "fork_id": null, "force_bip143": false, + "bip115": false, "version_group_id": null, "default_fee_b": { "Normal": 10 diff --git a/defs/coins/decred_testnet.json b/defs/coins/decred_testnet.json index 0d7ffb9d2..1774fee33 100644 --- a/defs/coins/decred_testnet.json +++ b/defs/coins/decred_testnet.json @@ -23,6 +23,7 @@ "decred": true, "fork_id": null, "force_bip143": false, + "bip115": false, "version_group_id": null, "default_fee_b": { "Normal": 10 diff --git a/defs/coins/denarius.json b/defs/coins/denarius.json index 8a0627fcf..0b73d069a 100644 --- a/defs/coins/denarius.json +++ b/defs/coins/denarius.json @@ -23,6 +23,7 @@ "decred": false, "fork_id": null, "force_bip143": false, + "bip115": false, "version_group_id": null, "default_fee_b": { "Normal": 10 diff --git a/defs/coins/digibyte.json b/defs/coins/digibyte.json index 65f52a106..152bebc32 100644 --- a/defs/coins/digibyte.json +++ b/defs/coins/digibyte.json @@ -24,6 +24,7 @@ "fork_id": null, "force_bip143": false, "version_group_id": null, + "bip115": false, "default_fee_b": { "Low": 10, "Economy": 70, diff --git a/defs/coins/dogecoin.json b/defs/coins/dogecoin.json index 2329f5085..640b0d279 100644 --- a/defs/coins/dogecoin.json +++ b/defs/coins/dogecoin.json @@ -23,6 +23,7 @@ "decred": false, "fork_id": null, "force_bip143": false, + "bip115": false, "version_group_id": null, "default_fee_b": { "Normal": 100000 diff --git a/defs/coins/feathercoin.json b/defs/coins/feathercoin.json index 58a66a110..a7088e5c7 100644 --- a/defs/coins/feathercoin.json +++ b/defs/coins/feathercoin.json @@ -23,6 +23,7 @@ "decred": false, "fork_id": null, "force_bip143": false, + "bip115": false, "version_group_id": null, "default_fee_b": { "Normal": 1000 diff --git a/defs/coins/flashcoin.json b/defs/coins/flashcoin.json index 3b37be349..5d770505e 100644 --- a/defs/coins/flashcoin.json +++ b/defs/coins/flashcoin.json @@ -23,6 +23,7 @@ "decred": false, "fork_id": null, "force_bip143": false, + "bip115": false, "version_group_id": null, "default_fee_b": { "Normal": 0 diff --git a/defs/coins/fujicoin.json b/defs/coins/fujicoin.json index e654d990a..bb1e1d4c6 100644 --- a/defs/coins/fujicoin.json +++ b/defs/coins/fujicoin.json @@ -23,6 +23,7 @@ "decred": false, "fork_id": null, "force_bip143": false, + "bip115": false, "version_group_id": null, "default_fee_b": { "Low": 100000, diff --git a/defs/coins/groestlcoin.json b/defs/coins/groestlcoin.json index 49be14632..ca5f2adf6 100644 --- a/defs/coins/groestlcoin.json +++ b/defs/coins/groestlcoin.json @@ -23,6 +23,7 @@ "decred": false, "fork_id": null, "force_bip143": false, + "bip115": false, "version_group_id": null, "default_fee_b": { "Normal": 10 diff --git a/defs/coins/groestlcoin_testnet.json b/defs/coins/groestlcoin_testnet.json index 33837a74c..ee711d6b8 100644 --- a/defs/coins/groestlcoin_testnet.json +++ b/defs/coins/groestlcoin_testnet.json @@ -23,6 +23,7 @@ "decred": false, "fork_id": null, "force_bip143": false, + "bip115": false, "version_group_id": null, "default_fee_b": { "Normal": 10 diff --git a/defs/coins/koto.json b/defs/coins/koto.json index ff16a40b6..929791658 100644 --- a/defs/coins/koto.json +++ b/defs/coins/koto.json @@ -23,6 +23,7 @@ "decred": false, "fork_id": null, "force_bip143": false, + "bip115": false, "version_group_id": 48748912, "default_fee_b": { "Normal": 10 diff --git a/defs/coins/litecoin.json b/defs/coins/litecoin.json index c703e009b..fc85ee1fb 100644 --- a/defs/coins/litecoin.json +++ b/defs/coins/litecoin.json @@ -23,6 +23,7 @@ "decred": false, "fork_id": null, "force_bip143": false, + "bip115": false, "version_group_id": null, "default_fee_b": { "Normal": 1000 diff --git a/defs/coins/litecoin_testnet.json b/defs/coins/litecoin_testnet.json index a6e626345..5ac56f2b6 100644 --- a/defs/coins/litecoin_testnet.json +++ b/defs/coins/litecoin_testnet.json @@ -23,6 +23,7 @@ "decred": false, "fork_id": null, "force_bip143": false, + "bip115": false, "version_group_id": null, "default_fee_b": { "Normal": 10 diff --git a/defs/coins/monacoin.json b/defs/coins/monacoin.json index b261793cd..e1adde3e4 100644 --- a/defs/coins/monacoin.json +++ b/defs/coins/monacoin.json @@ -23,6 +23,7 @@ "decred": false, "fork_id": null, "force_bip143": false, + "bip115": false, "version_group_id": null, "default_fee_b": { "Normal": 100000 diff --git a/defs/coins/monetaryunit.json b/defs/coins/monetaryunit.json index 4d7d77ae1..e374c79e0 100644 --- a/defs/coins/monetaryunit.json +++ b/defs/coins/monetaryunit.json @@ -23,6 +23,7 @@ "decred": false, "fork_id": null, "force_bip143": false, + "bip115": false, "version_group_id": null, "default_fee_b": { "Normal": 10 diff --git a/defs/coins/myriad.json b/defs/coins/myriad.json index e8c36c303..f800dc36f 100644 --- a/defs/coins/myriad.json +++ b/defs/coins/myriad.json @@ -23,6 +23,7 @@ "decred": false, "fork_id": null, "force_bip143": false, + "bip115": false, "version_group_id": null, "default_fee_b": { "Low": 10, diff --git a/defs/coins/namecoin.json b/defs/coins/namecoin.json index ff839e65e..e794648e1 100644 --- a/defs/coins/namecoin.json +++ b/defs/coins/namecoin.json @@ -23,6 +23,7 @@ "decred": false, "fork_id": null, "force_bip143": false, + "bip115": false, "version_group_id": null, "default_fee_b": { "Normal": 10 diff --git a/defs/coins/terracoin.json b/defs/coins/terracoin.json index 8086a7c98..c8e681b11 100644 --- a/defs/coins/terracoin.json +++ b/defs/coins/terracoin.json @@ -23,6 +23,7 @@ "decred": false, "fork_id": null, "force_bip143": false, + "bip115": false, "version_group_id": null, "default_fee_b": { "Normal": 10 diff --git a/defs/coins/vertcoin.json b/defs/coins/vertcoin.json index d511acb74..f03835bed 100644 --- a/defs/coins/vertcoin.json +++ b/defs/coins/vertcoin.json @@ -23,6 +23,7 @@ "decred": false, "fork_id": null, "force_bip143": false, + "bip115": false, "version_group_id": null, "default_fee_b": { "Normal": 1000 diff --git a/defs/coins/viacoin.json b/defs/coins/viacoin.json index ced4d467b..096f0c1da 100644 --- a/defs/coins/viacoin.json +++ b/defs/coins/viacoin.json @@ -23,6 +23,7 @@ "decred": false, "fork_id": null, "force_bip143": false, + "bip115": false, "version_group_id": null, "default_fee_b": { "Low": 1000, diff --git a/defs/coins/zcash.json b/defs/coins/zcash.json index 0d83e9d3d..ab8ead567 100644 --- a/defs/coins/zcash.json +++ b/defs/coins/zcash.json @@ -23,6 +23,7 @@ "decred": false, "fork_id": null, "force_bip143": false, + "bip115": false, "version_group_id": 63210096, "default_fee_b": { "Normal": 10 diff --git a/defs/coins/zcash_testnet.json b/defs/coins/zcash_testnet.json index 5160b0b47..b79d47130 100644 --- a/defs/coins/zcash_testnet.json +++ b/defs/coins/zcash_testnet.json @@ -23,6 +23,7 @@ "decred": false, "fork_id": null, "force_bip143": false, + "bip115": false, "version_group_id": 63210096, "default_fee_b": { "Normal": 10 diff --git a/defs/coins/zcoin.json b/defs/coins/zcoin.json index 57dd3f68d..f9e2f817c 100644 --- a/defs/coins/zcoin.json +++ b/defs/coins/zcoin.json @@ -23,6 +23,7 @@ "decred": false, "fork_id": null, "force_bip143": false, + "bip115": false, "version_group_id": null, "default_fee_b": { "Low": 1, diff --git a/defs/coins/zcoin_testnet.json b/defs/coins/zcoin_testnet.json index 954522884..c6b7e7312 100644 --- a/defs/coins/zcoin_testnet.json +++ b/defs/coins/zcoin_testnet.json @@ -23,6 +23,7 @@ "decred": false, "fork_id": null, "force_bip143": false, + "bip115": false, "version_group_id": null, "default_fee_b": { "Low": 1, diff --git a/defs/coins/zencash.json b/defs/coins/zencash.json index 5971b88d2..5fe36d242 100644 --- a/defs/coins/zencash.json +++ b/defs/coins/zencash.json @@ -1,39 +1,40 @@ { - "coin_name": "Zencash", - "coin_shortcut": "ZEN", - "coin_label": "Zencash", - "website": "https://zencash.com", - "github": "https://github.com/ZencashOfficial/zen", - "maintainer": "Zencash ", - "curve_name": "secp256k1", - "address_type": 8329, - "address_type_p2sh": 8342, - "maxfee_kb": 2000000, - "minfee_kb": 1000, - "signed_message_header": "Zencash Signed Message:\n", - "hash_genesis_block": "0007104ccda289427919efc39dc9e4d499804b7bebc22df55f8b834301260602", - "xprv_magic": 76066276, - "xpub_magic": 76067358, - "xpub_magic_segwit_p2sh": null, - "xpub_magic_segwit_native": null, - "bech32_prefix": null, - "cashaddr_prefix": null, - "slip44": 121, - "segwit": false, - "decred": false, - "fork_id": 0, - "force_bip143": false, - "version_group_id": null, - "default_fee_b": { - "Normal": 10 - }, - "dust_limit": 546, - "blocktime_seconds": 150, - "address_prefix": "zencash:", - "min_address_length": 35, - "max_address_length": 95, - "bitcore": [ - "https://explorer.zen-solutions.io" - ], - "blockbook": [] + "coin_name": "Zencash", + "coin_shortcut": "ZEN", + "coin_label": "Zencash", + "website": "https://zencash.com", + "github": "https://github.com/ZencashOfficial/zen", + "maintainer": "Zencash ", + "curve_name": "secp256k1", + "address_type": 8329, + "address_type_p2sh": 8342, + "maxfee_kb": 2000000, + "minfee_kb": 1000, + "signed_message_header": "Zencash Signed Message:\n", + "hash_genesis_block": "0007104ccda289427919efc39dc9e4d499804b7bebc22df55f8b834301260602", + "xprv_magic": 76066276, + "xpub_magic": 76067358, + "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "slip44": 121, + "segwit": false, + "decred": false, + "fork_id": 0, + "force_bip143": false, + "bip115": true, + "version_group_id": null, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 546, + "blocktime_seconds": 150, + "address_prefix": "zencash:", + "min_address_length": 35, + "max_address_length": 95, + "bitcore": [ + "https://explorer.zen-solutions.io" + ], + "blockbook": [] } diff --git a/defs/coins/zencash.png b/defs/coins/zencash.png index b4e512b0297b5acf8c27fa5e5649fe424cc78e80..deabfe52281b395cff2f90e12d104fdeb2c97351 100644 GIT binary patch delta 6607 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 N002ovPDHLkV1fdHExrH% delta 6836 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 diff --git a/tools/build_coins.py b/tools/build_coins.py index 2403e22bb..78723551c 100755 --- a/tools/build_coins.py +++ b/tools/build_coins.py @@ -86,6 +86,7 @@ def validate_coin(coin): assert check_type(coin['decred'], bool) assert check_type(coin['fork_id'], int, nullable=True) assert check_type(coin['force_bip143'], bool) + assert check_type(coin['bip115'], bool) assert check_type(coin['version_group_id'], int, nullable=True) assert check_type(coin['default_fee_b'], dict) assert check_type(coin['dust_limit'], int) From e7b36ec86035f98181c13a137737b6b05432a0d5 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 28 Jun 2018 14:52:53 +0200 Subject: [PATCH 404/767] defs: add bip115 to coindef --- defs/coins/tools/coindef.proto | 35 ----------- defs/coins/tools/coindef.py | 111 --------------------------------- tools/coindef.py | 3 + 3 files changed, 3 insertions(+), 146 deletions(-) delete mode 100644 defs/coins/tools/coindef.proto delete mode 100644 defs/coins/tools/coindef.py diff --git a/defs/coins/tools/coindef.proto b/defs/coins/tools/coindef.proto deleted file mode 100644 index 66c8a5b27..000000000 --- a/defs/coins/tools/coindef.proto +++ /dev/null @@ -1,35 +0,0 @@ -syntax = "proto2"; - -message CoinDef { - optional string coin_name = 1; - optional string coin_shortcut = 2; - optional string coin_label = 3; - optional string curve_name = 4; - optional uint32 address_type = 5; - optional uint32 address_type_p2sh = 6; - optional uint64 maxfee_kb = 7; - optional uint64 minfee_kb = 8; - optional bytes signed_message_header = 9; - optional bytes hash_genesis_block = 10; - optional uint32 xprv_magic = 11; - optional uint32 xpub_magic = 12; - optional uint32 xpub_magic_segwit_p2sh = 13; - optional uint32 xpub_magic_segwit_native = 14; - optional string bech32_prefix = 15; - optional string cashaddr_prefix = 16; - optional uint32 slip44 = 17; - optional bool segwit = 18; - optional bool decred = 19; - optional uint32 fork_id = 20; - optional bool force_bip143 = 21; - optional uint64 dust_limit = 22; - optional string address_prefix = 23; - optional uint32 min_address_length = 24; - optional uint32 max_address_length = 25; - optional bytes icon = 26; - optional uint32 version_group_id = 27; - optional string website = 28; - optional string github = 29; - optional string maintainer = 30; - optional uint32 blocktime_seconds = 31; -} diff --git a/defs/coins/tools/coindef.py b/defs/coins/tools/coindef.py deleted file mode 100644 index 598dc68b3..000000000 --- a/defs/coins/tools/coindef.py +++ /dev/null @@ -1,111 +0,0 @@ -# Automatically generated by pb2py -from trezorlib import protobuf as p - - -class CoinDef(p.MessageType): - FIELDS = { - 1: ('coin_name', p.UnicodeType, 0), - 2: ('coin_shortcut', p.UnicodeType, 0), - 3: ('coin_label', p.UnicodeType, 0), - 4: ('curve_name', p.UnicodeType, 0), - 5: ('address_type', p.UVarintType, 0), - 6: ('address_type_p2sh', p.UVarintType, 0), - 7: ('maxfee_kb', p.UVarintType, 0), - 8: ('minfee_kb', p.UVarintType, 0), - 9: ('signed_message_header', p.BytesType, 0), - 10: ('hash_genesis_block', p.BytesType, 0), - 11: ('xprv_magic', p.UVarintType, 0), - 12: ('xpub_magic', p.UVarintType, 0), - 13: ('xpub_magic_segwit_p2sh', p.UVarintType, 0), - 14: ('xpub_magic_segwit_native', p.UVarintType, 0), - 15: ('bech32_prefix', p.UnicodeType, 0), - 16: ('cashaddr_prefix', p.UnicodeType, 0), - 17: ('slip44', p.UVarintType, 0), - 18: ('segwit', p.BoolType, 0), - 19: ('decred', p.BoolType, 0), - 20: ('fork_id', p.UVarintType, 0), - 21: ('force_bip143', p.BoolType, 0), - 22: ('dust_limit', p.UVarintType, 0), - 23: ('address_prefix', p.UnicodeType, 0), - 24: ('min_address_length', p.UVarintType, 0), - 25: ('max_address_length', p.UVarintType, 0), - 26: ('icon', p.BytesType, 0), - 27: ('version_group_id', p.UVarintType, 0), - 28: ('website', p.UnicodeType, 0), - 29: ('github', p.UnicodeType, 0), - 30: ('maintainer', p.UnicodeType, 0), - 31: ('blocktime_seconds', p.UVarintType, 0), - } - - def __init__( - self, - coin_name: str = None, - coin_shortcut: str = None, - coin_label: str = None, - curve_name: str = None, - address_type: int = None, - address_type_p2sh: int = None, - maxfee_kb: int = None, - minfee_kb: int = None, - signed_message_header: bytes = None, - hash_genesis_block: bytes = None, - xprv_magic: int = None, - xpub_magic: int = None, - xpub_magic_segwit_p2sh: int = None, - xpub_magic_segwit_native: int = None, - bech32_prefix: str = None, - cashaddr_prefix: str = None, - slip44: int = None, - segwit: bool = None, - decred: bool = None, - fork_id: int = None, - force_bip143: bool = None, - dust_limit: int = None, - address_prefix: str = None, - min_address_length: int = None, - max_address_length: int = None, - icon: bytes = None, - version_group_id: int = None, - website: str = None, - github: str = None, - maintainer: str = None, - blocktime_seconds: int = None, - default_fee_b: dict = None, - bitcore: dict = None, - blockbook: dict = None - ): - self.coin_name = coin_name - self.coin_shortcut = coin_shortcut - self.coin_label = coin_label - self.curve_name = curve_name - self.address_type = address_type - self.address_type_p2sh = address_type_p2sh - self.maxfee_kb = maxfee_kb - self.minfee_kb = minfee_kb - self.signed_message_header = signed_message_header - self.hash_genesis_block = hash_genesis_block - self.xprv_magic = xprv_magic - self.xpub_magic = xpub_magic - self.xpub_magic_segwit_p2sh = xpub_magic_segwit_p2sh - self.xpub_magic_segwit_native = xpub_magic_segwit_native - self.bech32_prefix = bech32_prefix - self.cashaddr_prefix = cashaddr_prefix - self.slip44 = slip44 - self.segwit = segwit - self.decred = decred - self.fork_id = fork_id - self.force_bip143 = force_bip143 - self.dust_limit = dust_limit - self.address_prefix = address_prefix - self.min_address_length = min_address_length - self.max_address_length = max_address_length - self.icon = icon - self.version_group_id = version_group_id - self.website = website - self.github = github - self.maintainer = maintainer - self.blocktime_seconds = blocktime_seconds - self.default_fee_b = default_fee_b - self.bitcore = bitcore - self.blockbook = blockbook - p.MessageType.__init__(self) diff --git a/tools/coindef.py b/tools/coindef.py index fad14fbc0..6bbbab183 100644 --- a/tools/coindef.py +++ b/tools/coindef.py @@ -34,6 +34,7 @@ class CoinDef(p.MessageType): 29: ('github', p.UnicodeType, 0), 30: ('maintainer', p.UnicodeType, 0), 31: ('blocktime_seconds', p.UVarintType, 0), + 32: ('bip115', p.BoolType, 0), } def __init__( @@ -59,6 +60,7 @@ class CoinDef(p.MessageType): decred: bool = None, fork_id: int = None, force_bip143: bool = None, + bip115: bool = None, dust_limit: int = None, address_prefix: str = None, min_address_length: int = None, @@ -94,6 +96,7 @@ class CoinDef(p.MessageType): self.decred = decred self.fork_id = fork_id self.force_bip143 = force_bip143 + self.bip115 = bip115 self.dust_limit = dust_limit self.address_prefix = address_prefix self.min_address_length = min_address_length From e8224f55221f8f9df0f0446d08bb1a09a403095d Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 28 Jun 2018 14:54:30 +0200 Subject: [PATCH 405/767] defs: update zencash icon --- defs/coins/zencash.png | Bin 21030 -> 4663 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/defs/coins/zencash.png b/defs/coins/zencash.png index deabfe52281b395cff2f90e12d104fdeb2c97351..2af517fa92765582a12f39a11eedc672b7dd6af5 100644 GIT binary patch literal 4663 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 literal 21030 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 RU-?gt#` Date: Fri, 29 Jun 2018 19:40:06 +0900 Subject: [PATCH 406/767] Ethersocial Network(ESN) support added (#149) --- defs/ethereum/networks.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/defs/ethereum/networks.json b/defs/ethereum/networks.json index c63938ee8..9dad46b11 100644 --- a/defs/ethereum/networks.json +++ b/defs/ethereum/networks.json @@ -126,5 +126,13 @@ "name": "EtherGem", "rskip60": false, "url": "https://egem.io" + }, + { + "chain_id": 31102, + "slip44": 31102, + "shortcut": "ESN", + "name": "Ethersocial Network", + "rskip60": false, + "url": "https://ethersocial.org" } ] From c4420e41d3d98368d42fa59ae3bee88599d72fec Mon Sep 17 00:00:00 2001 From: matejcik Date: Fri, 29 Jun 2018 17:11:22 +0200 Subject: [PATCH 407/767] protob: add a smart pb2py builder Now we don't need build_protobuf anymore and this is usable by both core and python-trezor (as well as generating custom protobufs from other sources) We still need protoc, unfortunately, but pb2py now calls it by itself. (little more robustly; instead of generated python classes, it uses the FileDescriptorSet output which is parsable by a built-in protobuf class) To support the script, messages.proto and types.proto must set a common package. Also there is currently no support for compiling more than one proto file, we depend on the fact that messages.proto import types.proto. (if this is needed, it should be relatively simple to add, simply pass more than one file to the embedded protoc call) --- protob/pb2py | 336 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 336 insertions(+) create mode 100755 protob/pb2py diff --git a/protob/pb2py b/protob/pb2py new file mode 100755 index 000000000..37f839c3d --- /dev/null +++ b/protob/pb2py @@ -0,0 +1,336 @@ +#!/usr/bin/env python3 +# Converts Google's protobuf python definitions of TREZOR wire messages +# to plain-python objects as used in TREZOR Core and python-trezor + +import argparse +import importlib +import logging +import os +import shutil +import subprocess +import sys +import tempfile +from collections import namedtuple + +from google.protobuf import descriptor_pb2 + +ProtoField = namedtuple( + "ProtoField", "name, number, proto_type, py_type, repeated, required, orig" +) + +AUTO_HEADER = "# Automatically generated by pb2py\n" + +# fmt: off +FIELD_TYPES = { + descriptor_pb2.FieldDescriptorProto.TYPE_UINT64: ('p.UVarintType', 'int'), + descriptor_pb2.FieldDescriptorProto.TYPE_UINT32: ('p.UVarintType', 'int'), + descriptor_pb2.FieldDescriptorProto.TYPE_ENUM: ('p.UVarintType', 'int'), + descriptor_pb2.FieldDescriptorProto.TYPE_SINT32: ('p.SVarintType', 'int'), + descriptor_pb2.FieldDescriptorProto.TYPE_SINT64: ('p.SVarintType', 'int'), + descriptor_pb2.FieldDescriptorProto.TYPE_STRING: ('p.UnicodeType', 'str'), + descriptor_pb2.FieldDescriptorProto.TYPE_BOOL: ('p.BoolType', 'bool'), + descriptor_pb2.FieldDescriptorProto.TYPE_BYTES: ('p.BytesType', 'bytes'), +} +# fmt: on + + +def protoc(files, additional_include_dirs=()): + """Compile code with protoc and return the data.""" + include_dirs = set(additional_include_dirs) + for file in files: + dirname = os.path.dirname(file) or "." + include_dirs.add(dirname) + protoc_includes = ["-I" + dir for dir in include_dirs] + + # Note that we could avoid creating temp files if protoc let us write to stdout + # directly. this is currently only possible on Unix, by passing /dev/stdout as + # the file name. Since there's no direct Windows equivalent, not counting + # being creative with named pipes, special-casing this is not worth the effort. + with tempfile.TemporaryDirectory() as tmpdir: + outfile = os.path.join(tmpdir, "DESCRIPTOR_SET") + subprocess.check_call( + ["protoc", "--descriptor_set_out={}".format(outfile)] + + protoc_includes + + files + ) + with open(outfile, "rb") as f: + return f.read() + + +def strip_leader(s, prefix): + """Remove given prefix from underscored name.""" + leader = prefix + "_" + if s.startswith(leader): + return s[len(leader) :] + else: + return s + + +def import_statement_from_path(path): + # separate leading dots + dot_prefix = "" + while path.startswith("."): + dot_prefix += "." + path = path[1:] + + # split on remaining dots + split_path = path.rsplit(".", maxsplit=1) + leader, import_name = split_path[:-1], split_path[-1] + + if leader: + from_part = dot_prefix + leader + elif dot_prefix: + from_part = dot_prefix + else: + from_part = "" + + if from_part: + return "from {} import {}".format(from_part, import_name) + else: + return "import {}".format(import_name) + + +class Descriptor: + def __init__(self, data, message_type="MessageType", import_path="protobuf"): + self.descriptor = descriptor_pb2.FileDescriptorSet() + self.descriptor.ParseFromString(data) + + self.files = self.descriptor.file + + logging.debug("found {} files".format(len(self.files))) + + # find messages and enums + self.messages = [] + self.enums = [] + for file in self.files: + self.messages += file.message_type + self.enums += file.enum_type + + if not self.messages and not self.enums: + raise RuntimeError("No messages and no enums found.") + + self.message_types = self.find_message_types(message_type) + self.protobuf_import = import_statement_from_path(import_path) + + self.out_dir = None + + def find_message_types(self, message_type): + message_types = {} + try: + message_type_enum = next( + enum for enum in self.enums if enum.name == message_type + ) + for value in message_type_enum.value: + name = strip_leader(value.name, message_type) + message_types[name] = value.number + + except StopIteration: + # No message type found. Oh well. + logging.warning( + "Message IDs not found under '{}'".format(args.message_type) + ) + + return message_types + + def parse_field(self, field): + repeated = field.label == field.LABEL_REPEATED + required = field.label == field.LABEL_REQUIRED + if field.type == field.TYPE_MESSAGE: + # ignore package path + type_name = field.type_name.rsplit(".")[-1] + proto_type = py_type = type_name + else: + try: + proto_type, py_type = FIELD_TYPES[field.type] + except KeyError: + raise ValueError( + "Unknown field type {} for field {}".format(field.type, field.name) + ) from None + + if repeated: + py_type = "List[{}]".format(py_type) + + return ProtoField( + name=field.name, + number=field.number, + proto_type=proto_type, + py_type=py_type, + repeated=repeated, + required=required, + orig=field, + ) + + def create_message_import(self, name): + return "from .{0} import {0}".format(name) + + def process_message_imports(self, fields): + imports = set( + field.proto_type + for field in fields + if field.orig.type == field.orig.TYPE_MESSAGE + ) + + for name in sorted(imports): + yield self.create_message_import(name) + + def create_init_method(self, fields): + # please keep the yields aligned + # fmt: off + ... # https://github.com/ambv/black/issues/385 + yield " def __init__(" + yield " self," + for field in fields: + yield " {}: {} = None,".format(field.name, field.py_type) + yield " ) -> None:" + + for field in fields: + if field.repeated: + yield " self.{0} = {0} if {0} is not None else []".format(field.name) + else: + yield " self.{0} = {0}".format(field.name) + # fmt: on + + def process_message(self, message): + logging.debug("Processing message {}".format(message.name)) + msg_id = self.message_types.get(message.name) + + # "from .. import protobuf as p" + yield self.protobuf_import + " as p" + + fields = [self.parse_field(field) for field in message.field] + + if any(field.repeated for field in fields): + yield "if __debug__:" + yield " try:" + yield " from typing import List" + yield " except ImportError:" + yield " List = None # type: ignore" + + yield from self.process_message_imports(fields) + + yield "" + yield "" + yield "class {}(p.MessageType):".format(message.name) + + if msg_id is not None: + yield " MESSAGE_WIRE_TYPE = {}".format(msg_id) + + if fields: + yield " FIELDS = {" + for field in fields: + comments = [] + if field.required: + comments.append("required") + if field.orig.HasField("default_value"): + comments.append("default={}".format(field.orig.default_value)) + + if comments: + comment = " # " + " ".join(comments) + else: + comment = "" + + if field.repeated: + flags = "p.FLAG_REPEATED" + else: + flags = "0" + + yield " {num}: ('{name}', {type}, {flags}),{comment}".format( + num=field.number, + name=field.name, + type=field.proto_type, + flags=flags, + comment=comment, + ) + + yield " }" + yield "" + yield from self.create_init_method(fields) + + if not fields and not msg_id: + yield " pass" + + def process_enum(self, enum): + logging.debug("Processing enum {}".format(enum.name)) + + for value in enum.value: + # Remove type name from the beginning of the constant + # For example "PinMatrixRequestType_Current" -> "Current" + enum_prefix = enum.name + name = value.name + name = strip_leader(name, enum_prefix) + + # If type ends with *Type, but constant use type name without *Type, remove it too :) + # For example "ButtonRequestType & ButtonRequest_Other" => "Other" + if enum_prefix.endswith("Type"): + enum_prefix, _ = enum_prefix.rsplit("Type", 1) + name = strip_leader(name, enum_prefix) + + yield "{} = {}".format(name, value.number) + + def process_messages(self, messages): + for message in sorted(messages, key=lambda m: m.name): + self.write_to_file(message.name, self.process_message(message)) + + def process_enums(self, enums): + for enum in sorted(enums, key=lambda e: e.name): + self.write_to_file(enum.name, self.process_enum(enum)) + + def write_to_file(self, name, out): + # Write generated sourcecode to given file + logging.debug("Writing file {}.py".format(name)) + with open(os.path.join(self.out_dir, name + ".py"), "w") as f: + f.write(AUTO_HEADER) + f.write("# fmt: off\n") + for line in out: + f.write(line + "\n") + + def write_init_py(self): + filename = os.path.join(self.out_dir, "__init__.py") + with open(filename, "w") as init_py: + init_py.write(AUTO_HEADER) + init_py.write("# fmt: off\n\n") + for message in sorted(self.messages, key=lambda m: m.name): + init_py.write(self.create_message_import(message.name) + "\n") + for enum in sorted(self.enums, key=lambda m: m.name): + init_py.write("from . import {}\n".format(enum.name)) + + def write_classes(self, out_dir, init_py=True): + self.out_dir = out_dir + self.process_messages(self.messages) + self.process_enums(self.enums) + if init_py: + self.write_init_py() + + +if __name__ == "__main__": + logging.basicConfig(level=logging.DEBUG) + + parser = argparse.ArgumentParser() + # fmt: off + parser.add_argument("proto", nargs="+", help="Protobuf definition files") + parser.add_argument("-o", "--out-dir", help="Directory for generated source code") + parser.add_argument("-P", "--protobuf-module", default="protobuf", help="Name of protobuf module") + parser.add_argument("-l", "--no-init-py", action="store_true", help="Do not generate __init__.py with list of modules") + parser.add_argument("--message-type", default="MessageType", help="Name of enum with message IDs") + parser.add_argument("--protobuf-default-include", default="/usr/include", help="Location of protobuf's default .proto files.") + # fmt: on + args = parser.parse_args() + + descriptor_proto = protoc(args.proto, (args.protobuf_default_include,)) + descriptor = Descriptor(descriptor_proto, args.message_type, args.protobuf_module) + + with tempfile.TemporaryDirectory() as tmpdir: + descriptor.write_classes(tmpdir, not args.no_init_py) + + for filename in os.listdir(args.out_dir): + pathname = os.path.join(args.out_dir, filename) + try: + with open(pathname, "r") as f: + if next(f, None) == AUTO_HEADER: + os.unlink(pathname) + except Exception: + pass + + for filename in os.listdir(tmpdir): + src = os.path.join(tmpdir, filename) + shutil.copy(src, args.out_dir) From dde1f6dffcd757057a310ba23f9069e275d7d8b3 Mon Sep 17 00:00:00 2001 From: FujiCoin Date: Tue, 3 Jul 2018 19:20:12 +0900 Subject: [PATCH 408/767] fix fee rate, max fee, etc. (#156) --- defs/coins/fujicoin.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/defs/coins/fujicoin.json b/defs/coins/fujicoin.json index bb1e1d4c6..ab48668b5 100644 --- a/defs/coins/fujicoin.json +++ b/defs/coins/fujicoin.json @@ -8,14 +8,14 @@ "curve_name": "secp256k1", "address_type": 36, "address_type_p2sh": 16, - "maxfee_kb": 1000000, + "maxfee_kb": 10000000, "minfee_kb": 100000, "signed_message_header": "FujiCoin Signed Message:\n", "hash_genesis_block": "adb6d9cfd74075e7f91608add4bd2a2ea636f70856183086842667a1597714a0", "xpub_magic": 76067358, "xprv_magic": 76066276, "xpub_magic_segwit_p2sh": 77429938, - "xpub_magic_segwit_native": null, + "xpub_magic_segwit_native": 78792518, "bech32_prefix": "fc", "cashaddr_prefix": null, "slip44": 75, @@ -26,12 +26,12 @@ "bip115": false, "version_group_id": null, "default_fee_b": { - "Low": 100000, - "Economy": 200000, - "Normal": 500000, - "High": 1000000 + "Low": 100, + "Economy": 200, + "Normal": 500, + "High": 1000 }, - "dust_limit": 100000, + "dust_limit": 546, "blocktime_seconds": 60, "address_prefix": "fujicoin:", "min_address_length": 27, From f2864f892fc95a0e6e7ea38882b461012c0c2292 Mon Sep 17 00:00:00 2001 From: FundacionPesetacoin Date: Tue, 3 Jul 2018 05:59:01 -0500 Subject: [PATCH 409/767] Pesetacoin (#145) --- defs/coins/pesetacoin.json | 40 +++++++++++++++++++++++++++++++++++++ defs/coins/pesetacoin.png | Bin 0 -> 19741 bytes 2 files changed, 40 insertions(+) create mode 100644 defs/coins/pesetacoin.json create mode 100644 defs/coins/pesetacoin.png diff --git a/defs/coins/pesetacoin.json b/defs/coins/pesetacoin.json new file mode 100644 index 000000000..d73016b85 --- /dev/null +++ b/defs/coins/pesetacoin.json @@ -0,0 +1,40 @@ +{ + "coin_name": "Pesetacoin", + "coin_shortcut": "PTC", + "coin_label": "Pesetacoin", + "website": "http://pesetacoin.info", + "github": "https://github.com/FundacionPesetacoin/Pesetacoin-0.9.1-Oficial", + "maintainer": "Rw ", + "curve_name": "secp256k1", + "address_type": 47, + "address_type_p2sh": 22, + "maxfee_kb": 1000000000, + "minfee_kb": 1000, + "signed_message_header": "Pesetacoin Signed Message:\n", + "hash_genesis_block": "edfe5830b53251bfff733600b1cd5c192e761c011b055f07924634818c906438", + "xpub_magic": 76079604, + "xprv_magic": 76071982, + "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, + "bech32_prefix": "null", + "cashaddr_prefix": null, + "slip44": 109, + "segwit": false, + "decred": false, + "fork_id": null, + "force_bip143": false, + "bip115": false, + "version_group_id": null, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 10000000, + "blocktime_seconds": 60, + "address_prefix": "pesetacoin:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "http://live.pesetacoin.info" + ], + "blockbook": [] +} diff --git a/defs/coins/pesetacoin.png b/defs/coins/pesetacoin.png new file mode 100644 index 0000000000000000000000000000000000000000..3a53fe66a6e2327fcaa00df72b099003046a7aac GIT binary patch literal 19741 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 oEd4dNO%12X5t>~fF;51#$Wje42g0W5e-Z+$% Date: Tue, 3 Jul 2018 12:23:52 +0200 Subject: [PATCH 410/767] defs: update backend urls, add backend check to build_coins.py --- defs/coins/bcash.json | 10 +++++----- defs/coins/bgold.json | 10 +++++----- defs/coins/bitcoin.json | 10 +++++----- defs/coins/bitcore.json | 2 +- defs/coins/bprivate.json | 2 +- defs/coins/crown.json | 4 ++-- defs/coins/dash.json | 10 +++++----- defs/coins/decred.json | 2 +- defs/coins/decred_testnet.json | 2 +- defs/coins/digibyte.json | 2 +- defs/coins/dogecoin.json | 10 +++++----- defs/coins/flashcoin.json | 2 +- defs/coins/fujicoin.json | 2 +- defs/coins/groestlcoin.json | 2 +- defs/coins/groestlcoin_testnet.json | 2 +- defs/coins/koto.json | 2 +- defs/coins/litecoin.json | 10 +++++----- defs/coins/litecoin_testnet.json | 2 +- defs/coins/monacoin.json | 6 ++++-- defs/coins/pesetacoin.json | 2 +- defs/coins/terracoin.json | 2 +- defs/coins/vertcoin.json | 10 +++++----- defs/coins/viacoin.json | 2 +- defs/coins/zcash.json | 10 +++++----- defs/coins/zcash_testnet.json | 2 +- defs/coins/zcoin.json | 2 +- defs/coins/zencash.json | 2 +- tools/build_coins.py | 20 +++++++++++++++++--- 28 files changed, 80 insertions(+), 64 deletions(-) diff --git a/defs/coins/bcash.json b/defs/coins/bcash.json index 38c1fcb43..5577863fb 100644 --- a/defs/coins/bcash.json +++ b/defs/coins/bcash.json @@ -38,10 +38,10 @@ "max_address_length": 34, "bitcore": [], "blockbook": [ - "https://bch1.trezor.io", - "https://bch2.trezor.io", - "https://bch3.trezor.io", - "https://bch4.trezor.io", - "https://bch5.trezor.io" + "https://bch1.trezor.io/api", + "https://bch2.trezor.io/api", + "https://bch3.trezor.io/api", + "https://bch4.trezor.io/api", + "https://bch5.trezor.io/api" ] } diff --git a/defs/coins/bgold.json b/defs/coins/bgold.json index 83608398b..c275002c5 100644 --- a/defs/coins/bgold.json +++ b/defs/coins/bgold.json @@ -38,10 +38,10 @@ "max_address_length": 34, "bitcore": [], "blockbook": [ - "https://btg1.trezor.io", - "https://btg2.trezor.io", - "https://btg3.trezor.io", - "https://btg4.trezor.io", - "https://btg5.trezor.io" + "https://btg1.trezor.io/api", + "https://btg2.trezor.io/api", + "https://btg3.trezor.io/api", + "https://btg4.trezor.io/api", + "https://btg5.trezor.io/api" ] } diff --git a/defs/coins/bitcoin.json b/defs/coins/bitcoin.json index 8957df9b8..a847f70e3 100644 --- a/defs/coins/bitcoin.json +++ b/defs/coins/bitcoin.json @@ -38,10 +38,10 @@ "max_address_length": 34, "bitcore": [], "blockbook": [ - "https://btc1.trezor.io", - "https://btc2.trezor.io", - "https://btc3.trezor.io", - "https://btc4.trezor.io", - "https://btc5.trezor.io" + "https://btc1.trezor.io/api", + "https://btc2.trezor.io/api", + "https://btc3.trezor.io/api", + "https://btc4.trezor.io/api", + "https://btc5.trezor.io/api" ] } diff --git a/defs/coins/bitcore.json b/defs/coins/bitcore.json index 10779b873..55ad1bd5f 100644 --- a/defs/coins/bitcore.json +++ b/defs/coins/bitcore.json @@ -34,7 +34,7 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [ - "https://insight.bitcore.cc" + "https://insight.bitcore.cc/api" ], "blockbook": [] } diff --git a/defs/coins/bprivate.json b/defs/coins/bprivate.json index 6f217aec5..ac577afa5 100644 --- a/defs/coins/bprivate.json +++ b/defs/coins/bprivate.json @@ -34,7 +34,7 @@ "min_address_length": 35, "max_address_length": 95, "bitcore": [ - "https://explorer.btcprivate.org" + "https://explorer.btcprivate.org/api" ], "blockbook": [] } diff --git a/defs/coins/crown.json b/defs/coins/crown.json index 4016fb701..03ae5dfa7 100644 --- a/defs/coins/crown.json +++ b/defs/coins/crown.json @@ -34,8 +34,8 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [ - "https://crw-bitcore.crown.tech", - "https://crw2-bitcore.crown.tech" + "https://crw-bitcore.crown.tech/api", + "https://crw2-bitcore.crown.tech/api" ], "blockbook": [] } diff --git a/defs/coins/dash.json b/defs/coins/dash.json index 0ade1f60f..da9ecf0ea 100644 --- a/defs/coins/dash.json +++ b/defs/coins/dash.json @@ -35,10 +35,10 @@ "max_address_length": 34, "bitcore": [], "blockbook": [ - "https://dash1.trezor.io", - "https://dash2.trezor.io", - "https://dash3.trezor.io", - "https://dash4.trezor.io", - "https://dash5.trezor.io" + "https://dash1.trezor.io/api", + "https://dash2.trezor.io/api", + "https://dash3.trezor.io/api", + "https://dash4.trezor.io/api", + "https://dash5.trezor.io/api" ] } diff --git a/defs/coins/decred.json b/defs/coins/decred.json index 3bb2837dc..48690e10c 100644 --- a/defs/coins/decred.json +++ b/defs/coins/decred.json @@ -34,7 +34,7 @@ "min_address_length": 35, "max_address_length": 35, "bitcore": [ - "https://mainnet.decred.org" + "https://mainnet.decred.org/api" ], "blockbook": [] } diff --git a/defs/coins/decred_testnet.json b/defs/coins/decred_testnet.json index 1774fee33..cff5edf0a 100644 --- a/defs/coins/decred_testnet.json +++ b/defs/coins/decred_testnet.json @@ -34,7 +34,7 @@ "min_address_length": 35, "max_address_length": 35, "bitcore": [ - "https://testnet.decred.org" + "https://testnet.decred.org/api" ], "blockbook": [] } diff --git a/defs/coins/digibyte.json b/defs/coins/digibyte.json index 152bebc32..e2f98a968 100644 --- a/defs/coins/digibyte.json +++ b/defs/coins/digibyte.json @@ -37,7 +37,7 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [ - "https://explorer.digibyteprojects.com" + "https://explorer.digibyteprojects.com/api" ], "blockbook": [] } diff --git a/defs/coins/dogecoin.json b/defs/coins/dogecoin.json index 640b0d279..b7646dda3 100644 --- a/defs/coins/dogecoin.json +++ b/defs/coins/dogecoin.json @@ -35,10 +35,10 @@ "max_address_length": 34, "bitcore": [], "blockbook": [ - "https://doge1.trezor.io", - "https://doge2.trezor.io", - "https://doge3.trezor.io", - "https://doge4.trezor.io", - "https://doge5.trezor.io" + "https://doge1.trezor.io/api", + "https://doge2.trezor.io/api", + "https://doge3.trezor.io/api", + "https://doge4.trezor.io/api", + "https://doge5.trezor.io/api" ] } diff --git a/defs/coins/flashcoin.json b/defs/coins/flashcoin.json index 5d770505e..76c65911c 100644 --- a/defs/coins/flashcoin.json +++ b/defs/coins/flashcoin.json @@ -34,7 +34,7 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [ - "https://explorer.flashcoin.io" + "https://explorer.flashcoin.io/api" ], "blockbook": [] } diff --git a/defs/coins/fujicoin.json b/defs/coins/fujicoin.json index ab48668b5..b8725a2e5 100644 --- a/defs/coins/fujicoin.json +++ b/defs/coins/fujicoin.json @@ -37,7 +37,7 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [ - "http://explorer.fujicoin.org" + "http://explorer.fujicoin.org/api" ], "blockbook": [] } diff --git a/defs/coins/groestlcoin.json b/defs/coins/groestlcoin.json index ca5f2adf6..4cc925414 100644 --- a/defs/coins/groestlcoin.json +++ b/defs/coins/groestlcoin.json @@ -34,7 +34,7 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [ - "https://groestlsight.groestlcoin.org" + "https://groestlsight.groestlcoin.org/api" ], "blockbook": [] } diff --git a/defs/coins/groestlcoin_testnet.json b/defs/coins/groestlcoin_testnet.json index ee711d6b8..da572ffa3 100644 --- a/defs/coins/groestlcoin_testnet.json +++ b/defs/coins/groestlcoin_testnet.json @@ -34,7 +34,7 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [ - "https://groestlsight-test.groestlcoin.org" + "https://groestlsight-test.groestlcoin.org/api" ], "blockbook": [] } diff --git a/defs/coins/koto.json b/defs/coins/koto.json index 929791658..913719f38 100644 --- a/defs/coins/koto.json +++ b/defs/coins/koto.json @@ -34,7 +34,7 @@ "min_address_length": 35, "max_address_length": 95, "bitcore": [ - "https://insight.kotocoin.info" + "https://insight.kotocoin.info/api" ], "blockbook": [] } diff --git a/defs/coins/litecoin.json b/defs/coins/litecoin.json index fc85ee1fb..fa1683f70 100644 --- a/defs/coins/litecoin.json +++ b/defs/coins/litecoin.json @@ -35,10 +35,10 @@ "max_address_length": 34, "bitcore": [], "blockbook": [ - "https://ltc1.trezor.io", - "https://ltc2.trezor.io", - "https://ltc3.trezor.io", - "https://ltc4.trezor.io", - "https://ltc5.trezor.io" + "https://ltc1.trezor.io/api", + "https://ltc2.trezor.io/api", + "https://ltc3.trezor.io/api", + "https://ltc4.trezor.io/api", + "https://ltc5.trezor.io/api" ] } diff --git a/defs/coins/litecoin_testnet.json b/defs/coins/litecoin_testnet.json index 5ac56f2b6..15d252c58 100644 --- a/defs/coins/litecoin_testnet.json +++ b/defs/coins/litecoin_testnet.json @@ -34,7 +34,7 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [ - "https://testnet.litecore.io" + "https://testnet.litecore.io/api" ], "blockbook": [] } diff --git a/defs/coins/monacoin.json b/defs/coins/monacoin.json index e1adde3e4..a5ebdadcb 100644 --- a/defs/coins/monacoin.json +++ b/defs/coins/monacoin.json @@ -26,7 +26,7 @@ "bip115": false, "version_group_id": null, "default_fee_b": { - "Normal": 100000 + "Normal": 1000 }, "dust_limit": 54600, "blocktime_seconds": 90, @@ -34,7 +34,9 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [ - "https://mona.chainsight.info" + "https://mona.chainsight.info/api", + "https://mona.insight.monaco-ex.org/insight-api-monacoin", + "https://insight.electrum-mona.org/api" ], "blockbook": [] } diff --git a/defs/coins/pesetacoin.json b/defs/coins/pesetacoin.json index d73016b85..42891fa6c 100644 --- a/defs/coins/pesetacoin.json +++ b/defs/coins/pesetacoin.json @@ -34,7 +34,7 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [ - "http://live.pesetacoin.info" + "http://live.pesetacoin.info/api" ], "blockbook": [] } diff --git a/defs/coins/terracoin.json b/defs/coins/terracoin.json index c8e681b11..824ef927e 100644 --- a/defs/coins/terracoin.json +++ b/defs/coins/terracoin.json @@ -34,7 +34,7 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [ - "https://insight.terracoin.io" + "https://insight.terracoin.io/api" ], "blockbook": [] } diff --git a/defs/coins/vertcoin.json b/defs/coins/vertcoin.json index f03835bed..bc23403aa 100644 --- a/defs/coins/vertcoin.json +++ b/defs/coins/vertcoin.json @@ -35,10 +35,10 @@ "max_address_length": 34, "bitcore": [], "blockbook": [ - "https://vtc1.trezor.io", - "https://vtc2.trezor.io", - "https://vtc3.trezor.io", - "https://vtc4.trezor.io", - "https://vtc5.trezor.io" + "https://vtc1.trezor.io/api", + "https://vtc2.trezor.io/api", + "https://vtc3.trezor.io/api", + "https://vtc4.trezor.io/api", + "https://vtc5.trezor.io/api" ] } diff --git a/defs/coins/viacoin.json b/defs/coins/viacoin.json index 096f0c1da..73744e9bf 100644 --- a/defs/coins/viacoin.json +++ b/defs/coins/viacoin.json @@ -37,7 +37,7 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [ - "https://explorer.viacoin.org" + "https://explorer.viacoin.org/api" ], "blockbook": [] } diff --git a/defs/coins/zcash.json b/defs/coins/zcash.json index ab8ead567..ae7b08e3f 100644 --- a/defs/coins/zcash.json +++ b/defs/coins/zcash.json @@ -35,10 +35,10 @@ "max_address_length": 95, "bitcore": [], "blockbook": [ - "https://zec1.trezor.io", - "https://zec2.trezor.io", - "https://zec3.trezor.io", - "https://zec4.trezor.io", - "https://zec5.trezor.io" + "https://zec1.trezor.io/api", + "https://zec2.trezor.io/api", + "https://zec3.trezor.io/api", + "https://zec4.trezor.io/api", + "https://zec5.trezor.io/api" ] } diff --git a/defs/coins/zcash_testnet.json b/defs/coins/zcash_testnet.json index b79d47130..ca07cfe66 100644 --- a/defs/coins/zcash_testnet.json +++ b/defs/coins/zcash_testnet.json @@ -34,7 +34,7 @@ "min_address_length": 35, "max_address_length": 95, "bitcore": [ - "https://explorer.testnet.z.cash" + "https://explorer.testnet.z.cash/api" ], "blockbook": [] } diff --git a/defs/coins/zcoin.json b/defs/coins/zcoin.json index f9e2f817c..ac3347a15 100644 --- a/defs/coins/zcoin.json +++ b/defs/coins/zcoin.json @@ -37,7 +37,7 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [ - "https://insight.zcoin.io" + "https://insight.zcoin.io/api" ], "blockbook": [] } diff --git a/defs/coins/zencash.json b/defs/coins/zencash.json index 5fe36d242..c62eac47e 100644 --- a/defs/coins/zencash.json +++ b/defs/coins/zencash.json @@ -34,7 +34,7 @@ "min_address_length": 35, "max_address_length": 95, "bitcore": [ - "https://explorer.zen-solutions.io" + "https://explorer.zen-solutions.io/api" ], "blockbook": [] } diff --git a/tools/build_coins.py b/tools/build_coins.py index 78723551c..858a058f0 100755 --- a/tools/build_coins.py +++ b/tools/build_coins.py @@ -16,7 +16,9 @@ import re import os import sys -if '--defs' in sys.argv: + +BUILD_DEFS = '--defs' in sys.argv +if BUILD_DEFS: from binascii import unhexlify from hashlib import sha256 import ed25519 @@ -24,8 +26,10 @@ if '--defs' in sys.argv: from trezorlib.protobuf import dump_message from coindef import CoinDef BUILD_DEFS = True -else: - BUILD_DEFS = False + +TEST_BACKEND = '--test-backend' in sys.argv +if TEST_BACKEND: + import requests def check_type(val, types, nullable=False, empty=False, regex=None, choice=None): # noqa:E501 @@ -56,6 +60,12 @@ def check_type(val, types, nullable=False, empty=False, regex=None, choice=None) return isinstance(val, types) +def get_hash_genesis_block(api): + r = requests.get(api + '/block-index/0') + j = r.json() + return j['blockHash'] + + def validate_coin(coin): assert check_type(coin['coin_name'], str, regex=r'^[A-Z]') assert check_type(coin['coin_shortcut'], str, regex=r'^[A-Zt][A-Z][A-Z]+$') @@ -101,9 +111,13 @@ def validate_coin(coin): assert check_type(coin['bitcore'], list, empty=True) for bc in coin['bitcore']: assert not bc.endswith('/') + if TEST_BACKEND: + assert get_hash_genesis_block(bc) == coin['hash_genesis_block'] assert check_type(coin['blockbook'], list, empty=True) for bb in coin['blockbook']: assert not bb.endswith('/') + if TEST_BACKEND: + assert get_hash_genesis_block(bb) == coin['hash_genesis_block'] def validate_icon(icon): From 6575418de93d2ca5fd67dd306f19ee736ebfd7b7 Mon Sep 17 00:00:00 2001 From: matejcik Date: Tue, 3 Jul 2018 15:30:17 +0200 Subject: [PATCH 411/767] pb2py: smarter protobuf include handling support PROTOC_INCLUDE env variable (fixes #158) support multiple `-I` arguments smarter detection of `protoc` presence and its include dirs --- protob/pb2py | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/protob/pb2py b/protob/pb2py index 37f839c3d..933fb8164 100755 --- a/protob/pb2py +++ b/protob/pb2py @@ -33,14 +33,25 @@ FIELD_TYPES = { } # fmt: on +PROTOC = shutil.which("protoc") +if not PROTOC: + print("protoc command not found") + sys.exit(1) -def protoc(files, additional_include_dirs=()): +PROTOC_PREFIX = os.path.dirname(os.path.dirname(PROTOC)) +PROTOC_INCLUDE = os.path.join(PROTOC_PREFIX, "include") + + +def protoc(files, additional_includes=()): """Compile code with protoc and return the data.""" - include_dirs = set(additional_include_dirs) + include_dirs = set() + include_dirs.add(PROTOC_INCLUDE) + include_dirs.update(additional_includes) + for file in files: dirname = os.path.dirname(file) or "." include_dirs.add(dirname) - protoc_includes = ["-I" + dir for dir in include_dirs] + protoc_includes = ["-I" + dir for dir in include_dirs if dir] # Note that we could avoid creating temp files if protoc let us write to stdout # directly. this is currently only possible on Unix, by passing /dev/stdout as @@ -49,7 +60,7 @@ def protoc(files, additional_include_dirs=()): with tempfile.TemporaryDirectory() as tmpdir: outfile = os.path.join(tmpdir, "DESCRIPTOR_SET") subprocess.check_call( - ["protoc", "--descriptor_set_out={}".format(outfile)] + [PROTOC, "--descriptor_set_out={}".format(outfile)] + protoc_includes + files ) @@ -312,11 +323,12 @@ if __name__ == "__main__": parser.add_argument("-P", "--protobuf-module", default="protobuf", help="Name of protobuf module") parser.add_argument("-l", "--no-init-py", action="store_true", help="Do not generate __init__.py with list of modules") parser.add_argument("--message-type", default="MessageType", help="Name of enum with message IDs") - parser.add_argument("--protobuf-default-include", default="/usr/include", help="Location of protobuf's default .proto files.") + parser.add_argument("-I", "--protoc-include", action="append", help="protoc include path") # fmt: on args = parser.parse_args() - descriptor_proto = protoc(args.proto, (args.protobuf_default_include,)) + protoc_includes = args.protoc_include or (os.environ.get("PROTOC_INCLUDE"),) + descriptor_proto = protoc(args.proto, protoc_includes) descriptor = Descriptor(descriptor_proto, args.message_type, args.protobuf_module) with tempfile.TemporaryDirectory() as tmpdir: From 6eb330345ec15bd06aaa77681150eacf937dafbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Du=C5=A1an=20Plav=C3=A1k?= Date: Wed, 4 Jul 2018 13:52:08 +0200 Subject: [PATCH 412/767] Add Cardano currency support (#148) --- protob/messages.proto | 125 ++++++++++++++++++++++++++++++++++++++++++ protob/types.proto | 21 +++++++ 2 files changed, 146 insertions(+) diff --git a/protob/messages.proto b/protob/messages.proto index 48afb6ea5..458c411e9 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -100,6 +100,21 @@ enum MessageType { MessageType_DebugLinkMemoryWrite = 112 [(wire_debug_in) = true]; MessageType_DebugLinkFlashErase = 113 [(wire_debug_in) = true]; + + // Cardano + MessageType_CardanoSignMessage = 300 [(wire_in) = true]; + MessageType_CardanoMessageSignature = 301 [(wire_out) = true]; + MessageType_CardanoVerifyMessage = 302 [(wire_in) = true]; + MessageType_CardanoSignTransaction = 303 [(wire_in) = true]; + MessageType_CardanoTxRequest = 304 [(wire_out) = true]; + MessageType_CardanoGetPublicKey = 305 [(wire_in) = true]; + MessageType_CardanoPublicKey = 306 [(wire_out) = true]; + MessageType_CardanoGetAddress = 307 [(wire_in) = true]; + MessageType_CardanoAddress = 308 [(wire_out) = true]; + MessageType_CardanoTxAck = 309 [(wire_in) = true]; + MessageType_CardanoSignedTransaction = 310 [(wire_out) = true]; + + // Lisk MessageType_LiskGetAddress = 114 [(wire_in) = true]; MessageType_LiskAddress = 115 [(wire_out) = true]; @@ -1437,3 +1452,113 @@ message DebugLinkMemoryWrite { message DebugLinkFlashErase { optional uint32 sector = 1; } + +/** + * Request: Ask device for Cardano address + * @next CardanoAddress + * @next Failure + */ + message CardanoGetAddress { + repeated uint32 address_n = 1; // BIP-32-style path to derive the key from master node + optional bool show_display = 2; // optionally prompt for confirmation on trezor display +} + +/** + * Request: Ask device for Cardano address + * @next CardanoAddress + * @next Failure + */ + message CardanoAddress { + optional string address = 1; // Base58 cardano address +} + +/** + * Request: Ask device to sign Cardano message + * @next CardanoMessageSignature + * @next Failure + */ +message CardanoSignMessage { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional bytes message = 2; // message to be signed +} + +/** + * Request: Ask device for public key corresponding to address_n path + * @next CardanoPublicKey + * @next Failure + */ + message CardanoGetPublicKey { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node +} + +/** + * Response: Contains public key derived from device private seed + * @prev CardanoGetPublicKey + */ + message CardanoPublicKey { + optional string xpub = 1; // Xpub key + optional HDNodeType node = 2; // BIP-32 public node + optional string root_hd_passphrase = 3; // Hd passphrase for root in hex format +} + +/** + * Request: Ask device to verify Cardano message + * @next Success + * @next Failure + */ +message CardanoVerifyMessage { + optional bytes public_key = 1; // Public key which was used to sign message + optional bytes signature = 2; // signature to verify + optional bytes message = 3; // message to verify +} + +/** + * Response: Signed Cardano message + * @prev CardanoSignMessage + */ +message CardanoMessageSignature { + optional bytes public_key = 1; // public key which was used to sign mesage + optional bytes signature = 2; // signature of the message +} + +/** + * Request: Ask device to sign Cardano transaction + * @next CardanoSignedTransaction + * @next CardanoTxRequest + * @next Failure + */ +message CardanoSignTransaction { + repeated CardanoTxInputType inputs = 1; // inputs to be used in transaction + repeated CardanoTxOutputType outputs = 2; // outputs to be used in transaction + optional uint32 transactions_count = 3; // transactions count +} + +/** + * Response: Serialised signed cardano transaction if tx_index is not specified. + * If tx_index is specified, trezor will wait for transaction + * @prev CardanoSignTransaction + * @next CardanoTxAck + */ +message CardanoTxRequest { + optional uint32 tx_index = 1; // index of requested transaction + optional bytes tx_hash = 2; // hash of the signed transaction + optional bytes tx_body = 3; // serialised body of the signed transaction +} + +/** + * Response: Serialised signed cardano transaction + * @prev CardanoSignTransaction + */ +message CardanoSignedTransaction { + optional bytes tx_hash = 1; // hash of the signed transaction + optional bytes tx_body = 2; // serialised body of the signed transaction +} + +/** + * Request: Reported transaction data + * @prev CardanoTxRequest + * @next CardanoTxRequest + */ + message CardanoTxAck { + optional bytes transaction = 1; +} diff --git a/protob/types.proto b/protob/types.proto index 00d6a7f1f..cd820fce3 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -511,3 +511,24 @@ message LiskMultisignatureType { optional uint32 life_time = 2; repeated string keys_group = 3; } + +/** + * Structure representing cardano transaction input + * @used_in CardanoSignTransacion + */ +message CardanoTxInputType { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional bytes prev_hash = 2; // hash of previous transaction output to spend by this input + optional uint32 prev_index = 3; // index of previous output to spend + optional uint32 type = 4; // input type, defaults to 0 +} + +/** + * Structure representing cardano transaction output + * @used_in CardanoSignTransacion + */ +message CardanoTxOutputType { + optional string address = 1; // target coin address in Base58 encoding + repeated uint32 address_n = 2; // BIP-32 path to derive the key from master node; has higher priority than "address" + optional uint64 amount = 3; // amount to spend +} From 7b13d2e8861870eaa37c462ed8388d88df3c660f Mon Sep 17 00:00:00 2001 From: jurajselep Date: Wed, 4 Jul 2018 05:02:05 -0700 Subject: [PATCH 413/767] Tezos integration (#139) --- .DS_Store | Bin 0 -> 6148 bytes protob/messages.proto | 67 ++++++++++++++++++++++++++++++++++++++ protob/types.proto | 74 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 141 insertions(+) create mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..798f51546c1c4558c82a2e5e08e8b5748b84919a GIT binary patch literal 6148 zcmeHKu};G<5IsXwRUo8}u!RX05dDLw3Ki;v1ngBCD2SF+ZG*&?@8B0$_!Ptf0|TGJ zo$u<}O<_a`-AVRy{Cs)wOJmmnU|L1i1ZV(29SdQ!fz^s2o=PRwq-O`w&^?BO=2<@< zjVmLyLmf~D{-Oi)?M8421Gs@%@cr(d7d|)2(=;n)eSo)4`@&Ae<&E-e!SO5|H@^1P zg#9C8Bgo(qu3#GIMF&ql=joli^77;IJiQ7R=+$0W?-unQmh@oj+3E?mQqOU2ehWR} z0zK%GUJb@DfgEO7dfBu;?B)3o7s!wZCU1)OW!`(BPMcoSQod(GC;h1M!GoDk&Y$9I z9>5*iF$wgcv1jk^@t*#C(lrS9iYWmf=tDyK5ft{---p`uN1t1v>+-xg&!5S0q24L! zY5eE_{UkB!n~Ykk1L}Y};2fa!A;vA=b!0T3hXwt?*iH4tOLM6hH;2E%YF zBBvTTVi-=x{#eE(f+ZuTgOS6B5oIGM6l2x#{;?enCSlZC9Z&~C2iEzrLHqwPe#76K z|HCA`QU}z5f8~IQ(zCRMQnp)fm}=t#6+-U S#2yU&BVcXNN*(xB2fhI6hpOQK literal 0 HcmV?d00001 diff --git a/protob/messages.proto b/protob/messages.proto index 458c411e9..126c1d129 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -126,6 +126,14 @@ enum MessageType { MessageType_LiskGetPublicKey = 121 [(wire_in) = true]; MessageType_LiskPublicKey = 122 [(wire_out) = true]; + // Tezos + MessageType_TezosGetAddress = 150 [(wire_in) = true]; + MessageType_TezosAddress = 151 [(wire_out) = true]; + MessageType_TezosSignTx = 152 [(wire_in) = true]; + MessageType_TezosSignedTx = 153 [(wire_out) = true]; + MessageType_TezosGetPublicKey = 154 [(wire_in) = true]; + MessageType_TezosPublicKey = 155 [(wire_out) = true]; + // Stellar MessageType_StellarGetPublicKey = 200 [(wire_in) = true]; MessageType_StellarPublicKey = 201 [(wire_out) = true]; @@ -1364,6 +1372,65 @@ message LiskVerifyMessage { optional bytes message = 3; } + +/** + * Request: Ask device for Tezos address corresponding to address_n path + * @next PassphraseRequest + * @next TezosAddress + * @next Failure + */ +message TezosGetAddress { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional bool show_display = 2; // optionally show on display before sending the result +} + +/** + * Response: Contains Tezos address derived from device private seed + * @prev TezosGetAddress + */ +message TezosAddress { + optional string address = 1; // Coin address in Base58 encoding +} + +/** + * Request: Ask device to sign Tezos transaction + * @next TezosSignedTx + */ +message TezosSignTx { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional TezosOperationCommon operation = 2; // Tezos operation structure + optional TezosTransactionType transaction = 3; // Tezos transaction part + optional TezosOriginationType origination = 4; // Tezos origination part + optional TezosDelegationType delegation = 5; // Tezos delegation part +} + +/** +* Response: Contains Tezos transaction signature +* @prev TezosSignTx +*/ +message TezosSignedTx { + optional bytes signature = 1; // Tezos transaction signature + optional bytes sig_op_contents = 2; // Signed operation contents + optional string operation_hash = 3; // b58 check encoded blake2b hashed operation contents +} + +/** + * Request: Ask device for Tezos public key corresponding to address_n path + * @next TezosPublicKey + */ +message TezosGetPublicKey { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional bool show_display = 2; // Optionally show on display before sending the result +} + +/** + * Response: Contains Tezos public key derived from device private seed + * @prev TezosGetPublicKey +*/ +message TezosPublicKey { + optional bytes public_key = 1; // Tezos public key +} + ///////////////////////////////////////////////////////////// // Debug messages (only available if DebugLink is enabled) // ///////////////////////////////////////////////////////////// diff --git a/protob/types.proto b/protob/types.proto index cd820fce3..fbb7a9d9b 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -512,6 +512,79 @@ message LiskMultisignatureType { repeated string keys_group = 3; } +/* +* Type of Tezos operation +* @used_in TezosOperationCommon +*/ +enum TezosOperationType { + Transaction = 8; + Origination = 9; + Delegation = 10; +} + +/* +* Type of Tezos Contract type +* @used_in TezosContractID +*/ +enum TezosContractType { + Implicit = 0; + Originated = 1; +} + +/* +* Tezos contract ID +* @used_in TezosOperationCommon +* @used_in TezosTransactionType +*/ +message TezosContractID { + optional TezosContractType tag = 1; + optional bytes hash = 2; // Implicit = 21B, originated = 20B + 1B padding +} + +/* +* Structure representing the common part for Tezos operations +* @used_in TezosSignTx +*/ +message TezosOperationCommon { + optional bytes branch = 1; + optional TezosOperationType tag = 2; + optional TezosContractID source = 3; + optional uint64 fee = 4; + optional uint64 counter = 5; + optional uint64 gas_limit = 6; + optional uint64 storage_limit = 7; +} + +/* +* Structure representing additional information for transaction +* @used_in TezosSignTx +*/ +message TezosTransactionType { + optional uint64 amount = 1; + optional TezosContractID destination = 2; + optional bytes parameters = 3; +} + +/* +* Structure representing additional information for origination +* @used_in TezosSignTx +*/ +message TezosOriginationType { + optional bytes manager_pubkey = 1; + optional uint64 balance = 2; + optional bool spendable = 3; + optional bool delegatable = 4; + optional bytes delegate = 5; // 1B tag + 20B public key hash + optional bytes script = 6; +} + +/* +* Structure representing additional information for delegation +* @used_in TezosSignTx +*/ +message TezosDelegationType { + optional bytes delegate = 1; // 1B tag + 20B public key hash + /** * Structure representing cardano transaction input * @used_in CardanoSignTransacion @@ -531,4 +604,5 @@ message CardanoTxOutputType { optional string address = 1; // target coin address in Base58 encoding repeated uint32 address_n = 2; // BIP-32 path to derive the key from master node; has higher priority than "address" optional uint64 amount = 3; // amount to spend + } From 571c2b4a1dec03779b7daa9f519232f2a72c6db1 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 4 Jul 2018 14:04:29 +0200 Subject: [PATCH 414/767] proto: fix whitespace --- .DS_Store | Bin 6148 -> 0 bytes protob/messages.proto | 4 +--- protob/types.proto | 1 - 3 files changed, 1 insertion(+), 4 deletions(-) delete mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 798f51546c1c4558c82a2e5e08e8b5748b84919a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKu};G<5IsXwRUo8}u!RX05dDLw3Ki;v1ngBCD2SF+ZG*&?@8B0$_!Ptf0|TGJ zo$u<}O<_a`-AVRy{Cs)wOJmmnU|L1i1ZV(29SdQ!fz^s2o=PRwq-O`w&^?BO=2<@< zjVmLyLmf~D{-Oi)?M8421Gs@%@cr(d7d|)2(=;n)eSo)4`@&Ae<&E-e!SO5|H@^1P zg#9C8Bgo(qu3#GIMF&ql=joli^77;IJiQ7R=+$0W?-unQmh@oj+3E?mQqOU2ehWR} z0zK%GUJb@DfgEO7dfBu;?B)3o7s!wZCU1)OW!`(BPMcoSQod(GC;h1M!GoDk&Y$9I z9>5*iF$wgcv1jk^@t*#C(lrS9iYWmf=tDyK5ft{---p`uN1t1v>+-xg&!5S0q24L! zY5eE_{UkB!n~Ykk1L}Y};2fa!A;vA=b!0T3hXwt?*iH4tOLM6hH;2E%YF zBBvTTVi-=x{#eE(f+ZuTgOS6B5oIGM6l2x#{;?enCSlZC9Z&~C2iEzrLHqwPe#76K z|HCA`QU}z5f8~IQ(zCRMQnp)fm}=t#6+-U S#2yU&BVcXNN*(xB2fhI6hpOQK diff --git a/protob/messages.proto b/protob/messages.proto index 126c1d129..89369c594 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -100,7 +100,6 @@ enum MessageType { MessageType_DebugLinkMemoryWrite = 112 [(wire_debug_in) = true]; MessageType_DebugLinkFlashErase = 113 [(wire_debug_in) = true]; - // Cardano MessageType_CardanoSignMessage = 300 [(wire_in) = true]; MessageType_CardanoMessageSignature = 301 [(wire_out) = true]; @@ -113,7 +112,6 @@ enum MessageType { MessageType_CardanoAddress = 308 [(wire_out) = true]; MessageType_CardanoTxAck = 309 [(wire_in) = true]; MessageType_CardanoSignedTransaction = 310 [(wire_out) = true]; - // Lisk MessageType_LiskGetAddress = 114 [(wire_in) = true]; @@ -1626,6 +1624,6 @@ message CardanoSignedTransaction { * @prev CardanoTxRequest * @next CardanoTxRequest */ - message CardanoTxAck { +message CardanoTxAck { optional bytes transaction = 1; } diff --git a/protob/types.proto b/protob/types.proto index fbb7a9d9b..75ae84ccb 100644 --- a/protob/types.proto +++ b/protob/types.proto @@ -604,5 +604,4 @@ message CardanoTxOutputType { optional string address = 1; // target coin address in Base58 encoding repeated uint32 address_n = 2; // BIP-32 path to derive the key from master node; has higher priority than "address" optional uint64 amount = 3; // amount to spend - } From d480b2b45ab7fe0aa08855e3a8bd967e575381f9 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 4 Jul 2018 14:20:28 +0200 Subject: [PATCH 415/767] protob: drop unused proto files, merge types.proto into messages.proto --- protob/Makefile | 2 +- protob/messages.proto | 610 +++++++++++++++++++++++++++++++- protob/storage.proto | 33 -- protob/types.proto | 607 ------------------------------- {protob => signer}/config.proto | 0 5 files changed, 603 insertions(+), 649 deletions(-) delete mode 100644 protob/storage.proto delete mode 100644 protob/types.proto rename {protob => signer}/config.proto (100%) diff --git a/protob/Makefile b/protob/Makefile index 9956d448f..daff4266d 100644 --- a/protob/Makefile +++ b/protob/Makefile @@ -1,4 +1,4 @@ -check: config.pb messages.pb storage.pb types.pb +check: messages.pb %.pb: %.proto protoc -I/usr/include -I. $< -o $@ diff --git a/protob/messages.proto b/protob/messages.proto index 89369c594..627c81607 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -8,7 +8,601 @@ syntax = "proto2"; option java_package = "com.satoshilabs.trezor.lib.protobuf"; option java_outer_classname = "TrezorMessage"; -import "types.proto"; +import "google/protobuf/descriptor.proto"; + +/** + * Options for specifying message direction and type of wire (normal/debug) + */ +extend google.protobuf.EnumValueOptions { + optional bool wire_in = 50002; // message can be transmitted via wire from PC to TREZOR + optional bool wire_out = 50003; // message can be transmitted via wire from TREZOR to PC + optional bool wire_debug_in = 50004; // message can be transmitted via debug wire from PC to TREZOR + optional bool wire_debug_out = 50005; // message can be transmitted via debug wire from TREZOR to PC + optional bool wire_tiny = 50006; // message is handled by TREZOR when the USB stack is in tiny mode + optional bool wire_bootloader = 50007; // message is only handled by TREZOR Bootloader + optional bool wire_no_fsm = 50008; // message is not handled by TREZOR unless the USB stack is in tiny mode +} + +/** + * Type of failures returned by Failure message + * @used_in Failure + */ +enum FailureType { + Failure_UnexpectedMessage = 1; + Failure_ButtonExpected = 2; + Failure_DataError = 3; + Failure_ActionCancelled = 4; + Failure_PinExpected = 5; + Failure_PinCancelled = 6; + Failure_PinInvalid = 7; + Failure_InvalidSignature = 8; + Failure_ProcessError = 9; + Failure_NotEnoughFunds = 10; + Failure_NotInitialized = 11; + Failure_PinMismatch = 12; + Failure_FirmwareError = 99; +} + +/** + * Type of script which will be used for transaction output + * @used_in TxOutputType + */ +enum OutputScriptType { + PAYTOADDRESS = 0; // used for all addresses (bitcoin, p2sh, witness) + PAYTOSCRIPTHASH = 1; // p2sh address (deprecated; use PAYTOADDRESS) + PAYTOMULTISIG = 2; // only for change output + PAYTOOPRETURN = 3; // op_return + PAYTOWITNESS = 4; // only for change output + PAYTOP2SHWITNESS = 5; // only for change output +} + +/** + * Type of script which will be used for transaction output + * @used_in TxInputType + */ +enum InputScriptType { + SPENDADDRESS = 0; // standard p2pkh address + SPENDMULTISIG = 1; // p2sh multisig address + EXTERNAL = 2; // reserved for external inputs (coinjoin) + SPENDWITNESS = 3; // native segwit + SPENDP2SHWITNESS = 4; // segwit over p2sh (backward compatible) +} + +/** + * Type of information required by transaction signing process + * @used_in TxRequest + */ +enum RequestType { + TXINPUT = 0; + TXOUTPUT = 1; + TXMETA = 2; + TXFINISHED = 3; + TXEXTRADATA = 4; +} + +/** + * Type of button request + * @used_in ButtonRequest + */ +enum ButtonRequestType { + ButtonRequest_Other = 1; + ButtonRequest_FeeOverThreshold = 2; + ButtonRequest_ConfirmOutput = 3; + ButtonRequest_ResetDevice = 4; + ButtonRequest_ConfirmWord = 5; + ButtonRequest_WipeDevice = 6; + ButtonRequest_ProtectCall = 7; + ButtonRequest_SignTx = 8; + ButtonRequest_FirmwareCheck = 9; + ButtonRequest_Address = 10; + ButtonRequest_PublicKey = 11; + ButtonRequest_MnemonicWordCount = 12; + ButtonRequest_MnemonicInput = 13; + ButtonRequest_PassphraseType = 14; +} + +/** + * Type of PIN request + * @used_in PinMatrixRequest + */ +enum PinMatrixRequestType { + PinMatrixRequestType_Current = 1; + PinMatrixRequestType_NewFirst = 2; + PinMatrixRequestType_NewSecond = 3; +} + +/** + * Type of recovery procedure. These should be used as bitmask, e.g., + * `RecoveryDeviceType_ScrambledWords | RecoveryDeviceType_Matrix` + * listing every method supported by the host computer. + * + * Note that ScrambledWords must be supported by every implementation + * for backward compatibility; there is no way to not support it. + * + * @used_in RecoveryDevice + */ +enum RecoveryDeviceType { + // use powers of two when extending this field + RecoveryDeviceType_ScrambledWords = 0; // words in scrambled order + RecoveryDeviceType_Matrix = 1; // matrix recovery type +} + +/** + * Type of Recovery Word request + * @used_in WordRequest + */ +enum WordRequestType { + WordRequestType_Plain = 0; + WordRequestType_Matrix9 = 1; + WordRequestType_Matrix6 = 2; +} + +/** + * Structure representing BIP32 (hierarchical deterministic) node + * Used for imports of private key into the device and exporting public key out of device + * @used_in PublicKey + * @used_in LoadDevice + * @used_in DebugLinkState + * @used_in Storage + */ +message HDNodeType { + required uint32 depth = 1; + required uint32 fingerprint = 2; + required uint32 child_num = 3; + required bytes chain_code = 4; + optional bytes private_key = 5; + optional bytes public_key = 6; +} + +message HDNodePathType { + required HDNodeType node = 1; // BIP-32 node in deserialized form + repeated uint32 address_n = 2; // BIP-32 path to derive the key from node +} + +/** + * Type of redeem script used in input + * @used_in TxInputType + */ +message MultisigRedeemScriptType { + repeated HDNodePathType pubkeys = 1; // pubkeys from multisig address (sorted lexicographically) + repeated bytes signatures = 2; // existing signatures for partially signed input + optional uint32 m = 3; // "m" from n, how many valid signatures is necessary for spending +} + +/** + * Structure representing transaction input + * @used_in SimpleSignTx + * @used_in TransactionType + */ +message TxInputType { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + required bytes prev_hash = 2; // hash of previous transaction output to spend by this input + required uint32 prev_index = 3; // index of previous output to spend + optional bytes script_sig = 4; // script signature, unset for tx to sign + optional uint32 sequence = 5 [default=4294967295]; // sequence (default=0xffffffff) + optional InputScriptType script_type = 6 [default=SPENDADDRESS]; // defines template of input script + optional MultisigRedeemScriptType multisig = 7; // Filled if input is going to spend multisig tx + optional uint64 amount = 8; // amount of previous transaction output (for segwit only) + optional uint32 decred_tree = 9; + optional uint32 decred_script_version = 10; + optional bytes prev_block_hash_bip115 = 11; // block hash of previous transaction output (for bip115 implementation) + optional bytes prev_block_height_bip115 = 12; // block height of previous transaction output (for bip115 implementation) +} + +/** + * Structure representing transaction output + * @used_in SimpleSignTx + * @used_in TransactionType + */ +message TxOutputType { + optional string address = 1; // target coin address in Base58 encoding + repeated uint32 address_n = 2; // BIP-32 path to derive the key from master node; has higher priority than "address" + required uint64 amount = 3; // amount to spend in satoshis + required OutputScriptType script_type = 4; // output script type + optional MultisigRedeemScriptType multisig = 5; // defines multisig address; script_type must be PAYTOMULTISIG + optional bytes op_return_data = 6; // defines op_return data; script_type must be PAYTOOPRETURN, amount must be 0 + optional uint32 decred_script_version = 7; + optional bytes block_hash_bip115 = 8; // block hash of existing block (recommended current_block - 300) (for bip115 implementation) + optional bytes block_height_bip115 = 9; // block height of existing block (recommended current_block - 300) (for bip115 implementation) +} + +/** + * Structure representing compiled transaction output + * @used_in TransactionType + */ +message TxOutputBinType { + required uint64 amount = 1; + required bytes script_pubkey = 2; + optional uint32 decred_script_version = 3; +} + +/** + * Structure representing transaction + * @used_in TxAck + */ +message TransactionType { + optional uint32 version = 1; + repeated TxInputType inputs = 2; + repeated TxOutputBinType bin_outputs = 3; + repeated TxOutputType outputs = 5; + optional uint32 lock_time = 4; + optional uint32 inputs_cnt = 6; + optional uint32 outputs_cnt = 7; + optional bytes extra_data = 8; // only for Zcash + optional uint32 extra_data_len = 9; // only for Zcash + optional uint32 expiry = 10; // only for Decred and Zcash + optional bool overwintered = 11; // only for Zcash +} + +/** + * Structure representing request details + * @used_in TxRequest + */ +message TxRequestDetailsType { + optional uint32 request_index = 1; // device expects TxAck message from the computer + optional bytes tx_hash = 2; // tx_hash of requested transaction + optional uint32 extra_data_len = 3; // length of requested extra data + optional uint32 extra_data_offset = 4; // offset of requested extra data +} + +/** + * Structure representing serialized data + * @used_in TxRequest + */ +message TxRequestSerializedType { + optional uint32 signature_index = 1; // 'signature' field contains signed input of this index + optional bytes signature = 2; // signature of the signature_index input + optional bytes serialized_tx = 3; // part of serialized and signed transaction +} + +/** + * Structure representing identity data + * @used_in IdentityType + */ +message IdentityType { + optional string proto = 1; // proto part of URI + optional string user = 2; // user part of URI + optional string host = 3; // host part of URI + optional string port = 4; // port part of URI + optional string path = 5; // path part of URI + optional uint32 index = 6 [default=0]; // identity index +} + +/** + * Structure representing passphrase source + * @used_in ApplySettings + */ +enum PassphraseSourceType { + ASK = 0; + DEVICE = 1; + HOST = 2; +} + +/** + * Structure representing the common part for NEM transactions + * @used_in NEMSignTx + */ +message NEMTransactionCommon { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional uint32 network = 2; // Network ID (0x68 = Mainnet, 0x98 = Testnet, 0x60 = Mijin) + optional uint32 timestamp = 3; // Number of seconds elapsed since the creation of the nemesis block + optional uint64 fee = 4; // Fee for the transaction + optional uint32 deadline = 5; // Deadline of the transaction + optional bytes signer = 6; // Public key of the account (for multisig transactions) +} + +/** + * Structure representing the transfer transaction part for NEM transactions + * @used_in NEMSignTx + */ +message NEMTransfer { + optional string recipient = 1; // Address of the recipient + optional uint64 amount = 2; // Amount of micro NEM that is transferred + optional bytes payload = 3; // Actual message data (unencrypted) + optional bytes public_key = 4; // Public key of the recipient (for encrypted payloads) + repeated NEMMosaic mosaics = 5; // Attached mosaics +} + +/** + * Structure representing the mosaic attachment for NEM transfer transactions + * @used_in NEMTransfer + */ +message NEMMosaic { + optional string namespace = 1; // Fully qualified name of the namespace + optional string mosaic = 2; // Name of the mosaic definition + optional uint64 quantity = 3; // Mosaic quantity, always given in smallest units +} + +/** + * Structure representing the provision namespace part for NEM transactions + * @used_in NEMSignTx + */ +message NEMProvisionNamespace { + optional string namespace = 1; // New part concatenated to the parent + optional string parent = 2; // Parent namespace (for child namespaces) + optional string sink = 3; // Rental fee sink address + optional uint64 fee = 4; // Rental fee +} + +/** + * Type of levy which will be used for mosaic + * @used_in NEMMosaicDefinition + */ +enum NEMMosaicLevy { + MosaicLevy_Absolute = 1; + MosaicLevy_Percentile = 2; +} + +/** + * Structure representing the mosaic definition creation part for NEM transactions + * @used_in NEMSignTx + */ +message NEMMosaicCreation { + optional NEMMosaicDefinition definition = 1; // Mosaic definition + optional string sink = 2; // Creation fee sink address + optional uint64 fee = 3; // Creation fee +} + +/** + * Structure representing a mosaic definition + * @used_in NEMMosaicCreation + */ +message NEMMosaicDefinition { + optional string name = 1; // User-friendly name of the mosaic (for whitelisted mosaics) + optional string ticker = 2; // Ticker of the mosaic (for whitelisted mosaics) + optional string namespace = 3; // Fully qualified name of the namespace + optional string mosaic = 4; // Name of the mosaic definition + optional uint32 divisibility = 5; // Number of decimal places that a mosaic can be divided into + optional NEMMosaicLevy levy = 6; // Levy type + optional uint64 fee = 7; // Levy fee (interpretation depends on levy type) + optional string levy_address = 8; // Levy address + optional string levy_namespace = 9; // Fully qualified name of the namespace of the levy mosaic + optional string levy_mosaic = 10; // Name of the levy mosaic + optional uint64 supply = 11; // Initial supply to create, always given in entire units + optional bool mutable_supply = 12; // Mutable supply + optional bool transferable = 13; // Mosaic allows transfers among accounts other than the creator + optional string description = 14; // Mosaic description + repeated uint32 networks = 15; // Networks that the mosaic is valid on (for whitelisted mosaics) +} + +/** + * Structure representing the mosaic supply change part for NEM transactions + * @used_in NEMSignTx + */ +message NEMMosaicSupplyChange { + optional string namespace = 1; // Fully qualified name of the namespace + optional string mosaic = 2; // Name of the mosaic definition + optional NEMSupplyChangeType type = 3; // Type of supply change + optional uint64 delta = 4; // Supply delta +} + +/** + * Type of supply change which will be applied to mosaic + * @used_in NEMMosaicSupplyChange + */ +enum NEMSupplyChangeType { + SupplyChange_Increase = 1; + SupplyChange_Decrease = 2; +} + +/** + * Structure representing the aggregate modification part for NEM transactions + * @used_in NEMSignTx + */ +message NEMAggregateModification { + repeated NEMCosignatoryModification modifications = 1; // Cosignatory modifications + optional sint32 relative_change = 2; // Relative change of the minimum cosignatories +} + +/** + * Structure representing the cosignatory modification for aggregate modification transactions + * @used_in NEMAggregateMdofiication + */ +message NEMCosignatoryModification { + optional NEMModificationType type = 1; // Type of cosignatory modification + optional bytes public_key = 2; // Public key of the cosignatory +} + +/** + * Type of cosignatory modification + * @used_in NEMCosignatoryModification + */ +enum NEMModificationType { + CosignatoryModification_Add = 1; + CosignatoryModification_Delete = 2; +} + +/** + * Structure representing the importance transfer part for NEM transactions + * @used_in NEMSignTx + */ +message NEMImportanceTransfer { + optional NEMImportanceTransferMode mode = 1; // Mode of importance transfer + optional bytes public_key = 2; // Public key of the remote account +} + +/** + * Mode of importance transfer + * @used_in NEMModificationType + */ +enum NEMImportanceTransferMode { + ImportanceTransfer_Activate = 1; + ImportanceTransfer_Deactivate = 2; +} + +/** + * Describes a Stellar asset + * @used_in StellarTxOpAck + */ +message StellarAssetType { + optional uint32 type = 1; // 0 = native asset (XLM), 1 = alphanum 4, 2 = alphanum 12 + optional string code = 2; // for non-native assets, string describing the code + optional string issuer = 3; // issuing address +} + +/** +* Type of Lisk transaction +* @used_in LiskTransactionCommon +*/ +enum LiskTransactionType { + Transfer = 0; + RegisterSecondPassphrase = 1; + RegisterDelegate = 2; + CastVotes = 3; + RegisterMultisignatureAccount = 4; + CreateDapp = 5; + TransferIntoDapp = 6; + TransferOutOfDapp = 7; +} + +/** +* Structure representing the common part for Lisk transactions +* @used_in LiskSignTx +*/ +message LiskTransactionCommon { + optional LiskTransactionType type = 1; + optional uint64 amount = 2 [default=0]; + optional uint64 fee = 3; + optional string recipient_id = 4; + optional bytes sender_public_key = 5; + optional bytes requester_public_key = 6; + optional bytes signature = 7; + optional uint32 timestamp = 8; + optional LiskTransactionAsset asset = 9; +} + +/** +* Structure representing the asset field in the Lisk transaction +* @used_in LiskTransactionCommon +*/ +message LiskTransactionAsset { + optional LiskSignatureType signature = 1; + optional LiskDelegateType delegate = 2; + repeated string votes = 3; + optional LiskMultisignatureType multisignature = 4; + optional string data = 5; +} + +/** +* Structure representing the signature field in the Lisk transaction asset field +* @used_in LiskTransactionAsset +*/ +message LiskSignatureType { + optional bytes public_key = 1; +} + +/** +* Structure representing the delegate field in the Lisk transaction asset field +* @used_in LiskTransactionAsset +*/ +message LiskDelegateType { + optional string username = 1; +} + +/** +* Structure representing the multisignature field in the Lisk transaction asset field +* @used_in LiskTransactionAsset +*/ +message LiskMultisignatureType { + optional uint32 min = 1; + optional uint32 life_time = 2; + repeated string keys_group = 3; +} + +/* +* Type of Tezos operation +* @used_in TezosOperationCommon +*/ +enum TezosOperationType { + Transaction = 8; + Origination = 9; + Delegation = 10; +} + +/* +* Type of Tezos Contract type +* @used_in TezosContractID +*/ +enum TezosContractType { + Implicit = 0; + Originated = 1; +} + +/* +* Tezos contract ID +* @used_in TezosOperationCommon +* @used_in TezosTransactionType +*/ +message TezosContractID { + optional TezosContractType tag = 1; + optional bytes hash = 2; // Implicit = 21B, originated = 20B + 1B padding +} + +/* +* Structure representing the common part for Tezos operations +* @used_in TezosSignTx +*/ +message TezosOperationCommon { + optional bytes branch = 1; + optional TezosOperationType tag = 2; + optional TezosContractID source = 3; + optional uint64 fee = 4; + optional uint64 counter = 5; + optional uint64 gas_limit = 6; + optional uint64 storage_limit = 7; +} + +/* +* Structure representing additional information for transaction +* @used_in TezosSignTx +*/ +message TezosTransactionType { + optional uint64 amount = 1; + optional TezosContractID destination = 2; + optional bytes parameters = 3; +} + +/* +* Structure representing additional information for origination +* @used_in TezosSignTx +*/ +message TezosOriginationType { + optional bytes manager_pubkey = 1; + optional uint64 balance = 2; + optional bool spendable = 3; + optional bool delegatable = 4; + optional bytes delegate = 5; // 1B tag + 20B public key hash + optional bytes script = 6; +} + +/* +* Structure representing additional information for delegation +* @used_in TezosSignTx +*/ +message TezosDelegationType { + optional bytes delegate = 1; // 1B tag + 20B public key hash +} + +/** + * Structure representing cardano transaction input + * @used_in CardanoSignTransacion + */ +message CardanoTxInputType { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional bytes prev_hash = 2; // hash of previous transaction output to spend by this input + optional uint32 prev_index = 3; // index of previous output to spend + optional uint32 type = 4; // input type, defaults to 0 +} + +/** + * Structure representing cardano transaction output + * @used_in CardanoSignTransacion + */ +message CardanoTxOutputType { + optional string address = 1; // target coin address in Base58 encoding + repeated uint32 address_n = 2; // BIP-32 path to derive the key from master node; has higher priority than "address" + optional uint64 amount = 3; // amount to spend +} /** * Mapping between Trezor wire identifier (uint) and a protobuf message @@ -1310,7 +1904,7 @@ message LiskPublicKey { * @next LiskAddress * @next Failure */ - message LiskGetAddress { +message LiskGetAddress { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node optional bool show_display = 2; // Optionally show on display before sending the result } @@ -1319,7 +1913,7 @@ message LiskPublicKey { * Response: Contains Lisk address derived from device private seed * @prev LiskGetAddress */ - message LiskAddress { +message LiskAddress { optional string address = 1; // Lisk address } @@ -1327,7 +1921,7 @@ message LiskPublicKey { * Request: Ask device to sign Lisk transaction * @next LiskSignedTx */ - message LiskSignTx { +message LiskSignTx { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node optional LiskTransactionCommon transaction = 2; // Lisk transaction structure } @@ -1523,7 +2117,7 @@ message DebugLinkFlashErase { * @next CardanoAddress * @next Failure */ - message CardanoGetAddress { +message CardanoGetAddress { repeated uint32 address_n = 1; // BIP-32-style path to derive the key from master node optional bool show_display = 2; // optionally prompt for confirmation on trezor display } @@ -1533,7 +2127,7 @@ message DebugLinkFlashErase { * @next CardanoAddress * @next Failure */ - message CardanoAddress { +message CardanoAddress { optional string address = 1; // Base58 cardano address } @@ -1552,7 +2146,7 @@ message CardanoSignMessage { * @next CardanoPublicKey * @next Failure */ - message CardanoGetPublicKey { +message CardanoGetPublicKey { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node } @@ -1560,7 +2154,7 @@ message CardanoSignMessage { * Response: Contains public key derived from device private seed * @prev CardanoGetPublicKey */ - message CardanoPublicKey { +message CardanoPublicKey { optional string xpub = 1; // Xpub key optional HDNodeType node = 2; // BIP-32 public node optional string root_hd_passphrase = 3; // Hd passphrase for root in hex format diff --git a/protob/storage.proto b/protob/storage.proto deleted file mode 100644 index c04aa4b7d..000000000 --- a/protob/storage.proto +++ /dev/null @@ -1,33 +0,0 @@ -syntax = "proto2"; - -/** - * Storage area of TREZOR - */ - -// Sugar for easier handling in Java -option java_package = "com.satoshilabs.trezor.lib.protobuf"; -option java_outer_classname = "TrezorStorage"; - -import "types.proto"; - -/** - * Internal persistent storage of device - */ -message Storage { - required uint32 version = 1; // version of storage - optional HDNodeType node = 2; // BIP-32 node (mnemonic cannot be used if this is present) - optional string mnemonic = 3; // BIP-39 mnemonic (node cannot be used if this is present) - optional bool passphrase_protection = 4; // whether to require passphrase to decrypt node or stretch mnemonic - optional uint32 pin_failed_attempts = 5; // number of failed PIN attempts - optional string pin = 6; // current PIN - optional string language = 7; // current language - optional string label = 8; // device label - optional bool imported = 9; // was storage imported from an external source? - optional bytes homescreen = 10; // image used as homescreen (logo + label is used when not set) - optional uint32 u2f_counter = 11; // sequence number for u2f authentications - optional bool needs_backup = 12; // seed is not backed up yet - optional uint32 flags = 13; // device flags - optional HDNodeType u2froot = 14; // U2F root node - optional bool unfinished_backup = 15; // seed was improperly backed up - optional uint32 auto_lock_delay_ms = 16; // configurable auto-lock delay (in milliseconds) -} diff --git a/protob/types.proto b/protob/types.proto deleted file mode 100644 index 75ae84ccb..000000000 --- a/protob/types.proto +++ /dev/null @@ -1,607 +0,0 @@ -syntax = "proto2"; - -/** - * Types for TREZOR communication - * - * @author Marek Palatinus - * @version 1.2 - */ - -// Sugar for easier handling in Java -option java_package = "com.satoshilabs.trezor.lib.protobuf"; -option java_outer_classname = "TrezorType"; - -import "google/protobuf/descriptor.proto"; - -/** - * Options for specifying message direction and type of wire (normal/debug) - */ -extend google.protobuf.EnumValueOptions { - optional bool wire_in = 50002; // message can be transmitted via wire from PC to TREZOR - optional bool wire_out = 50003; // message can be transmitted via wire from TREZOR to PC - optional bool wire_debug_in = 50004; // message can be transmitted via debug wire from PC to TREZOR - optional bool wire_debug_out = 50005; // message can be transmitted via debug wire from TREZOR to PC - optional bool wire_tiny = 50006; // message is handled by TREZOR when the USB stack is in tiny mode - optional bool wire_bootloader = 50007; // message is only handled by TREZOR Bootloader - optional bool wire_no_fsm = 50008; // message is not handled by TREZOR unless the USB stack is in tiny mode -} - -/** - * Type of failures returned by Failure message - * @used_in Failure - */ -enum FailureType { - Failure_UnexpectedMessage = 1; - Failure_ButtonExpected = 2; - Failure_DataError = 3; - Failure_ActionCancelled = 4; - Failure_PinExpected = 5; - Failure_PinCancelled = 6; - Failure_PinInvalid = 7; - Failure_InvalidSignature = 8; - Failure_ProcessError = 9; - Failure_NotEnoughFunds = 10; - Failure_NotInitialized = 11; - Failure_PinMismatch = 12; - Failure_FirmwareError = 99; -} - -/** - * Type of script which will be used for transaction output - * @used_in TxOutputType - */ -enum OutputScriptType { - PAYTOADDRESS = 0; // used for all addresses (bitcoin, p2sh, witness) - PAYTOSCRIPTHASH = 1; // p2sh address (deprecated; use PAYTOADDRESS) - PAYTOMULTISIG = 2; // only for change output - PAYTOOPRETURN = 3; // op_return - PAYTOWITNESS = 4; // only for change output - PAYTOP2SHWITNESS = 5; // only for change output -} - -/** - * Type of script which will be used for transaction output - * @used_in TxInputType - */ -enum InputScriptType { - SPENDADDRESS = 0; // standard p2pkh address - SPENDMULTISIG = 1; // p2sh multisig address - EXTERNAL = 2; // reserved for external inputs (coinjoin) - SPENDWITNESS = 3; // native segwit - SPENDP2SHWITNESS = 4; // segwit over p2sh (backward compatible) -} - -/** - * Type of information required by transaction signing process - * @used_in TxRequest - */ -enum RequestType { - TXINPUT = 0; - TXOUTPUT = 1; - TXMETA = 2; - TXFINISHED = 3; - TXEXTRADATA = 4; -} - -/** - * Type of button request - * @used_in ButtonRequest - */ -enum ButtonRequestType { - ButtonRequest_Other = 1; - ButtonRequest_FeeOverThreshold = 2; - ButtonRequest_ConfirmOutput = 3; - ButtonRequest_ResetDevice = 4; - ButtonRequest_ConfirmWord = 5; - ButtonRequest_WipeDevice = 6; - ButtonRequest_ProtectCall = 7; - ButtonRequest_SignTx = 8; - ButtonRequest_FirmwareCheck = 9; - ButtonRequest_Address = 10; - ButtonRequest_PublicKey = 11; - ButtonRequest_MnemonicWordCount = 12; - ButtonRequest_MnemonicInput = 13; - ButtonRequest_PassphraseType = 14; -} - -/** - * Type of PIN request - * @used_in PinMatrixRequest - */ -enum PinMatrixRequestType { - PinMatrixRequestType_Current = 1; - PinMatrixRequestType_NewFirst = 2; - PinMatrixRequestType_NewSecond = 3; -} - -/** - * Type of recovery procedure. These should be used as bitmask, e.g., - * `RecoveryDeviceType_ScrambledWords | RecoveryDeviceType_Matrix` - * listing every method supported by the host computer. - * - * Note that ScrambledWords must be supported by every implementation - * for backward compatibility; there is no way to not support it. - * - * @used_in RecoveryDevice - */ -enum RecoveryDeviceType { - // use powers of two when extending this field - RecoveryDeviceType_ScrambledWords = 0; // words in scrambled order - RecoveryDeviceType_Matrix = 1; // matrix recovery type -} - -/** - * Type of Recovery Word request - * @used_in WordRequest - */ -enum WordRequestType { - WordRequestType_Plain = 0; - WordRequestType_Matrix9 = 1; - WordRequestType_Matrix6 = 2; -} - -/** - * Structure representing BIP32 (hierarchical deterministic) node - * Used for imports of private key into the device and exporting public key out of device - * @used_in PublicKey - * @used_in LoadDevice - * @used_in DebugLinkState - * @used_in Storage - */ -message HDNodeType { - required uint32 depth = 1; - required uint32 fingerprint = 2; - required uint32 child_num = 3; - required bytes chain_code = 4; - optional bytes private_key = 5; - optional bytes public_key = 6; -} - -message HDNodePathType { - required HDNodeType node = 1; // BIP-32 node in deserialized form - repeated uint32 address_n = 2; // BIP-32 path to derive the key from node -} - -/** - * Type of redeem script used in input - * @used_in TxInputType - */ -message MultisigRedeemScriptType { - repeated HDNodePathType pubkeys = 1; // pubkeys from multisig address (sorted lexicographically) - repeated bytes signatures = 2; // existing signatures for partially signed input - optional uint32 m = 3; // "m" from n, how many valid signatures is necessary for spending -} - -/** - * Structure representing transaction input - * @used_in SimpleSignTx - * @used_in TransactionType - */ -message TxInputType { - repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - required bytes prev_hash = 2; // hash of previous transaction output to spend by this input - required uint32 prev_index = 3; // index of previous output to spend - optional bytes script_sig = 4; // script signature, unset for tx to sign - optional uint32 sequence = 5 [default=4294967295]; // sequence (default=0xffffffff) - optional InputScriptType script_type = 6 [default=SPENDADDRESS]; // defines template of input script - optional MultisigRedeemScriptType multisig = 7; // Filled if input is going to spend multisig tx - optional uint64 amount = 8; // amount of previous transaction output (for segwit only) - optional uint32 decred_tree = 9; - optional uint32 decred_script_version = 10; - optional bytes prev_block_hash_bip115 = 11; // block hash of previous transaction output (for bip115 implementation) - optional bytes prev_block_height_bip115 = 12; // block height of previous transaction output (for bip115 implementation) -} - -/** - * Structure representing transaction output - * @used_in SimpleSignTx - * @used_in TransactionType - */ -message TxOutputType { - optional string address = 1; // target coin address in Base58 encoding - repeated uint32 address_n = 2; // BIP-32 path to derive the key from master node; has higher priority than "address" - required uint64 amount = 3; // amount to spend in satoshis - required OutputScriptType script_type = 4; // output script type - optional MultisigRedeemScriptType multisig = 5; // defines multisig address; script_type must be PAYTOMULTISIG - optional bytes op_return_data = 6; // defines op_return data; script_type must be PAYTOOPRETURN, amount must be 0 - optional uint32 decred_script_version = 7; - optional bytes block_hash_bip115 = 8; // block hash of existing block (recommended current_block - 300) (for bip115 implementation) - optional bytes block_height_bip115 = 9; // block height of existing block (recommended current_block - 300) (for bip115 implementation) -} - -/** - * Structure representing compiled transaction output - * @used_in TransactionType - */ -message TxOutputBinType { - required uint64 amount = 1; - required bytes script_pubkey = 2; - optional uint32 decred_script_version = 3; -} - -/** - * Structure representing transaction - * @used_in TxAck - */ -message TransactionType { - optional uint32 version = 1; - repeated TxInputType inputs = 2; - repeated TxOutputBinType bin_outputs = 3; - repeated TxOutputType outputs = 5; - optional uint32 lock_time = 4; - optional uint32 inputs_cnt = 6; - optional uint32 outputs_cnt = 7; - optional bytes extra_data = 8; // only for Zcash - optional uint32 extra_data_len = 9; // only for Zcash - optional uint32 expiry = 10; // only for Decred and Zcash - optional bool overwintered = 11; // only for Zcash -} - -/** - * Structure representing request details - * @used_in TxRequest - */ -message TxRequestDetailsType { - optional uint32 request_index = 1; // device expects TxAck message from the computer - optional bytes tx_hash = 2; // tx_hash of requested transaction - optional uint32 extra_data_len = 3; // length of requested extra data - optional uint32 extra_data_offset = 4; // offset of requested extra data -} - -/** - * Structure representing serialized data - * @used_in TxRequest - */ -message TxRequestSerializedType { - optional uint32 signature_index = 1; // 'signature' field contains signed input of this index - optional bytes signature = 2; // signature of the signature_index input - optional bytes serialized_tx = 3; // part of serialized and signed transaction -} - -/** - * Structure representing identity data - * @used_in IdentityType - */ -message IdentityType { - optional string proto = 1; // proto part of URI - optional string user = 2; // user part of URI - optional string host = 3; // host part of URI - optional string port = 4; // port part of URI - optional string path = 5; // path part of URI - optional uint32 index = 6 [default=0]; // identity index -} - -/** - * Structure representing passphrase source - * @used_in ApplySettings - */ -enum PassphraseSourceType { - ASK = 0; - DEVICE = 1; - HOST = 2; -} - -/** - * Structure representing the common part for NEM transactions - * @used_in NEMSignTx - */ -message NEMTransactionCommon { - repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - optional uint32 network = 2; // Network ID (0x68 = Mainnet, 0x98 = Testnet, 0x60 = Mijin) - optional uint32 timestamp = 3; // Number of seconds elapsed since the creation of the nemesis block - optional uint64 fee = 4; // Fee for the transaction - optional uint32 deadline = 5; // Deadline of the transaction - optional bytes signer = 6; // Public key of the account (for multisig transactions) -} - -/** - * Structure representing the transfer transaction part for NEM transactions - * @used_in NEMSignTx - */ -message NEMTransfer { - optional string recipient = 1; // Address of the recipient - optional uint64 amount = 2; // Amount of micro NEM that is transferred - optional bytes payload = 3; // Actual message data (unencrypted) - optional bytes public_key = 4; // Public key of the recipient (for encrypted payloads) - repeated NEMMosaic mosaics = 5; // Attached mosaics -} - -/** - * Structure representing the mosaic attachment for NEM transfer transactions - * @used_in NEMTransfer - */ -message NEMMosaic { - optional string namespace = 1; // Fully qualified name of the namespace - optional string mosaic = 2; // Name of the mosaic definition - optional uint64 quantity = 3; // Mosaic quantity, always given in smallest units -} - -/** - * Structure representing the provision namespace part for NEM transactions - * @used_in NEMSignTx - */ -message NEMProvisionNamespace { - optional string namespace = 1; // New part concatenated to the parent - optional string parent = 2; // Parent namespace (for child namespaces) - optional string sink = 3; // Rental fee sink address - optional uint64 fee = 4; // Rental fee -} - -/** - * Type of levy which will be used for mosaic - * @used_in NEMMosaicDefinition - */ -enum NEMMosaicLevy { - MosaicLevy_Absolute = 1; - MosaicLevy_Percentile = 2; -} - -/** - * Structure representing the mosaic definition creation part for NEM transactions - * @used_in NEMSignTx - */ -message NEMMosaicCreation { - optional NEMMosaicDefinition definition = 1; // Mosaic definition - optional string sink = 2; // Creation fee sink address - optional uint64 fee = 3; // Creation fee -} - -/** - * Structure representing a mosaic definition - * @used_in NEMMosaicCreation - */ -message NEMMosaicDefinition { - optional string name = 1; // User-friendly name of the mosaic (for whitelisted mosaics) - optional string ticker = 2; // Ticker of the mosaic (for whitelisted mosaics) - optional string namespace = 3; // Fully qualified name of the namespace - optional string mosaic = 4; // Name of the mosaic definition - optional uint32 divisibility = 5; // Number of decimal places that a mosaic can be divided into - optional NEMMosaicLevy levy = 6; // Levy type - optional uint64 fee = 7; // Levy fee (interpretation depends on levy type) - optional string levy_address = 8; // Levy address - optional string levy_namespace = 9; // Fully qualified name of the namespace of the levy mosaic - optional string levy_mosaic = 10; // Name of the levy mosaic - optional uint64 supply = 11; // Initial supply to create, always given in entire units - optional bool mutable_supply = 12; // Mutable supply - optional bool transferable = 13; // Mosaic allows transfers among accounts other than the creator - optional string description = 14; // Mosaic description - repeated uint32 networks = 15; // Networks that the mosaic is valid on (for whitelisted mosaics) -} - -/** - * Structure representing the mosaic supply change part for NEM transactions - * @used_in NEMSignTx - */ -message NEMMosaicSupplyChange { - optional string namespace = 1; // Fully qualified name of the namespace - optional string mosaic = 2; // Name of the mosaic definition - optional NEMSupplyChangeType type = 3; // Type of supply change - optional uint64 delta = 4; // Supply delta -} - -/** - * Type of supply change which will be applied to mosaic - * @used_in NEMMosaicSupplyChange - */ -enum NEMSupplyChangeType { - SupplyChange_Increase = 1; - SupplyChange_Decrease = 2; -} - -/** - * Structure representing the aggregate modification part for NEM transactions - * @used_in NEMSignTx - */ -message NEMAggregateModification { - repeated NEMCosignatoryModification modifications = 1; // Cosignatory modifications - optional sint32 relative_change = 2; // Relative change of the minimum cosignatories -} - -/** - * Structure representing the cosignatory modification for aggregate modification transactions - * @used_in NEMAggregateMdofiication - */ -message NEMCosignatoryModification { - optional NEMModificationType type = 1; // Type of cosignatory modification - optional bytes public_key = 2; // Public key of the cosignatory -} - -/** - * Type of cosignatory modification - * @used_in NEMCosignatoryModification - */ -enum NEMModificationType { - CosignatoryModification_Add = 1; - CosignatoryModification_Delete = 2; -} - -/** - * Structure representing the importance transfer part for NEM transactions - * @used_in NEMSignTx - */ -message NEMImportanceTransfer { - optional NEMImportanceTransferMode mode = 1; // Mode of importance transfer - optional bytes public_key = 2; // Public key of the remote account -} - -/** - * Mode of importance transfer - * @used_in NEMModificationType - */ -enum NEMImportanceTransferMode { - ImportanceTransfer_Activate = 1; - ImportanceTransfer_Deactivate = 2; -} - -/** - * Describes a Stellar asset - * @used_in StellarTxOpAck - */ -message StellarAssetType { - optional uint32 type = 1; // 0 = native asset (XLM), 1 = alphanum 4, 2 = alphanum 12 - optional string code = 2; // for non-native assets, string describing the code - optional string issuer = 3; // issuing address -} - -/** -* Type of Lisk transaction -* @used_in LiskTransactionCommon -*/ -enum LiskTransactionType { - Transfer = 0; - RegisterSecondPassphrase = 1; - RegisterDelegate = 2; - CastVotes = 3; - RegisterMultisignatureAccount = 4; - CreateDapp = 5; - TransferIntoDapp = 6; - TransferOutOfDapp = 7; -} - -/** -* Structure representing the common part for Lisk transactions -* @used_in LiskSignTx -*/ -message LiskTransactionCommon { - optional LiskTransactionType type = 1; - optional uint64 amount = 2 [default=0]; - optional uint64 fee = 3; - optional string recipient_id = 4; - optional bytes sender_public_key = 5; - optional bytes requester_public_key = 6; - optional bytes signature = 7; - optional uint32 timestamp = 8; - optional LiskTransactionAsset asset = 9; -} - -/** -* Structure representing the asset field in the Lisk transaction -* @used_in LiskTransactionCommon -*/ -message LiskTransactionAsset { - optional LiskSignatureType signature = 1; - optional LiskDelegateType delegate = 2; - repeated string votes = 3; - optional LiskMultisignatureType multisignature = 4; - optional string data = 5; -} - -/** -* Structure representing the signature field in the Lisk transaction asset field -* @used_in LiskTransactionAsset -*/ -message LiskSignatureType { - optional bytes public_key = 1; -} - -/** -* Structure representing the delegate field in the Lisk transaction asset field -* @used_in LiskTransactionAsset -*/ -message LiskDelegateType { - optional string username = 1; -} - -/** -* Structure representing the multisignature field in the Lisk transaction asset field -* @used_in LiskTransactionAsset -*/ -message LiskMultisignatureType { - optional uint32 min = 1; - optional uint32 life_time = 2; - repeated string keys_group = 3; -} - -/* -* Type of Tezos operation -* @used_in TezosOperationCommon -*/ -enum TezosOperationType { - Transaction = 8; - Origination = 9; - Delegation = 10; -} - -/* -* Type of Tezos Contract type -* @used_in TezosContractID -*/ -enum TezosContractType { - Implicit = 0; - Originated = 1; -} - -/* -* Tezos contract ID -* @used_in TezosOperationCommon -* @used_in TezosTransactionType -*/ -message TezosContractID { - optional TezosContractType tag = 1; - optional bytes hash = 2; // Implicit = 21B, originated = 20B + 1B padding -} - -/* -* Structure representing the common part for Tezos operations -* @used_in TezosSignTx -*/ -message TezosOperationCommon { - optional bytes branch = 1; - optional TezosOperationType tag = 2; - optional TezosContractID source = 3; - optional uint64 fee = 4; - optional uint64 counter = 5; - optional uint64 gas_limit = 6; - optional uint64 storage_limit = 7; -} - -/* -* Structure representing additional information for transaction -* @used_in TezosSignTx -*/ -message TezosTransactionType { - optional uint64 amount = 1; - optional TezosContractID destination = 2; - optional bytes parameters = 3; -} - -/* -* Structure representing additional information for origination -* @used_in TezosSignTx -*/ -message TezosOriginationType { - optional bytes manager_pubkey = 1; - optional uint64 balance = 2; - optional bool spendable = 3; - optional bool delegatable = 4; - optional bytes delegate = 5; // 1B tag + 20B public key hash - optional bytes script = 6; -} - -/* -* Structure representing additional information for delegation -* @used_in TezosSignTx -*/ -message TezosDelegationType { - optional bytes delegate = 1; // 1B tag + 20B public key hash - -/** - * Structure representing cardano transaction input - * @used_in CardanoSignTransacion - */ -message CardanoTxInputType { - repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - optional bytes prev_hash = 2; // hash of previous transaction output to spend by this input - optional uint32 prev_index = 3; // index of previous output to spend - optional uint32 type = 4; // input type, defaults to 0 -} - -/** - * Structure representing cardano transaction output - * @used_in CardanoSignTransacion - */ -message CardanoTxOutputType { - optional string address = 1; // target coin address in Base58 encoding - repeated uint32 address_n = 2; // BIP-32 path to derive the key from master node; has higher priority than "address" - optional uint64 amount = 3; // amount to spend -} diff --git a/protob/config.proto b/signer/config.proto similarity index 100% rename from protob/config.proto rename to signer/config.proto From 981b9d1a9ede0734b681f784e770a84c7b84cff5 Mon Sep 17 00:00:00 2001 From: Akira Takizawa Date: Wed, 4 Jul 2018 22:35:17 +0900 Subject: [PATCH 416/767] Fix typo for Ethereum Social [ETSC] (#160) --- tools/coins_details.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/coins_details.py b/tools/coins_details.py index c7f27fe66..93a2a527b 100755 --- a/tools/coins_details.py +++ b/tools/coins_details.py @@ -236,7 +236,7 @@ def update_ethereum(details): out = details['coins'].setdefault('coin2:ETSC', {}) out['type'] = 'coin' set_default(out, 'shortcut', 'ETSC') - set_default(out, 'name', 'EthereumSocial') + set_default(out, 'name', 'Ethereum Social') set_default(out, 't1_enabled', 'yes') set_default(out, 't2_enabled', 'yes') update_marketcap(out, 'etsc') From 000d8326323fb58f0ff4c11f919cd28138f331a8 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 4 Jul 2018 16:44:26 +0200 Subject: [PATCH 417/767] proto: split messages into more files by topic --- protob/Makefile | 2 +- protob/common.proto | 14 + protob/messages-bitcoin.proto | 240 +++ protob/messages-bootloader.proto | 43 + protob/messages-cardano.proto | 134 ++ protob/messages-crypto.proto | 120 ++ protob/messages-debug.proto | 92 ++ protob/messages-ethereum.proto | 99 ++ protob/messages-lisk.proto | 145 ++ protob/messages-management.proto | 400 +++++ protob/messages-nem.proto | 195 +++ protob/messages-stellar.proto | 258 ++++ protob/messages-tezos.proto | 122 ++ protob/messages.proto | 2352 ++---------------------------- 14 files changed, 2015 insertions(+), 2201 deletions(-) create mode 100644 protob/common.proto create mode 100644 protob/messages-bitcoin.proto create mode 100644 protob/messages-bootloader.proto create mode 100644 protob/messages-cardano.proto create mode 100644 protob/messages-crypto.proto create mode 100644 protob/messages-debug.proto create mode 100644 protob/messages-ethereum.proto create mode 100644 protob/messages-lisk.proto create mode 100644 protob/messages-management.proto create mode 100644 protob/messages-nem.proto create mode 100644 protob/messages-stellar.proto create mode 100644 protob/messages-tezos.proto diff --git a/protob/Makefile b/protob/Makefile index daff4266d..1ac2dd04e 100644 --- a/protob/Makefile +++ b/protob/Makefile @@ -1,4 +1,4 @@ -check: messages.pb +check: messages.pb messages-bitcoin.pb messages-bootloader.pb messages-cardano.pb messages-crypto.pb messages-debug.pb messages-ethereum.pb messages-lisk.pb messages-management.pb messages-nem.pb messages-stellar.pb messages-tezos.pb %.pb: %.proto protoc -I/usr/include -I. $< -o $@ diff --git a/protob/common.proto b/protob/common.proto new file mode 100644 index 000000000..31f2243a4 --- /dev/null +++ b/protob/common.proto @@ -0,0 +1,14 @@ +syntax = "proto2"; + +/** + * Structure representing BIP32 (hierarchical deterministic) node + * Used for imports of private key into the device and exporting public key out of device + */ +message HDNodeType { + required uint32 depth = 1; + required uint32 fingerprint = 2; + required uint32 child_num = 3; + required bytes chain_code = 4; + optional bytes private_key = 5; + optional bytes public_key = 6; +} diff --git a/protob/messages-bitcoin.proto b/protob/messages-bitcoin.proto new file mode 100644 index 000000000..fe99d3421 --- /dev/null +++ b/protob/messages-bitcoin.proto @@ -0,0 +1,240 @@ +syntax = "proto2"; + +// Sugar for easier handling in Java +option java_package = "com.satoshilabs.trezor.lib.protobuf"; +option java_outer_classname = "TrezorMessageBitcoin"; + +import "common.proto"; + +/** + * Type of script which will be used for transaction output + */ +enum InputScriptType { + SPENDADDRESS = 0; // standard P2PKH address + SPENDMULTISIG = 1; // P2SH multisig address + EXTERNAL = 2; // reserved for external inputs (coinjoin) + SPENDWITNESS = 3; // native SegWit + SPENDP2SHWITNESS = 4; // SegWit over P2SH (backward compatible) +} + +/** + * Type of redeem script used in input + */ +message MultisigRedeemScriptType { + repeated HDNodePathType pubkeys = 1; // pubkeys from multisig address (sorted lexicographically) + repeated bytes signatures = 2; // existing signatures for partially signed input + optional uint32 m = 3; // "m" from n, how many valid signatures is necessary for spending + /** + * Structure representing HDNode + Path + */ + message HDNodePathType { + required HDNodeType node = 1; // BIP-32 node in deserialized form + repeated uint32 address_n = 2; // BIP-32 path to derive the key from node + } +} + +/** + * Request: Ask device for public key corresponding to address_n path + * @next PassphraseRequest + * @next PublicKey + * @next Failure + */ +message GetPublicKey { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional string ecdsa_curve_name = 2; // ECDSA curve name to use + optional bool show_display = 3; // optionally show on display before sending the result + optional string coin_name = 4 [default='Bitcoin']; // coin to use for verifying +} + +/** + * Response: Contains public key derived from device private seed + * @prev GetPublicKey + */ +message PublicKey { + required HDNodeType node = 1; // BIP32 public node + optional string xpub = 2; // serialized form of public node +} + +/** + * Request: Ask device for address corresponding to address_n path + * @next PassphraseRequest + * @next Address + * @next Failure + */ +message GetAddress { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional string coin_name = 2 [default='Bitcoin']; // coin to use + optional bool show_display = 3; // optionally show on display before sending the result + optional MultisigRedeemScriptType multisig = 4; // filled if we are showing a multisig address + optional InputScriptType script_type = 5 [default=SPENDADDRESS]; // used to distinguish between various address formats (non-segwit, segwit, etc.) +} + +/** + * Response: Contains address derived from device private seed + * @prev GetAddress + */ +message Address { + required string address = 1; // Coin address in Base58 encoding +} + +/** + * Request: Ask device to sign message + * @next MessageSignature + * @next Failure + */ +message SignMessage { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + required bytes message = 2; // message to be signed + optional string coin_name = 3 [default='Bitcoin']; // coin to use for signing + optional InputScriptType script_type = 4 [default=SPENDADDRESS]; // used to distinguish between various address formats (non-segwit, segwit, etc.) +} + +/** + * Request: Ask device to verify message + * @next Success + * @next Failure + */ +message VerifyMessage { + optional string address = 1; // address to verify + optional bytes signature = 2; // signature to verify + optional bytes message = 3; // message to verify + optional string coin_name = 4 [default='Bitcoin']; // coin to use for verifying +} + +/** + * Response: Signed message + * @prev SignMessage + */ +message MessageSignature { + optional string address = 1; // address used to sign the message + optional bytes signature = 2; // signature of the message +} + +/** + * Request: Ask device to sign transaction + * @next PassphraseRequest + * @next PinMatrixRequest + * @next TxRequest + * @next Failure + */ +message SignTx { + required uint32 outputs_count = 1; // number of transaction outputs + required uint32 inputs_count = 2; // number of transaction inputs + optional string coin_name = 3 [default='Bitcoin']; // coin to use + optional uint32 version = 4 [default=1]; // transaction version + optional uint32 lock_time = 5 [default=0]; // transaction lock_time + optional uint32 expiry = 6; // only for Decred and Zcash + optional bool overwintered = 7; // only for Zcash +} + +/** + * Response: Device asks for information for signing transaction or returns the last result + * If request_index is set, device awaits TxAck message (with fields filled in according to request_type) + * If signature_index is set, 'signature' contains signed input of signature_index's input + * @prev SignTx + * @prev TxAck + */ +message TxRequest { + optional RequestType request_type = 1; // what should be filled in TxAck message? + optional TxRequestDetailsType details = 2; // request for tx details + optional TxRequestSerializedType serialized = 3; // serialized data and request for next + /** + * Type of information required by transaction signing process + */ + enum RequestType { + TXINPUT = 0; + TXOUTPUT = 1; + TXMETA = 2; + TXFINISHED = 3; + TXEXTRADATA = 4; + } + /** + * Structure representing request details + */ + message TxRequestDetailsType { + optional uint32 request_index = 1; // device expects TxAck message from the computer + optional bytes tx_hash = 2; // tx_hash of requested transaction + optional uint32 extra_data_len = 3; // length of requested extra data + optional uint32 extra_data_offset = 4; // offset of requested extra data + } + /** + * Structure representing serialized data + */ + message TxRequestSerializedType { + optional uint32 signature_index = 1; // 'signature' field contains signed input of this index + optional bytes signature = 2; // signature of the signature_index input + optional bytes serialized_tx = 3; // part of serialized and signed transaction + } +} + +/** + * Request: Reported transaction data + * @prev TxRequest + * @next TxRequest + */ +message TxAck { + optional TransactionType tx = 1; + /** + * Structure representing transaction + */ + message TransactionType { + optional uint32 version = 1; + repeated TxInputType inputs = 2; + repeated TxOutputBinType bin_outputs = 3; + optional uint32 lock_time = 4; + repeated TxOutputType outputs = 5; + optional uint32 inputs_cnt = 6; + optional uint32 outputs_cnt = 7; + optional bytes extra_data = 8; // only for Zcash + optional uint32 extra_data_len = 9; // only for Zcash + optional uint32 expiry = 10; // only for Decred and Zcash + optional bool overwintered = 11; // only for Zcash + /** + * Structure representing transaction input + */ + message TxInputType { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + required bytes prev_hash = 2; // hash of previous transaction output to spend by this input + required uint32 prev_index = 3; // index of previous output to spend + optional bytes script_sig = 4; // script signature, unset for tx to sign + optional uint32 sequence = 5 [default=4294967295]; // sequence (default=0xffffffff) + optional InputScriptType script_type = 6 [default=SPENDADDRESS]; // defines template of input script + optional MultisigRedeemScriptType multisig = 7; // Filled if input is going to spend multisig tx + optional uint64 amount = 8; // amount of previous transaction output (for segwit only) + optional uint32 decred_tree = 9; + optional uint32 decred_script_version = 10; + optional bytes prev_block_hash_bip115 = 11; // block hash of previous transaction output (for bip115 implementation) + optional bytes prev_block_height_bip115 = 12; // block height of previous transaction output (for bip115 implementation) + } + /** + * Structure representing compiled transaction output + */ + message TxOutputBinType { + required uint64 amount = 1; + required bytes script_pubkey = 2; + optional uint32 decred_script_version = 3; + } + /** + * Structure representing transaction output + */ + message TxOutputType { + optional string address = 1; // target coin address in Base58 encoding + repeated uint32 address_n = 2; // BIP-32 path to derive the key from master node; has higher priority than "address" + required uint64 amount = 3; // amount to spend in satoshis + required OutputScriptType script_type = 4; // output script type + optional MultisigRedeemScriptType multisig = 5; // defines multisig address; script_type must be PAYTOMULTISIG + optional bytes op_return_data = 6; // defines op_return data; script_type must be PAYTOOPRETURN, amount must be 0 + optional uint32 decred_script_version = 7; + optional bytes block_hash_bip115 = 8; // block hash of existing block (recommended current_block - 300) (for bip115 implementation) + optional bytes block_height_bip115 = 9; // block height of existing block (recommended current_block - 300) (for bip115 implementation) + enum OutputScriptType { + PAYTOADDRESS = 0; // used for all addresses (bitcoin, p2sh, witness) + PAYTOSCRIPTHASH = 1; // p2sh address (deprecated; use PAYTOADDRESS) + PAYTOMULTISIG = 2; // only for change output + PAYTOOPRETURN = 3; // op_return + PAYTOWITNESS = 4; // only for change output + PAYTOP2SHWITNESS = 5; // only for change output + } + } + } +} diff --git a/protob/messages-bootloader.proto b/protob/messages-bootloader.proto new file mode 100644 index 000000000..8caa63c08 --- /dev/null +++ b/protob/messages-bootloader.proto @@ -0,0 +1,43 @@ +syntax = "proto2"; + +// Sugar for easier handling in Java +option java_package = "com.satoshilabs.trezor.lib.protobuf"; +option java_outer_classname = "TrezorMessageBootloader"; + +/** + * Request: Ask device to erase its firmware (so it can be replaced via FirmwareUpload) + * @next Success + * @next FirmwareRequest + * @next Failure + */ +message FirmwareErase { + optional uint32 length = 1; // length of new firmware +} + +/** + * Response: Ask for firmware chunk + * @next FirmwareUpload + */ +message FirmwareRequest { + optional uint32 offset = 1; // offset of requested firmware chunk + optional uint32 length = 2; // length of requested firmware chunk +} + +/** + * Request: Send firmware in binary form to the device + * @next Success + * @next Failure + */ +message FirmwareUpload { + required bytes payload = 1; // firmware to be loaded into device + optional bytes hash = 2; // hash of the payload +} + +/** + * Request: Perform a device self-test + * @next Success + * @next Failure + */ +message SelfTest { + optional bytes payload = 1; // payload to be used in self-test +} diff --git a/protob/messages-cardano.proto b/protob/messages-cardano.proto new file mode 100644 index 000000000..d0b245542 --- /dev/null +++ b/protob/messages-cardano.proto @@ -0,0 +1,134 @@ +syntax = "proto2"; + +// Sugar for easier handling in Java +option java_package = "com.satoshilabs.trezor.lib.protobuf"; +option java_outer_classname = "TrezorMessageCardano"; + +import "common.proto"; + +/** + * Request: Ask device for Cardano address + * @next CardanoAddress + * @next Failure + */ +message CardanoGetAddress { + repeated uint32 address_n = 1; // BIP-32-style path to derive the key from master node + optional bool show_display = 2; // optionally prompt for confirmation on trezor display +} + +/** + * Request: Ask device for Cardano address + * @next CardanoAddress + * @next Failure + */ +message CardanoAddress { + optional string address = 1; // Base58 cardano address +} + +/** + * Request: Ask device to sign Cardano message + * @next CardanoMessageSignature + * @next Failure + */ +message CardanoSignMessage { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional bytes message = 2; // message to be signed +} + +/** + * Request: Ask device for public key corresponding to address_n path + * @next CardanoPublicKey + * @next Failure + */ +message CardanoGetPublicKey { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node +} + +/** + * Response: Contains public key derived from device private seed + * @prev CardanoGetPublicKey + */ +message CardanoPublicKey { + optional string xpub = 1; // Xpub key + optional HDNodeType node = 2; // BIP-32 public node + optional string root_hd_passphrase = 3; // HD passphrase for root in hex format +} + +/** + * Request: Ask device to verify Cardano message + * @next Success + * @next Failure + */ +message CardanoVerifyMessage { + optional bytes public_key = 1; // Public key which was used to sign message + optional bytes signature = 2; // signature to verify + optional bytes message = 3; // message to verify +} + +/** + * Response: Signed Cardano message + * @prev CardanoSignMessage + */ +message CardanoMessageSignature { + optional bytes public_key = 1; // public key which was used to sign mesage + optional bytes signature = 2; // signature of the message +} + +/** + * Request: Ask device to sign Cardano transaction + * @next CardanoSignedTransaction + * @next CardanoTxRequest + * @next Failure + */ +message CardanoSignTransaction { + repeated CardanoTxInputType inputs = 1; // inputs to be used in transaction + repeated CardanoTxOutputType outputs = 2; // outputs to be used in transaction + optional uint32 transactions_count = 3; // transactions count + /** + * Structure representing cardano transaction input + */ + message CardanoTxInputType { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional bytes prev_hash = 2; // hash of previous transaction output to spend by this input + optional uint32 prev_index = 3; // index of previous output to spend + optional uint32 type = 4; // input type, defaults to 0 + } + /** + * Structure representing cardano transaction output + */ + message CardanoTxOutputType { + optional string address = 1; // target coin address in Base58 encoding + repeated uint32 address_n = 2; // BIP-32 path to derive the key from master node; has higher priority than "address" + optional uint64 amount = 3; // amount to spend + } +} + +/** + * Response: Serialised signed cardano transaction if tx_index is not specified. + * If tx_index is specified, trezor will wait for transaction + * @prev CardanoSignTransaction + * @next CardanoTxAck + */ +message CardanoTxRequest { + optional uint32 tx_index = 1; // index of requested transaction + optional bytes tx_hash = 2; // hash of the signed transaction + optional bytes tx_body = 3; // serialised body of the signed transaction +} + +/** + * Response: Serialised signed cardano transaction + * @prev CardanoSignTransaction + */ +message CardanoSignedTransaction { + optional bytes tx_hash = 1; // hash of the signed transaction + optional bytes tx_body = 2; // serialised body of the signed transaction +} + +/** + * Request: Reported transaction data + * @prev CardanoTxRequest + * @next CardanoTxRequest + */ +message CardanoTxAck { + optional bytes transaction = 1; +} diff --git a/protob/messages-crypto.proto b/protob/messages-crypto.proto new file mode 100644 index 000000000..ee706a7ce --- /dev/null +++ b/protob/messages-crypto.proto @@ -0,0 +1,120 @@ +syntax = "proto2"; + +// Sugar for easier handling in Java +option java_package = "com.satoshilabs.trezor.lib.protobuf"; +option java_outer_classname = "TrezorMessageCrypto"; + +/** + * Request: Ask device to encrypt or decrypt value of given key + * @next CipheredKeyValue + * @next Failure + */ +message CipherKeyValue { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional string key = 2; // key component of key:value + optional bytes value = 3; // value component of key:value + optional bool encrypt = 4; // are we encrypting (True) or decrypting (False)? + optional bool ask_on_encrypt = 5; // should we ask on encrypt operation? + optional bool ask_on_decrypt = 6; // should we ask on decrypt operation? + optional bytes iv = 7; // initialization vector (will be computed if not set) +} + +/** + * Response: Return ciphered/deciphered value + * @prev CipherKeyValue + */ +message CipheredKeyValue { + optional bytes value = 1; // ciphered/deciphered value +} + +/** +* Structure representing identity data +*/ +message IdentityType { + optional string proto = 1; // proto part of URI + optional string user = 2; // user part of URI + optional string host = 3; // host part of URI + optional string port = 4; // port part of URI + optional string path = 5; // path part of URI + optional uint32 index = 6 [default=0]; // identity index +} + +/** + * Request: Ask device to sign identity + * @next SignedIdentity + * @next Failure + */ +message SignIdentity { + optional IdentityType identity = 1; // identity + optional bytes challenge_hidden = 2; // non-visible challenge + optional string challenge_visual = 3; // challenge shown on display (e.g. date+time) + optional string ecdsa_curve_name = 4; // ECDSA curve name to use +} + +/** + * Response: Device provides signed identity + * @prev SignIdentity + */ +message SignedIdentity { + optional string address = 1; // identity address + optional bytes public_key = 2; // identity public key + optional bytes signature = 3; // signature of the identity data +} + +/** + * Request: Ask device to generate ECDH session key + * @next ECDHSessionKey + * @next Failure + */ +message GetECDHSessionKey { + optional IdentityType identity = 1; // identity + optional bytes peer_public_key = 2; // peer's public key + optional string ecdsa_curve_name = 3; // ECDSA curve name to use +} + +/** + * Response: Device provides ECDH session key + * @prev GetECDHSessionKey + */ +message ECDHSessionKey { + optional bytes session_key = 1; // ECDH session key +} + +/** + * Request: Ask device to commit to CoSi signing + * @next CosiCommitment + * @next Failure + */ +message CosiCommit { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional bytes data = 2; // Data to be signed +} + +/** + * Response: Contains a CoSi commitment + * @prev CosiCommit + */ +message CosiCommitment { + optional bytes commitment = 1; // Commitment + optional bytes pubkey = 2; // Public key +} + +/** + * Request: Ask device to sign using CoSi + * @next CosiSignature + * @next Failure + */ +message CosiSign { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional bytes data = 2; // Data to be signed + optional bytes global_commitment = 3; // Aggregated commitment + optional bytes global_pubkey = 4; // Aggregated public key +} + +/** + * Response: Contains a CoSi signature + * @prev CosiSign + */ +message CosiSignature { + optional bytes signature = 1; // Signature +} diff --git a/protob/messages-debug.proto b/protob/messages-debug.proto new file mode 100644 index 000000000..e34e6c346 --- /dev/null +++ b/protob/messages-debug.proto @@ -0,0 +1,92 @@ +syntax = "proto2"; + +// Sugar for easier handling in Java +option java_package = "com.satoshilabs.trezor.lib.protobuf"; +option java_outer_classname = "TrezorMessageDebug"; + +import "common.proto"; + +/** + * Request: "Press" the button on the device + * @next Success + */ +message DebugLinkDecision { + optional bool yes_no = 1; // true for "Confirm", false for "Cancel" + optional bool up_down = 2; // true for scroll up, false for scroll down + optional string input = 3; // keyboard input +} + +/** + * Request: Computer asks for device state + * @next DebugLinkState + */ +message DebugLinkGetState { +} + +/** + * Response: Device current state + * @prev DebugLinkGetState + */ +message DebugLinkState { + optional bytes layout = 1; // raw buffer of display + optional string pin = 2; // current PIN, blank if PIN is not set/enabled + optional string matrix = 3; // current PIN matrix + optional string mnemonic = 4; // current BIP-39 mnemonic + optional HDNodeType node = 5; // current BIP-32 node + optional bool passphrase_protection = 6; // is node/mnemonic encrypted using passphrase? + optional string reset_word = 7; // word on device display during ResetDevice workflow + optional bytes reset_entropy = 8; // current entropy during ResetDevice workflow + optional string recovery_fake_word = 9; // (fake) word on display during RecoveryDevice workflow + optional uint32 recovery_word_pos = 10; // index of mnemonic word the device is expecting during RecoveryDevice workflow + optional uint32 reset_word_pos = 11; // index of mnemonic word the device is expecting during ResetDevice workflow +} + +/** + * Request: Ask device to restart + */ +message DebugLinkStop { +} + +/** + * Response: Device wants host to log event + */ +message DebugLinkLog { + optional uint32 level = 1; + optional string bucket = 2; + optional string text = 3; +} + +/** + * Request: Read memory from device + * @next DebugLinkMemory + */ +message DebugLinkMemoryRead { + optional uint32 address = 1; + optional uint32 length = 2; +} + +/** + * Response: Device sends memory back + * @prev DebugLinkMemoryRead + */ +message DebugLinkMemory { + optional bytes memory = 1; +} + +/** + * Request: Write memory to device. + * WARNING: Writing to the wrong location can irreparably break the device. + */ +message DebugLinkMemoryWrite { + optional uint32 address = 1; + optional bytes memory = 2; + optional bool flash = 3; +} + +/** + * Request: Erase block of flash on device + * WARNING: Writing to the wrong location can irreparably break the device. + */ +message DebugLinkFlashErase { + optional uint32 sector = 1; +} diff --git a/protob/messages-ethereum.proto b/protob/messages-ethereum.proto new file mode 100644 index 000000000..6f604b31f --- /dev/null +++ b/protob/messages-ethereum.proto @@ -0,0 +1,99 @@ +syntax = "proto2"; + +// Sugar for easier handling in Java +option java_package = "com.satoshilabs.trezor.lib.protobuf"; +option java_outer_classname = "TrezorMessageEthereum"; + +/** + * Request: Ask device for Ethereum address corresponding to address_n path + * @next PassphraseRequest + * @next EthereumAddress + * @next Failure + */ +message EthereumGetAddress { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional bool show_display = 2; // optionally show on display before sending the result +} + +/** + * Response: Contains an Ethereum address derived from device private seed + * @prev EthereumGetAddress + */ +message EthereumAddress { + required bytes address = 1; // Coin address as an Ethereum 160 bit hash +} + +/** + * Request: Ask device to sign transaction + * All fields are optional from the protocol's point of view. Each field defaults to value `0` if missing. + * Note: the first at most 1024 bytes of data MUST be transmitted as part of this message. + * @next PassphraseRequest + * @next PinMatrixRequest + * @next EthereumTxRequest + * @next Failure + */ +message EthereumSignTx { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional bytes nonce = 2; // <=256 bit unsigned big endian + optional bytes gas_price = 3; // <=256 bit unsigned big endian (in wei) + optional bytes gas_limit = 4; // <=256 bit unsigned big endian + optional bytes to = 5; // 160 bit address hash + optional bytes value = 6; // <=256 bit unsigned big endian (in wei) + optional bytes data_initial_chunk = 7; // The initial data chunk (<= 1024 bytes) + optional uint32 data_length = 8; // Length of transaction payload + optional uint32 chain_id = 9; // Chain Id for EIP 155 + optional uint32 tx_type = 10; // (only for Wanchain) +} + +/** + * Response: Device asks for more data from transaction payload, or returns the signature. + * If data_length is set, device awaits that many more bytes of payload. + * Otherwise, the signature_* fields contain the computed transaction signature. All three fields will be present. + * @prev EthereumSignTx + * @next EthereumTxAck + */ +message EthereumTxRequest { + optional uint32 data_length = 1; // Number of bytes being requested (<= 1024) + optional uint32 signature_v = 2; // Computed signature (recovery parameter, limited to 27 or 28) + optional bytes signature_r = 3; // Computed signature R component (256 bit) + optional bytes signature_s = 4; // Computed signature S component (256 bit) +} + +/** + * Request: Transaction payload data. + * @prev EthereumTxRequest + * @next EthereumTxRequest + */ +message EthereumTxAck { + optional bytes data_chunk = 1; // Bytes from transaction payload (<= 1024 bytes) +} + +/** + * Request: Ask device to sign message + * @next EthereumMessageSignature + * @next Failure + */ +message EthereumSignMessage { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + required bytes message = 2; // message to be signed +} + +/** + * Request: Ask device to verify message + * @next Success + * @next Failure + */ +message EthereumVerifyMessage { + optional bytes address = 1; // address to verify + optional bytes signature = 2; // signature to verify + optional bytes message = 3; // message to verify +} + +/** + * Response: Signed message + * @prev EthereumSignMessage + */ +message EthereumMessageSignature { + optional bytes address = 1; // address used to sign the message + optional bytes signature = 2; // signature of the message +} diff --git a/protob/messages-lisk.proto b/protob/messages-lisk.proto new file mode 100644 index 000000000..386cf2e65 --- /dev/null +++ b/protob/messages-lisk.proto @@ -0,0 +1,145 @@ +syntax = "proto2"; + +// Sugar for easier handling in Java +option java_package = "com.satoshilabs.trezor.lib.protobuf"; +option java_outer_classname = "TrezorMessageLisk"; + +/** + * Request: Ask device for Lisk public key corresponding to address_n path + * @next LiskPublicKey +*/ +message LiskGetPublicKey { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional bool show_display = 2; // Optionally show on display before sending the result +} + +/** + * Response: Contains Lisk public key derived from device private seed + * @prev LiskGetPublicKey +*/ +message LiskPublicKey { + optional bytes public_key = 1; // Lisk public key +} + +/** + * Request: Ask device for Lisk address corresponding to address_n path + * @next PassphraseRequest + * @next LiskAddress + * @next Failure + */ +message LiskGetAddress { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional bool show_display = 2; // Optionally show on display before sending the result +} + +/** + * Response: Contains Lisk address derived from device private seed + * @prev LiskGetAddress + */ +message LiskAddress { + optional string address = 1; // Lisk address +} + +/** + * Request: Ask device to sign Lisk transaction + * @next LiskSignedTx + */ +message LiskSignTx { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional LiskTransactionCommon transaction = 2; // Lisk transaction structure + /** + * Structure representing the common part for Lisk transactions + */ + message LiskTransactionCommon { + optional LiskTransactionType type = 1; + optional uint64 amount = 2 [default=0]; + optional uint64 fee = 3; + optional string recipient_id = 4; + optional bytes sender_public_key = 5; + optional bytes requester_public_key = 6; + optional bytes signature = 7; + optional uint32 timestamp = 8; + optional LiskTransactionAsset asset = 9; + /** + * Type of Lisk transaction + */ + enum LiskTransactionType { + Transfer = 0; + RegisterSecondPassphrase = 1; + RegisterDelegate = 2; + CastVotes = 3; + RegisterMultisignatureAccount = 4; + CreateDapp = 5; + TransferIntoDapp = 6; + TransferOutOfDapp = 7; + } + /** + * Structure representing the asset field in the Lisk transaction + */ + message LiskTransactionAsset { + optional LiskSignatureType signature = 1; + optional LiskDelegateType delegate = 2; + repeated string votes = 3; + optional LiskMultisignatureType multisignature = 4; + optional string data = 5; + /** + * Structure representing the signature field in the Lisk transaction asset field + */ + message LiskSignatureType { + optional bytes public_key = 1; + } + /** + * Structure representing the delegate field in the Lisk transaction asset field + */ + message LiskDelegateType { + optional string username = 1; + } + /** + * Structure representing the multisignature field in the Lisk transaction asset field + */ + message LiskMultisignatureType { + optional uint32 min = 1; + optional uint32 life_time = 2; + repeated string keys_group = 3; + } + } + } +} + +/** +* Response: Contains Lisk transaction signature +* @prev LiskSignTx +*/ +message LiskSignedTx { + optional bytes signature = 1; +} + +/** +* Request: Ask device to sign message +* @next LiskMessageSignature +* @next Failure +*/ +message LiskSignMessage { + repeated uint32 address_n = 1; + optional bytes message = 2; +} + +/** +* Response: Signed message +* @prev LiskSignMessage +*/ +message LiskMessageSignature { + optional bytes public_key = 1; + optional bytes signature = 2; +} + +/** +* Request: Ask device to verify message +* @next Success +* @next Failure +*/ +message LiskVerifyMessage { + optional bytes public_key = 1; + optional bytes signature = 2; + optional bytes message = 3; +} diff --git a/protob/messages-management.proto b/protob/messages-management.proto new file mode 100644 index 000000000..d43bdfee8 --- /dev/null +++ b/protob/messages-management.proto @@ -0,0 +1,400 @@ +syntax = "proto2"; + +// Sugar for easier handling in Java +option java_package = "com.satoshilabs.trezor.lib.protobuf"; +option java_outer_classname = "TrezorMessageManagement"; + +import "common.proto"; + +/** + * Request: Reset device to default state and ask for device details + * @next Features + */ +message Initialize { + optional bytes state = 1; // assumed device state, clear session if set and different + optional bool skip_passphrase = 2; // this session should always assume empty passphrase +} + +/** + * Request: Ask for device details (no device reset) + * @next Features + */ +message GetFeatures { +} + +/** + * Response: Reports various information about the device + * @prev Initialize + * @prev GetFeatures + */ +message Features { + optional string vendor = 1; // name of the manufacturer, e.g. "trezor.io" + optional uint32 major_version = 2; // major version of the firmware/bootloader, e.g. 1 + optional uint32 minor_version = 3; // minor version of the firmware/bootloader, e.g. 0 + optional uint32 patch_version = 4; // patch version of the firmware/bootloader, e.g. 0 + optional bool bootloader_mode = 5; // is device in bootloader mode? + optional string device_id = 6; // device's unique identifier + optional bool pin_protection = 7; // is device protected by PIN? + optional bool passphrase_protection = 8; // is node/mnemonic encrypted using passphrase? + optional string language = 9; // device language + optional string label = 10; // device description label + optional bool initialized = 12; // does device contain seed? + optional bytes revision = 13; // SCM revision of firmware + optional bytes bootloader_hash = 14; // hash of the bootloader + optional bool imported = 15; // was storage imported from an external source? + optional bool pin_cached = 16; // is PIN already cached in session? + optional bool passphrase_cached = 17; // is passphrase already cached in session? + optional bool firmware_present = 18; // is valid firmware loaded? + optional bool needs_backup = 19; // does storage need backup? (equals to Storage.needs_backup) + optional uint32 flags = 20; // device flags (equals to Storage.flags) + optional string model = 21; // device hardware model + optional uint32 fw_major = 22; // reported firmware version if in bootloader mode + optional uint32 fw_minor = 23; // reported firmware version if in bootloader mode + optional uint32 fw_patch = 24; // reported firmware version if in bootloader mode + optional string fw_vendor = 25; // reported firmware vendor if in bootloader mode + optional bytes fw_vendor_keys = 26; // reported firmware vendor keys (their hash) + optional bool unfinished_backup = 27; // report unfinished backup (equals to Storage.unfinished_backup) +} + +/** + * Request: clear session (removes cached PIN, passphrase, etc). + * @next Success + */ +message ClearSession { +} + +/** + * Request: change language and/or label of the device + * @next Success + * @next Failure + * @next ButtonRequest + * @next PinMatrixRequest + */ +message ApplySettings { + optional string language = 1; + optional string label = 2; + optional bool use_passphrase = 3; + optional bytes homescreen = 4; + optional PassphraseSourceType passphrase_source = 5; + optional uint32 auto_lock_delay_ms = 6; + /** + * Structure representing passphrase source + */ + enum PassphraseSourceType { + ASK = 0; + DEVICE = 1; + HOST = 2; + } +} + +/** + * Request: set flags of the device + * @next Success + * @next Failure + */ +message ApplyFlags { + optional uint32 flags = 1; // bitmask, can only set bits, not unset +} + +/** + * Request: Starts workflow for setting/changing/removing the PIN + * @next ButtonRequest + * @next PinMatrixRequest + */ +message ChangePin { + optional bool remove = 1; // is PIN removal requested? +} + +/** + * Request: Test if the device is alive, device sends back the message in Success response + * @next Success + */ +message Ping { + optional string message = 1; // message to send back in Success message + optional bool button_protection = 2; // ask for button press + optional bool pin_protection = 3; // ask for PIN if set in device + optional bool passphrase_protection = 4; // ask for passphrase if set in device +} + +/** + * Response: Success of the previous request + */ +message Success { + optional string message = 1; // human readable description of action or request-specific payload +} + +/** +* Response: Failure of the previous request +*/ +message Failure { + optional FailureType code = 1; // computer-readable definition of the error state + optional string message = 2; // human-readable message of the error state + enum FailureType { + Failure_UnexpectedMessage = 1; + Failure_ButtonExpected = 2; + Failure_DataError = 3; + Failure_ActionCancelled = 4; + Failure_PinExpected = 5; + Failure_PinCancelled = 6; + Failure_PinInvalid = 7; + Failure_InvalidSignature = 8; + Failure_ProcessError = 9; + Failure_NotEnoughFunds = 10; + Failure_NotInitialized = 11; + Failure_PinMismatch = 12; + Failure_FirmwareError = 99; + } +} + +/** + * Response: Device is waiting for HW button press. + * @next ButtonAck + * @next Cancel + */ +message ButtonRequest { + optional ButtonRequestType code = 1; + optional string data = 2; + /** + * Type of button request + */ + enum ButtonRequestType { + ButtonRequest_Other = 1; + ButtonRequest_FeeOverThreshold = 2; + ButtonRequest_ConfirmOutput = 3; + ButtonRequest_ResetDevice = 4; + ButtonRequest_ConfirmWord = 5; + ButtonRequest_WipeDevice = 6; + ButtonRequest_ProtectCall = 7; + ButtonRequest_SignTx = 8; + ButtonRequest_FirmwareCheck = 9; + ButtonRequest_Address = 10; + ButtonRequest_PublicKey = 11; + ButtonRequest_MnemonicWordCount = 12; + ButtonRequest_MnemonicInput = 13; + ButtonRequest_PassphraseType = 14; + } +} + +/** + * Request: Computer agrees to wait for HW button press + * @prev ButtonRequest + */ +message ButtonAck { +} + +/** + * Response: Device is asking computer to show PIN matrix and awaits PIN encoded using this matrix scheme + * @next PinMatrixAck + * @next Cancel + */ +message PinMatrixRequest { + optional PinMatrixRequestType type = 1; + /** + * Type of PIN request + */ + enum PinMatrixRequestType { + PinMatrixRequestType_Current = 1; + PinMatrixRequestType_NewFirst = 2; + PinMatrixRequestType_NewSecond = 3; + } +} + +/** + * Request: Computer responds with encoded PIN + * @prev PinMatrixRequest + */ +message PinMatrixAck { + required string pin = 1; // matrix encoded PIN entered by user +} + +/** + * Request: Abort last operation that required user interaction + * @prev ButtonRequest + * @prev PinMatrixRequest + * @prev PassphraseRequest + */ +message Cancel { +} + +/** + * Response: Device awaits encryption passphrase + * @next PassphraseAck + * @next Cancel + */ +message PassphraseRequest { + optional bool on_device = 1; // passphrase is being entered on the device +} + +/** + * Request: Send passphrase back + * @prev PassphraseRequest + * @next PassphraseStateRequest + */ +message PassphraseAck { + optional string passphrase = 1; + optional bytes state = 2; // expected device state +} + +/** + * @prev PassphraseAck + * @next PassphraseStateAck + */ +message PassphraseStateRequest { + optional bytes state = 1; // actual device state +} + +/** + * @prev PassphraseStateRequest + */ +message PassphraseStateAck { +} + +/** + * Request: Request a sample of random data generated by hardware RNG. May be used for testing. + * @next ButtonRequest + * @next Entropy + * @next Failure + */ +message GetEntropy { + required uint32 size = 1; // size of requested entropy +} + +/** + * Response: Reply with random data generated by internal RNG + * @prev GetEntropy + */ +message Entropy { + required bytes entropy = 1; // chunk of random generated bytes +} + +/** + * Request: Request device to wipe all sensitive data and settings + * @next ButtonRequest + */ +message WipeDevice { +} + +/** + * Request: Load seed and related internal settings from the computer + * @next ButtonRequest + * @next Success + * @next Failure + */ +message LoadDevice { + optional string mnemonic = 1; // seed encoded as BIP-39 mnemonic (12, 18 or 24 words) + optional HDNodeType node = 2; // BIP-32 node + optional string pin = 3; // set PIN protection + optional bool passphrase_protection = 4; // enable master node encryption using passphrase + optional string language = 5 [default='english']; // device language + optional string label = 6; // device label + optional bool skip_checksum = 7; // do not test mnemonic for valid BIP-39 checksum + optional uint32 u2f_counter = 8; // U2F counter +} + +/** + * Request: Ask device to do initialization involving user interaction + * @next EntropyRequest + * @next Failure + */ +message ResetDevice { + optional bool display_random = 1; // display entropy generated by the device before asking for additional entropy + optional uint32 strength = 2 [default=256]; // strength of seed in bits + optional bool passphrase_protection = 3; // enable master node encryption using passphrase + optional bool pin_protection = 4; // enable PIN protection + optional string language = 5 [default='english']; // device language + optional string label = 6; // device label + optional uint32 u2f_counter = 7; // U2F counter + optional bool skip_backup = 8; // postpone seed backup to BackupDevice workflow +} + +/** + * Request: Perform backup of the device seed if not backed up using ResetDevice + * @next ButtonRequest + */ +message BackupDevice { +} + +/** + * Response: Ask for additional entropy from host computer + * @prev ResetDevice + * @next EntropyAck + */ +message EntropyRequest { +} + +/** + * Request: Provide additional entropy for seed generation function + * @prev EntropyRequest + * @next ButtonRequest + */ +message EntropyAck { + optional bytes entropy = 1; // 256 bits (32 bytes) of random data +} + +/** + * Request: Start recovery workflow asking user for specific words of mnemonic + * Used to recovery device safely even on untrusted computer. + * @next WordRequest + */ +message RecoveryDevice { + optional uint32 word_count = 1; // number of words in BIP-39 mnemonic + optional bool passphrase_protection = 2; // enable master node encryption using passphrase + optional bool pin_protection = 3; // enable PIN protection + optional string language = 4 [default='english']; // device language + optional string label = 5; // device label + optional bool enforce_wordlist = 6; // enforce BIP-39 wordlist during the process + // 7 reserved for unused recovery method + optional RecoveryDeviceType type = 8; // supported recovery type + optional uint32 u2f_counter = 9; // U2F counter + optional bool dry_run = 10; // perform dry-run recovery workflow (for safe mnemonic validation) + /** + * Type of recovery procedure. These should be used as bitmask, e.g., + * `RecoveryDeviceType_ScrambledWords | RecoveryDeviceType_Matrix` + * listing every method supported by the host computer. + * + * Note that ScrambledWords must be supported by every implementation + * for backward compatibility; there is no way to not support it. + */ + enum RecoveryDeviceType { + // use powers of two when extending this field + RecoveryDeviceType_ScrambledWords = 0; // words in scrambled order + RecoveryDeviceType_Matrix = 1; // matrix recovery type + } +} + +/** + * Response: Device is waiting for user to enter word of the mnemonic + * Its position is shown only on device's internal display. + * @prev RecoveryDevice + * @prev WordAck + */ +message WordRequest { + optional WordRequestType type = 1; + /** + * Type of Recovery Word request + */ + enum WordRequestType { + WordRequestType_Plain = 0; + WordRequestType_Matrix9 = 1; + WordRequestType_Matrix6 = 2; + } +} + +/** + * Request: Computer replies with word from the mnemonic + * @prev WordRequest + * @next WordRequest + * @next Success + * @next Failure + */ +message WordAck { + required string word = 1; // one word of mnemonic on asked position +} + +/** + * Request: Set U2F counter + * @next Success + */ +message SetU2FCounter { + optional uint32 u2f_counter = 1; // counter +} diff --git a/protob/messages-nem.proto b/protob/messages-nem.proto new file mode 100644 index 000000000..92002af03 --- /dev/null +++ b/protob/messages-nem.proto @@ -0,0 +1,195 @@ +syntax = "proto2"; + +// Sugar for easier handling in Java +option java_package = "com.satoshilabs.trezor.lib.protobuf"; +option java_outer_classname = "TrezorMessageNem"; + +/** + * Request: Ask device for NEM address corresponding to address_n path + * @next PassphraseRequest + * @next NEMAddress + * @next Failure + */ +message NEMGetAddress { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional uint32 network = 2; // Network ID (0x68 = Mainnet, 0x98 = Testnet, 0x60 = Mijin) + optional bool show_display = 3; // Optionally show on display before sending the result +} + +/** + * Response: Contains NEM address derived from device private seed + * @prev NEMGetAddress + */ +message NEMAddress { + required string address = 1; // NEM address in Base32 encoding +} + +/** + * Request: Ask device to sign transaction + * @next NEMSignedTx + * @next Failure + */ +message NEMSignTx { + optional NEMTransactionCommon transaction = 1; // Common part of transaction + optional NEMTransactionCommon multisig = 2; // Common part of inner transaction for multisig transactions + optional NEMTransfer transfer = 3; // Transfer transaction part + optional bool cosigning = 4; // Whether cosigning or initiating the multisig transaction + optional NEMProvisionNamespace provision_namespace = 5; // Provision namespace part + optional NEMMosaicCreation mosaic_creation = 6; // Mosaic definition creation part + optional NEMMosaicSupplyChange supply_change = 7; // Mosaic supply change part + optional NEMAggregateModification aggregate_modification = 8; // Aggregate modification part + optional NEMImportanceTransfer importance_transfer = 9; // Importance transfer part + /** + * Structure representing the common part for NEM transactions + */ + message NEMTransactionCommon { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional uint32 network = 2; // Network ID (0x68 = Mainnet, 0x98 = Testnet, 0x60 = Mijin) + optional uint32 timestamp = 3; // Number of seconds elapsed since the creation of the nemesis block + optional uint64 fee = 4; // Fee for the transaction + optional uint32 deadline = 5; // Deadline of the transaction + optional bytes signer = 6; // Public key of the account (for multisig transactions) + } + /** + * Structure representing the transfer transaction part for NEM transactions + */ + message NEMTransfer { + optional string recipient = 1; // Address of the recipient + optional uint64 amount = 2; // Amount of micro NEM that is transferred + optional bytes payload = 3; // Actual message data (unencrypted) + optional bytes public_key = 4; // Public key of the recipient (for encrypted payloads) + repeated NEMMosaic mosaics = 5; // Attached mosaics + /** + * Structure representing the mosaic attachment for NEM transfer transactions + */ + message NEMMosaic { + optional string namespace = 1; // Fully qualified name of the namespace + optional string mosaic = 2; // Name of the mosaic definition + optional uint64 quantity = 3; // Mosaic quantity, always given in smallest units + } + } + /** + * Structure representing the provision namespace part for NEM transactions + */ + message NEMProvisionNamespace { + optional string namespace = 1; // New part concatenated to the parent + optional string parent = 2; // Parent namespace (for child namespaces) + optional string sink = 3; // Rental fee sink address + optional uint64 fee = 4; // Rental fee + } + /** + * Structure representing the mosaic definition creation part for NEM transactions + */ + message NEMMosaicCreation { + optional NEMMosaicDefinition definition = 1; // Mosaic definition + optional string sink = 2; // Creation fee sink address + optional uint64 fee = 3; // Creation fee + /** + * Structure representing a mosaic definition + */ + message NEMMosaicDefinition { + optional string name = 1; // User-friendly name of the mosaic (for whitelisted mosaics) + optional string ticker = 2; // Ticker of the mosaic (for whitelisted mosaics) + optional string namespace = 3; // Fully qualified name of the namespace + optional string mosaic = 4; // Name of the mosaic definition + optional uint32 divisibility = 5; // Number of decimal places that a mosaic can be divided into + optional NEMMosaicLevy levy = 6; // Levy type + optional uint64 fee = 7; // Levy fee (interpretation depends on levy type) + optional string levy_address = 8; // Levy address + optional string levy_namespace = 9; // Fully qualified name of the namespace of the levy mosaic + optional string levy_mosaic = 10; // Name of the levy mosaic + optional uint64 supply = 11; // Initial supply to create, always given in entire units + optional bool mutable_supply = 12; // Mutable supply + optional bool transferable = 13; // Mosaic allows transfers among accounts other than the creator + optional string description = 14; // Mosaic description + repeated uint32 networks = 15; // Networks that the mosaic is valid on (for whitelisted mosaics) + /** + * Type of levy which will be used for mosaic + */ + enum NEMMosaicLevy { + MosaicLevy_Absolute = 1; + MosaicLevy_Percentile = 2; + } + } + } + /** + * Structure representing the mosaic supply change part for NEM transactions + */ + message NEMMosaicSupplyChange { + optional string namespace = 1; // Fully qualified name of the namespace + optional string mosaic = 2; // Name of the mosaic definition + optional NEMSupplyChangeType type = 3; // Type of supply change + optional uint64 delta = 4; // Supply delta + /** + * Type of supply change which will be applied to mosaic + */ + enum NEMSupplyChangeType { + SupplyChange_Increase = 1; + SupplyChange_Decrease = 2; + } + } + /** + * Structure representing the aggregate modification part for NEM transactions + */ + message NEMAggregateModification { + repeated NEMCosignatoryModification modifications = 1; // Cosignatory modifications + optional sint32 relative_change = 2; // Relative change of the minimum cosignatories + /** + * Structure representing the cosignatory modification for aggregate modification transactions + */ + message NEMCosignatoryModification { + optional NEMModificationType type = 1; // Type of cosignatory modification + optional bytes public_key = 2; // Public key of the cosignatory + /** + * Type of cosignatory modification + */ + enum NEMModificationType { + CosignatoryModification_Add = 1; + CosignatoryModification_Delete = 2; + } + } + } + /** + * Structure representing the importance transfer part for NEM transactions + */ + message NEMImportanceTransfer { + optional NEMImportanceTransferMode mode = 1; // Mode of importance transfer + optional bytes public_key = 2; // Public key of the remote account + /** + * Mode of importance transfer + */ + enum NEMImportanceTransferMode { + ImportanceTransfer_Activate = 1; + ImportanceTransfer_Deactivate = 2; + } + } +} + +/** + * Response: Contains NEM transaction data and signature + * @prev NEMSignTx + */ +message NEMSignedTx { + optional bytes data = 1; // Transaction data + optional bytes signature = 2; // Signature for the transaction +} + +/** + * Request: Ask device to decrypt NEM transaction payload + * @next NEMDecryptedMessage + * @next Failure + */ +message NEMDecryptMessage { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional uint32 network = 2; // Network ID (0x68 = Mainnet, 0x98 = Testnet, 0x60 = Mijin) + optional bytes public_key = 3; // Public key of the other party + optional bytes payload = 4; // Actual message data (encrypted) +} + +/** + * Response: Contains decrypted NEM transaction payload + * @prev NEMDecryptMessage + */ +message NEMDecryptedMessage { + optional bytes payload = 1; // Actual message data (unencrypted) +} diff --git a/protob/messages-stellar.proto b/protob/messages-stellar.proto new file mode 100644 index 000000000..3ec5635d4 --- /dev/null +++ b/protob/messages-stellar.proto @@ -0,0 +1,258 @@ +syntax = "proto2"; + +// Sugar for easier handling in Java +option java_package = "com.satoshilabs.trezor.lib.protobuf"; +option java_outer_classname = "TrezorMessageStellar"; + +/** + * Describes a Stellar asset + */ +message StellarAssetType { + optional uint32 type = 1; // 0 = native asset (XLM), 1 = alphanum 4, 2 = alphanum 12 + optional string code = 2; // for non-native assets, string describing the code + optional string issuer = 3; // issuing address +} + +/** + * Request: Public key at the specified index + * @next StellarPublicKey + */ +message StellarGetPublicKey { + repeated uint32 address_n = 1; // BIP-32 path. For compatibility with other wallets, must be m/44'/148'/index' + optional bool show_display = 2; // optionally show on display before sending the result +} + +/** + * Response: Public key for the given index + * @prev StellarGetPublicKey + */ +message StellarPublicKey { + optional bytes public_key = 1; // Raw bytes of the public key (no version or checksum) +} + +/** + * Request: Address at the specified index + * @next StellarAddress + */ +message StellarGetAddress { + repeated uint32 address_n = 1; // BIP-32 path. For compatibility with other wallets, must be m/44'/148'/index' + optional bool show_display = 2; // optionally show on display before sending the result +} + +/** + * Response: Address for the given index + * @prev StellarGetAddress + */ +message StellarAddress { + optional string address = 1; // Address in Stellar format (base32 of a pubkey with checksum) +} + +/** + * Request: ask device to sign Stellar transaction + * @next StellarTxOpRequest + */ +message StellarSignTx { + optional uint32 protocol_version = 1; // version of the protofbuf messaging protocol the client is using + repeated uint32 address_n = 2; // BIP-32 path. For compatibility with other wallets, must be m/44'/148'/index' + optional string network_passphrase = 3; // passphrase for signing messages on the destination network + optional string source_account = 4; // source account address + optional uint32 fee = 5; // Fee (in stroops) for the transaction + optional uint64 sequence_number = 6; // transaction sequence number + optional uint32 timebounds_start = 8; // unix timestamp (client must truncate this to 32 bytes) + optional uint32 timebounds_end = 9; // unix timestamp (client must truncate this to 32 bytes) + optional uint32 memo_type = 10; // 0 = none, 1 = text, 2 = id, 3 = hash, 4 = return + optional string memo_text = 11; // up to 28 characters (4 bytes are for length) + optional uint64 memo_id = 12; // 8-byte uint64 + optional bytes memo_hash = 13; // 32 bytes representing a hash + optional uint32 num_operations = 14; // number of operations in this transaction +} + +/** + * Response: device is ready for client to send the next operation + * @prev StellarSignTx + * @next StellarPaymentOp + * @next StellarCreateAccountOp + * @next StellarPathPaymentOp + * @next StellarManageOfferOp + * @next StellarCreatePassiveOfferOp + * @next StellarSetOptionsOp + * @next StellarChangeTrustOp + * @next StellarAllowTrustOp + * @next StellarAccountMergeOp + * @next StellarManageDataOp + * @next StellarBumpSequenceOp + */ +message StellarTxOpRequest { +} + +/** + * Request: ask device to confirm this operation type + * @prev StellarTxOpRequest + * @next StellarTxOpRequest + * @next StellarSignedTx + */ +message StellarPaymentOp { + optional string source_account = 1; // (optional) source account address + optional string destination_account = 2; // destination account address + optional StellarAssetType asset = 3; // asset involved in the operation + optional sint64 amount = 4; // amount of the given asset to pay +} + +/** + * Request: ask device to confirm this operation type + * @prev StellarTxOpRequest + * @next StellarTxOpRequest + * @next StellarSignedTx + */ +message StellarCreateAccountOp { + optional string source_account = 1; // (optional) source account address + optional string new_account = 2; // account address to create + optional sint64 starting_balance = 3; // initial starting balance for the new account +} + +/** + * Request: ask device to confirm this operation type + * @prev StellarTxOpRequest + * @next StellarTxOpRequest + * @next StellarSignedTx + */ +message StellarPathPaymentOp { + optional string source_account = 1; // (optional) source address + optional StellarAssetType send_asset = 2; + optional sint64 send_max = 3; + optional string destination_account = 4; + optional StellarAssetType destination_asset = 5; + optional sint64 destination_amount = 6; + repeated StellarAssetType paths = 7; +} + +/** + * Request: ask device to confirm this operation type + * @prev StellarTxOpRequest + * @next StellarTxOpRequest + * @next StellarSignedTx + */ +message StellarManageOfferOp { + optional string source_account = 1; // (optional) source account address + optional StellarAssetType selling_asset = 2; + optional StellarAssetType buying_asset = 3; + optional sint64 amount = 4; + optional uint32 price_n = 5; // Price numerator + optional uint32 price_d = 6; // Price denominator + optional uint64 offer_id = 7; // Offer ID for updating an existing offer +} + +/** + * Request: ask device to confirm this operation type + * @prev StellarTxOpRequest + * @next StellarTxOpRequest + * @next StellarSignedTx + */ +message StellarCreatePassiveOfferOp { + optional string source_account = 1; // (optional) source account address + optional StellarAssetType selling_asset = 2; + optional StellarAssetType buying_asset = 3; + optional sint64 amount = 4; + optional uint32 price_n = 5; // Price numerator + optional uint32 price_d = 6; // Price denominator +} + +/** + * Request: ask device to confirm this operation type + * @prev StellarTxOpRequest + * @next StellarTxOpRequest + * @next StellarSignedTx + */ +message StellarSetOptionsOp { + optional string source_account = 1; // (optional) source account address + optional string inflation_destination_account = 2; // (optional) inflation destination address + optional uint32 clear_flags = 3; + optional uint32 set_flags = 4; + optional uint32 master_weight = 5; + optional uint32 low_threshold = 6; + optional uint32 medium_threshold = 7; + optional uint32 high_threshold = 8; + optional string home_domain = 9; + optional uint32 signer_type = 10; + optional bytes signer_key = 11; + optional uint32 signer_weight = 12; +} + +/** + * Request: ask device to confirm this operation type + * @prev StellarTxOpRequest + * @next StellarTxOpRequest + * @next StellarSignedTx + */ +message StellarChangeTrustOp { + optional string source_account = 1; // (optional) source account address + optional StellarAssetType asset = 2; + optional uint64 limit = 3; +} + +/** + * Request: ask device to confirm this operation type + * @prev StellarTxOpRequest + * @next StellarTxOpRequest + * @next StellarSignedTx + */ +message StellarAllowTrustOp { + optional string source_account = 1; // (optional) source account address + optional string trusted_account = 2; // The account being allowed to hold the asset + optional uint32 asset_type = 3; // 1 = 4-character, 2 = 12-character + optional string asset_code = 4; // human-readable asset code + optional uint32 is_authorized = 5; +} + +/** + * Request: ask device to confirm this operation type + * @prev StellarTxOpRequest + * @next StellarTxOpRequest + * @next StellarSignedTx + */ +message StellarAccountMergeOp { + optional string source_account = 1; // (optional) source account address + optional string destination_account = 2; // destination account address +} + +/** + * Request: ask device to confirm this operation type + * @prev StellarTxOpRequest + * @next StellarTxOpRequest + * @next StellarSignedTx + */ +message StellarManageDataOp { + optional string source_account = 1; // (optional) source account address + optional string key = 2; + optional bytes value = 3; // 64 bytes of arbitrary data +} + +/** + * Request: ask device to confirm this operation type + * @prev StellarTxOpRequest + * @next StellarTxOpRequest + * @next StellarSignedTx + */ +message StellarBumpSequenceOp { + optional string source_account = 1; // (optional) source account address + optional uint64 bump_to = 2; // new sequence number +} + +/** + * Response: signature for transaction + * @prev StellarPaymentOp + * @prev StellarCreateAccountOp + * @prev StellarPathPaymentOp + * @prev StellarManageOfferOp + * @prev StellarCreatePassiveOfferOp + * @prev StellarSetOptionsOp + * @prev StellarChangeTrustOp + * @prev StellarAllowTrustOp + * @prev StellarAccountMergeOp + * @prev StellarManageDataOp + * @prev StellarBumpSequenceOp + */ +message StellarSignedTx { + optional bytes public_key = 1; // public key for the private key used to sign data + optional bytes signature = 2; // signature suitable for sending to the Stellar network +} diff --git a/protob/messages-tezos.proto b/protob/messages-tezos.proto new file mode 100644 index 000000000..ce66bff2e --- /dev/null +++ b/protob/messages-tezos.proto @@ -0,0 +1,122 @@ +syntax = "proto2"; + +// Sugar for easier handling in Java +option java_package = "com.satoshilabs.trezor.lib.protobuf"; +option java_outer_classname = "TrezorMessageTezos"; + +/** + * Request: Ask device for Tezos address corresponding to address_n path + * @next PassphraseRequest + * @next TezosAddress + * @next Failure + */ +message TezosGetAddress { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional bool show_display = 2; // optionally show on display before sending the result +} + +/** + * Response: Contains Tezos address derived from device private seed + * @prev TezosGetAddress + */ +message TezosAddress { + optional string address = 1; // Coin address in Base58 encoding +} + +/** + * Request: Ask device to sign Tezos transaction + * @next TezosSignedTx + */ +message TezosSignTx { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional TezosOperationCommon operation = 2; // Tezos operation structure + optional TezosTransactionType transaction = 3; // Tezos transaction part + optional TezosOriginationType origination = 4; // Tezos origination part + optional TezosDelegationType delegation = 5; // Tezos delegation part + /* + * Tezos contract ID + */ + message TezosContractID { + optional TezosContractType tag = 1; + optional bytes hash = 2; // Implicit = 21B, originated = 20B + 1B padding + /* + * Type of Tezos Contract type + */ + enum TezosContractType { + Implicit = 0; + Originated = 1; + } + } + /* + * Structure representing the common part for Tezos operations + */ + message TezosOperationCommon { + optional bytes branch = 1; + optional TezosOperationType tag = 2; + optional TezosContractID source = 3; + optional uint64 fee = 4; + optional uint64 counter = 5; + optional uint64 gas_limit = 6; + optional uint64 storage_limit = 7; + /* + * Type of Tezos operation + */ + enum TezosOperationType { + Transaction = 8; + Origination = 9; + Delegation = 10; + } + } + /* + * Structure representing additional information for transaction + */ + message TezosTransactionType { + optional uint64 amount = 1; + optional TezosContractID destination = 2; + optional bytes parameters = 3; + } + /* + * Structure representing additional information for origination + */ + message TezosOriginationType { + optional bytes manager_pubkey = 1; + optional uint64 balance = 2; + optional bool spendable = 3; + optional bool delegatable = 4; + optional bytes delegate = 5; // 1B tag + 20B public key hash + optional bytes script = 6; + } + /* + * Structure representing additional information for delegation + */ + message TezosDelegationType { + optional bytes delegate = 1; // 1B tag + 20B public key hash + } +} + +/** +* Response: Contains Tezos transaction signature +* @prev TezosSignTx +*/ +message TezosSignedTx { + optional bytes signature = 1; // Tezos transaction signature + optional bytes sig_op_contents = 2; // Signed operation contents + optional string operation_hash = 3; // b58 check encoded blake2b hashed operation contents +} + +/** + * Request: Ask device for Tezos public key corresponding to address_n path + * @next TezosPublicKey + */ +message TezosGetPublicKey { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional bool show_display = 2; // Optionally show on display before sending the result +} + +/** + * Response: Contains Tezos public key derived from device private seed + * @prev TezosGetPublicKey +*/ +message TezosPublicKey { + optional bytes public_key = 1; // Tezos public key +} diff --git a/protob/messages.proto b/protob/messages.proto index 627c81607..8f15182c3 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -14,2210 +14,162 @@ import "google/protobuf/descriptor.proto"; * Options for specifying message direction and type of wire (normal/debug) */ extend google.protobuf.EnumValueOptions { - optional bool wire_in = 50002; // message can be transmitted via wire from PC to TREZOR - optional bool wire_out = 50003; // message can be transmitted via wire from TREZOR to PC - optional bool wire_debug_in = 50004; // message can be transmitted via debug wire from PC to TREZOR - optional bool wire_debug_out = 50005; // message can be transmitted via debug wire from TREZOR to PC - optional bool wire_tiny = 50006; // message is handled by TREZOR when the USB stack is in tiny mode - optional bool wire_bootloader = 50007; // message is only handled by TREZOR Bootloader - optional bool wire_no_fsm = 50008; // message is not handled by TREZOR unless the USB stack is in tiny mode + optional bool wire_in = 50002; // message can be transmitted via wire from PC to TREZOR + optional bool wire_out = 50003; // message can be transmitted via wire from TREZOR to PC + optional bool wire_debug_in = 50004; // message can be transmitted via debug wire from PC to TREZOR + optional bool wire_debug_out = 50005; // message can be transmitted via debug wire from TREZOR to PC + optional bool wire_tiny = 50006; // message is handled by TREZOR when the USB stack is in tiny mode + optional bool wire_bootloader = 50007; // message is only handled by TREZOR Bootloader + optional bool wire_no_fsm = 50008; // message is not handled by TREZOR unless the USB stack is in tiny mode } /** - * Type of failures returned by Failure message - * @used_in Failure - */ -enum FailureType { - Failure_UnexpectedMessage = 1; - Failure_ButtonExpected = 2; - Failure_DataError = 3; - Failure_ActionCancelled = 4; - Failure_PinExpected = 5; - Failure_PinCancelled = 6; - Failure_PinInvalid = 7; - Failure_InvalidSignature = 8; - Failure_ProcessError = 9; - Failure_NotEnoughFunds = 10; - Failure_NotInitialized = 11; - Failure_PinMismatch = 12; - Failure_FirmwareError = 99; -} - -/** - * Type of script which will be used for transaction output - * @used_in TxOutputType - */ -enum OutputScriptType { - PAYTOADDRESS = 0; // used for all addresses (bitcoin, p2sh, witness) - PAYTOSCRIPTHASH = 1; // p2sh address (deprecated; use PAYTOADDRESS) - PAYTOMULTISIG = 2; // only for change output - PAYTOOPRETURN = 3; // op_return - PAYTOWITNESS = 4; // only for change output - PAYTOP2SHWITNESS = 5; // only for change output -} - -/** - * Type of script which will be used for transaction output - * @used_in TxInputType - */ -enum InputScriptType { - SPENDADDRESS = 0; // standard p2pkh address - SPENDMULTISIG = 1; // p2sh multisig address - EXTERNAL = 2; // reserved for external inputs (coinjoin) - SPENDWITNESS = 3; // native segwit - SPENDP2SHWITNESS = 4; // segwit over p2sh (backward compatible) -} - -/** - * Type of information required by transaction signing process - * @used_in TxRequest - */ -enum RequestType { - TXINPUT = 0; - TXOUTPUT = 1; - TXMETA = 2; - TXFINISHED = 3; - TXEXTRADATA = 4; -} - -/** - * Type of button request - * @used_in ButtonRequest - */ -enum ButtonRequestType { - ButtonRequest_Other = 1; - ButtonRequest_FeeOverThreshold = 2; - ButtonRequest_ConfirmOutput = 3; - ButtonRequest_ResetDevice = 4; - ButtonRequest_ConfirmWord = 5; - ButtonRequest_WipeDevice = 6; - ButtonRequest_ProtectCall = 7; - ButtonRequest_SignTx = 8; - ButtonRequest_FirmwareCheck = 9; - ButtonRequest_Address = 10; - ButtonRequest_PublicKey = 11; - ButtonRequest_MnemonicWordCount = 12; - ButtonRequest_MnemonicInput = 13; - ButtonRequest_PassphraseType = 14; -} - -/** - * Type of PIN request - * @used_in PinMatrixRequest - */ -enum PinMatrixRequestType { - PinMatrixRequestType_Current = 1; - PinMatrixRequestType_NewFirst = 2; - PinMatrixRequestType_NewSecond = 3; -} - -/** - * Type of recovery procedure. These should be used as bitmask, e.g., - * `RecoveryDeviceType_ScrambledWords | RecoveryDeviceType_Matrix` - * listing every method supported by the host computer. - * - * Note that ScrambledWords must be supported by every implementation - * for backward compatibility; there is no way to not support it. - * - * @used_in RecoveryDevice - */ -enum RecoveryDeviceType { - // use powers of two when extending this field - RecoveryDeviceType_ScrambledWords = 0; // words in scrambled order - RecoveryDeviceType_Matrix = 1; // matrix recovery type -} - -/** - * Type of Recovery Word request - * @used_in WordRequest - */ -enum WordRequestType { - WordRequestType_Plain = 0; - WordRequestType_Matrix9 = 1; - WordRequestType_Matrix6 = 2; -} - -/** - * Structure representing BIP32 (hierarchical deterministic) node - * Used for imports of private key into the device and exporting public key out of device - * @used_in PublicKey - * @used_in LoadDevice - * @used_in DebugLinkState - * @used_in Storage - */ -message HDNodeType { - required uint32 depth = 1; - required uint32 fingerprint = 2; - required uint32 child_num = 3; - required bytes chain_code = 4; - optional bytes private_key = 5; - optional bytes public_key = 6; -} - -message HDNodePathType { - required HDNodeType node = 1; // BIP-32 node in deserialized form - repeated uint32 address_n = 2; // BIP-32 path to derive the key from node -} - -/** - * Type of redeem script used in input - * @used_in TxInputType - */ -message MultisigRedeemScriptType { - repeated HDNodePathType pubkeys = 1; // pubkeys from multisig address (sorted lexicographically) - repeated bytes signatures = 2; // existing signatures for partially signed input - optional uint32 m = 3; // "m" from n, how many valid signatures is necessary for spending -} - -/** - * Structure representing transaction input - * @used_in SimpleSignTx - * @used_in TransactionType - */ -message TxInputType { - repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - required bytes prev_hash = 2; // hash of previous transaction output to spend by this input - required uint32 prev_index = 3; // index of previous output to spend - optional bytes script_sig = 4; // script signature, unset for tx to sign - optional uint32 sequence = 5 [default=4294967295]; // sequence (default=0xffffffff) - optional InputScriptType script_type = 6 [default=SPENDADDRESS]; // defines template of input script - optional MultisigRedeemScriptType multisig = 7; // Filled if input is going to spend multisig tx - optional uint64 amount = 8; // amount of previous transaction output (for segwit only) - optional uint32 decred_tree = 9; - optional uint32 decred_script_version = 10; - optional bytes prev_block_hash_bip115 = 11; // block hash of previous transaction output (for bip115 implementation) - optional bytes prev_block_height_bip115 = 12; // block height of previous transaction output (for bip115 implementation) -} - -/** - * Structure representing transaction output - * @used_in SimpleSignTx - * @used_in TransactionType - */ -message TxOutputType { - optional string address = 1; // target coin address in Base58 encoding - repeated uint32 address_n = 2; // BIP-32 path to derive the key from master node; has higher priority than "address" - required uint64 amount = 3; // amount to spend in satoshis - required OutputScriptType script_type = 4; // output script type - optional MultisigRedeemScriptType multisig = 5; // defines multisig address; script_type must be PAYTOMULTISIG - optional bytes op_return_data = 6; // defines op_return data; script_type must be PAYTOOPRETURN, amount must be 0 - optional uint32 decred_script_version = 7; - optional bytes block_hash_bip115 = 8; // block hash of existing block (recommended current_block - 300) (for bip115 implementation) - optional bytes block_height_bip115 = 9; // block height of existing block (recommended current_block - 300) (for bip115 implementation) -} - -/** - * Structure representing compiled transaction output - * @used_in TransactionType - */ -message TxOutputBinType { - required uint64 amount = 1; - required bytes script_pubkey = 2; - optional uint32 decred_script_version = 3; -} - -/** - * Structure representing transaction - * @used_in TxAck - */ -message TransactionType { - optional uint32 version = 1; - repeated TxInputType inputs = 2; - repeated TxOutputBinType bin_outputs = 3; - repeated TxOutputType outputs = 5; - optional uint32 lock_time = 4; - optional uint32 inputs_cnt = 6; - optional uint32 outputs_cnt = 7; - optional bytes extra_data = 8; // only for Zcash - optional uint32 extra_data_len = 9; // only for Zcash - optional uint32 expiry = 10; // only for Decred and Zcash - optional bool overwintered = 11; // only for Zcash -} - -/** - * Structure representing request details - * @used_in TxRequest - */ -message TxRequestDetailsType { - optional uint32 request_index = 1; // device expects TxAck message from the computer - optional bytes tx_hash = 2; // tx_hash of requested transaction - optional uint32 extra_data_len = 3; // length of requested extra data - optional uint32 extra_data_offset = 4; // offset of requested extra data -} - -/** - * Structure representing serialized data - * @used_in TxRequest - */ -message TxRequestSerializedType { - optional uint32 signature_index = 1; // 'signature' field contains signed input of this index - optional bytes signature = 2; // signature of the signature_index input - optional bytes serialized_tx = 3; // part of serialized and signed transaction -} - -/** - * Structure representing identity data - * @used_in IdentityType - */ -message IdentityType { - optional string proto = 1; // proto part of URI - optional string user = 2; // user part of URI - optional string host = 3; // host part of URI - optional string port = 4; // port part of URI - optional string path = 5; // path part of URI - optional uint32 index = 6 [default=0]; // identity index -} - -/** - * Structure representing passphrase source - * @used_in ApplySettings - */ -enum PassphraseSourceType { - ASK = 0; - DEVICE = 1; - HOST = 2; -} - -/** - * Structure representing the common part for NEM transactions - * @used_in NEMSignTx - */ -message NEMTransactionCommon { - repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - optional uint32 network = 2; // Network ID (0x68 = Mainnet, 0x98 = Testnet, 0x60 = Mijin) - optional uint32 timestamp = 3; // Number of seconds elapsed since the creation of the nemesis block - optional uint64 fee = 4; // Fee for the transaction - optional uint32 deadline = 5; // Deadline of the transaction - optional bytes signer = 6; // Public key of the account (for multisig transactions) -} - -/** - * Structure representing the transfer transaction part for NEM transactions - * @used_in NEMSignTx - */ -message NEMTransfer { - optional string recipient = 1; // Address of the recipient - optional uint64 amount = 2; // Amount of micro NEM that is transferred - optional bytes payload = 3; // Actual message data (unencrypted) - optional bytes public_key = 4; // Public key of the recipient (for encrypted payloads) - repeated NEMMosaic mosaics = 5; // Attached mosaics -} - -/** - * Structure representing the mosaic attachment for NEM transfer transactions - * @used_in NEMTransfer - */ -message NEMMosaic { - optional string namespace = 1; // Fully qualified name of the namespace - optional string mosaic = 2; // Name of the mosaic definition - optional uint64 quantity = 3; // Mosaic quantity, always given in smallest units -} - -/** - * Structure representing the provision namespace part for NEM transactions - * @used_in NEMSignTx - */ -message NEMProvisionNamespace { - optional string namespace = 1; // New part concatenated to the parent - optional string parent = 2; // Parent namespace (for child namespaces) - optional string sink = 3; // Rental fee sink address - optional uint64 fee = 4; // Rental fee -} - -/** - * Type of levy which will be used for mosaic - * @used_in NEMMosaicDefinition - */ -enum NEMMosaicLevy { - MosaicLevy_Absolute = 1; - MosaicLevy_Percentile = 2; -} - -/** - * Structure representing the mosaic definition creation part for NEM transactions - * @used_in NEMSignTx - */ -message NEMMosaicCreation { - optional NEMMosaicDefinition definition = 1; // Mosaic definition - optional string sink = 2; // Creation fee sink address - optional uint64 fee = 3; // Creation fee -} - -/** - * Structure representing a mosaic definition - * @used_in NEMMosaicCreation - */ -message NEMMosaicDefinition { - optional string name = 1; // User-friendly name of the mosaic (for whitelisted mosaics) - optional string ticker = 2; // Ticker of the mosaic (for whitelisted mosaics) - optional string namespace = 3; // Fully qualified name of the namespace - optional string mosaic = 4; // Name of the mosaic definition - optional uint32 divisibility = 5; // Number of decimal places that a mosaic can be divided into - optional NEMMosaicLevy levy = 6; // Levy type - optional uint64 fee = 7; // Levy fee (interpretation depends on levy type) - optional string levy_address = 8; // Levy address - optional string levy_namespace = 9; // Fully qualified name of the namespace of the levy mosaic - optional string levy_mosaic = 10; // Name of the levy mosaic - optional uint64 supply = 11; // Initial supply to create, always given in entire units - optional bool mutable_supply = 12; // Mutable supply - optional bool transferable = 13; // Mosaic allows transfers among accounts other than the creator - optional string description = 14; // Mosaic description - repeated uint32 networks = 15; // Networks that the mosaic is valid on (for whitelisted mosaics) -} - -/** - * Structure representing the mosaic supply change part for NEM transactions - * @used_in NEMSignTx - */ -message NEMMosaicSupplyChange { - optional string namespace = 1; // Fully qualified name of the namespace - optional string mosaic = 2; // Name of the mosaic definition - optional NEMSupplyChangeType type = 3; // Type of supply change - optional uint64 delta = 4; // Supply delta -} - -/** - * Type of supply change which will be applied to mosaic - * @used_in NEMMosaicSupplyChange - */ -enum NEMSupplyChangeType { - SupplyChange_Increase = 1; - SupplyChange_Decrease = 2; -} - -/** - * Structure representing the aggregate modification part for NEM transactions - * @used_in NEMSignTx - */ -message NEMAggregateModification { - repeated NEMCosignatoryModification modifications = 1; // Cosignatory modifications - optional sint32 relative_change = 2; // Relative change of the minimum cosignatories -} - -/** - * Structure representing the cosignatory modification for aggregate modification transactions - * @used_in NEMAggregateMdofiication - */ -message NEMCosignatoryModification { - optional NEMModificationType type = 1; // Type of cosignatory modification - optional bytes public_key = 2; // Public key of the cosignatory -} - -/** - * Type of cosignatory modification - * @used_in NEMCosignatoryModification - */ -enum NEMModificationType { - CosignatoryModification_Add = 1; - CosignatoryModification_Delete = 2; -} - -/** - * Structure representing the importance transfer part for NEM transactions - * @used_in NEMSignTx - */ -message NEMImportanceTransfer { - optional NEMImportanceTransferMode mode = 1; // Mode of importance transfer - optional bytes public_key = 2; // Public key of the remote account -} - -/** - * Mode of importance transfer - * @used_in NEMModificationType - */ -enum NEMImportanceTransferMode { - ImportanceTransfer_Activate = 1; - ImportanceTransfer_Deactivate = 2; -} - -/** - * Describes a Stellar asset - * @used_in StellarTxOpAck - */ -message StellarAssetType { - optional uint32 type = 1; // 0 = native asset (XLM), 1 = alphanum 4, 2 = alphanum 12 - optional string code = 2; // for non-native assets, string describing the code - optional string issuer = 3; // issuing address -} - -/** -* Type of Lisk transaction -* @used_in LiskTransactionCommon -*/ -enum LiskTransactionType { - Transfer = 0; - RegisterSecondPassphrase = 1; - RegisterDelegate = 2; - CastVotes = 3; - RegisterMultisignatureAccount = 4; - CreateDapp = 5; - TransferIntoDapp = 6; - TransferOutOfDapp = 7; -} - -/** -* Structure representing the common part for Lisk transactions -* @used_in LiskSignTx -*/ -message LiskTransactionCommon { - optional LiskTransactionType type = 1; - optional uint64 amount = 2 [default=0]; - optional uint64 fee = 3; - optional string recipient_id = 4; - optional bytes sender_public_key = 5; - optional bytes requester_public_key = 6; - optional bytes signature = 7; - optional uint32 timestamp = 8; - optional LiskTransactionAsset asset = 9; -} - -/** -* Structure representing the asset field in the Lisk transaction -* @used_in LiskTransactionCommon -*/ -message LiskTransactionAsset { - optional LiskSignatureType signature = 1; - optional LiskDelegateType delegate = 2; - repeated string votes = 3; - optional LiskMultisignatureType multisignature = 4; - optional string data = 5; -} - -/** -* Structure representing the signature field in the Lisk transaction asset field -* @used_in LiskTransactionAsset -*/ -message LiskSignatureType { - optional bytes public_key = 1; -} - -/** -* Structure representing the delegate field in the Lisk transaction asset field -* @used_in LiskTransactionAsset -*/ -message LiskDelegateType { - optional string username = 1; -} - -/** -* Structure representing the multisignature field in the Lisk transaction asset field -* @used_in LiskTransactionAsset -*/ -message LiskMultisignatureType { - optional uint32 min = 1; - optional uint32 life_time = 2; - repeated string keys_group = 3; -} - -/* -* Type of Tezos operation -* @used_in TezosOperationCommon -*/ -enum TezosOperationType { - Transaction = 8; - Origination = 9; - Delegation = 10; -} - -/* -* Type of Tezos Contract type -* @used_in TezosContractID -*/ -enum TezosContractType { - Implicit = 0; - Originated = 1; -} - -/* -* Tezos contract ID -* @used_in TezosOperationCommon -* @used_in TezosTransactionType -*/ -message TezosContractID { - optional TezosContractType tag = 1; - optional bytes hash = 2; // Implicit = 21B, originated = 20B + 1B padding -} - -/* -* Structure representing the common part for Tezos operations -* @used_in TezosSignTx -*/ -message TezosOperationCommon { - optional bytes branch = 1; - optional TezosOperationType tag = 2; - optional TezosContractID source = 3; - optional uint64 fee = 4; - optional uint64 counter = 5; - optional uint64 gas_limit = 6; - optional uint64 storage_limit = 7; -} - -/* -* Structure representing additional information for transaction -* @used_in TezosSignTx -*/ -message TezosTransactionType { - optional uint64 amount = 1; - optional TezosContractID destination = 2; - optional bytes parameters = 3; -} - -/* -* Structure representing additional information for origination -* @used_in TezosSignTx -*/ -message TezosOriginationType { - optional bytes manager_pubkey = 1; - optional uint64 balance = 2; - optional bool spendable = 3; - optional bool delegatable = 4; - optional bytes delegate = 5; // 1B tag + 20B public key hash - optional bytes script = 6; -} - -/* -* Structure representing additional information for delegation -* @used_in TezosSignTx -*/ -message TezosDelegationType { - optional bytes delegate = 1; // 1B tag + 20B public key hash -} - -/** - * Structure representing cardano transaction input - * @used_in CardanoSignTransacion - */ -message CardanoTxInputType { - repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - optional bytes prev_hash = 2; // hash of previous transaction output to spend by this input - optional uint32 prev_index = 3; // index of previous output to spend - optional uint32 type = 4; // input type, defaults to 0 -} - -/** - * Structure representing cardano transaction output - * @used_in CardanoSignTransacion - */ -message CardanoTxOutputType { - optional string address = 1; // target coin address in Base58 encoding - repeated uint32 address_n = 2; // BIP-32 path to derive the key from master node; has higher priority than "address" - optional uint64 amount = 3; // amount to spend -} - -/** - * Mapping between Trezor wire identifier (uint) and a protobuf message + * Mapping between TREZOR wire identifier (uint) and a protobuf message */ enum MessageType { - MessageType_Initialize = 0 [(wire_in) = true, (wire_tiny) = true]; - MessageType_Ping = 1 [(wire_in) = true]; - MessageType_Success = 2 [(wire_out) = true]; - MessageType_Failure = 3 [(wire_out) = true]; - MessageType_ChangePin = 4 [(wire_in) = true]; - MessageType_WipeDevice = 5 [(wire_in) = true]; - MessageType_FirmwareErase = 6 [(wire_in) = true, (wire_bootloader) = true]; - MessageType_FirmwareUpload = 7 [(wire_in) = true, (wire_bootloader) = true]; - MessageType_FirmwareRequest = 8 [(wire_out) = true, (wire_bootloader) = true]; - MessageType_GetEntropy = 9 [(wire_in) = true]; - MessageType_Entropy = 10 [(wire_out) = true]; - MessageType_GetPublicKey = 11 [(wire_in) = true]; - MessageType_PublicKey = 12 [(wire_out) = true]; - MessageType_LoadDevice = 13 [(wire_in) = true]; - MessageType_ResetDevice = 14 [(wire_in) = true]; - MessageType_SignTx = 15 [(wire_in) = true]; - MessageType_SimpleSignTx = 16 [(wire_in) = true, deprecated = true]; - MessageType_Features = 17 [(wire_out) = true]; - MessageType_PinMatrixRequest = 18 [(wire_out) = true]; - MessageType_PinMatrixAck = 19 [(wire_in) = true, (wire_tiny) = true, (wire_no_fsm) = true]; - MessageType_Cancel = 20 [(wire_in) = true, (wire_tiny) = true]; - MessageType_TxRequest = 21 [(wire_out) = true]; - MessageType_TxAck = 22 [(wire_in) = true]; - MessageType_CipherKeyValue = 23 [(wire_in) = true]; - MessageType_ClearSession = 24 [(wire_in) = true]; - MessageType_ApplySettings = 25 [(wire_in) = true]; - MessageType_ButtonRequest = 26 [(wire_out) = true]; - MessageType_ButtonAck = 27 [(wire_in) = true, (wire_tiny) = true, (wire_no_fsm) = true]; - MessageType_ApplyFlags = 28 [(wire_in) = true]; - MessageType_GetAddress = 29 [(wire_in) = true]; - MessageType_Address = 30 [(wire_out) = true]; - MessageType_SelfTest = 32 [(wire_in) = true, (wire_bootloader) = true]; - MessageType_BackupDevice = 34 [(wire_in) = true]; - MessageType_EntropyRequest = 35 [(wire_out) = true]; - MessageType_EntropyAck = 36 [(wire_in) = true]; - MessageType_SignMessage = 38 [(wire_in) = true]; - MessageType_VerifyMessage = 39 [(wire_in) = true]; - MessageType_MessageSignature = 40 [(wire_out) = true]; - MessageType_PassphraseRequest = 41 [(wire_out) = true]; - MessageType_PassphraseAck = 42 [(wire_in) = true, (wire_tiny) = true, (wire_no_fsm) = true]; - MessageType_PassphraseStateRequest = 77 [(wire_out) = true]; - MessageType_PassphraseStateAck = 78 [(wire_in) = true, (wire_tiny) = true, (wire_no_fsm) = true]; - MessageType_EstimateTxSize = 43 [(wire_in) = true, deprecated = true]; - MessageType_TxSize = 44 [(wire_out) = true, deprecated = true]; - MessageType_RecoveryDevice = 45 [(wire_in) = true]; - MessageType_WordRequest = 46 [(wire_out) = true]; - MessageType_WordAck = 47 [(wire_in) = true]; - MessageType_CipheredKeyValue = 48 [(wire_out) = true]; - MessageType_EncryptMessage = 49 [(wire_in) = true, deprecated = true]; - MessageType_EncryptedMessage = 50 [(wire_out) = true, deprecated = true]; - MessageType_DecryptMessage = 51 [(wire_in) = true, deprecated = true]; - MessageType_DecryptedMessage = 52 [(wire_out) = true, deprecated = true]; - MessageType_SignIdentity = 53 [(wire_in) = true]; - MessageType_SignedIdentity = 54 [(wire_out) = true]; - MessageType_GetFeatures = 55 [(wire_in) = true]; - MessageType_EthereumGetAddress = 56 [(wire_in) = true]; - MessageType_EthereumAddress = 57 [(wire_out) = true]; - MessageType_EthereumSignTx = 58 [(wire_in) = true]; - MessageType_EthereumTxRequest = 59 [(wire_out) = true]; - MessageType_EthereumTxAck = 60 [(wire_in) = true]; - MessageType_GetECDHSessionKey = 61 [(wire_in) = true]; - MessageType_ECDHSessionKey = 62 [(wire_out) = true]; - MessageType_SetU2FCounter = 63 [(wire_in) = true]; - MessageType_EthereumSignMessage = 64 [(wire_in) = true]; - MessageType_EthereumVerifyMessage = 65 [(wire_in) = true]; - MessageType_EthereumMessageSignature = 66 [(wire_out) = true]; - MessageType_NEMGetAddress = 67 [(wire_in) = true]; - MessageType_NEMAddress = 68 [(wire_out) = true]; - MessageType_NEMSignTx = 69 [(wire_in) = true]; - MessageType_NEMSignedTx = 70 [(wire_out) = true]; - MessageType_CosiCommit = 71 [(wire_in) = true]; - MessageType_CosiCommitment = 72 [(wire_out) = true]; - MessageType_CosiSign = 73 [(wire_in) = true]; - MessageType_CosiSignature = 74 [(wire_out) = true]; - MessageType_NEMDecryptMessage = 75 [(wire_in) = true]; - MessageType_NEMDecryptedMessage = 76 [(wire_out) = true]; - MessageType_DebugLinkDecision = 100 [(wire_debug_in) = true, (wire_tiny) = true, (wire_no_fsm) = true]; - MessageType_DebugLinkGetState = 101 [(wire_debug_in) = true, (wire_tiny) = true]; - MessageType_DebugLinkState = 102 [(wire_debug_out) = true]; - MessageType_DebugLinkStop = 103 [(wire_debug_in) = true]; - MessageType_DebugLinkLog = 104 [(wire_debug_out) = true]; - MessageType_DebugLinkMemoryRead = 110 [(wire_debug_in) = true]; - MessageType_DebugLinkMemory = 111 [(wire_debug_out) = true]; - MessageType_DebugLinkMemoryWrite = 112 [(wire_debug_in) = true]; - MessageType_DebugLinkFlashErase = 113 [(wire_debug_in) = true]; - - // Cardano - MessageType_CardanoSignMessage = 300 [(wire_in) = true]; - MessageType_CardanoMessageSignature = 301 [(wire_out) = true]; - MessageType_CardanoVerifyMessage = 302 [(wire_in) = true]; - MessageType_CardanoSignTransaction = 303 [(wire_in) = true]; - MessageType_CardanoTxRequest = 304 [(wire_out) = true]; - MessageType_CardanoGetPublicKey = 305 [(wire_in) = true]; - MessageType_CardanoPublicKey = 306 [(wire_out) = true]; - MessageType_CardanoGetAddress = 307 [(wire_in) = true]; - MessageType_CardanoAddress = 308 [(wire_out) = true]; - MessageType_CardanoTxAck = 309 [(wire_in) = true]; - MessageType_CardanoSignedTransaction = 310 [(wire_out) = true]; - - // Lisk - MessageType_LiskGetAddress = 114 [(wire_in) = true]; - MessageType_LiskAddress = 115 [(wire_out) = true]; - MessageType_LiskSignTx = 116 [(wire_in) = true]; - MessageType_LiskSignedTx = 117 [(wire_out) = true]; - MessageType_LiskSignMessage = 118 [(wire_in) = true]; - MessageType_LiskMessageSignature = 119 [(wire_out) = true]; - MessageType_LiskVerifyMessage = 120 [(wire_in) = true]; - MessageType_LiskGetPublicKey = 121 [(wire_in) = true]; - MessageType_LiskPublicKey = 122 [(wire_out) = true]; - - // Tezos - MessageType_TezosGetAddress = 150 [(wire_in) = true]; - MessageType_TezosAddress = 151 [(wire_out) = true]; - MessageType_TezosSignTx = 152 [(wire_in) = true]; - MessageType_TezosSignedTx = 153 [(wire_out) = true]; - MessageType_TezosGetPublicKey = 154 [(wire_in) = true]; - MessageType_TezosPublicKey = 155 [(wire_out) = true]; - - // Stellar - MessageType_StellarGetPublicKey = 200 [(wire_in) = true]; - MessageType_StellarPublicKey = 201 [(wire_out) = true]; - MessageType_StellarSignTx = 202 [(wire_in) = true]; - MessageType_StellarTxOpRequest = 203 [(wire_out) = true]; - MessageType_StellarGetAddress = 207 [(wire_in) = true]; - MessageType_StellarAddress = 208 [(wire_out) = true]; - MessageType_StellarCreateAccountOp = 210 [(wire_in) = true]; - MessageType_StellarPaymentOp = 211 [(wire_in) = true]; - MessageType_StellarPathPaymentOp = 212 [(wire_in) = true]; - MessageType_StellarManageOfferOp = 213 [(wire_in) = true]; - MessageType_StellarCreatePassiveOfferOp = 214 [(wire_in) = true]; - MessageType_StellarSetOptionsOp = 215 [(wire_in) = true]; - MessageType_StellarChangeTrustOp = 216 [(wire_in) = true]; - MessageType_StellarAllowTrustOp = 217 [(wire_in) = true]; - MessageType_StellarAccountMergeOp = 218 [(wire_in) = true]; - // Omitted: inflation is not a supported operation, would be 219 - MessageType_StellarManageDataOp = 220 [(wire_in) = true]; - MessageType_StellarBumpSequenceOp = 221 [(wire_in) = true]; - MessageType_StellarSignedTx = 230 [(wire_out) = true]; -} - -//////////////////// -// Basic messages // -//////////////////// - -/** - * Request: Reset device to default state and ask for device details - * @next Features - */ -message Initialize { - optional bytes state = 1; // assumed device state, clear session if set and different - optional bool skip_passphrase = 2; // this session should always assume empty passphrase -} - -/** - * Request: Ask for device details (no device reset) - * @next Features - */ -message GetFeatures { -} - -/** - * Response: Reports various information about the device - * @prev Initialize - * @prev GetFeatures - */ -message Features { - optional string vendor = 1; // name of the manufacturer, e.g. "trezor.io" - optional uint32 major_version = 2; // major version of the firmware/bootloader, e.g. 1 - optional uint32 minor_version = 3; // minor version of the firmware/bootloader, e.g. 0 - optional uint32 patch_version = 4; // patch version of the firmware/bootloader, e.g. 0 - optional bool bootloader_mode = 5; // is device in bootloader mode? - optional string device_id = 6; // device's unique identifier - optional bool pin_protection = 7; // is device protected by PIN? - optional bool passphrase_protection = 8; // is node/mnemonic encrypted using passphrase? - optional string language = 9; // device language - optional string label = 10; // device description label - optional bool initialized = 12; // does device contain seed? - optional bytes revision = 13; // SCM revision of firmware - optional bytes bootloader_hash = 14; // hash of the bootloader - optional bool imported = 15; // was storage imported from an external source? - optional bool pin_cached = 16; // is PIN already cached in session? - optional bool passphrase_cached = 17; // is passphrase already cached in session? - optional bool firmware_present = 18; // is valid firmware loaded? - optional bool needs_backup = 19; // does storage need backup? (equals to Storage.needs_backup) - optional uint32 flags = 20; // device flags (equals to Storage.flags) - optional string model = 21; // device hardware model - optional uint32 fw_major = 22; // reported firmware version if in bootloader mode - optional uint32 fw_minor = 23; // reported firmware version if in bootloader mode - optional uint32 fw_patch = 24; // reported firmware version if in bootloader mode - optional string fw_vendor = 25; // reported firmware vendor if in bootloader mode - optional bytes fw_vendor_keys = 26; // reported firmware vendor keys (their hash) - optional bool unfinished_backup = 27; // report unfinished backup (equals to Storage.unfinished_backup) -} - -/** - * Request: clear session (removes cached PIN, passphrase, etc). - * @next Success - */ -message ClearSession { -} - -/** - * Request: change language and/or label of the device - * @next Success - * @next Failure - * @next ButtonRequest - * @next PinMatrixRequest - */ -message ApplySettings { - optional string language = 1; - optional string label = 2; - optional bool use_passphrase = 3; - optional bytes homescreen = 4; - optional PassphraseSourceType passphrase_source = 5; - optional uint32 auto_lock_delay_ms = 6; -} - -/** - * Request: set flags of the device - * @next Success - * @next Failure - */ -message ApplyFlags { - optional uint32 flags = 1; // bitmask, can only set bits, not unset -} - -/** - * Request: Starts workflow for setting/changing/removing the PIN - * @next ButtonRequest - * @next PinMatrixRequest - */ -message ChangePin { - optional bool remove = 1; // is PIN removal requested? -} - -/** - * Request: Test if the device is alive, device sends back the message in Success response - * @next Success - */ -message Ping { - optional string message = 1; // message to send back in Success message - optional bool button_protection = 2; // ask for button press - optional bool pin_protection = 3; // ask for PIN if set in device - optional bool passphrase_protection = 4; // ask for passphrase if set in device -} - -/** - * Response: Success of the previous request - */ -message Success { - optional string message = 1; // human readable description of action or request-specific payload -} - -/** - * Response: Failure of the previous request - */ -message Failure { - optional FailureType code = 1; // computer-readable definition of the error state - optional string message = 2; // human-readable message of the error state -} - -/** - * Response: Device is waiting for HW button press. - * @next ButtonAck - * @next Cancel - */ -message ButtonRequest { - optional ButtonRequestType code = 1; - optional string data = 2; -} - -/** - * Request: Computer agrees to wait for HW button press - * @prev ButtonRequest - */ -message ButtonAck { -} - -/** - * Response: Device is asking computer to show PIN matrix and awaits PIN encoded using this matrix scheme - * @next PinMatrixAck - * @next Cancel - */ -message PinMatrixRequest { - optional PinMatrixRequestType type = 1; -} - -/** - * Request: Computer responds with encoded PIN - * @prev PinMatrixRequest - */ -message PinMatrixAck { - required string pin = 1; // matrix encoded PIN entered by user -} - -/** - * Request: Abort last operation that required user interaction - * @prev ButtonRequest - * @prev PinMatrixRequest - * @prev PassphraseRequest - */ -message Cancel { -} - -/** - * Response: Device awaits encryption passphrase - * @next PassphraseAck - * @next Cancel - */ -message PassphraseRequest { - optional bool on_device = 1; // passphrase is being entered on the device -} - -/** - * Request: Send passphrase back - * @prev PassphraseRequest - * @next PassphraseStateRequest - */ -message PassphraseAck { - optional string passphrase = 1; - optional bytes state = 2; // expected device state -} - -/** - * @prev PassphraseAck - * @next PassphraseStateAck - */ -message PassphraseStateRequest { - optional bytes state = 1; // actual device state -} - -/** - * @prev PassphraseStateRequest - */ -message PassphraseStateAck { -} -/** - * Request: Request a sample of random data generated by hardware RNG. May be used for testing. - * @next ButtonRequest - * @next Entropy - * @next Failure - */ -message GetEntropy { - required uint32 size = 1; // size of requested entropy -} - -/** - * Response: Reply with random data generated by internal RNG - * @prev GetEntropy - */ -message Entropy { - required bytes entropy = 1; // stream of random generated bytes -} - -/** - * Request: Ask device for public key corresponding to address_n path - * @next PassphraseRequest - * @next PublicKey - * @next Failure - */ -message GetPublicKey { - repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - optional string ecdsa_curve_name = 2; // ECDSA curve name to use - optional bool show_display = 3; // optionally show on display before sending the result - optional string coin_name = 4 [default='Bitcoin']; -} - -/** - * Response: Contains public key derived from device private seed - * @prev GetPublicKey - */ -message PublicKey { - required HDNodeType node = 1; // BIP32 public node - optional string xpub = 2; // serialized form of public node -} - -/** - * Request: Ask device for address corresponding to address_n path - * @next PassphraseRequest - * @next Address - * @next Failure - */ -message GetAddress { - repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - optional string coin_name = 2 [default='Bitcoin']; - optional bool show_display = 3; // optionally show on display before sending the result - optional MultisigRedeemScriptType multisig = 4; // filled if we are showing a multisig address - optional InputScriptType script_type = 5 [default=SPENDADDRESS]; // used to distinguish between various address formats (non-segwit, segwit, etc.) -} - -/** - * Request: Ask device for Ethereum address corresponding to address_n path - * @next PassphraseRequest - * @next EthereumAddress - * @next Failure - */ -message EthereumGetAddress { - repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - optional bool show_display = 2; // optionally show on display before sending the result -} - -/** - * Response: Contains address derived from device private seed - * @prev GetAddress - */ -message Address { - required string address = 1; // Coin address in Base58 encoding -} - -/** - * Response: Contains an Ethereum address derived from device private seed - * @prev EthereumGetAddress - */ -message EthereumAddress { - required bytes address = 1; // Coin address as an Ethereum 160 bit hash -} - -/** - * Request: Request device to wipe all sensitive data and settings - * @next ButtonRequest - */ -message WipeDevice { -} - -/** - * Request: Load seed and related internal settings from the computer - * @next ButtonRequest - * @next Success - * @next Failure - */ -message LoadDevice { - optional string mnemonic = 1; // seed encoded as BIP-39 mnemonic (12, 18 or 24 words) - optional HDNodeType node = 2; // BIP-32 node - optional string pin = 3; // set PIN protection - optional bool passphrase_protection = 4; // enable master node encryption using passphrase - optional string language = 5 [default='english']; // device language - optional string label = 6; // device label - optional bool skip_checksum = 7; // do not test mnemonic for valid BIP-39 checksum - optional uint32 u2f_counter = 8; // U2F counter -} - -/** - * Request: Ask device to do initialization involving user interaction - * @next EntropyRequest - * @next Failure - */ -message ResetDevice { - optional bool display_random = 1; // display entropy generated by the device before asking for additional entropy - optional uint32 strength = 2 [default=256]; // strength of seed in bits - optional bool passphrase_protection = 3; // enable master node encryption using passphrase - optional bool pin_protection = 4; // enable PIN protection - optional string language = 5 [default='english']; // device language - optional string label = 6; // device label - optional uint32 u2f_counter = 7; // U2F counter - optional bool skip_backup = 8; // postpone seed backup to BackupDevice workflow -} - -/** - * Request: Perform backup of the device seed if not backed up using ResetDevice - * @next ButtonRequest - */ -message BackupDevice { -} - -/** - * Response: Ask for additional entropy from host computer - * @prev ResetDevice - * @next EntropyAck - */ -message EntropyRequest { -} - -/** - * Request: Provide additional entropy for seed generation function - * @prev EntropyRequest - * @next ButtonRequest - */ -message EntropyAck { - optional bytes entropy = 1; // 256 bits (32 bytes) of random data -} - -/** - * Request: Start recovery workflow asking user for specific words of mnemonic - * Used to recovery device safely even on untrusted computer. - * @next WordRequest - */ -message RecoveryDevice { - optional uint32 word_count = 1; // number of words in BIP-39 mnemonic - optional bool passphrase_protection = 2; // enable master node encryption using passphrase - optional bool pin_protection = 3; // enable PIN protection - optional string language = 4 [default='english']; // device language - optional string label = 5; // device label - optional bool enforce_wordlist = 6; // enforce BIP-39 wordlist during the process - // 7 reserved for unused recovery method - optional uint32 type = 8; // supported recovery type (see RecoveryType) - optional uint32 u2f_counter = 9; // U2F counter - optional bool dry_run = 10; // perform dry-run recovery workflow (for safe mnemonic validation) -} - -/** - * Response: Device is waiting for user to enter word of the mnemonic - * Its position is shown only on device's internal display. - * @prev RecoveryDevice - * @prev WordAck - */ -message WordRequest { - optional WordRequestType type = 1; -} - -/** - * Request: Computer replies with word from the mnemonic - * @prev WordRequest - * @next WordRequest - * @next Success - * @next Failure - */ -message WordAck { - required string word = 1; // one word of mnemonic on asked position -} - -////////////////////////////// -// Message signing messages // -////////////////////////////// - -/** - * Request: Ask device to sign message - * @next MessageSignature - * @next Failure - */ -message SignMessage { - repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - required bytes message = 2; // message to be signed - optional string coin_name = 3 [default='Bitcoin']; // coin to use for signing - optional InputScriptType script_type = 4 [default=SPENDADDRESS]; // used to distinguish between various address formats (non-segwit, segwit, etc.) -} - -/** - * Request: Ask device to verify message - * @next Success - * @next Failure - */ -message VerifyMessage { - optional string address = 1; // address to verify - optional bytes signature = 2; // signature to verify - optional bytes message = 3; // message to verify - optional string coin_name = 4 [default='Bitcoin']; // coin to use for verifying -} - -/** - * Response: Signed message - * @prev SignMessage - */ -message MessageSignature { - optional string address = 1; // address used to sign the message - optional bytes signature = 2; // signature of the message -} - -/////////////////////////// -// Encryption/decryption // -/////////////////////////// - -/** - * Request: Ask device to encrypt message - * @next EncryptedMessage - * @next Failure - */ -message EncryptMessage { - optional bytes pubkey = 1; // public key - optional bytes message = 2; // message to encrypt - optional bool display_only = 3; // show just on display? (don't send back via wire) - repeated uint32 address_n = 4; // BIP-32 path to derive the signing key from master node - optional string coin_name = 5 [default='Bitcoin']; // coin to use for signing -} - -/** - * Response: Encrypted message - * @prev EncryptMessage - */ -message EncryptedMessage { - optional bytes nonce = 1; // nonce used during encryption - optional bytes message = 2; // encrypted message - optional bytes hmac = 3; // message hmac -} - -/** - * Request: Ask device to decrypt message - * @next Success - * @next Failure - */ -message DecryptMessage { - repeated uint32 address_n = 1; // BIP-32 path to derive the decryption key from master node - optional bytes nonce = 2; // nonce used during encryption - optional bytes message = 3; // message to decrypt - optional bytes hmac = 4; // message hmac -} - -/** - * Response: Decrypted message - * @prev DecryptedMessage - */ -message DecryptedMessage { - optional bytes message = 1; // decrypted message - optional string address = 2; // address used to sign the message (if used) -} - -/** - * Request: Ask device to encrypt or decrypt value of given key - * @next CipheredKeyValue - * @next Failure - */ -message CipherKeyValue { - repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - optional string key = 2; // key component of key:value - optional bytes value = 3; // value component of key:value - optional bool encrypt = 4; // are we encrypting (True) or decrypting (False)? - optional bool ask_on_encrypt = 5; // should we ask on encrypt operation? - optional bool ask_on_decrypt = 6; // should we ask on decrypt operation? - optional bytes iv = 7; // initialization vector (will be computed if not set) -} - -/** - * Response: Return ciphered/deciphered value - * @prev CipherKeyValue - */ -message CipheredKeyValue { - optional bytes value = 1; // ciphered/deciphered value -} - -////////////////////////////////// -// Transaction signing messages // -////////////////////////////////// - -/** - * Request: Estimated size of the transaction - * This behaves exactly like SignTx, which means that it can ask using TxRequest - * This call is non-blocking (except possible PassphraseRequest to unlock the seed) - * @next TxSize - * @next Failure - */ -message EstimateTxSize { - required uint32 outputs_count = 1; // number of transaction outputs - required uint32 inputs_count = 2; // number of transaction inputs - optional string coin_name = 3 [default='Bitcoin']; // coin to use -} - -/** - * Response: Estimated size of the transaction - * @prev EstimateTxSize - */ -message TxSize { - optional uint32 tx_size = 1; // estimated size of transaction in bytes -} - -/** - * Request: Ask device to sign transaction - * @next PassphraseRequest - * @next PinMatrixRequest - * @next TxRequest - * @next Failure - */ -message SignTx { - required uint32 outputs_count = 1; // number of transaction outputs - required uint32 inputs_count = 2; // number of transaction inputs - optional string coin_name = 3 [default='Bitcoin']; // coin to use - optional uint32 version = 4 [default=1]; // transaction version - optional uint32 lock_time = 5 [default=0]; // transaction lock_time - optional uint32 expiry = 6; // only for Decred and Zcash - optional bool overwintered = 7; // only for Zcash -} - -/** - * Request: Simplified transaction signing - * This method doesn't support streaming, so there are hardware limits in number of inputs and outputs. - * In case of success, the result is returned using TxRequest message. - * @next PassphraseRequest - * @next PinMatrixRequest - * @next TxRequest - * @next Failure - */ -message SimpleSignTx { - repeated TxInputType inputs = 1; // transaction inputs - repeated TxOutputType outputs = 2; // transaction outputs - repeated TransactionType transactions = 3; // transactions whose outputs are used to build current inputs - optional string coin_name = 4 [default='Bitcoin']; // coin to use - optional uint32 version = 5 [default=1]; // transaction version - optional uint32 lock_time = 6 [default=0]; // transaction lock_time - optional uint32 expiry = 7; // only for Decred and Zcash - optional bool overwintered = 8; // only for Zcash -} - -/** - * Response: Device asks for information for signing transaction or returns the last result - * If request_index is set, device awaits TxAck message (with fields filled in according to request_type) - * If signature_index is set, 'signature' contains signed input of signature_index's input - * @prev SignTx - * @prev SimpleSignTx - * @prev TxAck - */ -message TxRequest { - optional RequestType request_type = 1; // what should be filled in TxAck message? - optional TxRequestDetailsType details = 2; // request for tx details - optional TxRequestSerializedType serialized = 3; // serialized data and request for next -} - -/** - * Request: Reported transaction data - * @prev TxRequest - * @next TxRequest - */ -message TxAck { - optional TransactionType tx = 1; -} - -/** - * Request: Ask device to sign transaction - * All fields are optional from the protocol's point of view. Each field defaults to value `0` if missing. - * Note: the first at most 1024 bytes of data MUST be transmitted as part of this message. - * @next PassphraseRequest - * @next PinMatrixRequest - * @next EthereumTxRequest - * @next Failure - */ -message EthereumSignTx { - repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - optional bytes nonce = 2; // <=256 bit unsigned big endian - optional bytes gas_price = 3; // <=256 bit unsigned big endian (in wei) - optional bytes gas_limit = 4; // <=256 bit unsigned big endian - optional bytes to = 5; // 160 bit address hash - optional bytes value = 6; // <=256 bit unsigned big endian (in wei) - optional bytes data_initial_chunk = 7; // The initial data chunk (<= 1024 bytes) - optional uint32 data_length = 8; // Length of transaction payload - optional uint32 chain_id = 9; // Chain Id for EIP 155 - optional uint32 tx_type = 10; // (only for Wanchain) -} - -/** - * Response: Device asks for more data from transaction payload, or returns the signature. - * If data_length is set, device awaits that many more bytes of payload. - * Otherwise, the signature_* fields contain the computed transaction signature. All three fields will be present. - * @prev EthereumSignTx - * @next EthereumTxAck - */ -message EthereumTxRequest { - optional uint32 data_length = 1; // Number of bytes being requested (<= 1024) - optional uint32 signature_v = 2; // Computed signature (recovery parameter, limited to 27 or 28) - optional bytes signature_r = 3; // Computed signature R component (256 bit) - optional bytes signature_s = 4; // Computed signature S component (256 bit) -} - -/** - * Request: Transaction payload data. - * @prev EthereumTxRequest - * @next EthereumTxRequest - */ -message EthereumTxAck { - optional bytes data_chunk = 1; // Bytes from transaction payload (<= 1024 bytes) -} - -//////////////////////////////////////// -// Ethereum: Message signing messages // -//////////////////////////////////////// - -/** - * Request: Ask device to sign message - * @next EthereumMessageSignature - * @next Failure - */ -message EthereumSignMessage { - repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - required bytes message = 2; // message to be signed -} - -/** - * Request: Ask device to verify message - * @next Success - * @next Failure - */ -message EthereumVerifyMessage { - optional bytes address = 1; // address to verify - optional bytes signature = 2; // signature to verify - optional bytes message = 3; // message to verify -} - -/** - * Response: Signed message - * @prev EthereumSignMessage - */ -message EthereumMessageSignature { - optional bytes address = 1; // address used to sign the message - optional bytes signature = 2; // signature of the message -} - -/////////////////////// -// Identity messages // -/////////////////////// - -/** - * Request: Ask device to sign identity - * @next SignedIdentity - * @next Failure - */ -message SignIdentity { - optional IdentityType identity = 1; // identity - optional bytes challenge_hidden = 2; // non-visible challenge - optional string challenge_visual = 3; // challenge shown on display (e.g. date+time) - optional string ecdsa_curve_name = 4; // ECDSA curve name to use -} - -/** - * Response: Device provides signed identity - * @prev SignIdentity - */ -message SignedIdentity { - optional string address = 1; // identity address - optional bytes public_key = 2; // identity public key - optional bytes signature = 3; // signature of the identity data -} - -/////////////////// -// ECDH messages // -/////////////////// - -/** - * Request: Ask device to generate ECDH session key - * @next ECDHSessionKey - * @next Failure - */ -message GetECDHSessionKey { - optional IdentityType identity = 1; // identity - optional bytes peer_public_key = 2; // peer's public key - optional string ecdsa_curve_name = 3; // ECDSA curve name to use -} - -/** - * Response: Device provides ECDH session key - * @prev GetECDHSessionKey - */ -message ECDHSessionKey { - optional bytes session_key = 1; // ECDH session key -} - -/////////////////// -// U2F messages // -/////////////////// - -/** - * Request: Set U2F counter - * @next Success - */ -message SetU2FCounter { - optional uint32 u2f_counter = 1; // counter -} - -///////////////////////// -// Bootloader messages // -///////////////////////// - -/** - * Request: Ask device to erase its firmware (so it can be replaced via FirmwareUpload) - * @next Success - * @next FirmwareRequest - * @next Failure - */ -message FirmwareErase { - optional uint32 length = 1; // length of new firmware -} - -/** - * Response: Ask for firmware chunk - * @next FirmwareUpload - */ -message FirmwareRequest { - optional uint32 offset = 1; // offset of requested firmware chunk - optional uint32 length = 2; // length of requested firmware chunk -} - -/** - * Request: Send firmware in binary form to the device - * @next Success - * @next Failure - */ -message FirmwareUpload { - required bytes payload = 1; // firmware to be loaded into device - optional bytes hash = 2; // hash of the payload -} - - -/** - * Request: Perform a device self-test - * @next Success - * @next Failure - */ -message SelfTest { - optional bytes payload = 1; // payload to be used in self-test -} - -////////////////// -// NEM messages // -////////////////// - -/** - * Request: Ask device for NEM address corresponding to address_n path - * @next PassphraseRequest - * @next NEMAddress - * @next Failure - */ -message NEMGetAddress { - repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - optional uint32 network = 2; // Network ID (0x68 = Mainnet, 0x98 = Testnet, 0x60 = Mijin) - optional bool show_display = 3; // Optionally show on display before sending the result -} - -/** - * Response: Contains NEM address derived from device private seed - * @prev NEMGetAddress - */ -message NEMAddress { - required string address = 1; // NEM address in Base32 encoding -} - -/** - * Request: Ask device to sign transaction - * @next NEMSignedTx - * @next Failure - */ -message NEMSignTx { - optional NEMTransactionCommon transaction = 1; // Common part of transaction - optional NEMTransactionCommon multisig = 2; // Common part of inner transaction for multisig transactions - optional NEMTransfer transfer = 3; // Transfer transaction part - optional bool cosigning = 4; // Whether cosigning or initiating the multisig transaction - optional NEMProvisionNamespace provision_namespace = 5; // Provision namespace part - optional NEMMosaicCreation mosaic_creation = 6; // Mosaic definition creation part - optional NEMMosaicSupplyChange supply_change = 7; // Mosaic supply change part - optional NEMAggregateModification aggregate_modification = 8; // Aggregate modification part - optional NEMImportanceTransfer importance_transfer = 9; // Importance transfer part -} - -/** - * Response: Contains NEM transaction data and signature - * @prev NEMSignTx - */ -message NEMSignedTx { - optional bytes data = 1; // Transaction data - optional bytes signature = 2; // Signature for the transaction -} - -/** - * Request: Ask device to decrypt NEM transaction payload - * @next NEMDecryptedMessage - * @next Failure - */ -message NEMDecryptMessage { - repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - optional uint32 network = 2; // Network ID (0x68 = Mainnet, 0x98 = Testnet, 0x60 = Mijin) - optional bytes public_key = 3; // Public key of the other party - optional bytes payload = 4; // Actual message data (encrypted) -} - -/** - * Response: Contains decrypted NEM transaction payload - * @prev NEMDecryptMessage - */ -message NEMDecryptedMessage { - optional bytes payload = 1; // Actual message data (unencrypted) -} - -/////////////////// -// CoSi messages // -/////////////////// - -/** - * Request: Ask device to commit to CoSi signing - * @next CosiCommitment - * @next Failure - */ -message CosiCommit { - repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - optional bytes data = 2; // Data to be signed -} - -/** - * Response: Contains a CoSi commitment - * @prev CosiCommit - */ -message CosiCommitment { - optional bytes commitment = 1; // Commitment - optional bytes pubkey = 2; // Public key -} - -/** - * Request: Ask device to sign using CoSi - * @next CosiSignature - * @next Failure - */ -message CosiSign { - repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - optional bytes data = 2; // Data to be signed - optional bytes global_commitment = 3; // Aggregated commitment - optional bytes global_pubkey = 4; // Aggregated public key -} - -/** - * Response: Contains a CoSi signature - * @prev CosiSign - */ -message CosiSignature { - optional bytes signature = 1; // Signature -} - -////////////////////// -// Stellar messages // -////////////////////// - -/** - * Request: Public key at the specified index - * @next StellarPublicKey - */ -message StellarGetPublicKey { - repeated uint32 address_n = 1; // BIP-32 path. For compatibility with other wallets, must be m/44'/148'/index' - optional bool show_display = 2; // optionally show on display before sending the result -} - -/** - * Response: Public key for the given index - * @prev StellarGetPublicKey - */ -message StellarPublicKey { - optional bytes public_key = 1; // Raw bytes of the public key (no version or checksum) -} - -/** - * Request: Address at the specified index - * @next StellarAddress - */ -message StellarGetAddress { - repeated uint32 address_n = 1; // BIP-32 path. For compatibility with other wallets, must be m/44'/148'/index' - optional bool show_display = 2; // optionally show on display before sending the result -} - -/** - * Response: Address for the given index - * @prev StellarGetAddress - */ -message StellarAddress { - optional string address = 1; // Address in Stellar format (base32 of a pubkey with checksum) -} - -/** - * Request: ask device to sign Stellar transaction - * @next StellarTxOpRequest - */ -message StellarSignTx { - optional uint32 protocol_version = 1; // version of the protofbuf messaging protocol the client is using - repeated uint32 address_n = 2; // BIP-32 path. For compatibility with other wallets, must be m/44'/148'/index' - optional string network_passphrase = 3; // passphrase for signing messages on the destination network - optional string source_account = 4; // source account address - optional uint32 fee = 5; // Fee (in stroops) for the transaction - optional uint64 sequence_number = 6; // transaction sequence number - optional uint32 timebounds_start = 8; // unix timestamp (client must truncate this to 32 bytes) - optional uint32 timebounds_end = 9; // unix timestamp (client must truncate this to 32 bytes) - optional uint32 memo_type = 10; // 0 = none, 1 = text, 2 = id, 3 = hash, 4 = return - optional string memo_text = 11; // up to 28 characters (4 bytes are for length) - optional uint64 memo_id = 12; // 8-byte uint64 - optional bytes memo_hash = 13; // 32 bytes representing a hash - optional uint32 num_operations = 14; // number of operations in this transaction -} - -/** - * Response: device is ready for client to send the next operation - * @prev StellarSignTx - * @next StellarPaymentOp - * @next StellarCreateAccountOp - * @next StellarPathPaymentOp - * @next StellarManageOfferOp - * @next StellarCreatePassiveOfferOp - * @next StellarSetOptionsOp - * @next StellarChangeTrustOp - * @next StellarAllowTrustOp - * @next StellarAccountMergeOp - * @next StellarManageDataOp - * @next StellarBumpSequenceOp - */ -message StellarTxOpRequest { -} - -/** - * Request: ask device to confirm this operation type - * @prev StellarTxOpRequest - * @next StellarTxOpRequest - * @next StellarSignedTx - */ -message StellarPaymentOp { - optional string source_account = 1; // (optional) source account address - - optional string destination_account = 2; // destination account address - optional StellarAssetType asset = 3; // asset involved in the operation - optional sint64 amount = 4; // amount of the given asset to pay -} - -/** - * Request: ask device to confirm this operation type - * @prev StellarTxOpRequest - * @next StellarTxOpRequest - * @next StellarSignedTx - */ -message StellarCreateAccountOp { - optional string source_account = 1; // (optional) source account address - - optional string new_account = 2; // account address to create - optional sint64 starting_balance = 3; // initial starting balance for the new account -} - -/** - * Request: ask device to confirm this operation type - * @prev StellarTxOpRequest - * @next StellarTxOpRequest - * @next StellarSignedTx - */ -message StellarPathPaymentOp { - optional string source_account = 1; // (optional) source address - - optional StellarAssetType send_asset = 2; - optional sint64 send_max = 3; - optional string destination_account = 4; - optional StellarAssetType destination_asset = 5; - optional sint64 destination_amount = 6; - repeated StellarAssetType paths = 7; -} - -/** - * Request: ask device to confirm this operation type - * @prev StellarTxOpRequest - * @next StellarTxOpRequest - * @next StellarSignedTx - */ -message StellarManageOfferOp { - optional string source_account = 1; // (optional) source account address - - optional StellarAssetType selling_asset = 2; - optional StellarAssetType buying_asset = 3; - optional sint64 amount = 4; - optional uint32 price_n = 5; // Price numerator - optional uint32 price_d = 6; // Price denominator - optional uint64 offer_id = 7; // Offer ID for updating an existing offer -} - -/** - * Request: ask device to confirm this operation type - * @prev StellarTxOpRequest - * @next StellarTxOpRequest - * @next StellarSignedTx - */ -message StellarCreatePassiveOfferOp { - optional string source_account = 1; // (optional) source account address - - optional StellarAssetType selling_asset = 2; - optional StellarAssetType buying_asset = 3; - optional sint64 amount = 4; - optional uint32 price_n = 5; // Price numerator - optional uint32 price_d = 6; // Price denominator -} - -/** - * Request: ask device to confirm this operation type - * @prev StellarTxOpRequest - * @next StellarTxOpRequest - * @next StellarSignedTx - */ -message StellarSetOptionsOp { - optional string source_account = 1; // (optional) source account address - - optional string inflation_destination_account = 2; // (optional) inflation destination address - optional uint32 clear_flags = 3; - optional uint32 set_flags = 4; - optional uint32 master_weight = 5; - optional uint32 low_threshold = 6; - optional uint32 medium_threshold = 7; - optional uint32 high_threshold = 8; - optional string home_domain = 9; - optional uint32 signer_type = 10; - optional bytes signer_key = 11; - optional uint32 signer_weight = 12; -} - -/** - * Request: ask device to confirm this operation type - * @prev StellarTxOpRequest - * @next StellarTxOpRequest - * @next StellarSignedTx - */ -message StellarChangeTrustOp { - optional string source_account = 1; // (optional) source account address - - optional StellarAssetType asset = 2; - optional uint64 limit = 3; -} - -/** - * Request: ask device to confirm this operation type - * @prev StellarTxOpRequest - * @next StellarTxOpRequest - * @next StellarSignedTx - */ -message StellarAllowTrustOp { - optional string source_account = 1; // (optional) source account address - - optional string trusted_account = 2; // The account being allowed to hold the asset - optional uint32 asset_type = 3; // 1 = 4-character, 2 = 12-character - optional string asset_code = 4; // human-readable asset code - optional uint32 is_authorized = 5; -} - -/** - * Request: ask device to confirm this operation type - * @prev StellarTxOpRequest - * @next StellarTxOpRequest - * @next StellarSignedTx - */ -message StellarAccountMergeOp { - optional string source_account = 1; // (optional) source account address - optional string destination_account = 2; // destination account address -} - -/** - * Request: ask device to confirm this operation type - * @prev StellarTxOpRequest - * @next StellarTxOpRequest - * @next StellarSignedTx - */ -message StellarManageDataOp { - optional string source_account = 1; // (optional) source account address - - optional string key = 2; - optional bytes value = 3; // 64 bytes of arbitrary data -} - -/** - * Request: ask device to confirm this operation type - * @prev StellarTxOpRequest - * @next StellarTxOpRequest - * @next StellarSignedTx - */ -message StellarBumpSequenceOp { - optional string source_account = 1; // (optional) source account address - - optional uint64 bump_to = 2; // new sequence number -} - -/** - * Response: signature for transaction - * @prev StellarPaymentOp - * @prev StellarCreateAccountOp - * @prev StellarPathPaymentOp - * @prev StellarManageOfferOp - * @prev StellarCreatePassiveOfferOp - * @prev StellarSetOptionsOp - * @prev StellarChangeTrustOp - * @prev StellarAllowTrustOp - * @prev StellarAccountMergeOp - * @prev StellarManageDataOp - * @prev StellarBumpSequenceOp - */ -message StellarSignedTx { - optional bytes public_key = 1; // public key for the private key used to sign data - optional bytes signature = 2; // signature suitable for sending to the Stellar network -} - - -//////////////////// -// Lisk messages // -////////////////// - -/** - * Request: Ask device for Lisk public key corresponding to address_n path - * @next LiskPublicKey -*/ -message LiskGetPublicKey { - repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - optional bool show_display = 2; // Optionally show on display before sending the result -} - -/** - * Response: Contains Lisk public key derived from device private seed - * @prev LiskGetPublicKey -*/ -message LiskPublicKey { - optional bytes public_key = 1; // Lisk public key -} - -/** - * Request: Ask device for Lisk address corresponding to address_n path - * @next PassphraseRequest - * @next LiskAddress - * @next Failure - */ -message LiskGetAddress { - repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - optional bool show_display = 2; // Optionally show on display before sending the result -} - -/** - * Response: Contains Lisk address derived from device private seed - * @prev LiskGetAddress - */ -message LiskAddress { - optional string address = 1; // Lisk address -} - -/** - * Request: Ask device to sign Lisk transaction - * @next LiskSignedTx - */ -message LiskSignTx { - repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - optional LiskTransactionCommon transaction = 2; // Lisk transaction structure -} - -/** -* Response: Contains Lisk transaction signature -* @prev LiskSignTx -*/ -message LiskSignedTx { - optional bytes signature = 1; -} - -/** -* Request: Ask device to sign message -* @next LiskMessageSignature -* @next Failure -*/ -message LiskSignMessage { - repeated uint32 address_n = 1; - optional bytes message = 2; -} - -/** -* Response: Signed message -* @prev LiskSignMessage -*/ -message LiskMessageSignature { - optional bytes public_key = 1; - optional bytes signature = 2; -} - -/** -* Request: Ask device to verify message -* @next Success -* @next Failure -*/ -message LiskVerifyMessage { - optional bytes public_key = 1; - optional bytes signature = 2; - optional bytes message = 3; -} - - -/** - * Request: Ask device for Tezos address corresponding to address_n path - * @next PassphraseRequest - * @next TezosAddress - * @next Failure - */ -message TezosGetAddress { - repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - optional bool show_display = 2; // optionally show on display before sending the result -} - -/** - * Response: Contains Tezos address derived from device private seed - * @prev TezosGetAddress - */ -message TezosAddress { - optional string address = 1; // Coin address in Base58 encoding -} - -/** - * Request: Ask device to sign Tezos transaction - * @next TezosSignedTx - */ -message TezosSignTx { - repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - optional TezosOperationCommon operation = 2; // Tezos operation structure - optional TezosTransactionType transaction = 3; // Tezos transaction part - optional TezosOriginationType origination = 4; // Tezos origination part - optional TezosDelegationType delegation = 5; // Tezos delegation part -} - -/** -* Response: Contains Tezos transaction signature -* @prev TezosSignTx -*/ -message TezosSignedTx { - optional bytes signature = 1; // Tezos transaction signature - optional bytes sig_op_contents = 2; // Signed operation contents - optional string operation_hash = 3; // b58 check encoded blake2b hashed operation contents -} - -/** - * Request: Ask device for Tezos public key corresponding to address_n path - * @next TezosPublicKey - */ -message TezosGetPublicKey { - repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - optional bool show_display = 2; // Optionally show on display before sending the result -} - -/** - * Response: Contains Tezos public key derived from device private seed - * @prev TezosGetPublicKey -*/ -message TezosPublicKey { - optional bytes public_key = 1; // Tezos public key -} - -///////////////////////////////////////////////////////////// -// Debug messages (only available if DebugLink is enabled) // -///////////////////////////////////////////////////////////// - -/** - * Request: "Press" the button on the device - * @next Success - */ -message DebugLinkDecision { - optional bool yes_no = 1; // true for "Confirm", false for "Cancel" - optional bool up_down = 2; // true for scroll up, false for scroll down - optional string input = 3; // keyboard input -} - -/** - * Request: Computer asks for device state - * @next DebugLinkState - */ -message DebugLinkGetState { -} - -/** - * Response: Device current state - * @prev DebugLinkGetState - */ -message DebugLinkState { - optional bytes layout = 1; // raw buffer of display - optional string pin = 2; // current PIN, blank if PIN is not set/enabled - optional string matrix = 3; // current PIN matrix - optional string mnemonic = 4; // current BIP-39 mnemonic - optional HDNodeType node = 5; // current BIP-32 node - optional bool passphrase_protection = 6; // is node/mnemonic encrypted using passphrase? - optional string reset_word = 7; // word on device display during ResetDevice workflow - optional bytes reset_entropy = 8; // current entropy during ResetDevice workflow - optional string recovery_fake_word = 9; // (fake) word on display during RecoveryDevice workflow - optional uint32 recovery_word_pos = 10; // index of mnemonic word the device is expecting during RecoveryDevice workflow - optional uint32 reset_word_pos = 11; // index of mnemonic word the device is expecting during ResetDevice workflow -} - -/** - * Request: Ask device to restart - */ -message DebugLinkStop { -} - -/** - * Response: Device wants host to log event - */ -message DebugLinkLog { - optional uint32 level = 1; - optional string bucket = 2; - optional string text = 3; -} - -/** - * Request: Read memory from device - * @next DebugLinkMemory - */ -message DebugLinkMemoryRead { - optional uint32 address = 1; - optional uint32 length = 2; -} - -/** - * Response: Device sends memory back - * @prev DebugLinkMemoryRead - */ -message DebugLinkMemory { - optional bytes memory = 1; -} - -/** - * Request: Write memory to device. - * WARNING: Writing to the wrong location can irreparably break the device. - */ -message DebugLinkMemoryWrite { - optional uint32 address = 1; - optional bytes memory = 2; - optional bool flash = 3; -} - -/** - * Request: Erase block of flash on device - * WARNING: Writing to the wrong location can irreparably break the device. - */ -message DebugLinkFlashErase { - optional uint32 sector = 1; -} - -/** - * Request: Ask device for Cardano address - * @next CardanoAddress - * @next Failure - */ -message CardanoGetAddress { - repeated uint32 address_n = 1; // BIP-32-style path to derive the key from master node - optional bool show_display = 2; // optionally prompt for confirmation on trezor display -} - -/** - * Request: Ask device for Cardano address - * @next CardanoAddress - * @next Failure - */ -message CardanoAddress { - optional string address = 1; // Base58 cardano address -} - -/** - * Request: Ask device to sign Cardano message - * @next CardanoMessageSignature - * @next Failure - */ -message CardanoSignMessage { - repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - optional bytes message = 2; // message to be signed -} - -/** - * Request: Ask device for public key corresponding to address_n path - * @next CardanoPublicKey - * @next Failure - */ -message CardanoGetPublicKey { - repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node -} - -/** - * Response: Contains public key derived from device private seed - * @prev CardanoGetPublicKey - */ -message CardanoPublicKey { - optional string xpub = 1; // Xpub key - optional HDNodeType node = 2; // BIP-32 public node - optional string root_hd_passphrase = 3; // Hd passphrase for root in hex format -} - -/** - * Request: Ask device to verify Cardano message - * @next Success - * @next Failure - */ -message CardanoVerifyMessage { - optional bytes public_key = 1; // Public key which was used to sign message - optional bytes signature = 2; // signature to verify - optional bytes message = 3; // message to verify -} - -/** - * Response: Signed Cardano message - * @prev CardanoSignMessage - */ -message CardanoMessageSignature { - optional bytes public_key = 1; // public key which was used to sign mesage - optional bytes signature = 2; // signature of the message -} - -/** - * Request: Ask device to sign Cardano transaction - * @next CardanoSignedTransaction - * @next CardanoTxRequest - * @next Failure - */ -message CardanoSignTransaction { - repeated CardanoTxInputType inputs = 1; // inputs to be used in transaction - repeated CardanoTxOutputType outputs = 2; // outputs to be used in transaction - optional uint32 transactions_count = 3; // transactions count -} - -/** - * Response: Serialised signed cardano transaction if tx_index is not specified. - * If tx_index is specified, trezor will wait for transaction - * @prev CardanoSignTransaction - * @next CardanoTxAck - */ -message CardanoTxRequest { - optional uint32 tx_index = 1; // index of requested transaction - optional bytes tx_hash = 2; // hash of the signed transaction - optional bytes tx_body = 3; // serialised body of the signed transaction -} - -/** - * Response: Serialised signed cardano transaction - * @prev CardanoSignTransaction - */ -message CardanoSignedTransaction { - optional bytes tx_hash = 1; // hash of the signed transaction - optional bytes tx_body = 2; // serialised body of the signed transaction -} - -/** - * Request: Reported transaction data - * @prev CardanoTxRequest - * @next CardanoTxRequest - */ -message CardanoTxAck { - optional bytes transaction = 1; + // Management + MessageType_Initialize = 0 [(wire_in) = true, (wire_tiny) = true]; + MessageType_Ping = 1 [(wire_in) = true]; + MessageType_Success = 2 [(wire_out) = true]; + MessageType_Failure = 3 [(wire_out) = true]; + MessageType_ChangePin = 4 [(wire_in) = true]; + MessageType_WipeDevice = 5 [(wire_in) = true]; + MessageType_GetEntropy = 9 [(wire_in) = true]; + MessageType_Entropy = 10 [(wire_out) = true]; + MessageType_LoadDevice = 13 [(wire_in) = true]; + MessageType_ResetDevice = 14 [(wire_in) = true]; + MessageType_Features = 17 [(wire_out) = true]; + MessageType_PinMatrixRequest = 18 [(wire_out) = true]; + MessageType_PinMatrixAck = 19 [(wire_in) = true, (wire_tiny) = true, (wire_no_fsm) = true]; + MessageType_Cancel = 20 [(wire_in) = true, (wire_tiny) = true]; + MessageType_ClearSession = 24 [(wire_in) = true]; + MessageType_ApplySettings = 25 [(wire_in) = true]; + MessageType_ButtonRequest = 26 [(wire_out) = true]; + MessageType_ButtonAck = 27 [(wire_in) = true, (wire_tiny) = true, (wire_no_fsm) = true]; + MessageType_ApplyFlags = 28 [(wire_in) = true]; + MessageType_BackupDevice = 34 [(wire_in) = true]; + MessageType_EntropyRequest = 35 [(wire_out) = true]; + MessageType_EntropyAck = 36 [(wire_in) = true]; + MessageType_PassphraseRequest = 41 [(wire_out) = true]; + MessageType_PassphraseAck = 42 [(wire_in) = true, (wire_tiny) = true, (wire_no_fsm) = true]; + MessageType_PassphraseStateRequest = 77 [(wire_out) = true]; + MessageType_PassphraseStateAck = 78 [(wire_in) = true, (wire_tiny) = true, (wire_no_fsm) = true]; + MessageType_RecoveryDevice = 45 [(wire_in) = true]; + MessageType_WordRequest = 46 [(wire_out) = true]; + MessageType_WordAck = 47 [(wire_in) = true]; + MessageType_GetFeatures = 55 [(wire_in) = true]; + MessageType_SetU2FCounter = 63 [(wire_in) = true]; + + // Bootloader + MessageType_FirmwareErase = 6 [(wire_in) = true, (wire_bootloader) = true]; + MessageType_FirmwareUpload = 7 [(wire_in) = true, (wire_bootloader) = true]; + MessageType_FirmwareRequest = 8 [(wire_out) = true, (wire_bootloader) = true]; + MessageType_SelfTest = 32 [(wire_in) = true, (wire_bootloader) = true]; + + // Bitcoin + MessageType_GetPublicKey = 11 [(wire_in) = true]; + MessageType_PublicKey = 12 [(wire_out) = true]; + MessageType_SignTx = 15 [(wire_in) = true]; + MessageType_TxRequest = 21 [(wire_out) = true]; + MessageType_TxAck = 22 [(wire_in) = true]; + MessageType_GetAddress = 29 [(wire_in) = true]; + MessageType_Address = 30 [(wire_out) = true]; + MessageType_SignMessage = 38 [(wire_in) = true]; + MessageType_VerifyMessage = 39 [(wire_in) = true]; + MessageType_MessageSignature = 40 [(wire_out) = true]; + + // Crypto + MessageType_CipherKeyValue = 23 [(wire_in) = true]; + MessageType_CipheredKeyValue = 48 [(wire_out) = true]; + MessageType_SignIdentity = 53 [(wire_in) = true]; + MessageType_SignedIdentity = 54 [(wire_out) = true]; + MessageType_GetECDHSessionKey = 61 [(wire_in) = true]; + MessageType_ECDHSessionKey = 62 [(wire_out) = true]; + MessageType_CosiCommit = 71 [(wire_in) = true]; + MessageType_CosiCommitment = 72 [(wire_out) = true]; + MessageType_CosiSign = 73 [(wire_in) = true]; + MessageType_CosiSignature = 74 [(wire_out) = true]; + + // Debug + MessageType_DebugLinkDecision = 100 [(wire_debug_in) = true, (wire_tiny) = true, (wire_no_fsm) = true]; + MessageType_DebugLinkGetState = 101 [(wire_debug_in) = true, (wire_tiny) = true]; + MessageType_DebugLinkState = 102 [(wire_debug_out) = true]; + MessageType_DebugLinkStop = 103 [(wire_debug_in) = true]; + MessageType_DebugLinkLog = 104 [(wire_debug_out) = true]; + MessageType_DebugLinkMemoryRead = 110 [(wire_debug_in) = true]; + MessageType_DebugLinkMemory = 111 [(wire_debug_out) = true]; + MessageType_DebugLinkMemoryWrite = 112 [(wire_debug_in) = true]; + MessageType_DebugLinkFlashErase = 113 [(wire_debug_in) = true]; + + // Ethereum + MessageType_EthereumGetAddress = 56 [(wire_in) = true]; + MessageType_EthereumAddress = 57 [(wire_out) = true]; + MessageType_EthereumSignTx = 58 [(wire_in) = true]; + MessageType_EthereumTxRequest = 59 [(wire_out) = true]; + MessageType_EthereumTxAck = 60 [(wire_in) = true]; + MessageType_EthereumSignMessage = 64 [(wire_in) = true]; + MessageType_EthereumVerifyMessage = 65 [(wire_in) = true]; + MessageType_EthereumMessageSignature = 66 [(wire_out) = true]; + + // NEM + MessageType_NEMGetAddress = 67 [(wire_in) = true]; + MessageType_NEMAddress = 68 [(wire_out) = true]; + MessageType_NEMSignTx = 69 [(wire_in) = true]; + MessageType_NEMSignedTx = 70 [(wire_out) = true]; + MessageType_NEMDecryptMessage = 75 [(wire_in) = true]; + MessageType_NEMDecryptedMessage = 76 [(wire_out) = true]; + + // Lisk + MessageType_LiskGetAddress = 114 [(wire_in) = true]; + MessageType_LiskAddress = 115 [(wire_out) = true]; + MessageType_LiskSignTx = 116 [(wire_in) = true]; + MessageType_LiskSignedTx = 117 [(wire_out) = true]; + MessageType_LiskSignMessage = 118 [(wire_in) = true]; + MessageType_LiskMessageSignature = 119 [(wire_out) = true]; + MessageType_LiskVerifyMessage = 120 [(wire_in) = true]; + MessageType_LiskGetPublicKey = 121 [(wire_in) = true]; + MessageType_LiskPublicKey = 122 [(wire_out) = true]; + + // Tezos + MessageType_TezosGetAddress = 150 [(wire_in) = true]; + MessageType_TezosAddress = 151 [(wire_out) = true]; + MessageType_TezosSignTx = 152 [(wire_in) = true]; + MessageType_TezosSignedTx = 153 [(wire_out) = true]; + MessageType_TezosGetPublicKey = 154 [(wire_in) = true]; + MessageType_TezosPublicKey = 155 [(wire_out) = true]; + + // Stellar + MessageType_StellarGetPublicKey = 200 [(wire_in) = true]; + MessageType_StellarPublicKey = 201 [(wire_out) = true]; + MessageType_StellarSignTx = 202 [(wire_in) = true]; + MessageType_StellarTxOpRequest = 203 [(wire_out) = true]; + MessageType_StellarGetAddress = 207 [(wire_in) = true]; + MessageType_StellarAddress = 208 [(wire_out) = true]; + MessageType_StellarCreateAccountOp = 210 [(wire_in) = true]; + MessageType_StellarPaymentOp = 211 [(wire_in) = true]; + MessageType_StellarPathPaymentOp = 212 [(wire_in) = true]; + MessageType_StellarManageOfferOp = 213 [(wire_in) = true]; + MessageType_StellarCreatePassiveOfferOp = 214 [(wire_in) = true]; + MessageType_StellarSetOptionsOp = 215 [(wire_in) = true]; + MessageType_StellarChangeTrustOp = 216 [(wire_in) = true]; + MessageType_StellarAllowTrustOp = 217 [(wire_in) = true]; + MessageType_StellarAccountMergeOp = 218 [(wire_in) = true]; + // Omitted: inflation is not a supported operation, would be 219 + MessageType_StellarManageDataOp = 220 [(wire_in) = true]; + MessageType_StellarBumpSequenceOp = 221 [(wire_in) = true]; + MessageType_StellarSignedTx = 230 [(wire_out) = true]; + + // Cardano + MessageType_CardanoSignMessage = 300 [(wire_in) = true]; + MessageType_CardanoMessageSignature = 301 [(wire_out) = true]; + MessageType_CardanoVerifyMessage = 302 [(wire_in) = true]; + MessageType_CardanoSignTransaction = 303 [(wire_in) = true]; + MessageType_CardanoTxRequest = 304 [(wire_out) = true]; + MessageType_CardanoGetPublicKey = 305 [(wire_in) = true]; + MessageType_CardanoPublicKey = 306 [(wire_out) = true]; + MessageType_CardanoGetAddress = 307 [(wire_in) = true]; + MessageType_CardanoAddress = 308 [(wire_out) = true]; + MessageType_CardanoTxAck = 309 [(wire_in) = true]; + MessageType_CardanoSignedTransaction = 310 [(wire_out) = true]; } From 1b9b7d6c8ed44b24a7f105a83dc10ea7cc796ed9 Mon Sep 17 00:00:00 2001 From: matejcik Date: Wed, 4 Jul 2018 17:07:37 +0200 Subject: [PATCH 418/767] pb2py: properly handle nested messages and enums --- protob/pb2py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/protob/pb2py b/protob/pb2py index 933fb8164..6323d7f37 100755 --- a/protob/pb2py +++ b/protob/pb2py @@ -116,6 +116,8 @@ class Descriptor: for file in self.files: self.messages += file.message_type self.enums += file.enum_type + for message in file.message_type: + self._nested_types_from_message(message) if not self.messages and not self.enums: raise RuntimeError("No messages and no enums found.") @@ -125,6 +127,12 @@ class Descriptor: self.out_dir = None + def _nested_types_from_message(self, message): + self.messages += message.nested_type + self.enums += message.enum_type + for nested in message.nested_type: + self._nested_types_from_message(nested) + def find_message_types(self, message_type): message_types = {} try: From f215c8cb5c26eb3721ec5963fd200212d4254d91 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 4 Jul 2018 17:30:20 +0200 Subject: [PATCH 419/767] protob: prev_block_height_bip115 is uint32 not bytes --- protob/messages-bitcoin.proto | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/protob/messages-bitcoin.proto b/protob/messages-bitcoin.proto index fe99d3421..e0f63c4d3 100644 --- a/protob/messages-bitcoin.proto +++ b/protob/messages-bitcoin.proto @@ -204,7 +204,7 @@ message TxAck { optional uint32 decred_tree = 9; optional uint32 decred_script_version = 10; optional bytes prev_block_hash_bip115 = 11; // block hash of previous transaction output (for bip115 implementation) - optional bytes prev_block_height_bip115 = 12; // block height of previous transaction output (for bip115 implementation) + optional uint32 prev_block_height_bip115 = 12; // block height of previous transaction output (for bip115 implementation) } /** * Structure representing compiled transaction output @@ -226,7 +226,7 @@ message TxAck { optional bytes op_return_data = 6; // defines op_return data; script_type must be PAYTOOPRETURN, amount must be 0 optional uint32 decred_script_version = 7; optional bytes block_hash_bip115 = 8; // block hash of existing block (recommended current_block - 300) (for bip115 implementation) - optional bytes block_height_bip115 = 9; // block height of existing block (recommended current_block - 300) (for bip115 implementation) + optional uint32 block_height_bip115 = 9; // block height of existing block (recommended current_block - 300) (for bip115 implementation) enum OutputScriptType { PAYTOADDRESS = 0; // used for all addresses (bitcoin, p2sh, witness) PAYTOSCRIPTHASH = 1; // p2sh address (deprecated; use PAYTOADDRESS) From 5eae03131c89dabaa4caa8c5cb96742707206541 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 4 Jul 2018 17:37:55 +0200 Subject: [PATCH 420/767] defs: fix zencash backend uri --- defs/coins/zencash.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/defs/coins/zencash.json b/defs/coins/zencash.json index c62eac47e..c2a2c360f 100644 --- a/defs/coins/zencash.json +++ b/defs/coins/zencash.json @@ -34,7 +34,7 @@ "min_address_length": 35, "max_address_length": 95, "bitcore": [ - "https://explorer.zen-solutions.io/api" + "https://explorer.zensystem.io/insight-api-zen" ], "blockbook": [] } From 1ee1afd978390913e9cbfd9cea47624f2bc4e077 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 5 Jul 2018 13:12:47 +0200 Subject: [PATCH 421/767] protob: drop StellarSignTx.protocol_version --- protob/messages-stellar.proto | 1 - 1 file changed, 1 deletion(-) diff --git a/protob/messages-stellar.proto b/protob/messages-stellar.proto index 3ec5635d4..338de8afe 100644 --- a/protob/messages-stellar.proto +++ b/protob/messages-stellar.proto @@ -52,7 +52,6 @@ message StellarAddress { * @next StellarTxOpRequest */ message StellarSignTx { - optional uint32 protocol_version = 1; // version of the protofbuf messaging protocol the client is using repeated uint32 address_n = 2; // BIP-32 path. For compatibility with other wallets, must be m/44'/148'/index' optional string network_passphrase = 3; // passphrase for signing messages on the destination network optional string source_account = 4; // source account address From 2301f7034c1b7a3d1b0be5d4447d432593649a1e Mon Sep 17 00:00:00 2001 From: FundacionPesetacoin Date: Fri, 6 Jul 2018 03:40:25 -0500 Subject: [PATCH 422/767] Update pesetacoin.json (#161) --- defs/coins/pesetacoin.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/defs/coins/pesetacoin.json b/defs/coins/pesetacoin.json index 42891fa6c..2ab79f22f 100644 --- a/defs/coins/pesetacoin.json +++ b/defs/coins/pesetacoin.json @@ -3,7 +3,7 @@ "coin_shortcut": "PTC", "coin_label": "Pesetacoin", "website": "http://pesetacoin.info", - "github": "https://github.com/FundacionPesetacoin/Pesetacoin-0.9.1-Oficial", + "github": "https://github.com/FundacionPesetacoin/PesetacoinCore", "maintainer": "Rw ", "curve_name": "secp256k1", "address_type": 47, @@ -12,8 +12,8 @@ "minfee_kb": 1000, "signed_message_header": "Pesetacoin Signed Message:\n", "hash_genesis_block": "edfe5830b53251bfff733600b1cd5c192e761c011b055f07924634818c906438", - "xpub_magic": 76079604, - "xprv_magic": 76071982, + "xpub_magic": 76071982, + "xprv_magic": 76079604, "xpub_magic_segwit_p2sh": null, "xpub_magic_segwit_native": null, "bech32_prefix": "null", From 0cc19fcab99e9d3d8a817f4ca9b9e9cd345432c2 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 9 Jul 2018 21:31:46 +0200 Subject: [PATCH 423/767] defs: enable Groestlcoin for T2 --- defs/support.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/defs/support.json b/defs/support.json index 6a817355c..53eb24dc6 100644 --- a/defs/support.json +++ b/defs/support.json @@ -37,6 +37,8 @@ "DigiByte": "2.0.5", "Dogecoin": "2.0.5", "Fujicoin": "2.0.5", + "Groestlcoin": "2.0.8", + "Groestlcoin Testnet": "2.0.8", "Litecoin": "2.0.5", "Litecoin Testnet": "2.0.7", "Monacoin": "2.0.5", From 51eeb0ed5fedf1506eb607036e9f16ef43dd8580 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 10 Jul 2018 13:52:03 +0200 Subject: [PATCH 424/767] protob: remove source_account from Stellar messages --- protob/messages-stellar.proto | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/protob/messages-stellar.proto b/protob/messages-stellar.proto index 338de8afe..50414403b 100644 --- a/protob/messages-stellar.proto +++ b/protob/messages-stellar.proto @@ -54,7 +54,6 @@ message StellarAddress { message StellarSignTx { repeated uint32 address_n = 2; // BIP-32 path. For compatibility with other wallets, must be m/44'/148'/index' optional string network_passphrase = 3; // passphrase for signing messages on the destination network - optional string source_account = 4; // source account address optional uint32 fee = 5; // Fee (in stroops) for the transaction optional uint64 sequence_number = 6; // transaction sequence number optional uint32 timebounds_start = 8; // unix timestamp (client must truncate this to 32 bytes) @@ -91,7 +90,6 @@ message StellarTxOpRequest { * @next StellarSignedTx */ message StellarPaymentOp { - optional string source_account = 1; // (optional) source account address optional string destination_account = 2; // destination account address optional StellarAssetType asset = 3; // asset involved in the operation optional sint64 amount = 4; // amount of the given asset to pay @@ -104,7 +102,6 @@ message StellarPaymentOp { * @next StellarSignedTx */ message StellarCreateAccountOp { - optional string source_account = 1; // (optional) source account address optional string new_account = 2; // account address to create optional sint64 starting_balance = 3; // initial starting balance for the new account } @@ -116,7 +113,6 @@ message StellarCreateAccountOp { * @next StellarSignedTx */ message StellarPathPaymentOp { - optional string source_account = 1; // (optional) source address optional StellarAssetType send_asset = 2; optional sint64 send_max = 3; optional string destination_account = 4; @@ -132,7 +128,6 @@ message StellarPathPaymentOp { * @next StellarSignedTx */ message StellarManageOfferOp { - optional string source_account = 1; // (optional) source account address optional StellarAssetType selling_asset = 2; optional StellarAssetType buying_asset = 3; optional sint64 amount = 4; @@ -148,7 +143,6 @@ message StellarManageOfferOp { * @next StellarSignedTx */ message StellarCreatePassiveOfferOp { - optional string source_account = 1; // (optional) source account address optional StellarAssetType selling_asset = 2; optional StellarAssetType buying_asset = 3; optional sint64 amount = 4; @@ -163,7 +157,6 @@ message StellarCreatePassiveOfferOp { * @next StellarSignedTx */ message StellarSetOptionsOp { - optional string source_account = 1; // (optional) source account address optional string inflation_destination_account = 2; // (optional) inflation destination address optional uint32 clear_flags = 3; optional uint32 set_flags = 4; @@ -184,7 +177,6 @@ message StellarSetOptionsOp { * @next StellarSignedTx */ message StellarChangeTrustOp { - optional string source_account = 1; // (optional) source account address optional StellarAssetType asset = 2; optional uint64 limit = 3; } @@ -196,7 +188,6 @@ message StellarChangeTrustOp { * @next StellarSignedTx */ message StellarAllowTrustOp { - optional string source_account = 1; // (optional) source account address optional string trusted_account = 2; // The account being allowed to hold the asset optional uint32 asset_type = 3; // 1 = 4-character, 2 = 12-character optional string asset_code = 4; // human-readable asset code @@ -210,7 +201,6 @@ message StellarAllowTrustOp { * @next StellarSignedTx */ message StellarAccountMergeOp { - optional string source_account = 1; // (optional) source account address optional string destination_account = 2; // destination account address } @@ -221,7 +211,6 @@ message StellarAccountMergeOp { * @next StellarSignedTx */ message StellarManageDataOp { - optional string source_account = 1; // (optional) source account address optional string key = 2; optional bytes value = 3; // 64 bytes of arbitrary data } @@ -233,7 +222,6 @@ message StellarManageDataOp { * @next StellarSignedTx */ message StellarBumpSequenceOp { - optional string source_account = 1; // (optional) source account address optional uint64 bump_to = 2; // new sequence number } From 7358ab16361f3a6d518148f87cc9f10fd968fc12 Mon Sep 17 00:00:00 2001 From: Tomas Susanka Date: Tue, 10 Jul 2018 17:35:31 +0200 Subject: [PATCH 425/767] protobuf: Ripple (#162) --- protob/messages-ripple.proto | 55 ++++++++++++++++++++++++++++++++++++ protob/messages.proto | 6 ++++ 2 files changed, 61 insertions(+) create mode 100644 protob/messages-ripple.proto diff --git a/protob/messages-ripple.proto b/protob/messages-ripple.proto new file mode 100644 index 000000000..7cbe51415 --- /dev/null +++ b/protob/messages-ripple.proto @@ -0,0 +1,55 @@ +syntax = "proto2"; + +// Sugar for easier handling in Java +option java_package = "com.satoshilabs.trezor.lib.protobuf"; +option java_outer_classname = "TrezorMessageRipple"; + +/** + * Request: Address at the specified index + * @next RippleAddress + */ +message RippleGetAddress { + repeated uint32 address_n = 1; // BIP-32 path. For compatibility with other wallets, must be m/44'/144'/index' + optional bool show_display = 2; // optionally show on display before sending the result +} + +/** + * Response: Address for the given index + * @prev RippleGetAddress + */ +message RippleAddress { + optional string address = 1; // Address in Ripple format (base58 of a pubkey with checksum) +} + +/** + * Request: ask device to sign Ripple transaction + * @next RippleSignedTx + */ +message RippleSignTx { + repeated uint32 address_n = 1; // BIP-32 path. For compatibility with other wallets, must be m/44'/144'/index' + optional uint64 fee = 2; // fee (in drops) for the transaction + optional uint32 flags = 3; // transaction flags + optional uint32 sequence = 4; // transaction sequence number + optional uint32 last_ledger_sequence = 5; // see https://developers.ripple.com/reliable-transaction-submission.html#lastledgersequence + optional RipplePayment payment = 6; // Payment transaction type + + /** + * Payment transaction type + * - simple A sends money to B + * - only a subset of fields is supported + * - see https://developers.ripple.com/payment.html + */ + message RipplePayment { + optional uint64 amount = 1; // only XRP is supported at the moment so this an integer + optional string destination = 2; // destination account address + } +} + +/** + * Response: signature for transaction + * @prev RippleSignTx + */ +message RippleSignedTx { + optional bytes signature = 1; + optional bytes serialized_tx = 2; +} diff --git a/protob/messages.proto b/protob/messages.proto index 8f15182c3..f4ff80bf8 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -172,4 +172,10 @@ enum MessageType { MessageType_CardanoAddress = 308 [(wire_out) = true]; MessageType_CardanoTxAck = 309 [(wire_in) = true]; MessageType_CardanoSignedTransaction = 310 [(wire_out) = true]; + + // Ripple + MessageType_RippleGetAddress = 400 [(wire_in) = true]; + MessageType_RippleAddress = 401 [(wire_out) = true]; + MessageType_RippleSignTx = 402 [(wire_in) = true]; + MessageType_RippleSignedTx = 403 [(wire_in) = true]; } From 32850a62624ce1a6612ff545beb706560c3716da Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 10 Jul 2018 20:25:58 +0200 Subject: [PATCH 426/767] Revert "protob: remove source_account from Stellar messages" This reverts commit 51eeb0ed5fedf1506eb607036e9f16ef43dd8580. --- protob/messages-stellar.proto | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/protob/messages-stellar.proto b/protob/messages-stellar.proto index 50414403b..338de8afe 100644 --- a/protob/messages-stellar.proto +++ b/protob/messages-stellar.proto @@ -54,6 +54,7 @@ message StellarAddress { message StellarSignTx { repeated uint32 address_n = 2; // BIP-32 path. For compatibility with other wallets, must be m/44'/148'/index' optional string network_passphrase = 3; // passphrase for signing messages on the destination network + optional string source_account = 4; // source account address optional uint32 fee = 5; // Fee (in stroops) for the transaction optional uint64 sequence_number = 6; // transaction sequence number optional uint32 timebounds_start = 8; // unix timestamp (client must truncate this to 32 bytes) @@ -90,6 +91,7 @@ message StellarTxOpRequest { * @next StellarSignedTx */ message StellarPaymentOp { + optional string source_account = 1; // (optional) source account address optional string destination_account = 2; // destination account address optional StellarAssetType asset = 3; // asset involved in the operation optional sint64 amount = 4; // amount of the given asset to pay @@ -102,6 +104,7 @@ message StellarPaymentOp { * @next StellarSignedTx */ message StellarCreateAccountOp { + optional string source_account = 1; // (optional) source account address optional string new_account = 2; // account address to create optional sint64 starting_balance = 3; // initial starting balance for the new account } @@ -113,6 +116,7 @@ message StellarCreateAccountOp { * @next StellarSignedTx */ message StellarPathPaymentOp { + optional string source_account = 1; // (optional) source address optional StellarAssetType send_asset = 2; optional sint64 send_max = 3; optional string destination_account = 4; @@ -128,6 +132,7 @@ message StellarPathPaymentOp { * @next StellarSignedTx */ message StellarManageOfferOp { + optional string source_account = 1; // (optional) source account address optional StellarAssetType selling_asset = 2; optional StellarAssetType buying_asset = 3; optional sint64 amount = 4; @@ -143,6 +148,7 @@ message StellarManageOfferOp { * @next StellarSignedTx */ message StellarCreatePassiveOfferOp { + optional string source_account = 1; // (optional) source account address optional StellarAssetType selling_asset = 2; optional StellarAssetType buying_asset = 3; optional sint64 amount = 4; @@ -157,6 +163,7 @@ message StellarCreatePassiveOfferOp { * @next StellarSignedTx */ message StellarSetOptionsOp { + optional string source_account = 1; // (optional) source account address optional string inflation_destination_account = 2; // (optional) inflation destination address optional uint32 clear_flags = 3; optional uint32 set_flags = 4; @@ -177,6 +184,7 @@ message StellarSetOptionsOp { * @next StellarSignedTx */ message StellarChangeTrustOp { + optional string source_account = 1; // (optional) source account address optional StellarAssetType asset = 2; optional uint64 limit = 3; } @@ -188,6 +196,7 @@ message StellarChangeTrustOp { * @next StellarSignedTx */ message StellarAllowTrustOp { + optional string source_account = 1; // (optional) source account address optional string trusted_account = 2; // The account being allowed to hold the asset optional uint32 asset_type = 3; // 1 = 4-character, 2 = 12-character optional string asset_code = 4; // human-readable asset code @@ -201,6 +210,7 @@ message StellarAllowTrustOp { * @next StellarSignedTx */ message StellarAccountMergeOp { + optional string source_account = 1; // (optional) source account address optional string destination_account = 2; // destination account address } @@ -211,6 +221,7 @@ message StellarAccountMergeOp { * @next StellarSignedTx */ message StellarManageDataOp { + optional string source_account = 1; // (optional) source account address optional string key = 2; optional bytes value = 3; // 64 bytes of arbitrary data } @@ -222,6 +233,7 @@ message StellarManageDataOp { * @next StellarSignedTx */ message StellarBumpSequenceOp { + optional string source_account = 1; // (optional) source account address optional uint64 bump_to = 2; // new sequence number } From bade5310994abcf5dc3c26e87043aff878a4a14b Mon Sep 17 00:00:00 2001 From: slush Date: Fri, 13 Jul 2018 16:28:21 +0200 Subject: [PATCH 427/767] coins_details: Fixing Decred (closes #167), adding Cardano, Tezos, updating Groestlcoin --- defs/coins_details.json | 61 +++++++++++++++++++++++++++++++++++------ 1 file changed, 52 insertions(+), 9 deletions(-) diff --git a/defs/coins_details.json b/defs/coins_details.json index 32469999d..720a54645 100644 --- a/defs/coins_details.json +++ b/defs/coins_details.json @@ -1,5 +1,15 @@ { "coins": { + "coin2:ADA": { + "links": { + "Homepage": "https://www.cardano.org" + }, + "name": "Cardano", + "shortcut": "ADA", + "t1_enabled": "no", + "t2_enabled": "soon", + "type": "coin" + }, "coin2:EGEM": { "links": { "Homepage": "https://egem.io" @@ -181,6 +191,16 @@ "t2_enabled": "soon", "type": "coin" }, + "coin2:XTZ": { + "links": { + "Homepage": "https://tezos.com" + }, + "name": "Tezos", + "shortcut": "XTZ", + "t1_enabled": "no", + "t2_enabled": "soon", + "type": "coin" + }, "coin:BCH": { "links": { "Github": "https://github.com/Bitcoin-ABC/bitcoin-abc", @@ -288,7 +308,7 @@ "name": "Decred", "shortcut": "DCR", "t1_enabled": "yes", - "t2_enabled": "yes", + "t2_enabled": "no", "type": "coin" }, "coin:DGB": { @@ -376,11 +396,11 @@ "name": "Groestlcoin", "shortcut": "GRS", "t1_enabled": "yes", - "t2_enabled": "no", + "t2_enabled": "soon", "type": "coin", "wallet": { "Electrum-GRS": "https://www.groestlcoin.org/groestlcoin-electrum-wallet/" - } + } }, "coin:KOTO": { "links": { @@ -450,6 +470,17 @@ "Electrum-NMC": "https://github.com/namecoin/electrum-nmc" } }, + "coin:PTC": { + "links": { + "Github": "https://github.com/FundacionPesetacoin/PesetacoinCore", + "Homepage": "http://pesetacoin.info" + }, + "name": "Pesetacoin", + "shortcut": "PTC", + "t1_enabled": "no", + "t2_enabled": "no", + "type": "coin" + }, "coin:TAZ": { "hidden": 1, "links": { @@ -598,6 +629,18 @@ "Trezor": "https://wallet.trezor.io" } }, + "coin:ZEN": { + "links": { + "Github": "https://github.com/ZencashOfficial/zen", + "Homepage": "https://zencash.com" + }, + "marketcap_usd": 0, + "name": "Zencash", + "shortcut": "ZEN", + "t1_enabled": "no", + "t2_enabled": "soon", + "type": "coin" + }, "coin:tDASH": { "hidden": 1, "links": { @@ -621,7 +664,7 @@ "name": "Groestlcoin Testnet", "shortcut": "tGRS", "t1_enabled": "yes", - "t2_enabled": "no", + "t2_enabled": "soon", "type": "coin" }, "coin:tXZC": { @@ -12771,9 +12814,9 @@ "info": { "marketcap_usd": 191456100947, "t1_coins": 689, - "t2_coins": 689, - "total_marketcap_usd": 258211684605, - "updated_at": 1529951560, - "updated_at_readable": "Mon Jun 25 20:32:40 2018" + "t2_coins": 688, + "total_marketcap_usd": 249918599444, + "updated_at": 1531492040, + "updated_at_readable": "Fri Jul 13 16:27:20 2018" } -} +} \ No newline at end of file From 6645bd5e00abf88de6921c197ffbe7731882efcd Mon Sep 17 00:00:00 2001 From: slush Date: Fri, 13 Jul 2018 16:30:42 +0200 Subject: [PATCH 428/767] coins_details: Mark as 'soon' all bitcoin-like coins going to be released in next firmware. --- defs/coins_details.json | 163 ++++++++++++++++++++-------------------- tools/coins_details.py | 49 +++++++++--- 2 files changed, 123 insertions(+), 89 deletions(-) diff --git a/defs/coins_details.json b/defs/coins_details.json index 720a54645..76494cbe7 100644 --- a/defs/coins_details.json +++ b/defs/coins_details.json @@ -4,6 +4,7 @@ "links": { "Homepage": "https://www.cardano.org" }, + "marketcap_usd": 3324265276, "name": "Cardano", "shortcut": "ADA", "t1_enabled": "no", @@ -29,7 +30,7 @@ "links": { "Homepage": "https://ellaism.org" }, - "marketcap_usd": 857822, + "marketcap_usd": 614076, "name": "Ellaism", "shortcut": "ELLA", "t1_enabled": "yes", @@ -59,7 +60,7 @@ "links": { "Homepage": "https://ethereumclassic.github.io" }, - "marketcap_usd": 1609643245, + "marketcap_usd": 1709000951, "name": "Ethereum Classic", "shortcut": "ETC", "t1_enabled": "yes", @@ -74,7 +75,7 @@ "links": { "Homepage": "https://www.ethereum.org" }, - "marketcap_usd": 46417902414, + "marketcap_usd": 44090870783, "name": "Ethereum", "shortcut": "ETH", "t1_enabled": "yes", @@ -104,7 +105,7 @@ "links": { "Homepage": "https://www.expanse.tech" }, - "marketcap_usd": 6940780, + "marketcap_usd": 8177837, "name": "Expanse", "shortcut": "EXP", "t1_enabled": "yes", @@ -145,7 +146,7 @@ "links": { "Homepage": "https://ubiqsmart.com" }, - "marketcap_usd": 36399330, + "marketcap_usd": 38000001, "name": "Ubiq", "shortcut": "UBQ", "t1_enabled": "yes", @@ -195,6 +196,7 @@ "links": { "Homepage": "https://tezos.com" }, + "marketcap_usd": 1247867538, "name": "Tezos", "shortcut": "XTZ", "t1_enabled": "no", @@ -206,7 +208,7 @@ "Github": "https://github.com/Bitcoin-ABC/bitcoin-abc", "Homepage": "https://www.bitcoincash.org/" }, - "marketcap_usd": 13126382269, + "marketcap_usd": 12012942923, "name": "Bitcoin Cash", "shortcut": "BCH", "t1_enabled": "yes", @@ -222,7 +224,7 @@ "Github": "https://github.com/bitcoin/bitcoin", "Homepage": "https://bitcoin.org" }, - "marketcap_usd": 108045572488, + "marketcap_usd": 107327263391, "name": "Bitcoin", "shortcut": "BTC", "t1_enabled": "yes", @@ -238,7 +240,7 @@ "Github": "https://github.com/BTCPrivate/BitcoinPrivate", "Homepage": "https://btcprivate.org" }, - "marketcap_usd": 248142676, + "marketcap_usd": 164328852, "name": "Bitcoin Private", "shortcut": "BTCP", "t1_enabled": "yes", @@ -250,7 +252,7 @@ "Github": "https://github.com/BTCGPU/BTCGPU", "Homepage": "https://bitcoingold.org" }, - "marketcap_usd": 434612617, + "marketcap_usd": 513246492, "name": "Bitcoin Gold", "shortcut": "BTG", "t1_enabled": "yes", @@ -265,7 +267,7 @@ "Github": "https://github.com/LIMXTEC/BitCore", "Homepage": "https://bitcore.cc" }, - "marketcap_usd": 29535970, + "marketcap_usd": 24867996, "name": "Bitcore", "shortcut": "BTX", "t1_enabled": "no", @@ -277,7 +279,7 @@ "Github": "https://github.com/Crowndev/crowncoin", "Homepage": "https://crown.tech" }, - "marketcap_usd": 10022779, + "marketcap_usd": 8021165, "name": "Crown", "shortcut": "CRW", "t1_enabled": "no", @@ -289,7 +291,7 @@ "Github": "https://github.com/dashpay/dash", "Homepage": "https://www.dash.org" }, - "marketcap_usd": 1981826537, + "marketcap_usd": 1848122293, "name": "Dash", "shortcut": "DASH", "t1_enabled": "yes", @@ -304,7 +306,7 @@ "Github": "https://github.com/decred/dcrd", "Homepage": "https://www.decred.org" }, - "marketcap_usd": 534974618, + "marketcap_usd": 438153911, "name": "Decred", "shortcut": "DCR", "t1_enabled": "yes", @@ -316,7 +318,7 @@ "Github": "https://github.com/digibyte/digibyte", "Homepage": "https://www.digibyte.co" }, - "marketcap_usd": 218316945, + "marketcap_usd": 410706122, "name": "DigiByte", "shortcut": "DGB", "t1_enabled": "yes", @@ -339,7 +341,7 @@ "Github": "https://github.com/dogecoin/dogecoin", "Homepage": "https://dogecoin.com" }, - "marketcap_usd": 291002463, + "marketcap_usd": 267928623, "name": "Dogecoin", "shortcut": "DOGE", "t1_enabled": "yes", @@ -354,7 +356,7 @@ "Github": "https://github.com/fujicoin/fujicoin", "Homepage": "https://www.fujicoin.org" }, - "marketcap_usd": 483781, + "marketcap_usd": 409832, "name": "Fujicoin", "shortcut": "FJC", "t1_enabled": "yes", @@ -380,7 +382,7 @@ "Github": "https://github.com/FeatherCoin/Feathercoin", "Homepage": "https://feathercoin.com" }, - "marketcap_usd": 20641823, + "marketcap_usd": 15883445, "name": "Feathercoin", "shortcut": "FTC", "t1_enabled": "no", @@ -392,7 +394,7 @@ "Github": "https://github.com/Groestlcoin/groestlcoin", "Homepage": "https://www.groestlcoin.org" }, - "marketcap_usd": 42239737, + "marketcap_usd": 38897934, "name": "Groestlcoin", "shortcut": "GRS", "t1_enabled": "yes", @@ -418,7 +420,7 @@ "Github": "https://github.com/litecoin-project/litecoin", "Homepage": "https://litecoin.org" }, - "marketcap_usd": 4729798268, + "marketcap_usd": 4459203516, "name": "Litecoin", "shortcut": "LTC", "t1_enabled": "yes", @@ -434,7 +436,7 @@ "Github": "https://github.com/monacoinproject/monacoin", "Homepage": "https://monacoin.org" }, - "marketcap_usd": 131657784, + "marketcap_usd": 126711391, "name": "Monacoin", "shortcut": "MONA", "t1_enabled": "yes", @@ -460,7 +462,7 @@ "Github": "https://github.com/namecoin/namecoin-core", "Homepage": "https://namecoin.org" }, - "marketcap_usd": 20240445, + "marketcap_usd": 18991978, "name": "Namecoin", "shortcut": "NMC", "t1_enabled": "yes", @@ -475,6 +477,7 @@ "Github": "https://github.com/FundacionPesetacoin/PesetacoinCore", "Homepage": "http://pesetacoin.info" }, + "marketcap_usd": 2725156, "name": "Pesetacoin", "shortcut": "PTC", "t1_enabled": "no", @@ -551,7 +554,7 @@ "Github": "https://github.com/terracoin/terracoin", "Homepage": "https://terracoin.io" }, - "marketcap_usd": 1590237, + "marketcap_usd": 2114446, "name": "Terracoin", "shortcut": "TRC", "t1_enabled": "no", @@ -564,7 +567,7 @@ "Github": "https://github.com/viacoin", "Homepage": "https://viacoin.org" }, - "marketcap_usd": 22798288, + "marketcap_usd": 23459968, "name": "Viacoin", "shortcut": "VIA", "t1_enabled": "yes", @@ -576,7 +579,7 @@ "Github": "https://github.com/vertcoin-project/vertcoin-core", "Homepage": "https://vertcoin.org" }, - "marketcap_usd": 41292751, + "marketcap_usd": 41968042, "name": "Vertcoin", "shortcut": "VTC", "t1_enabled": "yes", @@ -591,7 +594,7 @@ "Github": "https://github.com/myriadcoin/myriadcoin", "Homepage": "https://www.myriadcoin.org" }, - "marketcap_usd": 6562878, + "marketcap_usd": 5670418, "name": "Myriad", "shortcut": "XMY", "t1_enabled": "no", @@ -603,7 +606,7 @@ "Github": "https://github.com/zcoinofficial/zcoin", "Homepage": "https://zcoin.io" }, - "marketcap_usd": 84956418, + "marketcap_usd": 84786256, "name": "Zcoin", "shortcut": "XZC", "t1_enabled": "yes", @@ -619,7 +622,7 @@ "Github": "https://github.com/zcash/zcash", "Homepage": "z.cash" }, - "marketcap_usd": 746003570, + "marketcap_usd": 693707511, "name": "Zcash", "shortcut": "ZEC", "t1_enabled": "yes", @@ -634,7 +637,7 @@ "Github": "https://github.com/ZencashOfficial/zen", "Homepage": "https://zencash.com" }, - "marketcap_usd": 0, + "marketcap_usd": 88163199, "name": "Zencash", "shortcut": "ZEN", "t1_enabled": "no", @@ -788,7 +791,7 @@ "links": { "Homepage": "https://0xbitcoin.org/" }, - "marketcap_usd": 3428495, + "marketcap_usd": 2583891, "name": "0xBitcoin", "network": "eth", "shortcut": "0xBTC", @@ -1084,7 +1087,7 @@ "Github": "https://github.com/aionnetwork", "Homepage": "https://aion.network/" }, - "marketcap_usd": 184163315, + "marketcap_usd": 159620842, "name": "Aion", "network": "eth", "shortcut": "AION", @@ -1154,7 +1157,7 @@ "Github": "https://github.com/AlisProject", "Homepage": "https://alismedia.jp" }, - "marketcap_usd": 4177043, + "marketcap_usd": 3288797, "name": "ALIS Token", "network": "eth", "shortcut": "ALIS", @@ -1295,7 +1298,7 @@ "Github": "https://github.com/Oxchild/crowdsale", "Homepage": "https://apisplatform.io" }, - "marketcap_usd": 23582517, + "marketcap_usd": 18839180, "name": "APIS", "network": "eth", "shortcut": "APIS", @@ -2291,7 +2294,7 @@ "links": { "Homepage": "http://bro-consortium.io/" }, - "marketcap_usd": 49750, + "marketcap_usd": 52824, "name": "BRAT", "network": "eth", "shortcut": "BRAT", @@ -2605,7 +2608,7 @@ "Github": "https://github.com/cryptotwenty", "Homepage": "https://crypto20.com" }, - "marketcap_usd": 40197958, + "marketcap_usd": 34228481, "name": "Crypto20's Token", "network": "eth", "shortcut": "C20", @@ -3298,7 +3301,7 @@ "Github": "https://github.com/CoinvestHQ", "Homepage": "https://coinve.st" }, - "marketcap_usd": 119117, + "marketcap_usd": 125132, "name": "Coinvest V2 Token", "network": "eth", "shortcut": "COIN", @@ -3315,7 +3318,7 @@ "links": { "Homepage": "https://coss.io" }, - "marketcap_usd": 14634498, + "marketcap_usd": 11131308, "name": "Coss Token", "network": "eth", "shortcut": "COSS", @@ -3438,7 +3441,7 @@ "links": { "Homepage": "https://bitbounce.io" }, - "marketcap_usd": 16115566, + "marketcap_usd": 16010757, "name": "Credo / Bitbounce", "network": "eth", "shortcut": "CREDO", @@ -3628,7 +3631,7 @@ "links": { "Homepage": "https://ccrb.io/" }, - "marketcap_usd": 313436, + "marketcap_usd": 1912153, "name": "CryptoCarbon", "network": "eth", "shortcut": "CryptoCarbon", @@ -3662,7 +3665,7 @@ "links": { "Homepage": "https://dadi.cloud" }, - "marketcap_usd": 9817166, + "marketcap_usd": 9485214, "name": "DADI", "network": "eth", "shortcut": "DADI", @@ -3680,7 +3683,7 @@ "Github": "https://github.com/makerdao", "Homepage": "https://makerdao.com" }, - "marketcap_usd": 43776138, + "marketcap_usd": 52350918, "name": "Dai Stablecoin v1.0", "network": "eth", "shortcut": "DAI", @@ -3785,7 +3788,7 @@ "Github": "https://github.com/streamr-dev", "Homepage": "https://www.streamr.com" }, - "marketcap_usd": 142573, + "marketcap_usd": 171265, "name": "DATACoin", "network": "eth", "shortcut": "DATACoin", @@ -3961,7 +3964,7 @@ "links": { "Homepage": "https://www.dentwireless.com/" }, - "marketcap_usd": 42357567, + "marketcap_usd": 43968463, "name": "DENT", "network": "eth", "shortcut": "DENT", @@ -4604,7 +4607,7 @@ "Github": "https://github.com/eltcoin", "Homepage": "http://www.eltcoin.tech/" }, - "marketcap_usd": 421727, + "marketcap_usd": 509769, "name": "ELTCOIN", "network": "eth", "shortcut": "ELTCOIN", @@ -4764,7 +4767,7 @@ "links": { "Homepage": "https://eos.io" }, - "marketcap_usd": 7499749639, + "marketcap_usd": 6369167440, "name": "EOS", "network": "eth", "shortcut": "EOS", @@ -5552,7 +5555,7 @@ "links": { "Homepage": "https://golem.network" }, - "marketcap_usd": 258123144, + "marketcap_usd": 240976591, "name": "Golem", "network": "eth", "shortcut": "GNT", @@ -5587,7 +5590,7 @@ "links": { "Homepage": "https://gridplus.io/token-sale" }, - "marketcap_usd": 13571941, + "marketcap_usd": 10909000, "name": "GRID", "network": "eth", "shortcut": "GRID", @@ -6133,7 +6136,7 @@ "links": { "Homepage": "https://icos.icobox.io/" }, - "marketcap_usd": 6428544, + "marketcap_usd": 5187815, "name": "ICOS", "network": "eth", "shortcut": "ICOS", @@ -6667,7 +6670,7 @@ "Github": "https://github.com/kikinteractive/kin-token", "Homepage": "https://kin.kik.com" }, - "marketcap_usd": 101249024, + "marketcap_usd": 104532000, "name": "Kin Foundation", "network": "eth", "shortcut": "KIN", @@ -6910,7 +6913,7 @@ "links": { "Homepage": "http://www.lifelabs.io" }, - "marketcap_usd": 10124856, + "marketcap_usd": 11128622, "name": "LIFE", "network": "eth", "shortcut": "LIFE", @@ -7348,7 +7351,7 @@ "links": { "Homepage": "https://www.mcaplabs.com/" }, - "marketcap_usd": 439614, + "marketcap_usd": 412103, "name": "MCAP", "network": "eth", "shortcut": "MCAP", @@ -8166,7 +8169,7 @@ "Github": "https://github.com/NperProject", "Homepage": "https://nper.io" }, - "marketcap_usd": 3586774, + "marketcap_usd": 3605375, "name": "NPER", "network": "eth", "shortcut": "NPER", @@ -8201,7 +8204,7 @@ "links": { "Homepage": "https://nuls.io" }, - "marketcap_usd": 83506400, + "marketcap_usd": 104203200, "name": "NULS", "network": "eth", "shortcut": "NULS", @@ -8286,7 +8289,7 @@ "links": { "Homepage": "https://www.openanx.org/en" }, - "marketcap_usd": 7888067, + "marketcap_usd": 7902573, "name": "OAX", "network": "eth", "shortcut": "OAX", @@ -8464,7 +8467,7 @@ "Github": "https://github.com/OpenSTFoundation", "Homepage": "https://simpletoken.org" }, - "marketcap_usd": 20900035, + "marketcap_usd": 22555656, "name": "Simple Token 'OST'", "network": "eth", "shortcut": "OST", @@ -9248,7 +9251,7 @@ "links": { "Homepage": "https://liquid.plus" }, - "marketcap_usd": 84980000, + "marketcap_usd": 93920050, "name": "QASH", "network": "eth", "shortcut": "QASH", @@ -9372,7 +9375,7 @@ "Github": "https://github.com/qtumproject", "Homepage": "https://qtum.org/" }, - "marketcap_usd": 753573908, + "marketcap_usd": 679977040, "name": "Qtum", "network": "eth", "shortcut": "QTUM", @@ -9495,7 +9498,7 @@ "links": { "Homepage": "https://www.rebellious.io" }, - "marketcap_usd": 6611346, + "marketcap_usd": 5521490, "name": "Rebellious", "network": "eth", "shortcut": "REBL", @@ -9513,7 +9516,7 @@ "Github": "https://github.com/red", "Homepage": "https://ico.red-lang.org" }, - "marketcap_usd": 6873464, + "marketcap_usd": 5221892, "name": "Red Community Token", "network": "eth", "shortcut": "RED", @@ -9635,7 +9638,7 @@ "links": { "Homepage": "http://crowdsale.iex.ec" }, - "marketcap_usd": 61307164, + "marketcap_usd": 55162771, "name": "IEx.ec", "network": "eth", "shortcut": "RLC", @@ -9722,7 +9725,7 @@ "Github": "https://github.com/rocketico", "Homepage": "https://rocketico.io" }, - "marketcap_usd": 25504163, + "marketcap_usd": 26204145, "name": "Rocket Token", "network": "eth", "shortcut": "ROCK", @@ -9876,7 +9879,7 @@ "links": { "Homepage": "https://saltlending.com" }, - "marketcap_usd": 62280086, + "marketcap_usd": 66071552, "name": "Salt Lending Token", "network": "eth", "shortcut": "SALT", @@ -9944,7 +9947,7 @@ "links": { "Homepage": "https://sensay.it" }, - "marketcap_usd": 5058153, + "marketcap_usd": 1984182, "name": "Sensay", "network": "eth", "shortcut": "SENSE", @@ -10550,7 +10553,7 @@ "links": { "Homepage": "https://stktoken.com" }, - "marketcap_usd": 10053184, + "marketcap_usd": 9640419, "name": "STK Token", "network": "eth", "shortcut": "STK", @@ -10585,7 +10588,7 @@ "Github": "https://github.com/Storj/", "Homepage": "https://storj.io/" }, - "marketcap_usd": 62813279, + "marketcap_usd": 57693817, "name": "STORJ", "network": "eth", "shortcut": "STORJ", @@ -10602,7 +10605,7 @@ "links": { "Homepage": "https://www.stormtoken.com" }, - "marketcap_usd": 75202609, + "marketcap_usd": 71653140, "name": "Storm Token", "network": "eth", "shortcut": "STORM", @@ -11141,7 +11144,7 @@ "links": { "Homepage": "https://taas.fund" }, - "marketcap_usd": 16361650, + "marketcap_usd": 14723245, "name": "Token-as-a-Service", "network": "eth", "shortcut": "TaaS", @@ -11576,7 +11579,7 @@ "Github": "https://github.com/waxio", "Homepage": "https://wax.io" }, - "marketcap_usd": 78201036, + "marketcap_usd": 104521623, "name": "WAX", "network": "eth", "shortcut": "WAX", @@ -11734,7 +11737,7 @@ "links": { "Homepage": "https://wings.ai" }, - "marketcap_usd": 19681470, + "marketcap_usd": 17660790, "name": "WINGS", "network": "eth", "shortcut": "WINGS", @@ -11890,7 +11893,7 @@ "links": { "Homepage": "https://www.wacoin.io" }, - "marketcap_usd": 15523152, + "marketcap_usd": 15736632, "name": "WaBi", "network": "eth", "shortcut": "WaBi", @@ -12204,7 +12207,7 @@ "Github": "https://github.com/zapproject", "Homepage": "https://zap.store" }, - "marketcap_usd": 4172943, + "marketcap_usd": 4519234, "name": "ZAP", "network": "eth", "shortcut": "ZAP", @@ -12397,7 +12400,7 @@ "Github": "https://github.com/eosdac", "Homepage": "https://eosdac.io/" }, - "marketcap_usd": 70445092, + "marketcap_usd": 34490099, "name": "eosDAC", "network": "eth", "shortcut": "eosDAC", @@ -12465,7 +12468,7 @@ "address": "0x8667559254241ddeD4d11392f868d72092765367", "hidden": 1, "links": {}, - "marketcap_usd": 466173766, + "marketcap_usd": 395004653, "name": "Aeternity", "network": "kov", "shortcut": "Aeternity", @@ -12696,7 +12699,7 @@ "links": { "Homepage": "https://www.qwark.io/" }, - "marketcap_usd": 2257803, + "marketcap_usd": 2077885, "name": "QWARK", "network": "ubq", "shortcut": "QWARK", @@ -12743,7 +12746,7 @@ "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 11146076, + "marketcap_usd": 8450427, "name": "DIMCOIN", "shortcut": "DIM", "t1_enabled": "yes", @@ -12758,7 +12761,7 @@ "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 11146076, + "marketcap_usd": 8450427, "name": "DIM TOKEN", "shortcut": "DIMTOK", "t1_enabled": "yes", @@ -12800,7 +12803,7 @@ "links": { "Homepage": "https://nem.io" }, - "marketcap_usd": 1448370000, + "marketcap_usd": 1448937000, "name": "NEM", "shortcut": "XEM", "t1_enabled": "yes", @@ -12812,11 +12815,11 @@ } }, "info": { - "marketcap_usd": 191456100947, + "marketcap_usd": 185677428942, "t1_coins": 689, "t2_coins": 688, - "total_marketcap_usd": 249918599444, - "updated_at": 1531492040, - "updated_at_readable": "Fri Jul 13 16:27:20 2018" + "total_marketcap_usd": 250022314394, + "updated_at": 1531492227, + "updated_at_readable": "Fri Jul 13 16:30:27 2018" } } \ No newline at end of file diff --git a/tools/coins_details.py b/tools/coins_details.py index 93a2a527b..3abff66eb 100755 --- a/tools/coins_details.py +++ b/tools/coins_details.py @@ -5,9 +5,12 @@ import json import requests import ethereum_tokens_gen import build_coins +from distutils.version import LooseVersion -COINS = {} +T1_LATEST='1.6.2' +T2_LATEST='2.0.7' +COINS = {} def coinmarketcap_init(): global COINS @@ -26,7 +29,7 @@ def coinmarketcap_init(): COINS = {} while total is None or len(COINS) < total: - url = 'https://api.coinmarketcap.com/v2/ticker/?start=%d&convert=USD&limit=100' % (len(COINS)+1) + url = 'https://api.coinmarketcap.com/v2/ticker/?start=%d&convert=USD&limit=100' % (len(COINS)) data = requests.get(url).json() COINS.update(data['data']) if total is None: @@ -102,22 +105,34 @@ def update_coins(details): supported = [] for key, coin in coins.items(): - t1_enabled = key in firmware['trezor1'] - t2_enabled = key in firmware['trezor2'] + + t1_enabled = 'no' + if key in firmware['trezor1']: + if LooseVersion(firmware['trezor1'][key]) <= LooseVersion(T1_LATEST): + t1_enabled = 'yes' + else: + t1_enabled = 'soon' + + t2_enabled = 'no' + if key in firmware['trezor2']: + if LooseVersion(firmware['trezor2'][key]) <= LooseVersion(T2_LATEST): + t2_enabled = 'yes' + else: + t2_enabled = 'soon' # print("Updating", coin['coin_label'], coin['coin_shortcut']) key = "coin:%s" % coin['coin_shortcut'] supported.append(key) out = details['coins'].setdefault(key, {}) out['type'] = 'coin' + out['t1_enabled'] = t1_enabled + out['t2_enabled'] = t2_enabled + set_default(out, 'shortcut', coin['coin_shortcut']) set_default(out, 'name', coin['coin_label']) set_default(out, 'links', {}) set_default(out['links'], 'Homepage', coin['website']) set_default(out['links'], 'Github', coin['github']) - set_default(out, 't1_enabled', 'yes' if t1_enabled else 'no') - set_default(out, 't2_enabled', 'yes' if t2_enabled else 'no') - update_marketcap(out, coin.get('coinmarketcap_alias', coin['coin_label'])) check_unsupported(details, 'coin:', supported) @@ -126,8 +141,8 @@ def update_coins(details): def update_erc20(details): networks = [x[0] for x in ethereum_tokens_gen.networks] - LATEST_T1 = 'https://raw.githubusercontent.com/trezor/trezor-mcu/v1.6.2/firmware/ethereum_tokens.c' - LATEST_T2 = 'https://raw.githubusercontent.com/trezor/trezor-core/v2.0.7/src/apps/ethereum/tokens.py' + LATEST_T1 = 'https://raw.githubusercontent.com/trezor/trezor-mcu/v%s/firmware/ethereum_tokens.c' % T1_LATEST + LATEST_T2 = 'https://raw.githubusercontent.com/trezor/trezor-core/v%s/src/apps/ethereum/tokens.py' % T2_LATEST tokens = ethereum_tokens_gen.get_tokens() tokens_t1 = requests.get(LATEST_T1).text @@ -249,6 +264,22 @@ def update_ethereum(details): set_default(out, 't2_enabled', 'yes') update_marketcap(out, 'eosc') + out = details['coins'].setdefault('coin2:ADA', {}) + out['type'] = 'coin' + set_default(out, 'shortcut', 'ADA') + set_default(out, 'name', 'Cardano') + set_default(out, 't1_enabled', 'no') + set_default(out, 't2_enabled', 'soon') + update_marketcap(out, 'cardano') + + out = details['coins'].setdefault('coin2:XTZ', {}) + out['type'] = 'coin' + set_default(out, 'shortcut', 'XTZ') + set_default(out, 'name', 'Tezos') + set_default(out, 't1_enabled', 'no') + set_default(out, 't2_enabled', 'soon') + update_marketcap(out, 'tezos') + def update_mosaics(details): d = json.load(open('../defs/nem/nem_mosaics.json')) From 32ba838d0e7424918798059c9100a86a01943e80 Mon Sep 17 00:00:00 2001 From: wilsonmeier Date: Mon, 16 Jul 2018 11:06:55 +0200 Subject: [PATCH 429/767] defs: Bgold Testnet --- defs/coins/bgold.png | Bin 12624 -> 8508 bytes defs/coins/bgold_testnet.json | 41 ++++++++++++++++++++++++++++++++++ defs/coins/bgold_testnet.png | Bin 0 -> 5055 bytes 3 files changed, 41 insertions(+) create mode 100644 defs/coins/bgold_testnet.json create mode 100644 defs/coins/bgold_testnet.png diff --git a/defs/coins/bgold.png b/defs/coins/bgold.png index dd5484e976411ebb6dc55c1590a24909ec7de31e..bb13467c79da8cefe96516983feb35e85c1596ca 100644 GIT binary patch literal 8508 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", + "curve_name": "secp256k1", + "address_type": 111, + "address_type_p2sh": 196, + "maxfee_kb": 500000, + "minfee_kb": 1000, + "signed_message_header": "Bitcoin Gold Signed Message:\n", + "hash_genesis_block": "00000000e0781ebe24b91eedc293adfea2f557b53ec379e78959de3853e6f9f6", + "xprv_magic": 70615956, + "xpub_magic": 70617039, + "xpub_magic_segwit_p2sh": 71979618, + "xpub_magic_segwit_native": null, + "bech32_prefix": "tbtg", + "cashaddr_prefix": null, + "slip44": 156, + "segwit": true, + "decred": false, + "fork_id": 79, + "force_bip143": true, + "bip115": false, + "version_group_id": null, + "default_fee_b": { + "Low": 10, + "Economy": 70, + "Normal": 140, + "High": 200 + }, + "dust_limit": 546, + "blocktime_seconds": 600, + "address_prefix": "bitcoingold:", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [], + "blockbook": [] +} diff --git a/defs/coins/bgold_testnet.png b/defs/coins/bgold_testnet.png new file mode 100644 index 0000000000000000000000000000000000000000..b3579b699c173d533f23a0122a1330af5a1c5c73 GIT binary patch literal 5055 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 N)ReRoYvrxN{s*Dtr;Pvr literal 0 HcmV?d00001 From b4d0d496ae612a62c2b64469b8ed76ff7c145cdb Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 16 Jul 2018 11:08:02 +0200 Subject: [PATCH 430/767] defs: fix bgold_testnet icon --- defs/coins/bgold_testnet.png | Bin 5055 -> 7421 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/defs/coins/bgold_testnet.png b/defs/coins/bgold_testnet.png index b3579b699c173d533f23a0122a1330af5a1c5c73..272de4d07fae0a506943c04dc888cb94a88f51bf 100644 GIT binary patch literal 7421 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 literal 5055 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 N)ReRoYvrxN{s*Dtr;Pvr From bd2866f61b364760ac83e1bf4eca45e7f3519956 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 16 Jul 2018 12:36:47 +0200 Subject: [PATCH 431/767] defs: fix zencash forkid --- defs/coins/zencash.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/defs/coins/zencash.json b/defs/coins/zencash.json index c2a2c360f..1fc5baf30 100644 --- a/defs/coins/zencash.json +++ b/defs/coins/zencash.json @@ -21,7 +21,7 @@ "slip44": 121, "segwit": false, "decred": false, - "fork_id": 0, + "fork_id": null, "force_bip143": false, "bip115": true, "version_group_id": null, From c5045f066729dd3e650c3a61ec2dcfe01bccc8fa Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 16 Jul 2018 14:20:02 +0200 Subject: [PATCH 432/767] defs: rename address_prefix to uri_prefix, drop ':', add more regexes --- defs/coins/bcash.json | 2 +- defs/coins/bcash_testnet.json | 2 +- defs/coins/bgold.json | 2 +- defs/coins/bgold_testnet.json | 2 +- defs/coins/bitcoin.json | 2 +- defs/coins/bitcoin_testnet.json | 2 +- defs/coins/bitcore.json | 2 +- defs/coins/bprivate.json | 2 +- defs/coins/crown.json | 2 +- defs/coins/dash.json | 2 +- defs/coins/dash_testnet.json | 2 +- defs/coins/decred.json | 2 +- defs/coins/decred_testnet.json | 2 +- defs/coins/denarius.json | 2 +- defs/coins/digibyte.json | 2 +- defs/coins/dogecoin.json | 2 +- defs/coins/feathercoin.json | 2 +- defs/coins/flashcoin.json | 2 +- defs/coins/fujicoin.json | 2 +- defs/coins/groestlcoin.json | 2 +- defs/coins/groestlcoin_testnet.json | 2 +- defs/coins/koto.json | 2 +- defs/coins/litecoin.json | 2 +- defs/coins/litecoin_testnet.json | 2 +- defs/coins/monacoin.json | 2 +- defs/coins/monetaryunit.json | 2 +- defs/coins/myriad.json | 2 +- defs/coins/namecoin.json | 2 +- defs/coins/pesetacoin.json | 2 +- defs/coins/terracoin.json | 2 +- defs/coins/vertcoin.json | 2 +- defs/coins/viacoin.json | 2 +- defs/coins/zcash.json | 2 +- defs/coins/zcash_testnet.json | 2 +- defs/coins/zcoin.json | 2 +- defs/coins/zcoin_testnet.json | 2 +- defs/coins/zencash.json | 2 +- tools/build_coins.py | 6 +++--- 38 files changed, 40 insertions(+), 40 deletions(-) diff --git a/defs/coins/bcash.json b/defs/coins/bcash.json index 5577863fb..ffed37d0d 100644 --- a/defs/coins/bcash.json +++ b/defs/coins/bcash.json @@ -33,7 +33,7 @@ }, "dust_limit": 546, "blocktime_seconds": 600, - "address_prefix": "bitcoincash:", + "uri_prefix": "bitcoincash", "min_address_length": 27, "max_address_length": 34, "bitcore": [], diff --git a/defs/coins/bcash_testnet.json b/defs/coins/bcash_testnet.json index c3946b6b5..7527265a0 100644 --- a/defs/coins/bcash_testnet.json +++ b/defs/coins/bcash_testnet.json @@ -30,7 +30,7 @@ }, "dust_limit": 546, "blocktime_seconds": 600, - "address_prefix": "bitcoincash:", + "uri_prefix": "bitcoincash", "min_address_length": 27, "max_address_length": 34, "bitcore": [], diff --git a/defs/coins/bgold.json b/defs/coins/bgold.json index c275002c5..2076806d7 100644 --- a/defs/coins/bgold.json +++ b/defs/coins/bgold.json @@ -33,7 +33,7 @@ }, "dust_limit": 546, "blocktime_seconds": 600, - "address_prefix": "bitcoingold:", + "uri_prefix": "bitcoingold", "min_address_length": 27, "max_address_length": 34, "bitcore": [], diff --git a/defs/coins/bgold_testnet.json b/defs/coins/bgold_testnet.json index f31bd18bb..7a18807e9 100644 --- a/defs/coins/bgold_testnet.json +++ b/defs/coins/bgold_testnet.json @@ -33,7 +33,7 @@ }, "dust_limit": 546, "blocktime_seconds": 600, - "address_prefix": "bitcoingold:", + "uri_prefix": "bitcoingold", "min_address_length": 27, "max_address_length": 34, "bitcore": [], diff --git a/defs/coins/bitcoin.json b/defs/coins/bitcoin.json index a847f70e3..b4850c5b3 100644 --- a/defs/coins/bitcoin.json +++ b/defs/coins/bitcoin.json @@ -33,7 +33,7 @@ }, "dust_limit": 546, "blocktime_seconds": 600, - "address_prefix": "bitcoin:", + "uri_prefix": "bitcoin", "min_address_length": 27, "max_address_length": 34, "bitcore": [], diff --git a/defs/coins/bitcoin_testnet.json b/defs/coins/bitcoin_testnet.json index 69425f930..a51172e8b 100644 --- a/defs/coins/bitcoin_testnet.json +++ b/defs/coins/bitcoin_testnet.json @@ -30,7 +30,7 @@ }, "dust_limit": 546, "blocktime_seconds": 600, - "address_prefix": "bitcoin:", + "uri_prefix": "bitcoin", "min_address_length": 27, "max_address_length": 34, "bitcore": [], diff --git a/defs/coins/bitcore.json b/defs/coins/bitcore.json index 55ad1bd5f..9cdb0b6e2 100644 --- a/defs/coins/bitcore.json +++ b/defs/coins/bitcore.json @@ -30,7 +30,7 @@ }, "dust_limit": 546, "blocktime_seconds": 150, - "address_prefix": "bitcore:", + "uri_prefix": "bitcore", "min_address_length": 27, "max_address_length": 34, "bitcore": [ diff --git a/defs/coins/bprivate.json b/defs/coins/bprivate.json index ac577afa5..7a1b5a6a7 100644 --- a/defs/coins/bprivate.json +++ b/defs/coins/bprivate.json @@ -30,7 +30,7 @@ }, "dust_limit": 546, "blocktime_seconds": 150, - "address_prefix": "bitcoinprivate:", + "uri_prefix": "bitcoinprivate", "min_address_length": 35, "max_address_length": 95, "bitcore": [ diff --git a/defs/coins/crown.json b/defs/coins/crown.json index 03ae5dfa7..fe1dcbf5c 100644 --- a/defs/coins/crown.json +++ b/defs/coins/crown.json @@ -30,7 +30,7 @@ }, "dust_limit": 546, "blocktime_seconds": 60, - "address_prefix": "crown:", + "uri_prefix": "crown", "min_address_length": 27, "max_address_length": 34, "bitcore": [ diff --git a/defs/coins/dash.json b/defs/coins/dash.json index da9ecf0ea..f216a03df 100644 --- a/defs/coins/dash.json +++ b/defs/coins/dash.json @@ -30,7 +30,7 @@ }, "dust_limit": 5460, "blocktime_seconds": 150, - "address_prefix": "dash:", + "uri_prefix": "dash", "min_address_length": 27, "max_address_length": 34, "bitcore": [], diff --git a/defs/coins/dash_testnet.json b/defs/coins/dash_testnet.json index 12185287d..f4dad1050 100644 --- a/defs/coins/dash_testnet.json +++ b/defs/coins/dash_testnet.json @@ -30,7 +30,7 @@ }, "dust_limit": 5460, "blocktime_seconds": 150, - "address_prefix": "dash:", + "uri_prefix": "dash", "min_address_length": 27, "max_address_length": 34, "bitcore": [], diff --git a/defs/coins/decred.json b/defs/coins/decred.json index 48690e10c..a644c537b 100644 --- a/defs/coins/decred.json +++ b/defs/coins/decred.json @@ -30,7 +30,7 @@ }, "dust_limit": 546, "blocktime_seconds": 600, - "address_prefix": "bitcoin:", + "uri_prefix": "bitcoin", "min_address_length": 35, "max_address_length": 35, "bitcore": [ diff --git a/defs/coins/decred_testnet.json b/defs/coins/decred_testnet.json index cff5edf0a..ba8cac9c5 100644 --- a/defs/coins/decred_testnet.json +++ b/defs/coins/decred_testnet.json @@ -30,7 +30,7 @@ }, "dust_limit": 546, "blocktime_seconds": 600, - "address_prefix": "bitcoin:", + "uri_prefix": "bitcoin", "min_address_length": 35, "max_address_length": 35, "bitcore": [ diff --git a/defs/coins/denarius.json b/defs/coins/denarius.json index 0b73d069a..7edddd892 100644 --- a/defs/coins/denarius.json +++ b/defs/coins/denarius.json @@ -30,7 +30,7 @@ }, "dust_limit": 54600, "blocktime_seconds": 30, - "address_prefix": "denarius:", + "uri_prefix": "denarius", "min_address_length": 27, "max_address_length": 34, "bitcore": [], diff --git a/defs/coins/digibyte.json b/defs/coins/digibyte.json index e2f98a968..0d246e5b6 100644 --- a/defs/coins/digibyte.json +++ b/defs/coins/digibyte.json @@ -33,7 +33,7 @@ }, "dust_limit": 546, "blocktime_seconds": 15, - "address_prefix": "digibyte:", + "uri_prefix": "digibyte", "min_address_length": 27, "max_address_length": 34, "bitcore": [ diff --git a/defs/coins/dogecoin.json b/defs/coins/dogecoin.json index b7646dda3..fd9630dfa 100644 --- a/defs/coins/dogecoin.json +++ b/defs/coins/dogecoin.json @@ -30,7 +30,7 @@ }, "dust_limit": 10000000, "blocktime_seconds": 60, - "address_prefix": "dogecoin:", + "uri_prefix": "dogecoin", "min_address_length": 27, "max_address_length": 34, "bitcore": [], diff --git a/defs/coins/feathercoin.json b/defs/coins/feathercoin.json index a7088e5c7..7eba94e47 100644 --- a/defs/coins/feathercoin.json +++ b/defs/coins/feathercoin.json @@ -30,7 +30,7 @@ }, "dust_limit": 54600, "blocktime_seconds": 60, - "address_prefix": "feathercoin:", + "uri_prefix": "feathercoin", "min_address_length": 27, "max_address_length": 34, "bitcore": [ diff --git a/defs/coins/flashcoin.json b/defs/coins/flashcoin.json index 76c65911c..7b1471386 100644 --- a/defs/coins/flashcoin.json +++ b/defs/coins/flashcoin.json @@ -30,7 +30,7 @@ }, "dust_limit": 10000, "blocktime_seconds": 60, - "address_prefix": "flashcoin:", + "uri_prefix": "flashcoin", "min_address_length": 27, "max_address_length": 34, "bitcore": [ diff --git a/defs/coins/fujicoin.json b/defs/coins/fujicoin.json index b8725a2e5..91ff79a39 100644 --- a/defs/coins/fujicoin.json +++ b/defs/coins/fujicoin.json @@ -33,7 +33,7 @@ }, "dust_limit": 546, "blocktime_seconds": 60, - "address_prefix": "fujicoin:", + "uri_prefix": "fujicoin", "min_address_length": 27, "max_address_length": 34, "bitcore": [ diff --git a/defs/coins/groestlcoin.json b/defs/coins/groestlcoin.json index 4cc925414..cacc73022 100644 --- a/defs/coins/groestlcoin.json +++ b/defs/coins/groestlcoin.json @@ -30,7 +30,7 @@ }, "dust_limit": 546, "blocktime_seconds": 60, - "address_prefix": "groestlcoin:", + "uri_prefix": "groestlcoin", "min_address_length": 27, "max_address_length": 34, "bitcore": [ diff --git a/defs/coins/groestlcoin_testnet.json b/defs/coins/groestlcoin_testnet.json index da572ffa3..6e8f6a338 100644 --- a/defs/coins/groestlcoin_testnet.json +++ b/defs/coins/groestlcoin_testnet.json @@ -30,7 +30,7 @@ }, "dust_limit": 546, "blocktime_seconds": 60, - "address_prefix": "groestlcoin:", + "uri_prefix": "groestlcoin", "min_address_length": 27, "max_address_length": 34, "bitcore": [ diff --git a/defs/coins/koto.json b/defs/coins/koto.json index 913719f38..aa67aa500 100644 --- a/defs/coins/koto.json +++ b/defs/coins/koto.json @@ -30,7 +30,7 @@ }, "dust_limit": 546, "blocktime_seconds": 60, - "address_prefix": "koto:", + "uri_prefix": "koto", "min_address_length": 35, "max_address_length": 95, "bitcore": [ diff --git a/defs/coins/litecoin.json b/defs/coins/litecoin.json index fa1683f70..9b6b6c254 100644 --- a/defs/coins/litecoin.json +++ b/defs/coins/litecoin.json @@ -30,7 +30,7 @@ }, "dust_limit": 54600, "blocktime_seconds": 150, - "address_prefix": "litecoin:", + "uri_prefix": "litecoin", "min_address_length": 27, "max_address_length": 34, "bitcore": [], diff --git a/defs/coins/litecoin_testnet.json b/defs/coins/litecoin_testnet.json index 15d252c58..1c15e6ecf 100644 --- a/defs/coins/litecoin_testnet.json +++ b/defs/coins/litecoin_testnet.json @@ -30,7 +30,7 @@ }, "dust_limit": 54600, "blocktime_seconds": 150, - "address_prefix": "litecoin:", + "uri_prefix": "litecoin", "min_address_length": 27, "max_address_length": 34, "bitcore": [ diff --git a/defs/coins/monacoin.json b/defs/coins/monacoin.json index a5ebdadcb..5315cf8ba 100644 --- a/defs/coins/monacoin.json +++ b/defs/coins/monacoin.json @@ -30,7 +30,7 @@ }, "dust_limit": 54600, "blocktime_seconds": 90, - "address_prefix": "monacoin:", + "uri_prefix": "monacoin", "min_address_length": 27, "max_address_length": 34, "bitcore": [ diff --git a/defs/coins/monetaryunit.json b/defs/coins/monetaryunit.json index e374c79e0..634a8fc85 100644 --- a/defs/coins/monetaryunit.json +++ b/defs/coins/monetaryunit.json @@ -30,7 +30,7 @@ }, "dust_limit": 5460, "blocktime_seconds": 40, - "address_prefix": "monetaryunit:", + "uri_prefix": "monetaryunit", "min_address_length": 27, "max_address_length": 34, "bitcore": [], diff --git a/defs/coins/myriad.json b/defs/coins/myriad.json index f800dc36f..eaae7a15a 100644 --- a/defs/coins/myriad.json +++ b/defs/coins/myriad.json @@ -33,7 +33,7 @@ }, "dust_limit": 546, "blocktime_seconds": 60, - "address_prefix": "myriadcoin:", + "uri_prefix": "myriadcoin", "min_address_length": 27, "max_address_length": 34, "bitcore": [], diff --git a/defs/coins/namecoin.json b/defs/coins/namecoin.json index e794648e1..cd3628278 100644 --- a/defs/coins/namecoin.json +++ b/defs/coins/namecoin.json @@ -30,7 +30,7 @@ }, "dust_limit": 2940, "blocktime_seconds": 600, - "address_prefix": "namecoin:", + "uri_prefix": "namecoin", "min_address_length": 27, "max_address_length": 34, "bitcore": [], diff --git a/defs/coins/pesetacoin.json b/defs/coins/pesetacoin.json index 2ab79f22f..51a56859e 100644 --- a/defs/coins/pesetacoin.json +++ b/defs/coins/pesetacoin.json @@ -30,7 +30,7 @@ }, "dust_limit": 10000000, "blocktime_seconds": 60, - "address_prefix": "pesetacoin:", + "uri_prefix": "pesetacoin", "min_address_length": 27, "max_address_length": 34, "bitcore": [ diff --git a/defs/coins/terracoin.json b/defs/coins/terracoin.json index 824ef927e..4b1f20cde 100644 --- a/defs/coins/terracoin.json +++ b/defs/coins/terracoin.json @@ -30,7 +30,7 @@ }, "dust_limit": 5460, "blocktime_seconds": 120, - "address_prefix": "terracoin:", + "uri_prefix": "terracoin", "min_address_length": 27, "max_address_length": 34, "bitcore": [ diff --git a/defs/coins/vertcoin.json b/defs/coins/vertcoin.json index bc23403aa..096d2e090 100644 --- a/defs/coins/vertcoin.json +++ b/defs/coins/vertcoin.json @@ -30,7 +30,7 @@ }, "dust_limit": 54600, "blocktime_seconds": 150, - "address_prefix": "vertcoin:", + "uri_prefix": "vertcoin", "min_address_length": 27, "max_address_length": 34, "bitcore": [], diff --git a/defs/coins/viacoin.json b/defs/coins/viacoin.json index 73744e9bf..7e442cc12 100644 --- a/defs/coins/viacoin.json +++ b/defs/coins/viacoin.json @@ -33,7 +33,7 @@ }, "dust_limit": 54600, "blocktime_seconds": 24, - "address_prefix": "viacoin:", + "uri_prefix": "viacoin", "min_address_length": 27, "max_address_length": 34, "bitcore": [ diff --git a/defs/coins/zcash.json b/defs/coins/zcash.json index ae7b08e3f..34c7bec72 100644 --- a/defs/coins/zcash.json +++ b/defs/coins/zcash.json @@ -30,7 +30,7 @@ }, "dust_limit": 546, "blocktime_seconds": 150, - "address_prefix": "zcash:", + "uri_prefix": "zcash", "min_address_length": 35, "max_address_length": 95, "bitcore": [], diff --git a/defs/coins/zcash_testnet.json b/defs/coins/zcash_testnet.json index ca07cfe66..fffc3d85c 100644 --- a/defs/coins/zcash_testnet.json +++ b/defs/coins/zcash_testnet.json @@ -30,7 +30,7 @@ }, "dust_limit": 546, "blocktime_seconds": 150, - "address_prefix": "zcash:", + "uri_prefix": "zcash", "min_address_length": 35, "max_address_length": 95, "bitcore": [ diff --git a/defs/coins/zcoin.json b/defs/coins/zcoin.json index ac3347a15..707abec64 100644 --- a/defs/coins/zcoin.json +++ b/defs/coins/zcoin.json @@ -33,7 +33,7 @@ }, "dust_limit": 546, "blocktime_seconds": 600, - "address_prefix": "zcoin:", + "uri_prefix": "zcoin", "min_address_length": 27, "max_address_length": 34, "bitcore": [ diff --git a/defs/coins/zcoin_testnet.json b/defs/coins/zcoin_testnet.json index c6b7e7312..76e47002a 100644 --- a/defs/coins/zcoin_testnet.json +++ b/defs/coins/zcoin_testnet.json @@ -33,7 +33,7 @@ }, "dust_limit": 546, "blocktime_seconds": 600, - "address_prefix": "testzcoin:", + "uri_prefix": "testzcoin", "min_address_length": 27, "max_address_length": 35, "bitcore": [], diff --git a/defs/coins/zencash.json b/defs/coins/zencash.json index 1fc5baf30..d50f2409e 100644 --- a/defs/coins/zencash.json +++ b/defs/coins/zencash.json @@ -30,7 +30,7 @@ }, "dust_limit": 546, "blocktime_seconds": 150, - "address_prefix": "zencash:", + "uri_prefix": "zencash", "min_address_length": 35, "max_address_length": 95, "bitcore": [ diff --git a/tools/build_coins.py b/tools/build_coins.py index 858a058f0..b730aa4b5 100755 --- a/tools/build_coins.py +++ b/tools/build_coins.py @@ -102,12 +102,12 @@ def validate_coin(coin): assert check_type(coin['dust_limit'], int) assert check_type(coin['blocktime_seconds'], int) assert check_type(coin['signed_message_header'], str) - assert check_type(coin['address_prefix'], str, regex=r'^.*:$') + assert check_type(coin['uri_prefix'], str, regex=r'^[a-z]+$') assert check_type(coin['min_address_length'], int) assert check_type(coin['max_address_length'], int) assert coin['max_address_length'] >= coin['min_address_length'] - assert check_type(coin['bech32_prefix'], str, nullable=True) - assert check_type(coin['cashaddr_prefix'], str, nullable=True) + assert check_type(coin['bech32_prefix'], str, regex=r'^[a-z]+$', nullable=True) + assert check_type(coin['cashaddr_prefix'], str, regex=r'^[a-z]+$', nullable=True) assert check_type(coin['bitcore'], list, empty=True) for bc in coin['bitcore']: assert not bc.endswith('/') From 2bf5382e28484034be44dc1bb67c370caf89bd59 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 16 Jul 2018 14:48:47 +0200 Subject: [PATCH 433/767] tools: update coindef.py to reflect the field rename --- tools/coindef.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/coindef.py b/tools/coindef.py index 6bbbab183..6ac4c0ecc 100644 --- a/tools/coindef.py +++ b/tools/coindef.py @@ -25,7 +25,7 @@ class CoinDef(p.MessageType): 20: ('fork_id', p.UVarintType, 0), 21: ('force_bip143', p.BoolType, 0), 22: ('dust_limit', p.UVarintType, 0), - 23: ('address_prefix', p.UnicodeType, 0), + 23: ('uri_prefix', p.UnicodeType, 0), 24: ('min_address_length', p.UVarintType, 0), 25: ('max_address_length', p.UVarintType, 0), 26: ('icon', p.BytesType, 0), @@ -62,7 +62,7 @@ class CoinDef(p.MessageType): force_bip143: bool = None, bip115: bool = None, dust_limit: int = None, - address_prefix: str = None, + uri_prefix: str = None, min_address_length: int = None, max_address_length: int = None, icon: bytes = None, @@ -98,7 +98,7 @@ class CoinDef(p.MessageType): self.force_bip143 = force_bip143 self.bip115 = bip115 self.dust_limit = dust_limit - self.address_prefix = address_prefix + self.uri_prefix = uri_prefix self.min_address_length = min_address_length self.max_address_length = max_address_length self.icon = icon From e0108d34bf4b741d9ddcf1e7b423e799a3a04b77 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 16 Jul 2018 15:00:18 +0200 Subject: [PATCH 434/767] protob: rename common.proto to messages-common.proto, move Success/Failure and friends there --- protob/common.proto | 14 ---- protob/messages-bitcoin.proto | 2 +- protob/messages-cardano.proto | 2 +- protob/messages-common.proto | 138 +++++++++++++++++++++++++++++++ protob/messages-debug.proto | 2 +- protob/messages-management.proto | 126 +--------------------------- 6 files changed, 142 insertions(+), 142 deletions(-) delete mode 100644 protob/common.proto create mode 100644 protob/messages-common.proto diff --git a/protob/common.proto b/protob/common.proto deleted file mode 100644 index 31f2243a4..000000000 --- a/protob/common.proto +++ /dev/null @@ -1,14 +0,0 @@ -syntax = "proto2"; - -/** - * Structure representing BIP32 (hierarchical deterministic) node - * Used for imports of private key into the device and exporting public key out of device - */ -message HDNodeType { - required uint32 depth = 1; - required uint32 fingerprint = 2; - required uint32 child_num = 3; - required bytes chain_code = 4; - optional bytes private_key = 5; - optional bytes public_key = 6; -} diff --git a/protob/messages-bitcoin.proto b/protob/messages-bitcoin.proto index e0f63c4d3..21f35b848 100644 --- a/protob/messages-bitcoin.proto +++ b/protob/messages-bitcoin.proto @@ -4,7 +4,7 @@ syntax = "proto2"; option java_package = "com.satoshilabs.trezor.lib.protobuf"; option java_outer_classname = "TrezorMessageBitcoin"; -import "common.proto"; +import "messages-common.proto"; /** * Type of script which will be used for transaction output diff --git a/protob/messages-cardano.proto b/protob/messages-cardano.proto index d0b245542..3570c1843 100644 --- a/protob/messages-cardano.proto +++ b/protob/messages-cardano.proto @@ -4,7 +4,7 @@ syntax = "proto2"; option java_package = "com.satoshilabs.trezor.lib.protobuf"; option java_outer_classname = "TrezorMessageCardano"; -import "common.proto"; +import "messages-common.proto"; /** * Request: Ask device for Cardano address diff --git a/protob/messages-common.proto b/protob/messages-common.proto new file mode 100644 index 000000000..907672038 --- /dev/null +++ b/protob/messages-common.proto @@ -0,0 +1,138 @@ +syntax = "proto2"; + +/** + * Response: Success of the previous request + */ + message Success { + optional string message = 1; // human readable description of action or request-specific payload +} + +/** +* Response: Failure of the previous request +*/ +message Failure { + optional FailureType code = 1; // computer-readable definition of the error state + optional string message = 2; // human-readable message of the error state + enum FailureType { + Failure_UnexpectedMessage = 1; + Failure_ButtonExpected = 2; + Failure_DataError = 3; + Failure_ActionCancelled = 4; + Failure_PinExpected = 5; + Failure_PinCancelled = 6; + Failure_PinInvalid = 7; + Failure_InvalidSignature = 8; + Failure_ProcessError = 9; + Failure_NotEnoughFunds = 10; + Failure_NotInitialized = 11; + Failure_PinMismatch = 12; + Failure_FirmwareError = 99; + } +} + +/** + * Response: Device is waiting for HW button press. + * @next ButtonAck + * @next Cancel + */ +message ButtonRequest { + optional ButtonRequestType code = 1; + optional string data = 2; + /** + * Type of button request + */ + enum ButtonRequestType { + ButtonRequest_Other = 1; + ButtonRequest_FeeOverThreshold = 2; + ButtonRequest_ConfirmOutput = 3; + ButtonRequest_ResetDevice = 4; + ButtonRequest_ConfirmWord = 5; + ButtonRequest_WipeDevice = 6; + ButtonRequest_ProtectCall = 7; + ButtonRequest_SignTx = 8; + ButtonRequest_FirmwareCheck = 9; + ButtonRequest_Address = 10; + ButtonRequest_PublicKey = 11; + ButtonRequest_MnemonicWordCount = 12; + ButtonRequest_MnemonicInput = 13; + ButtonRequest_PassphraseType = 14; + } +} + +/** + * Request: Computer agrees to wait for HW button press + * @prev ButtonRequest + */ +message ButtonAck { +} + +/** + * Response: Device is asking computer to show PIN matrix and awaits PIN encoded using this matrix scheme + * @next PinMatrixAck + * @next Cancel + */ +message PinMatrixRequest { + optional PinMatrixRequestType type = 1; + /** + * Type of PIN request + */ + enum PinMatrixRequestType { + PinMatrixRequestType_Current = 1; + PinMatrixRequestType_NewFirst = 2; + PinMatrixRequestType_NewSecond = 3; + } +} + +/** + * Request: Computer responds with encoded PIN + * @prev PinMatrixRequest + */ +message PinMatrixAck { + required string pin = 1; // matrix encoded PIN entered by user +} + +/** + * Response: Device awaits encryption passphrase + * @next PassphraseAck + * @next Cancel + */ + message PassphraseRequest { + optional bool on_device = 1; // passphrase is being entered on the device +} + +/** + * Request: Send passphrase back + * @prev PassphraseRequest + * @next PassphraseStateRequest + */ +message PassphraseAck { + optional string passphrase = 1; + optional bytes state = 2; // expected device state +} + +/** + * @prev PassphraseAck + * @next PassphraseStateAck + */ +message PassphraseStateRequest { + optional bytes state = 1; // actual device state +} + +/** + * @prev PassphraseStateRequest + */ +message PassphraseStateAck { +} + +/** + * Structure representing BIP32 (hierarchical deterministic) node + * Used for imports of private key into the device and exporting public key out of device + */ +message HDNodeType { + required uint32 depth = 1; + required uint32 fingerprint = 2; + required uint32 child_num = 3; + required bytes chain_code = 4; + optional bytes private_key = 5; + optional bytes public_key = 6; +} diff --git a/protob/messages-debug.proto b/protob/messages-debug.proto index e34e6c346..577229f7a 100644 --- a/protob/messages-debug.proto +++ b/protob/messages-debug.proto @@ -4,7 +4,7 @@ syntax = "proto2"; option java_package = "com.satoshilabs.trezor.lib.protobuf"; option java_outer_classname = "TrezorMessageDebug"; -import "common.proto"; +import "messages-common.proto"; /** * Request: "Press" the button on the device diff --git a/protob/messages-management.proto b/protob/messages-management.proto index d43bdfee8..c3be7ce0f 100644 --- a/protob/messages-management.proto +++ b/protob/messages-management.proto @@ -4,7 +4,7 @@ syntax = "proto2"; option java_package = "com.satoshilabs.trezor.lib.protobuf"; option java_outer_classname = "TrezorMessageManagement"; -import "common.proto"; +import "messages-common.proto"; /** * Request: Reset device to default state and ask for device details @@ -116,97 +116,6 @@ message Ping { optional bool passphrase_protection = 4; // ask for passphrase if set in device } -/** - * Response: Success of the previous request - */ -message Success { - optional string message = 1; // human readable description of action or request-specific payload -} - -/** -* Response: Failure of the previous request -*/ -message Failure { - optional FailureType code = 1; // computer-readable definition of the error state - optional string message = 2; // human-readable message of the error state - enum FailureType { - Failure_UnexpectedMessage = 1; - Failure_ButtonExpected = 2; - Failure_DataError = 3; - Failure_ActionCancelled = 4; - Failure_PinExpected = 5; - Failure_PinCancelled = 6; - Failure_PinInvalid = 7; - Failure_InvalidSignature = 8; - Failure_ProcessError = 9; - Failure_NotEnoughFunds = 10; - Failure_NotInitialized = 11; - Failure_PinMismatch = 12; - Failure_FirmwareError = 99; - } -} - -/** - * Response: Device is waiting for HW button press. - * @next ButtonAck - * @next Cancel - */ -message ButtonRequest { - optional ButtonRequestType code = 1; - optional string data = 2; - /** - * Type of button request - */ - enum ButtonRequestType { - ButtonRequest_Other = 1; - ButtonRequest_FeeOverThreshold = 2; - ButtonRequest_ConfirmOutput = 3; - ButtonRequest_ResetDevice = 4; - ButtonRequest_ConfirmWord = 5; - ButtonRequest_WipeDevice = 6; - ButtonRequest_ProtectCall = 7; - ButtonRequest_SignTx = 8; - ButtonRequest_FirmwareCheck = 9; - ButtonRequest_Address = 10; - ButtonRequest_PublicKey = 11; - ButtonRequest_MnemonicWordCount = 12; - ButtonRequest_MnemonicInput = 13; - ButtonRequest_PassphraseType = 14; - } -} - -/** - * Request: Computer agrees to wait for HW button press - * @prev ButtonRequest - */ -message ButtonAck { -} - -/** - * Response: Device is asking computer to show PIN matrix and awaits PIN encoded using this matrix scheme - * @next PinMatrixAck - * @next Cancel - */ -message PinMatrixRequest { - optional PinMatrixRequestType type = 1; - /** - * Type of PIN request - */ - enum PinMatrixRequestType { - PinMatrixRequestType_Current = 1; - PinMatrixRequestType_NewFirst = 2; - PinMatrixRequestType_NewSecond = 3; - } -} - -/** - * Request: Computer responds with encoded PIN - * @prev PinMatrixRequest - */ -message PinMatrixAck { - required string pin = 1; // matrix encoded PIN entered by user -} - /** * Request: Abort last operation that required user interaction * @prev ButtonRequest @@ -216,39 +125,6 @@ message PinMatrixAck { message Cancel { } -/** - * Response: Device awaits encryption passphrase - * @next PassphraseAck - * @next Cancel - */ -message PassphraseRequest { - optional bool on_device = 1; // passphrase is being entered on the device -} - -/** - * Request: Send passphrase back - * @prev PassphraseRequest - * @next PassphraseStateRequest - */ -message PassphraseAck { - optional string passphrase = 1; - optional bytes state = 2; // expected device state -} - -/** - * @prev PassphraseAck - * @next PassphraseStateAck - */ -message PassphraseStateRequest { - optional bytes state = 1; // actual device state -} - -/** - * @prev PassphraseStateRequest - */ -message PassphraseStateAck { -} - /** * Request: Request a sample of random data generated by hardware RNG. May be used for testing. * @next ButtonRequest From a5563af0fa46a8b6399a28c6513cc0f7d1de5421 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 16 Jul 2018 15:58:20 +0200 Subject: [PATCH 435/767] signer: drop the directory, we don't use this anymore --- signer/.gitignore | 4 -- signer/config.json | 29 ------------- signer/config.proto | 32 -------------- signer/sample.key | 5 --- signer/sign.py | 101 -------------------------------------------- 5 files changed, 171 deletions(-) delete mode 100644 signer/.gitignore delete mode 100644 signer/config.json delete mode 100644 signer/config.proto delete mode 100644 signer/sample.key delete mode 100755 signer/sign.py diff --git a/signer/.gitignore b/signer/.gitignore deleted file mode 100644 index a97789d61..000000000 --- a/signer/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -config_pb2.py -config_pb2.pyc -config_signed.bin -*.pem diff --git a/signer/config.json b/signer/config.json deleted file mode 100644 index 1a3186b39..000000000 --- a/signer/config.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "whitelist_urls": [ - "https?://localhost(:\\d+)?(/.*)?", - "https?://localhost\\.mytrezor\\.com(:\\d+)?(/.*)?", - "https://mytrezor\\.com(/.*)?", - "https://[\\w\\.-]+\\.mytrezor\\.com(/.*)?", - "https://trezor\\.io(/.*)?", - "https://[\\w\\.-]+\\.trezor\\.io(/.*)?", - "https://trezor\\.github\\.io(/.*)?", - "https://greenaddress\\.it(/.*)?", - "https://[\\w\\.-]+\\.greenaddress\\.it(/.*)?", - "https://coinprism\\.com(/.*)?", - "https://[\\w\\.-]+\\.coinprism\\.com(/.*)?", - "https://bitex\\.la(/.*)?", - "https://[\\w\\.-]+\\.bitex\\.la(/.*)?", - "https://dash\\.run(/.*)?", - "https://[\\w\\.-]+\\.dash\\.run(/.*)?", - "https://0xproject\\.com(/.*)?", - "https://[\\w\\.-]+\\.unchained-capital\\.com(/.*)?", - "chrome-extension://jcjjhjgimijdkoamemaghajlhegmoclj(/.*)?" - ], - "blacklist_urls": [ - ], - "known_devices": [ - ["0x534c", "0x0001", "Trezor"], - ["0x1209", "0x53c0", "Trezor2 Bootloader"], - ["0x1209", "0x53c1", "Trezor2"] - ] -} diff --git a/signer/config.proto b/signer/config.proto deleted file mode 100644 index fe44a0dc3..000000000 --- a/signer/config.proto +++ /dev/null @@ -1,32 +0,0 @@ -syntax = "proto2"; - -/** - * Configuration format for TREZOR plugin - */ - -// Sugar for easier handling in Java -option java_package = "com.satoshilabs.trezor.lib.protobuf"; -option java_outer_classname = "TrezorConfig"; - -import "google/protobuf/descriptor.proto"; - -/** - * Device Descriptor used in Configuration - */ -message DeviceDescriptor { - optional uint32 vendor_id = 1; // USB vendor ID - optional uint32 product_id = 2; // USB product ID - optional string serial_number = 3; // USB serial number - optional string path = 4; // USB device path -} - -/** - * Plugin Configuration - */ -message Configuration { - repeated string whitelist_urls = 1; // allowed URLs for plugin - repeated string blacklist_urls = 2; // forbidden URLs for plugin - required google.protobuf.FileDescriptorSet wire_protocol = 3; // compiled specification of write protocol (serialized using "protoc -o") - repeated DeviceDescriptor known_devices = 4; // descriptors of allowed devices - optional uint32 valid_until = 5; // expiration timestamp -} diff --git a/signer/sample.key b/signer/sample.key deleted file mode 100644 index 6369d96a2..000000000 --- a/signer/sample.key +++ /dev/null @@ -1,5 +0,0 @@ ------BEGIN EC PRIVATE KEY----- -MHQCAQEEIMS7yx++yZ1lv1nYXIy2LuLblj8P4Qb0g9mvpzvU45qKoAcGBSuBBAAK -oUQDQgAEeNQwJ0+MXsEyEzgVHp8n9MZ2oAi9+GONB8C2vpqzXHGhUYBjJDrNTf6W -tm4/LsgBPI4HLNCbODShn4H2Wcw0VQ== ------END EC PRIVATE KEY----- diff --git a/signer/sign.py b/signer/sign.py deleted file mode 100755 index 31bf26e6d..000000000 --- a/signer/sign.py +++ /dev/null @@ -1,101 +0,0 @@ -#!/usr/bin/python -import subprocess -import os -import json -import time -import ecdsa -import hashlib -import binascii -from google.protobuf.descriptor_pb2 import FileDescriptorSet - -PROTOBUF_PROTO_DIR=os.environ.get('PROTOBUF_PROTO_DIR', '/usr/include/') -TREZOR_PROTO_DIR=os.environ.get('TREZOR_PROTO_DIR', '../protob/') - -def compile_config(): - cmd = "protoc --python_out=../signer/ -I" + PROTOBUF_PROTO_DIR + " -I./ config.proto" - subprocess.check_call(cmd.split(), cwd=TREZOR_PROTO_DIR) - -def parse_json(): - return json.loads(open('config.json', 'r').read()) - - -def get_compiled_proto(): - # Compile trezor.proto to binary format - pdir = os.path.abspath(TREZOR_PROTO_DIR) - pfile = os.path.join(pdir, "messages.proto") - cmd = "protoc --include_imports -I" + PROTOBUF_PROTO_DIR + " -I" + pdir + " " + pfile + " -otrezor.bin" - - subprocess.check_call(cmd.split()) - - # Load compiled protocol description to string - proto = open('trezor.bin', 'r').read() - os.unlink('trezor.bin') - - # Parse it into FileDescriptorSet structure - compiled = FileDescriptorSet() - compiled.ParseFromString(proto) - return compiled - -def compose_message(json, proto): - import config_pb2 - - cfg = config_pb2.Configuration() - cfg.valid_until = 2147483647 # maxint - cfg.wire_protocol.MergeFrom(proto) - - for url in json['whitelist_urls']: - cfg.whitelist_urls.append(str(url)) - - for url in json['blacklist_urls']: - cfg.blacklist_urls.append(str(url)) - - for dev in json['known_devices']: - desc = cfg.known_devices.add() - desc.vendor_id = int(dev[0], 16) - desc.product_id = int(dev[1], 16) - - return cfg.SerializeToString() - -def sign_message(data, key): - if key.startswith('-----BEGIN'): - key = ecdsa.keys.SigningKey.from_pem(key) - else: - key = ecdsa.keys.SigningKey.from_secret_exponent(secexp = int(key, 16), curve=ecdsa.curves.SECP256k1, hashfunc=hashlib.sha256) - - verify = key.get_verifying_key() - print "Verifying key:" - print verify.to_pem() - - return key.sign_deterministic(data, hashfunc=hashlib.sha256) - -def pack_datafile(filename, signature, data): - if len(signature) != 64: - raise Exception("Signature must be 64 bytes long") - - fp = open(filename, 'w') - fp.write(binascii.hexlify(signature)) - fp.write(binascii.hexlify(data)) - fp.close() - - print "Signature and data stored to", filename - -if __name__ == '__main__': - key = '' - print "Paste ECDSA private key (in PEM format or SECEXP format) and press Enter:" - while True: - inp = raw_input() - if inp == '': - break - - key += inp + "\n" - - # key = open('sample.key', 'r').read() - - compile_config() - json = parse_json() - proto = get_compiled_proto() - - data = compose_message(json, proto) - signature = sign_message(data, key) - - pack_datafile('config_signed.bin', signature, data) From 25bc3b45709df39606ab6fcbead4cd144e023f97 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 16 Jul 2018 16:51:03 +0200 Subject: [PATCH 436/767] protob: update message workflow comments --- protob/Makefile | 2 +- protob/messages-bitcoin.proto | 36 ++++++------- protob/messages-bootloader.proto | 4 +- protob/messages-cardano.proto | 50 ++++++++--------- protob/messages-common.proto | 25 +++++---- protob/messages-crypto.proto | 20 ++++--- protob/messages-debug.proto | 14 ++++- protob/messages-ethereum.proto | 32 +++++------ protob/messages-lisk.proto | 93 +++++++++++++++++--------------- protob/messages-management.proto | 44 ++++++++------- protob/messages-nem.proto | 10 ++-- protob/messages-ripple.proto | 6 ++- protob/messages-stellar.proto | 55 +++++++------------ protob/messages-tezos.proto | 46 ++++++++-------- protob/messages.proto | 2 +- 15 files changed, 228 insertions(+), 211 deletions(-) diff --git a/protob/Makefile b/protob/Makefile index 1ac2dd04e..66f592dd3 100644 --- a/protob/Makefile +++ b/protob/Makefile @@ -1,4 +1,4 @@ -check: messages.pb messages-bitcoin.pb messages-bootloader.pb messages-cardano.pb messages-crypto.pb messages-debug.pb messages-ethereum.pb messages-lisk.pb messages-management.pb messages-nem.pb messages-stellar.pb messages-tezos.pb +check: messages.pb messages-bitcoin.pb messages-bootloader.pb messages-cardano.pb messages-common.pb messages-crypto.pb messages-debug.pb messages-ethereum.pb messages-lisk.pb messages-management.pb messages-nem.pb messages-ripple.pb messages-stellar.pb messages-tezos.pb %.pb: %.proto protoc -I/usr/include -I. $< -o $@ diff --git a/protob/messages-bitcoin.proto b/protob/messages-bitcoin.proto index 21f35b848..dd7752176 100644 --- a/protob/messages-bitcoin.proto +++ b/protob/messages-bitcoin.proto @@ -19,6 +19,7 @@ enum InputScriptType { /** * Type of redeem script used in input + * @embed */ message MultisigRedeemScriptType { repeated HDNodePathType pubkeys = 1; // pubkeys from multisig address (sorted lexicographically) @@ -35,7 +36,7 @@ message MultisigRedeemScriptType { /** * Request: Ask device for public key corresponding to address_n path - * @next PassphraseRequest + * @start * @next PublicKey * @next Failure */ @@ -48,7 +49,7 @@ message GetPublicKey { /** * Response: Contains public key derived from device private seed - * @prev GetPublicKey + * @end */ message PublicKey { required HDNodeType node = 1; // BIP32 public node @@ -57,7 +58,6 @@ message PublicKey { /** * Request: Ask device for address corresponding to address_n path - * @next PassphraseRequest * @next Address * @next Failure */ @@ -71,7 +71,7 @@ message GetAddress { /** * Response: Contains address derived from device private seed - * @prev GetAddress + * @end */ message Address { required string address = 1; // Coin address in Base58 encoding @@ -79,6 +79,7 @@ message Address { /** * Request: Ask device to sign message + * @start * @next MessageSignature * @next Failure */ @@ -89,8 +90,18 @@ message SignMessage { optional InputScriptType script_type = 4 [default=SPENDADDRESS]; // used to distinguish between various address formats (non-segwit, segwit, etc.) } +/** + * Response: Signed message + * @end + */ + message MessageSignature { + optional string address = 1; // address used to sign the message + optional bytes signature = 2; // signature of the message +} + /** * Request: Ask device to verify message + * @start * @next Success * @next Failure */ @@ -101,19 +112,9 @@ message VerifyMessage { optional string coin_name = 4 [default='Bitcoin']; // coin to use for verifying } -/** - * Response: Signed message - * @prev SignMessage - */ -message MessageSignature { - optional string address = 1; // address used to sign the message - optional bytes signature = 2; // signature of the message -} - /** * Request: Ask device to sign transaction - * @next PassphraseRequest - * @next PinMatrixRequest + * @start * @next TxRequest * @next Failure */ @@ -131,8 +132,8 @@ message SignTx { * Response: Device asks for information for signing transaction or returns the last result * If request_index is set, device awaits TxAck message (with fields filled in according to request_type) * If signature_index is set, 'signature' contains signed input of signature_index's input - * @prev SignTx - * @prev TxAck + * @end + * @next TxAck */ message TxRequest { optional RequestType request_type = 1; // what should be filled in TxAck message? @@ -169,7 +170,6 @@ message TxRequest { /** * Request: Reported transaction data - * @prev TxRequest * @next TxRequest */ message TxAck { diff --git a/protob/messages-bootloader.proto b/protob/messages-bootloader.proto index 8caa63c08..d05a7de3f 100644 --- a/protob/messages-bootloader.proto +++ b/protob/messages-bootloader.proto @@ -6,9 +6,8 @@ option java_outer_classname = "TrezorMessageBootloader"; /** * Request: Ask device to erase its firmware (so it can be replaced via FirmwareUpload) - * @next Success + * @start * @next FirmwareRequest - * @next Failure */ message FirmwareErase { optional uint32 length = 1; // length of new firmware @@ -25,6 +24,7 @@ message FirmwareRequest { /** * Request: Send firmware in binary form to the device + * @next FirmwareRequest * @next Success * @next Failure */ diff --git a/protob/messages-cardano.proto b/protob/messages-cardano.proto index 3570c1843..aa52c4307 100644 --- a/protob/messages-cardano.proto +++ b/protob/messages-cardano.proto @@ -8,6 +8,7 @@ import "messages-common.proto"; /** * Request: Ask device for Cardano address + * @start * @next CardanoAddress * @next Failure */ @@ -18,35 +19,25 @@ message CardanoGetAddress { /** * Request: Ask device for Cardano address - * @next CardanoAddress - * @next Failure + * @end */ message CardanoAddress { optional string address = 1; // Base58 cardano address } -/** - * Request: Ask device to sign Cardano message - * @next CardanoMessageSignature - * @next Failure - */ -message CardanoSignMessage { - repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - optional bytes message = 2; // message to be signed -} - /** * Request: Ask device for public key corresponding to address_n path + * @start * @next CardanoPublicKey * @next Failure */ -message CardanoGetPublicKey { + message CardanoGetPublicKey { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node } /** * Response: Contains public key derived from device private seed - * @prev CardanoGetPublicKey + * @end */ message CardanoPublicKey { optional string xpub = 1; // Xpub key @@ -55,27 +46,40 @@ message CardanoPublicKey { } /** - * Request: Ask device to verify Cardano message - * @next Success + * Request: Ask device to sign Cardano message + * @start + * @next CardanoMessageSignature * @next Failure */ -message CardanoVerifyMessage { - optional bytes public_key = 1; // Public key which was used to sign message - optional bytes signature = 2; // signature to verify - optional bytes message = 3; // message to verify +message CardanoSignMessage { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional bytes message = 2; // message to be signed } /** * Response: Signed Cardano message - * @prev CardanoSignMessage + * @end */ message CardanoMessageSignature { optional bytes public_key = 1; // public key which was used to sign mesage optional bytes signature = 2; // signature of the message } +/** + * Request: Ask device to verify Cardano message + * @start + * @next Success + * @next Failure + */ + message CardanoVerifyMessage { + optional bytes public_key = 1; // Public key which was used to sign message + optional bytes signature = 2; // signature to verify + optional bytes message = 3; // message to verify +} + /** * Request: Ask device to sign Cardano transaction + * @start * @next CardanoSignedTransaction * @next CardanoTxRequest * @next Failure @@ -106,7 +110,6 @@ message CardanoSignTransaction { /** * Response: Serialised signed cardano transaction if tx_index is not specified. * If tx_index is specified, trezor will wait for transaction - * @prev CardanoSignTransaction * @next CardanoTxAck */ message CardanoTxRequest { @@ -117,7 +120,7 @@ message CardanoTxRequest { /** * Response: Serialised signed cardano transaction - * @prev CardanoSignTransaction + * @end */ message CardanoSignedTransaction { optional bytes tx_hash = 1; // hash of the signed transaction @@ -126,7 +129,6 @@ message CardanoSignedTransaction { /** * Request: Reported transaction data - * @prev CardanoTxRequest * @next CardanoTxRequest */ message CardanoTxAck { diff --git a/protob/messages-common.proto b/protob/messages-common.proto index 907672038..d87926c2d 100644 --- a/protob/messages-common.proto +++ b/protob/messages-common.proto @@ -2,14 +2,16 @@ syntax = "proto2"; /** * Response: Success of the previous request + * @end */ message Success { optional string message = 1; // human readable description of action or request-specific payload } /** -* Response: Failure of the previous request -*/ + * Response: Failure of the previous request + * @end + */ message Failure { optional FailureType code = 1; // computer-readable definition of the error state optional string message = 2; // human-readable message of the error state @@ -32,8 +34,8 @@ message Failure { /** * Response: Device is waiting for HW button press. + * @auxstart * @next ButtonAck - * @next Cancel */ message ButtonRequest { optional ButtonRequestType code = 1; @@ -61,15 +63,15 @@ message ButtonRequest { /** * Request: Computer agrees to wait for HW button press - * @prev ButtonRequest + * @auxend */ message ButtonAck { } /** * Response: Device is asking computer to show PIN matrix and awaits PIN encoded using this matrix scheme + * @auxstart * @next PinMatrixAck - * @next Cancel */ message PinMatrixRequest { optional PinMatrixRequestType type = 1; @@ -85,7 +87,7 @@ message PinMatrixRequest { /** * Request: Computer responds with encoded PIN - * @prev PinMatrixRequest + * @auxend */ message PinMatrixAck { required string pin = 1; // matrix encoded PIN entered by user @@ -93,8 +95,8 @@ message PinMatrixAck { /** * Response: Device awaits encryption passphrase + * @auxstart * @next PassphraseAck - * @next Cancel */ message PassphraseRequest { optional bool on_device = 1; // passphrase is being entered on the device @@ -102,7 +104,6 @@ message PinMatrixAck { /** * Request: Send passphrase back - * @prev PassphraseRequest * @next PassphraseStateRequest */ message PassphraseAck { @@ -111,7 +112,7 @@ message PassphraseAck { } /** - * @prev PassphraseAck + * Response: Device awaits passphrase state * @next PassphraseStateAck */ message PassphraseStateRequest { @@ -119,14 +120,16 @@ message PassphraseStateRequest { } /** - * @prev PassphraseStateRequest + * Request: Send passphrase state back + * @auxend */ -message PassphraseStateAck { + message PassphraseStateAck { } /** * Structure representing BIP32 (hierarchical deterministic) node * Used for imports of private key into the device and exporting public key out of device + * @embed */ message HDNodeType { required uint32 depth = 1; diff --git a/protob/messages-crypto.proto b/protob/messages-crypto.proto index ee706a7ce..d1f399911 100644 --- a/protob/messages-crypto.proto +++ b/protob/messages-crypto.proto @@ -6,6 +6,7 @@ option java_outer_classname = "TrezorMessageCrypto"; /** * Request: Ask device to encrypt or decrypt value of given key + * @start * @next CipheredKeyValue * @next Failure */ @@ -21,15 +22,16 @@ message CipherKeyValue { /** * Response: Return ciphered/deciphered value - * @prev CipherKeyValue + * @end */ message CipheredKeyValue { optional bytes value = 1; // ciphered/deciphered value } /** -* Structure representing identity data -*/ + * Structure representing identity data + * @embed + */ message IdentityType { optional string proto = 1; // proto part of URI optional string user = 2; // user part of URI @@ -41,6 +43,7 @@ message IdentityType { /** * Request: Ask device to sign identity + * @start * @next SignedIdentity * @next Failure */ @@ -53,7 +56,7 @@ message SignIdentity { /** * Response: Device provides signed identity - * @prev SignIdentity + * @end */ message SignedIdentity { optional string address = 1; // identity address @@ -63,6 +66,7 @@ message SignedIdentity { /** * Request: Ask device to generate ECDH session key + * @start * @next ECDHSessionKey * @next Failure */ @@ -74,7 +78,7 @@ message GetECDHSessionKey { /** * Response: Device provides ECDH session key - * @prev GetECDHSessionKey + * @end */ message ECDHSessionKey { optional bytes session_key = 1; // ECDH session key @@ -82,6 +86,7 @@ message ECDHSessionKey { /** * Request: Ask device to commit to CoSi signing + * @start * @next CosiCommitment * @next Failure */ @@ -92,7 +97,7 @@ message CosiCommit { /** * Response: Contains a CoSi commitment - * @prev CosiCommit + * @end */ message CosiCommitment { optional bytes commitment = 1; // Commitment @@ -101,6 +106,7 @@ message CosiCommitment { /** * Request: Ask device to sign using CoSi + * @start * @next CosiSignature * @next Failure */ @@ -113,7 +119,7 @@ message CosiSign { /** * Response: Contains a CoSi signature - * @prev CosiSign + * @end */ message CosiSignature { optional bytes signature = 1; // Signature diff --git a/protob/messages-debug.proto b/protob/messages-debug.proto index 577229f7a..14b10288e 100644 --- a/protob/messages-debug.proto +++ b/protob/messages-debug.proto @@ -8,6 +8,7 @@ import "messages-common.proto"; /** * Request: "Press" the button on the device + * @start * @next Success */ message DebugLinkDecision { @@ -18,6 +19,7 @@ message DebugLinkDecision { /** * Request: Computer asks for device state + * @start * @next DebugLinkState */ message DebugLinkGetState { @@ -25,7 +27,7 @@ message DebugLinkGetState { /** * Response: Device current state - * @prev DebugLinkGetState + * @end */ message DebugLinkState { optional bytes layout = 1; // raw buffer of display @@ -43,6 +45,7 @@ message DebugLinkState { /** * Request: Ask device to restart + * @start */ message DebugLinkStop { } @@ -58,6 +61,7 @@ message DebugLinkLog { /** * Request: Read memory from device + * @start * @next DebugLinkMemory */ message DebugLinkMemoryRead { @@ -67,7 +71,7 @@ message DebugLinkMemoryRead { /** * Response: Device sends memory back - * @prev DebugLinkMemoryRead + * @end */ message DebugLinkMemory { optional bytes memory = 1; @@ -76,6 +80,9 @@ message DebugLinkMemory { /** * Request: Write memory to device. * WARNING: Writing to the wrong location can irreparably break the device. + * @start + * @next Success + * @next Failure */ message DebugLinkMemoryWrite { optional uint32 address = 1; @@ -86,6 +93,9 @@ message DebugLinkMemoryWrite { /** * Request: Erase block of flash on device * WARNING: Writing to the wrong location can irreparably break the device. + * @start + * @next Success + * @next Failure */ message DebugLinkFlashErase { optional uint32 sector = 1; diff --git a/protob/messages-ethereum.proto b/protob/messages-ethereum.proto index 6f604b31f..b5a73ee76 100644 --- a/protob/messages-ethereum.proto +++ b/protob/messages-ethereum.proto @@ -6,7 +6,7 @@ option java_outer_classname = "TrezorMessageEthereum"; /** * Request: Ask device for Ethereum address corresponding to address_n path - * @next PassphraseRequest + * @start * @next EthereumAddress * @next Failure */ @@ -17,7 +17,7 @@ message EthereumGetAddress { /** * Response: Contains an Ethereum address derived from device private seed - * @prev EthereumGetAddress + * @end */ message EthereumAddress { required bytes address = 1; // Coin address as an Ethereum 160 bit hash @@ -27,8 +27,7 @@ message EthereumAddress { * Request: Ask device to sign transaction * All fields are optional from the protocol's point of view. Each field defaults to value `0` if missing. * Note: the first at most 1024 bytes of data MUST be transmitted as part of this message. - * @next PassphraseRequest - * @next PinMatrixRequest + * @start * @next EthereumTxRequest * @next Failure */ @@ -49,7 +48,7 @@ message EthereumSignTx { * Response: Device asks for more data from transaction payload, or returns the signature. * If data_length is set, device awaits that many more bytes of payload. * Otherwise, the signature_* fields contain the computed transaction signature. All three fields will be present. - * @prev EthereumSignTx + * @end * @next EthereumTxAck */ message EthereumTxRequest { @@ -61,7 +60,6 @@ message EthereumTxRequest { /** * Request: Transaction payload data. - * @prev EthereumTxRequest * @next EthereumTxRequest */ message EthereumTxAck { @@ -70,6 +68,7 @@ message EthereumTxAck { /** * Request: Ask device to sign message + * @start * @next EthereumMessageSignature * @next Failure */ @@ -78,22 +77,23 @@ message EthereumSignMessage { required bytes message = 2; // message to be signed } +/** + * Response: Signed message + * @end + */ +message EthereumMessageSignature { + optional bytes address = 1; // address used to sign the message + optional bytes signature = 2; // signature of the message +} + /** * Request: Ask device to verify message + * @start * @next Success * @next Failure */ -message EthereumVerifyMessage { + message EthereumVerifyMessage { optional bytes address = 1; // address to verify optional bytes signature = 2; // signature to verify optional bytes message = 3; // message to verify } - -/** - * Response: Signed message - * @prev EthereumSignMessage - */ -message EthereumMessageSignature { - optional bytes address = 1; // address used to sign the message - optional bytes signature = 2; // signature of the message -} diff --git a/protob/messages-lisk.proto b/protob/messages-lisk.proto index 386cf2e65..282401d5b 100644 --- a/protob/messages-lisk.proto +++ b/protob/messages-lisk.proto @@ -5,51 +5,54 @@ option java_package = "com.satoshilabs.trezor.lib.protobuf"; option java_outer_classname = "TrezorMessageLisk"; /** - * Request: Ask device for Lisk public key corresponding to address_n path - * @next LiskPublicKey -*/ -message LiskGetPublicKey { + * Request: Ask device for Lisk address corresponding to address_n path + * @start + * @next LiskAddress + * @next Failure + */ + message LiskGetAddress { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node optional bool show_display = 2; // Optionally show on display before sending the result } /** - * Response: Contains Lisk public key derived from device private seed - * @prev LiskGetPublicKey -*/ -message LiskPublicKey { - optional bytes public_key = 1; // Lisk public key + * Response: Contains Lisk address derived from device private seed + * @end + */ +message LiskAddress { + optional string address = 1; // Lisk address } /** - * Request: Ask device for Lisk address corresponding to address_n path - * @next PassphraseRequest - * @next LiskAddress - * @next Failure + * Request: Ask device for Lisk public key corresponding to address_n path + * @start + * @next LiskPublicKey */ -message LiskGetAddress { +message LiskGetPublicKey { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node optional bool show_display = 2; // Optionally show on display before sending the result } /** - * Response: Contains Lisk address derived from device private seed - * @prev LiskGetAddress + * Response: Contains Lisk public key derived from device private seed + * @end */ -message LiskAddress { - optional string address = 1; // Lisk address +message LiskPublicKey { + optional bytes public_key = 1; // Lisk public key } /** * Request: Ask device to sign Lisk transaction + * @start * @next LiskSignedTx + * @next Failure */ message LiskSignTx { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node optional LiskTransactionCommon transaction = 2; // Lisk transaction structure /** - * Structure representing the common part for Lisk transactions - */ + * Structure representing the common part for Lisk transactions + */ message LiskTransactionCommon { optional LiskTransactionType type = 1; optional uint64 amount = 2 [default=0]; @@ -61,8 +64,8 @@ message LiskSignTx { optional uint32 timestamp = 8; optional LiskTransactionAsset asset = 9; /** - * Type of Lisk transaction - */ + * Type of Lisk transaction + */ enum LiskTransactionType { Transfer = 0; RegisterSecondPassphrase = 1; @@ -74,8 +77,8 @@ message LiskSignTx { TransferOutOfDapp = 7; } /** - * Structure representing the asset field in the Lisk transaction - */ + * Structure representing the asset field in the Lisk transaction + */ message LiskTransactionAsset { optional LiskSignatureType signature = 1; optional LiskDelegateType delegate = 2; @@ -83,20 +86,20 @@ message LiskSignTx { optional LiskMultisignatureType multisignature = 4; optional string data = 5; /** - * Structure representing the signature field in the Lisk transaction asset field - */ + * Structure representing the signature field in the Lisk transaction asset field + */ message LiskSignatureType { optional bytes public_key = 1; } /** - * Structure representing the delegate field in the Lisk transaction asset field - */ + * Structure representing the delegate field in the Lisk transaction asset field + */ message LiskDelegateType { optional string username = 1; } /** - * Structure representing the multisignature field in the Lisk transaction asset field - */ + * Structure representing the multisignature field in the Lisk transaction asset field + */ message LiskMultisignatureType { optional uint32 min = 1; optional uint32 life_time = 2; @@ -107,37 +110,39 @@ message LiskSignTx { } /** -* Response: Contains Lisk transaction signature -* @prev LiskSignTx -*/ + * Response: Contains Lisk transaction signature + * @end + */ message LiskSignedTx { optional bytes signature = 1; } /** -* Request: Ask device to sign message -* @next LiskMessageSignature -* @next Failure -*/ + * Request: Ask device to sign message + * @start + * @next LiskMessageSignature + * @next Failure + */ message LiskSignMessage { repeated uint32 address_n = 1; optional bytes message = 2; } /** -* Response: Signed message -* @prev LiskSignMessage -*/ + * Response: Signed message + * @end + */ message LiskMessageSignature { optional bytes public_key = 1; optional bytes signature = 2; } /** -* Request: Ask device to verify message -* @next Success -* @next Failure -*/ + * Request: Ask device to verify message + * @start + * @next Success + * @next Failure + */ message LiskVerifyMessage { optional bytes public_key = 1; optional bytes signature = 2; diff --git a/protob/messages-management.proto b/protob/messages-management.proto index c3be7ce0f..5e7d39184 100644 --- a/protob/messages-management.proto +++ b/protob/messages-management.proto @@ -8,6 +8,7 @@ import "messages-common.proto"; /** * Request: Reset device to default state and ask for device details + * @start * @next Features */ message Initialize { @@ -17,6 +18,7 @@ message Initialize { /** * Request: Ask for device details (no device reset) + * @start * @next Features */ message GetFeatures { @@ -24,8 +26,7 @@ message GetFeatures { /** * Response: Reports various information about the device - * @prev Initialize - * @prev GetFeatures + * @end */ message Features { optional string vendor = 1; // name of the manufacturer, e.g. "trezor.io" @@ -58,6 +59,7 @@ message Features { /** * Request: clear session (removes cached PIN, passphrase, etc). + * @start * @next Success */ message ClearSession { @@ -65,10 +67,9 @@ message ClearSession { /** * Request: change language and/or label of the device + * @start * @next Success * @next Failure - * @next ButtonRequest - * @next PinMatrixRequest */ message ApplySettings { optional string language = 1; @@ -89,6 +90,7 @@ message ApplySettings { /** * Request: set flags of the device + * @start * @next Success * @next Failure */ @@ -98,8 +100,9 @@ message ApplyFlags { /** * Request: Starts workflow for setting/changing/removing the PIN - * @next ButtonRequest - * @next PinMatrixRequest + * @start + * @next Success + * @next Failure */ message ChangePin { optional bool remove = 1; // is PIN removal requested? @@ -107,6 +110,7 @@ message ChangePin { /** * Request: Test if the device is alive, device sends back the message in Success response + * @start * @next Success */ message Ping { @@ -118,16 +122,14 @@ message Ping { /** * Request: Abort last operation that required user interaction - * @prev ButtonRequest - * @prev PinMatrixRequest - * @prev PassphraseRequest + * @start */ message Cancel { } /** * Request: Request a sample of random data generated by hardware RNG. May be used for testing. - * @next ButtonRequest + * @start * @next Entropy * @next Failure */ @@ -137,7 +139,7 @@ message GetEntropy { /** * Response: Reply with random data generated by internal RNG - * @prev GetEntropy + * @end */ message Entropy { required bytes entropy = 1; // chunk of random generated bytes @@ -145,14 +147,16 @@ message Entropy { /** * Request: Request device to wipe all sensitive data and settings - * @next ButtonRequest + * @start + * @next Success + * @next Failure */ message WipeDevice { } /** * Request: Load seed and related internal settings from the computer - * @next ButtonRequest + * @start * @next Success * @next Failure */ @@ -169,6 +173,7 @@ message LoadDevice { /** * Request: Ask device to do initialization involving user interaction + * @start * @next EntropyRequest * @next Failure */ @@ -185,14 +190,14 @@ message ResetDevice { /** * Request: Perform backup of the device seed if not backed up using ResetDevice - * @next ButtonRequest + * @start + * @next Success */ message BackupDevice { } /** * Response: Ask for additional entropy from host computer - * @prev ResetDevice * @next EntropyAck */ message EntropyRequest { @@ -200,8 +205,7 @@ message EntropyRequest { /** * Request: Provide additional entropy for seed generation function - * @prev EntropyRequest - * @next ButtonRequest + * @next Success */ message EntropyAck { optional bytes entropy = 1; // 256 bits (32 bytes) of random data @@ -210,6 +214,7 @@ message EntropyAck { /** * Request: Start recovery workflow asking user for specific words of mnemonic * Used to recovery device safely even on untrusted computer. + * @start * @next WordRequest */ message RecoveryDevice { @@ -241,8 +246,7 @@ message RecoveryDevice { /** * Response: Device is waiting for user to enter word of the mnemonic * Its position is shown only on device's internal display. - * @prev RecoveryDevice - * @prev WordAck + * @next WordAck */ message WordRequest { optional WordRequestType type = 1; @@ -258,7 +262,6 @@ message WordRequest { /** * Request: Computer replies with word from the mnemonic - * @prev WordRequest * @next WordRequest * @next Success * @next Failure @@ -269,6 +272,7 @@ message WordAck { /** * Request: Set U2F counter + * @start * @next Success */ message SetU2FCounter { diff --git a/protob/messages-nem.proto b/protob/messages-nem.proto index 92002af03..62428699f 100644 --- a/protob/messages-nem.proto +++ b/protob/messages-nem.proto @@ -6,7 +6,7 @@ option java_outer_classname = "TrezorMessageNem"; /** * Request: Ask device for NEM address corresponding to address_n path - * @next PassphraseRequest + * @start * @next NEMAddress * @next Failure */ @@ -18,7 +18,7 @@ message NEMGetAddress { /** * Response: Contains NEM address derived from device private seed - * @prev NEMGetAddress + * @end */ message NEMAddress { required string address = 1; // NEM address in Base32 encoding @@ -26,6 +26,7 @@ message NEMAddress { /** * Request: Ask device to sign transaction + * @start * @next NEMSignedTx * @next Failure */ @@ -167,7 +168,7 @@ message NEMSignTx { /** * Response: Contains NEM transaction data and signature - * @prev NEMSignTx + * @end */ message NEMSignedTx { optional bytes data = 1; // Transaction data @@ -176,6 +177,7 @@ message NEMSignedTx { /** * Request: Ask device to decrypt NEM transaction payload + * @start * @next NEMDecryptedMessage * @next Failure */ @@ -188,7 +190,7 @@ message NEMDecryptMessage { /** * Response: Contains decrypted NEM transaction payload - * @prev NEMDecryptMessage + * @end */ message NEMDecryptedMessage { optional bytes payload = 1; // Actual message data (unencrypted) diff --git a/protob/messages-ripple.proto b/protob/messages-ripple.proto index 7cbe51415..47909c1a8 100644 --- a/protob/messages-ripple.proto +++ b/protob/messages-ripple.proto @@ -6,6 +6,7 @@ option java_outer_classname = "TrezorMessageRipple"; /** * Request: Address at the specified index + * @start * @next RippleAddress */ message RippleGetAddress { @@ -15,7 +16,7 @@ message RippleGetAddress { /** * Response: Address for the given index - * @prev RippleGetAddress + * @end */ message RippleAddress { optional string address = 1; // Address in Ripple format (base58 of a pubkey with checksum) @@ -23,6 +24,7 @@ message RippleAddress { /** * Request: ask device to sign Ripple transaction + * @start * @next RippleSignedTx */ message RippleSignTx { @@ -47,7 +49,7 @@ message RippleSignTx { /** * Response: signature for transaction - * @prev RippleSignTx + * @end */ message RippleSignedTx { optional bytes signature = 1; diff --git a/protob/messages-stellar.proto b/protob/messages-stellar.proto index 338de8afe..20fe701e7 100644 --- a/protob/messages-stellar.proto +++ b/protob/messages-stellar.proto @@ -6,6 +6,7 @@ option java_outer_classname = "TrezorMessageStellar"; /** * Describes a Stellar asset + * @embed */ message StellarAssetType { optional uint32 type = 1; // 0 = native asset (XLM), 1 = alphanum 4, 2 = alphanum 12 @@ -14,37 +15,39 @@ message StellarAssetType { } /** - * Request: Public key at the specified index - * @next StellarPublicKey + * Request: Address at the specified index + * @start + * @next StellarAddress */ -message StellarGetPublicKey { +message StellarGetAddress { repeated uint32 address_n = 1; // BIP-32 path. For compatibility with other wallets, must be m/44'/148'/index' optional bool show_display = 2; // optionally show on display before sending the result } /** - * Response: Public key for the given index - * @prev StellarGetPublicKey + * Response: Address for the given index + * @end */ -message StellarPublicKey { - optional bytes public_key = 1; // Raw bytes of the public key (no version or checksum) +message StellarAddress { + optional string address = 1; // Address in Stellar format (base32 of a pubkey with checksum) } /** - * Request: Address at the specified index - * @next StellarAddress + * Request: Public key at the specified index + * @start + * @next StellarPublicKey */ -message StellarGetAddress { + message StellarGetPublicKey { repeated uint32 address_n = 1; // BIP-32 path. For compatibility with other wallets, must be m/44'/148'/index' optional bool show_display = 2; // optionally show on display before sending the result } /** - * Response: Address for the given index - * @prev StellarGetAddress + * Response: Public key for the given index + * @end */ -message StellarAddress { - optional string address = 1; // Address in Stellar format (base32 of a pubkey with checksum) +message StellarPublicKey { + optional bytes public_key = 1; // Raw bytes of the public key (no version or checksum) } /** @@ -68,7 +71,6 @@ message StellarSignTx { /** * Response: device is ready for client to send the next operation - * @prev StellarSignTx * @next StellarPaymentOp * @next StellarCreateAccountOp * @next StellarPathPaymentOp @@ -86,7 +88,6 @@ message StellarTxOpRequest { /** * Request: ask device to confirm this operation type - * @prev StellarTxOpRequest * @next StellarTxOpRequest * @next StellarSignedTx */ @@ -99,7 +100,6 @@ message StellarPaymentOp { /** * Request: ask device to confirm this operation type - * @prev StellarTxOpRequest * @next StellarTxOpRequest * @next StellarSignedTx */ @@ -111,7 +111,6 @@ message StellarCreateAccountOp { /** * Request: ask device to confirm this operation type - * @prev StellarTxOpRequest * @next StellarTxOpRequest * @next StellarSignedTx */ @@ -127,7 +126,6 @@ message StellarPathPaymentOp { /** * Request: ask device to confirm this operation type - * @prev StellarTxOpRequest * @next StellarTxOpRequest * @next StellarSignedTx */ @@ -143,7 +141,6 @@ message StellarManageOfferOp { /** * Request: ask device to confirm this operation type - * @prev StellarTxOpRequest * @next StellarTxOpRequest * @next StellarSignedTx */ @@ -158,7 +155,6 @@ message StellarCreatePassiveOfferOp { /** * Request: ask device to confirm this operation type - * @prev StellarTxOpRequest * @next StellarTxOpRequest * @next StellarSignedTx */ @@ -179,7 +175,6 @@ message StellarSetOptionsOp { /** * Request: ask device to confirm this operation type - * @prev StellarTxOpRequest * @next StellarTxOpRequest * @next StellarSignedTx */ @@ -191,7 +186,6 @@ message StellarChangeTrustOp { /** * Request: ask device to confirm this operation type - * @prev StellarTxOpRequest * @next StellarTxOpRequest * @next StellarSignedTx */ @@ -205,7 +199,6 @@ message StellarAllowTrustOp { /** * Request: ask device to confirm this operation type - * @prev StellarTxOpRequest * @next StellarTxOpRequest * @next StellarSignedTx */ @@ -216,7 +209,6 @@ message StellarAccountMergeOp { /** * Request: ask device to confirm this operation type - * @prev StellarTxOpRequest * @next StellarTxOpRequest * @next StellarSignedTx */ @@ -228,7 +220,6 @@ message StellarManageDataOp { /** * Request: ask device to confirm this operation type - * @prev StellarTxOpRequest * @next StellarTxOpRequest * @next StellarSignedTx */ @@ -239,17 +230,7 @@ message StellarBumpSequenceOp { /** * Response: signature for transaction - * @prev StellarPaymentOp - * @prev StellarCreateAccountOp - * @prev StellarPathPaymentOp - * @prev StellarManageOfferOp - * @prev StellarCreatePassiveOfferOp - * @prev StellarSetOptionsOp - * @prev StellarChangeTrustOp - * @prev StellarAllowTrustOp - * @prev StellarAccountMergeOp - * @prev StellarManageDataOp - * @prev StellarBumpSequenceOp + * @end */ message StellarSignedTx { optional bytes public_key = 1; // public key for the private key used to sign data diff --git a/protob/messages-tezos.proto b/protob/messages-tezos.proto index ce66bff2e..9b78d073e 100644 --- a/protob/messages-tezos.proto +++ b/protob/messages-tezos.proto @@ -6,7 +6,7 @@ option java_outer_classname = "TrezorMessageTezos"; /** * Request: Ask device for Tezos address corresponding to address_n path - * @next PassphraseRequest + * @start * @next TezosAddress * @next Failure */ @@ -17,14 +17,33 @@ message TezosGetAddress { /** * Response: Contains Tezos address derived from device private seed - * @prev TezosGetAddress + * @end */ message TezosAddress { optional string address = 1; // Coin address in Base58 encoding } +/** + * Request: Ask device for Tezos public key corresponding to address_n path + * @start + * @next TezosPublicKey + */ + message TezosGetPublicKey { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional bool show_display = 2; // Optionally show on display before sending the result +} + +/** + * Response: Contains Tezos public key derived from device private seed + * @end + */ +message TezosPublicKey { + optional bytes public_key = 1; // Tezos public key +} + /** * Request: Ask device to sign Tezos transaction + * @start * @next TezosSignedTx */ message TezosSignTx { @@ -95,28 +114,11 @@ message TezosSignTx { } /** -* Response: Contains Tezos transaction signature -* @prev TezosSignTx -*/ + * Response: Contains Tezos transaction signature + * @end + */ message TezosSignedTx { optional bytes signature = 1; // Tezos transaction signature optional bytes sig_op_contents = 2; // Signed operation contents optional string operation_hash = 3; // b58 check encoded blake2b hashed operation contents } - -/** - * Request: Ask device for Tezos public key corresponding to address_n path - * @next TezosPublicKey - */ -message TezosGetPublicKey { - repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - optional bool show_display = 2; // Optionally show on display before sending the result -} - -/** - * Response: Contains Tezos public key derived from device private seed - * @prev TezosGetPublicKey -*/ -message TezosPublicKey { - optional bytes public_key = 1; // Tezos public key -} diff --git a/protob/messages.proto b/protob/messages.proto index f4ff80bf8..5091457d1 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -155,7 +155,7 @@ enum MessageType { MessageType_StellarChangeTrustOp = 216 [(wire_in) = true]; MessageType_StellarAllowTrustOp = 217 [(wire_in) = true]; MessageType_StellarAccountMergeOp = 218 [(wire_in) = true]; - // Omitted: inflation is not a supported operation, would be 219 + // omitted: StellarInflationOp is not a supported operation, would be 219 MessageType_StellarManageDataOp = 220 [(wire_in) = true]; MessageType_StellarBumpSequenceOp = 221 [(wire_in) = true]; MessageType_StellarSignedTx = 230 [(wire_out) = true]; From f7df5701941b1e8a68c399f5e0ac73e6c1db6263 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 16 Jul 2018 18:19:46 +0200 Subject: [PATCH 437/767] protob: add graph.py script, small fixes to proto files --- protob/.gitignore | 1 + protob/graph.py | 55 ++++++++++++++++++++++++++++++++ protob/messages-bitcoin.proto | 3 +- protob/messages-cardano.proto | 21 ++++++------ protob/messages-common.proto | 6 ++-- protob/messages-debug.proto | 1 + protob/messages-ethereum.proto | 2 +- protob/messages-lisk.proto | 2 +- protob/messages-management.proto | 1 + protob/messages-stellar.proto | 3 +- protob/messages-tezos.proto | 2 +- 11 files changed, 79 insertions(+), 18 deletions(-) create mode 100755 protob/graph.py diff --git a/protob/.gitignore b/protob/.gitignore index 0a5bea8f2..20e75334c 100644 --- a/protob/.gitignore +++ b/protob/.gitignore @@ -1 +1,2 @@ *.pb +graph.gv* diff --git a/protob/graph.py b/protob/graph.py new file mode 100755 index 000000000..6c8e9dd5b --- /dev/null +++ b/protob/graph.py @@ -0,0 +1,55 @@ +#!/usr/bin/env python3 +import sys + +from graphviz import Digraph + + +class Message(object): + def __init__(self, name, attrs): + self.name = name + self.attrs = attrs + + +def generate_messages(files): + attrs = [] + msgs = [] + for f in files: + for line in open(f, "rt").readlines(): + line = line.rstrip() + if line.startswith(" * @"): + attrs.append(line[4:].split(" ")) + elif line.startswith("message "): + name = line[8:-2] + msgs.append(Message(name, attrs)) + attrs = [] + return msgs + + +def generate_graph(msgs, fn): + dot = Digraph(format="png") + dot.attr(rankdir="LR") + for m in msgs: + typ = m.attrs[0][0] + if typ == "start": + dot.node(m.name, shape="box", color="blue") + elif typ == "end": + dot.node(m.name, shape="box", color="green3") + elif typ == "auxstart": + dot.node(m.name, shape="diamond", color="blue") + elif typ == "auxend": + dot.node(m.name, shape="diamond", color="green3") + elif typ == "next": + dot.node(m.name) # no attrs + elif typ in ["embed", "ignore"]: + continue + else: + raise ValueError("wrong message type in message '%s'" % m.name) + for m in msgs: + for a in m.attrs: + if a[0] == "next": + dot.edge(m.name, a[1]) + dot.render(fn) + + +msgs = generate_messages(sys.argv) +generate_graph(msgs, "graph.gv") diff --git a/protob/messages-bitcoin.proto b/protob/messages-bitcoin.proto index dd7752176..86111bdfe 100644 --- a/protob/messages-bitcoin.proto +++ b/protob/messages-bitcoin.proto @@ -58,6 +58,7 @@ message PublicKey { /** * Request: Ask device for address corresponding to address_n path + * @start * @next Address * @next Failure */ @@ -94,7 +95,7 @@ message SignMessage { * Response: Signed message * @end */ - message MessageSignature { +message MessageSignature { optional string address = 1; // address used to sign the message optional bytes signature = 2; // signature of the message } diff --git a/protob/messages-cardano.proto b/protob/messages-cardano.proto index aa52c4307..b0a2c4a47 100644 --- a/protob/messages-cardano.proto +++ b/protob/messages-cardano.proto @@ -31,7 +31,7 @@ message CardanoAddress { * @next CardanoPublicKey * @next Failure */ - message CardanoGetPublicKey { +message CardanoGetPublicKey { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node } @@ -71,7 +71,7 @@ message CardanoMessageSignature { * @next Success * @next Failure */ - message CardanoVerifyMessage { +message CardanoVerifyMessage { optional bytes public_key = 1; // Public key which was used to sign message optional bytes signature = 2; // signature to verify optional bytes message = 3; // message to verify @@ -118,6 +118,15 @@ message CardanoTxRequest { optional bytes tx_body = 3; // serialised body of the signed transaction } +/** + * Request: Reported transaction data + * @next CardanoSignedTransaction + * @next CardanoTxRequest + */ +message CardanoTxAck { + optional bytes transaction = 1; +} + /** * Response: Serialised signed cardano transaction * @end @@ -126,11 +135,3 @@ message CardanoSignedTransaction { optional bytes tx_hash = 1; // hash of the signed transaction optional bytes tx_body = 2; // serialised body of the signed transaction } - -/** - * Request: Reported transaction data - * @next CardanoTxRequest - */ -message CardanoTxAck { - optional bytes transaction = 1; -} diff --git a/protob/messages-common.proto b/protob/messages-common.proto index d87926c2d..76bbb1fa2 100644 --- a/protob/messages-common.proto +++ b/protob/messages-common.proto @@ -4,7 +4,7 @@ syntax = "proto2"; * Response: Success of the previous request * @end */ - message Success { +message Success { optional string message = 1; // human readable description of action or request-specific payload } @@ -98,7 +98,7 @@ message PinMatrixAck { * @auxstart * @next PassphraseAck */ - message PassphraseRequest { +message PassphraseRequest { optional bool on_device = 1; // passphrase is being entered on the device } @@ -123,7 +123,7 @@ message PassphraseStateRequest { * Request: Send passphrase state back * @auxend */ - message PassphraseStateAck { +message PassphraseStateAck { } /** diff --git a/protob/messages-debug.proto b/protob/messages-debug.proto index 14b10288e..3ae81c7d1 100644 --- a/protob/messages-debug.proto +++ b/protob/messages-debug.proto @@ -52,6 +52,7 @@ message DebugLinkStop { /** * Response: Device wants host to log event + * @ignore */ message DebugLinkLog { optional uint32 level = 1; diff --git a/protob/messages-ethereum.proto b/protob/messages-ethereum.proto index b5a73ee76..559a7a220 100644 --- a/protob/messages-ethereum.proto +++ b/protob/messages-ethereum.proto @@ -92,7 +92,7 @@ message EthereumMessageSignature { * @next Success * @next Failure */ - message EthereumVerifyMessage { +message EthereumVerifyMessage { optional bytes address = 1; // address to verify optional bytes signature = 2; // signature to verify optional bytes message = 3; // message to verify diff --git a/protob/messages-lisk.proto b/protob/messages-lisk.proto index 282401d5b..b66779a1d 100644 --- a/protob/messages-lisk.proto +++ b/protob/messages-lisk.proto @@ -10,7 +10,7 @@ option java_outer_classname = "TrezorMessageLisk"; * @next LiskAddress * @next Failure */ - message LiskGetAddress { +message LiskGetAddress { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node optional bool show_display = 2; // Optionally show on display before sending the result } diff --git a/protob/messages-management.proto b/protob/messages-management.proto index 5e7d39184..5300cd2f3 100644 --- a/protob/messages-management.proto +++ b/protob/messages-management.proto @@ -123,6 +123,7 @@ message Ping { /** * Request: Abort last operation that required user interaction * @start + * @next Failure */ message Cancel { } diff --git a/protob/messages-stellar.proto b/protob/messages-stellar.proto index 20fe701e7..21a8ae7f5 100644 --- a/protob/messages-stellar.proto +++ b/protob/messages-stellar.proto @@ -37,7 +37,7 @@ message StellarAddress { * @start * @next StellarPublicKey */ - message StellarGetPublicKey { +message StellarGetPublicKey { repeated uint32 address_n = 1; // BIP-32 path. For compatibility with other wallets, must be m/44'/148'/index' optional bool show_display = 2; // optionally show on display before sending the result } @@ -52,6 +52,7 @@ message StellarPublicKey { /** * Request: ask device to sign Stellar transaction + * @start * @next StellarTxOpRequest */ message StellarSignTx { diff --git a/protob/messages-tezos.proto b/protob/messages-tezos.proto index 9b78d073e..d1ead31a4 100644 --- a/protob/messages-tezos.proto +++ b/protob/messages-tezos.proto @@ -28,7 +28,7 @@ message TezosAddress { * @start * @next TezosPublicKey */ - message TezosGetPublicKey { +message TezosGetPublicKey { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node optional bool show_display = 2; // Optionally show on display before sending the result } From b7e76e4e814ef62a32aa097b587cdbf1547955ad Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 17 Jul 2018 18:33:59 +0200 Subject: [PATCH 438/767] protob: refactor graph.py --- protob/graph.py | 45 ++++++++++++++++++++++++++------------------- 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/protob/graph.py b/protob/graph.py index 6c8e9dd5b..f6f5fab11 100755 --- a/protob/graph.py +++ b/protob/graph.py @@ -7,12 +7,24 @@ from graphviz import Digraph class Message(object): def __init__(self, name, attrs): self.name = name - self.attrs = attrs + t = attrs[0][0] + if t in ["start", "end", "auxstart", "auxend", "embed", "ignore"]: + self.typ = t + attrs = attrs[1:] + elif t == "next": + self.typ = "normal" + attrs = attrs + else: + raise ValueError("wrong message type in message '%s'" % m.name) + self.next = [] + for a in attrs: + if a[0] == "next": + self.next.append(a[1]) def generate_messages(files): attrs = [] - msgs = [] + msgs = {} for f in files: for line in open(f, "rt").readlines(): line = line.rstrip() @@ -20,7 +32,7 @@ def generate_messages(files): attrs.append(line[4:].split(" ")) elif line.startswith("message "): name = line[8:-2] - msgs.append(Message(name, attrs)) + msgs[name] = Message(name, attrs) attrs = [] return msgs @@ -28,26 +40,21 @@ def generate_messages(files): def generate_graph(msgs, fn): dot = Digraph(format="png") dot.attr(rankdir="LR") - for m in msgs: - typ = m.attrs[0][0] - if typ == "start": + for m in msgs.values(): + if m.typ == "start": dot.node(m.name, shape="box", color="blue") - elif typ == "end": + elif m.typ == "end": dot.node(m.name, shape="box", color="green3") - elif typ == "auxstart": + elif m.typ == "auxstart": dot.node(m.name, shape="diamond", color="blue") - elif typ == "auxend": + elif m.typ == "auxend": dot.node(m.name, shape="diamond", color="green3") - elif typ == "next": - dot.node(m.name) # no attrs - elif typ in ["embed", "ignore"]: - continue - else: - raise ValueError("wrong message type in message '%s'" % m.name) - for m in msgs: - for a in m.attrs: - if a[0] == "next": - dot.edge(m.name, a[1]) + elif m.typ == "normal": + dot.node(m.name) + + for m in msgs.values(): + for n in m.next: + dot.edge(m.name, n) dot.render(fn) From ee6897d153e5312f5f91c809eb1f2e8e2ae795b5 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 18 Jul 2018 22:09:51 +0200 Subject: [PATCH 439/767] defs: fix dust_limit for litecoin --- defs/coins/litecoin.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/defs/coins/litecoin.json b/defs/coins/litecoin.json index 9b6b6c254..bbc7f41a0 100644 --- a/defs/coins/litecoin.json +++ b/defs/coins/litecoin.json @@ -28,7 +28,7 @@ "default_fee_b": { "Normal": 1000 }, - "dust_limit": 54600, + "dust_limit": 546, "blocktime_seconds": 150, "uri_prefix": "litecoin", "min_address_length": 27, From ac0193b0b6e8f2b91d066199d5fe6e002219d373 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Du=C5=A1an=20Klinec?= Date: Sun, 22 Jul 2018 19:47:30 +0200 Subject: [PATCH 440/767] Monero protocol messages added (#164) --- protob/messages-monero.proto | 412 +++++++++++++++++++++++++++++++++++ protob/messages.proto | 22 ++ 2 files changed, 434 insertions(+) create mode 100644 protob/messages-monero.proto diff --git a/protob/messages-monero.proto b/protob/messages-monero.proto new file mode 100644 index 000000000..132e9d1c7 --- /dev/null +++ b/protob/messages-monero.proto @@ -0,0 +1,412 @@ +syntax = "proto2"; + +// Sugar for easier handling in Java +option java_package = "com.satoshilabs.trezor.lib.protobuf"; +option java_outer_classname = "TrezorMessageMonero"; + +import "messages-common.proto"; + + +/** + * Structure representing Monero public address + */ +message MoneroAccountPublicAddress { + optional bytes spend_public_key = 1; + optional bytes view_public_key = 2; +} + +/** + * Structure representing Monero transaction destination entry + */ +message MoneroTransactionDestinationEntry { + optional uint64 amount = 1; + optional MoneroAccountPublicAddress addr = 2; + optional bool is_subaddress = 3; +} + +/** + * Structure representing Monero initial transaction information + */ +message MoneroTransactionData { + optional uint32 version = 1; + optional bytes payment_id = 2; + optional uint64 unlock_time = 3; + repeated MoneroTransactionDestinationEntry outputs = 4; + optional MoneroTransactionDestinationEntry change_dts = 5; + optional uint32 num_inputs = 6; + optional uint32 mixin = 7; + optional uint64 fee = 8; + optional uint32 account = 9; + repeated uint32 minor_indices = 10; + optional bool is_multisig = 11; + optional bytes exp_tx_prefix_hash = 12; + repeated bytes use_tx_keys = 13; + optional bool is_bulletproof = 14; +} + +/** + * Structure representing Monero list of sub-addresses + */ +message MoneroSubAddressIndicesList { + optional uint32 account = 1; + repeated uint32 minor_indices = 2; +} + +/** + * Structure representing Monero UTXO for key image sync + */ +message MoneroTransferDetails { + optional bytes out_key = 1; + optional bytes tx_pub_key = 2; + repeated bytes additional_tx_pub_keys = 3; + optional uint64 internal_output_index = 4; +} + +/** + * Structure representing Monero encrypted exported key image + */ +message MoneroExportedKeyImage { + optional bytes iv = 1; + optional bytes tag = 2; + optional bytes blob = 3; +} + +/** + * Request: Ask device for public address derived from seed and address_n + * @next MoneroAddressAck + */ +message MoneroGetAddressRequest { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional bool show_display = 2; // Optionally show on display before sending the result + optional uint32 network_type = 3; // Main-net / testnet / stagenet + optional uint32 account = 4; // Major subaddr index + optional uint32 minor = 5; // Minor subaddr index +} + +/** + * Response: Contains Monero watch-only credentials derived from device private seed + * @prev MoneroGetAddressRequest + */ +message MoneroAddressAck { + optional bytes address = 1; +} + +/** + * Request: Ask device for watch only credentials + * @next MoneroWatchKeyAck + */ +message MoneroGetWatchKeyRequest { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional uint32 network_type = 2; // Main-net / testnet / stagenet +} + +/** + * Response: Contains Monero watch-only credentials derived from device private seed + * @prev MoneroGetWatchKey + */ +message MoneroWatchKeyAck { + optional bytes watch_key = 1; + optional bytes address = 2; +} + +/** + * Request: Sub request of MoneroTransactionSign. Initializes transaction signing. + * @next MoneroTransactionInitAck + */ +message MoneroTransactionInitRequest { + optional uint32 version = 1; + repeated uint32 address_n = 2; + optional uint32 network_type = 3; // Main-net / testnet / stagenet + optional MoneroTransactionData tsx_data = 4; +} + +/** + * Response: Response to transaction signing initialization. + * @prev MoneroTransactionInitRequest + */ +message MoneroTransactionInitAck { + optional uint32 version = 1; + optional uint32 status = 2; + optional bool in_memory = 3; + repeated bytes hmacs = 4; + optional bool many_inputs = 5; + optional bool many_outputs = 6; +} + +/** + * Request: Sub request of MoneroTransactionSign. Sends one UTXO to device + * @next MoneroTransactionSetInputAck + */ +message MoneroTransactionSetInputRequest { + optional uint32 version = 1; + optional bytes src_entr = 2; // xmrtypes.TxSourceEntry +} + +/** + * Response: Response to setting UTXO for signature. Contains sealed values needed for further protocol steps. + * @prev MoneroTransactionSetInputRequest + */ +message MoneroTransactionSetInputAck { + optional bytes vini = 1; // xmrtypes.TxinToKey + optional bytes vini_hmac = 2; + optional bytes pseudo_out = 3; + optional bytes pseudo_out_hmac = 4; + optional bytes alpha_enc = 5; + optional bytes spend_enc = 6; +} + +/** + * Request: Sub request of MoneroTransactionSign. Permutation on key images. + * @next MoneroTransactionInputsPermutationAck + */ +message MoneroTransactionInputsPermutationRequest { + repeated uint32 perm = 1; +} + +/** + * Response: Response to setting permutation on key images + * @prev MoneroTransactionInputsPermutationRequest + */ +message MoneroTransactionInputsPermutationAck { + +} + +/** + * Request: Sub request of MoneroTransactionSign. Sends one UTXO to device together with sealed values. + * @next MoneroTransactionInputViniAck + */ +message MoneroTransactionInputViniRequest { + optional bytes src_entr = 1; // xmrtypes.TxSourceEntry + optional bytes vini = 2; // xmrtypes.TxinToKey + optional bytes vini_hmac = 3; + optional bytes pseudo_out = 4; + optional bytes pseudo_out_hmac = 5; +} + +/** + * Response: Response to setting UTXO to the device + * @prev MoneroTransactionInputViniRequest + */ +message MoneroTransactionInputViniAck { + +} + +/** + * Request: Sub request of MoneroTransactionSign. Sends one transaction destination to device (HMACed) + * @next MoneroTransactionSetOutputAck + */ +message MoneroTransactionSetOutputRequest { + optional bytes dst_entr = 1; // xmrtypes.TxDestinationEntry + optional bytes dst_entr_hmac = 2; +} + +/** + * Response: Response to setting transaction destination. Contains sealed values needed for further protocol steps. + * @prev MoneroTransactionSetOutputRequest + */ +message MoneroTransactionSetOutputAck { + optional bytes tx_out = 1; // xmrtypes.TxOut + optional bytes vouti_hmac = 2; + optional bytes rsig = 3; // byte-encoded range signature + optional bytes out_pk = 4; + optional bytes ecdh_info = 5; +} + +/** + * Request: Sub request of MoneroTransactionSign. Sent after all outputs are sent. + * @next MoneroTransactionAllOutSetAck + */ +message MoneroTransactionAllOutSetRequest { + +} + +/* + * Structure represents initial fields of the Monero RCT signature + */ +message MoneroRingCtSig { + optional uint64 txn_fee = 1; + optional bytes message = 2; + optional uint32 rv_type = 3; +} + +/** + * Response: After all outputs are sent the initial RCT signature fields are sent. + * @prev MoneroTransactionAllOutSetRequest + */ +message MoneroTransactionAllOutSetAck { + optional bytes extra = 1; + optional bytes tx_prefix_hash = 2; + optional MoneroRingCtSig rv = 3; // xmrtypes.RctSig +} + +/** + * Request: Sub request of MoneroTransactionSign. + * @next MoneroTransactionMlsagDoneAck + */ +message MoneroTransactionMlsagDoneRequest { + +} + +/** + * Response: Contains full message hash needed for the signature + * @prev MoneroTransactionMlsagDoneRequest + */ +message MoneroTransactionMlsagDoneAck { + optional bytes full_message_hash = 1; +} + +/** + * Request: Sub request of MoneroTransactionSign. Sends UTXO for the signing. + * @next MoneroTransactionSignInputAck + */ +message MoneroTransactionSignInputRequest { + optional bytes src_entr = 1; // xmrtypes.TxSourceEntry + optional bytes vini = 2; // xmrtypes.TxinToKey + optional bytes vini_hmac = 3; + optional bytes pseudo_out = 4; + optional bytes pseudo_out_hmac = 5; + optional bytes alpha_enc = 6; + optional bytes spend_enc = 7; +} + +/** + * Response: Contains full MG signature of the UTXO + multisig data if applicable. + * @prev MoneroTransactionSignInputRequest + */ +message MoneroTransactionSignInputAck { + optional bytes signature = 1; + optional bytes cout = 2; +} + +/** + * Request: Sub request of MoneroTransactionSign. Final message of the procol after all UTXOs are signed + * @next MoneroTransactionFinalAck + */ +message MoneroTransactionFinalRequest { + +} + +/** + * Response: Contains transaction metadata and encryption keys needed for further transaction operations (e.g. multisig, send proof). + * @prev MoneroTransactionFinalRequest + */ +message MoneroTransactionFinalAck { + optional bytes cout_key = 1; + optional bytes salt = 2; + optional bytes rand_mult = 3; + optional bytes tx_enc_keys = 4; +} + +/** + * Request: Wrapping request for transaction signature protocol. + * @next MoneroTransactionInitAck + * @next MoneroTransactionSetInputAck + * @next MoneroTransactionInputsPermutationAck + * @next MoneroTransactionInputViniAck + * @next MoneroTransactionSetOutputAck + * @next MoneroTransactionAllOutSetAck + * @next MoneroTransactionMlsagDoneAck + * @next MoneroTransactionSignInputAck + * @next MoneroTransactionFinalAck + */ +message MoneroTransactionSignRequest { + optional MoneroTransactionInitRequest init = 1; + optional MoneroTransactionSetInputRequest set_input = 2; + optional MoneroTransactionInputsPermutationRequest input_permutation = 3; + optional MoneroTransactionInputViniRequest input_vini = 4; + optional MoneroTransactionSetOutputRequest set_output = 5; + optional MoneroTransactionAllOutSetRequest all_out_set = 6; + optional MoneroTransactionMlsagDoneRequest mlsag_done = 7; + optional MoneroTransactionSignInputRequest sign_input = 8; + optional MoneroTransactionFinalRequest final_msg = 9; +} + +/** + * Request: Sub request of MoneroKeyImageSync. Initializing key image sync. + * @next MoneroKeyImageExportInitAck + */ +message MoneroKeyImageExportInitRequest { + optional uint64 num = 1; + optional bytes hash = 2; + repeated uint32 address_n = 3; // BIP-32 path to derive the key from master node + optional uint32 network_type = 4; // Main-net / testnet / stagenet + repeated MoneroSubAddressIndicesList subs = 5; +} + +/** + * Response: Response to key image sync initialization. + * @prev MoneroKeyImageExportInitRequest + */ +message MoneroKeyImageExportInitAck { + +} + +/** + * Request: Sub request of MoneroKeyImageSync. Contains batch of the UTXO to export key image for. + * @next MoneroKeyImageSyncStepAck + */ +message MoneroKeyImageSyncStepRequest { + repeated MoneroTransferDetails tdis = 1; +} + +/** + * Response: Response to key image sync step. Contains encrypted exported key image. + * @prev MoneroKeyImageSyncStepRequest + */ +message MoneroKeyImageSyncStepAck { + repeated MoneroExportedKeyImage kis = 1; +} + +/** + * Request: Sub request of MoneroKeyImageSync. Final message of the sync protocol. + * @next MoneroKeyImageSyncFinalAck + */ +message MoneroKeyImageSyncFinalRequest { + +} + +/** + * Response: Response to key image sync step. Contains encryption keys for exported key images. + * @prev MoneroKeyImageSyncFinalRequest + */ +message MoneroKeyImageSyncFinalAck { + optional bytes enc_key = 1; +} + +/** + * Request: Wrapping request for key image sync protocol. + * @next MoneroKeyImageExportInitAck + * @next MoneroKeyImageSyncStepAck + * @next MoneroKeyImageSyncFinalAck + */ +message MoneroKeyImageSyncRequest { + optional MoneroKeyImageExportInitRequest init = 1; + optional MoneroKeyImageSyncStepRequest step = 2; + optional MoneroKeyImageSyncFinalRequest final_msg = 3; +} + +/** + * Request: Universal Monero protocol implementation diagnosis request. + * @next DebugMoneroDiagAck + */ +message DebugMoneroDiagRequest { + optional uint64 ins = 1; + optional uint64 p1 = 2; + optional uint64 p2 = 3; + repeated uint64 pd = 4; + optional bytes data1 = 5; + optional bytes data2 = 6; +} + +/** + * Response: Response to Monero diagnosis protocol. + * @prev DebugMoneroDiagRequest + */ +message DebugMoneroDiagAck { + optional uint64 ins = 1; + optional uint64 p1 = 2; + optional uint64 p2 = 3; + repeated uint64 pd = 4; + optional bytes data1 = 5; + optional bytes data2 = 6; +} diff --git a/protob/messages.proto b/protob/messages.proto index 5091457d1..3070aaf57 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -178,4 +178,26 @@ enum MessageType { MessageType_RippleAddress = 401 [(wire_out) = true]; MessageType_RippleSignTx = 402 [(wire_in) = true]; MessageType_RippleSignedTx = 403 [(wire_in) = true]; + + // Monero + MessageType_MoneroTransactionSignRequest = 501 [(wire_in) = true]; + MessageType_MoneroTransactionInitAck = 502 [(wire_out) = true]; + MessageType_MoneroTransactionSetInputAck = 503 [(wire_out) = true]; + MessageType_MoneroTransactionInputsPermutationAck = 504 [(wire_out) = true]; + MessageType_MoneroTransactionInputViniAck = 505 [(wire_out) = true]; + MessageType_MoneroTransactionSetOutputAck = 506 [(wire_out) = true]; + MessageType_MoneroTransactionAllOutSetAck = 507 [(wire_out) = true]; + MessageType_MoneroTransactionMlsagDoneAck = 508 [(wire_out) = true]; + MessageType_MoneroTransactionSignInputAck = 509 [(wire_out) = true]; + MessageType_MoneroTransactionFinalAck = 510 [(wire_out) = true]; + MessageType_MoneroKeyImageSyncRequest = 511 [(wire_in) = true]; + MessageType_MoneroKeyImageExportInitAck = 520 [(wire_out) = true]; + MessageType_MoneroKeyImageSyncStepAck = 521 [(wire_out) = true]; + MessageType_MoneroKeyImageSyncFinalAck = 522 [(wire_out) = true]; + MessageType_MoneroGetAddressRequest = 530 [(wire_in) = true]; + MessageType_MoneroAddressAck = 531 [(wire_out) = true]; + MessageType_MoneroGetWatchKeyRequest = 532 [(wire_in) = true]; + MessageType_MoneroWatchKeyAck = 533 [(wire_out) = true]; + MessageType_DebugMoneroDiagRequest = 536 [(wire_in) = true]; + MessageType_DebugMoneroDiagAck = 537 [(wire_out) = true]; } From a5e6dff3ff5ff534bf0b98e977c44ec4e9341d4a Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Sun, 22 Jul 2018 20:07:05 +0200 Subject: [PATCH 441/767] protob: refactor Monero messages --- protob/Makefile | 2 +- protob/messages-monero.proto | 200 ++++++++++++++++------------------- 2 files changed, 90 insertions(+), 112 deletions(-) diff --git a/protob/Makefile b/protob/Makefile index 66f592dd3..e33b7b685 100644 --- a/protob/Makefile +++ b/protob/Makefile @@ -1,4 +1,4 @@ -check: messages.pb messages-bitcoin.pb messages-bootloader.pb messages-cardano.pb messages-common.pb messages-crypto.pb messages-debug.pb messages-ethereum.pb messages-lisk.pb messages-management.pb messages-nem.pb messages-ripple.pb messages-stellar.pb messages-tezos.pb +check: messages.pb messages-bitcoin.pb messages-bootloader.pb messages-cardano.pb messages-common.pb messages-crypto.pb messages-debug.pb messages-ethereum.pb messages-lisk.pb messages-management.pb messages-monero.pb messages-nem.pb messages-ripple.pb messages-stellar.pb messages-tezos.pb %.pb: %.proto protoc -I/usr/include -I. $< -o $@ diff --git a/protob/messages-monero.proto b/protob/messages-monero.proto index 132e9d1c7..0ec70477b 100644 --- a/protob/messages-monero.proto +++ b/protob/messages-monero.proto @@ -4,125 +4,96 @@ syntax = "proto2"; option java_package = "com.satoshilabs.trezor.lib.protobuf"; option java_outer_classname = "TrezorMessageMonero"; -import "messages-common.proto"; - - -/** - * Structure representing Monero public address - */ -message MoneroAccountPublicAddress { - optional bytes spend_public_key = 1; - optional bytes view_public_key = 2; -} - -/** - * Structure representing Monero transaction destination entry - */ -message MoneroTransactionDestinationEntry { - optional uint64 amount = 1; - optional MoneroAccountPublicAddress addr = 2; - optional bool is_subaddress = 3; -} - -/** - * Structure representing Monero initial transaction information - */ -message MoneroTransactionData { - optional uint32 version = 1; - optional bytes payment_id = 2; - optional uint64 unlock_time = 3; - repeated MoneroTransactionDestinationEntry outputs = 4; - optional MoneroTransactionDestinationEntry change_dts = 5; - optional uint32 num_inputs = 6; - optional uint32 mixin = 7; - optional uint64 fee = 8; - optional uint32 account = 9; - repeated uint32 minor_indices = 10; - optional bool is_multisig = 11; - optional bytes exp_tx_prefix_hash = 12; - repeated bytes use_tx_keys = 13; - optional bool is_bulletproof = 14; -} - -/** - * Structure representing Monero list of sub-addresses - */ -message MoneroSubAddressIndicesList { - optional uint32 account = 1; - repeated uint32 minor_indices = 2; -} - -/** - * Structure representing Monero UTXO for key image sync - */ -message MoneroTransferDetails { - optional bytes out_key = 1; - optional bytes tx_pub_key = 2; - repeated bytes additional_tx_pub_keys = 3; - optional uint64 internal_output_index = 4; -} - -/** - * Structure representing Monero encrypted exported key image - */ -message MoneroExportedKeyImage { - optional bytes iv = 1; - optional bytes tag = 2; - optional bytes blob = 3; -} - /** * Request: Ask device for public address derived from seed and address_n - * @next MoneroAddressAck + * @start + * @next MoneroAddress + * @next Failure */ -message MoneroGetAddressRequest { - repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - optional bool show_display = 2; // Optionally show on display before sending the result - optional uint32 network_type = 3; // Main-net / testnet / stagenet - optional uint32 account = 4; // Major subaddr index - optional uint32 minor = 5; // Minor subaddr index +message MoneroGetAddress { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional bool show_display = 2; // Optionally show on display before sending the result + optional uint32 network_type = 3; // Main-net / testnet / stagenet + optional uint32 account = 4; // Major subaddr index + optional uint32 minor = 5; // Minor subaddr index } /** * Response: Contains Monero watch-only credentials derived from device private seed - * @prev MoneroGetAddressRequest + * @end */ -message MoneroAddressAck { +message MoneroAddress { optional bytes address = 1; } /** * Request: Ask device for watch only credentials - * @next MoneroWatchKeyAck + * @start + * @next MoneroWatchKey + * @next Failure */ -message MoneroGetWatchKeyRequest { +message MoneroGetWatchKey { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - optional uint32 network_type = 2; // Main-net / testnet / stagenet + optional uint32 network_type = 2; // Main-net / testnet / stagenet } /** * Response: Contains Monero watch-only credentials derived from device private seed - * @prev MoneroGetWatchKey + * @end */ -message MoneroWatchKeyAck { +message MoneroWatchKey { optional bytes watch_key = 1; optional bytes address = 2; } /** * Request: Sub request of MoneroTransactionSign. Initializes transaction signing. + * @start * @next MoneroTransactionInitAck */ message MoneroTransactionInitRequest { optional uint32 version = 1; repeated uint32 address_n = 2; - optional uint32 network_type = 3; // Main-net / testnet / stagenet + optional uint32 network_type = 3; // Main-net / testnet / stagenet optional MoneroTransactionData tsx_data = 4; + /** + * Structure representing Monero initial transaction information + */ + message MoneroTransactionData { + optional uint32 version = 1; + optional bytes payment_id = 2; + optional uint64 unlock_time = 3; + repeated MoneroTransactionDestinationEntry outputs = 4; + optional MoneroTransactionDestinationEntry change_dts = 5; + optional uint32 num_inputs = 6; + optional uint32 mixin = 7; + optional uint64 fee = 8; + optional uint32 account = 9; + repeated uint32 minor_indices = 10; + optional bool is_multisig = 11; + optional bytes exp_tx_prefix_hash = 12; + repeated bytes use_tx_keys = 13; + optional bool is_bulletproof = 14; + /** + * Structure representing Monero transaction destination entry + */ + message MoneroTransactionDestinationEntry { + optional uint64 amount = 1; + optional MoneroAccountPublicAddress addr = 2; + optional bool is_subaddress = 3; + /** + * Structure representing Monero public address + */ + message MoneroAccountPublicAddress { + optional bytes spend_public_key = 1; + optional bytes view_public_key = 2; + } + } + } } /** * Response: Response to transaction signing initialization. - * @prev MoneroTransactionInitRequest */ message MoneroTransactionInitAck { optional uint32 version = 1; @@ -144,7 +115,6 @@ message MoneroTransactionSetInputRequest { /** * Response: Response to setting UTXO for signature. Contains sealed values needed for further protocol steps. - * @prev MoneroTransactionSetInputRequest */ message MoneroTransactionSetInputAck { optional bytes vini = 1; // xmrtypes.TxinToKey @@ -165,10 +135,8 @@ message MoneroTransactionInputsPermutationRequest { /** * Response: Response to setting permutation on key images - * @prev MoneroTransactionInputsPermutationRequest */ message MoneroTransactionInputsPermutationAck { - } /** @@ -185,10 +153,8 @@ message MoneroTransactionInputViniRequest { /** * Response: Response to setting UTXO to the device - * @prev MoneroTransactionInputViniRequest */ message MoneroTransactionInputViniAck { - } /** @@ -202,7 +168,6 @@ message MoneroTransactionSetOutputRequest { /** * Response: Response to setting transaction destination. Contains sealed values needed for further protocol steps. - * @prev MoneroTransactionSetOutputRequest */ message MoneroTransactionSetOutputAck { optional bytes tx_out = 1; // xmrtypes.TxOut @@ -217,26 +182,23 @@ message MoneroTransactionSetOutputAck { * @next MoneroTransactionAllOutSetAck */ message MoneroTransactionAllOutSetRequest { - -} - -/* - * Structure represents initial fields of the Monero RCT signature - */ -message MoneroRingCtSig { - optional uint64 txn_fee = 1; - optional bytes message = 2; - optional uint32 rv_type = 3; } /** * Response: After all outputs are sent the initial RCT signature fields are sent. - * @prev MoneroTransactionAllOutSetRequest */ message MoneroTransactionAllOutSetAck { optional bytes extra = 1; optional bytes tx_prefix_hash = 2; optional MoneroRingCtSig rv = 3; // xmrtypes.RctSig + /* + * Structure represents initial fields of the Monero RCT signature + */ + message MoneroRingCtSig { + optional uint64 txn_fee = 1; + optional bytes message = 2; + optional uint32 rv_type = 3; + } } /** @@ -244,12 +206,10 @@ message MoneroTransactionAllOutSetAck { * @next MoneroTransactionMlsagDoneAck */ message MoneroTransactionMlsagDoneRequest { - } /** * Response: Contains full message hash needed for the signature - * @prev MoneroTransactionMlsagDoneRequest */ message MoneroTransactionMlsagDoneAck { optional bytes full_message_hash = 1; @@ -271,7 +231,6 @@ message MoneroTransactionSignInputRequest { /** * Response: Contains full MG signature of the UTXO + multisig data if applicable. - * @prev MoneroTransactionSignInputRequest */ message MoneroTransactionSignInputAck { optional bytes signature = 1; @@ -283,12 +242,11 @@ message MoneroTransactionSignInputAck { * @next MoneroTransactionFinalAck */ message MoneroTransactionFinalRequest { - } /** * Response: Contains transaction metadata and encryption keys needed for further transaction operations (e.g. multisig, send proof). - * @prev MoneroTransactionFinalRequest + * @end */ message MoneroTransactionFinalAck { optional bytes cout_key = 1; @@ -329,13 +287,19 @@ message MoneroKeyImageExportInitRequest { optional uint64 num = 1; optional bytes hash = 2; repeated uint32 address_n = 3; // BIP-32 path to derive the key from master node - optional uint32 network_type = 4; // Main-net / testnet / stagenet + optional uint32 network_type = 4; // Main-net / testnet / stagenet repeated MoneroSubAddressIndicesList subs = 5; + /** + * Structure representing Monero list of sub-addresses + */ + message MoneroSubAddressIndicesList { + optional uint32 account = 1; + repeated uint32 minor_indices = 2; + } } /** * Response: Response to key image sync initialization. - * @prev MoneroKeyImageExportInitRequest */ message MoneroKeyImageExportInitAck { @@ -347,14 +311,30 @@ message MoneroKeyImageExportInitAck { */ message MoneroKeyImageSyncStepRequest { repeated MoneroTransferDetails tdis = 1; + /** + * Structure representing Monero UTXO for key image sync + */ + message MoneroTransferDetails { + optional bytes out_key = 1; + optional bytes tx_pub_key = 2; + repeated bytes additional_tx_pub_keys = 3; + optional uint64 internal_output_index = 4; + } } /** * Response: Response to key image sync step. Contains encrypted exported key image. - * @prev MoneroKeyImageSyncStepRequest */ message MoneroKeyImageSyncStepAck { repeated MoneroExportedKeyImage kis = 1; + /** + * Structure representing Monero encrypted exported key image + */ + message MoneroExportedKeyImage { + optional bytes iv = 1; + optional bytes tag = 2; + optional bytes blob = 3; + } } /** @@ -362,12 +342,10 @@ message MoneroKeyImageSyncStepAck { * @next MoneroKeyImageSyncFinalAck */ message MoneroKeyImageSyncFinalRequest { - } /** * Response: Response to key image sync step. Contains encryption keys for exported key images. - * @prev MoneroKeyImageSyncFinalRequest */ message MoneroKeyImageSyncFinalAck { optional bytes enc_key = 1; @@ -400,7 +378,7 @@ message DebugMoneroDiagRequest { /** * Response: Response to Monero diagnosis protocol. - * @prev DebugMoneroDiagRequest + * @end */ message DebugMoneroDiagAck { optional uint64 ins = 1; From 9fa3a7a3997244f906c92a45581cc577e84bb500 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Sun, 22 Jul 2018 20:56:41 +0200 Subject: [PATCH 442/767] protob: more meta info in monero messages --- protob/graph.py | 12 +++++++++++- protob/messages-monero.proto | 38 ++++++++++++++++++++++++------------ 2 files changed, 36 insertions(+), 14 deletions(-) diff --git a/protob/graph.py b/protob/graph.py index f6f5fab11..6b6543e0a 100755 --- a/protob/graph.py +++ b/protob/graph.py @@ -7,6 +7,8 @@ from graphviz import Digraph class Message(object): def __init__(self, name, attrs): self.name = name + if len(attrs) == 0: + raise ValueError("message '%s' has no attributes" % name) t = attrs[0][0] if t in ["start", "end", "auxstart", "auxend", "embed", "ignore"]: self.typ = t @@ -14,12 +16,18 @@ class Message(object): elif t == "next": self.typ = "normal" attrs = attrs + elif t == "wrap": + self.typ = "normal" + attrs = attrs else: - raise ValueError("wrong message type in message '%s'" % m.name) + raise ValueError("wrong message type in message '%s'" % name) self.next = [] + self.wrap = [] for a in attrs: if a[0] == "next": self.next.append(a[1]) + elif a[0] == "wrap": + self.wrap.append(a[1]) def generate_messages(files): @@ -55,6 +63,8 @@ def generate_graph(msgs, fn): for m in msgs.values(): for n in m.next: dot.edge(m.name, n) + for n in m.wrap: + dot.edge(m.name, n) dot.render(fn) diff --git a/protob/messages-monero.proto b/protob/messages-monero.proto index 0ec70477b..623a180c4 100644 --- a/protob/messages-monero.proto +++ b/protob/messages-monero.proto @@ -94,6 +94,7 @@ message MoneroTransactionInitRequest { /** * Response: Response to transaction signing initialization. + * @next MoneroTransactionSignRequest */ message MoneroTransactionInitAck { optional uint32 version = 1; @@ -115,6 +116,7 @@ message MoneroTransactionSetInputRequest { /** * Response: Response to setting UTXO for signature. Contains sealed values needed for further protocol steps. + * @next MoneroTransactionSignRequest */ message MoneroTransactionSetInputAck { optional bytes vini = 1; // xmrtypes.TxinToKey @@ -135,6 +137,7 @@ message MoneroTransactionInputsPermutationRequest { /** * Response: Response to setting permutation on key images + * @next MoneroTransactionSignRequest */ message MoneroTransactionInputsPermutationAck { } @@ -153,6 +156,7 @@ message MoneroTransactionInputViniRequest { /** * Response: Response to setting UTXO to the device + * @next MoneroTransactionSignRequest */ message MoneroTransactionInputViniAck { } @@ -168,6 +172,7 @@ message MoneroTransactionSetOutputRequest { /** * Response: Response to setting transaction destination. Contains sealed values needed for further protocol steps. + * @next MoneroTransactionSignRequest */ message MoneroTransactionSetOutputAck { optional bytes tx_out = 1; // xmrtypes.TxOut @@ -186,6 +191,7 @@ message MoneroTransactionAllOutSetRequest { /** * Response: After all outputs are sent the initial RCT signature fields are sent. + * @next MoneroTransactionSignRequest */ message MoneroTransactionAllOutSetAck { optional bytes extra = 1; @@ -210,6 +216,7 @@ message MoneroTransactionMlsagDoneRequest { /** * Response: Contains full message hash needed for the signature + * @next MoneroTransactionSignRequest */ message MoneroTransactionMlsagDoneAck { optional bytes full_message_hash = 1; @@ -231,6 +238,7 @@ message MoneroTransactionSignInputRequest { /** * Response: Contains full MG signature of the UTXO + multisig data if applicable. + * @next MoneroTransactionSignRequest */ message MoneroTransactionSignInputAck { optional bytes signature = 1; @@ -257,15 +265,15 @@ message MoneroTransactionFinalAck { /** * Request: Wrapping request for transaction signature protocol. - * @next MoneroTransactionInitAck - * @next MoneroTransactionSetInputAck - * @next MoneroTransactionInputsPermutationAck - * @next MoneroTransactionInputViniAck - * @next MoneroTransactionSetOutputAck - * @next MoneroTransactionAllOutSetAck - * @next MoneroTransactionMlsagDoneAck - * @next MoneroTransactionSignInputAck - * @next MoneroTransactionFinalAck + * @wrap MoneroTransactionInitRequest + * @wrap MoneroTransactionSetInputRequest + * @wrap MoneroTransactionInputsPermutationRequest + * @wrap MoneroTransactionInputViniRequest + * @wrap MoneroTransactionSetOutputRequest + * @wrap MoneroTransactionAllOutSetRequest + * @wrap MoneroTransactionMlsagDoneRequest + * @wrap MoneroTransactionSignInputRequest + * @wrap MoneroTransactionFinalRequest */ message MoneroTransactionSignRequest { optional MoneroTransactionInitRequest init = 1; @@ -281,6 +289,7 @@ message MoneroTransactionSignRequest { /** * Request: Sub request of MoneroKeyImageSync. Initializing key image sync. + * @start * @next MoneroKeyImageExportInitAck */ message MoneroKeyImageExportInitRequest { @@ -300,9 +309,9 @@ message MoneroKeyImageExportInitRequest { /** * Response: Response to key image sync initialization. + * @next MoneroKeyImageSyncRequest */ message MoneroKeyImageExportInitAck { - } /** @@ -324,6 +333,7 @@ message MoneroKeyImageSyncStepRequest { /** * Response: Response to key image sync step. Contains encrypted exported key image. + * @next MoneroKeyImageSyncRequest */ message MoneroKeyImageSyncStepAck { repeated MoneroExportedKeyImage kis = 1; @@ -346,6 +356,7 @@ message MoneroKeyImageSyncFinalRequest { /** * Response: Response to key image sync step. Contains encryption keys for exported key images. + * @end */ message MoneroKeyImageSyncFinalAck { optional bytes enc_key = 1; @@ -353,9 +364,9 @@ message MoneroKeyImageSyncFinalAck { /** * Request: Wrapping request for key image sync protocol. - * @next MoneroKeyImageExportInitAck - * @next MoneroKeyImageSyncStepAck - * @next MoneroKeyImageSyncFinalAck + * @wrap MoneroKeyImageExportInitRequest + * @wrap MoneroKeyImageSyncStepRequest + * @wrap MoneroKeyImageSyncFinalRequest */ message MoneroKeyImageSyncRequest { optional MoneroKeyImageExportInitRequest init = 1; @@ -365,6 +376,7 @@ message MoneroKeyImageSyncRequest { /** * Request: Universal Monero protocol implementation diagnosis request. + * @start * @next DebugMoneroDiagAck */ message DebugMoneroDiagRequest { From ca22a57963edb0eb0b4776ec4e7f66ca7cba3361 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Du=C5=A1an=20Klinec?= Date: Mon, 23 Jul 2018 12:48:09 +0200 Subject: [PATCH 443/767] xmr: wire type fix (#175) --- protob/messages.proto | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/protob/messages.proto b/protob/messages.proto index 3070aaf57..ef794e855 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -194,10 +194,10 @@ enum MessageType { MessageType_MoneroKeyImageExportInitAck = 520 [(wire_out) = true]; MessageType_MoneroKeyImageSyncStepAck = 521 [(wire_out) = true]; MessageType_MoneroKeyImageSyncFinalAck = 522 [(wire_out) = true]; - MessageType_MoneroGetAddressRequest = 530 [(wire_in) = true]; - MessageType_MoneroAddressAck = 531 [(wire_out) = true]; - MessageType_MoneroGetWatchKeyRequest = 532 [(wire_in) = true]; - MessageType_MoneroWatchKeyAck = 533 [(wire_out) = true]; + MessageType_MoneroGetAddress = 530 [(wire_in) = true]; + MessageType_MoneroAddress = 531 [(wire_out) = true]; + MessageType_MoneroGetWatchKey = 532 [(wire_in) = true]; + MessageType_MoneroWatchKey = 533 [(wire_out) = true]; MessageType_DebugMoneroDiagRequest = 536 [(wire_in) = true]; MessageType_DebugMoneroDiagAck = 537 [(wire_out) = true]; } From ecac910d7f2d0378fd059aa239bb8dc2bbfdad1d Mon Sep 17 00:00:00 2001 From: Szymon Lesisz Date: Thu, 26 Jul 2018 12:09:52 +0200 Subject: [PATCH 444/767] connect support for dogecoin and vertcoin (#176) --- defs/support.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/defs/support.json b/defs/support.json index 53eb24dc6..f91962118 100644 --- a/defs/support.json +++ b/defs/support.json @@ -58,7 +58,9 @@ "Bgold": true, "Dash": true, "Litecoin": true, - "Zcash": true + "Zcash": true, + "Dogecoin": true, + "Vertcoin": true }, "webwallet": { "Bitcoin": true, From a01a9cef9e8690e998839be719880925c5991231 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 26 Jul 2018 17:04:03 +0200 Subject: [PATCH 445/767] protob: add GetPublicKey.script_type --- protob/messages-bitcoin.proto | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/protob/messages-bitcoin.proto b/protob/messages-bitcoin.proto index 86111bdfe..cd1d73062 100644 --- a/protob/messages-bitcoin.proto +++ b/protob/messages-bitcoin.proto @@ -41,10 +41,11 @@ message MultisigRedeemScriptType { * @next Failure */ message GetPublicKey { - repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - optional string ecdsa_curve_name = 2; // ECDSA curve name to use - optional bool show_display = 3; // optionally show on display before sending the result - optional string coin_name = 4 [default='Bitcoin']; // coin to use for verifying + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional string ecdsa_curve_name = 2; // ECDSA curve name to use + optional bool show_display = 3; // optionally show on display before sending the result + optional string coin_name = 4 [default='Bitcoin']; // coin to use for verifying + optional InputScriptType script_type = 5 [default=SPENDADDRESS]; // used to distinguish between various address formats (non-segwit, segwit, etc.) } /** From 46431fb7c8be0ed511c3f261d020bc6d73bc1bd4 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 26 Jul 2018 17:17:21 +0200 Subject: [PATCH 446/767] defs: remove /api from coins backend --- defs/coins/bcash.json | 10 +++++----- defs/coins/bgold.json | 10 +++++----- defs/coins/bitcoin.json | 10 +++++----- defs/coins/bitcore.json | 2 +- defs/coins/bprivate.json | 2 +- defs/coins/crown.json | 4 ++-- defs/coins/dash.json | 10 +++++----- defs/coins/decred.json | 2 +- defs/coins/decred_testnet.json | 2 +- defs/coins/digibyte.json | 2 +- defs/coins/dogecoin.json | 10 +++++----- defs/coins/flashcoin.json | 2 +- defs/coins/fujicoin.json | 2 +- defs/coins/groestlcoin.json | 2 +- defs/coins/groestlcoin_testnet.json | 2 +- defs/coins/koto.json | 2 +- defs/coins/litecoin.json | 10 +++++----- defs/coins/litecoin_testnet.json | 2 +- defs/coins/monacoin.json | 6 +++--- defs/coins/pesetacoin.json | 2 +- defs/coins/terracoin.json | 2 +- defs/coins/vertcoin.json | 10 +++++----- defs/coins/viacoin.json | 2 +- defs/coins/zcash.json | 10 +++++----- defs/coins/zcash_testnet.json | 2 +- defs/coins/zcoin.json | 2 +- defs/coins/zencash.json | 2 +- 27 files changed, 62 insertions(+), 62 deletions(-) diff --git a/defs/coins/bcash.json b/defs/coins/bcash.json index ffed37d0d..46a231ea2 100644 --- a/defs/coins/bcash.json +++ b/defs/coins/bcash.json @@ -38,10 +38,10 @@ "max_address_length": 34, "bitcore": [], "blockbook": [ - "https://bch1.trezor.io/api", - "https://bch2.trezor.io/api", - "https://bch3.trezor.io/api", - "https://bch4.trezor.io/api", - "https://bch5.trezor.io/api" + "https://bch1.trezor.io", + "https://bch2.trezor.io", + "https://bch3.trezor.io", + "https://bch4.trezor.io", + "https://bch5.trezor.io" ] } diff --git a/defs/coins/bgold.json b/defs/coins/bgold.json index 2076806d7..0e69e84c4 100644 --- a/defs/coins/bgold.json +++ b/defs/coins/bgold.json @@ -38,10 +38,10 @@ "max_address_length": 34, "bitcore": [], "blockbook": [ - "https://btg1.trezor.io/api", - "https://btg2.trezor.io/api", - "https://btg3.trezor.io/api", - "https://btg4.trezor.io/api", - "https://btg5.trezor.io/api" + "https://btg1.trezor.io", + "https://btg2.trezor.io", + "https://btg3.trezor.io", + "https://btg4.trezor.io", + "https://btg5.trezor.io" ] } diff --git a/defs/coins/bitcoin.json b/defs/coins/bitcoin.json index b4850c5b3..4889902df 100644 --- a/defs/coins/bitcoin.json +++ b/defs/coins/bitcoin.json @@ -38,10 +38,10 @@ "max_address_length": 34, "bitcore": [], "blockbook": [ - "https://btc1.trezor.io/api", - "https://btc2.trezor.io/api", - "https://btc3.trezor.io/api", - "https://btc4.trezor.io/api", - "https://btc5.trezor.io/api" + "https://btc1.trezor.io", + "https://btc2.trezor.io", + "https://btc3.trezor.io", + "https://btc4.trezor.io", + "https://btc5.trezor.io" ] } diff --git a/defs/coins/bitcore.json b/defs/coins/bitcore.json index 9cdb0b6e2..93897bb58 100644 --- a/defs/coins/bitcore.json +++ b/defs/coins/bitcore.json @@ -34,7 +34,7 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [ - "https://insight.bitcore.cc/api" + "https://insight.bitcore.cc" ], "blockbook": [] } diff --git a/defs/coins/bprivate.json b/defs/coins/bprivate.json index 7a1b5a6a7..32bb942b5 100644 --- a/defs/coins/bprivate.json +++ b/defs/coins/bprivate.json @@ -34,7 +34,7 @@ "min_address_length": 35, "max_address_length": 95, "bitcore": [ - "https://explorer.btcprivate.org/api" + "https://explorer.btcprivate.org" ], "blockbook": [] } diff --git a/defs/coins/crown.json b/defs/coins/crown.json index fe1dcbf5c..0084dfd44 100644 --- a/defs/coins/crown.json +++ b/defs/coins/crown.json @@ -34,8 +34,8 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [ - "https://crw-bitcore.crown.tech/api", - "https://crw2-bitcore.crown.tech/api" + "https://crw-bitcore.crown.tech", + "https://crw2-bitcore.crown.tech" ], "blockbook": [] } diff --git a/defs/coins/dash.json b/defs/coins/dash.json index f216a03df..2747d9e01 100644 --- a/defs/coins/dash.json +++ b/defs/coins/dash.json @@ -35,10 +35,10 @@ "max_address_length": 34, "bitcore": [], "blockbook": [ - "https://dash1.trezor.io/api", - "https://dash2.trezor.io/api", - "https://dash3.trezor.io/api", - "https://dash4.trezor.io/api", - "https://dash5.trezor.io/api" + "https://dash1.trezor.io", + "https://dash2.trezor.io", + "https://dash3.trezor.io", + "https://dash4.trezor.io", + "https://dash5.trezor.io" ] } diff --git a/defs/coins/decred.json b/defs/coins/decred.json index a644c537b..7111ce339 100644 --- a/defs/coins/decred.json +++ b/defs/coins/decred.json @@ -34,7 +34,7 @@ "min_address_length": 35, "max_address_length": 35, "bitcore": [ - "https://mainnet.decred.org/api" + "https://mainnet.decred.org" ], "blockbook": [] } diff --git a/defs/coins/decred_testnet.json b/defs/coins/decred_testnet.json index ba8cac9c5..a869d879e 100644 --- a/defs/coins/decred_testnet.json +++ b/defs/coins/decred_testnet.json @@ -34,7 +34,7 @@ "min_address_length": 35, "max_address_length": 35, "bitcore": [ - "https://testnet.decred.org/api" + "https://testnet.decred.org" ], "blockbook": [] } diff --git a/defs/coins/digibyte.json b/defs/coins/digibyte.json index 0d246e5b6..777ee45b7 100644 --- a/defs/coins/digibyte.json +++ b/defs/coins/digibyte.json @@ -37,7 +37,7 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [ - "https://explorer.digibyteprojects.com/api" + "https://explorer.digibyteprojects.com" ], "blockbook": [] } diff --git a/defs/coins/dogecoin.json b/defs/coins/dogecoin.json index fd9630dfa..a4bff6eb5 100644 --- a/defs/coins/dogecoin.json +++ b/defs/coins/dogecoin.json @@ -35,10 +35,10 @@ "max_address_length": 34, "bitcore": [], "blockbook": [ - "https://doge1.trezor.io/api", - "https://doge2.trezor.io/api", - "https://doge3.trezor.io/api", - "https://doge4.trezor.io/api", - "https://doge5.trezor.io/api" + "https://doge1.trezor.io", + "https://doge2.trezor.io", + "https://doge3.trezor.io", + "https://doge4.trezor.io", + "https://doge5.trezor.io" ] } diff --git a/defs/coins/flashcoin.json b/defs/coins/flashcoin.json index 7b1471386..1c7fbb43f 100644 --- a/defs/coins/flashcoin.json +++ b/defs/coins/flashcoin.json @@ -34,7 +34,7 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [ - "https://explorer.flashcoin.io/api" + "https://explorer.flashcoin.io" ], "blockbook": [] } diff --git a/defs/coins/fujicoin.json b/defs/coins/fujicoin.json index 91ff79a39..e9f28ebae 100644 --- a/defs/coins/fujicoin.json +++ b/defs/coins/fujicoin.json @@ -37,7 +37,7 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [ - "http://explorer.fujicoin.org/api" + "http://explorer.fujicoin.org" ], "blockbook": [] } diff --git a/defs/coins/groestlcoin.json b/defs/coins/groestlcoin.json index cacc73022..858d7424a 100644 --- a/defs/coins/groestlcoin.json +++ b/defs/coins/groestlcoin.json @@ -34,7 +34,7 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [ - "https://groestlsight.groestlcoin.org/api" + "https://groestlsight.groestlcoin.org" ], "blockbook": [] } diff --git a/defs/coins/groestlcoin_testnet.json b/defs/coins/groestlcoin_testnet.json index 6e8f6a338..c5376a198 100644 --- a/defs/coins/groestlcoin_testnet.json +++ b/defs/coins/groestlcoin_testnet.json @@ -34,7 +34,7 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [ - "https://groestlsight-test.groestlcoin.org/api" + "https://groestlsight-test.groestlcoin.org" ], "blockbook": [] } diff --git a/defs/coins/koto.json b/defs/coins/koto.json index aa67aa500..b18597d61 100644 --- a/defs/coins/koto.json +++ b/defs/coins/koto.json @@ -34,7 +34,7 @@ "min_address_length": 35, "max_address_length": 95, "bitcore": [ - "https://insight.kotocoin.info/api" + "https://insight.kotocoin.info" ], "blockbook": [] } diff --git a/defs/coins/litecoin.json b/defs/coins/litecoin.json index bbc7f41a0..906983b43 100644 --- a/defs/coins/litecoin.json +++ b/defs/coins/litecoin.json @@ -35,10 +35,10 @@ "max_address_length": 34, "bitcore": [], "blockbook": [ - "https://ltc1.trezor.io/api", - "https://ltc2.trezor.io/api", - "https://ltc3.trezor.io/api", - "https://ltc4.trezor.io/api", - "https://ltc5.trezor.io/api" + "https://ltc1.trezor.io", + "https://ltc2.trezor.io", + "https://ltc3.trezor.io", + "https://ltc4.trezor.io", + "https://ltc5.trezor.io" ] } diff --git a/defs/coins/litecoin_testnet.json b/defs/coins/litecoin_testnet.json index 1c15e6ecf..de4bd5a8a 100644 --- a/defs/coins/litecoin_testnet.json +++ b/defs/coins/litecoin_testnet.json @@ -34,7 +34,7 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [ - "https://testnet.litecore.io/api" + "https://testnet.litecore.io" ], "blockbook": [] } diff --git a/defs/coins/monacoin.json b/defs/coins/monacoin.json index 5315cf8ba..2ec317e33 100644 --- a/defs/coins/monacoin.json +++ b/defs/coins/monacoin.json @@ -34,9 +34,9 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [ - "https://mona.chainsight.info/api", - "https://mona.insight.monaco-ex.org/insight-api-monacoin", - "https://insight.electrum-mona.org/api" + "https://mona.chainsight.info", + "https://insight.electrum-mona.org", + "https://mona.insight.monaco-ex.org" ], "blockbook": [] } diff --git a/defs/coins/pesetacoin.json b/defs/coins/pesetacoin.json index 51a56859e..c944af394 100644 --- a/defs/coins/pesetacoin.json +++ b/defs/coins/pesetacoin.json @@ -34,7 +34,7 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [ - "http://live.pesetacoin.info/api" + "http://live.pesetacoin.info" ], "blockbook": [] } diff --git a/defs/coins/terracoin.json b/defs/coins/terracoin.json index 4b1f20cde..6415be6c4 100644 --- a/defs/coins/terracoin.json +++ b/defs/coins/terracoin.json @@ -34,7 +34,7 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [ - "https://insight.terracoin.io/api" + "https://insight.terracoin.io" ], "blockbook": [] } diff --git a/defs/coins/vertcoin.json b/defs/coins/vertcoin.json index 096d2e090..bd56e17d3 100644 --- a/defs/coins/vertcoin.json +++ b/defs/coins/vertcoin.json @@ -35,10 +35,10 @@ "max_address_length": 34, "bitcore": [], "blockbook": [ - "https://vtc1.trezor.io/api", - "https://vtc2.trezor.io/api", - "https://vtc3.trezor.io/api", - "https://vtc4.trezor.io/api", - "https://vtc5.trezor.io/api" + "https://vtc1.trezor.io", + "https://vtc2.trezor.io", + "https://vtc3.trezor.io", + "https://vtc4.trezor.io", + "https://vtc5.trezor.io" ] } diff --git a/defs/coins/viacoin.json b/defs/coins/viacoin.json index 7e442cc12..0b5ffc421 100644 --- a/defs/coins/viacoin.json +++ b/defs/coins/viacoin.json @@ -37,7 +37,7 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [ - "https://explorer.viacoin.org/api" + "https://explorer.viacoin.org" ], "blockbook": [] } diff --git a/defs/coins/zcash.json b/defs/coins/zcash.json index 34c7bec72..fab3c431c 100644 --- a/defs/coins/zcash.json +++ b/defs/coins/zcash.json @@ -35,10 +35,10 @@ "max_address_length": 95, "bitcore": [], "blockbook": [ - "https://zec1.trezor.io/api", - "https://zec2.trezor.io/api", - "https://zec3.trezor.io/api", - "https://zec4.trezor.io/api", - "https://zec5.trezor.io/api" + "https://zec1.trezor.io", + "https://zec2.trezor.io", + "https://zec3.trezor.io", + "https://zec4.trezor.io", + "https://zec5.trezor.io" ] } diff --git a/defs/coins/zcash_testnet.json b/defs/coins/zcash_testnet.json index fffc3d85c..0372a6a04 100644 --- a/defs/coins/zcash_testnet.json +++ b/defs/coins/zcash_testnet.json @@ -34,7 +34,7 @@ "min_address_length": 35, "max_address_length": 95, "bitcore": [ - "https://explorer.testnet.z.cash/api" + "https://explorer.testnet.z.cash" ], "blockbook": [] } diff --git a/defs/coins/zcoin.json b/defs/coins/zcoin.json index 707abec64..877a6abee 100644 --- a/defs/coins/zcoin.json +++ b/defs/coins/zcoin.json @@ -37,7 +37,7 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [ - "https://insight.zcoin.io/api" + "https://insight.zcoin.io" ], "blockbook": [] } diff --git a/defs/coins/zencash.json b/defs/coins/zencash.json index d50f2409e..cc931bbdf 100644 --- a/defs/coins/zencash.json +++ b/defs/coins/zencash.json @@ -34,7 +34,7 @@ "min_address_length": 35, "max_address_length": 95, "bitcore": [ - "https://explorer.zensystem.io/insight-api-zen" + "https://explorer.zensystem.io" ], "blockbook": [] } From e9f509e3d054e48bf2a8bc282086c58a19728c0d Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 26 Jul 2018 17:22:33 +0200 Subject: [PATCH 447/767] defs: remove one mona backend --- defs/coins/monacoin.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/defs/coins/monacoin.json b/defs/coins/monacoin.json index 2ec317e33..6628691b7 100644 --- a/defs/coins/monacoin.json +++ b/defs/coins/monacoin.json @@ -35,8 +35,7 @@ "max_address_length": 34, "bitcore": [ "https://mona.chainsight.info", - "https://insight.electrum-mona.org", - "https://mona.insight.monaco-ex.org" + "https://insight.electrum-mona.org" ], "blockbook": [] } From fed80b34f6b9af8f3466e0cb58ffb9853db1035e Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 26 Jul 2018 17:36:41 +0200 Subject: [PATCH 448/767] defs: add testnet backends (bitcore) --- defs/coins/bitcoin_testnet.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/defs/coins/bitcoin_testnet.json b/defs/coins/bitcoin_testnet.json index a51172e8b..25e66986b 100644 --- a/defs/coins/bitcoin_testnet.json +++ b/defs/coins/bitcoin_testnet.json @@ -33,6 +33,9 @@ "uri_prefix": "bitcoin", "min_address_length": 27, "max_address_length": 34, - "bitcore": [], + "bitcore": [ + "https://testnet-bitcore1.trezor.io", + "https://testnet-bitcore2.trezor.io" + ], "blockbook": [] } From 0cea64b52b1f495cd6eed8d32584ca84d24374ed Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 26 Jul 2018 17:43:42 +0200 Subject: [PATCH 449/767] defs: fix build_coins test-backend options --- tools/build_coins.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/build_coins.py b/tools/build_coins.py index b730aa4b5..498f8f403 100755 --- a/tools/build_coins.py +++ b/tools/build_coins.py @@ -61,7 +61,7 @@ def check_type(val, types, nullable=False, empty=False, regex=None, choice=None) def get_hash_genesis_block(api): - r = requests.get(api + '/block-index/0') + r = requests.get(api + '/api/block-index/0') j = r.json() return j['blockHash'] From 38b17555f1e0829e9e9b84fa6f893f1cec3417c7 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 26 Jul 2018 18:11:45 +0200 Subject: [PATCH 450/767] defs: add cooldown attribute to coins definitions --- defs/coins/bcash.json | 3 ++- defs/coins/bcash_testnet.json | 3 ++- defs/coins/bgold.json | 3 ++- defs/coins/bgold_testnet.json | 3 ++- defs/coins/bitcoin.json | 3 ++- defs/coins/bitcoin_testnet.json | 3 ++- defs/coins/bitcore.json | 3 ++- defs/coins/bprivate.json | 3 ++- defs/coins/crown.json | 3 ++- defs/coins/dash.json | 3 ++- defs/coins/dash_testnet.json | 3 ++- defs/coins/decred.json | 3 ++- defs/coins/decred_testnet.json | 3 ++- defs/coins/denarius.json | 3 ++- defs/coins/digibyte.json | 3 ++- defs/coins/dogecoin.json | 3 ++- defs/coins/feathercoin.json | 3 ++- defs/coins/flashcoin.json | 3 ++- defs/coins/fujicoin.json | 3 ++- defs/coins/groestlcoin.json | 3 ++- defs/coins/groestlcoin_testnet.json | 3 ++- defs/coins/koto.json | 3 ++- defs/coins/litecoin.json | 3 ++- defs/coins/litecoin_testnet.json | 3 ++- defs/coins/monacoin.json | 3 ++- defs/coins/monetaryunit.json | 7 ++++--- defs/coins/myriad.json | 3 ++- defs/coins/namecoin.json | 3 ++- defs/coins/pesetacoin.json | 5 +++-- defs/coins/terracoin.json | 3 ++- defs/coins/vertcoin.json | 3 ++- defs/coins/viacoin.json | 3 ++- defs/coins/zcash.json | 3 ++- defs/coins/zcash_testnet.json | 3 ++- defs/coins/zcoin.json | 3 ++- defs/coins/zcoin_testnet.json | 3 ++- defs/coins/zencash.json | 3 ++- 37 files changed, 77 insertions(+), 40 deletions(-) diff --git a/defs/coins/bcash.json b/defs/coins/bcash.json index 46a231ea2..e83a45d9f 100644 --- a/defs/coins/bcash.json +++ b/defs/coins/bcash.json @@ -43,5 +43,6 @@ "https://bch3.trezor.io", "https://bch4.trezor.io", "https://bch5.trezor.io" - ] + ], + "cooldown": 100 } diff --git a/defs/coins/bcash_testnet.json b/defs/coins/bcash_testnet.json index 7527265a0..eb01cb948 100644 --- a/defs/coins/bcash_testnet.json +++ b/defs/coins/bcash_testnet.json @@ -34,5 +34,6 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [], - "blockbook": [] + "blockbook": [], + "cooldown": 100 } diff --git a/defs/coins/bgold.json b/defs/coins/bgold.json index 0e69e84c4..333427fde 100644 --- a/defs/coins/bgold.json +++ b/defs/coins/bgold.json @@ -43,5 +43,6 @@ "https://btg3.trezor.io", "https://btg4.trezor.io", "https://btg5.trezor.io" - ] + ], + "cooldown": 100 } diff --git a/defs/coins/bgold_testnet.json b/defs/coins/bgold_testnet.json index 7a18807e9..b5e81235f 100644 --- a/defs/coins/bgold_testnet.json +++ b/defs/coins/bgold_testnet.json @@ -37,5 +37,6 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [], - "blockbook": [] + "blockbook": [], + "cooldown": 100 } diff --git a/defs/coins/bitcoin.json b/defs/coins/bitcoin.json index 4889902df..88a143029 100644 --- a/defs/coins/bitcoin.json +++ b/defs/coins/bitcoin.json @@ -43,5 +43,6 @@ "https://btc3.trezor.io", "https://btc4.trezor.io", "https://btc5.trezor.io" - ] + ], + "cooldown": 100 } diff --git a/defs/coins/bitcoin_testnet.json b/defs/coins/bitcoin_testnet.json index 25e66986b..20ec46dfb 100644 --- a/defs/coins/bitcoin_testnet.json +++ b/defs/coins/bitcoin_testnet.json @@ -37,5 +37,6 @@ "https://testnet-bitcore1.trezor.io", "https://testnet-bitcore2.trezor.io" ], - "blockbook": [] + "blockbook": [], + "cooldown": 100 } diff --git a/defs/coins/bitcore.json b/defs/coins/bitcore.json index 93897bb58..0b38f3390 100644 --- a/defs/coins/bitcore.json +++ b/defs/coins/bitcore.json @@ -36,5 +36,6 @@ "bitcore": [ "https://insight.bitcore.cc" ], - "blockbook": [] + "blockbook": [], + "cooldown": 100 } diff --git a/defs/coins/bprivate.json b/defs/coins/bprivate.json index 32bb942b5..80cd951f0 100644 --- a/defs/coins/bprivate.json +++ b/defs/coins/bprivate.json @@ -36,5 +36,6 @@ "bitcore": [ "https://explorer.btcprivate.org" ], - "blockbook": [] + "blockbook": [], + "cooldown": 100 } diff --git a/defs/coins/crown.json b/defs/coins/crown.json index 0084dfd44..8d7d7a31b 100644 --- a/defs/coins/crown.json +++ b/defs/coins/crown.json @@ -37,5 +37,6 @@ "https://crw-bitcore.crown.tech", "https://crw2-bitcore.crown.tech" ], - "blockbook": [] + "blockbook": [], + "cooldown": 100 } diff --git a/defs/coins/dash.json b/defs/coins/dash.json index 2747d9e01..1b933a378 100644 --- a/defs/coins/dash.json +++ b/defs/coins/dash.json @@ -40,5 +40,6 @@ "https://dash3.trezor.io", "https://dash4.trezor.io", "https://dash5.trezor.io" - ] + ], + "cooldown": 100 } diff --git a/defs/coins/dash_testnet.json b/defs/coins/dash_testnet.json index f4dad1050..f176a1ebd 100644 --- a/defs/coins/dash_testnet.json +++ b/defs/coins/dash_testnet.json @@ -34,5 +34,6 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [], - "blockbook": [] + "blockbook": [], + "cooldown": 100 } diff --git a/defs/coins/decred.json b/defs/coins/decred.json index 7111ce339..8089e6372 100644 --- a/defs/coins/decred.json +++ b/defs/coins/decred.json @@ -36,5 +36,6 @@ "bitcore": [ "https://mainnet.decred.org" ], - "blockbook": [] + "blockbook": [], + "cooldown": 100 } diff --git a/defs/coins/decred_testnet.json b/defs/coins/decred_testnet.json index a869d879e..9cca77f6c 100644 --- a/defs/coins/decred_testnet.json +++ b/defs/coins/decred_testnet.json @@ -36,5 +36,6 @@ "bitcore": [ "https://testnet.decred.org" ], - "blockbook": [] + "blockbook": [], + "cooldown": 100 } diff --git a/defs/coins/denarius.json b/defs/coins/denarius.json index 7edddd892..a1fc8bc37 100644 --- a/defs/coins/denarius.json +++ b/defs/coins/denarius.json @@ -34,5 +34,6 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [], - "blockbook": [] + "blockbook": [], + "cooldown": 100 } diff --git a/defs/coins/digibyte.json b/defs/coins/digibyte.json index 777ee45b7..33d3166a3 100644 --- a/defs/coins/digibyte.json +++ b/defs/coins/digibyte.json @@ -39,5 +39,6 @@ "bitcore": [ "https://explorer.digibyteprojects.com" ], - "blockbook": [] + "blockbook": [], + "cooldown": 100 } diff --git a/defs/coins/dogecoin.json b/defs/coins/dogecoin.json index a4bff6eb5..4a5dca640 100644 --- a/defs/coins/dogecoin.json +++ b/defs/coins/dogecoin.json @@ -40,5 +40,6 @@ "https://doge3.trezor.io", "https://doge4.trezor.io", "https://doge5.trezor.io" - ] + ], + "cooldown": 100 } diff --git a/defs/coins/feathercoin.json b/defs/coins/feathercoin.json index 7eba94e47..bdb401970 100644 --- a/defs/coins/feathercoin.json +++ b/defs/coins/feathercoin.json @@ -36,5 +36,6 @@ "bitcore": [ "https://bitcore.feathercoin.com" ], - "blockbook": [] + "blockbook": [], + "cooldown": 100 } diff --git a/defs/coins/flashcoin.json b/defs/coins/flashcoin.json index 1c7fbb43f..59b7f52c0 100644 --- a/defs/coins/flashcoin.json +++ b/defs/coins/flashcoin.json @@ -36,5 +36,6 @@ "bitcore": [ "https://explorer.flashcoin.io" ], - "blockbook": [] + "blockbook": [], + "cooldown": 100 } diff --git a/defs/coins/fujicoin.json b/defs/coins/fujicoin.json index e9f28ebae..e34bfe805 100644 --- a/defs/coins/fujicoin.json +++ b/defs/coins/fujicoin.json @@ -39,5 +39,6 @@ "bitcore": [ "http://explorer.fujicoin.org" ], - "blockbook": [] + "blockbook": [], + "cooldown": 100 } diff --git a/defs/coins/groestlcoin.json b/defs/coins/groestlcoin.json index 858d7424a..84edbeca0 100644 --- a/defs/coins/groestlcoin.json +++ b/defs/coins/groestlcoin.json @@ -36,5 +36,6 @@ "bitcore": [ "https://groestlsight.groestlcoin.org" ], - "blockbook": [] + "blockbook": [], + "cooldown": 100 } diff --git a/defs/coins/groestlcoin_testnet.json b/defs/coins/groestlcoin_testnet.json index c5376a198..2612a6ca0 100644 --- a/defs/coins/groestlcoin_testnet.json +++ b/defs/coins/groestlcoin_testnet.json @@ -36,5 +36,6 @@ "bitcore": [ "https://groestlsight-test.groestlcoin.org" ], - "blockbook": [] + "blockbook": [], + "cooldown": 100 } diff --git a/defs/coins/koto.json b/defs/coins/koto.json index b18597d61..cc9e86b3c 100644 --- a/defs/coins/koto.json +++ b/defs/coins/koto.json @@ -36,5 +36,6 @@ "bitcore": [ "https://insight.kotocoin.info" ], - "blockbook": [] + "blockbook": [], + "cooldown": 100 } diff --git a/defs/coins/litecoin.json b/defs/coins/litecoin.json index 906983b43..a09adbf28 100644 --- a/defs/coins/litecoin.json +++ b/defs/coins/litecoin.json @@ -40,5 +40,6 @@ "https://ltc3.trezor.io", "https://ltc4.trezor.io", "https://ltc5.trezor.io" - ] + ], + "cooldown": 100 } diff --git a/defs/coins/litecoin_testnet.json b/defs/coins/litecoin_testnet.json index de4bd5a8a..d60e569e7 100644 --- a/defs/coins/litecoin_testnet.json +++ b/defs/coins/litecoin_testnet.json @@ -36,5 +36,6 @@ "bitcore": [ "https://testnet.litecore.io" ], - "blockbook": [] + "blockbook": [], + "cooldown": 100 } diff --git a/defs/coins/monacoin.json b/defs/coins/monacoin.json index 6628691b7..b23b30239 100644 --- a/defs/coins/monacoin.json +++ b/defs/coins/monacoin.json @@ -37,5 +37,6 @@ "https://mona.chainsight.info", "https://insight.electrum-mona.org" ], - "blockbook": [] + "blockbook": [], + "cooldown": 100 } diff --git a/defs/coins/monetaryunit.json b/defs/coins/monetaryunit.json index 634a8fc85..e5792a2e1 100644 --- a/defs/coins/monetaryunit.json +++ b/defs/coins/monetaryunit.json @@ -12,8 +12,8 @@ "minfee_kb": 1000, "signed_message_header": "MonetaryUnit Signed Message:\n", "hash_genesis_block": "000002acd994a815401fbaae0e52404b32857efd0b7b0c77b8e0715ccdd6d437", - "xprv_magic": 76066276, - "xpub_magic": 76067358, + "xprv_magic": 76066276, + "xpub_magic": 76067358, "xpub_magic_segwit_p2sh": null, "xpub_magic_segwit_native": null, "bech32_prefix": null, @@ -34,5 +34,6 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [], - "blockbook": [] + "blockbook": [], + "cooldown": 100 } diff --git a/defs/coins/myriad.json b/defs/coins/myriad.json index eaae7a15a..18889998a 100644 --- a/defs/coins/myriad.json +++ b/defs/coins/myriad.json @@ -37,5 +37,6 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [], - "blockbook": [] + "blockbook": [], + "cooldown": 100 } diff --git a/defs/coins/namecoin.json b/defs/coins/namecoin.json index cd3628278..7933a1704 100644 --- a/defs/coins/namecoin.json +++ b/defs/coins/namecoin.json @@ -34,5 +34,6 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [], - "blockbook": [] + "blockbook": [], + "cooldown": 100 } diff --git a/defs/coins/pesetacoin.json b/defs/coins/pesetacoin.json index c944af394..dbdb2dfc2 100644 --- a/defs/coins/pesetacoin.json +++ b/defs/coins/pesetacoin.json @@ -25,7 +25,7 @@ "force_bip143": false, "bip115": false, "version_group_id": null, - "default_fee_b": { + "default_fee_b": { "Normal": 10 }, "dust_limit": 10000000, @@ -36,5 +36,6 @@ "bitcore": [ "http://live.pesetacoin.info" ], - "blockbook": [] + "blockbook": [], + "cooldown": 100 } diff --git a/defs/coins/terracoin.json b/defs/coins/terracoin.json index 6415be6c4..bbaa6e752 100644 --- a/defs/coins/terracoin.json +++ b/defs/coins/terracoin.json @@ -36,5 +36,6 @@ "bitcore": [ "https://insight.terracoin.io" ], - "blockbook": [] + "blockbook": [], + "cooldown": 100 } diff --git a/defs/coins/vertcoin.json b/defs/coins/vertcoin.json index bd56e17d3..0a5fc982f 100644 --- a/defs/coins/vertcoin.json +++ b/defs/coins/vertcoin.json @@ -40,5 +40,6 @@ "https://vtc3.trezor.io", "https://vtc4.trezor.io", "https://vtc5.trezor.io" - ] + ], + "cooldown": 100 } diff --git a/defs/coins/viacoin.json b/defs/coins/viacoin.json index 0b5ffc421..527b5b01d 100644 --- a/defs/coins/viacoin.json +++ b/defs/coins/viacoin.json @@ -39,5 +39,6 @@ "bitcore": [ "https://explorer.viacoin.org" ], - "blockbook": [] + "blockbook": [], + "cooldown": 100 } diff --git a/defs/coins/zcash.json b/defs/coins/zcash.json index fab3c431c..807528a3f 100644 --- a/defs/coins/zcash.json +++ b/defs/coins/zcash.json @@ -40,5 +40,6 @@ "https://zec3.trezor.io", "https://zec4.trezor.io", "https://zec5.trezor.io" - ] + ], + "cooldown": 100 } diff --git a/defs/coins/zcash_testnet.json b/defs/coins/zcash_testnet.json index 0372a6a04..468d9ffb0 100644 --- a/defs/coins/zcash_testnet.json +++ b/defs/coins/zcash_testnet.json @@ -36,5 +36,6 @@ "bitcore": [ "https://explorer.testnet.z.cash" ], - "blockbook": [] + "blockbook": [], + "cooldown": 100 } diff --git a/defs/coins/zcoin.json b/defs/coins/zcoin.json index 877a6abee..796fea6a7 100644 --- a/defs/coins/zcoin.json +++ b/defs/coins/zcoin.json @@ -39,5 +39,6 @@ "bitcore": [ "https://insight.zcoin.io" ], - "blockbook": [] + "blockbook": [], + "cooldown": 100 } diff --git a/defs/coins/zcoin_testnet.json b/defs/coins/zcoin_testnet.json index 76e47002a..41e4f49e0 100644 --- a/defs/coins/zcoin_testnet.json +++ b/defs/coins/zcoin_testnet.json @@ -37,5 +37,6 @@ "min_address_length": 27, "max_address_length": 35, "bitcore": [], - "blockbook": [] + "blockbook": [], + "cooldown": 100 } diff --git a/defs/coins/zencash.json b/defs/coins/zencash.json index cc931bbdf..f0b94a9f3 100644 --- a/defs/coins/zencash.json +++ b/defs/coins/zencash.json @@ -36,5 +36,6 @@ "bitcore": [ "https://explorer.zensystem.io" ], - "blockbook": [] + "blockbook": [], + "cooldown": 100 } From 105fbeb16df2793eb2fe60251e96d273e52edc3d Mon Sep 17 00:00:00 2001 From: Michael Ira Krufky Date: Fri, 27 Jul 2018 06:22:56 -0400 Subject: [PATCH 451/767] defs: add Akroma (#177) --- defs/ethereum/networks.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/defs/ethereum/networks.json b/defs/ethereum/networks.json index 9dad46b11..39be85bf1 100644 --- a/defs/ethereum/networks.json +++ b/defs/ethereum/networks.json @@ -134,5 +134,13 @@ "name": "Ethersocial Network", "rskip60": false, "url": "https://ethersocial.org" + }, + { + "chain_id": 200625, + "slip44": 200625, + "shortcut": "AKA", + "name": "Akroma", + "rskip60": false, + "url": "https://akroma.io" } ] From 57021f9080ac614acaf0e3b56b26c891d776d372 Mon Sep 17 00:00:00 2001 From: matejcik Date: Fri, 20 Jul 2018 16:38:39 +0200 Subject: [PATCH 452/767] defs: regenerate coins_details with new tokens also make slight tweaks to existing coins_details.py, so that the following diff is prettier --- defs/coins_details.json | 1205 +++++++++++++++++++++++++++++---------- defs/ethereum/tokens | 2 +- tools/coins_details.py | 17 +- 3 files changed, 905 insertions(+), 319 deletions(-) diff --git a/defs/coins_details.json b/defs/coins_details.json index 76494cbe7..763c049e9 100644 --- a/defs/coins_details.json +++ b/defs/coins_details.json @@ -4,7 +4,7 @@ "links": { "Homepage": "https://www.cardano.org" }, - "marketcap_usd": 3324265276, + "marketcap_usd": 4482686788, "name": "Cardano", "shortcut": "ADA", "t1_enabled": "no", @@ -30,7 +30,7 @@ "links": { "Homepage": "https://ellaism.org" }, - "marketcap_usd": 614076, + "marketcap_usd": 674279, "name": "Ellaism", "shortcut": "ELLA", "t1_enabled": "yes", @@ -60,7 +60,7 @@ "links": { "Homepage": "https://ethereumclassic.github.io" }, - "marketcap_usd": 1709000951, + "marketcap_usd": 1726360707, "name": "Ethereum Classic", "shortcut": "ETC", "t1_enabled": "yes", @@ -75,7 +75,7 @@ "links": { "Homepage": "https://www.ethereum.org" }, - "marketcap_usd": 44090870783, + "marketcap_usd": 46802391646, "name": "Ethereum", "shortcut": "ETH", "t1_enabled": "yes", @@ -105,7 +105,7 @@ "links": { "Homepage": "https://www.expanse.tech" }, - "marketcap_usd": 8177837, + "marketcap_usd": 10593934, "name": "Expanse", "shortcut": "EXP", "t1_enabled": "yes", @@ -146,7 +146,7 @@ "links": { "Homepage": "https://ubiqsmart.com" }, - "marketcap_usd": 38000001, + "marketcap_usd": 46821303, "name": "Ubiq", "shortcut": "UBQ", "t1_enabled": "yes", @@ -196,7 +196,7 @@ "links": { "Homepage": "https://tezos.com" }, - "marketcap_usd": 1247867538, + "marketcap_usd": 1300463940, "name": "Tezos", "shortcut": "XTZ", "t1_enabled": "no", @@ -208,7 +208,7 @@ "Github": "https://github.com/Bitcoin-ABC/bitcoin-abc", "Homepage": "https://www.bitcoincash.org/" }, - "marketcap_usd": 12012942923, + "marketcap_usd": 13729622285, "name": "Bitcoin Cash", "shortcut": "BCH", "t1_enabled": "yes", @@ -224,7 +224,7 @@ "Github": "https://github.com/bitcoin/bitcoin", "Homepage": "https://bitcoin.org" }, - "marketcap_usd": 107327263391, + "marketcap_usd": 128315021625, "name": "Bitcoin", "shortcut": "BTC", "t1_enabled": "yes", @@ -240,19 +240,20 @@ "Github": "https://github.com/BTCPrivate/BitcoinPrivate", "Homepage": "https://btcprivate.org" }, - "marketcap_usd": 164328852, + "marketcap_usd": 141676432, "name": "Bitcoin Private", "shortcut": "BTCP", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "coin" + "type": "coin", + "wallet": {} }, "coin:BTG": { "links": { "Github": "https://github.com/BTCGPU/BTCGPU", "Homepage": "https://bitcoingold.org" }, - "marketcap_usd": 513246492, + "marketcap_usd": 508396087, "name": "Bitcoin Gold", "shortcut": "BTG", "t1_enabled": "yes", @@ -267,31 +268,33 @@ "Github": "https://github.com/LIMXTEC/BitCore", "Homepage": "https://bitcore.cc" }, - "marketcap_usd": 24867996, + "marketcap_usd": 27337289, "name": "Bitcore", "shortcut": "BTX", "t1_enabled": "no", "t2_enabled": "no", - "type": "coin" + "type": "coin", + "wallet": {} }, "coin:CRW": { "links": { "Github": "https://github.com/Crowndev/crowncoin", "Homepage": "https://crown.tech" }, - "marketcap_usd": 8021165, + "marketcap_usd": 8967717, "name": "Crown", "shortcut": "CRW", "t1_enabled": "no", "t2_enabled": "no", - "type": "coin" + "type": "coin", + "wallet": {} }, "coin:DASH": { "links": { "Github": "https://github.com/dashpay/dash", "Homepage": "https://www.dash.org" }, - "marketcap_usd": 1848122293, + "marketcap_usd": 2244144313, "name": "Dash", "shortcut": "DASH", "t1_enabled": "yes", @@ -306,24 +309,26 @@ "Github": "https://github.com/decred/dcrd", "Homepage": "https://www.decred.org" }, - "marketcap_usd": 438153911, + "marketcap_usd": 593053427, "name": "Decred", "shortcut": "DCR", "t1_enabled": "yes", "t2_enabled": "no", - "type": "coin" + "type": "coin", + "wallet": {} }, "coin:DGB": { "links": { "Github": "https://github.com/digibyte/digibyte", "Homepage": "https://www.digibyte.co" }, - "marketcap_usd": 410706122, + "marketcap_usd": 472432594, "name": "DigiByte", "shortcut": "DGB", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "coin" + "type": "coin", + "wallet": {} }, "coin:DNR": { "links": { @@ -334,14 +339,15 @@ "shortcut": "DNR", "t1_enabled": "no", "t2_enabled": "no", - "type": "coin" + "type": "coin", + "wallet": {} }, "coin:DOGE": { "links": { "Github": "https://github.com/dogecoin/dogecoin", "Homepage": "https://dogecoin.com" }, - "marketcap_usd": 267928623, + "marketcap_usd": 416955600, "name": "Dogecoin", "shortcut": "DOGE", "t1_enabled": "yes", @@ -356,7 +362,7 @@ "Github": "https://github.com/fujicoin/fujicoin", "Homepage": "https://www.fujicoin.org" }, - "marketcap_usd": 409832, + "marketcap_usd": 871352, "name": "Fujicoin", "shortcut": "FJC", "t1_enabled": "yes", @@ -375,26 +381,28 @@ "shortcut": "FLASH", "t1_enabled": "no", "t2_enabled": "no", - "type": "coin" + "type": "coin", + "wallet": {} }, "coin:FTC": { "links": { "Github": "https://github.com/FeatherCoin/Feathercoin", "Homepage": "https://feathercoin.com" }, - "marketcap_usd": 15883445, + "marketcap_usd": 21594346, "name": "Feathercoin", "shortcut": "FTC", "t1_enabled": "no", "t2_enabled": "no", - "type": "coin" + "type": "coin", + "wallet": {} }, "coin:GRS": { "links": { "Github": "https://github.com/Groestlcoin/groestlcoin", "Homepage": "https://www.groestlcoin.org" }, - "marketcap_usd": 38897934, + "marketcap_usd": 46522748, "name": "Groestlcoin", "shortcut": "GRS", "t1_enabled": "yes", @@ -413,14 +421,15 @@ "shortcut": "KOTO", "t1_enabled": "no", "t2_enabled": "no", - "type": "coin" + "type": "coin", + "wallet": {} }, "coin:LTC": { "links": { "Github": "https://github.com/litecoin-project/litecoin", "Homepage": "https://litecoin.org" }, - "marketcap_usd": 4459203516, + "marketcap_usd": 4882514683, "name": "Litecoin", "shortcut": "LTC", "t1_enabled": "yes", @@ -436,7 +445,7 @@ "Github": "https://github.com/monacoinproject/monacoin", "Homepage": "https://monacoin.org" }, - "marketcap_usd": 126711391, + "marketcap_usd": 136904441, "name": "Monacoin", "shortcut": "MONA", "t1_enabled": "yes", @@ -455,14 +464,15 @@ "shortcut": "MUE", "t1_enabled": "no", "t2_enabled": "no", - "type": "coin" + "type": "coin", + "wallet": {} }, "coin:NMC": { "links": { "Github": "https://github.com/namecoin/namecoin-core", "Homepage": "https://namecoin.org" }, - "marketcap_usd": 18991978, + "marketcap_usd": 13403036, "name": "Namecoin", "shortcut": "NMC", "t1_enabled": "yes", @@ -477,12 +487,13 @@ "Github": "https://github.com/FundacionPesetacoin/PesetacoinCore", "Homepage": "http://pesetacoin.info" }, - "marketcap_usd": 2725156, + "marketcap_usd": 3588805, "name": "Pesetacoin", "shortcut": "PTC", "t1_enabled": "no", "t2_enabled": "no", - "type": "coin" + "type": "coin", + "wallet": {} }, "coin:TAZ": { "hidden": 1, @@ -495,7 +506,8 @@ "shortcut": "TAZ", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "coin" + "type": "coin", + "wallet": {} }, "coin:TBCH": { "hidden": 1, @@ -508,7 +520,20 @@ "shortcut": "TBCH", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "coin" + "type": "coin", + "wallet": {} + }, + "coin:TBTG": { + "links": { + "Github": "https://github.com/BTCGPU/BTCGPU", + "Homepage": "https://bitcoingold.org" + }, + "name": "Bitcoin Gold Testnet", + "shortcut": "TBTG", + "t1_enabled": "no", + "t2_enabled": "no", + "type": "coin", + "wallet": {} }, "coin:TDCR": { "hidden": 1, @@ -521,7 +546,8 @@ "shortcut": "TDCR", "t1_enabled": "yes", "t2_enabled": "no", - "type": "coin" + "type": "coin", + "wallet": {} }, "coin:TEST": { "hidden": 1, @@ -534,7 +560,8 @@ "shortcut": "TEST", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "coin" + "type": "coin", + "wallet": {} }, "coin:TLTC": { "hidden": 1, @@ -547,19 +574,21 @@ "shortcut": "TLTC", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "coin" + "type": "coin", + "wallet": {} }, "coin:TRC": { "links": { "Github": "https://github.com/terracoin/terracoin", "Homepage": "https://terracoin.io" }, - "marketcap_usd": 2114446, + "marketcap_usd": 1977795, "name": "Terracoin", "shortcut": "TRC", "t1_enabled": "no", "t2_enabled": "no", - "type": "coin" + "type": "coin", + "wallet": {} }, "coin:VIA": { "hidden": 1, @@ -567,19 +596,20 @@ "Github": "https://github.com/viacoin", "Homepage": "https://viacoin.org" }, - "marketcap_usd": 23459968, + "marketcap_usd": 28457309, "name": "Viacoin", "shortcut": "VIA", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "coin" + "type": "coin", + "wallet": {} }, "coin:VTC": { "links": { "Github": "https://github.com/vertcoin-project/vertcoin-core", "Homepage": "https://vertcoin.org" }, - "marketcap_usd": 41968042, + "marketcap_usd": 48619898, "name": "Vertcoin", "shortcut": "VTC", "t1_enabled": "yes", @@ -594,19 +624,20 @@ "Github": "https://github.com/myriadcoin/myriadcoin", "Homepage": "https://www.myriadcoin.org" }, - "marketcap_usd": 5670418, + "marketcap_usd": 6334174, "name": "Myriad", "shortcut": "XMY", "t1_enabled": "no", "t2_enabled": "no", - "type": "coin" + "type": "coin", + "wallet": {} }, "coin:XZC": { "links": { "Github": "https://github.com/zcoinofficial/zcoin", "Homepage": "https://zcoin.io" }, - "marketcap_usd": 84786256, + "marketcap_usd": 94586975, "name": "Zcoin", "shortcut": "XZC", "t1_enabled": "yes", @@ -622,7 +653,7 @@ "Github": "https://github.com/zcash/zcash", "Homepage": "z.cash" }, - "marketcap_usd": 693707511, + "marketcap_usd": 855681961, "name": "Zcash", "shortcut": "ZEC", "t1_enabled": "yes", @@ -637,12 +668,13 @@ "Github": "https://github.com/ZencashOfficial/zen", "Homepage": "https://zencash.com" }, - "marketcap_usd": 88163199, + "marketcap_usd": 124100964, "name": "Zencash", "shortcut": "ZEN", "t1_enabled": "no", "t2_enabled": "soon", - "type": "coin" + "type": "coin", + "wallet": {} }, "coin:tDASH": { "hidden": 1, @@ -655,7 +687,8 @@ "shortcut": "tDASH", "t1_enabled": "yes", "t2_enabled": "no", - "type": "coin" + "type": "coin", + "wallet": {} }, "coin:tGRS": { "hidden": 1, @@ -668,7 +701,8 @@ "shortcut": "tGRS", "t1_enabled": "yes", "t2_enabled": "soon", - "type": "coin" + "type": "coin", + "wallet": {} }, "coin:tXZC": { "hidden": 1, @@ -681,7 +715,8 @@ "shortcut": "tXZC", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "coin" + "type": "coin", + "wallet": {} }, "erc20:ella:MINING": { "address": "0x991e7Fe4b05f2b3db1D788e705963f5D647b0044", @@ -791,7 +826,7 @@ "links": { "Homepage": "https://0xbitcoin.org/" }, - "marketcap_usd": 2583891, + "marketcap_usd": 2705930, "name": "0xBitcoin", "network": "eth", "shortcut": "0xBTC", @@ -808,7 +843,7 @@ "links": { "Homepage": "https://firstblood.io" }, - "marketcap_usd": 0, + "marketcap_usd": 13464920, "name": "FirstBlood", "network": "eth", "shortcut": "1ST", @@ -927,7 +962,7 @@ "links": { "Homepage": "http://accelerator.network" }, - "marketcap_usd": 0, + "marketcap_usd": 192471, "name": "Accelerator Network", "network": "eth", "shortcut": "ACC", @@ -962,7 +997,7 @@ "Github": "https://github.com/aditus", "Homepage": "https://aditus.net" }, - "marketcap_usd": 0, + "marketcap_usd": 1904801, "name": "Aditus", "network": "eth", "shortcut": "ADI", @@ -997,7 +1032,7 @@ "links": { "Homepage": "https://adshares.net" }, - "marketcap_usd": 0, + "marketcap_usd": 2202222, "name": "AdShares", "network": "eth", "shortcut": "ADST", @@ -1015,7 +1050,7 @@ "Github": "https://github.com/adchain", "Homepage": "https://adtoken.com" }, - "marketcap_usd": 0, + "marketcap_usd": 9332100, "name": "AdToken", "network": "eth", "shortcut": "ADT", @@ -1051,7 +1086,7 @@ "Github": "https://github.com/aeternity", "Homepage": "https://www.aeternity.com/" }, - "marketcap_usd": 0, + "marketcap_usd": 434471331, "name": "aeternity", "network": "eth", "shortcut": "AE", @@ -1069,7 +1104,7 @@ "Github": "https://github.com/singnet/singnet", "Homepage": "https://singularitynet.io" }, - "marketcap_usd": 0, + "marketcap_usd": 53104928, "name": "SingularityNET", "network": "eth", "shortcut": "AGI", @@ -1087,7 +1122,7 @@ "Github": "https://github.com/aionnetwork", "Homepage": "https://aion.network/" }, - "marketcap_usd": 159620842, + "marketcap_usd": 168020932, "name": "Aion", "network": "eth", "shortcut": "AION", @@ -1104,7 +1139,7 @@ "links": { "Homepage": "https://airtoken.com" }, - "marketcap_usd": 0, + "marketcap_usd": 4410872, "name": "AirToken", "network": "eth", "shortcut": "AIR", @@ -1122,7 +1157,7 @@ "Github": "https://github.com/AigangNetwork", "Homepage": "https://aigang.network/" }, - "marketcap_usd": 0, + "marketcap_usd": 1771964, "name": "Aigang", "network": "eth", "shortcut": "AIX", @@ -1134,6 +1169,23 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:AKC": { + "address": "0x1Ca43a170BaD619322e6f54d46b57e504dB663aA", + "links": { + "Github": "https://github.com/artwook", + "Homepage": "https://artwook.com" + }, + "name": "ARTWOOK COIN", + "network": "eth", + "shortcut": "AKC", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:ALCO": { "address": "0x181a63746d3Adcf356CBc73aCE22832FFBB1EE5A", "links": { @@ -1157,7 +1209,7 @@ "Github": "https://github.com/AlisProject", "Homepage": "https://alismedia.jp" }, - "marketcap_usd": 3288797, + "marketcap_usd": 3267287, "name": "ALIS Token", "network": "eth", "shortcut": "ALIS", @@ -1228,7 +1280,7 @@ "Github": "https://github.com/amontech", "Homepage": "https://amon.tech" }, - "marketcap_usd": 0, + "marketcap_usd": 1598707, "name": "Amon", "network": "eth", "shortcut": "AMN", @@ -1278,7 +1330,7 @@ "erc20:eth:ANT": { "address": "0x960b236A07cf122663c4303350609A66A7B288C0", "links": { - "Homepage": "https://aragon.one/network/" + "Homepage": "https://aragon.one/network" }, "marketcap_usd": 0, "name": "ANT", @@ -1298,7 +1350,7 @@ "Github": "https://github.com/Oxchild/crowdsale", "Homepage": "https://apisplatform.io" }, - "marketcap_usd": 18839180, + "marketcap_usd": 26951530, "name": "APIS", "network": "eth", "shortcut": "APIS", @@ -1316,7 +1368,7 @@ "Github": "https://github.com/Aptoide/AppCoins-ethereumj", "Homepage": "https://appcoins.io" }, - "marketcap_usd": 0, + "marketcap_usd": 18715459, "name": "AppCoins", "network": "eth", "shortcut": "APPC", @@ -1333,7 +1385,7 @@ "links": { "Homepage": "https://aigang.network" }, - "marketcap_usd": 0, + "marketcap_usd": 1771964, "name": "AIGang", "network": "eth", "shortcut": "APT", @@ -1349,7 +1401,7 @@ "address": "0xAc709FcB44a43c35F0DA4e3163b117A17F3770f5", "links": { "Github": "https://github.com/swarmcity/ac-token", - "Homepage": "https://arcade.city/" + "Homepage": "https://arcade.city" }, "marketcap_usd": 0, "name": "Arcade", @@ -1368,7 +1420,7 @@ "links": { "Homepage": "https://www.arbitragect.com" }, - "marketcap_usd": 0, + "marketcap_usd": 347247, "name": "ArbitrageCT", "network": "eth", "shortcut": "ARCT", @@ -1473,7 +1525,7 @@ "links": { "Homepage": "https://airswap.io" }, - "marketcap_usd": 0, + "marketcap_usd": 21939300, "name": "Airswap", "network": "eth", "shortcut": "AST", @@ -1680,7 +1732,7 @@ "erc20:eth:BAT": { "address": "0x0D8775F648430679A709E98d2b0Cb6250d2887EF", "links": { - "Homepage": "https://basicattentiontoken.org/" + "Homepage": "https://basicattentiontoken.org" }, "marketcap_usd": 0, "name": "BAT", @@ -1734,7 +1786,7 @@ "address": "0x1e797Ce986C3CFF4472F7D38d5C4aba55DfEFE40", "links": { "Github": "https://github.com/Blockcdnteam", - "Homepage": "https://www.blockcdn.org/" + "Homepage": "https://www.blockcdn.org" }, "marketcap_usd": 0, "name": "BCDN", @@ -1843,7 +1895,7 @@ "Github": "https://github.com/thebeetoken", "Homepage": "https://www.beetoken.com" }, - "marketcap_usd": 0, + "marketcap_usd": 3704273, "name": "Bee Token", "network": "eth", "shortcut": "BEE", @@ -1877,7 +1929,7 @@ "address": "0x8aA33A7899FCC8eA5fBe6A608A109c3893A1B8b2", "links": { "Github": "https://github.com/daocasino", - "Homepage": "https://dao.casino/" + "Homepage": "https://dao.casino" }, "marketcap_usd": 0, "name": "BET", @@ -1891,6 +1943,23 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:BETHER": { + "address": "0x14C926F2290044B647e1Bf2072e67B495eff1905", + "links": { + "Github": "https://github.com/bethereumproject", + "Homepage": "https://www.bethereum.com/" + }, + "name": "Bethereum", + "network": "eth", + "shortcut": "BETHER", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:BETR": { "address": "0x763186eB8d4856D536eD4478302971214FEbc6A9", "links": { @@ -1949,7 +2018,7 @@ "Github": "https://github.com/BankEx", "Homepage": "https://bankex.com/" }, - "marketcap_usd": 0, + "marketcap_usd": 15850616, "name": "BANKEX", "network": "eth", "shortcut": "BKX", @@ -1985,7 +2054,7 @@ "Github": "https://github.com/BlueCrypto", "Homepage": "https://blueprotocol.com/" }, - "marketcap_usd": 0, + "marketcap_usd": 3908915, "name": "Ethereum Blue", "network": "eth", "shortcut": "BLUE", @@ -2018,9 +2087,9 @@ "erc20:eth:BLX (Iconomi)": { "address": "0xE5a7c12972f3bbFe70ed29521C8949b8Af6a0970", "links": { - "Homepage": "https://www.iconomi.net/" + "Homepage": "https://www.iconomi.net" }, - "marketcap_usd": 0, + "marketcap_usd": 64416238, "name": "Iconomi", "network": "eth", "shortcut": "BLX (Iconomi)", @@ -2121,7 +2190,7 @@ "erc20:eth:BNC": { "address": "0xdD6Bf56CA2ada24c683FAC50E37783e55B57AF9F", "links": { - "Homepage": "https://bravenewcoin.com/" + "Homepage": "https://bravenewcoin.com" }, "marketcap_usd": 0, "name": "BNC", @@ -2154,10 +2223,10 @@ "erc20:eth:BNT": { "address": "0x1F573D6Fb3F13d689FF844B4cE37794d79a7FF1C", "links": { - "Github": "https://github.com/bancorprotocol/", + "Github": "https://github.com/bancorprotocol", "Homepage": "https://www.bancor.network/discover" }, - "marketcap_usd": 0, + "marketcap_usd": 113759781, "name": "Bancor", "network": "eth", "shortcut": "BNT", @@ -2208,7 +2277,7 @@ "links": { "Homepage": "https://bonpay.com" }, - "marketcap_usd": 0, + "marketcap_usd": 1538450, "name": "Bonpay", "network": "eth", "shortcut": "BON", @@ -2292,9 +2361,9 @@ "erc20:eth:BRAT": { "address": "0x9E77D5a1251b6F7D456722A6eaC6D2d5980bd891", "links": { - "Homepage": "http://bro-consortium.io/" + "Homepage": "http://bro-consortium.io" }, - "marketcap_usd": 52824, + "marketcap_usd": 58810, "name": "BRAT", "network": "eth", "shortcut": "BRAT", @@ -2310,9 +2379,9 @@ "address": "0x558EC3152e2eb2174905cd19AeA4e34A23DE9aD6", "links": { "Github": "https://github.com/breadwallet", - "Homepage": "https://token.breadapp.com/en/" + "Homepage": "https://token.breadapp.com/en" }, - "marketcap_usd": 0, + "marketcap_usd": 35550647, "name": "Bread", "network": "eth", "shortcut": "BRD", @@ -2450,7 +2519,7 @@ "address": "0xdb8646F5b487B5Dd979FAC618350e85018F557d4", "links": { "Github": "https://github.com/bitcoin-token", - "Homepage": "https://btk.community/" + "Homepage": "https://btk.community" }, "marketcap_usd": 0, "name": "Bitcoin Token", @@ -2505,7 +2574,7 @@ "Github": "https://github.com/bytom", "Homepage": "https://bytom.io" }, - "marketcap_usd": 0, + "marketcap_usd": 360079695, "name": "Bytom", "network": "eth", "shortcut": "BTM", @@ -2608,7 +2677,7 @@ "Github": "https://github.com/cryptotwenty", "Homepage": "https://crypto20.com" }, - "marketcap_usd": 34228481, + "marketcap_usd": 42852656, "name": "Crypto20's Token", "network": "eth", "shortcut": "C20", @@ -2722,7 +2791,7 @@ } }, "erc20:eth:CARD": { - "address": "0x1ed2B1eaEd8e968bc36EB90a914660A71827A5E9", + "address": "0xB07ec2c28834B889b1CE527Ca0F19364cD38935c", "links": { "Github": "https://github.com/cardstack", "Homepage": "https://cardstack.com" @@ -2761,7 +2830,7 @@ "links": { "Homepage": "https://cashaa.com" }, - "marketcap_usd": 0, + "marketcap_usd": 14192264, "name": "Cashaa", "network": "eth", "shortcut": "CAS", @@ -2824,6 +2893,23 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:CBIX": { + "address": "0x05C3617cBf1304b9260AA61ec960F115D67beCEA", + "links": { + "Github": "https://github.com/Cubrixio", + "Homepage": "https://cubrix.io" + }, + "name": "Cubrix", + "network": "eth", + "shortcut": "CBIX", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:CC3": { "address": "0xc166038705FFBAb3794185b3a9D925632A1DF37D", "links": { @@ -2947,9 +3033,9 @@ } }, "erc20:eth:CDX": { - "address": "0x2cb101d7dA0ebaA57D3F2fEf46D7FFB7BB64592B", + "address": "0x6fFF3806Bbac52A20e0d79BC538d527f6a22c96b", "links": { - "Homepage": "https://www.carbondollarx.com" + "Homepage": "https://commodityadnetwork.com" }, "marketcap_usd": 0, "name": "CDX", @@ -2980,6 +3066,39 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:CET": { + "address": "0xF660cA1e228e7BE1fA8B4f5583145E31147FB577", + "links": { + "Github": "https://github.com/DICE-Money/", + "Homepage": "https://dice.money/" + }, + "name": "DICE Money Dicet", + "network": "eth", + "shortcut": "CET", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:CFC": { + "address": "0x5Dff89a2caa4D76bc286F74D67Bd718eb834da61", + "links": { + "Homepage": "https://cryptfillcoin.com" + }, + "name": "CryptFillCoin", + "network": "eth", + "shortcut": "CFC", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:CFI": { "address": "0x12FEF5e57bF45873Cd9B62E9DBd7BFb99e32D73e", "links": { @@ -3194,7 +3313,7 @@ "links": { "Homepage": "https://cindicator.com" }, - "marketcap_usd": 0, + "marketcap_usd": 45655699, "name": "Cindicator", "network": "eth", "shortcut": "CND", @@ -3301,7 +3420,7 @@ "Github": "https://github.com/CoinvestHQ", "Homepage": "https://coinve.st" }, - "marketcap_usd": 125132, + "marketcap_usd": 125950, "name": "Coinvest V2 Token", "network": "eth", "shortcut": "COIN", @@ -3318,7 +3437,7 @@ "links": { "Homepage": "https://coss.io" }, - "marketcap_usd": 11131308, + "marketcap_usd": 10338104, "name": "Coss Token", "network": "eth", "shortcut": "COSS", @@ -3335,7 +3454,7 @@ "links": { "Homepage": "https://covesting.io/" }, - "marketcap_usd": 0, + "marketcap_usd": 21379225, "name": "Covesting", "network": "eth", "shortcut": "COV", @@ -3371,7 +3490,7 @@ "Github": "https://github.com/aditus", "Homepage": "https://copytrack.io" }, - "marketcap_usd": 0, + "marketcap_usd": 2405879, "name": "COPYTRACK", "network": "eth", "shortcut": "CPY", @@ -3404,7 +3523,7 @@ "erc20:eth:CRB": { "address": "0xAef38fBFBF932D1AeF3B808Bc8fBd8Cd8E1f8BC5", "links": { - "Homepage": "https://www.creditbit.org/" + "Homepage": "https://www.creditbit.org" }, "marketcap_usd": 0, "name": "CRB", @@ -3441,7 +3560,7 @@ "links": { "Homepage": "https://bitbounce.io" }, - "marketcap_usd": 16010757, + "marketcap_usd": 16657319, "name": "Credo / Bitbounce", "network": "eth", "shortcut": "CREDO", @@ -3523,6 +3642,23 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:CTGC": { + "address": "0x9E7D29bd499B6c7da2a5B2EaFCF4A39d3BD845D1", + "links": { + "Github": "https://github.com/ctgcoin/", + "Homepage": "https://www.ctgcoin.org" + }, + "name": "Convenient To Go", + "network": "eth", + "shortcut": "CTGC", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:CTL": { "address": "0xBf4cFD7d1eDeeEA5f6600827411B41A21eB08abd", "hidden": 1, @@ -3576,7 +3712,7 @@ "erc20:eth:CVC": { "address": "0x41e5560054824eA6B0732E656E3Ad64E20e94E45", "links": { - "Homepage": "https://www.civic.com/" + "Homepage": "https://www.civic.com" }, "marketcap_usd": 0, "name": "CVC", @@ -3614,7 +3750,7 @@ "Github": "https://github.com/cargoxio", "Homepage": "https://cargox.io" }, - "marketcap_usd": 0, + "marketcap_usd": 4797791, "name": "CargoX", "network": "eth", "shortcut": "CXO", @@ -3629,9 +3765,9 @@ "erc20:eth:CryptoCarbon": { "address": "0xE4c94d45f7Aef7018a5D66f44aF780ec6023378e", "links": { - "Homepage": "https://ccrb.io/" + "Homepage": "https://ccrb.io" }, - "marketcap_usd": 1912153, + "marketcap_usd": 2795928, "name": "CryptoCarbon", "network": "eth", "shortcut": "CryptoCarbon", @@ -3665,7 +3801,7 @@ "links": { "Homepage": "https://dadi.cloud" }, - "marketcap_usd": 9485214, + "marketcap_usd": 8217712, "name": "DADI", "network": "eth", "shortcut": "DADI", @@ -3683,7 +3819,7 @@ "Github": "https://github.com/makerdao", "Homepage": "https://makerdao.com" }, - "marketcap_usd": 52350918, + "marketcap_usd": 54035637, "name": "Dai Stablecoin v1.0", "network": "eth", "shortcut": "DAI", @@ -3700,7 +3836,7 @@ "links": { "Homepage": "http://www.dalecoin.org" }, - "marketcap_usd": 0, + "marketcap_usd": 83644, "name": "DaleCoin", "network": "eth", "shortcut": "DALC", @@ -3733,7 +3869,7 @@ "erc20:eth:DAO": { "address": "0xBB9bc244D798123fDe783fCc1C72d3Bb8C189413", "links": { - "Homepage": "https://blog.daohub.org/" + "Homepage": "https://blog.daohub.org" }, "marketcap_usd": 0, "name": "DAO", @@ -3788,7 +3924,7 @@ "Github": "https://github.com/streamr-dev", "Homepage": "https://www.streamr.com" }, - "marketcap_usd": 171265, + "marketcap_usd": 140182, "name": "DATACoin", "network": "eth", "shortcut": "DATACoin", @@ -3871,6 +4007,24 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:DCC": { + "address": "0xFFa93Aacf49297D51E211817452839052FDFB961", + "links": { + "Github": "https://github.com/DistributedBanking/DCC", + "Homepage": "http://dcc.finance" + }, + "marketcap_usd": 20519240, + "name": "Distributed Credit Chain", + "network": "eth", + "shortcut": "DCC", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:DCL": { "address": "0x399A0e6FbEb3d74c85357439f4c8AeD9678a5cbF", "links": { @@ -3894,7 +4048,7 @@ "Github": "https://github.com/Dentacoin", "Homepage": "https://dentacoin.com" }, - "marketcap_usd": 0, + "marketcap_usd": 123029325, "name": "Dentacoin", "network": "eth", "shortcut": "DCN", @@ -3910,7 +4064,7 @@ "address": "0xcC4eF9EEAF656aC1a2Ab886743E98e97E090ed38", "links": { "Github": "https://github.com/digitaldevelopersfund/ddf", - "Homepage": "https://www.digitaldevelopersfund.com/" + "Homepage": "https://www.digitaldevelopersfund.com" }, "marketcap_usd": 0, "name": "DDF", @@ -3962,9 +4116,9 @@ "erc20:eth:DENT": { "address": "0x3597bfD533a99c9aa083587B074434E61Eb0A258", "links": { - "Homepage": "https://www.dentwireless.com/" + "Homepage": "https://www.dentwireless.com" }, - "marketcap_usd": 43968463, + "marketcap_usd": 35875345, "name": "DENT", "network": "eth", "shortcut": "DENT", @@ -4016,7 +4170,7 @@ "Github": "https://github.com/digipulseio", "Homepage": "https://www.digipulse.io" }, - "marketcap_usd": 0, + "marketcap_usd": 3190500, "name": "DigiPulse", "network": "eth", "shortcut": "DGPT", @@ -4028,12 +4182,30 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:DGS": { + "address": "0x6aEDbF8dFF31437220dF351950Ba2a3362168d1b", + "links": { + "Github": "https://github.com/dragonglasscom", + "Homepage": "https://dragonglass.com/" + }, + "name": "Dragonglass", + "network": "eth", + "shortcut": "DGS", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:DGX": { - "address": "0x55b9a11c2e8351b4Ffc7b11561148bfaC9977855", + "address": "0x4f3AfEC4E5a3F2A6a1A411DEF7D7dFe50eE057bF", "links": { - "Homepage": "https://www.dgx.io" + "Github": "https://github.com/DigixGlobal", + "Homepage": "https://digix.global" }, - "marketcap_usd": 0, + "marketcap_usd": 2032107, "name": "DGX", "network": "eth", "shortcut": "DGX", @@ -4045,12 +4217,29 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:DGX1": { + "address": "0x55b9a11c2e8351b4Ffc7b11561148bfaC9977855", + "links": { + "Github": "https://github.com/DigixGlobal", + "Homepage": "https://digix.global" + }, + "name": "Digix Gold Token 1.0", + "network": "eth", + "shortcut": "DGX1", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:DICE": { "address": "0x2e071D2966Aa7D8dECB1005885bA1977D6038A65", "links": { "Homepage": "https://etheroll.com" }, - "marketcap_usd": 0, + "marketcap_usd": 7036071, "name": "Etheroll", "network": "eth", "shortcut": "DICE", @@ -4062,6 +4251,21 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:DIP": { + "address": "0xc719d010B63E5bbF2C0551872CD5316ED26AcD83", + "hidden": 1, + "links": {}, + "name": "Decentralized Insurance Protocol", + "network": "eth", + "shortcut": "DIP", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:DIVX": { "address": "0x13f11C9905A08ca76e3e853bE63D4f0944326C72", "links": { @@ -4167,9 +4371,9 @@ } }, "erc20:eth:DOW": { - "address": "0xEEF6E90034eEa89E31Eb4B8eaCd323F28A92eaE4", + "address": "0x76974C7B79dC8a6a109Fd71fd7cEb9E40eff5382", "links": { - "Homepage": "https://www.dowico.com" + "Homepage": "https://dowcoin.io/" }, "marketcap_usd": 0, "name": "DOW", @@ -4240,7 +4444,7 @@ "links": { "Homepage": "https://dropil.com" }, - "marketcap_usd": 0, + "marketcap_usd": 109740129, "name": "Dropil", "network": "eth", "shortcut": "DROP (dropil)", @@ -4253,9 +4457,9 @@ } }, "erc20:eth:DRP": { - "address": "0x621d78f2EF2fd937BFca696CabaF9A779F59B3Ed", + "address": "0x2799D90C6d44Cb9Aa5fBC377177F16C33E056b82", "links": { - "Homepage": "https://www.dcorp.it" + "Homepage": "http://drpcoin.com" }, "marketcap_usd": 0, "name": "Dripcoin", @@ -4269,6 +4473,23 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:DRVH": { + "address": "0x62D4c04644314F35868Ba4c65cc27a77681dE7a9", + "links": { + "Github": "https://github.com/TeamDriveholic", + "Homepage": "https://driveholic.com/" + }, + "name": "Driveholic Token", + "network": "eth", + "shortcut": "DRVH", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:DSC": { "address": "0x1e09BD8Cadb441632e441Db3e1D79909EE0A2256", "links": { @@ -4292,7 +4513,7 @@ "Github": "https://github.com/dethertech", "Homepage": "https://dether.io" }, - "marketcap_usd": 0, + "marketcap_usd": 2833670, "name": "dether", "network": "eth", "shortcut": "DTH", @@ -4360,7 +4581,7 @@ "erc20:eth:DTx": { "address": "0x82fdedfB7635441aA5A92791D001fA7388da8025", "links": { - "Homepage": "https://www.digitalticks.com/" + "Homepage": "https://www.digitalticks.com" }, "marketcap_usd": 0, "name": "DigitalTicks", @@ -4375,7 +4596,7 @@ } }, "erc20:eth:DUBI": { - "address": "0x9c6Fa42209169bCeA032e401188a6fc3e9C9f59c", + "address": "0xD4CffeeF10F60eCA581b5E1146B5Aca4194a4C3b", "links": { "Github": "https://github.com/nionis/purpose", "Homepage": "https://prps.io" @@ -4415,7 +4636,7 @@ "Github": "https://github.com/elangindonesia/EagleCoin", "Homepage": "https://eaglepay.io" }, - "marketcap_usd": 0, + "marketcap_usd": 184753, "name": "EagleCoin", "network": "eth", "shortcut": "EAGLE", @@ -4461,6 +4682,22 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:ECP": { + "address": "0xAEA1C18A992984831002D0cf90E291FB52d72649", + "links": { + "Homepage": "https://ecryptotokens.com" + }, + "name": "ECRYPTO COIN", + "network": "eth", + "shortcut": "ECP", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:EDC": { "address": "0xFA1DE2Ee97e4c10C94C91Cb2b5062b89Fb140b82", "links": { @@ -4483,7 +4720,7 @@ "links": { "Homepage": "https://edgeless.io" }, - "marketcap_usd": 0, + "marketcap_usd": 33942785, "name": "Edgeless", "network": "eth", "shortcut": "EDG", @@ -4500,7 +4737,7 @@ "links": { "Homepage": "https://eidoo.io" }, - "marketcap_usd": 0, + "marketcap_usd": 28004213, "name": "Eidoo", "network": "eth", "shortcut": "EDO", @@ -4513,7 +4750,7 @@ } }, "erc20:eth:EDU": { - "address": "0x2A22e5cCA00a3D63308fa39f29202eB1b39eEf52", + "address": "0x5b26C5D0772E5bbaC8b3182AE9a13f9BB2D03765", "links": { "Github": "https://github.com/livecodingtvofficial", "Homepage": "https://tokensale.liveedu.tv" @@ -4552,7 +4789,7 @@ "address": "0xf9F0FC7167c311Dd2F1e21E9204F87EBA9012fB2", "links": { "Github": "https://github.com/team-easyhomes", - "Homepage": "https://easyhomes.io/" + "Homepage": "https://easyhomes.io" }, "marketcap_usd": 0, "name": "EasyHomes", @@ -4607,7 +4844,7 @@ "Github": "https://github.com/eltcoin", "Homepage": "http://www.eltcoin.tech/" }, - "marketcap_usd": 509769, + "marketcap_usd": 335480, "name": "ELTCOIN", "network": "eth", "shortcut": "ELTCOIN", @@ -4619,6 +4856,23 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:ELY": { + "address": "0xa95592DCFfA3C080B4B40E459c5f5692F67DB7F8", + "links": { + "Github": "https://github.com/Elysian-ELY", + "Homepage": "https://elycoin.io" + }, + "name": "ELYCOIN", + "network": "eth", + "shortcut": "ELY", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:EMON": { "address": "0xb67b88a25708a35AE7c2d736D398D268CE4f7F83", "links": { @@ -4767,7 +5021,7 @@ "links": { "Homepage": "https://eos.io" }, - "marketcap_usd": 6369167440, + "marketcap_usd": 7453167788, "name": "EOS", "network": "eth", "shortcut": "EOS", @@ -4820,7 +5074,7 @@ "links": { "Homepage": "https://www.ethbits.com" }, - "marketcap_usd": 0, + "marketcap_usd": 1559890, "name": "Ethbits", "network": "eth", "shortcut": "ETBS", @@ -4870,7 +5124,7 @@ "address": "0x6927C69fb4daf2043fbB1Cb7b86c5661416bea29", "links": { "Github": "https://github.com/pironmind/EthereumRisen", - "Homepage": "http://ethereumrisen.io/" + "Homepage": "http://ethereumrisen.io" }, "marketcap_usd": 0, "name": "Etheruem Risen", @@ -4995,7 +5249,7 @@ "address": "0x190e569bE071F40c704e15825F285481CB74B6cC", "links": { "Github": "https://github.com/BattleDrome", - "Homepage": "http://www.battledrome.io/" + "Homepage": "http://www.battledrome.io" }, "marketcap_usd": 0, "name": "FAM", @@ -5009,6 +5263,22 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:FAN": { + "address": "0x90162f41886c0946D09999736f1C15c8a105A421", + "links": { + "Homepage": "https://tokensale.fanfare.global" + }, + "name": "Fan Token", + "network": "eth", + "shortcut": "FAN", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:FANX": { "address": "0x7f6715c3FC4740A02F70De85B9FD50ac6001fEd9", "links": { @@ -5062,9 +5332,9 @@ } }, "erc20:eth:FLMC": { - "address": "0x5976F7dac1525eF3277836043bA474a35E6B4272", + "address": "0x04cC783b450b8D11F3C7d00DD03fDF7FB51fE9F2", "links": { - "Homepage": "https://filmscoin.io" + "Homepage": "https://filmscoin.com" }, "marketcap_usd": 0, "name": "Filmscoin", @@ -5153,7 +5423,7 @@ "Github": "https://github.com/FundRequest", "Homepage": "https://fundrequest.io" }, - "marketcap_usd": 0, + "marketcap_usd": 1330223, "name": "FundRequest", "network": "eth", "shortcut": "FND", @@ -5274,7 +5544,7 @@ "links": { "Homepage": "https://funfair.io" }, - "marketcap_usd": 0, + "marketcap_usd": 131098821, "name": "Funfair", "network": "eth", "shortcut": "FUN", @@ -5286,6 +5556,23 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:FXC": { + "address": "0xc92D6E3E64302C59d734f3292E2A13A13D7E1817", + "links": { + "Github": "https://github.com/futuraxproject", + "Homepage": "https://futurax.global" + }, + "name": "FUTURAX", + "network": "eth", + "shortcut": "FXC", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:FYN": { "address": "0x88FCFBc22C6d3dBaa25aF478C578978339BDe77a", "links": { @@ -5309,7 +5596,7 @@ "Github": "https://github.com/BlockchainLabsNZ/gambit", "Homepage": "http://gambitcrypto.com" }, - "marketcap_usd": 0, + "marketcap_usd": 6448988, "name": "Gambit", "network": "eth", "shortcut": "GAM", @@ -5360,7 +5647,7 @@ "address": "0x7585F835ae2d522722d2684323a0ba83401f32f5", "links": { "Github": "https://github.com/myHelloGold/Foundation", - "Homepage": "https://www.hellogold.org/" + "Homepage": "https://www.hellogold.org" }, "marketcap_usd": 0, "name": "GBT", @@ -5450,7 +5737,7 @@ "Github": "https://github.com/daostack", "Homepage": "https://daostack.io" }, - "marketcap_usd": 0, + "marketcap_usd": 7090810, "name": "DAOstack", "network": "eth", "shortcut": "GEN", @@ -5555,7 +5842,7 @@ "links": { "Homepage": "https://golem.network" }, - "marketcap_usd": 240976591, + "marketcap_usd": 298260952, "name": "Golem", "network": "eth", "shortcut": "GNT", @@ -5590,7 +5877,7 @@ "links": { "Homepage": "https://gridplus.io/token-sale" }, - "marketcap_usd": 10909000, + "marketcap_usd": 12329479, "name": "GRID", "network": "eth", "shortcut": "GRID", @@ -5620,6 +5907,22 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:GSE": { + "address": "0xe530441f4f73bDB6DC2fA5aF7c3fC5fD551Ec838", + "links": { + "Homepage": "https://www.gse.network" + }, + "name": "GSENetwork", + "network": "eth", + "shortcut": "GSE", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:GTC": { "address": "0xB70835D7822eBB9426B56543E391846C107bd32C", "links": { @@ -5642,7 +5945,7 @@ "address": "0x025abAD9e518516fdaAFBDcdB9701b37fb7eF0FA", "links": { "Github": "https://github.com/sprux/BackToEarth", - "Homepage": "https://backto.earth/" + "Homepage": "https://backto.earth" }, "marketcap_usd": 0, "name": "GTKT", @@ -5662,7 +5965,7 @@ "Github": "https://github.com/GIFTO-io", "Homepage": "https://gifto.io/" }, - "marketcap_usd": 0, + "marketcap_usd": 90430369, "name": "Gifto", "network": "eth", "shortcut": "GTO", @@ -5698,7 +6001,7 @@ "Github": "https://github.com/GenesisVision", "Homepage": "https://genesis.vision" }, - "marketcap_usd": 0, + "marketcap_usd": 33487213, "name": "Genesis Vision", "network": "eth", "shortcut": "GVT", @@ -5731,7 +6034,7 @@ "address": "0x22F0AF8D78851b72EE799e05F54A77001586B18A", "links": { "Github": "https://github.com/GxC17Genevieve/GXVC", - "Homepage": "https://genevieveco.io/" + "Homepage": "https://genevieveco.io" }, "marketcap_usd": 0, "name": "Genevieve VC", @@ -5803,7 +6106,7 @@ "Github": "https://github.com/havven/havven", "Homepage": "https://havven.io" }, - "marketcap_usd": 0, + "marketcap_usd": 13898422, "name": "Havven", "network": "eth", "shortcut": "HAV", @@ -5836,7 +6139,7 @@ "address": "0xba2184520A1cC49a6159c57e61E1844E085615B6", "links": { "Github": "https://github.com/myHelloGold/Foundation", - "Homepage": "https://www.hellogold.org/" + "Homepage": "https://www.hellogold.org" }, "marketcap_usd": 0, "name": "HGT", @@ -5925,7 +6228,7 @@ "links": { "Homepage": "https://github.com/arachnid/hodlcoin" }, - "marketcap_usd": 0, + "marketcap_usd": 245622, "name": "HODLCoin", "network": "eth", "shortcut": "HODL", @@ -5956,12 +6259,12 @@ } }, "erc20:eth:HOT": { - "address": "0x6c6EE5e31d828De241282B9606C8e98Ea48526E2", + "address": "0x9AF839687F6C94542ac5ece2e317dAAE355493A1", "links": { "Github": "https://github.com/Holo-Host", - "Homepage": "https://holo.host/" + "Homepage": "https://thehydrofoundation.com/" }, - "marketcap_usd": 0, + "marketcap_usd": 21011913, "name": "Hydro Protocol", "network": "eth", "shortcut": "HOT", @@ -5996,7 +6299,7 @@ "Github": "https://github.com/HiveProjectLTD", "Homepage": "https://hive-project.net" }, - "marketcap_usd": 0, + "marketcap_usd": 16531725, "name": "Hive Project", "network": "eth", "shortcut": "HVN", @@ -6084,7 +6387,7 @@ "erc20:eth:ICE": { "address": "0x5a84969bb663fb64F6d015DcF9F622Aedc796750", "links": { - "Homepage": "https://idice.io/" + "Homepage": "https://idice.io" }, "marketcap_usd": 0, "name": "ICE", @@ -6134,9 +6437,9 @@ "erc20:eth:ICOS": { "address": "0x014B50466590340D41307Cc54DCee990c8D58aa8", "links": { - "Homepage": "https://icos.icobox.io/" + "Homepage": "https://icos.icobox.io" }, - "marketcap_usd": 5187815, + "marketcap_usd": 4524391, "name": "ICOS", "network": "eth", "shortcut": "ICOS", @@ -6153,7 +6456,7 @@ "links": { "Homepage": "https://www.icon.foundation" }, - "marketcap_usd": 0, + "marketcap_usd": 534678495, "name": "ICON", "network": "eth", "shortcut": "ICX", @@ -6187,7 +6490,7 @@ "links": { "Homepage": "https://investfeed.com" }, - "marketcap_usd": 0, + "marketcap_usd": 5524354, "name": "InvestFeed", "network": "eth", "shortcut": "IFT", @@ -6220,7 +6523,7 @@ "address": "0x88AE96845e157558ef59e9Ff90E766E22E480390", "links": { "Github": "https://github.com/mitchellfchan/IKB", - "Homepage": "http://www.mitchellfchan.com/" + "Homepage": "http://www.mitchellfchan.com" }, "marketcap_usd": 0, "name": "IKB", @@ -6322,7 +6625,7 @@ "links": { "Homepage": "https://insights.network" }, - "marketcap_usd": 0, + "marketcap_usd": 2461524, "name": "Insights Network", "network": "eth", "shortcut": "INSTAR", @@ -6339,7 +6642,7 @@ "links": { "Homepage": "https://internxt.io" }, - "marketcap_usd": 0, + "marketcap_usd": 2717546, "name": "Internxt", "network": "eth", "shortcut": "INXT", @@ -6356,7 +6659,7 @@ "links": { "Homepage": "https://iost.io/" }, - "marketcap_usd": 0, + "marketcap_usd": 197232840, "name": "IOSToken", "network": "eth", "shortcut": "IOST", @@ -6427,7 +6730,7 @@ "Github": "https://github.com/IoTChainCode", "Homepage": "https://iotchain.io/" }, - "marketcap_usd": 0, + "marketcap_usd": 28559882, "name": "IoT Chain", "network": "eth", "shortcut": "ITC", @@ -6529,7 +6832,7 @@ "erc20:eth:JET": { "address": "0x8727c112C712c4a03371AC87a74dD6aB104Af768", "links": { - "Homepage": "https://jetcoin.io/" + "Homepage": "https://jetcoin.io" }, "marketcap_usd": 0, "name": "JET", @@ -6634,7 +6937,7 @@ "Github": "https://github.com/bihu-id", "Homepage": "https://selfkey.org" }, - "marketcap_usd": 0, + "marketcap_usd": 25785161, "name": "SelfKey", "network": "eth", "shortcut": "KEY", @@ -6650,7 +6953,7 @@ "address": "0x27695E09149AdC738A978e9A678F99E4c39e9eb9", "links": { "Github": "https://github.com/kickico", - "Homepage": "https://www.kickico.com/" + "Homepage": "https://www.kickico.com" }, "marketcap_usd": 0, "name": "KICK", @@ -6670,7 +6973,7 @@ "Github": "https://github.com/kikinteractive/kin-token", "Homepage": "https://kin.kik.com" }, - "marketcap_usd": 104532000, + "marketcap_usd": 154172829, "name": "Kin Foundation", "network": "eth", "shortcut": "KIN", @@ -6688,7 +6991,7 @@ "Github": "https://github.com/KyberNetwork", "Homepage": "https://kyber.network" }, - "marketcap_usd": 0, + "marketcap_usd": 130595886, "name": "Kyber Network", "network": "eth", "shortcut": "KNC", @@ -6759,7 +7062,7 @@ "Github": "https://github.com/latoken", "Homepage": "https://latoken.com/" }, - "marketcap_usd": 0, + "marketcap_usd": 9876825, "name": "LATOKEN", "network": "eth", "shortcut": "LA", @@ -6793,7 +7096,7 @@ "links": { "Homepage": "https://www.leadcoin.network/" }, - "marketcap_usd": 0, + "marketcap_usd": 2998242, "name": "LEADCOIN", "network": "eth", "shortcut": "LDC", @@ -6806,7 +7109,7 @@ } }, "erc20:eth:LEMO": { - "address": "0xd6e354F07319e2474491D8c7c712137bEe6862a2", + "address": "0x60C24407d01782C2175D32fe7C8921ed732371D1", "links": { "Github": "https://github.com/LemoFoundationLtd", "Homepage": "http://www.lemochain.com" @@ -6913,7 +7216,7 @@ "links": { "Homepage": "http://www.lifelabs.io" }, - "marketcap_usd": 11128622, + "marketcap_usd": 12067076, "name": "LIFE", "network": "eth", "shortcut": "LIFE", @@ -7001,7 +7304,7 @@ "Github": "https://github.com/linkercoinfoundation", "Homepage": "https://www.linkercoin.com/en" }, - "marketcap_usd": 0, + "marketcap_usd": 4045247, "name": "Linker Coin", "network": "eth", "shortcut": "LNC-Linker Coin", @@ -7019,7 +7322,7 @@ "Github": "https://github.com/lendingblock", "Homepage": "https://lendingblock.com" }, - "marketcap_usd": 0, + "marketcap_usd": 3214106, "name": "Lendingblock", "network": "eth", "shortcut": "LND", @@ -7036,7 +7339,7 @@ "links": { "Homepage": "https://LockChain.co" }, - "marketcap_usd": 0, + "marketcap_usd": 8593382, "name": "LockChain", "network": "eth", "shortcut": "LOC", @@ -7054,7 +7357,7 @@ "Github": "http://github.com/locipro/loci-coin-sale", "Homepage": "https://locipro.com" }, - "marketcap_usd": 0, + "marketcap_usd": 3584621, "name": "LOCIcoin", "network": "eth", "shortcut": "LOCI", @@ -7100,6 +7403,22 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:LOOK": { + "address": "0x253C7dd074f4BaCb305387F922225A4f737C08bd", + "links": { + "Homepage": "https://lookrev.com" + }, + "name": "LookRev", + "network": "eth", + "shortcut": "LOOK", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:LOOM": { "address": "0xA4e8C3Ec456107eA67d3075bF9e3DF3A75823DB0", "links": { @@ -7118,6 +7437,23 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:LOVE": { + "address": "0x5a276Aeb77bCfDAc8Ac6f31BBC7416AE1A85eEF2", + "hidden": 1, + "links": { + "Github": "https://github.com/GNSPS" + }, + "name": "Love", + "network": "eth", + "shortcut": "LOVE", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:LPT": { "address": "0x58b6A8A3302369DAEc383334672404Ee733aB239", "links": { @@ -7209,7 +7545,7 @@ "address": "0xfa05A73FfE78ef8f1a739473e462c54bae6567D9", "links": { "Github": "https://github.com/lunyr", - "Homepage": "https://lunyr.com/" + "Homepage": "https://lunyr.com" }, "marketcap_usd": 0, "name": "LUN", @@ -7261,7 +7597,7 @@ "erc20:eth:MAD": { "address": "0x5B09A0371C1DA44A8E24D36Bf5DEb1141a84d875", "links": { - "Homepage": "https://madnetwork.io/" + "Homepage": "https://madnetwork.io" }, "marketcap_usd": 0, "name": "MAD", @@ -7279,7 +7615,7 @@ "address": "0xe25bCec5D3801cE3a794079BF94adF1B8cCD802D", "links": { "Github": "https://github.com/MatrixAINetwork", - "Homepage": "https://www.matrix.io/" + "Homepage": "https://www.matrix.io" }, "marketcap_usd": 0, "name": "MAN", @@ -7334,7 +7670,7 @@ "Github": "https://github.com/theembermine", "Homepage": "https://embermine.com/" }, - "marketcap_usd": 0, + "marketcap_usd": 408689, "name": "Embers", "network": "eth", "shortcut": "MBRS", @@ -7351,7 +7687,7 @@ "links": { "Homepage": "https://www.mcaplabs.com/" }, - "marketcap_usd": 412103, + "marketcap_usd": 352675, "name": "MCAP", "network": "eth", "shortcut": "MCAP", @@ -7369,7 +7705,7 @@ "Github": "https://github.com/musiconomi/", "Homepage": "https://musiconomi.com/" }, - "marketcap_usd": 0, + "marketcap_usd": 672488, "name": "Musiconomi", "network": "eth", "shortcut": "MCI", @@ -7384,7 +7720,7 @@ "erc20:eth:MCO": { "address": "0xB63B606Ac810a52cCa15e44bB630fd42D8d1d83d", "links": { - "Homepage": "https://mona.co/" + "Homepage": "https://mona.co" }, "marketcap_usd": 0, "name": "MCO", @@ -7469,10 +7805,27 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:MFT": { + "address": "0xDF2C7238198Ad8B389666574f2d8bc411A4b7428", + "links": { + "Github": "https://github.com/MainframeHQ", + "Homepage": "https://mainframe.com" + }, + "name": "Mainframe Token", + "network": "eth", + "shortcut": "MFT", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:MGO": { "address": "0x40395044Ac3c0C57051906dA938B54BD6557F212", "links": { - "Homepage": "https://gamecredits.com/mobilego/" + "Homepage": "https://gamecredits.com/mobilego" }, "marketcap_usd": 0, "name": "MGO", @@ -7575,7 +7928,7 @@ "erc20:eth:MNE": { "address": "0x1a95B271B0535D15fa49932Daba31BA612b52946", "links": { - "Homepage": "https://minereum.com/" + "Homepage": "https://minereum.com" }, "marketcap_usd": 0, "name": "MNE", @@ -7631,7 +7984,7 @@ "Github": "https://github.com/modum-io", "Homepage": "https://modum.io" }, - "marketcap_usd": 0, + "marketcap_usd": 18276794, "name": "Modum", "network": "eth", "shortcut": "MOD", @@ -7700,7 +8053,7 @@ "links": { "Homepage": "https://mothership.cx" }, - "marketcap_usd": 0, + "marketcap_usd": 20596100, "name": "Mothership", "network": "eth", "shortcut": "MSP", @@ -7735,7 +8088,7 @@ "links": { "Homepage": "http://www.monetha.io" }, - "marketcap_usd": 0, + "marketcap_usd": 8560130, "name": "Monetha", "network": "eth", "shortcut": "MTH", @@ -7855,7 +8208,7 @@ "Github": "https://github.com/Merculet", "Homepage": "https://www.merculet.io" }, - "marketcap_usd": 0, + "marketcap_usd": 10808521, "name": "Merculet", "network": "eth", "shortcut": "MVP", @@ -7905,7 +8258,7 @@ "links": { "Homepage": "https://mysterium.network" }, - "marketcap_usd": 0, + "marketcap_usd": 5295629, "name": "Mysterium", "network": "eth", "shortcut": "MYST", @@ -7940,7 +8293,7 @@ "Github": "https://github.com/NANJ-COIN", "Homepage": "https://nanjcoin.com/" }, - "marketcap_usd": 0, + "marketcap_usd": 26021992, "name": "NANJCOIN", "network": "eth", "shortcut": "NANJ", @@ -7994,7 +8347,7 @@ "Github": "https://github.com/polyswarm", "Homepage": "https://polyswarm.io" }, - "marketcap_usd": 0, + "marketcap_usd": 26369273, "name": "Nectar", "network": "eth", "shortcut": "NCT", @@ -8011,7 +8364,7 @@ "links": { "Homepage": "https://neverdie.com" }, - "marketcap_usd": 0, + "marketcap_usd": 761362, "name": "Neverdie", "network": "eth", "shortcut": "NDC", @@ -8062,7 +8415,7 @@ "address": "0xA823E6722006afe99E91c30FF5295052fe6b8E32", "links": { "Github": "https://github.com/neufund", - "Homepage": "https://neufund.org/" + "Homepage": "https://neufund.org" }, "marketcap_usd": 0, "name": "NEU Fund", @@ -8132,7 +8485,9 @@ "erc20:eth:NONE": { "address": "0x643B6870beabee941B9260a0A878bcF4A61Fb0f1", "hidden": 1, - "links": {}, + "links": { + "Github": "https://github.com/walleth/contracts/tree/master/NoneToken" + }, "marketcap_usd": 0, "name": "None", "network": "eth", @@ -8169,7 +8524,7 @@ "Github": "https://github.com/NperProject", "Homepage": "https://nper.io" }, - "marketcap_usd": 3605375, + "marketcap_usd": 4147411, "name": "NPER", "network": "eth", "shortcut": "NPER", @@ -8204,7 +8559,7 @@ "links": { "Homepage": "https://nuls.io" }, - "marketcap_usd": 104203200, + "marketcap_usd": 91802000, "name": "NULS", "network": "eth", "shortcut": "NULS", @@ -8255,7 +8610,7 @@ "links": { "Homepage": "https://beyond-the-void.net" }, - "marketcap_usd": 0, + "marketcap_usd": 5732797, "name": "Nexium", "network": "eth", "shortcut": "NxC", @@ -8289,7 +8644,7 @@ "links": { "Homepage": "https://www.openanx.org/en" }, - "marketcap_usd": 7902573, + "marketcap_usd": 8558190, "name": "OAX", "network": "eth", "shortcut": "OAX", @@ -8320,7 +8675,7 @@ } }, "erc20:eth:OHNI": { - "address": "0x7F2176cEB16dcb648dc924eff617c3dC2BEfd30d", + "address": "0x6f539a9456A5BCb6334A1A41207c3788f5825207", "links": { "Github": "ohnicoin", "Homepage": "http://ohni.us" @@ -8373,11 +8728,28 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:OLT": { + "address": "0x64A60493D888728Cf42616e034a0dfEAe38EFCF0", + "links": { + "Github": "https://github.com/Oneledger", + "Homepage": "https://oneledger.io" + }, + "name": "OneLedger Token", + "network": "eth", + "shortcut": "OLT", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:OMG": { "address": "0xd26114cd6EE289AccF82350c8d8487fedB8A0C07", "links": { "Github": "https://github.com/omisego", - "Homepage": "https://omisego.network/" + "Homepage": "https://omisego.network" }, "marketcap_usd": 0, "name": "OMG", @@ -8391,6 +8763,23 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:OMT": { + "address": "0x047187e53477be70DBe8Ea5B799318f2e165052F", + "links": { + "Github": "https://github.com/OTCMAKER/OMT", + "Homepage": "https://www.otcmaker.com" + }, + "name": "OTCMAKER Token", + "network": "eth", + "shortcut": "OMT", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:ONEK": { "address": "0xB23be73573bC7E03DB6e5dfc62405368716d28a8", "links": { @@ -8467,7 +8856,7 @@ "Github": "https://github.com/OpenSTFoundation", "Homepage": "https://simpletoken.org" }, - "marketcap_usd": 22555656, + "marketcap_usd": 23833953, "name": "Simple Token 'OST'", "network": "eth", "shortcut": "OST", @@ -8479,6 +8868,23 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:OWN": { + "address": "0x170b275CEd089FffAEBFe927F445a350ED9160DC", + "links": { + "Github": "https://github.com/owndata", + "Homepage": "https://owndata.network" + }, + "name": "OWNDATA", + "network": "eth", + "shortcut": "OWN", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:Ox Fina": { "address": "0x65A15014964F2102Ff58647e16a16a6B9E14bCF6", "links": { @@ -8503,7 +8909,7 @@ "Github": "https://github.com/policypalnet", "Homepage": "https://www.policypal.network" }, - "marketcap_usd": 0, + "marketcap_usd": 6698811, "name": "PolicyPal Network", "network": "eth", "shortcut": "PAL", @@ -8589,9 +8995,9 @@ "erc20:eth:PAY": { "address": "0xB97048628DB6B661D4C2aA833e95Dbe1A905B280", "links": { - "Homepage": "http://www.tenx.tech/" + "Homepage": "http://www.tenx.tech" }, - "marketcap_usd": 0, + "marketcap_usd": 112479647, "name": "TenX", "network": "eth", "shortcut": "PAY", @@ -8660,7 +9066,7 @@ "Github": "https://github.com/PeculiumPCL/Peculium", "Homepage": "https://peculium.io" }, - "marketcap_usd": 0, + "marketcap_usd": 3421686, "name": "Peculium", "network": "eth", "shortcut": "PCL", @@ -8780,7 +9186,7 @@ "erc20:eth:PLASMA": { "address": "0x59416A25628A76b4730eC51486114c32E0B582A1", "links": { - "Homepage": "https://plasma.io/" + "Homepage": "https://plasma.io" }, "marketcap_usd": 0, "name": "PLASMA", @@ -8799,7 +9205,7 @@ "links": { "Homepage": "http://www.herocoin.io" }, - "marketcap_usd": 0, + "marketcap_usd": 1954962, "name": "HeroCoin", "network": "eth", "shortcut": "PLAY", @@ -8816,7 +9222,7 @@ "links": { "Homepage": "https://polybius.io" }, - "marketcap_usd": 0, + "marketcap_usd": 11740266, "name": "Polybius", "network": "eth", "shortcut": "PLBT", @@ -8846,6 +9252,23 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:PLS": { + "address": "0xe43ac1714F7394173b15E7CfF31A63d523Ce4fB9", + "links": { + "Github": "https://github.com/bitsuperlab", + "Homepage": "https://dacplay.org" + }, + "name": "DACPLAY Token", + "network": "eth", + "shortcut": "PLS", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:PLU": { "address": "0xD8912C10681D8B21Fd3742244f44658dBA12264E", "links": { @@ -8902,7 +9325,7 @@ "links": { "Homepage": "https://polymath.network" }, - "marketcap_usd": 0, + "marketcap_usd": 109202251, "name": "Polymath Network", "network": "eth", "shortcut": "POLY", @@ -8937,7 +9360,7 @@ "Github": "https://github.com/PoSToken", "Homepage": "https://postoken.org" }, - "marketcap_usd": 0, + "marketcap_usd": 59276, "name": "PoSToken", "network": "eth", "shortcut": "POS", @@ -8971,7 +9394,7 @@ "links": { "Homepage": "https://www.paypie.com" }, - "marketcap_usd": 0, + "marketcap_usd": 19913850, "name": "PayPie", "network": "eth", "shortcut": "PPP", @@ -8988,7 +9411,7 @@ "links": { "Homepage": "https://populous.co" }, - "marketcap_usd": 0, + "marketcap_usd": 246779855, "name": "Populous", "network": "eth", "shortcut": "PPT", @@ -9005,7 +9428,7 @@ "links": { "Homepage": "https://presearch.io" }, - "marketcap_usd": 0, + "marketcap_usd": 19461645, "name": "Presearch", "network": "eth", "shortcut": "PRE", @@ -9058,7 +9481,7 @@ "links": { "Homepage": "https://propy.com" }, - "marketcap_usd": 0, + "marketcap_usd": 12734679, "name": "Propy", "network": "eth", "shortcut": "PRO", @@ -9179,7 +9602,7 @@ "erc20:eth:PTOY": { "address": "0x8Ae4BF2C33a8e667de34B54938B0ccD03Eb8CC06", "links": { - "Homepage": "https://patientory.com/" + "Homepage": "https://patientory.com" }, "marketcap_usd": 0, "name": "PTOY", @@ -9229,6 +9652,23 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:PURC": { + "address": "0xe25ff6Eb959BCE67975778e46A47750C243B6B99", + "links": { + "Github": "https://github.com/seanyc99/PureCarbon-Smart-Contract", + "Homepage": "https://purecarbon.io" + }, + "name": "PureCarbon", + "network": "eth", + "shortcut": "PURC", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:PXT": { "address": "0xc14830E53aA344E8c14603A91229A0b925b0B262", "links": { @@ -9251,7 +9691,7 @@ "links": { "Homepage": "https://liquid.plus" }, - "marketcap_usd": 93920050, + "marketcap_usd": 93416050, "name": "QASH", "network": "eth", "shortcut": "QASH", @@ -9298,6 +9738,23 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:QNT": { + "address": "0x4a220E6096B25EADb88358cb44068A3248254675", + "links": { + "Github": "https://github.com/quantnetwork", + "Homepage": "https://www.quant.network/" + }, + "name": "Quant", + "network": "eth", + "shortcut": "QNT", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:QRG": { "address": "0xFFAA5ffc455d9131f8A2713A741fD1960330508B", "links": { @@ -9319,7 +9776,7 @@ "address": "0x697beac28B09E122C4332D163985e8a73121b97F", "links": { "Github": "https://github.com/theQRL", - "Homepage": "https://theqrl.org/" + "Homepage": "https://theqrl.org" }, "marketcap_usd": 0, "name": "QRL", @@ -9375,7 +9832,7 @@ "Github": "https://github.com/qtumproject", "Homepage": "https://qtum.org/" }, - "marketcap_usd": 679977040, + "marketcap_usd": 727523386, "name": "Qtum", "network": "eth", "shortcut": "QTUM", @@ -9427,9 +9884,9 @@ "address": "0xF970b8E36e23F7fC3FD752EeA86f8Be8D83375A6", "links": { "Github": "https://github.com/ripio/rcn-token", - "Homepage": "https://ripiocredit.network/" + "Homepage": "https://ripiocredit.network" }, - "marketcap_usd": 0, + "marketcap_usd": 21633782, "name": "Ripio Credit Network", "network": "eth", "shortcut": "RCN", @@ -9498,7 +9955,7 @@ "links": { "Homepage": "https://www.rebellious.io" }, - "marketcap_usd": 5521490, + "marketcap_usd": 5569683, "name": "Rebellious", "network": "eth", "shortcut": "REBL", @@ -9516,7 +9973,7 @@ "Github": "https://github.com/red", "Homepage": "https://ico.red-lang.org" }, - "marketcap_usd": 5221892, + "marketcap_usd": 5504109, "name": "Red Community Token", "network": "eth", "shortcut": "RED", @@ -9547,11 +10004,11 @@ } }, "erc20:eth:REP": { - "address": "0xE94327D07Fc17907b4DB788E5aDf2ed424adDff6", + "address": "0x1985365e9f78359a9B6AD760e32412f4a445E862", "links": { "Homepage": "https://augur.net" }, - "marketcap_usd": 0, + "marketcap_usd": 326795700, "name": "Augur", "network": "eth", "shortcut": "REP", @@ -9568,7 +10025,7 @@ "links": { "Homepage": "https://request.network" }, - "marketcap_usd": 0, + "marketcap_usd": 52258532, "name": "Request Network", "network": "eth", "shortcut": "REQ", @@ -9584,7 +10041,7 @@ "address": "0xf05a9382A4C3F29E2784502754293D88b835109C", "links": { "Github": "https://github.com/rexmls/RexToken", - "Homepage": "https://imbrex.io/" + "Homepage": "https://imbrex.io" }, "marketcap_usd": 0, "name": "REX", @@ -9603,7 +10060,7 @@ "links": { "Homepage": "https://refereum.com" }, - "marketcap_usd": 0, + "marketcap_usd": 8663797, "name": "Refereum", "network": "eth", "shortcut": "RFR", @@ -9615,6 +10072,22 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:RING": { + "address": "0x86E56f3c89a14528858e58B3De48c074538BAf2c", + "links": { + "Homepage": "https://www.evolution.land/" + }, + "name": "Evolution Land Global Token", + "network": "eth", + "shortcut": "RING", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:RIPT": { "address": "0xdd007278B667F6bef52fD0a4c23604aA1f96039a", "links": { @@ -9638,7 +10111,7 @@ "links": { "Homepage": "http://crowdsale.iex.ec" }, - "marketcap_usd": 55162771, + "marketcap_usd": 62044616, "name": "IEx.ec", "network": "eth", "shortcut": "RLC", @@ -9654,7 +10127,7 @@ "address": "0xcCeD5B8288086BE8c38E23567e684C3740be4D48", "links": { "Github": "https://github.com/Smartroulette", - "Homepage": "https://smartplay.tech/" + "Homepage": "https://smartplay.tech" }, "marketcap_usd": 0, "name": "RLT", @@ -9725,7 +10198,7 @@ "Github": "https://github.com/rocketico", "Homepage": "https://rocketico.io" }, - "marketcap_usd": 26204145, + "marketcap_usd": 28384640, "name": "Rocket Token", "network": "eth", "shortcut": "ROCK", @@ -9828,7 +10301,7 @@ "links": { "Homepage": "https://rivetzintl.com" }, - "marketcap_usd": 0, + "marketcap_usd": 6306808, "name": "Rivetz", "network": "eth", "shortcut": "RVT", @@ -9879,7 +10352,7 @@ "links": { "Homepage": "https://saltlending.com" }, - "marketcap_usd": 66071552, + "marketcap_usd": 78529601, "name": "Salt Lending Token", "network": "eth", "shortcut": "SALT", @@ -9896,7 +10369,7 @@ "links": { "Homepage": "https://santiment.net" }, - "marketcap_usd": 0, + "marketcap_usd": 65615434, "name": "Santiment", "network": "eth", "shortcut": "SAN", @@ -9947,7 +10420,7 @@ "links": { "Homepage": "https://sensay.it" }, - "marketcap_usd": 1984182, + "marketcap_usd": 3573944, "name": "Sensay", "network": "eth", "shortcut": "SENSE", @@ -10012,7 +10485,7 @@ } }, "erc20:eth:SGT": { - "address": "0x37427576324fE1f3625c9102674772d7CF71377d", + "address": "0xd248B0D48E44aaF9c49aea0312be7E13a6dc1468", "links": { "Homepage": "https://sgt.selfieyo.com" }, @@ -10031,7 +10504,7 @@ "erc20:eth:SHIT": { "address": "0xEF2E9966eb61BB494E5375d5Df8d67B7dB8A780D", "links": { - "Homepage": "https://www.shitcoin.io/" + "Homepage": "https://www.shitcoin.io" }, "marketcap_usd": 0, "name": "SHIT", @@ -10084,7 +10557,7 @@ "address": "0x2bDC0D42996017fCe214b21607a515DA41A9E0C5", "links": { "Github": "https://github.com/Steamtradenet/smart-contract", - "Homepage": "https://skincoin.org/" + "Homepage": "https://skincoin.org" }, "marketcap_usd": 0, "name": "SKIN", @@ -10155,7 +10628,7 @@ "links": { "Homepage": "http://smartlands.io" }, - "marketcap_usd": 0, + "marketcap_usd": 11415141, "name": "Smartlands", "network": "eth", "shortcut": "SLT", @@ -10167,6 +10640,23 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:SLY": { + "address": "0x7928c8aBF1F74eF9F96D4D0a44e3b4209d360785", + "links": { + "Github": "https://github.com/SELFLLERY", + "Homepage": "https://selfllery.com/" + }, + "name": "Selfllery", + "network": "eth", + "shortcut": "SLY", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:SMART": { "address": "0x6F6DEb5db0C4994A8283A01D6CFeEB27Fc3bBe9C", "links": { @@ -10191,7 +10681,7 @@ "Github": "https://github.com/SmartMeshFoundation", "Homepage": "http://smartnode.org" }, - "marketcap_usd": 0, + "marketcap_usd": 51274091, "name": "SmartMesh", "network": "eth", "shortcut": "SMT", @@ -10260,7 +10750,7 @@ "links": { "Homepage": "https://singulardtv.com" }, - "marketcap_usd": 0, + "marketcap_usd": 22837140, "name": "SingularDTV", "network": "eth", "shortcut": "SNGLS", @@ -10293,7 +10783,7 @@ "address": "0x983F6d60db79ea8cA4eB9968C6aFf8cfA04B3c63", "links": { "Github": "https://github.com/sonm-io", - "Homepage": "https://sonm.com/" + "Homepage": "https://sonm.com" }, "marketcap_usd": 0, "name": "SNM", @@ -10363,7 +10853,7 @@ "links": { "Homepage": "https://spankchain.com" }, - "marketcap_usd": 0, + "marketcap_usd": 21826866, "name": "SpankChain", "network": "eth", "shortcut": "SPANK", @@ -10467,7 +10957,7 @@ "Github": "https://github.com/Sharders", "Homepage": "https://sharder.org" }, - "marketcap_usd": 0, + "marketcap_usd": 6190295, "name": "Sharder", "network": "eth", "shortcut": "SS", @@ -10482,7 +10972,7 @@ "erc20:eth:SSH": { "address": "0x6e2050CBFB3eD8A4d39b64cC9f47E711a03a5a89", "links": { - "Homepage": "https://www.stream.space/" + "Homepage": "https://www.stream.space" }, "marketcap_usd": 0, "name": "StreamShares", @@ -10496,6 +10986,22 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:STABIT": { + "address": "0x4A89cD486fA996ad50c0a63C35c78702f5422a50", + "links": { + "Homepage": "https://stabitcoin.com/" + }, + "name": "StabitCoin", + "network": "eth", + "shortcut": "STABIT", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:STAC": { "address": "0x9a005c9a89BD72a4Bd27721E7a09A3c11D2b03C4", "links": { @@ -10553,7 +11059,7 @@ "links": { "Homepage": "https://stktoken.com" }, - "marketcap_usd": 9640419, + "marketcap_usd": 9916006, "name": "STK Token", "network": "eth", "shortcut": "STK", @@ -10585,10 +11091,10 @@ "erc20:eth:STORJ": { "address": "0xB64ef51C888972c908CFacf59B47C1AfBC0Ab8aC", "links": { - "Github": "https://github.com/Storj/", - "Homepage": "https://storj.io/" + "Github": "https://github.com/Storj", + "Homepage": "https://storj.io" }, - "marketcap_usd": 57693817, + "marketcap_usd": 65827490, "name": "STORJ", "network": "eth", "shortcut": "STORJ", @@ -10605,7 +11111,7 @@ "links": { "Homepage": "https://www.stormtoken.com" }, - "marketcap_usd": 71653140, + "marketcap_usd": 81414359, "name": "Storm Token", "network": "eth", "shortcut": "STORM", @@ -10641,7 +11147,7 @@ "Github": "https://github.com/Storiqa/", "Homepage": "https://storiqa.com" }, - "marketcap_usd": 0, + "marketcap_usd": 35245408, "name": "Storiqa", "network": "eth", "shortcut": "STQ", @@ -10657,7 +11163,7 @@ "address": "0x46492473755e8dF960F8034877F61732D718CE96", "links": { "Github": "https://github.com/sprux/BackToEarth", - "Homepage": "https://backto.earth/" + "Homepage": "https://backto.earth" }, "marketcap_usd": 0, "name": "STRC", @@ -10694,7 +11200,7 @@ "links": { "Homepage": "https://substratum.net" }, - "marketcap_usd": 0, + "marketcap_usd": 97397261, "name": "Substratum", "network": "eth", "shortcut": "SUB", @@ -10886,7 +11392,7 @@ "Github": "https://github.com/telcoin", "Homepage": "https://www.telco.in" }, - "marketcap_usd": 0, + "marketcap_usd": 33094830, "name": "Telcoin", "network": "eth", "shortcut": "TEL", @@ -10904,7 +11410,7 @@ "Github": "https://github.com/TrueFlip", "Homepage": "https://trueflip.io" }, - "marketcap_usd": 0, + "marketcap_usd": 4312239, "name": "TrueFlip", "network": "eth", "shortcut": "TFL", @@ -10921,7 +11427,7 @@ "links": { "Homepage": "https://www.thetatoken.org/" }, - "marketcap_usd": 0, + "marketcap_usd": 89963068, "name": "Theta Token", "network": "eth", "shortcut": "THETA", @@ -10937,7 +11443,7 @@ "address": "0xfe7B915A0bAA0E79f85c5553266513F7C1c03Ed0", "links": { "Github": "https://github.com/THUGCOIN/THUGCoin", - "Homepage": "https://thugcoin.cash/" + "Homepage": "https://thugcoin.cash" }, "marketcap_usd": 0, "name": "THUG", @@ -10956,7 +11462,7 @@ "links": { "Homepage": "https://chronobank.io" }, - "marketcap_usd": 0, + "marketcap_usd": 7932457, "name": "Chronobank", "network": "eth", "shortcut": "TIME", @@ -10990,7 +11496,7 @@ "links": { "Homepage": "https://www.blocktix.io" }, - "marketcap_usd": 0, + "marketcap_usd": 10873640, "name": "Blocktix", "network": "eth", "shortcut": "TIX", @@ -11007,7 +11513,7 @@ "links": { "Homepage": "https://etherscan.io/token/TokenCard" }, - "marketcap_usd": 0, + "marketcap_usd": 21155308, "name": "TokenCard", "network": "eth", "shortcut": "TKN", @@ -11037,6 +11543,23 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:TOOR": { + "address": "0x8eb965ee9cCFBCE76c0a06264492c0afEfc2826d", + "links": { + "Github": "https://github.com/toorister/toorcoin", + "Homepage": "https://www.toorcoin.com" + }, + "name": "ToorCoin", + "network": "eth", + "shortcut": "TOOR", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:TRC": { "address": "0xcB3F902bf97626391bF8bA87264bbC3DC13469be", "hidden": 1, @@ -11144,7 +11667,7 @@ "links": { "Homepage": "https://taas.fund" }, - "marketcap_usd": 14723245, + "marketcap_usd": 15088511, "name": "Token-as-a-Service", "network": "eth", "shortcut": "TaaS", @@ -11197,7 +11720,7 @@ "links": { "Homepage": "https://uquidcoin.com" }, - "marketcap_usd": 0, + "marketcap_usd": 8930390, "name": "Uquid Coin", "network": "eth", "shortcut": "UQC", @@ -11265,7 +11788,7 @@ "Github": "https://github.com/UniversaBlockchain/universa", "Homepage": "https://www.universa.io/" }, - "marketcap_usd": 0, + "marketcap_usd": 21558807, "name": "Universa", "network": "eth", "shortcut": "UTN-P", @@ -11310,6 +11833,23 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:VDG": { + "address": "0x57C75ECCc8557136D32619a191fBCDc88560d711", + "links": { + "Github": "https://github.com/VeriDocGlobal", + "Homepage": "https://www.veridocglobal.com/" + }, + "name": "VeriDocGlobal", + "network": "eth", + "shortcut": "VDG", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:VDOC": { "address": "0x82BD526bDB718C6d4DD2291Ed013A5186cAE2DCa", "links": { @@ -11334,7 +11874,7 @@ "Github": "https://github.com/blockv", "Homepage": "https://blockv.io" }, - "marketcap_usd": 0, + "marketcap_usd": 38615763, "name": "BLOCKv", "network": "eth", "shortcut": "VEE", @@ -11386,7 +11926,7 @@ "Github": "https://github.com/vechain-team", "Homepage": "https://tokensale.vechain.com/en" }, - "marketcap_usd": 0, + "marketcap_usd": 904502518, "name": "Vechain", "network": "eth", "shortcut": "VET", @@ -11416,10 +11956,10 @@ } }, "erc20:eth:VIBEX": { - "address": "0x882448f83d90B2bf477Af2eA79327fDEA1335D93", + "address": "0xe8Ff5C9c75dEb346acAc493C463C8950Be03Dfba", "links": { "Github": "https://github.com/amack2u/VibeHub", - "Homepage": "https://vibehub.io/ico/" + "Homepage": "http://vibehub.io" }, "marketcap_usd": 0, "name": "VIBEX", @@ -11456,7 +11996,7 @@ "Github": "https://github.com/ViceIndustryToken", "Homepage": "https://vicetoken.com/" }, - "marketcap_usd": 0, + "marketcap_usd": 1572575, "name": "Vice Industry Token", "network": "eth", "shortcut": "VIT", @@ -11489,8 +12029,8 @@ "erc20:eth:VLD": { "address": "0x922aC473A3cC241fD3a0049Ed14536452D58D73c", "links": { - "Github": "https://github.com/valid-global/", - "Homepage": "https://valid.global/" + "Github": "https://github.com/vetri-global/", + "Homepage": "https://vetri.global/" }, "marketcap_usd": 0, "name": "VLD", @@ -11544,7 +12084,7 @@ "links": { "Homepage": "https://veros.org" }, - "marketcap_usd": 0, + "marketcap_usd": 368631, "name": "Veros", "network": "eth", "shortcut": "VRS", @@ -11579,7 +12119,7 @@ "Github": "https://github.com/waxio", "Homepage": "https://wax.io" }, - "marketcap_usd": 104521623, + "marketcap_usd": 120008204, "name": "WAX", "network": "eth", "shortcut": "WAX", @@ -11631,7 +12171,7 @@ "links": { "Homepage": "https://wepower.network" }, - "marketcap_usd": 0, + "marketcap_usd": 20502348, "name": "WePower", "network": "eth", "shortcut": "WCT", @@ -11737,7 +12277,7 @@ "links": { "Homepage": "https://wings.ai" }, - "marketcap_usd": 17660790, + "marketcap_usd": 20746667, "name": "WINGS", "network": "eth", "shortcut": "WINGS", @@ -11893,7 +12433,7 @@ "links": { "Homepage": "https://www.wacoin.io" }, - "marketcap_usd": 15736632, + "marketcap_usd": 16417389, "name": "WaBi", "network": "eth", "shortcut": "WaBi", @@ -11944,7 +12484,7 @@ "links": { "Homepage": "http://www.xaurum.org" }, - "marketcap_usd": 0, + "marketcap_usd": 4841766, "name": "Xaurum", "network": "eth", "shortcut": "XAUR", @@ -11962,7 +12502,7 @@ "Github": "https://github.com/blitzpredict", "Homepage": "https://www.blitzpredict.io" }, - "marketcap_usd": 0, + "marketcap_usd": 1336047, "name": "BlitzPredict", "network": "eth", "shortcut": "XBP", @@ -12065,7 +12605,7 @@ "erc20:eth:XID": { "address": "0xB110eC7B1dcb8FAB8dEDbf28f53Bc63eA5BEdd84", "links": { - "Homepage": "https://sphereidentity.com/" + "Homepage": "https://sphereidentity.com" }, "marketcap_usd": 0, "name": "XID", @@ -12085,7 +12625,7 @@ "Github": "https://github.com/InkProtocol/", "Homepage": "https://paywithink.com" }, - "marketcap_usd": 0, + "marketcap_usd": 2700360, "name": "Ink Protocol", "network": "eth", "shortcut": "XNK", @@ -12102,7 +12642,7 @@ "links": { "Homepage": "https://xenon.network" }, - "marketcap_usd": 0, + "marketcap_usd": 1301571, "name": "XENON", "network": "eth", "shortcut": "XNN", @@ -12134,7 +12674,7 @@ "erc20:eth:XRL": { "address": "0xB24754bE79281553dc1adC160ddF5Cd9b74361a4", "links": { - "Homepage": "https://rialto.ai/" + "Homepage": "https://rialto.ai" }, "marketcap_usd": 0, "name": "XRL", @@ -12182,12 +12722,29 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:YUP": { + "address": "0xD9A12Cde03a86E800496469858De8581D3A5353d", + "links": { + "Github": "https://github.com/crowdholding/", + "Homepage": "https://www.crowdholding.com" + }, + "name": "YUP", + "network": "eth", + "shortcut": "YUP", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:YUPIE": { "address": "0x0F33bb20a282A7649C7B3AFf644F084a9348e933", "hidden": 1, "links": { "Github": "https://github.com/crowdholdingico/YupieSmartContract", - "Homepage": "https://www.crowdholding.com/" + "Homepage": "https://www.crowdholding.com" }, "marketcap_usd": 0, "name": "YUPIE", @@ -12207,7 +12764,7 @@ "Github": "https://github.com/zapproject", "Homepage": "https://zap.store" }, - "marketcap_usd": 4519234, + "marketcap_usd": 6056076, "name": "ZAP", "network": "eth", "shortcut": "ZAP", @@ -12224,7 +12781,7 @@ "links": { "Homepage": "https://zsc.io/" }, - "marketcap_usd": 0, + "marketcap_usd": 11213075, "name": "Zeusshield", "network": "eth", "shortcut": "ZCS", @@ -12242,7 +12799,7 @@ "Github": "https://github.com/zilliqa", "Homepage": "https://www.zilliqa.com/" }, - "marketcap_usd": 0, + "marketcap_usd": 562108751, "name": "Zilliqa", "network": "eth", "shortcut": "ZIL", @@ -12275,7 +12832,7 @@ "address": "0xE41d2489571d322189246DaFA5ebDe1F4699F498", "links": { "Github": "https://github.com/0xProject", - "Homepage": "https://0xproject.com/" + "Homepage": "https://0xproject.com" }, "marketcap_usd": 0, "name": "0x Project", @@ -12312,7 +12869,7 @@ "Github": "https://github.com/carVertical", "Homepage": "https://www.carvertical.com" }, - "marketcap_usd": 0, + "marketcap_usd": 8542995, "name": "carVertical", "network": "eth", "shortcut": "cV", @@ -12400,7 +12957,7 @@ "Github": "https://github.com/eosdac", "Homepage": "https://eosdac.io/" }, - "marketcap_usd": 34490099, + "marketcap_usd": 34547518, "name": "eosDAC", "network": "eth", "shortcut": "eosDAC", @@ -12468,7 +13025,7 @@ "address": "0x8667559254241ddeD4d11392f868d72092765367", "hidden": 1, "links": {}, - "marketcap_usd": 395004653, + "marketcap_usd": 434471331, "name": "Aeternity", "network": "kov", "shortcut": "Aeternity", @@ -12499,6 +13056,7 @@ "erc20:rin:AETH": { "address": "0x398A7A69f3c59181A1ffe34bed11DCb5DF863A8a", "links": { + "Github": "https://github.com/akashaProject", "Homepage": "http://akasha.world" }, "marketcap_usd": 0, @@ -12516,6 +13074,7 @@ "erc20:rin:BHNT": { "address": "0xe27826eE778B6F78a49a686dA7D64f6E7b084a4f", "links": { + "Github": "https://github.com/berlin-hack-and-tell", "Homepage": "http://berlin.hackandtell.org" }, "marketcap_usd": 0, @@ -12567,7 +13126,9 @@ "erc20:rin:NONE": { "address": "0x6475A7FA6Ed2D5180F0e0a07c2d951D12C0EDB91", "hidden": 1, - "links": {}, + "links": { + "Github": "https://github.com/walleth/contracts/tree/master/NoneToken" + }, "marketcap_usd": 0, "name": "None", "network": "rin", @@ -12583,7 +13144,9 @@ "erc20:rin:PPD": { "address": "0x12fE174C097F6B3e876B3b060C9061F4B9dEBB80", "hidden": 1, - "links": {}, + "links": { + "Github": "https://github.com/cchen408" + }, "marketcap_usd": 0, "name": "PP Donation", "network": "rin", @@ -12596,9 +13159,27 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:rin:RDN": { + "address": "0x3615757011112560521536258c1E7325Ae3b48AE", + "links": { + "Homepage": "https://github.com/gnosis/dx-examples-liquidity-bots" + }, + "marketcap_usd": 0, + "name": "Raiden", + "network": "rin", + "shortcut": "RDN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:rin:WALL": { "address": "0x0A057a87CE9C56D7e336B417c79cf30E8d27860B", "links": { + "Github": "https://github.com/walleth", "Homepage": "https://walleth.org" }, "marketcap_usd": 0, @@ -12632,7 +13213,9 @@ "erc20:rop:NONE": { "address": "0xFD5a69A1309595FF5121553F52C8A5B2B1B31031", "hidden": 1, - "links": {}, + "links": { + "Github": "https://github.com/walleth/contracts/tree/master/NoneToken" + }, "marketcap_usd": 0, "name": "None", "network": "rop", @@ -12664,7 +13247,7 @@ "erc20:ubq:CEFS": { "address": "0x08533D6A06CE365298b12Ef92eb407cBA8Aa8273", "links": { - "Homepage": "https://www.cryptopiashares.com/" + "Homepage": "https://www.cryptopiashares.com" }, "marketcap_usd": 0, "name": "CEFS", @@ -12697,9 +13280,9 @@ "erc20:ubq:QWARK": { "address": "0x4b4899a10F3E507DB207b0ee2426029eFa168a67", "links": { - "Homepage": "https://www.qwark.io/" + "Homepage": "https://www.qwark.io" }, - "marketcap_usd": 2077885, + "marketcap_usd": 2520144, "name": "QWARK", "network": "ubq", "shortcut": "QWARK", @@ -12746,7 +13329,7 @@ "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 8450427, + "marketcap_usd": 9312088, "name": "DIMCOIN", "shortcut": "DIM", "t1_enabled": "yes", @@ -12761,7 +13344,7 @@ "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 8450427, + "marketcap_usd": 9312088, "name": "DIM TOKEN", "shortcut": "DIMTOK", "t1_enabled": "yes", @@ -12803,7 +13386,7 @@ "links": { "Homepage": "https://nem.io" }, - "marketcap_usd": 1448937000, + "marketcap_usd": 1572948000, "name": "NEM", "shortcut": "XEM", "t1_enabled": "yes", @@ -12815,11 +13398,11 @@ } }, "info": { - "marketcap_usd": 185677428942, - "t1_coins": 689, - "t2_coins": 688, - "total_marketcap_usd": 250022314394, - "updated_at": 1531492227, - "updated_at_readable": "Fri Jul 13 16:30:27 2018" + "marketcap_usd": 219948273618, + "t1_coins": 690, + "t2_coins": 689, + "total_marketcap_usd": 283970152150, + "updated_at": 1532098768, + "updated_at_readable": "Fri Jul 20 16:59:28 2018" } } \ No newline at end of file diff --git a/defs/ethereum/tokens b/defs/ethereum/tokens index 0b7f34d48..56d9c3c93 160000 --- a/defs/ethereum/tokens +++ b/defs/ethereum/tokens @@ -1 +1 @@ -Subproject commit 0b7f34d48de1376f39e10adbeb5a0191cdffd73c +Subproject commit 56d9c3c9324e30d7f53eda7b8dc3cae76a4da143 diff --git a/tools/coins_details.py b/tools/coins_details.py index 3abff66eb..5438f3823 100755 --- a/tools/coins_details.py +++ b/tools/coins_details.py @@ -53,11 +53,13 @@ def coinmarketcap_info(shortcut): return coin -def update_marketcap(obj, shortcut): - try: - obj['marketcap_usd'] = int(float(coinmarketcap_info(shortcut)['quotes']['USD']['market_cap'])) - except: - pass +def update_marketcap(obj, *shortcuts): + for sym in shortcuts: + try: + obj['marketcap_usd'] = int(float(coinmarketcap_info(sym)['quotes']['USD']['market_cap'])) + return + except: + pass # print("Marketcap info not found for", shortcut) @@ -133,6 +135,7 @@ def update_coins(details): set_default(out, 'links', {}) set_default(out['links'], 'Homepage', coin['website']) set_default(out['links'], 'Github', coin['github']) + set_default(out, 'wallet', {}) update_marketcap(out, coin.get('coinmarketcap_alias', coin['coin_label'])) check_unsupported(details, 'coin:', supported) @@ -181,12 +184,12 @@ def update_erc20(details): out['wallet']['MyCrypto'] = 'https://mycrypto.com' out['wallet']['MyEtherWallet'] = 'https://www.myetherwallet.com' - if t['website']: + if t.get('website'): out['links']['Homepage'] = t['website'] if t.get('social', {}).get('github', None): out['links']['Github'] = t['social']['github'] - update_marketcap(out, out.get('coinmarketcap_alias', t['symbol'])) + update_marketcap(out, out.get('coinmarketcap_alias'), t['name'], t['symbol']) check_unsupported(details, 'erc20:', supported) From 2a234c1b0014cbdf2496997caf40c35427ccd60a Mon Sep 17 00:00:00 2001 From: matejcik Date: Fri, 20 Jul 2018 16:39:41 +0200 Subject: [PATCH 453/767] defs: change format of support.json --- defs/support.json | 343 ++++++++++++++++++++++++++++++++-------------- 1 file changed, 243 insertions(+), 100 deletions(-) diff --git a/defs/support.json b/defs/support.json index f91962118..63d5dd5fb 100644 --- a/defs/support.json +++ b/defs/support.json @@ -1,102 +1,245 @@ { - "trezor1": { - "Bitcoin": "1.5.2", - "Testnet": "1.5.2", - "Bcash": "1.6.2", - "Bcash Testnet": "1.6.2", - "Bgold": "1.6.2", - "Bprivate": "1.6.2", - "Dash": "1.5.2", - "Dash Testnet": "1.6.2", - "Decred": "1.6.2", - "Decred Testnet": "1.6.2", - "DigiByte": "1.6.0", - "Dogecoin": "1.5.2", - "Fujicoin": "1.6.1", - "Groestlcoin": "1.6.2", - "Groestlcoin Testnet": "1.6.2", - "Litecoin": "1.5.2", - "Litecoin Testnet": "1.6.2", - "Monacoin": "1.6.0", - "Namecoin": "1.5.2", - "Vertcoin": "1.6.1", - "Viacoin": "1.6.2", - "Zcash": "1.6.2", - "Zcash Testnet": "1.6.2", - "Zcoin": "1.6.2", - "Zcoin Testnet": "1.6.2" - }, - "trezor2": { - "Bitcoin": "2.0.5", - "Testnet": "2.0.5", - "Bcash": "2.0.7", - "Bcash Testnet": "2.0.7", - "Bgold": "2.0.7", - "Bprivate": "2.0.7", - "Dash": "2.0.5", - "DigiByte": "2.0.5", - "Dogecoin": "2.0.5", - "Fujicoin": "2.0.5", - "Groestlcoin": "2.0.8", - "Groestlcoin Testnet": "2.0.8", - "Litecoin": "2.0.5", - "Litecoin Testnet": "2.0.7", - "Monacoin": "2.0.5", - "Namecoin": "2.0.5", - "Vertcoin": "2.0.5", - "Viacoin": "2.0.7", - "Zcash": "2.0.7", - "Zcash Testnet": "2.0.7", - "Zcoin": "2.0.7", - "Zcoin Testnet": "2.0.7", - "Zencash": "2.0.8" - }, - "connect": { - "Bitcoin": true, - "Testnet": true, - "Bcash": true, - "Bgold": true, - "Dash": true, - "Litecoin": true, - "Zcash": true, - "Dogecoin": true, - "Vertcoin": true - }, - "webwallet": { - "Bitcoin": true, - "Testnet": true, - "Bcash": true, - "Bgold": true, - "Bprivate": true, - "Dash": true, - "Decred": true, - "Decred Testnet": true, - "DigiByte": true, - "Dogecoin": true, - "Fujicoin": true, - "Groestlcoin": true, - "Groestlcoin Testnet": true, - "Litecoin": true, - "Litecoin Testnet": true, - "Monacoin": true, - "Vertcoin": true, - "Viacoin": true, - "Zcash": true, - "Zcash Testnet": true, - "Zcoin": true - }, - "electrum": { - "Bitcoin": "https://electrum.org", - "Bcash": "https://electroncash.org", - "Bgold": "https://github.com/BTCGPU/electrum", - "Bprivate": "https://github.com/BTCPrivate/electrum-btcp", - "Dash": "https://electrum.dash.org", - "Groestlcoin": "https://www.groestlcoin.org/groestlcoin-electrum-wallet/", - "Koto": "https://electrum.kotocoin.info", - "Litecoin": "https://electrum-ltc.org", - "Monacoin": "https://electrum-mona.org", - "Namecoin": "https://github.com/namecoin/electrum-nmc", - "Viacoin": "https://vialectrum.org", - "Zcoin": "https://github.com/zcoinofficial/electrum-xzc" - } + "btc:BCH": { + "trezor1": "1.6.2", + "trezor2": "2.0.7", + "connect": true, + "webwallet": true, + "other": { + "Electron Cash": "https://electroncash.org" + } + }, + "btc:BTC": { + "trezor1": "1.5.2", + "trezor2": "2.0.5", + "connect": true, + "webwallet": true, + "other": { + "Electrum": "https://electrum.org" + } + }, + "btc:BTCP": { + "trezor1": "1.6.2", + "trezor2": "2.0.7", + "connect": null, + "webwallet": true, + "other": { + "BTCP Electrum": "https://github.com/BTCPrivate/electrum-btcp" + } + }, + "btc:BTG": { + "trezor1": "1.6.2", + "trezor2": "2.0.7", + "connect": true, + "webwallet": true, + "other": { + "ElectrumG": "https://github.com/BTCGPU/electrum" + } + }, + "btc:DASH": { + "trezor1": "1.5.2", + "trezor2": "2.0.5", + "connect": true, + "webwallet": true, + "other": { + "Dash Electrum": "https://electrum.dash.org" + } + }, + "btc:DCR": { + "connect": null, + "electrum": null, + "trezor1": "1.6.2", + "trezor2": null, + "webwallet": true + }, + "btc:DGB": { + "connect": null, + "electrum": null, + "trezor1": "1.6.0", + "trezor2": "2.0.5", + "webwallet": true + }, + "btc:DOGE": { + "connect": null, + "electrum": null, + "trezor1": "1.5.2", + "trezor2": "2.0.5", + "webwallet": true + }, + "btc:FJC": { + "trezor1": "1.6.1", + "trezor2": "2.0.5", + "connect": null, + "webwallet": true, + "other": { + "Electrum-FJC": "http://www.fujicoin.org/downloads.php" + } + }, + "btc:GRS": { + "trezor1": "1.6.2", + "trezor2": "2.0.8", + "connect": null, + "webwallet": true, + "other": { + "Electrum-GRS": "https://www.groestlcoin.org/groestlcoin-electrum-wallet/" + } + }, + "btc:LTC": { + "trezor1": "1.5.2", + "trezor2": "2.0.5", + "connect": true, + "webwallet": true, + "other": { + "Electrum-LTC": "https://electrum-ltc.org" + } + }, + "btc:MONA": { + "trezor1": "1.6.0", + "trezor2": "2.0.5", + "connect": null, + "webwallet": true, + "other": { + "Electrum-MONA": "https://electrum-mona.org" + } + }, + "btc:NMC": { + "trezor1": "1.5.2", + "trezor2": "2.0.5", + "connect": null, + "webwallet": null, + "other": { + "Electrum-NMC": "https://github.com/namecoin/electrum-nmc" + } + }, + "btc:TAZ": { + "connect": null, + "electrum": null, + "trezor1": "1.6.2", + "trezor2": "2.0.7", + "webwallet": true + }, + "btc:TBCH": { + "connect": null, + "electrum": null, + "trezor1": "1.6.2", + "trezor2": "2.0.7", + "webwallet": null + }, + "btc:TDCR": { + "connect": null, + "electrum": null, + "trezor1": "1.6.2", + "trezor2": null, + "webwallet": true + }, + "btc:TEST": { + "connect": true, + "electrum": null, + "trezor1": "1.5.2", + "trezor2": "2.0.5", + "webwallet": true + }, + "btc:TLTC": { + "connect": null, + "electrum": null, + "trezor1": "1.6.2", + "trezor2": "2.0.7", + "webwallet": true + }, + "btc:VIA": { + "trezor1": "1.6.2", + "trezor2": "2.0.7", + "connect": null, + "webwallet": true, + "other": { + "Vialectrum": "https://vialectrum.org" + } + }, + "btc:VTC": { + "connect": null, + "electrum": null, + "trezor1": "1.6.1", + "trezor2": "2.0.5", + "webwallet": true + }, + "btc:XZC": { + "trezor1": "1.6.2", + "trezor2": "2.0.7", + "connect": null, + "webwallet": true, + "other": { + "Electrum-XZC": "https://github.com/zcoinofficial/electrum-xzc", + "Znode Tool": "https://github.com/yura-pakhuchiy/znode-tool" + } + }, + "btc:ZEC": { + "connect": true, + "electrum": null, + "trezor1": "1.6.2", + "trezor2": "2.0.7", + "webwallet": true + }, + "btc:ZEN": { + "connect": null, + "electrum": null, + "trezor1": null, + "trezor2": "2.0.8", + "webwallet": null + }, + "btc:tDASH": { + "connect": null, + "electrum": null, + "trezor1": "1.6.2", + "trezor2": null, + "webwallet": null + }, + "btc:tGRS": { + "connect": null, + "electrum": null, + "trezor1": "1.6.2", + "trezor2": "2.0.8", + "webwallet": true + }, + "btc:tXZC": { + "connect": null, + "electrum": null, + "trezor1": "1.6.2", + "trezor2": "2.0.7", + "webwallet": null + }, + "network:LSK": { + "trezor1": null, + "trezor2": "2.0.7", + "connect": null, + "webwallet": null + }, + "network:XLM": { + "trezor1": "soon", + "trezor2": "soon", + "connect": null, + "webwallet": null + }, + "network:XTZ": { + "trezor1": null, + "trezor2": "soon", + "connect": null, + "webwallet": null + }, + "network:ADA": { + "trezor1": null, + "trezor2": "soon", + "connect": null, + "webwallet": null + }, + "network:XMR": { + "trezor1": null, + "trezor2": "soon", + "connect": null, + "webwallet": null + }, + "network:XRP": { + "trezor1": null, + "trezor2": "soon", + "connect": null, + "webwallet": null + } } From cebeb81e8c944bea23f64dc7f9b2b5dd30e890a4 Mon Sep 17 00:00:00 2001 From: matejcik Date: Fri, 20 Jul 2018 16:40:20 +0200 Subject: [PATCH 454/767] defs: update and tweak json data, add others.json for Lisk, Stellar etc --- defs/coins_details.override.json | 8 +++++ defs/ethereum/networks.json | 2 +- defs/nem/nem_mosaics.json | 62 +++++++++++++++++++++++++------- defs/others.json | 47 ++++++++++++++++++++++++ 4 files changed, 105 insertions(+), 14 deletions(-) create mode 100644 defs/coins_details.override.json create mode 100644 defs/others.json diff --git a/defs/coins_details.override.json b/defs/coins_details.override.json new file mode 100644 index 000000000..5f0af0da6 --- /dev/null +++ b/defs/coins_details.override.json @@ -0,0 +1,8 @@ +{ + "mosaic:DIMTOK": { + "coinmarketcap_alias": "dimcoin" + }, + "erc20:eth:GNT": { + "coinmarketcap_alias": "golem-network-tokens" + } +} diff --git a/defs/ethereum/networks.json b/defs/ethereum/networks.json index 39be85bf1..396b7a881 100644 --- a/defs/ethereum/networks.json +++ b/defs/ethereum/networks.json @@ -35,7 +35,7 @@ "chain_id": 8, "slip44": 108, "shortcut": "UBQ", - "name": "UBIQ", + "name": "Ubiq", "rskip60": false, "url": "https://ubiqsmart.com" }, diff --git a/defs/nem/nem_mosaics.json b/defs/nem/nem_mosaics.json index 83ec417ce..c4ca8a06f 100644 --- a/defs/nem/nem_mosaics.json +++ b/defs/nem/nem_mosaics.json @@ -1,14 +1,20 @@ [ { - "name": "XEM", - "ticker": " XEM", + "name": "NEM", + "ticker": "XEM", "namespace": "nem", "mosaic": "xem", - "divisibility": 6 + "divisibility": 6, + "links": { + "Homepage": "https://nem.io" + }, + "wallet": { + "Nano Wallet": "https://nem.io/downloads/" + } }, { "name": "DIMCOIN", - "ticker": " DIM", + "ticker": "DIM", "namespace": "dim", "mosaic": "coin", "divisibility": 6, @@ -18,41 +24,65 @@ "levy_mosaic": "coin", "networks": [ 104 - ] + ], + "links": { + "Homepage": "https://www.dimcoin.io" + }, + "wallet": { + "Nano Wallet": "https://nem.io/downloads/" + } }, { "name": "DIM TOKEN", - "ticker": " DIMTOK", + "ticker": "DIMTOK", "namespace": "dim", "mosaic": "token", "divisibility": 6, "networks": [ 104 - ] + ], + "links": { + "Homepage": "https://www.dimcoin.io" + }, + "wallet": { + "Nano Wallet": "https://nem.io/downloads/" + } }, { "name": "Breeze Token", - "ticker": " BREEZE", + "ticker": "BREEZE", "namespace": "breeze", "mosaic": "breeze-token", "divisibility": 0, "networks": [ 104 - ] + ], + "links": { + "Homepage": "https://breeze.chat" + }, + "wallet": { + "Nano Wallet": "https://nem.io/downloads/" + } }, { "name": "PacNEM Game Credits", - "ticker": " PAC:HRT", + "ticker": "PAC:HRT", "namespace": "pacnem", "mosaic": "heart", "divisibility": 0, "networks": [ 104 - ] + ], + "links": { + "Homepage": "https://pacnem.com" + }, + "wallet": { + "Nano Wallet": "https://nem.io/downloads/" + } }, { "name": "PacNEM Score Tokens", - "ticker": " PAC:CHS", + "ticker": "PAC:CHS", "namespace": "pacnem", "mosaic": "cheese", "divisibility": 6, @@ -62,6 +92,12 @@ "levy_mosaic": "xem", "networks": [ 104 - ] + ], + "links": { + "Homepage": "https://pacnem.com" + }, + "wallet": { + "Nano Wallet": "https://nem.io/downloads/" + } } ] diff --git a/defs/others.json b/defs/others.json new file mode 100644 index 000000000..80cd13f0a --- /dev/null +++ b/defs/others.json @@ -0,0 +1,47 @@ +[ + { + "name": "Lisk", + "shortcut": "LSK", + "links": { + "Homepage": "https://lisk.io/" + } + }, + { + "name": "Stellar", + "notes": "In development", + "shortcut": "XLM", + "links": { + "Homepage": "https://www.stellar.org" + } + }, + { + "name": "Monero", + "shortcut": "XMR", + "notes": "In development", + "links": { + "Homepage": "https://getmonero.org" + } + }, + { + "name": "Ripple", + "shortcut": "XRP", + "notes": "In development", + "links": { + "Homepage": "https://ripple.com" + } + }, + { + "name": "Cardano", + "shortcut": "ADA", + "links": { + "Homepage": "https://www.cardano.org" + } + }, + { + "name": "Tezos", + "shortcut": "XTZ", + "links": { + "Homepage": "https://tezos.com" + } + } +] From 288445cecc9e18115aa0e46cb6debfb6f8a13c76 Mon Sep 17 00:00:00 2001 From: matejcik Date: Fri, 20 Jul 2018 16:49:45 +0200 Subject: [PATCH 455/767] tools: unified retrieval of coin data, regenerated coins_details --- defs/coins_details.json | 825 +++++++--------------------------------- tools/coin_defs.py | 404 ++++++++++++++++++++ tools/coins_details.py | 513 ++++++++++++------------- 3 files changed, 786 insertions(+), 956 deletions(-) create mode 100755 tools/coin_defs.py diff --git a/defs/coins_details.json b/defs/coins_details.json index 763c049e9..5d2abd7ea 100644 --- a/defs/coins_details.json +++ b/defs/coins_details.json @@ -11,6 +11,21 @@ "t2_enabled": "soon", "type": "coin" }, + "coin2:CLO": { + "links": { + "Homepage": "https://callisto.network" + }, + "marketcap_usd": 0, + "name": "Callisto", + "shortcut": "CLO", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "coin2:EGEM": { "links": { "Homepage": "https://egem.io" @@ -56,6 +71,21 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "coin2:ESN": { + "links": { + "Homepage": "https://ethersocial.org" + }, + "marketcap_usd": 0, + "name": "Ethersocial Network", + "shortcut": "ESN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "coin2:ETC": { "links": { "Homepage": "https://ethereumclassic.github.io" @@ -91,7 +121,7 @@ "Homepage": "https://ethereumsocial.kr" }, "marketcap_usd": 0, - "name": "EthereumSocial", + "name": "Ethereum Social", "shortcut": "ETSC", "t1_enabled": "yes", "t2_enabled": "yes", @@ -103,7 +133,7 @@ }, "coin2:EXP": { "links": { - "Homepage": "https://www.expanse.tech" + "Homepage": "https://expanse.tech" }, "marketcap_usd": 10593934, "name": "Expanse", @@ -116,11 +146,26 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "coin2:GO": { + "links": { + "Homepage": "https://gochain.io" + }, + "marketcap_usd": 37459560, + "name": "GoChain", + "shortcut": "GO", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "coin2:LSK": { "links": { "Homepage": "https://lisk.io/" }, - "marketcap_usd": 997454377, + "marketcap_usd": 548473107, "name": "Lisk", "shortcut": "LSK", "t1_enabled": "no", @@ -161,18 +206,19 @@ "links": { "Homepage": "https://www.stellar.org" }, - "marketcap_usd": 5331912521, + "marketcap_usd": 5315301581, "name": "Stellar", "notes": "In development", "shortcut": "XLM", "t1_enabled": "soon", - "t2_enabled": "soon" + "t2_enabled": "soon", + "type": "coin" }, "coin2:XMR": { "links": { "Homepage": "https://getmonero.org" }, - "marketcap_usd": 2831629582, + "marketcap_usd": 2215103721, "name": "Monero", "notes": "In development", "shortcut": "XMR", @@ -184,7 +230,7 @@ "links": { "Homepage": "https://ripple.com" }, - "marketcap_usd": 24313181966, + "marketcap_usd": 18016097427, "name": "Ripple", "notes": "In development", "shortcut": "XRP", @@ -203,10 +249,58 @@ "t2_enabled": "soon", "type": "coin" }, + "coin2:tETC": { + "hidden": 1, + "links": { + "Homepage": "https://ethereumclassic.github.io" + }, + "marketcap_usd": 0, + "name": "Ethereum Classic Testnet", + "shortcut": "tETC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "coin2:tETH": { + "hidden": 1, + "links": { + "Homepage": "https://www.ethereum.org" + }, + "marketcap_usd": 0, + "name": "Ethereum Testnet Kovan", + "shortcut": "tETH", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "coin2:tRSK": { + "hidden": 1, + "links": { + "Homepage": "https://www.rsk.co" + }, + "marketcap_usd": 0, + "name": "RSK Testnet", + "shortcut": "tRSK", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "coin:BCH": { "links": { "Github": "https://github.com/Bitcoin-ABC/bitcoin-abc", - "Homepage": "https://www.bitcoincash.org/" + "Homepage": "https://www.bitcoincash.org" }, "marketcap_usd": 13729622285, "name": "Bitcoin Cash", @@ -246,7 +340,9 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": {} + "wallet": { + "BTCP Electrum": "https://github.com/BTCPrivate/electrum-btcp" + } }, "coin:BTG": { "links": { @@ -260,6 +356,7 @@ "t2_enabled": "yes", "type": "coin", "wallet": { + "ElectrumG": "https://github.com/BTCGPU/electrum", "Trezor": "https://wallet.trezor.io" } }, @@ -301,6 +398,7 @@ "t2_enabled": "yes", "type": "coin", "wallet": { + "Dash Electrum": "https://electrum.dash.org", "Trezor": "https://wallet.trezor.io" } }, @@ -320,7 +418,7 @@ "coin:DGB": { "links": { "Github": "https://github.com/digibyte/digibyte", - "Homepage": "https://www.digibyte.co" + "Homepage": "https://digibyte.io" }, "marketcap_usd": 472432594, "name": "DigiByte", @@ -345,7 +443,7 @@ "coin:DOGE": { "links": { "Github": "https://github.com/dogecoin/dogecoin", - "Homepage": "https://dogecoin.com" + "Homepage": "http://dogecoin.com" }, "marketcap_usd": 416955600, "name": "Dogecoin", @@ -360,7 +458,7 @@ "coin:FJC": { "links": { "Github": "https://github.com/fujicoin/fujicoin", - "Homepage": "https://www.fujicoin.org" + "Homepage": "http://fujicoin.org" }, "marketcap_usd": 871352, "name": "Fujicoin", @@ -377,6 +475,7 @@ "Github": "https://github.com/flash-coin", "Homepage": "https://www.flashcoin.io" }, + "marketcap_usd": 6262092, "name": "Flashcoin", "shortcut": "FLASH", "t1_enabled": "no", @@ -414,8 +513,8 @@ }, "coin:KOTO": { "links": { - "Github": "https://github.com/koto-dev/koto", - "Homepage": "https://koto.cash" + "Github": "https://github.com/KotoDevelopers/koto", + "Homepage": "https://ko-to.org" }, "name": "Koto", "shortcut": "KOTO", @@ -524,6 +623,7 @@ "wallet": {} }, "coin:TBTG": { + "hidden": 1, "links": { "Github": "https://github.com/BTCGPU/BTCGPU", "Homepage": "https://bitcoingold.org" @@ -591,7 +691,6 @@ "wallet": {} }, "coin:VIA": { - "hidden": 1, "links": { "Github": "https://github.com/viacoin", "Homepage": "https://viacoin.org" @@ -602,7 +701,9 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": {} + "wallet": { + "Vialectrum": "https://vialectrum.org" + } }, "coin:VTC": { "links": { @@ -651,7 +752,7 @@ "coin:ZEC": { "links": { "Github": "https://github.com/zcash/zcash", - "Homepage": "z.cash" + "Homepage": "https://z.cash" }, "marketcap_usd": 855681961, "name": "Zcash", @@ -751,23 +852,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:etc:PLAY": { - "address": "0x5acE17f87c7391E5792a7683069A8025B83bbd85", - "links": { - "Homepage": "http://smartbillions.com/" - }, - "marketcap_usd": 0, - "name": "Smart Billions", - "network": "etc", - "shortcut": "PLAY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:$FFC": { "address": "0x4E84E9e5fb0A972628Cf4568c403167EF1D40431", "links": { @@ -1404,9 +1488,9 @@ "Homepage": "https://arcade.city" }, "marketcap_usd": 0, - "name": "Arcade", + "name": "ARC", "network": "eth", - "shortcut": "ARCD", + "shortcut": "ARC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -2790,24 +2874,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:CARD": { - "address": "0xB07ec2c28834B889b1CE527Ca0F19364cD38935c", - "links": { - "Github": "https://github.com/cardstack", - "Homepage": "https://cardstack.com" - }, - "marketcap_usd": 0, - "name": "Cardstack Token", - "network": "eth", - "shortcut": "CARD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:CARE": { "address": "0xbF18F246B9301F231e9561B35A3879769BB46375", "links": { @@ -3032,23 +3098,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:CDX": { - "address": "0x6fFF3806Bbac52A20e0d79BC538d527f6a22c96b", - "links": { - "Homepage": "https://commodityadnetwork.com" - }, - "marketcap_usd": 0, - "name": "CDX", - "network": "eth", - "shortcut": "CDX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:CEEK": { "address": "0xb056c38f6b7Dc4064367403E26424CD2c60655e1", "links": { @@ -3432,23 +3481,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:COSS": { - "address": "0x65292EeadF1426Cd2dF1C4793a3d7519f253913b", - "links": { - "Homepage": "https://coss.io" - }, - "marketcap_usd": 10338104, - "name": "Coss Token", - "network": "eth", - "shortcut": "COSS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:COV": { "address": "0xE2FB6529EF566a080e6d23dE0bd351311087D567", "links": { @@ -4206,7 +4238,7 @@ "Homepage": "https://digix.global" }, "marketcap_usd": 2032107, - "name": "DGX", + "name": "Digix Gold Token", "network": "eth", "shortcut": "DGX", "t1_enabled": "yes", @@ -4370,23 +4402,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:DOW": { - "address": "0x76974C7B79dC8a6a109Fd71fd7cEb9E40eff5382", - "links": { - "Homepage": "https://dowcoin.io/" - }, - "marketcap_usd": 0, - "name": "DOW", - "network": "eth", - "shortcut": "DOW", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:DPP": { "address": "0x01b3Ec4aAe1B8729529BEB4965F27d008788B0EB", "links": { @@ -4456,23 +4471,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:DRP": { - "address": "0x2799D90C6d44Cb9Aa5fBC377177F16C33E056b82", - "links": { - "Homepage": "http://drpcoin.com" - }, - "marketcap_usd": 0, - "name": "Dripcoin", - "network": "eth", - "shortcut": "DRP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:DRVH": { "address": "0x62D4c04644314F35868Ba4c65cc27a77681dE7a9", "links": { @@ -4595,24 +4593,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:DUBI": { - "address": "0xD4CffeeF10F60eCA581b5E1146B5Aca4194a4C3b", - "links": { - "Github": "https://github.com/nionis/purpose", - "Homepage": "https://prps.io" - }, - "marketcap_usd": 0, - "name": "Decentralized Universal Basic Income", - "network": "eth", - "shortcut": "DUBI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:Devcon2 Token": { "address": "0xdd94De9cFE063577051A5eb7465D08317d8808B6", "links": { @@ -4749,24 +4729,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:EDU": { - "address": "0x5b26C5D0772E5bbaC8b3182AE9a13f9BB2D03765", - "links": { - "Github": "https://github.com/livecodingtvofficial", - "Homepage": "https://tokensale.liveedu.tv" - }, - "marketcap_usd": 0, - "name": "EDU", - "network": "eth", - "shortcut": "EDU", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:EGT": { "address": "0x8e1b448EC7aDFc7Fa35FC2e885678bD323176E34", "links": { @@ -5017,7 +4979,6 @@ }, "erc20:eth:EOS": { "address": "0x86Fa049857E0209aa7D9e616F7eb3b3B78ECfdb0", - "hidden": 1, "links": { "Homepage": "https://eos.io" }, @@ -5228,12 +5189,10 @@ }, "erc20:eth:E\u20b9": { "address": "0xb67734521eAbBE9C773729dB73E16CC2dfb20A58", - "hidden": 1, "links": { "Github": "https://github.com/eRupee", "Homepage": "https://erupee.wordpress.com" }, - "marketcap_usd": 0, "name": "eRupee", "network": "eth", "shortcut": "E\u20b9", @@ -5331,23 +5290,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:FLMC": { - "address": "0x04cC783b450b8D11F3C7d00DD03fDF7FB51fE9F2", - "links": { - "Homepage": "https://filmscoin.com" - }, - "marketcap_usd": 0, - "name": "Filmscoin", - "network": "eth", - "shortcut": "FLMC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:FLP": { "address": "0x3a1Bda28AdB5B0a812a7CF10A1950c920F79BcD3", "links": { @@ -5504,23 +5446,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:FUCK": { - "address": "0xAb16E0d25c06CB376259cc18C1de4ACA57605589", - "links": { - "Homepage": "http://fucktoken.io" - }, - "marketcap_usd": 0, - "name": "Finally Usable Crypto Karma", - "network": "eth", - "shortcut": "FUCK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:FUEL": { "address": "0xEA38eAa3C86c8F9B751533Ba2E562deb9acDED40", "links": { @@ -5608,24 +5533,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:GANA": { - "address": "0x6754e21b9EAa053c62d7854dD6561ae451B0cBCf", - "links": { - "Github": "https://github.com/GanaProject", - "Homepage": "https://ganacoin.io" - }, - "marketcap_usd": 0, - "name": "GANA", - "network": "eth", - "shortcut": "GANA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:GAVEL": { "address": "0x708876f486e448Ee89eB332bFbC8E593553058b9", "links": { @@ -5977,24 +5884,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:GUP": { - "address": "0xf7B098298f7C69Fc14610bf71d5e02c60792894C", - "links": { - "Github": "https://github.com/Matchpool/", - "Homepage": "https://github.com/Matchpool/" - }, - "marketcap_usd": 0, - "name": "GUP", - "network": "eth", - "shortcut": "GUP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:GVT": { "address": "0x103c3A209da59d3E7C4A89307e66521e081CFDF0", "links": { @@ -6258,24 +6147,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:HOT": { - "address": "0x9AF839687F6C94542ac5ece2e317dAAE355493A1", - "links": { - "Github": "https://github.com/Holo-Host", - "Homepage": "https://thehydrofoundation.com/" - }, - "marketcap_usd": 21011913, - "name": "Hydro Protocol", - "network": "eth", - "shortcut": "HOT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:HST": { "address": "0x554C20B7c486beeE439277b4540A434566dC4C02", "links": { @@ -6349,12 +6220,10 @@ }, "erc20:eth:Hdp.\u0444": { "address": "0x84543F868eC1b1FAC510d49d13C069f64cD2d5f9", - "hidden": 1, "links": { "Github": "https://github.com/HEDPAY", "Homepage": "http://hedpay.com" }, - "marketcap_usd": 0, "name": "HEdpAY", "network": "eth", "shortcut": "Hdp.\u0444", @@ -6812,23 +6681,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:JBX": { - "address": "0x884e3902C4d5cFA86de4aCE7A96AA91EbC25C0Ff", - "links": { - "Homepage": "https://www.jboxcoin.org" - }, - "marketcap_usd": 0, - "name": "JBX", - "network": "eth", - "shortcut": "JBX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:JET": { "address": "0x8727c112C712c4a03371AC87a74dD6aB104Af768", "links": { @@ -6883,9 +6735,8 @@ }, "erc20:eth:JetCoins": { "address": "0x773450335eD4ec3DB45aF74f34F2c85348645D39", - "links": { - "Homepage": "http://www.jetcoins.trade/" - }, + "hidden": 1, + "links": {}, "marketcap_usd": 0, "name": "JetCoins", "network": "eth", @@ -6898,23 +6749,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:KC": { - "address": "0x0D6DD9f68d24EC1d5fE2174f3EC8DAB52B52BaF5", - "links": { - "Homepage": "https://www.kmcc.io" - }, - "marketcap_usd": 0, - "name": "KMCC", - "network": "eth", - "shortcut": "KC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:KEE": { "address": "0x72D32ac1c5E66BfC5b08806271f8eEF915545164", "hidden": 1, @@ -6931,24 +6765,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:KEY": { - "address": "0x4CC19356f2D37338b9802aa8E8fc58B0373296E7", - "links": { - "Github": "https://github.com/bihu-id", - "Homepage": "https://selfkey.org" - }, - "marketcap_usd": 25785161, - "name": "SelfKey", - "network": "eth", - "shortcut": "KEY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:KICK": { "address": "0x27695E09149AdC738A978e9A678F99E4c39e9eb9", "links": { @@ -7108,24 +6924,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:LEMO": { - "address": "0x60C24407d01782C2175D32fe7C8921ed732371D1", - "links": { - "Github": "https://github.com/LemoFoundationLtd", - "Homepage": "http://www.lemochain.com" - }, - "marketcap_usd": 0, - "name": "Lemo", - "network": "eth", - "shortcut": "LEMO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:LEND": { "address": "0x80fB784B7eD66730e8b1DBd9820aFD29931aab03", "hidden": 1, @@ -7684,9 +7482,8 @@ }, "erc20:eth:MCAP": { "address": "0x93E682107d1E9defB0b5ee701C71707a4B2E46Bc", - "links": { - "Homepage": "https://www.mcaplabs.com/" - }, + "hidden": 1, + "links": {}, "marketcap_usd": 352675, "name": "MCAP", "network": "eth", @@ -8482,24 +8279,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:NONE": { - "address": "0x643B6870beabee941B9260a0A878bcF4A61Fb0f1", - "hidden": 1, - "links": { - "Github": "https://github.com/walleth/contracts/tree/master/NoneToken" - }, - "marketcap_usd": 0, - "name": "None", - "network": "eth", - "shortcut": "NONE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:NOX": { "address": "0xeC46f8207D766012454c408De210BCBc2243E71c", "links": { @@ -8674,24 +8453,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:OHNI": { - "address": "0x6f539a9456A5BCb6334A1A41207c3788f5825207", - "links": { - "Github": "ohnicoin", - "Homepage": "http://ohni.us" - }, - "marketcap_usd": 0, - "name": "Ohni", - "network": "eth", - "shortcut": "OHNI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:OJX": { "address": "0xBeef546ac8a4e0a80DC1E2d696968Ef54138f1d4", "links": { @@ -8797,24 +8558,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:OPEN": { - "address": "0x69c4BB240cF05D51eeab6985Bab35527d04a8C64", - "links": { - "Github": "https://github.com/OpenMoneyDigital", - "Homepage": "https://openfuture.io" - }, - "marketcap_usd": 0, - "name": "OPEN", - "network": "eth", - "shortcut": "OPEN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:OPT": { "address": "0x4355fC160f74328f9b383dF2EC589bB3dFd82Ba0", "links": { @@ -9200,23 +8943,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:PLAY": { - "address": "0xE477292f1B3268687A29376116B0ED27A9c76170", - "links": { - "Homepage": "http://www.herocoin.io" - }, - "marketcap_usd": 1954962, - "name": "HeroCoin", - "network": "eth", - "shortcut": "PLAY", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:PLBT": { "address": "0x0AfFa06e7Fbe5bC9a764C979aA66E8256A631f02", "links": { @@ -9510,24 +9236,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:PRPS": { - "address": "0x7641b2Ca9DDD58adDf6e3381c1F994Aac5f1A32f", - "links": { - "Github": "https://github.com/nionis/purpose", - "Homepage": "https://prps.io" - }, - "marketcap_usd": 0, - "name": "Purpose", - "network": "eth", - "shortcut": "PRPS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:PRS": { "address": "0x163733bcc28dbf26B41a8CfA83e369b5B3af741b", "links": { @@ -9915,24 +9623,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:RDN": { - "address": "0x255Aa6DF07540Cb5d3d297f0D0D4D84cb52bc8e6", - "links": { - "Github": "https://github.com/raiden-network/raiden/", - "Homepage": "https://raiden.network" - }, - "marketcap_usd": 0, - "name": "Raiden Network", - "network": "eth", - "shortcut": "RDN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:REA": { "address": "0x767bA2915EC344015a7938E3eEDfeC2785195D05", "links": { @@ -10003,23 +9693,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:REP": { - "address": "0x1985365e9f78359a9B6AD760e32412f4a445E862", - "links": { - "Homepage": "https://augur.net" - }, - "marketcap_usd": 326795700, - "name": "Augur", - "network": "eth", - "shortcut": "REP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:REQ": { "address": "0x8f8221aFbB33998d8584A2B05749bA73c37a938a", "links": { @@ -10229,9 +9902,8 @@ }, "erc20:eth:ROUND": { "address": "0x4993CB95c7443bdC06155c5f5688Be9D8f6999a5", - "links": { - "Homepage": "http://roundcoin.org/" - }, + "hidden": 1, + "links": {}, "marketcap_usd": 0, "name": "ROUND", "network": "eth", @@ -10484,23 +10156,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:SGT": { - "address": "0xd248B0D48E44aaF9c49aea0312be7E13a6dc1468", - "links": { - "Homepage": "https://sgt.selfieyo.com" - }, - "marketcap_usd": 0, - "name": "SGT", - "network": "eth", - "shortcut": "SGT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:SHIT": { "address": "0xEF2E9966eb61BB494E5375d5Df8d67B7dB8A780D", "links": { @@ -10605,24 +10260,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:SKRP": { - "address": "0x6E34d8d84764D40f6D7b39cd569Fd017bF53177D", - "links": { - "Github": "https://github.com/SkrapsIO", - "Homepage": "https://skraps.io" - }, - "marketcap_usd": 0, - "name": "Skraps", - "network": "eth", - "shortcut": "SKRP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:SLT": { "address": "0x7A5fF295Dc8239d5C2374E4D894202aAF029Cab6", "links": { @@ -10675,24 +10312,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:SMT": { - "address": "0x2dCFAAc11c9EebD8C6C42103Fe9e2a6AD237aF27", - "links": { - "Github": "https://github.com/SmartMeshFoundation", - "Homepage": "http://smartnode.org" - }, - "marketcap_usd": 51274091, - "name": "SmartMesh", - "network": "eth", - "shortcut": "SMT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:SNC": { "address": "0xF4134146AF2d511Dd5EA8cDB1C4AC88C57D60404", "links": { @@ -10951,24 +10570,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:SS": { - "address": "0xbbFF862d906E348E9946Bfb2132ecB157Da3D4b4", - "links": { - "Github": "https://github.com/Sharders", - "Homepage": "https://sharder.org" - }, - "marketcap_usd": 6190295, - "name": "Sharder", - "network": "eth", - "shortcut": "SS", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:SSH": { "address": "0x6e2050CBFB3eD8A4d39b64cC9f47E711a03a5a89", "links": { @@ -11697,24 +11298,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:UMKA": { - "address": "0x8e5afc69f6227A3ad75eD346c8723Bc62ce97123", - "links": { - "Github": "https://github.com/UMKAman", - "Homepage": "https://umka.city" - }, - "marketcap_usd": 0, - "name": "UMKA", - "network": "eth", - "shortcut": "UMKA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:UQC": { "address": "0xD01DB73E047855Efb414e6202098C4Be4Cd2423B", "links": { @@ -11955,24 +11538,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:VIBEX": { - "address": "0xe8Ff5C9c75dEb346acAc493C463C8950Be03Dfba", - "links": { - "Github": "https://github.com/amack2u/VibeHub", - "Homepage": "http://vibehub.io" - }, - "marketcap_usd": 0, - "name": "VIBEX", - "network": "eth", - "shortcut": "VIBEX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:VIEW": { "address": "0xF03f8D65BaFA598611C3495124093c56e8F638f0", "links": { @@ -12033,7 +11598,7 @@ "Homepage": "https://vetri.global/" }, "marketcap_usd": 0, - "name": "VLD", + "name": "VETRI", "network": "eth", "shortcut": "VLD", "t1_enabled": "yes", @@ -12218,24 +11783,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:WHO": { - "address": "0xe200641890772FCe8eE6EDc5354cCEa30ac92F49", - "links": { - "Github": "https://github.com/chrisbsd/whohas", - "Homepage": "https://whohas.io" - }, - "marketcap_usd": 0, - "name": "WhoHas", - "network": "eth", - "shortcut": "WHO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:WIC": { "address": "0x62CD07D414Ec50B68C7EcAa863a23d344f2d062f", "links": { @@ -12289,23 +11836,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:WOLK": { - "address": "0x728781E75735dc0962Df3a51d7Ef47E798A7107E", - "links": { - "Homepage": "https://www.wolk.com" - }, - "marketcap_usd": 0, - "name": "Wolk Token", - "network": "eth", - "shortcut": "WOLK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:WORK": { "address": "0xD18e454D844eb0009D32E07A0Cde89E18d64CFb4", "links": { @@ -12741,7 +12271,6 @@ }, "erc20:eth:YUPIE": { "address": "0x0F33bb20a282A7649C7B3AFf644F084a9348e933", - "hidden": 1, "links": { "Github": "https://github.com/crowdholdingico/YupieSmartContract", "Homepage": "https://www.crowdholding.com" @@ -13037,22 +12566,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:kov:GUP": { - "address": "0x3C67f7D4decF7795225f51b54134F81137385f83", - "hidden": 1, - "links": {}, - "marketcap_usd": 0, - "name": "GUP", - "network": "kov", - "shortcut": "GUP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:rin:AETH": { "address": "0x398A7A69f3c59181A1ffe34bed11DCb5DF863A8a", "links": { @@ -13106,41 +12619,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:rin:KC": { - "address": "0x275A5B346599b56917e7B1C9de019DCf9EaD861a", - "links": { - "Homepage": "https://baseblock.io/" - }, - "marketcap_usd": 0, - "name": "Karma Token", - "network": "rin", - "shortcut": "KC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "erc20:rin:NONE": { - "address": "0x6475A7FA6Ed2D5180F0e0a07c2d951D12C0EDB91", - "hidden": 1, - "links": { - "Github": "https://github.com/walleth/contracts/tree/master/NoneToken" - }, - "marketcap_usd": 0, - "name": "None", - "network": "rin", - "shortcut": "NONE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:rin:PPD": { "address": "0x12fE174C097F6B3e876B3b060C9061F4B9dEBB80", "hidden": 1, @@ -13159,23 +12637,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:rin:RDN": { - "address": "0x3615757011112560521536258c1E7325Ae3b48AE", - "links": { - "Homepage": "https://github.com/gnosis/dx-examples-liquidity-bots" - }, - "marketcap_usd": 0, - "name": "Raiden", - "network": "rin", - "shortcut": "RDN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:rin:WALL": { "address": "0x0A057a87CE9C56D7e336B417c79cf30E8d27860B", "links": { @@ -13210,24 +12671,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:rop:NONE": { - "address": "0xFD5a69A1309595FF5121553F52C8A5B2B1B31031", - "hidden": 1, - "links": { - "Github": "https://github.com/walleth/contracts/tree/master/NoneToken" - }, - "marketcap_usd": 0, - "name": "None", - "network": "rop", - "shortcut": "NONE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:ubq:BEER": { "address": "0xFF3bF057ADF3b0E015b6465331a6236e55688274", "hidden": 1, @@ -13398,11 +12841,11 @@ } }, "info": { - "marketcap_usd": 219948273618, - "t1_coins": 690, - "t2_coins": 689, - "total_marketcap_usd": 283970152150, - "updated_at": 1532098768, - "updated_at_readable": "Fri Jul 20 16:59:28 2018" + "marketcap_usd": 219093401682, + "t1_coins": 700, + "t2_coins": 696, + "total_marketcap_usd": 284131879229, + "updated_at": 1532099100, + "updated_at_readable": "Fri Jul 20 17:05:00 2018" } } \ No newline at end of file diff --git a/tools/coin_defs.py b/tools/coin_defs.py new file mode 100755 index 000000000..0f320f430 --- /dev/null +++ b/tools/coin_defs.py @@ -0,0 +1,404 @@ +#!/usr/bin/env python3 +from binascii import unhexlify +from collections import defaultdict, OrderedDict +import re +import os +import json +import glob +import logging + +try: + import requests +except ImportError: + requests = None + +log = logging.getLogger(__name__) + +DEFS_DIR = os.path.abspath( + os.environ.get("DEFS_DIR") or os.path.join(os.path.dirname(__file__), "..", "defs") +) + + +def load_json(*path): + if len(path) == 1 and path[0].startswith("/"): + filename = path[0] + else: + filename = os.path.join(DEFS_DIR, *path) + + with open(filename) as f: + return json.load(f, object_pairs_hook=OrderedDict) + + +# ====== coin validation ====== + + +def check_type(val, types, nullable=False, empty=False, regex=None, choice=None): + # check nullable + if val is None: + if nullable: + return + else: + raise ValueError("Missing required value") + + # check type + if not isinstance(val, types): + raise TypeError("Wrong type (expected: {})".format(types)) + + # check empty + if isinstance(val, (list, dict)) and not empty and not val: + raise ValueError("Empty collection") + + # check regex + if regex is not None: + if types is not str: + raise TypeError("Wrong type for regex check") + if not re.search(regex, val): + raise ValueError("Value does not match regex {}".format(regex)) + + # check choice + if choice is not None and val not in choice: + raise ValueError("Value not allowed, use one of: {}".format(", ".join(choice))) + + +def check_key(key, types, **kwargs): + def do_check(coin): + if not key in coin: + raise KeyError("{}: Missing key".format(key)) + try: + check_type(coin[key], types, **kwargs) + except Exception as e: + raise ValueError("{}: {}".format(key, e)) from e + + return do_check + + +COIN_CHECKS = [ + check_key("coin_name", str, regex=r"^[A-Z]"), + check_key("coin_shortcut", str, regex=r"^t?[A-Z]{3,}$"), + check_key("coin_label", str, regex=r"^[A-Z]"), + check_key("website", str, regex=r"^http.*[^/]$"), + check_key("github", str, regex=r"^https://github.com/.*[^/]$"), + check_key("maintainer", str), + check_key( + "curve_name", str, choice=["secp256k1", "secp256k1_decred", "secp256k1_groestl"] + ), + check_key("address_type", int), + check_key("address_type_p2sh", int), + check_key("maxfee_kb", int), + check_key("minfee_kb", int), + check_key("hash_genesis_block", str, regex=r"^[0-9a-f]{64}$"), + check_key("xprv_magic", int), + check_key("xpub_magic", int), + check_key("xpub_magic_segwit_p2sh", int, nullable=True), + check_key("xpub_magic_segwit_native", int, nullable=True), + check_key("slip44", int), + check_key("segwit", bool), + check_key("decred", bool), + check_key("fork_id", int, nullable=True), + check_key("force_bip143", bool), + check_key("bip115", bool), + check_key("version_group_id", int, nullable=True), + check_key("default_fee_b", dict), + check_key("dust_limit", int), + check_key("blocktime_seconds", int), + check_key("signed_message_header", str), + check_key("address_prefix", str, regex=r":$"), + check_key("min_address_length", int), + check_key("max_address_length", int), + check_key("bech32_prefix", str, nullable=True), + check_key("cashaddr_prefix", str, nullable=True), + check_key("bitcore", list, empty=True), + check_key("blockbook", list, empty=True), +] + + +def validate_coin(coin): + errors = [] + for check in COIN_CHECKS: + try: + check(coin) + except Exception as e: + errors.append(str(e)) + + magics = [ + coin[k] + for k in ( + "xprv_magic", + "xpub_magic", + "xpub_magic_segwit_p2sh", + "xpub_magic_segwit_native", + ) + if coin[k] is not None + ] + # each of those must be unique + # therefore length of list == length of set of unique values + if len(magics) != len(set(magics)): + errors.append("XPUB/XPRV magic numbers must be unique") + + if coin["address_type"] == coin["address_type_p2sh"]: + errors.append("address_type must be distinct from address_type_p2sh") + + if not coin["maxfee_kb"] >= coin["minfee_kb"]: + errors.append("max fee must not be smaller than min fee") + + if not coin["max_address_length"] >= coin["min_address_length"]: + errors.append("max address length must not be smaller than min address length") + + for bc in coin["bitcore"] + coin["blockbook"]: + if bc.endswith("/"): + errors.append("make sure URLs don't end with '/'") + + return errors + + +# ======= Coin json loaders ======= + + +def get_coins(): + coins = [] + for filename in glob.glob(os.path.join(DEFS_DIR, "coins", "*.json")): + coin = load_json(filename) + coin.update( + name=coin["coin_name"], + shortcut=coin["coin_shortcut"], + key="btc:{}".format(coin["coin_shortcut"]), + ) + coins.append(coin) + + return coins + + +def get_ethereum_networks(): + networks = load_json("ethereum", "networks.json") + for network in networks: + network.update(key="eth:{}".format(network["shortcut"])) + return networks + + +def get_erc20_tokens(): + networks = get_ethereum_networks() + tokens = [] + for network in networks: + if network["name"].startswith("Ethereum Testnet "): + idx = len("Ethereum Testnet ") + chain = network["name"][idx : idx + 3] + else: + chain = network["shortcut"] + chain = chain.lower() + if not chain: + continue + + chain_path = os.path.join(DEFS_DIR, "ethereum", "tokens", "tokens", chain) + for filename in glob.glob(os.path.join(chain_path, "*.json")): + token = load_json(filename) + token.update( + chain=chain, + chain_id=network["chain_id"], + address_bytes=unhexlify(token["address"][2:]), + shortcut=token["symbol"], + key="erc20:{}:{}".format(chain, token["symbol"]), + ) + tokens.append(token) + + return tokens + + +def get_nem_mosaics(): + mosaics = load_json("nem", "nem_mosaics.json") + for mosaic in mosaics: + shortcut = mosaic["ticker"].strip() + mosaic.update(shortcut=shortcut, key="nem:{}".format(shortcut)) + return mosaics + + +def get_others(): + others = load_json("others.json") + for other in others: + other.update(key="network:{}".format(other["shortcut"])) + return others + + +# ====== support info ====== + +RELEASES_URL = "https://wallet.trezor.io/data/firmware/{}/releases.json" +ETHEREUM_TOKENS = { + "1": "https://raw.githubusercontent.com/trezor/trezor-mcu/v{}/firmware/ethereum_tokens.c", + "2": "https://raw.githubusercontent.com/trezor/trezor-core/v{}/src/apps/ethereum/tokens.py", +} + +TOKEN_MATCH = { + "1": re.compile(r'\{.*" ([^"]+)".*\},'), + "2": re.compile(r'\(.*["\']([^"\']+)["\'].*\),'), +} + + +def latest_releases(): + if not requests: + raise RuntimeError("requests library is required for getting release info") + + latest = {} + for v in ("1", "2"): + releases = requests.get(RELEASES_URL.format(v)).json() + latest[v] = max(tuple(r["version"]) for r in releases) + return latest + + +def support_info_erc20(coins, versions): + supported_tokens = {} + for trezor, version in versions.items(): + tokens = set() + version_str = ".".join(map(str, version)) + + token_file = requests.get(ETHEREUM_TOKENS[trezor].format(version_str)).text + token_match = TOKEN_MATCH[trezor] + + for line in token_file.split("\n"): + m = token_match.search(line) + if m: + tokens.add(m.group(1)) + + supported_tokens[trezor] = tokens + + support = {} + for coin in coins: + key = coin["key"] + if not key.startswith("erc20:"): + continue + + support[key] = dict( + trezor1="yes" if coin["shortcut"] in supported_tokens["1"] else "soon", + trezor2="yes" if coin["shortcut"] in supported_tokens["2"] else "soon", + ) + + return support + + +def support_info(coins, erc20_versions=None): + support_data = load_json("support.json") + support = {} + for coin in coins: + key = coin["key"] + typ = key.split(":", maxsplit=1)[0] + if key in support_data: + support[key] = support_data[key] + + elif typ in ("nem", "eth"): + support[key] = dict(trezor1="yes", trezor2="yes") + + elif typ == "erc20": + # you must call a separate function to get that + continue + + else: + log.warning("support info missing for {}".format(key)) + support[key] = {} + + if erc20_versions: + erc20 = support_info_erc20(coins, erc20_versions) + erc20.update(support) + return erc20 + else: + return support + + +# ====== data cleanup functions ====== + + +def find_address_collisions(coins): + slip44 = defaultdict(list) + at_p2pkh = defaultdict(list) + at_p2sh = defaultdict(list) + + for name, coin in coins.items(): + s = coin["slip44"] + # ignore m/1 testnets + if not (name.endswith("Testnet") and s == 1): + slip44[s].append(s) + + # skip address types on cashaddr currencies + if coin["cashaddr_prefix"]: + continue + + at_p2pkh[coin["address_type"]].append(name) + at_p2sh[coin["address_type_p2sh"]].append(name) + + def prune(d): + ret = d.copy() + for key in d.keys(): + if len(d[key]) < 2: + del ret[key] + return ret + + return dict( + slip44=prune(slip44), + address_type=prune(at_p2pkh), + address_type_p2sh=prune(at_p2sh), + ) + + +def ensure_mandatory_values(coins): + for coin in coins: + if not all(coin.get(k) for k in ("name", "shortcut", "key")): + raise ValueError(coin) + + +def filter_duplicate_shortcuts(coins): + dup_keys = set() + retained_coins = OrderedDict() + + for coin in coins: + key = coin["shortcut"] + if key in dup_keys: + pass + elif key in retained_coins: + dup_keys.add(key) + del retained_coins[key] + else: + retained_coins[key] = coin + + # modify original list + coins[:] = retained_coins.values() + # return duplicates + return dup_keys + + +def _btc_sort_key(coin): + if coin["name"] in ("Bitcoin", "Testnet"): + return "000000" + coin["name"] + else: + return coin["name"] + + +def get_all(): + all_coins = dict( + btc=get_coins(), + eth=get_ethereum_networks(), + erc20=get_erc20_tokens(), + nem=get_nem_mosaics(), + other=get_others(), + ) + + for k, coins in all_coins.items(): + if k == "btc": + coins.sort(key=_btc_sort_key) + else: + coins.sort(key=lambda c: c["key"].upper()) + + ensure_mandatory_values(coins) + if k != "eth": + dup_keys = filter_duplicate_shortcuts(coins) + if dup_keys: + log.warning( + "{}: removing duplicate symbols: {}".format(k, ", ".join(dup_keys)) + ) + + return all_coins + + +def get_list(): + all_coins = get_all() + return sum(all_coins.values(), []) + + +def get_dict(): + return {coin["key"]: coin for coin in get_list()} diff --git a/tools/coins_details.py b/tools/coins_details.py index 5438f3823..c00111945 100755 --- a/tools/coins_details.py +++ b/tools/coins_details.py @@ -2,360 +2,343 @@ """Fetch information about coins and tokens supported by Trezor and update it in coins_details.json.""" import time import json +import logging import requests -import ethereum_tokens_gen -import build_coins -from distutils.version import LooseVersion +import coin_defs -T1_LATEST='1.6.2' -T2_LATEST='2.0.7' +OPTIONAL_KEYS = ("links", "notes", "wallet") +OVERRIDES = coin_defs.load_json("coins_details.override.json") + +VERSIONS = coin_defs.latest_releases() COINS = {} +log = logging.getLogger(__name__) + + def coinmarketcap_init(): global COINS try: - COINS = json.load(open('coinmarketcap.json', 'r')) + marketcap_json = json.load(open("coinmarketcap.json", "r")) except FileNotFoundError: pass else: - if COINS["1"]["last_updated"] > time.time() - 3600: - print("Using local cache of coinmarketcap") - return + pass + # if COINS["1"]["last_updated"] > time.time() - 3600: + # print("Using local cache of coinmarketcap") + # return + + for coin in marketcap_json.values(): + slug = coin["website_slug"] + market_cap = coin["quotes"]["USD"]["market_cap"] + if market_cap is not None: + COINS[slug] = int(float(market_cap)) + + return print("Updating coins from coinmarketcap") total = None COINS = {} while total is None or len(COINS) < total: - url = 'https://api.coinmarketcap.com/v2/ticker/?start=%d&convert=USD&limit=100' % (len(COINS)) + url = ( + "https://api.coinmarketcap.com/v2/ticker/?start=%d&convert=USD&limit=100" + % (len(COINS) + 1) + ) data = requests.get(url).json() - COINS.update(data['data']) + COINS.update(data["data"]) if total is None: - total = data['metadata']['num_cryptocurrencies'] + total = data["metadata"]["num_cryptocurrencies"] print("Fetched %d of %d coins" % (len(COINS), total)) time.sleep(1) - json.dump(COINS, open('coinmarketcap.json', 'w'), sort_keys=True, indent=4) + json.dump(COINS, open("coinmarketcap.json", "w"), sort_keys=True, indent=4) -def coinmarketcap_info(shortcut): - global COINS - shortcut = shortcut.replace(' ', '-').lower() +def marketcap(coin): + cap = None - for _id in COINS: - coin = COINS[_id] - # print(shortcut, coin['website_slug']) - if shortcut == coin['website_slug']: - # print(coin) - return coin + if "coinmarketcap_alias" in coin: + cap = COINS.get(coin["coinmarketcap_alias"]) + + if not cap: + slug = coin["name"].replace(" ", "-").lower() + cap = COINS.get(slug) + + if not cap: + cap = COINS.get(coin["shortcut"].lower()) + + return cap -def update_marketcap(obj, *shortcuts): - for sym in shortcuts: - try: - obj['marketcap_usd'] = int(float(coinmarketcap_info(sym)['quotes']['USD']['market_cap'])) - return - except: - pass - # print("Marketcap info not found for", shortcut) +def update_marketcap(coins): + for coin in coins.values(): + cap = marketcap(coin) + if cap: + coin["marketcap_usd"] = cap def coinmarketcap_global(): - url = 'https://api.coinmarketcap.com/v2/global' + url = "https://api.coinmarketcap.com/v2/global" ret = requests.get(url) data = ret.json() return data -def set_default(obj, key, default_value): - obj[key] = obj.setdefault(key, default_value) - - def update_info(details): - details['info']['updated_at'] = int(time.time()) - details['info']['updated_at_readable'] = time.asctime() - - details['info']['t1_coins'] = len([True for _, c in details['coins'].items() if c.get('t1_enabled') == 'yes' and not c.get('hidden', False)]) - details['info']['t2_coins'] = len([True for _, c in details['coins'].items() if c.get('t2_enabled') == 'yes' and not c.get('hidden', False)]) + details["info"]["updated_at"] = int(time.time()) + details["info"]["updated_at_readable"] = time.asctime() + + details["info"]["t1_coins"] = len( + [ + True + for _, c in details["coins"].items() + if c.get("t1_enabled") == "yes" and not c.get("hidden", False) + ] + ) + details["info"]["t2_coins"] = len( + [ + True + for _, c in details["coins"].items() + if c.get("t2_enabled") == "yes" and not c.get("hidden", False) + ] + ) try: - details['info']['total_marketcap_usd'] = int(coinmarketcap_global()['data']['quotes']['USD']['total_market_cap']) + details["info"]["total_marketcap_usd"] = int( + coinmarketcap_global()["data"]["quotes"]["USD"]["total_market_cap"] + ) except: pass marketcap = 0 - for k, c in details['coins'].items(): - if c['t1_enabled'] == 'yes' or c['t2_enabled'] == 'yes': - marketcap += details['coins'][k].setdefault('marketcap_usd', 0) - details['info']['marketcap_usd'] = marketcap + for k, c in details["coins"].items(): + if c["t1_enabled"] == "yes" or c["t2_enabled"] == "yes": + marketcap += details["coins"][k].setdefault("marketcap_usd", 0) + details["info"]["marketcap_usd"] = marketcap def check_unsupported(details, prefix, supported): - for k in details['coins'].keys(): + for k in details["coins"].keys(): if not k.startswith(prefix): continue if k not in supported: print("%s not supported by Trezor? (Possible manual entry)" % k) -def update_coins(details): - (coins, _) = build_coins.process(None) - firmware = json.load(open('../defs/support.json', 'r')) - - supported = [] - for key, coin in coins.items(): - - t1_enabled = 'no' - if key in firmware['trezor1']: - if LooseVersion(firmware['trezor1'][key]) <= LooseVersion(T1_LATEST): - t1_enabled = 'yes' - else: - t1_enabled = 'soon' - - t2_enabled = 'no' - if key in firmware['trezor2']: - if LooseVersion(firmware['trezor2'][key]) <= LooseVersion(T2_LATEST): - t2_enabled = 'yes' - else: - t2_enabled = 'soon' - - # print("Updating", coin['coin_label'], coin['coin_shortcut']) - key = "coin:%s" % coin['coin_shortcut'] - supported.append(key) - out = details['coins'].setdefault(key, {}) - out['type'] = 'coin' - out['t1_enabled'] = t1_enabled - out['t2_enabled'] = t2_enabled - - set_default(out, 'shortcut', coin['coin_shortcut']) - set_default(out, 'name', coin['coin_label']) - set_default(out, 'links', {}) - set_default(out['links'], 'Homepage', coin['website']) - set_default(out['links'], 'Github', coin['github']) - set_default(out, 'wallet', {}) - update_marketcap(out, coin.get('coinmarketcap_alias', coin['coin_label'])) - - check_unsupported(details, 'coin:', supported) - - -def update_erc20(details): - networks = [x[0] for x in ethereum_tokens_gen.networks] - - LATEST_T1 = 'https://raw.githubusercontent.com/trezor/trezor-mcu/v%s/firmware/ethereum_tokens.c' % T1_LATEST - LATEST_T2 = 'https://raw.githubusercontent.com/trezor/trezor-core/v%s/src/apps/ethereum/tokens.py' % T2_LATEST +def _is_supported(support, trezor_version): + version = VERSIONS[str(trezor_version)] + nominal = support.get("trezor" + str(trezor_version)) + if nominal is None: + return "no" + elif isinstance(nominal, bool): + return "yes" if nominal else "no" - tokens = ethereum_tokens_gen.get_tokens() - tokens_t1 = requests.get(LATEST_T1).text - tokens_t2 = requests.get(LATEST_T2).text - - supported = [] - for t in tokens: - # print('Updating', t['symbol']) + try: + nominal_version = tuple(map(int, nominal.split("."))) + return "yes" if nominal_version <= version else "soon" + except ValueError: + return nominal + + +def _webwallet_support(coin, support): + """Check the "webwallet" support property. + If set, check that at least one of the backends run on trezor.io. + If yes, assume we support the coin in our wallet. + Otherwise it's probably working with a custom backend, which means don't + link to our wallet. + """ + if not support.get("webwallet"): + return False + return any(".trezor.io" in url for url in coin["blockbook"] + coin["bitcore"]) + + +def update_coins(coins, support_info): + res = {} + for coin in coins: + key = coin["key"] + support = support_info[key] + details = dict( + type="coin", + shortcut=coin["shortcut"], + name=coin["coin_label"], + links=dict(Homepage=coin["website"], Github=coin["github"]), + t1_enabled=_is_supported(support, 1), + t2_enabled=_is_supported(support, 2), + wallet={}, + ) + if _webwallet_support(coin, support): + details["wallet"]["Trezor"] = "https://wallet.trezor.io" + if support.get("other"): + details["wallet"].update(support["other"]) + + # XXX get rid of this in favor of res[key] + res["coin:{}".format(coin["shortcut"])] = details + + return res + + +def update_erc20(coins, support_info): + # TODO skip disabled networks? + res = {} + for coin in coins: + key = coin["key"] + support = support_info[key] + details = dict( + type="erc20", + network=coin["chain"], + address=coin["address"], + shortcut=coin["shortcut"], + name=coin["name"], + links={}, + wallet=dict( + MyCrypto="https://mycrypto.com", + MyEtherWallet="https://www.myetherwallet.com", + ), + t1_enabled=support["trezor1"], + t2_enabled=support["trezor2"], + ) + if coin.get("website"): + details["links"]["Homepage"] = coin["website"] + if coin.get("social", {}).get("github"): + details["links"]["Github"] = coin["social"]["github"] + + res[key] = details + + return res + + +def update_simple(coins, support_info, type): + res = {} + for coin in coins: + key = coin["key"] + support = support_info[key] + + # XXX drop newkey + if type == "mosaic": + newkey = "mosaic:{}".format(coin["shortcut"]) + else: + newkey = "coin2:{}".format(coin["shortcut"]) - if t['chain'] not in networks: - print('Skipping, %s is disabled' % t['chain']) - continue + details = dict( + name=coin["name"], + shortcut=coin["shortcut"], + type=type, + t1_enabled=_is_supported(support, 1), + t2_enabled=_is_supported(support, 2), + ) + for key in OPTIONAL_KEYS: + if key in coin: + details[key] = coin[key] - key = "erc20:%s:%s" % (t['chain'], t['symbol']) - supported.append(key) - out = details['coins'].setdefault(key, {}) - out['type'] = 'erc20' - out['network'] = t['chain'] - out['address'] = t['address'] + res[newkey] = details - set_default(out, 'shortcut', t['symbol']) - set_default(out, 'name', t['name']) - set_default(out, 'links', {}) - set_default(out, 'wallet', {}) + return res - if "\" %s\"" % t['symbol'] in tokens_t1: - out['t1_enabled'] = 'yes' - else: - out['t1_enabled'] = 'soon' - if "'%s'" % t['symbol'] in tokens_t2: - out['t2_enabled'] = 'yes' - else: - out['t2_enabled'] = 'soon' - - out['wallet']['MyCrypto'] = 'https://mycrypto.com' - out['wallet']['MyEtherWallet'] = 'https://www.myetherwallet.com' - - if t.get('website'): - out['links']['Homepage'] = t['website'] - if t.get('social', {}).get('github', None): - out['links']['Github'] = t['social']['github'] - - update_marketcap(out, out.get('coinmarketcap_alias'), t['name'], t['symbol']) - - check_unsupported(details, 'erc20:', supported) - - -def update_ethereum(details): - out = details['coins'].setdefault('coin2:ETH', {}) - out['type'] = 'coin' - set_default(out, 'shortcut', 'ETH') - set_default(out, 'name', 'Ethereum') - set_default(out, 't1_enabled', 'yes') - set_default(out, 't2_enabled', 'yes') - update_marketcap(out, 'ethereum') - - out = details['coins'].setdefault('coin2:ETC', {}) - out['type'] = 'coin' - set_default(out, 'shortcut', 'ETC') - set_default(out, 'name', 'Ethereum Classic') - set_default(out, 't1_enabled', 'yes') - set_default(out, 't2_enabled', 'yes') - update_marketcap(out, 'ethereum-classic') - - out = details['coins'].setdefault('coin2:RSK', {}) - out['type'] = 'coin' - set_default(out, 'shortcut', 'RSK') - set_default(out, 'name', 'Rootstock') - set_default(out, 't1_enabled', 'yes') - set_default(out, 't2_enabled', 'yes') - update_marketcap(out, 'rootstock') - - out = details['coins'].setdefault('coin2:EXP', {}) - out['type'] = 'coin' - set_default(out, 'shortcut', 'EXP') - set_default(out, 'name', 'Expanse') - set_default(out, 't1_enabled', 'yes') - set_default(out, 't2_enabled', 'yes') - update_marketcap(out, 'expanse') - - out = details['coins'].setdefault('coin2:UBQ', {}) - out['type'] = 'coin' - set_default(out, 'shortcut', 'UBQ') - set_default(out, 'name', 'Ubiq') - set_default(out, 't1_enabled', 'yes') - set_default(out, 't2_enabled', 'yes') - update_marketcap(out, 'ubiq') - - out = details['coins'].setdefault('coin2:ELLA', {}) - out['type'] = 'coin' - set_default(out, 'shortcut', 'ELLA') - set_default(out, 'name', 'Ellaism') - set_default(out, 't1_enabled', 'yes') - set_default(out, 't2_enabled', 'yes') - update_marketcap(out, 'ellaism') - - out = details['coins'].setdefault('coin2:EGEM', {}) - out['type'] = 'coin' - set_default(out, 'shortcut', 'EGEM') - set_default(out, 'name', 'EtherGem') - set_default(out, 't1_enabled', 'yes') - set_default(out, 't2_enabled', 'yes') - update_marketcap(out, 'egem') - - out = details['coins'].setdefault('coin2:ETSC', {}) - out['type'] = 'coin' - set_default(out, 'shortcut', 'ETSC') - set_default(out, 'name', 'Ethereum Social') - set_default(out, 't1_enabled', 'yes') - set_default(out, 't2_enabled', 'yes') - update_marketcap(out, 'etsc') - - out = details['coins'].setdefault('coin2:EOSC', {}) - out['type'] = 'coin' - set_default(out, 'shortcut', 'EOSC') - set_default(out, 'name', 'EOS Classic') - set_default(out, 't1_enabled', 'yes') - set_default(out, 't2_enabled', 'yes') - update_marketcap(out, 'eosc') - - out = details['coins'].setdefault('coin2:ADA', {}) - out['type'] = 'coin' - set_default(out, 'shortcut', 'ADA') - set_default(out, 'name', 'Cardano') - set_default(out, 't1_enabled', 'no') - set_default(out, 't2_enabled', 'soon') - update_marketcap(out, 'cardano') - - out = details['coins'].setdefault('coin2:XTZ', {}) - out['type'] = 'coin' - set_default(out, 'shortcut', 'XTZ') - set_default(out, 'name', 'Tezos') - set_default(out, 't1_enabled', 'no') - set_default(out, 't2_enabled', 'soon') - update_marketcap(out, 'tezos') - - -def update_mosaics(details): - d = json.load(open('../defs/nem/nem_mosaics.json')) - supported = [] - for mosaic in d: - # print('Updating', mosaic['name'], mosaic['ticker']) - - key = "mosaic:%s" % mosaic['ticker'].strip() - supported.append(key) - out = details['coins'].setdefault(key, {}) - out['type'] = 'mosaic' - set_default(out, 'shortcut', mosaic['ticker'].strip()) - set_default(out, 'name', mosaic['name']) - set_default(out, 't1_enabled', 'yes') - set_default(out, 't2_enabled', 'yes') - - update_marketcap(out, out.get('coinmarketcap_alias', out['name'])) - - check_unsupported(details, 'mosaic:', supported) +def update_ethereum_networks(coins, support_info): + res = update_simple(coins, support_info, "coin") + for coin in coins: + newkey = "coin2:{}".format(coin["shortcut"]) + res[newkey]["wallet"] = dict( + MyCrypto="https://mycrypto.com", + MyEtherWallet="https://www.myetherwallet.com", + ) + res[newkey]["links"] = dict(Homepage=coin.get("url")) + return res def check_missing_details(details): - for k in details['coins'].keys(): - coin = details['coins'][k] + for k in details["coins"].keys(): + coin = details["coins"][k] hide = False - if 'links' not in coin: + if "links" not in coin: print("%s: Missing links" % k) hide = True - if 'Homepage' not in coin.get('links', {}): + if "Homepage" not in coin.get("links", {}): print("%s: Missing homepage" % k) hide = True - if coin['t1_enabled'] not in ('yes', 'no', 'planned', 'soon'): + if coin["t1_enabled"] not in ("yes", "no", "planned", "soon"): print("%s: Unknown t1_enabled" % k) hide = True - if coin['t2_enabled'] not in ('yes', 'no', 'planned', 'soon'): + if coin["t2_enabled"] not in ("yes", "no", "planned", "soon"): print("%s: Unknown t2_enabled" % k) hide = True - if 'Trezor' in coin.get('wallet', {}) and coin['wallet']['Trezor'] != 'https://wallet.trezor.io': + if ( + "Trezor" in coin.get("wallet", {}) + and coin["wallet"]["Trezor"] != "https://wallet.trezor.io" + ): print("%s: Strange URL for Trezor Wallet" % k) hide = True - if len(coin.get('wallet', {})) == 0: + if len(coin.get("wallet", {})) == 0: print("%s: Missing wallet" % k) + if "Testnet" in coin["name"]: + print("%s: Hiding testnet" % k) + hide = True + if hide: - if coin.get('hidden') != 1: + if coin.get("hidden") != 1: print("%s: HIDING COIN!" % k) # If any of important detail is missing, hide coin from list - coin['hidden'] = 1 + coin["hidden"] = 1 - if not hide and coin.get('hidden'): + if not hide and coin.get("hidden"): print("%s: Details are OK, but coin is still hidden" % k) - for k in details['coins'].keys(): - if details['coins'][k].get('hidden') == 1: + for k in details["coins"].keys(): + if details["coins"][k].get("hidden") == 1: print("%s: Coin is hidden" % k) -if __name__ == '__main__': - try: - details = json.load(open('../defs/coins_details.json', 'r')) - except FileNotFoundError: - details = {'coins': {}, 'info': {}} +def apply_overrides(coins): + for key, override in OVERRIDES.items(): + if key not in coins: + log.warning("override without coin: {}".format(key)) + continue + + def recursive_update(orig, new): + if isinstance(new, dict) and isinstance(orig, dict): + for k, v in new.items(): + orig[k] = recursive_update(orig.get(k), v) + else: + return new + + coin = coins[key] + recursive_update(coin, override) + + +if __name__ == "__main__": + # try: + # details = json.load(open('../defs/coins_details.json', 'r')) + # except FileNotFoundError: + # details = {'coins': {}, 'info': {}} coinmarketcap_init() - update_coins(details) - update_erc20(details) - update_ethereum(details) - update_mosaics(details) + + defs = coin_defs.get_all() + all_coins = sum(defs.values(), []) + support_info = coin_defs.support_info(all_coins, erc20_versions=VERSIONS) + + coins = {} + coins.update(update_coins(defs["btc"], support_info)) + coins.update(update_erc20(defs["erc20"], support_info)) + coins.update(update_ethereum_networks(defs["eth"], support_info)) + coins.update(update_simple(defs["nem"], support_info, "mosaic")) + coins.update(update_simple(defs["other"], support_info, "coin")) + + apply_overrides(coins) + update_marketcap(coins) + + details = dict(coins=coins, info={}) update_info(details) check_missing_details(details) - print(json.dumps(details['info'], sort_keys=True, indent=4)) - json.dump(details, open('../defs/coins_details.json', 'w'), sort_keys=True, indent=4) + print(json.dumps(details["info"], sort_keys=True, indent=4)) + json.dump(details, open("../defs/coins_details.json", "w"), sort_keys=True, indent=4) + From 9e6b3dba5f8ec88474917cb24cf66cd886e24165 Mon Sep 17 00:00:00 2001 From: matejcik Date: Mon, 23 Jul 2018 16:33:00 +0200 Subject: [PATCH 456/767] tools: coin_defs cleanup * btc-like coins are now called `coins`, with key type `coin`, for consistency with names in other tools * `others` are renamed to `misc` and placed in a separate subdir * added many docstrings that explain the behavior * renamed and privatized many functions --- defs/{others.json => misc/misc.json} | 0 defs/support.json | 106 +++++++++++-------------- tools/coin_defs.py | 113 +++++++++++++++++++++------ 3 files changed, 135 insertions(+), 84 deletions(-) rename defs/{others.json => misc/misc.json} (100%) diff --git a/defs/others.json b/defs/misc/misc.json similarity index 100% rename from defs/others.json rename to defs/misc/misc.json diff --git a/defs/support.json b/defs/support.json index 63d5dd5fb..9c297a463 100644 --- a/defs/support.json +++ b/defs/support.json @@ -1,5 +1,5 @@ { - "btc:BCH": { + "coin:BCH": { "trezor1": "1.6.2", "trezor2": "2.0.7", "connect": true, @@ -8,7 +8,7 @@ "Electron Cash": "https://electroncash.org" } }, - "btc:BTC": { + "coin:BTC": { "trezor1": "1.5.2", "trezor2": "2.0.5", "connect": true, @@ -17,7 +17,7 @@ "Electrum": "https://electrum.org" } }, - "btc:BTCP": { + "coin:BTCP": { "trezor1": "1.6.2", "trezor2": "2.0.7", "connect": null, @@ -26,7 +26,7 @@ "BTCP Electrum": "https://github.com/BTCPrivate/electrum-btcp" } }, - "btc:BTG": { + "coin:BTG": { "trezor1": "1.6.2", "trezor2": "2.0.7", "connect": true, @@ -35,7 +35,7 @@ "ElectrumG": "https://github.com/BTCGPU/electrum" } }, - "btc:DASH": { + "coin:DASH": { "trezor1": "1.5.2", "trezor2": "2.0.5", "connect": true, @@ -44,28 +44,25 @@ "Dash Electrum": "https://electrum.dash.org" } }, - "btc:DCR": { - "connect": null, - "electrum": null, + "coin:DCR": { "trezor1": "1.6.2", "trezor2": null, + "connect": null, "webwallet": true }, - "btc:DGB": { - "connect": null, - "electrum": null, + "coin:DGB": { "trezor1": "1.6.0", "trezor2": "2.0.5", + "connect": null, "webwallet": true }, - "btc:DOGE": { - "connect": null, - "electrum": null, + "coin:DOGE": { "trezor1": "1.5.2", "trezor2": "2.0.5", + "connect": null, "webwallet": true }, - "btc:FJC": { + "coin:FJC": { "trezor1": "1.6.1", "trezor2": "2.0.5", "connect": null, @@ -74,7 +71,7 @@ "Electrum-FJC": "http://www.fujicoin.org/downloads.php" } }, - "btc:GRS": { + "coin:GRS": { "trezor1": "1.6.2", "trezor2": "2.0.8", "connect": null, @@ -83,7 +80,7 @@ "Electrum-GRS": "https://www.groestlcoin.org/groestlcoin-electrum-wallet/" } }, - "btc:LTC": { + "coin:LTC": { "trezor1": "1.5.2", "trezor2": "2.0.5", "connect": true, @@ -92,7 +89,7 @@ "Electrum-LTC": "https://electrum-ltc.org" } }, - "btc:MONA": { + "coin:MONA": { "trezor1": "1.6.0", "trezor2": "2.0.5", "connect": null, @@ -101,7 +98,7 @@ "Electrum-MONA": "https://electrum-mona.org" } }, - "btc:NMC": { + "coin:NMC": { "trezor1": "1.5.2", "trezor2": "2.0.5", "connect": null, @@ -110,42 +107,37 @@ "Electrum-NMC": "https://github.com/namecoin/electrum-nmc" } }, - "btc:TAZ": { - "connect": null, - "electrum": null, + "coin:TAZ": { "trezor1": "1.6.2", "trezor2": "2.0.7", + "connect": null, "webwallet": true }, - "btc:TBCH": { - "connect": null, - "electrum": null, + "coin:TBCH": { "trezor1": "1.6.2", "trezor2": "2.0.7", + "connect": null, "webwallet": null }, - "btc:TDCR": { - "connect": null, - "electrum": null, + "coin:TDCR": { "trezor1": "1.6.2", "trezor2": null, + "connect": null, "webwallet": true }, - "btc:TEST": { - "connect": true, - "electrum": null, + "coin:TEST": { "trezor1": "1.5.2", "trezor2": "2.0.5", + "connect": true, "webwallet": true }, - "btc:TLTC": { - "connect": null, - "electrum": null, + "coin:TLTC": { "trezor1": "1.6.2", "trezor2": "2.0.7", + "connect": null, "webwallet": true }, - "btc:VIA": { + "coin:VIA": { "trezor1": "1.6.2", "trezor2": "2.0.7", "connect": null, @@ -154,14 +146,13 @@ "Vialectrum": "https://vialectrum.org" } }, - "btc:VTC": { - "connect": null, - "electrum": null, + "coin:VTC": { "trezor1": "1.6.1", "trezor2": "2.0.5", + "connect": null, "webwallet": true }, - "btc:XZC": { + "coin:XZC": { "trezor1": "1.6.2", "trezor2": "2.0.7", "connect": null, @@ -171,72 +162,67 @@ "Znode Tool": "https://github.com/yura-pakhuchiy/znode-tool" } }, - "btc:ZEC": { - "connect": true, - "electrum": null, + "coin:ZEC": { "trezor1": "1.6.2", "trezor2": "2.0.7", + "connect": true, "webwallet": true }, - "btc:ZEN": { - "connect": null, - "electrum": null, + "coin:ZEN": { "trezor1": null, "trezor2": "2.0.8", + "connect": null, "webwallet": null }, - "btc:tDASH": { - "connect": null, - "electrum": null, + "coin:tDASH": { "trezor1": "1.6.2", "trezor2": null, + "connect": null, "webwallet": null }, - "btc:tGRS": { - "connect": null, - "electrum": null, + "coin:tGRS": { "trezor1": "1.6.2", "trezor2": "2.0.8", + "connect": null, "webwallet": true }, - "btc:tXZC": { - "connect": null, - "electrum": null, + "coin:tXZC": { "trezor1": "1.6.2", "trezor2": "2.0.7", + "connect": null, "webwallet": null }, - "network:LSK": { + "misc:LSK": { "trezor1": null, "trezor2": "2.0.7", "connect": null, "webwallet": null }, - "network:XLM": { + "misc:XLM": { "trezor1": "soon", "trezor2": "soon", "connect": null, "webwallet": null }, - "network:XTZ": { + "misc:XTZ": { "trezor1": null, "trezor2": "soon", "connect": null, "webwallet": null }, - "network:ADA": { + "misc:ADA": { "trezor1": null, "trezor2": "soon", "connect": null, "webwallet": null }, - "network:XMR": { + "misc:XMR": { "trezor1": null, "trezor2": "soon", "connect": null, "webwallet": null }, - "network:XRP": { + "misc:XRP": { "trezor1": null, "trezor2": "soon", "connect": null, diff --git a/tools/coin_defs.py b/tools/coin_defs.py index 0f320f430..cd532d6d0 100755 --- a/tools/coin_defs.py +++ b/tools/coin_defs.py @@ -20,6 +20,7 @@ DEFS_DIR = os.path.abspath( def load_json(*path): + """Convenience function to load a JSON file from DEFS_DIR.""" if len(path) == 1 and path[0].startswith("/"): filename = path[0] else: @@ -72,7 +73,7 @@ def check_key(key, types, **kwargs): return do_check -COIN_CHECKS = [ +BTC_CHECKS = [ check_key("coin_name", str, regex=r"^[A-Z]"), check_key("coin_shortcut", str, regex=r"^t?[A-Z]{3,}$"), check_key("coin_label", str, regex=r"^[A-Z]"), @@ -112,9 +113,9 @@ COIN_CHECKS = [ ] -def validate_coin(coin): +def validate_btc(coin): errors = [] - for check in COIN_CHECKS: + for check in BTC_CHECKS: try: check(coin) except Exception as e: @@ -154,29 +155,32 @@ def validate_coin(coin): # ======= Coin json loaders ======= -def get_coins(): +def _load_btc_coins(): + """Load btc-like coins from `coins/*.json`""" coins = [] for filename in glob.glob(os.path.join(DEFS_DIR, "coins", "*.json")): coin = load_json(filename) coin.update( name=coin["coin_name"], shortcut=coin["coin_shortcut"], - key="btc:{}".format(coin["coin_shortcut"]), + key="coin:{}".format(coin["coin_shortcut"]), ) coins.append(coin) return coins -def get_ethereum_networks(): +def _load_ethereum_networks(): + """Load ethereum networks from `ethereum/networks.json`""" networks = load_json("ethereum", "networks.json") for network in networks: network.update(key="eth:{}".format(network["shortcut"])) return networks -def get_erc20_tokens(): - networks = get_ethereum_networks() +def _load_erc20_tokens(): + """Load ERC20 tokens from `ethereum/tokens` submodule.""" + networks = _load_ethereum_networks() tokens = [] for network in networks: if network["name"].startswith("Ethereum Testnet "): @@ -203,7 +207,8 @@ def get_erc20_tokens(): return tokens -def get_nem_mosaics(): +def _load_nem_mosaics(): + """Loads NEM mosaics from `nem/nem_mosaics.json`""" mosaics = load_json("nem", "nem_mosaics.json") for mosaic in mosaics: shortcut = mosaic["ticker"].strip() @@ -211,10 +216,11 @@ def get_nem_mosaics(): return mosaics -def get_others(): - others = load_json("others.json") +def _load_misc(): + """Loads miscellaneous networks from `misc/misc.json`""" + others = load_json("misc/misc.json") for other in others: - other.update(key="network:{}".format(other["shortcut"])) + other.update(key="misc:{}".format(other["shortcut"])) return others @@ -233,6 +239,7 @@ TOKEN_MATCH = { def latest_releases(): + """Get latest released firmware versions for Trezor 1 and 2""" if not requests: raise RuntimeError("requests library is required for getting release info") @@ -244,6 +251,20 @@ def latest_releases(): def support_info_erc20(coins, versions): + """Generate support info for ERC20 tokens. + + Takes a dict of Trezor versions as returned from `latest_releases` + and a list of coins as returned from `_get_erc20_tokens` and creates + a supportinfo entry for each listed token. + + Support status is determined by downloading and parsing the definition file + from the appropriate firmware version. If a given token is listed, the support + is marked as "yes". If not, support is marked as "soon", assuming that + it will be included in next release. + + This is currently the only way to get the list of supported tokens. We don't want + to track support individually in support.json. + """ supported_tokens = {} for trezor, version in versions.items(): tokens = set() @@ -273,7 +294,31 @@ def support_info_erc20(coins, versions): return support -def support_info(coins, erc20_versions=None): +def support_info(coins, erc20_versions=None, skip_missing=False): + """Generate Trezor support information. + + Takes a dict of coins and generates a support-info entry for each. + The support-info is a dict with a number of known keys: + `trezor1`, `trezor2`, `webwallet`, `connect`. An optional `other` entry + is a dict of name-url pairs for third-party software. + + For btc-like coins and misc networks, this is taken from `support.json`. + For NEM mosaics and ethereum networks, the support is presumed to be "yes" + for both Trezors. Webwallet and Connect info is not filled out. + + ERC20 tokens are ignored by this function, as if `skip_missing` was true + (see below). However, if you pass the optional `erc20_versions` argument, + it will call `support_info_erc20` for you with given versions. + + In all cases, if the coin is explicitly listed in `support.json`, the info + takes precedence over any other source (be it assumed "yes" for nem/eth, + or downloaded info for erc20). + + If `skip_missing` is `True`, coins for which no support information is available + will not be included in the output. Otherwise, an empty dict will be included + and a warning emitted. "No support information" means that the coin is not + listed in `support.json` and we have no heuristic to determine the support. + """ support_data = load_json("support.json") support = {} for coin in coins: @@ -289,7 +334,7 @@ def support_info(coins, erc20_versions=None): # you must call a separate function to get that continue - else: + elif not skip_missing: log.warning("support info missing for {}".format(key)) support[key] = {} @@ -305,6 +350,10 @@ def support_info(coins, erc20_versions=None): def find_address_collisions(coins): + """Detects collisions in: + - SLIP44 path prefixes + - address type numbers, both for p2pkh and p2sh + """ slip44 = defaultdict(list) at_p2pkh = defaultdict(list) at_p2sh = defaultdict(list) @@ -336,13 +385,17 @@ def find_address_collisions(coins): ) -def ensure_mandatory_values(coins): +def _ensure_mandatory_values(coins): + """Checks that every coin has the mandatory fields: name, shortcut, key""" for coin in coins: if not all(coin.get(k) for k in ("name", "shortcut", "key")): raise ValueError(coin) -def filter_duplicate_shortcuts(coins): +def _filter_duplicate_shortcuts(coins): + """Removes coins with identical `shortcut`s. + This is used to drop colliding ERC20 tokens. + """ dup_keys = set() retained_coins = OrderedDict() @@ -370,23 +423,33 @@ def _btc_sort_key(coin): def get_all(): + """Returns all definition as dict organized by coin type. + `coins` for btc-like coins, + `eth` for ethereum networks, + `erc20` for ERC20 tokens, + `nem` for NEM mosaics, + `misc` for other networks. + """ all_coins = dict( - btc=get_coins(), - eth=get_ethereum_networks(), - erc20=get_erc20_tokens(), - nem=get_nem_mosaics(), - other=get_others(), + coins=_load_btc_coins(), + eth=_load_ethereum_networks(), + erc20=_load_erc20_tokens(), + nem=_load_nem_mosaics(), + misc=_load_misc(), ) for k, coins in all_coins.items(): - if k == "btc": + if k == "coins": coins.sort(key=_btc_sort_key) + elif k == "nem": + # do not sort nem + pass else: coins.sort(key=lambda c: c["key"].upper()) - ensure_mandatory_values(coins) + _ensure_mandatory_values(coins) if k != "eth": - dup_keys = filter_duplicate_shortcuts(coins) + dup_keys = _filter_duplicate_shortcuts(coins) if dup_keys: log.warning( "{}: removing duplicate symbols: {}".format(k, ", ".join(dup_keys)) @@ -396,9 +459,11 @@ def get_all(): def get_list(): + """Return all definitions as a single list of coins.""" all_coins = get_all() return sum(all_coins.values(), []) def get_dict(): + """Return all definitions as a dict indexed by coin keys.""" return {coin["key"]: coin for coin in get_list()} From 3630571a0aca6faa836d35bd2c9afe7e6b242f57 Mon Sep 17 00:00:00 2001 From: matejcik Date: Tue, 24 Jul 2018 13:54:03 +0200 Subject: [PATCH 457/767] tools: add support data and validation to coin_defs also add checks that were not brought over from build_coins.py --- tools/coin_defs.py | 48 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 38 insertions(+), 10 deletions(-) diff --git a/tools/coin_defs.py b/tools/coin_defs.py index cd532d6d0..52e7e3637 100755 --- a/tools/coin_defs.py +++ b/tools/coin_defs.py @@ -61,10 +61,13 @@ def check_type(val, types, nullable=False, empty=False, regex=None, choice=None) raise ValueError("Value not allowed, use one of: {}".format(", ".join(choice))) -def check_key(key, types, **kwargs): +def check_key(key, types, optional=False, **kwargs): def do_check(coin): - if not key in coin: - raise KeyError("{}: Missing key".format(key)) + if key not in coin: + if optional: + return + else: + raise KeyError("{}: Missing key".format(key)) try: check_type(coin[key], types, **kwargs) except Exception as e: @@ -103,11 +106,11 @@ BTC_CHECKS = [ check_key("dust_limit", int), check_key("blocktime_seconds", int), check_key("signed_message_header", str), - check_key("address_prefix", str, regex=r":$"), + check_key("uri_prefix", str, regex=r"^[a-z]+$"), check_key("min_address_length", int), check_key("max_address_length", int), - check_key("bech32_prefix", str, nullable=True), - check_key("cashaddr_prefix", str, nullable=True), + check_key("bech32_prefix", str, regex=r"^[a-z]+$", nullable=True), + check_key("cashaddr_prefix", str, regex=r"^[a-z]+$", nullable=True), check_key("bitcore", list, empty=True), check_key("blockbook", list, empty=True), ] @@ -152,6 +155,25 @@ def validate_btc(coin): return errors +SUPPORT_CHECKS = [ + check_key("trezor1", str, nullable=True, regex=r"^soon|planned|\d+\.\d+\.\d+$"), + check_key("trezor2", str, nullable=True, regex=r"^soon|planned|\d+\.\d+\.\d+$"), + check_key("webwallet", bool, nullable=True), + check_key("connect", bool, nullable=True), + check_key("other", dict, optional=True, empty=False), +] + + +def validate_support(support): + errors = [] + for check in SUPPORT_CHECKS: + try: + check(support) + except Exception as e: + errors.append(str(e)) + return errors + + # ======= Coin json loaders ======= @@ -238,6 +260,11 @@ TOKEN_MATCH = { } +def get_support_data(): + """Get raw support data from `support.json`.""" + return load_json("support.json") + + def latest_releases(): """Get latest released firmware versions for Trezor 1 and 2""" if not requests: @@ -319,7 +346,7 @@ def support_info(coins, erc20_versions=None, skip_missing=False): and a warning emitted. "No support information" means that the coin is not listed in `support.json` and we have no heuristic to determine the support. """ - support_data = load_json("support.json") + support_data = get_support_data() support = {} for coin in coins: key = coin["key"] @@ -358,11 +385,12 @@ def find_address_collisions(coins): at_p2pkh = defaultdict(list) at_p2sh = defaultdict(list) - for name, coin in coins.items(): + for coin in coins: + name = coin["name"] s = coin["slip44"] # ignore m/1 testnets if not (name.endswith("Testnet") and s == 1): - slip44[s].append(s) + slip44[s].append(name) # skip address types on cashaddr currencies if coin["cashaddr_prefix"]: @@ -373,7 +401,7 @@ def find_address_collisions(coins): def prune(d): ret = d.copy() - for key in d.keys(): + for key in d: if len(d[key]) < 2: del ret[key] return ret From cd5538bcc5076a79d9bc63d13de3d1606ca5a6c2 Mon Sep 17 00:00:00 2001 From: matejcik Date: Fri, 27 Jul 2018 12:01:21 +0200 Subject: [PATCH 458/767] defs: add support for dogecoin and vertcoin (port of #176) --- defs/support.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/defs/support.json b/defs/support.json index 9c297a463..1a81a0fe4 100644 --- a/defs/support.json +++ b/defs/support.json @@ -59,7 +59,7 @@ "coin:DOGE": { "trezor1": "1.5.2", "trezor2": "2.0.5", - "connect": null, + "connect": true, "webwallet": true }, "coin:FJC": { @@ -149,7 +149,7 @@ "coin:VTC": { "trezor1": "1.6.1", "trezor2": "2.0.5", - "connect": null, + "connect": true, "webwallet": true }, "coin:XZC": { From 44240c95033b645468b100a9af327031ff2b2421 Mon Sep 17 00:00:00 2001 From: matejcik Date: Fri, 27 Jul 2018 12:05:09 +0200 Subject: [PATCH 459/767] tools: add support tool and coin_gen tool support.py - query and modify info in support.json coin_gen.py - generate coins_json, render mako templates, run checks --- tools/coin_gen.py | 264 ++++++++++++++++++++++++++++++++++++++++++++++ tools/support.py | 171 ++++++++++++++++++++++++++++++ 2 files changed, 435 insertions(+) create mode 100755 tools/coin_gen.py create mode 100755 tools/support.py diff --git a/tools/coin_gen.py b/tools/coin_gen.py new file mode 100755 index 000000000..04f775399 --- /dev/null +++ b/tools/coin_gen.py @@ -0,0 +1,264 @@ +#!/usr/bin/env python3 +import io +import json +import re +import sys +import os +import glob + +import click + +import coin_defs + +try: + import mako + import mako.template + from munch import Munch + + CAN_RENDER = True +except ImportError: + CAN_RENDER = False + +try: + import requests +except ImportError: + requests = None + +try: + from hashlib import sha256 + import ed25519 + from PIL import Image + from trezorlib.protobuf import dump_message + from coindef import CoinDef + + CAN_BUILD_DEFS = True +except ImportError: + CAN_BUILD_DEFS = False + + +# ======= Jinja2 management ====== + + +def c_str_filter(b): + if b is None: + return "NULL" + + def hexescape(c): + return r"\x{:02x}".format(c) + + if isinstance(b, bytes): + return '"' + "".join(map(hexescape, b)) + '"' + else: + return json.dumps(b) + + +def ascii_filter(s): + return re.sub("[^ -\x7e]", "_", s) + + +MAKO_FILTERS = {"c_str": c_str_filter, "ascii": ascii_filter} + + +def render_file(filename, coins, support_info): + """Opens `filename.j2`, renders the template and stores the result in `filename`.""" + template = mako.template.Template(filename=filename + ".mako") + result = template.render(support_info=support_info, **coins, **MAKO_FILTERS) + with open(filename, "w") as f: + f.write(result) + + +# ====== validation functions ====== + + +def check_support(defs, support_data): + check_passed = True + + for key, support in support_data.items(): + errors = coin_defs.validate_support(support) + if errors: + check_passed = False + print("ERR:", "invalid definition for", key) + print("\n".join(errors)) + + expected_coins = set(coin["key"] for coin in defs["coins"] + defs["misc"]) + + # detect missing support info for expected + for coin in expected_coins: + if coin not in support_data: + check_passed = False + print("ERR: Missing support info for", coin) + + # detect non-matching support info + coin_list = sum(defs.values(), []) + coin_set = set(coin["key"] for coin in coin_list) + for key in support_data: + # detect non-matching support info + if key not in coin_set: + check_passed = False + print("ERR: Support info found for unknown coin", key) + + # detect override - info only, doesn't fail check + if key not in expected_coins: + print("INFO: Override present for coin", key) + + return check_passed + + +def check_btc(coins): + check_passed = True + + for coin in coins: + errors = coin_defs.validate_btc(coin) + if errors: + check_passed = False + print("ERR:", "invalid definition for", coin["name"]) + print("\n".join(errors)) + + collisions = coin_defs.find_address_collisions(coins) + # warning only + for key, dups in collisions.items(): + if dups: + print("WARN: collisions found in", key) + for k, v in dups.items(): + print("-", k, ":", ", ".join(map(str, v))) + + return check_passed + + +def check_backends(coins): + check_passed = True + for coin in coins: + genesis_block = coin.get("hash_genesis_block") + if not genesis_block: + continue + backends = coin.get("blockbook", []) + coin.get("bitcore", []) + for backend in backends: + print("checking", backend, "... ", end="", flush=True) + try: + j = requests.get(backend + "/block-index/0").json() + if j["blockHash"] != genesis_block: + raise RuntimeError("genesis block mismatch") + except Exception as e: + print(e) + check_passed = False + else: + print("OK") + return check_passed + + +# ====== click command handlers ====== + + +@click.group() +def cli(): + pass + + +@cli.command() +@click.option( + "--backend-check/--no-backend-check", + "-b", + help="Also check blockbook/bitcore responses", +) +def check(backend_check): + """Validate coin definitions. + + Checks that every btc-like coin is properly filled out, reports address collisions + and missing support information. + """ + if backend_check and requests is None: + raise click.ClickException("You must install requests for backend check") + + defs = coin_defs.get_all() + all_checks_passed = True + + print("Checking BTC-like coins...") + if not check_btc(defs["coins"]): + all_checks_passed = False + + print("Checking support data...") + if not check_support(defs, coin_defs.get_support_data()): + all_checks_passed = False + + if backend_check: + print("Checking backend responses...") + if not check_backends(defs["coins"]): + all_checks_passed = False + + if not all_checks_passed: + print("Some checks failed.") + sys.exit(1) + else: + print("Everything is OK.") + + +@cli.command() +@click.option("-o", "--outfile", type=click.File(mode="w"), default="./coins.json") +def coins_json(outfile): + """Generate coins.json for consumption in python-trezor and Connect/Wallet""" + defs = coin_defs.get_all() + coins = defs["coins"] + support_info = coin_defs.support_info(coins) + by_name = {} + for coin in coins: + coin["support"] = support_info[coin["key"]] + by_name[coin["name"]] = coin + + with outfile: + json.dump(by_name, outfile, indent=4, sort_keys=True) + + +@cli.command() +@click.argument("paths", metavar="[path]...", nargs=-1) +def render(paths): + """Generate source code from Jinja2 templates. + + For every "foo.bar.j2" filename passed, runs the template and + saves the result as "foo.bar". + + For every directory name passed, processes all ".j2" files found + in that directory. + + If no arguments are given, processes the current directory. + """ + if not CAN_RENDER: + raise click.ClickException("Please install 'mako' and 'munch'") + + if not paths: + paths = ["."] + + files = [] + for path in paths: + if not os.path.exists(path): + click.echo("Path {} does not exist".format(path)) + elif os.path.isdir(path): + files += glob.glob(os.path.join(path, "*.mako")) + else: + files.append(path) + + defs = coin_defs.get_all() + all_coins = sum(defs.values(), []) + versions = coin_defs.latest_releases() + support_info = coin_defs.support_info(all_coins, erc20_versions=versions) + + # munch dicts - make them attribute-accessable + for key, value in defs.items(): + defs[key] = [Munch(coin) for coin in value] + for key, value in support_info.items(): + support_info[key] = Munch(value) + + for file in files: + if not file.endswith(".mako"): + click.echo("File {} does not end with .mako".format(file)) + else: + target = file[: -len(".mako")] + click.echo("Rendering {} => {}".format(file, target)) + try: + render_file(target, defs, support_info) + except Exception as e: + click.echo("Error occured: {}".format(e)) + raise + + +if __name__ == "__main__": + cli() diff --git a/tools/support.py b/tools/support.py new file mode 100755 index 000000000..c9659df39 --- /dev/null +++ b/tools/support.py @@ -0,0 +1,171 @@ +#!/usr/bin/env python3 +import os +import sys +import click +import coin_defs +import json + +SUPPORT_INFO = coin_defs.get_support_data() + +MANDATORY_ENTRIES = ("trezor1", "trezor2", "connect", "webwallet") + + +def update_support(key, entry, value): + # template entry + support = {k: None for k in MANDATORY_ENTRIES} + support["other"] = {} + # fill out actual support info, if it exists + support.update(SUPPORT_INFO.get(key, {})) + + if entry in MANDATORY_ENTRIES: + if entry.startswith("trezor") and not value: + value = None + support[entry] = value + else: + support["other"][entry] = value + + for k in support["other"]: + if not support["other"][k]: + del support["other"][k] + + if not support["other"]: + del support["other"] + + SUPPORT_INFO[key] = support + return support + + +def write_support_info(): + with open(os.path.join(coin_defs.DEFS_DIR, "support.json"), "w") as f: + json.dump(SUPPORT_INFO, f, indent=4) + f.write("\n") + + +@click.group() +def cli(): + pass + + +@cli.command() +def rewrite(): + """Regenerate support.json to match predefined structure and field order.""" + for key, coin in SUPPORT_INFO.items(): + d = {"trezor1": None, "trezor2": None, "connect": None, "webwallet": None} + d.update(coin) + if "electrum" in d: + del d["electrum"] + if "other" in d and not d["other"]: + del d["other"] + SUPPORT_INFO[key] = d + + write_support_info() + + +@cli.command() +def check(): + """Check validity of support information. + + The relevant code is actually part of 'coin_gen.py'. It can be invoked from + here for convenience and because it makes sense. But it's preferable to run it + as part of 'coin_gen.py check'. + """ + defs = coin_defs.get_all() + support_data = coin_defs.get_support_data() + import coin_gen + + if not coin_gen.check_support(defs, support_data): + sys.exit(1) + + +@cli.command() +@click.argument("keyword", nargs=-1) +def show(keyword): + """Show support status of specified coins. + + Keywords match against key, name or shortcut (ticker symbol) of coin. If no + keywords are provided, show all supported coins. + + Only coins listed in support.json are considered "supported". That means that + Ethereum networks, ERC20 tokens and NEM mosaics will probably show up wrong. + """ + defs = coin_defs.get_list() + + if keyword: + for coin in defs: + key = coin["key"] + name, shortcut = coin["name"], coin["shortcut"] + for kw in keyword: + kwl = kw.lower() + if kwl == key.lower() or kwl in name.lower() or kwl == shortcut.lower(): + print("{} - {} ({})".format(key, name, shortcut), end=" - ") + if key in SUPPORT_INFO: + print(json.dumps(SUPPORT_INFO[key], indent=4)) + else: + print("no support info") + break + + else: + print(json.dumps(SUPPORT_INFO, indent=4)) + + +@cli.command() +@click.argument("support_key", required=True) +@click.argument( + "entries", nargs=-1, required=True, metavar="entry=value [entry=value]..." +) +@click.option( + "-n", + "--dry-run", + is_flag=True, + help="Only print updated support info, do not write back", +) +def set(support_key, entries, dry_run): + """Set a support info variable. + + Examples: + support.py coin:BTC trezor1=soon trezor2=2.0.7 webwallet=yes connect=no + support.py coin:LTC trezor1=yes "Electrum-LTC=https://electrum-ltc.org" Electrum= + + Setting a variable to "yes", "true" or "1" sets support to true. + Setting a variable to "no", "false" or "0" sets support to false. + (or null, in case of trezor1/2) + Setting variable to empty ("trezor1=") will set to null, or clear the entry. + Setting to "soon", "planned", "2.1.1" etc. will set the literal string. + + Entries that are always present: + trezor1 trezor2 webwallet connect + + Entries with other names will be inserted into "others". This is a good place + to store links to 3rd party software, such as Electrum forks or claim tools. + """ + coins = coin_defs.get_dict() + if support_key not in coins: + click.echo("Failed to find key {}".format(support_key)) + click.echo("Use 'support.py show' to search for the right one.") + sys.exit(1) + + print("{} - {}".format(support_key, coins[support_key]["name"])) + + for entry in entries: + try: + key, value = entry.split("=", maxsplit=1) + except ValueError: + click.echo("Invalid entry: {}".format(entry)) + sys.exit(2) + + if value in ("yes", "true", "1"): + value = True + elif value in ("no", "false", "2"): + value = False + elif value == "": + value = None + + support = update_support(support_key, key, value) + + print(json.dumps(support, indent=4)) + if not dry_run: + write_support_info() + + +if __name__ == "__main__": + cli() From 1e032d4da572b935df7ea0b99ba1045555f16bdf Mon Sep 17 00:00:00 2001 From: matejcik Date: Fri, 27 Jul 2018 12:04:44 +0200 Subject: [PATCH 460/767] tools: clean up and update coins_details.py, regenerate json --- defs/coins_details.json | 2298 ++++++++++++++++++++------------------- tools/coins_details.py | 223 ++-- 2 files changed, 1272 insertions(+), 1249 deletions(-) diff --git a/defs/coins_details.json b/defs/coins_details.json index 5d2abd7ea..5b530ff7d 100644 --- a/defs/coins_details.json +++ b/defs/coins_details.json @@ -1,308 +1,11 @@ { "coins": { - "coin2:ADA": { - "links": { - "Homepage": "https://www.cardano.org" - }, - "marketcap_usd": 4482686788, - "name": "Cardano", - "shortcut": "ADA", - "t1_enabled": "no", - "t2_enabled": "soon", - "type": "coin" - }, - "coin2:CLO": { - "links": { - "Homepage": "https://callisto.network" - }, - "marketcap_usd": 0, - "name": "Callisto", - "shortcut": "CLO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "coin2:EGEM": { - "links": { - "Homepage": "https://egem.io" - }, - "marketcap_usd": 0, - "name": "EtherGem", - "shortcut": "EGEM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "coin2:ELLA": { - "links": { - "Homepage": "https://ellaism.org" - }, - "marketcap_usd": 674279, - "name": "Ellaism", - "shortcut": "ELLA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "coin2:EOSC": { - "links": { - "Homepage": "https://eos-classic.io" - }, - "marketcap_usd": 0, - "name": "EOS Classic", - "shortcut": "EOSC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "coin2:ESN": { - "links": { - "Homepage": "https://ethersocial.org" - }, - "marketcap_usd": 0, - "name": "Ethersocial Network", - "shortcut": "ESN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "coin2:ETC": { - "links": { - "Homepage": "https://ethereumclassic.github.io" - }, - "marketcap_usd": 1726360707, - "name": "Ethereum Classic", - "shortcut": "ETC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "coin2:ETH": { - "links": { - "Homepage": "https://www.ethereum.org" - }, - "marketcap_usd": 46802391646, - "name": "Ethereum", - "shortcut": "ETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "coin2:ETSC": { - "links": { - "Homepage": "https://ethereumsocial.kr" - }, - "marketcap_usd": 0, - "name": "Ethereum Social", - "shortcut": "ETSC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "coin2:EXP": { - "links": { - "Homepage": "https://expanse.tech" - }, - "marketcap_usd": 10593934, - "name": "Expanse", - "shortcut": "EXP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "coin2:GO": { - "links": { - "Homepage": "https://gochain.io" - }, - "marketcap_usd": 37459560, - "name": "GoChain", - "shortcut": "GO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "coin2:LSK": { - "links": { - "Homepage": "https://lisk.io/" - }, - "marketcap_usd": 548473107, - "name": "Lisk", - "shortcut": "LSK", - "t1_enabled": "no", - "t2_enabled": "yes", - "type": "coin" - }, - "coin2:RSK": { - "links": { - "Homepage": "https://www.rsk.co" - }, - "marketcap_usd": 0, - "name": "RSK", - "shortcut": "RSK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "coin2:UBQ": { - "links": { - "Homepage": "https://ubiqsmart.com" - }, - "marketcap_usd": 46821303, - "name": "Ubiq", - "shortcut": "UBQ", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "coin2:XLM": { - "links": { - "Homepage": "https://www.stellar.org" - }, - "marketcap_usd": 5315301581, - "name": "Stellar", - "notes": "In development", - "shortcut": "XLM", - "t1_enabled": "soon", - "t2_enabled": "soon", - "type": "coin" - }, - "coin2:XMR": { - "links": { - "Homepage": "https://getmonero.org" - }, - "marketcap_usd": 2215103721, - "name": "Monero", - "notes": "In development", - "shortcut": "XMR", - "t1_enabled": "no", - "t2_enabled": "soon", - "type": "coin" - }, - "coin2:XRP": { - "links": { - "Homepage": "https://ripple.com" - }, - "marketcap_usd": 18016097427, - "name": "Ripple", - "notes": "In development", - "shortcut": "XRP", - "t1_enabled": "no", - "t2_enabled": "soon", - "type": "coin" - }, - "coin2:XTZ": { - "links": { - "Homepage": "https://tezos.com" - }, - "marketcap_usd": 1300463940, - "name": "Tezos", - "shortcut": "XTZ", - "t1_enabled": "no", - "t2_enabled": "soon", - "type": "coin" - }, - "coin2:tETC": { - "hidden": 1, - "links": { - "Homepage": "https://ethereumclassic.github.io" - }, - "marketcap_usd": 0, - "name": "Ethereum Classic Testnet", - "shortcut": "tETC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "coin2:tETH": { - "hidden": 1, - "links": { - "Homepage": "https://www.ethereum.org" - }, - "marketcap_usd": 0, - "name": "Ethereum Testnet Kovan", - "shortcut": "tETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "coin2:tRSK": { - "hidden": 1, - "links": { - "Homepage": "https://www.rsk.co" - }, - "marketcap_usd": 0, - "name": "RSK Testnet", - "shortcut": "tRSK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "coin:BCH": { "links": { "Github": "https://github.com/Bitcoin-ABC/bitcoin-abc", "Homepage": "https://www.bitcoincash.org" }, - "marketcap_usd": 13729622285, + "marketcap_usd": 13742785799, "name": "Bitcoin Cash", "shortcut": "BCH", "t1_enabled": "yes", @@ -318,7 +21,7 @@ "Github": "https://github.com/bitcoin/bitcoin", "Homepage": "https://bitcoin.org" }, - "marketcap_usd": 128315021625, + "marketcap_usd": 136203971319, "name": "Bitcoin", "shortcut": "BTC", "t1_enabled": "yes", @@ -334,7 +37,7 @@ "Github": "https://github.com/BTCPrivate/BitcoinPrivate", "Homepage": "https://btcprivate.org" }, - "marketcap_usd": 141676432, + "marketcap_usd": 149954620, "name": "Bitcoin Private", "shortcut": "BTCP", "t1_enabled": "yes", @@ -349,7 +52,7 @@ "Github": "https://github.com/BTCGPU/BTCGPU", "Homepage": "https://bitcoingold.org" }, - "marketcap_usd": 508396087, + "marketcap_usd": 497959882, "name": "Bitcoin Gold", "shortcut": "BTG", "t1_enabled": "yes", @@ -365,7 +68,7 @@ "Github": "https://github.com/LIMXTEC/BitCore", "Homepage": "https://bitcore.cc" }, - "marketcap_usd": 27337289, + "marketcap_usd": 30064254, "name": "Bitcore", "shortcut": "BTX", "t1_enabled": "no", @@ -378,7 +81,7 @@ "Github": "https://github.com/Crowndev/crowncoin", "Homepage": "https://crown.tech" }, - "marketcap_usd": 8967717, + "marketcap_usd": 6768071, "name": "Crown", "shortcut": "CRW", "t1_enabled": "no", @@ -391,7 +94,7 @@ "Github": "https://github.com/dashpay/dash", "Homepage": "https://www.dash.org" }, - "marketcap_usd": 2244144313, + "marketcap_usd": 1978399572, "name": "Dash", "shortcut": "DASH", "t1_enabled": "yes", @@ -407,7 +110,7 @@ "Github": "https://github.com/decred/dcrd", "Homepage": "https://www.decred.org" }, - "marketcap_usd": 593053427, + "marketcap_usd": 507224924, "name": "Decred", "shortcut": "DCR", "t1_enabled": "yes", @@ -420,7 +123,7 @@ "Github": "https://github.com/digibyte/digibyte", "Homepage": "https://digibyte.io" }, - "marketcap_usd": 472432594, + "marketcap_usd": 420450687, "name": "DigiByte", "shortcut": "DGB", "t1_enabled": "yes", @@ -433,6 +136,7 @@ "Github": "https://github.com/carsenk/denarius", "Homepage": "https://denarius.io" }, + "marketcap_usd": 0, "name": "Denarius", "shortcut": "DNR", "t1_enabled": "no", @@ -445,7 +149,7 @@ "Github": "https://github.com/dogecoin/dogecoin", "Homepage": "http://dogecoin.com" }, - "marketcap_usd": 416955600, + "marketcap_usd": 387724656, "name": "Dogecoin", "shortcut": "DOGE", "t1_enabled": "yes", @@ -460,7 +164,7 @@ "Github": "https://github.com/fujicoin/fujicoin", "Homepage": "http://fujicoin.org" }, - "marketcap_usd": 871352, + "marketcap_usd": 728345, "name": "Fujicoin", "shortcut": "FJC", "t1_enabled": "yes", @@ -475,7 +179,7 @@ "Github": "https://github.com/flash-coin", "Homepage": "https://www.flashcoin.io" }, - "marketcap_usd": 6262092, + "marketcap_usd": 11828430, "name": "Flashcoin", "shortcut": "FLASH", "t1_enabled": "no", @@ -488,7 +192,7 @@ "Github": "https://github.com/FeatherCoin/Feathercoin", "Homepage": "https://feathercoin.com" }, - "marketcap_usd": 21594346, + "marketcap_usd": 17325381, "name": "Feathercoin", "shortcut": "FTC", "t1_enabled": "no", @@ -501,7 +205,7 @@ "Github": "https://github.com/Groestlcoin/groestlcoin", "Homepage": "https://www.groestlcoin.org" }, - "marketcap_usd": 46522748, + "marketcap_usd": 45013544, "name": "Groestlcoin", "shortcut": "GRS", "t1_enabled": "yes", @@ -516,6 +220,7 @@ "Github": "https://github.com/KotoDevelopers/koto", "Homepage": "https://ko-to.org" }, + "marketcap_usd": 0, "name": "Koto", "shortcut": "KOTO", "t1_enabled": "no", @@ -528,7 +233,7 @@ "Github": "https://github.com/litecoin-project/litecoin", "Homepage": "https://litecoin.org" }, - "marketcap_usd": 4882514683, + "marketcap_usd": 4762460123, "name": "Litecoin", "shortcut": "LTC", "t1_enabled": "yes", @@ -544,7 +249,7 @@ "Github": "https://github.com/monacoinproject/monacoin", "Homepage": "https://monacoin.org" }, - "marketcap_usd": 136904441, + "marketcap_usd": 132461117, "name": "Monacoin", "shortcut": "MONA", "t1_enabled": "yes", @@ -559,6 +264,7 @@ "Github": "https://github.com/muecoin/MUECore", "Homepage": "https://www.monetaryunit.org" }, + "marketcap_usd": 0, "name": "MUE", "shortcut": "MUE", "t1_enabled": "no", @@ -571,7 +277,7 @@ "Github": "https://github.com/namecoin/namecoin-core", "Homepage": "https://namecoin.org" }, - "marketcap_usd": 13403036, + "marketcap_usd": 30482980, "name": "Namecoin", "shortcut": "NMC", "t1_enabled": "yes", @@ -586,7 +292,7 @@ "Github": "https://github.com/FundacionPesetacoin/PesetacoinCore", "Homepage": "http://pesetacoin.info" }, - "marketcap_usd": 3588805, + "marketcap_usd": 3421001, "name": "Pesetacoin", "shortcut": "PTC", "t1_enabled": "no", @@ -628,6 +334,7 @@ "Github": "https://github.com/BTCGPU/BTCGPU", "Homepage": "https://bitcoingold.org" }, + "marketcap_usd": 0, "name": "Bitcoin Gold Testnet", "shortcut": "TBTG", "t1_enabled": "no", @@ -661,7 +368,9 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": {} + "wallet": { + "Trezor": "https://wallet.trezor.io" + } }, "coin:TLTC": { "hidden": 1, @@ -682,7 +391,7 @@ "Github": "https://github.com/terracoin/terracoin", "Homepage": "https://terracoin.io" }, - "marketcap_usd": 1977795, + "marketcap_usd": 2070984, "name": "Terracoin", "shortcut": "TRC", "t1_enabled": "no", @@ -695,7 +404,7 @@ "Github": "https://github.com/viacoin", "Homepage": "https://viacoin.org" }, - "marketcap_usd": 28457309, + "marketcap_usd": 29527200, "name": "Viacoin", "shortcut": "VIA", "t1_enabled": "yes", @@ -710,7 +419,7 @@ "Github": "https://github.com/vertcoin-project/vertcoin-core", "Homepage": "https://vertcoin.org" }, - "marketcap_usd": 48619898, + "marketcap_usd": 53546930, "name": "Vertcoin", "shortcut": "VTC", "t1_enabled": "yes", @@ -725,7 +434,7 @@ "Github": "https://github.com/myriadcoin/myriadcoin", "Homepage": "https://www.myriadcoin.org" }, - "marketcap_usd": 6334174, + "marketcap_usd": 6517125, "name": "Myriad", "shortcut": "XMY", "t1_enabled": "no", @@ -738,7 +447,7 @@ "Github": "https://github.com/zcoinofficial/zcoin", "Homepage": "https://zcoin.io" }, - "marketcap_usd": 94586975, + "marketcap_usd": 83007553, "name": "Zcoin", "shortcut": "XZC", "t1_enabled": "yes", @@ -754,7 +463,7 @@ "Github": "https://github.com/zcash/zcash", "Homepage": "https://z.cash" }, - "marketcap_usd": 855681961, + "marketcap_usd": 954755674, "name": "Zcash", "shortcut": "ZEC", "t1_enabled": "yes", @@ -769,7 +478,7 @@ "Github": "https://github.com/ZencashOfficial/zen", "Homepage": "https://zencash.com" }, - "marketcap_usd": 124100964, + "marketcap_usd": 125906033, "name": "Zencash", "shortcut": "ZEN", "t1_enabled": "no", @@ -910,7 +619,7 @@ "links": { "Homepage": "https://0xbitcoin.org/" }, - "marketcap_usd": 2705930, + "marketcap_usd": 2187389, "name": "0xBitcoin", "network": "eth", "shortcut": "0xBTC", @@ -927,7 +636,7 @@ "links": { "Homepage": "https://firstblood.io" }, - "marketcap_usd": 13464920, + "marketcap_usd": 12785672, "name": "FirstBlood", "network": "eth", "shortcut": "1ST", @@ -1046,7 +755,7 @@ "links": { "Homepage": "http://accelerator.network" }, - "marketcap_usd": 192471, + "marketcap_usd": 228592, "name": "Accelerator Network", "network": "eth", "shortcut": "ACC", @@ -1081,7 +790,7 @@ "Github": "https://github.com/aditus", "Homepage": "https://aditus.net" }, - "marketcap_usd": 1904801, + "marketcap_usd": 1703030, "name": "Aditus", "network": "eth", "shortcut": "ADI", @@ -1116,7 +825,7 @@ "links": { "Homepage": "https://adshares.net" }, - "marketcap_usd": 2202222, + "marketcap_usd": 2070638, "name": "AdShares", "network": "eth", "shortcut": "ADST", @@ -1134,7 +843,7 @@ "Github": "https://github.com/adchain", "Homepage": "https://adtoken.com" }, - "marketcap_usd": 9332100, + "marketcap_usd": 18658200, "name": "AdToken", "network": "eth", "shortcut": "ADT", @@ -1170,7 +879,7 @@ "Github": "https://github.com/aeternity", "Homepage": "https://www.aeternity.com/" }, - "marketcap_usd": 434471331, + "marketcap_usd": 448485182, "name": "aeternity", "network": "eth", "shortcut": "AE", @@ -1188,7 +897,7 @@ "Github": "https://github.com/singnet/singnet", "Homepage": "https://singularitynet.io" }, - "marketcap_usd": 53104928, + "marketcap_usd": 45404870, "name": "SingularityNET", "network": "eth", "shortcut": "AGI", @@ -1206,7 +915,7 @@ "Github": "https://github.com/aionnetwork", "Homepage": "https://aion.network/" }, - "marketcap_usd": 168020932, + "marketcap_usd": 152498011, "name": "Aion", "network": "eth", "shortcut": "AION", @@ -1223,7 +932,7 @@ "links": { "Homepage": "https://airtoken.com" }, - "marketcap_usd": 4410872, + "marketcap_usd": 4683294, "name": "AirToken", "network": "eth", "shortcut": "AIR", @@ -1241,7 +950,7 @@ "Github": "https://github.com/AigangNetwork", "Homepage": "https://aigang.network/" }, - "marketcap_usd": 1771964, + "marketcap_usd": 1420341, "name": "Aigang", "network": "eth", "shortcut": "AIX", @@ -1259,6 +968,7 @@ "Github": "https://github.com/artwook", "Homepage": "https://artwook.com" }, + "marketcap_usd": 0, "name": "ARTWOOK COIN", "network": "eth", "shortcut": "AKC", @@ -1293,7 +1003,7 @@ "Github": "https://github.com/AlisProject", "Homepage": "https://alismedia.jp" }, - "marketcap_usd": 3267287, + "marketcap_usd": 2806230, "name": "ALIS Token", "network": "eth", "shortcut": "ALIS", @@ -1364,7 +1074,7 @@ "Github": "https://github.com/amontech", "Homepage": "https://amon.tech" }, - "marketcap_usd": 1598707, + "marketcap_usd": 1150968, "name": "Amon", "network": "eth", "shortcut": "AMN", @@ -1434,7 +1144,7 @@ "Github": "https://github.com/Oxchild/crowdsale", "Homepage": "https://apisplatform.io" }, - "marketcap_usd": 26951530, + "marketcap_usd": 26916818, "name": "APIS", "network": "eth", "shortcut": "APIS", @@ -1452,7 +1162,7 @@ "Github": "https://github.com/Aptoide/AppCoins-ethereumj", "Homepage": "https://appcoins.io" }, - "marketcap_usd": 18715459, + "marketcap_usd": 17238858, "name": "AppCoins", "network": "eth", "shortcut": "APPC", @@ -1469,7 +1179,7 @@ "links": { "Homepage": "https://aigang.network" }, - "marketcap_usd": 1771964, + "marketcap_usd": 1420341, "name": "AIGang", "network": "eth", "shortcut": "APT", @@ -1504,7 +1214,7 @@ "links": { "Homepage": "https://www.arbitragect.com" }, - "marketcap_usd": 347247, + "marketcap_usd": 254831, "name": "ArbitrageCT", "network": "eth", "shortcut": "ARCT", @@ -1609,7 +1319,7 @@ "links": { "Homepage": "https://airswap.io" }, - "marketcap_usd": 21939300, + "marketcap_usd": 21286200, "name": "Airswap", "network": "eth", "shortcut": "AST", @@ -1979,7 +1689,7 @@ "Github": "https://github.com/thebeetoken", "Homepage": "https://www.beetoken.com" }, - "marketcap_usd": 3704273, + "marketcap_usd": 3439466, "name": "Bee Token", "network": "eth", "shortcut": "BEE", @@ -2033,6 +1743,7 @@ "Github": "https://github.com/bethereumproject", "Homepage": "https://www.bethereum.com/" }, + "marketcap_usd": 0, "name": "Bethereum", "network": "eth", "shortcut": "BETHER", @@ -2102,7 +1813,7 @@ "Github": "https://github.com/BankEx", "Homepage": "https://bankex.com/" }, - "marketcap_usd": 15850616, + "marketcap_usd": 12829167, "name": "BANKEX", "network": "eth", "shortcut": "BKX", @@ -2138,7 +1849,7 @@ "Github": "https://github.com/BlueCrypto", "Homepage": "https://blueprotocol.com/" }, - "marketcap_usd": 3908915, + "marketcap_usd": 2892679, "name": "Ethereum Blue", "network": "eth", "shortcut": "BLUE", @@ -2173,7 +1884,7 @@ "links": { "Homepage": "https://www.iconomi.net" }, - "marketcap_usd": 64416238, + "marketcap_usd": 54548929, "name": "Iconomi", "network": "eth", "shortcut": "BLX (Iconomi)", @@ -2310,7 +2021,7 @@ "Github": "https://github.com/bancorprotocol", "Homepage": "https://www.bancor.network/discover" }, - "marketcap_usd": 113759781, + "marketcap_usd": 114236636, "name": "Bancor", "network": "eth", "shortcut": "BNT", @@ -2361,7 +2072,7 @@ "links": { "Homepage": "https://bonpay.com" }, - "marketcap_usd": 1538450, + "marketcap_usd": 1381380, "name": "Bonpay", "network": "eth", "shortcut": "BON", @@ -2447,7 +2158,7 @@ "links": { "Homepage": "http://bro-consortium.io" }, - "marketcap_usd": 58810, + "marketcap_usd": 63388, "name": "BRAT", "network": "eth", "shortcut": "BRAT", @@ -2465,7 +2176,7 @@ "Github": "https://github.com/breadwallet", "Homepage": "https://token.breadapp.com/en" }, - "marketcap_usd": 35550647, + "marketcap_usd": 33571968, "name": "Bread", "network": "eth", "shortcut": "BRD", @@ -2658,7 +2369,7 @@ "Github": "https://github.com/bytom", "Homepage": "https://bytom.io" }, - "marketcap_usd": 360079695, + "marketcap_usd": 351149431, "name": "Bytom", "network": "eth", "shortcut": "BTM", @@ -2761,7 +2472,7 @@ "Github": "https://github.com/cryptotwenty", "Homepage": "https://crypto20.com" }, - "marketcap_usd": 42852656, + "marketcap_usd": 41436137, "name": "Crypto20's Token", "network": "eth", "shortcut": "C20", @@ -2896,7 +2607,7 @@ "links": { "Homepage": "https://cashaa.com" }, - "marketcap_usd": 14192264, + "marketcap_usd": 14200361, "name": "Cashaa", "network": "eth", "shortcut": "CAS", @@ -2965,6 +2676,7 @@ "Github": "https://github.com/Cubrixio", "Homepage": "https://cubrix.io" }, + "marketcap_usd": 0, "name": "Cubrix", "network": "eth", "shortcut": "CBIX", @@ -3121,6 +2833,7 @@ "Github": "https://github.com/DICE-Money/", "Homepage": "https://dice.money/" }, + "marketcap_usd": 0, "name": "DICE Money Dicet", "network": "eth", "shortcut": "CET", @@ -3137,6 +2850,7 @@ "links": { "Homepage": "https://cryptfillcoin.com" }, + "marketcap_usd": 0, "name": "CryptFillCoin", "network": "eth", "shortcut": "CFC", @@ -3362,7 +3076,7 @@ "links": { "Homepage": "https://cindicator.com" }, - "marketcap_usd": 45655699, + "marketcap_usd": 42645320, "name": "Cindicator", "network": "eth", "shortcut": "CND", @@ -3469,7 +3183,7 @@ "Github": "https://github.com/CoinvestHQ", "Homepage": "https://coinve.st" }, - "marketcap_usd": 125950, + "marketcap_usd": 138539, "name": "Coinvest V2 Token", "network": "eth", "shortcut": "COIN", @@ -3486,7 +3200,7 @@ "links": { "Homepage": "https://covesting.io/" }, - "marketcap_usd": 21379225, + "marketcap_usd": 19758025, "name": "Covesting", "network": "eth", "shortcut": "COV", @@ -3522,7 +3236,7 @@ "Github": "https://github.com/aditus", "Homepage": "https://copytrack.io" }, - "marketcap_usd": 2405879, + "marketcap_usd": 1801050, "name": "COPYTRACK", "network": "eth", "shortcut": "CPY", @@ -3592,7 +3306,7 @@ "links": { "Homepage": "https://bitbounce.io" }, - "marketcap_usd": 16657319, + "marketcap_usd": 14403918, "name": "Credo / Bitbounce", "network": "eth", "shortcut": "CREDO", @@ -3680,6 +3394,7 @@ "Github": "https://github.com/ctgcoin/", "Homepage": "https://www.ctgcoin.org" }, + "marketcap_usd": 0, "name": "Convenient To Go", "network": "eth", "shortcut": "CTGC", @@ -3782,7 +3497,7 @@ "Github": "https://github.com/cargoxio", "Homepage": "https://cargox.io" }, - "marketcap_usd": 4797791, + "marketcap_usd": 4927779, "name": "CargoX", "network": "eth", "shortcut": "CXO", @@ -3799,7 +3514,7 @@ "links": { "Homepage": "https://ccrb.io" }, - "marketcap_usd": 2795928, + "marketcap_usd": 2485047, "name": "CryptoCarbon", "network": "eth", "shortcut": "CryptoCarbon", @@ -3833,7 +3548,7 @@ "links": { "Homepage": "https://dadi.cloud" }, - "marketcap_usd": 8217712, + "marketcap_usd": 6972897, "name": "DADI", "network": "eth", "shortcut": "DADI", @@ -3851,7 +3566,7 @@ "Github": "https://github.com/makerdao", "Homepage": "https://makerdao.com" }, - "marketcap_usd": 54035637, + "marketcap_usd": 54565947, "name": "Dai Stablecoin v1.0", "network": "eth", "shortcut": "DAI", @@ -3868,7 +3583,7 @@ "links": { "Homepage": "http://www.dalecoin.org" }, - "marketcap_usd": 83644, + "marketcap_usd": 86518, "name": "DaleCoin", "network": "eth", "shortcut": "DALC", @@ -3956,7 +3671,7 @@ "Github": "https://github.com/streamr-dev", "Homepage": "https://www.streamr.com" }, - "marketcap_usd": 140182, + "marketcap_usd": 169556, "name": "DATACoin", "network": "eth", "shortcut": "DATACoin", @@ -4045,7 +3760,7 @@ "Github": "https://github.com/DistributedBanking/DCC", "Homepage": "http://dcc.finance" }, - "marketcap_usd": 20519240, + "marketcap_usd": 22593785, "name": "Distributed Credit Chain", "network": "eth", "shortcut": "DCC", @@ -4080,7 +3795,7 @@ "Github": "https://github.com/Dentacoin", "Homepage": "https://dentacoin.com" }, - "marketcap_usd": 123029325, + "marketcap_usd": 121243831, "name": "Dentacoin", "network": "eth", "shortcut": "DCN", @@ -4150,7 +3865,7 @@ "links": { "Homepage": "https://www.dentwireless.com" }, - "marketcap_usd": 35875345, + "marketcap_usd": 31784946, "name": "DENT", "network": "eth", "shortcut": "DENT", @@ -4202,7 +3917,7 @@ "Github": "https://github.com/digipulseio", "Homepage": "https://www.digipulse.io" }, - "marketcap_usd": 3190500, + "marketcap_usd": 3413071, "name": "DigiPulse", "network": "eth", "shortcut": "DGPT", @@ -4220,6 +3935,7 @@ "Github": "https://github.com/dragonglasscom", "Homepage": "https://dragonglass.com/" }, + "marketcap_usd": 0, "name": "Dragonglass", "network": "eth", "shortcut": "DGS", @@ -4237,7 +3953,7 @@ "Github": "https://github.com/DigixGlobal", "Homepage": "https://digix.global" }, - "marketcap_usd": 2032107, + "marketcap_usd": 2000406, "name": "Digix Gold Token", "network": "eth", "shortcut": "DGX", @@ -4255,6 +3971,7 @@ "Github": "https://github.com/DigixGlobal", "Homepage": "https://digix.global" }, + "marketcap_usd": 0, "name": "Digix Gold Token 1.0", "network": "eth", "shortcut": "DGX1", @@ -4271,7 +3988,7 @@ "links": { "Homepage": "https://etheroll.com" }, - "marketcap_usd": 7036071, + "marketcap_usd": 7422700, "name": "Etheroll", "network": "eth", "shortcut": "DICE", @@ -4287,6 +4004,7 @@ "address": "0xc719d010B63E5bbF2C0551872CD5316ED26AcD83", "hidden": 1, "links": {}, + "marketcap_usd": 0, "name": "Decentralized Insurance Protocol", "network": "eth", "shortcut": "DIP", @@ -4459,7 +4177,7 @@ "links": { "Homepage": "https://dropil.com" }, - "marketcap_usd": 109740129, + "marketcap_usd": 114526762, "name": "Dropil", "network": "eth", "shortcut": "DROP (dropil)", @@ -4477,6 +4195,7 @@ "Github": "https://github.com/TeamDriveholic", "Homepage": "https://driveholic.com/" }, + "marketcap_usd": 0, "name": "Driveholic Token", "network": "eth", "shortcut": "DRVH", @@ -4511,7 +4230,7 @@ "Github": "https://github.com/dethertech", "Homepage": "https://dether.io" }, - "marketcap_usd": 2833670, + "marketcap_usd": 2837715, "name": "dether", "network": "eth", "shortcut": "DTH", @@ -4616,7 +4335,7 @@ "Github": "https://github.com/elangindonesia/EagleCoin", "Homepage": "https://eaglepay.io" }, - "marketcap_usd": 184753, + "marketcap_usd": 154096, "name": "EagleCoin", "network": "eth", "shortcut": "EAGLE", @@ -4667,6 +4386,7 @@ "links": { "Homepage": "https://ecryptotokens.com" }, + "marketcap_usd": 0, "name": "ECRYPTO COIN", "network": "eth", "shortcut": "ECP", @@ -4700,7 +4420,7 @@ "links": { "Homepage": "https://edgeless.io" }, - "marketcap_usd": 33942785, + "marketcap_usd": 32409395, "name": "Edgeless", "network": "eth", "shortcut": "EDG", @@ -4717,7 +4437,7 @@ "links": { "Homepage": "https://eidoo.io" }, - "marketcap_usd": 28004213, + "marketcap_usd": 26001179, "name": "Eidoo", "network": "eth", "shortcut": "EDO", @@ -4806,7 +4526,7 @@ "Github": "https://github.com/eltcoin", "Homepage": "http://www.eltcoin.tech/" }, - "marketcap_usd": 335480, + "marketcap_usd": 334662, "name": "ELTCOIN", "network": "eth", "shortcut": "ELTCOIN", @@ -4824,6 +4544,7 @@ "Github": "https://github.com/Elysian-ELY", "Homepage": "https://elycoin.io" }, + "marketcap_usd": 0, "name": "ELYCOIN", "network": "eth", "shortcut": "ELY", @@ -4982,7 +4703,7 @@ "links": { "Homepage": "https://eos.io" }, - "marketcap_usd": 7453167788, + "marketcap_usd": 7308090147, "name": "EOS", "network": "eth", "shortcut": "EOS", @@ -5035,7 +4756,7 @@ "links": { "Homepage": "https://www.ethbits.com" }, - "marketcap_usd": 1559890, + "marketcap_usd": 1984761, "name": "Ethbits", "network": "eth", "shortcut": "ETBS", @@ -5193,6 +4914,7 @@ "Github": "https://github.com/eRupee", "Homepage": "https://erupee.wordpress.com" }, + "marketcap_usd": 0, "name": "eRupee", "network": "eth", "shortcut": "E\u20b9", @@ -5227,6 +4949,7 @@ "links": { "Homepage": "https://tokensale.fanfare.global" }, + "marketcap_usd": 0, "name": "Fan Token", "network": "eth", "shortcut": "FAN", @@ -5365,7 +5088,7 @@ "Github": "https://github.com/FundRequest", "Homepage": "https://fundrequest.io" }, - "marketcap_usd": 1330223, + "marketcap_usd": 1189807, "name": "FundRequest", "network": "eth", "shortcut": "FND", @@ -5469,7 +5192,7 @@ "links": { "Homepage": "https://funfair.io" }, - "marketcap_usd": 131098821, + "marketcap_usd": 124880359, "name": "Funfair", "network": "eth", "shortcut": "FUN", @@ -5487,6 +5210,7 @@ "Github": "https://github.com/futuraxproject", "Homepage": "https://futurax.global" }, + "marketcap_usd": 0, "name": "FUTURAX", "network": "eth", "shortcut": "FXC", @@ -5521,7 +5245,7 @@ "Github": "https://github.com/BlockchainLabsNZ/gambit", "Homepage": "http://gambitcrypto.com" }, - "marketcap_usd": 6448988, + "marketcap_usd": 5882833, "name": "Gambit", "network": "eth", "shortcut": "GAM", @@ -5644,7 +5368,7 @@ "Github": "https://github.com/daostack", "Homepage": "https://daostack.io" }, - "marketcap_usd": 7090810, + "marketcap_usd": 5478091, "name": "DAOstack", "network": "eth", "shortcut": "GEN", @@ -5749,7 +5473,7 @@ "links": { "Homepage": "https://golem.network" }, - "marketcap_usd": 298260952, + "marketcap_usd": 279952859, "name": "Golem", "network": "eth", "shortcut": "GNT", @@ -5784,7 +5508,7 @@ "links": { "Homepage": "https://gridplus.io/token-sale" }, - "marketcap_usd": 12329479, + "marketcap_usd": 12753939, "name": "GRID", "network": "eth", "shortcut": "GRID", @@ -5819,6 +5543,7 @@ "links": { "Homepage": "https://www.gse.network" }, + "marketcap_usd": 0, "name": "GSENetwork", "network": "eth", "shortcut": "GSE", @@ -5872,7 +5597,7 @@ "Github": "https://github.com/GIFTO-io", "Homepage": "https://gifto.io/" }, - "marketcap_usd": 90430369, + "marketcap_usd": 80119750, "name": "Gifto", "network": "eth", "shortcut": "GTO", @@ -5890,7 +5615,7 @@ "Github": "https://github.com/GenesisVision", "Homepage": "https://genesis.vision" }, - "marketcap_usd": 33487213, + "marketcap_usd": 31044868, "name": "Genesis Vision", "network": "eth", "shortcut": "GVT", @@ -5995,7 +5720,7 @@ "Github": "https://github.com/havven/havven", "Homepage": "https://havven.io" }, - "marketcap_usd": 13898422, + "marketcap_usd": 13299230, "name": "Havven", "network": "eth", "shortcut": "HAV", @@ -6117,7 +5842,7 @@ "links": { "Homepage": "https://github.com/arachnid/hodlcoin" }, - "marketcap_usd": 245622, + "marketcap_usd": 299502, "name": "HODLCoin", "network": "eth", "shortcut": "HODL", @@ -6170,7 +5895,7 @@ "Github": "https://github.com/HiveProjectLTD", "Homepage": "https://hive-project.net" }, - "marketcap_usd": 16531725, + "marketcap_usd": 20154450, "name": "Hive Project", "network": "eth", "shortcut": "HVN", @@ -6224,6 +5949,7 @@ "Github": "https://github.com/HEDPAY", "Homepage": "http://hedpay.com" }, + "marketcap_usd": 0, "name": "HEdpAY", "network": "eth", "shortcut": "Hdp.\u0444", @@ -6308,7 +6034,7 @@ "links": { "Homepage": "https://icos.icobox.io" }, - "marketcap_usd": 4524391, + "marketcap_usd": 4096363, "name": "ICOS", "network": "eth", "shortcut": "ICOS", @@ -6325,7 +6051,7 @@ "links": { "Homepage": "https://www.icon.foundation" }, - "marketcap_usd": 534678495, + "marketcap_usd": 493141981, "name": "ICON", "network": "eth", "shortcut": "ICX", @@ -6359,7 +6085,7 @@ "links": { "Homepage": "https://investfeed.com" }, - "marketcap_usd": 5524354, + "marketcap_usd": 4316662, "name": "InvestFeed", "network": "eth", "shortcut": "IFT", @@ -6494,7 +6220,7 @@ "links": { "Homepage": "https://insights.network" }, - "marketcap_usd": 2461524, + "marketcap_usd": 2851298, "name": "Insights Network", "network": "eth", "shortcut": "INSTAR", @@ -6511,7 +6237,7 @@ "links": { "Homepage": "https://internxt.io" }, - "marketcap_usd": 2717546, + "marketcap_usd": 2494494, "name": "Internxt", "network": "eth", "shortcut": "INXT", @@ -6528,7 +6254,7 @@ "links": { "Homepage": "https://iost.io/" }, - "marketcap_usd": 197232840, + "marketcap_usd": 221739000, "name": "IOSToken", "network": "eth", "shortcut": "IOST", @@ -6599,7 +6325,7 @@ "Github": "https://github.com/IoTChainCode", "Homepage": "https://iotchain.io/" }, - "marketcap_usd": 28559882, + "marketcap_usd": 26750163, "name": "IoT Chain", "network": "eth", "shortcut": "ITC", @@ -6789,7 +6515,7 @@ "Github": "https://github.com/kikinteractive/kin-token", "Homepage": "https://kin.kik.com" }, - "marketcap_usd": 154172829, + "marketcap_usd": 132768463, "name": "Kin Foundation", "network": "eth", "shortcut": "KIN", @@ -6807,7 +6533,7 @@ "Github": "https://github.com/KyberNetwork", "Homepage": "https://kyber.network" }, - "marketcap_usd": 130595886, + "marketcap_usd": 119484736, "name": "Kyber Network", "network": "eth", "shortcut": "KNC", @@ -6843,7 +6569,7 @@ "Github": "https://github.com/Cryptense/", "Homepage": "https://kryll.io/" }, - "marketcap_usd": 0, + "marketcap_usd": 705990, "name": "Kryll", "network": "eth", "shortcut": "KRL", @@ -6878,7 +6604,7 @@ "Github": "https://github.com/latoken", "Homepage": "https://latoken.com/" }, - "marketcap_usd": 9876825, + "marketcap_usd": 8879580, "name": "LATOKEN", "network": "eth", "shortcut": "LA", @@ -6912,7 +6638,7 @@ "links": { "Homepage": "https://www.leadcoin.network/" }, - "marketcap_usd": 2998242, + "marketcap_usd": 2555566, "name": "LEADCOIN", "network": "eth", "shortcut": "LDC", @@ -7014,7 +6740,7 @@ "links": { "Homepage": "http://www.lifelabs.io" }, - "marketcap_usd": 12067076, + "marketcap_usd": 2645178, "name": "LIFE", "network": "eth", "shortcut": "LIFE", @@ -7102,7 +6828,7 @@ "Github": "https://github.com/linkercoinfoundation", "Homepage": "https://www.linkercoin.com/en" }, - "marketcap_usd": 4045247, + "marketcap_usd": 4110499, "name": "Linker Coin", "network": "eth", "shortcut": "LNC-Linker Coin", @@ -7120,7 +6846,7 @@ "Github": "https://github.com/lendingblock", "Homepage": "https://lendingblock.com" }, - "marketcap_usd": 3214106, + "marketcap_usd": 3206403, "name": "Lendingblock", "network": "eth", "shortcut": "LND", @@ -7137,7 +6863,7 @@ "links": { "Homepage": "https://LockChain.co" }, - "marketcap_usd": 8593382, + "marketcap_usd": 8149690, "name": "LockChain", "network": "eth", "shortcut": "LOC", @@ -7155,7 +6881,7 @@ "Github": "http://github.com/locipro/loci-coin-sale", "Homepage": "https://locipro.com" }, - "marketcap_usd": 3584621, + "marketcap_usd": 4748632, "name": "LOCIcoin", "network": "eth", "shortcut": "LOCI", @@ -7206,6 +6932,7 @@ "links": { "Homepage": "https://lookrev.com" }, + "marketcap_usd": 0, "name": "LookRev", "network": "eth", "shortcut": "LOOK", @@ -7241,6 +6968,7 @@ "links": { "Github": "https://github.com/GNSPS" }, + "marketcap_usd": 0, "name": "Love", "network": "eth", "shortcut": "LOVE", @@ -7468,7 +7196,7 @@ "Github": "https://github.com/theembermine", "Homepage": "https://embermine.com/" }, - "marketcap_usd": 408689, + "marketcap_usd": 389738, "name": "Embers", "network": "eth", "shortcut": "MBRS", @@ -7484,7 +7212,7 @@ "address": "0x93E682107d1E9defB0b5ee701C71707a4B2E46Bc", "hidden": 1, "links": {}, - "marketcap_usd": 352675, + "marketcap_usd": 325138, "name": "MCAP", "network": "eth", "shortcut": "MCAP", @@ -7502,7 +7230,7 @@ "Github": "https://github.com/musiconomi/", "Homepage": "https://musiconomi.com/" }, - "marketcap_usd": 672488, + "marketcap_usd": 636259, "name": "Musiconomi", "network": "eth", "shortcut": "MCI", @@ -7608,6 +7336,7 @@ "Github": "https://github.com/MainframeHQ", "Homepage": "https://mainframe.com" }, + "marketcap_usd": 0, "name": "Mainframe Token", "network": "eth", "shortcut": "MFT", @@ -7781,7 +7510,7 @@ "Github": "https://github.com/modum-io", "Homepage": "https://modum.io" }, - "marketcap_usd": 18276794, + "marketcap_usd": 17985321, "name": "Modum", "network": "eth", "shortcut": "MOD", @@ -7850,7 +7579,7 @@ "links": { "Homepage": "https://mothership.cx" }, - "marketcap_usd": 20596100, + "marketcap_usd": 19547360, "name": "Mothership", "network": "eth", "shortcut": "MSP", @@ -7885,7 +7614,7 @@ "links": { "Homepage": "http://www.monetha.io" }, - "marketcap_usd": 8560130, + "marketcap_usd": 7667625, "name": "Monetha", "network": "eth", "shortcut": "MTH", @@ -8005,7 +7734,7 @@ "Github": "https://github.com/Merculet", "Homepage": "https://www.merculet.io" }, - "marketcap_usd": 10808521, + "marketcap_usd": 8246033, "name": "Merculet", "network": "eth", "shortcut": "MVP", @@ -8055,7 +7784,7 @@ "links": { "Homepage": "https://mysterium.network" }, - "marketcap_usd": 5295629, + "marketcap_usd": 4098996, "name": "Mysterium", "network": "eth", "shortcut": "MYST", @@ -8090,7 +7819,7 @@ "Github": "https://github.com/NANJ-COIN", "Homepage": "https://nanjcoin.com/" }, - "marketcap_usd": 26021992, + "marketcap_usd": 26179985, "name": "NANJCOIN", "network": "eth", "shortcut": "NANJ", @@ -8144,7 +7873,7 @@ "Github": "https://github.com/polyswarm", "Homepage": "https://polyswarm.io" }, - "marketcap_usd": 26369273, + "marketcap_usd": 28280604, "name": "Nectar", "network": "eth", "shortcut": "NCT", @@ -8161,7 +7890,7 @@ "links": { "Homepage": "https://neverdie.com" }, - "marketcap_usd": 761362, + "marketcap_usd": 719747, "name": "Neverdie", "network": "eth", "shortcut": "NDC", @@ -8303,7 +8032,7 @@ "Github": "https://github.com/NperProject", "Homepage": "https://nper.io" }, - "marketcap_usd": 4147411, + "marketcap_usd": 3789178, "name": "NPER", "network": "eth", "shortcut": "NPER", @@ -8338,7 +8067,7 @@ "links": { "Homepage": "https://nuls.io" }, - "marketcap_usd": 91802000, + "marketcap_usd": 98932000, "name": "NULS", "network": "eth", "shortcut": "NULS", @@ -8389,7 +8118,7 @@ "links": { "Homepage": "https://beyond-the-void.net" }, - "marketcap_usd": 5732797, + "marketcap_usd": 3208501, "name": "Nexium", "network": "eth", "shortcut": "NxC", @@ -8423,7 +8152,7 @@ "links": { "Homepage": "https://www.openanx.org/en" }, - "marketcap_usd": 8558190, + "marketcap_usd": 8103447, "name": "OAX", "network": "eth", "shortcut": "OAX", @@ -8495,6 +8224,7 @@ "Github": "https://github.com/Oneledger", "Homepage": "https://oneledger.io" }, + "marketcap_usd": 0, "name": "OneLedger Token", "network": "eth", "shortcut": "OLT", @@ -8530,6 +8260,7 @@ "Github": "https://github.com/OTCMAKER/OMT", "Homepage": "https://www.otcmaker.com" }, + "marketcap_usd": 0, "name": "OTCMAKER Token", "network": "eth", "shortcut": "OMT", @@ -8599,7 +8330,7 @@ "Github": "https://github.com/OpenSTFoundation", "Homepage": "https://simpletoken.org" }, - "marketcap_usd": 23833953, + "marketcap_usd": 20921770, "name": "Simple Token 'OST'", "network": "eth", "shortcut": "OST", @@ -8617,6 +8348,7 @@ "Github": "https://github.com/owndata", "Homepage": "https://owndata.network" }, + "marketcap_usd": 0, "name": "OWNDATA", "network": "eth", "shortcut": "OWN", @@ -8652,7 +8384,7 @@ "Github": "https://github.com/policypalnet", "Homepage": "https://www.policypal.network" }, - "marketcap_usd": 6698811, + "marketcap_usd": 5838102, "name": "PolicyPal Network", "network": "eth", "shortcut": "PAL", @@ -8740,7 +8472,7 @@ "links": { "Homepage": "http://www.tenx.tech" }, - "marketcap_usd": 112479647, + "marketcap_usd": 95669125, "name": "TenX", "network": "eth", "shortcut": "PAY", @@ -8809,7 +8541,7 @@ "Github": "https://github.com/PeculiumPCL/Peculium", "Homepage": "https://peculium.io" }, - "marketcap_usd": 3421686, + "marketcap_usd": 3059219, "name": "Peculium", "network": "eth", "shortcut": "PCL", @@ -8948,7 +8680,7 @@ "links": { "Homepage": "https://polybius.io" }, - "marketcap_usd": 11740266, + "marketcap_usd": 10872599, "name": "Polybius", "network": "eth", "shortcut": "PLBT", @@ -8984,6 +8716,7 @@ "Github": "https://github.com/bitsuperlab", "Homepage": "https://dacplay.org" }, + "marketcap_usd": 0, "name": "DACPLAY Token", "network": "eth", "shortcut": "PLS", @@ -9051,7 +8784,7 @@ "links": { "Homepage": "https://polymath.network" }, - "marketcap_usd": 109202251, + "marketcap_usd": 101096231, "name": "Polymath Network", "network": "eth", "shortcut": "POLY", @@ -9086,7 +8819,7 @@ "Github": "https://github.com/PoSToken", "Homepage": "https://postoken.org" }, - "marketcap_usd": 59276, + "marketcap_usd": 57612, "name": "PoSToken", "network": "eth", "shortcut": "POS", @@ -9120,7 +8853,7 @@ "links": { "Homepage": "https://www.paypie.com" }, - "marketcap_usd": 19913850, + "marketcap_usd": 19054283, "name": "PayPie", "network": "eth", "shortcut": "PPP", @@ -9137,7 +8870,7 @@ "links": { "Homepage": "https://populous.co" }, - "marketcap_usd": 246779855, + "marketcap_usd": 206288939, "name": "Populous", "network": "eth", "shortcut": "PPT", @@ -9154,7 +8887,7 @@ "links": { "Homepage": "https://presearch.io" }, - "marketcap_usd": 19461645, + "marketcap_usd": 16088845, "name": "Presearch", "network": "eth", "shortcut": "PRE", @@ -9207,7 +8940,7 @@ "links": { "Homepage": "https://propy.com" }, - "marketcap_usd": 12734679, + "marketcap_usd": 13249565, "name": "Propy", "network": "eth", "shortcut": "PRO", @@ -9366,6 +9099,7 @@ "Github": "https://github.com/seanyc99/PureCarbon-Smart-Contract", "Homepage": "https://purecarbon.io" }, + "marketcap_usd": 0, "name": "PureCarbon", "network": "eth", "shortcut": "PURC", @@ -9399,7 +9133,7 @@ "links": { "Homepage": "https://liquid.plus" }, - "marketcap_usd": 93416050, + "marketcap_usd": 87768100, "name": "QASH", "network": "eth", "shortcut": "QASH", @@ -9452,6 +9186,7 @@ "Github": "https://github.com/quantnetwork", "Homepage": "https://www.quant.network/" }, + "marketcap_usd": 0, "name": "Quant", "network": "eth", "shortcut": "QNT", @@ -9540,7 +9275,7 @@ "Github": "https://github.com/qtumproject", "Homepage": "https://qtum.org/" }, - "marketcap_usd": 727523386, + "marketcap_usd": 683754148, "name": "Qtum", "network": "eth", "shortcut": "QTUM", @@ -9594,7 +9329,7 @@ "Github": "https://github.com/ripio/rcn-token", "Homepage": "https://ripiocredit.network" }, - "marketcap_usd": 21633782, + "marketcap_usd": 21481540, "name": "Ripio Credit Network", "network": "eth", "shortcut": "RCN", @@ -9645,7 +9380,7 @@ "links": { "Homepage": "https://www.rebellious.io" }, - "marketcap_usd": 5569683, + "marketcap_usd": 4840875, "name": "Rebellious", "network": "eth", "shortcut": "REBL", @@ -9663,7 +9398,7 @@ "Github": "https://github.com/red", "Homepage": "https://ico.red-lang.org" }, - "marketcap_usd": 5504109, + "marketcap_usd": 4464525, "name": "Red Community Token", "network": "eth", "shortcut": "RED", @@ -9698,7 +9433,7 @@ "links": { "Homepage": "https://request.network" }, - "marketcap_usd": 52258532, + "marketcap_usd": 45535674, "name": "Request Network", "network": "eth", "shortcut": "REQ", @@ -9733,7 +9468,7 @@ "links": { "Homepage": "https://refereum.com" }, - "marketcap_usd": 8663797, + "marketcap_usd": 29443554, "name": "Refereum", "network": "eth", "shortcut": "RFR", @@ -9750,6 +9485,7 @@ "links": { "Homepage": "https://www.evolution.land/" }, + "marketcap_usd": 0, "name": "Evolution Land Global Token", "network": "eth", "shortcut": "RING", @@ -9784,7 +9520,7 @@ "links": { "Homepage": "http://crowdsale.iex.ec" }, - "marketcap_usd": 62044616, + "marketcap_usd": 49338502, "name": "IEx.ec", "network": "eth", "shortcut": "RLC", @@ -9871,7 +9607,7 @@ "Github": "https://github.com/rocketico", "Homepage": "https://rocketico.io" }, - "marketcap_usd": 28384640, + "marketcap_usd": 30374858, "name": "Rocket Token", "network": "eth", "shortcut": "ROCK", @@ -9973,7 +9709,7 @@ "links": { "Homepage": "https://rivetzintl.com" }, - "marketcap_usd": 6306808, + "marketcap_usd": 4189221, "name": "Rivetz", "network": "eth", "shortcut": "RVT", @@ -10024,7 +9760,7 @@ "links": { "Homepage": "https://saltlending.com" }, - "marketcap_usd": 78529601, + "marketcap_usd": 69113519, "name": "Salt Lending Token", "network": "eth", "shortcut": "SALT", @@ -10041,7 +9777,7 @@ "links": { "Homepage": "https://santiment.net" }, - "marketcap_usd": 65615434, + "marketcap_usd": 60746661, "name": "Santiment", "network": "eth", "shortcut": "SAN", @@ -10092,7 +9828,7 @@ "links": { "Homepage": "https://sensay.it" }, - "marketcap_usd": 3573944, + "marketcap_usd": 2343238, "name": "Sensay", "network": "eth", "shortcut": "SENSE", @@ -10265,7 +10001,7 @@ "links": { "Homepage": "http://smartlands.io" }, - "marketcap_usd": 11415141, + "marketcap_usd": 8767215, "name": "Smartlands", "network": "eth", "shortcut": "SLT", @@ -10283,6 +10019,7 @@ "Github": "https://github.com/SELFLLERY", "Homepage": "https://selfllery.com/" }, + "marketcap_usd": 0, "name": "Selfllery", "network": "eth", "shortcut": "SLY", @@ -10369,7 +10106,7 @@ "links": { "Homepage": "https://singulardtv.com" }, - "marketcap_usd": 22837140, + "marketcap_usd": 20330100, "name": "SingularDTV", "network": "eth", "shortcut": "SNGLS", @@ -10472,7 +10209,7 @@ "links": { "Homepage": "https://spankchain.com" }, - "marketcap_usd": 21826866, + "marketcap_usd": 19072438, "name": "SpankChain", "network": "eth", "shortcut": "SPANK", @@ -10592,6 +10329,7 @@ "links": { "Homepage": "https://stabitcoin.com/" }, + "marketcap_usd": 0, "name": "StabitCoin", "network": "eth", "shortcut": "STABIT", @@ -10660,7 +10398,7 @@ "links": { "Homepage": "https://stktoken.com" }, - "marketcap_usd": 9916006, + "marketcap_usd": 9107909, "name": "STK Token", "network": "eth", "shortcut": "STK", @@ -10695,7 +10433,7 @@ "Github": "https://github.com/Storj", "Homepage": "https://storj.io" }, - "marketcap_usd": 65827490, + "marketcap_usd": 66918951, "name": "STORJ", "network": "eth", "shortcut": "STORJ", @@ -10712,7 +10450,7 @@ "links": { "Homepage": "https://www.stormtoken.com" }, - "marketcap_usd": 81414359, + "marketcap_usd": 72848235, "name": "Storm Token", "network": "eth", "shortcut": "STORM", @@ -10748,7 +10486,7 @@ "Github": "https://github.com/Storiqa/", "Homepage": "https://storiqa.com" }, - "marketcap_usd": 35245408, + "marketcap_usd": 26198882, "name": "Storiqa", "network": "eth", "shortcut": "STQ", @@ -10801,7 +10539,7 @@ "links": { "Homepage": "https://substratum.net" }, - "marketcap_usd": 97397261, + "marketcap_usd": 76760473, "name": "Substratum", "network": "eth", "shortcut": "SUB", @@ -10993,7 +10731,7 @@ "Github": "https://github.com/telcoin", "Homepage": "https://www.telco.in" }, - "marketcap_usd": 33094830, + "marketcap_usd": 28849900, "name": "Telcoin", "network": "eth", "shortcut": "TEL", @@ -11011,7 +10749,7 @@ "Github": "https://github.com/TrueFlip", "Homepage": "https://trueflip.io" }, - "marketcap_usd": 4312239, + "marketcap_usd": 4090098, "name": "TrueFlip", "network": "eth", "shortcut": "TFL", @@ -11028,7 +10766,7 @@ "links": { "Homepage": "https://www.thetatoken.org/" }, - "marketcap_usd": 89963068, + "marketcap_usd": 86247309, "name": "Theta Token", "network": "eth", "shortcut": "THETA", @@ -11049,7 +10787,265 @@ "marketcap_usd": 0, "name": "THUG", "network": "eth", - "shortcut": "THUG", + "shortcut": "THUG", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:TIME": { + "address": "0x6531f133e6DeeBe7F2dcE5A0441aA7ef330B4e53", + "links": { + "Homepage": "https://chronobank.io" + }, + "marketcap_usd": 8070858, + "name": "Chronobank", + "network": "eth", + "shortcut": "TIME", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:TIO": { + "address": "0x80BC5512561c7f85A3A9508c7df7901b370Fa1DF", + "links": { + "Homepage": "https://trade.io" + }, + "marketcap_usd": 0, + "name": "TIO", + "network": "eth", + "shortcut": "TIO", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:TIX": { + "address": "0xEa1f346faF023F974Eb5adaf088BbCdf02d761F4", + "links": { + "Homepage": "https://www.blocktix.io" + }, + "marketcap_usd": 10202800, + "name": "Blocktix", + "network": "eth", + "shortcut": "TIX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:TKN": { + "address": "0xaAAf91D9b90dF800Df4F55c205fd6989c977E73a", + "links": { + "Homepage": "https://etherscan.io/token/TokenCard" + }, + "marketcap_usd": 18520799, + "name": "TokenCard", + "network": "eth", + "shortcut": "TKN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:TNT": { + "address": "0x08f5a9235B08173b7569F83645d2c7fB55e8cCD8", + "links": { + "Github": "https://github.com/tierion", + "Homepage": "https://tierion.com" + }, + "marketcap_usd": 0, + "name": "Tierion Network Token", + "network": "eth", + "shortcut": "TNT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:TOOR": { + "address": "0x8eb965ee9cCFBCE76c0a06264492c0afEfc2826d", + "links": { + "Github": "https://github.com/toorister/toorcoin", + "Homepage": "https://www.toorcoin.com" + }, + "marketcap_usd": 0, + "name": "ToorCoin", + "network": "eth", + "shortcut": "TOOR", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:TRC": { + "address": "0xcB3F902bf97626391bF8bA87264bbC3DC13469be", + "hidden": 1, + "links": {}, + "marketcap_usd": 0, + "name": "The Real Coin", + "network": "eth", + "shortcut": "TRC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:TRCN": { + "address": "0x566Fd7999B1Fc3988022bD38507A48F0bCf22c77", + "links": { + "Homepage": "http://www.therealcoinz.com" + }, + "marketcap_usd": 0, + "name": "The Real Coin", + "network": "eth", + "shortcut": "TRCN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:TRST": { + "address": "0xCb94be6f13A1182E4A4B6140cb7bf2025d28e41B", + "links": { + "Github": "https://github.com/WeTrustPlatform", + "Homepage": "https://www.wetrust.io" + }, + "marketcap_usd": 0, + "name": "TRST", + "network": "eth", + "shortcut": "TRST", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:TRX": { + "address": "0xf230b790E05390FC8295F4d3F60332c93BEd42e2", + "links": { + "Homepage": "https://tronlab.com/en.html" + }, + "marketcap_usd": 0, + "name": "Tron Lab Token", + "network": "eth", + "shortcut": "TRX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:TWN": { + "address": "0x2eF1aB8a26187C58BB8aAeB11B2fC6D25C5c0716", + "links": { + "Homepage": "https://ico.theworldnews.net" + }, + "marketcap_usd": 0, + "name": "The World News", + "network": "eth", + "shortcut": "TWN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:TWNKL": { + "address": "0xfbd0d1c77B501796A35D86cF91d65D9778EeE695", + "links": { + "Homepage": "https://www.rainbowcurrency.com/" + }, + "marketcap_usd": 0, + "name": "Twinkle", + "network": "eth", + "shortcut": "TWNKL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:TaaS": { + "address": "0xE7775A6e9Bcf904eb39DA2b68c5efb4F9360e08C", + "links": { + "Homepage": "https://taas.fund" + }, + "marketcap_usd": 15739703, + "name": "Token-as-a-Service", + "network": "eth", + "shortcut": "TaaS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:UKG": { + "address": "0x24692791Bc444c5Cd0b81e3CBCaba4b04Acd1F3B", + "links": { + "Github": "https://github.com/unikoingold/UnikoinGold-UKG-Contract", + "Homepage": "https://unikoingold.com" + }, + "marketcap_usd": 0, + "name": "UnikoinGold", + "network": "eth", + "shortcut": "UKG", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:UQC": { + "address": "0xD01DB73E047855Efb414e6202098C4Be4Cd2423B", + "links": { + "Homepage": "https://uquidcoin.com" + }, + "marketcap_usd": 9677610, + "name": "Uquid Coin", + "network": "eth", + "shortcut": "UQC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11058,15 +11054,14 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:TIME": { - "address": "0x6531f133e6DeeBe7F2dcE5A0441aA7ef330B4e53", - "links": { - "Homepage": "https://chronobank.io" - }, - "marketcap_usd": 7932457, - "name": "Chronobank", + "erc20:eth:USDM": { + "address": "0xD760ADdFb24D9C01Fe4Bfea7475C5e3636684058", + "hidden": 1, + "links": {}, + "marketcap_usd": 0, + "name": "Mether (USDM)", "network": "eth", - "shortcut": "TIME", + "shortcut": "USDM", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11075,15 +11070,15 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:TIO": { - "address": "0x80BC5512561c7f85A3A9508c7df7901b370Fa1DF", + "erc20:eth:USDT": { + "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7", "links": { - "Homepage": "https://trade.io" + "Homepage": "https://tether.to" }, "marketcap_usd": 0, - "name": "TIO", + "name": "USD Tether (erc20)", "network": "eth", - "shortcut": "TIO", + "shortcut": "USDT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11092,15 +11087,15 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:TIX": { - "address": "0xEa1f346faF023F974Eb5adaf088BbCdf02d761F4", + "erc20:eth:UTK": { + "address": "0x70a72833d6bF7F508C8224CE59ea1Ef3d0Ea3A38", "links": { - "Homepage": "https://www.blocktix.io" + "Homepage": "https://utrust.io" }, - "marketcap_usd": 10873640, - "name": "Blocktix", + "marketcap_usd": 0, + "name": "UTK", "network": "eth", - "shortcut": "TIX", + "shortcut": "UTK", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11109,15 +11104,16 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:TKN": { - "address": "0xaAAf91D9b90dF800Df4F55c205fd6989c977E73a", + "erc20:eth:UTN-P": { + "address": "0x9e3319636e2126e3c0bc9e3134AEC5e1508A46c7", "links": { - "Homepage": "https://etherscan.io/token/TokenCard" + "Github": "https://github.com/UniversaBlockchain/universa", + "Homepage": "https://www.universa.io/" }, - "marketcap_usd": 21155308, - "name": "TokenCard", + "marketcap_usd": 19633367, + "name": "Universa", "network": "eth", - "shortcut": "TKN", + "shortcut": "UTN-P", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11126,16 +11122,15 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:TNT": { - "address": "0x08f5a9235B08173b7569F83645d2c7fB55e8cCD8", + "erc20:eth:UUU": { + "address": "0x3543638eD4a9006E4840B105944271Bcea15605D", "links": { - "Github": "https://github.com/tierion", - "Homepage": "https://tierion.com" + "Homepage": "https://u.network/" }, "marketcap_usd": 0, - "name": "Tierion Network Token", + "name": "U Networks", "network": "eth", - "shortcut": "TNT", + "shortcut": "UUU", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11144,48 +11139,50 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:TOOR": { - "address": "0x8eb965ee9cCFBCE76c0a06264492c0afEfc2826d", - "links": { - "Github": "https://github.com/toorister/toorcoin", - "Homepage": "https://www.toorcoin.com" - }, - "name": "ToorCoin", + "erc20:eth:Unicorn": { + "address": "0x89205A3A3b2A69De6Dbf7f01ED13B2108B2c43e7", + "hidden": 1, + "links": {}, + "marketcap_usd": 0, + "name": "Unicorn", "network": "eth", - "shortcut": "TOOR", - "t1_enabled": "soon", - "t2_enabled": "soon", + "shortcut": "Unicorn", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:TRC": { - "address": "0xcB3F902bf97626391bF8bA87264bbC3DC13469be", - "hidden": 1, - "links": {}, + "erc20:eth:VDG": { + "address": "0x57C75ECCc8557136D32619a191fBCDc88560d711", + "links": { + "Github": "https://github.com/VeriDocGlobal", + "Homepage": "https://www.veridocglobal.com/" + }, "marketcap_usd": 0, - "name": "The Real Coin", + "name": "VeriDocGlobal", "network": "eth", - "shortcut": "TRC", - "t1_enabled": "yes", - "t2_enabled": "yes", + "shortcut": "VDG", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:TRCN": { - "address": "0x566Fd7999B1Fc3988022bD38507A48F0bCf22c77", + "erc20:eth:VDOC": { + "address": "0x82BD526bDB718C6d4DD2291Ed013A5186cAE2DCa", "links": { - "Homepage": "http://www.therealcoinz.com" + "Github": "https://github.com/BlueBikeSolutions", + "Homepage": "https://www.dutyof.care/token-launch/" }, "marketcap_usd": 0, - "name": "The Real Coin", + "name": "Duty of Care Token", "network": "eth", - "shortcut": "TRCN", + "shortcut": "VDOC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11194,16 +11191,16 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:TRST": { - "address": "0xCb94be6f13A1182E4A4B6140cb7bf2025d28e41B", + "erc20:eth:VEE": { + "address": "0x340D2bdE5Eb28c1eed91B2f790723E3B160613B7", "links": { - "Github": "https://github.com/WeTrustPlatform", - "Homepage": "https://www.wetrust.io" + "Github": "https://github.com/blockv", + "Homepage": "https://blockv.io" }, - "marketcap_usd": 0, - "name": "TRST", + "marketcap_usd": 37970723, + "name": "BLOCKv", "network": "eth", - "shortcut": "TRST", + "shortcut": "VEE", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11212,15 +11209,15 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:TRX": { - "address": "0xf230b790E05390FC8295F4d3F60332c93BEd42e2", + "erc20:eth:VENUS": { + "address": "0xEbeD4fF9fe34413db8fC8294556BBD1528a4DAca", "links": { - "Homepage": "https://tronlab.com/en.html" + "Homepage": "http://venuscoin.net" }, "marketcap_usd": 0, - "name": "Tron Lab Token", + "name": "VENUS", "network": "eth", - "shortcut": "TRX", + "shortcut": "VENUS", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11229,15 +11226,15 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:TWN": { - "address": "0x2eF1aB8a26187C58BB8aAeB11B2fC6D25C5c0716", + "erc20:eth:VERI": { + "address": "0x8f3470A7388c05eE4e7AF3d01D8C722b0FF52374", "links": { - "Homepage": "https://ico.theworldnews.net" + "Homepage": "http://veritas.veritaseum.com/index.php" }, "marketcap_usd": 0, - "name": "The World News", + "name": "Veritas", "network": "eth", - "shortcut": "TWN", + "shortcut": "VERI", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11246,15 +11243,16 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:TWNKL": { - "address": "0xfbd0d1c77B501796A35D86cF91d65D9778EeE695", + "erc20:eth:VET": { + "address": "0xD850942eF8811f2A866692A623011bDE52a462C1", "links": { - "Homepage": "https://www.rainbowcurrency.com/" + "Github": "https://github.com/vechain-team", + "Homepage": "https://tokensale.vechain.com/en" }, - "marketcap_usd": 0, - "name": "Twinkle", + "marketcap_usd": 1322696366, + "name": "Vechain", "network": "eth", - "shortcut": "TWNKL", + "shortcut": "VET", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11263,15 +11261,15 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:TaaS": { - "address": "0xE7775A6e9Bcf904eb39DA2b68c5efb4F9360e08C", + "erc20:eth:VIB": { + "address": "0x2C974B2d0BA1716E644c1FC59982a89DDD2fF724", "links": { - "Homepage": "https://taas.fund" + "Homepage": "https://www.viberate.io" }, - "marketcap_usd": 15088511, - "name": "Token-as-a-Service", + "marketcap_usd": 0, + "name": "VIB", "network": "eth", - "shortcut": "TaaS", + "shortcut": "VIB", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11280,16 +11278,15 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:UKG": { - "address": "0x24692791Bc444c5Cd0b81e3CBCaba4b04Acd1F3B", + "erc20:eth:VIEW": { + "address": "0xF03f8D65BaFA598611C3495124093c56e8F638f0", "links": { - "Github": "https://github.com/unikoingold/UnikoinGold-UKG-Contract", - "Homepage": "https://unikoingold.com" + "Homepage": "https://view.ly/" }, "marketcap_usd": 0, - "name": "UnikoinGold", + "name": "Viewly", "network": "eth", - "shortcut": "UKG", + "shortcut": "VIEW", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11298,15 +11295,16 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:UQC": { - "address": "0xD01DB73E047855Efb414e6202098C4Be4Cd2423B", + "erc20:eth:VIT": { + "address": "0x23b75Bc7AaF28e2d6628C3f424B3882F8f072a3c", "links": { - "Homepage": "https://uquidcoin.com" + "Github": "https://github.com/ViceIndustryToken", + "Homepage": "https://vicetoken.com/" }, - "marketcap_usd": 8930390, - "name": "Uquid Coin", + "marketcap_usd": 1687601, + "name": "Vice Industry Token", "network": "eth", - "shortcut": "UQC", + "shortcut": "VIT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11315,14 +11313,16 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:USDM": { - "address": "0xD760ADdFb24D9C01Fe4Bfea7475C5e3636684058", - "hidden": 1, - "links": {}, + "erc20:eth:VIU": { + "address": "0x519475b31653E46D20cD09F9FdcF3B12BDAcB4f5", + "links": { + "Github": "https://github.com/viuly", + "Homepage": "https://viuly.io" + }, "marketcap_usd": 0, - "name": "Mether (USDM)", + "name": "VIU", "network": "eth", - "shortcut": "USDM", + "shortcut": "VIU", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11331,15 +11331,16 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:USDT": { - "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7", + "erc20:eth:VLD": { + "address": "0x922aC473A3cC241fD3a0049Ed14536452D58D73c", "links": { - "Homepage": "https://tether.to" + "Github": "https://github.com/vetri-global/", + "Homepage": "https://vetri.global/" }, "marketcap_usd": 0, - "name": "USD Tether (erc20)", + "name": "VETRI", "network": "eth", - "shortcut": "USDT", + "shortcut": "VLD", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11348,15 +11349,16 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:UTK": { - "address": "0x70a72833d6bF7F508C8224CE59ea1Ef3d0Ea3A38", + "erc20:eth:VOC": { + "address": "0xc3bC9Eb71f75Ec439A6b6C8E8b746fCF5b62F703", "links": { - "Homepage": "https://utrust.io" + "Github": "https://github.com/vormacoin", + "Homepage": "https://vormacoin.io/" }, "marketcap_usd": 0, - "name": "UTK", + "name": "VORMACOIN", "network": "eth", - "shortcut": "UTK", + "shortcut": "VOC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11365,16 +11367,15 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:UTN-P": { - "address": "0x9e3319636e2126e3c0bc9e3134AEC5e1508A46c7", + "erc20:eth:VOISE": { + "address": "0x83eEA00D838f92dEC4D1475697B9f4D3537b56E3", "links": { - "Github": "https://github.com/UniversaBlockchain/universa", - "Homepage": "https://www.universa.io/" + "Homepage": "https://voise.it" }, - "marketcap_usd": 21558807, - "name": "Universa", + "marketcap_usd": 0, + "name": "Voise", "network": "eth", - "shortcut": "UTN-P", + "shortcut": "VOISE", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11383,15 +11384,15 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:UUU": { - "address": "0x3543638eD4a9006E4840B105944271Bcea15605D", + "erc20:eth:VRS": { + "address": "0xeDBaF3c5100302dCddA53269322f3730b1F0416d", "links": { - "Homepage": "https://u.network/" + "Homepage": "https://veros.org" }, - "marketcap_usd": 0, - "name": "U Networks", + "marketcap_usd": 390848, + "name": "Veros", "network": "eth", - "shortcut": "UUU", + "shortcut": "VRS", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11400,14 +11401,15 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:Unicorn": { - "address": "0x89205A3A3b2A69De6Dbf7f01ED13B2108B2c43e7", - "hidden": 1, - "links": {}, + "erc20:eth:VSL": { + "address": "0x5c543e7AE0A1104f78406C340E9C64FD9fCE5170", + "links": { + "Homepage": "https://www.vdice.io" + }, "marketcap_usd": 0, - "name": "Unicorn", + "name": "Vdice", "network": "eth", - "shortcut": "Unicorn", + "shortcut": "VSL", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11416,33 +11418,33 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:VDG": { - "address": "0x57C75ECCc8557136D32619a191fBCDc88560d711", + "erc20:eth:WAX": { + "address": "0x39Bb259F66E1C59d5ABEF88375979b4D20D98022", "links": { - "Github": "https://github.com/VeriDocGlobal", - "Homepage": "https://www.veridocglobal.com/" + "Github": "https://github.com/waxio", + "Homepage": "https://wax.io" }, - "name": "VeriDocGlobal", + "marketcap_usd": 126705683, + "name": "WAX", "network": "eth", - "shortcut": "VDG", - "t1_enabled": "soon", - "t2_enabled": "soon", + "shortcut": "WAX", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:VDOC": { - "address": "0x82BD526bDB718C6d4DD2291Ed013A5186cAE2DCa", + "erc20:eth:WBA": { + "address": "0x74951B677de32D596EE851A233336926e6A2cd09", "links": { - "Github": "https://github.com/BlueBikeSolutions", - "Homepage": "https://www.dutyof.care/token-launch/" + "Homepage": "http://webetcrypto.io/wbc" }, "marketcap_usd": 0, - "name": "Duty of Care Token", + "name": "WeBetCrypto", "network": "eth", - "shortcut": "VDOC", + "shortcut": "WBA", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11451,16 +11453,16 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:VEE": { - "address": "0x340D2bdE5Eb28c1eed91B2f790723E3B160613B7", + "erc20:eth:WCN": { + "address": "0x8F936fE0faF0604c9C0Ef2406bde0A65365515d6", "links": { - "Github": "https://github.com/blockv", - "Homepage": "https://blockv.io" + "Github": "https://github.com/WorldCoinNetwork", + "Homepage": "https://worldcoin.cash/" }, - "marketcap_usd": 38615763, - "name": "BLOCKv", + "marketcap_usd": 0, + "name": "WorldCoinNetwork", "network": "eth", - "shortcut": "VEE", + "shortcut": "WCN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11469,15 +11471,15 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:VENUS": { - "address": "0xEbeD4fF9fe34413db8fC8294556BBD1528a4DAca", + "erc20:eth:WCT": { + "address": "0x6a0A97E47d15aAd1D132a1Ac79a480E3F2079063", "links": { - "Homepage": "http://venuscoin.net" + "Homepage": "https://wepower.network" }, - "marketcap_usd": 0, - "name": "VENUS", + "marketcap_usd": 17623431, + "name": "WePower", "network": "eth", - "shortcut": "VENUS", + "shortcut": "WCT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11486,15 +11488,15 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:VERI": { - "address": "0x8f3470A7388c05eE4e7AF3d01D8C722b0FF52374", + "erc20:eth:WETH": { + "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", "links": { - "Homepage": "http://veritas.veritaseum.com/index.php" + "Homepage": "https://weth.io" }, "marketcap_usd": 0, - "name": "Veritas", + "name": "WETH", "network": "eth", - "shortcut": "VERI", + "shortcut": "WETH", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11503,16 +11505,16 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:VET": { - "address": "0xD850942eF8811f2A866692A623011bDE52a462C1", + "erc20:eth:WHEN": { + "address": "0xF4FE95603881D0e07954fD7605E0e9a916e42C44", "links": { - "Github": "https://github.com/vechain-team", - "Homepage": "https://tokensale.vechain.com/en" + "Github": "https://github.com/WhenHub", + "Homepage": "https://interface.whenhub.com" }, - "marketcap_usd": 904502518, - "name": "Vechain", + "marketcap_usd": 0, + "name": "WHEN Token", "network": "eth", - "shortcut": "VET", + "shortcut": "WHEN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11521,15 +11523,16 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:VIB": { - "address": "0x2C974B2d0BA1716E644c1FC59982a89DDD2fF724", + "erc20:eth:WIC": { + "address": "0x62CD07D414Ec50B68C7EcAa863a23d344f2d062f", "links": { - "Homepage": "https://www.viberate.io" + "Github": "https://github.com/wicknote/wicknote", + "Homepage": "https://wicknote.com" }, "marketcap_usd": 0, - "name": "VIB", + "name": "WickNote", "network": "eth", - "shortcut": "VIB", + "shortcut": "WIC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11538,15 +11541,16 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:VIEW": { - "address": "0xF03f8D65BaFA598611C3495124093c56e8F638f0", + "erc20:eth:WILD": { + "address": "0xD3C00772B24D997A812249ca637a921e81357701", "links": { - "Homepage": "https://view.ly/" + "Github": "https://github.com/WildCryptoICO/Wild-Crypto-Token", + "Homepage": "http://www.wildcrypto.com" }, "marketcap_usd": 0, - "name": "Viewly", + "name": "WILD Token", "network": "eth", - "shortcut": "VIEW", + "shortcut": "WILD", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11555,16 +11559,15 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:VIT": { - "address": "0x23b75Bc7AaF28e2d6628C3f424B3882F8f072a3c", + "erc20:eth:WINGS": { + "address": "0x667088b212ce3d06a1b553a7221E1fD19000d9aF", "links": { - "Github": "https://github.com/ViceIndustryToken", - "Homepage": "https://vicetoken.com/" + "Homepage": "https://wings.ai" }, - "marketcap_usd": 1572575, - "name": "Vice Industry Token", + "marketcap_usd": 19729554, + "name": "WINGS", "network": "eth", - "shortcut": "VIT", + "shortcut": "WINGS", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11573,16 +11576,16 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:VIU": { - "address": "0x519475b31653E46D20cD09F9FdcF3B12BDAcB4f5", + "erc20:eth:WORK": { + "address": "0xD18e454D844eb0009D32E07A0Cde89E18d64CFb4", "links": { - "Github": "https://github.com/viuly", - "Homepage": "https://viuly.io" + "Github": "https://github.com/workchainio", + "Homepage": "https://workchain.io" }, "marketcap_usd": 0, - "name": "VIU", + "name": "workTOKEN", "network": "eth", - "shortcut": "VIU", + "shortcut": "WORK", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11591,16 +11594,15 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:VLD": { - "address": "0x922aC473A3cC241fD3a0049Ed14536452D58D73c", + "erc20:eth:WPC": { + "address": "0x62087245087125d3DB5B9A3D713d78E7BBc31e54", "links": { - "Github": "https://github.com/vetri-global/", - "Homepage": "https://vetri.global/" + "Homepage": "http://www.worldpeacecoin.io" }, "marketcap_usd": 0, - "name": "VETRI", + "name": "WorldPeaceCoin", "network": "eth", - "shortcut": "VLD", + "shortcut": "WPC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11609,16 +11611,15 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:VOC": { - "address": "0xc3bC9Eb71f75Ec439A6b6C8E8b746fCF5b62F703", + "erc20:eth:WPR": { + "address": "0x4CF488387F035FF08c371515562CBa712f9015d4", "links": { - "Github": "https://github.com/vormacoin", - "Homepage": "https://vormacoin.io/" + "Homepage": "https://wepower.network" }, "marketcap_usd": 0, - "name": "VORMACOIN", + "name": "WePower Token", "network": "eth", - "shortcut": "VOC", + "shortcut": "WPR", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11627,15 +11628,16 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:VOISE": { - "address": "0x83eEA00D838f92dEC4D1475697B9f4D3537b56E3", + "erc20:eth:WRK": { + "address": "0x71e8d74fF1C923E369D0e70DFb09866629C4DD35", "links": { - "Homepage": "https://voise.it" + "Github": "https://github.com/TMWorkCoin", + "Homepage": "https://workcoin.net/" }, "marketcap_usd": 0, - "name": "Voise", + "name": "WorkCoin", "network": "eth", - "shortcut": "VOISE", + "shortcut": "WRK", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11644,15 +11646,32 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:VRS": { - "address": "0xeDBaF3c5100302dCddA53269322f3730b1F0416d", + "erc20:eth:WTC": { + "address": "0xb7cB1C96dB6B22b0D3d9536E0108d062BD488F74", + "hidden": 1, + "links": {}, + "marketcap_usd": 0, + "name": "Walton", + "network": "eth", + "shortcut": "WTC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:WYS": { + "address": "0xd8950fDeaa10304B7A7Fd03a2FC66BC39f3c711a", "links": { - "Homepage": "https://veros.org" + "Github": "https://github.com/wysker", + "Homepage": "https://www.wystoken.org" }, - "marketcap_usd": 368631, - "name": "Veros", + "marketcap_usd": 0, + "name": "wystoken", "network": "eth", - "shortcut": "VRS", + "shortcut": "WYS", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11661,15 +11680,16 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:VSL": { - "address": "0x5c543e7AE0A1104f78406C340E9C64FD9fCE5170", + "erc20:eth:WYV": { + "address": "0x056017c55aE7AE32d12AeF7C679dF83A85ca75Ff", "links": { - "Homepage": "https://www.vdice.io" + "Github": "https://github.com/ProjectWyvern", + "Homepage": "https://projectwyvern.com" }, "marketcap_usd": 0, - "name": "Vdice", + "name": "WyvernToken", "network": "eth", - "shortcut": "VSL", + "shortcut": "WYV", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11678,16 +11698,15 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:WAX": { - "address": "0x39Bb259F66E1C59d5ABEF88375979b4D20D98022", + "erc20:eth:WaBi": { + "address": "0x286BDA1413a2Df81731D4930ce2F862a35A609fE", "links": { - "Github": "https://github.com/waxio", - "Homepage": "https://wax.io" + "Homepage": "https://www.wacoin.io" }, - "marketcap_usd": 120008204, - "name": "WAX", + "marketcap_usd": 13995669, + "name": "WaBi", "network": "eth", - "shortcut": "WAX", + "shortcut": "WaBi", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11696,15 +11715,15 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:WBA": { - "address": "0x74951B677de32D596EE851A233336926e6A2cd09", + "erc20:eth:WiC": { + "address": "0x5e4ABE6419650CA839Ce5BB7Db422b881a6064bB", "links": { - "Homepage": "http://webetcrypto.io/wbc" + "Homepage": "https://www.cryptowi.com/" }, "marketcap_usd": 0, - "name": "WeBetCrypto", + "name": "Wi Coin", "network": "eth", - "shortcut": "WBA", + "shortcut": "WiC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11713,16 +11732,15 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:WCN": { - "address": "0x8F936fE0faF0604c9C0Ef2406bde0A65365515d6", + "erc20:eth:X8X": { + "address": "0x910Dfc18D6EA3D6a7124A6F8B5458F281060fa4c", "links": { - "Github": "https://github.com/WorldCoinNetwork", - "Homepage": "https://worldcoin.cash/" + "Homepage": "https://x8currency.com" }, "marketcap_usd": 0, - "name": "WorldCoinNetwork", + "name": "X8X", "network": "eth", - "shortcut": "WCN", + "shortcut": "X8X", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11731,15 +11749,15 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:WCT": { - "address": "0x6a0A97E47d15aAd1D132a1Ac79a480E3F2079063", + "erc20:eth:XAUR": { + "address": "0x4DF812F6064def1e5e029f1ca858777CC98D2D81", "links": { - "Homepage": "https://wepower.network" + "Homepage": "http://www.xaurum.org" }, - "marketcap_usd": 20502348, - "name": "WePower", + "marketcap_usd": 4150927, + "name": "Xaurum", "network": "eth", - "shortcut": "WCT", + "shortcut": "XAUR", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11748,15 +11766,16 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:WETH": { - "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "erc20:eth:XBP": { + "address": "0x28dee01D53FED0Edf5f6E310BF8Ef9311513Ae40", "links": { - "Homepage": "https://weth.io" + "Github": "https://github.com/blitzpredict", + "Homepage": "https://www.blitzpredict.io" }, - "marketcap_usd": 0, - "name": "WETH", + "marketcap_usd": 1206956, + "name": "BlitzPredict", "network": "eth", - "shortcut": "WETH", + "shortcut": "XBP", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11765,16 +11784,16 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:WHEN": { - "address": "0xF4FE95603881D0e07954fD7605E0e9a916e42C44", + "erc20:eth:XCC": { + "address": "0x4d829f8C92a6691c56300D020c9e0dB984Cfe2BA", "links": { - "Github": "https://github.com/WhenHub", - "Homepage": "https://interface.whenhub.com" + "Github": "https://github.com/coincrowd-it", + "Homepage": "https://www.coincrowd.it" }, "marketcap_usd": 0, - "name": "WHEN Token", + "name": "CoinCrowd", "network": "eth", - "shortcut": "WHEN", + "shortcut": "XCC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11783,16 +11802,15 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:WIC": { - "address": "0x62CD07D414Ec50B68C7EcAa863a23d344f2d062f", + "erc20:eth:XFS": { + "address": "0x16aF5bfb4Ae7E475b9aDC3Bf5Cb2f1E6a50d7940", "links": { - "Github": "https://github.com/wicknote/wicknote", - "Homepage": "https://wicknote.com" + "Homepage": "http://fanship.world/" }, "marketcap_usd": 0, - "name": "WickNote", + "name": "Fanship", "network": "eth", - "shortcut": "WIC", + "shortcut": "XFS", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11801,16 +11819,16 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:WILD": { - "address": "0xD3C00772B24D997A812249ca637a921e81357701", + "erc20:eth:XGG": { + "address": "0xf6b6AA0Ef0f5Edc2C1c5d925477F97eAF66303e7", "links": { - "Github": "https://github.com/WildCryptoICO/Wild-Crypto-Token", - "Homepage": "http://www.wildcrypto.com" + "Github": "https://github.com/GoingGems", + "Homepage": "https://www.going-gems.com" }, "marketcap_usd": 0, - "name": "WILD Token", + "name": "Going Gems", "network": "eth", - "shortcut": "WILD", + "shortcut": "XGG", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11819,15 +11837,15 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:WINGS": { - "address": "0x667088b212ce3d06a1b553a7221E1fD19000d9aF", + "erc20:eth:XGM": { + "address": "0x533ef0984b2FAA227AcC620C67cce12aA39CD8CD", "links": { - "Homepage": "https://wings.ai" + "Homepage": "https://www.xaurum.org/gamma" }, - "marketcap_usd": 20746667, - "name": "WINGS", + "marketcap_usd": 0, + "name": "XGM", "network": "eth", - "shortcut": "WINGS", + "shortcut": "XGM", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11836,16 +11854,16 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:WORK": { - "address": "0xD18e454D844eb0009D32E07A0Cde89E18d64CFb4", + "erc20:eth:XGT": { + "address": "0x30f4A3e0aB7a76733D8b60b89DD93c3D0b4c9E2f", "links": { - "Github": "https://github.com/workchainio", - "Homepage": "https://workchain.io" + "Github": "https://github.com/CryptogeneProject/CryptogeneToken", + "Homepage": "https://cryptogene.co" }, "marketcap_usd": 0, - "name": "workTOKEN", + "name": "XGT", "network": "eth", - "shortcut": "WORK", + "shortcut": "XGT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11854,15 +11872,15 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:WPC": { - "address": "0x62087245087125d3DB5B9A3D713d78E7BBc31e54", + "erc20:eth:XID": { + "address": "0xB110eC7B1dcb8FAB8dEDbf28f53Bc63eA5BEdd84", "links": { - "Homepage": "http://www.worldpeacecoin.io" + "Homepage": "https://sphereidentity.com" }, "marketcap_usd": 0, - "name": "WorldPeaceCoin", + "name": "XID", "network": "eth", - "shortcut": "WPC", + "shortcut": "XID", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11871,15 +11889,16 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:WPR": { - "address": "0x4CF488387F035FF08c371515562CBa712f9015d4", + "erc20:eth:XNK": { + "address": "0xBC86727E770de68B1060C91f6BB6945c73e10388", "links": { - "Homepage": "https://wepower.network" + "Github": "https://github.com/InkProtocol/", + "Homepage": "https://paywithink.com" }, - "marketcap_usd": 0, - "name": "WePower Token", + "marketcap_usd": 3160605, + "name": "Ink Protocol", "network": "eth", - "shortcut": "WPR", + "shortcut": "XNK", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11888,16 +11907,15 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:WRK": { - "address": "0x71e8d74fF1C923E369D0e70DFb09866629C4DD35", + "erc20:eth:XNN": { + "address": "0xab95E915c123fdEd5BDfB6325e35ef5515F1EA69", "links": { - "Github": "https://github.com/TMWorkCoin", - "Homepage": "https://workcoin.net/" + "Homepage": "https://xenon.network" }, - "marketcap_usd": 0, - "name": "WorkCoin", + "marketcap_usd": 1665792, + "name": "XENON", "network": "eth", - "shortcut": "WRK", + "shortcut": "XNN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11906,14 +11924,15 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:WTC": { - "address": "0xb7cB1C96dB6B22b0D3d9536E0108d062BD488F74", - "hidden": 1, - "links": {}, + "erc20:eth:XNT": { + "address": "0x572E6f318056ba0C5d47A422653113843D250691", + "links": { + "Homepage": "https://exante.eu" + }, "marketcap_usd": 0, - "name": "Walton", + "name": "XNT", "network": "eth", - "shortcut": "WTC", + "shortcut": "XNT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11922,16 +11941,15 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:WYS": { - "address": "0xd8950fDeaa10304B7A7Fd03a2FC66BC39f3c711a", + "erc20:eth:XRL": { + "address": "0xB24754bE79281553dc1adC160ddF5Cd9b74361a4", "links": { - "Github": "https://github.com/wysker", - "Homepage": "https://www.wystoken.org" + "Homepage": "https://rialto.ai" }, "marketcap_usd": 0, - "name": "wystoken", + "name": "XRL", "network": "eth", - "shortcut": "WYS", + "shortcut": "XRL", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11940,16 +11958,15 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:WYV": { - "address": "0x056017c55aE7AE32d12AeF7C679dF83A85ca75Ff", + "erc20:eth:XSC": { + "address": "0x0F513fFb4926ff82D7F60A05069047AcA295C413", "links": { - "Github": "https://github.com/ProjectWyvern", - "Homepage": "https://projectwyvern.com" + "Homepage": "http://crowdstart.capital" }, "marketcap_usd": 0, - "name": "WyvernToken", + "name": "XSC", "network": "eth", - "shortcut": "WYV", + "shortcut": "XSC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11958,15 +11975,15 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:WaBi": { - "address": "0x286BDA1413a2Df81731D4930ce2F862a35A609fE", + "erc20:eth:YEED": { + "address": "0x6F7A4bac3315B5082F793161a22e26666d22717f", "links": { - "Homepage": "https://www.wacoin.io" + "Homepage": "https://yggdrash.io" }, - "marketcap_usd": 16417389, - "name": "WaBi", + "marketcap_usd": 0, + "name": "YEED", "network": "eth", - "shortcut": "WaBi", + "shortcut": "YEED", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11975,32 +11992,34 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:WiC": { - "address": "0x5e4ABE6419650CA839Ce5BB7Db422b881a6064bB", + "erc20:eth:YUP": { + "address": "0xD9A12Cde03a86E800496469858De8581D3A5353d", "links": { - "Homepage": "https://www.cryptowi.com/" + "Github": "https://github.com/crowdholding/", + "Homepage": "https://www.crowdholding.com" }, "marketcap_usd": 0, - "name": "Wi Coin", + "name": "YUP", "network": "eth", - "shortcut": "WiC", - "t1_enabled": "yes", - "t2_enabled": "yes", + "shortcut": "YUP", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:X8X": { - "address": "0x910Dfc18D6EA3D6a7124A6F8B5458F281060fa4c", + "erc20:eth:YUPIE": { + "address": "0x0F33bb20a282A7649C7B3AFf644F084a9348e933", "links": { - "Homepage": "https://x8currency.com" + "Github": "https://github.com/crowdholdingico/YupieSmartContract", + "Homepage": "https://www.crowdholding.com" }, "marketcap_usd": 0, - "name": "X8X", + "name": "YUPIE", "network": "eth", - "shortcut": "X8X", + "shortcut": "YUPIE", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12009,15 +12028,16 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:XAUR": { - "address": "0x4DF812F6064def1e5e029f1ca858777CC98D2D81", + "erc20:eth:ZAP": { + "address": "0x6781a0F84c7E9e846DCb84A9a5bd49333067b104", "links": { - "Homepage": "http://www.xaurum.org" + "Github": "https://github.com/zapproject", + "Homepage": "https://zap.store" }, - "marketcap_usd": 4841766, - "name": "Xaurum", + "marketcap_usd": 4758475, + "name": "ZAP", "network": "eth", - "shortcut": "XAUR", + "shortcut": "ZAP", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12026,16 +12046,15 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:XBP": { - "address": "0x28dee01D53FED0Edf5f6E310BF8Ef9311513Ae40", + "erc20:eth:ZCS": { + "address": "0x7A41e0517a5ecA4FdbC7FbebA4D4c47B9fF6DC63", "links": { - "Github": "https://github.com/blitzpredict", - "Homepage": "https://www.blitzpredict.io" + "Homepage": "https://zsc.io/" }, - "marketcap_usd": 1336047, - "name": "BlitzPredict", + "marketcap_usd": 9654553, + "name": "Zeusshield", "network": "eth", - "shortcut": "XBP", + "shortcut": "ZCS", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12044,16 +12063,16 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:XCC": { - "address": "0x4d829f8C92a6691c56300D020c9e0dB984Cfe2BA", + "erc20:eth:ZIL": { + "address": "0x05f4a42e251f2d52b8ed15E9FEdAacFcEF1FAD27", "links": { - "Github": "https://github.com/coincrowd-it", - "Homepage": "https://www.coincrowd.it" + "Github": "https://github.com/zilliqa", + "Homepage": "https://www.zilliqa.com/" }, - "marketcap_usd": 0, - "name": "CoinCrowd", + "marketcap_usd": 548784076, + "name": "Zilliqa", "network": "eth", - "shortcut": "XCC", + "shortcut": "ZIL", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12062,15 +12081,15 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:XFS": { - "address": "0x16aF5bfb4Ae7E475b9aDC3Bf5Cb2f1E6a50d7940", + "erc20:eth:ZMN": { + "address": "0x554FFc77F4251a9fB3c0E3590a6a205f8d4e067D", "links": { - "Homepage": "http://fanship.world/" + "Homepage": "https://www.zmine.com" }, "marketcap_usd": 0, - "name": "Fanship", + "name": "ZMINE", "network": "eth", - "shortcut": "XFS", + "shortcut": "ZMN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12079,16 +12098,16 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:XGG": { - "address": "0xf6b6AA0Ef0f5Edc2C1c5d925477F97eAF66303e7", + "erc20:eth:ZRX": { + "address": "0xE41d2489571d322189246DaFA5ebDe1F4699F498", "links": { - "Github": "https://github.com/GoingGems", - "Homepage": "https://www.going-gems.com" + "Github": "https://github.com/0xProject", + "Homepage": "https://0xproject.com" }, "marketcap_usd": 0, - "name": "Going Gems", + "name": "0x Project", "network": "eth", - "shortcut": "XGG", + "shortcut": "ZRX", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12097,15 +12116,15 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:XGM": { - "address": "0x533ef0984b2FAA227AcC620C67cce12aA39CD8CD", + "erc20:eth:ZST": { + "address": "0xe386B139Ed3715Ca4B18Fd52671bDcea1cdFE4b1", "links": { - "Homepage": "https://www.xaurum.org/gamma" + "Homepage": "http://zeus.exchange" }, "marketcap_usd": 0, - "name": "XGM", + "name": "Zeus Exchange", "network": "eth", - "shortcut": "XGM", + "shortcut": "ZST", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12114,16 +12133,16 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:XGT": { - "address": "0x30f4A3e0aB7a76733D8b60b89DD93c3D0b4c9E2f", + "erc20:eth:cV": { + "address": "0xdA6cb58A0D0C01610a29c5A65c303e13e885887C", "links": { - "Github": "https://github.com/CryptogeneProject/CryptogeneToken", - "Homepage": "https://cryptogene.co" + "Github": "https://github.com/carVertical", + "Homepage": "https://www.carvertical.com" }, - "marketcap_usd": 0, - "name": "XGT", + "marketcap_usd": 9094247, + "name": "carVertical", "network": "eth", - "shortcut": "XGT", + "shortcut": "cV", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12132,15 +12151,15 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:XID": { - "address": "0xB110eC7B1dcb8FAB8dEDbf28f53Bc63eA5BEdd84", + "erc20:eth:eBCH": { + "address": "0xaFC39788c51f0c1Ff7B55317f3e70299e521Fff6", "links": { - "Homepage": "https://sphereidentity.com" + "Homepage": "https://ebitcoincash.io" }, "marketcap_usd": 0, - "name": "XID", + "name": "eBCH", "network": "eth", - "shortcut": "XID", + "shortcut": "eBCH", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12149,16 +12168,16 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:XNK": { - "address": "0xBC86727E770de68B1060C91f6BB6945c73e10388", + "erc20:eth:eBTC": { + "address": "0xeB7C20027172E5d143fB030d50f91Cece2D1485D", "links": { - "Github": "https://github.com/InkProtocol/", - "Homepage": "https://paywithink.com" + "Github": "https://github.com/eBTCCommunityTrustToken/eBTC", + "Homepage": "https://ebitcoin.org" }, - "marketcap_usd": 2700360, - "name": "Ink Protocol", + "marketcap_usd": 0, + "name": "eBTC", "network": "eth", - "shortcut": "XNK", + "shortcut": "eBTC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12167,15 +12186,15 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:XNN": { - "address": "0xab95E915c123fdEd5BDfB6325e35ef5515F1EA69", + "erc20:eth:eGAS": { + "address": "0xb53A96bcBdD9CF78dfF20BAB6C2be7bAec8f00f8", "links": { - "Homepage": "https://xenon.network" + "Homepage": "http://www.ethgas.stream" }, - "marketcap_usd": 1301571, - "name": "XENON", + "marketcap_usd": 0, + "name": "ETH GAS", "network": "eth", - "shortcut": "XNN", + "shortcut": "eGAS", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12184,15 +12203,16 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:XNT": { - "address": "0x572E6f318056ba0C5d47A422653113843D250691", + "erc20:eth:eUSD": { + "address": "0x523630976eB6147621B5c31c781eBe2Ec2a806E0", "links": { - "Homepage": "https://exante.eu" + "Github": "https://github.com/havven/havven", + "Homepage": "https://havven.io" }, "marketcap_usd": 0, - "name": "XNT", + "name": "Ether-Backed USD Nomins (erc20)", "network": "eth", - "shortcut": "XNT", + "shortcut": "eUSD", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12201,15 +12221,16 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:XRL": { - "address": "0xB24754bE79281553dc1adC160ddF5Cd9b74361a4", + "erc20:eth:eosDAC": { + "address": "0x7e9e431a0B8c4D532C745B1043c7FA29a48D4fBa", "links": { - "Homepage": "https://rialto.ai" + "Github": "https://github.com/eosdac", + "Homepage": "https://eosdac.io/" }, - "marketcap_usd": 0, - "name": "XRL", + "marketcap_usd": 23302126, + "name": "eosDAC", "network": "eth", - "shortcut": "XRL", + "shortcut": "eosDAC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12218,15 +12239,14 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:XSC": { - "address": "0x0F513fFb4926ff82D7F60A05069047AcA295C413", - "links": { - "Homepage": "http://crowdstart.capital" - }, + "erc20:eth:nCash": { + "address": "0x809826cceAb68c387726af962713b64Cb5Cb3CCA", + "hidden": 1, + "links": {}, "marketcap_usd": 0, - "name": "XSC", + "name": "NucleusVision", "network": "eth", - "shortcut": "XSC", + "shortcut": "nCash", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12235,15 +12255,16 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:YEED": { - "address": "0x6F7A4bac3315B5082F793161a22e26666d22717f", + "erc20:eth:nUSD": { + "address": "0x57Ab1E02fEE23774580C119740129eAC7081e9D3", "links": { - "Homepage": "https://yggdrash.io" + "Github": "https://github.com/havven/havven", + "Homepage": "https://www.havven.io" }, "marketcap_usd": 0, - "name": "YEED", + "name": "Havven-Backed USD Nomins (nUSD)", "network": "eth", - "shortcut": "YEED", + "shortcut": "nUSD", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12252,33 +12273,32 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:YUP": { - "address": "0xD9A12Cde03a86E800496469858De8581D3A5353d", + "erc20:eth:onG": { + "address": "0xd341d1680Eeee3255b8C4c75bCCE7EB57f144dAe", "links": { - "Github": "https://github.com/crowdholding/", - "Homepage": "https://www.crowdholding.com" + "Github": "https://github.com/onGsocial", + "Homepage": "https://ongcoin.io" }, - "name": "YUP", + "marketcap_usd": 0, + "name": "onG", "network": "eth", - "shortcut": "YUP", - "t1_enabled": "soon", - "t2_enabled": "soon", + "shortcut": "onG", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:YUPIE": { - "address": "0x0F33bb20a282A7649C7B3AFf644F084a9348e933", - "links": { - "Github": "https://github.com/crowdholdingico/YupieSmartContract", - "Homepage": "https://www.crowdholding.com" - }, - "marketcap_usd": 0, - "name": "YUPIE", - "network": "eth", - "shortcut": "YUPIE", + "erc20:kov:Aeternity": { + "address": "0x8667559254241ddeD4d11392f868d72092765367", + "hidden": 1, + "links": {}, + "marketcap_usd": 448485182, + "name": "Aeternity", + "network": "kov", + "shortcut": "Aeternity", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12287,16 +12307,16 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:ZAP": { - "address": "0x6781a0F84c7E9e846DCb84A9a5bd49333067b104", + "erc20:rin:AETH": { + "address": "0x398A7A69f3c59181A1ffe34bed11DCb5DF863A8a", "links": { - "Github": "https://github.com/zapproject", - "Homepage": "https://zap.store" + "Github": "https://github.com/akashaProject", + "Homepage": "http://akasha.world" }, - "marketcap_usd": 6056076, - "name": "ZAP", - "network": "eth", - "shortcut": "ZAP", + "marketcap_usd": 0, + "name": "AKASHA Tokens", + "network": "rin", + "shortcut": "AETH", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12305,15 +12325,16 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:ZCS": { - "address": "0x7A41e0517a5ecA4FdbC7FbebA4D4c47B9fF6DC63", + "erc20:rin:BHNT": { + "address": "0xe27826eE778B6F78a49a686dA7D64f6E7b084a4f", "links": { - "Homepage": "https://zsc.io/" + "Github": "https://github.com/berlin-hack-and-tell", + "Homepage": "http://berlin.hackandtell.org" }, - "marketcap_usd": 11213075, - "name": "Zeusshield", - "network": "eth", - "shortcut": "ZCS", + "marketcap_usd": 0, + "name": "Berlin Hack&Tell winner token", + "network": "rin", + "shortcut": "BHNT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12322,16 +12343,15 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:ZIL": { - "address": "0x05f4a42e251f2d52b8ed15E9FEdAacFcEF1FAD27", + "erc20:rin:CTGA": { + "address": "0x8B65d4B7ee3FFFA986C577F0F4b70a21BaE3dD54", "links": { - "Github": "https://github.com/zilliqa", - "Homepage": "https://www.zilliqa.com/" + "Homepage": "https://www.ctgcoin.org" }, - "marketcap_usd": 562108751, - "name": "Zilliqa", - "network": "eth", - "shortcut": "ZIL", + "marketcap_usd": 0, + "name": "Convenient To Go", + "network": "rin", + "shortcut": "CTGA", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12340,15 +12360,16 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:ZMN": { - "address": "0x554FFc77F4251a9fB3c0E3590a6a205f8d4e067D", + "erc20:rin:PPD": { + "address": "0x12fE174C097F6B3e876B3b060C9061F4B9dEBB80", + "hidden": 1, "links": { - "Homepage": "https://www.zmine.com" + "Github": "https://github.com/cchen408" }, "marketcap_usd": 0, - "name": "ZMINE", - "network": "eth", - "shortcut": "ZMN", + "name": "PP Donation", + "network": "rin", + "shortcut": "PPD", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12357,16 +12378,16 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:ZRX": { - "address": "0xE41d2489571d322189246DaFA5ebDe1F4699F498", + "erc20:rin:WALL": { + "address": "0x0A057a87CE9C56D7e336B417c79cf30E8d27860B", "links": { - "Github": "https://github.com/0xProject", - "Homepage": "https://0xproject.com" + "Github": "https://github.com/walleth", + "Homepage": "https://walleth.org" }, "marketcap_usd": 0, - "name": "0x Project", - "network": "eth", - "shortcut": "ZRX", + "name": "WALLETH Community-Token", + "network": "rin", + "shortcut": "WALL", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12375,15 +12396,14 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:ZST": { - "address": "0xe386B139Ed3715Ca4B18Fd52671bDcea1cdFE4b1", - "links": { - "Homepage": "http://zeus.exchange" - }, + "erc20:rop:ILSC": { + "address": "0x6f95a3B682F8e9aacC86D057A6DF88A0E68145A8", + "hidden": 1, + "links": {}, "marketcap_usd": 0, - "name": "Zeus Exchange", - "network": "eth", - "shortcut": "ZST", + "name": "IsraCoin", + "network": "rop", + "shortcut": "ILSC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12392,16 +12412,14 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:cV": { - "address": "0xdA6cb58A0D0C01610a29c5A65c303e13e885887C", - "links": { - "Github": "https://github.com/carVertical", - "Homepage": "https://www.carvertical.com" - }, - "marketcap_usd": 8542995, - "name": "carVertical", - "network": "eth", - "shortcut": "cV", + "erc20:ubq:BEER": { + "address": "0xFF3bF057ADF3b0E015b6465331a6236e55688274", + "hidden": 1, + "links": {}, + "marketcap_usd": 0, + "name": "BEER", + "network": "ubq", + "shortcut": "BEER", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12410,15 +12428,15 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:eBCH": { - "address": "0xaFC39788c51f0c1Ff7B55317f3e70299e521Fff6", + "erc20:ubq:CEFS": { + "address": "0x08533D6A06CE365298b12Ef92eb407cBA8Aa8273", "links": { - "Homepage": "https://ebitcoincash.io" + "Homepage": "https://www.cryptopiashares.com" }, "marketcap_usd": 0, - "name": "eBCH", - "network": "eth", - "shortcut": "eBCH", + "name": "CEFS", + "network": "ubq", + "shortcut": "CEFS", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12427,16 +12445,14 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:eBTC": { - "address": "0xeB7C20027172E5d143fB030d50f91Cece2D1485D", - "links": { - "Github": "https://github.com/eBTCCommunityTrustToken/eBTC", - "Homepage": "https://ebitcoin.org" - }, + "erc20:ubq:DOT": { + "address": "0x94aD7e41c1D44022C4F47cb1Ba019Fd1a022c536", + "hidden": 1, + "links": {}, "marketcap_usd": 0, - "name": "eBTC", - "network": "eth", - "shortcut": "eBTC", + "name": "DOT", + "network": "ubq", + "shortcut": "DOT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12445,15 +12461,15 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:eGAS": { - "address": "0xb53A96bcBdD9CF78dfF20BAB6C2be7bAec8f00f8", + "erc20:ubq:QWARK": { + "address": "0x4b4899a10F3E507DB207b0ee2426029eFa168a67", "links": { - "Homepage": "http://www.ethgas.stream" + "Homepage": "https://www.qwark.io" }, - "marketcap_usd": 0, - "name": "ETH GAS", - "network": "eth", - "shortcut": "eGAS", + "marketcap_usd": 2592261, + "name": "QWARK", + "network": "ubq", + "shortcut": "QWARK", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12462,16 +12478,15 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:eUSD": { - "address": "0x523630976eB6147621B5c31c781eBe2Ec2a806E0", + "erc20:ubq:RICKS": { + "address": "0x5e1715bB79805Bd672729760B3f7F34D6f485098", "links": { - "Github": "https://github.com/havven/havven", - "Homepage": "https://havven.io" + "Homepage": "https://picklericks.wixsite.com/picklewix" }, "marketcap_usd": 0, - "name": "Ether-Backed USD Nomins (erc20)", - "network": "eth", - "shortcut": "eUSD", + "name": "RICKS", + "network": "ubq", + "shortcut": "RICKS", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12480,281 +12495,319 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:eosDAC": { - "address": "0x7e9e431a0B8c4D532C745B1043c7FA29a48D4fBa", + "eth:AKA": { "links": { - "Github": "https://github.com/eosdac", - "Homepage": "https://eosdac.io/" + "Homepage": "https://akroma.io" }, - "marketcap_usd": 34547518, - "name": "eosDAC", - "network": "eth", - "shortcut": "eosDAC", + "marketcap_usd": 0, + "name": "Akroma", + "shortcut": "AKA", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20", + "type": "coin", "wallet": { "MyCrypto": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:nCash": { - "address": "0x809826cceAb68c387726af962713b64Cb5Cb3CCA", - "hidden": 1, - "links": {}, + "eth:CLO": { + "links": { + "Homepage": "https://callisto.network" + }, "marketcap_usd": 0, - "name": "NucleusVision", - "network": "eth", - "shortcut": "nCash", + "name": "Callisto", + "shortcut": "CLO", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20", + "type": "coin", "wallet": { "MyCrypto": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:nUSD": { - "address": "0x57Ab1E02fEE23774580C119740129eAC7081e9D3", + "eth:EGEM": { "links": { - "Github": "https://github.com/havven/havven", - "Homepage": "https://www.havven.io" + "Homepage": "https://egem.io" }, "marketcap_usd": 0, - "name": "Havven-Backed USD Nomins (nUSD)", - "network": "eth", - "shortcut": "nUSD", + "name": "EtherGem", + "shortcut": "EGEM", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20", + "type": "coin", "wallet": { "MyCrypto": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:onG": { - "address": "0xd341d1680Eeee3255b8C4c75bCCE7EB57f144dAe", + "eth:ELLA": { "links": { - "Github": "https://github.com/onGsocial", - "Homepage": "https://ongcoin.io" + "Homepage": "https://ellaism.org" }, - "marketcap_usd": 0, - "name": "onG", - "network": "eth", - "shortcut": "onG", + "marketcap_usd": 717389, + "name": "Ellaism", + "shortcut": "ELLA", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20", + "type": "coin", "wallet": { "MyCrypto": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:kov:Aeternity": { - "address": "0x8667559254241ddeD4d11392f868d72092765367", - "hidden": 1, - "links": {}, - "marketcap_usd": 434471331, - "name": "Aeternity", - "network": "kov", - "shortcut": "Aeternity", + "eth:EOSC": { + "links": { + "Homepage": "https://eos-classic.io" + }, + "marketcap_usd": 0, + "name": "EOS Classic", + "shortcut": "EOSC", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20", + "type": "coin", "wallet": { "MyCrypto": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:rin:AETH": { - "address": "0x398A7A69f3c59181A1ffe34bed11DCb5DF863A8a", + "eth:ESN": { "links": { - "Github": "https://github.com/akashaProject", - "Homepage": "http://akasha.world" + "Homepage": "https://ethersocial.org" }, "marketcap_usd": 0, - "name": "AKASHA Tokens", - "network": "rin", - "shortcut": "AETH", + "name": "Ethersocial Network", + "shortcut": "ESN", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20", + "type": "coin", "wallet": { "MyCrypto": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:rin:BHNT": { - "address": "0xe27826eE778B6F78a49a686dA7D64f6E7b084a4f", + "eth:ETC": { "links": { - "Github": "https://github.com/berlin-hack-and-tell", - "Homepage": "http://berlin.hackandtell.org" + "Homepage": "https://ethereumclassic.github.io" }, - "marketcap_usd": 0, - "name": "Berlin Hack&Tell winner token", - "network": "rin", - "shortcut": "BHNT", + "marketcap_usd": 1705863309, + "name": "Ethereum Classic", + "shortcut": "ETC", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20", + "type": "coin", "wallet": { "MyCrypto": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:rin:CTGA": { - "address": "0x8B65d4B7ee3FFFA986C577F0F4b70a21BaE3dD54", + "eth:ETH": { "links": { - "Homepage": "https://www.ctgcoin.org" + "Homepage": "https://www.ethereum.org" }, - "marketcap_usd": 0, - "name": "Convenient To Go", - "network": "rin", - "shortcut": "CTGA", + "marketcap_usd": 46623589711, + "name": "Ethereum", + "shortcut": "ETH", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20", + "type": "coin", "wallet": { "MyCrypto": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:rin:PPD": { - "address": "0x12fE174C097F6B3e876B3b060C9061F4B9dEBB80", - "hidden": 1, + "eth:ETSC": { "links": { - "Github": "https://github.com/cchen408" + "Homepage": "https://ethereumsocial.kr" }, "marketcap_usd": 0, - "name": "PP Donation", - "network": "rin", - "shortcut": "PPD", + "name": "Ethereum Social", + "shortcut": "ETSC", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20", + "type": "coin", "wallet": { "MyCrypto": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:rin:WALL": { - "address": "0x0A057a87CE9C56D7e336B417c79cf30E8d27860B", + "eth:EXP": { "links": { - "Github": "https://github.com/walleth", - "Homepage": "https://walleth.org" + "Homepage": "https://expanse.tech" }, - "marketcap_usd": 0, - "name": "WALLETH Community-Token", - "network": "rin", - "shortcut": "WALL", + "marketcap_usd": 10189865, + "name": "Expanse", + "shortcut": "EXP", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20", + "type": "coin", "wallet": { "MyCrypto": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:rop:ILSC": { - "address": "0x6f95a3B682F8e9aacC86D057A6DF88A0E68145A8", - "hidden": 1, - "links": {}, - "marketcap_usd": 0, - "name": "IsraCoin", - "network": "rop", - "shortcut": "ILSC", + "eth:GO": { + "links": { + "Homepage": "https://gochain.io" + }, + "marketcap_usd": 32099950, + "name": "GoChain", + "shortcut": "GO", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20", + "type": "coin", "wallet": { "MyCrypto": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:ubq:BEER": { - "address": "0xFF3bF057ADF3b0E015b6465331a6236e55688274", - "hidden": 1, - "links": {}, + "eth:RSK": { + "links": { + "Homepage": "https://www.rsk.co" + }, "marketcap_usd": 0, - "name": "BEER", - "network": "ubq", - "shortcut": "BEER", + "name": "RSK", + "shortcut": "RSK", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20", + "type": "coin", "wallet": { "MyCrypto": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:ubq:CEFS": { - "address": "0x08533D6A06CE365298b12Ef92eb407cBA8Aa8273", + "eth:UBQ": { "links": { - "Homepage": "https://www.cryptopiashares.com" + "Homepage": "https://ubiqsmart.com" }, - "marketcap_usd": 0, - "name": "CEFS", - "network": "ubq", - "shortcut": "CEFS", + "marketcap_usd": 50652593, + "name": "Ubiq", + "shortcut": "UBQ", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20", + "type": "coin", "wallet": { "MyCrypto": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:ubq:DOT": { - "address": "0x94aD7e41c1D44022C4F47cb1Ba019Fd1a022c536", + "eth:tETC": { "hidden": 1, - "links": {}, + "links": { + "Homepage": "https://ethereumclassic.github.io" + }, "marketcap_usd": 0, - "name": "DOT", - "network": "ubq", - "shortcut": "DOT", + "name": "Ethereum Classic Testnet", + "shortcut": "tETC", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20", + "type": "coin", "wallet": { "MyCrypto": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:ubq:QWARK": { - "address": "0x4b4899a10F3E507DB207b0ee2426029eFa168a67", + "eth:tETH": { + "hidden": 1, "links": { - "Homepage": "https://www.qwark.io" + "Homepage": "https://www.ethereum.org" }, - "marketcap_usd": 2520144, - "name": "QWARK", - "network": "ubq", - "shortcut": "QWARK", + "marketcap_usd": 0, + "name": "Ethereum Testnet Kovan", + "shortcut": "tETH", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20", + "type": "coin", "wallet": { "MyCrypto": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:ubq:RICKS": { - "address": "0x5e1715bB79805Bd672729760B3f7F34D6f485098", + "eth:tRSK": { + "hidden": 1, "links": { - "Homepage": "https://picklericks.wixsite.com/picklewix" + "Homepage": "https://www.rsk.co" }, "marketcap_usd": 0, - "name": "RICKS", - "network": "ubq", - "shortcut": "RICKS", + "name": "RSK Testnet", + "shortcut": "tRSK", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "erc20", + "type": "coin", "wallet": { "MyCrypto": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" } }, - "mosaic:BREEZE": { + "misc:ADA": { + "links": { + "Homepage": "https://www.cardano.org" + }, + "marketcap_usd": 4176488085, + "name": "Cardano", + "shortcut": "ADA", + "t1_enabled": "no", + "t2_enabled": "soon", + "type": "coin" + }, + "misc:LSK": { + "links": { + "Homepage": "https://lisk.io/" + }, + "marketcap_usd": 523291562, + "name": "Lisk", + "shortcut": "LSK", + "t1_enabled": "no", + "t2_enabled": "yes", + "type": "coin" + }, + "misc:XLM": { + "links": { + "Homepage": "https://www.stellar.org" + }, + "marketcap_usd": 5745967719, + "name": "Stellar", + "notes": "In development", + "shortcut": "XLM", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "coin" + }, + "misc:XMR": { + "links": { + "Homepage": "https://getmonero.org" + }, + "marketcap_usd": 2226986225, + "name": "Monero", + "notes": "In development", + "shortcut": "XMR", + "t1_enabled": "no", + "t2_enabled": "soon", + "type": "coin" + }, + "misc:XRP": { + "links": { + "Homepage": "https://ripple.com" + }, + "marketcap_usd": 17659543494, + "name": "Ripple", + "notes": "In development", + "shortcut": "XRP", + "t1_enabled": "no", + "t2_enabled": "soon", + "type": "coin" + }, + "misc:XTZ": { + "links": { + "Homepage": "https://tezos.com" + }, + "marketcap_usd": 1266086135, + "name": "Tezos", + "shortcut": "XTZ", + "t1_enabled": "no", + "t2_enabled": "soon", + "type": "coin" + }, + "nem:BREEZE": { "links": { "Homepage": "https://breeze.chat" }, @@ -12768,11 +12821,11 @@ "Nano Wallet": "https://nem.io/downloads/" } }, - "mosaic:DIM": { + "nem:DIM": { "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 9312088, + "marketcap_usd": 8656533, "name": "DIMCOIN", "shortcut": "DIM", "t1_enabled": "yes", @@ -12782,12 +12835,11 @@ "Nano Wallet": "https://nem.io/downloads/" } }, - "mosaic:DIMTOK": { - "coinmarketcap_alias": "dimcoin", + "nem:DIMTOK": { "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 9312088, + "marketcap_usd": 0, "name": "DIM TOKEN", "shortcut": "DIMTOK", "t1_enabled": "yes", @@ -12797,7 +12849,7 @@ "Nano Wallet": "https://nem.io/downloads/" } }, - "mosaic:PAC:CHS": { + "nem:PAC:CHS": { "links": { "Homepage": "https://pacnem.com" }, @@ -12811,7 +12863,7 @@ "Nano Wallet": "https://nem.io/downloads/" } }, - "mosaic:PAC:HRT": { + "nem:PAC:HRT": { "links": { "Homepage": "https://pacnem.com" }, @@ -12825,11 +12877,11 @@ "Nano Wallet": "https://nem.io/downloads/" } }, - "mosaic:XEM": { + "nem:XEM": { "links": { "Homepage": "https://nem.io" }, - "marketcap_usd": 1572948000, + "marketcap_usd": 1557342000, "name": "NEM", "shortcut": "XEM", "t1_enabled": "yes", @@ -12841,11 +12893,11 @@ } }, "info": { - "marketcap_usd": 219093401682, - "t1_coins": 700, - "t2_coins": 696, - "total_marketcap_usd": 284131879229, - "updated_at": 1532099100, - "updated_at_readable": "Fri Jul 20 17:05:00 2018" + "marketcap_usd": 225765247536, + "t1_coins": 661, + "t2_coins": 660, + "total_marketcap_usd": 288640246162, + "updated_at": 1532695674, + "updated_at_readable": "Fri Jul 27 14:47:54 2018" } } \ No newline at end of file diff --git a/tools/coins_details.py b/tools/coins_details.py index c00111945..e12d18e55 100755 --- a/tools/coins_details.py +++ b/tools/coins_details.py @@ -1,131 +1,118 @@ #!/usr/bin/env python3 """Fetch information about coins and tokens supported by Trezor and update it in coins_details.json.""" +import os import time import json import logging import requests import coin_defs +LOG = logging.getLogger(__name__) + OPTIONAL_KEYS = ("links", "notes", "wallet") -OVERRIDES = coin_defs.load_json("coins_details.override.json") +ALLOWED_SUPPORT_STATUS = ("yes", "no", "planned", "soon") +OVERRIDES = coin_defs.load_json("coins_details.override.json") VERSIONS = coin_defs.latest_releases() -COINS = {} +COINMAKETCAP_CACHE = os.path.join(os.path.dirname(__file__), "coinmarketcap.json") -log = logging.getLogger(__name__) +COINMARKETCAP_TICKERS_URL = ( + "https://api.coinmarketcap.com/v2/ticker/?start={}&convert=USD&limit=100" +) +COINMARKETCAP_GLOBAL_URL = "https://api.coinmarketcap.com/v2/global" def coinmarketcap_init(): - global COINS - try: - marketcap_json = json.load(open("coinmarketcap.json", "r")) - except FileNotFoundError: - pass - else: + mtime = os.path.getmtime(COINMAKETCAP_CACHE) + if mtime > time.time() - 3600: + print("Using cached market cap data") + with open(COINMAKETCAP_CACHE) as f: + return json.load(f) + except Exception: pass - # if COINS["1"]["last_updated"] > time.time() - 3600: - # print("Using local cache of coinmarketcap") - # return - - for coin in marketcap_json.values(): - slug = coin["website_slug"] - market_cap = coin["quotes"]["USD"]["market_cap"] - if market_cap is not None: - COINS[slug] = int(float(market_cap)) - - return print("Updating coins from coinmarketcap") total = None - COINS = {} + ctr = 0 + coin_data = {} - while total is None or len(COINS) < total: - url = ( - "https://api.coinmarketcap.com/v2/ticker/?start=%d&convert=USD&limit=100" - % (len(COINS) + 1) - ) + while total is None or ctr < total: + url = COINMARKETCAP_TICKERS_URL.format(ctr + 1) data = requests.get(url).json() - COINS.update(data["data"]) + if total is None: total = data["metadata"]["num_cryptocurrencies"] + ctr += len(data["data"]) - print("Fetched %d of %d coins" % (len(COINS), total)) + for coin in data["data"].values(): + slug = coin["website_slug"] + market_cap = coin["quotes"]["USD"]["market_cap"] + if market_cap is not None: + coin_data[slug] = int(market_cap) + + print("Fetched {} of {} coins".format(ctr, total)) time.sleep(1) - json.dump(COINS, open("coinmarketcap.json", "w"), sort_keys=True, indent=4) + with open(COINMAKETCAP_CACHE, "w") as f: + json.dump(coin_data, f) + + return coin_data + + +MARKET_CAPS = coinmarketcap_init() def marketcap(coin): cap = None - if "coinmarketcap_alias" in coin: - cap = COINS.get(coin["coinmarketcap_alias"]) - - if not cap: + cap = MARKET_CAPS.get(coin["coinmarketcap_alias"]) + if cap is None: slug = coin["name"].replace(" ", "-").lower() - cap = COINS.get(slug) - - if not cap: - cap = COINS.get(coin["shortcut"].lower()) - + cap = MARKET_CAPS.get(slug) + if cap is None: + cap = MARKET_CAPS.get(coin["shortcut"].lower()) return cap -def update_marketcap(coins): +def update_marketcaps(coins): for coin in coins.values(): - cap = marketcap(coin) - if cap: - coin["marketcap_usd"] = cap + coin["marketcap_usd"] = marketcap(coin) or 0 -def coinmarketcap_global(): - url = "https://api.coinmarketcap.com/v2/global" - ret = requests.get(url) - data = ret.json() - return data - - -def update_info(details): - details["info"]["updated_at"] = int(time.time()) - details["info"]["updated_at_readable"] = time.asctime() +def summary(coins): + t1_coins = 0 + t2_coins = 0 + supported_marketcap = 0 + for coin in coins.values(): + if coin.get("hidden"): + continue - details["info"]["t1_coins"] = len( - [ - True - for _, c in details["coins"].items() - if c.get("t1_enabled") == "yes" and not c.get("hidden", False) - ] - ) - details["info"]["t2_coins"] = len( - [ - True - for _, c in details["coins"].items() - if c.get("t2_enabled") == "yes" and not c.get("hidden", False) - ] - ) + t1_enabled = coin["t1_enabled"] == "yes" + t2_enabled = coin["t2_enabled"] == "yes" + if t1_enabled: + t1_coins += 1 + if t2_enabled: + t2_coins += 1 + if t1_enabled or t2_enabled: + supported_marketcap += coin.get("marketcap_usd", 0) + total_marketcap = None try: - details["info"]["total_marketcap_usd"] = int( - coinmarketcap_global()["data"]["quotes"]["USD"]["total_market_cap"] - ) + ret = requests.get(COINMARKETCAP_GLOBAL_URL).json() + total_marketcap = int(ret["data"]["quotes"]["USD"]["total_market_cap"]) except: pass - marketcap = 0 - for k, c in details["coins"].items(): - if c["t1_enabled"] == "yes" or c["t2_enabled"] == "yes": - marketcap += details["coins"][k].setdefault("marketcap_usd", 0) - details["info"]["marketcap_usd"] = marketcap - - -def check_unsupported(details, prefix, supported): - for k in details["coins"].keys(): - if not k.startswith(prefix): - continue - if k not in supported: - print("%s not supported by Trezor? (Possible manual entry)" % k) + return dict( + updated_at=int(time.time()), + updated_at_readable=time.asctime(), + t1_coins=t1_coins, + t2_coins=t2_coins, + marketcap_usd=supported_marketcap, + total_marketcap_usd=total_marketcap, + ) def _is_supported(support, trezor_version): @@ -174,8 +161,7 @@ def update_coins(coins, support_info): if support.get("other"): details["wallet"].update(support["other"]) - # XXX get rid of this in favor of res[key] - res["coin:{}".format(coin["shortcut"])] = details + res[key] = details return res @@ -216,12 +202,6 @@ def update_simple(coins, support_info, type): key = coin["key"] support = support_info[key] - # XXX drop newkey - if type == "mosaic": - newkey = "mosaic:{}".format(coin["shortcut"]) - else: - newkey = "coin2:{}".format(coin["shortcut"]) - details = dict( name=coin["name"], shortcut=coin["shortcut"], @@ -229,11 +209,11 @@ def update_simple(coins, support_info, type): t1_enabled=_is_supported(support, 1), t2_enabled=_is_supported(support, 2), ) - for key in OPTIONAL_KEYS: - if key in coin: - details[key] = coin[key] + for k in OPTIONAL_KEYS: + if k in coin: + details[k] = coin[k] - res[newkey] = details + res[key] = details return res @@ -241,30 +221,27 @@ def update_simple(coins, support_info, type): def update_ethereum_networks(coins, support_info): res = update_simple(coins, support_info, "coin") for coin in coins: - newkey = "coin2:{}".format(coin["shortcut"]) - res[newkey]["wallet"] = dict( - MyCrypto="https://mycrypto.com", - MyEtherWallet="https://www.myetherwallet.com", + res[coin["key"]].update( + wallet=dict( + MyCrypto="https://mycrypto.com", + MyEtherWallet="https://www.myetherwallet.com", + ), + links=dict(Homepage=coin.get("url")), ) - res[newkey]["links"] = dict(Homepage=coin.get("url")) return res -def check_missing_details(details): - for k in details["coins"].keys(): - coin = details["coins"][k] +def check_missing_data(coins): + for k, coin in coins.items(): hide = False - if "links" not in coin: - print("%s: Missing links" % k) - hide = True if "Homepage" not in coin.get("links", {}): print("%s: Missing homepage" % k) hide = True - if coin["t1_enabled"] not in ("yes", "no", "planned", "soon"): + if coin["t1_enabled"] not in ALLOWED_SUPPORT_STATUS: print("%s: Unknown t1_enabled" % k) hide = True - if coin["t2_enabled"] not in ("yes", "no", "planned", "soon"): + if coin["t2_enabled"] not in ALLOWED_SUPPORT_STATUS: print("%s: Unknown t2_enabled" % k) hide = True if ( @@ -291,15 +268,16 @@ def check_missing_details(details): if not hide and coin.get("hidden"): print("%s: Details are OK, but coin is still hidden" % k) - for k in details["coins"].keys(): - if details["coins"][k].get("hidden") == 1: + # summary of hidden coins + for k, coin in coins.items(): + if coin.get("hidden") == 1: print("%s: Coin is hidden" % k) def apply_overrides(coins): for key, override in OVERRIDES.items(): if key not in coins: - log.warning("override without coin: {}".format(key)) + LOG.warning("override without coin: {}".format(key)) continue def recursive_update(orig, new): @@ -314,31 +292,24 @@ def apply_overrides(coins): if __name__ == "__main__": - # try: - # details = json.load(open('../defs/coins_details.json', 'r')) - # except FileNotFoundError: - # details = {'coins': {}, 'info': {}} - - coinmarketcap_init() - defs = coin_defs.get_all() all_coins = sum(defs.values(), []) support_info = coin_defs.support_info(all_coins, erc20_versions=VERSIONS) coins = {} - coins.update(update_coins(defs["btc"], support_info)) + coins.update(update_coins(defs["coins"], support_info)) coins.update(update_erc20(defs["erc20"], support_info)) coins.update(update_ethereum_networks(defs["eth"], support_info)) coins.update(update_simple(defs["nem"], support_info, "mosaic")) - coins.update(update_simple(defs["other"], support_info, "coin")) + coins.update(update_simple(defs["misc"], support_info, "coin")) apply_overrides(coins) - update_marketcap(coins) - - details = dict(coins=coins, info={}) - update_info(details) - check_missing_details(details) + update_marketcaps(coins) + check_missing_data(coins) - print(json.dumps(details["info"], sort_keys=True, indent=4)) - json.dump(details, open("../defs/coins_details.json", "w"), sort_keys=True, indent=4) + info = summary(coins) + details = dict(coins=coins, info=info) + print(json.dumps(info, sort_keys=True, indent=4)) + with open(os.path.join(coin_defs.DEFS_DIR, "coins_details.json"), "w") as f: + json.dump(details, f, sort_keys=True, indent=4) From 4c77015ed9c964603e193b31fb583b8adf31bea8 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 27 Jul 2018 16:01:14 +0200 Subject: [PATCH 461/767] protob: add combine makefile target for proto2js (which can't combine files by itself) --- protob/.gitignore | 1 + protob/Makefile | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/protob/.gitignore b/protob/.gitignore index 20e75334c..ee30dc04a 100644 --- a/protob/.gitignore +++ b/protob/.gitignore @@ -1,2 +1,3 @@ *.pb +combined.proto graph.gv* diff --git a/protob/Makefile b/protob/Makefile index e33b7b685..ece6846b9 100644 --- a/protob/Makefile +++ b/protob/Makefile @@ -3,5 +3,10 @@ check: messages.pb messages-bitcoin.pb messages-bootloader.pb messages-cardano.p %.pb: %.proto protoc -I/usr/include -I. $< -o $@ +combine: + echo 'syntax = "proto2";' > combined.proto + echo 'import "google/protobuf/descriptor.proto";' >> combined.proto + grep -hv -e '^import ' -e '^syntax' -e 'option java_' messages*.proto >> combined.proto + clean: rm -f *.pb From 279bc1f220d38db9562ac9e22d61c5b94a854f9f Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Sun, 29 Jul 2018 16:17:00 +0200 Subject: [PATCH 462/767] protob: add packages to proto files --- protob/Makefile | 2 +- protob/messages-bitcoin.proto | 7 ++++--- protob/messages-bootloader.proto | 1 + protob/messages-cardano.proto | 7 ++++--- protob/messages-common.proto | 1 + protob/messages-crypto.proto | 1 + protob/messages-debug.proto | 23 ++++++++++++----------- protob/messages-ethereum.proto | 1 + protob/messages-lisk.proto | 1 + protob/messages-management.proto | 17 +++++++++-------- protob/messages-monero.proto | 1 + protob/messages-nem.proto | 1 + protob/messages-ripple.proto | 1 + protob/messages-stellar.proto | 1 + protob/messages-tezos.proto | 1 + protob/messages.proto | 1 + 16 files changed, 41 insertions(+), 26 deletions(-) diff --git a/protob/Makefile b/protob/Makefile index ece6846b9..4168b783a 100644 --- a/protob/Makefile +++ b/protob/Makefile @@ -6,7 +6,7 @@ check: messages.pb messages-bitcoin.pb messages-bootloader.pb messages-cardano.p combine: echo 'syntax = "proto2";' > combined.proto echo 'import "google/protobuf/descriptor.proto";' >> combined.proto - grep -hv -e '^import ' -e '^syntax' -e 'option java_' messages*.proto >> combined.proto + grep -hv -e '^import ' -e '^syntax' -e '^package' -e 'option java_' messages*.proto | sed 's/hw\.trezor\.messages\.common\.//' >> combined.proto clean: rm -f *.pb diff --git a/protob/messages-bitcoin.proto b/protob/messages-bitcoin.proto index cd1d73062..09173edf7 100644 --- a/protob/messages-bitcoin.proto +++ b/protob/messages-bitcoin.proto @@ -1,4 +1,5 @@ syntax = "proto2"; +package hw.trezor.messages.bitcoin; // Sugar for easier handling in Java option java_package = "com.satoshilabs.trezor.lib.protobuf"; @@ -29,8 +30,8 @@ message MultisigRedeemScriptType { * Structure representing HDNode + Path */ message HDNodePathType { - required HDNodeType node = 1; // BIP-32 node in deserialized form - repeated uint32 address_n = 2; // BIP-32 path to derive the key from node + required hw.trezor.messages.common.HDNodeType node = 1; // BIP-32 node in deserialized form + repeated uint32 address_n = 2; // BIP-32 path to derive the key from node } } @@ -53,7 +54,7 @@ message GetPublicKey { * @end */ message PublicKey { - required HDNodeType node = 1; // BIP32 public node + required hw.trezor.messages.common.HDNodeType node = 1; // BIP32 public node optional string xpub = 2; // serialized form of public node } diff --git a/protob/messages-bootloader.proto b/protob/messages-bootloader.proto index d05a7de3f..7151a8e3b 100644 --- a/protob/messages-bootloader.proto +++ b/protob/messages-bootloader.proto @@ -1,4 +1,5 @@ syntax = "proto2"; +package hw.trezor.messages.bootloader; // Sugar for easier handling in Java option java_package = "com.satoshilabs.trezor.lib.protobuf"; diff --git a/protob/messages-cardano.proto b/protob/messages-cardano.proto index b0a2c4a47..8962210f4 100644 --- a/protob/messages-cardano.proto +++ b/protob/messages-cardano.proto @@ -1,4 +1,5 @@ syntax = "proto2"; +package hw.trezor.messages.cardano; // Sugar for easier handling in Java option java_package = "com.satoshilabs.trezor.lib.protobuf"; @@ -40,9 +41,9 @@ message CardanoGetPublicKey { * @end */ message CardanoPublicKey { - optional string xpub = 1; // Xpub key - optional HDNodeType node = 2; // BIP-32 public node - optional string root_hd_passphrase = 3; // HD passphrase for root in hex format + optional string xpub = 1; // Xpub key + optional hw.trezor.messages.common.HDNodeType node = 2; // BIP-32 public node + optional string root_hd_passphrase = 3; // HD passphrase for root in hex format } /** diff --git a/protob/messages-common.proto b/protob/messages-common.proto index 76bbb1fa2..9f3f0763a 100644 --- a/protob/messages-common.proto +++ b/protob/messages-common.proto @@ -1,4 +1,5 @@ syntax = "proto2"; +package hw.trezor.messages.common; /** * Response: Success of the previous request diff --git a/protob/messages-crypto.proto b/protob/messages-crypto.proto index d1f399911..8841fbc6b 100644 --- a/protob/messages-crypto.proto +++ b/protob/messages-crypto.proto @@ -1,4 +1,5 @@ syntax = "proto2"; +package hw.trezor.messages.crypto; // Sugar for easier handling in Java option java_package = "com.satoshilabs.trezor.lib.protobuf"; diff --git a/protob/messages-debug.proto b/protob/messages-debug.proto index 3ae81c7d1..6c6e415a2 100644 --- a/protob/messages-debug.proto +++ b/protob/messages-debug.proto @@ -1,4 +1,5 @@ syntax = "proto2"; +package hw.trezor.messages.debug; // Sugar for easier handling in Java option java_package = "com.satoshilabs.trezor.lib.protobuf"; @@ -30,17 +31,17 @@ message DebugLinkGetState { * @end */ message DebugLinkState { - optional bytes layout = 1; // raw buffer of display - optional string pin = 2; // current PIN, blank if PIN is not set/enabled - optional string matrix = 3; // current PIN matrix - optional string mnemonic = 4; // current BIP-39 mnemonic - optional HDNodeType node = 5; // current BIP-32 node - optional bool passphrase_protection = 6; // is node/mnemonic encrypted using passphrase? - optional string reset_word = 7; // word on device display during ResetDevice workflow - optional bytes reset_entropy = 8; // current entropy during ResetDevice workflow - optional string recovery_fake_word = 9; // (fake) word on display during RecoveryDevice workflow - optional uint32 recovery_word_pos = 10; // index of mnemonic word the device is expecting during RecoveryDevice workflow - optional uint32 reset_word_pos = 11; // index of mnemonic word the device is expecting during ResetDevice workflow + optional bytes layout = 1; // raw buffer of display + optional string pin = 2; // current PIN, blank if PIN is not set/enabled + optional string matrix = 3; // current PIN matrix + optional string mnemonic = 4; // current BIP-39 mnemonic + optional hw.trezor.messages.common.HDNodeType node = 5; // current BIP-32 node + optional bool passphrase_protection = 6; // is node/mnemonic encrypted using passphrase? + optional string reset_word = 7; // word on device display during ResetDevice workflow + optional bytes reset_entropy = 8; // current entropy during ResetDevice workflow + optional string recovery_fake_word = 9; // (fake) word on display during RecoveryDevice workflow + optional uint32 recovery_word_pos = 10; // index of mnemonic word the device is expecting during RecoveryDevice workflow + optional uint32 reset_word_pos = 11; // index of mnemonic word the device is expecting during ResetDevice workflow } /** diff --git a/protob/messages-ethereum.proto b/protob/messages-ethereum.proto index 559a7a220..d059c14b8 100644 --- a/protob/messages-ethereum.proto +++ b/protob/messages-ethereum.proto @@ -1,4 +1,5 @@ syntax = "proto2"; +package hw.trezor.messages.ethereum; // Sugar for easier handling in Java option java_package = "com.satoshilabs.trezor.lib.protobuf"; diff --git a/protob/messages-lisk.proto b/protob/messages-lisk.proto index b66779a1d..ceeb26c9b 100644 --- a/protob/messages-lisk.proto +++ b/protob/messages-lisk.proto @@ -1,4 +1,5 @@ syntax = "proto2"; +package hw.trezor.messages.lisk; // Sugar for easier handling in Java option java_package = "com.satoshilabs.trezor.lib.protobuf"; diff --git a/protob/messages-management.proto b/protob/messages-management.proto index 5300cd2f3..cffcbfb29 100644 --- a/protob/messages-management.proto +++ b/protob/messages-management.proto @@ -1,4 +1,5 @@ syntax = "proto2"; +package hw.trezor.messages.management; // Sugar for easier handling in Java option java_package = "com.satoshilabs.trezor.lib.protobuf"; @@ -162,14 +163,14 @@ message WipeDevice { * @next Failure */ message LoadDevice { - optional string mnemonic = 1; // seed encoded as BIP-39 mnemonic (12, 18 or 24 words) - optional HDNodeType node = 2; // BIP-32 node - optional string pin = 3; // set PIN protection - optional bool passphrase_protection = 4; // enable master node encryption using passphrase - optional string language = 5 [default='english']; // device language - optional string label = 6; // device label - optional bool skip_checksum = 7; // do not test mnemonic for valid BIP-39 checksum - optional uint32 u2f_counter = 8; // U2F counter + optional string mnemonic = 1; // seed encoded as BIP-39 mnemonic (12, 18 or 24 words) + optional hw.trezor.messages.common.HDNodeType node = 2; // BIP-32 node + optional string pin = 3; // set PIN protection + optional bool passphrase_protection = 4; // enable master node encryption using passphrase + optional string language = 5 [default='english']; // device language + optional string label = 6; // device label + optional bool skip_checksum = 7; // do not test mnemonic for valid BIP-39 checksum + optional uint32 u2f_counter = 8; // U2F counter } /** diff --git a/protob/messages-monero.proto b/protob/messages-monero.proto index 623a180c4..4aceafa25 100644 --- a/protob/messages-monero.proto +++ b/protob/messages-monero.proto @@ -1,4 +1,5 @@ syntax = "proto2"; +package hw.trezor.messages.monero; // Sugar for easier handling in Java option java_package = "com.satoshilabs.trezor.lib.protobuf"; diff --git a/protob/messages-nem.proto b/protob/messages-nem.proto index 62428699f..295f9dcdb 100644 --- a/protob/messages-nem.proto +++ b/protob/messages-nem.proto @@ -1,4 +1,5 @@ syntax = "proto2"; +package hw.trezor.messages.nem; // Sugar for easier handling in Java option java_package = "com.satoshilabs.trezor.lib.protobuf"; diff --git a/protob/messages-ripple.proto b/protob/messages-ripple.proto index 47909c1a8..5d13c909e 100644 --- a/protob/messages-ripple.proto +++ b/protob/messages-ripple.proto @@ -1,4 +1,5 @@ syntax = "proto2"; +package hw.trezor.messages.ripple; // Sugar for easier handling in Java option java_package = "com.satoshilabs.trezor.lib.protobuf"; diff --git a/protob/messages-stellar.proto b/protob/messages-stellar.proto index 21a8ae7f5..b23e25ab0 100644 --- a/protob/messages-stellar.proto +++ b/protob/messages-stellar.proto @@ -1,4 +1,5 @@ syntax = "proto2"; +package hw.trezor.messages.stellar; // Sugar for easier handling in Java option java_package = "com.satoshilabs.trezor.lib.protobuf"; diff --git a/protob/messages-tezos.proto b/protob/messages-tezos.proto index d1ead31a4..091a354c2 100644 --- a/protob/messages-tezos.proto +++ b/protob/messages-tezos.proto @@ -1,4 +1,5 @@ syntax = "proto2"; +package hw.trezor.messages.tezos; // Sugar for easier handling in Java option java_package = "com.satoshilabs.trezor.lib.protobuf"; diff --git a/protob/messages.proto b/protob/messages.proto index ef794e855..ff5171f43 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -1,4 +1,5 @@ syntax = "proto2"; +package hw.trezor.messages; /** * Messages for TREZOR communication From a3e7f2651ef3d85269074b43c9b85ff025b7ecf7 Mon Sep 17 00:00:00 2001 From: Michael Ira Krufky Date: Mon, 30 Jul 2018 05:59:42 -0400 Subject: [PATCH 463/767] eth: add Musicoin (#182) --- defs/ethereum/networks.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/defs/ethereum/networks.json b/defs/ethereum/networks.json index 39be85bf1..79c5b5889 100644 --- a/defs/ethereum/networks.json +++ b/defs/ethereum/networks.json @@ -142,5 +142,13 @@ "name": "Akroma", "rskip60": false, "url": "https://akroma.io" + }, + { + "chain_id": 7762959, + "slip44": 184, + "shortcut": "MUSIC", + "name": "Musicoin", + "rskip60": false, + "url": "https://musicoin.org" } ] From b6549f22cfda0b7fbb08ad5de7e837e2639a6016 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 30 Jul 2018 12:08:52 +0200 Subject: [PATCH 464/767] defs: fix coindef.py --- tools/coindef.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tools/coindef.py b/tools/coindef.py index 6ac4c0ecc..cc658bd2d 100644 --- a/tools/coindef.py +++ b/tools/coindef.py @@ -35,6 +35,7 @@ class CoinDef(p.MessageType): 30: ('maintainer', p.UnicodeType, 0), 31: ('blocktime_seconds', p.UVarintType, 0), 32: ('bip115', p.BoolType, 0), + 33: ('cooldown', p.UVarintType, 0), } def __init__( @@ -73,7 +74,8 @@ class CoinDef(p.MessageType): blocktime_seconds: int = None, default_fee_b: dict = None, bitcore: dict = None, - blockbook: dict = None + blockbook: dict = None, + cooldown: int = None ): self.coin_name = coin_name self.coin_shortcut = coin_shortcut @@ -110,4 +112,5 @@ class CoinDef(p.MessageType): self.default_fee_b = default_fee_b self.bitcore = bitcore self.blockbook = blockbook + self.cooldown = cooldown p.MessageType.__init__(self) From b5443af4c5bea643181ecabc2a2d5d6290b67287 Mon Sep 17 00:00:00 2001 From: matejcik Date: Mon, 30 Jul 2018 14:25:53 +0200 Subject: [PATCH 465/767] tools: coin_defs renamed to coin_info and interface improved a little --- tools/coin_gen.py | 148 ++++++++++++++++++++++----- tools/{coin_defs.py => coin_info.py} | 71 +++++++++---- tools/coins_details.py | 23 ++--- tools/support.py | 16 +-- 4 files changed, 192 insertions(+), 66 deletions(-) rename tools/{coin_defs.py => coin_info.py} (90%) diff --git a/tools/coin_gen.py b/tools/coin_gen.py index 04f775399..771b0c33f 100755 --- a/tools/coin_gen.py +++ b/tools/coin_gen.py @@ -8,7 +8,7 @@ import glob import click -import coin_defs +import coin_info try: import mako @@ -25,10 +25,13 @@ except ImportError: requests = None try: + import binascii + import struct + import zlib from hashlib import sha256 import ed25519 from PIL import Image - from trezorlib.protobuf import dump_message + from trezorlib import protobuf from coindef import CoinDef CAN_BUILD_DEFS = True @@ -36,7 +39,7 @@ except ImportError: CAN_BUILD_DEFS = False -# ======= Jinja2 management ====== +# ======= Mako management ====== def c_str_filter(b): @@ -70,26 +73,36 @@ def render_file(filename, coins, support_info): # ====== validation functions ====== -def check_support(defs, support_data): +def check_support(defs, support_data, fail_missing=False): check_passed = True + coin_list = defs.as_list() + coin_names = {coin["key"]: coin["name"] for coin in coin_list} + + def coin_name(key): + if key in coin_names: + return "{} ({})".format(key, coin_names[key]) + else: + return "{} ".format(key) for key, support in support_data.items(): - errors = coin_defs.validate_support(support) + errors = coin_info.validate_support(support) if errors: check_passed = False - print("ERR:", "invalid definition for", key) + print("ERR:", "invalid definition for", coin_name(key)) print("\n".join(errors)) - expected_coins = set(coin["key"] for coin in defs["coins"] + defs["misc"]) + expected_coins = set(coin["key"] for coin in defs.coins + defs.misc) # detect missing support info for expected for coin in expected_coins: if coin not in support_data: - check_passed = False - print("ERR: Missing support info for", coin) + if fail_missing: + check_passed = False + print("ERR: Missing support info for", coin_name(coin)) + else: + print("WARN: Missing support info for", coin_name(coin)) # detect non-matching support info - coin_list = sum(defs.values(), []) coin_set = set(coin["key"] for coin in coin_list) for key in support_data: # detect non-matching support info @@ -97,9 +110,9 @@ def check_support(defs, support_data): check_passed = False print("ERR: Support info found for unknown coin", key) - # detect override - info only, doesn't fail check + # detect override - doesn't fail check if key not in expected_coins: - print("INFO: Override present for coin", key) + print("INFO: Override present for coin", coin_name(key)) return check_passed @@ -108,13 +121,13 @@ def check_btc(coins): check_passed = True for coin in coins: - errors = coin_defs.validate_btc(coin) + errors = coin_info.validate_btc(coin) if errors: check_passed = False print("ERR:", "invalid definition for", coin["name"]) print("\n".join(errors)) - collisions = coin_defs.find_address_collisions(coins) + collisions = coin_info.find_address_collisions(coins) # warning only for key, dups in collisions.items(): if dups: @@ -135,7 +148,7 @@ def check_backends(coins): for backend in backends: print("checking", backend, "... ", end="", flush=True) try: - j = requests.get(backend + "/block-index/0").json() + j = requests.get(backend + "/api/block-index/0").json() if j["blockHash"] != genesis_block: raise RuntimeError("genesis block mismatch") except Exception as e: @@ -146,6 +159,59 @@ def check_backends(coins): return check_passed +# ====== coindefs generators ====== + + +def convert_icon(icon): + """Convert PIL icon to TOIF format""" + # TODO: move this to python-trezor at some point + DIM = 32 + icon = icon.resize((DIM, DIM), Image.LANCZOS) + # remove alpha channel, replace with black + bg = Image.new("RGBA", icon.size, (0, 0, 0, 255)) + icon = Image.alpha_composite(bg, icon) + # process pixels + pix = icon.load() + data = bytes() + for y in range(DIM): + for x in range(DIM): + r, g, b, _ = pix[x, y] + c = ((r & 0xF8) << 8) | ((g & 0xFC) << 3) | ((b & 0xF8) >> 3) + data += struct.pack(">H", c) + z = zlib.compressobj(level=9, wbits=10) + zdata = z.compress(data) + z.flush() + zdata = zdata[2:-4] # strip header and checksum + return zdata + + +def coindef_from_dict(coin): + proto = CoinDef() + for fname, _, fflags in CoinDef.FIELDS.values(): + val = coin.get(fname) + if val is None and fflags & protobuf.FLAG_REPEATED: + val = [] + elif fname == "signed_message_header": + val = val.encode("utf-8") + elif fname == "hash_genesis_block": + val = binascii.unhexlify(val) + setattr(proto, fname, val) + + return proto + + +def serialize_coindef(proto, icon): + proto.icon = icon + buf = io.BytesIO() + protobuf.dump_message(buf, proto) + return buf.getvalue() + + +def sign(data): + h = sha256(data).digest() + sign_key = ed25519.SigningKey(b"A" * 32) + return sign_key.sign(h) + + # ====== click command handlers ====== @@ -155,12 +221,17 @@ def cli(): @cli.command() +@click.option( + "--check-missing-support/--no-check-missing-support", + "-s", + help="Fail if support info for a coin is missing", +) @click.option( "--backend-check/--no-backend-check", "-b", help="Also check blockbook/bitcore responses", ) -def check(backend_check): +def check(check_missing_support, backend_check): """Validate coin definitions. Checks that every btc-like coin is properly filled out, reports address collisions @@ -169,20 +240,21 @@ def check(backend_check): if backend_check and requests is None: raise click.ClickException("You must install requests for backend check") - defs = coin_defs.get_all() + defs = coin_info.get_all() all_checks_passed = True print("Checking BTC-like coins...") - if not check_btc(defs["coins"]): + if not check_btc(defs.coins): all_checks_passed = False print("Checking support data...") - if not check_support(defs, coin_defs.get_support_data()): + support_data = coin_info.get_support_data() + if not check_support(defs, support_data, fail_missing=check_missing_support): all_checks_passed = False if backend_check: print("Checking backend responses...") - if not check_backends(defs["coins"]): + if not check_backends(defs.coins): all_checks_passed = False if not all_checks_passed: @@ -196,9 +268,8 @@ def check(backend_check): @click.option("-o", "--outfile", type=click.File(mode="w"), default="./coins.json") def coins_json(outfile): """Generate coins.json for consumption in python-trezor and Connect/Wallet""" - defs = coin_defs.get_all() - coins = defs["coins"] - support_info = coin_defs.support_info(coins) + coins = coin_info.get_all().coins + support_info = coin_info.support_info(coins) by_name = {} for coin in coins: coin["support"] = support_info[coin["key"]] @@ -206,6 +277,30 @@ def coins_json(outfile): with outfile: json.dump(by_name, outfile, indent=4, sort_keys=True) + outfile.write("\n") + + +@cli.command() +@click.option("-o", "--outfile", type=click.File(mode="w"), default="./coindefs.json") +def coindefs(outfile): + """Generate signed coin definitions for python-trezor and others + + This is currently unused but should enable us to add new coins without having to + update firmware. + """ + coins = coin_info.get_all().coins + coindefs = {} + for coin in coins: + key = coin["key"] + icon = Image.open(coin["icon"]) + ser = serialize_coindef(coindef_from_dict(coin), convert_icon(icon)) + sig = sign(ser) + definition = binascii.hexlify(sig + ser).decode("ascii") + coindefs[key] = definition + + with outfile: + json.dump(coindefs, outfile, indent=4, sort_keys=True) + outfile.write("\n") @cli.command() @@ -236,10 +331,9 @@ def render(paths): else: files.append(path) - defs = coin_defs.get_all() - all_coins = sum(defs.values(), []) - versions = coin_defs.latest_releases() - support_info = coin_defs.support_info(all_coins, erc20_versions=versions) + defs = coin_info.get_all() + versions = coin_info.latest_releases() + support_info = coin_info.support_info(defs, erc20_versions=versions) # munch dicts - make them attribute-accessable for key, value in defs.items(): diff --git a/tools/coin_defs.py b/tools/coin_info.py similarity index 90% rename from tools/coin_defs.py rename to tools/coin_info.py index 52e7e3637..31237f666 100755 --- a/tools/coin_defs.py +++ b/tools/coin_info.py @@ -30,6 +30,35 @@ def load_json(*path): return json.load(f, object_pairs_hook=OrderedDict) +# ====== CoinsInfo ====== + + +class CoinsInfo(dict): + """Collection of information about all known kinds of coins. + + It contains the following lists: + `coins` for btc-like coins, + `eth` for ethereum networks, + `erc20` for ERC20 tokens, + `nem` for NEM mosaics, + `misc` for other networks. + + Accessible as a dict or by attribute: `info["coins"] == info.coins` + """ + + def as_list(self): + return sum(self.values(), []) + + def as_dict(self): + return {coin["key"]: coin for coin in self.as_list()} + + def __getattr__(self, attr): + if attr in self: + return self[attr] + else: + raise AttributeError(attr) + + # ====== coin validation ====== @@ -186,6 +215,7 @@ def _load_btc_coins(): name=coin["coin_name"], shortcut=coin["coin_shortcut"], key="coin:{}".format(coin["coin_shortcut"]), + icon=filename.replace(".json", ".png"), ) coins.append(coin) @@ -324,11 +354,14 @@ def support_info_erc20(coins, versions): def support_info(coins, erc20_versions=None, skip_missing=False): """Generate Trezor support information. - Takes a dict of coins and generates a support-info entry for each. + Takes a collection of coins and generates a support-info entry for each. The support-info is a dict with a number of known keys: `trezor1`, `trezor2`, `webwallet`, `connect`. An optional `other` entry is a dict of name-url pairs for third-party software. + The `coins` argument can be a `CoinsInfo` object, a list or a dict of + coin items. + For btc-like coins and misc networks, this is taken from `support.json`. For NEM mosaics and ethereum networks, the support is presumed to be "yes" for both Trezors. Webwallet and Connect info is not filled out. @@ -346,6 +379,11 @@ def support_info(coins, erc20_versions=None, skip_missing=False): and a warning emitted. "No support information" means that the coin is not listed in `support.json` and we have no heuristic to determine the support. """ + if isinstance(coins, CoinsInfo): + coins = coins.as_list() + elif isinstance(coins, dict): + coins = coins.values() + support_data = get_support_data() support = {} for coin in coins: @@ -428,6 +466,10 @@ def _filter_duplicate_shortcuts(coins): retained_coins = OrderedDict() for coin in coins: + if "Testnet" in coin["name"] and coin["shortcut"] == "tETH": + # special case for Ethereum testnets + continue + key = coin["shortcut"] if key in dup_keys: pass @@ -458,7 +500,7 @@ def get_all(): `nem` for NEM mosaics, `misc` for other networks. """ - all_coins = dict( + all_coins = CoinsInfo( coins=_load_btc_coins(), eth=_load_ethereum_networks(), erc20=_load_erc20_tokens(), @@ -476,22 +518,13 @@ def get_all(): coins.sort(key=lambda c: c["key"].upper()) _ensure_mandatory_values(coins) - if k != "eth": - dup_keys = _filter_duplicate_shortcuts(coins) - if dup_keys: - log.warning( - "{}: removing duplicate symbols: {}".format(k, ", ".join(dup_keys)) - ) + dup_keys = _filter_duplicate_shortcuts(coins) + if dup_keys: + if k == "erc20": + severity = logging.INFO + else: + severity = logging.WARNING + dup_str = ", ".join(dup_keys) + log.log(severity, "{}: removing duplicate symbols: {}".format(k, dup_str)) return all_coins - - -def get_list(): - """Return all definitions as a single list of coins.""" - all_coins = get_all() - return sum(all_coins.values(), []) - - -def get_dict(): - """Return all definitions as a dict indexed by coin keys.""" - return {coin["key"]: coin for coin in get_list()} diff --git a/tools/coins_details.py b/tools/coins_details.py index e12d18e55..5c4b407fb 100755 --- a/tools/coins_details.py +++ b/tools/coins_details.py @@ -5,15 +5,15 @@ import time import json import logging import requests -import coin_defs +import coin_info LOG = logging.getLogger(__name__) OPTIONAL_KEYS = ("links", "notes", "wallet") ALLOWED_SUPPORT_STATUS = ("yes", "no", "planned", "soon") -OVERRIDES = coin_defs.load_json("coins_details.override.json") -VERSIONS = coin_defs.latest_releases() +OVERRIDES = coin_info.load_json("coins_details.override.json") +VERSIONS = coin_info.latest_releases() COINMAKETCAP_CACHE = os.path.join(os.path.dirname(__file__), "coinmarketcap.json") @@ -292,16 +292,15 @@ def apply_overrides(coins): if __name__ == "__main__": - defs = coin_defs.get_all() - all_coins = sum(defs.values(), []) - support_info = coin_defs.support_info(all_coins, erc20_versions=VERSIONS) + defs = coin_info.get_all() + support_info = coin_info.support_info(defs, erc20_versions=VERSIONS) coins = {} - coins.update(update_coins(defs["coins"], support_info)) - coins.update(update_erc20(defs["erc20"], support_info)) - coins.update(update_ethereum_networks(defs["eth"], support_info)) - coins.update(update_simple(defs["nem"], support_info, "mosaic")) - coins.update(update_simple(defs["misc"], support_info, "coin")) + coins.update(update_coins(defs.coins, support_info)) + coins.update(update_erc20(defs.erc20, support_info)) + coins.update(update_ethereum_networks(defs.eth, support_info)) + coins.update(update_simple(defs.nem, support_info, "mosaic")) + coins.update(update_simple(defs.misc, support_info, "coin")) apply_overrides(coins) update_marketcaps(coins) @@ -311,5 +310,5 @@ if __name__ == "__main__": details = dict(coins=coins, info=info) print(json.dumps(info, sort_keys=True, indent=4)) - with open(os.path.join(coin_defs.DEFS_DIR, "coins_details.json"), "w") as f: + with open(os.path.join(coin_info.DEFS_DIR, "coins_details.json"), "w") as f: json.dump(details, f, sort_keys=True, indent=4) diff --git a/tools/support.py b/tools/support.py index c9659df39..fe610baca 100755 --- a/tools/support.py +++ b/tools/support.py @@ -2,10 +2,10 @@ import os import sys import click -import coin_defs +import coin_info import json -SUPPORT_INFO = coin_defs.get_support_data() +SUPPORT_INFO = coin_info.get_support_data() MANDATORY_ENTRIES = ("trezor1", "trezor2", "connect", "webwallet") @@ -36,7 +36,7 @@ def update_support(key, entry, value): def write_support_info(): - with open(os.path.join(coin_defs.DEFS_DIR, "support.json"), "w") as f: + with open(os.path.join(coin_info.DEFS_DIR, "support.json"), "w") as f: json.dump(SUPPORT_INFO, f, indent=4) f.write("\n") @@ -69,11 +69,11 @@ def check(): here for convenience and because it makes sense. But it's preferable to run it as part of 'coin_gen.py check'. """ - defs = coin_defs.get_all() - support_data = coin_defs.get_support_data() + defs = coin_info.get_all() + support_data = coin_info.get_support_data() import coin_gen - if not coin_gen.check_support(defs, support_data): + if not coin_gen.check_support(defs, support_data, fail_missing=True): sys.exit(1) @@ -88,7 +88,7 @@ def show(keyword): Only coins listed in support.json are considered "supported". That means that Ethereum networks, ERC20 tokens and NEM mosaics will probably show up wrong. """ - defs = coin_defs.get_list() + defs = coin_info.get_all().as_list() if keyword: for coin in defs: @@ -138,7 +138,7 @@ def set(support_key, entries, dry_run): Entries with other names will be inserted into "others". This is a good place to store links to 3rd party software, such as Electrum forks or claim tools. """ - coins = coin_defs.get_dict() + coins = coin_info.get_all().as_dict() if support_key not in coins: click.echo("Failed to find key {}".format(support_key)) click.echo("Use 'support.py show' to search for the right one.") From 7cb9bd9c785f8139dd3cbdcc261096a9a84809e4 Mon Sep 17 00:00:00 2001 From: matejcik Date: Mon, 30 Jul 2018 14:45:01 +0200 Subject: [PATCH 466/767] tools: clean up imports in coin_gen --- tools/coin_gen.py | 66 +++++++++++++++++++++++++++++++++--------- tools/requirements.txt | 13 +++++++++ 2 files changed, 65 insertions(+), 14 deletions(-) create mode 100644 tools/requirements.txt diff --git a/tools/coin_gen.py b/tools/coin_gen.py index 771b0c33f..b29ce577a 100755 --- a/tools/coin_gen.py +++ b/tools/coin_gen.py @@ -5,10 +5,16 @@ import re import sys import os import glob +import binascii +import struct +import zlib +from hashlib import sha256 import click import coin_info +from coindef import CoinDef + try: import mako @@ -25,15 +31,9 @@ except ImportError: requests = None try: - import binascii - import struct - import zlib - from hashlib import sha256 import ed25519 from PIL import Image from trezorlib import protobuf - from coindef import CoinDef - CAN_BUILD_DEFS = True except ImportError: CAN_BUILD_DEFS = False @@ -159,6 +159,29 @@ def check_backends(coins): return check_passed +def check_icons(coins): + check_passed = True + for coin in coins: + key = coin["key"] + icon_file = coin.get("icon") + if not icon_file: + print(key, ": missing icon") + check_passed = False + continue + + try: + icon = Image.open(icon_file) + except Exception: + print(key, ": failed to open icon file", icon_file) + check_passed = False + continue + + if icon.size != (96, 96) or icon.mode != "RGBA": + print(key, ": bad icon format (must be RGBA 96x96)") + check_passed = False + return check_passed + + # ====== coindefs generators ====== @@ -222,24 +245,34 @@ def cli(): @cli.command() @click.option( - "--check-missing-support/--no-check-missing-support", + "--missing-support/--no-missing-support", "-s", + default=False, help="Fail if support info for a coin is missing", ) @click.option( - "--backend-check/--no-backend-check", + "--backend/--no-backend", "-b", - help="Also check blockbook/bitcore responses", + default=False, + help="Check blockbook/bitcore responses", ) -def check(check_missing_support, backend_check): +@click.option( + "--icons/--no-icons", + default=True, + help="Check icon files" +) +def check(missing_support, backend, icons): """Validate coin definitions. Checks that every btc-like coin is properly filled out, reports address collisions and missing support information. """ - if backend_check and requests is None: + if backend and requests is None: raise click.ClickException("You must install requests for backend check") + if icons and not CAN_BUILD_DEFS: + raise click.ClickException("Missing requirements for icon check") + defs = coin_info.get_all() all_checks_passed = True @@ -249,10 +282,15 @@ def check(check_missing_support, backend_check): print("Checking support data...") support_data = coin_info.get_support_data() - if not check_support(defs, support_data, fail_missing=check_missing_support): + if not check_support(defs, support_data, fail_missing=missing_support): all_checks_passed = False - if backend_check: + if icons: + print("Checking icon files...") + if not check_icons(defs.coins): + all_checks_passed = False + + if backend: print("Checking backend responses...") if not check_backends(defs.coins): all_checks_passed = False @@ -335,7 +373,7 @@ def render(paths): versions = coin_info.latest_releases() support_info = coin_info.support_info(defs, erc20_versions=versions) - # munch dicts - make them attribute-accessable + # munch dicts - make them attribute-accessible for key, value in defs.items(): defs[key] = [Munch(coin) for coin in value] for key, value in support_info.items(): diff --git a/tools/requirements.txt b/tools/requirements.txt new file mode 100644 index 000000000..f910733ab --- /dev/null +++ b/tools/requirements.txt @@ -0,0 +1,13 @@ +click>=6 + +# for `coin_gen coindefs` and checking icons: +ed25519>=1.4 +Pillow>=5.2.0 +trezor>=0.10 + +# for checking backends, generating coins_details.json +requests>=2.19 + +# for rendering templates: +Mako>=1.0.7 +munch>=2.3.2 From e81d440359a944b2690f6ee0ecad306acd609ab7 Mon Sep 17 00:00:00 2001 From: matejcik Date: Mon, 30 Jul 2018 15:05:02 +0200 Subject: [PATCH 467/767] defs: update erc20 tokens, regenerate coins_details.json --- defs/coins_details.json | 486 +++++++++++++++++-------------- defs/coins_details.override.json | 2 +- defs/ethereum/tokens | 2 +- 3 files changed, 265 insertions(+), 225 deletions(-) diff --git a/defs/coins_details.json b/defs/coins_details.json index 5b530ff7d..06b93c5bc 100644 --- a/defs/coins_details.json +++ b/defs/coins_details.json @@ -5,7 +5,7 @@ "Github": "https://github.com/Bitcoin-ABC/bitcoin-abc", "Homepage": "https://www.bitcoincash.org" }, - "marketcap_usd": 13742785799, + "marketcap_usd": 14034413679, "name": "Bitcoin Cash", "shortcut": "BCH", "t1_enabled": "yes", @@ -21,7 +21,7 @@ "Github": "https://github.com/bitcoin/bitcoin", "Homepage": "https://bitcoin.org" }, - "marketcap_usd": 136203971319, + "marketcap_usd": 139846691999, "name": "Bitcoin", "shortcut": "BTC", "t1_enabled": "yes", @@ -37,7 +37,7 @@ "Github": "https://github.com/BTCPrivate/BitcoinPrivate", "Homepage": "https://btcprivate.org" }, - "marketcap_usd": 149954620, + "marketcap_usd": 139956956, "name": "Bitcoin Private", "shortcut": "BTCP", "t1_enabled": "yes", @@ -52,7 +52,7 @@ "Github": "https://github.com/BTCGPU/BTCGPU", "Homepage": "https://bitcoingold.org" }, - "marketcap_usd": 497959882, + "marketcap_usd": 523433696, "name": "Bitcoin Gold", "shortcut": "BTG", "t1_enabled": "yes", @@ -68,7 +68,7 @@ "Github": "https://github.com/LIMXTEC/BitCore", "Homepage": "https://bitcore.cc" }, - "marketcap_usd": 30064254, + "marketcap_usd": 30853808, "name": "Bitcore", "shortcut": "BTX", "t1_enabled": "no", @@ -81,7 +81,7 @@ "Github": "https://github.com/Crowndev/crowncoin", "Homepage": "https://crown.tech" }, - "marketcap_usd": 6768071, + "marketcap_usd": 9788097, "name": "Crown", "shortcut": "CRW", "t1_enabled": "no", @@ -94,7 +94,7 @@ "Github": "https://github.com/dashpay/dash", "Homepage": "https://www.dash.org" }, - "marketcap_usd": 1978399572, + "marketcap_usd": 1942889524, "name": "Dash", "shortcut": "DASH", "t1_enabled": "yes", @@ -110,7 +110,7 @@ "Github": "https://github.com/decred/dcrd", "Homepage": "https://www.decred.org" }, - "marketcap_usd": 507224924, + "marketcap_usd": 495856582, "name": "Decred", "shortcut": "DCR", "t1_enabled": "yes", @@ -123,7 +123,7 @@ "Github": "https://github.com/digibyte/digibyte", "Homepage": "https://digibyte.io" }, - "marketcap_usd": 420450687, + "marketcap_usd": 427647326, "name": "DigiByte", "shortcut": "DGB", "t1_enabled": "yes", @@ -149,7 +149,7 @@ "Github": "https://github.com/dogecoin/dogecoin", "Homepage": "http://dogecoin.com" }, - "marketcap_usd": 387724656, + "marketcap_usd": 371487254, "name": "Dogecoin", "shortcut": "DOGE", "t1_enabled": "yes", @@ -164,7 +164,7 @@ "Github": "https://github.com/fujicoin/fujicoin", "Homepage": "http://fujicoin.org" }, - "marketcap_usd": 728345, + "marketcap_usd": 745832, "name": "Fujicoin", "shortcut": "FJC", "t1_enabled": "yes", @@ -179,7 +179,7 @@ "Github": "https://github.com/flash-coin", "Homepage": "https://www.flashcoin.io" }, - "marketcap_usd": 11828430, + "marketcap_usd": 10829470, "name": "Flashcoin", "shortcut": "FLASH", "t1_enabled": "no", @@ -192,7 +192,7 @@ "Github": "https://github.com/FeatherCoin/Feathercoin", "Homepage": "https://feathercoin.com" }, - "marketcap_usd": 17325381, + "marketcap_usd": 21246165, "name": "Feathercoin", "shortcut": "FTC", "t1_enabled": "no", @@ -205,7 +205,7 @@ "Github": "https://github.com/Groestlcoin/groestlcoin", "Homepage": "https://www.groestlcoin.org" }, - "marketcap_usd": 45013544, + "marketcap_usd": 45964821, "name": "Groestlcoin", "shortcut": "GRS", "t1_enabled": "yes", @@ -233,7 +233,7 @@ "Github": "https://github.com/litecoin-project/litecoin", "Homepage": "https://litecoin.org" }, - "marketcap_usd": 4762460123, + "marketcap_usd": 4774226092, "name": "Litecoin", "shortcut": "LTC", "t1_enabled": "yes", @@ -249,7 +249,7 @@ "Github": "https://github.com/monacoinproject/monacoin", "Homepage": "https://monacoin.org" }, - "marketcap_usd": 132461117, + "marketcap_usd": 128119443, "name": "Monacoin", "shortcut": "MONA", "t1_enabled": "yes", @@ -277,7 +277,7 @@ "Github": "https://github.com/namecoin/namecoin-core", "Homepage": "https://namecoin.org" }, - "marketcap_usd": 30482980, + "marketcap_usd": 32374353, "name": "Namecoin", "shortcut": "NMC", "t1_enabled": "yes", @@ -292,7 +292,7 @@ "Github": "https://github.com/FundacionPesetacoin/PesetacoinCore", "Homepage": "http://pesetacoin.info" }, - "marketcap_usd": 3421001, + "marketcap_usd": 3356792, "name": "Pesetacoin", "shortcut": "PTC", "t1_enabled": "no", @@ -391,7 +391,7 @@ "Github": "https://github.com/terracoin/terracoin", "Homepage": "https://terracoin.io" }, - "marketcap_usd": 2070984, + "marketcap_usd": 2187227, "name": "Terracoin", "shortcut": "TRC", "t1_enabled": "no", @@ -404,7 +404,7 @@ "Github": "https://github.com/viacoin", "Homepage": "https://viacoin.org" }, - "marketcap_usd": 29527200, + "marketcap_usd": 30564496, "name": "Viacoin", "shortcut": "VIA", "t1_enabled": "yes", @@ -419,7 +419,7 @@ "Github": "https://github.com/vertcoin-project/vertcoin-core", "Homepage": "https://vertcoin.org" }, - "marketcap_usd": 53546930, + "marketcap_usd": 61062807, "name": "Vertcoin", "shortcut": "VTC", "t1_enabled": "yes", @@ -434,7 +434,7 @@ "Github": "https://github.com/myriadcoin/myriadcoin", "Homepage": "https://www.myriadcoin.org" }, - "marketcap_usd": 6517125, + "marketcap_usd": 6347837, "name": "Myriad", "shortcut": "XMY", "t1_enabled": "no", @@ -447,7 +447,7 @@ "Github": "https://github.com/zcoinofficial/zcoin", "Homepage": "https://zcoin.io" }, - "marketcap_usd": 83007553, + "marketcap_usd": 84122050, "name": "Zcoin", "shortcut": "XZC", "t1_enabled": "yes", @@ -463,7 +463,7 @@ "Github": "https://github.com/zcash/zcash", "Homepage": "https://z.cash" }, - "marketcap_usd": 954755674, + "marketcap_usd": 942969596, "name": "Zcash", "shortcut": "ZEC", "t1_enabled": "yes", @@ -478,7 +478,7 @@ "Github": "https://github.com/ZencashOfficial/zen", "Homepage": "https://zencash.com" }, - "marketcap_usd": 125906033, + "marketcap_usd": 125295762, "name": "Zencash", "shortcut": "ZEN", "t1_enabled": "no", @@ -619,7 +619,7 @@ "links": { "Homepage": "https://0xbitcoin.org/" }, - "marketcap_usd": 2187389, + "marketcap_usd": 2562071, "name": "0xBitcoin", "network": "eth", "shortcut": "0xBTC", @@ -636,7 +636,7 @@ "links": { "Homepage": "https://firstblood.io" }, - "marketcap_usd": 12785672, + "marketcap_usd": 12448386, "name": "FirstBlood", "network": "eth", "shortcut": "1ST", @@ -755,7 +755,7 @@ "links": { "Homepage": "http://accelerator.network" }, - "marketcap_usd": 228592, + "marketcap_usd": 207162, "name": "Accelerator Network", "network": "eth", "shortcut": "ACC", @@ -790,7 +790,7 @@ "Github": "https://github.com/aditus", "Homepage": "https://aditus.net" }, - "marketcap_usd": 1703030, + "marketcap_usd": 1522306, "name": "Aditus", "network": "eth", "shortcut": "ADI", @@ -825,7 +825,7 @@ "links": { "Homepage": "https://adshares.net" }, - "marketcap_usd": 2070638, + "marketcap_usd": 2099546, "name": "AdShares", "network": "eth", "shortcut": "ADST", @@ -843,7 +843,7 @@ "Github": "https://github.com/adchain", "Homepage": "https://adtoken.com" }, - "marketcap_usd": 18658200, + "marketcap_usd": 18169162, "name": "AdToken", "network": "eth", "shortcut": "ADT", @@ -879,7 +879,7 @@ "Github": "https://github.com/aeternity", "Homepage": "https://www.aeternity.com/" }, - "marketcap_usd": 448485182, + "marketcap_usd": 477255215, "name": "aeternity", "network": "eth", "shortcut": "AE", @@ -897,7 +897,7 @@ "Github": "https://github.com/singnet/singnet", "Homepage": "https://singularitynet.io" }, - "marketcap_usd": 45404870, + "marketcap_usd": 45481505, "name": "SingularityNET", "network": "eth", "shortcut": "AGI", @@ -915,7 +915,7 @@ "Github": "https://github.com/aionnetwork", "Homepage": "https://aion.network/" }, - "marketcap_usd": 152498011, + "marketcap_usd": 156312044, "name": "Aion", "network": "eth", "shortcut": "AION", @@ -932,7 +932,7 @@ "links": { "Homepage": "https://airtoken.com" }, - "marketcap_usd": 4683294, + "marketcap_usd": 5084029, "name": "AirToken", "network": "eth", "shortcut": "AIR", @@ -950,7 +950,7 @@ "Github": "https://github.com/AigangNetwork", "Homepage": "https://aigang.network/" }, - "marketcap_usd": 1420341, + "marketcap_usd": 1295077, "name": "Aigang", "network": "eth", "shortcut": "AIX", @@ -1003,7 +1003,7 @@ "Github": "https://github.com/AlisProject", "Homepage": "https://alismedia.jp" }, - "marketcap_usd": 2806230, + "marketcap_usd": 3001684, "name": "ALIS Token", "network": "eth", "shortcut": "ALIS", @@ -1074,7 +1074,7 @@ "Github": "https://github.com/amontech", "Homepage": "https://amon.tech" }, - "marketcap_usd": 1150968, + "marketcap_usd": 1054782, "name": "Amon", "network": "eth", "shortcut": "AMN", @@ -1144,7 +1144,7 @@ "Github": "https://github.com/Oxchild/crowdsale", "Homepage": "https://apisplatform.io" }, - "marketcap_usd": 26916818, + "marketcap_usd": 25481250, "name": "APIS", "network": "eth", "shortcut": "APIS", @@ -1162,7 +1162,7 @@ "Github": "https://github.com/Aptoide/AppCoins-ethereumj", "Homepage": "https://appcoins.io" }, - "marketcap_usd": 17238858, + "marketcap_usd": 17304441, "name": "AppCoins", "network": "eth", "shortcut": "APPC", @@ -1179,7 +1179,7 @@ "links": { "Homepage": "https://aigang.network" }, - "marketcap_usd": 1420341, + "marketcap_usd": 1295077, "name": "AIGang", "network": "eth", "shortcut": "APT", @@ -1198,7 +1198,7 @@ "Homepage": "https://arcade.city" }, "marketcap_usd": 0, - "name": "ARC", + "name": "Arcade Token", "network": "eth", "shortcut": "ARC", "t1_enabled": "yes", @@ -1214,7 +1214,7 @@ "links": { "Homepage": "https://www.arbitragect.com" }, - "marketcap_usd": 254831, + "marketcap_usd": 235767, "name": "ArbitrageCT", "network": "eth", "shortcut": "ARCT", @@ -1319,7 +1319,7 @@ "links": { "Homepage": "https://airswap.io" }, - "marketcap_usd": 21286200, + "marketcap_usd": 21923707, "name": "Airswap", "network": "eth", "shortcut": "AST", @@ -1506,6 +1506,24 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:AXPR": { + "address": "0xC39E626A04C5971D770e319760D7926502975e47", + "links": { + "Github": "https://www.github.com/axpire", + "Homepage": "https://www.axpire.io" + }, + "marketcap_usd": 5350824, + "name": "aXpire", + "network": "eth", + "shortcut": "AXPR", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:BANX": { "address": "0xF87F0D9153fea549c728Ad61cb801595a68b73de", "links": { @@ -1689,7 +1707,7 @@ "Github": "https://github.com/thebeetoken", "Homepage": "https://www.beetoken.com" }, - "marketcap_usd": 3439466, + "marketcap_usd": 3484443, "name": "Bee Token", "network": "eth", "shortcut": "BEE", @@ -1813,7 +1831,7 @@ "Github": "https://github.com/BankEx", "Homepage": "https://bankex.com/" }, - "marketcap_usd": 12829167, + "marketcap_usd": 14448321, "name": "BANKEX", "network": "eth", "shortcut": "BKX", @@ -1849,7 +1867,7 @@ "Github": "https://github.com/BlueCrypto", "Homepage": "https://blueprotocol.com/" }, - "marketcap_usd": 2892679, + "marketcap_usd": 2867676, "name": "Ethereum Blue", "network": "eth", "shortcut": "BLUE", @@ -1884,7 +1902,7 @@ "links": { "Homepage": "https://www.iconomi.net" }, - "marketcap_usd": 54548929, + "marketcap_usd": 54313273, "name": "Iconomi", "network": "eth", "shortcut": "BLX (Iconomi)", @@ -2021,7 +2039,7 @@ "Github": "https://github.com/bancorprotocol", "Homepage": "https://www.bancor.network/discover" }, - "marketcap_usd": 114236636, + "marketcap_usd": 117725395, "name": "Bancor", "network": "eth", "shortcut": "BNT", @@ -2072,7 +2090,7 @@ "links": { "Homepage": "https://bonpay.com" }, - "marketcap_usd": 1381380, + "marketcap_usd": 1319939, "name": "Bonpay", "network": "eth", "shortcut": "BON", @@ -2158,7 +2176,7 @@ "links": { "Homepage": "http://bro-consortium.io" }, - "marketcap_usd": 63388, + "marketcap_usd": 77904, "name": "BRAT", "network": "eth", "shortcut": "BRAT", @@ -2176,7 +2194,7 @@ "Github": "https://github.com/breadwallet", "Homepage": "https://token.breadapp.com/en" }, - "marketcap_usd": 33571968, + "marketcap_usd": 35196841, "name": "Bread", "network": "eth", "shortcut": "BRD", @@ -2369,7 +2387,7 @@ "Github": "https://github.com/bytom", "Homepage": "https://bytom.io" }, - "marketcap_usd": 351149431, + "marketcap_usd": 343741863, "name": "Bytom", "network": "eth", "shortcut": "BTM", @@ -2472,7 +2490,7 @@ "Github": "https://github.com/cryptotwenty", "Homepage": "https://crypto20.com" }, - "marketcap_usd": 41436137, + "marketcap_usd": 42246643, "name": "Crypto20's Token", "network": "eth", "shortcut": "C20", @@ -2607,7 +2625,7 @@ "links": { "Homepage": "https://cashaa.com" }, - "marketcap_usd": 14200361, + "marketcap_usd": 12039760, "name": "Cashaa", "network": "eth", "shortcut": "CAS", @@ -3076,7 +3094,7 @@ "links": { "Homepage": "https://cindicator.com" }, - "marketcap_usd": 42645320, + "marketcap_usd": 42756186, "name": "Cindicator", "network": "eth", "shortcut": "CND", @@ -3183,7 +3201,7 @@ "Github": "https://github.com/CoinvestHQ", "Homepage": "https://coinve.st" }, - "marketcap_usd": 138539, + "marketcap_usd": 145556, "name": "Coinvest V2 Token", "network": "eth", "shortcut": "COIN", @@ -3195,12 +3213,29 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:CORI": { + "address": "0x725B190Bc077FFde17Cf549AA8ba25e298550B18", + "links": { + "Homepage": "https://corrently.de/token/" + }, + "marketcap_usd": 0, + "name": "Corrently Invest Token", + "network": "eth", + "shortcut": "CORI", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:COV": { "address": "0xE2FB6529EF566a080e6d23dE0bd351311087D567", "links": { "Homepage": "https://covesting.io/" }, - "marketcap_usd": 19758025, + "marketcap_usd": 19053930, "name": "Covesting", "network": "eth", "shortcut": "COV", @@ -3236,7 +3271,7 @@ "Github": "https://github.com/aditus", "Homepage": "https://copytrack.io" }, - "marketcap_usd": 1801050, + "marketcap_usd": 1647004, "name": "COPYTRACK", "network": "eth", "shortcut": "CPY", @@ -3306,7 +3341,7 @@ "links": { "Homepage": "https://bitbounce.io" }, - "marketcap_usd": 14403918, + "marketcap_usd": 16106922, "name": "Credo / Bitbounce", "network": "eth", "shortcut": "CREDO", @@ -3497,7 +3532,7 @@ "Github": "https://github.com/cargoxio", "Homepage": "https://cargox.io" }, - "marketcap_usd": 4927779, + "marketcap_usd": 5508470, "name": "CargoX", "network": "eth", "shortcut": "CXO", @@ -3514,7 +3549,7 @@ "links": { "Homepage": "https://ccrb.io" }, - "marketcap_usd": 2485047, + "marketcap_usd": 2465241, "name": "CryptoCarbon", "network": "eth", "shortcut": "CryptoCarbon", @@ -3548,7 +3583,7 @@ "links": { "Homepage": "https://dadi.cloud" }, - "marketcap_usd": 6972897, + "marketcap_usd": 6397034, "name": "DADI", "network": "eth", "shortcut": "DADI", @@ -3566,7 +3601,7 @@ "Github": "https://github.com/makerdao", "Homepage": "https://makerdao.com" }, - "marketcap_usd": 54565947, + "marketcap_usd": 54947750, "name": "Dai Stablecoin v1.0", "network": "eth", "shortcut": "DAI", @@ -3583,7 +3618,7 @@ "links": { "Homepage": "http://www.dalecoin.org" }, - "marketcap_usd": 86518, + "marketcap_usd": 96967, "name": "DaleCoin", "network": "eth", "shortcut": "DALC", @@ -3671,7 +3706,7 @@ "Github": "https://github.com/streamr-dev", "Homepage": "https://www.streamr.com" }, - "marketcap_usd": 169556, + "marketcap_usd": 105505, "name": "DATACoin", "network": "eth", "shortcut": "DATACoin", @@ -3760,7 +3795,7 @@ "Github": "https://github.com/DistributedBanking/DCC", "Homepage": "http://dcc.finance" }, - "marketcap_usd": 22593785, + "marketcap_usd": 22042740, "name": "Distributed Credit Chain", "network": "eth", "shortcut": "DCC", @@ -3795,7 +3830,7 @@ "Github": "https://github.com/Dentacoin", "Homepage": "https://dentacoin.com" }, - "marketcap_usd": 121243831, + "marketcap_usd": 114423800, "name": "Dentacoin", "network": "eth", "shortcut": "DCN", @@ -3865,7 +3900,7 @@ "links": { "Homepage": "https://www.dentwireless.com" }, - "marketcap_usd": 31784946, + "marketcap_usd": 30123358, "name": "DENT", "network": "eth", "shortcut": "DENT", @@ -3917,7 +3952,7 @@ "Github": "https://github.com/digipulseio", "Homepage": "https://www.digipulse.io" }, - "marketcap_usd": 3413071, + "marketcap_usd": 2775061, "name": "DigiPulse", "network": "eth", "shortcut": "DGPT", @@ -3953,7 +3988,7 @@ "Github": "https://github.com/DigixGlobal", "Homepage": "https://digix.global" }, - "marketcap_usd": 2000406, + "marketcap_usd": 2025076, "name": "Digix Gold Token", "network": "eth", "shortcut": "DGX", @@ -3988,7 +4023,7 @@ "links": { "Homepage": "https://etheroll.com" }, - "marketcap_usd": 7422700, + "marketcap_usd": 7929119, "name": "Etheroll", "network": "eth", "shortcut": "DICE", @@ -4091,7 +4126,7 @@ "Homepage": "https://district0x.io" }, "marketcap_usd": 0, - "name": "DistrictOx", + "name": "District0x Network Token", "network": "eth", "shortcut": "DNT", "t1_enabled": "yes", @@ -4177,7 +4212,7 @@ "links": { "Homepage": "https://dropil.com" }, - "marketcap_usd": 114526762, + "marketcap_usd": 111935208, "name": "Dropil", "network": "eth", "shortcut": "DROP (dropil)", @@ -4230,7 +4265,7 @@ "Github": "https://github.com/dethertech", "Homepage": "https://dether.io" }, - "marketcap_usd": 2837715, + "marketcap_usd": 2794427, "name": "dether", "network": "eth", "shortcut": "DTH", @@ -4335,7 +4370,7 @@ "Github": "https://github.com/elangindonesia/EagleCoin", "Homepage": "https://eaglepay.io" }, - "marketcap_usd": 154096, + "marketcap_usd": 154491, "name": "EagleCoin", "network": "eth", "shortcut": "EAGLE", @@ -4420,7 +4455,7 @@ "links": { "Homepage": "https://edgeless.io" }, - "marketcap_usd": 32409395, + "marketcap_usd": 33666309, "name": "Edgeless", "network": "eth", "shortcut": "EDG", @@ -4437,7 +4472,7 @@ "links": { "Homepage": "https://eidoo.io" }, - "marketcap_usd": 26001179, + "marketcap_usd": 25997263, "name": "Eidoo", "network": "eth", "shortcut": "EDO", @@ -4526,7 +4561,7 @@ "Github": "https://github.com/eltcoin", "Homepage": "http://www.eltcoin.tech/" }, - "marketcap_usd": 334662, + "marketcap_usd": 342443, "name": "ELTCOIN", "network": "eth", "shortcut": "ELTCOIN", @@ -4703,7 +4738,7 @@ "links": { "Homepage": "https://eos.io" }, - "marketcap_usd": 7308090147, + "marketcap_usd": 7298516946, "name": "EOS", "network": "eth", "shortcut": "EOS", @@ -4756,7 +4791,7 @@ "links": { "Homepage": "https://www.ethbits.com" }, - "marketcap_usd": 1984761, + "marketcap_usd": 1809661, "name": "Ethbits", "network": "eth", "shortcut": "ETBS", @@ -5088,7 +5123,7 @@ "Github": "https://github.com/FundRequest", "Homepage": "https://fundrequest.io" }, - "marketcap_usd": 1189807, + "marketcap_usd": 1188860, "name": "FundRequest", "network": "eth", "shortcut": "FND", @@ -5192,7 +5227,7 @@ "links": { "Homepage": "https://funfair.io" }, - "marketcap_usd": 124880359, + "marketcap_usd": 126365312, "name": "Funfair", "network": "eth", "shortcut": "FUN", @@ -5245,7 +5280,7 @@ "Github": "https://github.com/BlockchainLabsNZ/gambit", "Homepage": "http://gambitcrypto.com" }, - "marketcap_usd": 5882833, + "marketcap_usd": 6158034, "name": "Gambit", "network": "eth", "shortcut": "GAM", @@ -5368,7 +5403,7 @@ "Github": "https://github.com/daostack", "Homepage": "https://daostack.io" }, - "marketcap_usd": 5478091, + "marketcap_usd": 5439100, "name": "DAOstack", "network": "eth", "shortcut": "GEN", @@ -5473,7 +5508,7 @@ "links": { "Homepage": "https://golem.network" }, - "marketcap_usd": 279952859, + "marketcap_usd": 280972506, "name": "Golem", "network": "eth", "shortcut": "GNT", @@ -5508,7 +5543,7 @@ "links": { "Homepage": "https://gridplus.io/token-sale" }, - "marketcap_usd": 12753939, + "marketcap_usd": 12981175, "name": "GRID", "network": "eth", "shortcut": "GRID", @@ -5597,7 +5632,7 @@ "Github": "https://github.com/GIFTO-io", "Homepage": "https://gifto.io/" }, - "marketcap_usd": 80119750, + "marketcap_usd": 77346378, "name": "Gifto", "network": "eth", "shortcut": "GTO", @@ -5615,7 +5650,7 @@ "Github": "https://github.com/GenesisVision", "Homepage": "https://genesis.vision" }, - "marketcap_usd": 31044868, + "marketcap_usd": 29228461, "name": "Genesis Vision", "network": "eth", "shortcut": "GVT", @@ -5720,7 +5755,7 @@ "Github": "https://github.com/havven/havven", "Homepage": "https://havven.io" }, - "marketcap_usd": 13299230, + "marketcap_usd": 17195341, "name": "Havven", "network": "eth", "shortcut": "HAV", @@ -5842,7 +5877,7 @@ "links": { "Homepage": "https://github.com/arachnid/hodlcoin" }, - "marketcap_usd": 299502, + "marketcap_usd": 240428, "name": "HODLCoin", "network": "eth", "shortcut": "HODL", @@ -5895,7 +5930,7 @@ "Github": "https://github.com/HiveProjectLTD", "Homepage": "https://hive-project.net" }, - "marketcap_usd": 20154450, + "marketcap_usd": 20232639, "name": "Hive Project", "network": "eth", "shortcut": "HVN", @@ -6034,7 +6069,7 @@ "links": { "Homepage": "https://icos.icobox.io" }, - "marketcap_usd": 4096363, + "marketcap_usd": 3553726, "name": "ICOS", "network": "eth", "shortcut": "ICOS", @@ -6051,7 +6086,7 @@ "links": { "Homepage": "https://www.icon.foundation" }, - "marketcap_usd": 493141981, + "marketcap_usd": 507798617, "name": "ICON", "network": "eth", "shortcut": "ICX", @@ -6085,7 +6120,7 @@ "links": { "Homepage": "https://investfeed.com" }, - "marketcap_usd": 4316662, + "marketcap_usd": 4546572, "name": "InvestFeed", "network": "eth", "shortcut": "IFT", @@ -6220,7 +6255,7 @@ "links": { "Homepage": "https://insights.network" }, - "marketcap_usd": 2851298, + "marketcap_usd": 2492982, "name": "Insights Network", "network": "eth", "shortcut": "INSTAR", @@ -6237,7 +6272,7 @@ "links": { "Homepage": "https://internxt.io" }, - "marketcap_usd": 2494494, + "marketcap_usd": 1892668, "name": "Internxt", "network": "eth", "shortcut": "INXT", @@ -6254,7 +6289,7 @@ "links": { "Homepage": "https://iost.io/" }, - "marketcap_usd": 221739000, + "marketcap_usd": 212517876, "name": "IOSToken", "network": "eth", "shortcut": "IOST", @@ -6319,13 +6354,31 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:IQN": { + "address": "0x0DB8D8b76BC361bAcbB72E2C491E06085A97Ab31", + "links": { + "Github": "https://github.com/iqeon", + "Homepage": "https://iqeon.io/" + }, + "marketcap_usd": 0, + "name": "IQeon", + "network": "eth", + "shortcut": "IQN", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:ITC": { "address": "0x5E6b6d9aBAd9093fdc861Ea1600eBa1b355Cd940", "links": { "Github": "https://github.com/IoTChainCode", "Homepage": "https://iotchain.io/" }, - "marketcap_usd": 26750163, + "marketcap_usd": 27009990, "name": "IoT Chain", "network": "eth", "shortcut": "ITC", @@ -6515,7 +6568,7 @@ "Github": "https://github.com/kikinteractive/kin-token", "Homepage": "https://kin.kik.com" }, - "marketcap_usd": 132768463, + "marketcap_usd": 155514660, "name": "Kin Foundation", "network": "eth", "shortcut": "KIN", @@ -6533,7 +6586,7 @@ "Github": "https://github.com/KyberNetwork", "Homepage": "https://kyber.network" }, - "marketcap_usd": 119484736, + "marketcap_usd": 117987320, "name": "Kyber Network", "network": "eth", "shortcut": "KNC", @@ -6569,7 +6622,7 @@ "Github": "https://github.com/Cryptense/", "Homepage": "https://kryll.io/" }, - "marketcap_usd": 705990, + "marketcap_usd": 688382, "name": "Kryll", "network": "eth", "shortcut": "KRL", @@ -6604,7 +6657,7 @@ "Github": "https://github.com/latoken", "Homepage": "https://latoken.com/" }, - "marketcap_usd": 8879580, + "marketcap_usd": 9051088, "name": "LATOKEN", "network": "eth", "shortcut": "LA", @@ -6638,7 +6691,7 @@ "links": { "Homepage": "https://www.leadcoin.network/" }, - "marketcap_usd": 2555566, + "marketcap_usd": 2710164, "name": "LEADCOIN", "network": "eth", "shortcut": "LDC", @@ -6652,8 +6705,10 @@ }, "erc20:eth:LEND": { "address": "0x80fB784B7eD66730e8b1DBd9820aFD29931aab03", - "hidden": 1, - "links": {}, + "links": { + "Github": "https://github.com/ETHLend", + "Homepage": "https://ethlend.io/" + }, "marketcap_usd": 0, "name": "EHTLend", "network": "eth", @@ -6740,7 +6795,7 @@ "links": { "Homepage": "http://www.lifelabs.io" }, - "marketcap_usd": 2645178, + "marketcap_usd": 3810614, "name": "LIFE", "network": "eth", "shortcut": "LIFE", @@ -6828,7 +6883,7 @@ "Github": "https://github.com/linkercoinfoundation", "Homepage": "https://www.linkercoin.com/en" }, - "marketcap_usd": 4110499, + "marketcap_usd": 3483072, "name": "Linker Coin", "network": "eth", "shortcut": "LNC-Linker Coin", @@ -6846,7 +6901,7 @@ "Github": "https://github.com/lendingblock", "Homepage": "https://lendingblock.com" }, - "marketcap_usd": 3206403, + "marketcap_usd": 2681371, "name": "Lendingblock", "network": "eth", "shortcut": "LND", @@ -6863,7 +6918,7 @@ "links": { "Homepage": "https://LockChain.co" }, - "marketcap_usd": 8149690, + "marketcap_usd": 8671107, "name": "LockChain", "network": "eth", "shortcut": "LOC", @@ -6881,7 +6936,7 @@ "Github": "http://github.com/locipro/loci-coin-sale", "Homepage": "https://locipro.com" }, - "marketcap_usd": 4748632, + "marketcap_usd": 5205604, "name": "LOCIcoin", "network": "eth", "shortcut": "LOCI", @@ -7196,7 +7251,7 @@ "Github": "https://github.com/theembermine", "Homepage": "https://embermine.com/" }, - "marketcap_usd": 389738, + "marketcap_usd": 333231, "name": "Embers", "network": "eth", "shortcut": "MBRS", @@ -7212,7 +7267,7 @@ "address": "0x93E682107d1E9defB0b5ee701C71707a4B2E46Bc", "hidden": 1, "links": {}, - "marketcap_usd": 325138, + "marketcap_usd": 246689, "name": "MCAP", "network": "eth", "shortcut": "MCAP", @@ -7230,7 +7285,7 @@ "Github": "https://github.com/musiconomi/", "Homepage": "https://musiconomi.com/" }, - "marketcap_usd": 636259, + "marketcap_usd": 531117, "name": "Musiconomi", "network": "eth", "shortcut": "MCI", @@ -7510,7 +7565,7 @@ "Github": "https://github.com/modum-io", "Homepage": "https://modum.io" }, - "marketcap_usd": 17985321, + "marketcap_usd": 16797450, "name": "Modum", "network": "eth", "shortcut": "MOD", @@ -7579,7 +7634,7 @@ "links": { "Homepage": "https://mothership.cx" }, - "marketcap_usd": 19547360, + "marketcap_usd": 18985808, "name": "Mothership", "network": "eth", "shortcut": "MSP", @@ -7614,7 +7669,7 @@ "links": { "Homepage": "http://www.monetha.io" }, - "marketcap_usd": 7667625, + "marketcap_usd": 8282450, "name": "Monetha", "network": "eth", "shortcut": "MTH", @@ -7734,7 +7789,7 @@ "Github": "https://github.com/Merculet", "Homepage": "https://www.merculet.io" }, - "marketcap_usd": 8246033, + "marketcap_usd": 8860323, "name": "Merculet", "network": "eth", "shortcut": "MVP", @@ -7784,7 +7839,7 @@ "links": { "Homepage": "https://mysterium.network" }, - "marketcap_usd": 4098996, + "marketcap_usd": 4143991, "name": "Mysterium", "network": "eth", "shortcut": "MYST", @@ -7819,7 +7874,7 @@ "Github": "https://github.com/NANJ-COIN", "Homepage": "https://nanjcoin.com/" }, - "marketcap_usd": 26179985, + "marketcap_usd": 24125286, "name": "NANJCOIN", "network": "eth", "shortcut": "NANJ", @@ -7873,7 +7928,7 @@ "Github": "https://github.com/polyswarm", "Homepage": "https://polyswarm.io" }, - "marketcap_usd": 28280604, + "marketcap_usd": 26652501, "name": "Nectar", "network": "eth", "shortcut": "NCT", @@ -7890,7 +7945,7 @@ "links": { "Homepage": "https://neverdie.com" }, - "marketcap_usd": 719747, + "marketcap_usd": 737077, "name": "Neverdie", "network": "eth", "shortcut": "NDC", @@ -8032,7 +8087,7 @@ "Github": "https://github.com/NperProject", "Homepage": "https://nper.io" }, - "marketcap_usd": 3789178, + "marketcap_usd": 3629046, "name": "NPER", "network": "eth", "shortcut": "NPER", @@ -8067,7 +8122,7 @@ "links": { "Homepage": "https://nuls.io" }, - "marketcap_usd": 98932000, + "marketcap_usd": 99949482, "name": "NULS", "network": "eth", "shortcut": "NULS", @@ -8118,7 +8173,7 @@ "links": { "Homepage": "https://beyond-the-void.net" }, - "marketcap_usd": 3208501, + "marketcap_usd": 2520441, "name": "Nexium", "network": "eth", "shortcut": "NxC", @@ -8152,7 +8207,7 @@ "links": { "Homepage": "https://www.openanx.org/en" }, - "marketcap_usd": 8103447, + "marketcap_usd": 7876053, "name": "OAX", "network": "eth", "shortcut": "OAX", @@ -8330,7 +8385,7 @@ "Github": "https://github.com/OpenSTFoundation", "Homepage": "https://simpletoken.org" }, - "marketcap_usd": 20921770, + "marketcap_usd": 21093182, "name": "Simple Token 'OST'", "network": "eth", "shortcut": "OST", @@ -8384,7 +8439,7 @@ "Github": "https://github.com/policypalnet", "Homepage": "https://www.policypal.network" }, - "marketcap_usd": 5838102, + "marketcap_usd": 5620794, "name": "PolicyPal Network", "network": "eth", "shortcut": "PAL", @@ -8472,7 +8527,7 @@ "links": { "Homepage": "http://www.tenx.tech" }, - "marketcap_usd": 95669125, + "marketcap_usd": 106796353, "name": "TenX", "network": "eth", "shortcut": "PAY", @@ -8541,7 +8596,7 @@ "Github": "https://github.com/PeculiumPCL/Peculium", "Homepage": "https://peculium.io" }, - "marketcap_usd": 3059219, + "marketcap_usd": 3168638, "name": "Peculium", "network": "eth", "shortcut": "PCL", @@ -8680,7 +8735,7 @@ "links": { "Homepage": "https://polybius.io" }, - "marketcap_usd": 10872599, + "marketcap_usd": 12192473, "name": "Polybius", "network": "eth", "shortcut": "PLBT", @@ -8784,7 +8839,7 @@ "links": { "Homepage": "https://polymath.network" }, - "marketcap_usd": 101096231, + "marketcap_usd": 109207468, "name": "Polymath Network", "network": "eth", "shortcut": "POLY", @@ -8819,7 +8874,7 @@ "Github": "https://github.com/PoSToken", "Homepage": "https://postoken.org" }, - "marketcap_usd": 57612, + "marketcap_usd": 49382, "name": "PoSToken", "network": "eth", "shortcut": "POS", @@ -8853,7 +8908,7 @@ "links": { "Homepage": "https://www.paypie.com" }, - "marketcap_usd": 19054283, + "marketcap_usd": 18973078, "name": "PayPie", "network": "eth", "shortcut": "PPP", @@ -8870,7 +8925,7 @@ "links": { "Homepage": "https://populous.co" }, - "marketcap_usd": 206288939, + "marketcap_usd": 206310332, "name": "Populous", "network": "eth", "shortcut": "PPT", @@ -8887,7 +8942,7 @@ "links": { "Homepage": "https://presearch.io" }, - "marketcap_usd": 16088845, + "marketcap_usd": 16376949, "name": "Presearch", "network": "eth", "shortcut": "PRE", @@ -8940,7 +8995,7 @@ "links": { "Homepage": "https://propy.com" }, - "marketcap_usd": 13249565, + "marketcap_usd": 13823049, "name": "Propy", "network": "eth", "shortcut": "PRO", @@ -9133,7 +9188,7 @@ "links": { "Homepage": "https://liquid.plus" }, - "marketcap_usd": 87768100, + "marketcap_usd": 84608865, "name": "QASH", "network": "eth", "shortcut": "QASH", @@ -9275,7 +9330,7 @@ "Github": "https://github.com/qtumproject", "Homepage": "https://qtum.org/" }, - "marketcap_usd": 683754148, + "marketcap_usd": 672128988, "name": "Qtum", "network": "eth", "shortcut": "QTUM", @@ -9329,7 +9384,7 @@ "Github": "https://github.com/ripio/rcn-token", "Homepage": "https://ripiocredit.network" }, - "marketcap_usd": 21481540, + "marketcap_usd": 25440190, "name": "Ripio Credit Network", "network": "eth", "shortcut": "RCN", @@ -9380,7 +9435,7 @@ "links": { "Homepage": "https://www.rebellious.io" }, - "marketcap_usd": 4840875, + "marketcap_usd": 5352695, "name": "Rebellious", "network": "eth", "shortcut": "REBL", @@ -9398,7 +9453,7 @@ "Github": "https://github.com/red", "Homepage": "https://ico.red-lang.org" }, - "marketcap_usd": 4464525, + "marketcap_usd": 4464577, "name": "Red Community Token", "network": "eth", "shortcut": "RED", @@ -9433,7 +9488,7 @@ "links": { "Homepage": "https://request.network" }, - "marketcap_usd": 45535674, + "marketcap_usd": 45978747, "name": "Request Network", "network": "eth", "shortcut": "REQ", @@ -9468,7 +9523,7 @@ "links": { "Homepage": "https://refereum.com" }, - "marketcap_usd": 29443554, + "marketcap_usd": 25840877, "name": "Refereum", "network": "eth", "shortcut": "RFR", @@ -9520,7 +9575,7 @@ "links": { "Homepage": "http://crowdsale.iex.ec" }, - "marketcap_usd": 49338502, + "marketcap_usd": 53398537, "name": "IEx.ec", "network": "eth", "shortcut": "RLC", @@ -9607,7 +9662,7 @@ "Github": "https://github.com/rocketico", "Homepage": "https://rocketico.io" }, - "marketcap_usd": 30374858, + "marketcap_usd": 32455190, "name": "Rocket Token", "network": "eth", "shortcut": "ROCK", @@ -9709,7 +9764,7 @@ "links": { "Homepage": "https://rivetzintl.com" }, - "marketcap_usd": 4189221, + "marketcap_usd": 4339000, "name": "Rivetz", "network": "eth", "shortcut": "RVT", @@ -9760,7 +9815,7 @@ "links": { "Homepage": "https://saltlending.com" }, - "marketcap_usd": 69113519, + "marketcap_usd": 66104435, "name": "Salt Lending Token", "network": "eth", "shortcut": "SALT", @@ -9777,7 +9832,7 @@ "links": { "Homepage": "https://santiment.net" }, - "marketcap_usd": 60746661, + "marketcap_usd": 62087815, "name": "Santiment", "network": "eth", "shortcut": "SAN", @@ -9828,7 +9883,7 @@ "links": { "Homepage": "https://sensay.it" }, - "marketcap_usd": 2343238, + "marketcap_usd": 2966575, "name": "Sensay", "network": "eth", "shortcut": "SENSE", @@ -10001,7 +10056,7 @@ "links": { "Homepage": "http://smartlands.io" }, - "marketcap_usd": 8767215, + "marketcap_usd": 8303928, "name": "Smartlands", "network": "eth", "shortcut": "SLT", @@ -10106,7 +10161,7 @@ "links": { "Homepage": "https://singulardtv.com" }, - "marketcap_usd": 20330100, + "marketcap_usd": 20751904, "name": "SingularDTV", "network": "eth", "shortcut": "SNGLS", @@ -10209,7 +10264,7 @@ "links": { "Homepage": "https://spankchain.com" }, - "marketcap_usd": 19072438, + "marketcap_usd": 21563556, "name": "SpankChain", "network": "eth", "shortcut": "SPANK", @@ -10398,7 +10453,7 @@ "links": { "Homepage": "https://stktoken.com" }, - "marketcap_usd": 9107909, + "marketcap_usd": 8311428, "name": "STK Token", "network": "eth", "shortcut": "STK", @@ -10433,7 +10488,7 @@ "Github": "https://github.com/Storj", "Homepage": "https://storj.io" }, - "marketcap_usd": 66918951, + "marketcap_usd": 64958549, "name": "STORJ", "network": "eth", "shortcut": "STORJ", @@ -10450,7 +10505,7 @@ "links": { "Homepage": "https://www.stormtoken.com" }, - "marketcap_usd": 72848235, + "marketcap_usd": 74980625, "name": "Storm Token", "network": "eth", "shortcut": "STORM", @@ -10486,7 +10541,7 @@ "Github": "https://github.com/Storiqa/", "Homepage": "https://storiqa.com" }, - "marketcap_usd": 26198882, + "marketcap_usd": 24625207, "name": "Storiqa", "network": "eth", "shortcut": "STQ", @@ -10539,7 +10594,7 @@ "links": { "Homepage": "https://substratum.net" }, - "marketcap_usd": 76760473, + "marketcap_usd": 74850688, "name": "Substratum", "network": "eth", "shortcut": "SUB", @@ -10731,7 +10786,7 @@ "Github": "https://github.com/telcoin", "Homepage": "https://www.telco.in" }, - "marketcap_usd": 28849900, + "marketcap_usd": 27585427, "name": "Telcoin", "network": "eth", "shortcut": "TEL", @@ -10749,7 +10804,7 @@ "Github": "https://github.com/TrueFlip", "Homepage": "https://trueflip.io" }, - "marketcap_usd": 4090098, + "marketcap_usd": 4128882, "name": "TrueFlip", "network": "eth", "shortcut": "TFL", @@ -10766,7 +10821,7 @@ "links": { "Homepage": "https://www.thetatoken.org/" }, - "marketcap_usd": 86247309, + "marketcap_usd": 83275610, "name": "Theta Token", "network": "eth", "shortcut": "THETA", @@ -10801,7 +10856,7 @@ "links": { "Homepage": "https://chronobank.io" }, - "marketcap_usd": 8070858, + "marketcap_usd": 7907275, "name": "Chronobank", "network": "eth", "shortcut": "TIME", @@ -10835,7 +10890,7 @@ "links": { "Homepage": "https://www.blocktix.io" }, - "marketcap_usd": 10202800, + "marketcap_usd": 10102469, "name": "Blocktix", "network": "eth", "shortcut": "TIX", @@ -10852,7 +10907,7 @@ "links": { "Homepage": "https://etherscan.io/token/TokenCard" }, - "marketcap_usd": 18520799, + "marketcap_usd": 18740954, "name": "TokenCard", "network": "eth", "shortcut": "TKN", @@ -11007,7 +11062,7 @@ "links": { "Homepage": "https://taas.fund" }, - "marketcap_usd": 15739703, + "marketcap_usd": 15435932, "name": "Token-as-a-Service", "network": "eth", "shortcut": "TaaS", @@ -11042,7 +11097,7 @@ "links": { "Homepage": "https://uquidcoin.com" }, - "marketcap_usd": 9677610, + "marketcap_usd": 10010897, "name": "Uquid Coin", "network": "eth", "shortcut": "UQC", @@ -11110,7 +11165,7 @@ "Github": "https://github.com/UniversaBlockchain/universa", "Homepage": "https://www.universa.io/" }, - "marketcap_usd": 19633367, + "marketcap_usd": 19413778, "name": "Universa", "network": "eth", "shortcut": "UTN-P", @@ -11197,7 +11252,7 @@ "Github": "https://github.com/blockv", "Homepage": "https://blockv.io" }, - "marketcap_usd": 37970723, + "marketcap_usd": 37098426, "name": "BLOCKv", "network": "eth", "shortcut": "VEE", @@ -11249,7 +11304,7 @@ "Github": "https://github.com/vechain-team", "Homepage": "https://tokensale.vechain.com/en" }, - "marketcap_usd": 1322696366, + "marketcap_usd": 1362675288, "name": "Vechain", "network": "eth", "shortcut": "VET", @@ -11301,7 +11356,7 @@ "Github": "https://github.com/ViceIndustryToken", "Homepage": "https://vicetoken.com/" }, - "marketcap_usd": 1687601, + "marketcap_usd": 1733578, "name": "Vice Industry Token", "network": "eth", "shortcut": "VIT", @@ -11389,7 +11444,7 @@ "links": { "Homepage": "https://veros.org" }, - "marketcap_usd": 390848, + "marketcap_usd": 403874, "name": "Veros", "network": "eth", "shortcut": "VRS", @@ -11424,7 +11479,7 @@ "Github": "https://github.com/waxio", "Homepage": "https://wax.io" }, - "marketcap_usd": 126705683, + "marketcap_usd": 127703971, "name": "WAX", "network": "eth", "shortcut": "WAX", @@ -11476,7 +11531,7 @@ "links": { "Homepage": "https://wepower.network" }, - "marketcap_usd": 17623431, + "marketcap_usd": 18045551, "name": "WePower", "network": "eth", "shortcut": "WCT", @@ -11564,7 +11619,7 @@ "links": { "Homepage": "https://wings.ai" }, - "marketcap_usd": 19729554, + "marketcap_usd": 21674199, "name": "WINGS", "network": "eth", "shortcut": "WINGS", @@ -11703,7 +11758,7 @@ "links": { "Homepage": "https://www.wacoin.io" }, - "marketcap_usd": 13995669, + "marketcap_usd": 13659448, "name": "WaBi", "network": "eth", "shortcut": "WaBi", @@ -11754,7 +11809,7 @@ "links": { "Homepage": "http://www.xaurum.org" }, - "marketcap_usd": 4150927, + "marketcap_usd": 4207927, "name": "Xaurum", "network": "eth", "shortcut": "XAUR", @@ -11772,7 +11827,7 @@ "Github": "https://github.com/blitzpredict", "Homepage": "https://www.blitzpredict.io" }, - "marketcap_usd": 1206956, + "marketcap_usd": 1351192, "name": "BlitzPredict", "network": "eth", "shortcut": "XBP", @@ -11895,7 +11950,7 @@ "Github": "https://github.com/InkProtocol/", "Homepage": "https://paywithink.com" }, - "marketcap_usd": 3160605, + "marketcap_usd": 3150830, "name": "Ink Protocol", "network": "eth", "shortcut": "XNK", @@ -11912,7 +11967,7 @@ "links": { "Homepage": "https://xenon.network" }, - "marketcap_usd": 1665792, + "marketcap_usd": 1079756, "name": "XENON", "network": "eth", "shortcut": "XNN", @@ -12034,7 +12089,7 @@ "Github": "https://github.com/zapproject", "Homepage": "https://zap.store" }, - "marketcap_usd": 4758475, + "marketcap_usd": 4236932, "name": "ZAP", "network": "eth", "shortcut": "ZAP", @@ -12051,7 +12106,7 @@ "links": { "Homepage": "https://zsc.io/" }, - "marketcap_usd": 9654553, + "marketcap_usd": 10032351, "name": "Zeusshield", "network": "eth", "shortcut": "ZCS", @@ -12069,7 +12124,7 @@ "Github": "https://github.com/zilliqa", "Homepage": "https://www.zilliqa.com/" }, - "marketcap_usd": 548784076, + "marketcap_usd": 540082149, "name": "Zilliqa", "network": "eth", "shortcut": "ZIL", @@ -12139,7 +12194,7 @@ "Github": "https://github.com/carVertical", "Homepage": "https://www.carvertical.com" }, - "marketcap_usd": 9094247, + "marketcap_usd": 8721118, "name": "carVertical", "network": "eth", "shortcut": "cV", @@ -12227,7 +12282,7 @@ "Github": "https://github.com/eosdac", "Homepage": "https://eosdac.io/" }, - "marketcap_usd": 23302126, + "marketcap_usd": 22043595, "name": "eosDAC", "network": "eth", "shortcut": "eosDAC", @@ -12295,7 +12350,7 @@ "address": "0x8667559254241ddeD4d11392f868d72092765367", "hidden": 1, "links": {}, - "marketcap_usd": 448485182, + "marketcap_usd": 477255215, "name": "Aeternity", "network": "kov", "shortcut": "Aeternity", @@ -12466,7 +12521,7 @@ "links": { "Homepage": "https://www.qwark.io" }, - "marketcap_usd": 2592261, + "marketcap_usd": 2361859, "name": "QWARK", "network": "ubq", "shortcut": "QWARK", @@ -12544,7 +12599,7 @@ "links": { "Homepage": "https://ellaism.org" }, - "marketcap_usd": 717389, + "marketcap_usd": 658775, "name": "Ellaism", "shortcut": "ELLA", "t1_enabled": "yes", @@ -12589,7 +12644,7 @@ "links": { "Homepage": "https://ethereumclassic.github.io" }, - "marketcap_usd": 1705863309, + "marketcap_usd": 1761482613, "name": "Ethereum Classic", "shortcut": "ETC", "t1_enabled": "yes", @@ -12604,7 +12659,7 @@ "links": { "Homepage": "https://www.ethereum.org" }, - "marketcap_usd": 46623589711, + "marketcap_usd": 46545512287, "name": "Ethereum", "shortcut": "ETH", "t1_enabled": "yes", @@ -12634,7 +12689,7 @@ "links": { "Homepage": "https://expanse.tech" }, - "marketcap_usd": 10189865, + "marketcap_usd": 10327901, "name": "Expanse", "shortcut": "EXP", "t1_enabled": "yes", @@ -12649,7 +12704,7 @@ "links": { "Homepage": "https://gochain.io" }, - "marketcap_usd": 32099950, + "marketcap_usd": 27885658, "name": "GoChain", "shortcut": "GO", "t1_enabled": "yes", @@ -12679,7 +12734,7 @@ "links": { "Homepage": "https://ubiqsmart.com" }, - "marketcap_usd": 50652593, + "marketcap_usd": 51535471, "name": "Ubiq", "shortcut": "UBQ", "t1_enabled": "yes", @@ -12706,22 +12761,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "eth:tETH": { - "hidden": 1, - "links": { - "Homepage": "https://www.ethereum.org" - }, - "marketcap_usd": 0, - "name": "Ethereum Testnet Kovan", - "shortcut": "tETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "eth:tRSK": { "hidden": 1, "links": { @@ -12742,7 +12781,7 @@ "links": { "Homepage": "https://www.cardano.org" }, - "marketcap_usd": 4176488085, + "marketcap_usd": 4098733811, "name": "Cardano", "shortcut": "ADA", "t1_enabled": "no", @@ -12753,7 +12792,7 @@ "links": { "Homepage": "https://lisk.io/" }, - "marketcap_usd": 523291562, + "marketcap_usd": 538864740, "name": "Lisk", "shortcut": "LSK", "t1_enabled": "no", @@ -12764,7 +12803,7 @@ "links": { "Homepage": "https://www.stellar.org" }, - "marketcap_usd": 5745967719, + "marketcap_usd": 5610860112, "name": "Stellar", "notes": "In development", "shortcut": "XLM", @@ -12776,7 +12815,7 @@ "links": { "Homepage": "https://getmonero.org" }, - "marketcap_usd": 2226986225, + "marketcap_usd": 2134713222, "name": "Monero", "notes": "In development", "shortcut": "XMR", @@ -12788,7 +12827,7 @@ "links": { "Homepage": "https://ripple.com" }, - "marketcap_usd": 17659543494, + "marketcap_usd": 17660224358, "name": "Ripple", "notes": "In development", "shortcut": "XRP", @@ -12800,7 +12839,7 @@ "links": { "Homepage": "https://tezos.com" }, - "marketcap_usd": 1266086135, + "marketcap_usd": 1245008536, "name": "Tezos", "shortcut": "XTZ", "t1_enabled": "no", @@ -12825,7 +12864,7 @@ "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 8656533, + "marketcap_usd": 7813618, "name": "DIMCOIN", "shortcut": "DIM", "t1_enabled": "yes", @@ -12836,10 +12875,11 @@ } }, "nem:DIMTOK": { + "coinmarketcap_alias": "dimcoin", "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 0, + "marketcap_usd": 7813618, "name": "DIM TOKEN", "shortcut": "DIMTOK", "t1_enabled": "yes", @@ -12881,7 +12921,7 @@ "links": { "Homepage": "https://nem.io" }, - "marketcap_usd": 1557342000, + "marketcap_usd": 1559440063, "name": "NEM", "shortcut": "XEM", "t1_enabled": "yes", @@ -12893,11 +12933,11 @@ } }, "info": { - "marketcap_usd": 225765247536, - "t1_coins": 661, - "t2_coins": 660, - "total_marketcap_usd": 288640246162, - "updated_at": 1532695674, - "updated_at_readable": "Fri Jul 27 14:47:54 2018" + "marketcap_usd": 229740155891, + "t1_coins": 662, + "t2_coins": 661, + "total_marketcap_usd": 293416788208, + "updated_at": 1532955716, + "updated_at_readable": "Mon Jul 30 15:01:56 2018" } } \ No newline at end of file diff --git a/defs/coins_details.override.json b/defs/coins_details.override.json index 5f0af0da6..6a422491e 100644 --- a/defs/coins_details.override.json +++ b/defs/coins_details.override.json @@ -1,5 +1,5 @@ { - "mosaic:DIMTOK": { + "nem:DIMTOK": { "coinmarketcap_alias": "dimcoin" }, "erc20:eth:GNT": { diff --git a/defs/ethereum/tokens b/defs/ethereum/tokens index 56d9c3c93..33e5c5dec 160000 --- a/defs/ethereum/tokens +++ b/defs/ethereum/tokens @@ -1 +1 @@ -Subproject commit 56d9c3c9324e30d7f53eda7b8dc3cae76a4da143 +Subproject commit 33e5c5decb94227abe116589c650ddfa66dbe9e5 From 1680eb1cfa6b7261b9f210064c6c84350f08c6b8 Mon Sep 17 00:00:00 2001 From: matejcik Date: Mon, 30 Jul 2018 15:05:19 +0200 Subject: [PATCH 468/767] tools: improve logging in coins_details.py --- tools/coins_details.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/tools/coins_details.py b/tools/coins_details.py index 5c4b407fb..6f3259dc6 100755 --- a/tools/coins_details.py +++ b/tools/coins_details.py @@ -5,6 +5,7 @@ import time import json import logging import requests +import sys import coin_info LOG = logging.getLogger(__name__) @@ -20,7 +21,7 @@ COINMAKETCAP_CACHE = os.path.join(os.path.dirname(__file__), "coinmarketcap.json COINMARKETCAP_TICKERS_URL = ( "https://api.coinmarketcap.com/v2/ticker/?start={}&convert=USD&limit=100" ) -COINMARKETCAP_GLOBAL_URL = "https://api.coinmarketcap.com/v2/global" +COINMARKETCAP_GLOBAL_URL = "https://api.coinmarketcap.com/v2/global/" def coinmarketcap_init(): @@ -292,6 +293,13 @@ def apply_overrides(coins): if __name__ == "__main__": + # setup logging + root = logging.getLogger() + root.setLevel(logging.DEBUG) + handler = logging.StreamHandler(sys.stdout) + handler.setLevel(logging.DEBUG) + root.addHandler(handler) + defs = coin_info.get_all() support_info = coin_info.support_info(defs, erc20_versions=VERSIONS) From e4d99939decf97cc573e50dbd9f6af8d0559e43d Mon Sep 17 00:00:00 2001 From: matejcik Date: Mon, 30 Jul 2018 15:06:38 +0200 Subject: [PATCH 469/767] tools: drop obsolete tools `build_coins.py` is replaced by `coin_gen.py coins_json` `gen_ethereum_tokens.py` is replaced by Mako generators in core/mcu --- tools/build_coins.py | 268 ----------------------------------- tools/ethereum_tokens_gen.py | 77 ---------- 2 files changed, 345 deletions(-) delete mode 100755 tools/build_coins.py delete mode 100755 tools/ethereum_tokens_gen.py diff --git a/tools/build_coins.py b/tools/build_coins.py deleted file mode 100755 index 498f8f403..000000000 --- a/tools/build_coins.py +++ /dev/null @@ -1,268 +0,0 @@ -#!/usr/bin/env python3 - -# This script generates coins.json files from the definitions in defs/ -# -# - `./build_coins.py` generates a big file with everything -# - `./build_coins.py XXX` generates a file with coins supported by XXX -# for example: `./build_coins.py webwallet` or `./build_coins.py trezor1` -# - `./build_coins.py XXX --defs` also adds protobuf definitions with TOIF icon -# -# generated file is coins.json in current directory, -# and coindefs.json if --def is enabled - -import json -import glob -import re -import os -import sys - - -BUILD_DEFS = '--defs' in sys.argv -if BUILD_DEFS: - from binascii import unhexlify - from hashlib import sha256 - import ed25519 - from PIL import Image - from trezorlib.protobuf import dump_message - from coindef import CoinDef - BUILD_DEFS = True - -TEST_BACKEND = '--test-backend' in sys.argv -if TEST_BACKEND: - import requests - - -def check_type(val, types, nullable=False, empty=False, regex=None, choice=None): # noqa:E501 - # check nullable - if nullable and val is None: - return True - # check empty - try: - if not empty and len(val) == 0: - return False - except TypeError: - pass - # check regex - if regex is not None: - if types is not str: - return False - m = re.match(regex, val) - if not m: - return False - # check choice - if choice is not None: - if val not in choice: - return False - # check type - if isinstance(types, list): - return True in [isinstance(val, t) for t in types] - else: - return isinstance(val, types) - - -def get_hash_genesis_block(api): - r = requests.get(api + '/api/block-index/0') - j = r.json() - return j['blockHash'] - - -def validate_coin(coin): - assert check_type(coin['coin_name'], str, regex=r'^[A-Z]') - assert check_type(coin['coin_shortcut'], str, regex=r'^[A-Zt][A-Z][A-Z]+$') - assert check_type(coin['coin_label'], str, regex=r'^[A-Z]') - assert check_type(coin['website'], str, regex=r'^http.*[^/]$') - assert check_type(coin['github'], str, regex=r'^https://github.com/.*[^/]$') # noqa:E501 - assert check_type(coin['maintainer'], str) - assert check_type(coin['curve_name'], str, choice=['secp256k1', 'secp256k1_decred', 'secp256k1_groestl']) # noqa:E501 - assert check_type(coin['address_type'], int) - assert check_type(coin['address_type_p2sh'], int) - assert coin['address_type'] != coin['address_type_p2sh'] - assert check_type(coin['maxfee_kb'], int) - assert check_type(coin['minfee_kb'], int) - assert coin['maxfee_kb'] >= coin['minfee_kb'] - assert check_type(coin['hash_genesis_block'], str, regex=r'^[0-9a-f]{64}$') - assert check_type(coin['xprv_magic'], int) - assert check_type(coin['xpub_magic'], int) - assert check_type(coin['xpub_magic_segwit_p2sh'], int, nullable=True) - assert check_type(coin['xpub_magic_segwit_native'], int, nullable=True) - assert coin['xprv_magic'] != coin['xpub_magic'] - assert coin['xprv_magic'] != coin['xpub_magic_segwit_p2sh'] - assert coin['xprv_magic'] != coin['xpub_magic_segwit_native'] - assert coin['xpub_magic'] != coin['xpub_magic_segwit_p2sh'] - assert coin['xpub_magic'] != coin['xpub_magic_segwit_native'] - assert coin['xpub_magic_segwit_p2sh'] is None or coin['xpub_magic_segwit_native'] is None or coin['xpub_magic_segwit_p2sh'] != coin['xpub_magic_segwit_native'] # noqa:E501 - assert check_type(coin['slip44'], int) - assert check_type(coin['segwit'], bool) - assert check_type(coin['decred'], bool) - assert check_type(coin['fork_id'], int, nullable=True) - assert check_type(coin['force_bip143'], bool) - assert check_type(coin['bip115'], bool) - assert check_type(coin['version_group_id'], int, nullable=True) - assert check_type(coin['default_fee_b'], dict) - assert check_type(coin['dust_limit'], int) - assert check_type(coin['blocktime_seconds'], int) - assert check_type(coin['signed_message_header'], str) - assert check_type(coin['uri_prefix'], str, regex=r'^[a-z]+$') - assert check_type(coin['min_address_length'], int) - assert check_type(coin['max_address_length'], int) - assert coin['max_address_length'] >= coin['min_address_length'] - assert check_type(coin['bech32_prefix'], str, regex=r'^[a-z]+$', nullable=True) - assert check_type(coin['cashaddr_prefix'], str, regex=r'^[a-z]+$', nullable=True) - assert check_type(coin['bitcore'], list, empty=True) - for bc in coin['bitcore']: - assert not bc.endswith('/') - if TEST_BACKEND: - assert get_hash_genesis_block(bc) == coin['hash_genesis_block'] - assert check_type(coin['blockbook'], list, empty=True) - for bb in coin['blockbook']: - assert not bb.endswith('/') - if TEST_BACKEND: - assert get_hash_genesis_block(bb) == coin['hash_genesis_block'] - - -def validate_icon(icon): - assert icon.size == (96, 96) - assert icon.mode == 'RGBA' - - -class Writer: - - def __init__(self): - self.buf = bytearray() - - def write(self, buf): - self.buf.extend(buf) - - -def serialize(coin, icon): - c = dict(coin) - c['signed_message_header'] = c['signed_message_header'].encode() - c['hash_genesis_block'] = unhexlify(c['hash_genesis_block']) - c['icon'] = icon - msg = CoinDef(**c) - w = Writer() - dump_message(w, msg) - return bytes(w.buf) - - -def sign(data): - h = sha256(data).digest() - sign_key = ed25519.SigningKey(b'A' * 32) - return sign_key.sign(h) - - -# conversion copied from trezor-core/tools/png2toi -# TODO: extract into common module in python-trezor -def convert_icon(icon): - import struct - import zlib - w, h = 32, 32 - icon = icon.resize((w, h), Image.LANCZOS) - # remove alpha channel, replace with black - bg = Image.new('RGBA', icon.size, (0, 0, 0, 255)) - icon = Image.alpha_composite(bg, icon) - # process pixels - pix = icon.load() - data = bytes() - for j in range(h): - for i in range(w): - r, g, b, _ = pix[i, j] - c = ((r & 0xF8) << 8) | ((g & 0xFC) << 3) | ((b & 0xF8) >> 3) - data += struct.pack('>H', c) - z = zlib.compressobj(level=9, wbits=10) - zdata = z.compress(data) + z.flush() - zdata = zdata[2:-4] # strip header and checksum - return zdata - - -def process_json(fn): - print(os.path.basename(fn), end=' ... ') - j = json.load(open(fn)) - validate_coin(j) - if BUILD_DEFS: - i = Image.open(fn.replace('.json', '.png')) - validate_icon(i) - ser = serialize(j, convert_icon(i)) - sig = sign(ser) - definition = (sig + ser).hex() - print('OK') - return j, definition - else: - print('OK') - return j, None - - -def process(for_device=None): - scriptdir = os.path.dirname(os.path.realpath(__file__)) - - support_json = json.load(open(scriptdir + '/../defs/support.json')) - if for_device is not None: - support_list = support_json[for_device].keys() - else: - support_list = None - - coins = {} - defs = {} - for fn in glob.glob(scriptdir + '/../defs/coins/*.json'): - c, d = process_json(fn) - n = c['coin_name'] - c['support'] = {} - for s in support_json.keys(): - c['support'][s] = support_json[s][n] if n in support_json[s] else None # noqa:E501 - if support_list is None or n in support_list: - coins[n] = c - defs[n] = d - - return (coins, defs) - - -if __name__ == '__main__': - if len(sys.argv) > 1 and not sys.argv[1].startswith('-'): - for_device = sys.argv[1] - else: - for_device = None - - (coins, defs) = process(for_device) - - json.dump(coins, open('coins.json', 'w'), indent=4, sort_keys=True) - if BUILD_DEFS: - json.dump(defs, open('coindefs.json', 'w'), indent=4, sort_keys=True) - - # check for colliding address versions - at_p2pkh = {} - at_p2sh = {} - slip44 = {} - - for n, c in coins.items(): - s = c['slip44'] - if s not in slip44: - slip44[s] = [] - if not(n.endswith('Testnet') and s == 1): - slip44[s].append(n) - if c['cashaddr_prefix']: # skip cashaddr currencies - continue - a1, a2 = c['address_type'], c['address_type_p2sh'] - if a1 not in at_p2pkh: - at_p2pkh[a1] = [] - if a2 not in at_p2sh: - at_p2sh[a2] = [] - at_p2pkh[a1].append(n) - at_p2sh[a2].append(n) - - print() - print('Colliding address_types for P2PKH:') - for k, v in at_p2pkh.items(): - if len(v) >= 2: - print('-', k, ':', ','.join(v)) - - print() - print('Colliding address_types for P2SH:') - for k, v in at_p2sh.items(): - if len(v) >= 2: - print('-', k, ':', ','.join(v)) - - print() - print('Colliding SLIP44 constants:') - for k, v in slip44.items(): - if len(v) >= 2: - print('-', k, ':', ','.join(v)) diff --git a/tools/ethereum_tokens_gen.py b/tools/ethereum_tokens_gen.py deleted file mode 100755 index 0b2577d2d..000000000 --- a/tools/ethereum_tokens_gen.py +++ /dev/null @@ -1,77 +0,0 @@ -#!/usr/bin/env python3 -import sys -import os -import json -import re - - -def get_tokens(): - tokens = [] - for s, i in networks: - try: - files = os.scandir('../defs/ethereum/tokens/tokens/%s' % s) - except FileNotFoundError: - continue - - for f in files: - if not f.path.endswith('.json'): - continue - - # print('Processing', f.path) - data = json.load(open(f.path, 'r')) - data['chain'] = s - data['chain_id'] = i - tokens.append(data) - - return tokens - - -def print_tokens(tokens, python=False): - count = 0 - for t in sorted(tokens, key=lambda x: x['chain'] + x['symbol'].upper()): - address, name, symbol, decimal, chain, chain_id = t['address'], t['name'], t['symbol'], int(t['decimals']), t['chain'], t['chain_id'] # noqa:E501 - address = '\\x'.join([address[i:i + 2] for i in range(0, len(address), 2)])[2:].lower() # noqa:E501 - ascii_only = re.match(r'^[ -\x7F]+$', symbol) is not None - if not ascii_only: # skip Unicode symbols, they are stupid - continue - name = name.strip() - count += 1 - if python: - print(" (%d, b'%s', '%s', %d), # %s / %s" % (chain_id, address, symbol, decimal, chain, name)) # noqa:E501 - else: - print('\t{%2d, "%s", " %s", %d}, // %s / %s' % (chain_id, address, symbol, decimal, chain, name)) # noqa:E501 - return count - - -# disabled are networks with no tokens defined in ethereum-lists/tokens repo - -networks = [ - ('ella', 64), - ('etc', 61), - ('eth', 1), - ('kov', 42), - ('rin', 4), - ('rop', 3), - ('ubq', 8), -] - - -def generate_c(tokens): - count = print_tokens(tokens) - print('-' * 32) - print('#define TOKENS_COUNT %d' % count) - - -def generate_python(tokens): - print('tokens = [') - print_tokens(tokens, python=True) - print(']') - - -if __name__ == '__main__': - tokens = get_tokens() - - if len(sys.argv) > 1 and sys.argv[1] == '--python': - generate_python(tokens) - else: - generate_c(tokens) From eed6c0fa43230834b1fe3e3f01b8dee9dd9730d4 Mon Sep 17 00:00:00 2001 From: matejcik Date: Mon, 30 Jul 2018 15:59:14 +0200 Subject: [PATCH 470/767] tools: add README --- tools/README.md | 65 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 tools/README.md diff --git a/tools/README.md b/tools/README.md new file mode 100644 index 000000000..104283136 --- /dev/null +++ b/tools/README.md @@ -0,0 +1,65 @@ +# Tools directory + +### `coin_info.py` + +Central module that extracts information from jsons in `defs/` directory. +Its most important function is `get_all()`. + +### `coin_gen.py` + +Code and data generator. Has the following functions: + +* __`check`__: runs validations. Currently, that is: + * schema validity in `defs/coins/*.json` + * availability of bitcore/blockbook backends + * icon format + * support data, i.e., that `support.json` matches the rest of data + +* __`coins_json`__: generates `coins.json` for use in python-trezor, connect + and wallet. By default outputs to current directory. + +* __`coindefs`__: generates `coindefs.json`, intended future format for sending + coin definitions to Trezor. + +* __`render`__: for every `filename.ext.mako` passed (or for all found in directory), + renders the Mako template with coin definitions and stores as corresponding + `filename.ext`. This is used to generate code in trezor-mcu and trezor-core. + +### `coins_details.py` + +Regenerates `defs/coins_details.json`, which is a catalog of coins for https://trezor.io/coins. + +All information is generated from coin definitions in `defs/`, support info is +taken either from `support.json`, or assumed (see `coin_info.support_info()`). + +If needed, any value can be overriden in `coins_details.override.json`. + +### `support.py` + +Support info management. Ensures `support.json` is in the proper format. Has the +following subcommands: + +* __`rewrite`__: regenerates `support.json` in a canonical format, i.e., only + mandatory fields in fixed order. + +* __`check`__: checks validity of support data. This is the same check + that runs as part of `coin_gen.py check`, except missing support data is always + an error. + +* __`show `__: searches coin database, matching key (`coin:BTC`), + name ("Bitcoin") or shortcut / ticker symbol ("BTC"). Displays all coins that match + and their support info, if found. + +* __`set [symbol=value]...`__: updates support info for coin key (`coin:BTC`, + can be found with `support.py show`). Basic `symbol`s are: `trezor1 trezor2 + connect webwallet`. Anything else is considered a link name: + `"Electrum=https://electrum.org"` + Allowed `value`s are `yes`, `no`, `soon`, `planned`, URLs and firmware version + numbers. Empty value (`trezor1=`) clears the respective symbol. + +### `requirements.txt` + +List of Python requiremens for all tools in `pip` format. Set up your environment with +`pip3 install -r requirements.txt`, or `pipenv install -r requirements.txt`. + +Python 3 is required, recommended is 3.6 or higher. From d154fb41340419bd1f39a045f77eb25785caa525 Mon Sep 17 00:00:00 2001 From: matejcik Date: Mon, 30 Jul 2018 16:01:23 +0200 Subject: [PATCH 471/767] travis: update to new tools --- .travis.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 601ad8809..834c2a27f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,13 +12,13 @@ python: - "3.5" install: - - pip install ed25519 Pillow demjson - - pip install --no-deps trezor + - pip install demjson + - pip install -r tools/requirements.txt script: - jsonlint defs/*.json - jsonlint defs/*/*.json - - python tools/build_coins.py --defs + - python tools/coin_gen.py check notifications: webhooks: From d608294a14c5b0d44fd71aa3a35b48edec7a5fbe Mon Sep 17 00:00:00 2001 From: matejcik Date: Mon, 30 Jul 2018 16:38:39 +0200 Subject: [PATCH 472/767] tools: don't be noisy when support info is missing because we have other tools for that --- tools/coin_info.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/coin_info.py b/tools/coin_info.py index 31237f666..cabe6b9ab 100755 --- a/tools/coin_info.py +++ b/tools/coin_info.py @@ -400,7 +400,7 @@ def support_info(coins, erc20_versions=None, skip_missing=False): continue elif not skip_missing: - log.warning("support info missing for {}".format(key)) + log.info("support info missing for {}".format(key)) support[key] = {} if erc20_versions: From 36469fc8987e4df3398969176dda2170c4a466f0 Mon Sep 17 00:00:00 2001 From: matejcik Date: Mon, 30 Jul 2018 17:28:20 +0200 Subject: [PATCH 473/767] tools: better filtering by support for mako code generators --- tools/coin_gen.py | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/tools/coin_gen.py b/tools/coin_gen.py index b29ce577a..56c5b75fc 100755 --- a/tools/coin_gen.py +++ b/tools/coin_gen.py @@ -34,6 +34,7 @@ try: import ed25519 from PIL import Image from trezorlib import protobuf + CAN_BUILD_DEFS = True except ImportError: CAN_BUILD_DEFS = False @@ -59,13 +60,26 @@ def ascii_filter(s): return re.sub("[^ -\x7e]", "_", s) +def make_support_filter(support_info): + def supported_on(device, coins): + for coin in coins: + if support_info[coin.key].get(device): + yield coin + return supported_on + + MAKO_FILTERS = {"c_str": c_str_filter, "ascii": ascii_filter} def render_file(filename, coins, support_info): """Opens `filename.j2`, renders the template and stores the result in `filename`.""" template = mako.template.Template(filename=filename + ".mako") - result = template.render(support_info=support_info, **coins, **MAKO_FILTERS) + result = template.render( + support_info=support_info, + supported_on=make_support_filter(support_info), + **coins, + **MAKO_FILTERS + ) with open(filename, "w") as f: f.write(result) @@ -256,11 +270,7 @@ def cli(): default=False, help="Check blockbook/bitcore responses", ) -@click.option( - "--icons/--no-icons", - default=True, - help="Check icon files" -) +@click.option("--icons/--no-icons", default=True, help="Check icon files") def check(missing_support, backend, icons): """Validate coin definitions. @@ -343,7 +353,10 @@ def coindefs(outfile): @cli.command() @click.argument("paths", metavar="[path]...", nargs=-1) -def render(paths): +@click.option( + "--erc20-support/--no-erc20-support", "-e", help="Download ERC20 support info" +) +def render(paths, erc20_support): """Generate source code from Jinja2 templates. For every "foo.bar.j2" filename passed, runs the template and @@ -370,7 +383,10 @@ def render(paths): files.append(path) defs = coin_info.get_all() - versions = coin_info.latest_releases() + if erc20_support: + versions = coin_info.latest_releases() + else: + versions = None support_info = coin_info.support_info(defs, erc20_versions=versions) # munch dicts - make them attribute-accessible From 11a386fed40be70185140285b485f00be16ad388 Mon Sep 17 00:00:00 2001 From: matejcik Date: Mon, 30 Jul 2018 18:10:00 +0200 Subject: [PATCH 474/767] tools: require python 3.6 --- tools/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/README.md b/tools/README.md index 104283136..da935f464 100644 --- a/tools/README.md +++ b/tools/README.md @@ -62,4 +62,4 @@ following subcommands: List of Python requiremens for all tools in `pip` format. Set up your environment with `pip3 install -r requirements.txt`, or `pipenv install -r requirements.txt`. -Python 3 is required, recommended is 3.6 or higher. +Python 3.6 or higher is required. From 621e8ded4523c403912fa1ef3e24290cd13ad5c1 Mon Sep 17 00:00:00 2001 From: leoreinaux Date: Tue, 31 Jul 2018 10:07:43 -0300 Subject: [PATCH 475/767] defs: add SmartCash (#183) --- defs/coins/smartcash.json | 44 ++++++++++++++++++++++++++++++ defs/coins/smartcash.png | Bin 0 -> 3330 bytes defs/coins/smartcash_testnet.json | 42 ++++++++++++++++++++++++++++ defs/coins/smartcash_testnet.png | Bin 0 -> 3136 bytes 4 files changed, 86 insertions(+) create mode 100644 defs/coins/smartcash.json create mode 100644 defs/coins/smartcash.png create mode 100644 defs/coins/smartcash_testnet.json create mode 100644 defs/coins/smartcash_testnet.png diff --git a/defs/coins/smartcash.json b/defs/coins/smartcash.json new file mode 100644 index 000000000..733f283c6 --- /dev/null +++ b/defs/coins/smartcash.json @@ -0,0 +1,44 @@ +{ + "coin_name": "SmartCash", + "coin_shortcut": "SMART", + "coin_label": "SmartCash", + "website": "https://smarcash.cc", + "github": "https://github.com/SmartCash/Core-Smart", + "maintainer": "Leandro Reinaux ", + "curve_name": "secp256k1", + "address_type": 63, + "address_type_p2sh": 18, + "maxfee_kb": 1000000, + "minfee_kb": 0, + "signed_message_header": "SmartCash Signed Message:\n", + "hash_genesis_block": "000007acc6970b812948d14ea5a0a13db0fdd07d5047c7e69101fa8b361e05a4", + "xprv_magic": 76066276, + "xpub_magic": 76067358, + "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "slip44": 224, + "segwit": false, + "decred": false, + "fork_id": null, + "force_bip143": false, + "bip115": false, + "version_group_id": null, + "default_fee_b": { + "Low": 1, + "Economy": 10, + "Normal": 100, + "High": 200 + }, + "dust_limit": 546, + "blocktime_seconds": 55, + "uri_prefix": "smart", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "https://insight.smartcash.cc" + ], + "blockbook": [], + "cooldown": 100 +} diff --git a/defs/coins/smartcash.png b/defs/coins/smartcash.png new file mode 100644 index 0000000000000000000000000000000000000000..e8a974e6ea5b8675c9f22fca175b2e5cd28e02d0 GIT binary patch literal 3330 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 M07*qoM6N<$f{ycH^Z)<= literal 0 HcmV?d00001 diff --git a/defs/coins/smartcash_testnet.json b/defs/coins/smartcash_testnet.json new file mode 100644 index 000000000..632562ae7 --- /dev/null +++ b/defs/coins/smartcash_testnet.json @@ -0,0 +1,42 @@ +{ + "coin_name": "SmartCash Testnet", + "coin_shortcut": "tSMART", + "coin_label": "SmartCash Testnet", + "website": "https://smartcash.cc", + "github": "https://github.com/SmartCash/Core-Smart", + "maintainer": "Leandro Reinaux ", + "curve_name": "secp256k1", + "address_type": 65, + "address_type_p2sh": 21, + "maxfee_kb": 1000000, + "minfee_kb": 0, + "signed_message_header": "SmartCash Signed Message:\n", + "hash_genesis_block": "0000027235b5679bcd28c90d03d4bf1a9ba4c07c4efcc1c87d6c68cce25e6e5d", + "xprv_magic": 70615956, + "xpub_magic": 70617039, + "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "slip44": 224, + "segwit": false, + "decred": false, + "fork_id": null, + "force_bip143": false, + "bip115": false, + "version_group_id": null, + "default_fee_b": { + "Low": 1, + "Economy": 10, + "Normal": 100, + "High": 200 + }, + "dust_limit": 546, + "blocktime_seconds": 55, + "uri_prefix": "testsmart", + "min_address_length": 27, + "max_address_length": 35, + "bitcore": [], + "blockbook": [], + "cooldown": 100 +} diff --git a/defs/coins/smartcash_testnet.png b/defs/coins/smartcash_testnet.png new file mode 100644 index 0000000000000000000000000000000000000000..b6254426f43d219a11ab20747c4dbfcfdb2eb35a GIT binary patch literal 3136 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 a(*Feo86>RmFS_Rd0000 Date: Fri, 3 Aug 2018 18:57:43 +0200 Subject: [PATCH 476/767] protob: add one empty line to pb2py to make isort happy --- protob/pb2py | 1 + 1 file changed, 1 insertion(+) diff --git a/protob/pb2py b/protob/pb2py index 6323d7f37..7864229c8 100755 --- a/protob/pb2py +++ b/protob/pb2py @@ -215,6 +215,7 @@ class Descriptor: # "from .. import protobuf as p" yield self.protobuf_import + " as p" + yield "" fields = [self.parse_field(field) for field in message.field] From 3a7bdf684a64d3e1eb98a7f6eaa73d8f53b7f51a Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 3 Aug 2018 19:11:02 +0200 Subject: [PATCH 477/767] protob: make isort happy correctly --- protob/pb2py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/protob/pb2py b/protob/pb2py index 7864229c8..cf73456f8 100755 --- a/protob/pb2py +++ b/protob/pb2py @@ -189,6 +189,8 @@ class Descriptor: if field.orig.type == field.orig.TYPE_MESSAGE ) + if len(imports) > 0: + yield "" # make isort happy for name in sorted(imports): yield self.create_message_import(name) @@ -215,19 +217,19 @@ class Descriptor: # "from .. import protobuf as p" yield self.protobuf_import + " as p" - yield "" fields = [self.parse_field(field) for field in message.field] + yield from self.process_message_imports(fields) + if any(field.repeated for field in fields): + yield "" yield "if __debug__:" yield " try:" yield " from typing import List" yield " except ImportError:" yield " List = None # type: ignore" - yield from self.process_message_imports(fields) - yield "" yield "" yield "class {}(p.MessageType):".format(message.name) From 2e0aaf5cff12ae979d0a44a9ff17c0f6aa7d0cfd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=84=87=E5=B1=B1P?= Date: Mon, 6 Aug 2018 19:32:34 +0900 Subject: [PATCH 478/767] add monacoin's blockbook (#187) --- defs/coins/monacoin.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/defs/coins/monacoin.json b/defs/coins/monacoin.json index b23b30239..a0de87581 100644 --- a/defs/coins/monacoin.json +++ b/defs/coins/monacoin.json @@ -37,6 +37,8 @@ "https://mona.chainsight.info", "https://insight.electrum-mona.org" ], - "blockbook": [], + "blockbook": [ + "https://blockbook.electrum-mona.org" + ], "cooldown": 100 } From b6232410a8e642e7b825dd4902d39b4005c0a5fb Mon Sep 17 00:00:00 2001 From: Michael Ira Krufky Date: Mon, 6 Aug 2018 10:22:25 -0400 Subject: [PATCH 479/767] eth: add Ether-1 (ETHO) --- defs/ethereum/networks.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/defs/ethereum/networks.json b/defs/ethereum/networks.json index 79c5b5889..0535e136d 100644 --- a/defs/ethereum/networks.json +++ b/defs/ethereum/networks.json @@ -150,5 +150,13 @@ "name": "Musicoin", "rskip60": false, "url": "https://musicoin.org" + }, + { + "chain_id": 1313114, + "slip44": 1313114, + "shortcut": "ETHO", + "name": "Ether-1", + "rskip60": false, + "url": "https://ether1.org" } ] From 25a706f0422f4bdec659dd628aba3f03f6d6d1a0 Mon Sep 17 00:00:00 2001 From: matejcik Date: Tue, 7 Aug 2018 13:00:30 +0200 Subject: [PATCH 480/767] tools: coin_gen can render into a given filename before, it could only render from `foo.bar.mako` to `foo.bar` --- tools/coin_gen.py | 73 +++++++++++++++++++++++++++++------------------ 1 file changed, 45 insertions(+), 28 deletions(-) diff --git a/tools/coin_gen.py b/tools/coin_gen.py index 56c5b75fc..4cca12092 100755 --- a/tools/coin_gen.py +++ b/tools/coin_gen.py @@ -65,23 +65,26 @@ def make_support_filter(support_info): for coin in coins: if support_info[coin.key].get(device): yield coin + return supported_on MAKO_FILTERS = {"c_str": c_str_filter, "ascii": ascii_filter} -def render_file(filename, coins, support_info): - """Opens `filename.j2`, renders the template and stores the result in `filename`.""" - template = mako.template.Template(filename=filename + ".mako") +def render_file(src, dst, coins, support_info): + """Renders `src` template into `dst`. + + `src` is a filename, `dst` is an open file object. + """ + template = mako.template.Template(filename=src) result = template.render( support_info=support_info, supported_on=make_support_filter(support_info), **coins, **MAKO_FILTERS ) - with open(filename, "w") as f: - f.write(result) + dst.write(result) # ====== validation functions ====== @@ -353,35 +356,29 @@ def coindefs(outfile): @cli.command() @click.argument("paths", metavar="[path]...", nargs=-1) +@click.option("-o", "--outfile", type=click.File("w"), help="Alternate output file") +@click.option("-v", "--verbose", is_flag=True, help="Print rendered file names") @click.option( "--erc20-support/--no-erc20-support", "-e", help="Download ERC20 support info" ) -def render(paths, erc20_support): - """Generate source code from Jinja2 templates. +def render(paths, outfile, verbose, erc20_support): + """Generate source code from Mako templates. - For every "foo.bar.j2" filename passed, runs the template and - saves the result as "foo.bar". + For every "foo.bar.mako" filename passed, runs the template and + saves the result as "foo.bar". For every directory name passed, + processes all ".mako" files found in that directory. - For every directory name passed, processes all ".j2" files found - in that directory. + If `-o` is specified, renders a single file into the specified outfile. If no arguments are given, processes the current directory. """ if not CAN_RENDER: raise click.ClickException("Please install 'mako' and 'munch'") - if not paths: - paths = ["."] - - files = [] - for path in paths: - if not os.path.exists(path): - click.echo("Path {} does not exist".format(path)) - elif os.path.isdir(path): - files += glob.glob(os.path.join(path, "*.mako")) - else: - files.append(path) + if outfile and (len(paths) != 1 or not os.path.isfile(paths[0])): + raise click.ClickException("Option -o can only be used with single input file") + # prepare defs defs = coin_info.get_all() if erc20_support: versions = coin_info.latest_releases() @@ -395,17 +392,37 @@ def render(paths, erc20_support): for key, value in support_info.items(): support_info[key] = Munch(value) + def do_render(src, dst): + if verbose: + click.echo("Rendering {} => {}".format(src, dst)) + render_file(src, dst, defs, support_info) + + # single in-out case + if outfile: + do_render(paths[0], outfile) + return + + # find files in directories + if not paths: + paths = ["."] + + files = [] + for path in paths: + if not os.path.exists(path): + click.echo("Path {} does not exist".format(path)) + elif os.path.isdir(path): + files += glob.glob(os.path.join(path, "*.mako")) + else: + files.append(path) + + # render each file for file in files: if not file.endswith(".mako"): click.echo("File {} does not end with .mako".format(file)) else: target = file[: -len(".mako")] - click.echo("Rendering {} => {}".format(file, target)) - try: - render_file(target, defs, support_info) - except Exception as e: - click.echo("Error occured: {}".format(e)) - raise + with open(target, "w") as dst: + do_render(file, dst) if __name__ == "__main__": From 8d1400cbd6832fd5046865af3f203b4062e40564 Mon Sep 17 00:00:00 2001 From: matejcik Date: Tue, 7 Aug 2018 13:03:51 +0200 Subject: [PATCH 481/767] ignore .vscode project dir --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index c8bfd1acb..e08caae12 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +/.vscode __pycache__/ defs/coins/tools/coins.json defs/coins/tools/coindefs.json From b0059adf3f02cfd78c44183771813bce2913ed12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20B=C3=ADlek?= Date: Mon, 13 Aug 2018 22:01:23 +0700 Subject: [PATCH 482/767] Lowering dash minfee (#190) --- defs/coins/dash.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/defs/coins/dash.json b/defs/coins/dash.json index 1b933a378..0c364ea7a 100644 --- a/defs/coins/dash.json +++ b/defs/coins/dash.json @@ -9,7 +9,7 @@ "address_type": 76, "address_type_p2sh": 16, "maxfee_kb": 100000, - "minfee_kb": 10000, + "minfee_kb": 1000, "signed_message_header": "DarkCoin Signed Message:\n", "hash_genesis_block": "00000ffd590b1485b3caadc19b22e6379c733355108f107a430458cdf3407ab6", "xprv_magic": 50221816, From 13f2f0042da3634ae31f4381cf522b22dec06210 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Matejov?= Date: Mon, 13 Aug 2018 17:45:36 +0200 Subject: [PATCH 483/767] tezos: field updates and added reveal operation (#170) Signed-off-by: Adrian Matejov --- protob/messages-tezos.proto | 126 +++++++++++++++++++++--------------- 1 file changed, 73 insertions(+), 53 deletions(-) diff --git a/protob/messages-tezos.proto b/protob/messages-tezos.proto index 091a354c2..2f954d4f0 100644 --- a/protob/messages-tezos.proto +++ b/protob/messages-tezos.proto @@ -5,6 +5,15 @@ package hw.trezor.messages.tezos; option java_package = "com.satoshilabs.trezor.lib.protobuf"; option java_outer_classname = "TrezorMessageTezos"; +/** + * Tezos Curve Type + */ +enum TezosCurveType { + Ed25519 = 0; + Secp256k1 = 1; + P256 = 2; +} + /** * Request: Ask device for Tezos address corresponding to address_n path * @start @@ -13,7 +22,8 @@ option java_outer_classname = "TrezorMessageTezos"; */ message TezosGetAddress { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - optional bool show_display = 2; // optionally show on display before sending the result + optional TezosCurveType curve = 2 [default=Ed25519]; // Curve to use in trezor + optional bool show_display = 3; // optionally show on display before sending the result } /** @@ -31,7 +41,8 @@ message TezosAddress { */ message TezosGetPublicKey { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - optional bool show_display = 2; // Optionally show on display before sending the result + optional TezosCurveType curve = 2 [default=Ed25519]; // Curve to use in trezor + optional bool show_display = 3; // Optionally show on display before sending the result } /** @@ -39,7 +50,7 @@ message TezosGetPublicKey { * @end */ message TezosPublicKey { - optional bytes public_key = 1; // Tezos public key + optional string public_key = 1; // b58 encoded Tezos public key with prefix } /** @@ -49,68 +60,77 @@ message TezosPublicKey { */ message TezosSignTx { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - optional TezosOperationCommon operation = 2; // Tezos operation structure - optional TezosTransactionType transaction = 3; // Tezos transaction part - optional TezosOriginationType origination = 4; // Tezos origination part - optional TezosDelegationType delegation = 5; // Tezos delegation part + optional TezosCurveType curve = 2 [default=Ed25519]; // Curve to use in trezor + optional bytes branch = 3; // b58 encoded branch with prefix + + optional TezosRevealOp reveal = 4; // Tezos reveal operation (may be bundled with other op) + optional TezosTransactionOp transaction = 5; // Tezos transaction operation + optional TezosOriginationOp origination = 6; // Tezos origination operation + optional TezosDelegationOp delegation = 7; // Tezos delegation operation /* - * Tezos contract ID - */ + * Tezos contract ID + */ message TezosContractID { optional TezosContractType tag = 1; optional bytes hash = 2; // Implicit = 21B, originated = 20B + 1B padding /* - * Type of Tezos Contract type - */ + * Type of Tezos Contract type + */ enum TezosContractType { Implicit = 0; Originated = 1; } } - /* - * Structure representing the common part for Tezos operations + /** + * Structure representing information for reveal */ - message TezosOperationCommon { - optional bytes branch = 1; - optional TezosOperationType tag = 2; - optional TezosContractID source = 3; - optional uint64 fee = 4; - optional uint64 counter = 5; - optional uint64 gas_limit = 6; - optional uint64 storage_limit = 7; - /* - * Type of Tezos operation - */ - enum TezosOperationType { - Transaction = 8; - Origination = 9; - Delegation = 10; - } + message TezosRevealOp { + optional TezosContractID source = 1; + optional uint64 fee = 2; + optional uint64 counter = 3; + optional uint64 gas_limit = 4; + optional uint64 storage_limit = 5; + optional bytes public_key = 6; } - /* - * Structure representing additional information for transaction + /** + * Structure representing information for transaction */ - message TezosTransactionType { - optional uint64 amount = 1; - optional TezosContractID destination = 2; - optional bytes parameters = 3; + message TezosTransactionOp { + optional TezosContractID source = 1; + optional uint64 fee = 2; + optional uint64 counter = 3; + optional uint64 gas_limit = 4; + optional uint64 storage_limit = 5; + optional uint64 amount = 6; + optional TezosContractID destination = 7; + optional bytes parameters = 8; } - /* - * Structure representing additional information for origination - */ - message TezosOriginationType { - optional bytes manager_pubkey = 1; - optional uint64 balance = 2; - optional bool spendable = 3; - optional bool delegatable = 4; - optional bytes delegate = 5; // 1B tag + 20B public key hash - optional bytes script = 6; + /** + * Structure representing information for origination + */ + message TezosOriginationOp { + optional TezosContractID source = 1; + optional uint64 fee = 2; + optional uint64 counter = 3; + optional uint64 gas_limit = 4; + optional uint64 storage_limit = 5; + optional bytes manager_pubkey = 6; + optional uint64 balance = 7; + optional bool spendable = 8; + optional bool delegatable = 9; + optional bytes delegate = 10; + optional bytes script = 11; } - /* - * Structure representing additional information for delegation - */ - message TezosDelegationType { - optional bytes delegate = 1; // 1B tag + 20B public key hash + /** + * Structure representing information for delegation + */ + message TezosDelegationOp { + optional TezosContractID source = 1; + optional uint64 fee = 2; + optional uint64 counter = 3; + optional uint64 gas_limit = 4; + optional uint64 storage_limit = 5; + optional bytes delegate = 6; } } @@ -119,7 +139,7 @@ message TezosSignTx { * @end */ message TezosSignedTx { - optional bytes signature = 1; // Tezos transaction signature - optional bytes sig_op_contents = 2; // Signed operation contents - optional string operation_hash = 3; // b58 check encoded blake2b hashed operation contents + optional string signature = 1; // Tezos b58 encoded transaction signature with prefix + optional bytes sig_op_contents = 2; // operation_bytes + signed operation_bytes + optional string operation_hash = 3; // b58 encoded hashed operation contents with prefix } From 18739987ee2884e74c0a0fccdd29a7d941ec1281 Mon Sep 17 00:00:00 2001 From: Matus Zamborsky Date: Tue, 14 Aug 2018 15:23:07 +0200 Subject: [PATCH 484/767] protob: Add Ontology support (#184) --- protob/Makefile | 2 +- protob/messages-ontology.proto | 198 +++++++++++++++++++++++++++++++++ protob/messages.proto | 12 ++ 3 files changed, 211 insertions(+), 1 deletion(-) create mode 100644 protob/messages-ontology.proto diff --git a/protob/Makefile b/protob/Makefile index 4168b783a..74d2e3339 100644 --- a/protob/Makefile +++ b/protob/Makefile @@ -1,4 +1,4 @@ -check: messages.pb messages-bitcoin.pb messages-bootloader.pb messages-cardano.pb messages-common.pb messages-crypto.pb messages-debug.pb messages-ethereum.pb messages-lisk.pb messages-management.pb messages-monero.pb messages-nem.pb messages-ripple.pb messages-stellar.pb messages-tezos.pb +check: messages.pb messages-bitcoin.pb messages-bootloader.pb messages-cardano.pb messages-common.pb messages-crypto.pb messages-debug.pb messages-ethereum.pb messages-lisk.pb messages-management.pb messages-monero.pb messages-nem.pb messages-ripple.pb messages-stellar.pb messages-tezos.pb messages-ontology.pb %.pb: %.proto protoc -I/usr/include -I. $< -o $@ diff --git a/protob/messages-ontology.proto b/protob/messages-ontology.proto new file mode 100644 index 000000000..338d5ce38 --- /dev/null +++ b/protob/messages-ontology.proto @@ -0,0 +1,198 @@ +syntax = "proto2"; + +// Sugar for easier handling in Java +option java_package = "com.satoshilabs.trezor.lib.protobuf"; +option java_outer_classname = "TrezorMessageOntology"; + +/** +* Ontology Transaction +*/ +message OntologyTransaction { + + /** + * Attribute of Ontology transaction + */ + message OntologyTxAttribute { + optional uint32 usage = 1; + optional bytes data = 2; + } + + optional uint32 version = 1; + optional uint32 type = 2; + optional uint32 nonce = 3; + optional uint64 gas_price = 4; + optional uint64 gas_limit = 5; + optional string payer = 6; + repeated OntologyTxAttribute tx_attributes = 7; +} + +/** + * Request: Ask device for Ontology public key corresponding to address_n path + * @start + * @next OntologyPublicKey +*/ +message OntologyGetPublicKey { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional bool show_display = 2; // Optionally show on display before sending the result +} + +/** + * Response: Contains Ontology public key derived from device private seed + * @end +*/ +message OntologyPublicKey { + optional bytes public_key = 1; // Ontology public key +} + +/** + * Request: Ask device for Ontology address corresponding to address_n path + * @start + * @next OntologyAddress + */ +message OntologyGetAddress { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional bool show_display = 2; // Optionally show on display before sending the result +} + +/** + * Response: Contains Ontology address derived from device private seed + * @end + */ +message OntologyAddress { + optional string address = 1; // Ontology address +} + + +/** + * Request: Ask device to sign Ontology transfer + * @start + * @next OntologySignedTransfer + */ + message OntologySignTransfer { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional OntologyTransaction transaction = 2; + optional OntologyTransfer transfer = 3; + + /** + * Ontology Transfer + */ + message OntologyTransfer { + /** + * Ontology Asset + */ + enum OntologyAsset { + ONT = 1; + ONG = 2; + } + + optional OntologyAsset asset = 1; + optional uint64 amount = 2; + optional string from_address = 3; + optional string to_address = 4; + } +} + +/** +* Response: Contains Ontology transfer signature +* @end +*/ +message OntologySignedTransfer { + optional bytes signature = 1; + optional bytes payload = 2; +} + +/** + * Request: Ask device to sign Ontology ONG withdrawal + * @start + * @next OntologySignedWithdrawOng + */ + message OntologySignWithdrawOng { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional OntologyTransaction transaction = 2; + optional OntologyWithdrawOng withdraw_ong = 3; + + /** + * Ontology ONG Withdrawal + */ + message OntologyWithdrawOng { + optional uint64 amount = 1; + optional string from_address = 2; + optional string to_address = 3; + } +} + +/** +* Response: Contains Ontology ONG withdrawal signature +* @end +*/ +message OntologySignedWithdrawOng { + optional bytes signature = 1; + optional bytes payload = 2; +} + +/** + * Request: Ask device to sign Ontology ONT ID registration + * @start + * @next OntologySignedOntIdRegister + */ + message OntologySignOntIdRegister { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional OntologyTransaction transaction = 2; + optional OntologyOntIdRegister ont_id_register = 3; + + /** + * Ontology ONT ID registration + */ + message OntologyOntIdRegister { + optional string ont_id = 1; + optional bytes public_key = 2; + } +} + +/** +* Response: Contains Ontology ONT ID registration signature +* @end +*/ +message OntologySignedOntIdRegister { + optional bytes signature = 1; + optional bytes payload = 2; +} + + +/** + * Request: Ask device to sign Ontology ONT ID attributes adding + * @start + * @next OntologySignedOntIdAddAttributes + */ + message OntologySignOntIdAddAttributes { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional OntologyTransaction transaction = 2; + optional OntologyOntIdAddAttributes ont_id_add_attributes = 3; + + /** + * Attribute of Ontology ONT ID + */ + message OntologyOntIdAttribute { + optional string key = 1; + optional string type = 2; + optional string value = 3; + } + + /** + * Ontology ONT ID attributes adding + */ + message OntologyOntIdAddAttributes { + optional string ont_id = 1; + optional bytes public_key = 2; + repeated OntologyOntIdAttribute ont_id_attributes = 3; + } +} + +/** +* Response: Contains Ontology ONT ID attributes adding signature +* @end +*/ +message OntologySignedOntIdAddAttributes { + optional bytes signature = 1; + optional bytes payload = 2; +} diff --git a/protob/messages.proto b/protob/messages.proto index ff5171f43..05536de10 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -174,6 +174,18 @@ enum MessageType { MessageType_CardanoTxAck = 309 [(wire_in) = true]; MessageType_CardanoSignedTransaction = 310 [(wire_out) = true]; + // Ontology + MessageType_OntologyGetAddress = 350 [(wire_in) = true]; + MessageType_OntologyAddress = 351 [(wire_out) = true]; + MessageType_OntologyGetPublicKey = 352 [(wire_in) = true]; + MessageType_OntologyPublicKey = 353 [(wire_out) = true]; + MessageType_OntologySignTx = 354 [(wire_in) = true]; + MessageType_OntologySignedTx = 355 [(wire_out) = true]; + MessageType_OntologySignTransfer = 356 [(wire_in) = true]; + MessageType_OntologySignedTransfer = 357 [(wire_out) = true]; + MessageType_OntologySignWithdrawOng = 358 [(wire_in) = true]; + MessageType_OntologySignedWithdrawOng = 359 [(wire_out) = true]; + // Ripple MessageType_RippleGetAddress = 400 [(wire_in) = true]; MessageType_RippleAddress = 401 [(wire_out) = true]; From 390b0272e8749a528bbfda5d5c7ad1f3e6a5e8ae Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 14 Aug 2018 15:25:42 +0200 Subject: [PATCH 485/767] protob: reorder Ontology messages/fields --- protob/messages-ontology.proto | 48 ++++++++++++++-------------------- 1 file changed, 19 insertions(+), 29 deletions(-) diff --git a/protob/messages-ontology.proto b/protob/messages-ontology.proto index 338d5ce38..5e1e406f7 100644 --- a/protob/messages-ontology.proto +++ b/protob/messages-ontology.proto @@ -8,15 +8,6 @@ option java_outer_classname = "TrezorMessageOntology"; * Ontology Transaction */ message OntologyTransaction { - - /** - * Attribute of Ontology transaction - */ - message OntologyTxAttribute { - optional uint32 usage = 1; - optional bytes data = 2; - } - optional uint32 version = 1; optional uint32 type = 2; optional uint32 nonce = 3; @@ -24,6 +15,13 @@ message OntologyTransaction { optional uint64 gas_limit = 5; optional string payer = 6; repeated OntologyTxAttribute tx_attributes = 7; + /** + * Attribute of Ontology transaction + */ + message OntologyTxAttribute { + optional uint32 usage = 1; + optional bytes data = 2; + } } /** @@ -62,7 +60,6 @@ message OntologyAddress { optional string address = 1; // Ontology address } - /** * Request: Ask device to sign Ontology transfer * @start @@ -72,11 +69,14 @@ message OntologyAddress { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node optional OntologyTransaction transaction = 2; optional OntologyTransfer transfer = 3; - /** * Ontology Transfer */ message OntologyTransfer { + optional OntologyAsset asset = 1; + optional uint64 amount = 2; + optional string from_address = 3; + optional string to_address = 4; /** * Ontology Asset */ @@ -84,11 +84,6 @@ message OntologyAddress { ONT = 1; ONG = 2; } - - optional OntologyAsset asset = 1; - optional uint64 amount = 2; - optional string from_address = 3; - optional string to_address = 4; } } @@ -110,7 +105,6 @@ message OntologySignedTransfer { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node optional OntologyTransaction transaction = 2; optional OntologyWithdrawOng withdraw_ong = 3; - /** * Ontology ONG Withdrawal */ @@ -139,7 +133,6 @@ message OntologySignedWithdrawOng { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node optional OntologyTransaction transaction = 2; optional OntologyOntIdRegister ont_id_register = 3; - /** * Ontology ONT ID registration */ @@ -158,7 +151,6 @@ message OntologySignedOntIdRegister { optional bytes payload = 2; } - /** * Request: Ask device to sign Ontology ONT ID attributes adding * @start @@ -168,16 +160,6 @@ message OntologySignedOntIdRegister { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node optional OntologyTransaction transaction = 2; optional OntologyOntIdAddAttributes ont_id_add_attributes = 3; - - /** - * Attribute of Ontology ONT ID - */ - message OntologyOntIdAttribute { - optional string key = 1; - optional string type = 2; - optional string value = 3; - } - /** * Ontology ONT ID attributes adding */ @@ -185,6 +167,14 @@ message OntologySignedOntIdRegister { optional string ont_id = 1; optional bytes public_key = 2; repeated OntologyOntIdAttribute ont_id_attributes = 3; + /** + * Attribute of Ontology ONT ID + */ + message OntologyOntIdAttribute { + optional string key = 1; + optional string type = 2; + optional string value = 3; + } } } From a6a53441f559b1eb67f91a37c56211a07cc21f62 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 14 Aug 2018 20:53:02 +0200 Subject: [PATCH 486/767] protob: fix Ontology message ids (closes #191) --- protob/messages.proto | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/protob/messages.proto b/protob/messages.proto index 05536de10..d93efb02c 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -179,12 +179,14 @@ enum MessageType { MessageType_OntologyAddress = 351 [(wire_out) = true]; MessageType_OntologyGetPublicKey = 352 [(wire_in) = true]; MessageType_OntologyPublicKey = 353 [(wire_out) = true]; - MessageType_OntologySignTx = 354 [(wire_in) = true]; - MessageType_OntologySignedTx = 355 [(wire_out) = true]; - MessageType_OntologySignTransfer = 356 [(wire_in) = true]; - MessageType_OntologySignedTransfer = 357 [(wire_out) = true]; - MessageType_OntologySignWithdrawOng = 358 [(wire_in) = true]; - MessageType_OntologySignedWithdrawOng = 359 [(wire_out) = true]; + MessageType_OntologySignTransfer = 354 [(wire_in) = true]; + MessageType_OntologySignedTransfer = 355 [(wire_out) = true]; + MessageType_OntologySignWithdrawOng = 356 [(wire_in) = true]; + MessageType_OntologySignedWithdrawOng = 357 [(wire_out) = true]; + MessageType_OntologySignOntIdRegister = 358 [(wire_in) = true]; + MessageType_OntologySignedOntIdRegister = 359 [(wire_out) = true]; + MessageType_OntologySignOntIdAddAttributes = 360 [(wire_in) = true]; + MessageType_OntologySignedOntIdAddAttributes = 361 [(wire_out) = true]; // Ripple MessageType_RippleGetAddress = 400 [(wire_in) = true]; From d3989c68d68caedefa3018f28fd2b90c612eadec Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 14 Aug 2018 20:59:00 +0200 Subject: [PATCH 487/767] protob: fix whitespace in Ontology messages --- protob/messages-ontology.proto | 65 +++++++++++++++++----------------- 1 file changed, 33 insertions(+), 32 deletions(-) diff --git a/protob/messages-ontology.proto b/protob/messages-ontology.proto index 5e1e406f7..cac05cd8e 100644 --- a/protob/messages-ontology.proto +++ b/protob/messages-ontology.proto @@ -5,8 +5,9 @@ option java_package = "com.satoshilabs.trezor.lib.protobuf"; option java_outer_classname = "TrezorMessageOntology"; /** -* Ontology Transaction -*/ + * Ontology Transaction + * @embed + */ message OntologyTransaction { optional uint32 version = 1; optional uint32 type = 2; @@ -16,8 +17,8 @@ message OntologyTransaction { optional string payer = 6; repeated OntologyTxAttribute tx_attributes = 7; /** - * Attribute of Ontology transaction - */ + * Attribute of Ontology transaction + */ message OntologyTxAttribute { optional uint32 usage = 1; optional bytes data = 2; @@ -28,7 +29,7 @@ message OntologyTransaction { * Request: Ask device for Ontology public key corresponding to address_n path * @start * @next OntologyPublicKey -*/ + */ message OntologyGetPublicKey { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node optional bool show_display = 2; // Optionally show on display before sending the result @@ -37,7 +38,7 @@ message OntologyGetPublicKey { /** * Response: Contains Ontology public key derived from device private seed * @end -*/ + */ message OntologyPublicKey { optional bytes public_key = 1; // Ontology public key } @@ -65,21 +66,21 @@ message OntologyAddress { * @start * @next OntologySignedTransfer */ - message OntologySignTransfer { +message OntologySignTransfer { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node optional OntologyTransaction transaction = 2; optional OntologyTransfer transfer = 3; /** - * Ontology Transfer - */ + * Ontology Transfer + */ message OntologyTransfer { optional OntologyAsset asset = 1; optional uint64 amount = 2; optional string from_address = 3; optional string to_address = 4; /** - * Ontology Asset - */ + * Ontology Asset + */ enum OntologyAsset { ONT = 1; ONG = 2; @@ -88,9 +89,9 @@ message OntologyAddress { } /** -* Response: Contains Ontology transfer signature -* @end -*/ + * Response: Contains Ontology transfer signature + * @end + */ message OntologySignedTransfer { optional bytes signature = 1; optional bytes payload = 2; @@ -101,7 +102,7 @@ message OntologySignedTransfer { * @start * @next OntologySignedWithdrawOng */ - message OntologySignWithdrawOng { +message OntologySignWithdrawOng { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node optional OntologyTransaction transaction = 2; optional OntologyWithdrawOng withdraw_ong = 3; @@ -116,9 +117,9 @@ message OntologySignedTransfer { } /** -* Response: Contains Ontology ONG withdrawal signature -* @end -*/ + * Response: Contains Ontology ONG withdrawal signature + * @end + */ message OntologySignedWithdrawOng { optional bytes signature = 1; optional bytes payload = 2; @@ -129,13 +130,13 @@ message OntologySignedWithdrawOng { * @start * @next OntologySignedOntIdRegister */ - message OntologySignOntIdRegister { +message OntologySignOntIdRegister { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node optional OntologyTransaction transaction = 2; optional OntologyOntIdRegister ont_id_register = 3; /** - * Ontology ONT ID registration - */ + * Ontology ONT ID registration + */ message OntologyOntIdRegister { optional string ont_id = 1; optional bytes public_key = 2; @@ -143,9 +144,9 @@ message OntologySignedWithdrawOng { } /** -* Response: Contains Ontology ONT ID registration signature -* @end -*/ + * Response: Contains Ontology ONT ID registration signature + * @end + */ message OntologySignedOntIdRegister { optional bytes signature = 1; optional bytes payload = 2; @@ -156,20 +157,20 @@ message OntologySignedOntIdRegister { * @start * @next OntologySignedOntIdAddAttributes */ - message OntologySignOntIdAddAttributes { +message OntologySignOntIdAddAttributes { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node optional OntologyTransaction transaction = 2; optional OntologyOntIdAddAttributes ont_id_add_attributes = 3; /** - * Ontology ONT ID attributes adding - */ + * Ontology ONT ID attributes adding + */ message OntologyOntIdAddAttributes { optional string ont_id = 1; optional bytes public_key = 2; repeated OntologyOntIdAttribute ont_id_attributes = 3; /** - * Attribute of Ontology ONT ID - */ + * Attribute of Ontology ONT ID + */ message OntologyOntIdAttribute { optional string key = 1; optional string type = 2; @@ -179,9 +180,9 @@ message OntologySignedOntIdRegister { } /** -* Response: Contains Ontology ONT ID attributes adding signature -* @end -*/ + * Response: Contains Ontology ONT ID attributes adding signature + * @end + */ message OntologySignedOntIdAddAttributes { optional bytes signature = 1; optional bytes payload = 2; From 3765399d9deaf51b0c1faa24aac5ae55581bd455 Mon Sep 17 00:00:00 2001 From: Michael Ira Krufky Date: Wed, 15 Aug 2018 05:29:29 -0400 Subject: [PATCH 488/767] eth: Add Pirl support (#193) --- defs/ethereum/networks.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/defs/ethereum/networks.json b/defs/ethereum/networks.json index 0535e136d..1210db1d7 100644 --- a/defs/ethereum/networks.json +++ b/defs/ethereum/networks.json @@ -158,5 +158,13 @@ "name": "Ether-1", "rskip60": false, "url": "https://ether1.org" + }, + { + "chain_id": 3125659152, + "slip44": 164, + "shortcut": "PIRL", + "name": "Pirl", + "rskip60": false, + "url": "https://pirl.io" } ] From 1ef050fb15030a1f0d210d31559c727e5a517404 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Du=C5=A1an=20Klinec?= Date: Wed, 15 Aug 2018 11:39:06 +0200 Subject: [PATCH 489/767] xmr: protob protocol improvements (#192) - uses protobuff messages only for the transaction construction data - forward compatible. Not stable on Monero side, serialization format of the cryptonote serialization could be changed in the future (new fields), CN serialization does not support versioning, thus it is not forward compatible. - MoneroTransactionDestinationEntry, MoneroTransactionSourceEntry have to be defined in the root level as they are used in various protocol messages --- protob/messages-monero.proto | 72 ++++++++++++++++++++++++++---------- 1 file changed, 53 insertions(+), 19 deletions(-) diff --git a/protob/messages-monero.proto b/protob/messages-monero.proto index 4aceafa25..189307dbf 100644 --- a/protob/messages-monero.proto +++ b/protob/messages-monero.proto @@ -47,6 +47,23 @@ message MoneroWatchKey { optional bytes address = 2; } +/** + * Structure representing Monero transaction destination entry + */ +message MoneroTransactionDestinationEntry { + optional uint64 amount = 1; + optional MoneroAccountPublicAddress addr = 2; + optional bool is_subaddress = 3; + + /** + * Structure representing Monero public address + */ + message MoneroAccountPublicAddress { + optional bytes spend_public_key = 1; + optional bytes view_public_key = 2; + } +} + /** * Request: Sub request of MoneroTransactionSign. Initializes transaction signing. * @start @@ -75,21 +92,6 @@ message MoneroTransactionInitRequest { optional bytes exp_tx_prefix_hash = 12; repeated bytes use_tx_keys = 13; optional bool is_bulletproof = 14; - /** - * Structure representing Monero transaction destination entry - */ - message MoneroTransactionDestinationEntry { - optional uint64 amount = 1; - optional MoneroAccountPublicAddress addr = 2; - optional bool is_subaddress = 3; - /** - * Structure representing Monero public address - */ - message MoneroAccountPublicAddress { - optional bytes spend_public_key = 1; - optional bytes view_public_key = 2; - } - } } } @@ -106,13 +108,45 @@ message MoneroTransactionInitAck { optional bool many_outputs = 6; } +/** + * Structure representing Monero transaction source entry, UTXO + */ +message MoneroTransactionSourceEntry { + repeated MoneroOutputEntry outputs = 1; + optional uint64 real_output = 2; + optional bytes real_out_tx_key = 3; + repeated bytes real_out_additional_tx_keys = 4; + optional uint64 real_output_in_tx_index = 5; + optional uint64 amount = 6; + optional bool rct = 7; + optional bytes mask = 8; + optional MoneroMultisigKLRki multisig_kLRki = 9; + + message MoneroRctKey { + optional bytes dest = 1; + optional bytes mask = 2; + } + + message MoneroOutputEntry { + optional uint64 idx = 1; + optional MoneroRctKey key = 2; + } + + message MoneroMultisigKLRki { + optional bytes K = 1; + optional bytes L = 2; + optional bytes R = 3; + optional bytes ki = 4; + } +} + /** * Request: Sub request of MoneroTransactionSign. Sends one UTXO to device * @next MoneroTransactionSetInputAck */ message MoneroTransactionSetInputRequest { optional uint32 version = 1; - optional bytes src_entr = 2; // xmrtypes.TxSourceEntry + optional MoneroTransactionSourceEntry src_entr = 2; } /** @@ -148,7 +182,7 @@ message MoneroTransactionInputsPermutationAck { * @next MoneroTransactionInputViniAck */ message MoneroTransactionInputViniRequest { - optional bytes src_entr = 1; // xmrtypes.TxSourceEntry + optional MoneroTransactionSourceEntry src_entr = 1; optional bytes vini = 2; // xmrtypes.TxinToKey optional bytes vini_hmac = 3; optional bytes pseudo_out = 4; @@ -167,7 +201,7 @@ message MoneroTransactionInputViniAck { * @next MoneroTransactionSetOutputAck */ message MoneroTransactionSetOutputRequest { - optional bytes dst_entr = 1; // xmrtypes.TxDestinationEntry + optional MoneroTransactionDestinationEntry dst_entr = 1; optional bytes dst_entr_hmac = 2; } @@ -228,7 +262,7 @@ message MoneroTransactionMlsagDoneAck { * @next MoneroTransactionSignInputAck */ message MoneroTransactionSignInputRequest { - optional bytes src_entr = 1; // xmrtypes.TxSourceEntry + optional MoneroTransactionSourceEntry src_entr = 1; optional bytes vini = 2; // xmrtypes.TxinToKey optional bytes vini_hmac = 3; optional bytes pseudo_out = 4; From 21b3cd435258facfd6c2f9008d7ad17636ac747c Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 15 Aug 2018 11:44:43 +0200 Subject: [PATCH 490/767] protob: fix whitespace and order in messages-monero.proto --- protob/messages-monero.proto | 116 +++++++++++++++++------------------ 1 file changed, 57 insertions(+), 59 deletions(-) diff --git a/protob/messages-monero.proto b/protob/messages-monero.proto index 189307dbf..f41fe9e14 100644 --- a/protob/messages-monero.proto +++ b/protob/messages-monero.proto @@ -5,6 +5,53 @@ package hw.trezor.messages.monero; option java_package = "com.satoshilabs.trezor.lib.protobuf"; option java_outer_classname = "TrezorMessageMonero"; +/** + * Structure representing Monero transaction source entry, UTXO + * @embed + */ +message MoneroTransactionSourceEntry { + repeated MoneroOutputEntry outputs = 1; + optional uint64 real_output = 2; + optional bytes real_out_tx_key = 3; + repeated bytes real_out_additional_tx_keys = 4; + optional uint64 real_output_in_tx_index = 5; + optional uint64 amount = 6; + optional bool rct = 7; + optional bytes mask = 8; + optional MoneroMultisigKLRki multisig_kLRki = 9; + message MoneroOutputEntry { + optional uint64 idx = 1; + optional MoneroRctKey key = 2; + message MoneroRctKey { + optional bytes dest = 1; + optional bytes mask = 2; + } + } + message MoneroMultisigKLRki { + optional bytes K = 1; + optional bytes L = 2; + optional bytes R = 3; + optional bytes ki = 4; + } +} + +/** + * Structure representing Monero transaction destination entry + * @embed + */ +message MoneroTransactionDestinationEntry { + optional uint64 amount = 1; + optional MoneroAccountPublicAddress addr = 2; + optional bool is_subaddress = 3; + /** + * Structure representing Monero public address + */ + message MoneroAccountPublicAddress { + optional bytes spend_public_key = 1; + optional bytes view_public_key = 2; + } +} + /** * Request: Ask device for public address derived from seed and address_n * @start @@ -47,23 +94,6 @@ message MoneroWatchKey { optional bytes address = 2; } -/** - * Structure representing Monero transaction destination entry - */ -message MoneroTransactionDestinationEntry { - optional uint64 amount = 1; - optional MoneroAccountPublicAddress addr = 2; - optional bool is_subaddress = 3; - - /** - * Structure representing Monero public address - */ - message MoneroAccountPublicAddress { - optional bytes spend_public_key = 1; - optional bytes view_public_key = 2; - } -} - /** * Request: Sub request of MoneroTransactionSign. Initializes transaction signing. * @start @@ -75,8 +105,8 @@ message MoneroTransactionInitRequest { optional uint32 network_type = 3; // Main-net / testnet / stagenet optional MoneroTransactionData tsx_data = 4; /** - * Structure representing Monero initial transaction information - */ + * Structure representing Monero initial transaction information + */ message MoneroTransactionData { optional uint32 version = 1; optional bytes payment_id = 2; @@ -108,38 +138,6 @@ message MoneroTransactionInitAck { optional bool many_outputs = 6; } -/** - * Structure representing Monero transaction source entry, UTXO - */ -message MoneroTransactionSourceEntry { - repeated MoneroOutputEntry outputs = 1; - optional uint64 real_output = 2; - optional bytes real_out_tx_key = 3; - repeated bytes real_out_additional_tx_keys = 4; - optional uint64 real_output_in_tx_index = 5; - optional uint64 amount = 6; - optional bool rct = 7; - optional bytes mask = 8; - optional MoneroMultisigKLRki multisig_kLRki = 9; - - message MoneroRctKey { - optional bytes dest = 1; - optional bytes mask = 2; - } - - message MoneroOutputEntry { - optional uint64 idx = 1; - optional MoneroRctKey key = 2; - } - - message MoneroMultisigKLRki { - optional bytes K = 1; - optional bytes L = 2; - optional bytes R = 3; - optional bytes ki = 4; - } -} - /** * Request: Sub request of MoneroTransactionSign. Sends one UTXO to device * @next MoneroTransactionSetInputAck @@ -233,8 +231,8 @@ message MoneroTransactionAllOutSetAck { optional bytes tx_prefix_hash = 2; optional MoneroRingCtSig rv = 3; // xmrtypes.RctSig /* - * Structure represents initial fields of the Monero RCT signature - */ + * Structure represents initial fields of the Monero RCT signature + */ message MoneroRingCtSig { optional uint64 txn_fee = 1; optional bytes message = 2; @@ -334,8 +332,8 @@ message MoneroKeyImageExportInitRequest { optional uint32 network_type = 4; // Main-net / testnet / stagenet repeated MoneroSubAddressIndicesList subs = 5; /** - * Structure representing Monero list of sub-addresses - */ + * Structure representing Monero list of sub-addresses + */ message MoneroSubAddressIndicesList { optional uint32 account = 1; repeated uint32 minor_indices = 2; @@ -356,8 +354,8 @@ message MoneroKeyImageExportInitAck { message MoneroKeyImageSyncStepRequest { repeated MoneroTransferDetails tdis = 1; /** - * Structure representing Monero UTXO for key image sync - */ + * Structure representing Monero UTXO for key image sync + */ message MoneroTransferDetails { optional bytes out_key = 1; optional bytes tx_pub_key = 2; @@ -373,8 +371,8 @@ message MoneroKeyImageSyncStepRequest { message MoneroKeyImageSyncStepAck { repeated MoneroExportedKeyImage kis = 1; /** - * Structure representing Monero encrypted exported key image - */ + * Structure representing Monero encrypted exported key image + */ message MoneroExportedKeyImage { optional bytes iv = 1; optional bytes tag = 2; From 59063e0cc21c4eb407895e45aaee8967be069e3a Mon Sep 17 00:00:00 2001 From: matejcik Date: Wed, 15 Aug 2018 17:30:39 +0200 Subject: [PATCH 491/767] defs: change symbols for Ethereum testnets --- defs/ethereum/networks.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/defs/ethereum/networks.json b/defs/ethereum/networks.json index 396b7a881..4e53bd4f7 100644 --- a/defs/ethereum/networks.json +++ b/defs/ethereum/networks.json @@ -18,7 +18,7 @@ { "chain_id": 3, "slip44": 1, - "shortcut": "tETH", + "shortcut": "tROP", "name": "Ethereum Testnet Ropsten", "rskip60": false, "url": "https://www.ethereum.org" @@ -26,7 +26,7 @@ { "chain_id": 4, "slip44": 1, - "shortcut": "tETH", + "shortcut": "tRIN", "name": "Ethereum Testnet Rinkeby", "rskip60": false, "url": "https://www.ethereum.org" @@ -74,7 +74,7 @@ { "chain_id": 42, "slip44": 1, - "shortcut": "tETH", + "shortcut": "tKOV", "name": "Ethereum Testnet Kovan", "rskip60": false, "url": "https://www.ethereum.org" From 7ab69b18cd6650793e7bb34254203759672549ea Mon Sep 17 00:00:00 2001 From: matejcik Date: Wed, 15 Aug 2018 17:33:33 +0200 Subject: [PATCH 492/767] tools: support Black-compatible repr format --- tools/coin_gen.py | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/tools/coin_gen.py b/tools/coin_gen.py index 4cca12092..2de0c0565 100755 --- a/tools/coin_gen.py +++ b/tools/coin_gen.py @@ -56,6 +56,18 @@ def c_str_filter(b): return json.dumps(b) +def black_repr_filter(val): + if isinstance(val, str): + if '"' in val: + return repr(val) + else: + return c_str_filter(val) + elif isinstance(val, bytes): + return "b" + c_str_filter(val) + else: + return repr(val) + + def ascii_filter(s): return re.sub("[^ -\x7e]", "_", s) @@ -69,7 +81,11 @@ def make_support_filter(support_info): return supported_on -MAKO_FILTERS = {"c_str": c_str_filter, "ascii": ascii_filter} +MAKO_FILTERS = { + "c_str": c_str_filter, + "ascii": ascii_filter, + "black_repr": black_repr_filter, +} def render_file(src, dst, coins, support_info): @@ -82,7 +98,7 @@ def render_file(src, dst, coins, support_info): support_info=support_info, supported_on=make_support_filter(support_info), **coins, - **MAKO_FILTERS + **MAKO_FILTERS, ) dst.write(result) From 3cfca58c6ad4a9807b8c28d99d19f47cd96683d8 Mon Sep 17 00:00:00 2001 From: matejcik Date: Wed, 15 Aug 2018 17:34:04 +0200 Subject: [PATCH 493/767] tools: drop support check from coin_gen, moved to support.py --- tools/coin_gen.py | 53 +++++------------------------------------------ 1 file changed, 5 insertions(+), 48 deletions(-) diff --git a/tools/coin_gen.py b/tools/coin_gen.py index 2de0c0565..f85bd7f53 100755 --- a/tools/coin_gen.py +++ b/tools/coin_gen.py @@ -106,50 +106,6 @@ def render_file(src, dst, coins, support_info): # ====== validation functions ====== -def check_support(defs, support_data, fail_missing=False): - check_passed = True - coin_list = defs.as_list() - coin_names = {coin["key"]: coin["name"] for coin in coin_list} - - def coin_name(key): - if key in coin_names: - return "{} ({})".format(key, coin_names[key]) - else: - return "{} ".format(key) - - for key, support in support_data.items(): - errors = coin_info.validate_support(support) - if errors: - check_passed = False - print("ERR:", "invalid definition for", coin_name(key)) - print("\n".join(errors)) - - expected_coins = set(coin["key"] for coin in defs.coins + defs.misc) - - # detect missing support info for expected - for coin in expected_coins: - if coin not in support_data: - if fail_missing: - check_passed = False - print("ERR: Missing support info for", coin_name(coin)) - else: - print("WARN: Missing support info for", coin_name(coin)) - - # detect non-matching support info - coin_set = set(coin["key"] for coin in coin_list) - for key in support_data: - # detect non-matching support info - if key not in coin_set: - check_passed = False - print("ERR: Support info found for unknown coin", key) - - # detect override - doesn't fail check - if key not in expected_coins: - print("INFO: Override present for coin", coin_name(key)) - - return check_passed - - def check_btc(coins): check_passed = True @@ -309,10 +265,11 @@ def check(missing_support, backend, icons): if not check_btc(defs.coins): all_checks_passed = False - print("Checking support data...") - support_data = coin_info.get_support_data() - if not check_support(defs, support_data, fail_missing=missing_support): - all_checks_passed = False + # XXX support.py is responsible for checking support data + # print("Checking support data...") + # support_data = coin_info.get_support_data() + # if not check_support(defs, support_data, fail_missing=missing_support): + # all_checks_passed = False if icons: print("Checking icon files...") From f64a09051705d24981b7b4ca72750c40ce81ea40 Mon Sep 17 00:00:00 2001 From: matejcik Date: Wed, 15 Aug 2018 17:34:20 +0200 Subject: [PATCH 494/767] tools: update coin_gen.py to new support format --- tools/coin_gen.py | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/tools/coin_gen.py b/tools/coin_gen.py index f85bd7f53..c55bcc3ed 100755 --- a/tools/coin_gen.py +++ b/tools/coin_gen.py @@ -331,10 +331,7 @@ def coindefs(outfile): @click.argument("paths", metavar="[path]...", nargs=-1) @click.option("-o", "--outfile", type=click.File("w"), help="Alternate output file") @click.option("-v", "--verbose", is_flag=True, help="Print rendered file names") -@click.option( - "--erc20-support/--no-erc20-support", "-e", help="Download ERC20 support info" -) -def render(paths, outfile, verbose, erc20_support): +def render(paths, outfile, verbose): """Generate source code from Mako templates. For every "foo.bar.mako" filename passed, runs the template and @@ -353,11 +350,7 @@ def render(paths, outfile, verbose, erc20_support): # prepare defs defs = coin_info.get_all() - if erc20_support: - versions = coin_info.latest_releases() - else: - versions = None - support_info = coin_info.support_info(defs, erc20_versions=versions) + support_info = coin_info.support_info(defs) # munch dicts - make them attribute-accessible for key, value in defs.items(): From 962178fbeb32fe51e4227abe08b3eacdf6c50a69 Mon Sep 17 00:00:00 2001 From: matejcik Date: Wed, 15 Aug 2018 17:36:24 +0200 Subject: [PATCH 495/767] tools/coin_info.py: use f-strings where appropriate --- tools/coin_info.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/tools/coin_info.py b/tools/coin_info.py index cabe6b9ab..452698673 100755 --- a/tools/coin_info.py +++ b/tools/coin_info.py @@ -72,7 +72,7 @@ def check_type(val, types, nullable=False, empty=False, regex=None, choice=None) # check type if not isinstance(val, types): - raise TypeError("Wrong type (expected: {})".format(types)) + raise TypeError(f"Wrong type (expected: {types})") # check empty if isinstance(val, (list, dict)) and not empty and not val: @@ -83,11 +83,12 @@ def check_type(val, types, nullable=False, empty=False, regex=None, choice=None) if types is not str: raise TypeError("Wrong type for regex check") if not re.search(regex, val): - raise ValueError("Value does not match regex {}".format(regex)) + raise ValueError(f"Value does not match regex {regex}") # check choice if choice is not None and val not in choice: - raise ValueError("Value not allowed, use one of: {}".format(", ".join(choice))) + choice_str = ", ".join(choice) + raise ValueError(f"Value not allowed, use one of: {choice_str}") def check_key(key, types, optional=False, **kwargs): @@ -96,11 +97,11 @@ def check_key(key, types, optional=False, **kwargs): if optional: return else: - raise KeyError("{}: Missing key".format(key)) + raise KeyError(f"{key}: Missing key") try: check_type(coin[key], types, **kwargs) except Exception as e: - raise ValueError("{}: {}".format(key, e)) from e + raise ValueError(f"{key}: {e}") from e return do_check From a090388c5f554b24059b547791c6267eb9e8a451 Mon Sep 17 00:00:00 2001 From: matejcik Date: Wed, 15 Aug 2018 18:46:00 +0200 Subject: [PATCH 496/767] tools: rename coin_gen.py to cointool.py --- tools/README.md | 12 ++++-------- tools/{coin_gen.py => cointool.py} | 18 ++++++------------ 2 files changed, 10 insertions(+), 20 deletions(-) rename tools/{coin_gen.py => cointool.py} (97%) diff --git a/tools/README.md b/tools/README.md index da935f464..9a657bb38 100644 --- a/tools/README.md +++ b/tools/README.md @@ -5,7 +5,7 @@ Central module that extracts information from jsons in `defs/` directory. Its most important function is `get_all()`. -### `coin_gen.py` +### `cointool.py` Code and data generator. Has the following functions: @@ -13,7 +13,6 @@ Code and data generator. Has the following functions: * schema validity in `defs/coins/*.json` * availability of bitcore/blockbook backends * icon format - * support data, i.e., that `support.json` matches the rest of data * __`coins_json`__: generates `coins.json` for use in python-trezor, connect and wallet. By default outputs to current directory. @@ -39,12 +38,9 @@ If needed, any value can be overriden in `coins_details.override.json`. Support info management. Ensures `support.json` is in the proper format. Has the following subcommands: -* __`rewrite`__: regenerates `support.json` in a canonical format, i.e., only - mandatory fields in fixed order. - -* __`check`__: checks validity of support data. This is the same check - that runs as part of `coin_gen.py check`, except missing support data is always - an error. +* __`check`__: checks validity of support data. Ensures that data is valid, + there are no orphaned keys in `support.json`, no known coins have missing + support info, etc. * __`show `__: searches coin database, matching key (`coin:BTC`), name ("Bitcoin") or shortcut / ticker symbol ("BTC"). Displays all coins that match diff --git a/tools/coin_gen.py b/tools/cointool.py similarity index 97% rename from tools/coin_gen.py rename to tools/cointool.py index c55bcc3ed..ed70bf131 100755 --- a/tools/coin_gen.py +++ b/tools/cointool.py @@ -233,19 +233,11 @@ def cli(): @cli.command() -@click.option( - "--missing-support/--no-missing-support", - "-s", - default=False, - help="Fail if support info for a coin is missing", -) -@click.option( - "--backend/--no-backend", - "-b", - default=False, - help="Check blockbook/bitcore responses", -) +# fmt: off +@click.option("--missing-support/--no-missing-support", "-s", default=False, help="Fail if support info for a coin is missing") +@click.option("--backend/--no-backend", "-b", default=False, help="Check blockbook/bitcore responses") @click.option("--icons/--no-icons", default=True, help="Check icon files") +# fmt: on def check(missing_support, backend, icons): """Validate coin definitions. @@ -328,9 +320,11 @@ def coindefs(outfile): @cli.command() +# fmt: off @click.argument("paths", metavar="[path]...", nargs=-1) @click.option("-o", "--outfile", type=click.File("w"), help="Alternate output file") @click.option("-v", "--verbose", is_flag=True, help="Print rendered file names") +# fmt: on def render(paths, outfile, verbose): """Generate source code from Mako templates. From 81513f47b6912ddb8545d2830df5ff976da705d4 Mon Sep 17 00:00:00 2001 From: matejcik Date: Wed, 15 Aug 2018 19:00:42 +0200 Subject: [PATCH 497/767] tools: rewrite support.py --- tools/support.py | 372 ++++++++++++++++++++++++++++++++++------------- 1 file changed, 273 insertions(+), 99 deletions(-) diff --git a/tools/support.py b/tools/support.py index fe610baca..b52946301 100755 --- a/tools/support.py +++ b/tools/support.py @@ -1,4 +1,5 @@ #!/usr/bin/env python3 +import re import os import sys import click @@ -6,125 +7,280 @@ import coin_info import json SUPPORT_INFO = coin_info.get_support_data() +MISSING_MEANS_NO = ("connect", "webwallet") +VERSIONED_SUPPORT_INFO = ("trezor1", "trezor2") -MANDATORY_ENTRIES = ("trezor1", "trezor2", "connect", "webwallet") - - -def update_support(key, entry, value): - # template entry - support = {k: None for k in MANDATORY_ENTRIES} - support["other"] = {} - # fill out actual support info, if it exists - support.update(SUPPORT_INFO.get(key, {})) - - if entry in MANDATORY_ENTRIES: - if entry.startswith("trezor") and not value: - value = None - support[entry] = value - else: - support["other"][entry] = value - - for k in support["other"]: - if not support["other"][k]: - del support["other"][k] - - if not support["other"]: - del support["other"] - - SUPPORT_INFO[key] = support - return support +VERSION_RE = re.compile(r"\d+.\d+.\d+") def write_support_info(): with open(os.path.join(coin_info.DEFS_DIR, "support.json"), "w") as f: - json.dump(SUPPORT_INFO, f, indent=4) + json.dump(SUPPORT_INFO, f, indent=2, sort_keys=True) f.write("\n") +def print_support(coin): + def support_value(where, key, missing_means_no=False): + if "supported" in where and key in where["supported"]: + val = where["supported"][key] + if val is True: + return "YES" + elif val == "soon": + return "SOON" + elif VERSION_RE.match(val): + return f"YES since {val}" + else: + return f"BAD VALUE {val}" + elif "unsupported" in where and key in where["unsupported"]: + val = where["unsupported"][key] + return f"NO (reason: {val})" + elif missing_means_no: + return "NO" + else: + return "support info missing" + + key, name, shortcut = coin["key"], coin["name"], coin["shortcut"] + print(f"{key} - {name} ({shortcut})") + if coin.get("duplicate"): + print(" * DUPLICATE SYMBOL (no support)") + else: + for dev, where in SUPPORT_INFO.items(): + missing_means_no = dev in MISSING_MEANS_NO + print(" *", dev, ":", support_value(where, key, missing_means_no)) + + +# ====== validation functions ====== # + + +def check_support_values(): + def _check_value_version_soon(val): + if not isinstance(value, str): + raise ValueError(f"non-str value: {value}") + + is_version = VERSION_RE.match(value) + is_soon = value == "soon" + if not (is_version or is_soon): + raise ValueError(f"expected version or 'soon', found '{value}'") + + errors = [] + for device, values in SUPPORT_INFO.items(): + supported = values.get("supported") + if not isinstance(supported, dict): + errors.append(f"Missing 'supported' dict for {device}") + else: + for key, value in supported.items(): + try: + if device in VERSIONED_SUPPORT_INFO: + _check_value_version_soon(value) + else: + if value is not True: + raise ValueError(f"only allowed is True, but found {value}") + except Exception as e: + errors.append(f"{device}.supported.{key}: {e}") + + unsupported = values.get("unsupported") + if not isinstance(unsupported, dict): + errors.append(f"Missing 'supported' dict for {device}") + else: + for key, value in unsupported.items(): + if not isinstance(value, str) or not value: + errors.append(f"{device}.unsupported.{key}: missing reason") + + return errors + + +def find_unsupported_coins(coins_dict): + result = {} + for device in VERSIONED_SUPPORT_INFO: + values = SUPPORT_INFO[device] + support_set = set() + support_set.update(values["supported"].keys()) + support_set.update(values["unsupported"].keys()) + + result[device] = unsupported = [] + for key, coin in coins_dict.items(): + if coin.get("duplicate"): + continue + if key not in support_set: + unsupported.append(coin) + + return result + + +def find_orphaned_support_keys(coins_dict): + result = {} + for device, values in SUPPORT_INFO.items(): + device_res = {} + for supkey, supvalues in values.items(): + orphans = set() + for coin_key in supvalues.keys(): + if coin_key not in coins_dict: + orphans.add(coin_key) + device_res[supkey] = orphans + result[device] = device_res + + return result + + @click.group() def cli(): pass @cli.command() -def rewrite(): - """Regenerate support.json to match predefined structure and field order.""" - for key, coin in SUPPORT_INFO.items(): - d = {"trezor1": None, "trezor2": None, "connect": None, "webwallet": None} - d.update(coin) - if "electrum" in d: - del d["electrum"] - if "other" in d and not d["other"]: - del d["other"] - SUPPORT_INFO[key] = d +# fmt: off +@click.option("-p", "--prune-orphans", is_flag=True, help="Remove orphaned keys for which there is no corresponding coin info") +@click.option("-t", "--ignore-tokens", is_flag=True, help="Ignore unsupported ERC20 tokens") +# fmt: on +def check(prune_orphans, ignore_tokens): + """Check validity of support information. - write_support_info() + Ensures that `support.json` data is well formed, there are no keys without + corresponding coins, and there are no coins without corresponding keys. + If `--prune-orphans` is specified, orphaned keys (no corresponding coin) + will be deleted from `support.json`. -@cli.command() -def check(): - """Check validity of support information. - - The relevant code is actually part of 'coin_gen.py'. It can be invoked from - here for convenience and because it makes sense. But it's preferable to run it - as part of 'coin_gen.py check'. + If `--ignore-tokens` is specified, the check will ignore ERC20 tokens + without support info. This is useful because there is usually a lot of ERC20 + tokens. """ - defs = coin_info.get_all() - support_data = coin_info.get_support_data() - import coin_gen + coins_dict = coin_info.get_all(deduplicate=False).as_dict() + checks_ok = True + + errors = check_support_values() + if errors: + for error in errors: + print(error) + checks_ok = False + + orphaned = find_orphaned_support_keys(coins_dict) + for device, values in orphaned.items(): + for supkey, supvalues in values.items(): + for key in supvalues: + print(f"orphaned key {device} -> {supkey} -> {key}") + if prune_orphans: + del SUPPORT_INFO[device][supkey][key] + else: + checks_ok = False + + if prune_orphans: + write_support_info() - if not coin_gen.check_support(defs, support_data, fail_missing=True): + missing = find_unsupported_coins(coins_dict) + for device, values in missing.items(): + if ignore_tokens: + values = [coin for coin in values if not coin["key"].startswith("erc20:")] + if values: + checks_ok = False + print(f"Device {device} has missing support infos:") + for coin in values: + print(f"{coin['key']} - {coin['name']}") + + if not checks_ok: + print("Some checks have failed") sys.exit(1) @cli.command() -@click.argument("keyword", nargs=-1) -def show(keyword): - """Show support status of specified coins. +# fmt: off +@click.argument("version") +@click.option("--git-tag/--no-git-tag", "-g", default=False, help="create a corresponding Git tag") +@click.option("--soon/--no-soon", default=True, help="Release coins marked 'soon'") +@click.option("--missing/--no-missing", default=True, help="Release coins with missing support info") +@click.option("-n", "--dry-run", is_flag=True, help="Do not write changes") +# fmt: on +def release(version, git_tag, soon, missing, dry_run): + """Release a new Trezor firmware. + + Update support infos so that all coins have a clear support status. + By default, marks duplicate tokens as unsupported, and all coins that either + don't have support info, or they are supported "soon", are set to the + released firmware version. + + Optionally tags the repository with the given version. + """ + version_tuple = list(map(int, version.split("."))) + device = f"trezor{version_tuple[0]}" - Keywords match against key, name or shortcut (ticker symbol) of coin. If no - keywords are provided, show all supported coins. + print(f"Releasing {device} firmware version {version}") - Only coins listed in support.json are considered "supported". That means that - Ethereum networks, ERC20 tokens and NEM mosaics will probably show up wrong. - """ - defs = coin_info.get_all().as_list() + defs = coin_info.get_all(deduplicate=False) + coin_info.mark_duplicate_shortcuts(defs.as_list()) + coins_dict = defs.as_dict() - if keyword: - for coin in defs: + if missing: + missing_list = find_unsupported_coins(coins_dict)[device] + for coin in missing_list: key = coin["key"] - name, shortcut = coin["name"], coin["shortcut"] - for kw in keyword: - kwl = kw.lower() - if kwl == key.lower() or kwl in name.lower() or kwl == shortcut.lower(): - print("{} - {} ({})".format(key, name, shortcut), end=" - ") - if key in SUPPORT_INFO: - print(json.dumps(SUPPORT_INFO[key], indent=4)) - else: - print("no support info") - break + if coin.get("duplicate"): + print(f"UNsupporting duplicate coin {key} ({coin['name']})") + SUPPORT_INFO[device]["unsupported"][key] = "duplicate key" + else: + print(f"Adding missing {key} ({coin['name']})") + SUPPORT_INFO[device]["supported"][key] = version + + if soon: + soon_list = [ + coins_dict[key] + for key, val in SUPPORT_INFO[device]["supported"].items() + if val == "soon" and key in coins_dict + ] + for coin in soon_list: + key = coin["key"] + print(f"Adding soon-released {key} ({coin['name']})") + SUPPORT_INFO[device]["supported"][key] = version + if git_tag: + print("git tag not supported yet") + + if not dry_run: + write_support_info() else: - print(json.dumps(SUPPORT_INFO, indent=4)) + print("No changes written") @cli.command() -@click.argument("support_key", required=True) -@click.argument( - "entries", nargs=-1, required=True, metavar="entry=value [entry=value]..." -) -@click.option( - "-n", - "--dry-run", - is_flag=True, - help="Only print updated support info, do not write back", -) -def set(support_key, entries, dry_run): +@click.argument("keyword", nargs=-1, required=True) +def show(keyword): + """Show support status of specified coins. + + Keywords match against key, name or shortcut (ticker symbol) of coin. + """ + defs = coin_info.get_all(deduplicate=False).as_list() + coin_info.mark_duplicate_shortcuts(defs) + + for coin in defs: + key = coin["key"].lower() + name = coin["name"].lower() + shortcut = coin["shortcut"].lower() + symsplit = shortcut.split(" ", maxsplit=1) + symbol = symsplit[0] + suffix = symsplit[1] if len(symsplit) > 1 else "" + for kw in keyword: + kwl = kw.lower() + if ( + kwl == key + or kwl in name + or kwl == shortcut + or kwl == symbol + or kwl in suffix + ): + print_support(coin) + + +@cli.command(name="set") +# fmt: off +@click.argument("key", required=True) +@click.argument("entries", nargs=-1, required=True, metavar="entry=value [entry=value]...") +@click.option("-r", "--reason", help="Reason for not supporting") +# fmt: on +def set_support_value(key, entries, reason): """Set a support info variable. Examples: - support.py coin:BTC trezor1=soon trezor2=2.0.7 webwallet=yes connect=no - support.py coin:LTC trezor1=yes "Electrum-LTC=https://electrum-ltc.org" Electrum= + support.py set coin:BTC trezor1=soon trezor2=2.0.7 webwallet=yes connect=no + support.py set coin:LTC trezor1=yes connect= Setting a variable to "yes", "true" or "1" sets support to true. Setting a variable to "no", "false" or "0" sets support to false. @@ -138,33 +294,51 @@ def set(support_key, entries, dry_run): Entries with other names will be inserted into "others". This is a good place to store links to 3rd party software, such as Electrum forks or claim tools. """ - coins = coin_info.get_all().as_dict() - if support_key not in coins: - click.echo("Failed to find key {}".format(support_key)) + coins = coin_info.get_all(deduplicate=False).as_dict() + coin_info.mark_duplicate_shortcuts(coins.values()) + if key not in coins: + click.echo(f"Failed to find key {key}") click.echo("Use 'support.py show' to search for the right one.") sys.exit(1) - print("{} - {}".format(support_key, coins[support_key]["name"])) + if coins[key].get("duplicate"): + shortcut = coins[key]["shortcut"] + click.echo(f"Note: shortcut {shortcut} is a duplicate.") + click.echo(f"Coin will NOT be listed regardless of support.json status.") for entry in entries: try: - key, value = entry.split("=", maxsplit=1) + device, value = entry.split("=", maxsplit=1) except ValueError: - click.echo("Invalid entry: {}".format(entry)) + click.echo(f"Invalid entry: {entry}") sys.exit(2) + if device not in SUPPORT_INFO: + raise click.ClickException(f"unknown device: {device}") + + where = SUPPORT_INFO[device] + # clear existing info + where["supported"].pop(key, None) + where["unsupported"].pop(key, None) + if value in ("yes", "true", "1"): - value = True - elif value in ("no", "false", "2"): - value = False + where["supported"][key] = True + elif value in ("no", "false", "0"): + if device in MISSING_MEANS_NO: + click.echo("Setting explicitly unsupported for {device}.") + click.echo("Perhaps you meant removing support, i.e., '{device}=' ?") + if not reason: + reason = click.prompt(f"Enter reason for not supporting on {device}:") + where["unsupported"][key] = reason elif value == "": - value = None + # do nothing, existing info is cleared + pass + else: + # arbitrary string? + where["supported"][key] = value - support = update_support(support_key, key, value) - - print(json.dumps(support, indent=4)) - if not dry_run: - write_support_info() + print_support(coins[key]) + write_support_info() if __name__ == "__main__": From 6cbc2a94eecd5d29e3d10ce62b93c7010c3de666 Mon Sep 17 00:00:00 2001 From: matejcik Date: Wed, 15 Aug 2018 19:20:15 +0200 Subject: [PATCH 498/767] tools: add better duplicate checking --- tools/cointool.py | 29 ++++++++++++++++++++++++++++- tools/support.py | 13 ++++++++----- 2 files changed, 36 insertions(+), 6 deletions(-) diff --git a/tools/cointool.py b/tools/cointool.py index ed70bf131..ee05e6183 100755 --- a/tools/cointool.py +++ b/tools/cointool.py @@ -127,6 +127,28 @@ def check_btc(coins): return check_passed +def check_dups(buckets): + check_passed = True + for bucket in buckets.values(): + nontokens = [coin for coin in bucket if not coin["key"].startswith("erc20")] + token_list = [coin["key"] for coin in bucket if coin["key"].startswith("erc20")] + if not nontokens: + continue + if len(nontokens) == 1: + coin = nontokens[0] + print( + f"Coin {coin['key']} ({coin['name']}) is duplicate with", + ", ".join(token_list), + "and that is OK.", + ) + else: + nontoken_list = [f"{coin['key']} ({coin['name']})" for coin in nontokens] + print("Duplicate shortcuts for", ", ".join(nontoken_list)) + check_passed = False + + return check_passed + + def check_backends(coins): check_passed = True for coin in coins: @@ -250,7 +272,8 @@ def check(missing_support, backend, icons): if icons and not CAN_BUILD_DEFS: raise click.ClickException("Missing requirements for icon check") - defs = coin_info.get_all() + defs = coin_info.get_all(deduplicate=False) + buckets = coin_info.mark_duplicate_shortcuts(defs.as_list()) all_checks_passed = True print("Checking BTC-like coins...") @@ -263,6 +286,10 @@ def check(missing_support, backend, icons): # if not check_support(defs, support_data, fail_missing=missing_support): # all_checks_passed = False + print("Checking unexpected duplicates...") + if not check_dups(buckets): + all_checks_passed = False + if icons: print("Checking icon files...") if not check_icons(defs.coins): diff --git a/tools/support.py b/tools/support.py index b52946301..0e90e9617 100755 --- a/tools/support.py +++ b/tools/support.py @@ -42,11 +42,14 @@ def print_support(coin): key, name, shortcut = coin["key"], coin["name"], coin["shortcut"] print(f"{key} - {name} ({shortcut})") if coin.get("duplicate"): - print(" * DUPLICATE SYMBOL (no support)") - else: - for dev, where in SUPPORT_INFO.items(): - missing_means_no = dev in MISSING_MEANS_NO - print(" *", dev, ":", support_value(where, key, missing_means_no)) + if key.startswith("erc20:"): + print(" * DUPLICATE SYMBOL (no support)") + return + else: + print(" * DUPLICATE SYMBOL") + for dev, where in SUPPORT_INFO.items(): + missing_means_no = dev in MISSING_MEANS_NO + print(" *", dev, ":", support_value(where, key, missing_means_no)) # ====== validation functions ====== # From 4726d3259ed80356fed8f8956c4987e18a403119 Mon Sep 17 00:00:00 2001 From: matejcik Date: Wed, 15 Aug 2018 19:22:29 +0200 Subject: [PATCH 499/767] tools: update coin_info to new support method and duplicate checking --- tools/coin_info.py | 206 +++++++++++++++------------------------------ 1 file changed, 69 insertions(+), 137 deletions(-) diff --git a/tools/coin_info.py b/tools/coin_info.py index 452698673..4c3061d72 100755 --- a/tools/coin_info.py +++ b/tools/coin_info.py @@ -185,25 +185,6 @@ def validate_btc(coin): return errors -SUPPORT_CHECKS = [ - check_key("trezor1", str, nullable=True, regex=r"^soon|planned|\d+\.\d+\.\d+$"), - check_key("trezor2", str, nullable=True, regex=r"^soon|planned|\d+\.\d+\.\d+$"), - check_key("webwallet", bool, nullable=True), - check_key("connect", bool, nullable=True), - check_key("other", dict, optional=True, empty=False), -] - - -def validate_support(support): - errors = [] - for check in SUPPORT_CHECKS: - try: - check(support) - except Exception as e: - errors.append(str(e)) - return errors - - # ======= Coin json loaders ======= @@ -280,15 +261,6 @@ def _load_misc(): # ====== support info ====== RELEASES_URL = "https://wallet.trezor.io/data/firmware/{}/releases.json" -ETHEREUM_TOKENS = { - "1": "https://raw.githubusercontent.com/trezor/trezor-mcu/v{}/firmware/ethereum_tokens.c", - "2": "https://raw.githubusercontent.com/trezor/trezor-core/v{}/src/apps/ethereum/tokens.py", -} - -TOKEN_MATCH = { - "1": re.compile(r'\{.*" ([^"]+)".*\},'), - "2": re.compile(r'\(.*["\']([^"\']+)["\'].*\),'), -} def get_support_data(): @@ -308,77 +280,46 @@ def latest_releases(): return latest -def support_info_erc20(coins, versions): - """Generate support info for ERC20 tokens. +def support_info_single(support_data, coin): + """Extract a support dict from `support.json` data. - Takes a dict of Trezor versions as returned from `latest_releases` - and a list of coins as returned from `_get_erc20_tokens` and creates - a supportinfo entry for each listed token. + Returns a dict of support values for each "device", i.e., `support.json` + top-level key. - Support status is determined by downloading and parsing the definition file - from the appropriate firmware version. If a given token is listed, the support - is marked as "yes". If not, support is marked as "soon", assuming that - it will be included in next release. - - This is currently the only way to get the list of supported tokens. We don't want - to track support individually in support.json. + The support value for each device is determined in order of priority: + * if the coin is marked as duplicate, all support values are `None` + * if the coin has an entry in `unsupported`, its support is `None` + * if the coin has an entry in `supported` its support is that entry + (usually a version string, or `True` for connect/webwallet) + * otherwise support is presumed "soon" """ - supported_tokens = {} - for trezor, version in versions.items(): - tokens = set() - version_str = ".".join(map(str, version)) - - token_file = requests.get(ETHEREUM_TOKENS[trezor].format(version_str)).text - token_match = TOKEN_MATCH[trezor] - - for line in token_file.split("\n"): - m = token_match.search(line) - if m: - tokens.add(m.group(1)) - - supported_tokens[trezor] = tokens - - support = {} - for coin in coins: - key = coin["key"] - if not key.startswith("erc20:"): - continue - - support[key] = dict( - trezor1="yes" if coin["shortcut"] in supported_tokens["1"] else "soon", - trezor2="yes" if coin["shortcut"] in supported_tokens["2"] else "soon", - ) - - return support + support_info = {} + key = coin["key"] + dup = coin.get("duplicate") + for device, values in support_data.items(): + if dup: + support_value = None + elif key in values["unsupported"]: + support_value = None + elif key in values["supported"]: + support_value = values["supported"][key] + else: + support_value = "soon" + support_info[device] = support_value + return support_info -def support_info(coins, erc20_versions=None, skip_missing=False): +def support_info(coins): """Generate Trezor support information. Takes a collection of coins and generates a support-info entry for each. - The support-info is a dict with a number of known keys: - `trezor1`, `trezor2`, `webwallet`, `connect`. An optional `other` entry - is a dict of name-url pairs for third-party software. + The support-info is a dict with keys based on `support.json` keys. + These are usually: "trezor1", "trezor2", "connect" and "webwallet". The `coins` argument can be a `CoinsInfo` object, a list or a dict of coin items. - For btc-like coins and misc networks, this is taken from `support.json`. - For NEM mosaics and ethereum networks, the support is presumed to be "yes" - for both Trezors. Webwallet and Connect info is not filled out. - - ERC20 tokens are ignored by this function, as if `skip_missing` was true - (see below). However, if you pass the optional `erc20_versions` argument, - it will call `support_info_erc20` for you with given versions. - - In all cases, if the coin is explicitly listed in `support.json`, the info - takes precedence over any other source (be it assumed "yes" for nem/eth, - or downloaded info for erc20). - - If `skip_missing` is `True`, coins for which no support information is available - will not be included in the output. Otherwise, an empty dict will be included - and a warning emitted. "No support information" means that the coin is not - listed in `support.json` and we have no heuristic to determine the support. + Support information is taken from `support.json`. """ if isinstance(coins, CoinsInfo): coins = coins.as_list() @@ -388,28 +329,9 @@ def support_info(coins, erc20_versions=None, skip_missing=False): support_data = get_support_data() support = {} for coin in coins: - key = coin["key"] - typ = key.split(":", maxsplit=1)[0] - if key in support_data: - support[key] = support_data[key] + support[coin["key"]] = support_info_single(support_data, coin) - elif typ in ("nem", "eth"): - support[key] = dict(trezor1="yes", trezor2="yes") - - elif typ == "erc20": - # you must call a separate function to get that - continue - - elif not skip_missing: - log.info("support info missing for {}".format(key)) - support[key] = {} - - if erc20_versions: - erc20 = support_info_erc20(coins, erc20_versions) - erc20.update(support) - return erc20 - else: - return support + return support # ====== data cleanup functions ====== @@ -459,31 +381,38 @@ def _ensure_mandatory_values(coins): raise ValueError(coin) -def _filter_duplicate_shortcuts(coins): - """Removes coins with identical `shortcut`s. - This is used to drop colliding ERC20 tokens. +def mark_duplicate_shortcuts(coins): + """Finds coins with identical `shortcut`s. + Updates their keys and sets a `duplicate` field. """ - dup_keys = set() - retained_coins = OrderedDict() + dup_symbols = defaultdict(list) + dup_keys = defaultdict(list) + + def dups_only(dups): + return {k: v for k, v in dups.items() if len(v) > 1} for coin in coins: - if "Testnet" in coin["name"] and coin["shortcut"] == "tETH": - # special case for Ethereum testnets - continue + symsplit = coin["shortcut"].split(" ", maxsplit=1) + symbol = symsplit[0] + dup_symbols[symbol].append(coin) + dup_keys[coin["key"]].append(coin) - key = coin["shortcut"] - if key in dup_keys: - pass - elif key in retained_coins: - dup_keys.add(key) - del retained_coins[key] - else: - retained_coins[key] = coin + dup_symbols = dups_only(dup_symbols) + dup_keys = dups_only(dup_keys) - # modify original list - coins[:] = retained_coins.values() - # return duplicates - return dup_keys + # mark duplicate symbols + for values in dup_symbols.values(): + for coin in values: + coin["duplicate"] = True + + # deduplicate keys + for values in dup_keys.values(): + for i, coin in enumerate(values): + # presumably only duplicate symbols can have duplicate keys + assert coin.get("duplicate") + coin["key"] += f":{i}" + + return dup_symbols def _btc_sort_key(coin): @@ -493,13 +422,15 @@ def _btc_sort_key(coin): return coin["name"] -def get_all(): +def get_all(deduplicate=True): """Returns all definition as dict organized by coin type. `coins` for btc-like coins, `eth` for ethereum networks, `erc20` for ERC20 tokens, `nem` for NEM mosaics, `misc` for other networks. + + Automatically removes duplicate symbols from the result. """ all_coins = CoinsInfo( coins=_load_btc_coins(), @@ -515,17 +446,18 @@ def get_all(): elif k == "nem": # do not sort nem pass + elif k == "eth": + # sort ethereum networks by chain_id + coins.sort(key=lambda c: c["chain_id"]) else: coins.sort(key=lambda c: c["key"].upper()) _ensure_mandatory_values(coins) - dup_keys = _filter_duplicate_shortcuts(coins) - if dup_keys: - if k == "erc20": - severity = logging.INFO - else: - severity = logging.WARNING - dup_str = ", ".join(dup_keys) - log.log(severity, "{}: removing duplicate symbols: {}".format(k, dup_str)) + + if deduplicate: + mark_duplicate_shortcuts(all_coins.as_list()) + all_coins["erc20"] = [ + coin for coin in all_coins["erc20"] if not coin.get("duplicate") + ] return all_coins From a11edef98a7fdb9b5f52cc7bb304d90e5310a2fa Mon Sep 17 00:00:00 2001 From: matejcik Date: Wed, 15 Aug 2018 19:25:27 +0200 Subject: [PATCH 500/767] defs: convert support.json to a format with all the tokens --- defs/support.json | 1710 +++++++++++++++++++++++++++++++++++++++------ 1 file changed, 1485 insertions(+), 225 deletions(-) diff --git a/defs/support.json b/defs/support.json index 1a81a0fe4..eb3ab3b1b 100644 --- a/defs/support.json +++ b/defs/support.json @@ -1,231 +1,1491 @@ { - "coin:BCH": { - "trezor1": "1.6.2", - "trezor2": "2.0.7", - "connect": true, - "webwallet": true, - "other": { - "Electron Cash": "https://electroncash.org" - } + "connect": { + "supported": { + "coin:BCH": true, + "coin:BTC": true, + "coin:BTG": true, + "coin:DASH": true, + "coin:DOGE": true, + "coin:LTC": true, + "coin:TEST": true, + "coin:VTC": true, + "coin:ZEC": true }, - "coin:BTC": { - "trezor1": "1.5.2", - "trezor2": "2.0.5", - "connect": true, - "webwallet": true, - "other": { - "Electrum": "https://electrum.org" - } + "unsupported": {} + }, + "trezor1": { + "supported": { + "coin:BCH": "1.6.2", + "coin:BTC": "1.5.2", + "coin:BTCP": "1.6.2", + "coin:BTG": "1.6.2", + "coin:DASH": "1.5.2", + "coin:DCR": "1.6.2", + "coin:DGB": "1.6.0", + "coin:DOGE": "1.5.2", + "coin:FJC": "1.6.1", + "coin:GRS": "1.6.2", + "coin:LTC": "1.5.2", + "coin:MONA": "1.6.0", + "coin:NMC": "1.5.2", + "coin:TAZ": "1.6.2", + "coin:TBCH": "1.6.2", + "coin:TDCR": "1.6.2", + "coin:TEST": "1.5.2", + "coin:TLTC": "1.6.2", + "coin:VIA": "1.6.2", + "coin:VTC": "1.6.1", + "coin:XZC": "1.6.2", + "coin:ZEC": "1.6.2", + "coin:tDASH": "1.6.2", + "coin:tGRS": "1.6.2", + "coin:tXZC": "1.6.2", + "erc20:ella:MINING": "1.6.2", + "erc20:etc:BEC": "1.6.2", + "erc20:eth:$FFC": "1.6.2", + "erc20:eth:$FXY": "1.6.2", + "erc20:eth:$TEAK": "1.6.2", + "erc20:eth:0xBTC": "1.6.2", + "erc20:eth:1ST": "1.6.2", + "erc20:eth:1WO": "1.6.2", + "erc20:eth:2DC": "1.6.2", + "erc20:eth:300": "1.6.2", + "erc20:eth:A18": "1.6.2", + "erc20:eth:ABT": "1.6.2", + "erc20:eth:ABYSS": "1.6.2", + "erc20:eth:ACC": "1.6.2", + "erc20:eth:ADH": "1.6.2", + "erc20:eth:ADI": "1.6.2", + "erc20:eth:ADL": "1.6.2", + "erc20:eth:ADST": "1.6.2", + "erc20:eth:ADT": "1.6.2", + "erc20:eth:ADX": "1.6.2", + "erc20:eth:AE": "1.6.2", + "erc20:eth:AGI": "1.6.2", + "erc20:eth:AION": "1.6.2", + "erc20:eth:AIR": "1.6.2", + "erc20:eth:AIX": "1.6.2", + "erc20:eth:ALCO": "1.6.2", + "erc20:eth:ALIS": "1.6.2", + "erc20:eth:ALTS": "1.6.2", + "erc20:eth:AMB": "1.6.2", + "erc20:eth:AMIS": "1.6.2", + "erc20:eth:AMN": "1.6.2", + "erc20:eth:AMO": "1.6.2", + "erc20:eth:AMTC": "1.6.2", + "erc20:eth:ANT": "1.6.2", + "erc20:eth:APIS": "1.6.2", + "erc20:eth:APPC": "1.6.2", + "erc20:eth:APT": "1.6.2", + "erc20:eth:ARC": "1.6.2", + "erc20:eth:ARCT": "1.6.2", + "erc20:eth:ARD": "1.6.2", + "erc20:eth:ARN": "1.6.2", + "erc20:eth:ART": "1.6.2", + "erc20:eth:ARX": "1.6.2", + "erc20:eth:ARXT": "1.6.2", + "erc20:eth:AST": "1.6.2", + "erc20:eth:ATL": "1.6.2", + "erc20:eth:ATMI": "1.6.2", + "erc20:eth:ATT": "1.6.2", + "erc20:eth:ATTN": "1.6.2", + "erc20:eth:AVA": "1.6.2", + "erc20:eth:AVT": "1.6.2", + "erc20:eth:AX1": "1.6.2", + "erc20:eth:AXP": "1.6.2", + "erc20:eth:BANX": "1.6.2", + "erc20:eth:BAT": "1.6.2", + "erc20:eth:BBK": "1.6.2", + "erc20:eth:BCBC": "1.6.2", + "erc20:eth:BCDN": "1.6.2", + "erc20:eth:BCDT": "1.6.2", + "erc20:eth:BCL": "1.6.2", + "erc20:eth:BCPT": "1.6.2", + "erc20:eth:BCV": "1.6.2", + "erc20:eth:BDG": "1.6.2", + "erc20:eth:BEE": "1.6.2", + "erc20:eth:BERRY": "1.6.2", + "erc20:eth:BET": "1.6.2", + "erc20:eth:BETR": "1.6.2", + "erc20:eth:BKB": "1.6.2", + "erc20:eth:BKRx": "1.6.2", + "erc20:eth:BKX": "1.6.2", + "erc20:eth:BLT": "1.6.2", + "erc20:eth:BLUE": "1.6.2", + "erc20:eth:BLZ": "1.6.2", + "erc20:eth:BMC": "1.6.2", + "erc20:eth:BMT": "1.6.2", + "erc20:eth:BMX": "1.6.2", + "erc20:eth:BNB": "1.6.2", + "erc20:eth:BNC": "1.6.2", + "erc20:eth:BNFT": "1.6.2", + "erc20:eth:BNT": "1.6.2", + "erc20:eth:BNTY": "1.6.2", + "erc20:eth:BOB": "1.6.2", + "erc20:eth:BON": "1.6.2", + "erc20:eth:BOP": "1.6.2", + "erc20:eth:BOU": "1.6.2", + "erc20:eth:BPT": "1.6.2", + "erc20:eth:BQX": "1.6.2", + "erc20:eth:BRAT": "1.6.2", + "erc20:eth:BRD": "1.6.2", + "erc20:eth:BSDC": "1.6.2", + "erc20:eth:BST": "1.6.2", + "erc20:eth:BTCE": "1.6.2", + "erc20:eth:BTCL": "1.6.2", + "erc20:eth:BTE": "1.6.2", + "erc20:eth:BTH": "1.6.2", + "erc20:eth:BTHR": "1.6.2", + "erc20:eth:BTK": "1.6.2", + "erc20:eth:BTM": "1.6.2", + "erc20:eth:BTQ": "1.6.2", + "erc20:eth:BTT": "1.6.2", + "erc20:eth:BTTX": "1.6.2", + "erc20:eth:BUC": "1.6.2", + "erc20:eth:BeerCoin": "1.6.2", + "erc20:eth:C20": "1.6.2", + "erc20:eth:C8": "1.6.2", + "erc20:eth:CAG": "1.6.2", + "erc20:eth:CAN": "1.6.2", + "erc20:eth:CARB": "1.6.2", + "erc20:eth:CARCO": "1.6.2", + "erc20:eth:CARE": "1.6.2", + "erc20:eth:CAS": "1.6.2", + "erc20:eth:CATs (BitClave)_Old": "1.6.2", + "erc20:eth:CC3": "1.6.2", + "erc20:eth:CCLC": "1.6.2", + "erc20:eth:CCS": "1.6.2", + "erc20:eth:CDL": "1.6.2", + "erc20:eth:CDT": "1.6.2", + "erc20:eth:CEEK": "1.6.2", + "erc20:eth:CFI": "1.6.2", + "erc20:eth:CFTY": "1.6.2", + "erc20:eth:CHSB": "1.6.2", + "erc20:eth:CK": "1.6.2", + "erc20:eth:CLB": "1.6.2", + "erc20:eth:CLL": "1.6.2", + "erc20:eth:CLN": "1.6.2", + "erc20:eth:CLP": "1.6.2", + "erc20:eth:CMBT": "1.6.2", + "erc20:eth:CMC": "1.6.2", + "erc20:eth:CMT": "1.6.2", + "erc20:eth:CNB": "1.6.2", + "erc20:eth:CND": "1.6.2", + "erc20:eth:CO2": "1.6.2", + "erc20:eth:CO2Bit": "1.6.2", + "erc20:eth:COB": "1.6.2", + "erc20:eth:COFI": "1.6.2", + "erc20:eth:COIL": "1.6.2", + "erc20:eth:COIN": "1.6.2", + "erc20:eth:COV": "1.6.2", + "erc20:eth:CPEX": "1.6.2", + "erc20:eth:CPY": "1.6.2", + "erc20:eth:CR7": "1.6.2", + "erc20:eth:CRB": "1.6.2", + "erc20:eth:CRED": "1.6.2", + "erc20:eth:CREDO": "1.6.2", + "erc20:eth:CRPT": "1.6.2", + "erc20:eth:CRT": "1.6.2", + "erc20:eth:CTF": "1.6.2", + "erc20:eth:CTG": "1.6.2", + "erc20:eth:CTL": "1.6.2", + "erc20:eth:CTT": "1.6.2", + "erc20:eth:CTX": "1.6.2", + "erc20:eth:CVC": "1.6.2", + "erc20:eth:CXC": "1.6.2", + "erc20:eth:CXO": "1.6.2", + "erc20:eth:CryptoCarbon": "1.6.2", + "erc20:eth:DAB": "1.6.2", + "erc20:eth:DADI": "1.6.2", + "erc20:eth:DAI": "1.6.2", + "erc20:eth:DALC": "1.6.2", + "erc20:eth:DAN": "1.6.2", + "erc20:eth:DAO": "1.6.2", + "erc20:eth:DAT": "1.6.2", + "erc20:eth:DATABroker": "1.6.2", + "erc20:eth:DATACoin": "1.6.2", + "erc20:eth:DAV": "1.6.2", + "erc20:eth:DAXT": "1.6.2", + "erc20:eth:DAY": "1.6.2", + "erc20:eth:DCA": "1.6.2", + "erc20:eth:DCL": "1.6.2", + "erc20:eth:DCN": "1.6.2", + "erc20:eth:DDF": "1.6.2", + "erc20:eth:DEB": "1.6.2", + "erc20:eth:DEEZ": "1.6.2", + "erc20:eth:DENT": "1.6.2", + "erc20:eth:DGD": "1.6.2", + "erc20:eth:DGPT": "1.6.2", + "erc20:eth:DGX": "1.6.2", + "erc20:eth:DICE": "1.6.2", + "erc20:eth:DIVX": "1.6.2", + "erc20:eth:DKP": "1.6.2", + "erc20:eth:DLT": "1.6.2", + "erc20:eth:DMT": "1.6.2", + "erc20:eth:DNT": "1.6.2", + "erc20:eth:DNX": "1.6.2", + "erc20:eth:DPP": "1.6.2", + "erc20:eth:DRGN": "1.6.2", + "erc20:eth:DSC": "1.6.2", + "erc20:eth:DTH": "1.6.2", + "erc20:eth:DTR": "1.6.2", + "erc20:eth:DTT": "1.6.2", + "erc20:eth:DTX": "1.6.2", + "erc20:eth:DTx": "1.6.2", + "erc20:eth:Devcon2 Token": "1.6.2", + "erc20:eth:EAGLE": "1.6.2", + "erc20:eth:ECN": "1.6.2", + "erc20:eth:ECO2": "1.6.2", + "erc20:eth:EDC": "1.6.2", + "erc20:eth:EDG": "1.6.2", + "erc20:eth:EDO": "1.6.2", + "erc20:eth:EGT": "1.6.2", + "erc20:eth:EHT": "1.6.2", + "erc20:eth:ELF": "1.6.2", + "erc20:eth:ELIX": "1.6.2", + "erc20:eth:ELTCOIN": "1.6.2", + "erc20:eth:EMON": "1.6.2", + "erc20:eth:EMONT": "1.6.2", + "erc20:eth:EMT": "1.6.2", + "erc20:eth:EMV": "1.6.2", + "erc20:eth:ENC": "1.6.2", + "erc20:eth:ENG": "1.6.2", + "erc20:eth:ENJ": "1.6.2", + "erc20:eth:ENTRP": "1.6.2", + "erc20:eth:EOS": "1.6.2", + "erc20:eth:EPX": "1.6.2", + "erc20:eth:ESZ": "1.6.2", + "erc20:eth:ETBS": "1.6.2", + "erc20:eth:ETCH": "1.6.2", + "erc20:eth:ETHB": "1.6.2", + "erc20:eth:ETR": "1.6.2", + "erc20:eth:EURT": "1.6.2", + "erc20:eth:EVE": "1.6.2", + "erc20:eth:EVN": "1.6.2", + "erc20:eth:EVX": "1.6.2", + "erc20:eth:EXMR": "1.6.2", + "erc20:eth:FAM": "1.6.2", + "erc20:eth:FANX": "1.6.2", + "erc20:eth:FKX": "1.6.2", + "erc20:eth:FLIXX": "1.6.2", + "erc20:eth:FLP": "1.6.2", + "erc20:eth:FLR": "1.6.2", + "erc20:eth:FLUZ": "1.6.2", + "erc20:eth:FLX": "1.6.2", + "erc20:eth:FND": "1.6.2", + "erc20:eth:FRD": "1.6.2", + "erc20:eth:FTC": "1.6.2", + "erc20:eth:FTR": "1.6.2", + "erc20:eth:FTT": "1.6.2", + "erc20:eth:FUEL": "1.6.2", + "erc20:eth:FUN": "1.6.2", + "erc20:eth:FYN": "1.6.2", + "erc20:eth:GAM": "1.6.2", + "erc20:eth:GAVEL": "1.6.2", + "erc20:eth:GBT": "1.6.2", + "erc20:eth:GBX": "1.6.2", + "erc20:eth:GCP": "1.6.2", + "erc20:eth:GEE": "1.6.2", + "erc20:eth:GELD": "1.6.2", + "erc20:eth:GEN": "1.6.2", + "erc20:eth:GET": "1.6.2", + "erc20:eth:GIF": "1.6.2", + "erc20:eth:GIM": "1.6.2", + "erc20:eth:GMT": "1.6.2", + "erc20:eth:GNO": "1.6.2", + "erc20:eth:GNT": "1.6.2", + "erc20:eth:GOLDX": "1.6.2", + "erc20:eth:GRID": "1.6.2", + "erc20:eth:GROW": "1.6.2", + "erc20:eth:GTC": "1.6.2", + "erc20:eth:GTKT": "1.6.2", + "erc20:eth:GTO": "1.6.2", + "erc20:eth:GVT": "1.6.2", + "erc20:eth:GXC": "1.6.2", + "erc20:eth:GXVC": "1.6.2", + "erc20:eth:GZE": "1.6.2", + "erc20:eth:GZR": "1.6.2", + "erc20:eth:HAT": "1.6.2", + "erc20:eth:HAV": "1.6.2", + "erc20:eth:HDG": "1.6.2", + "erc20:eth:HGT": "1.6.2", + "erc20:eth:HIG": "1.6.2", + "erc20:eth:HKG": "1.6.2", + "erc20:eth:HKY": "1.6.2", + "erc20:eth:HMQ": "1.6.2", + "erc20:eth:HODL": "1.6.2", + "erc20:eth:HORSE": "1.6.2", + "erc20:eth:HST": "1.6.2", + "erc20:eth:HVN": "1.6.2", + "erc20:eth:HYDRO": "1.6.2", + "erc20:eth:Hdp": "1.6.2", + "erc20:eth:IAD": "1.6.2", + "erc20:eth:ICE": "1.6.2", + "erc20:eth:ICN": "1.6.2", + "erc20:eth:ICO": "1.6.2", + "erc20:eth:ICOS": "1.6.2", + "erc20:eth:ICX": "1.6.2", + "erc20:eth:IDEA": "1.6.2", + "erc20:eth:IFT": "1.6.2", + "erc20:eth:IIC": "1.6.2", + "erc20:eth:IKB": "1.6.2", + "erc20:eth:IMC": "1.6.2", + "erc20:eth:IMT": "1.6.2", + "erc20:eth:IND": "1.6.2", + "erc20:eth:INRM": "1.6.2", + "erc20:eth:INS": "1.6.2", + "erc20:eth:INSTAR": "1.6.2", + "erc20:eth:INXT": "1.6.2", + "erc20:eth:IOST": "1.6.2", + "erc20:eth:IOTX": "1.6.2", + "erc20:eth:IPL": "1.6.2", + "erc20:eth:IPSX": "1.6.2", + "erc20:eth:ITC": "1.6.2", + "erc20:eth:ITT": "1.6.2", + "erc20:eth:IXT": "1.6.2", + "erc20:eth:IoT": "1.6.2", + "erc20:eth:J8T": "1.6.2", + "erc20:eth:JET": "1.6.2", + "erc20:eth:JNT": "1.6.2", + "erc20:eth:JOY": "1.6.2", + "erc20:eth:JetCoins": "1.6.2", + "erc20:eth:KEE": "1.6.2", + "erc20:eth:KICK": "1.6.2", + "erc20:eth:KIN": "1.6.2", + "erc20:eth:KNC": "1.6.2", + "erc20:eth:KPR": "1.6.2", + "erc20:eth:KRL": "1.6.2", + "erc20:eth:KZN": "1.6.2", + "erc20:eth:LA": "1.6.2", + "erc20:eth:LALA": "1.6.2", + "erc20:eth:LDC": "1.6.2", + "erc20:eth:LEND": "1.6.2", + "erc20:eth:LFR": "1.6.2", + "erc20:eth:LGO": "1.6.2", + "erc20:eth:LGR": "1.6.2", + "erc20:eth:LIF": "1.6.2", + "erc20:eth:LIFE": "1.6.2", + "erc20:eth:LIVE": "1.6.2", + "erc20:eth:LNC": "1.6.2", + "erc20:eth:LNC-Linker Coin": "1.6.2", + "erc20:eth:LND": "1.6.2", + "erc20:eth:LOC": "1.6.2", + "erc20:eth:LOCI": "1.6.2", + "erc20:eth:LOCUS": "1.6.2", + "erc20:eth:LOK": "1.6.2", + "erc20:eth:LOOM": "1.6.2", + "erc20:eth:LPT": "1.6.2", + "erc20:eth:LRC": "1.6.2", + "erc20:eth:LUC": "1.6.2", + "erc20:eth:LUCK": "1.6.2", + "erc20:eth:LUM": "1.6.2", + "erc20:eth:LUN": "1.6.2", + "erc20:eth:LYS": "1.6.2", + "erc20:eth:M-ETH": "1.6.2", + "erc20:eth:MAD": "1.6.2", + "erc20:eth:MAN": "1.6.2", + "erc20:eth:MANA": "1.6.2", + "erc20:eth:MART": "1.6.2", + "erc20:eth:MBRS": "1.6.2", + "erc20:eth:MCAP": "1.6.2", + "erc20:eth:MCI": "1.6.2", + "erc20:eth:MCO": "1.6.2", + "erc20:eth:MDA": "1.6.2", + "erc20:eth:MESH": "1.6.2", + "erc20:eth:MEST": "1.6.2", + "erc20:eth:MFG": "1.6.2", + "erc20:eth:MGO": "1.6.2", + "erc20:eth:MKR": "1.6.2", + "erc20:eth:MKT": "1.6.2", + "erc20:eth:MLN": "1.6.2", + "erc20:eth:MNE": "1.6.2", + "erc20:eth:MNT": "1.6.2", + "erc20:eth:MNTP": "1.6.2", + "erc20:eth:MOD": "1.6.2", + "erc20:eth:MRL": "1.6.2", + "erc20:eth:MRP": "1.6.2", + "erc20:eth:MRV": "1.6.2", + "erc20:eth:MSP": "1.6.2", + "erc20:eth:MTC": "1.6.2", + "erc20:eth:MTH": "1.6.2", + "erc20:eth:MTL": "1.6.2", + "erc20:eth:MTN": "1.6.2", + "erc20:eth:MTR": "1.6.2", + "erc20:eth:MTRc": "1.6.2", + "erc20:eth:MTX": "1.6.2", + "erc20:eth:MUXE": "1.6.2", + "erc20:eth:MVP": "1.6.2", + "erc20:eth:MWAT": "1.6.2", + "erc20:eth:MYD": "1.6.2", + "erc20:eth:MYST": "1.6.2", + "erc20:eth:NAC": "1.6.2", + "erc20:eth:NANJ": "1.6.2", + "erc20:eth:NAVI": "1.6.2", + "erc20:eth:NBAI": "1.6.2", + "erc20:eth:NCT": "1.6.2", + "erc20:eth:NDC": "1.6.2", + "erc20:eth:NEC": "1.6.2", + "erc20:eth:NET": "1.6.2", + "erc20:eth:NEU": "1.6.2", + "erc20:eth:NGC": "1.6.2", + "erc20:eth:NIMFA": "1.6.2", + "erc20:eth:NMR": "1.6.2", + "erc20:eth:NOX": "1.6.2", + "erc20:eth:NPER": "1.6.2", + "erc20:eth:NPXS": "1.6.2", + "erc20:eth:NULS": "1.6.2", + "erc20:eth:NxC": "1.6.2", + "erc20:eth:OAK": "1.6.2", + "erc20:eth:OAX": "1.6.2", + "erc20:eth:OCC": "1.6.2", + "erc20:eth:OJX": "1.6.2", + "erc20:eth:OLD_MKR": "1.6.2", + "erc20:eth:OMG": "1.6.2", + "erc20:eth:ONEK": "1.6.2", + "erc20:eth:OPT": "1.6.2", + "erc20:eth:ORBS": "1.6.2", + "erc20:eth:OST": "1.6.2", + "erc20:eth:Ox Fina": "1.6.2", + "erc20:eth:PAL": "1.6.2", + "erc20:eth:PARETO": "1.6.2", + "erc20:eth:PAT": "1.6.2", + "erc20:eth:PATENTS": "1.6.2", + "erc20:eth:PATH": "1.6.2", + "erc20:eth:PAY": "1.6.2", + "erc20:eth:PBL": "1.6.2", + "erc20:eth:PBT": "1.6.2", + "erc20:eth:PCH": "1.6.2", + "erc20:eth:PCL": "1.6.2", + "erc20:eth:PCLOLD": "1.6.2", + "erc20:eth:PET": "1.6.2", + "erc20:eth:PETRO": "1.6.2", + "erc20:eth:PEXT": "1.6.2", + "erc20:eth:PIPL": "1.6.2", + "erc20:eth:PIX": "1.6.2", + "erc20:eth:PLASMA": "1.6.2", + "erc20:eth:PLBT": "1.6.2", + "erc20:eth:PLR": "1.6.2", + "erc20:eth:PLU": "1.6.2", + "erc20:eth:POE": "1.6.2", + "erc20:eth:POIN": "1.6.2", + "erc20:eth:POLY": "1.6.2", + "erc20:eth:POOL": "1.6.2", + "erc20:eth:POS": "1.6.2", + "erc20:eth:POWR": "1.6.2", + "erc20:eth:PPP": "1.6.2", + "erc20:eth:PPT": "1.6.2", + "erc20:eth:PRE": "1.6.2", + "erc20:eth:PRG": "1.6.2", + "erc20:eth:PRL": "1.6.2", + "erc20:eth:PRO": "1.6.2", + "erc20:eth:PRON": "1.6.2", + "erc20:eth:PRS": "1.6.2", + "erc20:eth:PRSP": "1.6.2", + "erc20:eth:PT": "1.6.2", + "erc20:eth:PTC": "1.6.2", + "erc20:eth:PTOY": "1.6.2", + "erc20:eth:PTWO": "1.6.2", + "erc20:eth:PUC": "1.6.2", + "erc20:eth:PXT": "1.6.2", + "erc20:eth:QASH": "1.6.2", + "erc20:eth:QAU": "1.6.2", + "erc20:eth:QBX": "1.6.2", + "erc20:eth:QRG": "1.6.2", + "erc20:eth:QRL": "1.6.2", + "erc20:eth:QSP": "1.6.2", + "erc20:eth:QTQ": "1.6.2", + "erc20:eth:QTUM": "1.6.2", + "erc20:eth:RAO": "1.6.2", + "erc20:eth:RBLX": "1.6.2", + "erc20:eth:RCN": "1.6.2", + "erc20:eth:RCT": "1.6.2", + "erc20:eth:REA": "1.6.2", + "erc20:eth:REBL": "1.6.2", + "erc20:eth:RED": "1.6.2", + "erc20:eth:REN": "1.6.2", + "erc20:eth:REQ": "1.6.2", + "erc20:eth:REX": "1.6.2", + "erc20:eth:RFR": "1.6.2", + "erc20:eth:RIPT": "1.6.2", + "erc20:eth:RLC": "1.6.2", + "erc20:eth:RLT": "1.6.2", + "erc20:eth:RLTY": "1.6.2", + "erc20:eth:RLX": "1.6.2", + "erc20:eth:RNDR": "1.6.2", + "erc20:eth:ROCK": "1.6.2", + "erc20:eth:ROK": "1.6.2", + "erc20:eth:ROUND": "1.6.2", + "erc20:eth:RPL": "1.6.2", + "erc20:eth:RTN": "1.6.2", + "erc20:eth:RVL": "1.6.2", + "erc20:eth:RVT": "1.6.2", + "erc20:eth:S-A-PAT": "1.6.2", + "erc20:eth:S-ETH": "1.6.2", + "erc20:eth:SALT": "1.6.2", + "erc20:eth:SAN": "1.6.2", + "erc20:eth:SCANDI": "1.6.2", + "erc20:eth:SCL": "1.6.2", + "erc20:eth:SENSE": "1.6.2", + "erc20:eth:SET": "1.6.2", + "erc20:eth:SEXY": "1.6.2", + "erc20:eth:SGEL": "1.6.2", + "erc20:eth:SHIT": "1.6.2", + "erc20:eth:SIFT": "1.6.2", + "erc20:eth:SIG": "1.6.2", + "erc20:eth:SKIN": "1.6.2", + "erc20:eth:SKO1": "1.6.2", + "erc20:eth:SKR": "1.6.2", + "erc20:eth:SLT": "1.6.2", + "erc20:eth:SMART": "1.6.2", + "erc20:eth:SNC": "1.6.2", + "erc20:eth:SND": "1.6.2", + "erc20:eth:SNG": "1.6.2", + "erc20:eth:SNGLS": "1.6.2", + "erc20:eth:SNIP": "1.6.2", + "erc20:eth:SNM": "1.6.2", + "erc20:eth:SNOV": "1.6.2", + "erc20:eth:SNT": "1.6.2", + "erc20:eth:SOL": "1.6.2", + "erc20:eth:SPANK": "1.6.2", + "erc20:eth:SPARC": "1.6.2", + "erc20:eth:SPARTA": "1.6.2", + "erc20:eth:SPF": "1.6.2", + "erc20:eth:SPN": "1.6.2", + "erc20:eth:SRN": "1.6.2", + "erc20:eth:SSH": "1.6.2", + "erc20:eth:STAC": "1.6.2", + "erc20:eth:STAR": "1.6.2", + "erc20:eth:STC": "1.6.2", + "erc20:eth:STK": "1.6.2", + "erc20:eth:STN": "1.6.2", + "erc20:eth:STORJ": "1.6.2", + "erc20:eth:STORM": "1.6.2", + "erc20:eth:STP": "1.6.2", + "erc20:eth:STQ": "1.6.2", + "erc20:eth:STRC": "1.6.2", + "erc20:eth:STX": "1.6.2", + "erc20:eth:SUB": "1.6.2", + "erc20:eth:SWM": "1.6.2", + "erc20:eth:SWT": "1.6.2", + "erc20:eth:SXDT": "1.6.2", + "erc20:eth:SXUT": "1.6.2", + "erc20:eth:SYN": "1.6.2", + "erc20:eth:SenSatorI": "1.6.2", + "erc20:eth:TAU": "1.6.2", + "erc20:eth:TBC2": "1.6.2", + "erc20:eth:TBT": "1.6.2", + "erc20:eth:TDH": "1.6.2", + "erc20:eth:TEL": "1.6.2", + "erc20:eth:TFL": "1.6.2", + "erc20:eth:THETA": "1.6.2", + "erc20:eth:THUG": "1.6.2", + "erc20:eth:TIME": "1.6.2", + "erc20:eth:TIO": "1.6.2", + "erc20:eth:TIX": "1.6.2", + "erc20:eth:TKN": "1.6.2", + "erc20:eth:TNT": "1.6.2", + "erc20:eth:TRC": "1.6.2", + "erc20:eth:TRCN": "1.6.2", + "erc20:eth:TRST": "1.6.2", + "erc20:eth:TRX": "1.6.2", + "erc20:eth:TWN": "1.6.2", + "erc20:eth:TWNKL": "1.6.2", + "erc20:eth:TaaS": "1.6.2", + "erc20:eth:UKG": "1.6.2", + "erc20:eth:UQC": "1.6.2", + "erc20:eth:USDM": "1.6.2", + "erc20:eth:USDT": "1.6.2", + "erc20:eth:UTK": "1.6.2", + "erc20:eth:UTN-P": "1.6.2", + "erc20:eth:UUU": "1.6.2", + "erc20:eth:Unicorn": "1.6.2", + "erc20:eth:VDOC": "1.6.2", + "erc20:eth:VEE": "1.6.2", + "erc20:eth:VENUS": "1.6.2", + "erc20:eth:VERI": "1.6.2", + "erc20:eth:VET": "1.6.2", + "erc20:eth:VIB": "1.6.2", + "erc20:eth:VIEW": "1.6.2", + "erc20:eth:VIT": "1.6.2", + "erc20:eth:VIU": "1.6.2", + "erc20:eth:VLD": "1.6.2", + "erc20:eth:VOC": "1.6.2", + "erc20:eth:VOISE": "1.6.2", + "erc20:eth:VRS": "1.6.2", + "erc20:eth:VSL": "1.6.2", + "erc20:eth:WAX": "1.6.2", + "erc20:eth:WBA": "1.6.2", + "erc20:eth:WCN": "1.6.2", + "erc20:eth:WCT": "1.6.2", + "erc20:eth:WETH": "1.6.2", + "erc20:eth:WHEN": "1.6.2", + "erc20:eth:WIC": "1.6.2", + "erc20:eth:WILD": "1.6.2", + "erc20:eth:WINGS": "1.6.2", + "erc20:eth:WORK": "1.6.2", + "erc20:eth:WPC": "1.6.2", + "erc20:eth:WPR": "1.6.2", + "erc20:eth:WRK": "1.6.2", + "erc20:eth:WTC": "1.6.2", + "erc20:eth:WYS": "1.6.2", + "erc20:eth:WYV": "1.6.2", + "erc20:eth:WaBi": "1.6.2", + "erc20:eth:WiC": "1.6.2", + "erc20:eth:X8X": "1.6.2", + "erc20:eth:XAUR": "1.6.2", + "erc20:eth:XBP": "1.6.2", + "erc20:eth:XCC": "1.6.2", + "erc20:eth:XFS": "1.6.2", + "erc20:eth:XGG": "1.6.2", + "erc20:eth:XGM": "1.6.2", + "erc20:eth:XGT": "1.6.2", + "erc20:eth:XID": "1.6.2", + "erc20:eth:XNK": "1.6.2", + "erc20:eth:XNN": "1.6.2", + "erc20:eth:XNT": "1.6.2", + "erc20:eth:XRL": "1.6.2", + "erc20:eth:XSC": "1.6.2", + "erc20:eth:YEED": "1.6.2", + "erc20:eth:YUPIE": "1.6.2", + "erc20:eth:ZAP": "1.6.2", + "erc20:eth:ZCS": "1.6.2", + "erc20:eth:ZIL": "1.6.2", + "erc20:eth:ZMN": "1.6.2", + "erc20:eth:ZRX": "1.6.2", + "erc20:eth:ZST": "1.6.2", + "erc20:eth:cV": "1.6.2", + "erc20:eth:eBCH": "1.6.2", + "erc20:eth:eBTC": "1.6.2", + "erc20:eth:eGAS": "1.6.2", + "erc20:eth:eUSD": "1.6.2", + "erc20:eth:eosDAC": "1.6.2", + "erc20:eth:nCash": "1.6.2", + "erc20:eth:nUSD": "1.6.2", + "erc20:eth:onG": "1.6.2", + "erc20:kov:Aeternity": "1.6.2", + "erc20:rin:AETH": "1.6.2", + "erc20:rin:BHNT": "1.6.2", + "erc20:rin:CTGA": "1.6.2", + "erc20:rin:PPD": "1.6.2", + "erc20:rin:WALL": "1.6.2", + "erc20:rop:ILSC": "1.6.2", + "erc20:ubq:BEER": "1.6.2", + "erc20:ubq:CEFS": "1.6.2", + "erc20:ubq:DOT": "1.6.2", + "erc20:ubq:QWARK": "1.6.2", + "erc20:ubq:RICKS": "1.6.2", + "eth:AKA": "1.6.2", + "eth:CLO": "1.6.2", + "eth:EGEM": "1.6.2", + "eth:ELLA": "1.6.2", + "eth:EOSC": "1.6.2", + "eth:ESN": "1.6.2", + "eth:ETC": "1.6.2", + "eth:ETH": "1.6.2", + "eth:ETSC": "1.6.2", + "eth:EXP": "1.6.2", + "eth:GO": "1.6.2", + "eth:RSK": "1.6.2", + "eth:UBQ": "1.6.2", + "eth:tETC": "1.6.2", + "eth:tKOV": "1.6.2", + "eth:tRIN": "1.6.2", + "eth:tROP": "1.6.2", + "eth:tRSK": "1.6.2", + "misc:XLM": "soon", + "nem:BREEZE": "1.6.2", + "nem:DIM": "1.6.2", + "nem:DIMTOK": "1.6.2", + "nem:PAC:CHS": "1.6.2", + "nem:PAC:HRT": "1.6.2", + "nem:XEM": "1.6.2" }, - "coin:BTCP": { - "trezor1": "1.6.2", - "trezor2": "2.0.7", - "connect": null, - "webwallet": true, - "other": { - "BTCP Electrum": "https://github.com/BTCPrivate/electrum-btcp" - } - }, - "coin:BTG": { - "trezor1": "1.6.2", - "trezor2": "2.0.7", - "connect": true, - "webwallet": true, - "other": { - "ElectrumG": "https://github.com/BTCGPU/electrum" - } - }, - "coin:DASH": { - "trezor1": "1.5.2", - "trezor2": "2.0.5", - "connect": true, - "webwallet": true, - "other": { - "Dash Electrum": "https://electrum.dash.org" - } - }, - "coin:DCR": { - "trezor1": "1.6.2", - "trezor2": null, - "connect": null, - "webwallet": true - }, - "coin:DGB": { - "trezor1": "1.6.0", - "trezor2": "2.0.5", - "connect": null, - "webwallet": true - }, - "coin:DOGE": { - "trezor1": "1.5.2", - "trezor2": "2.0.5", - "connect": true, - "webwallet": true - }, - "coin:FJC": { - "trezor1": "1.6.1", - "trezor2": "2.0.5", - "connect": null, - "webwallet": true, - "other": { - "Electrum-FJC": "http://www.fujicoin.org/downloads.php" - } - }, - "coin:GRS": { - "trezor1": "1.6.2", - "trezor2": "2.0.8", - "connect": null, - "webwallet": true, - "other": { - "Electrum-GRS": "https://www.groestlcoin.org/groestlcoin-electrum-wallet/" - } - }, - "coin:LTC": { - "trezor1": "1.5.2", - "trezor2": "2.0.5", - "connect": true, - "webwallet": true, - "other": { - "Electrum-LTC": "https://electrum-ltc.org" - } - }, - "coin:MONA": { - "trezor1": "1.6.0", - "trezor2": "2.0.5", - "connect": null, - "webwallet": true, - "other": { - "Electrum-MONA": "https://electrum-mona.org" - } - }, - "coin:NMC": { - "trezor1": "1.5.2", - "trezor2": "2.0.5", - "connect": null, - "webwallet": null, - "other": { - "Electrum-NMC": "https://github.com/namecoin/electrum-nmc" - } - }, - "coin:TAZ": { - "trezor1": "1.6.2", - "trezor2": "2.0.7", - "connect": null, - "webwallet": true - }, - "coin:TBCH": { - "trezor1": "1.6.2", - "trezor2": "2.0.7", - "connect": null, - "webwallet": null - }, - "coin:TDCR": { - "trezor1": "1.6.2", - "trezor2": null, - "connect": null, - "webwallet": true - }, - "coin:TEST": { - "trezor1": "1.5.2", - "trezor2": "2.0.5", - "connect": true, - "webwallet": true - }, - "coin:TLTC": { - "trezor1": "1.6.2", - "trezor2": "2.0.7", - "connect": null, - "webwallet": true - }, - "coin:VIA": { - "trezor1": "1.6.2", - "trezor2": "2.0.7", - "connect": null, - "webwallet": true, - "other": { - "Vialectrum": "https://vialectrum.org" - } - }, - "coin:VTC": { - "trezor1": "1.6.1", - "trezor2": "2.0.5", - "connect": true, - "webwallet": true - }, - "coin:XZC": { - "trezor1": "1.6.2", - "trezor2": "2.0.7", - "connect": null, - "webwallet": true, - "other": { - "Electrum-XZC": "https://github.com/zcoinofficial/electrum-xzc", - "Znode Tool": "https://github.com/yura-pakhuchiy/znode-tool" - } - }, - "coin:ZEC": { - "trezor1": "1.6.2", - "trezor2": "2.0.7", - "connect": true, - "webwallet": true - }, - "coin:ZEN": { - "trezor1": null, - "trezor2": "2.0.8", - "connect": null, - "webwallet": null - }, - "coin:tDASH": { - "trezor1": "1.6.2", - "trezor2": null, - "connect": null, - "webwallet": null - }, - "coin:tGRS": { - "trezor1": "1.6.2", - "trezor2": "2.0.8", - "connect": null, - "webwallet": true - }, - "coin:tXZC": { - "trezor1": "1.6.2", - "trezor2": "2.0.7", - "connect": null, - "webwallet": null - }, - "misc:LSK": { - "trezor1": null, - "trezor2": "2.0.7", - "connect": null, - "webwallet": null - }, - "misc:XLM": { - "trezor1": "soon", - "trezor2": "soon", - "connect": null, - "webwallet": null - }, - "misc:XTZ": { - "trezor1": null, - "trezor2": "soon", - "connect": null, - "webwallet": null - }, - "misc:ADA": { - "trezor1": null, - "trezor2": "soon", - "connect": null, - "webwallet": null - }, - "misc:XMR": { - "trezor1": null, - "trezor2": "soon", - "connect": null, - "webwallet": null + "unsupported": { + "erc20:etc:PLAY": "duplicate key", + "erc20:eth:ATH": "duplicate key", + "erc20:eth:ATH (AIgatha Token)": "duplicate key", + "erc20:eth:BLX (Bullion)": "duplicate key", + "erc20:eth:BLX (Iconomi)": "duplicate key", + "erc20:eth:BTL (Battle)": "duplicate key", + "erc20:eth:BTL (Bitlle)": "duplicate key", + "erc20:eth:CAR": "duplicate key", + "erc20:eth:CAR (CarBlock)": "duplicate key", + "erc20:eth:CAT (BitClave)": "duplicate key", + "erc20:eth:CAT (Blockcat)": "duplicate key", + "erc20:eth:CCC (CryptoCrashCourse)": "duplicate key", + "erc20:eth:CCC (ICONOMI)": "duplicate key", + "erc20:eth:DEPO": "duplicate key", + "erc20:eth:DEPO (Depository Network)": "duplicate key", + "erc20:eth:DROP": "duplicate key", + "erc20:eth:DROP (dropil)": "duplicate key", + "erc20:eth:GUP": "duplicate key", + "erc20:eth:KC": "duplicate key", + "erc20:eth:LINK (Chainlink)": "duplicate key", + "erc20:eth:LINK Platform": "duplicate key", + "erc20:eth:MIT": "duplicate key", + "erc20:eth:MIT (Mychatcoin)": "duplicate key", + "erc20:eth:NONE": "duplicate key", + "erc20:eth:NXX": "duplicate key", + "erc20:eth:NXX OLD": "duplicate key", + "erc20:eth:PLAY": "duplicate key", + "erc20:eth:RDN": "duplicate key", + "erc20:kov:GUP": "duplicate key", + "erc20:rin:KC": "duplicate key", + "erc20:rin:NONE": "duplicate key", + "erc20:rin:RDN": "duplicate key", + "erc20:rop:NONE": "duplicate key" + } + }, + "trezor2": { + "supported": { + "coin:BCH": "2.0.7", + "coin:BTC": "2.0.5", + "coin:BTCP": "2.0.7", + "coin:BTG": "2.0.7", + "coin:DASH": "2.0.5", + "coin:DGB": "2.0.5", + "coin:DOGE": "2.0.5", + "coin:FJC": "2.0.5", + "coin:GRS": "2.0.8", + "coin:LTC": "2.0.5", + "coin:MONA": "2.0.5", + "coin:NMC": "2.0.5", + "coin:TAZ": "2.0.7", + "coin:TBCH": "2.0.7", + "coin:TEST": "2.0.5", + "coin:TLTC": "2.0.7", + "coin:VIA": "2.0.7", + "coin:VTC": "2.0.5", + "coin:XZC": "2.0.7", + "coin:ZEC": "2.0.7", + "coin:ZEN": "2.0.8", + "coin:tGRS": "2.0.8", + "coin:tXZC": "2.0.7", + "erc20:ella:MINING": "2.0.7", + "erc20:etc:BEC": "2.0.7", + "erc20:eth:$FFC": "2.0.7", + "erc20:eth:$FXY": "2.0.7", + "erc20:eth:$TEAK": "2.0.7", + "erc20:eth:0xBTC": "2.0.7", + "erc20:eth:1ST": "2.0.7", + "erc20:eth:1WO": "2.0.7", + "erc20:eth:2DC": "2.0.7", + "erc20:eth:300": "2.0.7", + "erc20:eth:A18": "2.0.7", + "erc20:eth:ABT": "2.0.7", + "erc20:eth:ABYSS": "2.0.7", + "erc20:eth:ACC": "2.0.7", + "erc20:eth:ADH": "2.0.7", + "erc20:eth:ADI": "2.0.7", + "erc20:eth:ADL": "2.0.7", + "erc20:eth:ADST": "2.0.7", + "erc20:eth:ADT": "2.0.7", + "erc20:eth:ADX": "2.0.7", + "erc20:eth:AE": "2.0.7", + "erc20:eth:AGI": "2.0.7", + "erc20:eth:AION": "2.0.7", + "erc20:eth:AIR": "2.0.7", + "erc20:eth:AIX": "2.0.7", + "erc20:eth:ALCO": "2.0.7", + "erc20:eth:ALIS": "2.0.7", + "erc20:eth:ALTS": "2.0.7", + "erc20:eth:AMB": "2.0.7", + "erc20:eth:AMIS": "2.0.7", + "erc20:eth:AMN": "2.0.7", + "erc20:eth:AMO": "2.0.7", + "erc20:eth:AMTC": "2.0.7", + "erc20:eth:ANT": "2.0.7", + "erc20:eth:APIS": "2.0.7", + "erc20:eth:APPC": "2.0.7", + "erc20:eth:APT": "2.0.7", + "erc20:eth:ARC": "2.0.7", + "erc20:eth:ARCT": "2.0.7", + "erc20:eth:ARD": "2.0.7", + "erc20:eth:ARN": "2.0.7", + "erc20:eth:ART": "2.0.7", + "erc20:eth:ARX": "2.0.7", + "erc20:eth:ARXT": "2.0.7", + "erc20:eth:AST": "2.0.7", + "erc20:eth:ATL": "2.0.7", + "erc20:eth:ATMI": "2.0.7", + "erc20:eth:ATT": "2.0.7", + "erc20:eth:ATTN": "2.0.7", + "erc20:eth:AVA": "2.0.7", + "erc20:eth:AVT": "2.0.7", + "erc20:eth:AX1": "2.0.7", + "erc20:eth:AXP": "2.0.7", + "erc20:eth:BANX": "2.0.7", + "erc20:eth:BAT": "2.0.7", + "erc20:eth:BBK": "2.0.7", + "erc20:eth:BCBC": "2.0.7", + "erc20:eth:BCDN": "2.0.7", + "erc20:eth:BCDT": "2.0.7", + "erc20:eth:BCL": "2.0.7", + "erc20:eth:BCPT": "2.0.7", + "erc20:eth:BCV": "2.0.7", + "erc20:eth:BDG": "2.0.7", + "erc20:eth:BEE": "2.0.7", + "erc20:eth:BERRY": "2.0.7", + "erc20:eth:BET": "2.0.7", + "erc20:eth:BETR": "2.0.7", + "erc20:eth:BKB": "2.0.7", + "erc20:eth:BKRx": "2.0.7", + "erc20:eth:BKX": "2.0.7", + "erc20:eth:BLT": "2.0.7", + "erc20:eth:BLUE": "2.0.7", + "erc20:eth:BLZ": "2.0.7", + "erc20:eth:BMC": "2.0.7", + "erc20:eth:BMT": "2.0.7", + "erc20:eth:BMX": "2.0.7", + "erc20:eth:BNB": "2.0.7", + "erc20:eth:BNC": "2.0.7", + "erc20:eth:BNFT": "2.0.7", + "erc20:eth:BNT": "2.0.7", + "erc20:eth:BNTY": "2.0.7", + "erc20:eth:BOB": "2.0.7", + "erc20:eth:BON": "2.0.7", + "erc20:eth:BOP": "2.0.7", + "erc20:eth:BOU": "2.0.7", + "erc20:eth:BPT": "2.0.7", + "erc20:eth:BQX": "2.0.7", + "erc20:eth:BRAT": "2.0.7", + "erc20:eth:BRD": "2.0.7", + "erc20:eth:BSDC": "2.0.7", + "erc20:eth:BST": "2.0.7", + "erc20:eth:BTCE": "2.0.7", + "erc20:eth:BTCL": "2.0.7", + "erc20:eth:BTE": "2.0.7", + "erc20:eth:BTH": "2.0.7", + "erc20:eth:BTHR": "2.0.7", + "erc20:eth:BTK": "2.0.7", + "erc20:eth:BTM": "2.0.7", + "erc20:eth:BTQ": "2.0.7", + "erc20:eth:BTT": "2.0.7", + "erc20:eth:BTTX": "2.0.7", + "erc20:eth:BUC": "2.0.7", + "erc20:eth:BeerCoin": "2.0.7", + "erc20:eth:C20": "2.0.7", + "erc20:eth:C8": "2.0.7", + "erc20:eth:CAG": "2.0.7", + "erc20:eth:CAN": "2.0.7", + "erc20:eth:CARB": "2.0.7", + "erc20:eth:CARCO": "2.0.7", + "erc20:eth:CARE": "2.0.7", + "erc20:eth:CAS": "2.0.7", + "erc20:eth:CATs (BitClave)_Old": "2.0.7", + "erc20:eth:CC3": "2.0.7", + "erc20:eth:CCLC": "2.0.7", + "erc20:eth:CCS": "2.0.7", + "erc20:eth:CDL": "2.0.7", + "erc20:eth:CDT": "2.0.7", + "erc20:eth:CEEK": "2.0.7", + "erc20:eth:CFI": "2.0.7", + "erc20:eth:CFTY": "2.0.7", + "erc20:eth:CHSB": "2.0.7", + "erc20:eth:CK": "2.0.7", + "erc20:eth:CLB": "2.0.7", + "erc20:eth:CLL": "2.0.7", + "erc20:eth:CLN": "2.0.7", + "erc20:eth:CLP": "2.0.7", + "erc20:eth:CMBT": "2.0.7", + "erc20:eth:CMC": "2.0.7", + "erc20:eth:CMT": "2.0.7", + "erc20:eth:CNB": "2.0.7", + "erc20:eth:CND": "2.0.7", + "erc20:eth:CO2": "2.0.7", + "erc20:eth:CO2Bit": "2.0.7", + "erc20:eth:COB": "2.0.7", + "erc20:eth:COFI": "2.0.7", + "erc20:eth:COIL": "2.0.7", + "erc20:eth:COIN": "2.0.7", + "erc20:eth:COV": "2.0.7", + "erc20:eth:CPEX": "2.0.7", + "erc20:eth:CPY": "2.0.7", + "erc20:eth:CR7": "2.0.7", + "erc20:eth:CRB": "2.0.7", + "erc20:eth:CRED": "2.0.7", + "erc20:eth:CREDO": "2.0.7", + "erc20:eth:CRPT": "2.0.7", + "erc20:eth:CRT": "2.0.7", + "erc20:eth:CTF": "2.0.7", + "erc20:eth:CTG": "2.0.7", + "erc20:eth:CTL": "2.0.7", + "erc20:eth:CTT": "2.0.7", + "erc20:eth:CTX": "2.0.7", + "erc20:eth:CVC": "2.0.7", + "erc20:eth:CXC": "2.0.7", + "erc20:eth:CXO": "2.0.7", + "erc20:eth:CryptoCarbon": "2.0.7", + "erc20:eth:DAB": "2.0.7", + "erc20:eth:DADI": "2.0.7", + "erc20:eth:DAI": "2.0.7", + "erc20:eth:DALC": "2.0.7", + "erc20:eth:DAN": "2.0.7", + "erc20:eth:DAO": "2.0.7", + "erc20:eth:DAT": "2.0.7", + "erc20:eth:DATABroker": "2.0.7", + "erc20:eth:DATACoin": "2.0.7", + "erc20:eth:DAV": "2.0.7", + "erc20:eth:DAXT": "2.0.7", + "erc20:eth:DAY": "2.0.7", + "erc20:eth:DCA": "2.0.7", + "erc20:eth:DCL": "2.0.7", + "erc20:eth:DCN": "2.0.7", + "erc20:eth:DDF": "2.0.7", + "erc20:eth:DEB": "2.0.7", + "erc20:eth:DEEZ": "2.0.7", + "erc20:eth:DENT": "2.0.7", + "erc20:eth:DGD": "2.0.7", + "erc20:eth:DGPT": "2.0.7", + "erc20:eth:DGX": "2.0.7", + "erc20:eth:DICE": "2.0.7", + "erc20:eth:DIVX": "2.0.7", + "erc20:eth:DKP": "2.0.7", + "erc20:eth:DLT": "2.0.7", + "erc20:eth:DMT": "2.0.7", + "erc20:eth:DNT": "2.0.7", + "erc20:eth:DNX": "2.0.7", + "erc20:eth:DPP": "2.0.7", + "erc20:eth:DRGN": "2.0.7", + "erc20:eth:DSC": "2.0.7", + "erc20:eth:DTH": "2.0.7", + "erc20:eth:DTR": "2.0.7", + "erc20:eth:DTT": "2.0.7", + "erc20:eth:DTX": "2.0.7", + "erc20:eth:DTx": "2.0.7", + "erc20:eth:Devcon2 Token": "2.0.7", + "erc20:eth:EAGLE": "2.0.7", + "erc20:eth:ECN": "2.0.7", + "erc20:eth:ECO2": "2.0.7", + "erc20:eth:EDC": "2.0.7", + "erc20:eth:EDG": "2.0.7", + "erc20:eth:EDO": "2.0.7", + "erc20:eth:EGT": "2.0.7", + "erc20:eth:EHT": "2.0.7", + "erc20:eth:ELF": "2.0.7", + "erc20:eth:ELIX": "2.0.7", + "erc20:eth:ELTCOIN": "2.0.7", + "erc20:eth:EMON": "2.0.7", + "erc20:eth:EMONT": "2.0.7", + "erc20:eth:EMT": "2.0.7", + "erc20:eth:EMV": "2.0.7", + "erc20:eth:ENC": "2.0.7", + "erc20:eth:ENG": "2.0.7", + "erc20:eth:ENJ": "2.0.7", + "erc20:eth:ENTRP": "2.0.7", + "erc20:eth:EOS": "2.0.7", + "erc20:eth:EPX": "2.0.7", + "erc20:eth:ESZ": "2.0.7", + "erc20:eth:ETBS": "2.0.7", + "erc20:eth:ETCH": "2.0.7", + "erc20:eth:ETHB": "2.0.7", + "erc20:eth:ETR": "2.0.7", + "erc20:eth:EURT": "2.0.7", + "erc20:eth:EVE": "2.0.7", + "erc20:eth:EVN": "2.0.7", + "erc20:eth:EVX": "2.0.7", + "erc20:eth:EXMR": "2.0.7", + "erc20:eth:FAM": "2.0.7", + "erc20:eth:FANX": "2.0.7", + "erc20:eth:FKX": "2.0.7", + "erc20:eth:FLIXX": "2.0.7", + "erc20:eth:FLP": "2.0.7", + "erc20:eth:FLR": "2.0.7", + "erc20:eth:FLUZ": "2.0.7", + "erc20:eth:FLX": "2.0.7", + "erc20:eth:FND": "2.0.7", + "erc20:eth:FRD": "2.0.7", + "erc20:eth:FTC": "2.0.7", + "erc20:eth:FTR": "2.0.7", + "erc20:eth:FTT": "2.0.7", + "erc20:eth:FUEL": "2.0.7", + "erc20:eth:FUN": "2.0.7", + "erc20:eth:FYN": "2.0.7", + "erc20:eth:GAM": "2.0.7", + "erc20:eth:GAVEL": "2.0.7", + "erc20:eth:GBT": "2.0.7", + "erc20:eth:GBX": "2.0.7", + "erc20:eth:GCP": "2.0.7", + "erc20:eth:GEE": "2.0.7", + "erc20:eth:GELD": "2.0.7", + "erc20:eth:GEN": "2.0.7", + "erc20:eth:GET": "2.0.7", + "erc20:eth:GIF": "2.0.7", + "erc20:eth:GIM": "2.0.7", + "erc20:eth:GMT": "2.0.7", + "erc20:eth:GNO": "2.0.7", + "erc20:eth:GNT": "2.0.7", + "erc20:eth:GOLDX": "2.0.7", + "erc20:eth:GRID": "2.0.7", + "erc20:eth:GROW": "2.0.7", + "erc20:eth:GTC": "2.0.7", + "erc20:eth:GTKT": "2.0.7", + "erc20:eth:GTO": "2.0.7", + "erc20:eth:GVT": "2.0.7", + "erc20:eth:GXC": "2.0.7", + "erc20:eth:GXVC": "2.0.7", + "erc20:eth:GZE": "2.0.7", + "erc20:eth:GZR": "2.0.7", + "erc20:eth:HAT": "2.0.7", + "erc20:eth:HAV": "2.0.7", + "erc20:eth:HDG": "2.0.7", + "erc20:eth:HGT": "2.0.7", + "erc20:eth:HIG": "2.0.7", + "erc20:eth:HKG": "2.0.7", + "erc20:eth:HKY": "2.0.7", + "erc20:eth:HMQ": "2.0.7", + "erc20:eth:HODL": "2.0.7", + "erc20:eth:HORSE": "2.0.7", + "erc20:eth:HST": "2.0.7", + "erc20:eth:HVN": "2.0.7", + "erc20:eth:HYDRO": "2.0.7", + "erc20:eth:Hdp": "2.0.7", + "erc20:eth:IAD": "2.0.7", + "erc20:eth:ICE": "2.0.7", + "erc20:eth:ICN": "2.0.7", + "erc20:eth:ICO": "2.0.7", + "erc20:eth:ICOS": "2.0.7", + "erc20:eth:ICX": "2.0.7", + "erc20:eth:IDEA": "2.0.7", + "erc20:eth:IFT": "2.0.7", + "erc20:eth:IIC": "2.0.7", + "erc20:eth:IKB": "2.0.7", + "erc20:eth:IMC": "2.0.7", + "erc20:eth:IMT": "2.0.7", + "erc20:eth:IND": "2.0.7", + "erc20:eth:INRM": "2.0.7", + "erc20:eth:INS": "2.0.7", + "erc20:eth:INSTAR": "2.0.7", + "erc20:eth:INXT": "2.0.7", + "erc20:eth:IOST": "2.0.7", + "erc20:eth:IOTX": "2.0.7", + "erc20:eth:IPL": "2.0.7", + "erc20:eth:IPSX": "2.0.7", + "erc20:eth:ITC": "2.0.7", + "erc20:eth:ITT": "2.0.7", + "erc20:eth:IXT": "2.0.7", + "erc20:eth:IoT": "2.0.7", + "erc20:eth:J8T": "2.0.7", + "erc20:eth:JET": "2.0.7", + "erc20:eth:JNT": "2.0.7", + "erc20:eth:JOY": "2.0.7", + "erc20:eth:JetCoins": "2.0.7", + "erc20:eth:KEE": "2.0.7", + "erc20:eth:KICK": "2.0.7", + "erc20:eth:KIN": "2.0.7", + "erc20:eth:KNC": "2.0.7", + "erc20:eth:KPR": "2.0.7", + "erc20:eth:KRL": "2.0.7", + "erc20:eth:KZN": "2.0.7", + "erc20:eth:LA": "2.0.7", + "erc20:eth:LALA": "2.0.7", + "erc20:eth:LDC": "2.0.7", + "erc20:eth:LEND": "2.0.7", + "erc20:eth:LFR": "2.0.7", + "erc20:eth:LGO": "2.0.7", + "erc20:eth:LGR": "2.0.7", + "erc20:eth:LIF": "2.0.7", + "erc20:eth:LIFE": "2.0.7", + "erc20:eth:LIVE": "2.0.7", + "erc20:eth:LNC": "2.0.7", + "erc20:eth:LNC-Linker Coin": "2.0.7", + "erc20:eth:LND": "2.0.7", + "erc20:eth:LOC": "2.0.7", + "erc20:eth:LOCI": "2.0.7", + "erc20:eth:LOCUS": "2.0.7", + "erc20:eth:LOK": "2.0.7", + "erc20:eth:LOOM": "2.0.7", + "erc20:eth:LPT": "2.0.7", + "erc20:eth:LRC": "2.0.7", + "erc20:eth:LUC": "2.0.7", + "erc20:eth:LUCK": "2.0.7", + "erc20:eth:LUM": "2.0.7", + "erc20:eth:LUN": "2.0.7", + "erc20:eth:LYS": "2.0.7", + "erc20:eth:M-ETH": "2.0.7", + "erc20:eth:MAD": "2.0.7", + "erc20:eth:MAN": "2.0.7", + "erc20:eth:MANA": "2.0.7", + "erc20:eth:MART": "2.0.7", + "erc20:eth:MBRS": "2.0.7", + "erc20:eth:MCAP": "2.0.7", + "erc20:eth:MCI": "2.0.7", + "erc20:eth:MCO": "2.0.7", + "erc20:eth:MDA": "2.0.7", + "erc20:eth:MESH": "2.0.7", + "erc20:eth:MEST": "2.0.7", + "erc20:eth:MFG": "2.0.7", + "erc20:eth:MGO": "2.0.7", + "erc20:eth:MKR": "2.0.7", + "erc20:eth:MKT": "2.0.7", + "erc20:eth:MLN": "2.0.7", + "erc20:eth:MNE": "2.0.7", + "erc20:eth:MNT": "2.0.7", + "erc20:eth:MNTP": "2.0.7", + "erc20:eth:MOD": "2.0.7", + "erc20:eth:MRL": "2.0.7", + "erc20:eth:MRP": "2.0.7", + "erc20:eth:MRV": "2.0.7", + "erc20:eth:MSP": "2.0.7", + "erc20:eth:MTC": "2.0.7", + "erc20:eth:MTH": "2.0.7", + "erc20:eth:MTL": "2.0.7", + "erc20:eth:MTN": "2.0.7", + "erc20:eth:MTR": "2.0.7", + "erc20:eth:MTRc": "2.0.7", + "erc20:eth:MTX": "2.0.7", + "erc20:eth:MUXE": "2.0.7", + "erc20:eth:MVP": "2.0.7", + "erc20:eth:MWAT": "2.0.7", + "erc20:eth:MYD": "2.0.7", + "erc20:eth:MYST": "2.0.7", + "erc20:eth:NAC": "2.0.7", + "erc20:eth:NANJ": "2.0.7", + "erc20:eth:NAVI": "2.0.7", + "erc20:eth:NBAI": "2.0.7", + "erc20:eth:NCT": "2.0.7", + "erc20:eth:NDC": "2.0.7", + "erc20:eth:NEC": "2.0.7", + "erc20:eth:NET": "2.0.7", + "erc20:eth:NEU": "2.0.7", + "erc20:eth:NGC": "2.0.7", + "erc20:eth:NIMFA": "2.0.7", + "erc20:eth:NMR": "2.0.7", + "erc20:eth:NOX": "2.0.7", + "erc20:eth:NPER": "2.0.7", + "erc20:eth:NPXS": "2.0.7", + "erc20:eth:NULS": "2.0.7", + "erc20:eth:NxC": "2.0.7", + "erc20:eth:OAK": "2.0.7", + "erc20:eth:OAX": "2.0.7", + "erc20:eth:OCC": "2.0.7", + "erc20:eth:OJX": "2.0.7", + "erc20:eth:OLD_MKR": "2.0.7", + "erc20:eth:OMG": "2.0.7", + "erc20:eth:ONEK": "2.0.7", + "erc20:eth:OPT": "2.0.7", + "erc20:eth:ORBS": "2.0.7", + "erc20:eth:OST": "2.0.7", + "erc20:eth:Ox Fina": "2.0.7", + "erc20:eth:PAL": "2.0.7", + "erc20:eth:PARETO": "2.0.7", + "erc20:eth:PAT": "2.0.7", + "erc20:eth:PATENTS": "2.0.7", + "erc20:eth:PATH": "2.0.7", + "erc20:eth:PAY": "2.0.7", + "erc20:eth:PBL": "2.0.7", + "erc20:eth:PBT": "2.0.7", + "erc20:eth:PCH": "2.0.7", + "erc20:eth:PCL": "2.0.7", + "erc20:eth:PCLOLD": "2.0.7", + "erc20:eth:PET": "2.0.7", + "erc20:eth:PETRO": "2.0.7", + "erc20:eth:PEXT": "2.0.7", + "erc20:eth:PIPL": "2.0.7", + "erc20:eth:PIX": "2.0.7", + "erc20:eth:PLASMA": "2.0.7", + "erc20:eth:PLBT": "2.0.7", + "erc20:eth:PLR": "2.0.7", + "erc20:eth:PLU": "2.0.7", + "erc20:eth:POE": "2.0.7", + "erc20:eth:POIN": "2.0.7", + "erc20:eth:POLY": "2.0.7", + "erc20:eth:POOL": "2.0.7", + "erc20:eth:POS": "2.0.7", + "erc20:eth:POWR": "2.0.7", + "erc20:eth:PPP": "2.0.7", + "erc20:eth:PPT": "2.0.7", + "erc20:eth:PRE": "2.0.7", + "erc20:eth:PRG": "2.0.7", + "erc20:eth:PRL": "2.0.7", + "erc20:eth:PRO": "2.0.7", + "erc20:eth:PRON": "2.0.7", + "erc20:eth:PRS": "2.0.7", + "erc20:eth:PRSP": "2.0.7", + "erc20:eth:PT": "2.0.7", + "erc20:eth:PTC": "2.0.7", + "erc20:eth:PTOY": "2.0.7", + "erc20:eth:PTWO": "2.0.7", + "erc20:eth:PUC": "2.0.7", + "erc20:eth:PXT": "2.0.7", + "erc20:eth:QASH": "2.0.7", + "erc20:eth:QAU": "2.0.7", + "erc20:eth:QBX": "2.0.7", + "erc20:eth:QRG": "2.0.7", + "erc20:eth:QRL": "2.0.7", + "erc20:eth:QSP": "2.0.7", + "erc20:eth:QTQ": "2.0.7", + "erc20:eth:QTUM": "2.0.7", + "erc20:eth:RAO": "2.0.7", + "erc20:eth:RBLX": "2.0.7", + "erc20:eth:RCN": "2.0.7", + "erc20:eth:RCT": "2.0.7", + "erc20:eth:REA": "2.0.7", + "erc20:eth:REBL": "2.0.7", + "erc20:eth:RED": "2.0.7", + "erc20:eth:REN": "2.0.7", + "erc20:eth:REQ": "2.0.7", + "erc20:eth:REX": "2.0.7", + "erc20:eth:RFR": "2.0.7", + "erc20:eth:RIPT": "2.0.7", + "erc20:eth:RLC": "2.0.7", + "erc20:eth:RLT": "2.0.7", + "erc20:eth:RLTY": "2.0.7", + "erc20:eth:RLX": "2.0.7", + "erc20:eth:RNDR": "2.0.7", + "erc20:eth:ROCK": "2.0.7", + "erc20:eth:ROK": "2.0.7", + "erc20:eth:ROUND": "2.0.7", + "erc20:eth:RPL": "2.0.7", + "erc20:eth:RTN": "2.0.7", + "erc20:eth:RVL": "2.0.7", + "erc20:eth:RVT": "2.0.7", + "erc20:eth:S-A-PAT": "2.0.7", + "erc20:eth:S-ETH": "2.0.7", + "erc20:eth:SALT": "2.0.7", + "erc20:eth:SAN": "2.0.7", + "erc20:eth:SCANDI": "2.0.7", + "erc20:eth:SCL": "2.0.7", + "erc20:eth:SENSE": "2.0.7", + "erc20:eth:SET": "2.0.7", + "erc20:eth:SEXY": "2.0.7", + "erc20:eth:SGEL": "2.0.7", + "erc20:eth:SHIT": "2.0.7", + "erc20:eth:SIFT": "2.0.7", + "erc20:eth:SIG": "2.0.7", + "erc20:eth:SKIN": "2.0.7", + "erc20:eth:SKO1": "2.0.7", + "erc20:eth:SKR": "2.0.7", + "erc20:eth:SLT": "2.0.7", + "erc20:eth:SMART": "2.0.7", + "erc20:eth:SNC": "2.0.7", + "erc20:eth:SND": "2.0.7", + "erc20:eth:SNG": "2.0.7", + "erc20:eth:SNGLS": "2.0.7", + "erc20:eth:SNIP": "2.0.7", + "erc20:eth:SNM": "2.0.7", + "erc20:eth:SNOV": "2.0.7", + "erc20:eth:SNT": "2.0.7", + "erc20:eth:SOL": "2.0.7", + "erc20:eth:SPANK": "2.0.7", + "erc20:eth:SPARC": "2.0.7", + "erc20:eth:SPARTA": "2.0.7", + "erc20:eth:SPF": "2.0.7", + "erc20:eth:SPN": "2.0.7", + "erc20:eth:SRN": "2.0.7", + "erc20:eth:SSH": "2.0.7", + "erc20:eth:STAC": "2.0.7", + "erc20:eth:STAR": "2.0.7", + "erc20:eth:STC": "2.0.7", + "erc20:eth:STK": "2.0.7", + "erc20:eth:STN": "2.0.7", + "erc20:eth:STORJ": "2.0.7", + "erc20:eth:STORM": "2.0.7", + "erc20:eth:STP": "2.0.7", + "erc20:eth:STQ": "2.0.7", + "erc20:eth:STRC": "2.0.7", + "erc20:eth:STX": "2.0.7", + "erc20:eth:SUB": "2.0.7", + "erc20:eth:SWM": "2.0.7", + "erc20:eth:SWT": "2.0.7", + "erc20:eth:SXDT": "2.0.7", + "erc20:eth:SXUT": "2.0.7", + "erc20:eth:SYN": "2.0.7", + "erc20:eth:SenSatorI": "2.0.7", + "erc20:eth:TAU": "2.0.7", + "erc20:eth:TBC2": "2.0.7", + "erc20:eth:TBT": "2.0.7", + "erc20:eth:TDH": "2.0.7", + "erc20:eth:TEL": "2.0.7", + "erc20:eth:TFL": "2.0.7", + "erc20:eth:THETA": "2.0.7", + "erc20:eth:THUG": "2.0.7", + "erc20:eth:TIME": "2.0.7", + "erc20:eth:TIO": "2.0.7", + "erc20:eth:TIX": "2.0.7", + "erc20:eth:TKN": "2.0.7", + "erc20:eth:TNT": "2.0.7", + "erc20:eth:TRC": "2.0.7", + "erc20:eth:TRCN": "2.0.7", + "erc20:eth:TRST": "2.0.7", + "erc20:eth:TRX": "2.0.7", + "erc20:eth:TWN": "2.0.7", + "erc20:eth:TWNKL": "2.0.7", + "erc20:eth:TaaS": "2.0.7", + "erc20:eth:UKG": "2.0.7", + "erc20:eth:UQC": "2.0.7", + "erc20:eth:USDM": "2.0.7", + "erc20:eth:USDT": "2.0.7", + "erc20:eth:UTK": "2.0.7", + "erc20:eth:UTN-P": "2.0.7", + "erc20:eth:UUU": "2.0.7", + "erc20:eth:Unicorn": "2.0.7", + "erc20:eth:VDOC": "2.0.7", + "erc20:eth:VEE": "2.0.7", + "erc20:eth:VENUS": "2.0.7", + "erc20:eth:VERI": "2.0.7", + "erc20:eth:VET": "2.0.7", + "erc20:eth:VIB": "2.0.7", + "erc20:eth:VIEW": "2.0.7", + "erc20:eth:VIT": "2.0.7", + "erc20:eth:VIU": "2.0.7", + "erc20:eth:VLD": "2.0.7", + "erc20:eth:VOC": "2.0.7", + "erc20:eth:VOISE": "2.0.7", + "erc20:eth:VRS": "2.0.7", + "erc20:eth:VSL": "2.0.7", + "erc20:eth:WAX": "2.0.7", + "erc20:eth:WBA": "2.0.7", + "erc20:eth:WCN": "2.0.7", + "erc20:eth:WCT": "2.0.7", + "erc20:eth:WETH": "2.0.7", + "erc20:eth:WHEN": "2.0.7", + "erc20:eth:WIC": "2.0.7", + "erc20:eth:WILD": "2.0.7", + "erc20:eth:WINGS": "2.0.7", + "erc20:eth:WORK": "2.0.7", + "erc20:eth:WPC": "2.0.7", + "erc20:eth:WPR": "2.0.7", + "erc20:eth:WRK": "2.0.7", + "erc20:eth:WTC": "2.0.7", + "erc20:eth:WYS": "2.0.7", + "erc20:eth:WYV": "2.0.7", + "erc20:eth:WaBi": "2.0.7", + "erc20:eth:WiC": "2.0.7", + "erc20:eth:X8X": "2.0.7", + "erc20:eth:XAUR": "2.0.7", + "erc20:eth:XBP": "2.0.7", + "erc20:eth:XCC": "2.0.7", + "erc20:eth:XFS": "2.0.7", + "erc20:eth:XGG": "2.0.7", + "erc20:eth:XGM": "2.0.7", + "erc20:eth:XGT": "2.0.7", + "erc20:eth:XID": "2.0.7", + "erc20:eth:XNK": "2.0.7", + "erc20:eth:XNN": "2.0.7", + "erc20:eth:XNT": "2.0.7", + "erc20:eth:XRL": "2.0.7", + "erc20:eth:XSC": "2.0.7", + "erc20:eth:YEED": "2.0.7", + "erc20:eth:YUPIE": "2.0.7", + "erc20:eth:ZAP": "2.0.7", + "erc20:eth:ZCS": "2.0.7", + "erc20:eth:ZIL": "2.0.7", + "erc20:eth:ZMN": "2.0.7", + "erc20:eth:ZRX": "2.0.7", + "erc20:eth:ZST": "2.0.7", + "erc20:eth:cV": "2.0.7", + "erc20:eth:eBCH": "2.0.7", + "erc20:eth:eBTC": "2.0.7", + "erc20:eth:eGAS": "2.0.7", + "erc20:eth:eUSD": "2.0.7", + "erc20:eth:eosDAC": "2.0.7", + "erc20:eth:nCash": "2.0.7", + "erc20:eth:nUSD": "2.0.7", + "erc20:eth:onG": "2.0.7", + "erc20:kov:Aeternity": "2.0.7", + "erc20:rin:AETH": "2.0.7", + "erc20:rin:BHNT": "2.0.7", + "erc20:rin:CTGA": "2.0.7", + "erc20:rin:PPD": "2.0.7", + "erc20:rin:WALL": "2.0.7", + "erc20:rop:ILSC": "2.0.7", + "erc20:ubq:BEER": "2.0.7", + "erc20:ubq:CEFS": "2.0.7", + "erc20:ubq:DOT": "2.0.7", + "erc20:ubq:QWARK": "2.0.7", + "erc20:ubq:RICKS": "2.0.7", + "eth:AKA": "2.0.7", + "eth:CLO": "2.0.7", + "eth:EGEM": "2.0.7", + "eth:ELLA": "2.0.7", + "eth:EOSC": "2.0.7", + "eth:ESN": "2.0.7", + "eth:ETC": "2.0.7", + "eth:ETH": "2.0.7", + "eth:ETSC": "2.0.7", + "eth:EXP": "2.0.7", + "eth:GO": "2.0.7", + "eth:RSK": "2.0.7", + "eth:UBQ": "2.0.7", + "eth:tETC": "2.0.7", + "eth:tKOV": "2.0.7", + "eth:tRIN": "2.0.7", + "eth:tROP": "2.0.7", + "eth:tRSK": "2.0.7", + "misc:ADA": "soon", + "misc:LSK": "2.0.7", + "misc:XLM": "soon", + "misc:XMR": "soon", + "misc:XRP": "soon", + "misc:XTZ": "soon", + "nem:BREEZE": "2.0.7", + "nem:DIM": "2.0.7", + "nem:DIMTOK": "2.0.7", + "nem:PAC:CHS": "2.0.7", + "nem:PAC:HRT": "2.0.7", + "nem:XEM": "2.0.7" }, - "misc:XRP": { - "trezor1": null, - "trezor2": "soon", - "connect": null, - "webwallet": null + "unsupported": { + "erc20:etc:PLAY": "duplicate key", + "erc20:eth:ATH": "duplicate key", + "erc20:eth:ATH (AIgatha Token)": "duplicate key", + "erc20:eth:BLX (Bullion)": "duplicate key", + "erc20:eth:BLX (Iconomi)": "duplicate key", + "erc20:eth:BTL (Battle)": "duplicate key", + "erc20:eth:BTL (Bitlle)": "duplicate key", + "erc20:eth:CAR": "duplicate key", + "erc20:eth:CAR (CarBlock)": "duplicate key", + "erc20:eth:CAT (BitClave)": "duplicate key", + "erc20:eth:CAT (Blockcat)": "duplicate key", + "erc20:eth:CCC (CryptoCrashCourse)": "duplicate key", + "erc20:eth:CCC (ICONOMI)": "duplicate key", + "erc20:eth:DEPO": "duplicate key", + "erc20:eth:DEPO (Depository Network)": "duplicate key", + "erc20:eth:DROP": "duplicate key", + "erc20:eth:DROP (dropil)": "duplicate key", + "erc20:eth:GUP": "duplicate key", + "erc20:eth:KC": "duplicate key", + "erc20:eth:LINK (Chainlink)": "duplicate key", + "erc20:eth:LINK Platform": "duplicate key", + "erc20:eth:MIT": "duplicate key", + "erc20:eth:MIT (Mychatcoin)": "duplicate key", + "erc20:eth:NONE": "duplicate key", + "erc20:eth:NXX": "duplicate key", + "erc20:eth:NXX OLD": "duplicate key", + "erc20:eth:PLAY": "duplicate key", + "erc20:eth:RDN": "duplicate key", + "erc20:kov:GUP": "duplicate key", + "erc20:rin:KC": "duplicate key", + "erc20:rin:NONE": "duplicate key", + "erc20:rin:RDN": "duplicate key", + "erc20:rop:NONE": "duplicate key" } + }, + "webwallet": { + "supported": { + "coin:BCH": true, + "coin:BTC": true, + "coin:BTCP": true, + "coin:BTG": true, + "coin:DASH": true, + "coin:DCR": true, + "coin:DGB": true, + "coin:DOGE": true, + "coin:FJC": true, + "coin:GRS": true, + "coin:LTC": true, + "coin:MONA": true, + "coin:TAZ": true, + "coin:TDCR": true, + "coin:TEST": true, + "coin:TLTC": true, + "coin:VIA": true, + "coin:VTC": true, + "coin:XZC": true, + "coin:ZEC": true, + "coin:tGRS": true + }, + "unsupported": {} + } } From 0d1846d68a142949dfa604320fec361b8e82ef1c Mon Sep 17 00:00:00 2001 From: matejcik Date: Wed, 15 Aug 2018 19:27:25 +0200 Subject: [PATCH 501/767] defs: unsupport recently added Eth chains --- defs/support.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/defs/support.json b/defs/support.json index eb3ab3b1b..0a82eef02 100644 --- a/defs/support.json +++ b/defs/support.json @@ -674,12 +674,12 @@ "erc20:ubq:DOT": "1.6.2", "erc20:ubq:QWARK": "1.6.2", "erc20:ubq:RICKS": "1.6.2", - "eth:AKA": "1.6.2", + "eth:AKA": "soon", "eth:CLO": "1.6.2", "eth:EGEM": "1.6.2", "eth:ELLA": "1.6.2", "eth:EOSC": "1.6.2", - "eth:ESN": "1.6.2", + "eth:ESN": "soon", "eth:ETC": "1.6.2", "eth:ETH": "1.6.2", "eth:ETSC": "1.6.2", @@ -1395,12 +1395,12 @@ "erc20:ubq:DOT": "2.0.7", "erc20:ubq:QWARK": "2.0.7", "erc20:ubq:RICKS": "2.0.7", - "eth:AKA": "2.0.7", + "eth:AKA": "soon", "eth:CLO": "2.0.7", "eth:EGEM": "2.0.7", "eth:ELLA": "2.0.7", "eth:EOSC": "2.0.7", - "eth:ESN": "2.0.7", + "eth:ESN": "soon", "eth:ETC": "2.0.7", "eth:ETH": "2.0.7", "eth:ETSC": "2.0.7", From 5fcbe5135ea735b99e6b46c17720ea9f3e559134 Mon Sep 17 00:00:00 2001 From: matejcik Date: Wed, 15 Aug 2018 19:28:00 +0200 Subject: [PATCH 502/767] defs: move Electrum URLs to override json --- defs/coins_details.override.json | 81 ++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) diff --git a/defs/coins_details.override.json b/defs/coins_details.override.json index 6a422491e..a7ca6f510 100644 --- a/defs/coins_details.override.json +++ b/defs/coins_details.override.json @@ -4,5 +4,86 @@ }, "erc20:eth:GNT": { "coinmarketcap_alias": "golem-network-tokens" + }, + "eth:ESN": { + "t1_support": "soon", + "t2_support": "soon" + }, + "eth:AKA": { + "t1_support": "soon", + "t2_support": "soon" + }, + "eth:ETHO": { + "t1_support": "soon", + "t2_support": "soon" + }, + "eth:MUSI": { + "t1_support": "soon", + "t2_support": "soon" + }, + "eth:PIRL": { + "t1_support": "soon", + "t2_support": "soon" + }, + "coin:BCH": { + "wallet": { + "Electron Cash": "https://electroncash.org" + } + }, + "coin:BTC": { + "wallet": { + "Electrum": "https://electrum.org" + } + }, + "coin:BTCP": { + "wallet": { + "BTCP Electrum": "https://github.com/BTCPrivate/electrum-btcp" + } + }, + "coin:BTG": { + "wallet": { + "ElectrumG": "https://github.com/BTCGPU/electrum" + } + }, + "coin:DASH": { + "wallet": { + "Dash Electrum": "https://electrum.dash.org" + } + }, + "coin:FJC": { + "wallet": { + "Electrum-FJC": "http://www.fujicoin.org/downloads.php" + } + }, + "coin:GRS": { + "wallet": { + "Electrum-GRS": "https://www.groestlcoin.org/groestlcoin-electrum-wallet/" + } + }, + "coin:LTC": { + "wallet": { + "Electrum-LTC": "https://electrum-ltc.org" + } + }, + "coin:MONA": { + "wallet": { + "Electrum-MONA": "https://electrum-mona.org" + } + }, + "coin:NMC": { + "wallet": { + "Electrum-NMC": "https://github.com/namecoin/electrum-nmc" + } + }, + "coin:VIA": { + "wallet": { + "Vialectrum": "https://vialectrum.org" + } + }, + "coin:XZC": { + "wallet": { + "Electrum-XZC": "https://github.com/zcoinofficial/electrum-xzc", + "Znode Tool": "https://github.com/yura-pakhuchiy/znode-tool" + } } } From 69acf51075163f227f9145fcc8a4c1c8face13c3 Mon Sep 17 00:00:00 2001 From: WO <35449969+wo01@users.noreply.github.com> Date: Thu, 16 Aug 2018 02:28:51 +0900 Subject: [PATCH 503/767] Enable Koto (#189) --- defs/support.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/defs/support.json b/defs/support.json index f91962118..0b65f69cd 100644 --- a/defs/support.json +++ b/defs/support.json @@ -15,6 +15,7 @@ "Fujicoin": "1.6.1", "Groestlcoin": "1.6.2", "Groestlcoin Testnet": "1.6.2", + "Koto": "1.6.3", "Litecoin": "1.5.2", "Litecoin Testnet": "1.6.2", "Monacoin": "1.6.0", @@ -39,6 +40,7 @@ "Fujicoin": "2.0.5", "Groestlcoin": "2.0.8", "Groestlcoin Testnet": "2.0.8", + "Koto": "2.0.8", "Litecoin": "2.0.5", "Litecoin Testnet": "2.0.7", "Monacoin": "2.0.5", @@ -76,6 +78,7 @@ "Fujicoin": true, "Groestlcoin": true, "Groestlcoin Testnet": true, + "Koto": true, "Litecoin": true, "Litecoin Testnet": true, "Monacoin": true, From 1fd1db24776d9bd0fe35bb49b36fc9accadbca24 Mon Sep 17 00:00:00 2001 From: matejcik Date: Wed, 15 Aug 2018 19:36:43 +0200 Subject: [PATCH 504/767] defs: add after-merge coins --- defs/misc/misc.json | 7 ++ defs/support-new.json | 231 ++++++++++++++++++++++++++++++++++++++++++ defs/support.json | 4 + 3 files changed, 242 insertions(+) create mode 100644 defs/support-new.json diff --git a/defs/misc/misc.json b/defs/misc/misc.json index 80cd13f0a..e9783df0a 100644 --- a/defs/misc/misc.json +++ b/defs/misc/misc.json @@ -43,5 +43,12 @@ "links": { "Homepage": "https://tezos.com" } + }, + { + "name": "Ontology", + "shortcut": "ONT", + "links": { + "Homepage": "https://ont.io" + } } ] diff --git a/defs/support-new.json b/defs/support-new.json new file mode 100644 index 000000000..1a81a0fe4 --- /dev/null +++ b/defs/support-new.json @@ -0,0 +1,231 @@ +{ + "coin:BCH": { + "trezor1": "1.6.2", + "trezor2": "2.0.7", + "connect": true, + "webwallet": true, + "other": { + "Electron Cash": "https://electroncash.org" + } + }, + "coin:BTC": { + "trezor1": "1.5.2", + "trezor2": "2.0.5", + "connect": true, + "webwallet": true, + "other": { + "Electrum": "https://electrum.org" + } + }, + "coin:BTCP": { + "trezor1": "1.6.2", + "trezor2": "2.0.7", + "connect": null, + "webwallet": true, + "other": { + "BTCP Electrum": "https://github.com/BTCPrivate/electrum-btcp" + } + }, + "coin:BTG": { + "trezor1": "1.6.2", + "trezor2": "2.0.7", + "connect": true, + "webwallet": true, + "other": { + "ElectrumG": "https://github.com/BTCGPU/electrum" + } + }, + "coin:DASH": { + "trezor1": "1.5.2", + "trezor2": "2.0.5", + "connect": true, + "webwallet": true, + "other": { + "Dash Electrum": "https://electrum.dash.org" + } + }, + "coin:DCR": { + "trezor1": "1.6.2", + "trezor2": null, + "connect": null, + "webwallet": true + }, + "coin:DGB": { + "trezor1": "1.6.0", + "trezor2": "2.0.5", + "connect": null, + "webwallet": true + }, + "coin:DOGE": { + "trezor1": "1.5.2", + "trezor2": "2.0.5", + "connect": true, + "webwallet": true + }, + "coin:FJC": { + "trezor1": "1.6.1", + "trezor2": "2.0.5", + "connect": null, + "webwallet": true, + "other": { + "Electrum-FJC": "http://www.fujicoin.org/downloads.php" + } + }, + "coin:GRS": { + "trezor1": "1.6.2", + "trezor2": "2.0.8", + "connect": null, + "webwallet": true, + "other": { + "Electrum-GRS": "https://www.groestlcoin.org/groestlcoin-electrum-wallet/" + } + }, + "coin:LTC": { + "trezor1": "1.5.2", + "trezor2": "2.0.5", + "connect": true, + "webwallet": true, + "other": { + "Electrum-LTC": "https://electrum-ltc.org" + } + }, + "coin:MONA": { + "trezor1": "1.6.0", + "trezor2": "2.0.5", + "connect": null, + "webwallet": true, + "other": { + "Electrum-MONA": "https://electrum-mona.org" + } + }, + "coin:NMC": { + "trezor1": "1.5.2", + "trezor2": "2.0.5", + "connect": null, + "webwallet": null, + "other": { + "Electrum-NMC": "https://github.com/namecoin/electrum-nmc" + } + }, + "coin:TAZ": { + "trezor1": "1.6.2", + "trezor2": "2.0.7", + "connect": null, + "webwallet": true + }, + "coin:TBCH": { + "trezor1": "1.6.2", + "trezor2": "2.0.7", + "connect": null, + "webwallet": null + }, + "coin:TDCR": { + "trezor1": "1.6.2", + "trezor2": null, + "connect": null, + "webwallet": true + }, + "coin:TEST": { + "trezor1": "1.5.2", + "trezor2": "2.0.5", + "connect": true, + "webwallet": true + }, + "coin:TLTC": { + "trezor1": "1.6.2", + "trezor2": "2.0.7", + "connect": null, + "webwallet": true + }, + "coin:VIA": { + "trezor1": "1.6.2", + "trezor2": "2.0.7", + "connect": null, + "webwallet": true, + "other": { + "Vialectrum": "https://vialectrum.org" + } + }, + "coin:VTC": { + "trezor1": "1.6.1", + "trezor2": "2.0.5", + "connect": true, + "webwallet": true + }, + "coin:XZC": { + "trezor1": "1.6.2", + "trezor2": "2.0.7", + "connect": null, + "webwallet": true, + "other": { + "Electrum-XZC": "https://github.com/zcoinofficial/electrum-xzc", + "Znode Tool": "https://github.com/yura-pakhuchiy/znode-tool" + } + }, + "coin:ZEC": { + "trezor1": "1.6.2", + "trezor2": "2.0.7", + "connect": true, + "webwallet": true + }, + "coin:ZEN": { + "trezor1": null, + "trezor2": "2.0.8", + "connect": null, + "webwallet": null + }, + "coin:tDASH": { + "trezor1": "1.6.2", + "trezor2": null, + "connect": null, + "webwallet": null + }, + "coin:tGRS": { + "trezor1": "1.6.2", + "trezor2": "2.0.8", + "connect": null, + "webwallet": true + }, + "coin:tXZC": { + "trezor1": "1.6.2", + "trezor2": "2.0.7", + "connect": null, + "webwallet": null + }, + "misc:LSK": { + "trezor1": null, + "trezor2": "2.0.7", + "connect": null, + "webwallet": null + }, + "misc:XLM": { + "trezor1": "soon", + "trezor2": "soon", + "connect": null, + "webwallet": null + }, + "misc:XTZ": { + "trezor1": null, + "trezor2": "soon", + "connect": null, + "webwallet": null + }, + "misc:ADA": { + "trezor1": null, + "trezor2": "soon", + "connect": null, + "webwallet": null + }, + "misc:XMR": { + "trezor1": null, + "trezor2": "soon", + "connect": null, + "webwallet": null + }, + "misc:XRP": { + "trezor1": null, + "trezor2": "soon", + "connect": null, + "webwallet": null + } +} diff --git a/defs/support.json b/defs/support.json index 0a82eef02..0c513fc07 100644 --- a/defs/support.json +++ b/defs/support.json @@ -682,9 +682,11 @@ "eth:ESN": "soon", "eth:ETC": "1.6.2", "eth:ETH": "1.6.2", + "eth:ETHO": "soon", "eth:ETSC": "1.6.2", "eth:EXP": "1.6.2", "eth:GO": "1.6.2", + "eth:PIRL": "soon", "eth:RSK": "1.6.2", "eth:UBQ": "1.6.2", "eth:tETC": "1.6.2", @@ -1403,9 +1405,11 @@ "eth:ESN": "soon", "eth:ETC": "2.0.7", "eth:ETH": "2.0.7", + "eth:ETHO": "soon", "eth:ETSC": "2.0.7", "eth:EXP": "2.0.7", "eth:GO": "2.0.7", + "eth:PIRL": "soon", "eth:RSK": "2.0.7", "eth:UBQ": "2.0.7", "eth:tETC": "2.0.7", From 564310d34d799f88f391573fd43eeea3d95a43c3 Mon Sep 17 00:00:00 2001 From: Tomas Susanka Date: Mon, 20 Aug 2018 15:49:52 +0200 Subject: [PATCH 505/767] protob: cardano's GetPublicKey has show_display arg updates https://github.com/trezor/trezor-core/issues/324 --- protob/messages-cardano.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/protob/messages-cardano.proto b/protob/messages-cardano.proto index 8962210f4..8aa2d0b89 100644 --- a/protob/messages-cardano.proto +++ b/protob/messages-cardano.proto @@ -34,6 +34,7 @@ message CardanoAddress { */ message CardanoGetPublicKey { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional bool show_display = 2; // optionally show on display before sending the result } /** From debd6871d672fc2b4b04c4e1390ac6ad209c6093 Mon Sep 17 00:00:00 2001 From: Tomas Susanka Date: Tue, 21 Aug 2018 11:57:08 +0200 Subject: [PATCH 506/767] cardano: SignedTransaction -> SignedTx to match other coins --- protob/messages-cardano.proto | 6 +++--- protob/messages.proto | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/protob/messages-cardano.proto b/protob/messages-cardano.proto index 8aa2d0b89..42b0e19f5 100644 --- a/protob/messages-cardano.proto +++ b/protob/messages-cardano.proto @@ -82,7 +82,7 @@ message CardanoVerifyMessage { /** * Request: Ask device to sign Cardano transaction * @start - * @next CardanoSignedTransaction + * @next CardanoSignedTx * @next CardanoTxRequest * @next Failure */ @@ -122,7 +122,7 @@ message CardanoTxRequest { /** * Request: Reported transaction data - * @next CardanoSignedTransaction + * @next CardanoSignedTx * @next CardanoTxRequest */ message CardanoTxAck { @@ -133,7 +133,7 @@ message CardanoTxAck { * Response: Serialised signed cardano transaction * @end */ -message CardanoSignedTransaction { +message CardanoSignedTx { optional bytes tx_hash = 1; // hash of the signed transaction optional bytes tx_body = 2; // serialised body of the signed transaction } diff --git a/protob/messages.proto b/protob/messages.proto index d93efb02c..5edcaeefb 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -172,7 +172,7 @@ enum MessageType { MessageType_CardanoGetAddress = 307 [(wire_in) = true]; MessageType_CardanoAddress = 308 [(wire_out) = true]; MessageType_CardanoTxAck = 309 [(wire_in) = true]; - MessageType_CardanoSignedTransaction = 310 [(wire_out) = true]; + MessageType_CardanoSignedTx = 310 [(wire_out) = true]; // Ontology MessageType_OntologyGetAddress = 350 [(wire_in) = true]; From 13747474c10087cc3780320649ae4ca2a6227b60 Mon Sep 17 00:00:00 2001 From: Tomas Susanka Date: Tue, 21 Aug 2018 14:11:56 +0200 Subject: [PATCH 507/767] cardano: SignTransaction -> SignTx to match other coins --- protob/messages-cardano.proto | 2 +- protob/messages.proto | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/protob/messages-cardano.proto b/protob/messages-cardano.proto index 42b0e19f5..11510d0c5 100644 --- a/protob/messages-cardano.proto +++ b/protob/messages-cardano.proto @@ -86,7 +86,7 @@ message CardanoVerifyMessage { * @next CardanoTxRequest * @next Failure */ -message CardanoSignTransaction { +message CardanoSignTx { repeated CardanoTxInputType inputs = 1; // inputs to be used in transaction repeated CardanoTxOutputType outputs = 2; // outputs to be used in transaction optional uint32 transactions_count = 3; // transactions count diff --git a/protob/messages.proto b/protob/messages.proto index 5edcaeefb..e98edfaa3 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -165,7 +165,7 @@ enum MessageType { MessageType_CardanoSignMessage = 300 [(wire_in) = true]; MessageType_CardanoMessageSignature = 301 [(wire_out) = true]; MessageType_CardanoVerifyMessage = 302 [(wire_in) = true]; - MessageType_CardanoSignTransaction = 303 [(wire_in) = true]; + MessageType_CardanoSignTx = 303 [(wire_in) = true]; MessageType_CardanoTxRequest = 304 [(wire_out) = true]; MessageType_CardanoGetPublicKey = 305 [(wire_in) = true]; MessageType_CardanoPublicKey = 306 [(wire_out) = true]; From 3167bd63e389f1c27fe6ae07f1b87b5fbb889a61 Mon Sep 17 00:00:00 2001 From: Tomas Susanka Date: Tue, 21 Aug 2018 14:29:40 +0200 Subject: [PATCH 508/767] stellar: get public key removed --- protob/messages-stellar.proto | 18 ------------------ protob/messages.proto | 2 -- 2 files changed, 20 deletions(-) diff --git a/protob/messages-stellar.proto b/protob/messages-stellar.proto index b23e25ab0..c8229c7c0 100644 --- a/protob/messages-stellar.proto +++ b/protob/messages-stellar.proto @@ -33,24 +33,6 @@ message StellarAddress { optional string address = 1; // Address in Stellar format (base32 of a pubkey with checksum) } -/** - * Request: Public key at the specified index - * @start - * @next StellarPublicKey - */ -message StellarGetPublicKey { - repeated uint32 address_n = 1; // BIP-32 path. For compatibility with other wallets, must be m/44'/148'/index' - optional bool show_display = 2; // optionally show on display before sending the result -} - -/** - * Response: Public key for the given index - * @end - */ -message StellarPublicKey { - optional bytes public_key = 1; // Raw bytes of the public key (no version or checksum) -} - /** * Request: ask device to sign Stellar transaction * @start diff --git a/protob/messages.proto b/protob/messages.proto index e98edfaa3..c331b114b 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -141,8 +141,6 @@ enum MessageType { MessageType_TezosPublicKey = 155 [(wire_out) = true]; // Stellar - MessageType_StellarGetPublicKey = 200 [(wire_in) = true]; - MessageType_StellarPublicKey = 201 [(wire_out) = true]; MessageType_StellarSignTx = 202 [(wire_in) = true]; MessageType_StellarTxOpRequest = 203 [(wire_out) = true]; MessageType_StellarGetAddress = 207 [(wire_in) = true]; From 2c564a74f44f148702583342d91b83b963654110 Mon Sep 17 00:00:00 2001 From: matejcik Date: Wed, 22 Aug 2018 15:30:01 +0200 Subject: [PATCH 509/767] support: up-to-date support info --- defs/support.json | 45 ++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 40 insertions(+), 5 deletions(-) diff --git a/defs/support.json b/defs/support.json index 0c513fc07..ff2833e90 100644 --- a/defs/support.json +++ b/defs/support.json @@ -22,23 +22,33 @@ "coin:DASH": "1.5.2", "coin:DCR": "1.6.2", "coin:DGB": "1.6.0", + "coin:DNR": "soon", "coin:DOGE": "1.5.2", "coin:FJC": "1.6.1", + "coin:FLASH": "soon", + "coin:FTC": "soon", "coin:GRS": "1.6.2", + "coin:KOTO": "soon", "coin:LTC": "1.5.2", "coin:MONA": "1.6.0", + "coin:MUE": "soon", "coin:NMC": "1.5.2", + "coin:PTC": "soon", + "coin:SMART": "soon", "coin:TAZ": "1.6.2", "coin:TBCH": "1.6.2", + "coin:TBTG": "soon", "coin:TDCR": "1.6.2", "coin:TEST": "1.5.2", "coin:TLTC": "1.6.2", "coin:VIA": "1.6.2", "coin:VTC": "1.6.1", + "coin:XMY": "soon", "coin:XZC": "1.6.2", "coin:ZEC": "1.6.2", "coin:tDASH": "1.6.2", "coin:tGRS": "1.6.2", + "coin:tSMART": "soon", "coin:tXZC": "1.6.2", "erc20:ella:MINING": "1.6.2", "erc20:etc:BEC": "1.6.2", @@ -367,7 +377,6 @@ "erc20:eth:LIFE": "1.6.2", "erc20:eth:LIVE": "1.6.2", "erc20:eth:LNC": "1.6.2", - "erc20:eth:LNC-Linker Coin": "1.6.2", "erc20:eth:LND": "1.6.2", "erc20:eth:LOC": "1.6.2", "erc20:eth:LOCI": "1.6.2", @@ -601,9 +610,9 @@ "erc20:eth:Unicorn": "1.6.2", "erc20:eth:VDOC": "1.6.2", "erc20:eth:VEE": "1.6.2", + "erc20:eth:VEN": "1.6.2", "erc20:eth:VENUS": "1.6.2", "erc20:eth:VERI": "1.6.2", - "erc20:eth:VET": "1.6.2", "erc20:eth:VIB": "1.6.2", "erc20:eth:VIEW": "1.6.2", "erc20:eth:VIT": "1.6.2", @@ -686,6 +695,7 @@ "eth:ETSC": "1.6.2", "eth:EXP": "1.6.2", "eth:GO": "1.6.2", + "eth:MUSIC": "soon", "eth:PIRL": "soon", "eth:RSK": "1.6.2", "eth:UBQ": "1.6.2", @@ -703,6 +713,10 @@ "nem:XEM": "1.6.2" }, "unsupported": { + "coin:BTX": "address_type collides with Bitcoin", + "coin:CRW": "address_type collides with Bitcoin", + "coin:TRC": "address_type collides with Bitcoin", + "coin:ZEN": "not implemented on T1", "erc20:etc:PLAY": "duplicate key", "erc20:eth:ATH": "duplicate key", "erc20:eth:ATH (AIgatha Token)": "duplicate key", @@ -735,7 +749,12 @@ "erc20:rin:KC": "duplicate key", "erc20:rin:NONE": "duplicate key", "erc20:rin:RDN": "duplicate key", - "erc20:rop:NONE": "duplicate key" + "erc20:rop:NONE": "duplicate key", + "misc:ADA": "not implemented on T1", + "misc:LSK": "not implemented on T1", + "misc:XMR": "not implemented on T1", + "misc:XRP": "not implemented on T1", + "misc:XTZ": "not implemented on T1" } }, "trezor2": { @@ -746,22 +765,33 @@ "coin:BTG": "2.0.7", "coin:DASH": "2.0.5", "coin:DGB": "2.0.5", + "coin:DNR": "soon", "coin:DOGE": "2.0.5", "coin:FJC": "2.0.5", + "coin:FLASH": "soon", + "coin:FTC": "soon", "coin:GRS": "2.0.8", + "coin:KOTO": "soon", "coin:LTC": "2.0.5", "coin:MONA": "2.0.5", + "coin:MUE": "soon", "coin:NMC": "2.0.5", + "coin:PTC": "soon", + "coin:SMART": "soon", "coin:TAZ": "2.0.7", "coin:TBCH": "2.0.7", + "coin:TBTG": "soon", "coin:TEST": "2.0.5", "coin:TLTC": "2.0.7", "coin:VIA": "2.0.7", "coin:VTC": "2.0.5", + "coin:XMY": "soon", "coin:XZC": "2.0.7", "coin:ZEC": "2.0.7", "coin:ZEN": "2.0.8", + "coin:tDASH": "soon", "coin:tGRS": "2.0.8", + "coin:tSMART": "soon", "coin:tXZC": "2.0.7", "erc20:ella:MINING": "2.0.7", "erc20:etc:BEC": "2.0.7", @@ -1090,7 +1120,6 @@ "erc20:eth:LIFE": "2.0.7", "erc20:eth:LIVE": "2.0.7", "erc20:eth:LNC": "2.0.7", - "erc20:eth:LNC-Linker Coin": "2.0.7", "erc20:eth:LND": "2.0.7", "erc20:eth:LOC": "2.0.7", "erc20:eth:LOCI": "2.0.7", @@ -1324,9 +1353,9 @@ "erc20:eth:Unicorn": "2.0.7", "erc20:eth:VDOC": "2.0.7", "erc20:eth:VEE": "2.0.7", + "erc20:eth:VEN": "2.0.7", "erc20:eth:VENUS": "2.0.7", "erc20:eth:VERI": "2.0.7", - "erc20:eth:VET": "2.0.7", "erc20:eth:VIB": "2.0.7", "erc20:eth:VIEW": "2.0.7", "erc20:eth:VIT": "2.0.7", @@ -1409,6 +1438,7 @@ "eth:ETSC": "2.0.7", "eth:EXP": "2.0.7", "eth:GO": "2.0.7", + "eth:MUSIC": "soon", "eth:PIRL": "soon", "eth:RSK": "2.0.7", "eth:UBQ": "2.0.7", @@ -1431,6 +1461,11 @@ "nem:XEM": "2.0.7" }, "unsupported": { + "coin:BTX": "address_type collides with Bitcoin", + "coin:CRW": "address_type collides with Bitcoin", + "coin:DCR": "not implemented on Trezor T", + "coin:TDCR": "not implemented on Trezor T", + "coin:TRC": "address_type collides with Bitcoin", "erc20:etc:PLAY": "duplicate key", "erc20:eth:ATH": "duplicate key", "erc20:eth:ATH (AIgatha Token)": "duplicate key", From a00bac9584b5d8ae69a17bbe8fbd05ae3fd5354d Mon Sep 17 00:00:00 2001 From: matejcik Date: Wed, 22 Aug 2018 15:33:26 +0200 Subject: [PATCH 510/767] support: drop "new-style" support data (superseded by original-style) --- defs/support-new.json | 231 ------------------------------------------ 1 file changed, 231 deletions(-) delete mode 100644 defs/support-new.json diff --git a/defs/support-new.json b/defs/support-new.json deleted file mode 100644 index 1a81a0fe4..000000000 --- a/defs/support-new.json +++ /dev/null @@ -1,231 +0,0 @@ -{ - "coin:BCH": { - "trezor1": "1.6.2", - "trezor2": "2.0.7", - "connect": true, - "webwallet": true, - "other": { - "Electron Cash": "https://electroncash.org" - } - }, - "coin:BTC": { - "trezor1": "1.5.2", - "trezor2": "2.0.5", - "connect": true, - "webwallet": true, - "other": { - "Electrum": "https://electrum.org" - } - }, - "coin:BTCP": { - "trezor1": "1.6.2", - "trezor2": "2.0.7", - "connect": null, - "webwallet": true, - "other": { - "BTCP Electrum": "https://github.com/BTCPrivate/electrum-btcp" - } - }, - "coin:BTG": { - "trezor1": "1.6.2", - "trezor2": "2.0.7", - "connect": true, - "webwallet": true, - "other": { - "ElectrumG": "https://github.com/BTCGPU/electrum" - } - }, - "coin:DASH": { - "trezor1": "1.5.2", - "trezor2": "2.0.5", - "connect": true, - "webwallet": true, - "other": { - "Dash Electrum": "https://electrum.dash.org" - } - }, - "coin:DCR": { - "trezor1": "1.6.2", - "trezor2": null, - "connect": null, - "webwallet": true - }, - "coin:DGB": { - "trezor1": "1.6.0", - "trezor2": "2.0.5", - "connect": null, - "webwallet": true - }, - "coin:DOGE": { - "trezor1": "1.5.2", - "trezor2": "2.0.5", - "connect": true, - "webwallet": true - }, - "coin:FJC": { - "trezor1": "1.6.1", - "trezor2": "2.0.5", - "connect": null, - "webwallet": true, - "other": { - "Electrum-FJC": "http://www.fujicoin.org/downloads.php" - } - }, - "coin:GRS": { - "trezor1": "1.6.2", - "trezor2": "2.0.8", - "connect": null, - "webwallet": true, - "other": { - "Electrum-GRS": "https://www.groestlcoin.org/groestlcoin-electrum-wallet/" - } - }, - "coin:LTC": { - "trezor1": "1.5.2", - "trezor2": "2.0.5", - "connect": true, - "webwallet": true, - "other": { - "Electrum-LTC": "https://electrum-ltc.org" - } - }, - "coin:MONA": { - "trezor1": "1.6.0", - "trezor2": "2.0.5", - "connect": null, - "webwallet": true, - "other": { - "Electrum-MONA": "https://electrum-mona.org" - } - }, - "coin:NMC": { - "trezor1": "1.5.2", - "trezor2": "2.0.5", - "connect": null, - "webwallet": null, - "other": { - "Electrum-NMC": "https://github.com/namecoin/electrum-nmc" - } - }, - "coin:TAZ": { - "trezor1": "1.6.2", - "trezor2": "2.0.7", - "connect": null, - "webwallet": true - }, - "coin:TBCH": { - "trezor1": "1.6.2", - "trezor2": "2.0.7", - "connect": null, - "webwallet": null - }, - "coin:TDCR": { - "trezor1": "1.6.2", - "trezor2": null, - "connect": null, - "webwallet": true - }, - "coin:TEST": { - "trezor1": "1.5.2", - "trezor2": "2.0.5", - "connect": true, - "webwallet": true - }, - "coin:TLTC": { - "trezor1": "1.6.2", - "trezor2": "2.0.7", - "connect": null, - "webwallet": true - }, - "coin:VIA": { - "trezor1": "1.6.2", - "trezor2": "2.0.7", - "connect": null, - "webwallet": true, - "other": { - "Vialectrum": "https://vialectrum.org" - } - }, - "coin:VTC": { - "trezor1": "1.6.1", - "trezor2": "2.0.5", - "connect": true, - "webwallet": true - }, - "coin:XZC": { - "trezor1": "1.6.2", - "trezor2": "2.0.7", - "connect": null, - "webwallet": true, - "other": { - "Electrum-XZC": "https://github.com/zcoinofficial/electrum-xzc", - "Znode Tool": "https://github.com/yura-pakhuchiy/znode-tool" - } - }, - "coin:ZEC": { - "trezor1": "1.6.2", - "trezor2": "2.0.7", - "connect": true, - "webwallet": true - }, - "coin:ZEN": { - "trezor1": null, - "trezor2": "2.0.8", - "connect": null, - "webwallet": null - }, - "coin:tDASH": { - "trezor1": "1.6.2", - "trezor2": null, - "connect": null, - "webwallet": null - }, - "coin:tGRS": { - "trezor1": "1.6.2", - "trezor2": "2.0.8", - "connect": null, - "webwallet": true - }, - "coin:tXZC": { - "trezor1": "1.6.2", - "trezor2": "2.0.7", - "connect": null, - "webwallet": null - }, - "misc:LSK": { - "trezor1": null, - "trezor2": "2.0.7", - "connect": null, - "webwallet": null - }, - "misc:XLM": { - "trezor1": "soon", - "trezor2": "soon", - "connect": null, - "webwallet": null - }, - "misc:XTZ": { - "trezor1": null, - "trezor2": "soon", - "connect": null, - "webwallet": null - }, - "misc:ADA": { - "trezor1": null, - "trezor2": "soon", - "connect": null, - "webwallet": null - }, - "misc:XMR": { - "trezor1": null, - "trezor2": "soon", - "connect": null, - "webwallet": null - }, - "misc:XRP": { - "trezor1": null, - "trezor2": "soon", - "connect": null, - "webwallet": null - } -} From 11c0404bfa66d949e52b1cfb9c9fbca4ecdd9480 Mon Sep 17 00:00:00 2001 From: matejcik Date: Thu, 23 Aug 2018 12:52:15 +0200 Subject: [PATCH 511/767] coins_details: refresh market caps, rename VET->VEN --- defs/coins_details.json | 248 +++++++++++++++++++++++----------------- 1 file changed, 141 insertions(+), 107 deletions(-) diff --git a/defs/coins_details.json b/defs/coins_details.json index 76494cbe7..012f78595 100644 --- a/defs/coins_details.json +++ b/defs/coins_details.json @@ -4,7 +4,7 @@ "links": { "Homepage": "https://www.cardano.org" }, - "marketcap_usd": 3324265276, + "marketcap_usd": 2331894624, "name": "Cardano", "shortcut": "ADA", "t1_enabled": "no", @@ -30,7 +30,7 @@ "links": { "Homepage": "https://ellaism.org" }, - "marketcap_usd": 614076, + "marketcap_usd": 355162, "name": "Ellaism", "shortcut": "ELLA", "t1_enabled": "yes", @@ -60,7 +60,7 @@ "links": { "Homepage": "https://ethereumclassic.github.io" }, - "marketcap_usd": 1709000951, + "marketcap_usd": 1271054141, "name": "Ethereum Classic", "shortcut": "ETC", "t1_enabled": "yes", @@ -75,7 +75,7 @@ "links": { "Homepage": "https://www.ethereum.org" }, - "marketcap_usd": 44090870783, + "marketcap_usd": 27689390191, "name": "Ethereum", "shortcut": "ETH", "t1_enabled": "yes", @@ -105,7 +105,7 @@ "links": { "Homepage": "https://www.expanse.tech" }, - "marketcap_usd": 8177837, + "marketcap_usd": 4764280, "name": "Expanse", "shortcut": "EXP", "t1_enabled": "yes", @@ -146,7 +146,7 @@ "links": { "Homepage": "https://ubiqsmart.com" }, - "marketcap_usd": 38000001, + "marketcap_usd": 22429900, "name": "Ubiq", "shortcut": "UBQ", "t1_enabled": "yes", @@ -196,7 +196,7 @@ "links": { "Homepage": "https://tezos.com" }, - "marketcap_usd": 1247867538, + "marketcap_usd": 782851566, "name": "Tezos", "shortcut": "XTZ", "t1_enabled": "no", @@ -208,7 +208,7 @@ "Github": "https://github.com/Bitcoin-ABC/bitcoin-abc", "Homepage": "https://www.bitcoincash.org/" }, - "marketcap_usd": 12012942923, + "marketcap_usd": 9007945692, "name": "Bitcoin Cash", "shortcut": "BCH", "t1_enabled": "yes", @@ -224,7 +224,7 @@ "Github": "https://github.com/bitcoin/bitcoin", "Homepage": "https://bitcoin.org" }, - "marketcap_usd": 107327263391, + "marketcap_usd": 110981096268, "name": "Bitcoin", "shortcut": "BTC", "t1_enabled": "yes", @@ -240,7 +240,7 @@ "Github": "https://github.com/BTCPrivate/BitcoinPrivate", "Homepage": "https://btcprivate.org" }, - "marketcap_usd": 164328852, + "marketcap_usd": 77677196, "name": "Bitcoin Private", "shortcut": "BTCP", "t1_enabled": "yes", @@ -252,7 +252,7 @@ "Github": "https://github.com/BTCGPU/BTCGPU", "Homepage": "https://bitcoingold.org" }, - "marketcap_usd": 513246492, + "marketcap_usd": 313484413, "name": "Bitcoin Gold", "shortcut": "BTG", "t1_enabled": "yes", @@ -267,7 +267,7 @@ "Github": "https://github.com/LIMXTEC/BitCore", "Homepage": "https://bitcore.cc" }, - "marketcap_usd": 24867996, + "marketcap_usd": 19852774, "name": "Bitcore", "shortcut": "BTX", "t1_enabled": "no", @@ -279,7 +279,7 @@ "Github": "https://github.com/Crowndev/crowncoin", "Homepage": "https://crown.tech" }, - "marketcap_usd": 8021165, + "marketcap_usd": 5254661, "name": "Crown", "shortcut": "CRW", "t1_enabled": "no", @@ -291,7 +291,7 @@ "Github": "https://github.com/dashpay/dash", "Homepage": "https://www.dash.org" }, - "marketcap_usd": 1848122293, + "marketcap_usd": 1144270654, "name": "Dash", "shortcut": "DASH", "t1_enabled": "yes", @@ -306,7 +306,7 @@ "Github": "https://github.com/decred/dcrd", "Homepage": "https://www.decred.org" }, - "marketcap_usd": 438153911, + "marketcap_usd": 305325939, "name": "Decred", "shortcut": "DCR", "t1_enabled": "yes", @@ -318,7 +318,7 @@ "Github": "https://github.com/digibyte/digibyte", "Homepage": "https://www.digibyte.co" }, - "marketcap_usd": 410706122, + "marketcap_usd": 252279457, "name": "DigiByte", "shortcut": "DGB", "t1_enabled": "yes", @@ -341,7 +341,7 @@ "Github": "https://github.com/dogecoin/dogecoin", "Homepage": "https://dogecoin.com" }, - "marketcap_usd": 267928623, + "marketcap_usd": 270040625, "name": "Dogecoin", "shortcut": "DOGE", "t1_enabled": "yes", @@ -356,7 +356,7 @@ "Github": "https://github.com/fujicoin/fujicoin", "Homepage": "https://www.fujicoin.org" }, - "marketcap_usd": 409832, + "marketcap_usd": 530745, "name": "Fujicoin", "shortcut": "FJC", "t1_enabled": "yes", @@ -382,7 +382,7 @@ "Github": "https://github.com/FeatherCoin/Feathercoin", "Homepage": "https://feathercoin.com" }, - "marketcap_usd": 15883445, + "marketcap_usd": 10650928, "name": "Feathercoin", "shortcut": "FTC", "t1_enabled": "no", @@ -394,7 +394,7 @@ "Github": "https://github.com/Groestlcoin/groestlcoin", "Homepage": "https://www.groestlcoin.org" }, - "marketcap_usd": 38897934, + "marketcap_usd": 41154108, "name": "Groestlcoin", "shortcut": "GRS", "t1_enabled": "yes", @@ -411,8 +411,8 @@ }, "name": "Koto", "shortcut": "KOTO", - "t1_enabled": "no", - "t2_enabled": "no", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "coin" }, "coin:LTC": { @@ -420,7 +420,7 @@ "Github": "https://github.com/litecoin-project/litecoin", "Homepage": "https://litecoin.org" }, - "marketcap_usd": 4459203516, + "marketcap_usd": 3208674425, "name": "Litecoin", "shortcut": "LTC", "t1_enabled": "yes", @@ -436,7 +436,7 @@ "Github": "https://github.com/monacoinproject/monacoin", "Homepage": "https://monacoin.org" }, - "marketcap_usd": 126711391, + "marketcap_usd": 96748199, "name": "Monacoin", "shortcut": "MONA", "t1_enabled": "yes", @@ -462,7 +462,7 @@ "Github": "https://github.com/namecoin/namecoin-core", "Homepage": "https://namecoin.org" }, - "marketcap_usd": 18991978, + "marketcap_usd": 22080408, "name": "Namecoin", "shortcut": "NMC", "t1_enabled": "yes", @@ -477,13 +477,25 @@ "Github": "https://github.com/FundacionPesetacoin/PesetacoinCore", "Homepage": "http://pesetacoin.info" }, - "marketcap_usd": 2725156, + "marketcap_usd": 2115005, "name": "Pesetacoin", "shortcut": "PTC", "t1_enabled": "no", "t2_enabled": "no", "type": "coin" }, + "coin:SMART": { + "links": { + "Github": "https://github.com/SmartCash/Core-Smart", + "Homepage": "https://smarcash.cc" + }, + "marketcap_usd": 49447266, + "name": "SmartCash", + "shortcut": "SMART", + "t1_enabled": "no", + "t2_enabled": "no", + "type": "coin" + }, "coin:TAZ": { "hidden": 1, "links": { @@ -510,6 +522,17 @@ "t2_enabled": "yes", "type": "coin" }, + "coin:TBTG": { + "links": { + "Github": "https://github.com/BTCGPU/BTCGPU", + "Homepage": "https://bitcoingold.org" + }, + "name": "Bitcoin Gold Testnet", + "shortcut": "TBTG", + "t1_enabled": "no", + "t2_enabled": "no", + "type": "coin" + }, "coin:TDCR": { "hidden": 1, "links": { @@ -554,7 +577,7 @@ "Github": "https://github.com/terracoin/terracoin", "Homepage": "https://terracoin.io" }, - "marketcap_usd": 2114446, + "marketcap_usd": 1590308, "name": "Terracoin", "shortcut": "TRC", "t1_enabled": "no", @@ -567,7 +590,7 @@ "Github": "https://github.com/viacoin", "Homepage": "https://viacoin.org" }, - "marketcap_usd": 23459968, + "marketcap_usd": 18380760, "name": "Viacoin", "shortcut": "VIA", "t1_enabled": "yes", @@ -579,7 +602,7 @@ "Github": "https://github.com/vertcoin-project/vertcoin-core", "Homepage": "https://vertcoin.org" }, - "marketcap_usd": 41968042, + "marketcap_usd": 31274762, "name": "Vertcoin", "shortcut": "VTC", "t1_enabled": "yes", @@ -594,7 +617,7 @@ "Github": "https://github.com/myriadcoin/myriadcoin", "Homepage": "https://www.myriadcoin.org" }, - "marketcap_usd": 5670418, + "marketcap_usd": 4633554, "name": "Myriad", "shortcut": "XMY", "t1_enabled": "no", @@ -606,7 +629,7 @@ "Github": "https://github.com/zcoinofficial/zcoin", "Homepage": "https://zcoin.io" }, - "marketcap_usd": 84786256, + "marketcap_usd": 67441672, "name": "Zcoin", "shortcut": "XZC", "t1_enabled": "yes", @@ -622,7 +645,7 @@ "Github": "https://github.com/zcash/zcash", "Homepage": "z.cash" }, - "marketcap_usd": 693707511, + "marketcap_usd": 604016893, "name": "Zcash", "shortcut": "ZEC", "t1_enabled": "yes", @@ -637,7 +660,7 @@ "Github": "https://github.com/ZencashOfficial/zen", "Homepage": "https://zencash.com" }, - "marketcap_usd": 88163199, + "marketcap_usd": 89933742, "name": "Zencash", "shortcut": "ZEN", "t1_enabled": "no", @@ -670,6 +693,17 @@ "t2_enabled": "soon", "type": "coin" }, + "coin:tSMART": { + "links": { + "Github": "https://github.com/SmartCash/Core-Smart", + "Homepage": "https://smartcash.cc" + }, + "name": "SmartCash Testnet", + "shortcut": "tSMART", + "t1_enabled": "no", + "t2_enabled": "no", + "type": "coin" + }, "coin:tXZC": { "hidden": 1, "links": { @@ -791,7 +825,7 @@ "links": { "Homepage": "https://0xbitcoin.org/" }, - "marketcap_usd": 2583891, + "marketcap_usd": 1293986, "name": "0xBitcoin", "network": "eth", "shortcut": "0xBTC", @@ -1087,7 +1121,7 @@ "Github": "https://github.com/aionnetwork", "Homepage": "https://aion.network/" }, - "marketcap_usd": 159620842, + "marketcap_usd": 95696749, "name": "Aion", "network": "eth", "shortcut": "AION", @@ -1157,7 +1191,7 @@ "Github": "https://github.com/AlisProject", "Homepage": "https://alismedia.jp" }, - "marketcap_usd": 3288797, + "marketcap_usd": 2002968, "name": "ALIS Token", "network": "eth", "shortcut": "ALIS", @@ -1298,7 +1332,7 @@ "Github": "https://github.com/Oxchild/crowdsale", "Homepage": "https://apisplatform.io" }, - "marketcap_usd": 18839180, + "marketcap_usd": 11658184, "name": "APIS", "network": "eth", "shortcut": "APIS", @@ -2294,7 +2328,7 @@ "links": { "Homepage": "http://bro-consortium.io/" }, - "marketcap_usd": 52824, + "marketcap_usd": 27522, "name": "BRAT", "network": "eth", "shortcut": "BRAT", @@ -2608,7 +2642,7 @@ "Github": "https://github.com/cryptotwenty", "Homepage": "https://crypto20.com" }, - "marketcap_usd": 34228481, + "marketcap_usd": 27052771, "name": "Crypto20's Token", "network": "eth", "shortcut": "C20", @@ -2947,9 +2981,9 @@ } }, "erc20:eth:CDX": { - "address": "0x2cb101d7dA0ebaA57D3F2fEf46D7FFB7BB64592B", + "address": "0x6fFF3806Bbac52A20e0d79BC538d527f6a22c96b", "links": { - "Homepage": "https://www.carbondollarx.com" + "Homepage": "https://commodityadnetwork.com" }, "marketcap_usd": 0, "name": "CDX", @@ -3301,7 +3335,7 @@ "Github": "https://github.com/CoinvestHQ", "Homepage": "https://coinve.st" }, - "marketcap_usd": 125132, + "marketcap_usd": 88111, "name": "Coinvest V2 Token", "network": "eth", "shortcut": "COIN", @@ -3318,7 +3352,7 @@ "links": { "Homepage": "https://coss.io" }, - "marketcap_usd": 11131308, + "marketcap_usd": 6114435, "name": "Coss Token", "network": "eth", "shortcut": "COSS", @@ -3441,7 +3475,7 @@ "links": { "Homepage": "https://bitbounce.io" }, - "marketcap_usd": 16010757, + "marketcap_usd": 9624659, "name": "Credo / Bitbounce", "network": "eth", "shortcut": "CREDO", @@ -3631,7 +3665,7 @@ "links": { "Homepage": "https://ccrb.io/" }, - "marketcap_usd": 1912153, + "marketcap_usd": 1654590, "name": "CryptoCarbon", "network": "eth", "shortcut": "CryptoCarbon", @@ -3665,7 +3699,7 @@ "links": { "Homepage": "https://dadi.cloud" }, - "marketcap_usd": 9485214, + "marketcap_usd": 7732887, "name": "DADI", "network": "eth", "shortcut": "DADI", @@ -3683,7 +3717,7 @@ "Github": "https://github.com/makerdao", "Homepage": "https://makerdao.com" }, - "marketcap_usd": 52350918, + "marketcap_usd": 47753729, "name": "Dai Stablecoin v1.0", "network": "eth", "shortcut": "DAI", @@ -3788,7 +3822,7 @@ "Github": "https://github.com/streamr-dev", "Homepage": "https://www.streamr.com" }, - "marketcap_usd": 171265, + "marketcap_usd": 48668, "name": "DATACoin", "network": "eth", "shortcut": "DATACoin", @@ -3964,7 +3998,7 @@ "links": { "Homepage": "https://www.dentwireless.com/" }, - "marketcap_usd": 43968463, + "marketcap_usd": 40895269, "name": "DENT", "network": "eth", "shortcut": "DENT", @@ -4167,9 +4201,9 @@ } }, "erc20:eth:DOW": { - "address": "0xEEF6E90034eEa89E31Eb4B8eaCd323F28A92eaE4", + "address": "0x76974C7B79dC8a6a109Fd71fd7cEb9E40eff5382", "links": { - "Homepage": "https://www.dowico.com" + "Homepage": "https://dowcoin.io/" }, "marketcap_usd": 0, "name": "DOW", @@ -4253,9 +4287,9 @@ } }, "erc20:eth:DRP": { - "address": "0x621d78f2EF2fd937BFca696CabaF9A779F59B3Ed", + "address": "0x2799D90C6d44Cb9Aa5fBC377177F16C33E056b82", "links": { - "Homepage": "https://www.dcorp.it" + "Homepage": "http://drpcoin.com" }, "marketcap_usd": 0, "name": "Dripcoin", @@ -4375,7 +4409,7 @@ } }, "erc20:eth:DUBI": { - "address": "0x9c6Fa42209169bCeA032e401188a6fc3e9C9f59c", + "address": "0xD4CffeeF10F60eCA581b5E1146B5Aca4194a4C3b", "links": { "Github": "https://github.com/nionis/purpose", "Homepage": "https://prps.io" @@ -4513,7 +4547,7 @@ } }, "erc20:eth:EDU": { - "address": "0x2A22e5cCA00a3D63308fa39f29202eB1b39eEf52", + "address": "0x5b26C5D0772E5bbaC8b3182AE9a13f9BB2D03765", "links": { "Github": "https://github.com/livecodingtvofficial", "Homepage": "https://tokensale.liveedu.tv" @@ -4607,7 +4641,7 @@ "Github": "https://github.com/eltcoin", "Homepage": "http://www.eltcoin.tech/" }, - "marketcap_usd": 509769, + "marketcap_usd": 89524, "name": "ELTCOIN", "network": "eth", "shortcut": "ELTCOIN", @@ -4767,7 +4801,7 @@ "links": { "Homepage": "https://eos.io" }, - "marketcap_usd": 6369167440, + "marketcap_usd": 4313452179, "name": "EOS", "network": "eth", "shortcut": "EOS", @@ -5062,9 +5096,9 @@ } }, "erc20:eth:FLMC": { - "address": "0x5976F7dac1525eF3277836043bA474a35E6B4272", + "address": "0x04cC783b450b8D11F3C7d00DD03fDF7FB51fE9F2", "links": { - "Homepage": "https://filmscoin.io" + "Homepage": "https://filmscoin.com" }, "marketcap_usd": 0, "name": "Filmscoin", @@ -5555,7 +5589,7 @@ "links": { "Homepage": "https://golem.network" }, - "marketcap_usd": 240976591, + "marketcap_usd": 138878773, "name": "Golem", "network": "eth", "shortcut": "GNT", @@ -5590,7 +5624,7 @@ "links": { "Homepage": "https://gridplus.io/token-sale" }, - "marketcap_usd": 10909000, + "marketcap_usd": 5756767, "name": "GRID", "network": "eth", "shortcut": "GRID", @@ -5956,10 +5990,10 @@ } }, "erc20:eth:HOT": { - "address": "0x6c6EE5e31d828De241282B9606C8e98Ea48526E2", + "address": "0x9AF839687F6C94542ac5ece2e317dAAE355493A1", "links": { "Github": "https://github.com/Holo-Host", - "Homepage": "https://holo.host/" + "Homepage": "https://thehydrofoundation.com/" }, "marketcap_usd": 0, "name": "Hydro Protocol", @@ -6136,7 +6170,7 @@ "links": { "Homepage": "https://icos.icobox.io/" }, - "marketcap_usd": 5187815, + "marketcap_usd": 1680321, "name": "ICOS", "network": "eth", "shortcut": "ICOS", @@ -6670,7 +6704,7 @@ "Github": "https://github.com/kikinteractive/kin-token", "Homepage": "https://kin.kik.com" }, - "marketcap_usd": 104532000, + "marketcap_usd": 80460303, "name": "Kin Foundation", "network": "eth", "shortcut": "KIN", @@ -6806,10 +6840,10 @@ } }, "erc20:eth:LEMO": { - "address": "0xd6e354F07319e2474491D8c7c712137bEe6862a2", + "address": "0xB5AE848EdB296C21259b7467331467d2647eEcDf", "links": { "Github": "https://github.com/LemoFoundationLtd", - "Homepage": "http://www.lemochain.com" + "Homepage": "https://www.lemochain.com" }, "marketcap_usd": 0, "name": "Lemo", @@ -6913,7 +6947,7 @@ "links": { "Homepage": "http://www.lifelabs.io" }, - "marketcap_usd": 11128622, + "marketcap_usd": 3016175, "name": "LIFE", "network": "eth", "shortcut": "LIFE", @@ -7351,7 +7385,7 @@ "links": { "Homepage": "https://www.mcaplabs.com/" }, - "marketcap_usd": 412103, + "marketcap_usd": 241270, "name": "MCAP", "network": "eth", "shortcut": "MCAP", @@ -7386,7 +7420,7 @@ "links": { "Homepage": "https://mona.co/" }, - "marketcap_usd": 0, + "marketcap_usd": 66817500, "name": "MCO", "network": "eth", "shortcut": "MCO", @@ -8169,7 +8203,7 @@ "Github": "https://github.com/NperProject", "Homepage": "https://nper.io" }, - "marketcap_usd": 3605375, + "marketcap_usd": 1585502, "name": "NPER", "network": "eth", "shortcut": "NPER", @@ -8204,7 +8238,7 @@ "links": { "Homepage": "https://nuls.io" }, - "marketcap_usd": 104203200, + "marketcap_usd": 54157954, "name": "NULS", "network": "eth", "shortcut": "NULS", @@ -8289,7 +8323,7 @@ "links": { "Homepage": "https://www.openanx.org/en" }, - "marketcap_usd": 7902573, + "marketcap_usd": 3974363, "name": "OAX", "network": "eth", "shortcut": "OAX", @@ -8320,7 +8354,7 @@ } }, "erc20:eth:OHNI": { - "address": "0x7F2176cEB16dcb648dc924eff617c3dC2BEfd30d", + "address": "0x6f539a9456A5BCb6334A1A41207c3788f5825207", "links": { "Github": "ohnicoin", "Homepage": "http://ohni.us" @@ -8467,7 +8501,7 @@ "Github": "https://github.com/OpenSTFoundation", "Homepage": "https://simpletoken.org" }, - "marketcap_usd": 22555656, + "marketcap_usd": 9783116, "name": "Simple Token 'OST'", "network": "eth", "shortcut": "OST", @@ -9251,7 +9285,7 @@ "links": { "Homepage": "https://liquid.plus" }, - "marketcap_usd": 93920050, + "marketcap_usd": 61957775, "name": "QASH", "network": "eth", "shortcut": "QASH", @@ -9375,7 +9409,7 @@ "Github": "https://github.com/qtumproject", "Homepage": "https://qtum.org/" }, - "marketcap_usd": 679977040, + "marketcap_usd": 362621157, "name": "Qtum", "network": "eth", "shortcut": "QTUM", @@ -9498,7 +9532,7 @@ "links": { "Homepage": "https://www.rebellious.io" }, - "marketcap_usd": 5521490, + "marketcap_usd": 3144506, "name": "Rebellious", "network": "eth", "shortcut": "REBL", @@ -9516,7 +9550,7 @@ "Github": "https://github.com/red", "Homepage": "https://ico.red-lang.org" }, - "marketcap_usd": 5221892, + "marketcap_usd": 1775767, "name": "Red Community Token", "network": "eth", "shortcut": "RED", @@ -9638,7 +9672,7 @@ "links": { "Homepage": "http://crowdsale.iex.ec" }, - "marketcap_usd": 55162771, + "marketcap_usd": 29800533, "name": "IEx.ec", "network": "eth", "shortcut": "RLC", @@ -9725,7 +9759,7 @@ "Github": "https://github.com/rocketico", "Homepage": "https://rocketico.io" }, - "marketcap_usd": 26204145, + "marketcap_usd": 19369120, "name": "Rocket Token", "network": "eth", "shortcut": "ROCK", @@ -9879,7 +9913,7 @@ "links": { "Homepage": "https://saltlending.com" }, - "marketcap_usd": 66071552, + "marketcap_usd": 29290084, "name": "Salt Lending Token", "network": "eth", "shortcut": "SALT", @@ -9947,7 +9981,7 @@ "links": { "Homepage": "https://sensay.it" }, - "marketcap_usd": 1984182, + "marketcap_usd": 1891609, "name": "Sensay", "network": "eth", "shortcut": "SENSE", @@ -10012,7 +10046,7 @@ } }, "erc20:eth:SGT": { - "address": "0x37427576324fE1f3625c9102674772d7CF71377d", + "address": "0xd248B0D48E44aaF9c49aea0312be7E13a6dc1468", "links": { "Homepage": "https://sgt.selfieyo.com" }, @@ -10553,7 +10587,7 @@ "links": { "Homepage": "https://stktoken.com" }, - "marketcap_usd": 9640419, + "marketcap_usd": 3721179, "name": "STK Token", "network": "eth", "shortcut": "STK", @@ -10588,7 +10622,7 @@ "Github": "https://github.com/Storj/", "Homepage": "https://storj.io/" }, - "marketcap_usd": 57693817, + "marketcap_usd": 36500673, "name": "STORJ", "network": "eth", "shortcut": "STORJ", @@ -10605,7 +10639,7 @@ "links": { "Homepage": "https://www.stormtoken.com" }, - "marketcap_usd": 71653140, + "marketcap_usd": 34397209, "name": "Storm Token", "network": "eth", "shortcut": "STORM", @@ -11144,7 +11178,7 @@ "links": { "Homepage": "https://taas.fund" }, - "marketcap_usd": 14723245, + "marketcap_usd": 7250511, "name": "Token-as-a-Service", "network": "eth", "shortcut": "TaaS", @@ -11389,7 +11423,7 @@ "marketcap_usd": 0, "name": "Vechain", "network": "eth", - "shortcut": "VET", + "shortcut": "VEN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11416,10 +11450,10 @@ } }, "erc20:eth:VIBEX": { - "address": "0x882448f83d90B2bf477Af2eA79327fDEA1335D93", + "address": "0xe8Ff5C9c75dEb346acAc493C463C8950Be03Dfba", "links": { "Github": "https://github.com/amack2u/VibeHub", - "Homepage": "https://vibehub.io/ico/" + "Homepage": "http://vibehub.io" }, "marketcap_usd": 0, "name": "VIBEX", @@ -11438,7 +11472,7 @@ "links": { "Homepage": "https://view.ly/" }, - "marketcap_usd": 0, + "marketcap_usd": 944174, "name": "Viewly", "network": "eth", "shortcut": "VIEW", @@ -11579,7 +11613,7 @@ "Github": "https://github.com/waxio", "Homepage": "https://wax.io" }, - "marketcap_usd": 104521623, + "marketcap_usd": 64208582, "name": "WAX", "network": "eth", "shortcut": "WAX", @@ -11737,7 +11771,7 @@ "links": { "Homepage": "https://wings.ai" }, - "marketcap_usd": 17660790, + "marketcap_usd": 12580458, "name": "WINGS", "network": "eth", "shortcut": "WINGS", @@ -11893,7 +11927,7 @@ "links": { "Homepage": "https://www.wacoin.io" }, - "marketcap_usd": 15736632, + "marketcap_usd": 6865815, "name": "WaBi", "network": "eth", "shortcut": "WaBi", @@ -12207,7 +12241,7 @@ "Github": "https://github.com/zapproject", "Homepage": "https://zap.store" }, - "marketcap_usd": 4519234, + "marketcap_usd": 2019515, "name": "ZAP", "network": "eth", "shortcut": "ZAP", @@ -12400,7 +12434,7 @@ "Github": "https://github.com/eosdac", "Homepage": "https://eosdac.io/" }, - "marketcap_usd": 34490099, + "marketcap_usd": 16039860, "name": "eosDAC", "network": "eth", "shortcut": "eosDAC", @@ -12434,7 +12468,7 @@ "Github": "https://github.com/havven/havven", "Homepage": "https://www.havven.io" }, - "marketcap_usd": 0, + "marketcap_usd": 1153295, "name": "Havven-Backed USD Nomins (nUSD)", "network": "eth", "shortcut": "nUSD", @@ -12468,7 +12502,7 @@ "address": "0x8667559254241ddeD4d11392f868d72092765367", "hidden": 1, "links": {}, - "marketcap_usd": 395004653, + "marketcap_usd": 225680814, "name": "Aeternity", "network": "kov", "shortcut": "Aeternity", @@ -12699,7 +12733,7 @@ "links": { "Homepage": "https://www.qwark.io/" }, - "marketcap_usd": 2077885, + "marketcap_usd": 1694018, "name": "QWARK", "network": "ubq", "shortcut": "QWARK", @@ -12746,7 +12780,7 @@ "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 8450427, + "marketcap_usd": 5751412, "name": "DIMCOIN", "shortcut": "DIM", "t1_enabled": "yes", @@ -12761,7 +12795,7 @@ "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 8450427, + "marketcap_usd": 5751412, "name": "DIM TOKEN", "shortcut": "DIMTOK", "t1_enabled": "yes", @@ -12803,7 +12837,7 @@ "links": { "Homepage": "https://nem.io" }, - "marketcap_usd": 1448937000, + "marketcap_usd": 874888375, "name": "NEM", "shortcut": "XEM", "t1_enabled": "yes", @@ -12815,11 +12849,11 @@ } }, "info": { - "marketcap_usd": 185677428942, + "marketcap_usd": 163168706395, "t1_coins": 689, "t2_coins": 688, - "total_marketcap_usd": 250022314394, - "updated_at": 1531492227, - "updated_at_readable": "Fri Jul 13 16:30:27 2018" + "total_marketcap_usd": 207808113932, + "updated_at": 1535021696, + "updated_at_readable": "Thu Aug 23 12:54:56 2018" } } \ No newline at end of file From 5ad2eb74a03e96afe8de7fd5112040646e6bd4c5 Mon Sep 17 00:00:00 2001 From: matejcik Date: Thu, 23 Aug 2018 13:05:41 +0200 Subject: [PATCH 512/767] coin_info: shuffle knowledge about duplicates, validation and support information --- tools/coin_info.py | 134 +++++++++++++++---------- tools/cointool.py | 216 ++++++++++++++++++++++++++++++++++++----- tools/requirements.txt | 3 + 3 files changed, 278 insertions(+), 75 deletions(-) diff --git a/tools/coin_info.py b/tools/coin_info.py index 4c3061d72..f6f2cf43a 100755 --- a/tools/coin_info.py +++ b/tools/coin_info.py @@ -261,6 +261,8 @@ def _load_misc(): # ====== support info ====== RELEASES_URL = "https://wallet.trezor.io/data/firmware/{}/releases.json" +MISSING_SUPPORT_MEANS_NO = ("connect", "webwallet") +VERSIONED_SUPPORT_INFO = ("trezor1", "trezor2") def get_support_data(): @@ -280,6 +282,10 @@ def latest_releases(): return latest +def is_token(coin): + return coin["key"].startswith("erc20:") + + def support_info_single(support_data, coin): """Extract a support dict from `support.json` data. @@ -287,7 +293,7 @@ def support_info_single(support_data, coin): top-level key. The support value for each device is determined in order of priority: - * if the coin is marked as duplicate, all support values are `None` + * if the coin is a duplicate ERC20 token, all support values are `None` * if the coin has an entry in `unsupported`, its support is `None` * if the coin has an entry in `supported` its support is that entry (usually a version string, or `True` for connect/webwallet) @@ -297,12 +303,14 @@ def support_info_single(support_data, coin): key = coin["key"] dup = coin.get("duplicate") for device, values in support_data.items(): - if dup: + if dup and is_token(coin): support_value = None elif key in values["unsupported"]: support_value = None elif key in values["supported"]: support_value = values["supported"][key] + elif device in MISSING_SUPPORT_MEANS_NO: + support_value = None else: support_value = "soon" support_info[device] = support_value @@ -337,43 +345,6 @@ def support_info(coins): # ====== data cleanup functions ====== -def find_address_collisions(coins): - """Detects collisions in: - - SLIP44 path prefixes - - address type numbers, both for p2pkh and p2sh - """ - slip44 = defaultdict(list) - at_p2pkh = defaultdict(list) - at_p2sh = defaultdict(list) - - for coin in coins: - name = coin["name"] - s = coin["slip44"] - # ignore m/1 testnets - if not (name.endswith("Testnet") and s == 1): - slip44[s].append(name) - - # skip address types on cashaddr currencies - if coin["cashaddr_prefix"]: - continue - - at_p2pkh[coin["address_type"]].append(name) - at_p2sh[coin["address_type_p2sh"]].append(name) - - def prune(d): - ret = d.copy() - for key in d: - if len(d[key]) < 2: - del ret[key] - return ret - - return dict( - slip44=prune(slip44), - address_type=prune(at_p2pkh), - address_type_p2sh=prune(at_p2sh), - ) - - def _ensure_mandatory_values(coins): """Checks that every coin has the mandatory fields: name, shortcut, key""" for coin in coins: @@ -381,9 +352,33 @@ def _ensure_mandatory_values(coins): raise ValueError(coin) +def symbol_from_shortcut(shortcut): + symsplit = shortcut.split(" ", maxsplit=1) + return symsplit[0], symsplit[1] if len(symsplit) > 1 else "" + + def mark_duplicate_shortcuts(coins): """Finds coins with identical `shortcut`s. Updates their keys and sets a `duplicate` field. + + The logic is a little crazy. + + The result of this function is a dictionary of _buckets_, each of which is + indexed by the duplicated symbol, or `_override`. The `_override` bucket will + contain all coins that are set to `true` in `duplicity_overrides.json`. These + will _always_ be marked as duplicate (and later possibly deleted if they're ERC20). + + The rest will disambiguate based on the full shortcut. + (i.e., when `shortcut` is `BTL (Battle)`, the `symbol` is just `BTL`). + If _all tokens_ in the bucket have shortcuts with distinct suffixes, e.g., + `CAT (BitClave)` and `CAT (Blockcat)`, we DO NOT mark them as duplicate. + These will then be supported and included in outputs. + + If even one token in the bucket _does not_ have a distinct suffix, e.g., + `MIT` and `MIT (Mychatcoin)`, the whole bucket is marked as duplicate. + + If a token is set to `false` in `duplicity_overrides.json`, it will NOT + be marked as duplicate in this step, even if it is part of a "bad" bucket. """ dup_symbols = defaultdict(list) dup_keys = defaultdict(list) @@ -392,26 +387,50 @@ def mark_duplicate_shortcuts(coins): return {k: v for k, v in dups.items() if len(v) > 1} for coin in coins: - symsplit = coin["shortcut"].split(" ", maxsplit=1) - symbol = symsplit[0] + symbol, _ = symbol_from_shortcut(coin["shortcut"]) dup_symbols[symbol].append(coin) dup_keys[coin["key"]].append(coin) dup_symbols = dups_only(dup_symbols) dup_keys = dups_only(dup_keys) - # mark duplicate symbols - for values in dup_symbols.values(): - for coin in values: - coin["duplicate"] = True - - # deduplicate keys + # first deduplicate keys so that we can identify overrides for values in dup_keys.values(): for i, coin in enumerate(values): - # presumably only duplicate symbols can have duplicate keys - assert coin.get("duplicate") coin["key"] += f":{i}" + # load overrides and put them into their own bucket + overrides = load_json("duplicity_overrides.json") + override_bucket = [] + for coin in coins: + if overrides.get(coin["key"], False): + coin["duplicate"] = True + override_bucket.append(coin) + + # mark duplicate symbols + for values in dup_symbols.values(): + splits = (symbol_from_shortcut(coin["shortcut"]) for coin in values) + suffixes = {suffix for _, suffix in splits} + # if 1. all suffixes are distinct and 2. none of them are empty + if len(suffixes) == len(values) and all(suffixes): + # Allow the whole bucket. + # For all intents and purposes these should be considered non-dups + # So we won't mark them as dups here + # But they still have their own bucket, and also overrides can + # explicitly mark them as duplicate one step before, in which case + # they *still* keep duplicate status (and possibly are deleted). + continue + + nontokens = [coin for coin in values if not is_token(coin)] + + for coin in values: + # allow overrides to skip this; if not listed in overrides, assume True + is_dup = overrides.get(coin["key"], True) + if is_dup: + coin["duplicate"] = True + # again: still in dups, but not marked as duplicate and not deleted + + dup_symbols["_override"] = override_bucket return dup_symbols @@ -461,3 +480,20 @@ def get_all(deduplicate=True): ] return all_coins + + +def search(coins, keyword): + kwl = keyword.lower() + for coin in coins: + key = coin["key"].lower() + name = coin["name"].lower() + shortcut = coin["shortcut"].lower() + symbol, suffix = symbol_from_shortcut(shortcut) + if ( + kwl == key + or kwl in name + or kwl == shortcut + or kwl == symbol + or kwl in suffix + ): + yield coin diff --git a/tools/cointool.py b/tools/cointool.py index ee05e6183..6428e71fc 100755 --- a/tools/cointool.py +++ b/tools/cointool.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 import io import json +import logging import re import sys import os @@ -8,6 +9,7 @@ import glob import binascii import struct import zlib +from collections import defaultdict from hashlib import sha256 import click @@ -15,6 +17,10 @@ import click import coin_info from coindef import CoinDef +try: + import termcolor +except ImportError: + termcolor = None try: import mako @@ -40,6 +46,36 @@ except ImportError: CAN_BUILD_DEFS = False +# ======= Crayon colors ====== +USE_COLORS = False + + +def crayon(color, string, bold=False, dim=False): + if not termcolor or not USE_COLORS: + return string + else: + if bold: + attrs = ["bold"] + elif dim: + attrs = ["dark"] + else: + attrs = [] + return termcolor.colored(string, color, attrs=attrs) + + +def print_log(level, *args, **kwargs): + prefix = logging.getLevelName(level) + if level == logging.DEBUG: + prefix = crayon("blue", prefix, bold=False) + elif level == logging.INFO: + prefix = crayon("blue", prefix, bold=True) + elif level == logging.WARNING: + prefix = crayon("red", prefix, bold=False) + elif level == logging.ERROR: + prefix = crayon("red", prefix, bold=True) + print(prefix, *args, **kwargs) + + # ======= Mako management ====== @@ -106,46 +142,146 @@ def render_file(src, dst, coins, support_info): # ====== validation functions ====== +def highlight_key(coin, color): + keylist = coin["key"].split(":") + if keylist[-1].isdigit(): + keylist[-2] = crayon(color, keylist[-2], bold=True) + else: + keylist[-1] = crayon(color, keylist[-1], bold=True) + key = crayon(color, ":".join(keylist)) + name = crayon(None, f"({coin['name']})", dim=True) + return f"{key} {name}" + + +def find_address_collisions(coins, field): + """Detects collisions in a given field. Returns buckets of colliding coins.""" + collisions = defaultdict(list) + for coin in coins: + value = coin[field] + collisions[value].append(coin) + return {k: v for k, v in collisions.items() if len(v) > 1} + + def check_btc(coins): check_passed = True + support_infos = coin_info.support_info(coins) for coin in coins: errors = coin_info.validate_btc(coin) if errors: check_passed = False - print("ERR:", "invalid definition for", coin["name"]) + print_log(logging.ERROR, "invalid definition for", coin["name"]) print("\n".join(errors)) - collisions = coin_info.find_address_collisions(coins) - # warning only - for key, dups in collisions.items(): - if dups: - print("WARN: collisions found in", key) - for k, v in dups.items(): - print("-", k, ":", ", ".join(map(str, v))) + def collision_str(bucket): + coin_strings = [] + for coin in bucket: + name = coin["name"] + prefix = "" + if name.endswith("Testnet"): + color = "green" + elif name == "Bitcoin": + color = "red" + elif coin.get("unsupported"): + color = "grey" + prefix = crayon("blue", "(X)", bold=True) + else: + color = "blue" + hl = highlight_key(coin, color) + coin_strings.append(prefix + hl) + return ", ".join(coin_strings) + + def print_collision_buckets(buckets, prefix): + failed = False + for key, bucket in buckets.items(): + mainnets = [c for c in bucket if not c["name"].endswith("Testnet")] + + have_bitcoin = False + for coin in mainnets: + if coin["name"] == "Bitcoin": + have_bitcoin = True + if all(v is None for k,v in support_infos[coin["key"]].items()): + coin["unsupported"] = True + + supported_mainnets = [c for c in mainnets if not c.get("unsupported")] + + if len(mainnets) > 1: + if len(supported_mainnets) > 1: + if have_bitcoin: + level = logging.ERROR + failed = True + else: + level = logging.WARNING + else: + level = logging.INFO + print_log(level, f"prefix {key}:", collision_str(bucket)) + + return failed + + # slip44 collisions + print("Checking SLIP44 prefix collisions...") + slip44 = find_address_collisions(coins, "slip44") + if print_collision_buckets(slip44, "key"): + check_passed = False + + nocashaddr = [coin for coin in coins if not coin.get("cashaddr_prefix")] + + print("Checking address_type collisions...") + address_type = find_address_collisions(nocashaddr, "address_type") + if print_collision_buckets(address_type, "address type"): + check_passed = False + + print("Checking address_type_p2sh collisions...") + address_type_p2sh = find_address_collisions(nocashaddr, "address_type_p2sh") + # we ignore failed checks on P2SH, because reasons + print_collision_buckets(address_type_p2sh, "address type") return check_passed -def check_dups(buckets): +def check_dups(buckets, show_tok_notok, show_erc20): + def coin_str(coin): + if coin_info.is_token(coin): + color = "cyan" + else: + color = "red" + highlighted = highlight_key(coin, color) + if not coin.get("duplicate"): + prefix = crayon("green", "*", bold=True) + else: + prefix = "" + return f"{prefix}{highlighted}" + check_passed = True - for bucket in buckets.values(): - nontokens = [coin for coin in bucket if not coin["key"].startswith("erc20")] - token_list = [coin["key"] for coin in bucket if coin["key"].startswith("erc20")] - if not nontokens: + + for symbol in sorted(buckets.keys()): + bucket = buckets[symbol] + if not bucket: continue - if len(nontokens) == 1: - coin = nontokens[0] - print( - f"Coin {coin['key']} ({coin['name']}) is duplicate with", - ", ".join(token_list), - "and that is OK.", - ) + + nontokens = [coin for coin in bucket if not coin_info.is_token(coin)] + + # string generation + dup_str = ", ".join(coin_str(coin) for coin in bucket) + if not nontokens: + level = logging.DEBUG + elif len(nontokens) == 1: + level = logging.INFO else: - nontoken_list = [f"{coin['key']} ({coin['name']})" for coin in nontokens] - print("Duplicate shortcuts for", ", ".join(nontoken_list)) + level = logging.ERROR check_passed = False + # deciding whether to print + if not nontokens and not show_erc20: + continue + if len(nontokens) == 1 and not show_tok_notok: + continue + + if symbol == "_override": + print_log(level, "force-set duplicates:", dup_str) + else: + print_log(level, f"duplicate symbol {symbol}:", dup_str) + return check_passed @@ -250,8 +386,15 @@ def sign(data): @click.group() -def cli(): - pass +@click.option( + "--colors/--no-colors", + "-c/-C", + default=sys.stdout.isatty(), + help="Force colored output on/off", +) +def cli(colors): + global USE_COLORS + USE_COLORS = colors @cli.command() @@ -259,12 +402,24 @@ def cli(): @click.option("--missing-support/--no-missing-support", "-s", default=False, help="Fail if support info for a coin is missing") @click.option("--backend/--no-backend", "-b", default=False, help="Check blockbook/bitcore responses") @click.option("--icons/--no-icons", default=True, help="Check icon files") +@click.option("-d", "--show-duplicates", type=click.Choice(("all", "nontoken", "errors")), + default="errors", help="How much information about duplicate shortcuts should be shown.") # fmt: on -def check(missing_support, backend, icons): +def check(missing_support, backend, icons, show_duplicates): """Validate coin definitions. Checks that every btc-like coin is properly filled out, reports address collisions and missing support information. + + The `--show-duplicates` option can be set to: + * all: all shortcut collisions are shown, including colliding ERC20 tokens + * nontoken: only collisions that affect non-ERC20 coins are shown + * errors: only collisions between non-ERC20 tokens are shown. This is the default, + as a collision between two or more non-ERC20 tokens is an error. + + In the output, duplicate ERC tokens will be shown in cyan; duplicate non-tokens + in red. An asterisk (*) next to symbol name means that even though it was detected + as duplicate, it is still included in results. """ if backend and requests is None: raise click.ClickException("You must install requests for backend check") @@ -286,8 +441,17 @@ def check(missing_support, backend, icons): # if not check_support(defs, support_data, fail_missing=missing_support): # all_checks_passed = False + if show_duplicates == "all": + show_tok_notok = True + show_erc20 = True + elif show_duplicates == "nontoken": + show_tok_notok = True + show_erc20 = False + else: + show_tok_notok = False + show_erc20 = False print("Checking unexpected duplicates...") - if not check_dups(buckets): + if not check_dups(buckets, show_tok_notok, show_erc20): all_checks_passed = False if icons: diff --git a/tools/requirements.txt b/tools/requirements.txt index f910733ab..59cab2694 100644 --- a/tools/requirements.txt +++ b/tools/requirements.txt @@ -11,3 +11,6 @@ requests>=2.19 # for rendering templates: Mako>=1.0.7 munch>=2.3.2 + +# for pretty colors in checks +termcolor >= 0.1.2 From a3240380c6062b1caa598f9088823cf1c48e8667 Mon Sep 17 00:00:00 2001 From: matejcik Date: Thu, 23 Aug 2018 17:32:50 +0200 Subject: [PATCH 513/767] tools: ERC20 duplicate management --- defs/duplicity_overrides.json | 6 + defs/support.json | 304 +++++++++++++++++++++++----------- tools/support.py | 234 +++++++++++++++++--------- 3 files changed, 373 insertions(+), 171 deletions(-) create mode 100644 defs/duplicity_overrides.json diff --git a/defs/duplicity_overrides.json b/defs/duplicity_overrides.json new file mode 100644 index 000000000..a4a535a42 --- /dev/null +++ b/defs/duplicity_overrides.json @@ -0,0 +1,6 @@ +{ + "erc20:eth:BTL (Battle)": true, + "erc20:eth:BTL (Bitlle)": true, + "erc20:eth:LINK Platform": true, + "erc20:eth:NXX": false +} diff --git a/defs/support.json b/defs/support.json index ff2833e90..90d7f1daf 100644 --- a/defs/support.json +++ b/defs/support.json @@ -207,7 +207,6 @@ "erc20:eth:CryptoCarbon": "1.6.2", "erc20:eth:DAB": "1.6.2", "erc20:eth:DADI": "1.6.2", - "erc20:eth:DAI": "1.6.2", "erc20:eth:DALC": "1.6.2", "erc20:eth:DAN": "1.6.2", "erc20:eth:DAO": "1.6.2", @@ -224,7 +223,6 @@ "erc20:eth:DEB": "1.6.2", "erc20:eth:DEEZ": "1.6.2", "erc20:eth:DENT": "1.6.2", - "erc20:eth:DGD": "1.6.2", "erc20:eth:DGPT": "1.6.2", "erc20:eth:DGX": "1.6.2", "erc20:eth:DICE": "1.6.2", @@ -275,7 +273,6 @@ "erc20:eth:EVX": "1.6.2", "erc20:eth:EXMR": "1.6.2", "erc20:eth:FAM": "1.6.2", - "erc20:eth:FANX": "1.6.2", "erc20:eth:FKX": "1.6.2", "erc20:eth:FLIXX": "1.6.2", "erc20:eth:FLP": "1.6.2", @@ -284,7 +281,6 @@ "erc20:eth:FLX": "1.6.2", "erc20:eth:FND": "1.6.2", "erc20:eth:FRD": "1.6.2", - "erc20:eth:FTC": "1.6.2", "erc20:eth:FTR": "1.6.2", "erc20:eth:FTT": "1.6.2", "erc20:eth:FUEL": "1.6.2", @@ -303,7 +299,6 @@ "erc20:eth:GIM": "1.6.2", "erc20:eth:GMT": "1.6.2", "erc20:eth:GNO": "1.6.2", - "erc20:eth:GNT": "1.6.2", "erc20:eth:GOLDX": "1.6.2", "erc20:eth:GRID": "1.6.2", "erc20:eth:GROW": "1.6.2", @@ -376,7 +371,6 @@ "erc20:eth:LIF": "1.6.2", "erc20:eth:LIFE": "1.6.2", "erc20:eth:LIVE": "1.6.2", - "erc20:eth:LNC": "1.6.2", "erc20:eth:LND": "1.6.2", "erc20:eth:LOC": "1.6.2", "erc20:eth:LOCI": "1.6.2", @@ -404,9 +398,7 @@ "erc20:eth:MEST": "1.6.2", "erc20:eth:MFG": "1.6.2", "erc20:eth:MGO": "1.6.2", - "erc20:eth:MKR": "1.6.2", "erc20:eth:MKT": "1.6.2", - "erc20:eth:MLN": "1.6.2", "erc20:eth:MNE": "1.6.2", "erc20:eth:MNT": "1.6.2", "erc20:eth:MNTP": "1.6.2", @@ -415,7 +407,6 @@ "erc20:eth:MRP": "1.6.2", "erc20:eth:MRV": "1.6.2", "erc20:eth:MSP": "1.6.2", - "erc20:eth:MTC": "1.6.2", "erc20:eth:MTH": "1.6.2", "erc20:eth:MTL": "1.6.2", "erc20:eth:MTN": "1.6.2", @@ -491,7 +482,6 @@ "erc20:eth:PRS": "1.6.2", "erc20:eth:PRSP": "1.6.2", "erc20:eth:PT": "1.6.2", - "erc20:eth:PTC": "1.6.2", "erc20:eth:PTOY": "1.6.2", "erc20:eth:PTWO": "1.6.2", "erc20:eth:PUC": "1.6.2", @@ -545,7 +535,6 @@ "erc20:eth:SKO1": "1.6.2", "erc20:eth:SKR": "1.6.2", "erc20:eth:SLT": "1.6.2", - "erc20:eth:SMART": "1.6.2", "erc20:eth:SNC": "1.6.2", "erc20:eth:SND": "1.6.2", "erc20:eth:SNG": "1.6.2", @@ -593,7 +582,6 @@ "erc20:eth:TIX": "1.6.2", "erc20:eth:TKN": "1.6.2", "erc20:eth:TNT": "1.6.2", - "erc20:eth:TRC": "1.6.2", "erc20:eth:TRCN": "1.6.2", "erc20:eth:TRST": "1.6.2", "erc20:eth:TRX": "1.6.2", @@ -654,13 +642,11 @@ "erc20:eth:XNT": "1.6.2", "erc20:eth:XRL": "1.6.2", "erc20:eth:XSC": "1.6.2", - "erc20:eth:YEED": "1.6.2", "erc20:eth:YUPIE": "1.6.2", "erc20:eth:ZAP": "1.6.2", "erc20:eth:ZCS": "1.6.2", "erc20:eth:ZIL": "1.6.2", "erc20:eth:ZMN": "1.6.2", - "erc20:eth:ZRX": "1.6.2", "erc20:eth:ZST": "1.6.2", "erc20:eth:cV": "1.6.2", "erc20:eth:eBCH": "1.6.2", @@ -717,39 +703,111 @@ "coin:CRW": "address_type collides with Bitcoin", "coin:TRC": "address_type collides with Bitcoin", "coin:ZEN": "not implemented on T1", - "erc20:etc:PLAY": "duplicate key", - "erc20:eth:ATH": "duplicate key", - "erc20:eth:ATH (AIgatha Token)": "duplicate key", - "erc20:eth:BLX (Bullion)": "duplicate key", - "erc20:eth:BLX (Iconomi)": "duplicate key", - "erc20:eth:BTL (Battle)": "duplicate key", - "erc20:eth:BTL (Bitlle)": "duplicate key", - "erc20:eth:CAR": "duplicate key", - "erc20:eth:CAR (CarBlock)": "duplicate key", - "erc20:eth:CAT (BitClave)": "duplicate key", - "erc20:eth:CAT (Blockcat)": "duplicate key", - "erc20:eth:CCC (CryptoCrashCourse)": "duplicate key", - "erc20:eth:CCC (ICONOMI)": "duplicate key", - "erc20:eth:DEPO": "duplicate key", - "erc20:eth:DEPO (Depository Network)": "duplicate key", - "erc20:eth:DROP": "duplicate key", - "erc20:eth:DROP (dropil)": "duplicate key", - "erc20:eth:GUP": "duplicate key", - "erc20:eth:KC": "duplicate key", - "erc20:eth:LINK (Chainlink)": "duplicate key", - "erc20:eth:LINK Platform": "duplicate key", - "erc20:eth:MIT": "duplicate key", - "erc20:eth:MIT (Mychatcoin)": "duplicate key", - "erc20:eth:NONE": "duplicate key", - "erc20:eth:NXX": "duplicate key", - "erc20:eth:NXX OLD": "duplicate key", - "erc20:eth:PLAY": "duplicate key", - "erc20:eth:RDN": "duplicate key", - "erc20:kov:GUP": "duplicate key", - "erc20:rin:KC": "duplicate key", - "erc20:rin:NONE": "duplicate key", - "erc20:rin:RDN": "duplicate key", - "erc20:rop:NONE": "duplicate key", + "erc20:etc:PLAY": "(AUTO) duplicate key", + "erc20:eth:ATH": "(AUTO) duplicate key", + "erc20:eth:ATH (AIgatha Token)": "(AUTO) duplicate key", + "erc20:eth:BTL (Battle)": "(AUTO) duplicate key", + "erc20:eth:BTL (Bitlle)": "(AUTO) duplicate key", + "erc20:eth:CAR": "(AUTO) duplicate key", + "erc20:eth:CAR (CarBlock)": "(AUTO) duplicate key", + "erc20:eth:CARD:0": "(AUTO) duplicate key", + "erc20:eth:CARD:1": "(AUTO) duplicate key", + "erc20:eth:CDX:0": "(AUTO) duplicate key", + "erc20:eth:CDX:1": "(AUTO) duplicate key", + "erc20:eth:COSS:0": "(AUTO) duplicate key", + "erc20:eth:COSS:1": "(AUTO) duplicate key", + "erc20:eth:DAI": "(AUTO) duplicate key", + "erc20:eth:DEPO": "(AUTO) duplicate key", + "erc20:eth:DEPO (Depository Network)": "(AUTO) duplicate key", + "erc20:eth:DGD": "(AUTO) duplicate key", + "erc20:eth:DOW:0": "(AUTO) duplicate key", + "erc20:eth:DOW:1": "(AUTO) duplicate key", + "erc20:eth:DROP": "(AUTO) duplicate key", + "erc20:eth:DROP (dropil)": "(AUTO) duplicate key", + "erc20:eth:DRP:0": "(AUTO) duplicate key", + "erc20:eth:DRP:1": "(AUTO) duplicate key", + "erc20:eth:DUBI:0": "(AUTO) duplicate key", + "erc20:eth:DUBI:1": "(AUTO) duplicate key", + "erc20:eth:EDU:0": "(AUTO) duplicate key", + "erc20:eth:EDU:1": "(AUTO) duplicate key", + "erc20:eth:FANX:0": "(AUTO) duplicate key", + "erc20:eth:FANX:1": "(AUTO) duplicate key", + "erc20:eth:FLMC:0": "(AUTO) duplicate key", + "erc20:eth:FLMC:1": "(AUTO) duplicate key", + "erc20:eth:FTC": "(AUTO) duplicate key", + "erc20:eth:FUCK:0": "(AUTO) duplicate key", + "erc20:eth:FUCK:1": "(AUTO) duplicate key", + "erc20:eth:GANA:0": "(AUTO) duplicate key", + "erc20:eth:GANA:1": "(AUTO) duplicate key", + "erc20:eth:GNT": "(AUTO) duplicate key", + "erc20:eth:GUP": "(AUTO) duplicate key", + "erc20:eth:HOT:0": "(AUTO) duplicate key", + "erc20:eth:HOT:1": "(AUTO) duplicate key", + "erc20:eth:JBX:0": "(AUTO) duplicate key", + "erc20:eth:JBX:1": "(AUTO) duplicate key", + "erc20:eth:KC": "(AUTO) duplicate key", + "erc20:eth:KEY:0": "(AUTO) duplicate key", + "erc20:eth:KEY:1": "(AUTO) duplicate key", + "erc20:eth:LEMO:0": "(AUTO) duplicate key", + "erc20:eth:LEMO:1": "(AUTO) duplicate key", + "erc20:eth:LEMO:2": "(AUTO) duplicate key", + "erc20:eth:LINK Platform": "(AUTO) duplicate key", + "erc20:eth:LNC": "(AUTO) duplicate key", + "erc20:eth:LNC (Linker Coin)": "(AUTO) duplicate key", + "erc20:eth:MIT": "(AUTO) duplicate key", + "erc20:eth:MIT (Mychatcoin)": "(AUTO) duplicate key", + "erc20:eth:MKR": "(AUTO) duplicate key", + "erc20:eth:MLN": "(AUTO) duplicate key", + "erc20:eth:MTC:0": "(AUTO) duplicate key", + "erc20:eth:MTC:1": "(AUTO) duplicate key", + "erc20:eth:NONE": "(AUTO) duplicate key", + "erc20:eth:NXX OLD": "(AUTO) duplicate key", + "erc20:eth:OHNI:0": "(AUTO) duplicate key", + "erc20:eth:OHNI:1": "(AUTO) duplicate key", + "erc20:eth:OPEN:0": "(AUTO) duplicate key", + "erc20:eth:OPEN:1": "(AUTO) duplicate key", + "erc20:eth:PLAY": "(AUTO) duplicate key", + "erc20:eth:PRPS:0": "(AUTO) duplicate key", + "erc20:eth:PRPS:1": "(AUTO) duplicate key", + "erc20:eth:PTC": "(AUTO) duplicate key", + "erc20:eth:RDN": "(AUTO) duplicate key", + "erc20:eth:REP:0": "(AUTO) duplicate key", + "erc20:eth:REP:1": "(AUTO) duplicate key", + "erc20:eth:SGT:0": "(AUTO) duplicate key", + "erc20:eth:SGT:1": "(AUTO) duplicate key", + "erc20:eth:SKRP:0": "(AUTO) duplicate key", + "erc20:eth:SKRP:1": "(AUTO) duplicate key", + "erc20:eth:SKRP:2": "(AUTO) duplicate key", + "erc20:eth:SMART": "(AUTO) duplicate key", + "erc20:eth:SMT:0": "(AUTO) duplicate key", + "erc20:eth:SMT:1": "(AUTO) duplicate key", + "erc20:eth:SMT:2": "(AUTO) duplicate key", + "erc20:eth:SS:0": "(AUTO) duplicate key", + "erc20:eth:SS:1": "(AUTO) duplicate key", + "erc20:eth:TRC": "(AUTO) duplicate key", + "erc20:eth:UMKA:0": "(AUTO) duplicate key", + "erc20:eth:UMKA:1": "(AUTO) duplicate key", + "erc20:eth:VIBEX:0": "(AUTO) duplicate key", + "erc20:eth:VIBEX:1": "(AUTO) duplicate key", + "erc20:eth:WHO:0": "(AUTO) duplicate key", + "erc20:eth:WHO:1": "(AUTO) duplicate key", + "erc20:eth:WOLK:0": "(AUTO) duplicate key", + "erc20:eth:WOLK:1": "(AUTO) duplicate key", + "erc20:eth:YEED:0": "(AUTO) duplicate key", + "erc20:eth:YEED:1": "(AUTO) duplicate key", + "erc20:eth:ZRX": "(AUTO) duplicate key", + "erc20:kov:DAI": "(AUTO) duplicate key", + "erc20:kov:DGD": "(AUTO) duplicate key", + "erc20:kov:GNT": "(AUTO) duplicate key", + "erc20:kov:GUP": "(AUTO) duplicate key", + "erc20:kov:MKR": "(AUTO) duplicate key", + "erc20:kov:MLN": "(AUTO) duplicate key", + "erc20:kov:REP": "(AUTO) duplicate key", + "erc20:kov:ZRX": "(AUTO) duplicate key", + "erc20:rin:KC": "(AUTO) duplicate key", + "erc20:rin:NONE": "(AUTO) duplicate key", + "erc20:rin:RDN": "(AUTO) duplicate key", + "erc20:rop:NONE": "(AUTO) duplicate key", "misc:ADA": "not implemented on T1", "misc:LSK": "not implemented on T1", "misc:XMR": "not implemented on T1", @@ -950,7 +1008,6 @@ "erc20:eth:CryptoCarbon": "2.0.7", "erc20:eth:DAB": "2.0.7", "erc20:eth:DADI": "2.0.7", - "erc20:eth:DAI": "2.0.7", "erc20:eth:DALC": "2.0.7", "erc20:eth:DAN": "2.0.7", "erc20:eth:DAO": "2.0.7", @@ -967,7 +1024,6 @@ "erc20:eth:DEB": "2.0.7", "erc20:eth:DEEZ": "2.0.7", "erc20:eth:DENT": "2.0.7", - "erc20:eth:DGD": "2.0.7", "erc20:eth:DGPT": "2.0.7", "erc20:eth:DGX": "2.0.7", "erc20:eth:DICE": "2.0.7", @@ -1018,7 +1074,6 @@ "erc20:eth:EVX": "2.0.7", "erc20:eth:EXMR": "2.0.7", "erc20:eth:FAM": "2.0.7", - "erc20:eth:FANX": "2.0.7", "erc20:eth:FKX": "2.0.7", "erc20:eth:FLIXX": "2.0.7", "erc20:eth:FLP": "2.0.7", @@ -1027,7 +1082,6 @@ "erc20:eth:FLX": "2.0.7", "erc20:eth:FND": "2.0.7", "erc20:eth:FRD": "2.0.7", - "erc20:eth:FTC": "2.0.7", "erc20:eth:FTR": "2.0.7", "erc20:eth:FTT": "2.0.7", "erc20:eth:FUEL": "2.0.7", @@ -1046,7 +1100,6 @@ "erc20:eth:GIM": "2.0.7", "erc20:eth:GMT": "2.0.7", "erc20:eth:GNO": "2.0.7", - "erc20:eth:GNT": "2.0.7", "erc20:eth:GOLDX": "2.0.7", "erc20:eth:GRID": "2.0.7", "erc20:eth:GROW": "2.0.7", @@ -1119,7 +1172,6 @@ "erc20:eth:LIF": "2.0.7", "erc20:eth:LIFE": "2.0.7", "erc20:eth:LIVE": "2.0.7", - "erc20:eth:LNC": "2.0.7", "erc20:eth:LND": "2.0.7", "erc20:eth:LOC": "2.0.7", "erc20:eth:LOCI": "2.0.7", @@ -1147,9 +1199,7 @@ "erc20:eth:MEST": "2.0.7", "erc20:eth:MFG": "2.0.7", "erc20:eth:MGO": "2.0.7", - "erc20:eth:MKR": "2.0.7", "erc20:eth:MKT": "2.0.7", - "erc20:eth:MLN": "2.0.7", "erc20:eth:MNE": "2.0.7", "erc20:eth:MNT": "2.0.7", "erc20:eth:MNTP": "2.0.7", @@ -1158,7 +1208,6 @@ "erc20:eth:MRP": "2.0.7", "erc20:eth:MRV": "2.0.7", "erc20:eth:MSP": "2.0.7", - "erc20:eth:MTC": "2.0.7", "erc20:eth:MTH": "2.0.7", "erc20:eth:MTL": "2.0.7", "erc20:eth:MTN": "2.0.7", @@ -1234,7 +1283,6 @@ "erc20:eth:PRS": "2.0.7", "erc20:eth:PRSP": "2.0.7", "erc20:eth:PT": "2.0.7", - "erc20:eth:PTC": "2.0.7", "erc20:eth:PTOY": "2.0.7", "erc20:eth:PTWO": "2.0.7", "erc20:eth:PUC": "2.0.7", @@ -1288,7 +1336,6 @@ "erc20:eth:SKO1": "2.0.7", "erc20:eth:SKR": "2.0.7", "erc20:eth:SLT": "2.0.7", - "erc20:eth:SMART": "2.0.7", "erc20:eth:SNC": "2.0.7", "erc20:eth:SND": "2.0.7", "erc20:eth:SNG": "2.0.7", @@ -1336,7 +1383,6 @@ "erc20:eth:TIX": "2.0.7", "erc20:eth:TKN": "2.0.7", "erc20:eth:TNT": "2.0.7", - "erc20:eth:TRC": "2.0.7", "erc20:eth:TRCN": "2.0.7", "erc20:eth:TRST": "2.0.7", "erc20:eth:TRX": "2.0.7", @@ -1397,13 +1443,11 @@ "erc20:eth:XNT": "2.0.7", "erc20:eth:XRL": "2.0.7", "erc20:eth:XSC": "2.0.7", - "erc20:eth:YEED": "2.0.7", "erc20:eth:YUPIE": "2.0.7", "erc20:eth:ZAP": "2.0.7", "erc20:eth:ZCS": "2.0.7", "erc20:eth:ZIL": "2.0.7", "erc20:eth:ZMN": "2.0.7", - "erc20:eth:ZRX": "2.0.7", "erc20:eth:ZST": "2.0.7", "erc20:eth:cV": "2.0.7", "erc20:eth:eBCH": "2.0.7", @@ -1466,39 +1510,111 @@ "coin:DCR": "not implemented on Trezor T", "coin:TDCR": "not implemented on Trezor T", "coin:TRC": "address_type collides with Bitcoin", - "erc20:etc:PLAY": "duplicate key", - "erc20:eth:ATH": "duplicate key", - "erc20:eth:ATH (AIgatha Token)": "duplicate key", - "erc20:eth:BLX (Bullion)": "duplicate key", - "erc20:eth:BLX (Iconomi)": "duplicate key", - "erc20:eth:BTL (Battle)": "duplicate key", - "erc20:eth:BTL (Bitlle)": "duplicate key", - "erc20:eth:CAR": "duplicate key", - "erc20:eth:CAR (CarBlock)": "duplicate key", - "erc20:eth:CAT (BitClave)": "duplicate key", - "erc20:eth:CAT (Blockcat)": "duplicate key", - "erc20:eth:CCC (CryptoCrashCourse)": "duplicate key", - "erc20:eth:CCC (ICONOMI)": "duplicate key", - "erc20:eth:DEPO": "duplicate key", - "erc20:eth:DEPO (Depository Network)": "duplicate key", - "erc20:eth:DROP": "duplicate key", - "erc20:eth:DROP (dropil)": "duplicate key", - "erc20:eth:GUP": "duplicate key", - "erc20:eth:KC": "duplicate key", - "erc20:eth:LINK (Chainlink)": "duplicate key", - "erc20:eth:LINK Platform": "duplicate key", - "erc20:eth:MIT": "duplicate key", - "erc20:eth:MIT (Mychatcoin)": "duplicate key", - "erc20:eth:NONE": "duplicate key", - "erc20:eth:NXX": "duplicate key", - "erc20:eth:NXX OLD": "duplicate key", - "erc20:eth:PLAY": "duplicate key", - "erc20:eth:RDN": "duplicate key", - "erc20:kov:GUP": "duplicate key", - "erc20:rin:KC": "duplicate key", - "erc20:rin:NONE": "duplicate key", - "erc20:rin:RDN": "duplicate key", - "erc20:rop:NONE": "duplicate key" + "erc20:etc:PLAY": "(AUTO) duplicate key", + "erc20:eth:ATH": "(AUTO) duplicate key", + "erc20:eth:ATH (AIgatha Token)": "(AUTO) duplicate key", + "erc20:eth:BTL (Battle)": "(AUTO) duplicate key", + "erc20:eth:BTL (Bitlle)": "(AUTO) duplicate key", + "erc20:eth:CAR": "(AUTO) duplicate key", + "erc20:eth:CAR (CarBlock)": "(AUTO) duplicate key", + "erc20:eth:CARD:0": "(AUTO) duplicate key", + "erc20:eth:CARD:1": "(AUTO) duplicate key", + "erc20:eth:CDX:0": "(AUTO) duplicate key", + "erc20:eth:CDX:1": "(AUTO) duplicate key", + "erc20:eth:COSS:0": "(AUTO) duplicate key", + "erc20:eth:COSS:1": "(AUTO) duplicate key", + "erc20:eth:DAI": "(AUTO) duplicate key", + "erc20:eth:DEPO": "(AUTO) duplicate key", + "erc20:eth:DEPO (Depository Network)": "(AUTO) duplicate key", + "erc20:eth:DGD": "(AUTO) duplicate key", + "erc20:eth:DOW:0": "(AUTO) duplicate key", + "erc20:eth:DOW:1": "(AUTO) duplicate key", + "erc20:eth:DROP": "(AUTO) duplicate key", + "erc20:eth:DROP (dropil)": "(AUTO) duplicate key", + "erc20:eth:DRP:0": "(AUTO) duplicate key", + "erc20:eth:DRP:1": "(AUTO) duplicate key", + "erc20:eth:DUBI:0": "(AUTO) duplicate key", + "erc20:eth:DUBI:1": "(AUTO) duplicate key", + "erc20:eth:EDU:0": "(AUTO) duplicate key", + "erc20:eth:EDU:1": "(AUTO) duplicate key", + "erc20:eth:FANX:0": "(AUTO) duplicate key", + "erc20:eth:FANX:1": "(AUTO) duplicate key", + "erc20:eth:FLMC:0": "(AUTO) duplicate key", + "erc20:eth:FLMC:1": "(AUTO) duplicate key", + "erc20:eth:FTC": "(AUTO) duplicate key", + "erc20:eth:FUCK:0": "(AUTO) duplicate key", + "erc20:eth:FUCK:1": "(AUTO) duplicate key", + "erc20:eth:GANA:0": "(AUTO) duplicate key", + "erc20:eth:GANA:1": "(AUTO) duplicate key", + "erc20:eth:GNT": "(AUTO) duplicate key", + "erc20:eth:GUP": "(AUTO) duplicate key", + "erc20:eth:HOT:0": "(AUTO) duplicate key", + "erc20:eth:HOT:1": "(AUTO) duplicate key", + "erc20:eth:JBX:0": "(AUTO) duplicate key", + "erc20:eth:JBX:1": "(AUTO) duplicate key", + "erc20:eth:KC": "(AUTO) duplicate key", + "erc20:eth:KEY:0": "(AUTO) duplicate key", + "erc20:eth:KEY:1": "(AUTO) duplicate key", + "erc20:eth:LEMO:0": "(AUTO) duplicate key", + "erc20:eth:LEMO:1": "(AUTO) duplicate key", + "erc20:eth:LEMO:2": "(AUTO) duplicate key", + "erc20:eth:LINK Platform": "(AUTO) duplicate key", + "erc20:eth:LNC": "(AUTO) duplicate key", + "erc20:eth:LNC (Linker Coin)": "(AUTO) duplicate key", + "erc20:eth:MIT": "(AUTO) duplicate key", + "erc20:eth:MIT (Mychatcoin)": "(AUTO) duplicate key", + "erc20:eth:MKR": "(AUTO) duplicate key", + "erc20:eth:MLN": "(AUTO) duplicate key", + "erc20:eth:MTC:0": "(AUTO) duplicate key", + "erc20:eth:MTC:1": "(AUTO) duplicate key", + "erc20:eth:NONE": "(AUTO) duplicate key", + "erc20:eth:NXX OLD": "(AUTO) duplicate key", + "erc20:eth:OHNI:0": "(AUTO) duplicate key", + "erc20:eth:OHNI:1": "(AUTO) duplicate key", + "erc20:eth:OPEN:0": "(AUTO) duplicate key", + "erc20:eth:OPEN:1": "(AUTO) duplicate key", + "erc20:eth:PLAY": "(AUTO) duplicate key", + "erc20:eth:PRPS:0": "(AUTO) duplicate key", + "erc20:eth:PRPS:1": "(AUTO) duplicate key", + "erc20:eth:PTC": "(AUTO) duplicate key", + "erc20:eth:RDN": "(AUTO) duplicate key", + "erc20:eth:REP:0": "(AUTO) duplicate key", + "erc20:eth:REP:1": "(AUTO) duplicate key", + "erc20:eth:SGT:0": "(AUTO) duplicate key", + "erc20:eth:SGT:1": "(AUTO) duplicate key", + "erc20:eth:SKRP:0": "(AUTO) duplicate key", + "erc20:eth:SKRP:1": "(AUTO) duplicate key", + "erc20:eth:SKRP:2": "(AUTO) duplicate key", + "erc20:eth:SMART": "(AUTO) duplicate key", + "erc20:eth:SMT:0": "(AUTO) duplicate key", + "erc20:eth:SMT:1": "(AUTO) duplicate key", + "erc20:eth:SMT:2": "(AUTO) duplicate key", + "erc20:eth:SS:0": "(AUTO) duplicate key", + "erc20:eth:SS:1": "(AUTO) duplicate key", + "erc20:eth:TRC": "(AUTO) duplicate key", + "erc20:eth:UMKA:0": "(AUTO) duplicate key", + "erc20:eth:UMKA:1": "(AUTO) duplicate key", + "erc20:eth:VIBEX:0": "(AUTO) duplicate key", + "erc20:eth:VIBEX:1": "(AUTO) duplicate key", + "erc20:eth:WHO:0": "(AUTO) duplicate key", + "erc20:eth:WHO:1": "(AUTO) duplicate key", + "erc20:eth:WOLK:0": "(AUTO) duplicate key", + "erc20:eth:WOLK:1": "(AUTO) duplicate key", + "erc20:eth:YEED:0": "(AUTO) duplicate key", + "erc20:eth:YEED:1": "(AUTO) duplicate key", + "erc20:eth:ZRX": "(AUTO) duplicate key", + "erc20:kov:DAI": "(AUTO) duplicate key", + "erc20:kov:DGD": "(AUTO) duplicate key", + "erc20:kov:GNT": "(AUTO) duplicate key", + "erc20:kov:GUP": "(AUTO) duplicate key", + "erc20:kov:MKR": "(AUTO) duplicate key", + "erc20:kov:MLN": "(AUTO) duplicate key", + "erc20:kov:REP": "(AUTO) duplicate key", + "erc20:kov:ZRX": "(AUTO) duplicate key", + "erc20:rin:KC": "(AUTO) duplicate key", + "erc20:rin:NONE": "(AUTO) duplicate key", + "erc20:rin:RDN": "(AUTO) duplicate key", + "erc20:rop:NONE": "(AUTO) duplicate key" } }, "webwallet": { diff --git a/tools/support.py b/tools/support.py index 0e90e9617..ddb6efc7a 100755 --- a/tools/support.py +++ b/tools/support.py @@ -7,11 +7,11 @@ import coin_info import json SUPPORT_INFO = coin_info.get_support_data() -MISSING_MEANS_NO = ("connect", "webwallet") -VERSIONED_SUPPORT_INFO = ("trezor1", "trezor2") VERSION_RE = re.compile(r"\d+.\d+.\d+") +ERC20_DUPLICATE_KEY = "(AUTO) duplicate key" + def write_support_info(): with open(os.path.join(coin_info.DEFS_DIR, "support.json"), "w") as f: @@ -19,6 +19,33 @@ def write_support_info(): f.write("\n") +def support_dicts(device): + return SUPPORT_INFO[device]["supported"], SUPPORT_INFO[device]["unsupported"] + + +def all_support_dicts(): + for device in SUPPORT_INFO: + yield (device, *support_dicts(device)) + + +def clear_support(device, key): + supported, unsupported = support_dicts(device) + supported.pop(key, None) + unsupported.pop(key, None) + + +def set_supported(device, key, value): + clear_support(device, key) + supported, _ = support_dicts(device) + supported[key] = value + + +def set_unsupported(device, key, value): + clear_support(device, key) + _, unsupported = support_dicts(device) + unsupported[key] = value + + def print_support(coin): def support_value(where, key, missing_means_no=False): if "supported" in where and key in where["supported"]: @@ -42,13 +69,13 @@ def print_support(coin): key, name, shortcut = coin["key"], coin["name"], coin["shortcut"] print(f"{key} - {name} ({shortcut})") if coin.get("duplicate"): - if key.startswith("erc20:"): + if coin_info.is_token(coin): print(" * DUPLICATE SYMBOL (no support)") return else: print(" * DUPLICATE SYMBOL") for dev, where in SUPPORT_INFO.items(): - missing_means_no = dev in MISSING_MEANS_NO + missing_means_no = dev in coin_info.MISSING_SUPPORT_MEANS_NO print(" *", dev, ":", support_value(where, key, missing_means_no)) @@ -73,7 +100,7 @@ def check_support_values(): else: for key, value in supported.items(): try: - if device in VERSIONED_SUPPORT_INFO: + if device in coin_info.VERSIONED_SUPPORT_INFO: _check_value_version_soon(value) else: if value is not True: @@ -94,48 +121,113 @@ def check_support_values(): def find_unsupported_coins(coins_dict): result = {} - for device in VERSIONED_SUPPORT_INFO: - values = SUPPORT_INFO[device] - support_set = set() - support_set.update(values["supported"].keys()) - support_set.update(values["unsupported"].keys()) + for device in coin_info.VERSIONED_SUPPORT_INFO: + supported, unsupported = support_dicts(device) + support_set = set(supported.keys()) + support_set.update(unsupported.keys()) - result[device] = unsupported = [] + result[device] = [] for key, coin in coins_dict.items(): if coin.get("duplicate"): continue if key not in support_set: - unsupported.append(coin) + result[device].append(coin) return result def find_orphaned_support_keys(coins_dict): - result = {} - for device, values in SUPPORT_INFO.items(): - device_res = {} - for supkey, supvalues in values.items(): - orphans = set() - for coin_key in supvalues.keys(): - if coin_key not in coins_dict: - orphans.add(coin_key) - device_res[supkey] = orphans - result[device] = device_res + orphans = set() + for _, supported, unsupported in all_support_dicts(): + orphans.update(key for key in supported if key not in coins_dict) + orphans.update(key for key in unsupported if key not in coins_dict) + + return orphans + +def find_supported_duplicate_tokens(coins_dict): + result = [] + for _, supported, _ in all_support_dicts(): + for key in supported: + if not key.startswith("erc20:"): + continue + if coins_dict.get(key, {}).get("duplicate"): + result.append(key) return result +def process_erc20(coins_dict): + """Make sure that: + * orphaned ERC20 support info is cleared out + * duplicate ERC20 tokens are not listed as supported + * non-duplicate ERC20 tokens are cleared out from the unsupported list + """ + erc20_dict = { + key: coin.get("duplicate", False) + for key, coin in coins_dict.items() + if coin_info.is_token(coin) + } + for device, supported, unsupported in all_support_dicts(): + nondups = set() + dups = set(key for key, value in erc20_dict.items() if value) + for key in supported: + if key not in erc20_dict: + continue + if not erc20_dict[key]: + dups.discard(key) + + for key in unsupported: + if key not in erc20_dict: + continue + # ignore dups that are unsupported now + dups.discard(key) + + if not erc20_dict[key] and unsupported[key] == ERC20_DUPLICATE_KEY: + # remove duplicate status + nondups.add(key) + + for key in dups: + if device in coin_info.MISSING_SUPPORT_MEANS_NO: + clear_support(device, key) + else: + print(f"ERC20 on {device}: adding duplicate {key}") + set_unsupported(device, key, ERC20_DUPLICATE_KEY) + + for key in nondups: + print(f"ERC20 on {device}: clearing non-duplicate {key}") + clear_support(device, key) + + @click.group() def cli(): pass +@cli.command() +def fix(): + """Fix expected problems. + + Prunes orphaned keys and ensures that ERC20 duplicate info matches support info. + """ + all_coins = coin_info.get_all(deduplicate=False) + coin_info.mark_duplicate_shortcuts(all_coins.as_list()) + coins_dict = all_coins.as_dict() + + orphaned = find_orphaned_support_keys(coins_dict) + for orphan in orphaned: + print(f"pruning orphan {orphan}") + for device in SUPPORT_INFO: + clear_support(device, orphan) + + process_erc20(coins_dict) + write_support_info() + + @cli.command() # fmt: off -@click.option("-p", "--prune-orphans", is_flag=True, help="Remove orphaned keys for which there is no corresponding coin info") @click.option("-t", "--ignore-tokens", is_flag=True, help="Ignore unsupported ERC20 tokens") # fmt: on -def check(prune_orphans, ignore_tokens): +def check(ignore_tokens): """Check validity of support information. Ensures that `support.json` data is well formed, there are no keys without @@ -158,28 +250,25 @@ def check(prune_orphans, ignore_tokens): checks_ok = False orphaned = find_orphaned_support_keys(coins_dict) - for device, values in orphaned.items(): - for supkey, supvalues in values.items(): - for key in supvalues: - print(f"orphaned key {device} -> {supkey} -> {key}") - if prune_orphans: - del SUPPORT_INFO[device][supkey][key] - else: - checks_ok = False - - if prune_orphans: - write_support_info() + for orphan in orphaned: + print(f"orphaned key {orphan}") + checks_ok = False missing = find_unsupported_coins(coins_dict) for device, values in missing.items(): if ignore_tokens: - values = [coin for coin in values if not coin["key"].startswith("erc20:")] + values = [coin for coin in values if not coin_info.is_token(coin)] if values: checks_ok = False print(f"Device {device} has missing support infos:") for coin in values: print(f"{coin['key']} - {coin['name']}") + supported_dups = find_supported_duplicate_tokens(coins_dict) + for coin in supported_dups: + checks_ok = False + print(f"Token {coin['key']} ({coin['name']}) is duplicate but supported") + if not checks_ok: print("Some checks have failed") sys.exit(1) @@ -189,11 +278,12 @@ def check(prune_orphans, ignore_tokens): # fmt: off @click.argument("version") @click.option("--git-tag/--no-git-tag", "-g", default=False, help="create a corresponding Git tag") -@click.option("--soon/--no-soon", default=True, help="Release coins marked 'soon'") -@click.option("--missing/--no-missing", default=True, help="Release coins with missing support info") +@click.option("--release-soon/--no-release-soon", default=True, help="Release coins marked 'soon'") +@click.option("--release-missing/--no-release-missing", default=True, help="Release coins with missing support info") @click.option("-n", "--dry-run", is_flag=True, help="Do not write changes") +@click.option("-s", "--soon", is_flag=True, help="Only set missing support-infos to be released 'soon'.") # fmt: on -def release(version, git_tag, soon, missing, dry_run): +def release(version, git_tag, release_soon, release_missing, dry_run, soon): """Release a new Trezor firmware. Update support infos so that all coins have a clear support status. @@ -206,33 +296,43 @@ def release(version, git_tag, soon, missing, dry_run): version_tuple = list(map(int, version.split("."))) device = f"trezor{version_tuple[0]}" - print(f"Releasing {device} firmware version {version}") + if soon and git_tag: + raise click.ClickException("Cannot git-tag a 'soon' revision") + + if soon: + version = "soon" + print(f"Moving {device} missing infos to 'soon'") + else: + print(f"Releasing {device} firmware version {version}") defs = coin_info.get_all(deduplicate=False) coin_info.mark_duplicate_shortcuts(defs.as_list()) coins_dict = defs.as_dict() - if missing: + # process those darned ERC20 duplicates + + if release_missing: missing_list = find_unsupported_coins(coins_dict)[device] for coin in missing_list: key = coin["key"] - if coin.get("duplicate"): + if coin.get("duplicate") and coin_info.is_token(coin): print(f"UNsupporting duplicate coin {key} ({coin['name']})") - SUPPORT_INFO[device]["unsupported"][key] = "duplicate key" + set_unsupported(device, key, ERC20_DUPLICATE_KEY) else: print(f"Adding missing {key} ({coin['name']})") - SUPPORT_INFO[device]["supported"][key] = version + set_supported(device, key, version) - if soon: + if not soon and release_soon: + supported, _ = support_dicts(device) soon_list = [ coins_dict[key] - for key, val in SUPPORT_INFO[device]["supported"].items() + for key, val in supported if val == "soon" and key in coins_dict ] for coin in soon_list: key = coin["key"] print(f"Adding soon-released {key} ({coin['name']})") - SUPPORT_INFO[device]["supported"][key] = version + set_supported(device, key, version) if git_tag: print("git tag not supported yet") @@ -253,23 +353,9 @@ def show(keyword): defs = coin_info.get_all(deduplicate=False).as_list() coin_info.mark_duplicate_shortcuts(defs) - for coin in defs: - key = coin["key"].lower() - name = coin["name"].lower() - shortcut = coin["shortcut"].lower() - symsplit = shortcut.split(" ", maxsplit=1) - symbol = symsplit[0] - suffix = symsplit[1] if len(symsplit) > 1 else "" - for kw in keyword: - kwl = kw.lower() - if ( - kwl == key - or kwl in name - or kwl == shortcut - or kwl == symbol - or kwl in suffix - ): - print_support(coin) + for kw in keyword: + for coin in coin_info.search(defs, kw): + print_support(coin) @cli.command(name="set") @@ -304,7 +390,7 @@ def set_support_value(key, entries, reason): click.echo("Use 'support.py show' to search for the right one.") sys.exit(1) - if coins[key].get("duplicate"): + if coins[key].get("duplicate") and coin_info.is_token(coins[key]): shortcut = coins[key]["shortcut"] click.echo(f"Note: shortcut {shortcut} is a duplicate.") click.echo(f"Coin will NOT be listed regardless of support.json status.") @@ -319,26 +405,20 @@ def set_support_value(key, entries, reason): if device not in SUPPORT_INFO: raise click.ClickException(f"unknown device: {device}") - where = SUPPORT_INFO[device] - # clear existing info - where["supported"].pop(key, None) - where["unsupported"].pop(key, None) - if value in ("yes", "true", "1"): - where["supported"][key] = True + set_supported(device, key, True) elif value in ("no", "false", "0"): - if device in MISSING_MEANS_NO: + if device in coin_info.MISSING_SUPPORT_MEANS_NO: click.echo("Setting explicitly unsupported for {device}.") click.echo("Perhaps you meant removing support, i.e., '{device}=' ?") if not reason: reason = click.prompt(f"Enter reason for not supporting on {device}:") - where["unsupported"][key] = reason + set_unsupported(device, key, reason) elif value == "": - # do nothing, existing info is cleared - pass + clear_support(device, key) else: - # arbitrary string? - where["supported"][key] = value + # arbitrary string + set_supported(device, key, value) print_support(coins[key]) write_support_info() From e070b22aa3524e369535d281b11608dfdbf50d02 Mon Sep 17 00:00:00 2001 From: matejcik Date: Thu, 23 Aug 2018 17:50:38 +0200 Subject: [PATCH 514/767] coins_details: update tool, overrides, generated files and upstream token source --- defs/coins_details.json | 1606 +++++++++++++++++------------- defs/coins_details.override.json | 20 - defs/ethereum/tokens | 2 +- defs/support.json | 16 + tools/coins_details.py | 70 +- 5 files changed, 942 insertions(+), 772 deletions(-) diff --git a/defs/coins_details.json b/defs/coins_details.json index 06b93c5bc..6b250823f 100644 --- a/defs/coins_details.json +++ b/defs/coins_details.json @@ -5,7 +5,7 @@ "Github": "https://github.com/Bitcoin-ABC/bitcoin-abc", "Homepage": "https://www.bitcoincash.org" }, - "marketcap_usd": 14034413679, + "marketcap_usd": 9060927775, "name": "Bitcoin Cash", "shortcut": "BCH", "t1_enabled": "yes", @@ -21,7 +21,7 @@ "Github": "https://github.com/bitcoin/bitcoin", "Homepage": "https://bitcoin.org" }, - "marketcap_usd": 139846691999, + "marketcap_usd": 111347645251, "name": "Bitcoin", "shortcut": "BTC", "t1_enabled": "yes", @@ -37,7 +37,7 @@ "Github": "https://github.com/BTCPrivate/BitcoinPrivate", "Homepage": "https://btcprivate.org" }, - "marketcap_usd": 139956956, + "marketcap_usd": 81211090, "name": "Bitcoin Private", "shortcut": "BTCP", "t1_enabled": "yes", @@ -52,7 +52,7 @@ "Github": "https://github.com/BTCGPU/BTCGPU", "Homepage": "https://bitcoingold.org" }, - "marketcap_usd": 523433696, + "marketcap_usd": 316050580, "name": "Bitcoin Gold", "shortcut": "BTG", "t1_enabled": "yes", @@ -68,7 +68,7 @@ "Github": "https://github.com/LIMXTEC/BitCore", "Homepage": "https://bitcore.cc" }, - "marketcap_usd": 30853808, + "marketcap_usd": 19911585, "name": "Bitcore", "shortcut": "BTX", "t1_enabled": "no", @@ -81,7 +81,7 @@ "Github": "https://github.com/Crowndev/crowncoin", "Homepage": "https://crown.tech" }, - "marketcap_usd": 9788097, + "marketcap_usd": 5211934, "name": "Crown", "shortcut": "CRW", "t1_enabled": "no", @@ -94,7 +94,7 @@ "Github": "https://github.com/dashpay/dash", "Homepage": "https://www.dash.org" }, - "marketcap_usd": 1942889524, + "marketcap_usd": 1148041905, "name": "Dash", "shortcut": "DASH", "t1_enabled": "yes", @@ -110,7 +110,7 @@ "Github": "https://github.com/decred/dcrd", "Homepage": "https://www.decred.org" }, - "marketcap_usd": 495856582, + "marketcap_usd": 305128323, "name": "Decred", "shortcut": "DCR", "t1_enabled": "yes", @@ -123,7 +123,7 @@ "Github": "https://github.com/digibyte/digibyte", "Homepage": "https://digibyte.io" }, - "marketcap_usd": 427647326, + "marketcap_usd": 257382920, "name": "DigiByte", "shortcut": "DGB", "t1_enabled": "yes", @@ -139,8 +139,8 @@ "marketcap_usd": 0, "name": "Denarius", "shortcut": "DNR", - "t1_enabled": "no", - "t2_enabled": "no", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "coin", "wallet": {} }, @@ -149,7 +149,7 @@ "Github": "https://github.com/dogecoin/dogecoin", "Homepage": "http://dogecoin.com" }, - "marketcap_usd": 371487254, + "marketcap_usd": 273658182, "name": "Dogecoin", "shortcut": "DOGE", "t1_enabled": "yes", @@ -164,7 +164,7 @@ "Github": "https://github.com/fujicoin/fujicoin", "Homepage": "http://fujicoin.org" }, - "marketcap_usd": 745832, + "marketcap_usd": 515593, "name": "Fujicoin", "shortcut": "FJC", "t1_enabled": "yes", @@ -179,11 +179,11 @@ "Github": "https://github.com/flash-coin", "Homepage": "https://www.flashcoin.io" }, - "marketcap_usd": 10829470, + "marketcap_usd": 5807712, "name": "Flashcoin", "shortcut": "FLASH", - "t1_enabled": "no", - "t2_enabled": "no", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "coin", "wallet": {} }, @@ -192,11 +192,11 @@ "Github": "https://github.com/FeatherCoin/Feathercoin", "Homepage": "https://feathercoin.com" }, - "marketcap_usd": 21246165, + "marketcap_usd": 10600270, "name": "Feathercoin", "shortcut": "FTC", - "t1_enabled": "no", - "t2_enabled": "no", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "coin", "wallet": {} }, @@ -205,7 +205,7 @@ "Github": "https://github.com/Groestlcoin/groestlcoin", "Homepage": "https://www.groestlcoin.org" }, - "marketcap_usd": 45964821, + "marketcap_usd": 41625236, "name": "Groestlcoin", "shortcut": "GRS", "t1_enabled": "yes", @@ -223,8 +223,8 @@ "marketcap_usd": 0, "name": "Koto", "shortcut": "KOTO", - "t1_enabled": "no", - "t2_enabled": "no", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "coin", "wallet": {} }, @@ -233,7 +233,7 @@ "Github": "https://github.com/litecoin-project/litecoin", "Homepage": "https://litecoin.org" }, - "marketcap_usd": 4774226092, + "marketcap_usd": 3258961661, "name": "Litecoin", "shortcut": "LTC", "t1_enabled": "yes", @@ -249,7 +249,7 @@ "Github": "https://github.com/monacoinproject/monacoin", "Homepage": "https://monacoin.org" }, - "marketcap_usd": 128119443, + "marketcap_usd": 96010658, "name": "Monacoin", "shortcut": "MONA", "t1_enabled": "yes", @@ -267,8 +267,8 @@ "marketcap_usd": 0, "name": "MUE", "shortcut": "MUE", - "t1_enabled": "no", - "t2_enabled": "no", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "coin", "wallet": {} }, @@ -277,7 +277,7 @@ "Github": "https://github.com/namecoin/namecoin-core", "Homepage": "https://namecoin.org" }, - "marketcap_usd": 32374353, + "marketcap_usd": 24205722, "name": "Namecoin", "shortcut": "NMC", "t1_enabled": "yes", @@ -292,11 +292,24 @@ "Github": "https://github.com/FundacionPesetacoin/PesetacoinCore", "Homepage": "http://pesetacoin.info" }, - "marketcap_usd": 3356792, + "marketcap_usd": 2061608, "name": "Pesetacoin", "shortcut": "PTC", - "t1_enabled": "no", - "t2_enabled": "no", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "coin", + "wallet": {} + }, + "coin:SMART": { + "links": { + "Github": "https://github.com/SmartCash/Core-Smart", + "Homepage": "https://smarcash.cc" + }, + "marketcap_usd": 49514130, + "name": "SmartCash", + "shortcut": "SMART", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "coin", "wallet": {} }, @@ -337,8 +350,8 @@ "marketcap_usd": 0, "name": "Bitcoin Gold Testnet", "shortcut": "TBTG", - "t1_enabled": "no", - "t2_enabled": "no", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "coin", "wallet": {} }, @@ -391,7 +404,7 @@ "Github": "https://github.com/terracoin/terracoin", "Homepage": "https://terracoin.io" }, - "marketcap_usd": 2187227, + "marketcap_usd": 1511563, "name": "Terracoin", "shortcut": "TRC", "t1_enabled": "no", @@ -404,7 +417,7 @@ "Github": "https://github.com/viacoin", "Homepage": "https://viacoin.org" }, - "marketcap_usd": 30564496, + "marketcap_usd": 19043035, "name": "Viacoin", "shortcut": "VIA", "t1_enabled": "yes", @@ -419,7 +432,7 @@ "Github": "https://github.com/vertcoin-project/vertcoin-core", "Homepage": "https://vertcoin.org" }, - "marketcap_usd": 61062807, + "marketcap_usd": 31582960, "name": "Vertcoin", "shortcut": "VTC", "t1_enabled": "yes", @@ -434,11 +447,11 @@ "Github": "https://github.com/myriadcoin/myriadcoin", "Homepage": "https://www.myriadcoin.org" }, - "marketcap_usd": 6347837, + "marketcap_usd": 4644297, "name": "Myriad", "shortcut": "XMY", - "t1_enabled": "no", - "t2_enabled": "no", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "coin", "wallet": {} }, @@ -447,7 +460,7 @@ "Github": "https://github.com/zcoinofficial/zcoin", "Homepage": "https://zcoin.io" }, - "marketcap_usd": 84122050, + "marketcap_usd": 67426017, "name": "Zcoin", "shortcut": "XZC", "t1_enabled": "yes", @@ -463,7 +476,7 @@ "Github": "https://github.com/zcash/zcash", "Homepage": "https://z.cash" }, - "marketcap_usd": 942969596, + "marketcap_usd": 611353070, "name": "Zcash", "shortcut": "ZEC", "t1_enabled": "yes", @@ -478,7 +491,7 @@ "Github": "https://github.com/ZencashOfficial/zen", "Homepage": "https://zencash.com" }, - "marketcap_usd": 125295762, + "marketcap_usd": 90375887, "name": "Zencash", "shortcut": "ZEN", "t1_enabled": "no", @@ -496,7 +509,7 @@ "name": "Dash Testnet", "shortcut": "tDASH", "t1_enabled": "yes", - "t2_enabled": "no", + "t2_enabled": "soon", "type": "coin", "wallet": {} }, @@ -514,6 +527,20 @@ "type": "coin", "wallet": {} }, + "coin:tSMART": { + "hidden": 1, + "links": { + "Github": "https://github.com/SmartCash/Core-Smart", + "Homepage": "https://smartcash.cc" + }, + "marketcap_usd": 0, + "name": "SmartCash Testnet", + "shortcut": "tSMART", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "coin", + "wallet": {} + }, "coin:tXZC": { "hidden": 1, "links": { @@ -545,6 +572,38 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:esn:DGT": { + "address": "0x72ea3508D9d817A91465aBb59bE10FEF9857A055", + "hidden": 1, + "links": {}, + "marketcap_usd": 0, + "name": "DGT", + "network": "esn", + "shortcut": "DGT", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:esn:TOPM": { + "address": "0x0146B9dCd9FB2ABC1b5B136C28D20d0037526961", + "hidden": 1, + "links": {}, + "marketcap_usd": 0, + "name": "TOPM", + "network": "esn", + "shortcut": "TOPM", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:etc:BEC": { "address": "0x085fb4f24031EAedbC2B611AA528f22343eB52Db", "hidden": 1, @@ -597,6 +656,24 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:$HUR": { + "address": "0xCDB7eCFd3403Eef3882c65B761ef9B5054890a47", + "links": { + "Github": "https://github.com/HurifyPlatform", + "Homepage": "https://hurify.co/" + }, + "marketcap_usd": 0, + "name": "$Hurify Token", + "network": "eth", + "shortcut": "$HUR", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:$TEAK": { "address": "0x7DD7F56D697Cc0f2b52bD55C057f378F1fE6Ab4b", "links": { @@ -619,7 +696,7 @@ "links": { "Homepage": "https://0xbitcoin.org/" }, - "marketcap_usd": 2562071, + "marketcap_usd": 1277837, "name": "0xBitcoin", "network": "eth", "shortcut": "0xBTC", @@ -636,7 +713,7 @@ "links": { "Homepage": "https://firstblood.io" }, - "marketcap_usd": 12448386, + "marketcap_usd": 5600207, "name": "FirstBlood", "network": "eth", "shortcut": "1ST", @@ -698,6 +775,23 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:3LT": { + "address": "0x430241368c1D293fdA21DBa8Bb7aF32007c59109", + "links": { + "Homepage": "https://3lt.io" + }, + "marketcap_usd": 0, + "name": "TrillionToken", + "network": "eth", + "shortcut": "3LT", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:A18": { "address": "0xBDe8f7820b5544a49D34F9dDeaCAbEDC7C0B5adc", "links": { @@ -755,7 +849,7 @@ "links": { "Homepage": "http://accelerator.network" }, - "marketcap_usd": 207162, + "marketcap_usd": 101922, "name": "Accelerator Network", "network": "eth", "shortcut": "ACC", @@ -790,7 +884,7 @@ "Github": "https://github.com/aditus", "Homepage": "https://aditus.net" }, - "marketcap_usd": 1522306, + "marketcap_usd": 551147, "name": "Aditus", "network": "eth", "shortcut": "ADI", @@ -825,7 +919,7 @@ "links": { "Homepage": "https://adshares.net" }, - "marketcap_usd": 2099546, + "marketcap_usd": 2001663, "name": "AdShares", "network": "eth", "shortcut": "ADST", @@ -843,7 +937,7 @@ "Github": "https://github.com/adchain", "Homepage": "https://adtoken.com" }, - "marketcap_usd": 18169162, + "marketcap_usd": 7973488, "name": "AdToken", "network": "eth", "shortcut": "ADT", @@ -879,7 +973,7 @@ "Github": "https://github.com/aeternity", "Homepage": "https://www.aeternity.com/" }, - "marketcap_usd": 477255215, + "marketcap_usd": 225631023, "name": "aeternity", "network": "eth", "shortcut": "AE", @@ -897,7 +991,7 @@ "Github": "https://github.com/singnet/singnet", "Homepage": "https://singularitynet.io" }, - "marketcap_usd": 45481505, + "marketcap_usd": 22605681, "name": "SingularityNET", "network": "eth", "shortcut": "AGI", @@ -915,7 +1009,7 @@ "Github": "https://github.com/aionnetwork", "Homepage": "https://aion.network/" }, - "marketcap_usd": 156312044, + "marketcap_usd": 98801314, "name": "Aion", "network": "eth", "shortcut": "AION", @@ -932,7 +1026,7 @@ "links": { "Homepage": "https://airtoken.com" }, - "marketcap_usd": 5084029, + "marketcap_usd": 2906960, "name": "AirToken", "network": "eth", "shortcut": "AIR", @@ -950,7 +1044,7 @@ "Github": "https://github.com/AigangNetwork", "Homepage": "https://aigang.network/" }, - "marketcap_usd": 1295077, + "marketcap_usd": 613613, "name": "Aigang", "network": "eth", "shortcut": "AIX", @@ -1003,7 +1097,7 @@ "Github": "https://github.com/AlisProject", "Homepage": "https://alismedia.jp" }, - "marketcap_usd": 3001684, + "marketcap_usd": 2026289, "name": "ALIS Token", "network": "eth", "shortcut": "ALIS", @@ -1068,13 +1162,31 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:AMLT": { + "address": "0xCA0e7269600d353F70b14Ad118A49575455C0f2f", + "links": { + "Github": "https://github.com/amlt-by-coinfirm", + "Homepage": "https://amlt.coinfirm.io/" + }, + "marketcap_usd": 1847196, + "name": "AMLT", + "network": "eth", + "shortcut": "AMLT", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:AMN": { "address": "0x737F98AC8cA59f2C68aD658E3C3d8C8963E40a4c", "links": { "Github": "https://github.com/amontech", "Homepage": "https://amon.tech" }, - "marketcap_usd": 1054782, + "marketcap_usd": 389102, "name": "Amon", "network": "eth", "shortcut": "AMN", @@ -1144,7 +1256,7 @@ "Github": "https://github.com/Oxchild/crowdsale", "Homepage": "https://apisplatform.io" }, - "marketcap_usd": 25481250, + "marketcap_usd": 14512148, "name": "APIS", "network": "eth", "shortcut": "APIS", @@ -1162,7 +1274,7 @@ "Github": "https://github.com/Aptoide/AppCoins-ethereumj", "Homepage": "https://appcoins.io" }, - "marketcap_usd": 17304441, + "marketcap_usd": 8913359, "name": "AppCoins", "network": "eth", "shortcut": "APPC", @@ -1179,7 +1291,7 @@ "links": { "Homepage": "https://aigang.network" }, - "marketcap_usd": 1295077, + "marketcap_usd": 613613, "name": "AIGang", "network": "eth", "shortcut": "APT", @@ -1214,7 +1326,7 @@ "links": { "Homepage": "https://www.arbitragect.com" }, - "marketcap_usd": 235767, + "marketcap_usd": 134561, "name": "ArbitrageCT", "network": "eth", "shortcut": "ARCT", @@ -1319,7 +1431,7 @@ "links": { "Homepage": "https://airswap.io" }, - "marketcap_usd": 21923707, + "marketcap_usd": 12374307, "name": "Airswap", "network": "eth", "shortcut": "AST", @@ -1331,41 +1443,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:ATH": { - "address": "0x17052d51E954592C1046320c2371AbaB6C73Ef10", - "links": { - "Homepage": "https://athenianwarriortoken.com" - }, - "marketcap_usd": 0, - "name": "Athenian Warrior Token", - "network": "eth", - "shortcut": "ATH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "erc20:eth:ATH (AIgatha Token)": { - "address": "0x1543d0F83489e82A1344DF6827B23d541F235A50", - "links": { - "Github": "https://github.com/AIgatha", - "Homepage": "https://aigatha.com" - }, - "marketcap_usd": 0, - "name": "AIgatha Token", - "network": "eth", - "shortcut": "ATH (AIgatha Token)", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:ATL": { "address": "0x78B7FADA55A64dD895D8c8c35779DD8b67fA8a05", "links": { @@ -1512,7 +1589,7 @@ "Github": "https://www.github.com/axpire", "Homepage": "https://www.axpire.io" }, - "marketcap_usd": 5350824, + "marketcap_usd": 4373208, "name": "aXpire", "network": "eth", "shortcut": "AXPR", @@ -1707,7 +1784,7 @@ "Github": "https://github.com/thebeetoken", "Homepage": "https://www.beetoken.com" }, - "marketcap_usd": 3484443, + "marketcap_usd": 1742594, "name": "Bee Token", "network": "eth", "shortcut": "BEE", @@ -1831,7 +1908,7 @@ "Github": "https://github.com/BankEx", "Homepage": "https://bankex.com/" }, - "marketcap_usd": 14448321, + "marketcap_usd": 6012109, "name": "BANKEX", "network": "eth", "shortcut": "BKX", @@ -1867,7 +1944,7 @@ "Github": "https://github.com/BlueCrypto", "Homepage": "https://blueprotocol.com/" }, - "marketcap_usd": 2867676, + "marketcap_usd": 1603825, "name": "Ethereum Blue", "network": "eth", "shortcut": "BLUE", @@ -1902,7 +1979,7 @@ "links": { "Homepage": "https://www.iconomi.net" }, - "marketcap_usd": 54313273, + "marketcap_usd": 44416139, "name": "Iconomi", "network": "eth", "shortcut": "BLX (Iconomi)", @@ -2039,7 +2116,7 @@ "Github": "https://github.com/bancorprotocol", "Homepage": "https://www.bancor.network/discover" }, - "marketcap_usd": 117725395, + "marketcap_usd": 82991724, "name": "Bancor", "network": "eth", "shortcut": "BNT", @@ -2090,7 +2167,7 @@ "links": { "Homepage": "https://bonpay.com" }, - "marketcap_usd": 1319939, + "marketcap_usd": 965311, "name": "Bonpay", "network": "eth", "shortcut": "BON", @@ -2136,6 +2213,24 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:BOX": { + "address": "0xe1A178B681BD05964d3e3Ed33AE731577d9d96dD", + "links": { + "Github": "https://github.com/boxproject", + "Homepage": "https://box.la/" + }, + "marketcap_usd": 0, + "name": "BOX Token", + "network": "eth", + "shortcut": "BOX", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:BPT": { "address": "0x327682779bAB2BF4d1337e8974ab9dE8275A7Ca8", "links": { @@ -2176,7 +2271,7 @@ "links": { "Homepage": "http://bro-consortium.io" }, - "marketcap_usd": 77904, + "marketcap_usd": 27576, "name": "BRAT", "network": "eth", "shortcut": "BRAT", @@ -2194,7 +2289,7 @@ "Github": "https://github.com/breadwallet", "Homepage": "https://token.breadapp.com/en" }, - "marketcap_usd": 35196841, + "marketcap_usd": 31877319, "name": "Bread", "network": "eth", "shortcut": "BRD", @@ -2346,48 +2441,13 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:BTL (Battle)": { - "address": "0x2accaB9cb7a48c3E82286F0b2f8798D201F4eC3f", - "links": { - "Github": "https://github.com/Neurone/persians", - "Homepage": "http://persians.network" - }, - "marketcap_usd": 0, - "name": "BTL (Battle)", - "network": "eth", - "shortcut": "BTL (Battle)", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "erc20:eth:BTL (Bitlle)": { - "address": "0x92685E93956537c25Bb75D5d47fca4266dd628B8", - "links": { - "Homepage": "https://bitlle.com" - }, - "marketcap_usd": 0, - "name": "Bitlle Token", - "network": "eth", - "shortcut": "BTL (Bitlle)", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:BTM": { "address": "0xcB97e65F07DA24D46BcDD078EBebd7C6E6E3d750", "links": { "Github": "https://github.com/bytom", "Homepage": "https://bytom.io" }, - "marketcap_usd": 343741863, + "marketcap_usd": 163797956, "name": "Bytom", "network": "eth", "shortcut": "BTM", @@ -2451,6 +2511,22 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:BTZ": { + "address": "0xE5f867dE1EA81346df5181b8b48DD6B0BB3357B0", + "hidden": 1, + "links": {}, + "marketcap_usd": 0, + "name": "BTZ by Bunz", + "network": "eth", + "shortcut": "BTZ", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:BUC": { "address": "0xCa3c18a65b802eC267f8f4802545e7F53D24C75e", "links": { @@ -2490,7 +2566,7 @@ "Github": "https://github.com/cryptotwenty", "Homepage": "https://crypto20.com" }, - "marketcap_usd": 42246643, + "marketcap_usd": 27273273, "name": "Crypto20's Token", "network": "eth", "shortcut": "C20", @@ -2552,23 +2628,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:CAR": { - "address": "0x423e4322CDDa29156b49a17dfbd2aCC4b280600D", - "links": { - "Homepage": "https://mycarcoin.com" - }, - "marketcap_usd": 0, - "name": "Car Sharing Community", - "network": "eth", - "shortcut": "CAR", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:CARB": { "address": "0xA517a46Baad6B054A76bD19c46844f717fe69fea", "links": { @@ -2625,7 +2684,7 @@ "links": { "Homepage": "https://cashaa.com" }, - "marketcap_usd": 12039760, + "marketcap_usd": 9604839, "name": "Cashaa", "network": "eth", "shortcut": "CAS", @@ -3094,7 +3153,7 @@ "links": { "Homepage": "https://cindicator.com" }, - "marketcap_usd": 42756186, + "marketcap_usd": 25058233, "name": "Cindicator", "network": "eth", "shortcut": "CND", @@ -3201,7 +3260,7 @@ "Github": "https://github.com/CoinvestHQ", "Homepage": "https://coinve.st" }, - "marketcap_usd": 145556, + "marketcap_usd": 101879, "name": "Coinvest V2 Token", "network": "eth", "shortcut": "COIN", @@ -3235,7 +3294,7 @@ "links": { "Homepage": "https://covesting.io/" }, - "marketcap_usd": 19053930, + "marketcap_usd": 14548559, "name": "Covesting", "network": "eth", "shortcut": "COV", @@ -3271,7 +3330,7 @@ "Github": "https://github.com/aditus", "Homepage": "https://copytrack.io" }, - "marketcap_usd": 1647004, + "marketcap_usd": 908013, "name": "COPYTRACK", "network": "eth", "shortcut": "CPY", @@ -3341,7 +3400,7 @@ "links": { "Homepage": "https://bitbounce.io" }, - "marketcap_usd": 16106922, + "marketcap_usd": 9682409, "name": "Credo / Bitbounce", "network": "eth", "shortcut": "CREDO", @@ -3353,6 +3412,41 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:CRGO": { + "address": "0xf49CDD50aD408d387d611F88A647179C3de3492b", + "links": { + "Github": "https://github.com/CargoCoinRepo/Cargo-Coin", + "Homepage": "https://thecargocoin.com" + }, + "marketcap_usd": 0, + "name": "CargoCoin", + "network": "eth", + "shortcut": "CRGO", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:CRMT": { + "address": "0x9238bfB781A55eACC3Cf05F7DF94038c198CD9B9", + "links": { + "Homepage": "https://www.cremit.co" + }, + "marketcap_usd": 0, + "name": "Cremit", + "network": "eth", + "shortcut": "CRMT", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:CRPT": { "address": "0x80A7E048F37A50500351C204Cb407766fA3baE7f", "links": { @@ -3532,7 +3626,7 @@ "Github": "https://github.com/cargoxio", "Homepage": "https://cargox.io" }, - "marketcap_usd": 5508470, + "marketcap_usd": 3571073, "name": "CargoX", "network": "eth", "shortcut": "CXO", @@ -3544,12 +3638,29 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:CYFM": { + "address": "0x3f06B5D78406cD97bdf10f5C420B241D32759c80", + "links": { + "Homepage": "https://cyberfmradio.com" + }, + "marketcap_usd": 0, + "name": "CyberFM", + "network": "eth", + "shortcut": "CYFM", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:CryptoCarbon": { "address": "0xE4c94d45f7Aef7018a5D66f44aF780ec6023378e", "links": { "Homepage": "https://ccrb.io" }, - "marketcap_usd": 2465241, + "marketcap_usd": 1557193, "name": "CryptoCarbon", "network": "eth", "shortcut": "CryptoCarbon", @@ -3583,7 +3694,7 @@ "links": { "Homepage": "https://dadi.cloud" }, - "marketcap_usd": 6397034, + "marketcap_usd": 7093611, "name": "DADI", "network": "eth", "shortcut": "DADI", @@ -3595,30 +3706,12 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:DAI": { - "address": "0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359", - "links": { - "Github": "https://github.com/makerdao", - "Homepage": "https://makerdao.com" - }, - "marketcap_usd": 54947750, - "name": "Dai Stablecoin v1.0", - "network": "eth", - "shortcut": "DAI", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:DALC": { "address": "0x07D9e49Ea402194bf48A8276dAfB16E4eD633317", "links": { "Homepage": "http://www.dalecoin.org" }, - "marketcap_usd": 96967, + "marketcap_usd": 35219, "name": "DaleCoin", "network": "eth", "shortcut": "DALC", @@ -3706,7 +3799,7 @@ "Github": "https://github.com/streamr-dev", "Homepage": "https://www.streamr.com" }, - "marketcap_usd": 105505, + "marketcap_usd": 48676, "name": "DATACoin", "network": "eth", "shortcut": "DATACoin", @@ -3795,7 +3888,7 @@ "Github": "https://github.com/DistributedBanking/DCC", "Homepage": "http://dcc.finance" }, - "marketcap_usd": 22042740, + "marketcap_usd": 14545355, "name": "Distributed Credit Chain", "network": "eth", "shortcut": "DCC", @@ -3830,7 +3923,7 @@ "Github": "https://github.com/Dentacoin", "Homepage": "https://dentacoin.com" }, - "marketcap_usd": 114423800, + "marketcap_usd": 117536664, "name": "Dentacoin", "network": "eth", "shortcut": "DCN", @@ -3900,7 +3993,7 @@ "links": { "Homepage": "https://www.dentwireless.com" }, - "marketcap_usd": 30123358, + "marketcap_usd": 42212426, "name": "DENT", "network": "eth", "shortcut": "DENT", @@ -3912,15 +4005,16 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:DEPO": { - "address": "0x7cF271966F36343Bf0150F25E5364f7961c58201", + "erc20:eth:DGPT": { + "address": "0xf6cFe53d6FEbaEEA051f400ff5fc14F0cBBDacA1", "links": { - "Homepage": "https://aridika.com" + "Github": "https://github.com/digipulseio", + "Homepage": "https://www.digipulse.io" }, - "marketcap_usd": 0, - "name": "CRYPTODEPOZIT", + "marketcap_usd": 321244, + "name": "DigiPulse", "network": "eth", - "shortcut": "DEPO", + "shortcut": "DGPT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -3929,51 +4023,34 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:DGD": { - "address": "0xE0B7927c4aF23765Cb51314A0E0521A9645F0E2A", + "erc20:eth:DGS": { + "address": "0x6aEDbF8dFF31437220dF351950Ba2a3362168d1b", "links": { - "Homepage": "https://www.dgx.io" + "Github": "https://github.com/dragonglasscom", + "Homepage": "https://dragonglass.com/" }, "marketcap_usd": 0, - "name": "Digix DAO", + "name": "Dragonglass", "network": "eth", - "shortcut": "DGD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "erc20:eth:DGPT": { - "address": "0xf6cFe53d6FEbaEEA051f400ff5fc14F0cBBDacA1", - "links": { - "Github": "https://github.com/digipulseio", - "Homepage": "https://www.digipulse.io" - }, - "marketcap_usd": 2775061, - "name": "DigiPulse", - "network": "eth", - "shortcut": "DGPT", - "t1_enabled": "yes", - "t2_enabled": "yes", + "shortcut": "DGS", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:DGS": { - "address": "0x6aEDbF8dFF31437220dF351950Ba2a3362168d1b", + "erc20:eth:DGTX": { + "address": "0x1C83501478f1320977047008496DACBD60Bb15ef", "links": { - "Github": "https://github.com/dragonglasscom", - "Homepage": "https://dragonglass.com/" + "Github": "https://github.com/DigitexFutures", + "Homepage": "https://digitexfutures.com/" }, "marketcap_usd": 0, - "name": "Dragonglass", + "name": "DigitexFutures", "network": "eth", - "shortcut": "DGS", + "shortcut": "DGTX", "t1_enabled": "soon", "t2_enabled": "soon", "type": "erc20", @@ -3988,7 +4065,7 @@ "Github": "https://github.com/DigixGlobal", "Homepage": "https://digix.global" }, - "marketcap_usd": 2025076, + "marketcap_usd": 2320653, "name": "Digix Gold Token", "network": "eth", "shortcut": "DGX", @@ -4023,7 +4100,7 @@ "links": { "Homepage": "https://etheroll.com" }, - "marketcap_usd": 7929119, + "marketcap_usd": 4583040, "name": "Etheroll", "network": "eth", "shortcut": "DICE", @@ -4190,40 +4267,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:DROP": { - "address": "0x3c75226555FC496168d48B88DF83B95F16771F37", - "links": { - "Homepage": "https://droplex.org" - }, - "marketcap_usd": 0, - "name": "Droplex", - "network": "eth", - "shortcut": "DROP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "erc20:eth:DROP (dropil)": { - "address": "0x4672bAD527107471cB5067a887f4656D585a8A31", - "links": { - "Homepage": "https://dropil.com" - }, - "marketcap_usd": 111935208, - "name": "Dropil", - "network": "eth", - "shortcut": "DROP (dropil)", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:DRVH": { "address": "0x62D4c04644314F35868Ba4c65cc27a77681dE7a9", "links": { @@ -4265,7 +4308,7 @@ "Github": "https://github.com/dethertech", "Homepage": "https://dether.io" }, - "marketcap_usd": 2794427, + "marketcap_usd": 2158287, "name": "dether", "network": "eth", "shortcut": "DTH", @@ -4370,7 +4413,7 @@ "Github": "https://github.com/elangindonesia/EagleCoin", "Homepage": "https://eaglepay.io" }, - "marketcap_usd": 154491, + "marketcap_usd": 85158, "name": "EagleCoin", "network": "eth", "shortcut": "EAGLE", @@ -4455,7 +4498,7 @@ "links": { "Homepage": "https://edgeless.io" }, - "marketcap_usd": 33666309, + "marketcap_usd": 26281922, "name": "Edgeless", "network": "eth", "shortcut": "EDG", @@ -4472,7 +4515,7 @@ "links": { "Homepage": "https://eidoo.io" }, - "marketcap_usd": 25997263, + "marketcap_usd": 22786928, "name": "Eidoo", "network": "eth", "shortcut": "EDO", @@ -4484,6 +4527,24 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:EDR": { + "address": "0xc528c28FEC0A90C083328BC45f587eE215760A0F", + "links": { + "Github": "https://github.com/EndorCoin", + "Homepage": "https://www.endor.com" + }, + "marketcap_usd": 0, + "name": "Endor Protocol Token", + "network": "eth", + "shortcut": "EDR", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:EGT": { "address": "0x8e1b448EC7aDFc7Fa35FC2e885678bD323176E34", "links": { @@ -4561,7 +4622,7 @@ "Github": "https://github.com/eltcoin", "Homepage": "http://www.eltcoin.tech/" }, - "marketcap_usd": 342443, + "marketcap_usd": 94070, "name": "ELTCOIN", "network": "eth", "shortcut": "ELTCOIN", @@ -4738,7 +4799,7 @@ "links": { "Homepage": "https://eos.io" }, - "marketcap_usd": 7298516946, + "marketcap_usd": 4378649362, "name": "EOS", "network": "eth", "shortcut": "EOS", @@ -4791,7 +4852,7 @@ "links": { "Homepage": "https://www.ethbits.com" }, - "marketcap_usd": 1809661, + "marketcap_usd": 1264567, "name": "Ethbits", "network": "eth", "shortcut": "ETBS", @@ -4943,6 +5004,22 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:EXY": { + "address": "0x5c743a35E903F6c584514ec617ACEe0611Cf44f3", + "hidden": 1, + "links": {}, + "marketcap_usd": 3128973, + "name": "Experty", + "network": "eth", + "shortcut": "EXY", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:E\u20b9": { "address": "0xb67734521eAbBE9C773729dB73E16CC2dfb20A58", "links": { @@ -4996,23 +5073,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:FANX": { - "address": "0x7f6715c3FC4740A02F70De85B9FD50ac6001fEd9", - "links": { - "Homepage": "http://www.fanx.one/" - }, - "marketcap_usd": 0, - "name": "FANX Token", - "network": "eth", - "shortcut": "FANX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:FKX": { "address": "0x009e864923b49263c7F10D19B7f8Ab7a9A5AAd33", "links": { @@ -5123,7 +5183,7 @@ "Github": "https://github.com/FundRequest", "Homepage": "https://fundrequest.io" }, - "marketcap_usd": 1188860, + "marketcap_usd": 424114, "name": "FundRequest", "network": "eth", "shortcut": "FND", @@ -5152,23 +5212,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:FTC": { - "address": "0xe6f74dcfa0E20883008d8C16b6d9a329189D0C30", - "links": { - "Homepage": "https://ftccoins.org/en" - }, - "marketcap_usd": 0, - "name": "FTC", - "network": "eth", - "shortcut": "FTC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:FTR": { "address": "0x2023DCf7c438c8C8C0B0F28dBaE15520B4f3Ee20", "links": { @@ -5204,6 +5247,24 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:FTXT": { + "address": "0x41875C2332B0877cDFAA699B641402b7D4642c32", + "links": { + "Github": "https://github.com/futuraxproject", + "Homepage": "https://futurax.global" + }, + "marketcap_usd": 0, + "name": "FUTURAX", + "network": "eth", + "shortcut": "FTXT", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:FUEL": { "address": "0xEA38eAa3C86c8F9B751533Ba2E562deb9acDED40", "links": { @@ -5227,7 +5288,7 @@ "links": { "Homepage": "https://funfair.io" }, - "marketcap_usd": 126365312, + "marketcap_usd": 84604195, "name": "Funfair", "network": "eth", "shortcut": "FUN", @@ -5280,7 +5341,7 @@ "Github": "https://github.com/BlockchainLabsNZ/gambit", "Homepage": "http://gambitcrypto.com" }, - "marketcap_usd": 6158034, + "marketcap_usd": 4463774, "name": "Gambit", "network": "eth", "shortcut": "GAM", @@ -5403,7 +5464,7 @@ "Github": "https://github.com/daostack", "Homepage": "https://daostack.io" }, - "marketcap_usd": 5439100, + "marketcap_usd": 4217214, "name": "DAOstack", "network": "eth", "shortcut": "GEN", @@ -5502,24 +5563,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:GNT": { - "address": "0xa74476443119A942dE498590Fe1f2454d7D4aC0d", - "coinmarketcap_alias": "golem-network-tokens", - "links": { - "Homepage": "https://golem.network" - }, - "marketcap_usd": 280972506, - "name": "Golem", - "network": "eth", - "shortcut": "GNT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:GOLDX": { "address": "0xeAb43193CF0623073Ca89DB9B712796356FA7414", "links": { @@ -5543,7 +5586,7 @@ "links": { "Homepage": "https://gridplus.io/token-sale" }, - "marketcap_usd": 12981175, + "marketcap_usd": 5392777, "name": "GRID", "network": "eth", "shortcut": "GRID", @@ -5632,7 +5675,7 @@ "Github": "https://github.com/GIFTO-io", "Homepage": "https://gifto.io/" }, - "marketcap_usd": 77346378, + "marketcap_usd": 40480983, "name": "Gifto", "network": "eth", "shortcut": "GTO", @@ -5644,13 +5687,31 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:GULD": { + "address": "0x9847345de8b614c956146bbea549336d9C8d26b6", + "links": { + "Github": "https://github.com/guldcoin", + "Homepage": "https://guld.io" + }, + "marketcap_usd": 0, + "name": "GULD ERC20", + "network": "eth", + "shortcut": "GULD", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:GVT": { "address": "0x103c3A209da59d3E7C4A89307e66521e081CFDF0", "links": { "Github": "https://github.com/GenesisVision", "Homepage": "https://genesis.vision" }, - "marketcap_usd": 29228461, + "marketcap_usd": 17718606, "name": "Genesis Vision", "network": "eth", "shortcut": "GVT", @@ -5732,6 +5793,23 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:HAPPY": { + "address": "0x5A567e28dbFa2bBD3ef13C0a01be114745349657", + "links": { + "Homepage": "https://btr.works" + }, + "marketcap_usd": 0, + "name": "Happiness", + "network": "eth", + "shortcut": "HAPPY", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:HAT": { "address": "0x9002D4485b7594e3E850F0a206713B305113f69e", "links": { @@ -5755,7 +5833,7 @@ "Github": "https://github.com/havven/havven", "Homepage": "https://havven.io" }, - "marketcap_usd": 17195341, + "marketcap_usd": 7598074, "name": "Havven", "network": "eth", "shortcut": "HAV", @@ -5802,6 +5880,23 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:HIBT": { + "address": "0x9bb1Db1445b83213a56d90d331894b3f26218e4e", + "links": { + "Homepage": "https://www.hibtc.com/" + }, + "marketcap_usd": 0, + "name": "HiBTC Token", + "network": "eth", + "shortcut": "HIBT", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:HIG": { "address": "0xa9240fBCAC1F0b9A6aDfB04a53c8E3B0cC1D1444", "links": { @@ -5877,7 +5972,7 @@ "links": { "Homepage": "https://github.com/arachnid/hodlcoin" }, - "marketcap_usd": 240428, + "marketcap_usd": 243671, "name": "HODLCoin", "network": "eth", "shortcut": "HODL", @@ -5930,7 +6025,7 @@ "Github": "https://github.com/HiveProjectLTD", "Homepage": "https://hive-project.net" }, - "marketcap_usd": 20232639, + "marketcap_usd": 11523549, "name": "Hive Project", "network": "eth", "shortcut": "HVN", @@ -6069,7 +6164,7 @@ "links": { "Homepage": "https://icos.icobox.io" }, - "marketcap_usd": 3553726, + "marketcap_usd": 1680040, "name": "ICOS", "network": "eth", "shortcut": "ICOS", @@ -6086,7 +6181,7 @@ "links": { "Homepage": "https://www.icon.foundation" }, - "marketcap_usd": 507798617, + "marketcap_usd": 236874502, "name": "ICON", "network": "eth", "shortcut": "ICX", @@ -6120,7 +6215,7 @@ "links": { "Homepage": "https://investfeed.com" }, - "marketcap_usd": 4546572, + "marketcap_usd": 2272269, "name": "InvestFeed", "network": "eth", "shortcut": "IFT", @@ -6255,7 +6350,7 @@ "links": { "Homepage": "https://insights.network" }, - "marketcap_usd": 2492982, + "marketcap_usd": 1854257, "name": "Insights Network", "network": "eth", "shortcut": "INSTAR", @@ -6272,7 +6367,7 @@ "links": { "Homepage": "https://internxt.io" }, - "marketcap_usd": 1892668, + "marketcap_usd": 1477758, "name": "Internxt", "network": "eth", "shortcut": "INXT", @@ -6289,7 +6384,7 @@ "links": { "Homepage": "https://iost.io/" }, - "marketcap_usd": 212517876, + "marketcap_usd": 111592385, "name": "IOSToken", "network": "eth", "shortcut": "IOST", @@ -6372,13 +6467,31 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:IST34": { + "address": "0x0cF713b11C9b986EC40D65bD4F7fbd50F6ff2d64", + "links": { + "Github": "https://github.com/IST34Token", + "Homepage": "https://hiperteknoloji.org" + }, + "marketcap_usd": 0, + "name": "IST34 Token", + "network": "eth", + "shortcut": "IST34", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:ITC": { "address": "0x5E6b6d9aBAd9093fdc861Ea1600eBa1b355Cd940", "links": { "Github": "https://github.com/IoTChainCode", "Homepage": "https://iotchain.io/" }, - "marketcap_usd": 27009990, + "marketcap_usd": 11158935, "name": "IoT Chain", "network": "eth", "shortcut": "ITC", @@ -6568,7 +6681,7 @@ "Github": "https://github.com/kikinteractive/kin-token", "Homepage": "https://kin.kik.com" }, - "marketcap_usd": 155514660, + "marketcap_usd": 79653286, "name": "Kin Foundation", "network": "eth", "shortcut": "KIN", @@ -6586,7 +6699,7 @@ "Github": "https://github.com/KyberNetwork", "Homepage": "https://kyber.network" }, - "marketcap_usd": 117987320, + "marketcap_usd": 62120697, "name": "Kyber Network", "network": "eth", "shortcut": "KNC", @@ -6622,7 +6735,7 @@ "Github": "https://github.com/Cryptense/", "Homepage": "https://kryll.io/" }, - "marketcap_usd": 688382, + "marketcap_usd": 505756, "name": "Kryll", "network": "eth", "shortcut": "KRL", @@ -6657,7 +6770,7 @@ "Github": "https://github.com/latoken", "Homepage": "https://latoken.com/" }, - "marketcap_usd": 9051088, + "marketcap_usd": 7006186, "name": "LATOKEN", "network": "eth", "shortcut": "LA", @@ -6691,7 +6804,7 @@ "links": { "Homepage": "https://www.leadcoin.network/" }, - "marketcap_usd": 2710164, + "marketcap_usd": 1098068, "name": "LEADCOIN", "network": "eth", "shortcut": "LDC", @@ -6795,7 +6908,7 @@ "links": { "Homepage": "http://www.lifelabs.io" }, - "marketcap_usd": 3810614, + "marketcap_usd": 3025491, "name": "LIFE", "network": "eth", "shortcut": "LIFE", @@ -6824,24 +6937,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:LINK Platform": { - "address": "0xE2E6D4BE086c6938B53B22144855eef674281639", - "links": { - "Github": "https://github.com/ethlink", - "Homepage": "https://ethereum.link" - }, - "marketcap_usd": 0, - "name": "Link Platform", - "network": "eth", - "shortcut": "LINK Platform", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:LIVE": { "address": "0x24A77c1F17C547105E14813e517be06b0040aa76", "links": { @@ -6859,49 +6954,13 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:LNC": { - "address": "0x63e634330A20150DbB61B15648bC73855d6CCF07", - "links": { - "Github": "https://github.com/Blocklancer/Blocklancer-Contracts", - "Homepage": "https://blocklancer.net" - }, - "marketcap_usd": 0, - "name": "Lancer Token", - "network": "eth", - "shortcut": "LNC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "erc20:eth:LNC-Linker Coin": { - "address": "0x6BEB418Fc6E1958204aC8baddCf109B8E9694966", - "links": { - "Github": "https://github.com/linkercoinfoundation", - "Homepage": "https://www.linkercoin.com/en" - }, - "marketcap_usd": 3483072, - "name": "Linker Coin", - "network": "eth", - "shortcut": "LNC-Linker Coin", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:LND": { "address": "0x0947b0e6D821378805c9598291385CE7c791A6B2", "links": { "Github": "https://github.com/lendingblock", "Homepage": "https://lendingblock.com" }, - "marketcap_usd": 2681371, + "marketcap_usd": 1454637, "name": "Lendingblock", "network": "eth", "shortcut": "LND", @@ -6918,7 +6977,7 @@ "links": { "Homepage": "https://LockChain.co" }, - "marketcap_usd": 8671107, + "marketcap_usd": 5259245, "name": "LockChain", "network": "eth", "shortcut": "LOC", @@ -6936,7 +6995,7 @@ "Github": "http://github.com/locipro/loci-coin-sale", "Homepage": "https://locipro.com" }, - "marketcap_usd": 5205604, + "marketcap_usd": 1699666, "name": "LOCIcoin", "network": "eth", "shortcut": "LOCI", @@ -7251,7 +7310,7 @@ "Github": "https://github.com/theembermine", "Homepage": "https://embermine.com/" }, - "marketcap_usd": 333231, + "marketcap_usd": 235298, "name": "Embers", "network": "eth", "shortcut": "MBRS", @@ -7267,7 +7326,7 @@ "address": "0x93E682107d1E9defB0b5ee701C71707a4B2E46Bc", "hidden": 1, "links": {}, - "marketcap_usd": 246689, + "marketcap_usd": 256534, "name": "MCAP", "network": "eth", "shortcut": "MCAP", @@ -7285,7 +7344,7 @@ "Github": "https://github.com/musiconomi/", "Homepage": "https://musiconomi.com/" }, - "marketcap_usd": 531117, + "marketcap_usd": 235189, "name": "Musiconomi", "network": "eth", "shortcut": "MCI", @@ -7302,7 +7361,7 @@ "links": { "Homepage": "https://mona.co" }, - "marketcap_usd": 0, + "marketcap_usd": 66988027, "name": "MCO", "network": "eth", "shortcut": "MCO", @@ -7403,66 +7462,32 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:MGO": { - "address": "0x40395044Ac3c0C57051906dA938B54BD6557F212", + "erc20:eth:MFTU": { + "address": "0x05D412CE18F24040bB3Fa45CF2C69e506586D8e8", "links": { - "Homepage": "https://gamecredits.com/mobilego" + "Homepage": "https://mftu.net" }, "marketcap_usd": 0, - "name": "MGO", + "name": "Mainstream For The Underground", "network": "eth", - "shortcut": "MGO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "erc20:eth:MIT": { - "address": "0xe23cd160761f63FC3a1cF78Aa034b6cdF97d3E0C", - "hidden": 1, - "links": {}, - "marketcap_usd": 0, - "name": "MIT", - "network": "eth", - "shortcut": "MIT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "erc20:eth:MIT (Mychatcoin)": { - "address": "0xAd8DD4c725dE1D31b9E8F8D146089e9DC6882093", - "links": { - "Homepage": "https://mychatcoin.com" - }, - "marketcap_usd": 0, - "name": "Mychatcoin", - "network": "eth", - "shortcut": "MIT (Mychatcoin)", - "t1_enabled": "yes", - "t2_enabled": "yes", + "shortcut": "MFTU", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:MKR": { - "address": "0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2", + "erc20:eth:MGO": { + "address": "0x40395044Ac3c0C57051906dA938B54BD6557F212", "links": { - "Github": "https://github.com/makerdao", - "Homepage": "https://makerdao.com" + "Homepage": "https://gamecredits.com/mobilego" }, "marketcap_usd": 0, - "name": "MakerDAO", + "name": "MGO", "network": "eth", - "shortcut": "MKR", + "shortcut": "MGO", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -7489,23 +7514,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:MLN": { - "address": "0xBEB9eF514a379B997e0798FDcC901Ee474B6D9A1", - "links": { - "Homepage": "https://melonport.com" - }, - "marketcap_usd": 0, - "name": "Melonport", - "network": "eth", - "shortcut": "MLN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:MNE": { "address": "0x1a95B271B0535D15fa49932Daba31BA612b52946", "links": { @@ -7565,7 +7573,7 @@ "Github": "https://github.com/modum-io", "Homepage": "https://modum.io" }, - "marketcap_usd": 16797450, + "marketcap_usd": 20182371, "name": "Modum", "network": "eth", "shortcut": "MOD", @@ -7634,7 +7642,7 @@ "links": { "Homepage": "https://mothership.cx" }, - "marketcap_usd": 18985808, + "marketcap_usd": 12737439, "name": "Mothership", "network": "eth", "shortcut": "MSP", @@ -7646,30 +7654,12 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:MTC": { - "address": "0x905E337c6c8645263D3521205Aa37bf4d034e745", - "links": { - "Github": "https://github.com/Docademic", - "Homepage": "https://ico.docademic.com/" - }, - "marketcap_usd": 0, - "name": "Medical Token Currency", - "network": "eth", - "shortcut": "MTC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:MTH": { "address": "0xaF4DcE16Da2877f8c9e00544c93B62Ac40631F16", "links": { "Homepage": "http://www.monetha.io" }, - "marketcap_usd": 8282450, + "marketcap_usd": 4341562, "name": "Monetha", "network": "eth", "shortcut": "MTH", @@ -7789,7 +7779,7 @@ "Github": "https://github.com/Merculet", "Homepage": "https://www.merculet.io" }, - "marketcap_usd": 8860323, + "marketcap_usd": 2662907, "name": "Merculet", "network": "eth", "shortcut": "MVP", @@ -7839,7 +7829,7 @@ "links": { "Homepage": "https://mysterium.network" }, - "marketcap_usd": 4143991, + "marketcap_usd": 2416335, "name": "Mysterium", "network": "eth", "shortcut": "MYST", @@ -7874,7 +7864,7 @@ "Github": "https://github.com/NANJ-COIN", "Homepage": "https://nanjcoin.com/" }, - "marketcap_usd": 24125286, + "marketcap_usd": 15109367, "name": "NANJCOIN", "network": "eth", "shortcut": "NANJ", @@ -7928,7 +7918,7 @@ "Github": "https://github.com/polyswarm", "Homepage": "https://polyswarm.io" }, - "marketcap_usd": 26652501, + "marketcap_usd": 23945838, "name": "Nectar", "network": "eth", "shortcut": "NCT", @@ -7945,7 +7935,7 @@ "links": { "Homepage": "https://neverdie.com" }, - "marketcap_usd": 737077, + "marketcap_usd": 956163, "name": "Neverdie", "network": "eth", "shortcut": "NDC", @@ -7980,7 +7970,7 @@ "links": { "Homepage": "https://nimiq.com" }, - "marketcap_usd": 0, + "marketcap_usd": 3001681, "name": "NIMIQ", "network": "eth", "shortcut": "NET", @@ -8087,7 +8077,7 @@ "Github": "https://github.com/NperProject", "Homepage": "https://nper.io" }, - "marketcap_usd": 3629046, + "marketcap_usd": 1600353, "name": "NPER", "network": "eth", "shortcut": "NPER", @@ -8117,32 +8107,32 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:NULS": { - "address": "0xB91318F35Bdb262E9423Bc7c7c2A3A93DD93C92C", + "erc20:eth:NUG": { + "address": "0x245ef47D4d0505ECF3Ac463F4d81f41ADE8f1fd1", "links": { - "Homepage": "https://nuls.io" + "Homepage": "https://nuggets.life/" }, - "marketcap_usd": 99949482, - "name": "NULS", + "marketcap_usd": 0, + "name": "Nuggets Token", "network": "eth", - "shortcut": "NULS", - "t1_enabled": "yes", - "t2_enabled": "yes", + "shortcut": "NUG", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:NXX": { - "address": "0x7627de4B93263a6a7570b8dAfa64bae812e5c394", + "erc20:eth:NULS": { + "address": "0xB91318F35Bdb262E9423Bc7c7c2A3A93DD93C92C", "links": { - "Homepage": "https://www.nexxuscoin.com" + "Homepage": "https://nuls.io" }, - "marketcap_usd": 0, - "name": "NXX", + "marketcap_usd": 54832645, + "name": "NULS", "network": "eth", - "shortcut": "NXX", + "shortcut": "NULS", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -8151,15 +8141,15 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:NXX OLD": { - "address": "0x5c6183d10A00CD747a6Dbb5F658aD514383e9419", + "erc20:eth:NXX": { + "address": "0x7627de4B93263a6a7570b8dAfa64bae812e5c394", "links": { "Homepage": "https://www.nexxuscoin.com" }, "marketcap_usd": 0, - "name": "NXX OLD", + "name": "NXX", "network": "eth", - "shortcut": "NXX OLD", + "shortcut": "NXX", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -8173,7 +8163,7 @@ "links": { "Homepage": "https://beyond-the-void.net" }, - "marketcap_usd": 2520441, + "marketcap_usd": 1434745, "name": "Nexium", "network": "eth", "shortcut": "NxC", @@ -8207,7 +8197,7 @@ "links": { "Homepage": "https://www.openanx.org/en" }, - "marketcap_usd": 7876053, + "marketcap_usd": 4047027, "name": "OAX", "network": "eth", "shortcut": "OAX", @@ -8237,6 +8227,24 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:ODE": { + "address": "0xbf52F2ab39e26E0951d2a02b49B7702aBe30406a", + "links": { + "Github": "https://github.com/odemio", + "Homepage": "https://odem.io/" + }, + "marketcap_usd": 0, + "name": "ODEM Token", + "network": "eth", + "shortcut": "ODE", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:OJX": { "address": "0xBeef546ac8a4e0a80DC1E2d696968Ef54138f1d4", "links": { @@ -8379,13 +8387,31 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:ORCA": { + "address": "0x6F59e0461Ae5E2799F1fB3847f05a63B16d0DbF8", + "links": { + "Github": "https://github.com/orcaalliance", + "Homepage": "https://www.orcaalliance.eu" + }, + "marketcap_usd": 0, + "name": "ORCA Token", + "network": "eth", + "shortcut": "ORCA", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:OST": { "address": "0x2C4e8f2D746113d0696cE89B35F0d8bF88E0AEcA", "links": { "Github": "https://github.com/OpenSTFoundation", "Homepage": "https://simpletoken.org" }, - "marketcap_usd": 21093182, + "marketcap_usd": 9913162, "name": "Simple Token 'OST'", "network": "eth", "shortcut": "OST", @@ -8403,7 +8429,7 @@ "Github": "https://github.com/owndata", "Homepage": "https://owndata.network" }, - "marketcap_usd": 0, + "marketcap_usd": 984523, "name": "OWNDATA", "network": "eth", "shortcut": "OWN", @@ -8439,7 +8465,7 @@ "Github": "https://github.com/policypalnet", "Homepage": "https://www.policypal.network" }, - "marketcap_usd": 5620794, + "marketcap_usd": 2170673, "name": "PolicyPal Network", "network": "eth", "shortcut": "PAL", @@ -8469,6 +8495,23 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:PASS": { + "address": "0x77761e63C05aeE6648FDaeaa9B94248351AF9bCd", + "links": { + "Homepage": "http://www.wisepass.co" + }, + "marketcap_usd": 0, + "name": "PASS Token", + "network": "eth", + "shortcut": "PASS", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:PAT": { "address": "0xBB1fA4FdEB3459733bF67EbC6f893003fA976a82", "links": { @@ -8527,7 +8570,7 @@ "links": { "Homepage": "http://www.tenx.tech" }, - "marketcap_usd": 106796353, + "marketcap_usd": 63076973, "name": "TenX", "network": "eth", "shortcut": "PAY", @@ -8596,7 +8639,7 @@ "Github": "https://github.com/PeculiumPCL/Peculium", "Homepage": "https://peculium.io" }, - "marketcap_usd": 3168638, + "marketcap_usd": 3038802, "name": "Peculium", "network": "eth", "shortcut": "PCL", @@ -8626,6 +8669,22 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:PEG": { + "address": "0x8Ae56a6850a7cbeaC3c3Ab2cB311e7620167eAC8", + "hidden": 1, + "links": {}, + "marketcap_usd": 0, + "name": "PEG Network Token", + "network": "eth", + "shortcut": "PEG", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:PET": { "address": "0x5884969Ec0480556E11d119980136a4C17eDDEd1", "links": { @@ -8735,7 +8794,7 @@ "links": { "Homepage": "https://polybius.io" }, - "marketcap_usd": 12192473, + "marketcap_usd": 6219258, "name": "Polybius", "network": "eth", "shortcut": "PLBT", @@ -8839,7 +8898,7 @@ "links": { "Homepage": "https://polymath.network" }, - "marketcap_usd": 109207468, + "marketcap_usd": 49502153, "name": "Polymath Network", "network": "eth", "shortcut": "POLY", @@ -8874,7 +8933,7 @@ "Github": "https://github.com/PoSToken", "Homepage": "https://postoken.org" }, - "marketcap_usd": 49382, + "marketcap_usd": 39260, "name": "PoSToken", "network": "eth", "shortcut": "POS", @@ -8908,7 +8967,7 @@ "links": { "Homepage": "https://www.paypie.com" }, - "marketcap_usd": 18973078, + "marketcap_usd": 8724949, "name": "PayPie", "network": "eth", "shortcut": "PPP", @@ -8925,7 +8984,7 @@ "links": { "Homepage": "https://populous.co" }, - "marketcap_usd": 206310332, + "marketcap_usd": 175554738, "name": "Populous", "network": "eth", "shortcut": "PPT", @@ -8942,7 +9001,7 @@ "links": { "Homepage": "https://presearch.io" }, - "marketcap_usd": 16376949, + "marketcap_usd": 13802996, "name": "Presearch", "network": "eth", "shortcut": "PRE", @@ -8995,7 +9054,7 @@ "links": { "Homepage": "https://propy.com" }, - "marketcap_usd": 13823049, + "marketcap_usd": 6960977, "name": "Propy", "network": "eth", "shortcut": "PRO", @@ -9077,24 +9136,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:PTC": { - "address": "0x2a8E98e256f32259b5E5Cb55Dd63C8e891950666", - "links": { - "Github": "https://github.com/ParrotCoin", - "Homepage": "http://parrotcoin.club" - }, - "marketcap_usd": 0, - "name": "ParrotCoin", - "network": "eth", - "shortcut": "PTC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:PTOY": { "address": "0x8Ae4BF2C33a8e667de34B54938B0ccD03Eb8CC06", "links": { @@ -9188,7 +9229,7 @@ "links": { "Homepage": "https://liquid.plus" }, - "marketcap_usd": 84608865, + "marketcap_usd": 61234484, "name": "QASH", "network": "eth", "shortcut": "QASH", @@ -9330,7 +9371,7 @@ "Github": "https://github.com/qtumproject", "Homepage": "https://qtum.org/" }, - "marketcap_usd": 672128988, + "marketcap_usd": 360925876, "name": "Qtum", "network": "eth", "shortcut": "QTUM", @@ -9384,7 +9425,7 @@ "Github": "https://github.com/ripio/rcn-token", "Homepage": "https://ripiocredit.network" }, - "marketcap_usd": 25440190, + "marketcap_usd": 9056721, "name": "Ripio Credit Network", "network": "eth", "shortcut": "RCN", @@ -9435,7 +9476,7 @@ "links": { "Homepage": "https://www.rebellious.io" }, - "marketcap_usd": 5352695, + "marketcap_usd": 3165260, "name": "Rebellious", "network": "eth", "shortcut": "REBL", @@ -9453,7 +9494,7 @@ "Github": "https://github.com/red", "Homepage": "https://ico.red-lang.org" }, - "marketcap_usd": 4464577, + "marketcap_usd": 1741390, "name": "Red Community Token", "network": "eth", "shortcut": "RED", @@ -9465,6 +9506,24 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:REDC": { + "address": "0xB563300A3BAc79FC09B93b6F84CE0d4465A2AC27", + "links": { + "Github": "https://github.com/Redcabllc", + "Homepage": "https://redcab.io" + }, + "marketcap_usd": 0, + "name": "RedCab", + "network": "eth", + "shortcut": "REDC", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:REN": { "address": "0x408e41876cCCDC0F92210600ef50372656052a38", "links": { @@ -9488,7 +9547,7 @@ "links": { "Homepage": "https://request.network" }, - "marketcap_usd": 45978747, + "marketcap_usd": 28293402, "name": "Request Network", "network": "eth", "shortcut": "REQ", @@ -9523,7 +9582,7 @@ "links": { "Homepage": "https://refereum.com" }, - "marketcap_usd": 25840877, + "marketcap_usd": 10157537, "name": "Refereum", "network": "eth", "shortcut": "RFR", @@ -9575,7 +9634,7 @@ "links": { "Homepage": "http://crowdsale.iex.ec" }, - "marketcap_usd": 53398537, + "marketcap_usd": 32133012, "name": "IEx.ec", "network": "eth", "shortcut": "RLC", @@ -9627,7 +9686,7 @@ "links": { "Homepage": "http://www.relex.io" }, - "marketcap_usd": 0, + "marketcap_usd": 2367168, "name": "Relex", "network": "eth", "shortcut": "RLX", @@ -9662,7 +9721,7 @@ "Github": "https://github.com/rocketico", "Homepage": "https://rocketico.io" }, - "marketcap_usd": 32455190, + "marketcap_usd": 19503786, "name": "Rocket Token", "network": "eth", "shortcut": "ROCK", @@ -9764,7 +9823,7 @@ "links": { "Homepage": "https://rivetzintl.com" }, - "marketcap_usd": 4339000, + "marketcap_usd": 3197635, "name": "Rivetz", "network": "eth", "shortcut": "RVT", @@ -9815,7 +9874,7 @@ "links": { "Homepage": "https://saltlending.com" }, - "marketcap_usd": 66104435, + "marketcap_usd": 30053034, "name": "Salt Lending Token", "network": "eth", "shortcut": "SALT", @@ -9832,7 +9891,7 @@ "links": { "Homepage": "https://santiment.net" }, - "marketcap_usd": 62087815, + "marketcap_usd": 36400681, "name": "Santiment", "network": "eth", "shortcut": "SAN", @@ -9883,7 +9942,7 @@ "links": { "Homepage": "https://sensay.it" }, - "marketcap_usd": 2966575, + "marketcap_usd": 1895678, "name": "Sensay", "network": "eth", "shortcut": "SENSE", @@ -10056,7 +10115,7 @@ "links": { "Homepage": "http://smartlands.io" }, - "marketcap_usd": 8303928, + "marketcap_usd": 7836431, "name": "Smartlands", "network": "eth", "shortcut": "SLT", @@ -10086,24 +10145,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:SMART": { - "address": "0x6F6DEb5db0C4994A8283A01D6CFeEB27Fc3bBe9C", - "links": { - "Github": "https://github.com/SmartBillions/SmartBillions", - "Homepage": "http://smartbillions.com" - }, - "marketcap_usd": 0, - "name": "Smart Billions", - "network": "eth", - "shortcut": "SMART", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:SNC": { "address": "0xF4134146AF2d511Dd5EA8cDB1C4AC88C57D60404", "links": { @@ -10161,7 +10202,7 @@ "links": { "Homepage": "https://singulardtv.com" }, - "marketcap_usd": 20751904, + "marketcap_usd": 13317288, "name": "SingularDTV", "network": "eth", "shortcut": "SNGLS", @@ -10264,7 +10305,7 @@ "links": { "Homepage": "https://spankchain.com" }, - "marketcap_usd": 21563556, + "marketcap_usd": 14482485, "name": "SpankChain", "network": "eth", "shortcut": "SPANK", @@ -10453,7 +10494,7 @@ "links": { "Homepage": "https://stktoken.com" }, - "marketcap_usd": 8311428, + "marketcap_usd": 3618184, "name": "STK Token", "network": "eth", "shortcut": "STK", @@ -10488,7 +10529,7 @@ "Github": "https://github.com/Storj", "Homepage": "https://storj.io" }, - "marketcap_usd": 64958549, + "marketcap_usd": 36791912, "name": "STORJ", "network": "eth", "shortcut": "STORJ", @@ -10505,7 +10546,7 @@ "links": { "Homepage": "https://www.stormtoken.com" }, - "marketcap_usd": 74980625, + "marketcap_usd": 34619988, "name": "Storm Token", "network": "eth", "shortcut": "STORM", @@ -10541,7 +10582,7 @@ "Github": "https://github.com/Storiqa/", "Homepage": "https://storiqa.com" }, - "marketcap_usd": 24625207, + "marketcap_usd": 15383152, "name": "Storiqa", "network": "eth", "shortcut": "STQ", @@ -10594,7 +10635,7 @@ "links": { "Homepage": "https://substratum.net" }, - "marketcap_usd": 74850688, + "marketcap_usd": 50880482, "name": "Substratum", "network": "eth", "shortcut": "SUB", @@ -10786,7 +10827,7 @@ "Github": "https://github.com/telcoin", "Homepage": "https://www.telco.in" }, - "marketcap_usd": 27585427, + "marketcap_usd": 20233035, "name": "Telcoin", "network": "eth", "shortcut": "TEL", @@ -10804,7 +10845,7 @@ "Github": "https://github.com/TrueFlip", "Homepage": "https://trueflip.io" }, - "marketcap_usd": 4128882, + "marketcap_usd": 3085871, "name": "TrueFlip", "network": "eth", "shortcut": "TFL", @@ -10821,7 +10862,7 @@ "links": { "Homepage": "https://www.thetatoken.org/" }, - "marketcap_usd": 83275610, + "marketcap_usd": 55785156, "name": "Theta Token", "network": "eth", "shortcut": "THETA", @@ -10851,12 +10892,30 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:TICO": { + "address": "0xa5dB1d6F7A0D5Bccc17d0bFD39D7AF32d5E5EDc6", + "links": { + "Github": "https://github.com/Topinvestmentcoin/Topinvestmentcoin-", + "Homepage": "https://www.topinvestmentcoin.online/" + }, + "marketcap_usd": 0, + "name": "Topinvestmentcoin", + "network": "eth", + "shortcut": "TICO", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:TIME": { "address": "0x6531f133e6DeeBe7F2dcE5A0441aA7ef330B4e53", "links": { "Homepage": "https://chronobank.io" }, - "marketcap_usd": 7907275, + "marketcap_usd": 4325207, "name": "Chronobank", "network": "eth", "shortcut": "TIME", @@ -10890,7 +10949,7 @@ "links": { "Homepage": "https://www.blocktix.io" }, - "marketcap_usd": 10102469, + "marketcap_usd": 4868991, "name": "Blocktix", "network": "eth", "shortcut": "TIX", @@ -10907,7 +10966,7 @@ "links": { "Homepage": "https://etherscan.io/token/TokenCard" }, - "marketcap_usd": 18740954, + "marketcap_usd": 10971348, "name": "TokenCard", "network": "eth", "shortcut": "TKN", @@ -10955,22 +11014,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:TRC": { - "address": "0xcB3F902bf97626391bF8bA87264bbC3DC13469be", - "hidden": 1, - "links": {}, - "marketcap_usd": 0, - "name": "The Real Coin", - "network": "eth", - "shortcut": "TRC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:TRCN": { "address": "0x566Fd7999B1Fc3988022bD38507A48F0bCf22c77", "links": { @@ -11023,6 +11066,23 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:TSW": { + "address": "0x6B87999bE87358065bBdE41e8a0fe0B7b1cd2514", + "links": { + "Homepage": "https://www.teslawatt.com" + }, + "marketcap_usd": 0, + "name": "TeslaWatt", + "network": "eth", + "shortcut": "TSW", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:TWN": { "address": "0x2eF1aB8a26187C58BB8aAeB11B2fC6D25C5c0716", "links": { @@ -11062,7 +11122,7 @@ "links": { "Homepage": "https://taas.fund" }, - "marketcap_usd": 15435932, + "marketcap_usd": 7357318, "name": "Token-as-a-Service", "network": "eth", "shortcut": "TaaS", @@ -11097,7 +11157,7 @@ "links": { "Homepage": "https://uquidcoin.com" }, - "marketcap_usd": 10010897, + "marketcap_usd": 6746339, "name": "Uquid Coin", "network": "eth", "shortcut": "UQC", @@ -11165,7 +11225,7 @@ "Github": "https://github.com/UniversaBlockchain/universa", "Homepage": "https://www.universa.io/" }, - "marketcap_usd": 19413778, + "marketcap_usd": 12764433, "name": "Universa", "network": "eth", "shortcut": "UTN-P", @@ -11252,7 +11312,7 @@ "Github": "https://github.com/blockv", "Homepage": "https://blockv.io" }, - "marketcap_usd": 37098426, + "marketcap_usd": 19072775, "name": "BLOCKv", "network": "eth", "shortcut": "VEE", @@ -11264,15 +11324,16 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:VENUS": { - "address": "0xEbeD4fF9fe34413db8fC8294556BBD1528a4DAca", + "erc20:eth:VEN": { + "address": "0xD850942eF8811f2A866692A623011bDE52a462C1", "links": { - "Homepage": "http://venuscoin.net" + "Github": "https://github.com/vechain-team", + "Homepage": "https://tokensale.vechain.com/en" }, - "marketcap_usd": 0, - "name": "VENUS", + "marketcap_usd": 782640001, + "name": "Vechain", "network": "eth", - "shortcut": "VENUS", + "shortcut": "VEN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11281,15 +11342,15 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:VERI": { - "address": "0x8f3470A7388c05eE4e7AF3d01D8C722b0FF52374", + "erc20:eth:VENUS": { + "address": "0xEbeD4fF9fe34413db8fC8294556BBD1528a4DAca", "links": { - "Homepage": "http://veritas.veritaseum.com/index.php" + "Homepage": "http://venuscoin.net" }, "marketcap_usd": 0, - "name": "Veritas", + "name": "VENUS", "network": "eth", - "shortcut": "VERI", + "shortcut": "VENUS", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11298,16 +11359,15 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:VET": { - "address": "0xD850942eF8811f2A866692A623011bDE52a462C1", + "erc20:eth:VERI": { + "address": "0x8f3470A7388c05eE4e7AF3d01D8C722b0FF52374", "links": { - "Github": "https://github.com/vechain-team", - "Homepage": "https://tokensale.vechain.com/en" + "Homepage": "http://veritas.veritaseum.com/index.php" }, - "marketcap_usd": 1362675288, - "name": "Vechain", + "marketcap_usd": 0, + "name": "Veritas", "network": "eth", - "shortcut": "VET", + "shortcut": "VERI", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11336,9 +11396,10 @@ "erc20:eth:VIEW": { "address": "0xF03f8D65BaFA598611C3495124093c56e8F638f0", "links": { + "Github": "https://github.com/Viewly/", "Homepage": "https://view.ly/" }, - "marketcap_usd": 0, + "marketcap_usd": 1000485, "name": "Viewly", "network": "eth", "shortcut": "VIEW", @@ -11356,7 +11417,7 @@ "Github": "https://github.com/ViceIndustryToken", "Homepage": "https://vicetoken.com/" }, - "marketcap_usd": 1733578, + "marketcap_usd": 1589755, "name": "Vice Industry Token", "network": "eth", "shortcut": "VIT", @@ -11444,7 +11505,7 @@ "links": { "Homepage": "https://veros.org" }, - "marketcap_usd": 403874, + "marketcap_usd": 165759, "name": "Veros", "network": "eth", "shortcut": "VRS", @@ -11479,7 +11540,7 @@ "Github": "https://github.com/waxio", "Homepage": "https://wax.io" }, - "marketcap_usd": 127703971, + "marketcap_usd": 64605085, "name": "WAX", "network": "eth", "shortcut": "WAX", @@ -11531,7 +11592,7 @@ "links": { "Homepage": "https://wepower.network" }, - "marketcap_usd": 18045551, + "marketcap_usd": 9820655, "name": "WePower", "network": "eth", "shortcut": "WCT", @@ -11619,7 +11680,7 @@ "links": { "Homepage": "https://wings.ai" }, - "marketcap_usd": 21674199, + "marketcap_usd": 12900277, "name": "WINGS", "network": "eth", "shortcut": "WINGS", @@ -11631,6 +11692,40 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:WMK": { + "address": "0xBFbe5332f172d77811bC6c272844f3e54A7B23bB", + "links": { + "Github": "https://github.com/WemarkSource", + "Homepage": "https://www.wemark.com" + }, + "marketcap_usd": 0, + "name": "WemarkToken", + "network": "eth", + "shortcut": "WMK", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:WNK": { + "address": "0xd73A66B8FB26Be8B0AcD7c52Bd325054Ac7d468b", + "hidden": 1, + "links": {}, + "marketcap_usd": 0, + "name": "Woonk", + "network": "eth", + "shortcut": "WNK", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:WORK": { "address": "0xD18e454D844eb0009D32E07A0Cde89E18d64CFb4", "links": { @@ -11758,7 +11853,7 @@ "links": { "Homepage": "https://www.wacoin.io" }, - "marketcap_usd": 13659448, + "marketcap_usd": 6851710, "name": "WaBi", "network": "eth", "shortcut": "WaBi", @@ -11809,7 +11904,7 @@ "links": { "Homepage": "http://www.xaurum.org" }, - "marketcap_usd": 4207927, + "marketcap_usd": 4338705, "name": "Xaurum", "network": "eth", "shortcut": "XAUR", @@ -11827,7 +11922,7 @@ "Github": "https://github.com/blitzpredict", "Homepage": "https://www.blitzpredict.io" }, - "marketcap_usd": 1351192, + "marketcap_usd": 692032, "name": "BlitzPredict", "network": "eth", "shortcut": "XBP", @@ -11950,7 +12045,7 @@ "Github": "https://github.com/InkProtocol/", "Homepage": "https://paywithink.com" }, - "marketcap_usd": 3150830, + "marketcap_usd": 2461097, "name": "Ink Protocol", "network": "eth", "shortcut": "XNK", @@ -11967,7 +12062,7 @@ "links": { "Homepage": "https://xenon.network" }, - "marketcap_usd": 1079756, + "marketcap_usd": 834757, "name": "XENON", "network": "eth", "shortcut": "XNN", @@ -12030,23 +12125,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:YEED": { - "address": "0x6F7A4bac3315B5082F793161a22e26666d22717f", - "links": { - "Homepage": "https://yggdrash.io" - }, - "marketcap_usd": 0, - "name": "YEED", - "network": "eth", - "shortcut": "YEED", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:YUP": { "address": "0xD9A12Cde03a86E800496469858De8581D3A5353d", "links": { @@ -12089,7 +12167,7 @@ "Github": "https://github.com/zapproject", "Homepage": "https://zap.store" }, - "marketcap_usd": 4236932, + "marketcap_usd": 2015738, "name": "ZAP", "network": "eth", "shortcut": "ZAP", @@ -12106,7 +12184,7 @@ "links": { "Homepage": "https://zsc.io/" }, - "marketcap_usd": 10032351, + "marketcap_usd": 4758614, "name": "Zeusshield", "network": "eth", "shortcut": "ZCS", @@ -12124,7 +12202,7 @@ "Github": "https://github.com/zilliqa", "Homepage": "https://www.zilliqa.com/" }, - "marketcap_usd": 540082149, + "marketcap_usd": 265939621, "name": "Zilliqa", "network": "eth", "shortcut": "ZIL", @@ -12141,7 +12219,7 @@ "links": { "Homepage": "https://www.zmine.com" }, - "marketcap_usd": 0, + "marketcap_usd": 5118618, "name": "ZMINE", "network": "eth", "shortcut": "ZMN", @@ -12153,24 +12231,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:ZRX": { - "address": "0xE41d2489571d322189246DaFA5ebDe1F4699F498", - "links": { - "Github": "https://github.com/0xProject", - "Homepage": "https://0xproject.com" - }, - "marketcap_usd": 0, - "name": "0x Project", - "network": "eth", - "shortcut": "ZRX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:ZST": { "address": "0xe386B139Ed3715Ca4B18Fd52671bDcea1cdFE4b1", "links": { @@ -12194,7 +12254,7 @@ "Github": "https://github.com/carVertical", "Homepage": "https://www.carvertical.com" }, - "marketcap_usd": 8721118, + "marketcap_usd": 4535812, "name": "carVertical", "network": "eth", "shortcut": "cV", @@ -12282,7 +12342,7 @@ "Github": "https://github.com/eosdac", "Homepage": "https://eosdac.io/" }, - "marketcap_usd": 22043595, + "marketcap_usd": 15635243, "name": "eosDAC", "network": "eth", "shortcut": "eosDAC", @@ -12316,7 +12376,7 @@ "Github": "https://github.com/havven/havven", "Homepage": "https://www.havven.io" }, - "marketcap_usd": 0, + "marketcap_usd": 1150426, "name": "Havven-Backed USD Nomins (nUSD)", "network": "eth", "shortcut": "nUSD", @@ -12350,7 +12410,7 @@ "address": "0x8667559254241ddeD4d11392f868d72092765367", "hidden": 1, "links": {}, - "marketcap_usd": 477255215, + "marketcap_usd": 225631023, "name": "Aeternity", "network": "kov", "shortcut": "Aeternity", @@ -12451,6 +12511,22 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:rop:*PLASMA": { + "address": "0x95D7321EdCe519419ba1DbC60A89bAfbF55EAC0D", + "hidden": 1, + "links": {}, + "marketcap_usd": 0, + "name": "*PLASMA", + "network": "rop", + "shortcut": "*PLASMA", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:rop:ILSC": { "address": "0x6f95a3B682F8e9aacC86D057A6DF88A0E68145A8", "hidden": 1, @@ -12521,7 +12597,7 @@ "links": { "Homepage": "https://www.qwark.io" }, - "marketcap_usd": 2361859, + "marketcap_usd": 1677629, "name": "QWARK", "network": "ubq", "shortcut": "QWARK", @@ -12554,11 +12630,11 @@ "links": { "Homepage": "https://akroma.io" }, - "marketcap_usd": 0, + "marketcap_usd": 728296, "name": "Akroma", "shortcut": "AKA", - "t1_enabled": "yes", - "t2_enabled": "yes", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "coin", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -12584,7 +12660,7 @@ "links": { "Homepage": "https://egem.io" }, - "marketcap_usd": 0, + "marketcap_usd": 192203, "name": "EtherGem", "shortcut": "EGEM", "t1_enabled": "yes", @@ -12599,7 +12675,7 @@ "links": { "Homepage": "https://ellaism.org" }, - "marketcap_usd": 658775, + "marketcap_usd": 360888, "name": "Ellaism", "shortcut": "ELLA", "t1_enabled": "yes", @@ -12632,8 +12708,8 @@ "marketcap_usd": 0, "name": "Ethersocial Network", "shortcut": "ESN", - "t1_enabled": "yes", - "t2_enabled": "yes", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "coin", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -12644,7 +12720,7 @@ "links": { "Homepage": "https://ethereumclassic.github.io" }, - "marketcap_usd": 1761482613, + "marketcap_usd": 1278880937, "name": "Ethereum Classic", "shortcut": "ETC", "t1_enabled": "yes", @@ -12659,7 +12735,7 @@ "links": { "Homepage": "https://www.ethereum.org" }, - "marketcap_usd": 46545512287, + "marketcap_usd": 27833386307, "name": "Ethereum", "shortcut": "ETH", "t1_enabled": "yes", @@ -12670,6 +12746,21 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "eth:ETHO": { + "links": { + "Homepage": "https://ether1.org" + }, + "marketcap_usd": 0, + "name": "Ether-1", + "shortcut": "ETHO", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "coin", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "eth:ETSC": { "links": { "Homepage": "https://ethereumsocial.kr" @@ -12689,7 +12780,7 @@ "links": { "Homepage": "https://expanse.tech" }, - "marketcap_usd": 10327901, + "marketcap_usd": 4806464, "name": "Expanse", "shortcut": "EXP", "t1_enabled": "yes", @@ -12704,7 +12795,7 @@ "links": { "Homepage": "https://gochain.io" }, - "marketcap_usd": 27885658, + "marketcap_usd": 14231960, "name": "GoChain", "shortcut": "GO", "t1_enabled": "yes", @@ -12715,6 +12806,36 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "eth:MUSIC": { + "links": { + "Homepage": "https://musicoin.org" + }, + "marketcap_usd": 2943759, + "name": "Musicoin", + "shortcut": "MUSIC", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "coin", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "eth:PIRL": { + "links": { + "Homepage": "https://pirl.io" + }, + "marketcap_usd": 2822315, + "name": "Pirl", + "shortcut": "PIRL", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "coin", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "eth:RSK": { "links": { "Homepage": "https://www.rsk.co" @@ -12734,7 +12855,7 @@ "links": { "Homepage": "https://ubiqsmart.com" }, - "marketcap_usd": 51535471, + "marketcap_usd": 22728959, "name": "Ubiq", "shortcut": "UBQ", "t1_enabled": "yes", @@ -12761,6 +12882,54 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "eth:tKOV": { + "hidden": 1, + "links": { + "Homepage": "https://www.ethereum.org" + }, + "marketcap_usd": 0, + "name": "Ethereum Testnet Kovan", + "shortcut": "tKOV", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "eth:tRIN": { + "hidden": 1, + "links": { + "Homepage": "https://www.ethereum.org" + }, + "marketcap_usd": 0, + "name": "Ethereum Testnet Rinkeby", + "shortcut": "tRIN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "eth:tROP": { + "hidden": 1, + "links": { + "Homepage": "https://www.ethereum.org" + }, + "marketcap_usd": 0, + "name": "Ethereum Testnet Ropsten", + "shortcut": "tROP", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "eth:tRSK": { "hidden": 1, "links": { @@ -12781,7 +12950,7 @@ "links": { "Homepage": "https://www.cardano.org" }, - "marketcap_usd": 4098733811, + "marketcap_usd": 2364387688, "name": "Cardano", "shortcut": "ADA", "t1_enabled": "no", @@ -12792,18 +12961,29 @@ "links": { "Homepage": "https://lisk.io/" }, - "marketcap_usd": 538864740, + "marketcap_usd": 436815772, "name": "Lisk", "shortcut": "LSK", "t1_enabled": "no", "t2_enabled": "yes", "type": "coin" }, + "misc:ONT": { + "links": { + "Homepage": "https://ont.io" + }, + "marketcap_usd": 386602114, + "name": "Ontology", + "shortcut": "ONT", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "coin" + }, "misc:XLM": { "links": { "Homepage": "https://www.stellar.org" }, - "marketcap_usd": 5610860112, + "marketcap_usd": 3962284892, "name": "Stellar", "notes": "In development", "shortcut": "XLM", @@ -12815,7 +12995,7 @@ "links": { "Homepage": "https://getmonero.org" }, - "marketcap_usd": 2134713222, + "marketcap_usd": 1479564823, "name": "Monero", "notes": "In development", "shortcut": "XMR", @@ -12827,7 +13007,7 @@ "links": { "Homepage": "https://ripple.com" }, - "marketcap_usd": 17660224358, + "marketcap_usd": 12725565953, "name": "Ripple", "notes": "In development", "shortcut": "XRP", @@ -12839,7 +13019,7 @@ "links": { "Homepage": "https://tezos.com" }, - "marketcap_usd": 1245008536, + "marketcap_usd": 781308598, "name": "Tezos", "shortcut": "XTZ", "t1_enabled": "no", @@ -12864,7 +13044,7 @@ "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 7813618, + "marketcap_usd": 5723308, "name": "DIMCOIN", "shortcut": "DIM", "t1_enabled": "yes", @@ -12879,7 +13059,7 @@ "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 7813618, + "marketcap_usd": 5723308, "name": "DIM TOKEN", "shortcut": "DIMTOK", "t1_enabled": "yes", @@ -12921,7 +13101,7 @@ "links": { "Homepage": "https://nem.io" }, - "marketcap_usd": 1559440063, + "marketcap_usd": 868084827, "name": "NEM", "shortcut": "XEM", "t1_enabled": "yes", @@ -12933,11 +13113,11 @@ } }, "info": { - "marketcap_usd": 229740155891, - "t1_coins": 662, - "t2_coins": 661, - "total_marketcap_usd": 293416788208, - "updated_at": 1532955716, - "updated_at_readable": "Mon Jul 30 15:01:56 2018" + "marketcap_usd": 166220074097, + "t1_coins": 635, + "t2_coins": 634, + "total_marketcap_usd": 208809779508, + "updated_at": 1535039635, + "updated_at_readable": "Thu Aug 23 17:53:55 2018" } } \ No newline at end of file diff --git a/defs/coins_details.override.json b/defs/coins_details.override.json index a7ca6f510..39c581c81 100644 --- a/defs/coins_details.override.json +++ b/defs/coins_details.override.json @@ -5,26 +5,6 @@ "erc20:eth:GNT": { "coinmarketcap_alias": "golem-network-tokens" }, - "eth:ESN": { - "t1_support": "soon", - "t2_support": "soon" - }, - "eth:AKA": { - "t1_support": "soon", - "t2_support": "soon" - }, - "eth:ETHO": { - "t1_support": "soon", - "t2_support": "soon" - }, - "eth:MUSI": { - "t1_support": "soon", - "t2_support": "soon" - }, - "eth:PIRL": { - "t1_support": "soon", - "t2_support": "soon" - }, "coin:BCH": { "wallet": { "Electron Cash": "https://electroncash.org" diff --git a/defs/ethereum/tokens b/defs/ethereum/tokens index 33e5c5dec..44826a687 160000 --- a/defs/ethereum/tokens +++ b/defs/ethereum/tokens @@ -1 +1 @@ -Subproject commit 33e5c5decb94227abe116589c650ddfa66dbe9e5 +Subproject commit 44826a687a155bc0bb5e121370a07f5a95689d09 diff --git a/defs/support.json b/defs/support.json index 90d7f1daf..79e730baf 100644 --- a/defs/support.json +++ b/defs/support.json @@ -122,6 +122,8 @@ "erc20:eth:BKX": "1.6.2", "erc20:eth:BLT": "1.6.2", "erc20:eth:BLUE": "1.6.2", + "erc20:eth:BLX (Bullion)": "1.6.2", + "erc20:eth:BLX (Iconomi)": "1.6.2", "erc20:eth:BLZ": "1.6.2", "erc20:eth:BMC": "1.6.2", "erc20:eth:BMT": "1.6.2", @@ -161,8 +163,12 @@ "erc20:eth:CARCO": "1.6.2", "erc20:eth:CARE": "1.6.2", "erc20:eth:CAS": "1.6.2", + "erc20:eth:CAT (BitClave)": "1.6.2", + "erc20:eth:CAT (Blockcat)": "1.6.2", "erc20:eth:CATs (BitClave)_Old": "1.6.2", "erc20:eth:CC3": "1.6.2", + "erc20:eth:CCC (CryptoCrashCourse)": "1.6.2", + "erc20:eth:CCC (ICONOMI)": "1.6.2", "erc20:eth:CCLC": "1.6.2", "erc20:eth:CCS": "1.6.2", "erc20:eth:CDL": "1.6.2", @@ -370,6 +376,7 @@ "erc20:eth:LGR": "1.6.2", "erc20:eth:LIF": "1.6.2", "erc20:eth:LIFE": "1.6.2", + "erc20:eth:LINK (Chainlink)": "1.6.2", "erc20:eth:LIVE": "1.6.2", "erc20:eth:LND": "1.6.2", "erc20:eth:LOC": "1.6.2", @@ -434,6 +441,7 @@ "erc20:eth:NPER": "1.6.2", "erc20:eth:NPXS": "1.6.2", "erc20:eth:NULS": "1.6.2", + "erc20:eth:NXX": "1.6.2", "erc20:eth:NxC": "1.6.2", "erc20:eth:OAK": "1.6.2", "erc20:eth:OAX": "1.6.2", @@ -923,6 +931,8 @@ "erc20:eth:BKX": "2.0.7", "erc20:eth:BLT": "2.0.7", "erc20:eth:BLUE": "2.0.7", + "erc20:eth:BLX (Bullion)": "2.0.7", + "erc20:eth:BLX (Iconomi)": "2.0.7", "erc20:eth:BLZ": "2.0.7", "erc20:eth:BMC": "2.0.7", "erc20:eth:BMT": "2.0.7", @@ -962,8 +972,12 @@ "erc20:eth:CARCO": "2.0.7", "erc20:eth:CARE": "2.0.7", "erc20:eth:CAS": "2.0.7", + "erc20:eth:CAT (BitClave)": "2.0.7", + "erc20:eth:CAT (Blockcat)": "2.0.7", "erc20:eth:CATs (BitClave)_Old": "2.0.7", "erc20:eth:CC3": "2.0.7", + "erc20:eth:CCC (CryptoCrashCourse)": "2.0.7", + "erc20:eth:CCC (ICONOMI)": "2.0.7", "erc20:eth:CCLC": "2.0.7", "erc20:eth:CCS": "2.0.7", "erc20:eth:CDL": "2.0.7", @@ -1171,6 +1185,7 @@ "erc20:eth:LGR": "2.0.7", "erc20:eth:LIF": "2.0.7", "erc20:eth:LIFE": "2.0.7", + "erc20:eth:LINK (Chainlink)": "2.0.7", "erc20:eth:LIVE": "2.0.7", "erc20:eth:LND": "2.0.7", "erc20:eth:LOC": "2.0.7", @@ -1235,6 +1250,7 @@ "erc20:eth:NPER": "2.0.7", "erc20:eth:NPXS": "2.0.7", "erc20:eth:NULS": "2.0.7", + "erc20:eth:NXX": "2.0.7", "erc20:eth:NxC": "2.0.7", "erc20:eth:OAK": "2.0.7", "erc20:eth:OAX": "2.0.7", diff --git a/tools/coins_details.py b/tools/coins_details.py index 6f3259dc6..8822fa1ec 100755 --- a/tools/coins_details.py +++ b/tools/coins_details.py @@ -143,78 +143,67 @@ def _webwallet_support(coin, support): return any(".trezor.io" in url for url in coin["blockbook"] + coin["bitcore"]) -def update_coins(coins, support_info): +def update_simple(coins, support_info, type): res = {} for coin in coins: key = coin["key"] support = support_info[key] + details = dict( - type="coin", + name=coin["name"], shortcut=coin["shortcut"], - name=coin["coin_label"], - links=dict(Homepage=coin["website"], Github=coin["github"]), + type=type, t1_enabled=_is_supported(support, 1), t2_enabled=_is_supported(support, 2), + ) + for k in OPTIONAL_KEYS: + if k in coin: + details[k] = coin[k] + + res[key] = details + + return res + + +def update_coins(coins, support_info): + res = update_simple(coins, support_info, "coin") + for coin in coins: + key = coin["key"] + support = support_info[key] + details = dict( + name=coin["coin_label"], + links=dict(Homepage=coin["website"], Github=coin["github"]), wallet={}, ) if _webwallet_support(coin, support): details["wallet"]["Trezor"] = "https://wallet.trezor.io" - if support.get("other"): - details["wallet"].update(support["other"]) - res[key] = details + res[key].update(details) return res def update_erc20(coins, support_info): # TODO skip disabled networks? - res = {} + res = update_simple(coins, support_info, "erc20") for coin in coins: key = coin["key"] - support = support_info[key] details = dict( - type="erc20", network=coin["chain"], address=coin["address"], shortcut=coin["shortcut"], - name=coin["name"], links={}, wallet=dict( MyCrypto="https://mycrypto.com", MyEtherWallet="https://www.myetherwallet.com", ), - t1_enabled=support["trezor1"], - t2_enabled=support["trezor2"], ) if coin.get("website"): details["links"]["Homepage"] = coin["website"] if coin.get("social", {}).get("github"): details["links"]["Github"] = coin["social"]["github"] - res[key] = details - - return res - - -def update_simple(coins, support_info, type): - res = {} - for coin in coins: - key = coin["key"] - support = support_info[key] - - details = dict( - name=coin["name"], - shortcut=coin["shortcut"], - type=type, - t1_enabled=_is_supported(support, 1), - t2_enabled=_is_supported(support, 2), - ) - for k in OPTIONAL_KEYS: - if k in coin: - details[k] = coin[k] - - res[key] = details + res[key].update(details) return res @@ -222,13 +211,16 @@ def update_simple(coins, support_info, type): def update_ethereum_networks(coins, support_info): res = update_simple(coins, support_info, "coin") for coin in coins: - res[coin["key"]].update( + key = coin["key"] + details = dict( wallet=dict( MyCrypto="https://mycrypto.com", MyEtherWallet="https://www.myetherwallet.com", ), links=dict(Homepage=coin.get("url")), ) + res[key].update(details) + return res @@ -236,6 +228,7 @@ def check_missing_data(coins): for k, coin in coins.items(): hide = False + print(coin) if "Homepage" not in coin.get("links", {}): print("%s: Missing homepage" % k) hide = True @@ -285,6 +278,7 @@ def apply_overrides(coins): if isinstance(new, dict) and isinstance(orig, dict): for k, v in new.items(): orig[k] = recursive_update(orig.get(k), v) + return orig else: return new @@ -301,7 +295,7 @@ if __name__ == "__main__": root.addHandler(handler) defs = coin_info.get_all() - support_info = coin_info.support_info(defs, erc20_versions=VERSIONS) + support_info = coin_info.support_info(defs) coins = {} coins.update(update_coins(defs.coins, support_info)) From f30131b8db56e934ae56f37ddce2cf21cb6085e4 Mon Sep 17 00:00:00 2001 From: Sotiris Blad Date: Thu, 23 Aug 2018 18:57:28 +0300 Subject: [PATCH 515/767] Update monetaryunit.json (#194) --- defs/coins/monetaryunit.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/defs/coins/monetaryunit.json b/defs/coins/monetaryunit.json index e5792a2e1..63f2b992c 100644 --- a/defs/coins/monetaryunit.json +++ b/defs/coins/monetaryunit.json @@ -33,7 +33,9 @@ "uri_prefix": "monetaryunit", "min_address_length": 27, "max_address_length": 34, - "bitcore": [], + "bitcore": [ + "https://explorer.monetaryunit.org" + ], "blockbook": [], "cooldown": 100 } From 70d1ae268ddf9e0527b1465144851d083c3e55e9 Mon Sep 17 00:00:00 2001 From: matejcik Date: Thu, 23 Aug 2018 18:10:06 +0200 Subject: [PATCH 516/767] support: move some responsibility away from support.py check --- tools/support.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/tools/support.py b/tools/support.py index ddb6efc7a..cd0b3763c 100755 --- a/tools/support.py +++ b/tools/support.py @@ -226,21 +226,25 @@ def fix(): @cli.command() # fmt: off @click.option("-t", "--ignore-tokens", is_flag=True, help="Ignore unsupported ERC20 tokens") +@click.option("-m", "--ignore-missing", is_flag=True, help="Do not fail on missing supportinfo") # fmt: on -def check(ignore_tokens): +def check(ignore_tokens, ignore_missing): """Check validity of support information. Ensures that `support.json` data is well formed, there are no keys without corresponding coins, and there are no coins without corresponding keys. - If `--prune-orphans` is specified, orphaned keys (no corresponding coin) - will be deleted from `support.json`. - If `--ignore-tokens` is specified, the check will ignore ERC20 tokens without support info. This is useful because there is usually a lot of ERC20 tokens. + + If `--ignore-missing` is specified, the check will display coins with missing + support info, but will not fail when missing coins are found. This is + useful in Travis. """ - coins_dict = coin_info.get_all(deduplicate=False).as_dict() + all_coins = coin_info.get_all(deduplicate=False) + coin_info.mark_duplicate_shortcuts(all_coins.as_list()) + coins_dict = all_coins.as_dict() checks_ok = True errors = check_support_values() @@ -259,7 +263,8 @@ def check(ignore_tokens): if ignore_tokens: values = [coin for coin in values if not coin_info.is_token(coin)] if values: - checks_ok = False + if not ignore_missing: + checks_ok = False print(f"Device {device} has missing support infos:") for coin in values: print(f"{coin['key']} - {coin['name']}") From 1a01c5d6866b02b32c21cbda139546abc0606dac Mon Sep 17 00:00:00 2001 From: matejcik Date: Thu, 23 Aug 2018 18:32:12 +0200 Subject: [PATCH 517/767] travis: run new checks --- .travis.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 834c2a27f..486451106 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,7 +9,7 @@ cache: - $HOME/.cache/pip python: - - "3.5" + - "3.6" install: - pip install demjson @@ -18,7 +18,8 @@ install: script: - jsonlint defs/*.json - jsonlint defs/*/*.json - - python tools/coin_gen.py check + - python tools/cointool.py check + - python tools/support.py check --ignore-tokens --ignore-missing notifications: webhooks: From 4dbfc220b4315408a1bf641f3ab0f8c2bbf08cea Mon Sep 17 00:00:00 2001 From: matejcik Date: Thu, 23 Aug 2018 19:09:35 +0200 Subject: [PATCH 518/767] cointool: explain and improve address collision check --- tools/cointool.py | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/tools/cointool.py b/tools/cointool.py index 6428e71fc..b6e150763 100755 --- a/tools/cointool.py +++ b/tools/cointool.py @@ -204,15 +204,18 @@ def check_btc(coins): coin["unsupported"] = True supported_mainnets = [c for c in mainnets if not c.get("unsupported")] + supported_networks = [c for c in bucket if not c.get("unsupported")] if len(mainnets) > 1: - if len(supported_mainnets) > 1: - if have_bitcoin: - level = logging.ERROR - failed = True - else: - level = logging.WARNING + if have_bitcoin and len(supported_networks) > 1: + # ANY collision with Bitcoin is bad + level = logging.ERROR + failed = True + elif len(supported_mainnets) > 1: + # collision between supported networks is still pretty bad + level = logging.WARNING else: + # collision between some unsupported networks is OK level = logging.INFO print_log(level, f"prefix {key}:", collision_str(bucket)) @@ -420,6 +423,16 @@ def check(missing_support, backend, icons, show_duplicates): In the output, duplicate ERC tokens will be shown in cyan; duplicate non-tokens in red. An asterisk (*) next to symbol name means that even though it was detected as duplicate, it is still included in results. + + The code checks that SLIP44 numbers don't collide between different mainnets + (testnet collisions are allowed), that `address_prefix` doesn't collide with + Bitcoin (other collisions are reported as warnings). `address_prefix_p2sh` + is also checked but we have a bunch of collisions there and can't do much + about them, so it's not an error. + + In the collision checks, Bitcoin is shown in red, other mainnets in blue, + testnets in green and unsupported networks in gray, marked with `(X)` for + non-colored output. """ if backend and requests is None: raise click.ClickException("You must install requests for backend check") @@ -435,12 +448,6 @@ def check(missing_support, backend, icons, show_duplicates): if not check_btc(defs.coins): all_checks_passed = False - # XXX support.py is responsible for checking support data - # print("Checking support data...") - # support_data = coin_info.get_support_data() - # if not check_support(defs, support_data, fail_missing=missing_support): - # all_checks_passed = False - if show_duplicates == "all": show_tok_notok = True show_erc20 = True From f152ca9b79f525b532b5d7ac2ff5524517a349b4 Mon Sep 17 00:00:00 2001 From: matejcik Date: Thu, 23 Aug 2018 19:09:54 +0200 Subject: [PATCH 519/767] cointool: check non-uniform keys (e.g. someone adding a "description" field to the defs json) --- tools/cointool.py | 46 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/tools/cointool.py b/tools/cointool.py index b6e150763..b5fbad2aa 100755 --- a/tools/cointool.py +++ b/tools/cointool.py @@ -332,6 +332,37 @@ def check_icons(coins): return check_passed +IGNORE_NONUNIFORM_KEYS = frozenset(("unsupported", "duplicate", "notes")) + + +def check_key_uniformity(coins): + keysets = defaultdict(list) + for coin in coins: + keyset = frozenset(coin.keys()) | IGNORE_NONUNIFORM_KEYS + keysets[keyset].append(coin) + + if len(keysets) <= 1: + return True + + buckets = list(keysets.values()) + buckets.sort(key=lambda x: len(x)) + majority = buckets[-1] + rest = sum(buckets[:-1], []) + reference_keyset = set(majority[0].keys()) + + for coin in rest: + key = coin["key"] + keyset = set(coin.keys()) + missing = ", ".join(reference_keyset - keyset) + if missing: + print_log(logging.ERROR, f"coin {key} has missing keys: {missing}") + additional = ", ".join(keyset - reference_keyset) + if additional: + print_log(logging.ERROR, f"coin {key} has superfluous keys: {additional}") + + return False + + # ====== coindefs generators ====== @@ -411,8 +442,12 @@ def cli(colors): def check(missing_support, backend, icons, show_duplicates): """Validate coin definitions. - Checks that every btc-like coin is properly filled out, reports address collisions - and missing support information. + Checks that every btc-like coin is properly filled out, reports duplicate symbols, + missing or invalid icons, backend responses, and uniform key information -- + i.e., that all coins of the same type have the same fields in their JSON data. + + Uniformity check ignores NEM mosaics and ERC20 tokens, where non-uniformity is + expected. The `--show-duplicates` option can be set to: * all: all shortcut collisions are shown, including colliding ERC20 tokens @@ -471,6 +506,13 @@ def check(missing_support, backend, icons, show_duplicates): if not check_backends(defs.coins): all_checks_passed = False + print("Checking key uniformity...") + for cointype, coinlist in defs.items(): + if cointype in ("erc20", "nem"): + continue + if not check_key_uniformity(coinlist): + all_checks_passed = False + if not all_checks_passed: print("Some checks failed.") sys.exit(1) From 98c2fdc6dfb9ad39fc4623c330f6f96a53e9d843 Mon Sep 17 00:00:00 2001 From: matejcik Date: Thu, 23 Aug 2018 19:32:28 +0200 Subject: [PATCH 520/767] cointool: improve and document some more intricate parts of checks --- tools/cointool.py | 60 +++++++++++++++++++++++++++++++---------------- 1 file changed, 40 insertions(+), 20 deletions(-) diff --git a/tools/cointool.py b/tools/cointool.py index b5fbad2aa..6d96836fc 100755 --- a/tools/cointool.py +++ b/tools/cointool.py @@ -143,6 +143,7 @@ def render_file(src, dst, coins, support_info): def highlight_key(coin, color): + """Return a colorful string where the SYMBOL part is bold.""" keylist = coin["key"].split(":") if keylist[-1].isdigit(): keylist[-2] = crayon(color, keylist[-2], bold=True) @@ -166,6 +167,7 @@ def check_btc(coins): check_passed = True support_infos = coin_info.support_info(coins) + # validate individual coin data for coin in coins: errors = coin_info.validate_btc(coin) if errors: @@ -174,6 +176,7 @@ def check_btc(coins): print("\n".join(errors)) def collision_str(bucket): + """Generate a colorful string out of a bucket of colliding coins.""" coin_strings = [] for coin in bucket: name = coin["name"] @@ -192,6 +195,13 @@ def check_btc(coins): return ", ".join(coin_strings) def print_collision_buckets(buckets, prefix): + """Intelligently print collision buckets. + + For each bucket, if there are any collision with a mainnet, print it. + If the collision is with unsupported networks or testnets, it's just INFO. + If the collision is with supported mainnets, it's WARNING. + If the collision with any supported network includes Bitcoin, it's an ERROR. + """ failed = False for key, bucket in buckets.items(): mainnets = [c for c in bucket if not c["name"].endswith("Testnet")] @@ -227,6 +237,7 @@ def check_btc(coins): if print_collision_buckets(slip44, "key"): check_passed = False + # only check address_type on coins that don't use cashaddr nocashaddr = [coin for coin in coins if not coin.get("cashaddr_prefix")] print("Checking address_type collisions...") @@ -242,8 +253,20 @@ def check_btc(coins): return check_passed -def check_dups(buckets, show_tok_notok, show_erc20): +def check_dups(buckets, print_at_level=logging.ERROR): + """Analyze and pretty-print results of `coin_info.mark_duplicate_shortcuts`. + + `print_at_level` can be one of logging levels. + + The results are buckets of colliding symbols. + If the collision is only between ERC20 tokens, it's DEBUG. + If the collision includes one non-token, it's INFO. + If the collision includes more than one non-token, it's ERROR and printed always. + """ def coin_str(coin): + """Colorize coins. Tokens are cyan, nontokens are red. Coins that are NOT + marked duplicate get a green asterisk. + """ if coin_info.is_token(coin): color = "cyan" else: @@ -275,9 +298,7 @@ def check_dups(buckets, show_tok_notok, show_erc20): check_passed = False # deciding whether to print - if not nontokens and not show_erc20: - continue - if len(nontokens) == 1 and not show_tok_notok: + if level < print_at_level: continue if symbol == "_override": @@ -433,13 +454,12 @@ def cli(colors): @cli.command() # fmt: off -@click.option("--missing-support/--no-missing-support", "-s", default=False, help="Fail if support info for a coin is missing") @click.option("--backend/--no-backend", "-b", default=False, help="Check blockbook/bitcore responses") @click.option("--icons/--no-icons", default=True, help="Check icon files") @click.option("-d", "--show-duplicates", type=click.Choice(("all", "nontoken", "errors")), default="errors", help="How much information about duplicate shortcuts should be shown.") # fmt: on -def check(missing_support, backend, icons, show_duplicates): +def check(backend, icons, show_duplicates): """Validate coin definitions. Checks that every btc-like coin is properly filled out, reports duplicate symbols, @@ -450,18 +470,21 @@ def check(missing_support, backend, icons, show_duplicates): expected. The `--show-duplicates` option can be set to: - * all: all shortcut collisions are shown, including colliding ERC20 tokens - * nontoken: only collisions that affect non-ERC20 coins are shown - * errors: only collisions between non-ERC20 tokens are shown. This is the default, - as a collision between two or more non-ERC20 tokens is an error. + + - all: all shortcut collisions are shown, including colliding ERC20 tokens + + - nontoken: only collisions that affect non-ERC20 coins are shown + + - errors: only collisions between non-ERC20 tokens are shown. This is the default, + as a collision between two or more non-ERC20 tokens is an error. In the output, duplicate ERC tokens will be shown in cyan; duplicate non-tokens in red. An asterisk (*) next to symbol name means that even though it was detected as duplicate, it is still included in results. - The code checks that SLIP44 numbers don't collide between different mainnets - (testnet collisions are allowed), that `address_prefix` doesn't collide with - Bitcoin (other collisions are reported as warnings). `address_prefix_p2sh` + The collision detection checks that SLIP44 numbers don't collide between different + mainnets (testnet collisions are allowed), that `address_prefix` doesn't collide + with Bitcoin (other collisions are reported as warnings). `address_prefix_p2sh` is also checked but we have a bunch of collisions there and can't do much about them, so it's not an error. @@ -484,16 +507,13 @@ def check(missing_support, backend, icons, show_duplicates): all_checks_passed = False if show_duplicates == "all": - show_tok_notok = True - show_erc20 = True + dup_level = logging.DEBUG elif show_duplicates == "nontoken": - show_tok_notok = True - show_erc20 = False + dup_level = logging.INFO else: - show_tok_notok = False - show_erc20 = False + dup_level = logging.ERROR print("Checking unexpected duplicates...") - if not check_dups(buckets, show_tok_notok, show_erc20): + if not check_dups(buckets, dup_level): all_checks_passed = False if icons: From 0abfb6cd9183c36ede1b52f43ab5c79b6eac88dd Mon Sep 17 00:00:00 2001 From: matejcik Date: Fri, 24 Aug 2018 15:20:25 +0200 Subject: [PATCH 521/767] coin_info: tweak API for less repetition --- tools/coin_info.py | 34 +++++++++++++++++++++++++--------- tools/coins_details.py | 6 +++--- tools/cointool.py | 9 ++++----- 3 files changed, 32 insertions(+), 17 deletions(-) diff --git a/tools/coin_info.py b/tools/coin_info.py index f6f2cf43a..db5713b21 100755 --- a/tools/coin_info.py +++ b/tools/coin_info.py @@ -278,7 +278,7 @@ def latest_releases(): latest = {} for v in ("1", "2"): releases = requests.get(RELEASES_URL.format(v)).json() - latest[v] = max(tuple(r["version"]) for r in releases) + latest["trezor" + v] = max(tuple(r["version"]) for r in releases) return latest @@ -421,8 +421,6 @@ def mark_duplicate_shortcuts(coins): # they *still* keep duplicate status (and possibly are deleted). continue - nontokens = [coin for coin in values if not is_token(coin)] - for coin in values: # allow overrides to skip this; if not listed in overrides, assume True is_dup = overrides.get(coin["key"], True) @@ -441,7 +439,7 @@ def _btc_sort_key(coin): return coin["name"] -def get_all(deduplicate=True): +def collect_coin_info(): """Returns all definition as dict organized by coin type. `coins` for btc-like coins, `eth` for ethereum networks, @@ -473,17 +471,35 @@ def get_all(deduplicate=True): _ensure_mandatory_values(coins) - if deduplicate: - mark_duplicate_shortcuts(all_coins.as_list()) - all_coins["erc20"] = [ - coin for coin in all_coins["erc20"] if not coin.get("duplicate") - ] + return all_coins + + +def coin_info_with_duplicates(): + """Collects coin info, detects duplicates but does not remove them. + + Returns the CoinsInfo object and duplicate buckets. + """ + all_coins = collect_coin_info() + buckets = mark_duplicate_shortcuts(all_coins.as_list()) + return all_coins, buckets + +def coin_info(): + """Collects coin info, marks and prunes duplicate ERC20 symbols, fills out support + info and returns the result. + """ + all_coins, _ = coin_info_with_duplicates() + all_coins["erc20"] = [ + coin for coin in all_coins["erc20"] if not coin.get("duplicate") + ] return all_coins def search(coins, keyword): kwl = keyword.lower() + if isinstance(coins, CoinsInfo): + coins = coins.as_list() + for coin in coins: key = coin["key"].lower() name = coin["name"].lower() diff --git a/tools/coins_details.py b/tools/coins_details.py index 8822fa1ec..711bbb278 100755 --- a/tools/coins_details.py +++ b/tools/coins_details.py @@ -153,8 +153,8 @@ def update_simple(coins, support_info, type): name=coin["name"], shortcut=coin["shortcut"], type=type, - t1_enabled=_is_supported(support, 1), - t2_enabled=_is_supported(support, 2), + t1_enabled=_is_supported(support, "trezor1"), + t2_enabled=_is_supported(support, "trezor2"), ) for k in OPTIONAL_KEYS: if k in coin: @@ -294,7 +294,7 @@ if __name__ == "__main__": handler.setLevel(logging.DEBUG) root.addHandler(handler) - defs = coin_info.get_all() + defs = coin_info.coin_info() support_info = coin_info.support_info(defs) coins = {} diff --git a/tools/cointool.py b/tools/cointool.py index 6d96836fc..a3e4b4df1 100755 --- a/tools/cointool.py +++ b/tools/cointool.py @@ -498,8 +498,7 @@ def check(backend, icons, show_duplicates): if icons and not CAN_BUILD_DEFS: raise click.ClickException("Missing requirements for icon check") - defs = coin_info.get_all(deduplicate=False) - buckets = coin_info.mark_duplicate_shortcuts(defs.as_list()) + defs, buckets = coin_info.coin_info_with_duplicates() all_checks_passed = True print("Checking BTC-like coins...") @@ -544,7 +543,7 @@ def check(backend, icons, show_duplicates): @click.option("-o", "--outfile", type=click.File(mode="w"), default="./coins.json") def coins_json(outfile): """Generate coins.json for consumption in python-trezor and Connect/Wallet""" - coins = coin_info.get_all().coins + coins = coin_info.coin_info().coins support_info = coin_info.support_info(coins) by_name = {} for coin in coins: @@ -564,7 +563,7 @@ def coindefs(outfile): This is currently unused but should enable us to add new coins without having to update firmware. """ - coins = coin_info.get_all().coins + coins = coin_info.coin_info().coins coindefs = {} for coin in coins: key = coin["key"] @@ -603,7 +602,7 @@ def render(paths, outfile, verbose): raise click.ClickException("Option -o can only be used with single input file") # prepare defs - defs = coin_info.get_all() + defs = coin_info.coin_info() support_info = coin_info.support_info(defs) # munch dicts - make them attribute-accessible From 15a971764af670e17bb3a1bbc96d2f6d8b7f012d Mon Sep 17 00:00:00 2001 From: matejcik Date: Fri, 24 Aug 2018 15:21:11 +0200 Subject: [PATCH 522/767] support: finish `support.py release` flow --- tools/support.py | 120 ++++++++++++++++++++++++++++++++++++----------- 1 file changed, 92 insertions(+), 28 deletions(-) diff --git a/tools/support.py b/tools/support.py index cd0b3763c..9e4314924 100755 --- a/tools/support.py +++ b/tools/support.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 import re import os +import subprocess import sys import click import coin_info @@ -204,13 +205,13 @@ def cli(): @cli.command() -def fix(): +@click.option("-n", "--dry-run", is_flag=True, help="Do not write changes") +def fix(dry_run): """Fix expected problems. Prunes orphaned keys and ensures that ERC20 duplicate info matches support info. """ - all_coins = coin_info.get_all(deduplicate=False) - coin_info.mark_duplicate_shortcuts(all_coins.as_list()) + all_coins, _ = coin_info.coin_info_with_duplicates() coins_dict = all_coins.as_dict() orphaned = find_orphaned_support_keys(coins_dict) @@ -220,7 +221,8 @@ def fix(): clear_support(device, orphan) process_erc20(coins_dict) - write_support_info() + if not dry_run: + write_support_info() @cli.command() @@ -242,8 +244,7 @@ def check(ignore_tokens, ignore_missing): support info, but will not fail when missing coins are found. This is useful in Travis. """ - all_coins = coin_info.get_all(deduplicate=False) - coin_info.mark_duplicate_shortcuts(all_coins.as_list()) + all_coins, _ = coin_info.coin_info_with_duplicates() coins_dict = all_coins.as_dict() checks_ok = True @@ -281,14 +282,27 @@ def check(ignore_tokens, ignore_missing): @cli.command() # fmt: off -@click.argument("version") -@click.option("--git-tag/--no-git-tag", "-g", default=False, help="create a corresponding Git tag") +@click.argument("device") +@click.option("-r", "--version", help="Set explicit version string (default: guess from latest release)") +@click.option("--git-tag/--no-git-tag", "-g", default=False, help="Create a corresponding Git tag") @click.option("--release-soon/--no-release-soon", default=True, help="Release coins marked 'soon'") @click.option("--release-missing/--no-release-missing", default=True, help="Release coins with missing support info") @click.option("-n", "--dry-run", is_flag=True, help="Do not write changes") -@click.option("-s", "--soon", is_flag=True, help="Only set missing support-infos to be released 'soon'.") +@click.option("-s", "--soon", is_flag=True, help="Only set missing support-infos to be released 'soon'") +@click.option("-f", "--force", is_flag=True, help="Proceed even with bad version/device info") # fmt: on -def release(version, git_tag, release_soon, release_missing, dry_run, soon): +@click.pass_context +def release( + ctx, + device: str, + version, + git_tag, + release_soon, + release_missing, + dry_run, + soon, + force, +): """Release a new Trezor firmware. Update support infos so that all coins have a clear support status. @@ -297,41 +311,87 @@ def release(version, git_tag, release_soon, release_missing, dry_run, soon): released firmware version. Optionally tags the repository with the given version. - """ - version_tuple = list(map(int, version.split("."))) - device = f"trezor{version_tuple[0]}" + `device` can be "1", "2", or a string matching `support.json` key. Version + is autodetected by downloading a list of latest releases and incrementing + micro version by one, or you can specify `--version` explicitly. + """ + # check condition(s) if soon and git_tag: raise click.ClickException("Cannot git-tag a 'soon' revision") + # process `device` + if device.isnumeric(): + device = f"trezor{device}" + + if not force and device not in coin_info.VERSIONED_SUPPORT_INFO: + raise click.ClickException( + f"Non-releasable device {device} (support info is not versioned). " + "Use --force to proceed anyway." + ) + + if not soon: + # guess `version` if not given + if not version: + versions = coin_info.latest_releases() + latest_version = versions.get(device) + if latest_version is None: + raise click.ClickException( + "Failed to guess version. " + "Please use --version to specify it explicitly." + ) + else: + latest_version = list(latest_version) + latest_version[-1] += 1 + version = ".".join(str(n) for n in latest_version) + + # process `version` + try: + version_numbers = list(map(int, version.split("."))) + expected_device = f"trezor{version_numbers[0]}" + if not force and device != expected_device: + raise click.ClickException( + f"Device {device} should not be version {version}. " + "Use --force to proceed anyway." + ) + except ValueError as e: + if not force: + raise click.ClickException( + f"Failed to parse '{version}' as a version. " + "Use --force to proceed anyway." + ) from e + if soon: version = "soon" print(f"Moving {device} missing infos to 'soon'") else: print(f"Releasing {device} firmware version {version}") - defs = coin_info.get_all(deduplicate=False) - coin_info.mark_duplicate_shortcuts(defs.as_list()) + defs, _ = coin_info.coin_info_with_duplicates() coins_dict = defs.as_dict() - # process those darned ERC20 duplicates + # Invoke data fixup as dry-run. That will modify data internally but won't write + # changes. We will write changes at the end based on our own `dry_run` value. + print("Fixing up data...") + ctx.invoke(fix, dry_run=True) + # process missing (not listed) supportinfos if release_missing: missing_list = find_unsupported_coins(coins_dict)[device] for coin in missing_list: key = coin["key"] - if coin.get("duplicate") and coin_info.is_token(coin): - print(f"UNsupporting duplicate coin {key} ({coin['name']})") - set_unsupported(device, key, ERC20_DUPLICATE_KEY) - else: - print(f"Adding missing {key} ({coin['name']})") - set_supported(device, key, version) + # we should have no unprocessed dup tokens at this point + assert not (coin.get("duplicate") and coin_info.is_token(coin)) + print(f"Adding missing {key} ({coin['name']})") + set_supported(device, key, version) + # if we're releasing, process coins marked "soon" + # (`not soon` because `soon` means set release version to "soon") if not soon and release_soon: supported, _ = support_dicts(device) soon_list = [ coins_dict[key] - for key, val in supported + for key, val in supported.items() if val == "soon" and key in coins_dict ] for coin in soon_list: @@ -339,8 +399,13 @@ def release(version, git_tag, release_soon, release_missing, dry_run, soon): print(f"Adding soon-released {key} ({coin['name']})") set_supported(device, key, version) + tagname = f"{device}-{version}" if git_tag: - print("git tag not supported yet") + if dry_run: + print(f"Would tag current commit with {tagname}") + else: + print(f"Tagging current commit with {tagname}") + subprocess.check_call(["git", "tag", tagname]) if not dry_run: write_support_info() @@ -355,8 +420,7 @@ def show(keyword): Keywords match against key, name or shortcut (ticker symbol) of coin. """ - defs = coin_info.get_all(deduplicate=False).as_list() - coin_info.mark_duplicate_shortcuts(defs) + defs = coin_info.coin_info_with_duplicates() for kw in keyword: for coin in coin_info.search(defs, kw): @@ -388,8 +452,8 @@ def set_support_value(key, entries, reason): Entries with other names will be inserted into "others". This is a good place to store links to 3rd party software, such as Electrum forks or claim tools. """ - coins = coin_info.get_all(deduplicate=False).as_dict() - coin_info.mark_duplicate_shortcuts(coins.values()) + defs, _ = coin_info.coin_info_with_duplicates() + coins = defs.as_dict() if key not in coins: click.echo(f"Failed to find key {key}") click.echo("Use 'support.py show' to search for the right one.") From a903b996c8ce2234fd0031c0e12c7532f73d83a2 Mon Sep 17 00:00:00 2001 From: matejcik Date: Fri, 24 Aug 2018 15:29:48 +0200 Subject: [PATCH 523/767] support: fix bug in support.py show --- tools/support.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/support.py b/tools/support.py index 9e4314924..0d0ab5390 100755 --- a/tools/support.py +++ b/tools/support.py @@ -420,7 +420,7 @@ def show(keyword): Keywords match against key, name or shortcut (ticker symbol) of coin. """ - defs = coin_info.coin_info_with_duplicates() + defs, _ = coin_info.coin_info_with_duplicates() for kw in keyword: for coin in coin_info.search(defs, kw): From 9dd7a1d4eda2a152e286697142e98a93c67df989 Mon Sep 17 00:00:00 2001 From: Michael Ira Krufky Date: Fri, 24 Aug 2018 10:22:29 -0400 Subject: [PATCH 524/767] Add support for AtheiosChain (ATH) (#195) --- defs/ethereum/networks.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/defs/ethereum/networks.json b/defs/ethereum/networks.json index 1210db1d7..cb9938ae4 100644 --- a/defs/ethereum/networks.json +++ b/defs/ethereum/networks.json @@ -166,5 +166,13 @@ "name": "Pirl", "rskip60": false, "url": "https://pirl.io" + }, + { + "chain_id": 1620, + "slip44": 1620, + "shortcut": "ATH", + "name": "Atheios", + "rskip60": false, + "url": "https://atheios.com" } ] From 467b41efda3cfcbe3acec91f636c2f8d5ee4c4f5 Mon Sep 17 00:00:00 2001 From: matejcik Date: Fri, 24 Aug 2018 15:42:06 +0200 Subject: [PATCH 525/767] defs/tools: rename "coins" to "bitcoin" --- defs/{coins => bitcoin}/bcash.json | 0 defs/{coins => bitcoin}/bcash.png | Bin defs/{coins => bitcoin}/bcash_testnet.json | 0 defs/{coins => bitcoin}/bcash_testnet.png | Bin defs/{coins => bitcoin}/bgold.json | 0 defs/{coins => bitcoin}/bgold.png | Bin defs/{coins => bitcoin}/bgold_testnet.json | 0 defs/{coins => bitcoin}/bgold_testnet.png | Bin defs/{coins => bitcoin}/bitcoin.json | 0 defs/{coins => bitcoin}/bitcoin.png | Bin defs/{coins => bitcoin}/bitcoin_testnet.json | 0 defs/{coins => bitcoin}/bitcoin_testnet.png | Bin defs/{coins => bitcoin}/bitcore.json | 0 defs/{coins => bitcoin}/bitcore.png | Bin defs/{coins => bitcoin}/bprivate.json | 0 defs/{coins => bitcoin}/bprivate.png | Bin defs/{coins => bitcoin}/crown.json | 0 defs/{coins => bitcoin}/crown.png | Bin defs/{coins => bitcoin}/dash.json | 0 defs/{coins => bitcoin}/dash.png | Bin defs/{coins => bitcoin}/dash_testnet.json | 0 defs/{coins => bitcoin}/dash_testnet.png | Bin defs/{coins => bitcoin}/decred.json | 0 defs/{coins => bitcoin}/decred.png | Bin defs/{coins => bitcoin}/decred_testnet.json | 0 defs/{coins => bitcoin}/decred_testnet.png | Bin defs/{coins => bitcoin}/denarius.json | 0 defs/{coins => bitcoin}/denarius.png | Bin defs/{coins => bitcoin}/digibyte.json | 0 defs/{coins => bitcoin}/digibyte.png | Bin defs/{coins => bitcoin}/dogecoin.json | 0 defs/{coins => bitcoin}/dogecoin.png | Bin defs/{coins => bitcoin}/feathercoin.json | 0 defs/{coins => bitcoin}/feathercoin.png | Bin defs/{coins => bitcoin}/flashcoin.json | 0 defs/{coins => bitcoin}/flashcoin.png | Bin defs/{coins => bitcoin}/fujicoin.json | 0 defs/{coins => bitcoin}/fujicoin.png | Bin defs/{coins => bitcoin}/groestlcoin.json | 0 defs/{coins => bitcoin}/groestlcoin.png | Bin .../groestlcoin_testnet.json | 0 .../groestlcoin_testnet.png | Bin defs/{coins => bitcoin}/koto.json | 0 defs/{coins => bitcoin}/koto.png | Bin defs/{coins => bitcoin}/litecoin.json | 0 defs/{coins => bitcoin}/litecoin.png | Bin defs/{coins => bitcoin}/litecoin_testnet.json | 0 defs/{coins => bitcoin}/litecoin_testnet.png | Bin defs/{coins => bitcoin}/monacoin.json | 0 defs/{coins => bitcoin}/monacoin.png | Bin defs/{coins => bitcoin}/monetaryunit.json | 0 defs/{coins => bitcoin}/monetaryunit.png | Bin defs/{coins => bitcoin}/myriad.json | 0 defs/{coins => bitcoin}/myriad.png | Bin defs/{coins => bitcoin}/namecoin.json | 0 defs/{coins => bitcoin}/namecoin.png | Bin defs/{coins => bitcoin}/pesetacoin.json | 0 defs/{coins => bitcoin}/pesetacoin.png | Bin defs/{coins => bitcoin}/smartcash.json | 0 defs/{coins => bitcoin}/smartcash.png | Bin .../{coins => bitcoin}/smartcash_testnet.json | 0 defs/{coins => bitcoin}/smartcash_testnet.png | Bin defs/{coins => bitcoin}/terracoin.json | 0 defs/{coins => bitcoin}/terracoin.png | Bin defs/{coins => bitcoin}/vertcoin.json | 0 defs/{coins => bitcoin}/vertcoin.png | Bin defs/{coins => bitcoin}/viacoin.json | 0 defs/{coins => bitcoin}/viacoin.png | Bin defs/{coins => bitcoin}/zcash.json | 0 defs/{coins => bitcoin}/zcash.png | Bin defs/{coins => bitcoin}/zcash_testnet.json | 0 defs/{coins => bitcoin}/zcash_testnet.png | Bin defs/{coins => bitcoin}/zcoin.json | 0 defs/{coins => bitcoin}/zcoin.png | Bin defs/{coins => bitcoin}/zcoin_testnet.json | 0 defs/{coins => bitcoin}/zcoin_testnet.png | Bin defs/{coins => bitcoin}/zencash.json | 0 defs/{coins => bitcoin}/zencash.png | Bin defs/coins | 1 + defs/coins/tools/build_coins.py | 1 - defs/coins_details.override.json | 24 +- defs/support.json | 216 +++++++++--------- tools/coin_info.py | 10 +- tools/coins_details.py | 4 +- tools/cointool.py | 10 +- 85 files changed, 133 insertions(+), 133 deletions(-) rename defs/{coins => bitcoin}/bcash.json (100%) rename defs/{coins => bitcoin}/bcash.png (100%) rename defs/{coins => bitcoin}/bcash_testnet.json (100%) rename defs/{coins => bitcoin}/bcash_testnet.png (100%) rename defs/{coins => bitcoin}/bgold.json (100%) rename defs/{coins => bitcoin}/bgold.png (100%) rename defs/{coins => bitcoin}/bgold_testnet.json (100%) rename defs/{coins => bitcoin}/bgold_testnet.png (100%) rename defs/{coins => bitcoin}/bitcoin.json (100%) rename defs/{coins => bitcoin}/bitcoin.png (100%) rename defs/{coins => bitcoin}/bitcoin_testnet.json (100%) rename defs/{coins => bitcoin}/bitcoin_testnet.png (100%) rename defs/{coins => bitcoin}/bitcore.json (100%) rename defs/{coins => bitcoin}/bitcore.png (100%) rename defs/{coins => bitcoin}/bprivate.json (100%) rename defs/{coins => bitcoin}/bprivate.png (100%) rename defs/{coins => bitcoin}/crown.json (100%) rename defs/{coins => bitcoin}/crown.png (100%) rename defs/{coins => bitcoin}/dash.json (100%) rename defs/{coins => bitcoin}/dash.png (100%) rename defs/{coins => bitcoin}/dash_testnet.json (100%) rename defs/{coins => bitcoin}/dash_testnet.png (100%) rename defs/{coins => bitcoin}/decred.json (100%) rename defs/{coins => bitcoin}/decred.png (100%) rename defs/{coins => bitcoin}/decred_testnet.json (100%) rename defs/{coins => bitcoin}/decred_testnet.png (100%) rename defs/{coins => bitcoin}/denarius.json (100%) rename defs/{coins => bitcoin}/denarius.png (100%) rename defs/{coins => bitcoin}/digibyte.json (100%) rename defs/{coins => bitcoin}/digibyte.png (100%) rename defs/{coins => bitcoin}/dogecoin.json (100%) rename defs/{coins => bitcoin}/dogecoin.png (100%) rename defs/{coins => bitcoin}/feathercoin.json (100%) rename defs/{coins => bitcoin}/feathercoin.png (100%) rename defs/{coins => bitcoin}/flashcoin.json (100%) rename defs/{coins => bitcoin}/flashcoin.png (100%) rename defs/{coins => bitcoin}/fujicoin.json (100%) rename defs/{coins => bitcoin}/fujicoin.png (100%) rename defs/{coins => bitcoin}/groestlcoin.json (100%) rename defs/{coins => bitcoin}/groestlcoin.png (100%) rename defs/{coins => bitcoin}/groestlcoin_testnet.json (100%) rename defs/{coins => bitcoin}/groestlcoin_testnet.png (100%) rename defs/{coins => bitcoin}/koto.json (100%) rename defs/{coins => bitcoin}/koto.png (100%) rename defs/{coins => bitcoin}/litecoin.json (100%) rename defs/{coins => bitcoin}/litecoin.png (100%) rename defs/{coins => bitcoin}/litecoin_testnet.json (100%) rename defs/{coins => bitcoin}/litecoin_testnet.png (100%) rename defs/{coins => bitcoin}/monacoin.json (100%) rename defs/{coins => bitcoin}/monacoin.png (100%) rename defs/{coins => bitcoin}/monetaryunit.json (100%) rename defs/{coins => bitcoin}/monetaryunit.png (100%) rename defs/{coins => bitcoin}/myriad.json (100%) rename defs/{coins => bitcoin}/myriad.png (100%) rename defs/{coins => bitcoin}/namecoin.json (100%) rename defs/{coins => bitcoin}/namecoin.png (100%) rename defs/{coins => bitcoin}/pesetacoin.json (100%) rename defs/{coins => bitcoin}/pesetacoin.png (100%) rename defs/{coins => bitcoin}/smartcash.json (100%) rename defs/{coins => bitcoin}/smartcash.png (100%) rename defs/{coins => bitcoin}/smartcash_testnet.json (100%) rename defs/{coins => bitcoin}/smartcash_testnet.png (100%) rename defs/{coins => bitcoin}/terracoin.json (100%) rename defs/{coins => bitcoin}/terracoin.png (100%) rename defs/{coins => bitcoin}/vertcoin.json (100%) rename defs/{coins => bitcoin}/vertcoin.png (100%) rename defs/{coins => bitcoin}/viacoin.json (100%) rename defs/{coins => bitcoin}/viacoin.png (100%) rename defs/{coins => bitcoin}/zcash.json (100%) rename defs/{coins => bitcoin}/zcash.png (100%) rename defs/{coins => bitcoin}/zcash_testnet.json (100%) rename defs/{coins => bitcoin}/zcash_testnet.png (100%) rename defs/{coins => bitcoin}/zcoin.json (100%) rename defs/{coins => bitcoin}/zcoin.png (100%) rename defs/{coins => bitcoin}/zcoin_testnet.json (100%) rename defs/{coins => bitcoin}/zcoin_testnet.png (100%) rename defs/{coins => bitcoin}/zencash.json (100%) rename defs/{coins => bitcoin}/zencash.png (100%) create mode 120000 defs/coins delete mode 120000 defs/coins/tools/build_coins.py diff --git a/defs/coins/bcash.json b/defs/bitcoin/bcash.json similarity index 100% rename from defs/coins/bcash.json rename to defs/bitcoin/bcash.json diff --git a/defs/coins/bcash.png b/defs/bitcoin/bcash.png similarity index 100% rename from defs/coins/bcash.png rename to defs/bitcoin/bcash.png diff --git a/defs/coins/bcash_testnet.json b/defs/bitcoin/bcash_testnet.json similarity index 100% rename from defs/coins/bcash_testnet.json rename to defs/bitcoin/bcash_testnet.json diff --git a/defs/coins/bcash_testnet.png b/defs/bitcoin/bcash_testnet.png similarity index 100% rename from defs/coins/bcash_testnet.png rename to defs/bitcoin/bcash_testnet.png diff --git a/defs/coins/bgold.json b/defs/bitcoin/bgold.json similarity index 100% rename from defs/coins/bgold.json rename to defs/bitcoin/bgold.json diff --git a/defs/coins/bgold.png b/defs/bitcoin/bgold.png similarity index 100% rename from defs/coins/bgold.png rename to defs/bitcoin/bgold.png diff --git a/defs/coins/bgold_testnet.json b/defs/bitcoin/bgold_testnet.json similarity index 100% rename from defs/coins/bgold_testnet.json rename to defs/bitcoin/bgold_testnet.json diff --git a/defs/coins/bgold_testnet.png b/defs/bitcoin/bgold_testnet.png similarity index 100% rename from defs/coins/bgold_testnet.png rename to defs/bitcoin/bgold_testnet.png diff --git a/defs/coins/bitcoin.json b/defs/bitcoin/bitcoin.json similarity index 100% rename from defs/coins/bitcoin.json rename to defs/bitcoin/bitcoin.json diff --git a/defs/coins/bitcoin.png b/defs/bitcoin/bitcoin.png similarity index 100% rename from defs/coins/bitcoin.png rename to defs/bitcoin/bitcoin.png diff --git a/defs/coins/bitcoin_testnet.json b/defs/bitcoin/bitcoin_testnet.json similarity index 100% rename from defs/coins/bitcoin_testnet.json rename to defs/bitcoin/bitcoin_testnet.json diff --git a/defs/coins/bitcoin_testnet.png b/defs/bitcoin/bitcoin_testnet.png similarity index 100% rename from defs/coins/bitcoin_testnet.png rename to defs/bitcoin/bitcoin_testnet.png diff --git a/defs/coins/bitcore.json b/defs/bitcoin/bitcore.json similarity index 100% rename from defs/coins/bitcore.json rename to defs/bitcoin/bitcore.json diff --git a/defs/coins/bitcore.png b/defs/bitcoin/bitcore.png similarity index 100% rename from defs/coins/bitcore.png rename to defs/bitcoin/bitcore.png diff --git a/defs/coins/bprivate.json b/defs/bitcoin/bprivate.json similarity index 100% rename from defs/coins/bprivate.json rename to defs/bitcoin/bprivate.json diff --git a/defs/coins/bprivate.png b/defs/bitcoin/bprivate.png similarity index 100% rename from defs/coins/bprivate.png rename to defs/bitcoin/bprivate.png diff --git a/defs/coins/crown.json b/defs/bitcoin/crown.json similarity index 100% rename from defs/coins/crown.json rename to defs/bitcoin/crown.json diff --git a/defs/coins/crown.png b/defs/bitcoin/crown.png similarity index 100% rename from defs/coins/crown.png rename to defs/bitcoin/crown.png diff --git a/defs/coins/dash.json b/defs/bitcoin/dash.json similarity index 100% rename from defs/coins/dash.json rename to defs/bitcoin/dash.json diff --git a/defs/coins/dash.png b/defs/bitcoin/dash.png similarity index 100% rename from defs/coins/dash.png rename to defs/bitcoin/dash.png diff --git a/defs/coins/dash_testnet.json b/defs/bitcoin/dash_testnet.json similarity index 100% rename from defs/coins/dash_testnet.json rename to defs/bitcoin/dash_testnet.json diff --git a/defs/coins/dash_testnet.png b/defs/bitcoin/dash_testnet.png similarity index 100% rename from defs/coins/dash_testnet.png rename to defs/bitcoin/dash_testnet.png diff --git a/defs/coins/decred.json b/defs/bitcoin/decred.json similarity index 100% rename from defs/coins/decred.json rename to defs/bitcoin/decred.json diff --git a/defs/coins/decred.png b/defs/bitcoin/decred.png similarity index 100% rename from defs/coins/decred.png rename to defs/bitcoin/decred.png diff --git a/defs/coins/decred_testnet.json b/defs/bitcoin/decred_testnet.json similarity index 100% rename from defs/coins/decred_testnet.json rename to defs/bitcoin/decred_testnet.json diff --git a/defs/coins/decred_testnet.png b/defs/bitcoin/decred_testnet.png similarity index 100% rename from defs/coins/decred_testnet.png rename to defs/bitcoin/decred_testnet.png diff --git a/defs/coins/denarius.json b/defs/bitcoin/denarius.json similarity index 100% rename from defs/coins/denarius.json rename to defs/bitcoin/denarius.json diff --git a/defs/coins/denarius.png b/defs/bitcoin/denarius.png similarity index 100% rename from defs/coins/denarius.png rename to defs/bitcoin/denarius.png diff --git a/defs/coins/digibyte.json b/defs/bitcoin/digibyte.json similarity index 100% rename from defs/coins/digibyte.json rename to defs/bitcoin/digibyte.json diff --git a/defs/coins/digibyte.png b/defs/bitcoin/digibyte.png similarity index 100% rename from defs/coins/digibyte.png rename to defs/bitcoin/digibyte.png diff --git a/defs/coins/dogecoin.json b/defs/bitcoin/dogecoin.json similarity index 100% rename from defs/coins/dogecoin.json rename to defs/bitcoin/dogecoin.json diff --git a/defs/coins/dogecoin.png b/defs/bitcoin/dogecoin.png similarity index 100% rename from defs/coins/dogecoin.png rename to defs/bitcoin/dogecoin.png diff --git a/defs/coins/feathercoin.json b/defs/bitcoin/feathercoin.json similarity index 100% rename from defs/coins/feathercoin.json rename to defs/bitcoin/feathercoin.json diff --git a/defs/coins/feathercoin.png b/defs/bitcoin/feathercoin.png similarity index 100% rename from defs/coins/feathercoin.png rename to defs/bitcoin/feathercoin.png diff --git a/defs/coins/flashcoin.json b/defs/bitcoin/flashcoin.json similarity index 100% rename from defs/coins/flashcoin.json rename to defs/bitcoin/flashcoin.json diff --git a/defs/coins/flashcoin.png b/defs/bitcoin/flashcoin.png similarity index 100% rename from defs/coins/flashcoin.png rename to defs/bitcoin/flashcoin.png diff --git a/defs/coins/fujicoin.json b/defs/bitcoin/fujicoin.json similarity index 100% rename from defs/coins/fujicoin.json rename to defs/bitcoin/fujicoin.json diff --git a/defs/coins/fujicoin.png b/defs/bitcoin/fujicoin.png similarity index 100% rename from defs/coins/fujicoin.png rename to defs/bitcoin/fujicoin.png diff --git a/defs/coins/groestlcoin.json b/defs/bitcoin/groestlcoin.json similarity index 100% rename from defs/coins/groestlcoin.json rename to defs/bitcoin/groestlcoin.json diff --git a/defs/coins/groestlcoin.png b/defs/bitcoin/groestlcoin.png similarity index 100% rename from defs/coins/groestlcoin.png rename to defs/bitcoin/groestlcoin.png diff --git a/defs/coins/groestlcoin_testnet.json b/defs/bitcoin/groestlcoin_testnet.json similarity index 100% rename from defs/coins/groestlcoin_testnet.json rename to defs/bitcoin/groestlcoin_testnet.json diff --git a/defs/coins/groestlcoin_testnet.png b/defs/bitcoin/groestlcoin_testnet.png similarity index 100% rename from defs/coins/groestlcoin_testnet.png rename to defs/bitcoin/groestlcoin_testnet.png diff --git a/defs/coins/koto.json b/defs/bitcoin/koto.json similarity index 100% rename from defs/coins/koto.json rename to defs/bitcoin/koto.json diff --git a/defs/coins/koto.png b/defs/bitcoin/koto.png similarity index 100% rename from defs/coins/koto.png rename to defs/bitcoin/koto.png diff --git a/defs/coins/litecoin.json b/defs/bitcoin/litecoin.json similarity index 100% rename from defs/coins/litecoin.json rename to defs/bitcoin/litecoin.json diff --git a/defs/coins/litecoin.png b/defs/bitcoin/litecoin.png similarity index 100% rename from defs/coins/litecoin.png rename to defs/bitcoin/litecoin.png diff --git a/defs/coins/litecoin_testnet.json b/defs/bitcoin/litecoin_testnet.json similarity index 100% rename from defs/coins/litecoin_testnet.json rename to defs/bitcoin/litecoin_testnet.json diff --git a/defs/coins/litecoin_testnet.png b/defs/bitcoin/litecoin_testnet.png similarity index 100% rename from defs/coins/litecoin_testnet.png rename to defs/bitcoin/litecoin_testnet.png diff --git a/defs/coins/monacoin.json b/defs/bitcoin/monacoin.json similarity index 100% rename from defs/coins/monacoin.json rename to defs/bitcoin/monacoin.json diff --git a/defs/coins/monacoin.png b/defs/bitcoin/monacoin.png similarity index 100% rename from defs/coins/monacoin.png rename to defs/bitcoin/monacoin.png diff --git a/defs/coins/monetaryunit.json b/defs/bitcoin/monetaryunit.json similarity index 100% rename from defs/coins/monetaryunit.json rename to defs/bitcoin/monetaryunit.json diff --git a/defs/coins/monetaryunit.png b/defs/bitcoin/monetaryunit.png similarity index 100% rename from defs/coins/monetaryunit.png rename to defs/bitcoin/monetaryunit.png diff --git a/defs/coins/myriad.json b/defs/bitcoin/myriad.json similarity index 100% rename from defs/coins/myriad.json rename to defs/bitcoin/myriad.json diff --git a/defs/coins/myriad.png b/defs/bitcoin/myriad.png similarity index 100% rename from defs/coins/myriad.png rename to defs/bitcoin/myriad.png diff --git a/defs/coins/namecoin.json b/defs/bitcoin/namecoin.json similarity index 100% rename from defs/coins/namecoin.json rename to defs/bitcoin/namecoin.json diff --git a/defs/coins/namecoin.png b/defs/bitcoin/namecoin.png similarity index 100% rename from defs/coins/namecoin.png rename to defs/bitcoin/namecoin.png diff --git a/defs/coins/pesetacoin.json b/defs/bitcoin/pesetacoin.json similarity index 100% rename from defs/coins/pesetacoin.json rename to defs/bitcoin/pesetacoin.json diff --git a/defs/coins/pesetacoin.png b/defs/bitcoin/pesetacoin.png similarity index 100% rename from defs/coins/pesetacoin.png rename to defs/bitcoin/pesetacoin.png diff --git a/defs/coins/smartcash.json b/defs/bitcoin/smartcash.json similarity index 100% rename from defs/coins/smartcash.json rename to defs/bitcoin/smartcash.json diff --git a/defs/coins/smartcash.png b/defs/bitcoin/smartcash.png similarity index 100% rename from defs/coins/smartcash.png rename to defs/bitcoin/smartcash.png diff --git a/defs/coins/smartcash_testnet.json b/defs/bitcoin/smartcash_testnet.json similarity index 100% rename from defs/coins/smartcash_testnet.json rename to defs/bitcoin/smartcash_testnet.json diff --git a/defs/coins/smartcash_testnet.png b/defs/bitcoin/smartcash_testnet.png similarity index 100% rename from defs/coins/smartcash_testnet.png rename to defs/bitcoin/smartcash_testnet.png diff --git a/defs/coins/terracoin.json b/defs/bitcoin/terracoin.json similarity index 100% rename from defs/coins/terracoin.json rename to defs/bitcoin/terracoin.json diff --git a/defs/coins/terracoin.png b/defs/bitcoin/terracoin.png similarity index 100% rename from defs/coins/terracoin.png rename to defs/bitcoin/terracoin.png diff --git a/defs/coins/vertcoin.json b/defs/bitcoin/vertcoin.json similarity index 100% rename from defs/coins/vertcoin.json rename to defs/bitcoin/vertcoin.json diff --git a/defs/coins/vertcoin.png b/defs/bitcoin/vertcoin.png similarity index 100% rename from defs/coins/vertcoin.png rename to defs/bitcoin/vertcoin.png diff --git a/defs/coins/viacoin.json b/defs/bitcoin/viacoin.json similarity index 100% rename from defs/coins/viacoin.json rename to defs/bitcoin/viacoin.json diff --git a/defs/coins/viacoin.png b/defs/bitcoin/viacoin.png similarity index 100% rename from defs/coins/viacoin.png rename to defs/bitcoin/viacoin.png diff --git a/defs/coins/zcash.json b/defs/bitcoin/zcash.json similarity index 100% rename from defs/coins/zcash.json rename to defs/bitcoin/zcash.json diff --git a/defs/coins/zcash.png b/defs/bitcoin/zcash.png similarity index 100% rename from defs/coins/zcash.png rename to defs/bitcoin/zcash.png diff --git a/defs/coins/zcash_testnet.json b/defs/bitcoin/zcash_testnet.json similarity index 100% rename from defs/coins/zcash_testnet.json rename to defs/bitcoin/zcash_testnet.json diff --git a/defs/coins/zcash_testnet.png b/defs/bitcoin/zcash_testnet.png similarity index 100% rename from defs/coins/zcash_testnet.png rename to defs/bitcoin/zcash_testnet.png diff --git a/defs/coins/zcoin.json b/defs/bitcoin/zcoin.json similarity index 100% rename from defs/coins/zcoin.json rename to defs/bitcoin/zcoin.json diff --git a/defs/coins/zcoin.png b/defs/bitcoin/zcoin.png similarity index 100% rename from defs/coins/zcoin.png rename to defs/bitcoin/zcoin.png diff --git a/defs/coins/zcoin_testnet.json b/defs/bitcoin/zcoin_testnet.json similarity index 100% rename from defs/coins/zcoin_testnet.json rename to defs/bitcoin/zcoin_testnet.json diff --git a/defs/coins/zcoin_testnet.png b/defs/bitcoin/zcoin_testnet.png similarity index 100% rename from defs/coins/zcoin_testnet.png rename to defs/bitcoin/zcoin_testnet.png diff --git a/defs/coins/zencash.json b/defs/bitcoin/zencash.json similarity index 100% rename from defs/coins/zencash.json rename to defs/bitcoin/zencash.json diff --git a/defs/coins/zencash.png b/defs/bitcoin/zencash.png similarity index 100% rename from defs/coins/zencash.png rename to defs/bitcoin/zencash.png diff --git a/defs/coins b/defs/coins new file mode 120000 index 000000000..f3c139563 --- /dev/null +++ b/defs/coins @@ -0,0 +1 @@ +bitcoin \ No newline at end of file diff --git a/defs/coins/tools/build_coins.py b/defs/coins/tools/build_coins.py deleted file mode 120000 index 78034573b..000000000 --- a/defs/coins/tools/build_coins.py +++ /dev/null @@ -1 +0,0 @@ -../../../tools/build_coins.py \ No newline at end of file diff --git a/defs/coins_details.override.json b/defs/coins_details.override.json index 39c581c81..671be8bd8 100644 --- a/defs/coins_details.override.json +++ b/defs/coins_details.override.json @@ -5,62 +5,62 @@ "erc20:eth:GNT": { "coinmarketcap_alias": "golem-network-tokens" }, - "coin:BCH": { + "bitcoin:BCH": { "wallet": { "Electron Cash": "https://electroncash.org" } }, - "coin:BTC": { + "bitcoin:BTC": { "wallet": { "Electrum": "https://electrum.org" } }, - "coin:BTCP": { + "bitcoin:BTCP": { "wallet": { "BTCP Electrum": "https://github.com/BTCPrivate/electrum-btcp" } }, - "coin:BTG": { + "bitcoin:BTG": { "wallet": { "ElectrumG": "https://github.com/BTCGPU/electrum" } }, - "coin:DASH": { + "bitcoin:DASH": { "wallet": { "Dash Electrum": "https://electrum.dash.org" } }, - "coin:FJC": { + "bitcoin:FJC": { "wallet": { "Electrum-FJC": "http://www.fujicoin.org/downloads.php" } }, - "coin:GRS": { + "bitcoin:GRS": { "wallet": { "Electrum-GRS": "https://www.groestlcoin.org/groestlcoin-electrum-wallet/" } }, - "coin:LTC": { + "bitcoin:LTC": { "wallet": { "Electrum-LTC": "https://electrum-ltc.org" } }, - "coin:MONA": { + "bitcoin:MONA": { "wallet": { "Electrum-MONA": "https://electrum-mona.org" } }, - "coin:NMC": { + "bitcoin:NMC": { "wallet": { "Electrum-NMC": "https://github.com/namecoin/electrum-nmc" } }, - "coin:VIA": { + "bitcoin:VIA": { "wallet": { "Vialectrum": "https://vialectrum.org" } }, - "coin:XZC": { + "bitcoin:XZC": { "wallet": { "Electrum-XZC": "https://github.com/zcoinofficial/electrum-xzc", "Znode Tool": "https://github.com/yura-pakhuchiy/znode-tool" diff --git a/defs/support.json b/defs/support.json index 79e730baf..8f3ac2b30 100644 --- a/defs/support.json +++ b/defs/support.json @@ -1,55 +1,55 @@ { "connect": { "supported": { - "coin:BCH": true, - "coin:BTC": true, - "coin:BTG": true, - "coin:DASH": true, - "coin:DOGE": true, - "coin:LTC": true, - "coin:TEST": true, - "coin:VTC": true, - "coin:ZEC": true + "bitcoin:BCH": true, + "bitcoin:BTC": true, + "bitcoin:BTG": true, + "bitcoin:DASH": true, + "bitcoin:DOGE": true, + "bitcoin:LTC": true, + "bitcoin:TEST": true, + "bitcoin:VTC": true, + "bitcoin:ZEC": true }, "unsupported": {} }, "trezor1": { "supported": { - "coin:BCH": "1.6.2", - "coin:BTC": "1.5.2", - "coin:BTCP": "1.6.2", - "coin:BTG": "1.6.2", - "coin:DASH": "1.5.2", - "coin:DCR": "1.6.2", - "coin:DGB": "1.6.0", - "coin:DNR": "soon", - "coin:DOGE": "1.5.2", - "coin:FJC": "1.6.1", - "coin:FLASH": "soon", - "coin:FTC": "soon", - "coin:GRS": "1.6.2", - "coin:KOTO": "soon", - "coin:LTC": "1.5.2", - "coin:MONA": "1.6.0", - "coin:MUE": "soon", - "coin:NMC": "1.5.2", - "coin:PTC": "soon", - "coin:SMART": "soon", - "coin:TAZ": "1.6.2", - "coin:TBCH": "1.6.2", - "coin:TBTG": "soon", - "coin:TDCR": "1.6.2", - "coin:TEST": "1.5.2", - "coin:TLTC": "1.6.2", - "coin:VIA": "1.6.2", - "coin:VTC": "1.6.1", - "coin:XMY": "soon", - "coin:XZC": "1.6.2", - "coin:ZEC": "1.6.2", - "coin:tDASH": "1.6.2", - "coin:tGRS": "1.6.2", - "coin:tSMART": "soon", - "coin:tXZC": "1.6.2", + "bitcoin:BCH": "1.6.2", + "bitcoin:BTC": "1.5.2", + "bitcoin:BTCP": "1.6.2", + "bitcoin:BTG": "1.6.2", + "bitcoin:DASH": "1.5.2", + "bitcoin:DCR": "1.6.2", + "bitcoin:DGB": "1.6.0", + "bitcoin:DNR": "soon", + "bitcoin:DOGE": "1.5.2", + "bitcoin:FJC": "1.6.1", + "bitcoin:FLASH": "soon", + "bitcoin:FTC": "soon", + "bitcoin:GRS": "1.6.2", + "bitcoin:KOTO": "soon", + "bitcoin:LTC": "1.5.2", + "bitcoin:MONA": "1.6.0", + "bitcoin:MUE": "soon", + "bitcoin:NMC": "1.5.2", + "bitcoin:PTC": "soon", + "bitcoin:SMART": "soon", + "bitcoin:TAZ": "1.6.2", + "bitcoin:TBCH": "1.6.2", + "bitcoin:TBTG": "soon", + "bitcoin:TDCR": "1.6.2", + "bitcoin:TEST": "1.5.2", + "bitcoin:TLTC": "1.6.2", + "bitcoin:VIA": "1.6.2", + "bitcoin:VTC": "1.6.1", + "bitcoin:XMY": "soon", + "bitcoin:XZC": "1.6.2", + "bitcoin:ZEC": "1.6.2", + "bitcoin:tDASH": "1.6.2", + "bitcoin:tGRS": "1.6.2", + "bitcoin:tSMART": "soon", + "bitcoin:tXZC": "1.6.2", "erc20:ella:MINING": "1.6.2", "erc20:etc:BEC": "1.6.2", "erc20:eth:$FFC": "1.6.2", @@ -707,10 +707,10 @@ "nem:XEM": "1.6.2" }, "unsupported": { - "coin:BTX": "address_type collides with Bitcoin", - "coin:CRW": "address_type collides with Bitcoin", - "coin:TRC": "address_type collides with Bitcoin", - "coin:ZEN": "not implemented on T1", + "bitcoin:BTX": "address_type collides with Bitcoin", + "bitcoin:CRW": "address_type collides with Bitcoin", + "bitcoin:TRC": "address_type collides with Bitcoin", + "bitcoin:ZEN": "not implemented on T1", "erc20:etc:PLAY": "(AUTO) duplicate key", "erc20:eth:ATH": "(AUTO) duplicate key", "erc20:eth:ATH (AIgatha Token)": "(AUTO) duplicate key", @@ -825,40 +825,40 @@ }, "trezor2": { "supported": { - "coin:BCH": "2.0.7", - "coin:BTC": "2.0.5", - "coin:BTCP": "2.0.7", - "coin:BTG": "2.0.7", - "coin:DASH": "2.0.5", - "coin:DGB": "2.0.5", - "coin:DNR": "soon", - "coin:DOGE": "2.0.5", - "coin:FJC": "2.0.5", - "coin:FLASH": "soon", - "coin:FTC": "soon", - "coin:GRS": "2.0.8", - "coin:KOTO": "soon", - "coin:LTC": "2.0.5", - "coin:MONA": "2.0.5", - "coin:MUE": "soon", - "coin:NMC": "2.0.5", - "coin:PTC": "soon", - "coin:SMART": "soon", - "coin:TAZ": "2.0.7", - "coin:TBCH": "2.0.7", - "coin:TBTG": "soon", - "coin:TEST": "2.0.5", - "coin:TLTC": "2.0.7", - "coin:VIA": "2.0.7", - "coin:VTC": "2.0.5", - "coin:XMY": "soon", - "coin:XZC": "2.0.7", - "coin:ZEC": "2.0.7", - "coin:ZEN": "2.0.8", - "coin:tDASH": "soon", - "coin:tGRS": "2.0.8", - "coin:tSMART": "soon", - "coin:tXZC": "2.0.7", + "bitcoin:BCH": "2.0.7", + "bitcoin:BTC": "2.0.5", + "bitcoin:BTCP": "2.0.7", + "bitcoin:BTG": "2.0.7", + "bitcoin:DASH": "2.0.5", + "bitcoin:DGB": "2.0.5", + "bitcoin:DNR": "soon", + "bitcoin:DOGE": "2.0.5", + "bitcoin:FJC": "2.0.5", + "bitcoin:FLASH": "soon", + "bitcoin:FTC": "soon", + "bitcoin:GRS": "2.0.8", + "bitcoin:KOTO": "soon", + "bitcoin:LTC": "2.0.5", + "bitcoin:MONA": "2.0.5", + "bitcoin:MUE": "soon", + "bitcoin:NMC": "2.0.5", + "bitcoin:PTC": "soon", + "bitcoin:SMART": "soon", + "bitcoin:TAZ": "2.0.7", + "bitcoin:TBCH": "2.0.7", + "bitcoin:TBTG": "soon", + "bitcoin:TEST": "2.0.5", + "bitcoin:TLTC": "2.0.7", + "bitcoin:VIA": "2.0.7", + "bitcoin:VTC": "2.0.5", + "bitcoin:XMY": "soon", + "bitcoin:XZC": "2.0.7", + "bitcoin:ZEC": "2.0.7", + "bitcoin:ZEN": "2.0.8", + "bitcoin:tDASH": "soon", + "bitcoin:tGRS": "2.0.8", + "bitcoin:tSMART": "soon", + "bitcoin:tXZC": "2.0.7", "erc20:ella:MINING": "2.0.7", "erc20:etc:BEC": "2.0.7", "erc20:eth:$FFC": "2.0.7", @@ -1521,11 +1521,11 @@ "nem:XEM": "2.0.7" }, "unsupported": { - "coin:BTX": "address_type collides with Bitcoin", - "coin:CRW": "address_type collides with Bitcoin", - "coin:DCR": "not implemented on Trezor T", - "coin:TDCR": "not implemented on Trezor T", - "coin:TRC": "address_type collides with Bitcoin", + "bitcoin:BTX": "address_type collides with Bitcoin", + "bitcoin:CRW": "address_type collides with Bitcoin", + "bitcoin:DCR": "not implemented on Trezor T", + "bitcoin:TDCR": "not implemented on Trezor T", + "bitcoin:TRC": "address_type collides with Bitcoin", "erc20:etc:PLAY": "(AUTO) duplicate key", "erc20:eth:ATH": "(AUTO) duplicate key", "erc20:eth:ATH (AIgatha Token)": "(AUTO) duplicate key", @@ -1635,27 +1635,27 @@ }, "webwallet": { "supported": { - "coin:BCH": true, - "coin:BTC": true, - "coin:BTCP": true, - "coin:BTG": true, - "coin:DASH": true, - "coin:DCR": true, - "coin:DGB": true, - "coin:DOGE": true, - "coin:FJC": true, - "coin:GRS": true, - "coin:LTC": true, - "coin:MONA": true, - "coin:TAZ": true, - "coin:TDCR": true, - "coin:TEST": true, - "coin:TLTC": true, - "coin:VIA": true, - "coin:VTC": true, - "coin:XZC": true, - "coin:ZEC": true, - "coin:tGRS": true + "bitcoin:BCH": true, + "bitcoin:BTC": true, + "bitcoin:BTCP": true, + "bitcoin:BTG": true, + "bitcoin:DASH": true, + "bitcoin:DCR": true, + "bitcoin:DGB": true, + "bitcoin:DOGE": true, + "bitcoin:FJC": true, + "bitcoin:GRS": true, + "bitcoin:LTC": true, + "bitcoin:MONA": true, + "bitcoin:TAZ": true, + "bitcoin:TDCR": true, + "bitcoin:TEST": true, + "bitcoin:TLTC": true, + "bitcoin:VIA": true, + "bitcoin:VTC": true, + "bitcoin:XZC": true, + "bitcoin:ZEC": true, + "bitcoin:tGRS": true }, "unsupported": {} } diff --git a/tools/coin_info.py b/tools/coin_info.py index db5713b21..4c4617ba4 100755 --- a/tools/coin_info.py +++ b/tools/coin_info.py @@ -37,13 +37,13 @@ class CoinsInfo(dict): """Collection of information about all known kinds of coins. It contains the following lists: - `coins` for btc-like coins, + `bitcoin` for btc-like coins, `eth` for ethereum networks, `erc20` for ERC20 tokens, `nem` for NEM mosaics, `misc` for other networks. - Accessible as a dict or by attribute: `info["coins"] == info.coins` + Accessible as a dict or by attribute: `info["misc"] == info.misc` """ def as_list(self): @@ -196,7 +196,7 @@ def _load_btc_coins(): coin.update( name=coin["coin_name"], shortcut=coin["coin_shortcut"], - key="coin:{}".format(coin["coin_shortcut"]), + key="bitcoin:{}".format(coin["coin_shortcut"]), icon=filename.replace(".json", ".png"), ) coins.append(coin) @@ -450,7 +450,7 @@ def collect_coin_info(): Automatically removes duplicate symbols from the result. """ all_coins = CoinsInfo( - coins=_load_btc_coins(), + bitcoin=_load_btc_coins(), eth=_load_ethereum_networks(), erc20=_load_erc20_tokens(), nem=_load_nem_mosaics(), @@ -458,7 +458,7 @@ def collect_coin_info(): ) for k, coins in all_coins.items(): - if k == "coins": + if k == "bitcoin": coins.sort(key=_btc_sort_key) elif k == "nem": # do not sort nem diff --git a/tools/coins_details.py b/tools/coins_details.py index 711bbb278..f28748a5e 100755 --- a/tools/coins_details.py +++ b/tools/coins_details.py @@ -165,7 +165,7 @@ def update_simple(coins, support_info, type): return res -def update_coins(coins, support_info): +def update_bitcoin(coins, support_info): res = update_simple(coins, support_info, "coin") for coin in coins: key = coin["key"] @@ -298,7 +298,7 @@ if __name__ == "__main__": support_info = coin_info.support_info(defs) coins = {} - coins.update(update_coins(defs.coins, support_info)) + coins.update(update_bitcoin(defs.bitcoin, support_info)) coins.update(update_erc20(defs.erc20, support_info)) coins.update(update_ethereum_networks(defs.eth, support_info)) coins.update(update_simple(defs.nem, support_info, "mosaic")) diff --git a/tools/cointool.py b/tools/cointool.py index a3e4b4df1..09e86e039 100755 --- a/tools/cointool.py +++ b/tools/cointool.py @@ -502,7 +502,7 @@ def check(backend, icons, show_duplicates): all_checks_passed = True print("Checking BTC-like coins...") - if not check_btc(defs.coins): + if not check_btc(defs.bitcoin): all_checks_passed = False if show_duplicates == "all": @@ -517,12 +517,12 @@ def check(backend, icons, show_duplicates): if icons: print("Checking icon files...") - if not check_icons(defs.coins): + if not check_icons(defs.bitcoin): all_checks_passed = False if backend: print("Checking backend responses...") - if not check_backends(defs.coins): + if not check_backends(defs.bitcoin): all_checks_passed = False print("Checking key uniformity...") @@ -543,7 +543,7 @@ def check(backend, icons, show_duplicates): @click.option("-o", "--outfile", type=click.File(mode="w"), default="./coins.json") def coins_json(outfile): """Generate coins.json for consumption in python-trezor and Connect/Wallet""" - coins = coin_info.coin_info().coins + coins = coin_info.coin_info().bitcoin support_info = coin_info.support_info(coins) by_name = {} for coin in coins: @@ -563,7 +563,7 @@ def coindefs(outfile): This is currently unused but should enable us to add new coins without having to update firmware. """ - coins = coin_info.coin_info().coins + coins = coin_info.coin_info().bitcoin coindefs = {} for coin in coins: key = coin["key"] From a80a3ac6f2afd27e570696dac9e108e2c275aa97 Mon Sep 17 00:00:00 2001 From: matejcik Date: Fri, 24 Aug 2018 17:01:54 +0200 Subject: [PATCH 526/767] coins_details: update to new CMC API, improve script, refresh data --- defs/coins_details.json | 504 ++++++++++++++++++++-------------------- tools/coins_details.py | 96 ++++---- 2 files changed, 307 insertions(+), 293 deletions(-) diff --git a/defs/coins_details.json b/defs/coins_details.json index 6b250823f..b04182da8 100644 --- a/defs/coins_details.json +++ b/defs/coins_details.json @@ -1,11 +1,11 @@ { "coins": { - "coin:BCH": { + "bitcoin:BCH": { "links": { "Github": "https://github.com/Bitcoin-ABC/bitcoin-abc", "Homepage": "https://www.bitcoincash.org" }, - "marketcap_usd": 9060927775, + "marketcap_usd": 9137924262, "name": "Bitcoin Cash", "shortcut": "BCH", "t1_enabled": "yes", @@ -16,12 +16,12 @@ "Trezor": "https://wallet.trezor.io" } }, - "coin:BTC": { + "bitcoin:BTC": { "links": { "Github": "https://github.com/bitcoin/bitcoin", "Homepage": "https://bitcoin.org" }, - "marketcap_usd": 111347645251, + "marketcap_usd": 113093093543, "name": "Bitcoin", "shortcut": "BTC", "t1_enabled": "yes", @@ -32,12 +32,12 @@ "Trezor": "https://wallet.trezor.io" } }, - "coin:BTCP": { + "bitcoin:BTCP": { "links": { "Github": "https://github.com/BTCPrivate/BitcoinPrivate", "Homepage": "https://btcprivate.org" }, - "marketcap_usd": 81211090, + "marketcap_usd": 87763522, "name": "Bitcoin Private", "shortcut": "BTCP", "t1_enabled": "yes", @@ -47,12 +47,12 @@ "BTCP Electrum": "https://github.com/BTCPrivate/electrum-btcp" } }, - "coin:BTG": { + "bitcoin:BTG": { "links": { "Github": "https://github.com/BTCGPU/BTCGPU", "Homepage": "https://bitcoingold.org" }, - "marketcap_usd": 316050580, + "marketcap_usd": 325590507, "name": "Bitcoin Gold", "shortcut": "BTG", "t1_enabled": "yes", @@ -63,12 +63,12 @@ "Trezor": "https://wallet.trezor.io" } }, - "coin:BTX": { + "bitcoin:BTX": { "links": { "Github": "https://github.com/LIMXTEC/BitCore", "Homepage": "https://bitcore.cc" }, - "marketcap_usd": 19911585, + "marketcap_usd": 20100741, "name": "Bitcore", "shortcut": "BTX", "t1_enabled": "no", @@ -76,12 +76,12 @@ "type": "coin", "wallet": {} }, - "coin:CRW": { + "bitcoin:CRW": { "links": { "Github": "https://github.com/Crowndev/crowncoin", "Homepage": "https://crown.tech" }, - "marketcap_usd": 5211934, + "marketcap_usd": 5188447, "name": "Crown", "shortcut": "CRW", "t1_enabled": "no", @@ -89,12 +89,12 @@ "type": "coin", "wallet": {} }, - "coin:DASH": { + "bitcoin:DASH": { "links": { "Github": "https://github.com/dashpay/dash", "Homepage": "https://www.dash.org" }, - "marketcap_usd": 1148041905, + "marketcap_usd": 1152175202, "name": "Dash", "shortcut": "DASH", "t1_enabled": "yes", @@ -105,12 +105,12 @@ "Trezor": "https://wallet.trezor.io" } }, - "coin:DCR": { + "bitcoin:DCR": { "links": { "Github": "https://github.com/decred/dcrd", "Homepage": "https://www.decred.org" }, - "marketcap_usd": 305128323, + "marketcap_usd": 302406692, "name": "Decred", "shortcut": "DCR", "t1_enabled": "yes", @@ -118,12 +118,12 @@ "type": "coin", "wallet": {} }, - "coin:DGB": { + "bitcoin:DGB": { "links": { "Github": "https://github.com/digibyte/digibyte", "Homepage": "https://digibyte.io" }, - "marketcap_usd": 257382920, + "marketcap_usd": 271399167, "name": "DigiByte", "shortcut": "DGB", "t1_enabled": "yes", @@ -131,7 +131,7 @@ "type": "coin", "wallet": {} }, - "coin:DNR": { + "bitcoin:DNR": { "links": { "Github": "https://github.com/carsenk/denarius", "Homepage": "https://denarius.io" @@ -144,12 +144,12 @@ "type": "coin", "wallet": {} }, - "coin:DOGE": { + "bitcoin:DOGE": { "links": { "Github": "https://github.com/dogecoin/dogecoin", "Homepage": "http://dogecoin.com" }, - "marketcap_usd": 273658182, + "marketcap_usd": 274733481, "name": "Dogecoin", "shortcut": "DOGE", "t1_enabled": "yes", @@ -159,12 +159,12 @@ "Trezor": "https://wallet.trezor.io" } }, - "coin:FJC": { + "bitcoin:FJC": { "links": { "Github": "https://github.com/fujicoin/fujicoin", "Homepage": "http://fujicoin.org" }, - "marketcap_usd": 515593, + "marketcap_usd": 525183, "name": "Fujicoin", "shortcut": "FJC", "t1_enabled": "yes", @@ -174,12 +174,12 @@ "Electrum-FJC": "http://www.fujicoin.org/downloads.php" } }, - "coin:FLASH": { + "bitcoin:FLASH": { "links": { "Github": "https://github.com/flash-coin", "Homepage": "https://www.flashcoin.io" }, - "marketcap_usd": 5807712, + "marketcap_usd": 5896831, "name": "Flashcoin", "shortcut": "FLASH", "t1_enabled": "soon", @@ -187,12 +187,12 @@ "type": "coin", "wallet": {} }, - "coin:FTC": { + "bitcoin:FTC": { "links": { "Github": "https://github.com/FeatherCoin/Feathercoin", "Homepage": "https://feathercoin.com" }, - "marketcap_usd": 10600270, + "marketcap_usd": 11252804, "name": "Feathercoin", "shortcut": "FTC", "t1_enabled": "soon", @@ -200,12 +200,12 @@ "type": "coin", "wallet": {} }, - "coin:GRS": { + "bitcoin:GRS": { "links": { "Github": "https://github.com/Groestlcoin/groestlcoin", "Homepage": "https://www.groestlcoin.org" }, - "marketcap_usd": 41625236, + "marketcap_usd": 43522762, "name": "Groestlcoin", "shortcut": "GRS", "t1_enabled": "yes", @@ -215,7 +215,7 @@ "Electrum-GRS": "https://www.groestlcoin.org/groestlcoin-electrum-wallet/" } }, - "coin:KOTO": { + "bitcoin:KOTO": { "links": { "Github": "https://github.com/KotoDevelopers/koto", "Homepage": "https://ko-to.org" @@ -228,12 +228,12 @@ "type": "coin", "wallet": {} }, - "coin:LTC": { + "bitcoin:LTC": { "links": { "Github": "https://github.com/litecoin-project/litecoin", "Homepage": "https://litecoin.org" }, - "marketcap_usd": 3258961661, + "marketcap_usd": 3266595707, "name": "Litecoin", "shortcut": "LTC", "t1_enabled": "yes", @@ -244,12 +244,12 @@ "Trezor": "https://wallet.trezor.io" } }, - "coin:MONA": { + "bitcoin:MONA": { "links": { "Github": "https://github.com/monacoinproject/monacoin", "Homepage": "https://monacoin.org" }, - "marketcap_usd": 96010658, + "marketcap_usd": 95510557, "name": "Monacoin", "shortcut": "MONA", "t1_enabled": "yes", @@ -259,7 +259,7 @@ "Electrum-MONA": "https://electrum-mona.org" } }, - "coin:MUE": { + "bitcoin:MUE": { "links": { "Github": "https://github.com/muecoin/MUECore", "Homepage": "https://www.monetaryunit.org" @@ -272,12 +272,12 @@ "type": "coin", "wallet": {} }, - "coin:NMC": { + "bitcoin:NMC": { "links": { "Github": "https://github.com/namecoin/namecoin-core", "Homepage": "https://namecoin.org" }, - "marketcap_usd": 24205722, + "marketcap_usd": 20470325, "name": "Namecoin", "shortcut": "NMC", "t1_enabled": "yes", @@ -287,12 +287,12 @@ "Electrum-NMC": "https://github.com/namecoin/electrum-nmc" } }, - "coin:PTC": { + "bitcoin:PTC": { "links": { "Github": "https://github.com/FundacionPesetacoin/PesetacoinCore", "Homepage": "http://pesetacoin.info" }, - "marketcap_usd": 2061608, + "marketcap_usd": 2218954, "name": "Pesetacoin", "shortcut": "PTC", "t1_enabled": "soon", @@ -300,12 +300,12 @@ "type": "coin", "wallet": {} }, - "coin:SMART": { + "bitcoin:SMART": { "links": { "Github": "https://github.com/SmartCash/Core-Smart", "Homepage": "https://smarcash.cc" }, - "marketcap_usd": 49514130, + "marketcap_usd": 47714944, "name": "SmartCash", "shortcut": "SMART", "t1_enabled": "soon", @@ -313,7 +313,7 @@ "type": "coin", "wallet": {} }, - "coin:TAZ": { + "bitcoin:TAZ": { "hidden": 1, "links": { "Github": "https://github.com/zcash/zcash", @@ -327,7 +327,7 @@ "type": "coin", "wallet": {} }, - "coin:TBCH": { + "bitcoin:TBCH": { "hidden": 1, "links": { "Github": "https://github.com/Bitcoin-ABC/bitcoin-abc", @@ -341,7 +341,7 @@ "type": "coin", "wallet": {} }, - "coin:TBTG": { + "bitcoin:TBTG": { "hidden": 1, "links": { "Github": "https://github.com/BTCGPU/BTCGPU", @@ -355,7 +355,7 @@ "type": "coin", "wallet": {} }, - "coin:TDCR": { + "bitcoin:TDCR": { "hidden": 1, "links": { "Github": "https://github.com/decred/dcrd", @@ -369,7 +369,7 @@ "type": "coin", "wallet": {} }, - "coin:TEST": { + "bitcoin:TEST": { "hidden": 1, "links": { "Github": "https://github.com/bitcoin/bitcoin", @@ -385,7 +385,7 @@ "Trezor": "https://wallet.trezor.io" } }, - "coin:TLTC": { + "bitcoin:TLTC": { "hidden": 1, "links": { "Github": "https://github.com/litecoin-project/litecoin", @@ -399,12 +399,12 @@ "type": "coin", "wallet": {} }, - "coin:TRC": { + "bitcoin:TRC": { "links": { "Github": "https://github.com/terracoin/terracoin", "Homepage": "https://terracoin.io" }, - "marketcap_usd": 1511563, + "marketcap_usd": 1688794, "name": "Terracoin", "shortcut": "TRC", "t1_enabled": "no", @@ -412,12 +412,12 @@ "type": "coin", "wallet": {} }, - "coin:VIA": { + "bitcoin:VIA": { "links": { "Github": "https://github.com/viacoin", "Homepage": "https://viacoin.org" }, - "marketcap_usd": 19043035, + "marketcap_usd": 20021749, "name": "Viacoin", "shortcut": "VIA", "t1_enabled": "yes", @@ -427,12 +427,12 @@ "Vialectrum": "https://vialectrum.org" } }, - "coin:VTC": { + "bitcoin:VTC": { "links": { "Github": "https://github.com/vertcoin-project/vertcoin-core", "Homepage": "https://vertcoin.org" }, - "marketcap_usd": 31582960, + "marketcap_usd": 31642995, "name": "Vertcoin", "shortcut": "VTC", "t1_enabled": "yes", @@ -442,12 +442,12 @@ "Trezor": "https://wallet.trezor.io" } }, - "coin:XMY": { + "bitcoin:XMY": { "links": { "Github": "https://github.com/myriadcoin/myriadcoin", "Homepage": "https://www.myriadcoin.org" }, - "marketcap_usd": 4644297, + "marketcap_usd": 4413486, "name": "Myriad", "shortcut": "XMY", "t1_enabled": "soon", @@ -455,12 +455,12 @@ "type": "coin", "wallet": {} }, - "coin:XZC": { + "bitcoin:XZC": { "links": { "Github": "https://github.com/zcoinofficial/zcoin", "Homepage": "https://zcoin.io" }, - "marketcap_usd": 67426017, + "marketcap_usd": 69876887, "name": "Zcoin", "shortcut": "XZC", "t1_enabled": "yes", @@ -471,12 +471,12 @@ "Znode Tool": "https://github.com/yura-pakhuchiy/znode-tool" } }, - "coin:ZEC": { + "bitcoin:ZEC": { "links": { "Github": "https://github.com/zcash/zcash", "Homepage": "https://z.cash" }, - "marketcap_usd": 611353070, + "marketcap_usd": 618009538, "name": "Zcash", "shortcut": "ZEC", "t1_enabled": "yes", @@ -486,12 +486,12 @@ "Trezor": "https://wallet.trezor.io" } }, - "coin:ZEN": { + "bitcoin:ZEN": { "links": { "Github": "https://github.com/ZencashOfficial/zen", "Homepage": "https://zencash.com" }, - "marketcap_usd": 90375887, + "marketcap_usd": 92278630, "name": "Zencash", "shortcut": "ZEN", "t1_enabled": "no", @@ -499,7 +499,7 @@ "type": "coin", "wallet": {} }, - "coin:tDASH": { + "bitcoin:tDASH": { "hidden": 1, "links": { "Github": "https://github.com/dashpay/dash", @@ -513,7 +513,7 @@ "type": "coin", "wallet": {} }, - "coin:tGRS": { + "bitcoin:tGRS": { "hidden": 1, "links": { "Github": "https://github.com/Groestlcoin/groestlcoin", @@ -527,7 +527,7 @@ "type": "coin", "wallet": {} }, - "coin:tSMART": { + "bitcoin:tSMART": { "hidden": 1, "links": { "Github": "https://github.com/SmartCash/Core-Smart", @@ -541,7 +541,7 @@ "type": "coin", "wallet": {} }, - "coin:tXZC": { + "bitcoin:tXZC": { "hidden": 1, "links": { "Github": "https://github.com/zcoinofficial/zcoin", @@ -696,7 +696,7 @@ "links": { "Homepage": "https://0xbitcoin.org/" }, - "marketcap_usd": 1277837, + "marketcap_usd": 1282370, "name": "0xBitcoin", "network": "eth", "shortcut": "0xBTC", @@ -713,7 +713,7 @@ "links": { "Homepage": "https://firstblood.io" }, - "marketcap_usd": 5600207, + "marketcap_usd": 5842090, "name": "FirstBlood", "network": "eth", "shortcut": "1ST", @@ -849,7 +849,7 @@ "links": { "Homepage": "http://accelerator.network" }, - "marketcap_usd": 101922, + "marketcap_usd": 103709, "name": "Accelerator Network", "network": "eth", "shortcut": "ACC", @@ -884,7 +884,7 @@ "Github": "https://github.com/aditus", "Homepage": "https://aditus.net" }, - "marketcap_usd": 551147, + "marketcap_usd": 632365, "name": "Aditus", "network": "eth", "shortcut": "ADI", @@ -919,7 +919,7 @@ "links": { "Homepage": "https://adshares.net" }, - "marketcap_usd": 2001663, + "marketcap_usd": 2049749, "name": "AdShares", "network": "eth", "shortcut": "ADST", @@ -937,7 +937,7 @@ "Github": "https://github.com/adchain", "Homepage": "https://adtoken.com" }, - "marketcap_usd": 7973488, + "marketcap_usd": 8188525, "name": "AdToken", "network": "eth", "shortcut": "ADT", @@ -973,7 +973,7 @@ "Github": "https://github.com/aeternity", "Homepage": "https://www.aeternity.com/" }, - "marketcap_usd": 225631023, + "marketcap_usd": 232368933, "name": "aeternity", "network": "eth", "shortcut": "AE", @@ -991,7 +991,7 @@ "Github": "https://github.com/singnet/singnet", "Homepage": "https://singularitynet.io" }, - "marketcap_usd": 22605681, + "marketcap_usd": 24009832, "name": "SingularityNET", "network": "eth", "shortcut": "AGI", @@ -1009,7 +1009,7 @@ "Github": "https://github.com/aionnetwork", "Homepage": "https://aion.network/" }, - "marketcap_usd": 98801314, + "marketcap_usd": 108849984, "name": "Aion", "network": "eth", "shortcut": "AION", @@ -1026,7 +1026,7 @@ "links": { "Homepage": "https://airtoken.com" }, - "marketcap_usd": 2906960, + "marketcap_usd": 3300916, "name": "AirToken", "network": "eth", "shortcut": "AIR", @@ -1044,7 +1044,7 @@ "Github": "https://github.com/AigangNetwork", "Homepage": "https://aigang.network/" }, - "marketcap_usd": 613613, + "marketcap_usd": 609344, "name": "Aigang", "network": "eth", "shortcut": "AIX", @@ -1097,7 +1097,7 @@ "Github": "https://github.com/AlisProject", "Homepage": "https://alismedia.jp" }, - "marketcap_usd": 2026289, + "marketcap_usd": 2202941, "name": "ALIS Token", "network": "eth", "shortcut": "ALIS", @@ -1168,7 +1168,7 @@ "Github": "https://github.com/amlt-by-coinfirm", "Homepage": "https://amlt.coinfirm.io/" }, - "marketcap_usd": 1847196, + "marketcap_usd": 1861792, "name": "AMLT", "network": "eth", "shortcut": "AMLT", @@ -1186,7 +1186,7 @@ "Github": "https://github.com/amontech", "Homepage": "https://amon.tech" }, - "marketcap_usd": 389102, + "marketcap_usd": 415222, "name": "Amon", "network": "eth", "shortcut": "AMN", @@ -1256,7 +1256,7 @@ "Github": "https://github.com/Oxchild/crowdsale", "Homepage": "https://apisplatform.io" }, - "marketcap_usd": 14512148, + "marketcap_usd": 13028449, "name": "APIS", "network": "eth", "shortcut": "APIS", @@ -1274,7 +1274,7 @@ "Github": "https://github.com/Aptoide/AppCoins-ethereumj", "Homepage": "https://appcoins.io" }, - "marketcap_usd": 8913359, + "marketcap_usd": 8396156, "name": "AppCoins", "network": "eth", "shortcut": "APPC", @@ -1291,7 +1291,7 @@ "links": { "Homepage": "https://aigang.network" }, - "marketcap_usd": 613613, + "marketcap_usd": 609344, "name": "AIGang", "network": "eth", "shortcut": "APT", @@ -1326,7 +1326,7 @@ "links": { "Homepage": "https://www.arbitragect.com" }, - "marketcap_usd": 134561, + "marketcap_usd": 136089, "name": "ArbitrageCT", "network": "eth", "shortcut": "ARCT", @@ -1431,7 +1431,7 @@ "links": { "Homepage": "https://airswap.io" }, - "marketcap_usd": 12374307, + "marketcap_usd": 13376207, "name": "Airswap", "network": "eth", "shortcut": "AST", @@ -1589,7 +1589,7 @@ "Github": "https://www.github.com/axpire", "Homepage": "https://www.axpire.io" }, - "marketcap_usd": 4373208, + "marketcap_usd": 4232286, "name": "aXpire", "network": "eth", "shortcut": "AXPR", @@ -1784,7 +1784,7 @@ "Github": "https://github.com/thebeetoken", "Homepage": "https://www.beetoken.com" }, - "marketcap_usd": 1742594, + "marketcap_usd": 1975546, "name": "Bee Token", "network": "eth", "shortcut": "BEE", @@ -1908,7 +1908,7 @@ "Github": "https://github.com/BankEx", "Homepage": "https://bankex.com/" }, - "marketcap_usd": 6012109, + "marketcap_usd": 6511393, "name": "BANKEX", "network": "eth", "shortcut": "BKX", @@ -1944,7 +1944,7 @@ "Github": "https://github.com/BlueCrypto", "Homepage": "https://blueprotocol.com/" }, - "marketcap_usd": 1603825, + "marketcap_usd": 1692252, "name": "Ethereum Blue", "network": "eth", "shortcut": "BLUE", @@ -1979,7 +1979,7 @@ "links": { "Homepage": "https://www.iconomi.net" }, - "marketcap_usd": 44416139, + "marketcap_usd": 45789936, "name": "Iconomi", "network": "eth", "shortcut": "BLX (Iconomi)", @@ -2116,7 +2116,7 @@ "Github": "https://github.com/bancorprotocol", "Homepage": "https://www.bancor.network/discover" }, - "marketcap_usd": 82991724, + "marketcap_usd": 83919779, "name": "Bancor", "network": "eth", "shortcut": "BNT", @@ -2167,7 +2167,7 @@ "links": { "Homepage": "https://bonpay.com" }, - "marketcap_usd": 965311, + "marketcap_usd": 1034517, "name": "Bonpay", "network": "eth", "shortcut": "BON", @@ -2271,7 +2271,7 @@ "links": { "Homepage": "http://bro-consortium.io" }, - "marketcap_usd": 27576, + "marketcap_usd": 16945, "name": "BRAT", "network": "eth", "shortcut": "BRAT", @@ -2289,7 +2289,7 @@ "Github": "https://github.com/breadwallet", "Homepage": "https://token.breadapp.com/en" }, - "marketcap_usd": 31877319, + "marketcap_usd": 32166081, "name": "Bread", "network": "eth", "shortcut": "BRD", @@ -2447,7 +2447,7 @@ "Github": "https://github.com/bytom", "Homepage": "https://bytom.io" }, - "marketcap_usd": 163797956, + "marketcap_usd": 182156841, "name": "Bytom", "network": "eth", "shortcut": "BTM", @@ -2566,7 +2566,7 @@ "Github": "https://github.com/cryptotwenty", "Homepage": "https://crypto20.com" }, - "marketcap_usd": 27273273, + "marketcap_usd": 27200698, "name": "Crypto20's Token", "network": "eth", "shortcut": "C20", @@ -2684,7 +2684,7 @@ "links": { "Homepage": "https://cashaa.com" }, - "marketcap_usd": 9604839, + "marketcap_usd": 11049607, "name": "Cashaa", "network": "eth", "shortcut": "CAS", @@ -3153,7 +3153,7 @@ "links": { "Homepage": "https://cindicator.com" }, - "marketcap_usd": 25058233, + "marketcap_usd": 25262263, "name": "Cindicator", "network": "eth", "shortcut": "CND", @@ -3260,7 +3260,7 @@ "Github": "https://github.com/CoinvestHQ", "Homepage": "https://coinve.st" }, - "marketcap_usd": 101879, + "marketcap_usd": 89814, "name": "Coinvest V2 Token", "network": "eth", "shortcut": "COIN", @@ -3294,7 +3294,7 @@ "links": { "Homepage": "https://covesting.io/" }, - "marketcap_usd": 14548559, + "marketcap_usd": 15546534, "name": "Covesting", "network": "eth", "shortcut": "COV", @@ -3330,7 +3330,7 @@ "Github": "https://github.com/aditus", "Homepage": "https://copytrack.io" }, - "marketcap_usd": 908013, + "marketcap_usd": 940467, "name": "COPYTRACK", "network": "eth", "shortcut": "CPY", @@ -3400,7 +3400,7 @@ "links": { "Homepage": "https://bitbounce.io" }, - "marketcap_usd": 9682409, + "marketcap_usd": 11146751, "name": "Credo / Bitbounce", "network": "eth", "shortcut": "CREDO", @@ -3626,7 +3626,7 @@ "Github": "https://github.com/cargoxio", "Homepage": "https://cargox.io" }, - "marketcap_usd": 3571073, + "marketcap_usd": 4051146, "name": "CargoX", "network": "eth", "shortcut": "CXO", @@ -3660,7 +3660,7 @@ "links": { "Homepage": "https://ccrb.io" }, - "marketcap_usd": 1557193, + "marketcap_usd": 1854299, "name": "CryptoCarbon", "network": "eth", "shortcut": "CryptoCarbon", @@ -3694,7 +3694,7 @@ "links": { "Homepage": "https://dadi.cloud" }, - "marketcap_usd": 7093611, + "marketcap_usd": 7334671, "name": "DADI", "network": "eth", "shortcut": "DADI", @@ -3711,7 +3711,7 @@ "links": { "Homepage": "http://www.dalecoin.org" }, - "marketcap_usd": 35219, + "marketcap_usd": 36587, "name": "DaleCoin", "network": "eth", "shortcut": "DALC", @@ -3799,7 +3799,7 @@ "Github": "https://github.com/streamr-dev", "Homepage": "https://www.streamr.com" }, - "marketcap_usd": 48676, + "marketcap_usd": 49496, "name": "DATACoin", "network": "eth", "shortcut": "DATACoin", @@ -3888,7 +3888,7 @@ "Github": "https://github.com/DistributedBanking/DCC", "Homepage": "http://dcc.finance" }, - "marketcap_usd": 14545355, + "marketcap_usd": 14762972, "name": "Distributed Credit Chain", "network": "eth", "shortcut": "DCC", @@ -3923,7 +3923,7 @@ "Github": "https://github.com/Dentacoin", "Homepage": "https://dentacoin.com" }, - "marketcap_usd": 117536664, + "marketcap_usd": 119350093, "name": "Dentacoin", "network": "eth", "shortcut": "DCN", @@ -3993,7 +3993,7 @@ "links": { "Homepage": "https://www.dentwireless.com" }, - "marketcap_usd": 42212426, + "marketcap_usd": 43165155, "name": "DENT", "network": "eth", "shortcut": "DENT", @@ -4011,7 +4011,7 @@ "Github": "https://github.com/digipulseio", "Homepage": "https://www.digipulse.io" }, - "marketcap_usd": 321244, + "marketcap_usd": 303281, "name": "DigiPulse", "network": "eth", "shortcut": "DGPT", @@ -4065,7 +4065,7 @@ "Github": "https://github.com/DigixGlobal", "Homepage": "https://digix.global" }, - "marketcap_usd": 2320653, + "marketcap_usd": 2336269, "name": "Digix Gold Token", "network": "eth", "shortcut": "DGX", @@ -4100,7 +4100,7 @@ "links": { "Homepage": "https://etheroll.com" }, - "marketcap_usd": 4583040, + "marketcap_usd": 4821454, "name": "Etheroll", "network": "eth", "shortcut": "DICE", @@ -4308,7 +4308,7 @@ "Github": "https://github.com/dethertech", "Homepage": "https://dether.io" }, - "marketcap_usd": 2158287, + "marketcap_usd": 2184097, "name": "dether", "network": "eth", "shortcut": "DTH", @@ -4413,7 +4413,7 @@ "Github": "https://github.com/elangindonesia/EagleCoin", "Homepage": "https://eaglepay.io" }, - "marketcap_usd": 85158, + "marketcap_usd": 103304, "name": "EagleCoin", "network": "eth", "shortcut": "EAGLE", @@ -4498,7 +4498,7 @@ "links": { "Homepage": "https://edgeless.io" }, - "marketcap_usd": 26281922, + "marketcap_usd": 26375465, "name": "Edgeless", "network": "eth", "shortcut": "EDG", @@ -4515,7 +4515,7 @@ "links": { "Homepage": "https://eidoo.io" }, - "marketcap_usd": 22786928, + "marketcap_usd": 24809606, "name": "Eidoo", "network": "eth", "shortcut": "EDO", @@ -4622,7 +4622,7 @@ "Github": "https://github.com/eltcoin", "Homepage": "http://www.eltcoin.tech/" }, - "marketcap_usd": 94070, + "marketcap_usd": 101963, "name": "ELTCOIN", "network": "eth", "shortcut": "ELTCOIN", @@ -4799,7 +4799,7 @@ "links": { "Homepage": "https://eos.io" }, - "marketcap_usd": 4378649362, + "marketcap_usd": 4406564332, "name": "EOS", "network": "eth", "shortcut": "EOS", @@ -4852,7 +4852,7 @@ "links": { "Homepage": "https://www.ethbits.com" }, - "marketcap_usd": 1264567, + "marketcap_usd": 1071935, "name": "Ethbits", "network": "eth", "shortcut": "ETBS", @@ -5008,7 +5008,7 @@ "address": "0x5c743a35E903F6c584514ec617ACEe0611Cf44f3", "hidden": 1, "links": {}, - "marketcap_usd": 3128973, + "marketcap_usd": 3341333, "name": "Experty", "network": "eth", "shortcut": "EXY", @@ -5183,7 +5183,7 @@ "Github": "https://github.com/FundRequest", "Homepage": "https://fundrequest.io" }, - "marketcap_usd": 424114, + "marketcap_usd": 436959, "name": "FundRequest", "network": "eth", "shortcut": "FND", @@ -5288,7 +5288,7 @@ "links": { "Homepage": "https://funfair.io" }, - "marketcap_usd": 84604195, + "marketcap_usd": 83784745, "name": "Funfair", "network": "eth", "shortcut": "FUN", @@ -5341,7 +5341,7 @@ "Github": "https://github.com/BlockchainLabsNZ/gambit", "Homepage": "http://gambitcrypto.com" }, - "marketcap_usd": 4463774, + "marketcap_usd": 4540717, "name": "Gambit", "network": "eth", "shortcut": "GAM", @@ -5464,7 +5464,7 @@ "Github": "https://github.com/daostack", "Homepage": "https://daostack.io" }, - "marketcap_usd": 4217214, + "marketcap_usd": 4069602, "name": "DAOstack", "network": "eth", "shortcut": "GEN", @@ -5586,7 +5586,7 @@ "links": { "Homepage": "https://gridplus.io/token-sale" }, - "marketcap_usd": 5392777, + "marketcap_usd": 7586168, "name": "GRID", "network": "eth", "shortcut": "GRID", @@ -5675,7 +5675,7 @@ "Github": "https://github.com/GIFTO-io", "Homepage": "https://gifto.io/" }, - "marketcap_usd": 40480983, + "marketcap_usd": 43157978, "name": "Gifto", "network": "eth", "shortcut": "GTO", @@ -5711,7 +5711,7 @@ "Github": "https://github.com/GenesisVision", "Homepage": "https://genesis.vision" }, - "marketcap_usd": 17718606, + "marketcap_usd": 18476548, "name": "Genesis Vision", "network": "eth", "shortcut": "GVT", @@ -5833,7 +5833,7 @@ "Github": "https://github.com/havven/havven", "Homepage": "https://havven.io" }, - "marketcap_usd": 7598074, + "marketcap_usd": 8074565, "name": "Havven", "network": "eth", "shortcut": "HAV", @@ -5972,7 +5972,7 @@ "links": { "Homepage": "https://github.com/arachnid/hodlcoin" }, - "marketcap_usd": 243671, + "marketcap_usd": 258639, "name": "HODLCoin", "network": "eth", "shortcut": "HODL", @@ -6025,7 +6025,7 @@ "Github": "https://github.com/HiveProjectLTD", "Homepage": "https://hive-project.net" }, - "marketcap_usd": 11523549, + "marketcap_usd": 11450973, "name": "Hive Project", "network": "eth", "shortcut": "HVN", @@ -6164,7 +6164,7 @@ "links": { "Homepage": "https://icos.icobox.io" }, - "marketcap_usd": 1680040, + "marketcap_usd": 1834276, "name": "ICOS", "network": "eth", "shortcut": "ICOS", @@ -6181,7 +6181,7 @@ "links": { "Homepage": "https://www.icon.foundation" }, - "marketcap_usd": 236874502, + "marketcap_usd": 252661135, "name": "ICON", "network": "eth", "shortcut": "ICX", @@ -6215,7 +6215,7 @@ "links": { "Homepage": "https://investfeed.com" }, - "marketcap_usd": 2272269, + "marketcap_usd": 2444515, "name": "InvestFeed", "network": "eth", "shortcut": "IFT", @@ -6350,7 +6350,7 @@ "links": { "Homepage": "https://insights.network" }, - "marketcap_usd": 1854257, + "marketcap_usd": 1815725, "name": "Insights Network", "network": "eth", "shortcut": "INSTAR", @@ -6367,7 +6367,7 @@ "links": { "Homepage": "https://internxt.io" }, - "marketcap_usd": 1477758, + "marketcap_usd": 2262594, "name": "Internxt", "network": "eth", "shortcut": "INXT", @@ -6384,7 +6384,7 @@ "links": { "Homepage": "https://iost.io/" }, - "marketcap_usd": 111592385, + "marketcap_usd": 114256334, "name": "IOSToken", "network": "eth", "shortcut": "IOST", @@ -6491,7 +6491,7 @@ "Github": "https://github.com/IoTChainCode", "Homepage": "https://iotchain.io/" }, - "marketcap_usd": 11158935, + "marketcap_usd": 11570618, "name": "IoT Chain", "network": "eth", "shortcut": "ITC", @@ -6681,7 +6681,7 @@ "Github": "https://github.com/kikinteractive/kin-token", "Homepage": "https://kin.kik.com" }, - "marketcap_usd": 79653286, + "marketcap_usd": 84001995, "name": "Kin Foundation", "network": "eth", "shortcut": "KIN", @@ -6699,7 +6699,7 @@ "Github": "https://github.com/KyberNetwork", "Homepage": "https://kyber.network" }, - "marketcap_usd": 62120697, + "marketcap_usd": 67389590, "name": "Kyber Network", "network": "eth", "shortcut": "KNC", @@ -6735,7 +6735,7 @@ "Github": "https://github.com/Cryptense/", "Homepage": "https://kryll.io/" }, - "marketcap_usd": 505756, + "marketcap_usd": 518539, "name": "Kryll", "network": "eth", "shortcut": "KRL", @@ -6770,7 +6770,7 @@ "Github": "https://github.com/latoken", "Homepage": "https://latoken.com/" }, - "marketcap_usd": 7006186, + "marketcap_usd": 7078045, "name": "LATOKEN", "network": "eth", "shortcut": "LA", @@ -6804,7 +6804,7 @@ "links": { "Homepage": "https://www.leadcoin.network/" }, - "marketcap_usd": 1098068, + "marketcap_usd": 1067444, "name": "LEADCOIN", "network": "eth", "shortcut": "LDC", @@ -6908,7 +6908,7 @@ "links": { "Homepage": "http://www.lifelabs.io" }, - "marketcap_usd": 3025491, + "marketcap_usd": 2913824, "name": "LIFE", "network": "eth", "shortcut": "LIFE", @@ -6960,7 +6960,7 @@ "Github": "https://github.com/lendingblock", "Homepage": "https://lendingblock.com" }, - "marketcap_usd": 1454637, + "marketcap_usd": 1461818, "name": "Lendingblock", "network": "eth", "shortcut": "LND", @@ -6977,7 +6977,7 @@ "links": { "Homepage": "https://LockChain.co" }, - "marketcap_usd": 5259245, + "marketcap_usd": 5203577, "name": "LockChain", "network": "eth", "shortcut": "LOC", @@ -6995,7 +6995,7 @@ "Github": "http://github.com/locipro/loci-coin-sale", "Homepage": "https://locipro.com" }, - "marketcap_usd": 1699666, + "marketcap_usd": 1790128, "name": "LOCIcoin", "network": "eth", "shortcut": "LOCI", @@ -7310,7 +7310,7 @@ "Github": "https://github.com/theembermine", "Homepage": "https://embermine.com/" }, - "marketcap_usd": 235298, + "marketcap_usd": 196722, "name": "Embers", "network": "eth", "shortcut": "MBRS", @@ -7326,7 +7326,7 @@ "address": "0x93E682107d1E9defB0b5ee701C71707a4B2E46Bc", "hidden": 1, "links": {}, - "marketcap_usd": 256534, + "marketcap_usd": 284290, "name": "MCAP", "network": "eth", "shortcut": "MCAP", @@ -7361,7 +7361,7 @@ "links": { "Homepage": "https://mona.co" }, - "marketcap_usd": 66988027, + "marketcap_usd": 67092556, "name": "MCO", "network": "eth", "shortcut": "MCO", @@ -7467,7 +7467,7 @@ "links": { "Homepage": "https://mftu.net" }, - "marketcap_usd": 0, + "marketcap_usd": 67294, "name": "Mainstream For The Underground", "network": "eth", "shortcut": "MFTU", @@ -7573,7 +7573,7 @@ "Github": "https://github.com/modum-io", "Homepage": "https://modum.io" }, - "marketcap_usd": 20182371, + "marketcap_usd": 21046716, "name": "Modum", "network": "eth", "shortcut": "MOD", @@ -7642,7 +7642,7 @@ "links": { "Homepage": "https://mothership.cx" }, - "marketcap_usd": 12737439, + "marketcap_usd": 12972327, "name": "Mothership", "network": "eth", "shortcut": "MSP", @@ -7659,7 +7659,7 @@ "links": { "Homepage": "http://www.monetha.io" }, - "marketcap_usd": 4341562, + "marketcap_usd": 4592888, "name": "Monetha", "network": "eth", "shortcut": "MTH", @@ -7779,7 +7779,7 @@ "Github": "https://github.com/Merculet", "Homepage": "https://www.merculet.io" }, - "marketcap_usd": 2662907, + "marketcap_usd": 3215651, "name": "Merculet", "network": "eth", "shortcut": "MVP", @@ -7829,7 +7829,7 @@ "links": { "Homepage": "https://mysterium.network" }, - "marketcap_usd": 2416335, + "marketcap_usd": 2448689, "name": "Mysterium", "network": "eth", "shortcut": "MYST", @@ -7864,7 +7864,7 @@ "Github": "https://github.com/NANJ-COIN", "Homepage": "https://nanjcoin.com/" }, - "marketcap_usd": 15109367, + "marketcap_usd": 13822722, "name": "NANJCOIN", "network": "eth", "shortcut": "NANJ", @@ -7918,7 +7918,7 @@ "Github": "https://github.com/polyswarm", "Homepage": "https://polyswarm.io" }, - "marketcap_usd": 23945838, + "marketcap_usd": 23345676, "name": "Nectar", "network": "eth", "shortcut": "NCT", @@ -7935,7 +7935,7 @@ "links": { "Homepage": "https://neverdie.com" }, - "marketcap_usd": 956163, + "marketcap_usd": 1408408, "name": "Neverdie", "network": "eth", "shortcut": "NDC", @@ -7970,7 +7970,7 @@ "links": { "Homepage": "https://nimiq.com" }, - "marketcap_usd": 3001681, + "marketcap_usd": 2846290, "name": "NIMIQ", "network": "eth", "shortcut": "NET", @@ -8077,7 +8077,7 @@ "Github": "https://github.com/NperProject", "Homepage": "https://nper.io" }, - "marketcap_usd": 1600353, + "marketcap_usd": 1946971, "name": "NPER", "network": "eth", "shortcut": "NPER", @@ -8129,7 +8129,7 @@ "links": { "Homepage": "https://nuls.io" }, - "marketcap_usd": 54832645, + "marketcap_usd": 57534322, "name": "NULS", "network": "eth", "shortcut": "NULS", @@ -8163,7 +8163,7 @@ "links": { "Homepage": "https://beyond-the-void.net" }, - "marketcap_usd": 1434745, + "marketcap_usd": 1502535, "name": "Nexium", "network": "eth", "shortcut": "NxC", @@ -8197,7 +8197,7 @@ "links": { "Homepage": "https://www.openanx.org/en" }, - "marketcap_usd": 4047027, + "marketcap_usd": 4270504, "name": "OAX", "network": "eth", "shortcut": "OAX", @@ -8411,7 +8411,7 @@ "Github": "https://github.com/OpenSTFoundation", "Homepage": "https://simpletoken.org" }, - "marketcap_usd": 9913162, + "marketcap_usd": 10613704, "name": "Simple Token 'OST'", "network": "eth", "shortcut": "OST", @@ -8429,7 +8429,7 @@ "Github": "https://github.com/owndata", "Homepage": "https://owndata.network" }, - "marketcap_usd": 984523, + "marketcap_usd": 0, "name": "OWNDATA", "network": "eth", "shortcut": "OWN", @@ -8465,7 +8465,7 @@ "Github": "https://github.com/policypalnet", "Homepage": "https://www.policypal.network" }, - "marketcap_usd": 2170673, + "marketcap_usd": 2141433, "name": "PolicyPal Network", "network": "eth", "shortcut": "PAL", @@ -8570,7 +8570,7 @@ "links": { "Homepage": "http://www.tenx.tech" }, - "marketcap_usd": 63076973, + "marketcap_usd": 62355151, "name": "TenX", "network": "eth", "shortcut": "PAY", @@ -8639,7 +8639,7 @@ "Github": "https://github.com/PeculiumPCL/Peculium", "Homepage": "https://peculium.io" }, - "marketcap_usd": 3038802, + "marketcap_usd": 2664106, "name": "Peculium", "network": "eth", "shortcut": "PCL", @@ -8794,7 +8794,7 @@ "links": { "Homepage": "https://polybius.io" }, - "marketcap_usd": 6219258, + "marketcap_usd": 6461014, "name": "Polybius", "network": "eth", "shortcut": "PLBT", @@ -8898,7 +8898,7 @@ "links": { "Homepage": "https://polymath.network" }, - "marketcap_usd": 49502153, + "marketcap_usd": 50284550, "name": "Polymath Network", "network": "eth", "shortcut": "POLY", @@ -8933,7 +8933,7 @@ "Github": "https://github.com/PoSToken", "Homepage": "https://postoken.org" }, - "marketcap_usd": 39260, + "marketcap_usd": 38380, "name": "PoSToken", "network": "eth", "shortcut": "POS", @@ -8967,7 +8967,7 @@ "links": { "Homepage": "https://www.paypie.com" }, - "marketcap_usd": 8724949, + "marketcap_usd": 8815917, "name": "PayPie", "network": "eth", "shortcut": "PPP", @@ -8984,7 +8984,7 @@ "links": { "Homepage": "https://populous.co" }, - "marketcap_usd": 175554738, + "marketcap_usd": 171844299, "name": "Populous", "network": "eth", "shortcut": "PPT", @@ -9001,7 +9001,7 @@ "links": { "Homepage": "https://presearch.io" }, - "marketcap_usd": 13802996, + "marketcap_usd": 14026316, "name": "Presearch", "network": "eth", "shortcut": "PRE", @@ -9054,7 +9054,7 @@ "links": { "Homepage": "https://propy.com" }, - "marketcap_usd": 6960977, + "marketcap_usd": 6902460, "name": "Propy", "network": "eth", "shortcut": "PRO", @@ -9229,7 +9229,7 @@ "links": { "Homepage": "https://liquid.plus" }, - "marketcap_usd": 61234484, + "marketcap_usd": 72836470, "name": "QASH", "network": "eth", "shortcut": "QASH", @@ -9371,7 +9371,7 @@ "Github": "https://github.com/qtumproject", "Homepage": "https://qtum.org/" }, - "marketcap_usd": 360925876, + "marketcap_usd": 366378124, "name": "Qtum", "network": "eth", "shortcut": "QTUM", @@ -9425,7 +9425,7 @@ "Github": "https://github.com/ripio/rcn-token", "Homepage": "https://ripiocredit.network" }, - "marketcap_usd": 9056721, + "marketcap_usd": 9254671, "name": "Ripio Credit Network", "network": "eth", "shortcut": "RCN", @@ -9476,7 +9476,7 @@ "links": { "Homepage": "https://www.rebellious.io" }, - "marketcap_usd": 3165260, + "marketcap_usd": 3233934, "name": "Rebellious", "network": "eth", "shortcut": "REBL", @@ -9494,7 +9494,7 @@ "Github": "https://github.com/red", "Homepage": "https://ico.red-lang.org" }, - "marketcap_usd": 1741390, + "marketcap_usd": 1688379, "name": "Red Community Token", "network": "eth", "shortcut": "RED", @@ -9547,7 +9547,7 @@ "links": { "Homepage": "https://request.network" }, - "marketcap_usd": 28293402, + "marketcap_usd": 29734347, "name": "Request Network", "network": "eth", "shortcut": "REQ", @@ -9582,7 +9582,7 @@ "links": { "Homepage": "https://refereum.com" }, - "marketcap_usd": 10157537, + "marketcap_usd": 10158717, "name": "Refereum", "network": "eth", "shortcut": "RFR", @@ -9634,7 +9634,7 @@ "links": { "Homepage": "http://crowdsale.iex.ec" }, - "marketcap_usd": 32133012, + "marketcap_usd": 35286600, "name": "IEx.ec", "network": "eth", "shortcut": "RLC", @@ -9686,7 +9686,7 @@ "links": { "Homepage": "http://www.relex.io" }, - "marketcap_usd": 2367168, + "marketcap_usd": 2059935, "name": "Relex", "network": "eth", "shortcut": "RLX", @@ -9721,7 +9721,7 @@ "Github": "https://github.com/rocketico", "Homepage": "https://rocketico.io" }, - "marketcap_usd": 19503786, + "marketcap_usd": 21680674, "name": "Rocket Token", "network": "eth", "shortcut": "ROCK", @@ -9823,7 +9823,7 @@ "links": { "Homepage": "https://rivetzintl.com" }, - "marketcap_usd": 3197635, + "marketcap_usd": 3259734, "name": "Rivetz", "network": "eth", "shortcut": "RVT", @@ -9874,7 +9874,7 @@ "links": { "Homepage": "https://saltlending.com" }, - "marketcap_usd": 30053034, + "marketcap_usd": 30970033, "name": "Salt Lending Token", "network": "eth", "shortcut": "SALT", @@ -9891,7 +9891,7 @@ "links": { "Homepage": "https://santiment.net" }, - "marketcap_usd": 36400681, + "marketcap_usd": 37144371, "name": "Santiment", "network": "eth", "shortcut": "SAN", @@ -9942,7 +9942,7 @@ "links": { "Homepage": "https://sensay.it" }, - "marketcap_usd": 1895678, + "marketcap_usd": 1909749, "name": "Sensay", "network": "eth", "shortcut": "SENSE", @@ -10115,7 +10115,7 @@ "links": { "Homepage": "http://smartlands.io" }, - "marketcap_usd": 7836431, + "marketcap_usd": 7817290, "name": "Smartlands", "network": "eth", "shortcut": "SLT", @@ -10202,7 +10202,7 @@ "links": { "Homepage": "https://singulardtv.com" }, - "marketcap_usd": 13317288, + "marketcap_usd": 13356599, "name": "SingularDTV", "network": "eth", "shortcut": "SNGLS", @@ -10305,7 +10305,7 @@ "links": { "Homepage": "https://spankchain.com" }, - "marketcap_usd": 14482485, + "marketcap_usd": 13755901, "name": "SpankChain", "network": "eth", "shortcut": "SPANK", @@ -10494,7 +10494,7 @@ "links": { "Homepage": "https://stktoken.com" }, - "marketcap_usd": 3618184, + "marketcap_usd": 4352499, "name": "STK Token", "network": "eth", "shortcut": "STK", @@ -10529,7 +10529,7 @@ "Github": "https://github.com/Storj", "Homepage": "https://storj.io" }, - "marketcap_usd": 36791912, + "marketcap_usd": 38370023, "name": "STORJ", "network": "eth", "shortcut": "STORJ", @@ -10546,7 +10546,7 @@ "links": { "Homepage": "https://www.stormtoken.com" }, - "marketcap_usd": 34619988, + "marketcap_usd": 36387909, "name": "Storm Token", "network": "eth", "shortcut": "STORM", @@ -10582,7 +10582,7 @@ "Github": "https://github.com/Storiqa/", "Homepage": "https://storiqa.com" }, - "marketcap_usd": 15383152, + "marketcap_usd": 14984412, "name": "Storiqa", "network": "eth", "shortcut": "STQ", @@ -10635,7 +10635,7 @@ "links": { "Homepage": "https://substratum.net" }, - "marketcap_usd": 50880482, + "marketcap_usd": 56199828, "name": "Substratum", "network": "eth", "shortcut": "SUB", @@ -10827,7 +10827,7 @@ "Github": "https://github.com/telcoin", "Homepage": "https://www.telco.in" }, - "marketcap_usd": 20233035, + "marketcap_usd": 18839716, "name": "Telcoin", "network": "eth", "shortcut": "TEL", @@ -10845,7 +10845,7 @@ "Github": "https://github.com/TrueFlip", "Homepage": "https://trueflip.io" }, - "marketcap_usd": 3085871, + "marketcap_usd": 3253929, "name": "TrueFlip", "network": "eth", "shortcut": "TFL", @@ -10862,7 +10862,7 @@ "links": { "Homepage": "https://www.thetatoken.org/" }, - "marketcap_usd": 55785156, + "marketcap_usd": 69141560, "name": "Theta Token", "network": "eth", "shortcut": "THETA", @@ -10915,7 +10915,7 @@ "links": { "Homepage": "https://chronobank.io" }, - "marketcap_usd": 4325207, + "marketcap_usd": 4457546, "name": "Chronobank", "network": "eth", "shortcut": "TIME", @@ -10949,7 +10949,7 @@ "links": { "Homepage": "https://www.blocktix.io" }, - "marketcap_usd": 4868991, + "marketcap_usd": 5045841, "name": "Blocktix", "network": "eth", "shortcut": "TIX", @@ -10966,7 +10966,7 @@ "links": { "Homepage": "https://etherscan.io/token/TokenCard" }, - "marketcap_usd": 10971348, + "marketcap_usd": 10979046, "name": "TokenCard", "network": "eth", "shortcut": "TKN", @@ -11122,7 +11122,7 @@ "links": { "Homepage": "https://taas.fund" }, - "marketcap_usd": 7357318, + "marketcap_usd": 6990027, "name": "Token-as-a-Service", "network": "eth", "shortcut": "TaaS", @@ -11157,7 +11157,7 @@ "links": { "Homepage": "https://uquidcoin.com" }, - "marketcap_usd": 6746339, + "marketcap_usd": 6846702, "name": "Uquid Coin", "network": "eth", "shortcut": "UQC", @@ -11225,7 +11225,7 @@ "Github": "https://github.com/UniversaBlockchain/universa", "Homepage": "https://www.universa.io/" }, - "marketcap_usd": 12764433, + "marketcap_usd": 12287840, "name": "Universa", "network": "eth", "shortcut": "UTN-P", @@ -11312,7 +11312,7 @@ "Github": "https://github.com/blockv", "Homepage": "https://blockv.io" }, - "marketcap_usd": 19072775, + "marketcap_usd": 19228486, "name": "BLOCKv", "network": "eth", "shortcut": "VEE", @@ -11330,7 +11330,7 @@ "Github": "https://github.com/vechain-team", "Homepage": "https://tokensale.vechain.com/en" }, - "marketcap_usd": 782640001, + "marketcap_usd": 791401262, "name": "Vechain", "network": "eth", "shortcut": "VEN", @@ -11399,7 +11399,7 @@ "Github": "https://github.com/Viewly/", "Homepage": "https://view.ly/" }, - "marketcap_usd": 1000485, + "marketcap_usd": 795402, "name": "Viewly", "network": "eth", "shortcut": "VIEW", @@ -11417,7 +11417,7 @@ "Github": "https://github.com/ViceIndustryToken", "Homepage": "https://vicetoken.com/" }, - "marketcap_usd": 1589755, + "marketcap_usd": 1667855, "name": "Vice Industry Token", "network": "eth", "shortcut": "VIT", @@ -11505,7 +11505,7 @@ "links": { "Homepage": "https://veros.org" }, - "marketcap_usd": 165759, + "marketcap_usd": 208801, "name": "Veros", "network": "eth", "shortcut": "VRS", @@ -11540,7 +11540,7 @@ "Github": "https://github.com/waxio", "Homepage": "https://wax.io" }, - "marketcap_usd": 64605085, + "marketcap_usd": 66381362, "name": "WAX", "network": "eth", "shortcut": "WAX", @@ -11592,7 +11592,7 @@ "links": { "Homepage": "https://wepower.network" }, - "marketcap_usd": 9820655, + "marketcap_usd": 10228971, "name": "WePower", "network": "eth", "shortcut": "WCT", @@ -11680,7 +11680,7 @@ "links": { "Homepage": "https://wings.ai" }, - "marketcap_usd": 12900277, + "marketcap_usd": 12843654, "name": "WINGS", "network": "eth", "shortcut": "WINGS", @@ -11853,7 +11853,7 @@ "links": { "Homepage": "https://www.wacoin.io" }, - "marketcap_usd": 6851710, + "marketcap_usd": 7160318, "name": "WaBi", "network": "eth", "shortcut": "WaBi", @@ -11904,7 +11904,7 @@ "links": { "Homepage": "http://www.xaurum.org" }, - "marketcap_usd": 4338705, + "marketcap_usd": 4221839, "name": "Xaurum", "network": "eth", "shortcut": "XAUR", @@ -11922,7 +11922,7 @@ "Github": "https://github.com/blitzpredict", "Homepage": "https://www.blitzpredict.io" }, - "marketcap_usd": 692032, + "marketcap_usd": 702192, "name": "BlitzPredict", "network": "eth", "shortcut": "XBP", @@ -12045,7 +12045,7 @@ "Github": "https://github.com/InkProtocol/", "Homepage": "https://paywithink.com" }, - "marketcap_usd": 2461097, + "marketcap_usd": 2714381, "name": "Ink Protocol", "network": "eth", "shortcut": "XNK", @@ -12062,7 +12062,7 @@ "links": { "Homepage": "https://xenon.network" }, - "marketcap_usd": 834757, + "marketcap_usd": 887202, "name": "XENON", "network": "eth", "shortcut": "XNN", @@ -12167,7 +12167,7 @@ "Github": "https://github.com/zapproject", "Homepage": "https://zap.store" }, - "marketcap_usd": 2015738, + "marketcap_usd": 1918141, "name": "ZAP", "network": "eth", "shortcut": "ZAP", @@ -12184,7 +12184,7 @@ "links": { "Homepage": "https://zsc.io/" }, - "marketcap_usd": 4758614, + "marketcap_usd": 4787352, "name": "Zeusshield", "network": "eth", "shortcut": "ZCS", @@ -12202,7 +12202,7 @@ "Github": "https://github.com/zilliqa", "Homepage": "https://www.zilliqa.com/" }, - "marketcap_usd": 265939621, + "marketcap_usd": 283511706, "name": "Zilliqa", "network": "eth", "shortcut": "ZIL", @@ -12219,7 +12219,7 @@ "links": { "Homepage": "https://www.zmine.com" }, - "marketcap_usd": 5118618, + "marketcap_usd": 5250393, "name": "ZMINE", "network": "eth", "shortcut": "ZMN", @@ -12254,7 +12254,7 @@ "Github": "https://github.com/carVertical", "Homepage": "https://www.carvertical.com" }, - "marketcap_usd": 4535812, + "marketcap_usd": 4641550, "name": "carVertical", "network": "eth", "shortcut": "cV", @@ -12342,7 +12342,7 @@ "Github": "https://github.com/eosdac", "Homepage": "https://eosdac.io/" }, - "marketcap_usd": 15635243, + "marketcap_usd": 15561717, "name": "eosDAC", "network": "eth", "shortcut": "eosDAC", @@ -12376,7 +12376,7 @@ "Github": "https://github.com/havven/havven", "Homepage": "https://www.havven.io" }, - "marketcap_usd": 1150426, + "marketcap_usd": 1155975, "name": "Havven-Backed USD Nomins (nUSD)", "network": "eth", "shortcut": "nUSD", @@ -12410,7 +12410,7 @@ "address": "0x8667559254241ddeD4d11392f868d72092765367", "hidden": 1, "links": {}, - "marketcap_usd": 225631023, + "marketcap_usd": 232368933, "name": "Aeternity", "network": "kov", "shortcut": "Aeternity", @@ -12597,7 +12597,7 @@ "links": { "Homepage": "https://www.qwark.io" }, - "marketcap_usd": 1677629, + "marketcap_usd": 1838322, "name": "QWARK", "network": "ubq", "shortcut": "QWARK", @@ -12630,7 +12630,7 @@ "links": { "Homepage": "https://akroma.io" }, - "marketcap_usd": 728296, + "marketcap_usd": 708616, "name": "Akroma", "shortcut": "AKA", "t1_enabled": "soon", @@ -12660,7 +12660,7 @@ "links": { "Homepage": "https://egem.io" }, - "marketcap_usd": 192203, + "marketcap_usd": 200422, "name": "EtherGem", "shortcut": "EGEM", "t1_enabled": "yes", @@ -12675,7 +12675,7 @@ "links": { "Homepage": "https://ellaism.org" }, - "marketcap_usd": 360888, + "marketcap_usd": 359582, "name": "Ellaism", "shortcut": "ELLA", "t1_enabled": "yes", @@ -12720,7 +12720,7 @@ "links": { "Homepage": "https://ethereumclassic.github.io" }, - "marketcap_usd": 1278880937, + "marketcap_usd": 1291168227, "name": "Ethereum Classic", "shortcut": "ETC", "t1_enabled": "yes", @@ -12735,7 +12735,7 @@ "links": { "Homepage": "https://www.ethereum.org" }, - "marketcap_usd": 27833386307, + "marketcap_usd": 28117892357, "name": "Ethereum", "shortcut": "ETH", "t1_enabled": "yes", @@ -12780,7 +12780,7 @@ "links": { "Homepage": "https://expanse.tech" }, - "marketcap_usd": 4806464, + "marketcap_usd": 4812366, "name": "Expanse", "shortcut": "EXP", "t1_enabled": "yes", @@ -12795,7 +12795,7 @@ "links": { "Homepage": "https://gochain.io" }, - "marketcap_usd": 14231960, + "marketcap_usd": 15095961, "name": "GoChain", "shortcut": "GO", "t1_enabled": "yes", @@ -12810,7 +12810,7 @@ "links": { "Homepage": "https://musicoin.org" }, - "marketcap_usd": 2943759, + "marketcap_usd": 3047841, "name": "Musicoin", "shortcut": "MUSIC", "t1_enabled": "soon", @@ -12825,7 +12825,7 @@ "links": { "Homepage": "https://pirl.io" }, - "marketcap_usd": 2822315, + "marketcap_usd": 2883556, "name": "Pirl", "shortcut": "PIRL", "t1_enabled": "soon", @@ -12855,7 +12855,7 @@ "links": { "Homepage": "https://ubiqsmart.com" }, - "marketcap_usd": 22728959, + "marketcap_usd": 22538702, "name": "Ubiq", "shortcut": "UBQ", "t1_enabled": "yes", @@ -12950,7 +12950,7 @@ "links": { "Homepage": "https://www.cardano.org" }, - "marketcap_usd": 2364387688, + "marketcap_usd": 2393273266, "name": "Cardano", "shortcut": "ADA", "t1_enabled": "no", @@ -12961,7 +12961,7 @@ "links": { "Homepage": "https://lisk.io/" }, - "marketcap_usd": 436815772, + "marketcap_usd": 529722990, "name": "Lisk", "shortcut": "LSK", "t1_enabled": "no", @@ -12972,7 +12972,7 @@ "links": { "Homepage": "https://ont.io" }, - "marketcap_usd": 386602114, + "marketcap_usd": 392083677, "name": "Ontology", "shortcut": "ONT", "t1_enabled": "soon", @@ -12983,7 +12983,7 @@ "links": { "Homepage": "https://www.stellar.org" }, - "marketcap_usd": 3962284892, + "marketcap_usd": 4027996135, "name": "Stellar", "notes": "In development", "shortcut": "XLM", @@ -12995,7 +12995,7 @@ "links": { "Homepage": "https://getmonero.org" }, - "marketcap_usd": 1479564823, + "marketcap_usd": 1470898316, "name": "Monero", "notes": "In development", "shortcut": "XMR", @@ -13007,7 +13007,7 @@ "links": { "Homepage": "https://ripple.com" }, - "marketcap_usd": 12725565953, + "marketcap_usd": 12796422030, "name": "Ripple", "notes": "In development", "shortcut": "XRP", @@ -13019,7 +13019,7 @@ "links": { "Homepage": "https://tezos.com" }, - "marketcap_usd": 781308598, + "marketcap_usd": 796546269, "name": "Tezos", "shortcut": "XTZ", "t1_enabled": "no", @@ -13044,7 +13044,7 @@ "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 5723308, + "marketcap_usd": 5693343, "name": "DIMCOIN", "shortcut": "DIM", "t1_enabled": "yes", @@ -13059,7 +13059,7 @@ "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 5723308, + "marketcap_usd": 5693343, "name": "DIM TOKEN", "shortcut": "DIMTOK", "t1_enabled": "yes", @@ -13101,7 +13101,7 @@ "links": { "Homepage": "https://nem.io" }, - "marketcap_usd": 868084827, + "marketcap_usd": 905209375, "name": "NEM", "shortcut": "XEM", "t1_enabled": "yes", @@ -13113,11 +13113,11 @@ } }, "info": { - "marketcap_usd": 166220074097, + "marketcap_usd": 168706565383, "t1_coins": 635, "t2_coins": 634, - "total_marketcap_usd": 208809779508, - "updated_at": 1535039635, - "updated_at_readable": "Thu Aug 23 17:53:55 2018" + "total_marketcap_usd": 210960655566, + "updated_at": 1535122394, + "updated_at_readable": "Fri Aug 24 16:53:14 2018" } } \ No newline at end of file diff --git a/tools/coins_details.py b/tools/coins_details.py index f28748a5e..c824605c7 100755 --- a/tools/coins_details.py +++ b/tools/coins_details.py @@ -8,6 +8,8 @@ import requests import sys import coin_info +import click + LOG = logging.getLogger(__name__) OPTIONAL_KEYS = ("links", "notes", "wallet") @@ -17,54 +19,55 @@ OVERRIDES = coin_info.load_json("coins_details.override.json") VERSIONS = coin_info.latest_releases() COINMAKETCAP_CACHE = os.path.join(os.path.dirname(__file__), "coinmarketcap.json") +COINMARKETCAP_API_BASE = "https://pro-api.coinmarketcap.com/v1/" + +MARKET_CAPS = {} + + +def coinmarketcap_call(endpoint, api_key, params=None): + url = COINMARKETCAP_API_BASE + endpoint + r = requests.get(url, params=params, headers={"X-CMC_PRO_API_KEY": api_key}) + r.raise_for_status() + return r.json() -COINMARKETCAP_TICKERS_URL = ( - "https://api.coinmarketcap.com/v2/ticker/?start={}&convert=USD&limit=100" -) -COINMARKETCAP_GLOBAL_URL = "https://api.coinmarketcap.com/v2/global/" +def coinmarketcap_init(api_key, refresh=None): + global MARKET_CAPS -def coinmarketcap_init(): + force_refresh = refresh is True + disable_refresh = refresh is False try: mtime = os.path.getmtime(COINMAKETCAP_CACHE) - if mtime > time.time() - 3600: + cache_is_fresh = mtime > time.time() - 3600 + if disable_refresh or (cache_is_fresh and not force_refresh): print("Using cached market cap data") with open(COINMAKETCAP_CACHE) as f: - return json.load(f) - except Exception: - pass + coinmarketcap_data = json.load(f) + else: + print("Fetching market cap data") + coinmarketcap_data = coinmarketcap_call( + "cryptocurrency/listings/latest", + api_key, + params={"limit": 5000, "convert": "USD"}, + ) + except Exception as e: + raise RuntimeError("market cap data unavailable") from e - print("Updating coins from coinmarketcap") - total = None - ctr = 0 coin_data = {} + for coin in coinmarketcap_data["data"]: + slug = coin["slug"] + market_cap = coin["quote"]["USD"]["market_cap"] + if market_cap is not None: + coin_data[slug] = int(market_cap) - while total is None or ctr < total: - url = COINMARKETCAP_TICKERS_URL.format(ctr + 1) - data = requests.get(url).json() - - if total is None: - total = data["metadata"]["num_cryptocurrencies"] - ctr += len(data["data"]) - - for coin in data["data"].values(): - slug = coin["website_slug"] - market_cap = coin["quotes"]["USD"]["market_cap"] - if market_cap is not None: - coin_data[slug] = int(market_cap) - - print("Fetched {} of {} coins".format(ctr, total)) - time.sleep(1) + MARKET_CAPS = coin_data with open(COINMAKETCAP_CACHE, "w") as f: - json.dump(coin_data, f) + json.dump(coinmarketcap_data, f) return coin_data -MARKET_CAPS = coinmarketcap_init() - - def marketcap(coin): cap = None if "coinmarketcap_alias" in coin: @@ -82,7 +85,7 @@ def update_marketcaps(coins): coin["marketcap_usd"] = marketcap(coin) or 0 -def summary(coins): +def summary(coins, api_key): t1_coins = 0 t2_coins = 0 supported_marketcap = 0 @@ -101,8 +104,8 @@ def summary(coins): total_marketcap = None try: - ret = requests.get(COINMARKETCAP_GLOBAL_URL).json() - total_marketcap = int(ret["data"]["quotes"]["USD"]["total_market_cap"]) + ret = coinmarketcap_call("global-metrics/quotes/latest", api_key) + total_marketcap = int(ret["data"]["quote"]["USD"]["total_market_cap"]) except: pass @@ -117,8 +120,8 @@ def summary(coins): def _is_supported(support, trezor_version): - version = VERSIONS[str(trezor_version)] - nominal = support.get("trezor" + str(trezor_version)) + version = VERSIONS[trezor_version] + nominal = support.get(trezor_version) if nominal is None: return "no" elif isinstance(nominal, bool): @@ -228,7 +231,6 @@ def check_missing_data(coins): for k, coin in coins.items(): hide = False - print(coin) if "Homepage" not in coin.get("links", {}): print("%s: Missing homepage" % k) hide = True @@ -271,7 +273,7 @@ def check_missing_data(coins): def apply_overrides(coins): for key, override in OVERRIDES.items(): if key not in coins: - LOG.warning("override without coin: {}".format(key)) + LOG.warning(f"override without coin: {key}") continue def recursive_update(orig, new): @@ -286,7 +288,13 @@ def apply_overrides(coins): recursive_update(coin, override) -if __name__ == "__main__": +@click.command() +# fmt: off +@click.option("-r", "--refresh", "refresh", flag_value=True, help="Force refresh market cap info") +@click.option("-R", "--no-refresh", "refresh", flag_value=False, help="Force use cached market cap info") +@click.option("-A", "--api-key", required=True, envvar="COINMARKETCAP_API_KEY", help="Coinmarketcap API key") +# fmt: on +def main(refresh, api_key): # setup logging root = logging.getLogger() root.setLevel(logging.DEBUG) @@ -294,6 +302,8 @@ if __name__ == "__main__": handler.setLevel(logging.DEBUG) root.addHandler(handler) + coinmarketcap_init(api_key, refresh=refresh) + defs = coin_info.coin_info() support_info = coin_info.support_info(defs) @@ -308,9 +318,13 @@ if __name__ == "__main__": update_marketcaps(coins) check_missing_data(coins) - info = summary(coins) + info = summary(coins, api_key) details = dict(coins=coins, info=info) print(json.dumps(info, sort_keys=True, indent=4)) with open(os.path.join(coin_info.DEFS_DIR, "coins_details.json"), "w") as f: json.dump(details, f, sort_keys=True, indent=4) + + +if __name__ == "__main__": + main() From 334c5eed32bc768cfb8ba6887fbea3438656cad0 Mon Sep 17 00:00:00 2001 From: matejcik Date: Fri, 24 Aug 2018 17:11:00 +0200 Subject: [PATCH 527/767] support: fix duplicate checking bug, update data after merge --- defs/coins_details.json | 21 ++++++++++++++++++--- defs/support.json | 2 ++ tools/support.py | 2 +- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/defs/coins_details.json b/defs/coins_details.json index b04182da8..e768e856e 100644 --- a/defs/coins_details.json +++ b/defs/coins_details.json @@ -12641,6 +12641,21 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "eth:ATH": { + "links": { + "Homepage": "https://atheios.com" + }, + "marketcap_usd": 0, + "name": "Atheios", + "shortcut": "ATH", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "coin", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "eth:CLO": { "links": { "Homepage": "https://callisto.network" @@ -13116,8 +13131,8 @@ "marketcap_usd": 168706565383, "t1_coins": 635, "t2_coins": 634, - "total_marketcap_usd": 210960655566, - "updated_at": 1535122394, - "updated_at_readable": "Fri Aug 24 16:53:14 2018" + "total_marketcap_usd": 210612300355, + "updated_at": 1535123434, + "updated_at_readable": "Fri Aug 24 17:10:34 2018" } } \ No newline at end of file diff --git a/defs/support.json b/defs/support.json index 8f3ac2b30..d961fce26 100644 --- a/defs/support.json +++ b/defs/support.json @@ -678,6 +678,7 @@ "erc20:ubq:QWARK": "1.6.2", "erc20:ubq:RICKS": "1.6.2", "eth:AKA": "soon", + "eth:ATH": "soon", "eth:CLO": "1.6.2", "eth:EGEM": "1.6.2", "eth:ELLA": "1.6.2", @@ -1487,6 +1488,7 @@ "erc20:ubq:QWARK": "2.0.7", "erc20:ubq:RICKS": "2.0.7", "eth:AKA": "soon", + "eth:ATH": "soon", "eth:CLO": "2.0.7", "eth:EGEM": "2.0.7", "eth:ELLA": "2.0.7", diff --git a/tools/support.py b/tools/support.py index 0d0ab5390..969b5d5e6 100755 --- a/tools/support.py +++ b/tools/support.py @@ -129,7 +129,7 @@ def find_unsupported_coins(coins_dict): result[device] = [] for key, coin in coins_dict.items(): - if coin.get("duplicate"): + if coin.get("duplicate") and coin_info.is_token(coin): continue if key not in support_set: result[device].append(coin) From 65619112a012d6636d16f3dc822d3f0c31bfe79c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Matejov?= Date: Mon, 27 Aug 2018 15:39:29 +0200 Subject: [PATCH 528/767] tezos: branch in sign_tx is not b58 encoded (#198) --- protob/messages-tezos.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protob/messages-tezos.proto b/protob/messages-tezos.proto index 2f954d4f0..4f3791a05 100644 --- a/protob/messages-tezos.proto +++ b/protob/messages-tezos.proto @@ -61,7 +61,7 @@ message TezosPublicKey { message TezosSignTx { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node optional TezosCurveType curve = 2 [default=Ed25519]; // Curve to use in trezor - optional bytes branch = 3; // b58 encoded branch with prefix + optional bytes branch = 3; optional TezosRevealOp reveal = 4; // Tezos reveal operation (may be bundled with other op) optional TezosTransactionOp transaction = 5; // Tezos transaction operation From 4c36e33425513402239530d24d093c47c162f97d Mon Sep 17 00:00:00 2001 From: matejcik Date: Mon, 27 Aug 2018 20:07:02 +0200 Subject: [PATCH 529/767] tools: make duplicate detection case-insensitive --- defs/support.json | 16 ++++++++-------- tools/coin_info.py | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/defs/support.json b/defs/support.json index d961fce26..0358937da 100644 --- a/defs/support.json +++ b/defs/support.json @@ -244,8 +244,6 @@ "erc20:eth:DTH": "1.6.2", "erc20:eth:DTR": "1.6.2", "erc20:eth:DTT": "1.6.2", - "erc20:eth:DTX": "1.6.2", - "erc20:eth:DTx": "1.6.2", "erc20:eth:Devcon2 Token": "1.6.2", "erc20:eth:EAGLE": "1.6.2", "erc20:eth:ECN": "1.6.2", @@ -624,7 +622,6 @@ "erc20:eth:WCT": "1.6.2", "erc20:eth:WETH": "1.6.2", "erc20:eth:WHEN": "1.6.2", - "erc20:eth:WIC": "1.6.2", "erc20:eth:WILD": "1.6.2", "erc20:eth:WINGS": "1.6.2", "erc20:eth:WORK": "1.6.2", @@ -635,7 +632,6 @@ "erc20:eth:WYS": "1.6.2", "erc20:eth:WYV": "1.6.2", "erc20:eth:WaBi": "1.6.2", - "erc20:eth:WiC": "1.6.2", "erc20:eth:X8X": "1.6.2", "erc20:eth:XAUR": "1.6.2", "erc20:eth:XBP": "1.6.2", @@ -735,6 +731,8 @@ "erc20:eth:DROP (dropil)": "(AUTO) duplicate key", "erc20:eth:DRP:0": "(AUTO) duplicate key", "erc20:eth:DRP:1": "(AUTO) duplicate key", + "erc20:eth:DTX": "(AUTO) duplicate key", + "erc20:eth:DTx": "(AUTO) duplicate key", "erc20:eth:DUBI:0": "(AUTO) duplicate key", "erc20:eth:DUBI:1": "(AUTO) duplicate key", "erc20:eth:EDU:0": "(AUTO) duplicate key", @@ -800,8 +798,10 @@ "erc20:eth:VIBEX:1": "(AUTO) duplicate key", "erc20:eth:WHO:0": "(AUTO) duplicate key", "erc20:eth:WHO:1": "(AUTO) duplicate key", + "erc20:eth:WIC": "(AUTO) duplicate key", "erc20:eth:WOLK:0": "(AUTO) duplicate key", "erc20:eth:WOLK:1": "(AUTO) duplicate key", + "erc20:eth:WiC": "(AUTO) duplicate key", "erc20:eth:YEED:0": "(AUTO) duplicate key", "erc20:eth:YEED:1": "(AUTO) duplicate key", "erc20:eth:ZRX": "(AUTO) duplicate key", @@ -1054,8 +1054,6 @@ "erc20:eth:DTH": "2.0.7", "erc20:eth:DTR": "2.0.7", "erc20:eth:DTT": "2.0.7", - "erc20:eth:DTX": "2.0.7", - "erc20:eth:DTx": "2.0.7", "erc20:eth:Devcon2 Token": "2.0.7", "erc20:eth:EAGLE": "2.0.7", "erc20:eth:ECN": "2.0.7", @@ -1434,7 +1432,6 @@ "erc20:eth:WCT": "2.0.7", "erc20:eth:WETH": "2.0.7", "erc20:eth:WHEN": "2.0.7", - "erc20:eth:WIC": "2.0.7", "erc20:eth:WILD": "2.0.7", "erc20:eth:WINGS": "2.0.7", "erc20:eth:WORK": "2.0.7", @@ -1445,7 +1442,6 @@ "erc20:eth:WYS": "2.0.7", "erc20:eth:WYV": "2.0.7", "erc20:eth:WaBi": "2.0.7", - "erc20:eth:WiC": "2.0.7", "erc20:eth:X8X": "2.0.7", "erc20:eth:XAUR": "2.0.7", "erc20:eth:XBP": "2.0.7", @@ -1551,6 +1547,8 @@ "erc20:eth:DROP (dropil)": "(AUTO) duplicate key", "erc20:eth:DRP:0": "(AUTO) duplicate key", "erc20:eth:DRP:1": "(AUTO) duplicate key", + "erc20:eth:DTX": "(AUTO) duplicate key", + "erc20:eth:DTx": "(AUTO) duplicate key", "erc20:eth:DUBI:0": "(AUTO) duplicate key", "erc20:eth:DUBI:1": "(AUTO) duplicate key", "erc20:eth:EDU:0": "(AUTO) duplicate key", @@ -1616,8 +1614,10 @@ "erc20:eth:VIBEX:1": "(AUTO) duplicate key", "erc20:eth:WHO:0": "(AUTO) duplicate key", "erc20:eth:WHO:1": "(AUTO) duplicate key", + "erc20:eth:WIC": "(AUTO) duplicate key", "erc20:eth:WOLK:0": "(AUTO) duplicate key", "erc20:eth:WOLK:1": "(AUTO) duplicate key", + "erc20:eth:WiC": "(AUTO) duplicate key", "erc20:eth:YEED:0": "(AUTO) duplicate key", "erc20:eth:YEED:1": "(AUTO) duplicate key", "erc20:eth:ZRX": "(AUTO) duplicate key", diff --git a/tools/coin_info.py b/tools/coin_info.py index 4c4617ba4..c32a2df42 100755 --- a/tools/coin_info.py +++ b/tools/coin_info.py @@ -387,7 +387,7 @@ def mark_duplicate_shortcuts(coins): return {k: v for k, v in dups.items() if len(v) > 1} for coin in coins: - symbol, _ = symbol_from_shortcut(coin["shortcut"]) + symbol, _ = symbol_from_shortcut(coin["shortcut"].lower()) dup_symbols[symbol].append(coin) dup_keys[coin["key"]].append(coin) From c40260a20b532109b2cd21676d0abc73cc7be92f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Du=C5=A1an=20Klinec?= Date: Tue, 28 Aug 2018 13:33:24 +0200 Subject: [PATCH 530/767] xmr: range sig protocol offloading (#199) - support for bulletproofs > 2 --- protob/messages-monero.proto | 74 ++++++++++++++++++++++++++++++++---- protob/messages.proto | 2 + 2 files changed, 68 insertions(+), 8 deletions(-) diff --git a/protob/messages-monero.proto b/protob/messages-monero.proto index f41fe9e14..067c48ffd 100644 --- a/protob/messages-monero.proto +++ b/protob/messages-monero.proto @@ -52,6 +52,24 @@ message MoneroTransactionDestinationEntry { } } +/** + * Range sig parameters / data. + */ +message MoneroTransactionRsigData { + optional uint32 version = 1; + optional uint32 rsig_type = 2; + optional uint32 offload_type = 3; + repeated uint64 grouping = 4; // aggregation scheme for BP + + optional uint32 step = 5; + optional uint64 operation = 6; + optional bytes seed = 7; // determ. mask seed + optional bytes mask = 8; // mask vector + optional bytes amount = 9; // amount vector + optional bytes rsig = 10; // range sig, full or partial + repeated MoneroTransactionDestinationEntry outputs = 11; +} + /** * Request: Ask device for public address derived from seed and address_n * @start @@ -121,7 +139,7 @@ message MoneroTransactionInitRequest { optional bool is_multisig = 11; optional bytes exp_tx_prefix_hash = 12; repeated bytes use_tx_keys = 13; - optional bool is_bulletproof = 14; + optional MoneroTransactionRsigData rsig_data = 14; } } @@ -136,6 +154,7 @@ message MoneroTransactionInitAck { repeated bytes hmacs = 4; optional bool many_inputs = 5; optional bool many_outputs = 6; + optional MoneroTransactionRsigData rsig_data = 7; } /** @@ -194,6 +213,22 @@ message MoneroTransactionInputViniRequest { message MoneroTransactionInputViniAck { } +/** + * Request: Sub request of MoneroTransactionSign. Sent after all inputs have been sent. Useful for rangeisg offloading. + * @next MoneroTransactionAllInputsSetAck + */ +message MoneroTransactionAllInputsSetRequest { + optional MoneroTransactionRsigData rsig_data = 1; +} + +/** + * Response: Response to after all inputs have been set. + * @next MoneroTransactionSignRequest + */ +message MoneroTransactionAllInputsSetAck { + optional MoneroTransactionRsigData rsig_data = 1; +} + /** * Request: Sub request of MoneroTransactionSign. Sends one transaction destination to device (HMACed) * @next MoneroTransactionSetOutputAck @@ -201,6 +236,7 @@ message MoneroTransactionInputViniAck { message MoneroTransactionSetOutputRequest { optional MoneroTransactionDestinationEntry dst_entr = 1; optional bytes dst_entr_hmac = 2; + optional MoneroTransactionRsigData rsig_data = 3; } /** @@ -210,16 +246,33 @@ message MoneroTransactionSetOutputRequest { message MoneroTransactionSetOutputAck { optional bytes tx_out = 1; // xmrtypes.TxOut optional bytes vouti_hmac = 2; - optional bytes rsig = 3; // byte-encoded range signature + optional MoneroTransactionRsigData rsig_data = 3; optional bytes out_pk = 4; optional bytes ecdh_info = 5; } +/** + * Request: Sub request of MoneroTransactionSign. Rangesig offloading roundtrips. + * @next MoneroTransactionAllInputsSetAck + */ +message MoneroTransactionRangeSigRequest { + optional MoneroTransactionRsigData rsig_data = 1; +} + +/** + * Response: Response to rangesig offloading request + * @next MoneroTransactionSignRequest + */ +message MoneroTransactionRangeSigAck { + optional MoneroTransactionRsigData rsig_data = 1; +} + /** * Request: Sub request of MoneroTransactionSign. Sent after all outputs are sent. * @next MoneroTransactionAllOutSetAck */ message MoneroTransactionAllOutSetRequest { + optional MoneroTransactionRsigData rsig_data = 1; } /** @@ -229,7 +282,8 @@ message MoneroTransactionAllOutSetRequest { message MoneroTransactionAllOutSetAck { optional bytes extra = 1; optional bytes tx_prefix_hash = 2; - optional MoneroRingCtSig rv = 3; // xmrtypes.RctSig + optional MoneroTransactionRsigData rsig_data = 3; + optional MoneroRingCtSig rv = 4; // xmrtypes.RctSig /* * Structure represents initial fields of the Monero RCT signature */ @@ -302,7 +356,9 @@ message MoneroTransactionFinalAck { * @wrap MoneroTransactionSetInputRequest * @wrap MoneroTransactionInputsPermutationRequest * @wrap MoneroTransactionInputViniRequest + * @wrap MoneroTransactionAllInputsSetRequest * @wrap MoneroTransactionSetOutputRequest + * @wrap MoneroTransactionRangeSigRequest * @wrap MoneroTransactionAllOutSetRequest * @wrap MoneroTransactionMlsagDoneRequest * @wrap MoneroTransactionSignInputRequest @@ -313,11 +369,13 @@ message MoneroTransactionSignRequest { optional MoneroTransactionSetInputRequest set_input = 2; optional MoneroTransactionInputsPermutationRequest input_permutation = 3; optional MoneroTransactionInputViniRequest input_vini = 4; - optional MoneroTransactionSetOutputRequest set_output = 5; - optional MoneroTransactionAllOutSetRequest all_out_set = 6; - optional MoneroTransactionMlsagDoneRequest mlsag_done = 7; - optional MoneroTransactionSignInputRequest sign_input = 8; - optional MoneroTransactionFinalRequest final_msg = 9; + optional MoneroTransactionAllInputsSetRequest all_in_set = 5; + optional MoneroTransactionSetOutputRequest set_output = 6; + optional MoneroTransactionRangeSigRequest rsig = 7; + optional MoneroTransactionAllOutSetRequest all_out_set = 8; + optional MoneroTransactionMlsagDoneRequest mlsag_done = 9; + optional MoneroTransactionSignInputRequest sign_input = 10; + optional MoneroTransactionFinalRequest final_msg = 11; } /** diff --git a/protob/messages.proto b/protob/messages.proto index c331b114b..7c57f3d5e 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -198,7 +198,9 @@ enum MessageType { MessageType_MoneroTransactionSetInputAck = 503 [(wire_out) = true]; MessageType_MoneroTransactionInputsPermutationAck = 504 [(wire_out) = true]; MessageType_MoneroTransactionInputViniAck = 505 [(wire_out) = true]; + MessageType_MoneroTransactionAllInputsSetAck = 513 [(wire_out) = true]; MessageType_MoneroTransactionSetOutputAck = 506 [(wire_out) = true]; + MessageType_MoneroTransactionRangeSigAck = 514 [(wire_out) = true]; MessageType_MoneroTransactionAllOutSetAck = 507 [(wire_out) = true]; MessageType_MoneroTransactionMlsagDoneAck = 508 [(wire_out) = true]; MessageType_MoneroTransactionSignInputAck = 509 [(wire_out) = true]; From e52ec75a910b881caeb16af708d8872501f1330d Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 28 Aug 2018 13:53:05 +0200 Subject: [PATCH 531/767] defs/misc: add slip44 to misc.json --- defs/misc/misc.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/defs/misc/misc.json b/defs/misc/misc.json index e9783df0a..d4cfbb1a9 100644 --- a/defs/misc/misc.json +++ b/defs/misc/misc.json @@ -2,6 +2,7 @@ { "name": "Lisk", "shortcut": "LSK", + "slip44": 134, "links": { "Homepage": "https://lisk.io/" } @@ -9,6 +10,7 @@ { "name": "Stellar", "notes": "In development", + "slip44": 148, "shortcut": "XLM", "links": { "Homepage": "https://www.stellar.org" @@ -17,6 +19,7 @@ { "name": "Monero", "shortcut": "XMR", + "slip44": 128, "notes": "In development", "links": { "Homepage": "https://getmonero.org" @@ -25,6 +28,7 @@ { "name": "Ripple", "shortcut": "XRP", + "slip44": 144, "notes": "In development", "links": { "Homepage": "https://ripple.com" @@ -33,6 +37,7 @@ { "name": "Cardano", "shortcut": "ADA", + "slip44": 1815, "links": { "Homepage": "https://www.cardano.org" } @@ -40,6 +45,8 @@ { "name": "Tezos", "shortcut": "XTZ", + "slip44": 1729, + "notes": "In development", "links": { "Homepage": "https://tezos.com" } @@ -47,6 +54,8 @@ { "name": "Ontology", "shortcut": "ONT", + "slip44": 1024, + "notes": "In development", "links": { "Homepage": "https://ont.io" } From 4b947e3a22000b3b08ae313f511aab5748ba701e Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 28 Aug 2018 13:56:11 +0200 Subject: [PATCH 532/767] defs/ethereum: sort networks.json by chain_id --- defs/ethereum/networks.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/defs/ethereum/networks.json b/defs/ethereum/networks.json index 031872ea9..c20791e37 100644 --- a/defs/ethereum/networks.json +++ b/defs/ethereum/networks.json @@ -119,6 +119,14 @@ "rskip60": false, "url": "https://callisto.network" }, + { + "chain_id": 1620, + "slip44": 1620, + "shortcut": "ATH", + "name": "Atheios", + "rskip60": false, + "url": "https://atheios.com" + }, { "chain_id": 1987, "slip44": 1987, @@ -166,13 +174,5 @@ "name": "Pirl", "rskip60": false, "url": "https://pirl.io" - }, - { - "chain_id": 1620, - "slip44": 1620, - "shortcut": "ATH", - "name": "Atheios", - "rskip60": false, - "url": "https://atheios.com" } ] From 441b67ed7cb3012731fd33322010de724f589108 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 28 Aug 2018 14:14:31 +0200 Subject: [PATCH 533/767] add icons for altcoins/networks --- defs/ethereum/aka.png | Bin 0 -> 9082 bytes defs/ethereum/ath.png | Bin 0 -> 10668 bytes defs/ethereum/clo.png | Bin 0 -> 5450 bytes defs/ethereum/egem.png | Bin 0 -> 3317 bytes defs/ethereum/ella.png | Bin 0 -> 5468 bytes defs/ethereum/eosc.png | Bin 0 -> 6560 bytes defs/ethereum/esn.png | Bin 0 -> 14079 bytes defs/ethereum/etc.png | Bin 0 -> 3906 bytes defs/ethereum/eth.png | Bin 0 -> 3465 bytes defs/ethereum/etho.png | Bin 0 -> 10110 bytes defs/ethereum/etsc.png | Bin 0 -> 5422 bytes defs/ethereum/exp.png | Bin 0 -> 15623 bytes defs/ethereum/go.png | Bin 0 -> 4402 bytes defs/ethereum/music.png | Bin 0 -> 4812 bytes defs/ethereum/pirl.png | Bin 0 -> 4238 bytes defs/ethereum/rsk.png | Bin 0 -> 7842 bytes defs/ethereum/tetc.png | Bin 0 -> 7365 bytes defs/ethereum/tkov.png | Bin 0 -> 3465 bytes defs/ethereum/trin.png | Bin 0 -> 3465 bytes defs/ethereum/trop.png | Bin 0 -> 3465 bytes defs/ethereum/trsk.png | Bin 0 -> 7743 bytes defs/ethereum/ubq.png | Bin 0 -> 2910 bytes defs/misc/ada.png | Bin 0 -> 6050 bytes defs/misc/lsk.png | Bin 0 -> 4999 bytes defs/misc/ont.png | Bin 0 -> 4255 bytes defs/misc/xlm.png | Bin 0 -> 5167 bytes defs/misc/xmr.png | Bin 0 -> 4016 bytes defs/misc/xrp.png | Bin 0 -> 2626 bytes defs/misc/xtz.png | Bin 0 -> 3859 bytes 29 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 defs/ethereum/aka.png create mode 100644 defs/ethereum/ath.png create mode 100644 defs/ethereum/clo.png create mode 100644 defs/ethereum/egem.png create mode 100644 defs/ethereum/ella.png create mode 100644 defs/ethereum/eosc.png create mode 100644 defs/ethereum/esn.png create mode 100644 defs/ethereum/etc.png create mode 100644 defs/ethereum/eth.png create mode 100644 defs/ethereum/etho.png create mode 100644 defs/ethereum/etsc.png create mode 100644 defs/ethereum/exp.png create mode 100644 defs/ethereum/go.png create mode 100644 defs/ethereum/music.png create mode 100644 defs/ethereum/pirl.png create mode 100644 defs/ethereum/rsk.png create mode 100644 defs/ethereum/tetc.png create mode 100644 defs/ethereum/tkov.png create mode 100644 defs/ethereum/trin.png create mode 100644 defs/ethereum/trop.png create mode 100644 defs/ethereum/trsk.png create mode 100644 defs/ethereum/ubq.png create mode 100644 defs/misc/ada.png create mode 100644 defs/misc/lsk.png create mode 100644 defs/misc/ont.png create mode 100644 defs/misc/xlm.png create mode 100644 defs/misc/xmr.png create mode 100644 defs/misc/xrp.png create mode 100644 defs/misc/xtz.png diff --git a/defs/ethereum/aka.png b/defs/ethereum/aka.png new file mode 100644 index 0000000000000000000000000000000000000000..842ced7da9a2d217a2a6c1a7a11e9169b5ea03cb GIT binary patch literal 9082 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 literal 0 HcmV?d00001 diff --git a/defs/ethereum/ath.png b/defs/ethereum/ath.png new file mode 100644 index 0000000000000000000000000000000000000000..f4c0fb5405d4e1254ab29abed97c8207126e3447 GIT binary patch literal 10668 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 U9r{}1X$ljdB=<(P0%jKWAHnTo5C8xG literal 0 HcmV?d00001 diff --git a/defs/ethereum/clo.png b/defs/ethereum/clo.png new file mode 100644 index 0000000000000000000000000000000000000000..679c94897762c6a5e2778f1e5c3cb34280265a76 GIT binary patch literal 5450 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 BNgx0K literal 0 HcmV?d00001 diff --git a/defs/ethereum/ella.png b/defs/ethereum/ella.png new file mode 100644 index 0000000000000000000000000000000000000000..54fed9370d1fc242faf9ee937a3cbc306bd6bcea GIT binary patch literal 5468 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 SSe79G0000;BwsN&n~&m4oStgI*Sm^{EuS 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 literal 0 HcmV?d00001 diff --git a/defs/ethereum/etc.png b/defs/ethereum/etc.png new file mode 100644 index 0000000000000000000000000000000000000000..a9df9f0a7c1c69620685a90517d5affc18c5e5b6 GIT binary patch literal 3906 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 literal 0 HcmV?d00001 diff --git a/defs/ethereum/eth.png b/defs/ethereum/eth.png new file mode 100644 index 0000000000000000000000000000000000000000..6b454d7451547662438cb120edf22206442f7777 GIT binary patch literal 3465 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 b%)OLS%3xayd2sNf&k3j~sLR*Nnuq-#;;Z-* literal 0 HcmV?d00001 diff --git a/defs/ethereum/etsc.png b/defs/ethereum/etsc.png new file mode 100644 index 0000000000000000000000000000000000000000..880e2c9d7f44006d82c95fee78e0bac7cde2b72c GIT binary patch literal 5422 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鶦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 literal 0 HcmV?d00001 diff --git a/defs/ethereum/music.png b/defs/ethereum/music.png new file mode 100644 index 0000000000000000000000000000000000000000..45bd1818ae7c92a1c1b793ebd075db564bca1dac GIT binary patch literal 4812 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 literal 0 HcmV?d00001 diff --git a/defs/ethereum/tetc.png b/defs/ethereum/tetc.png new file mode 100644 index 0000000000000000000000000000000000000000..f561edb7251b7ca9b3414072d5f366df6fe15ec7 GIT binary patch literal 7365 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 O2k2=VYLPJZvHt_`&++R3 literal 0 HcmV?d00001 diff --git a/defs/ethereum/tkov.png b/defs/ethereum/tkov.png new file mode 100644 index 0000000000000000000000000000000000000000..6b454d7451547662438cb120edf22206442f7777 GIT binary patch literal 3465 zcmX9=2|UzW8$PpOB8??WA!IF?F=LykX+~oWNknp^QkE{VWgCo{(O4?!B0gj-u4K#7 zVi{50%9V;FWT~uSWKEXuO!xfGoaH^w`@GM2{{Q*SB-q)Siwf@)1^|d!TF~s_%;0}8 zC^#+*rTl~w+LLNS1)wTfWbKRq+#`bQ%}qdghx`NpC}3ypU~26hu)4X4*U^E;aAdOB zPL7TMh#&!oiHVVvl*H-iu-I`r1VSu4i@O2`J$-#$Jw3R<;qfp9#+ghefk@=Th(wqI zkBGXuDk>^E+S(c#8W00JL032K3J0ce5)#yjL`aJ#5cc8t91surqhexN>??Q}#^Z?u z0tCP_7-F(numps$Ih^F=WEP9RWwP0DWU=C4u7QC8pG{vMlE6ZI#^32o2w=1MQkf9U zj%D$)pfDyY4hFTfv=}g%&4!@3xOkYj50>Lc;tUK8;S4*U?KdHx=yydJiG@V)f@;G9KxV57zqoH(8fb!^qrlZ z8NVe(MAD%WXIIzoh)8GxM2d@x!x1)EaPQu|P&p)IFqyGTCJu*#ahM__BcrFM2LZYU z2EVakR0lVZwn_r0X{ECqN=8*uxpp5rlzc{ER-F?h}GJ+ zPgz-+6QAgE$~7VBs+^o0)MR04X?yhOrGP*OM@N&xv@>VVkq;g6^zsf33pX-0mXel+ zm-Y4Yr$_3b)AQ$LaRYlOH9xz^rDMWqY`9wPkv4&HS>pBhG)LWmwR5$P z{|IN=t5lN4r0BM9MmA`^z0Hq$C2qVqdDW2Cyr1WNFQw~eyYbOLEBW-jZ}Zn%e2PAv z8afsqJ=^7~)4jA`?!mpRmYSuq<3s(owIVt?GBP%tuWOy~-}s`sKG9}1!Oq{hJ`+^r zOZk5GQsZgX@CE;0ccy+kJ6rf-t-5km1lPd^V2hn4jp`8gX*z35utWEb7qgKKnZ}_X ziYzJI479~ZRW!!zX*$4ZXMKNSSEl)FcOFtWq_8gJVpVOqqswynhnZhZw@-flDvHuQ zN8CX(O>w#CbiX!wxykT#j8O+9~fsTZ9QF!}dlOE)i>cr9i+ z^Y7v%r({y$0qPLO`-tH6wtKpLIp?<^sZNoNpH=2?RA-m#N@541e0?sZBIA3mwJr&@ zB=}8)ur(=mVlN7)-!8dx@hBddmp?#N>ZmJHQAIJ(LD{$`0wgism1;n33CeGjc*s*b z-hv1R-ke6V>UjEJQuzlcohWi}@BR(iBo_&8E1oOF62@F_dmz683Uj~hRbR=Ww~Tr# zQSNcY$KQk8Uy0kJD0@G9-NJ5hDM06m0p=xg^&L&|h3IFoJ|F`-)+>%~PxxW9N)pu7Y_m^g)l0eb5#S=#uTUMR@qv`qp-4dus6j~A;k~>$0 zC3w3zYcd2GtCjEVw_sf47dfkfK<;Y2J@To(zwQ220iJL6#bG*Tn|0}PJQ5?EIbZe{ zkPoY~XRo3ekLiyb(egX0?NlfPu)<>%YX49s>D=GpCd4&T415?K^y!cez}L3ddcgY= zeL*ln36s8ZBTvdjXbHic*Y9iB;ClR1@Od{P7*T@#Hy4}Z)lxDtw}{|!B-_&&d862( zqo}+)A3Tsua%$I(W-Pp=z$lXRHZlM7tT({uJ7roj9w{dU3t&uhy9K}&gOLA`c8Jv| z-8YVYQ&qo!XkS$3EccfQbxI~KZJgX{wF*RQ?^@=~a&OyBe(bAw;YQlHiDM>^gA0PL zM68>R6q{^DXe$d2hCTSTGH--wu+#0$&QYMb6dVObpW#95fv1epEAu zyzpv}W<*yNp@?5^Dx-?gMOCgfD?YXI@TUUzmGQoc&Eu~shed$qQ@IzpPRb5RSUI<1 zu}N+zeLQkw-Np6QKZW-Yn#h$Z?$&mWpxO{ORznIAQII%)_R(B7NX>uJnLN~L#FDTR zGAi9Z)_8|hF;pmUWBubD8nYt3$#a+|GN0g{hdyZ5|%G89tMbC+fofjNSuUTL*Giie7siM6a$^DJGlmJu1Uh zm}wd@U;K`BKTOEWs_^Vruxzh5pa7P6GrVGd(=v&)U5IzKr?z{^cfJ#nBpgIX0mG8b zpKp}!k`LsR+k1}O^JIaHD9#y~C`3r8j-zaVJV_qAg@bT=RWODl~7BDxz@lWKgl%i87hzh)je zQ8nx>Uq?+iixCE4n~pA*1z)m*-YBa4K<*R4DR8#pk4_|ca}`TV3*&c|pIjpYvRc6$9bho5o`<72SdZ8ZJpJFy4?Pk5H z9+MT`4h;&SXQu?l!CK zcVlE2d;U!ia2&E|Nb0#Q=T}xc`t@DH zh1o7Y7jx|Wo@^Oj(}w}+TElls*IZG@X4+KW-VtSl_{wKweaPQ$ybmeX_S|S{=SeT2 z1S6SRa3ePTatdkUx%VdMIrYh^EoI5T5$6NY0l!XuSeg^-Dl(!vqA>QaE$;Qb%pT`< zFb@Yy0enq)RYQyHdzBjDD1h~quWZQrH?DYgQlU%;>>#yYPdEGYQmkaJ;84_u#W!AC znlfKMLjr{K$Wm}dkcUP29RgMaO3D#hw+ zYgd(j>JUVR2v5$R&Fckj)hGP?ZXw1^ zyh}c_PAo75ff-4CyX3Z@JpL&SaY$fj!lYrV%r*FPc?k^|xVG1U-HCZ8EoUDj_{_Oy z&h!O%b$5NuUu;oWEV1sH&h~2Uc+pdDTi2A|;LlXk7&-s&ykkaE^Sa|7J1XcV-xb5r pX^SIxvyyh1^E+S(c#8W00JL032K3J0ce5)#yjL`aJ#5cc8t91surqhexN>??Q}#^Z?u z0tCP_7-F(numps$Ih^F=WEP9RWwP0DWU=C4u7QC8pG{vMlE6ZI#^32o2w=1MQkf9U zj%D$)pfDyY4hFTfv=}g%&4!@3xOkYj50>Lc;tUK8;S4*U?KdHx=yydJiG@V)f@;G9KxV57zqoH(8fb!^qrlZ z8NVe(MAD%WXIIzoh)8GxM2d@x!x1)EaPQu|P&p)IFqyGTCJu*#ahM__BcrFM2LZYU z2EVakR0lVZwn_r0X{ECqN=8*uxpp5rlzc{ER-F?h}GJ+ zPgz-+6QAgE$~7VBs+^o0)MR04X?yhOrGP*OM@N&xv@>VVkq;g6^zsf33pX-0mXel+ zm-Y4Yr$_3b)AQ$LaRYlOH9xz^rDMWqY`9wPkv4&HS>pBhG)LWmwR5$P z{|IN=t5lN4r0BM9MmA`^z0Hq$C2qVqdDW2Cyr1WNFQw~eyYbOLEBW-jZ}Zn%e2PAv z8afsqJ=^7~)4jA`?!mpRmYSuq<3s(owIVt?GBP%tuWOy~-}s`sKG9}1!Oq{hJ`+^r zOZk5GQsZgX@CE;0ccy+kJ6rf-t-5km1lPd^V2hn4jp`8gX*z35utWEb7qgKKnZ}_X ziYzJI479~ZRW!!zX*$4ZXMKNSSEl)FcOFtWq_8gJVpVOqqswynhnZhZw@-flDvHuQ zN8CX(O>w#CbiX!wxykT#j8O+9~fsTZ9QF!}dlOE)i>cr9i+ z^Y7v%r({y$0qPLO`-tH6wtKpLIp?<^sZNoNpH=2?RA-m#N@541e0?sZBIA3mwJr&@ zB=}8)ur(=mVlN7)-!8dx@hBddmp?#N>ZmJHQAIJ(LD{$`0wgism1;n33CeGjc*s*b z-hv1R-ke6V>UjEJQuzlcohWi}@BR(iBo_&8E1oOF62@F_dmz683Uj~hRbR=Ww~Tr# zQSNcY$KQk8Uy0kJD0@G9-NJ5hDM06m0p=xg^&L&|h3IFoJ|F`-)+>%~PxxW9N)pu7Y_m^g)l0eb5#S=#uTUMR@qv`qp-4dus6j~A;k~>$0 zC3w3zYcd2GtCjEVw_sf47dfkfK<;Y2J@To(zwQ220iJL6#bG*Tn|0}PJQ5?EIbZe{ zkPoY~XRo3ekLiyb(egX0?NlfPu)<>%YX49s>D=GpCd4&T415?K^y!cez}L3ddcgY= zeL*ln36s8ZBTvdjXbHic*Y9iB;ClR1@Od{P7*T@#Hy4}Z)lxDtw}{|!B-_&&d862( zqo}+)A3Tsua%$I(W-Pp=z$lXRHZlM7tT({uJ7roj9w{dU3t&uhy9K}&gOLA`c8Jv| z-8YVYQ&qo!XkS$3EccfQbxI~KZJgX{wF*RQ?^@=~a&OyBe(bAw;YQlHiDM>^gA0PL zM68>R6q{^DXe$d2hCTSTGH--wu+#0$&QYMb6dVObpW#95fv1epEAu zyzpv}W<*yNp@?5^Dx-?gMOCgfD?YXI@TUUzmGQoc&Eu~shed$qQ@IzpPRb5RSUI<1 zu}N+zeLQkw-Np6QKZW-Yn#h$Z?$&mWpxO{ORznIAQII%)_R(B7NX>uJnLN~L#FDTR zGAi9Z)_8|hF;pmUWBubD8nYt3$#a+|GN0g{hdyZ5|%G89tMbC+fofjNSuUTL*Giie7siM6a$^DJGlmJu1Uh zm}wd@U;K`BKTOEWs_^Vruxzh5pa7P6GrVGd(=v&)U5IzKr?z{^cfJ#nBpgIX0mG8b zpKp}!k`LsR+k1}O^JIaHD9#y~C`3r8j-zaVJV_qAg@bT=RWODl~7BDxz@lWKgl%i87hzh)je zQ8nx>Uq?+iixCE4n~pA*1z)m*-YBa4K<*R4DR8#pk4_|ca}`TV3*&c|pIjpYvRc6$9bho5o`<72SdZ8ZJpJFy4?Pk5H z9+MT`4h;&SXQu?l!CK zcVlE2d;U!ia2&E|Nb0#Q=T}xc`t@DH zh1o7Y7jx|Wo@^Oj(}w}+TElls*IZG@X4+KW-VtSl_{wKweaPQ$ybmeX_S|S{=SeT2 z1S6SRa3ePTatdkUx%VdMIrYh^EoI5T5$6NY0l!XuSeg^-Dl(!vqA>QaE$;Qb%pT`< zFb@Yy0enq)RYQyHdzBjDD1h~quWZQrH?DYgQlU%;>>#yYPdEGYQmkaJ;84_u#W!AC znlfKMLjr{K$Wm}dkcUP29RgMaO3D#hw+ zYgd(j>JUVR2v5$R&Fckj)hGP?ZXw1^ zyh}c_PAo75ff-4CyX3Z@JpL&SaY$fj!lYrV%r*FPc?k^|xVG1U-HCZ8EoUDj_{_Oy z&h!O%b$5NuUu;oWEV1sH&h~2Uc+pdDTi2A|;LlXk7&-s&ykkaE^Sa|7J1XcV-xb5r pX^SIxvyyh1^E+S(c#8W00JL032K3J0ce5)#yjL`aJ#5cc8t91surqhexN>??Q}#^Z?u z0tCP_7-F(numps$Ih^F=WEP9RWwP0DWU=C4u7QC8pG{vMlE6ZI#^32o2w=1MQkf9U zj%D$)pfDyY4hFTfv=}g%&4!@3xOkYj50>Lc;tUK8;S4*U?KdHx=yydJiG@V)f@;G9KxV57zqoH(8fb!^qrlZ z8NVe(MAD%WXIIzoh)8GxM2d@x!x1)EaPQu|P&p)IFqyGTCJu*#ahM__BcrFM2LZYU z2EVakR0lVZwn_r0X{ECqN=8*uxpp5rlzc{ER-F?h}GJ+ zPgz-+6QAgE$~7VBs+^o0)MR04X?yhOrGP*OM@N&xv@>VVkq;g6^zsf33pX-0mXel+ zm-Y4Yr$_3b)AQ$LaRYlOH9xz^rDMWqY`9wPkv4&HS>pBhG)LWmwR5$P z{|IN=t5lN4r0BM9MmA`^z0Hq$C2qVqdDW2Cyr1WNFQw~eyYbOLEBW-jZ}Zn%e2PAv z8afsqJ=^7~)4jA`?!mpRmYSuq<3s(owIVt?GBP%tuWOy~-}s`sKG9}1!Oq{hJ`+^r zOZk5GQsZgX@CE;0ccy+kJ6rf-t-5km1lPd^V2hn4jp`8gX*z35utWEb7qgKKnZ}_X ziYzJI479~ZRW!!zX*$4ZXMKNSSEl)FcOFtWq_8gJVpVOqqswynhnZhZw@-flDvHuQ zN8CX(O>w#CbiX!wxykT#j8O+9~fsTZ9QF!}dlOE)i>cr9i+ z^Y7v%r({y$0qPLO`-tH6wtKpLIp?<^sZNoNpH=2?RA-m#N@541e0?sZBIA3mwJr&@ zB=}8)ur(=mVlN7)-!8dx@hBddmp?#N>ZmJHQAIJ(LD{$`0wgism1;n33CeGjc*s*b z-hv1R-ke6V>UjEJQuzlcohWi}@BR(iBo_&8E1oOF62@F_dmz683Uj~hRbR=Ww~Tr# zQSNcY$KQk8Uy0kJD0@G9-NJ5hDM06m0p=xg^&L&|h3IFoJ|F`-)+>%~PxxW9N)pu7Y_m^g)l0eb5#S=#uTUMR@qv`qp-4dus6j~A;k~>$0 zC3w3zYcd2GtCjEVw_sf47dfkfK<;Y2J@To(zwQ220iJL6#bG*Tn|0}PJQ5?EIbZe{ zkPoY~XRo3ekLiyb(egX0?NlfPu)<>%YX49s>D=GpCd4&T415?K^y!cez}L3ddcgY= zeL*ln36s8ZBTvdjXbHic*Y9iB;ClR1@Od{P7*T@#Hy4}Z)lxDtw}{|!B-_&&d862( zqo}+)A3Tsua%$I(W-Pp=z$lXRHZlM7tT({uJ7roj9w{dU3t&uhy9K}&gOLA`c8Jv| z-8YVYQ&qo!XkS$3EccfQbxI~KZJgX{wF*RQ?^@=~a&OyBe(bAw;YQlHiDM>^gA0PL zM68>R6q{^DXe$d2hCTSTGH--wu+#0$&QYMb6dVObpW#95fv1epEAu zyzpv}W<*yNp@?5^Dx-?gMOCgfD?YXI@TUUzmGQoc&Eu~shed$qQ@IzpPRb5RSUI<1 zu}N+zeLQkw-Np6QKZW-Yn#h$Z?$&mWpxO{ORznIAQII%)_R(B7NX>uJnLN~L#FDTR zGAi9Z)_8|hF;pmUWBubD8nYt3$#a+|GN0g{hdyZ5|%G89tMbC+fofjNSuUTL*Giie7siM6a$^DJGlmJu1Uh zm}wd@U;K`BKTOEWs_^Vruxzh5pa7P6GrVGd(=v&)U5IzKr?z{^cfJ#nBpgIX0mG8b zpKp}!k`LsR+k1}O^JIaHD9#y~C`3r8j-zaVJV_qAg@bT=RWODl~7BDxz@lWKgl%i87hzh)je zQ8nx>Uq?+iixCE4n~pA*1z)m*-YBa4K<*R4DR8#pk4_|ca}`TV3*&c|pIjpYvRc6$9bho5o`<72SdZ8ZJpJFy4?Pk5H z9+MT`4h;&SXQu?l!CK zcVlE2d;U!ia2&E|Nb0#Q=T}xc`t@DH zh1o7Y7jx|Wo@^Oj(}w}+TElls*IZG@X4+KW-VtSl_{wKweaPQ$ybmeX_S|S{=SeT2 z1S6SRa3ePTatdkUx%VdMIrYh^EoI5T5$6NY0l!XuSeg^-Dl(!vqA>QaE$;Qb%pT`< zFb@Yy0enq)RYQyHdzBjDD1h~quWZQrH?DYgQlU%;>>#yYPdEGYQmkaJ;84_u#W!AC znlfKMLjr{K$Wm}dkcUP29RgMaO3D#hw+ zYgd(j>JUVR2v5$R&Fckj)hGP?ZXw1^ zyh}c_PAo75ff-4CyX3Z@JpL&SaY$fj!lYrV%r*FPc?k^|xVG1U-HCZ8EoUDj_{_Oy z&h!O%b$5NuUu;oWEV1sH&h~2Uc+pdDTi2A|;LlXk7&-s&ykkaE^Sa|7J1XcV-xb5r pX^SIxvyyh1Ay|=x#v}_|x4bC@GB~ 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 literal 0 HcmV?d00001 diff --git a/defs/misc/lsk.png b/defs/misc/lsk.png new file mode 100644 index 0000000000000000000000000000000000000000..cd82b6537ad8f46c3f49dff1f27aca166af8583f GIT binary patch literal 4999 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 literal 0 HcmV?d00001 diff --git a/defs/misc/ont.png b/defs/misc/ont.png new file mode 100644 index 0000000000000000000000000000000000000000..6ae125eb7d79ded54f62f2f6552a529681886aea GIT binary patch literal 4255 zcmai1`9D`Yg2>>uaSKHvGw!JF=a3e^~>P1D!yjBFM z1w4_t%}7%7IT{t0*$lqorqK}j?Y@D&$lMl0UaNtMI^gSz3(vy2yiz3oz*K%h7IYwT zni09p9@1ApBn<$NAWwFqR8BjJ+=C=FN%+!`IZep?HV_GtQ~ zis7kfP*`pYs)T|fHKR#Qx7~bji6tN*F6G02+6p^CEB-e&A&a}gEEJ=&(4~FSq-L4S z8f12ZOiCHDp#8BN24uM9>W$87z{MBoK6TZzw%2;$2L?Jx2pL#CF)}f+#>=5U^s9s< zDn+E@QY%ai^{}ZG^28hkVh$p|4cr}7)M<;k3IdQtotTnd&%ec5=W5fIM#B5|% zy{2aX=!tAnsa$M{;eg9EDI#VSm9swGd)2#M7 z4E>=Gyw`XY1ZJfF$Og<2TRZx|{NZi4S2u!_6+_?q`uaXnRnT#Kjwv4mO;8F?Q-~p9 zQ_D49_?j3PfIFg#yU}C{vak~c_6ey8Rn+xgD}rr9?!idbe5fZU5V|AiG4$jZ3T2>!F&tBm=xC6GTTDkM(38Wp zfAnWrs5+l^%BkCbPwm4uX4rNxn`}Hv8)Pcm@5wxsRMqspmZd&_DQlMmkr@ z7rgb!#Ns8hVWOA2ceixcqqt_K5b1R%gO@5(BIoXLtj7dTpb}FnA``PDraWr*gzp?V z9Njj{H^GZ#X1IR(BxFhmPG<^go$ipZ$BbuQvT>HjqBT?qan%teUHRVjjRZA~YRT&Q z9G|8z;_u*J&tvK=ZqhlKZ9SQ2>LvTr{=efymf=Mu0I*`U)RYZ8C&}NLo}C-#1?DUy zh#pntV+l`;x1=(7gxafp9$kZVr*deG1=lebk2%v1?#E^;|Xqoy=bS&OHxcu zd0*}G_qMghDDRxKEKPaJ%%GQl$0FzgHcLr+HiW-M!*32}cUoWs%`^KJJV7d~!U=rV zX-Z*B!t8g6ypa(!q4?n0KP#qj^JyEJzo{3lo#G~}=C`mWzNH>D281}ArFw>FUfDfy z|Fz!7>p-h?Fx%)m@$&NOGX5SdG(q+F>HqgJv)mc0H$DsB7HN>S4;w!91y9z$6&53% zt|--}?nH8#IkJsQJ>Xk;ZWp*jIeV-I_d*oDEXv*QvOy z+GASrsfkVHlMo zZHb_hRRUZEY_CB@wgiq_9NlK}cPKQKX?y93ytr*M_Pao+Ls9y}#R~a{HxLKT5p-|^ zTuQd-mP~k72%?^aP$`wewj!Qwv3j7p`6j(XElZf$^!um8k*{|T9G8Y*#NDxi>zOEe zRs%_l=@m7yX3F98rtHP%FySVQ*Q=*cE@@d_XMwhr#p|{e=@B;jKxny5`esx*=JtT( zMN=b(lUtVH8e6jLgH+*YGxH?1b6mQ+J3aVb27H{XSD?&Z(%7{oRin%o{l#T zR9W?gp)385Z;1*4AER5#=S$O^#IdUUyU-2>JozXGC+%;O5GyJG3wX^S?g=ro zTV62IRc;%PCHoTm4g{1nzOn+vw7)GM=3g0$Q#;u_M1cOB;Q| zGS8!1l|O3$#)p=lnl90!Slw^A6y+$YU?+IAm_&UFJUpqLmAM*GmMa(|a8CA9=8G68 z5ISajdz9I$&6~6WpU(OngMt?t=}h6?msAL3=r6Qn*(k0C^uDAdb{vK zF*MGCAV^szPQV~rQQj=N*IInCJ1FfF<^m9B_qGRG=lLMq&q!+ZmqZR6w%Pc3Z_m@Y z|G+jR(12BZjRJKEzRF5~+wjA>;%~6OjeHyD9>)Bkoep}M)96V`rIx( zGoJkTue6I)st25vnDVM^cb{MzuNG3nwIoE|()0%!5i1W{p}PqV+r4w&91e5WB5zmzl}RMBIWYm(kE@iX$C#;Cc3E&Y9)e z#LxZ^tL*qXte$Dv^Zw(Zk*5a)tr~k1aXiE@WA^e(q!?x>4$w%u%fC{iTiCy8yDuOk+Fx|D83OcFcUcvB@xkx&Wjr8iw;l(-Uo~fX z?bNUQSv=h4lzko?*tFwmz;&tW;W6wcAxgL{p&KE)S6aQBaNpIppCG?bd*9-!_`9q2 zp3~-d@tu^dr@eygUk9QSlv5k+9y&{j3PU3lutA#`$koDqeT8xLYm+WHbOy>$pC^}n z^!>|SjyWRw3tf(k#oquT;qRA;r@4|AJ_45$xL&S$L0a*_;oE5fefQI%;P#)wEL_Ek z`GkG?tB+m{L%pr!1XnJfl=kkeQx$-axe<<#gvwUr6kk9^#nIt<pW(Y_7@KltfZ=pd zhnv{nH3#zRpN3{Fwl8lgWO@Ou(nY;X@VM7B!_W9Zk|+BBtTmi!<*seAfUq->JJV@p zm><$2?8!?&jrjfh^NwD)q+(np=WHo|%e46%Y>tyWggu?kduq(MQp3LeckCjzhT80$s+>jIY20I|e5au*W%Rm`U+VM{*H7yZ$by97|lIEFT zLas4LZ!!hN?O$2de<*uZ(TA)bT)r3<+hZ3C>4)P404O#+!&yRq%zWOmA%nOWP+g^> zZm<}!Z+=sSZSFC4{;%mtLI%~ai5lkk()p$lGLt+H=ia|qQhdsjlPMUGo|a^J{cnLO zdBSgT`S^N$14cFo_mPLJxENh|QJF#d88eddgSX|ZrO2mO0VI1i9BabaWQ9>^93K-7 zV7*f*JF~DXETt-qn07V1p-XOSjqqlePQBi0B)ksT*w81hQrL%wscP4!=WQR=?@(Ni z0(+6HwKa82NW1>iz6ILaj6k?ejlx=U$k4{jrM!ftx&6b{x;x+ZWqAeTXMi!)acXLc%Dyq>>u6D{#Qm*W#HJ#jspI4IXzaPVA>-2{ zb{-jmycdptuYDi7>*7iyHWz=OTWum@b zEM)&w&)oguq^T=4@EOzgS=nDEG@m2t!M_@%7cAOJij$nDYq~nvDrXZlLSsBda|DM0Jy9ko&w HOaK1^raKJS literal 0 HcmV?d00001 diff --git a/defs/misc/xlm.png b/defs/misc/xlm.png new file mode 100644 index 0000000000000000000000000000000000000000..00b376ad408c599243bfa8a1c8aa4cf8e17cb023 GIT binary patch literal 5167 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 literal 0 HcmV?d00001 diff --git a/defs/misc/xmr.png b/defs/misc/xmr.png new file mode 100644 index 0000000000000000000000000000000000000000..137746268911fd34baeb24273a7c9e7b09c35278 GIT binary patch literal 4016 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 IBVyeD0`D0=oB#j- literal 0 HcmV?d00001 diff --git a/defs/misc/xrp.png b/defs/misc/xrp.png new file mode 100644 index 0000000000000000000000000000000000000000..5e27e68d3ff300cff64488917a5572ae22c94595 GIT binary patch literal 2626 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 literal 0 HcmV?d00001 diff --git a/defs/misc/xtz.png b/defs/misc/xtz.png new file mode 100644 index 0000000000000000000000000000000000000000..c4ec0c0376c064b1d4e66e5287febba5e8b69f3f GIT binary patch literal 3859 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 J$Y`gi{{iNbXh#45 literal 0 HcmV?d00001 From bc5530e50366b2134c56694b9f8b3bfc0ceaf67b Mon Sep 17 00:00:00 2001 From: matejcik Date: Tue, 28 Aug 2018 13:56:53 +0200 Subject: [PATCH 534/767] coin_info: when support status is unknown, only presume "soon" for tokens --- tools/coin_info.py | 11 +++++++---- tools/cointool.py | 11 ++++++----- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/tools/coin_info.py b/tools/coin_info.py index c32a2df42..9f78dd71d 100755 --- a/tools/coin_info.py +++ b/tools/coin_info.py @@ -304,15 +304,18 @@ def support_info_single(support_data, coin): dup = coin.get("duplicate") for device, values in support_data.items(): if dup and is_token(coin): - support_value = None + support_value = False elif key in values["unsupported"]: - support_value = None + support_value = False elif key in values["supported"]: support_value = values["supported"][key] elif device in MISSING_SUPPORT_MEANS_NO: - support_value = None - else: + support_value = False + elif is_token(coin): + # tokens are implicitly supported in next release support_value = "soon" + else: + support_value = None support_info[device] = support_value return support_info diff --git a/tools/cointool.py b/tools/cointool.py index 09e86e039..1d3fbd070 100755 --- a/tools/cointool.py +++ b/tools/cointool.py @@ -194,7 +194,7 @@ def check_btc(coins): coin_strings.append(prefix + hl) return ", ".join(coin_strings) - def print_collision_buckets(buckets, prefix): + def print_collision_buckets(buckets, prefix, maxlevel=logging.ERROR): """Intelligently print collision buckets. For each bucket, if there are any collision with a mainnet, print it. @@ -210,7 +210,7 @@ def check_btc(coins): for coin in mainnets: if coin["name"] == "Bitcoin": have_bitcoin = True - if all(v is None for k,v in support_infos[coin["key"]].items()): + if all(v is False for k, v in support_infos[coin["key"]].items()): coin["unsupported"] = True supported_mainnets = [c for c in mainnets if not c.get("unsupported")] @@ -219,7 +219,7 @@ def check_btc(coins): if len(mainnets) > 1: if have_bitcoin and len(supported_networks) > 1: # ANY collision with Bitcoin is bad - level = logging.ERROR + level = maxlevel failed = True elif len(supported_mainnets) > 1: # collision between supported networks is still pretty bad @@ -239,7 +239,7 @@ def check_btc(coins): # only check address_type on coins that don't use cashaddr nocashaddr = [coin for coin in coins if not coin.get("cashaddr_prefix")] - + print("Checking address_type collisions...") address_type = find_address_collisions(nocashaddr, "address_type") if print_collision_buckets(address_type, "address type"): @@ -248,7 +248,7 @@ def check_btc(coins): print("Checking address_type_p2sh collisions...") address_type_p2sh = find_address_collisions(nocashaddr, "address_type_p2sh") # we ignore failed checks on P2SH, because reasons - print_collision_buckets(address_type_p2sh, "address type") + print_collision_buckets(address_type_p2sh, "address type", logging.WARNING) return check_passed @@ -263,6 +263,7 @@ def check_dups(buckets, print_at_level=logging.ERROR): If the collision includes one non-token, it's INFO. If the collision includes more than one non-token, it's ERROR and printed always. """ + def coin_str(coin): """Colorize coins. Tokens are cyan, nontokens are red. Coins that are NOT marked duplicate get a green asterisk. From a70d4012c7ccc61ae9e28b02f1da5d0d43b65ec9 Mon Sep 17 00:00:00 2001 From: matejcik Date: Tue, 28 Aug 2018 13:58:25 +0200 Subject: [PATCH 535/767] support: explicitly unsupport Ontology on T1 --- defs/support.json | 1 + 1 file changed, 1 insertion(+) diff --git a/defs/support.json b/defs/support.json index 0358937da..166b5c48c 100644 --- a/defs/support.json +++ b/defs/support.json @@ -819,6 +819,7 @@ "erc20:rop:NONE": "(AUTO) duplicate key", "misc:ADA": "not implemented on T1", "misc:LSK": "not implemented on T1", + "misc:ONT": "not planned on T1", "misc:XMR": "not implemented on T1", "misc:XRP": "not implemented on T1", "misc:XTZ": "not implemented on T1" From 5afe3500d449cc9306853119ca4711f33cafb297 Mon Sep 17 00:00:00 2001 From: matejcik Date: Tue, 28 Aug 2018 15:01:48 +0200 Subject: [PATCH 536/767] coins_details: hide coins that are not supported on either device also better logging and fixed a cache handling bug --- tools/coins_details.py | 46 +++++++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/tools/coins_details.py b/tools/coins_details.py index c824605c7..46bf8d230 100755 --- a/tools/coins_details.py +++ b/tools/coins_details.py @@ -50,6 +50,8 @@ def coinmarketcap_init(api_key, refresh=None): api_key, params={"limit": 5000, "convert": "USD"}, ) + with open(COINMAKETCAP_CACHE, "w") as f: + json.dump(coinmarketcap_data, f) except Exception as e: raise RuntimeError("market cap data unavailable") from e @@ -62,9 +64,6 @@ def coinmarketcap_init(api_key, refresh=None): MARKET_CAPS = coin_data - with open(COINMAKETCAP_CACHE, "w") as f: - json.dump(coinmarketcap_data, f) - return coin_data @@ -232,42 +231,45 @@ def check_missing_data(coins): hide = False if "Homepage" not in coin.get("links", {}): - print("%s: Missing homepage" % k) + level = logging.WARNING + if k.startswith("erc20:"): + level = logging.INFO + LOG.log(level, f"{k}: Missing homepage") hide = True if coin["t1_enabled"] not in ALLOWED_SUPPORT_STATUS: - print("%s: Unknown t1_enabled" % k) + LOG.warning(f"{k}: Unknown t1_enabled") hide = True if coin["t2_enabled"] not in ALLOWED_SUPPORT_STATUS: - print("%s: Unknown t2_enabled" % k) + LOG.warning(f"{k}: Unknown t2_enabled") hide = True if ( "Trezor" in coin.get("wallet", {}) and coin["wallet"]["Trezor"] != "https://wallet.trezor.io" ): - print("%s: Strange URL for Trezor Wallet" % k) + LOG.warning(f"{k}: Strange URL for Trezor Wallet") + hide = True + + if coin["t1_enabled"] == "no" and coin["t2_enabled"] == "no": + LOG.info(f"{k}: Coin not enabled on either device") hide = True if len(coin.get("wallet", {})) == 0: - print("%s: Missing wallet" % k) + LOG.debug(f"{k}: Missing wallet") if "Testnet" in coin["name"]: - print("%s: Hiding testnet" % k) + LOG.debug(f"{k}: Hiding testnet") hide = True - if hide: - if coin.get("hidden") != 1: - print("%s: HIDING COIN!" % k) + if not hide and coin.get("hidden"): + LOG.info(f"{k}: Details are OK, but coin is still hidden") - # If any of important detail is missing, hide coin from list + if hide: coin["hidden"] = 1 - if not hide and coin.get("hidden"): - print("%s: Details are OK, but coin is still hidden" % k) - # summary of hidden coins for k, coin in coins.items(): - if coin.get("hidden") == 1: - print("%s: Coin is hidden" % k) + if coin.get("hidden"): + LOG.debug(f"{k}: Coin is hidden") def apply_overrides(coins): @@ -293,13 +295,15 @@ def apply_overrides(coins): @click.option("-r", "--refresh", "refresh", flag_value=True, help="Force refresh market cap info") @click.option("-R", "--no-refresh", "refresh", flag_value=False, help="Force use cached market cap info") @click.option("-A", "--api-key", required=True, envvar="COINMARKETCAP_API_KEY", help="Coinmarketcap API key") +@click.option("-v", "--verbose", is_flag=True, help="Display more info") # fmt: on -def main(refresh, api_key): +def main(refresh, api_key, verbose): # setup logging + log_level = logging.DEBUG if verbose else logging.WARNING root = logging.getLogger() - root.setLevel(logging.DEBUG) + root.setLevel(log_level) handler = logging.StreamHandler(sys.stdout) - handler.setLevel(logging.DEBUG) + handler.setLevel(log_level) root.addHandler(handler) coinmarketcap_init(api_key, refresh=refresh) From c1cea21bb559ea2b46c164361c3c9f5ecdeaa6d0 Mon Sep 17 00:00:00 2001 From: matejcik Date: Tue, 28 Aug 2018 16:30:59 +0200 Subject: [PATCH 537/767] defs: more data fixes (fill out some reasons, add duplicates that were not auto-detected, refresh coins_details.json) --- defs/coins_details.json | 550 +++++++++++++------------------ defs/coins_details.override.json | 13 + defs/duplicity_overrides.json | 4 +- defs/support.json | 6 +- 4 files changed, 247 insertions(+), 326 deletions(-) diff --git a/defs/coins_details.json b/defs/coins_details.json index e768e856e..462186cfe 100644 --- a/defs/coins_details.json +++ b/defs/coins_details.json @@ -5,7 +5,7 @@ "Github": "https://github.com/Bitcoin-ABC/bitcoin-abc", "Homepage": "https://www.bitcoincash.org" }, - "marketcap_usd": 9137924262, + "marketcap_usd": 9540922646, "name": "Bitcoin Cash", "shortcut": "BCH", "t1_enabled": "yes", @@ -21,7 +21,7 @@ "Github": "https://github.com/bitcoin/bitcoin", "Homepage": "https://bitcoin.org" }, - "marketcap_usd": 113093093543, + "marketcap_usd": 121293620116, "name": "Bitcoin", "shortcut": "BTC", "t1_enabled": "yes", @@ -37,7 +37,7 @@ "Github": "https://github.com/BTCPrivate/BitcoinPrivate", "Homepage": "https://btcprivate.org" }, - "marketcap_usd": 87763522, + "marketcap_usd": 89100207, "name": "Bitcoin Private", "shortcut": "BTCP", "t1_enabled": "yes", @@ -52,7 +52,7 @@ "Github": "https://github.com/BTCGPU/BTCGPU", "Homepage": "https://bitcoingold.org" }, - "marketcap_usd": 325590507, + "marketcap_usd": 367722513, "name": "Bitcoin Gold", "shortcut": "BTG", "t1_enabled": "yes", @@ -64,11 +64,12 @@ } }, "bitcoin:BTX": { + "hidden": 1, "links": { "Github": "https://github.com/LIMXTEC/BitCore", "Homepage": "https://bitcore.cc" }, - "marketcap_usd": 20100741, + "marketcap_usd": 19126617, "name": "Bitcore", "shortcut": "BTX", "t1_enabled": "no", @@ -77,11 +78,12 @@ "wallet": {} }, "bitcoin:CRW": { + "hidden": 1, "links": { "Github": "https://github.com/Crowndev/crowncoin", "Homepage": "https://crown.tech" }, - "marketcap_usd": 5188447, + "marketcap_usd": 4915524, "name": "Crown", "shortcut": "CRW", "t1_enabled": "no", @@ -94,7 +96,7 @@ "Github": "https://github.com/dashpay/dash", "Homepage": "https://www.dash.org" }, - "marketcap_usd": 1152175202, + "marketcap_usd": 1546622555, "name": "Dash", "shortcut": "DASH", "t1_enabled": "yes", @@ -110,7 +112,7 @@ "Github": "https://github.com/decred/dcrd", "Homepage": "https://www.decred.org" }, - "marketcap_usd": 302406692, + "marketcap_usd": 346181991, "name": "Decred", "shortcut": "DCR", "t1_enabled": "yes", @@ -123,7 +125,7 @@ "Github": "https://github.com/digibyte/digibyte", "Homepage": "https://digibyte.io" }, - "marketcap_usd": 271399167, + "marketcap_usd": 315174368, "name": "DigiByte", "shortcut": "DGB", "t1_enabled": "yes", @@ -149,7 +151,7 @@ "Github": "https://github.com/dogecoin/dogecoin", "Homepage": "http://dogecoin.com" }, - "marketcap_usd": 274733481, + "marketcap_usd": 292799488, "name": "Dogecoin", "shortcut": "DOGE", "t1_enabled": "yes", @@ -164,7 +166,7 @@ "Github": "https://github.com/fujicoin/fujicoin", "Homepage": "http://fujicoin.org" }, - "marketcap_usd": 525183, + "marketcap_usd": 567821, "name": "Fujicoin", "shortcut": "FJC", "t1_enabled": "yes", @@ -179,7 +181,7 @@ "Github": "https://github.com/flash-coin", "Homepage": "https://www.flashcoin.io" }, - "marketcap_usd": 5896831, + "marketcap_usd": 5570454, "name": "Flashcoin", "shortcut": "FLASH", "t1_enabled": "soon", @@ -192,7 +194,7 @@ "Github": "https://github.com/FeatherCoin/Feathercoin", "Homepage": "https://feathercoin.com" }, - "marketcap_usd": 11252804, + "marketcap_usd": 11265372, "name": "Feathercoin", "shortcut": "FTC", "t1_enabled": "soon", @@ -205,7 +207,7 @@ "Github": "https://github.com/Groestlcoin/groestlcoin", "Homepage": "https://www.groestlcoin.org" }, - "marketcap_usd": 43522762, + "marketcap_usd": 44412367, "name": "Groestlcoin", "shortcut": "GRS", "t1_enabled": "yes", @@ -233,7 +235,7 @@ "Github": "https://github.com/litecoin-project/litecoin", "Homepage": "https://litecoin.org" }, - "marketcap_usd": 3266595707, + "marketcap_usd": 3549898816, "name": "Litecoin", "shortcut": "LTC", "t1_enabled": "yes", @@ -249,7 +251,7 @@ "Github": "https://github.com/monacoinproject/monacoin", "Homepage": "https://monacoin.org" }, - "marketcap_usd": 95510557, + "marketcap_usd": 96966741, "name": "Monacoin", "shortcut": "MONA", "t1_enabled": "yes", @@ -277,7 +279,7 @@ "Github": "https://github.com/namecoin/namecoin-core", "Homepage": "https://namecoin.org" }, - "marketcap_usd": 20470325, + "marketcap_usd": 18394484, "name": "Namecoin", "shortcut": "NMC", "t1_enabled": "yes", @@ -292,7 +294,7 @@ "Github": "https://github.com/FundacionPesetacoin/PesetacoinCore", "Homepage": "http://pesetacoin.info" }, - "marketcap_usd": 2218954, + "marketcap_usd": 2533099, "name": "Pesetacoin", "shortcut": "PTC", "t1_enabled": "soon", @@ -305,7 +307,7 @@ "Github": "https://github.com/SmartCash/Core-Smart", "Homepage": "https://smarcash.cc" }, - "marketcap_usd": 47714944, + "marketcap_usd": 47117688, "name": "SmartCash", "shortcut": "SMART", "t1_enabled": "soon", @@ -400,11 +402,12 @@ "wallet": {} }, "bitcoin:TRC": { + "hidden": 1, "links": { "Github": "https://github.com/terracoin/terracoin", "Homepage": "https://terracoin.io" }, - "marketcap_usd": 1688794, + "marketcap_usd": 1713616, "name": "Terracoin", "shortcut": "TRC", "t1_enabled": "no", @@ -417,7 +420,7 @@ "Github": "https://github.com/viacoin", "Homepage": "https://viacoin.org" }, - "marketcap_usd": 20021749, + "marketcap_usd": 21732078, "name": "Viacoin", "shortcut": "VIA", "t1_enabled": "yes", @@ -432,7 +435,7 @@ "Github": "https://github.com/vertcoin-project/vertcoin-core", "Homepage": "https://vertcoin.org" }, - "marketcap_usd": 31642995, + "marketcap_usd": 35275938, "name": "Vertcoin", "shortcut": "VTC", "t1_enabled": "yes", @@ -447,7 +450,7 @@ "Github": "https://github.com/myriadcoin/myriadcoin", "Homepage": "https://www.myriadcoin.org" }, - "marketcap_usd": 4413486, + "marketcap_usd": 4628144, "name": "Myriad", "shortcut": "XMY", "t1_enabled": "soon", @@ -460,7 +463,7 @@ "Github": "https://github.com/zcoinofficial/zcoin", "Homepage": "https://zcoin.io" }, - "marketcap_usd": 69876887, + "marketcap_usd": 71877461, "name": "Zcoin", "shortcut": "XZC", "t1_enabled": "yes", @@ -476,7 +479,7 @@ "Github": "https://github.com/zcash/zcash", "Homepage": "https://z.cash" }, - "marketcap_usd": 618009538, + "marketcap_usd": 716702962, "name": "Zcash", "shortcut": "ZEC", "t1_enabled": "yes", @@ -491,7 +494,7 @@ "Github": "https://github.com/ZencashOfficial/zen", "Homepage": "https://zencash.com" }, - "marketcap_usd": 92278630, + "marketcap_usd": 90032910, "name": "Zencash", "shortcut": "ZEN", "t1_enabled": "no", @@ -696,7 +699,7 @@ "links": { "Homepage": "https://0xbitcoin.org/" }, - "marketcap_usd": 1282370, + "marketcap_usd": 1664862, "name": "0xBitcoin", "network": "eth", "shortcut": "0xBTC", @@ -713,7 +716,7 @@ "links": { "Homepage": "https://firstblood.io" }, - "marketcap_usd": 5842090, + "marketcap_usd": 6039926, "name": "FirstBlood", "network": "eth", "shortcut": "1ST", @@ -849,7 +852,7 @@ "links": { "Homepage": "http://accelerator.network" }, - "marketcap_usd": 103709, + "marketcap_usd": 156507, "name": "Accelerator Network", "network": "eth", "shortcut": "ACC", @@ -884,7 +887,7 @@ "Github": "https://github.com/aditus", "Homepage": "https://aditus.net" }, - "marketcap_usd": 632365, + "marketcap_usd": 534246, "name": "Aditus", "network": "eth", "shortcut": "ADI", @@ -919,7 +922,7 @@ "links": { "Homepage": "https://adshares.net" }, - "marketcap_usd": 2049749, + "marketcap_usd": 1989554, "name": "AdShares", "network": "eth", "shortcut": "ADST", @@ -937,7 +940,7 @@ "Github": "https://github.com/adchain", "Homepage": "https://adtoken.com" }, - "marketcap_usd": 8188525, + "marketcap_usd": 8960710, "name": "AdToken", "network": "eth", "shortcut": "ADT", @@ -973,7 +976,7 @@ "Github": "https://github.com/aeternity", "Homepage": "https://www.aeternity.com/" }, - "marketcap_usd": 232368933, + "marketcap_usd": 271191736, "name": "aeternity", "network": "eth", "shortcut": "AE", @@ -991,7 +994,7 @@ "Github": "https://github.com/singnet/singnet", "Homepage": "https://singularitynet.io" }, - "marketcap_usd": 24009832, + "marketcap_usd": 26775699, "name": "SingularityNET", "network": "eth", "shortcut": "AGI", @@ -1009,7 +1012,7 @@ "Github": "https://github.com/aionnetwork", "Homepage": "https://aion.network/" }, - "marketcap_usd": 108849984, + "marketcap_usd": 138544539, "name": "Aion", "network": "eth", "shortcut": "AION", @@ -1026,7 +1029,7 @@ "links": { "Homepage": "https://airtoken.com" }, - "marketcap_usd": 3300916, + "marketcap_usd": 2879571, "name": "AirToken", "network": "eth", "shortcut": "AIR", @@ -1044,7 +1047,7 @@ "Github": "https://github.com/AigangNetwork", "Homepage": "https://aigang.network/" }, - "marketcap_usd": 609344, + "marketcap_usd": 737898, "name": "Aigang", "network": "eth", "shortcut": "AIX", @@ -1097,7 +1100,7 @@ "Github": "https://github.com/AlisProject", "Homepage": "https://alismedia.jp" }, - "marketcap_usd": 2202941, + "marketcap_usd": 2550473, "name": "ALIS Token", "network": "eth", "shortcut": "ALIS", @@ -1168,7 +1171,7 @@ "Github": "https://github.com/amlt-by-coinfirm", "Homepage": "https://amlt.coinfirm.io/" }, - "marketcap_usd": 1861792, + "marketcap_usd": 1924373, "name": "AMLT", "network": "eth", "shortcut": "AMLT", @@ -1186,7 +1189,7 @@ "Github": "https://github.com/amontech", "Homepage": "https://amon.tech" }, - "marketcap_usd": 415222, + "marketcap_usd": 546192, "name": "Amon", "network": "eth", "shortcut": "AMN", @@ -1256,7 +1259,7 @@ "Github": "https://github.com/Oxchild/crowdsale", "Homepage": "https://apisplatform.io" }, - "marketcap_usd": 13028449, + "marketcap_usd": 11792131, "name": "APIS", "network": "eth", "shortcut": "APIS", @@ -1274,7 +1277,7 @@ "Github": "https://github.com/Aptoide/AppCoins-ethereumj", "Homepage": "https://appcoins.io" }, - "marketcap_usd": 8396156, + "marketcap_usd": 11049061, "name": "AppCoins", "network": "eth", "shortcut": "APPC", @@ -1291,7 +1294,7 @@ "links": { "Homepage": "https://aigang.network" }, - "marketcap_usd": 609344, + "marketcap_usd": 737898, "name": "AIGang", "network": "eth", "shortcut": "APT", @@ -1326,7 +1329,7 @@ "links": { "Homepage": "https://www.arbitragect.com" }, - "marketcap_usd": 136089, + "marketcap_usd": 184703, "name": "ArbitrageCT", "network": "eth", "shortcut": "ARCT", @@ -1431,7 +1434,7 @@ "links": { "Homepage": "https://airswap.io" }, - "marketcap_usd": 13376207, + "marketcap_usd": 17351248, "name": "Airswap", "network": "eth", "shortcut": "AST", @@ -1589,7 +1592,7 @@ "Github": "https://www.github.com/axpire", "Homepage": "https://www.axpire.io" }, - "marketcap_usd": 4232286, + "marketcap_usd": 5490796, "name": "aXpire", "network": "eth", "shortcut": "AXPR", @@ -1784,7 +1787,7 @@ "Github": "https://github.com/thebeetoken", "Homepage": "https://www.beetoken.com" }, - "marketcap_usd": 1975546, + "marketcap_usd": 1774139, "name": "Bee Token", "network": "eth", "shortcut": "BEE", @@ -1908,7 +1911,7 @@ "Github": "https://github.com/BankEx", "Homepage": "https://bankex.com/" }, - "marketcap_usd": 6511393, + "marketcap_usd": 6487746, "name": "BANKEX", "network": "eth", "shortcut": "BKX", @@ -1944,7 +1947,7 @@ "Github": "https://github.com/BlueCrypto", "Homepage": "https://blueprotocol.com/" }, - "marketcap_usd": 1692252, + "marketcap_usd": 2423863, "name": "Ethereum Blue", "network": "eth", "shortcut": "BLUE", @@ -1979,7 +1982,7 @@ "links": { "Homepage": "https://www.iconomi.net" }, - "marketcap_usd": 45789936, + "marketcap_usd": 47275907, "name": "Iconomi", "network": "eth", "shortcut": "BLX (Iconomi)", @@ -2116,7 +2119,7 @@ "Github": "https://github.com/bancorprotocol", "Homepage": "https://www.bancor.network/discover" }, - "marketcap_usd": 83919779, + "marketcap_usd": 89287807, "name": "Bancor", "network": "eth", "shortcut": "BNT", @@ -2167,7 +2170,7 @@ "links": { "Homepage": "https://bonpay.com" }, - "marketcap_usd": 1034517, + "marketcap_usd": 1051324, "name": "Bonpay", "network": "eth", "shortcut": "BON", @@ -2271,7 +2274,7 @@ "links": { "Homepage": "http://bro-consortium.io" }, - "marketcap_usd": 16945, + "marketcap_usd": 33385, "name": "BRAT", "network": "eth", "shortcut": "BRAT", @@ -2289,7 +2292,7 @@ "Github": "https://github.com/breadwallet", "Homepage": "https://token.breadapp.com/en" }, - "marketcap_usd": 32166081, + "marketcap_usd": 33033595, "name": "Bread", "network": "eth", "shortcut": "BRD", @@ -2447,7 +2450,7 @@ "Github": "https://github.com/bytom", "Homepage": "https://bytom.io" }, - "marketcap_usd": 182156841, + "marketcap_usd": 203385331, "name": "Bytom", "network": "eth", "shortcut": "BTM", @@ -2566,7 +2569,7 @@ "Github": "https://github.com/cryptotwenty", "Homepage": "https://crypto20.com" }, - "marketcap_usd": 27200698, + "marketcap_usd": 30038138, "name": "Crypto20's Token", "network": "eth", "shortcut": "C20", @@ -2684,7 +2687,7 @@ "links": { "Homepage": "https://cashaa.com" }, - "marketcap_usd": 11049607, + "marketcap_usd": 10859081, "name": "Cashaa", "network": "eth", "shortcut": "CAS", @@ -3153,7 +3156,7 @@ "links": { "Homepage": "https://cindicator.com" }, - "marketcap_usd": 25262263, + "marketcap_usd": 30701944, "name": "Cindicator", "network": "eth", "shortcut": "CND", @@ -3260,7 +3263,7 @@ "Github": "https://github.com/CoinvestHQ", "Homepage": "https://coinve.st" }, - "marketcap_usd": 89814, + "marketcap_usd": 84932, "name": "Coinvest V2 Token", "network": "eth", "shortcut": "COIN", @@ -3294,7 +3297,7 @@ "links": { "Homepage": "https://covesting.io/" }, - "marketcap_usd": 15546534, + "marketcap_usd": 15974534, "name": "Covesting", "network": "eth", "shortcut": "COV", @@ -3330,7 +3333,7 @@ "Github": "https://github.com/aditus", "Homepage": "https://copytrack.io" }, - "marketcap_usd": 940467, + "marketcap_usd": 990507, "name": "COPYTRACK", "network": "eth", "shortcut": "CPY", @@ -3400,7 +3403,7 @@ "links": { "Homepage": "https://bitbounce.io" }, - "marketcap_usd": 11146751, + "marketcap_usd": 13147353, "name": "Credo / Bitbounce", "network": "eth", "shortcut": "CREDO", @@ -3626,7 +3629,7 @@ "Github": "https://github.com/cargoxio", "Homepage": "https://cargox.io" }, - "marketcap_usd": 4051146, + "marketcap_usd": 4547875, "name": "CargoX", "network": "eth", "shortcut": "CXO", @@ -3660,7 +3663,7 @@ "links": { "Homepage": "https://ccrb.io" }, - "marketcap_usd": 1854299, + "marketcap_usd": 3450653, "name": "CryptoCarbon", "network": "eth", "shortcut": "CryptoCarbon", @@ -3694,7 +3697,7 @@ "links": { "Homepage": "https://dadi.cloud" }, - "marketcap_usd": 7334671, + "marketcap_usd": 7718227, "name": "DADI", "network": "eth", "shortcut": "DADI", @@ -3711,7 +3714,7 @@ "links": { "Homepage": "http://www.dalecoin.org" }, - "marketcap_usd": 36587, + "marketcap_usd": 37177, "name": "DaleCoin", "network": "eth", "shortcut": "DALC", @@ -3799,7 +3802,7 @@ "Github": "https://github.com/streamr-dev", "Homepage": "https://www.streamr.com" }, - "marketcap_usd": 49496, + "marketcap_usd": 50834, "name": "DATACoin", "network": "eth", "shortcut": "DATACoin", @@ -3888,7 +3891,7 @@ "Github": "https://github.com/DistributedBanking/DCC", "Homepage": "http://dcc.finance" }, - "marketcap_usd": 14762972, + "marketcap_usd": 16480180, "name": "Distributed Credit Chain", "network": "eth", "shortcut": "DCC", @@ -3923,7 +3926,7 @@ "Github": "https://github.com/Dentacoin", "Homepage": "https://dentacoin.com" }, - "marketcap_usd": 119350093, + "marketcap_usd": 131531850, "name": "Dentacoin", "network": "eth", "shortcut": "DCN", @@ -3993,7 +3996,7 @@ "links": { "Homepage": "https://www.dentwireless.com" }, - "marketcap_usd": 43165155, + "marketcap_usd": 54492234, "name": "DENT", "network": "eth", "shortcut": "DENT", @@ -4011,7 +4014,7 @@ "Github": "https://github.com/digipulseio", "Homepage": "https://www.digipulse.io" }, - "marketcap_usd": 303281, + "marketcap_usd": 170472, "name": "DigiPulse", "network": "eth", "shortcut": "DGPT", @@ -4065,7 +4068,7 @@ "Github": "https://github.com/DigixGlobal", "Homepage": "https://digix.global" }, - "marketcap_usd": 2336269, + "marketcap_usd": 2373568, "name": "Digix Gold Token", "network": "eth", "shortcut": "DGX", @@ -4100,7 +4103,7 @@ "links": { "Homepage": "https://etheroll.com" }, - "marketcap_usd": 4821454, + "marketcap_usd": 5684603, "name": "Etheroll", "network": "eth", "shortcut": "DICE", @@ -4308,7 +4311,7 @@ "Github": "https://github.com/dethertech", "Homepage": "https://dether.io" }, - "marketcap_usd": 2184097, + "marketcap_usd": 2442607, "name": "dether", "network": "eth", "shortcut": "DTH", @@ -4355,41 +4358,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:DTX": { - "address": "0x765f0C16D1Ddc279295c1a7C24B0883F62d33F75", - "links": { - "Github": "https://github.com/DataBrokerDAO", - "Homepage": "https://databrokerdao.com" - }, - "marketcap_usd": 0, - "name": "DaTa eXchange Token", - "network": "eth", - "shortcut": "DTX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "erc20:eth:DTx": { - "address": "0x82fdedfB7635441aA5A92791D001fA7388da8025", - "links": { - "Homepage": "https://www.digitalticks.com" - }, - "marketcap_usd": 0, - "name": "DigitalTicks", - "network": "eth", - "shortcut": "DTx", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:Devcon2 Token": { "address": "0xdd94De9cFE063577051A5eb7465D08317d8808B6", "links": { @@ -4413,7 +4381,7 @@ "Github": "https://github.com/elangindonesia/EagleCoin", "Homepage": "https://eaglepay.io" }, - "marketcap_usd": 103304, + "marketcap_usd": 88924, "name": "EagleCoin", "network": "eth", "shortcut": "EAGLE", @@ -4498,7 +4466,7 @@ "links": { "Homepage": "https://edgeless.io" }, - "marketcap_usd": 26375465, + "marketcap_usd": 27280909, "name": "Edgeless", "network": "eth", "shortcut": "EDG", @@ -4515,7 +4483,7 @@ "links": { "Homepage": "https://eidoo.io" }, - "marketcap_usd": 24809606, + "marketcap_usd": 28446316, "name": "Eidoo", "network": "eth", "shortcut": "EDO", @@ -4622,7 +4590,7 @@ "Github": "https://github.com/eltcoin", "Homepage": "http://www.eltcoin.tech/" }, - "marketcap_usd": 101963, + "marketcap_usd": 119683, "name": "ELTCOIN", "network": "eth", "shortcut": "ELTCOIN", @@ -4796,12 +4764,14 @@ }, "erc20:eth:EOS": { "address": "0x86Fa049857E0209aa7D9e616F7eb3b3B78ECfdb0", + "hidden": 1, "links": { "Homepage": "https://eos.io" }, - "marketcap_usd": 4406564332, + "marketcap_usd": 4923308443, "name": "EOS", "network": "eth", + "notes": "EOS has a mainnet now", "shortcut": "EOS", "t1_enabled": "yes", "t2_enabled": "yes", @@ -4852,7 +4822,7 @@ "links": { "Homepage": "https://www.ethbits.com" }, - "marketcap_usd": 1071935, + "marketcap_usd": 1264730, "name": "Ethbits", "network": "eth", "shortcut": "ETBS", @@ -5008,7 +4978,7 @@ "address": "0x5c743a35E903F6c584514ec617ACEe0611Cf44f3", "hidden": 1, "links": {}, - "marketcap_usd": 3341333, + "marketcap_usd": 3423723, "name": "Experty", "network": "eth", "shortcut": "EXY", @@ -5183,7 +5153,7 @@ "Github": "https://github.com/FundRequest", "Homepage": "https://fundrequest.io" }, - "marketcap_usd": 436959, + "marketcap_usd": 582812, "name": "FundRequest", "network": "eth", "shortcut": "FND", @@ -5288,7 +5258,7 @@ "links": { "Homepage": "https://funfair.io" }, - "marketcap_usd": 83784745, + "marketcap_usd": 91202174, "name": "Funfair", "network": "eth", "shortcut": "FUN", @@ -5341,7 +5311,7 @@ "Github": "https://github.com/BlockchainLabsNZ/gambit", "Homepage": "http://gambitcrypto.com" }, - "marketcap_usd": 4540717, + "marketcap_usd": 4902668, "name": "Gambit", "network": "eth", "shortcut": "GAM", @@ -5464,7 +5434,7 @@ "Github": "https://github.com/daostack", "Homepage": "https://daostack.io" }, - "marketcap_usd": 4069602, + "marketcap_usd": 4788131, "name": "DAOstack", "network": "eth", "shortcut": "GEN", @@ -5586,7 +5556,7 @@ "links": { "Homepage": "https://gridplus.io/token-sale" }, - "marketcap_usd": 7586168, + "marketcap_usd": 8037702, "name": "GRID", "network": "eth", "shortcut": "GRID", @@ -5675,7 +5645,7 @@ "Github": "https://github.com/GIFTO-io", "Homepage": "https://gifto.io/" }, - "marketcap_usd": 43157978, + "marketcap_usd": 48359174, "name": "Gifto", "network": "eth", "shortcut": "GTO", @@ -5711,7 +5681,7 @@ "Github": "https://github.com/GenesisVision", "Homepage": "https://genesis.vision" }, - "marketcap_usd": 18476548, + "marketcap_usd": 25846493, "name": "Genesis Vision", "network": "eth", "shortcut": "GVT", @@ -5833,7 +5803,7 @@ "Github": "https://github.com/havven/havven", "Homepage": "https://havven.io" }, - "marketcap_usd": 8074565, + "marketcap_usd": 7614168, "name": "Havven", "network": "eth", "shortcut": "HAV", @@ -5972,7 +5942,7 @@ "links": { "Homepage": "https://github.com/arachnid/hodlcoin" }, - "marketcap_usd": 258639, + "marketcap_usd": 231180, "name": "HODLCoin", "network": "eth", "shortcut": "HODL", @@ -6025,7 +5995,7 @@ "Github": "https://github.com/HiveProjectLTD", "Homepage": "https://hive-project.net" }, - "marketcap_usd": 11450973, + "marketcap_usd": 12499193, "name": "Hive Project", "network": "eth", "shortcut": "HVN", @@ -6055,42 +6025,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:Hdp": { - "address": "0xE9fF07809CCff05daE74990e25831d0Bc5cbe575", - "links": { - "Github": "https://github.com/HEDPAY", - "Homepage": "http://hedpay.com" - }, - "marketcap_usd": 0, - "name": "HEdpAY", - "network": "eth", - "shortcut": "Hdp", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "erc20:eth:Hdp.\u0444": { - "address": "0x84543F868eC1b1FAC510d49d13C069f64cD2d5f9", - "links": { - "Github": "https://github.com/HEDPAY", - "Homepage": "http://hedpay.com" - }, - "marketcap_usd": 0, - "name": "HEdpAY", - "network": "eth", - "shortcut": "Hdp.\u0444", - "t1_enabled": "soon", - "t2_enabled": "soon", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:IAD": { "address": "0xC1E2097d788d33701BA3Cc2773BF67155ec93FC4", "links": { @@ -6164,7 +6098,7 @@ "links": { "Homepage": "https://icos.icobox.io" }, - "marketcap_usd": 1834276, + "marketcap_usd": 1879254, "name": "ICOS", "network": "eth", "shortcut": "ICOS", @@ -6181,7 +6115,7 @@ "links": { "Homepage": "https://www.icon.foundation" }, - "marketcap_usd": 252661135, + "marketcap_usd": 371156331, "name": "ICON", "network": "eth", "shortcut": "ICX", @@ -6215,7 +6149,7 @@ "links": { "Homepage": "https://investfeed.com" }, - "marketcap_usd": 2444515, + "marketcap_usd": 2958191, "name": "InvestFeed", "network": "eth", "shortcut": "IFT", @@ -6350,7 +6284,7 @@ "links": { "Homepage": "https://insights.network" }, - "marketcap_usd": 1815725, + "marketcap_usd": 1720221, "name": "Insights Network", "network": "eth", "shortcut": "INSTAR", @@ -6367,7 +6301,7 @@ "links": { "Homepage": "https://internxt.io" }, - "marketcap_usd": 2262594, + "marketcap_usd": 1888121, "name": "Internxt", "network": "eth", "shortcut": "INXT", @@ -6384,7 +6318,7 @@ "links": { "Homepage": "https://iost.io/" }, - "marketcap_usd": 114256334, + "marketcap_usd": 129897488, "name": "IOSToken", "network": "eth", "shortcut": "IOST", @@ -6491,7 +6425,7 @@ "Github": "https://github.com/IoTChainCode", "Homepage": "https://iotchain.io/" }, - "marketcap_usd": 11570618, + "marketcap_usd": 14115113, "name": "IoT Chain", "network": "eth", "shortcut": "ITC", @@ -6681,7 +6615,7 @@ "Github": "https://github.com/kikinteractive/kin-token", "Homepage": "https://kin.kik.com" }, - "marketcap_usd": 84001995, + "marketcap_usd": 84243568, "name": "Kin Foundation", "network": "eth", "shortcut": "KIN", @@ -6699,7 +6633,7 @@ "Github": "https://github.com/KyberNetwork", "Homepage": "https://kyber.network" }, - "marketcap_usd": 67389590, + "marketcap_usd": 77082818, "name": "Kyber Network", "network": "eth", "shortcut": "KNC", @@ -6735,7 +6669,7 @@ "Github": "https://github.com/Cryptense/", "Homepage": "https://kryll.io/" }, - "marketcap_usd": 518539, + "marketcap_usd": 575256, "name": "Kryll", "network": "eth", "shortcut": "KRL", @@ -6770,7 +6704,7 @@ "Github": "https://github.com/latoken", "Homepage": "https://latoken.com/" }, - "marketcap_usd": 7078045, + "marketcap_usd": 8281497, "name": "LATOKEN", "network": "eth", "shortcut": "LA", @@ -6804,7 +6738,7 @@ "links": { "Homepage": "https://www.leadcoin.network/" }, - "marketcap_usd": 1067444, + "marketcap_usd": 1075086, "name": "LEADCOIN", "network": "eth", "shortcut": "LDC", @@ -6908,7 +6842,7 @@ "links": { "Homepage": "http://www.lifelabs.io" }, - "marketcap_usd": 2913824, + "marketcap_usd": 3295725, "name": "LIFE", "network": "eth", "shortcut": "LIFE", @@ -6960,7 +6894,7 @@ "Github": "https://github.com/lendingblock", "Homepage": "https://lendingblock.com" }, - "marketcap_usd": 1461818, + "marketcap_usd": 1696347, "name": "Lendingblock", "network": "eth", "shortcut": "LND", @@ -6977,7 +6911,7 @@ "links": { "Homepage": "https://LockChain.co" }, - "marketcap_usd": 5203577, + "marketcap_usd": 5320647, "name": "LockChain", "network": "eth", "shortcut": "LOC", @@ -6995,7 +6929,7 @@ "Github": "http://github.com/locipro/loci-coin-sale", "Homepage": "https://locipro.com" }, - "marketcap_usd": 1790128, + "marketcap_usd": 1581432, "name": "LOCIcoin", "network": "eth", "shortcut": "LOCI", @@ -7310,7 +7244,7 @@ "Github": "https://github.com/theembermine", "Homepage": "https://embermine.com/" }, - "marketcap_usd": 196722, + "marketcap_usd": 235621, "name": "Embers", "network": "eth", "shortcut": "MBRS", @@ -7326,7 +7260,7 @@ "address": "0x93E682107d1E9defB0b5ee701C71707a4B2E46Bc", "hidden": 1, "links": {}, - "marketcap_usd": 284290, + "marketcap_usd": 321699, "name": "MCAP", "network": "eth", "shortcut": "MCAP", @@ -7344,7 +7278,7 @@ "Github": "https://github.com/musiconomi/", "Homepage": "https://musiconomi.com/" }, - "marketcap_usd": 235189, + "marketcap_usd": 280273, "name": "Musiconomi", "network": "eth", "shortcut": "MCI", @@ -7361,7 +7295,7 @@ "links": { "Homepage": "https://mona.co" }, - "marketcap_usd": 67092556, + "marketcap_usd": 73972994, "name": "MCO", "network": "eth", "shortcut": "MCO", @@ -7467,7 +7401,7 @@ "links": { "Homepage": "https://mftu.net" }, - "marketcap_usd": 67294, + "marketcap_usd": 69984, "name": "Mainstream For The Underground", "network": "eth", "shortcut": "MFTU", @@ -7573,7 +7507,7 @@ "Github": "https://github.com/modum-io", "Homepage": "https://modum.io" }, - "marketcap_usd": 21046716, + "marketcap_usd": 23816727, "name": "Modum", "network": "eth", "shortcut": "MOD", @@ -7642,7 +7576,7 @@ "links": { "Homepage": "https://mothership.cx" }, - "marketcap_usd": 12972327, + "marketcap_usd": 13061912, "name": "Mothership", "network": "eth", "shortcut": "MSP", @@ -7659,7 +7593,7 @@ "links": { "Homepage": "http://www.monetha.io" }, - "marketcap_usd": 4592888, + "marketcap_usd": 5251079, "name": "Monetha", "network": "eth", "shortcut": "MTH", @@ -7779,7 +7713,7 @@ "Github": "https://github.com/Merculet", "Homepage": "https://www.merculet.io" }, - "marketcap_usd": 3215651, + "marketcap_usd": 4364747, "name": "Merculet", "network": "eth", "shortcut": "MVP", @@ -7829,7 +7763,7 @@ "links": { "Homepage": "https://mysterium.network" }, - "marketcap_usd": 2448689, + "marketcap_usd": 2538062, "name": "Mysterium", "network": "eth", "shortcut": "MYST", @@ -7864,7 +7798,7 @@ "Github": "https://github.com/NANJ-COIN", "Homepage": "https://nanjcoin.com/" }, - "marketcap_usd": 13822722, + "marketcap_usd": 15181302, "name": "NANJCOIN", "network": "eth", "shortcut": "NANJ", @@ -7918,7 +7852,7 @@ "Github": "https://github.com/polyswarm", "Homepage": "https://polyswarm.io" }, - "marketcap_usd": 23345676, + "marketcap_usd": 25599374, "name": "Nectar", "network": "eth", "shortcut": "NCT", @@ -7935,7 +7869,7 @@ "links": { "Homepage": "https://neverdie.com" }, - "marketcap_usd": 1408408, + "marketcap_usd": 1112466, "name": "Neverdie", "network": "eth", "shortcut": "NDC", @@ -7970,7 +7904,7 @@ "links": { "Homepage": "https://nimiq.com" }, - "marketcap_usd": 2846290, + "marketcap_usd": 3371594, "name": "NIMIQ", "network": "eth", "shortcut": "NET", @@ -8077,7 +8011,7 @@ "Github": "https://github.com/NperProject", "Homepage": "https://nper.io" }, - "marketcap_usd": 1946971, + "marketcap_usd": 2621604, "name": "NPER", "network": "eth", "shortcut": "NPER", @@ -8129,7 +8063,7 @@ "links": { "Homepage": "https://nuls.io" }, - "marketcap_usd": 57534322, + "marketcap_usd": 67005594, "name": "NULS", "network": "eth", "shortcut": "NULS", @@ -8163,7 +8097,7 @@ "links": { "Homepage": "https://beyond-the-void.net" }, - "marketcap_usd": 1502535, + "marketcap_usd": 1642225, "name": "Nexium", "network": "eth", "shortcut": "NxC", @@ -8197,7 +8131,7 @@ "links": { "Homepage": "https://www.openanx.org/en" }, - "marketcap_usd": 4270504, + "marketcap_usd": 4671109, "name": "OAX", "network": "eth", "shortcut": "OAX", @@ -8411,7 +8345,7 @@ "Github": "https://github.com/OpenSTFoundation", "Homepage": "https://simpletoken.org" }, - "marketcap_usd": 10613704, + "marketcap_usd": 15269114, "name": "Simple Token 'OST'", "network": "eth", "shortcut": "OST", @@ -8465,7 +8399,7 @@ "Github": "https://github.com/policypalnet", "Homepage": "https://www.policypal.network" }, - "marketcap_usd": 2141433, + "marketcap_usd": 2614128, "name": "PolicyPal Network", "network": "eth", "shortcut": "PAL", @@ -8570,7 +8504,7 @@ "links": { "Homepage": "http://www.tenx.tech" }, - "marketcap_usd": 62355151, + "marketcap_usd": 65886689, "name": "TenX", "network": "eth", "shortcut": "PAY", @@ -8639,7 +8573,7 @@ "Github": "https://github.com/PeculiumPCL/Peculium", "Homepage": "https://peculium.io" }, - "marketcap_usd": 2664106, + "marketcap_usd": 3142087, "name": "Peculium", "network": "eth", "shortcut": "PCL", @@ -8794,7 +8728,7 @@ "links": { "Homepage": "https://polybius.io" }, - "marketcap_usd": 6461014, + "marketcap_usd": 7063392, "name": "Polybius", "network": "eth", "shortcut": "PLBT", @@ -8898,7 +8832,7 @@ "links": { "Homepage": "https://polymath.network" }, - "marketcap_usd": 50284550, + "marketcap_usd": 65097186, "name": "Polymath Network", "network": "eth", "shortcut": "POLY", @@ -8933,7 +8867,7 @@ "Github": "https://github.com/PoSToken", "Homepage": "https://postoken.org" }, - "marketcap_usd": 38380, + "marketcap_usd": 39324, "name": "PoSToken", "network": "eth", "shortcut": "POS", @@ -8984,7 +8918,7 @@ "links": { "Homepage": "https://populous.co" }, - "marketcap_usd": 171844299, + "marketcap_usd": 172503997, "name": "Populous", "network": "eth", "shortcut": "PPT", @@ -9001,7 +8935,7 @@ "links": { "Homepage": "https://presearch.io" }, - "marketcap_usd": 14026316, + "marketcap_usd": 17333261, "name": "Presearch", "network": "eth", "shortcut": "PRE", @@ -9054,7 +8988,7 @@ "links": { "Homepage": "https://propy.com" }, - "marketcap_usd": 6902460, + "marketcap_usd": 6918232, "name": "Propy", "network": "eth", "shortcut": "PRO", @@ -9229,7 +9163,7 @@ "links": { "Homepage": "https://liquid.plus" }, - "marketcap_usd": 72836470, + "marketcap_usd": 74032466, "name": "QASH", "network": "eth", "shortcut": "QASH", @@ -9371,7 +9305,7 @@ "Github": "https://github.com/qtumproject", "Homepage": "https://qtum.org/" }, - "marketcap_usd": 366378124, + "marketcap_usd": 416132156, "name": "Qtum", "network": "eth", "shortcut": "QTUM", @@ -9425,7 +9359,7 @@ "Github": "https://github.com/ripio/rcn-token", "Homepage": "https://ripiocredit.network" }, - "marketcap_usd": 9254671, + "marketcap_usd": 11245302, "name": "Ripio Credit Network", "network": "eth", "shortcut": "RCN", @@ -9476,7 +9410,7 @@ "links": { "Homepage": "https://www.rebellious.io" }, - "marketcap_usd": 3233934, + "marketcap_usd": 3379079, "name": "Rebellious", "network": "eth", "shortcut": "REBL", @@ -9494,7 +9428,7 @@ "Github": "https://github.com/red", "Homepage": "https://ico.red-lang.org" }, - "marketcap_usd": 1688379, + "marketcap_usd": 1628824, "name": "Red Community Token", "network": "eth", "shortcut": "RED", @@ -9547,7 +9481,7 @@ "links": { "Homepage": "https://request.network" }, - "marketcap_usd": 29734347, + "marketcap_usd": 35770681, "name": "Request Network", "network": "eth", "shortcut": "REQ", @@ -9582,7 +9516,7 @@ "links": { "Homepage": "https://refereum.com" }, - "marketcap_usd": 10158717, + "marketcap_usd": 11543956, "name": "Refereum", "network": "eth", "shortcut": "RFR", @@ -9634,7 +9568,7 @@ "links": { "Homepage": "http://crowdsale.iex.ec" }, - "marketcap_usd": 35286600, + "marketcap_usd": 34824656, "name": "IEx.ec", "network": "eth", "shortcut": "RLC", @@ -9686,7 +9620,7 @@ "links": { "Homepage": "http://www.relex.io" }, - "marketcap_usd": 2059935, + "marketcap_usd": 3756159, "name": "Relex", "network": "eth", "shortcut": "RLX", @@ -9721,7 +9655,7 @@ "Github": "https://github.com/rocketico", "Homepage": "https://rocketico.io" }, - "marketcap_usd": 21680674, + "marketcap_usd": 18890486, "name": "Rocket Token", "network": "eth", "shortcut": "ROCK", @@ -9823,7 +9757,7 @@ "links": { "Homepage": "https://rivetzintl.com" }, - "marketcap_usd": 3259734, + "marketcap_usd": 3507204, "name": "Rivetz", "network": "eth", "shortcut": "RVT", @@ -9874,7 +9808,7 @@ "links": { "Homepage": "https://saltlending.com" }, - "marketcap_usd": 30970033, + "marketcap_usd": 39102319, "name": "Salt Lending Token", "network": "eth", "shortcut": "SALT", @@ -9891,7 +9825,7 @@ "links": { "Homepage": "https://santiment.net" }, - "marketcap_usd": 37144371, + "marketcap_usd": 44201823, "name": "Santiment", "network": "eth", "shortcut": "SAN", @@ -9942,7 +9876,7 @@ "links": { "Homepage": "https://sensay.it" }, - "marketcap_usd": 1909749, + "marketcap_usd": 1977673, "name": "Sensay", "network": "eth", "shortcut": "SENSE", @@ -10115,7 +10049,7 @@ "links": { "Homepage": "http://smartlands.io" }, - "marketcap_usd": 7817290, + "marketcap_usd": 8604761, "name": "Smartlands", "network": "eth", "shortcut": "SLT", @@ -10202,7 +10136,7 @@ "links": { "Homepage": "https://singulardtv.com" }, - "marketcap_usd": 13356599, + "marketcap_usd": 14885554, "name": "SingularDTV", "network": "eth", "shortcut": "SNGLS", @@ -10305,7 +10239,7 @@ "links": { "Homepage": "https://spankchain.com" }, - "marketcap_usd": 13755901, + "marketcap_usd": 14224665, "name": "SpankChain", "network": "eth", "shortcut": "SPANK", @@ -10494,7 +10428,7 @@ "links": { "Homepage": "https://stktoken.com" }, - "marketcap_usd": 4352499, + "marketcap_usd": 4381439, "name": "STK Token", "network": "eth", "shortcut": "STK", @@ -10529,7 +10463,7 @@ "Github": "https://github.com/Storj", "Homepage": "https://storj.io" }, - "marketcap_usd": 38370023, + "marketcap_usd": 41820750, "name": "STORJ", "network": "eth", "shortcut": "STORJ", @@ -10546,7 +10480,7 @@ "links": { "Homepage": "https://www.stormtoken.com" }, - "marketcap_usd": 36387909, + "marketcap_usd": 42844408, "name": "Storm Token", "network": "eth", "shortcut": "STORM", @@ -10582,7 +10516,7 @@ "Github": "https://github.com/Storiqa/", "Homepage": "https://storiqa.com" }, - "marketcap_usd": 14984412, + "marketcap_usd": 19198715, "name": "Storiqa", "network": "eth", "shortcut": "STQ", @@ -10635,7 +10569,7 @@ "links": { "Homepage": "https://substratum.net" }, - "marketcap_usd": 56199828, + "marketcap_usd": 74704647, "name": "Substratum", "network": "eth", "shortcut": "SUB", @@ -10827,7 +10761,7 @@ "Github": "https://github.com/telcoin", "Homepage": "https://www.telco.in" }, - "marketcap_usd": 18839716, + "marketcap_usd": 26735012, "name": "Telcoin", "network": "eth", "shortcut": "TEL", @@ -10845,7 +10779,7 @@ "Github": "https://github.com/TrueFlip", "Homepage": "https://trueflip.io" }, - "marketcap_usd": 3253929, + "marketcap_usd": 3384210, "name": "TrueFlip", "network": "eth", "shortcut": "TFL", @@ -10862,7 +10796,7 @@ "links": { "Homepage": "https://www.thetatoken.org/" }, - "marketcap_usd": 69141560, + "marketcap_usd": 70766628, "name": "Theta Token", "network": "eth", "shortcut": "THETA", @@ -10915,7 +10849,7 @@ "links": { "Homepage": "https://chronobank.io" }, - "marketcap_usd": 4457546, + "marketcap_usd": 5393779, "name": "Chronobank", "network": "eth", "shortcut": "TIME", @@ -10949,7 +10883,7 @@ "links": { "Homepage": "https://www.blocktix.io" }, - "marketcap_usd": 5045841, + "marketcap_usd": 5534389, "name": "Blocktix", "network": "eth", "shortcut": "TIX", @@ -10966,7 +10900,7 @@ "links": { "Homepage": "https://etherscan.io/token/TokenCard" }, - "marketcap_usd": 10979046, + "marketcap_usd": 10866544, "name": "TokenCard", "network": "eth", "shortcut": "TKN", @@ -11122,7 +11056,7 @@ "links": { "Homepage": "https://taas.fund" }, - "marketcap_usd": 6990027, + "marketcap_usd": 7161933, "name": "Token-as-a-Service", "network": "eth", "shortcut": "TaaS", @@ -11157,7 +11091,7 @@ "links": { "Homepage": "https://uquidcoin.com" }, - "marketcap_usd": 6846702, + "marketcap_usd": 7051113, "name": "Uquid Coin", "network": "eth", "shortcut": "UQC", @@ -11225,7 +11159,7 @@ "Github": "https://github.com/UniversaBlockchain/universa", "Homepage": "https://www.universa.io/" }, - "marketcap_usd": 12287840, + "marketcap_usd": 13635904, "name": "Universa", "network": "eth", "shortcut": "UTN-P", @@ -11312,7 +11246,7 @@ "Github": "https://github.com/blockv", "Homepage": "https://blockv.io" }, - "marketcap_usd": 19228486, + "marketcap_usd": 22783655, "name": "BLOCKv", "network": "eth", "shortcut": "VEE", @@ -11328,9 +11262,9 @@ "address": "0xD850942eF8811f2A866692A623011bDE52a462C1", "links": { "Github": "https://github.com/vechain-team", - "Homepage": "https://tokensale.vechain.com/en" + "Homepage": "https://www.vechain.com" }, - "marketcap_usd": 791401262, + "marketcap_usd": 1041101242, "name": "Vechain", "network": "eth", "shortcut": "VEN", @@ -11399,7 +11333,7 @@ "Github": "https://github.com/Viewly/", "Homepage": "https://view.ly/" }, - "marketcap_usd": 795402, + "marketcap_usd": 990392, "name": "Viewly", "network": "eth", "shortcut": "VIEW", @@ -11417,7 +11351,7 @@ "Github": "https://github.com/ViceIndustryToken", "Homepage": "https://vicetoken.com/" }, - "marketcap_usd": 1667855, + "marketcap_usd": 1634718, "name": "Vice Industry Token", "network": "eth", "shortcut": "VIT", @@ -11505,7 +11439,7 @@ "links": { "Homepage": "https://veros.org" }, - "marketcap_usd": 208801, + "marketcap_usd": 185024, "name": "Veros", "network": "eth", "shortcut": "VRS", @@ -11540,7 +11474,7 @@ "Github": "https://github.com/waxio", "Homepage": "https://wax.io" }, - "marketcap_usd": 66381362, + "marketcap_usd": 74088704, "name": "WAX", "network": "eth", "shortcut": "WAX", @@ -11592,7 +11526,7 @@ "links": { "Homepage": "https://wepower.network" }, - "marketcap_usd": 10228971, + "marketcap_usd": 11390827, "name": "WePower", "network": "eth", "shortcut": "WCT", @@ -11639,24 +11573,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:WIC": { - "address": "0x62CD07D414Ec50B68C7EcAa863a23d344f2d062f", - "links": { - "Github": "https://github.com/wicknote/wicknote", - "Homepage": "https://wicknote.com" - }, - "marketcap_usd": 0, - "name": "WickNote", - "network": "eth", - "shortcut": "WIC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:WILD": { "address": "0xD3C00772B24D997A812249ca637a921e81357701", "links": { @@ -11680,7 +11596,7 @@ "links": { "Homepage": "https://wings.ai" }, - "marketcap_usd": 12843654, + "marketcap_usd": 13797499, "name": "WINGS", "network": "eth", "shortcut": "WINGS", @@ -11853,7 +11769,7 @@ "links": { "Homepage": "https://www.wacoin.io" }, - "marketcap_usd": 7160318, + "marketcap_usd": 10254001, "name": "WaBi", "network": "eth", "shortcut": "WaBi", @@ -11865,23 +11781,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:WiC": { - "address": "0x5e4ABE6419650CA839Ce5BB7Db422b881a6064bB", - "links": { - "Homepage": "https://www.cryptowi.com/" - }, - "marketcap_usd": 0, - "name": "Wi Coin", - "network": "eth", - "shortcut": "WiC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:X8X": { "address": "0x910Dfc18D6EA3D6a7124A6F8B5458F281060fa4c", "links": { @@ -11904,7 +11803,7 @@ "links": { "Homepage": "http://www.xaurum.org" }, - "marketcap_usd": 4221839, + "marketcap_usd": 4264487, "name": "Xaurum", "network": "eth", "shortcut": "XAUR", @@ -11922,7 +11821,7 @@ "Github": "https://github.com/blitzpredict", "Homepage": "https://www.blitzpredict.io" }, - "marketcap_usd": 702192, + "marketcap_usd": 672147, "name": "BlitzPredict", "network": "eth", "shortcut": "XBP", @@ -12045,7 +11944,7 @@ "Github": "https://github.com/InkProtocol/", "Homepage": "https://paywithink.com" }, - "marketcap_usd": 2714381, + "marketcap_usd": 3037350, "name": "Ink Protocol", "network": "eth", "shortcut": "XNK", @@ -12062,7 +11961,7 @@ "links": { "Homepage": "https://xenon.network" }, - "marketcap_usd": 887202, + "marketcap_usd": 804351, "name": "XENON", "network": "eth", "shortcut": "XNN", @@ -12145,6 +12044,7 @@ }, "erc20:eth:YUPIE": { "address": "0x0F33bb20a282A7649C7B3AFf644F084a9348e933", + "hidden": 1, "links": { "Github": "https://github.com/crowdholdingico/YupieSmartContract", "Homepage": "https://www.crowdholding.com" @@ -12152,6 +12052,7 @@ "marketcap_usd": 0, "name": "YUPIE", "network": "eth", + "notes": "Replaced by YUP", "shortcut": "YUPIE", "t1_enabled": "yes", "t2_enabled": "yes", @@ -12167,7 +12068,7 @@ "Github": "https://github.com/zapproject", "Homepage": "https://zap.store" }, - "marketcap_usd": 1918141, + "marketcap_usd": 2528124, "name": "ZAP", "network": "eth", "shortcut": "ZAP", @@ -12184,7 +12085,7 @@ "links": { "Homepage": "https://zsc.io/" }, - "marketcap_usd": 4787352, + "marketcap_usd": 4681337, "name": "Zeusshield", "network": "eth", "shortcut": "ZCS", @@ -12202,7 +12103,7 @@ "Github": "https://github.com/zilliqa", "Homepage": "https://www.zilliqa.com/" }, - "marketcap_usd": 283511706, + "marketcap_usd": 345013721, "name": "Zilliqa", "network": "eth", "shortcut": "ZIL", @@ -12219,7 +12120,7 @@ "links": { "Homepage": "https://www.zmine.com" }, - "marketcap_usd": 5250393, + "marketcap_usd": 5169952, "name": "ZMINE", "network": "eth", "shortcut": "ZMN", @@ -12254,7 +12155,7 @@ "Github": "https://github.com/carVertical", "Homepage": "https://www.carvertical.com" }, - "marketcap_usd": 4641550, + "marketcap_usd": 4924943, "name": "carVertical", "network": "eth", "shortcut": "cV", @@ -12342,7 +12243,7 @@ "Github": "https://github.com/eosdac", "Homepage": "https://eosdac.io/" }, - "marketcap_usd": 15561717, + "marketcap_usd": 17427322, "name": "eosDAC", "network": "eth", "shortcut": "eosDAC", @@ -12376,7 +12277,7 @@ "Github": "https://github.com/havven/havven", "Homepage": "https://www.havven.io" }, - "marketcap_usd": 1155975, + "marketcap_usd": 1149925, "name": "Havven-Backed USD Nomins (nUSD)", "network": "eth", "shortcut": "nUSD", @@ -12410,7 +12311,7 @@ "address": "0x8667559254241ddeD4d11392f868d72092765367", "hidden": 1, "links": {}, - "marketcap_usd": 232368933, + "marketcap_usd": 271191736, "name": "Aeternity", "network": "kov", "shortcut": "Aeternity", @@ -12597,7 +12498,7 @@ "links": { "Homepage": "https://www.qwark.io" }, - "marketcap_usd": 1838322, + "marketcap_usd": 2183207, "name": "QWARK", "network": "ubq", "shortcut": "QWARK", @@ -12630,7 +12531,7 @@ "links": { "Homepage": "https://akroma.io" }, - "marketcap_usd": 708616, + "marketcap_usd": 753379, "name": "Akroma", "shortcut": "AKA", "t1_enabled": "soon", @@ -12675,7 +12576,7 @@ "links": { "Homepage": "https://egem.io" }, - "marketcap_usd": 200422, + "marketcap_usd": 227816, "name": "EtherGem", "shortcut": "EGEM", "t1_enabled": "yes", @@ -12690,7 +12591,7 @@ "links": { "Homepage": "https://ellaism.org" }, - "marketcap_usd": 359582, + "marketcap_usd": 381897, "name": "Ellaism", "shortcut": "ELLA", "t1_enabled": "yes", @@ -12735,7 +12636,7 @@ "links": { "Homepage": "https://ethereumclassic.github.io" }, - "marketcap_usd": 1291168227, + "marketcap_usd": 1348712891, "name": "Ethereum Classic", "shortcut": "ETC", "t1_enabled": "yes", @@ -12750,7 +12651,7 @@ "links": { "Homepage": "https://www.ethereum.org" }, - "marketcap_usd": 28117892357, + "marketcap_usd": 29336809232, "name": "Ethereum", "shortcut": "ETH", "t1_enabled": "yes", @@ -12795,7 +12696,7 @@ "links": { "Homepage": "https://expanse.tech" }, - "marketcap_usd": 4812366, + "marketcap_usd": 5311062, "name": "Expanse", "shortcut": "EXP", "t1_enabled": "yes", @@ -12810,7 +12711,7 @@ "links": { "Homepage": "https://gochain.io" }, - "marketcap_usd": 15095961, + "marketcap_usd": 24974636, "name": "GoChain", "shortcut": "GO", "t1_enabled": "yes", @@ -12825,7 +12726,7 @@ "links": { "Homepage": "https://musicoin.org" }, - "marketcap_usd": 3047841, + "marketcap_usd": 3153043, "name": "Musicoin", "shortcut": "MUSIC", "t1_enabled": "soon", @@ -12840,7 +12741,7 @@ "links": { "Homepage": "https://pirl.io" }, - "marketcap_usd": 2883556, + "marketcap_usd": 2732280, "name": "Pirl", "shortcut": "PIRL", "t1_enabled": "soon", @@ -12870,7 +12771,7 @@ "links": { "Homepage": "https://ubiqsmart.com" }, - "marketcap_usd": 22538702, + "marketcap_usd": 23545890, "name": "Ubiq", "shortcut": "UBQ", "t1_enabled": "yes", @@ -12965,7 +12866,7 @@ "links": { "Homepage": "https://www.cardano.org" }, - "marketcap_usd": 2393273266, + "marketcap_usd": 2679858518, "name": "Cardano", "shortcut": "ADA", "t1_enabled": "no", @@ -12976,7 +12877,7 @@ "links": { "Homepage": "https://lisk.io/" }, - "marketcap_usd": 529722990, + "marketcap_usd": 562907714, "name": "Lisk", "shortcut": "LSK", "t1_enabled": "no", @@ -12984,21 +12885,23 @@ "type": "coin" }, "misc:ONT": { + "hidden": 1, "links": { "Homepage": "https://ont.io" }, - "marketcap_usd": 392083677, + "marketcap_usd": 493962017, "name": "Ontology", + "notes": "In development", "shortcut": "ONT", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "no", + "t2_enabled": "no", "type": "coin" }, "misc:XLM": { "links": { "Homepage": "https://www.stellar.org" }, - "marketcap_usd": 4027996135, + "marketcap_usd": 4315310208, "name": "Stellar", "notes": "In development", "shortcut": "XLM", @@ -13010,7 +12913,7 @@ "links": { "Homepage": "https://getmonero.org" }, - "marketcap_usd": 1470898316, + "marketcap_usd": 1728865351, "name": "Monero", "notes": "In development", "shortcut": "XMR", @@ -13022,7 +12925,7 @@ "links": { "Homepage": "https://ripple.com" }, - "marketcap_usd": 12796422030, + "marketcap_usd": 13795915761, "name": "Ripple", "notes": "In development", "shortcut": "XRP", @@ -13034,8 +12937,9 @@ "links": { "Homepage": "https://tezos.com" }, - "marketcap_usd": 796546269, + "marketcap_usd": 821927670, "name": "Tezos", + "notes": "In development", "shortcut": "XTZ", "t1_enabled": "no", "t2_enabled": "soon", @@ -13059,7 +12963,7 @@ "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 5693343, + "marketcap_usd": 6202731, "name": "DIMCOIN", "shortcut": "DIM", "t1_enabled": "yes", @@ -13074,7 +12978,7 @@ "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 5693343, + "marketcap_usd": 6202731, "name": "DIM TOKEN", "shortcut": "DIMTOK", "t1_enabled": "yes", @@ -13116,7 +13020,7 @@ "links": { "Homepage": "https://nem.io" }, - "marketcap_usd": 905209375, + "marketcap_usd": 991190090, "name": "NEM", "shortcut": "XEM", "t1_enabled": "yes", @@ -13128,11 +13032,11 @@ } }, "info": { - "marketcap_usd": 168706565383, - "t1_coins": 635, - "t2_coins": 634, - "total_marketcap_usd": 210612300355, - "updated_at": 1535123434, - "updated_at_readable": "Fri Aug 24 17:10:34 2018" + "marketcap_usd": 176073887407, + "t1_coins": 628, + "t2_coins": 627, + "total_marketcap_usd": 230413359720, + "updated_at": 1535465732, + "updated_at_readable": "Tue Aug 28 16:15:32 2018" } } \ No newline at end of file diff --git a/defs/coins_details.override.json b/defs/coins_details.override.json index 671be8bd8..db79f8b30 100644 --- a/defs/coins_details.override.json +++ b/defs/coins_details.override.json @@ -5,6 +5,19 @@ "erc20:eth:GNT": { "coinmarketcap_alias": "golem-network-tokens" }, + "erc20:eth:EOS": { + "hidden": 1, + "notes": "EOS has a mainnet now" + }, + "erc20:eth:VEN": { + "links": { + "Homepage": "https://www.vechain.com" + } + }, + "erc20:eth:YUPIE": { + "hidden": 1, + "notes": "Replaced by YUP" + }, "bitcoin:BCH": { "wallet": { "Electron Cash": "https://electroncash.org" diff --git a/defs/duplicity_overrides.json b/defs/duplicity_overrides.json index a4a535a42..7832becea 100644 --- a/defs/duplicity_overrides.json +++ b/defs/duplicity_overrides.json @@ -2,5 +2,7 @@ "erc20:eth:BTL (Battle)": true, "erc20:eth:BTL (Bitlle)": true, "erc20:eth:LINK Platform": true, - "erc20:eth:NXX": false + "erc20:eth:NXX": false, + "erc20:eth:Hdp": true, + "erc20:eth:Hdp.Ñ„": true } diff --git a/defs/support.json b/defs/support.json index 166b5c48c..f956cfd5f 100644 --- a/defs/support.json +++ b/defs/support.json @@ -327,7 +327,6 @@ "erc20:eth:HST": "1.6.2", "erc20:eth:HVN": "1.6.2", "erc20:eth:HYDRO": "1.6.2", - "erc20:eth:Hdp": "1.6.2", "erc20:eth:IAD": "1.6.2", "erc20:eth:ICE": "1.6.2", "erc20:eth:ICN": "1.6.2", @@ -750,6 +749,8 @@ "erc20:eth:GUP": "(AUTO) duplicate key", "erc20:eth:HOT:0": "(AUTO) duplicate key", "erc20:eth:HOT:1": "(AUTO) duplicate key", + "erc20:eth:Hdp": "(AUTO) duplicate key", + "erc20:eth:Hdp.\u0444": "(AUTO) duplicate key", "erc20:eth:JBX:0": "(AUTO) duplicate key", "erc20:eth:JBX:1": "(AUTO) duplicate key", "erc20:eth:KC": "(AUTO) duplicate key", @@ -1138,7 +1139,6 @@ "erc20:eth:HST": "2.0.7", "erc20:eth:HVN": "2.0.7", "erc20:eth:HYDRO": "2.0.7", - "erc20:eth:Hdp": "2.0.7", "erc20:eth:IAD": "2.0.7", "erc20:eth:ICE": "2.0.7", "erc20:eth:ICN": "2.0.7", @@ -1567,6 +1567,8 @@ "erc20:eth:GUP": "(AUTO) duplicate key", "erc20:eth:HOT:0": "(AUTO) duplicate key", "erc20:eth:HOT:1": "(AUTO) duplicate key", + "erc20:eth:Hdp": "(AUTO) duplicate key", + "erc20:eth:Hdp.\u0444": "(AUTO) duplicate key", "erc20:eth:JBX:0": "(AUTO) duplicate key", "erc20:eth:JBX:1": "(AUTO) duplicate key", "erc20:eth:KC": "(AUTO) duplicate key", From 0a2f9bb10cc277637007cfe0316397fc7fdbd0df Mon Sep 17 00:00:00 2001 From: matejcik Date: Tue, 28 Aug 2018 16:35:38 +0200 Subject: [PATCH 538/767] tools: add a simple tool to compare live t.io/coins with current json --- tools/diffize_coins_details.py | 60 ++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100755 tools/diffize_coins_details.py diff --git a/tools/diffize_coins_details.py b/tools/diffize_coins_details.py new file mode 100755 index 000000000..430b8f272 --- /dev/null +++ b/tools/diffize_coins_details.py @@ -0,0 +1,60 @@ +#!/usr/bin/env python3 + +import click +import json +import os +import requests +import tempfile +import subprocess +import sys + + +LIVE_URL = "https://trezor.io/static/json/coins_details.json" +COINS_DETAILS = os.path.join( + os.path.dirname(__file__), "..", "defs", "coins_details.json" +) + + +def diffize_file(coins_details, tmp): + coins_list = list(coins_details["coins"].values()) + for coin in coins_list: + coin.pop("marketcap_usd", None) + links = coin.get("links", {}) + wallets = coin.get("wallet", {}) + for link in links: + links[link] = links[link].rstrip("/") + for wallet in wallets: + wallets[wallet] = wallets[wallet].rstrip("/") + + if not coin.get("wallet"): + coin.pop("wallet", None) + + coins_list.sort(key=lambda c: c["name"]) + + for coin in coins_list: + name = coin["name"] + for key in coin: + print(name, "\t", key, ":", coin[key], file=tmp) + tmp.flush() + + +@click.command() +def cli(): + """Compare data from trezor.io/coins with current coins_details.json + + Shows a nicely formatted diff between the live version and the trezor-common + version. Useful for catching auto-generation problems, etc. + """ + live_json = requests.get(LIVE_URL).json() + with open(COINS_DETAILS) as f: + coins_details = json.load(f) + + Tmp = tempfile.NamedTemporaryFile + with Tmp("w") as tmpA, Tmp("w") as tmpB: + diffize_file(live_json, tmpA) + diffize_file(coins_details, tmpB) + subprocess.call(["diff", "-u", "--color=auto", tmpA.name, tmpB.name]) + + +if __name__ == "__main__": + cli() From 31b8e872babfd3bf2df5845bea70a492789793eb Mon Sep 17 00:00:00 2001 From: leoreinaux Date: Thu, 30 Aug 2018 07:04:06 -0300 Subject: [PATCH 539/767] change smartcash curve (#202) --- defs/bitcoin/smartcash.json | 2 +- defs/bitcoin/smartcash_testnet.json | 2 +- tools/coin_info.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/defs/bitcoin/smartcash.json b/defs/bitcoin/smartcash.json index 733f283c6..a918d901e 100644 --- a/defs/bitcoin/smartcash.json +++ b/defs/bitcoin/smartcash.json @@ -5,7 +5,7 @@ "website": "https://smarcash.cc", "github": "https://github.com/SmartCash/Core-Smart", "maintainer": "Leandro Reinaux ", - "curve_name": "secp256k1", + "curve_name": "secp256k1_smart", "address_type": 63, "address_type_p2sh": 18, "maxfee_kb": 1000000, diff --git a/defs/bitcoin/smartcash_testnet.json b/defs/bitcoin/smartcash_testnet.json index 632562ae7..132ff6848 100644 --- a/defs/bitcoin/smartcash_testnet.json +++ b/defs/bitcoin/smartcash_testnet.json @@ -5,7 +5,7 @@ "website": "https://smartcash.cc", "github": "https://github.com/SmartCash/Core-Smart", "maintainer": "Leandro Reinaux ", - "curve_name": "secp256k1", + "curve_name": "secp256k1_smart", "address_type": 65, "address_type_p2sh": 21, "maxfee_kb": 1000000, diff --git a/tools/coin_info.py b/tools/coin_info.py index 9f78dd71d..3eb7198bb 100755 --- a/tools/coin_info.py +++ b/tools/coin_info.py @@ -114,7 +114,7 @@ BTC_CHECKS = [ check_key("github", str, regex=r"^https://github.com/.*[^/]$"), check_key("maintainer", str), check_key( - "curve_name", str, choice=["secp256k1", "secp256k1_decred", "secp256k1_groestl"] + "curve_name", str, choice=["secp256k1", "secp256k1_decred", "secp256k1_groestl", "secp256k1_smart"] ), check_key("address_type", int), check_key("address_type_p2sh", int), From 9f51d58f30f7cf9dfb97c0c58f4a122634fb4112 Mon Sep 17 00:00:00 2001 From: matejcik Date: Tue, 28 Aug 2018 18:26:13 +0200 Subject: [PATCH 540/767] tools: finish release flow --- tools/support.py | 47 +++++++++++++++++++++++++++++++++-------------- 1 file changed, 33 insertions(+), 14 deletions(-) diff --git a/tools/support.py b/tools/support.py index 969b5d5e6..09143e68b 100755 --- a/tools/support.py +++ b/tools/support.py @@ -285,11 +285,12 @@ def check(ignore_tokens, ignore_missing): @click.argument("device") @click.option("-r", "--version", help="Set explicit version string (default: guess from latest release)") @click.option("--git-tag/--no-git-tag", "-g", default=False, help="Create a corresponding Git tag") -@click.option("--release-soon/--no-release-soon", default=True, help="Release coins marked 'soon'") @click.option("--release-missing/--no-release-missing", default=True, help="Release coins with missing support info") @click.option("-n", "--dry-run", is_flag=True, help="Do not write changes") @click.option("-s", "--soon", is_flag=True, help="Only set missing support-infos to be released 'soon'") @click.option("-f", "--force", is_flag=True, help="Proceed even with bad version/device info") +@click.option("-y", "--add-all", is_flag=True, help="Do not ask for confirmation, add all selected coins") +@click.option("-v", "--verbose", is_flag=True, help="Be more verbose") # fmt: on @click.pass_context def release( @@ -297,11 +298,12 @@ def release( device: str, version, git_tag, - release_soon, release_missing, dry_run, soon, force, + add_all, + verbose, ): """Release a new Trezor firmware. @@ -315,6 +317,9 @@ def release( `device` can be "1", "2", or a string matching `support.json` key. Version is autodetected by downloading a list of latest releases and incrementing micro version by one, or you can specify `--version` explicitly. + + Unless `--add-all` is specified, the tool will ask you to confirm each added + coin. ERC20 tokens are added automatically. Use `--verbose` to see them. """ # check condition(s) if soon and git_tag: @@ -375,19 +380,18 @@ def release( print("Fixing up data...") ctx.invoke(fix, dry_run=True) - # process missing (not listed) supportinfos - if release_missing: - missing_list = find_unsupported_coins(coins_dict)[device] - for coin in missing_list: - key = coin["key"] - # we should have no unprocessed dup tokens at this point - assert not (coin.get("duplicate") and coin_info.is_token(coin)) - print(f"Adding missing {key} ({coin['name']})") - set_supported(device, key, version) + def maybe_add(coin, label): + add = False + if add_all: + add = True + else: + text = f"Add {label} coin {coin['key']} ({coin['name']})?" + add = click.confirm(text, default=True) + if add: + set_supported(device, coin["key"], version) # if we're releasing, process coins marked "soon" - # (`not soon` because `soon` means set release version to "soon") - if not soon and release_soon: + if not soon: supported, _ = support_dicts(device) soon_list = [ coins_dict[key] @@ -396,9 +400,24 @@ def release( ] for coin in soon_list: key = coin["key"] - print(f"Adding soon-released {key} ({coin['name']})") + print(f"Releasing {key} ({coin['name']}) marked 'soon'") set_supported(device, key, version) + # process missing (not listed) supportinfos + if release_missing: + missing_list = find_unsupported_coins(coins_dict)[device] + tokens = [coin for coin in missing_list if coin_info.is_token(coin)] + nontokens = [coin for coin in missing_list if not coin_info.is_token(coin)] + for coin in tokens: + key = coin["key"] + assert not coin.get("duplicate") + if verbose: + print(f"Adding missing {key} ({coin['name']})") + set_supported(device, key, version) + + for coin in nontokens: + maybe_add(coin, "missing") + tagname = f"{device}-{version}" if git_tag: if dry_run: From 57ea8f087f0eb447218ef27d51c349ff9b0f7977 Mon Sep 17 00:00:00 2001 From: matejcik Date: Wed, 29 Aug 2018 17:19:54 +0200 Subject: [PATCH 541/767] defs: add README --- defs/README.md | 142 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 defs/README.md diff --git a/defs/README.md b/defs/README.md new file mode 100644 index 000000000..8041f0901 --- /dev/null +++ b/defs/README.md @@ -0,0 +1,142 @@ +# Coin Definitions + +We currently recognize five categories of coins. + +#### `bitcoin` + +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. + +#### `eth` + +The file [`ethereum/networks.json`](ethereum/networks.json) has a list of descriptions +of Ethereum networks. Each network must also have a PNG icon in `ethereum/.png` +file, where `short` is lowercased `shortcut` field from the JSON. + +#### `erc20` + +`ethereum/tokens` is a submodule linking to [Ethereum Lists](https://github.com/ethereum-lists/tokens) 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. + +#### `nem` + +The file [`nem/nem_mosaics.json`](nem/nem_mosaics.json) describes NEM mosaics. + +#### `misc` + +Supported coins that are not derived from Bitcoin, Ethereum or NEM are currently grouped +and listed in separate file [`misc/misc.json`](misc/misc.json). Each coin must also have +an icon in `misc/.png`, where `short` is lowercased `shortcut` field from the JSON. + +## Keys and Duplicate Detection + +Throughout the system, coins are identified by a _key_ - a colon-separated string +generated from the coin's type and shortcut: + +* for Bitcoin-likes, key is `bitcoin:XYZ` +* for Ethereum networks, key is `eth:XYZ` +* for ERC20 tokens, key is `erc20::XYZ`, where `net` is a lowercase shortcut + of the Ethereum network on which the token lives (e.g., `eth`, `ella`, `pirl`) +* for NEM mosaic, key is `nem:XYZ` +* for others, key is `misc:XYZ` + +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. Especially in the ERC20 world this is +common occurence. 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. + +This doesn't matter, because **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. + +Duplicate detection works as follows: + +1. a _symbol_ is split off from the shortcut string. E.g., for `CAT (BlockCat)`, symbol + is just `CAT`. It is compared, case-insensitive, with other coins (so `WIC` and `WiC` + are considered the same symbol), and identical symbols are put into a _bucket_. +2. if _all_ coins in the bucket also have a suffix (`CAT (BlockCat)` and `CAT (BitClave)`), + they are _not_ considered duplicate. +3. if _any_ coin in the bucket does _not_ have a suffix (`MIT` and `MIT (Mychatcoin)`), + all coins in the bucket are considered duplicate. +4. Duplicate tokens (coins from the `erc20` group) are automatically removed from data. + Duplicate non-tokens are marked but not removed. For instance, `bitcoin:FTC` (Feathercoin) + and `erc20:eth:FTC` (FTC) are duplicate, and `erc20:eth:FTC` is removed. +5. If two non-tokens collide with each other, it is an error that fails the CI build. + +The file [`duplicity_overrides.json`](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. + + +# Coins Details + +The file [`coins_details.json`](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 this is not viable for some reason, or if there is no source information (such as +links to third-party wallets), you can also edit [`coins_details.override.json`](coins_details.override.json). +External contributors should not touch this file unless asked to. + + +# Support Information + +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](https://github.com/trezor/connect) +and `webwallet` for [https://wallet.trezor.io/]. In further description, the word "device" +applies to Connect and webwallet as well. + +This information is stored in [`support.json`](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** explicitly: coin's key is listed in the device's `supported` + dictionary. If it's a Trezor device, it contains the firmware version from which + it is supported. For connect and webwallet, the value is simply `true`. +* **unsupported** explicitly: coin's key is listed in the device's `unsupported` + dictionary. The value is a string with reason for not supporting. + For connect and webwallet, if the key is not listed at all, it is also considered unsupported. + ERC20 tokens detected as duplicates are also considered unsupported. +* **soon**: coin's key is listed in the device's `supported` dictionary, with + the value `"soon"`. + ERC20 tokens that are not listed at all are also considered `soon`, unless detected + as duplicates. +* **unknown**: coin's key is not listed at all. + +_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](../tools) for details. From 85928179e368882b7806b1bfe8d42812f60c111c Mon Sep 17 00:00:00 2001 From: matejcik Date: Wed, 29 Aug 2018 17:24:16 +0200 Subject: [PATCH 542/767] defs: better links in README --- defs/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/defs/README.md b/defs/README.md index 8041f0901..4bee070e9 100644 --- a/defs/README.md +++ b/defs/README.md @@ -92,7 +92,7 @@ You can use `./tools/cointool.py check -d all` to inspect duplicate detection in The file [`coins_details.json`](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]. +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. @@ -110,7 +110,7 @@ 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](https://github.com/trezor/connect) -and `webwallet` for [https://wallet.trezor.io/]. In further description, the word "device" +and `webwallet` for [Trezor Wallet](https://wallet.trezor.io/). In further description, the word "device" applies to Connect and webwallet as well. This information is stored in [`support.json`](support.json). From 1dc75fb0511dbfa669cda8457283ee83264568ac Mon Sep 17 00:00:00 2001 From: matejcik Date: Thu, 30 Aug 2018 16:56:40 +0200 Subject: [PATCH 543/767] defs: add Wanchain to misc because while it's technically an Ethereum fork, it doesn't fit into networks --- defs/misc/misc.json | 8 ++++++++ defs/misc/wan.png | Bin 0 -> 5938 bytes 2 files changed, 8 insertions(+) create mode 100644 defs/misc/wan.png diff --git a/defs/misc/misc.json b/defs/misc/misc.json index d4cfbb1a9..1f03ca52e 100644 --- a/defs/misc/misc.json +++ b/defs/misc/misc.json @@ -59,5 +59,13 @@ "links": { "Homepage": "https://ont.io" } + }, + { + "name": "Wanchain", + "shortcut": "WAN", + "slip44": 5718350, + "links": { + "Homepage": "https://wanchain.org" + } } ] diff --git a/defs/misc/wan.png b/defs/misc/wan.png new file mode 100644 index 0000000000000000000000000000000000000000..94bf1983f6ce40aa7a17deb244f7ddb253dcd33b GIT binary patch literal 5938 zcmV-27tQF2P)C00004XF*Lt006O% z3;baP00001b5ch_0Itp)=>Px&08mU+MNDaNKD_HbyzLWds{sH12xn(GfxSMw>;P4% zW8&)o0RJXwpA%}X2S$S_ZJ|EA>OQ>fKD_G?Yp)V&tv|c#8E2wDyY4-_>PLV79Auq5 zz3Dx??>xQfJG}2ZzUw``?L58gK)dM@YOOxK?K`~eKE3KZyz4-_>_5Edh@P51yzD=_ z>_5BjKD+Ngy6{1|?LxZkK)dNYyze`_?>)TlJH6^Vz2`c<>_NKfI=${Pj=Vj)?PjOE zIlk;lwAVwr>CHPPNwn5Iy7WQ1=tQ^QLAmloy51yeph-?w z9cZKeZMi08mLF=Q zMz`cXyzWM~<~_UfHo)sWz2-K*?@PAWA!eH1=d>Lt@Mz`Kc zw(&r^^hUSyK)c^cwb3AEoEmDVO|jz~Wtu#`4UV|E9niFcR6>6*#YOE4#tq*Lk6l$v#a=H_1tP^mz z6l$y$YO4}zt`cgm6>zo{aJLX^u@P&p6>6#%X{r%xt`Tgj5^Av)Z?YC?s1tIy4{Nd$ zaJCg~v>9op4r{a$Yq1(`unlas6lB|Q%CO1>z6{Yms{%8Q?Q!)q z+5UP%i5ppG$B?@JA-!R>7rfcZ<^5xir2Rs-g$=a+T#0kLm&Dn=-ABk!t)CTX5&LqK zx1Og>cf&dXD~RB$DyXQbBI??wRaca{wOX}yYm2qp zUAx=;Y=S%_L`k4UR8~~n^-=Baoq-C4hzJ4x@%{l}m^t@*&iS2l<_3ZWzs5pPWbUFs zh(v-$W04%7$hqPB6opd(%E%+w0QYBqA;)}#3pjt=0uaa}yT1bjZOP5~T(m>L=da4D zSQJTI8nFeupYqQgLa7UaA_$Tbw^*K@;R=l%DFo73C?cs);U2fmn~s8&?=(-8$_WNi za3GD$_E5&kW1iW2*GN44Z~*@lxk9#>C)+%Wh|Tave@kw%*Zcs6zwDe8g8@LCG;Pne zQYQh^8AyRVym;OTp{8qmN1iHzM!CdcuNvgK2)5@<4hEl za%8X&#uN;R$WxI#$xkAIInH5jIgZS9JP$U*7X6@LDIcX#5Cn!%1cgP+ZKcv!8VzMI zP~r;Lj-Qu1XLzIlZ0=sDawLD){DXS(;dcbYF4zPY#d!Se0R6Dd43yb+tqiv*&_4zsGh3*?TYSDUI!MWkVkT8@Bx+2UIO6g2N zCSS%ZnQp1>jJN$=;ViZHBsMA%#pfq``FctO6p@FcKVEgv^pbEnCh<^vQrzr#Wpt)D zlkO;p#VEmFMG$o}^ys@5mpkzhwI2=l5p|oNtxjVcrN?+DF4_(L4YHGvt}a7W0`DBY ztr}DVOu=IT+wy{ghAai5@2X_6ZYT!RxrEM-WY6^)O_O83S!w!NW{#QL4)Ydcw%Q2G1kU=xckZ(7)GauVa_Z}EUIM5(-X`^mFN}e-fRzX znVKVx6Q!ldOFh)9II7sR$}?MDHV^pF-J0W-t)d_(jRs@b5%dThj+Mse%f6UOB*$F8 zAVCoe6Vtc>TsG{6(gXOIA1DbY%vT+gzA%F5rUS41$X)Yf`%?Li>Q3dMY7WPlHZNx1 zj^iNur2a&^J0W-aYX5KHv#LLjKG1GBv4FX(tMs+jL@(JEE*vvlp|+5 zrmUfzN$5Y8xD=WKk`h0z)r+cz*hsGg3Vk z4))wf3~IV94SwbjyMnTIZCOrmkU4+I*5JqNl0+}Qgy`mk26!Gtvj%_i#cM7oQI5G& zP#CmSlqONH;cZTugKuWeq|IdTz?`H)imh7BPz!vpW8RyGc;Ew4h}arVFO5fqVlgcD zXXIvpPUQkV8RbnV^z%n0qU-|MYnuy;RxJ&($*Q@0RS``jrP|p3^3s-RX+kht}6O3=jY;>QzevT(#HN8%7i0+ADxp0IvXs34lDx0M?KVc@zQ2#OBsEqXa+( zH+-_}#B%)U(EtFuF8`?gLF>iCCn1vchy#E#&w<0ySEH1n2V0k(0tQGU3Sa{~{%&Kf zE=sR&YJ2Z-%Xx6D8c!ZM0Pvp;JFosSuE}uc&QDFIkWDR5-kjN=6f6q>R6q00(;cCk zw2g+QCe4j%!zQaAYuBw`^8D{mED3-gITwL*|c3o7JhPbbxq3cCYYogwI^6uZClLw0d0PAnR`@f$<+e{j5uT@t^rMAEI zq3-QYIknvn+Hn(;EnG@%gyM!4<8ye`uaWqCR4M~pwnzp-oi_gY;9ox(D*)k=dCND zQEfGstLn8~($nd5+PX)bpY=6bV*^k|eYCE2>Hc2zFjN2%__%**hmjhhY3S*-4u9Zs zuTV5-t?t*JU-6sPI5Yq}oPYhG@7`c`5qo zL6fP^Mh0VzmD11`;K}tncRJRAlKeFfLjVBoFIm6tn#QW;QB|LfjMV7%cBPq$Fz8KI zk2{uuJdCj!5&+TombEl0O(vbOxp%T(S3dsFvW*?Ll~uip!l2b(et0+f=B)``B{>)X z{CJKxz7y?Ns3yI(x#3y4HQu=KQ*~X_!#^|vxw|g;@M5dds=i96H5&h4yp_i_b!FlA z9!om5^GiZv;xC2-gb+5-4Ae$Q~3Jg#-ol!f%jj>vx41>ODUC=6{wIjAp zt7EHm)TzI5y4aa6GYQdZp44n?fdIm=h_-d^4KRQNOjw-vNB+vY@4M%md+vAc{f@@a zUxFJ|dd+QJ zl65@>qee4g>8Wp-j_5l#KMx|zd4L;7?0WUleYvTxZ)BEGtNQA0(i&pVuSQPZq3N`Q z{Q#m`PMuP>I5`=O9R~Htd8upNOijB_ygfk52UqH`AKKmK7>2JD4NO!IbVOBS`C{Fr+1k3{6YJB+n}0a=1Q&-4{a?Tjv?$e3s_X#>O7yrIuXTIa z-DR@q^bWWH*g#>xbt<)9uUFmfpI0qG=yXP>u6vsy1%09#0mMAwtxezPl1+rlT&ulx z3$KSUkE?Js2pfw+uOV<;e7@Ph=KOFD;Nnz3GAJo-p#~5bf0HPER8;;)?uK<|gYAqMc zG)+%W-L0txKx^y$%qHI&!P;hkH_kd9d#&3-`x#v zIEc9#>)Vq8V6Hb<3?{W&-tzePYj%{u1Kjc4=6hWVO-&ze(rPCMz|yE|z1diW_kMP6 z^wJyW*kI#dUu`02w=BdvI<1`me${LXfRVU+^N9Qrth-zsxWIsZIFEm?(CaORyORQ7 zHqTK!RF9xn_89^A;SX;#{p3_ds3rxVk=E6I_9?aZ7`HS4!bh8$T9a!g2*Ap{lj|Bb zJwIm2`7}Q`BOd}P9~Fh;4g%=wF}Io;iMA5OojSm1W;};X@PWn5%yvK(>P)p-f>7HD zp!PurUSe#kSG2UhapP&3=P5Uqzz=`i({8CUfY0M?b^_4d?l6|96fM2*?8kN1B(Cp& z2Htl?E}YnXk4DqOebv4^pzY|;x3)GvK5+q=u@FJxCLv%r5QiXOh_8-yx5&+H20Qrx z(NPBy-^^F6x4mI+CS*@c!U5i`Ca<_U4{@~~YIL_H6LtZpQEA<}`fCa>g=>+A@(#N1 za99rq0cRGypIUGb$|?bbd7!#6CtLTHu>q)XeT{)|lJ~-@Y8Lpz^1YP-WHCR$w{TsC zBYuF|jr1~!J5wz5^JNzQ*6N4fAEPzNOZs|B)UEZjCfgP;8nkoVn!1mzw!RU!zK}f^ z^};YZ+dpJ``8>Pza8Qd^%3@RLC`Kl+MV?o#Mj$Q=;n80A!&sxavBVfV1^@z=w{)NF zXM9VpuBh}Y;91o#DXb)h$BLEq2|9rDU`Ldx54GlfS&JC4De$ZcJf3c^jN713T zT(k|KMq&Q(%eMep7iX76IfdfH)cNz_DCBI9!`pJhrNwp#*R2A0HY;XXS^^ZolD)En z4<~HM6R%5mb_Q(a!l{d$@^{)|ZC&3tzd*aQ`-GM8xgh0RMM>W7-YFagR3ULOzD(x1 zZLtiBdS;C)R6vlmdjoUgB@*cwZ)iR;7mJq_@GplSN(XNOBfK`VyI1aJ(*h4W2RVm} zb6jSOPe_hGlN8M)VbM~ynC&fOvlG@7tsGAp37uaZUCHJ#FeN6SV;DxlIK2IAZUQHA z(GusubH>e`=5Iy=IRD*0zZfjG;FIxjmgtgrKRet@Bvn#<5|zTaTyH9$vSQ302B>|> zFADVIv%QrlRUqJTB@!h)MkM73{L90Joi=U!Xw#3Q0elXMt)aO=Tc&3p-dcg?@Tmnt zj1D3iBk@R>*L+Fja$DIMUI~yKgYkY0srgSB3s1uylkJ5VDoyPpW7T zB;tu(7xvPWN4|Hks3PTZF86=xGF0NB6#s6t!U$?P%NC@1p+mxAN+{KnE;-{dO4jQF zzP-`rA^0ehhOK;;B?%o+mJSH`mohwfA^A&?8M8)wKJMGCi!T-W2!^D1N@-f^&X>!6 zVIz^d*q2tJ!1BN^qXV<%4r^+dAAG$cB)%}_+E6IK@mFR?ukra)1#`$$q-C6Na&cyu zZ9SBoInCNpR_ZNbFj2BqVTUoLO5cQl{cMU~S$e-^t%~Ly!9rdThsEJqy-y=tJJJ(?M`EGtIf9>|mi(R~?Y4=#@$D6T#LAizy`OZdwunMdbwLm6Zi zhvS3!%X}7uQi?OCq|*b+oXht~Hu#Y%I0e~B0t_U0l&j=Y>E0Xi!3GGelO^60?L+*X>I-l%gXiI_LQLb(*fR0ls>GXgcRT>62)A3Jz~1s zE@2Ntb|F=QkbRb)7R-}Gdt(YDA=-9c_eY-Dp9V_#02n@gOE{1S)99_ zlkjfA^}J`@_&l&tuPv4Z?9AJFuz2k=a{j0#8TP?m%D%||PxJd=D6G#!CfD=*UveUt U3k=E<;{X5v07*qoM6N<$f~NXy82|tP literal 0 HcmV?d00001 From 00fcdb5605f575db0a2b8791a98195d8ad0e8fcd Mon Sep 17 00:00:00 2001 From: matejcik Date: Thu, 30 Aug 2018 16:57:08 +0200 Subject: [PATCH 544/767] support: release Trezor 1 v1.6.3 --- defs/support.json | 97 +++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 81 insertions(+), 16 deletions(-) diff --git a/defs/support.json b/defs/support.json index f956cfd5f..d69c671b8 100644 --- a/defs/support.json +++ b/defs/support.json @@ -22,44 +22,46 @@ "bitcoin:DASH": "1.5.2", "bitcoin:DCR": "1.6.2", "bitcoin:DGB": "1.6.0", - "bitcoin:DNR": "soon", + "bitcoin:DNR": "1.6.3", "bitcoin:DOGE": "1.5.2", "bitcoin:FJC": "1.6.1", - "bitcoin:FLASH": "soon", - "bitcoin:FTC": "soon", + "bitcoin:FLASH": "1.6.3", + "bitcoin:FTC": "1.6.3", "bitcoin:GRS": "1.6.2", - "bitcoin:KOTO": "soon", + "bitcoin:KOTO": "1.6.3", "bitcoin:LTC": "1.5.2", "bitcoin:MONA": "1.6.0", - "bitcoin:MUE": "soon", + "bitcoin:MUE": "1.6.3", "bitcoin:NMC": "1.5.2", - "bitcoin:PTC": "soon", - "bitcoin:SMART": "soon", + "bitcoin:PTC": "1.6.3", + "bitcoin:SMART": "1.6.3", "bitcoin:TAZ": "1.6.2", "bitcoin:TBCH": "1.6.2", - "bitcoin:TBTG": "soon", + "bitcoin:TBTG": "1.6.3", "bitcoin:TDCR": "1.6.2", "bitcoin:TEST": "1.5.2", "bitcoin:TLTC": "1.6.2", "bitcoin:VIA": "1.6.2", "bitcoin:VTC": "1.6.1", - "bitcoin:XMY": "soon", + "bitcoin:XMY": "1.6.3", "bitcoin:XZC": "1.6.2", "bitcoin:ZEC": "1.6.2", "bitcoin:tDASH": "1.6.2", "bitcoin:tGRS": "1.6.2", - "bitcoin:tSMART": "soon", + "bitcoin:tSMART": "1.6.3", "bitcoin:tXZC": "1.6.2", "erc20:ella:MINING": "1.6.2", "erc20:etc:BEC": "1.6.2", "erc20:eth:$FFC": "1.6.2", "erc20:eth:$FXY": "1.6.2", + "erc20:eth:$HUR": "1.6.3", "erc20:eth:$TEAK": "1.6.2", "erc20:eth:0xBTC": "1.6.2", "erc20:eth:1ST": "1.6.2", "erc20:eth:1WO": "1.6.2", "erc20:eth:2DC": "1.6.2", "erc20:eth:300": "1.6.2", + "erc20:eth:3LT": "1.6.3", "erc20:eth:A18": "1.6.2", "erc20:eth:ABT": "1.6.2", "erc20:eth:ABYSS": "1.6.2", @@ -75,11 +77,13 @@ "erc20:eth:AION": "1.6.2", "erc20:eth:AIR": "1.6.2", "erc20:eth:AIX": "1.6.2", + "erc20:eth:AKC": "1.6.3", "erc20:eth:ALCO": "1.6.2", "erc20:eth:ALIS": "1.6.2", "erc20:eth:ALTS": "1.6.2", "erc20:eth:AMB": "1.6.2", "erc20:eth:AMIS": "1.6.2", + "erc20:eth:AMLT": "1.6.3", "erc20:eth:AMN": "1.6.2", "erc20:eth:AMO": "1.6.2", "erc20:eth:AMTC": "1.6.2", @@ -103,6 +107,7 @@ "erc20:eth:AVT": "1.6.2", "erc20:eth:AX1": "1.6.2", "erc20:eth:AXP": "1.6.2", + "erc20:eth:AXPR": "1.6.3", "erc20:eth:BANX": "1.6.2", "erc20:eth:BAT": "1.6.2", "erc20:eth:BBK": "1.6.2", @@ -116,6 +121,7 @@ "erc20:eth:BEE": "1.6.2", "erc20:eth:BERRY": "1.6.2", "erc20:eth:BET": "1.6.2", + "erc20:eth:BETHER": "1.6.3", "erc20:eth:BETR": "1.6.2", "erc20:eth:BKB": "1.6.2", "erc20:eth:BKRx": "1.6.2", @@ -137,6 +143,7 @@ "erc20:eth:BON": "1.6.2", "erc20:eth:BOP": "1.6.2", "erc20:eth:BOU": "1.6.2", + "erc20:eth:BOX": "1.6.3", "erc20:eth:BPT": "1.6.2", "erc20:eth:BQX": "1.6.2", "erc20:eth:BRAT": "1.6.2", @@ -153,6 +160,7 @@ "erc20:eth:BTQ": "1.6.2", "erc20:eth:BTT": "1.6.2", "erc20:eth:BTTX": "1.6.2", + "erc20:eth:BTZ": "1.6.3", "erc20:eth:BUC": "1.6.2", "erc20:eth:BeerCoin": "1.6.2", "erc20:eth:C20": "1.6.2", @@ -166,6 +174,7 @@ "erc20:eth:CAT (BitClave)": "1.6.2", "erc20:eth:CAT (Blockcat)": "1.6.2", "erc20:eth:CATs (BitClave)_Old": "1.6.2", + "erc20:eth:CBIX": "1.6.3", "erc20:eth:CC3": "1.6.2", "erc20:eth:CCC (CryptoCrashCourse)": "1.6.2", "erc20:eth:CCC (ICONOMI)": "1.6.2", @@ -174,6 +183,8 @@ "erc20:eth:CDL": "1.6.2", "erc20:eth:CDT": "1.6.2", "erc20:eth:CEEK": "1.6.2", + "erc20:eth:CET": "1.6.3", + "erc20:eth:CFC": "1.6.3", "erc20:eth:CFI": "1.6.2", "erc20:eth:CFTY": "1.6.2", "erc20:eth:CHSB": "1.6.2", @@ -193,6 +204,7 @@ "erc20:eth:COFI": "1.6.2", "erc20:eth:COIL": "1.6.2", "erc20:eth:COIN": "1.6.2", + "erc20:eth:CORI": "1.6.3", "erc20:eth:COV": "1.6.2", "erc20:eth:CPEX": "1.6.2", "erc20:eth:CPY": "1.6.2", @@ -200,16 +212,20 @@ "erc20:eth:CRB": "1.6.2", "erc20:eth:CRED": "1.6.2", "erc20:eth:CREDO": "1.6.2", + "erc20:eth:CRGO": "1.6.3", + "erc20:eth:CRMT": "1.6.3", "erc20:eth:CRPT": "1.6.2", "erc20:eth:CRT": "1.6.2", "erc20:eth:CTF": "1.6.2", "erc20:eth:CTG": "1.6.2", + "erc20:eth:CTGC": "1.6.3", "erc20:eth:CTL": "1.6.2", "erc20:eth:CTT": "1.6.2", "erc20:eth:CTX": "1.6.2", "erc20:eth:CVC": "1.6.2", "erc20:eth:CXC": "1.6.2", "erc20:eth:CXO": "1.6.2", + "erc20:eth:CYFM": "1.6.3", "erc20:eth:CryptoCarbon": "1.6.2", "erc20:eth:DAB": "1.6.2", "erc20:eth:DADI": "1.6.2", @@ -223,6 +239,7 @@ "erc20:eth:DAXT": "1.6.2", "erc20:eth:DAY": "1.6.2", "erc20:eth:DCA": "1.6.2", + "erc20:eth:DCC": "1.6.3", "erc20:eth:DCL": "1.6.2", "erc20:eth:DCN": "1.6.2", "erc20:eth:DDF": "1.6.2", @@ -230,8 +247,12 @@ "erc20:eth:DEEZ": "1.6.2", "erc20:eth:DENT": "1.6.2", "erc20:eth:DGPT": "1.6.2", + "erc20:eth:DGS": "1.6.3", + "erc20:eth:DGTX": "1.6.3", "erc20:eth:DGX": "1.6.2", + "erc20:eth:DGX1": "1.6.3", "erc20:eth:DICE": "1.6.2", + "erc20:eth:DIP": "1.6.3", "erc20:eth:DIVX": "1.6.2", "erc20:eth:DKP": "1.6.2", "erc20:eth:DLT": "1.6.2", @@ -240,6 +261,7 @@ "erc20:eth:DNX": "1.6.2", "erc20:eth:DPP": "1.6.2", "erc20:eth:DRGN": "1.6.2", + "erc20:eth:DRVH": "1.6.3", "erc20:eth:DSC": "1.6.2", "erc20:eth:DTH": "1.6.2", "erc20:eth:DTR": "1.6.2", @@ -248,14 +270,17 @@ "erc20:eth:EAGLE": "1.6.2", "erc20:eth:ECN": "1.6.2", "erc20:eth:ECO2": "1.6.2", + "erc20:eth:ECP": "1.6.3", "erc20:eth:EDC": "1.6.2", "erc20:eth:EDG": "1.6.2", "erc20:eth:EDO": "1.6.2", + "erc20:eth:EDR": "1.6.3", "erc20:eth:EGT": "1.6.2", "erc20:eth:EHT": "1.6.2", "erc20:eth:ELF": "1.6.2", "erc20:eth:ELIX": "1.6.2", "erc20:eth:ELTCOIN": "1.6.2", + "erc20:eth:ELY": "1.6.3", "erc20:eth:EMON": "1.6.2", "erc20:eth:EMONT": "1.6.2", "erc20:eth:EMT": "1.6.2", @@ -276,7 +301,9 @@ "erc20:eth:EVN": "1.6.2", "erc20:eth:EVX": "1.6.2", "erc20:eth:EXMR": "1.6.2", + "erc20:eth:EXY": "1.6.3", "erc20:eth:FAM": "1.6.2", + "erc20:eth:FAN": "1.6.3", "erc20:eth:FKX": "1.6.2", "erc20:eth:FLIXX": "1.6.2", "erc20:eth:FLP": "1.6.2", @@ -287,8 +314,10 @@ "erc20:eth:FRD": "1.6.2", "erc20:eth:FTR": "1.6.2", "erc20:eth:FTT": "1.6.2", + "erc20:eth:FTXT": "1.6.3", "erc20:eth:FUEL": "1.6.2", "erc20:eth:FUN": "1.6.2", + "erc20:eth:FXC": "1.6.3", "erc20:eth:FYN": "1.6.2", "erc20:eth:GAM": "1.6.2", "erc20:eth:GAVEL": "1.6.2", @@ -306,18 +335,22 @@ "erc20:eth:GOLDX": "1.6.2", "erc20:eth:GRID": "1.6.2", "erc20:eth:GROW": "1.6.2", + "erc20:eth:GSE": "1.6.3", "erc20:eth:GTC": "1.6.2", "erc20:eth:GTKT": "1.6.2", "erc20:eth:GTO": "1.6.2", + "erc20:eth:GULD": "1.6.3", "erc20:eth:GVT": "1.6.2", "erc20:eth:GXC": "1.6.2", "erc20:eth:GXVC": "1.6.2", "erc20:eth:GZE": "1.6.2", "erc20:eth:GZR": "1.6.2", + "erc20:eth:HAPPY": "1.6.3", "erc20:eth:HAT": "1.6.2", "erc20:eth:HAV": "1.6.2", "erc20:eth:HDG": "1.6.2", "erc20:eth:HGT": "1.6.2", + "erc20:eth:HIBT": "1.6.3", "erc20:eth:HIG": "1.6.2", "erc20:eth:HKG": "1.6.2", "erc20:eth:HKY": "1.6.2", @@ -348,6 +381,8 @@ "erc20:eth:IOTX": "1.6.2", "erc20:eth:IPL": "1.6.2", "erc20:eth:IPSX": "1.6.2", + "erc20:eth:IQN": "1.6.3", + "erc20:eth:IST34": "1.6.3", "erc20:eth:ITC": "1.6.2", "erc20:eth:ITT": "1.6.2", "erc20:eth:IXT": "1.6.2", @@ -380,7 +415,9 @@ "erc20:eth:LOCI": "1.6.2", "erc20:eth:LOCUS": "1.6.2", "erc20:eth:LOK": "1.6.2", + "erc20:eth:LOOK": "1.6.3", "erc20:eth:LOOM": "1.6.2", + "erc20:eth:LOVE": "1.6.3", "erc20:eth:LPT": "1.6.2", "erc20:eth:LRC": "1.6.2", "erc20:eth:LUC": "1.6.2", @@ -401,6 +438,8 @@ "erc20:eth:MESH": "1.6.2", "erc20:eth:MEST": "1.6.2", "erc20:eth:MFG": "1.6.2", + "erc20:eth:MFT": "1.6.3", + "erc20:eth:MFTU": "1.6.3", "erc20:eth:MGO": "1.6.2", "erc20:eth:MKT": "1.6.2", "erc20:eth:MNE": "1.6.2", @@ -437,22 +476,29 @@ "erc20:eth:NOX": "1.6.2", "erc20:eth:NPER": "1.6.2", "erc20:eth:NPXS": "1.6.2", + "erc20:eth:NUG": "1.6.3", "erc20:eth:NULS": "1.6.2", "erc20:eth:NXX": "1.6.2", "erc20:eth:NxC": "1.6.2", "erc20:eth:OAK": "1.6.2", "erc20:eth:OAX": "1.6.2", "erc20:eth:OCC": "1.6.2", + "erc20:eth:ODE": "1.6.3", "erc20:eth:OJX": "1.6.2", "erc20:eth:OLD_MKR": "1.6.2", + "erc20:eth:OLT": "1.6.3", "erc20:eth:OMG": "1.6.2", + "erc20:eth:OMT": "1.6.3", "erc20:eth:ONEK": "1.6.2", "erc20:eth:OPT": "1.6.2", "erc20:eth:ORBS": "1.6.2", + "erc20:eth:ORCA": "1.6.3", "erc20:eth:OST": "1.6.2", + "erc20:eth:OWN": "1.6.3", "erc20:eth:Ox Fina": "1.6.2", "erc20:eth:PAL": "1.6.2", "erc20:eth:PARETO": "1.6.2", + "erc20:eth:PASS": "1.6.3", "erc20:eth:PAT": "1.6.2", "erc20:eth:PATENTS": "1.6.2", "erc20:eth:PATH": "1.6.2", @@ -462,6 +508,7 @@ "erc20:eth:PCH": "1.6.2", "erc20:eth:PCL": "1.6.2", "erc20:eth:PCLOLD": "1.6.2", + "erc20:eth:PEG": "1.6.3", "erc20:eth:PET": "1.6.2", "erc20:eth:PETRO": "1.6.2", "erc20:eth:PEXT": "1.6.2", @@ -470,6 +517,7 @@ "erc20:eth:PLASMA": "1.6.2", "erc20:eth:PLBT": "1.6.2", "erc20:eth:PLR": "1.6.2", + "erc20:eth:PLS": "1.6.3", "erc20:eth:PLU": "1.6.2", "erc20:eth:POE": "1.6.2", "erc20:eth:POIN": "1.6.2", @@ -490,10 +538,12 @@ "erc20:eth:PTOY": "1.6.2", "erc20:eth:PTWO": "1.6.2", "erc20:eth:PUC": "1.6.2", + "erc20:eth:PURC": "1.6.3", "erc20:eth:PXT": "1.6.2", "erc20:eth:QASH": "1.6.2", "erc20:eth:QAU": "1.6.2", "erc20:eth:QBX": "1.6.2", + "erc20:eth:QNT": "1.6.3", "erc20:eth:QRG": "1.6.2", "erc20:eth:QRL": "1.6.2", "erc20:eth:QSP": "1.6.2", @@ -506,10 +556,12 @@ "erc20:eth:REA": "1.6.2", "erc20:eth:REBL": "1.6.2", "erc20:eth:RED": "1.6.2", + "erc20:eth:REDC": "1.6.3", "erc20:eth:REN": "1.6.2", "erc20:eth:REQ": "1.6.2", "erc20:eth:REX": "1.6.2", "erc20:eth:RFR": "1.6.2", + "erc20:eth:RING": "1.6.3", "erc20:eth:RIPT": "1.6.2", "erc20:eth:RLC": "1.6.2", "erc20:eth:RLT": "1.6.2", @@ -540,6 +592,7 @@ "erc20:eth:SKO1": "1.6.2", "erc20:eth:SKR": "1.6.2", "erc20:eth:SLT": "1.6.2", + "erc20:eth:SLY": "1.6.3", "erc20:eth:SNC": "1.6.2", "erc20:eth:SND": "1.6.2", "erc20:eth:SNG": "1.6.2", @@ -556,6 +609,7 @@ "erc20:eth:SPN": "1.6.2", "erc20:eth:SRN": "1.6.2", "erc20:eth:SSH": "1.6.2", + "erc20:eth:STABIT": "1.6.3", "erc20:eth:STAC": "1.6.2", "erc20:eth:STAR": "1.6.2", "erc20:eth:STC": "1.6.2", @@ -577,19 +631,23 @@ "erc20:eth:TAU": "1.6.2", "erc20:eth:TBC2": "1.6.2", "erc20:eth:TBT": "1.6.2", + "erc20:eth:TCA": "1.6.3", "erc20:eth:TDH": "1.6.2", "erc20:eth:TEL": "1.6.2", "erc20:eth:TFL": "1.6.2", "erc20:eth:THETA": "1.6.2", "erc20:eth:THUG": "1.6.2", + "erc20:eth:TICO": "1.6.3", "erc20:eth:TIME": "1.6.2", "erc20:eth:TIO": "1.6.2", "erc20:eth:TIX": "1.6.2", "erc20:eth:TKN": "1.6.2", "erc20:eth:TNT": "1.6.2", + "erc20:eth:TOOR": "1.6.3", "erc20:eth:TRCN": "1.6.2", "erc20:eth:TRST": "1.6.2", "erc20:eth:TRX": "1.6.2", + "erc20:eth:TSW": "1.6.3", "erc20:eth:TWN": "1.6.2", "erc20:eth:TWNKL": "1.6.2", "erc20:eth:TaaS": "1.6.2", @@ -601,6 +659,7 @@ "erc20:eth:UTN-P": "1.6.2", "erc20:eth:UUU": "1.6.2", "erc20:eth:Unicorn": "1.6.2", + "erc20:eth:VDG": "1.6.3", "erc20:eth:VDOC": "1.6.2", "erc20:eth:VEE": "1.6.2", "erc20:eth:VEN": "1.6.2", @@ -623,6 +682,8 @@ "erc20:eth:WHEN": "1.6.2", "erc20:eth:WILD": "1.6.2", "erc20:eth:WINGS": "1.6.2", + "erc20:eth:WMK": "1.6.3", + "erc20:eth:WNK": "1.6.3", "erc20:eth:WORK": "1.6.2", "erc20:eth:WPC": "1.6.2", "erc20:eth:WPR": "1.6.2", @@ -645,6 +706,7 @@ "erc20:eth:XNT": "1.6.2", "erc20:eth:XRL": "1.6.2", "erc20:eth:XSC": "1.6.2", + "erc20:eth:YUP": "1.6.3", "erc20:eth:YUPIE": "1.6.2", "erc20:eth:ZAP": "1.6.2", "erc20:eth:ZCS": "1.6.2", @@ -666,27 +728,28 @@ "erc20:rin:CTGA": "1.6.2", "erc20:rin:PPD": "1.6.2", "erc20:rin:WALL": "1.6.2", + "erc20:rop:*PLASMA": "1.6.3", "erc20:rop:ILSC": "1.6.2", "erc20:ubq:BEER": "1.6.2", "erc20:ubq:CEFS": "1.6.2", "erc20:ubq:DOT": "1.6.2", "erc20:ubq:QWARK": "1.6.2", "erc20:ubq:RICKS": "1.6.2", - "eth:AKA": "soon", - "eth:ATH": "soon", + "eth:AKA": "1.6.3", + "eth:ATH": "1.6.3", "eth:CLO": "1.6.2", "eth:EGEM": "1.6.2", "eth:ELLA": "1.6.2", "eth:EOSC": "1.6.2", - "eth:ESN": "soon", + "eth:ESN": "1.6.3", "eth:ETC": "1.6.2", "eth:ETH": "1.6.2", - "eth:ETHO": "soon", + "eth:ETHO": "1.6.3", "eth:ETSC": "1.6.2", "eth:EXP": "1.6.2", "eth:GO": "1.6.2", - "eth:MUSIC": "soon", - "eth:PIRL": "soon", + "eth:MUSIC": "1.6.3", + "eth:PIRL": "1.6.3", "eth:RSK": "1.6.2", "eth:UBQ": "1.6.2", "eth:tETC": "1.6.2", @@ -694,6 +757,7 @@ "eth:tRIN": "1.6.2", "eth:tROP": "1.6.2", "eth:tRSK": "1.6.2", + "misc:WAN": "1.6.3", "misc:XLM": "soon", "nem:BREEZE": "1.6.2", "nem:DIM": "1.6.2", @@ -1508,6 +1572,7 @@ "eth:tRSK": "2.0.7", "misc:ADA": "soon", "misc:LSK": "2.0.7", + "misc:WAN": "2.0.7", "misc:XLM": "soon", "misc:XMR": "soon", "misc:XRP": "soon", From d54978bd28983a042bdd4a777f1cc019d1b6e29d Mon Sep 17 00:00:00 2001 From: matejcik Date: Thu, 30 Aug 2018 15:34:14 +0200 Subject: [PATCH 545/767] new README for tools, improved README for defs --- defs/README.md | 20 +++-- tools/README.md | 195 ++++++++++++++++++++++++++++++++++++++---------- 2 files changed, 168 insertions(+), 47 deletions(-) diff --git a/defs/README.md b/defs/README.md index 4bee070e9..1c2778f9d 100644 --- a/defs/README.md +++ b/defs/README.md @@ -38,7 +38,7 @@ Supported coins that are not derived from Bitcoin, Ethereum or NEM are currently and listed in separate file [`misc/misc.json`](misc/misc.json). Each coin must also have an icon in `misc/.png`, where `short` is lowercased `shortcut` field from the JSON. -## Keys and Duplicate Detection +## Keys Throughout the system, coins are identified by a _key_ - a colon-separated string generated from the coin's type and shortcut: @@ -53,14 +53,18 @@ 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. Especially in the ERC20 world this is -common occurence. 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. +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. -This doesn't matter, because **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. +## Duplicate Detection + +**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: diff --git a/tools/README.md b/tools/README.md index 9a657bb38..680553f63 100644 --- a/tools/README.md +++ b/tools/README.md @@ -1,61 +1,178 @@ -# Tools directory +# Common Tools -### `coin_info.py` +This directory contains mostly tools that can manipulate definitions in [defs/](../defs). + +Tools are written with [Click](http://click.pocoo.org/6/), so you always get a help text +if you use the `--help` option. + +All tools require Python 3.6 or higher and a bunch of dependencies, listed in `requirements.txt`. +You can install them all with `pip3 install -r requirements.txt`. -Central module that extracts information from jsons in `defs/` directory. -Its most important function is `get_all()`. +## Tools overview ### `cointool.py` -Code and data generator. Has the following functions: +This is a general-purpose tool to examine coin definitions. Currently it implements +the following commands: -* __`check`__: runs validations. Currently, that is: - * schema validity in `defs/coins/*.json` - * availability of bitcore/blockbook backends - * icon format +* **`render`**: generate code based on a [Mako](http://docs.makotemplates.org/en/latest/index.html) + template. By default, `cointool.py render foo.bar.mako` will put its result into + file `foo.bar` in the same directory. See [usage in `trezor-core`](https://github.com/trezor/trezor-core/commit/348b99b8dc5bcfc4ab85e1e7faad3fb4ef3e8763). +* **`check`**: check validity of json definitions and associated data. Used in CI. +* **`coins_json`**: generate `coins.json` file for use in Connect, webwallet and python-trezor. + This file contains data on Bitcoin-like coins and their support status. +* **`coindefs`**: generate signed protobuf descriptions of coins. This is for future use + and could allow us to not need to store coin data in Trezor itself. -* __`coins_json`__: generates `coins.json` for use in python-trezor, connect - and wallet. By default outputs to current directory. +Use `cointool.py command --help` to get more information on each command. + +### `support.py` -* __`coindefs`__: generates `coindefs.json`, intended future format for sending - coin definitions to Trezor. +Used to query and manage info in `support.json`. This mainly supports the release flow. -* __`render`__: for every `filename.ext.mako` passed (or for all found in directory), - renders the Mako template with coin definitions and stores as corresponding - `filename.ext`. This is used to generate code in trezor-mcu and trezor-core. +The following commands are available: + +* **`check`**: check validity of json data. Used in CI. +* **`fix`**: fix expected problems: prune keys without associated coins and ensure + that ERC20 tokens are correctly entered as duplicate. +* **`show`**: keyword-search for a coin and show its support status for each device. +* **`set`**: set support data. +* **`release`**: perform the [release workflow](#release-workflow). + +Use `support.py command --help` to get more information on each command. ### `coins_details.py` -Regenerates `defs/coins_details.json`, which is a catalog of coins for https://trezor.io/coins. +Generates `coins_details.json`, source file for https://trezor.io/coins. +Collects data on coins, downloads market caps and puts everything into a single file. +Caches market cap data so you don't have to download it every time. -All information is generated from coin definitions in `defs/`, support info is -taken either from `support.json`, or assumed (see `coin_info.support_info()`). +### `diffize_coins_details.py` -If needed, any value can be overriden in `coins_details.override.json`. +Compares generated `coins_details.json` to the released version currently served +on https://trezor.io/coins, in a format that is nicely readable to humans and +hard(er) to mess up by diff. -### `support.py` +### `coin_info.py` + +In case where code generation with `cointool.py render` is impractical or not sufficient, +you can query the data directly through Python. Short usage example: + +```python +import coin_info + +defs = coin_info.coin_info() +list_of_all_coins = defs.as_list() +dict_by_coin_key = defs.as_dict() + +for token in defs.erc20: + print(token["key"], token["name"], token["shortcut"]) + +support_info = coin_info.support_info(defs.misc) +for key, support in support_info.values(): + t2_support = support["trezor2"] + coin_name = dict_by_coin_key[key] + if t2_support == "soon": + print(coin_name, "will be supported soon!") + elif t2_support: + print(coin_name, "is supported since version", t2_support) + else: + print(coin_name, "is not supported") +``` + +See docstrings for the most important functions: `coin_info()` and `support_info()`. + +The file `coindef.py` is a protobuf definition for passing coin data to Trezor +from the outside. + + +# Release Workflow + +This entails collecting information on coins whose support status is unknown, +marking coins whose support status is `soon`, and including new ERC20 tokens. + +## Maintaining Support Status + +When a new coin definition is added, its support status is _unknown_. It is excluded +from code generation by default. If you want to include a coin in a firmware build, +you need to switch it to _soon_ first. You can set multiple support statuses at the +same time: + +``` +$ ./support.py show Ontology +misc:ONT - Ontology (ONT) + * connect : NO + * trezor1 : support info missing + * trezor2 : support info missing + * webwallet : NO + +$ ./support.py set misc:ONT trezor1=no -r "not planned on T1" trezor2=soon +misc:ONT - Ontology (ONT) + * connect : NO + * trezor1 : NO (reason: not planned on T1) + * trezor2 : SOON + * webwallet : NO +``` + +Afterwards, review and commit changes to `defs/support.json`, and update the `trezor-common` +submodule in your target firmware. + +If you're adding multiple coins at once, you can use `support.py release 1 --soon` to automatically +add all currently-unknown coins to _soon_. (The `1` indicates that this is for Trezor One) + +ERC20 tokens in _unknown_ state are considered _soon_ as well, unless their symbols +are duplicates. Use `support.py fix` to synchronize duplicate status in `support.json` file. +Or mark them as unsupported explicitly. + +## Releasing a new firmware + +#### **Step 1:** update the tokens repo + +```sh +pushd defs/ethereum/tokens +git checkout master +git pull +popd +git add defs/ethereum/tokens +``` + +#### **Step 2:** run the release flow + +```sh +./tools/support.py release 2 +``` + +The number `2` indicates that you are releasing Trezor 2. The version will be +automatically determined, based on currently released firmwares. Or you can explicitly +specify the version with `-r 2.1.0`. + +All currently known unreleased ERC20 tokens are automatically set to the given version. + +All coins marked _soon_ are set to the current version. This is automatic - coins that +were marked _soon_ were used in code generation and so should be released. If you want +to avoid this, you will have to manually revert each coin to _soon_ status, either with +`support.py set`, or by manually editing `support.json`. + +Coins in state _unknown_, i.e., coins that are known in the definitions but not listed +in support files, will be also added. But you will be interactively asked to confirm +each one. Use `-y` or `--add-all` to auto-add all of them. -Support info management. Ensures `support.json` is in the proper format. Has the -following subcommands: +Use `-n` or `--dry-run` to see changes without writing them to `support.json`. Use +`-v` or `--verbose` to also show ERC20 tokens which are processed silently by default. -* __`check`__: checks validity of support data. Ensures that data is valid, - there are no orphaned keys in `support.json`, no known coins have missing - support info, etc. +Use `-g` or `--git-tag` to automatically tag the current `HEAD` with a version, e.g., +`trezor2-2.1.0`. This might become default in the future. -* __`show `__: searches coin database, matching key (`coin:BTC`), - name ("Bitcoin") or shortcut / ticker symbol ("BTC"). Displays all coins that match - and their support info, if found. +XXX this should also commit the changes though, otherwise the tag will apply to the wrong +commit. -* __`set [symbol=value]...`__: updates support info for coin key (`coin:BTC`, - can be found with `support.py show`). Basic `symbol`s are: `trezor1 trezor2 - connect webwallet`. Anything else is considered a link name: - `"Electrum=https://electrum.org"` - Allowed `value`s are `yes`, `no`, `soon`, `planned`, URLs and firmware version - numbers. Empty value (`trezor1=`) clears the respective symbol. +#### **Step 3:** review and commit your changes -### `requirements.txt` +Use `git diff` to review changes made, commit and push. If you tagged the commit in the +previous step, don't forget to `git push --tags` too. -List of Python requiremens for all tools in `pip` format. Set up your environment with -`pip3 install -r requirements.txt`, or `pipenv install -r requirements.txt`. +#### **Step 4:** update submodule in your target repository -Python 3.6 or higher is required. +Go to `trezor-core` or `trezor-mcu` checkout and update the submodule. Checkout the +appropriate tag if you created it. If you're in `trezor-core`, run `make templates` +to update source files. From 297c05c48db7aad85d7a8ab1d6767da2c37be231 Mon Sep 17 00:00:00 2001 From: matejcik Date: Thu, 30 Aug 2018 18:38:57 +0200 Subject: [PATCH 546/767] tools: another fix to cache handling (set default to auto) --- tools/coins_details.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/coins_details.py b/tools/coins_details.py index 46bf8d230..f06ee1ec0 100755 --- a/tools/coins_details.py +++ b/tools/coins_details.py @@ -292,8 +292,8 @@ def apply_overrides(coins): @click.command() # fmt: off -@click.option("-r", "--refresh", "refresh", flag_value=True, help="Force refresh market cap info") -@click.option("-R", "--no-refresh", "refresh", flag_value=False, help="Force use cached market cap info") +@click.option("-r", "--refresh", "refresh", flag_value=True, default=None, help="Force refresh market cap info") +@click.option("-R", "--no-refresh", "refresh", flag_value=False, default=None, help="Force use cached market cap info") @click.option("-A", "--api-key", required=True, envvar="COINMARKETCAP_API_KEY", help="Coinmarketcap API key") @click.option("-v", "--verbose", is_flag=True, help="Display more info") # fmt: on From 13437fde9c0f58c46abf8fb2e7af5a5bc692f672 Mon Sep 17 00:00:00 2001 From: matejcik Date: Thu, 30 Aug 2018 18:39:32 +0200 Subject: [PATCH 547/767] defs: refresh support info and coins_details --- defs/coins_details.json | 601 ++++++++++++++++++++-------------------- defs/support.json | 1 - 2 files changed, 306 insertions(+), 296 deletions(-) diff --git a/defs/coins_details.json b/defs/coins_details.json index 462186cfe..3715f44b1 100644 --- a/defs/coins_details.json +++ b/defs/coins_details.json @@ -5,7 +5,7 @@ "Github": "https://github.com/Bitcoin-ABC/bitcoin-abc", "Homepage": "https://www.bitcoincash.org" }, - "marketcap_usd": 9540922646, + "marketcap_usd": 9163601102, "name": "Bitcoin Cash", "shortcut": "BCH", "t1_enabled": "yes", @@ -21,7 +21,7 @@ "Github": "https://github.com/bitcoin/bitcoin", "Homepage": "https://bitcoin.org" }, - "marketcap_usd": 121293620116, + "marketcap_usd": 118659050043, "name": "Bitcoin", "shortcut": "BTC", "t1_enabled": "yes", @@ -37,7 +37,7 @@ "Github": "https://github.com/BTCPrivate/BitcoinPrivate", "Homepage": "https://btcprivate.org" }, - "marketcap_usd": 89100207, + "marketcap_usd": 89921730, "name": "Bitcoin Private", "shortcut": "BTCP", "t1_enabled": "yes", @@ -52,7 +52,7 @@ "Github": "https://github.com/BTCGPU/BTCGPU", "Homepage": "https://bitcoingold.org" }, - "marketcap_usd": 367722513, + "marketcap_usd": 367138479, "name": "Bitcoin Gold", "shortcut": "BTG", "t1_enabled": "yes", @@ -69,7 +69,7 @@ "Github": "https://github.com/LIMXTEC/BitCore", "Homepage": "https://bitcore.cc" }, - "marketcap_usd": 19126617, + "marketcap_usd": 18169775, "name": "Bitcore", "shortcut": "BTX", "t1_enabled": "no", @@ -83,7 +83,7 @@ "Github": "https://github.com/Crowndev/crowncoin", "Homepage": "https://crown.tech" }, - "marketcap_usd": 4915524, + "marketcap_usd": 4513655, "name": "Crown", "shortcut": "CRW", "t1_enabled": "no", @@ -96,7 +96,7 @@ "Github": "https://github.com/dashpay/dash", "Homepage": "https://www.dash.org" }, - "marketcap_usd": 1546622555, + "marketcap_usd": 1485565916, "name": "Dash", "shortcut": "DASH", "t1_enabled": "yes", @@ -112,7 +112,7 @@ "Github": "https://github.com/decred/dcrd", "Homepage": "https://www.decred.org" }, - "marketcap_usd": 346181991, + "marketcap_usd": 341414617, "name": "Decred", "shortcut": "DCR", "t1_enabled": "yes", @@ -125,7 +125,7 @@ "Github": "https://github.com/digibyte/digibyte", "Homepage": "https://digibyte.io" }, - "marketcap_usd": 315174368, + "marketcap_usd": 311970859, "name": "DigiByte", "shortcut": "DGB", "t1_enabled": "yes", @@ -141,7 +141,7 @@ "marketcap_usd": 0, "name": "Denarius", "shortcut": "DNR", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "coin", "wallet": {} @@ -151,7 +151,7 @@ "Github": "https://github.com/dogecoin/dogecoin", "Homepage": "http://dogecoin.com" }, - "marketcap_usd": 292799488, + "marketcap_usd": 354212399, "name": "Dogecoin", "shortcut": "DOGE", "t1_enabled": "yes", @@ -166,7 +166,7 @@ "Github": "https://github.com/fujicoin/fujicoin", "Homepage": "http://fujicoin.org" }, - "marketcap_usd": 567821, + "marketcap_usd": 566316, "name": "Fujicoin", "shortcut": "FJC", "t1_enabled": "yes", @@ -181,10 +181,10 @@ "Github": "https://github.com/flash-coin", "Homepage": "https://www.flashcoin.io" }, - "marketcap_usd": 5570454, + "marketcap_usd": 6483801, "name": "Flashcoin", "shortcut": "FLASH", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "coin", "wallet": {} @@ -194,10 +194,10 @@ "Github": "https://github.com/FeatherCoin/Feathercoin", "Homepage": "https://feathercoin.com" }, - "marketcap_usd": 11265372, + "marketcap_usd": 11541343, "name": "Feathercoin", "shortcut": "FTC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "coin", "wallet": {} @@ -207,7 +207,7 @@ "Github": "https://github.com/Groestlcoin/groestlcoin", "Homepage": "https://www.groestlcoin.org" }, - "marketcap_usd": 44412367, + "marketcap_usd": 42855908, "name": "Groestlcoin", "shortcut": "GRS", "t1_enabled": "yes", @@ -225,7 +225,7 @@ "marketcap_usd": 0, "name": "Koto", "shortcut": "KOTO", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "coin", "wallet": {} @@ -235,7 +235,7 @@ "Github": "https://github.com/litecoin-project/litecoin", "Homepage": "https://litecoin.org" }, - "marketcap_usd": 3549898816, + "marketcap_usd": 3438858034, "name": "Litecoin", "shortcut": "LTC", "t1_enabled": "yes", @@ -251,7 +251,7 @@ "Github": "https://github.com/monacoinproject/monacoin", "Homepage": "https://monacoin.org" }, - "marketcap_usd": 96966741, + "marketcap_usd": 91027428, "name": "Monacoin", "shortcut": "MONA", "t1_enabled": "yes", @@ -269,7 +269,7 @@ "marketcap_usd": 0, "name": "MUE", "shortcut": "MUE", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "coin", "wallet": {} @@ -279,7 +279,7 @@ "Github": "https://github.com/namecoin/namecoin-core", "Homepage": "https://namecoin.org" }, - "marketcap_usd": 18394484, + "marketcap_usd": 20837607, "name": "Namecoin", "shortcut": "NMC", "t1_enabled": "yes", @@ -294,10 +294,10 @@ "Github": "https://github.com/FundacionPesetacoin/PesetacoinCore", "Homepage": "http://pesetacoin.info" }, - "marketcap_usd": 2533099, + "marketcap_usd": 2522620, "name": "Pesetacoin", "shortcut": "PTC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "coin", "wallet": {} @@ -307,10 +307,10 @@ "Github": "https://github.com/SmartCash/Core-Smart", "Homepage": "https://smarcash.cc" }, - "marketcap_usd": 47117688, + "marketcap_usd": 41874199, "name": "SmartCash", "shortcut": "SMART", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "coin", "wallet": {} @@ -352,7 +352,7 @@ "marketcap_usd": 0, "name": "Bitcoin Gold Testnet", "shortcut": "TBTG", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "coin", "wallet": {} @@ -407,7 +407,7 @@ "Github": "https://github.com/terracoin/terracoin", "Homepage": "https://terracoin.io" }, - "marketcap_usd": 1713616, + "marketcap_usd": 1706619, "name": "Terracoin", "shortcut": "TRC", "t1_enabled": "no", @@ -420,7 +420,7 @@ "Github": "https://github.com/viacoin", "Homepage": "https://viacoin.org" }, - "marketcap_usd": 21732078, + "marketcap_usd": 21155868, "name": "Viacoin", "shortcut": "VIA", "t1_enabled": "yes", @@ -435,7 +435,7 @@ "Github": "https://github.com/vertcoin-project/vertcoin-core", "Homepage": "https://vertcoin.org" }, - "marketcap_usd": 35275938, + "marketcap_usd": 33634370, "name": "Vertcoin", "shortcut": "VTC", "t1_enabled": "yes", @@ -450,10 +450,10 @@ "Github": "https://github.com/myriadcoin/myriadcoin", "Homepage": "https://www.myriadcoin.org" }, - "marketcap_usd": 4628144, + "marketcap_usd": 4399423, "name": "Myriad", "shortcut": "XMY", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "coin", "wallet": {} @@ -463,7 +463,7 @@ "Github": "https://github.com/zcoinofficial/zcoin", "Homepage": "https://zcoin.io" }, - "marketcap_usd": 71877461, + "marketcap_usd": 69561268, "name": "Zcoin", "shortcut": "XZC", "t1_enabled": "yes", @@ -479,7 +479,7 @@ "Github": "https://github.com/zcash/zcash", "Homepage": "https://z.cash" }, - "marketcap_usd": 716702962, + "marketcap_usd": 695131113, "name": "Zcash", "shortcut": "ZEC", "t1_enabled": "yes", @@ -494,7 +494,7 @@ "Github": "https://github.com/ZencashOfficial/zen", "Homepage": "https://zencash.com" }, - "marketcap_usd": 90032910, + "marketcap_usd": 83954420, "name": "Zencash", "shortcut": "ZEN", "t1_enabled": "no", @@ -539,7 +539,7 @@ "marketcap_usd": 0, "name": "SmartCash Testnet", "shortcut": "tSMART", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "coin", "wallet": {} @@ -669,7 +669,7 @@ "name": "$Hurify Token", "network": "eth", "shortcut": "$HUR", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -699,7 +699,7 @@ "links": { "Homepage": "https://0xbitcoin.org/" }, - "marketcap_usd": 1664862, + "marketcap_usd": 1430744, "name": "0xBitcoin", "network": "eth", "shortcut": "0xBTC", @@ -716,7 +716,7 @@ "links": { "Homepage": "https://firstblood.io" }, - "marketcap_usd": 6039926, + "marketcap_usd": 5804330, "name": "FirstBlood", "network": "eth", "shortcut": "1ST", @@ -787,7 +787,7 @@ "name": "TrillionToken", "network": "eth", "shortcut": "3LT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -852,7 +852,7 @@ "links": { "Homepage": "http://accelerator.network" }, - "marketcap_usd": 156507, + "marketcap_usd": 112685, "name": "Accelerator Network", "network": "eth", "shortcut": "ACC", @@ -887,7 +887,7 @@ "Github": "https://github.com/aditus", "Homepage": "https://aditus.net" }, - "marketcap_usd": 534246, + "marketcap_usd": 479149, "name": "Aditus", "network": "eth", "shortcut": "ADI", @@ -922,7 +922,7 @@ "links": { "Homepage": "https://adshares.net" }, - "marketcap_usd": 1989554, + "marketcap_usd": 3418041, "name": "AdShares", "network": "eth", "shortcut": "ADST", @@ -940,7 +940,7 @@ "Github": "https://github.com/adchain", "Homepage": "https://adtoken.com" }, - "marketcap_usd": 8960710, + "marketcap_usd": 8448647, "name": "AdToken", "network": "eth", "shortcut": "ADT", @@ -976,7 +976,7 @@ "Github": "https://github.com/aeternity", "Homepage": "https://www.aeternity.com/" }, - "marketcap_usd": 271191736, + "marketcap_usd": 250922293, "name": "aeternity", "network": "eth", "shortcut": "AE", @@ -994,7 +994,7 @@ "Github": "https://github.com/singnet/singnet", "Homepage": "https://singularitynet.io" }, - "marketcap_usd": 26775699, + "marketcap_usd": 26427805, "name": "SingularityNET", "network": "eth", "shortcut": "AGI", @@ -1012,7 +1012,7 @@ "Github": "https://github.com/aionnetwork", "Homepage": "https://aion.network/" }, - "marketcap_usd": 138544539, + "marketcap_usd": 119379478, "name": "Aion", "network": "eth", "shortcut": "AION", @@ -1029,7 +1029,7 @@ "links": { "Homepage": "https://airtoken.com" }, - "marketcap_usd": 2879571, + "marketcap_usd": 2923329, "name": "AirToken", "network": "eth", "shortcut": "AIR", @@ -1047,7 +1047,7 @@ "Github": "https://github.com/AigangNetwork", "Homepage": "https://aigang.network/" }, - "marketcap_usd": 737898, + "marketcap_usd": 776294, "name": "Aigang", "network": "eth", "shortcut": "AIX", @@ -1069,7 +1069,7 @@ "name": "ARTWOOK COIN", "network": "eth", "shortcut": "AKC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -1100,7 +1100,7 @@ "Github": "https://github.com/AlisProject", "Homepage": "https://alismedia.jp" }, - "marketcap_usd": 2550473, + "marketcap_usd": 2655578, "name": "ALIS Token", "network": "eth", "shortcut": "ALIS", @@ -1171,11 +1171,11 @@ "Github": "https://github.com/amlt-by-coinfirm", "Homepage": "https://amlt.coinfirm.io/" }, - "marketcap_usd": 1924373, + "marketcap_usd": 1802630, "name": "AMLT", "network": "eth", "shortcut": "AMLT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -1189,7 +1189,7 @@ "Github": "https://github.com/amontech", "Homepage": "https://amon.tech" }, - "marketcap_usd": 546192, + "marketcap_usd": 481531, "name": "Amon", "network": "eth", "shortcut": "AMN", @@ -1259,7 +1259,7 @@ "Github": "https://github.com/Oxchild/crowdsale", "Homepage": "https://apisplatform.io" }, - "marketcap_usd": 11792131, + "marketcap_usd": 10575316, "name": "APIS", "network": "eth", "shortcut": "APIS", @@ -1277,7 +1277,7 @@ "Github": "https://github.com/Aptoide/AppCoins-ethereumj", "Homepage": "https://appcoins.io" }, - "marketcap_usd": 11049061, + "marketcap_usd": 9549699, "name": "AppCoins", "network": "eth", "shortcut": "APPC", @@ -1294,7 +1294,7 @@ "links": { "Homepage": "https://aigang.network" }, - "marketcap_usd": 737898, + "marketcap_usd": 776294, "name": "AIGang", "network": "eth", "shortcut": "APT", @@ -1329,7 +1329,7 @@ "links": { "Homepage": "https://www.arbitragect.com" }, - "marketcap_usd": 184703, + "marketcap_usd": 156561, "name": "ArbitrageCT", "network": "eth", "shortcut": "ARCT", @@ -1434,7 +1434,7 @@ "links": { "Homepage": "https://airswap.io" }, - "marketcap_usd": 17351248, + "marketcap_usd": 15458641, "name": "Airswap", "network": "eth", "shortcut": "AST", @@ -1592,11 +1592,11 @@ "Github": "https://www.github.com/axpire", "Homepage": "https://www.axpire.io" }, - "marketcap_usd": 5490796, + "marketcap_usd": 5181380, "name": "aXpire", "network": "eth", "shortcut": "AXPR", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -1787,7 +1787,7 @@ "Github": "https://github.com/thebeetoken", "Homepage": "https://www.beetoken.com" }, - "marketcap_usd": 1774139, + "marketcap_usd": 1848749, "name": "Bee Token", "network": "eth", "shortcut": "BEE", @@ -1845,7 +1845,7 @@ "name": "Bethereum", "network": "eth", "shortcut": "BETHER", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -1911,7 +1911,7 @@ "Github": "https://github.com/BankEx", "Homepage": "https://bankex.com/" }, - "marketcap_usd": 6487746, + "marketcap_usd": 6449176, "name": "BANKEX", "network": "eth", "shortcut": "BKX", @@ -1947,7 +1947,7 @@ "Github": "https://github.com/BlueCrypto", "Homepage": "https://blueprotocol.com/" }, - "marketcap_usd": 2423863, + "marketcap_usd": 2309309, "name": "Ethereum Blue", "network": "eth", "shortcut": "BLUE", @@ -1982,7 +1982,7 @@ "links": { "Homepage": "https://www.iconomi.net" }, - "marketcap_usd": 47275907, + "marketcap_usd": 45910932, "name": "Iconomi", "network": "eth", "shortcut": "BLX (Iconomi)", @@ -2119,7 +2119,7 @@ "Github": "https://github.com/bancorprotocol", "Homepage": "https://www.bancor.network/discover" }, - "marketcap_usd": 89287807, + "marketcap_usd": 86142745, "name": "Bancor", "network": "eth", "shortcut": "BNT", @@ -2170,7 +2170,7 @@ "links": { "Homepage": "https://bonpay.com" }, - "marketcap_usd": 1051324, + "marketcap_usd": 1037945, "name": "Bonpay", "network": "eth", "shortcut": "BON", @@ -2226,7 +2226,7 @@ "name": "BOX Token", "network": "eth", "shortcut": "BOX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -2274,7 +2274,7 @@ "links": { "Homepage": "http://bro-consortium.io" }, - "marketcap_usd": 33385, + "marketcap_usd": 34134, "name": "BRAT", "network": "eth", "shortcut": "BRAT", @@ -2292,7 +2292,7 @@ "Github": "https://github.com/breadwallet", "Homepage": "https://token.breadapp.com/en" }, - "marketcap_usd": 33033595, + "marketcap_usd": 31046822, "name": "Bread", "network": "eth", "shortcut": "BRD", @@ -2450,7 +2450,7 @@ "Github": "https://github.com/bytom", "Homepage": "https://bytom.io" }, - "marketcap_usd": 203385331, + "marketcap_usd": 187374905, "name": "Bytom", "network": "eth", "shortcut": "BTM", @@ -2522,7 +2522,7 @@ "name": "BTZ by Bunz", "network": "eth", "shortcut": "BTZ", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -2569,7 +2569,7 @@ "Github": "https://github.com/cryptotwenty", "Homepage": "https://crypto20.com" }, - "marketcap_usd": 30038138, + "marketcap_usd": 29157052, "name": "Crypto20's Token", "network": "eth", "shortcut": "C20", @@ -2687,7 +2687,7 @@ "links": { "Homepage": "https://cashaa.com" }, - "marketcap_usd": 10859081, + "marketcap_usd": 9074871, "name": "Cashaa", "network": "eth", "shortcut": "CAS", @@ -2760,7 +2760,7 @@ "name": "Cubrix", "network": "eth", "shortcut": "CBIX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -2917,7 +2917,7 @@ "name": "DICE Money Dicet", "network": "eth", "shortcut": "CET", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -2934,7 +2934,7 @@ "name": "CryptFillCoin", "network": "eth", "shortcut": "CFC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -3156,7 +3156,7 @@ "links": { "Homepage": "https://cindicator.com" }, - "marketcap_usd": 30701944, + "marketcap_usd": 26930369, "name": "Cindicator", "network": "eth", "shortcut": "CND", @@ -3263,7 +3263,7 @@ "Github": "https://github.com/CoinvestHQ", "Homepage": "https://coinve.st" }, - "marketcap_usd": 84932, + "marketcap_usd": 79501, "name": "Coinvest V2 Token", "network": "eth", "shortcut": "COIN", @@ -3284,7 +3284,7 @@ "name": "Corrently Invest Token", "network": "eth", "shortcut": "CORI", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -3297,7 +3297,7 @@ "links": { "Homepage": "https://covesting.io/" }, - "marketcap_usd": 15974534, + "marketcap_usd": 16636447, "name": "Covesting", "network": "eth", "shortcut": "COV", @@ -3333,7 +3333,7 @@ "Github": "https://github.com/aditus", "Homepage": "https://copytrack.io" }, - "marketcap_usd": 990507, + "marketcap_usd": 988221, "name": "COPYTRACK", "network": "eth", "shortcut": "CPY", @@ -3403,7 +3403,7 @@ "links": { "Homepage": "https://bitbounce.io" }, - "marketcap_usd": 13147353, + "marketcap_usd": 13648043, "name": "Credo / Bitbounce", "network": "eth", "shortcut": "CREDO", @@ -3425,7 +3425,7 @@ "name": "CargoCoin", "network": "eth", "shortcut": "CRGO", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -3442,7 +3442,7 @@ "name": "Cremit", "network": "eth", "shortcut": "CRMT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -3530,7 +3530,7 @@ "name": "Convenient To Go", "network": "eth", "shortcut": "CTGC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -3629,7 +3629,7 @@ "Github": "https://github.com/cargoxio", "Homepage": "https://cargox.io" }, - "marketcap_usd": 4547875, + "marketcap_usd": 4283389, "name": "CargoX", "network": "eth", "shortcut": "CXO", @@ -3650,7 +3650,7 @@ "name": "CyberFM", "network": "eth", "shortcut": "CYFM", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -3663,7 +3663,7 @@ "links": { "Homepage": "https://ccrb.io" }, - "marketcap_usd": 3450653, + "marketcap_usd": 2334403, "name": "CryptoCarbon", "network": "eth", "shortcut": "CryptoCarbon", @@ -3697,7 +3697,7 @@ "links": { "Homepage": "https://dadi.cloud" }, - "marketcap_usd": 7718227, + "marketcap_usd": 8254668, "name": "DADI", "network": "eth", "shortcut": "DADI", @@ -3714,7 +3714,7 @@ "links": { "Homepage": "http://www.dalecoin.org" }, - "marketcap_usd": 37177, + "marketcap_usd": 35455, "name": "DaleCoin", "network": "eth", "shortcut": "DALC", @@ -3802,7 +3802,7 @@ "Github": "https://github.com/streamr-dev", "Homepage": "https://www.streamr.com" }, - "marketcap_usd": 50834, + "marketcap_usd": 51475, "name": "DATACoin", "network": "eth", "shortcut": "DATACoin", @@ -3891,11 +3891,11 @@ "Github": "https://github.com/DistributedBanking/DCC", "Homepage": "http://dcc.finance" }, - "marketcap_usd": 16480180, + "marketcap_usd": 16108621, "name": "Distributed Credit Chain", "network": "eth", "shortcut": "DCC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -3926,7 +3926,7 @@ "Github": "https://github.com/Dentacoin", "Homepage": "https://dentacoin.com" }, - "marketcap_usd": 131531850, + "marketcap_usd": 109596206, "name": "Dentacoin", "network": "eth", "shortcut": "DCN", @@ -3996,7 +3996,7 @@ "links": { "Homepage": "https://www.dentwireless.com" }, - "marketcap_usd": 54492234, + "marketcap_usd": 46023234, "name": "DENT", "network": "eth", "shortcut": "DENT", @@ -4014,7 +4014,7 @@ "Github": "https://github.com/digipulseio", "Homepage": "https://www.digipulse.io" }, - "marketcap_usd": 170472, + "marketcap_usd": 169075, "name": "DigiPulse", "network": "eth", "shortcut": "DGPT", @@ -4036,7 +4036,7 @@ "name": "Dragonglass", "network": "eth", "shortcut": "DGS", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -4054,7 +4054,7 @@ "name": "DigitexFutures", "network": "eth", "shortcut": "DGTX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -4068,7 +4068,7 @@ "Github": "https://github.com/DigixGlobal", "Homepage": "https://digix.global" }, - "marketcap_usd": 2373568, + "marketcap_usd": 2235830, "name": "Digix Gold Token", "network": "eth", "shortcut": "DGX", @@ -4090,7 +4090,7 @@ "name": "Digix Gold Token 1.0", "network": "eth", "shortcut": "DGX1", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -4103,7 +4103,7 @@ "links": { "Homepage": "https://etheroll.com" }, - "marketcap_usd": 5684603, + "marketcap_usd": 5528175, "name": "Etheroll", "network": "eth", "shortcut": "DICE", @@ -4123,7 +4123,7 @@ "name": "Decentralized Insurance Protocol", "network": "eth", "shortcut": "DIP", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -4280,7 +4280,7 @@ "name": "Driveholic Token", "network": "eth", "shortcut": "DRVH", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -4311,7 +4311,7 @@ "Github": "https://github.com/dethertech", "Homepage": "https://dether.io" }, - "marketcap_usd": 2442607, + "marketcap_usd": 2316599, "name": "dether", "network": "eth", "shortcut": "DTH", @@ -4381,7 +4381,7 @@ "Github": "https://github.com/elangindonesia/EagleCoin", "Homepage": "https://eaglepay.io" }, - "marketcap_usd": 88924, + "marketcap_usd": 75467, "name": "EagleCoin", "network": "eth", "shortcut": "EAGLE", @@ -4436,7 +4436,7 @@ "name": "ECRYPTO COIN", "network": "eth", "shortcut": "ECP", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -4466,7 +4466,7 @@ "links": { "Homepage": "https://edgeless.io" }, - "marketcap_usd": 27280909, + "marketcap_usd": 25302508, "name": "Edgeless", "network": "eth", "shortcut": "EDG", @@ -4483,7 +4483,7 @@ "links": { "Homepage": "https://eidoo.io" }, - "marketcap_usd": 28446316, + "marketcap_usd": 26588675, "name": "Eidoo", "network": "eth", "shortcut": "EDO", @@ -4505,7 +4505,7 @@ "name": "Endor Protocol Token", "network": "eth", "shortcut": "EDR", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -4590,7 +4590,7 @@ "Github": "https://github.com/eltcoin", "Homepage": "http://www.eltcoin.tech/" }, - "marketcap_usd": 119683, + "marketcap_usd": 143080, "name": "ELTCOIN", "network": "eth", "shortcut": "ELTCOIN", @@ -4612,7 +4612,7 @@ "name": "ELYCOIN", "network": "eth", "shortcut": "ELY", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -4768,7 +4768,7 @@ "links": { "Homepage": "https://eos.io" }, - "marketcap_usd": 4923308443, + "marketcap_usd": 5370134851, "name": "EOS", "network": "eth", "notes": "EOS has a mainnet now", @@ -4822,7 +4822,7 @@ "links": { "Homepage": "https://www.ethbits.com" }, - "marketcap_usd": 1264730, + "marketcap_usd": 1344915, "name": "Ethbits", "network": "eth", "shortcut": "ETBS", @@ -4978,11 +4978,11 @@ "address": "0x5c743a35E903F6c584514ec617ACEe0611Cf44f3", "hidden": 1, "links": {}, - "marketcap_usd": 3423723, + "marketcap_usd": 3166851, "name": "Experty", "network": "eth", "shortcut": "EXY", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -5035,7 +5035,7 @@ "name": "Fan Token", "network": "eth", "shortcut": "FAN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -5153,7 +5153,7 @@ "Github": "https://github.com/FundRequest", "Homepage": "https://fundrequest.io" }, - "marketcap_usd": 582812, + "marketcap_usd": 689828, "name": "FundRequest", "network": "eth", "shortcut": "FND", @@ -5223,11 +5223,11 @@ "Github": "https://github.com/futuraxproject", "Homepage": "https://futurax.global" }, - "marketcap_usd": 0, + "marketcap_usd": 195461, "name": "FUTURAX", "network": "eth", "shortcut": "FTXT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -5258,7 +5258,7 @@ "links": { "Homepage": "https://funfair.io" }, - "marketcap_usd": 91202174, + "marketcap_usd": 86676561, "name": "Funfair", "network": "eth", "shortcut": "FUN", @@ -5276,11 +5276,11 @@ "Github": "https://github.com/futuraxproject", "Homepage": "https://futurax.global" }, - "marketcap_usd": 0, + "marketcap_usd": 195461, "name": "FUTURAX", "network": "eth", "shortcut": "FXC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -5311,7 +5311,7 @@ "Github": "https://github.com/BlockchainLabsNZ/gambit", "Homepage": "http://gambitcrypto.com" }, - "marketcap_usd": 4902668, + "marketcap_usd": 4598561, "name": "Gambit", "network": "eth", "shortcut": "GAM", @@ -5434,7 +5434,7 @@ "Github": "https://github.com/daostack", "Homepage": "https://daostack.io" }, - "marketcap_usd": 4788131, + "marketcap_usd": 4995972, "name": "DAOstack", "network": "eth", "shortcut": "GEN", @@ -5556,7 +5556,7 @@ "links": { "Homepage": "https://gridplus.io/token-sale" }, - "marketcap_usd": 8037702, + "marketcap_usd": 7195961, "name": "GRID", "network": "eth", "shortcut": "GRID", @@ -5595,7 +5595,7 @@ "name": "GSENetwork", "network": "eth", "shortcut": "GSE", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -5645,7 +5645,7 @@ "Github": "https://github.com/GIFTO-io", "Homepage": "https://gifto.io/" }, - "marketcap_usd": 48359174, + "marketcap_usd": 43583428, "name": "Gifto", "network": "eth", "shortcut": "GTO", @@ -5667,7 +5667,7 @@ "name": "GULD ERC20", "network": "eth", "shortcut": "GULD", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -5681,7 +5681,7 @@ "Github": "https://github.com/GenesisVision", "Homepage": "https://genesis.vision" }, - "marketcap_usd": 25846493, + "marketcap_usd": 22215862, "name": "Genesis Vision", "network": "eth", "shortcut": "GVT", @@ -5772,7 +5772,7 @@ "name": "Happiness", "network": "eth", "shortcut": "HAPPY", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -5803,7 +5803,7 @@ "Github": "https://github.com/havven/havven", "Homepage": "https://havven.io" }, - "marketcap_usd": 7614168, + "marketcap_usd": 6900766, "name": "Havven", "network": "eth", "shortcut": "HAV", @@ -5859,7 +5859,7 @@ "name": "HiBTC Token", "network": "eth", "shortcut": "HIBT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -5942,7 +5942,7 @@ "links": { "Homepage": "https://github.com/arachnid/hodlcoin" }, - "marketcap_usd": 231180, + "marketcap_usd": 334785, "name": "HODLCoin", "network": "eth", "shortcut": "HODL", @@ -5995,7 +5995,7 @@ "Github": "https://github.com/HiveProjectLTD", "Homepage": "https://hive-project.net" }, - "marketcap_usd": 12499193, + "marketcap_usd": 12654826, "name": "Hive Project", "network": "eth", "shortcut": "HVN", @@ -6098,7 +6098,7 @@ "links": { "Homepage": "https://icos.icobox.io" }, - "marketcap_usd": 1879254, + "marketcap_usd": 1811081, "name": "ICOS", "network": "eth", "shortcut": "ICOS", @@ -6115,7 +6115,7 @@ "links": { "Homepage": "https://www.icon.foundation" }, - "marketcap_usd": 371156331, + "marketcap_usd": 319763529, "name": "ICON", "network": "eth", "shortcut": "ICX", @@ -6149,7 +6149,7 @@ "links": { "Homepage": "https://investfeed.com" }, - "marketcap_usd": 2958191, + "marketcap_usd": 2860446, "name": "InvestFeed", "network": "eth", "shortcut": "IFT", @@ -6284,7 +6284,7 @@ "links": { "Homepage": "https://insights.network" }, - "marketcap_usd": 1720221, + "marketcap_usd": 1776581, "name": "Insights Network", "network": "eth", "shortcut": "INSTAR", @@ -6301,7 +6301,7 @@ "links": { "Homepage": "https://internxt.io" }, - "marketcap_usd": 1888121, + "marketcap_usd": 1552014, "name": "Internxt", "network": "eth", "shortcut": "INXT", @@ -6318,7 +6318,7 @@ "links": { "Homepage": "https://iost.io/" }, - "marketcap_usd": 129897488, + "marketcap_usd": 119220874, "name": "IOSToken", "network": "eth", "shortcut": "IOST", @@ -6393,7 +6393,7 @@ "name": "IQeon", "network": "eth", "shortcut": "IQN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -6411,7 +6411,7 @@ "name": "IST34 Token", "network": "eth", "shortcut": "IST34", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -6425,7 +6425,7 @@ "Github": "https://github.com/IoTChainCode", "Homepage": "https://iotchain.io/" }, - "marketcap_usd": 14115113, + "marketcap_usd": 17295689, "name": "IoT Chain", "network": "eth", "shortcut": "ITC", @@ -6615,7 +6615,7 @@ "Github": "https://github.com/kikinteractive/kin-token", "Homepage": "https://kin.kik.com" }, - "marketcap_usd": 84243568, + "marketcap_usd": 71230692, "name": "Kin Foundation", "network": "eth", "shortcut": "KIN", @@ -6633,7 +6633,7 @@ "Github": "https://github.com/KyberNetwork", "Homepage": "https://kyber.network" }, - "marketcap_usd": 77082818, + "marketcap_usd": 71157052, "name": "Kyber Network", "network": "eth", "shortcut": "KNC", @@ -6669,7 +6669,7 @@ "Github": "https://github.com/Cryptense/", "Homepage": "https://kryll.io/" }, - "marketcap_usd": 575256, + "marketcap_usd": 708023, "name": "Kryll", "network": "eth", "shortcut": "KRL", @@ -6704,7 +6704,7 @@ "Github": "https://github.com/latoken", "Homepage": "https://latoken.com/" }, - "marketcap_usd": 8281497, + "marketcap_usd": 7771068, "name": "LATOKEN", "network": "eth", "shortcut": "LA", @@ -6738,7 +6738,7 @@ "links": { "Homepage": "https://www.leadcoin.network/" }, - "marketcap_usd": 1075086, + "marketcap_usd": 1012768, "name": "LEADCOIN", "network": "eth", "shortcut": "LDC", @@ -6842,7 +6842,7 @@ "links": { "Homepage": "http://www.lifelabs.io" }, - "marketcap_usd": 3295725, + "marketcap_usd": 3047752, "name": "LIFE", "network": "eth", "shortcut": "LIFE", @@ -6894,7 +6894,7 @@ "Github": "https://github.com/lendingblock", "Homepage": "https://lendingblock.com" }, - "marketcap_usd": 1696347, + "marketcap_usd": 1517578, "name": "Lendingblock", "network": "eth", "shortcut": "LND", @@ -6911,7 +6911,7 @@ "links": { "Homepage": "https://LockChain.co" }, - "marketcap_usd": 5320647, + "marketcap_usd": 5121030, "name": "LockChain", "network": "eth", "shortcut": "LOC", @@ -6929,7 +6929,7 @@ "Github": "http://github.com/locipro/loci-coin-sale", "Homepage": "https://locipro.com" }, - "marketcap_usd": 1581432, + "marketcap_usd": 1556369, "name": "LOCIcoin", "network": "eth", "shortcut": "LOCI", @@ -6984,7 +6984,7 @@ "name": "LookRev", "network": "eth", "shortcut": "LOOK", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -7020,7 +7020,7 @@ "name": "Love", "network": "eth", "shortcut": "LOVE", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -7244,7 +7244,7 @@ "Github": "https://github.com/theembermine", "Homepage": "https://embermine.com/" }, - "marketcap_usd": 235621, + "marketcap_usd": 233392, "name": "Embers", "network": "eth", "shortcut": "MBRS", @@ -7260,7 +7260,7 @@ "address": "0x93E682107d1E9defB0b5ee701C71707a4B2E46Bc", "hidden": 1, "links": {}, - "marketcap_usd": 321699, + "marketcap_usd": 297643, "name": "MCAP", "network": "eth", "shortcut": "MCAP", @@ -7278,7 +7278,7 @@ "Github": "https://github.com/musiconomi/", "Homepage": "https://musiconomi.com/" }, - "marketcap_usd": 280273, + "marketcap_usd": 282865, "name": "Musiconomi", "network": "eth", "shortcut": "MCI", @@ -7295,7 +7295,7 @@ "links": { "Homepage": "https://mona.co" }, - "marketcap_usd": 73972994, + "marketcap_usd": 67472787, "name": "MCO", "network": "eth", "shortcut": "MCO", @@ -7388,7 +7388,7 @@ "name": "Mainframe Token", "network": "eth", "shortcut": "MFT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -7401,11 +7401,11 @@ "links": { "Homepage": "https://mftu.net" }, - "marketcap_usd": 69984, + "marketcap_usd": 68875, "name": "Mainstream For The Underground", "network": "eth", "shortcut": "MFTU", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -7507,7 +7507,7 @@ "Github": "https://github.com/modum-io", "Homepage": "https://modum.io" }, - "marketcap_usd": 23816727, + "marketcap_usd": 19226919, "name": "Modum", "network": "eth", "shortcut": "MOD", @@ -7576,7 +7576,7 @@ "links": { "Homepage": "https://mothership.cx" }, - "marketcap_usd": 13061912, + "marketcap_usd": 12562371, "name": "Mothership", "network": "eth", "shortcut": "MSP", @@ -7593,7 +7593,7 @@ "links": { "Homepage": "http://www.monetha.io" }, - "marketcap_usd": 5251079, + "marketcap_usd": 5116672, "name": "Monetha", "network": "eth", "shortcut": "MTH", @@ -7713,7 +7713,7 @@ "Github": "https://github.com/Merculet", "Homepage": "https://www.merculet.io" }, - "marketcap_usd": 4364747, + "marketcap_usd": 3514692, "name": "Merculet", "network": "eth", "shortcut": "MVP", @@ -7763,7 +7763,7 @@ "links": { "Homepage": "https://mysterium.network" }, - "marketcap_usd": 2538062, + "marketcap_usd": 2462840, "name": "Mysterium", "network": "eth", "shortcut": "MYST", @@ -7798,7 +7798,7 @@ "Github": "https://github.com/NANJ-COIN", "Homepage": "https://nanjcoin.com/" }, - "marketcap_usd": 15181302, + "marketcap_usd": 14700718, "name": "NANJCOIN", "network": "eth", "shortcut": "NANJ", @@ -7852,7 +7852,7 @@ "Github": "https://github.com/polyswarm", "Homepage": "https://polyswarm.io" }, - "marketcap_usd": 25599374, + "marketcap_usd": 27218297, "name": "Nectar", "network": "eth", "shortcut": "NCT", @@ -7869,7 +7869,7 @@ "links": { "Homepage": "https://neverdie.com" }, - "marketcap_usd": 1112466, + "marketcap_usd": 1066178, "name": "Neverdie", "network": "eth", "shortcut": "NDC", @@ -7904,7 +7904,7 @@ "links": { "Homepage": "https://nimiq.com" }, - "marketcap_usd": 3371594, + "marketcap_usd": 3397393, "name": "NIMIQ", "network": "eth", "shortcut": "NET", @@ -8011,7 +8011,7 @@ "Github": "https://github.com/NperProject", "Homepage": "https://nper.io" }, - "marketcap_usd": 2621604, + "marketcap_usd": 2485599, "name": "NPER", "network": "eth", "shortcut": "NPER", @@ -8050,7 +8050,7 @@ "name": "Nuggets Token", "network": "eth", "shortcut": "NUG", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -8063,7 +8063,7 @@ "links": { "Homepage": "https://nuls.io" }, - "marketcap_usd": 67005594, + "marketcap_usd": 71438643, "name": "NULS", "network": "eth", "shortcut": "NULS", @@ -8097,7 +8097,7 @@ "links": { "Homepage": "https://beyond-the-void.net" }, - "marketcap_usd": 1642225, + "marketcap_usd": 1893866, "name": "Nexium", "network": "eth", "shortcut": "NxC", @@ -8131,7 +8131,7 @@ "links": { "Homepage": "https://www.openanx.org/en" }, - "marketcap_usd": 4671109, + "marketcap_usd": 4043015, "name": "OAX", "network": "eth", "shortcut": "OAX", @@ -8171,7 +8171,7 @@ "name": "ODEM Token", "network": "eth", "shortcut": "ODE", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -8225,7 +8225,7 @@ "name": "OneLedger Token", "network": "eth", "shortcut": "OLT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -8261,7 +8261,7 @@ "name": "OTCMAKER Token", "network": "eth", "shortcut": "OMT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -8331,7 +8331,7 @@ "name": "ORCA Token", "network": "eth", "shortcut": "ORCA", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -8345,7 +8345,7 @@ "Github": "https://github.com/OpenSTFoundation", "Homepage": "https://simpletoken.org" }, - "marketcap_usd": 15269114, + "marketcap_usd": 12916284, "name": "Simple Token 'OST'", "network": "eth", "shortcut": "OST", @@ -8367,7 +8367,7 @@ "name": "OWNDATA", "network": "eth", "shortcut": "OWN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -8399,7 +8399,7 @@ "Github": "https://github.com/policypalnet", "Homepage": "https://www.policypal.network" }, - "marketcap_usd": 2614128, + "marketcap_usd": 3102921, "name": "PolicyPal Network", "network": "eth", "shortcut": "PAL", @@ -8438,7 +8438,7 @@ "name": "PASS Token", "network": "eth", "shortcut": "PASS", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -8504,7 +8504,7 @@ "links": { "Homepage": "http://www.tenx.tech" }, - "marketcap_usd": 65886689, + "marketcap_usd": 65073355, "name": "TenX", "network": "eth", "shortcut": "PAY", @@ -8573,7 +8573,7 @@ "Github": "https://github.com/PeculiumPCL/Peculium", "Homepage": "https://peculium.io" }, - "marketcap_usd": 3142087, + "marketcap_usd": 2862364, "name": "Peculium", "network": "eth", "shortcut": "PCL", @@ -8611,7 +8611,7 @@ "name": "PEG Network Token", "network": "eth", "shortcut": "PEG", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -8728,7 +8728,7 @@ "links": { "Homepage": "https://polybius.io" }, - "marketcap_usd": 7063392, + "marketcap_usd": 7716159, "name": "Polybius", "network": "eth", "shortcut": "PLBT", @@ -8768,7 +8768,7 @@ "name": "DACPLAY Token", "network": "eth", "shortcut": "PLS", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -8832,7 +8832,7 @@ "links": { "Homepage": "https://polymath.network" }, - "marketcap_usd": 65097186, + "marketcap_usd": 58432263, "name": "Polymath Network", "network": "eth", "shortcut": "POLY", @@ -8867,7 +8867,7 @@ "Github": "https://github.com/PoSToken", "Homepage": "https://postoken.org" }, - "marketcap_usd": 39324, + "marketcap_usd": 39994, "name": "PoSToken", "network": "eth", "shortcut": "POS", @@ -8901,7 +8901,7 @@ "links": { "Homepage": "https://www.paypie.com" }, - "marketcap_usd": 8815917, + "marketcap_usd": 16816456, "name": "PayPie", "network": "eth", "shortcut": "PPP", @@ -8918,7 +8918,7 @@ "links": { "Homepage": "https://populous.co" }, - "marketcap_usd": 172503997, + "marketcap_usd": 158658057, "name": "Populous", "network": "eth", "shortcut": "PPT", @@ -8935,7 +8935,7 @@ "links": { "Homepage": "https://presearch.io" }, - "marketcap_usd": 17333261, + "marketcap_usd": 16790621, "name": "Presearch", "network": "eth", "shortcut": "PRE", @@ -8988,7 +8988,7 @@ "links": { "Homepage": "https://propy.com" }, - "marketcap_usd": 6918232, + "marketcap_usd": 6758935, "name": "Propy", "network": "eth", "shortcut": "PRO", @@ -9133,7 +9133,7 @@ "name": "PureCarbon", "network": "eth", "shortcut": "PURC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -9163,7 +9163,7 @@ "links": { "Homepage": "https://liquid.plus" }, - "marketcap_usd": 74032466, + "marketcap_usd": 74061345, "name": "QASH", "network": "eth", "shortcut": "QASH", @@ -9220,7 +9220,7 @@ "name": "Quant", "network": "eth", "shortcut": "QNT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -9305,7 +9305,7 @@ "Github": "https://github.com/qtumproject", "Homepage": "https://qtum.org/" }, - "marketcap_usd": 416132156, + "marketcap_usd": 401693242, "name": "Qtum", "network": "eth", "shortcut": "QTUM", @@ -9359,7 +9359,7 @@ "Github": "https://github.com/ripio/rcn-token", "Homepage": "https://ripiocredit.network" }, - "marketcap_usd": 11245302, + "marketcap_usd": 9599356, "name": "Ripio Credit Network", "network": "eth", "shortcut": "RCN", @@ -9410,7 +9410,7 @@ "links": { "Homepage": "https://www.rebellious.io" }, - "marketcap_usd": 3379079, + "marketcap_usd": 2672658, "name": "Rebellious", "network": "eth", "shortcut": "REBL", @@ -9428,7 +9428,7 @@ "Github": "https://github.com/red", "Homepage": "https://ico.red-lang.org" }, - "marketcap_usd": 1628824, + "marketcap_usd": 1625556, "name": "Red Community Token", "network": "eth", "shortcut": "RED", @@ -9450,7 +9450,7 @@ "name": "RedCab", "network": "eth", "shortcut": "REDC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -9481,7 +9481,7 @@ "links": { "Homepage": "https://request.network" }, - "marketcap_usd": 35770681, + "marketcap_usd": 33124649, "name": "Request Network", "network": "eth", "shortcut": "REQ", @@ -9516,7 +9516,7 @@ "links": { "Homepage": "https://refereum.com" }, - "marketcap_usd": 11543956, + "marketcap_usd": 10405580, "name": "Refereum", "network": "eth", "shortcut": "RFR", @@ -9537,7 +9537,7 @@ "name": "Evolution Land Global Token", "network": "eth", "shortcut": "RING", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -9568,7 +9568,7 @@ "links": { "Homepage": "http://crowdsale.iex.ec" }, - "marketcap_usd": 34824656, + "marketcap_usd": 31188808, "name": "IEx.ec", "network": "eth", "shortcut": "RLC", @@ -9620,7 +9620,7 @@ "links": { "Homepage": "http://www.relex.io" }, - "marketcap_usd": 3756159, + "marketcap_usd": 4036278, "name": "Relex", "network": "eth", "shortcut": "RLX", @@ -9655,7 +9655,7 @@ "Github": "https://github.com/rocketico", "Homepage": "https://rocketico.io" }, - "marketcap_usd": 18890486, + "marketcap_usd": 20501556, "name": "Rocket Token", "network": "eth", "shortcut": "ROCK", @@ -9757,7 +9757,7 @@ "links": { "Homepage": "https://rivetzintl.com" }, - "marketcap_usd": 3507204, + "marketcap_usd": 3468618, "name": "Rivetz", "network": "eth", "shortcut": "RVT", @@ -9808,7 +9808,7 @@ "links": { "Homepage": "https://saltlending.com" }, - "marketcap_usd": 39102319, + "marketcap_usd": 41690369, "name": "Salt Lending Token", "network": "eth", "shortcut": "SALT", @@ -9825,7 +9825,7 @@ "links": { "Homepage": "https://santiment.net" }, - "marketcap_usd": 44201823, + "marketcap_usd": 40246236, "name": "Santiment", "network": "eth", "shortcut": "SAN", @@ -9876,7 +9876,7 @@ "links": { "Homepage": "https://sensay.it" }, - "marketcap_usd": 1977673, + "marketcap_usd": 2012926, "name": "Sensay", "network": "eth", "shortcut": "SENSE", @@ -10049,7 +10049,7 @@ "links": { "Homepage": "http://smartlands.io" }, - "marketcap_usd": 8604761, + "marketcap_usd": 8754232, "name": "Smartlands", "network": "eth", "shortcut": "SLT", @@ -10071,7 +10071,7 @@ "name": "Selfllery", "network": "eth", "shortcut": "SLY", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -10136,7 +10136,7 @@ "links": { "Homepage": "https://singulardtv.com" }, - "marketcap_usd": 14885554, + "marketcap_usd": 13648030, "name": "SingularDTV", "network": "eth", "shortcut": "SNGLS", @@ -10239,7 +10239,7 @@ "links": { "Homepage": "https://spankchain.com" }, - "marketcap_usd": 14224665, + "marketcap_usd": 13540028, "name": "SpankChain", "network": "eth", "shortcut": "SPANK", @@ -10363,7 +10363,7 @@ "name": "StabitCoin", "network": "eth", "shortcut": "STABIT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -10428,7 +10428,7 @@ "links": { "Homepage": "https://stktoken.com" }, - "marketcap_usd": 4381439, + "marketcap_usd": 4966534, "name": "STK Token", "network": "eth", "shortcut": "STK", @@ -10463,7 +10463,7 @@ "Github": "https://github.com/Storj", "Homepage": "https://storj.io" }, - "marketcap_usd": 41820750, + "marketcap_usd": 43125921, "name": "STORJ", "network": "eth", "shortcut": "STORJ", @@ -10480,7 +10480,7 @@ "links": { "Homepage": "https://www.stormtoken.com" }, - "marketcap_usd": 42844408, + "marketcap_usd": 37892294, "name": "Storm Token", "network": "eth", "shortcut": "STORM", @@ -10516,7 +10516,7 @@ "Github": "https://github.com/Storiqa/", "Homepage": "https://storiqa.com" }, - "marketcap_usd": 19198715, + "marketcap_usd": 18749703, "name": "Storiqa", "network": "eth", "shortcut": "STQ", @@ -10569,7 +10569,7 @@ "links": { "Homepage": "https://substratum.net" }, - "marketcap_usd": 74704647, + "marketcap_usd": 57545455, "name": "Substratum", "network": "eth", "shortcut": "SUB", @@ -10761,7 +10761,7 @@ "Github": "https://github.com/telcoin", "Homepage": "https://www.telco.in" }, - "marketcap_usd": 26735012, + "marketcap_usd": 22830969, "name": "Telcoin", "network": "eth", "shortcut": "TEL", @@ -10779,7 +10779,7 @@ "Github": "https://github.com/TrueFlip", "Homepage": "https://trueflip.io" }, - "marketcap_usd": 3384210, + "marketcap_usd": 3171281, "name": "TrueFlip", "network": "eth", "shortcut": "TFL", @@ -10796,7 +10796,7 @@ "links": { "Homepage": "https://www.thetatoken.org/" }, - "marketcap_usd": 70766628, + "marketcap_usd": 64884083, "name": "Theta Token", "network": "eth", "shortcut": "THETA", @@ -10836,7 +10836,7 @@ "name": "Topinvestmentcoin", "network": "eth", "shortcut": "TICO", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -10849,7 +10849,7 @@ "links": { "Homepage": "https://chronobank.io" }, - "marketcap_usd": 5393779, + "marketcap_usd": 5099580, "name": "Chronobank", "network": "eth", "shortcut": "TIME", @@ -10883,7 +10883,7 @@ "links": { "Homepage": "https://www.blocktix.io" }, - "marketcap_usd": 5534389, + "marketcap_usd": 5167044, "name": "Blocktix", "network": "eth", "shortcut": "TIX", @@ -10900,7 +10900,7 @@ "links": { "Homepage": "https://etherscan.io/token/TokenCard" }, - "marketcap_usd": 10866544, + "marketcap_usd": 10979400, "name": "TokenCard", "network": "eth", "shortcut": "TKN", @@ -10940,7 +10940,7 @@ "name": "ToorCoin", "network": "eth", "shortcut": "TOOR", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -11009,7 +11009,7 @@ "name": "TeslaWatt", "network": "eth", "shortcut": "TSW", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -11056,7 +11056,7 @@ "links": { "Homepage": "https://taas.fund" }, - "marketcap_usd": 7161933, + "marketcap_usd": 6406506, "name": "Token-as-a-Service", "network": "eth", "shortcut": "TaaS", @@ -11091,7 +11091,7 @@ "links": { "Homepage": "https://uquidcoin.com" }, - "marketcap_usd": 7051113, + "marketcap_usd": 6175841, "name": "Uquid Coin", "network": "eth", "shortcut": "UQC", @@ -11159,7 +11159,7 @@ "Github": "https://github.com/UniversaBlockchain/universa", "Homepage": "https://www.universa.io/" }, - "marketcap_usd": 13635904, + "marketcap_usd": 13029388, "name": "Universa", "network": "eth", "shortcut": "UTN-P", @@ -11214,7 +11214,7 @@ "name": "VeriDocGlobal", "network": "eth", "shortcut": "VDG", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -11246,7 +11246,7 @@ "Github": "https://github.com/blockv", "Homepage": "https://blockv.io" }, - "marketcap_usd": 22783655, + "marketcap_usd": 21610531, "name": "BLOCKv", "network": "eth", "shortcut": "VEE", @@ -11264,7 +11264,7 @@ "Github": "https://github.com/vechain-team", "Homepage": "https://www.vechain.com" }, - "marketcap_usd": 1041101242, + "marketcap_usd": 898155557, "name": "Vechain", "network": "eth", "shortcut": "VEN", @@ -11333,7 +11333,7 @@ "Github": "https://github.com/Viewly/", "Homepage": "https://view.ly/" }, - "marketcap_usd": 990392, + "marketcap_usd": 625291, "name": "Viewly", "network": "eth", "shortcut": "VIEW", @@ -11351,7 +11351,7 @@ "Github": "https://github.com/ViceIndustryToken", "Homepage": "https://vicetoken.com/" }, - "marketcap_usd": 1634718, + "marketcap_usd": 1957089, "name": "Vice Industry Token", "network": "eth", "shortcut": "VIT", @@ -11439,7 +11439,7 @@ "links": { "Homepage": "https://veros.org" }, - "marketcap_usd": 185024, + "marketcap_usd": 219592, "name": "Veros", "network": "eth", "shortcut": "VRS", @@ -11474,7 +11474,7 @@ "Github": "https://github.com/waxio", "Homepage": "https://wax.io" }, - "marketcap_usd": 74088704, + "marketcap_usd": 69485789, "name": "WAX", "network": "eth", "shortcut": "WAX", @@ -11526,7 +11526,7 @@ "links": { "Homepage": "https://wepower.network" }, - "marketcap_usd": 11390827, + "marketcap_usd": 10627450, "name": "WePower", "network": "eth", "shortcut": "WCT", @@ -11596,7 +11596,7 @@ "links": { "Homepage": "https://wings.ai" }, - "marketcap_usd": 13797499, + "marketcap_usd": 12571650, "name": "WINGS", "network": "eth", "shortcut": "WINGS", @@ -11618,7 +11618,7 @@ "name": "WemarkToken", "network": "eth", "shortcut": "WMK", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -11634,7 +11634,7 @@ "name": "Woonk", "network": "eth", "shortcut": "WNK", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -11769,7 +11769,7 @@ "links": { "Homepage": "https://www.wacoin.io" }, - "marketcap_usd": 10254001, + "marketcap_usd": 8995319, "name": "WaBi", "network": "eth", "shortcut": "WaBi", @@ -11803,7 +11803,7 @@ "links": { "Homepage": "http://www.xaurum.org" }, - "marketcap_usd": 4264487, + "marketcap_usd": 4021792, "name": "Xaurum", "network": "eth", "shortcut": "XAUR", @@ -11821,7 +11821,7 @@ "Github": "https://github.com/blitzpredict", "Homepage": "https://www.blitzpredict.io" }, - "marketcap_usd": 672147, + "marketcap_usd": 641955, "name": "BlitzPredict", "network": "eth", "shortcut": "XBP", @@ -11944,7 +11944,7 @@ "Github": "https://github.com/InkProtocol/", "Homepage": "https://paywithink.com" }, - "marketcap_usd": 3037350, + "marketcap_usd": 3022492, "name": "Ink Protocol", "network": "eth", "shortcut": "XNK", @@ -11961,7 +11961,7 @@ "links": { "Homepage": "https://xenon.network" }, - "marketcap_usd": 804351, + "marketcap_usd": 820895, "name": "XENON", "network": "eth", "shortcut": "XNN", @@ -12034,7 +12034,7 @@ "name": "YUP", "network": "eth", "shortcut": "YUP", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -12068,7 +12068,7 @@ "Github": "https://github.com/zapproject", "Homepage": "https://zap.store" }, - "marketcap_usd": 2528124, + "marketcap_usd": 1982327, "name": "ZAP", "network": "eth", "shortcut": "ZAP", @@ -12085,7 +12085,7 @@ "links": { "Homepage": "https://zsc.io/" }, - "marketcap_usd": 4681337, + "marketcap_usd": 5199400, "name": "Zeusshield", "network": "eth", "shortcut": "ZCS", @@ -12103,7 +12103,7 @@ "Github": "https://github.com/zilliqa", "Homepage": "https://www.zilliqa.com/" }, - "marketcap_usd": 345013721, + "marketcap_usd": 324539255, "name": "Zilliqa", "network": "eth", "shortcut": "ZIL", @@ -12120,7 +12120,7 @@ "links": { "Homepage": "https://www.zmine.com" }, - "marketcap_usd": 5169952, + "marketcap_usd": 5189073, "name": "ZMINE", "network": "eth", "shortcut": "ZMN", @@ -12155,7 +12155,7 @@ "Github": "https://github.com/carVertical", "Homepage": "https://www.carvertical.com" }, - "marketcap_usd": 4924943, + "marketcap_usd": 4487210, "name": "carVertical", "network": "eth", "shortcut": "cV", @@ -12243,7 +12243,7 @@ "Github": "https://github.com/eosdac", "Homepage": "https://eosdac.io/" }, - "marketcap_usd": 17427322, + "marketcap_usd": 16657260, "name": "eosDAC", "network": "eth", "shortcut": "eosDAC", @@ -12277,7 +12277,7 @@ "Github": "https://github.com/havven/havven", "Homepage": "https://www.havven.io" }, - "marketcap_usd": 1149925, + "marketcap_usd": 1145127, "name": "Havven-Backed USD Nomins (nUSD)", "network": "eth", "shortcut": "nUSD", @@ -12311,7 +12311,7 @@ "address": "0x8667559254241ddeD4d11392f868d72092765367", "hidden": 1, "links": {}, - "marketcap_usd": 271191736, + "marketcap_usd": 250922293, "name": "Aeternity", "network": "kov", "shortcut": "Aeternity", @@ -12420,7 +12420,7 @@ "name": "*PLASMA", "network": "rop", "shortcut": "*PLASMA", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -12498,7 +12498,7 @@ "links": { "Homepage": "https://www.qwark.io" }, - "marketcap_usd": 2183207, + "marketcap_usd": 2070874, "name": "QWARK", "network": "ubq", "shortcut": "QWARK", @@ -12531,10 +12531,10 @@ "links": { "Homepage": "https://akroma.io" }, - "marketcap_usd": 753379, + "marketcap_usd": 659035, "name": "Akroma", "shortcut": "AKA", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "coin", "wallet": { @@ -12549,7 +12549,7 @@ "marketcap_usd": 0, "name": "Atheios", "shortcut": "ATH", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "coin", "wallet": { @@ -12576,7 +12576,7 @@ "links": { "Homepage": "https://egem.io" }, - "marketcap_usd": 227816, + "marketcap_usd": 226818, "name": "EtherGem", "shortcut": "EGEM", "t1_enabled": "yes", @@ -12591,7 +12591,7 @@ "links": { "Homepage": "https://ellaism.org" }, - "marketcap_usd": 381897, + "marketcap_usd": 399803, "name": "Ellaism", "shortcut": "ELLA", "t1_enabled": "yes", @@ -12624,7 +12624,7 @@ "marketcap_usd": 0, "name": "Ethersocial Network", "shortcut": "ESN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "coin", "wallet": { @@ -12636,7 +12636,7 @@ "links": { "Homepage": "https://ethereumclassic.github.io" }, - "marketcap_usd": 1348712891, + "marketcap_usd": 1311425469, "name": "Ethereum Classic", "shortcut": "ETC", "t1_enabled": "yes", @@ -12651,7 +12651,7 @@ "links": { "Homepage": "https://www.ethereum.org" }, - "marketcap_usd": 29336809232, + "marketcap_usd": 28388275708, "name": "Ethereum", "shortcut": "ETH", "t1_enabled": "yes", @@ -12669,7 +12669,7 @@ "marketcap_usd": 0, "name": "Ether-1", "shortcut": "ETHO", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "coin", "wallet": { @@ -12696,7 +12696,7 @@ "links": { "Homepage": "https://expanse.tech" }, - "marketcap_usd": 5311062, + "marketcap_usd": 4756082, "name": "Expanse", "shortcut": "EXP", "t1_enabled": "yes", @@ -12711,7 +12711,7 @@ "links": { "Homepage": "https://gochain.io" }, - "marketcap_usd": 24974636, + "marketcap_usd": 28630365, "name": "GoChain", "shortcut": "GO", "t1_enabled": "yes", @@ -12726,10 +12726,10 @@ "links": { "Homepage": "https://musicoin.org" }, - "marketcap_usd": 3153043, + "marketcap_usd": 3332317, "name": "Musicoin", "shortcut": "MUSIC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "coin", "wallet": { @@ -12741,10 +12741,10 @@ "links": { "Homepage": "https://pirl.io" }, - "marketcap_usd": 2732280, + "marketcap_usd": 2675730, "name": "Pirl", "shortcut": "PIRL", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "soon", "type": "coin", "wallet": { @@ -12771,7 +12771,7 @@ "links": { "Homepage": "https://ubiqsmart.com" }, - "marketcap_usd": 23545890, + "marketcap_usd": 23935280, "name": "Ubiq", "shortcut": "UBQ", "t1_enabled": "yes", @@ -12866,7 +12866,7 @@ "links": { "Homepage": "https://www.cardano.org" }, - "marketcap_usd": 2679858518, + "marketcap_usd": 2545467697, "name": "Cardano", "shortcut": "ADA", "t1_enabled": "no", @@ -12877,7 +12877,7 @@ "links": { "Homepage": "https://lisk.io/" }, - "marketcap_usd": 562907714, + "marketcap_usd": 500826972, "name": "Lisk", "shortcut": "LSK", "t1_enabled": "no", @@ -12889,7 +12889,7 @@ "links": { "Homepage": "https://ont.io" }, - "marketcap_usd": 493962017, + "marketcap_usd": 437689972, "name": "Ontology", "notes": "In development", "shortcut": "ONT", @@ -12897,11 +12897,22 @@ "t2_enabled": "no", "type": "coin" }, + "misc:WAN": { + "links": { + "Homepage": "https://wanchain.org" + }, + "marketcap_usd": 118518034, + "name": "Wanchain", + "shortcut": "WAN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin" + }, "misc:XLM": { "links": { "Homepage": "https://www.stellar.org" }, - "marketcap_usd": 4315310208, + "marketcap_usd": 4079796387, "name": "Stellar", "notes": "In development", "shortcut": "XLM", @@ -12913,7 +12924,7 @@ "links": { "Homepage": "https://getmonero.org" }, - "marketcap_usd": 1728865351, + "marketcap_usd": 1598899682, "name": "Monero", "notes": "In development", "shortcut": "XMR", @@ -12925,7 +12936,7 @@ "links": { "Homepage": "https://ripple.com" }, - "marketcap_usd": 13795915761, + "marketcap_usd": 13007985768, "name": "Ripple", "notes": "In development", "shortcut": "XRP", @@ -12937,7 +12948,7 @@ "links": { "Homepage": "https://tezos.com" }, - "marketcap_usd": 821927670, + "marketcap_usd": 815753291, "name": "Tezos", "notes": "In development", "shortcut": "XTZ", @@ -12963,7 +12974,7 @@ "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 6202731, + "marketcap_usd": 6080704, "name": "DIMCOIN", "shortcut": "DIM", "t1_enabled": "yes", @@ -12978,7 +12989,7 @@ "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 6202731, + "marketcap_usd": 6080704, "name": "DIM TOKEN", "shortcut": "DIMTOK", "t1_enabled": "yes", @@ -13020,7 +13031,7 @@ "links": { "Homepage": "https://nem.io" }, - "marketcap_usd": 991190090, + "marketcap_usd": 919751906, "name": "NEM", "shortcut": "XEM", "t1_enabled": "yes", @@ -13032,11 +13043,11 @@ } }, "info": { - "marketcap_usd": 176073887407, - "t1_coins": 628, - "t2_coins": 627, - "total_marketcap_usd": 230413359720, - "updated_at": 1535465732, - "updated_at_readable": "Tue Aug 28 16:15:32 2018" + "marketcap_usd": 171555032734, + "t1_coins": 698, + "t2_coins": 628, + "total_marketcap_usd": 222214294535, + "updated_at": 1535646827, + "updated_at_readable": "Thu Aug 30 18:33:47 2018" } } \ No newline at end of file diff --git a/defs/support.json b/defs/support.json index d69c671b8..e6cf78624 100644 --- a/defs/support.json +++ b/defs/support.json @@ -631,7 +631,6 @@ "erc20:eth:TAU": "1.6.2", "erc20:eth:TBC2": "1.6.2", "erc20:eth:TBT": "1.6.2", - "erc20:eth:TCA": "1.6.3", "erc20:eth:TDH": "1.6.2", "erc20:eth:TEL": "1.6.2", "erc20:eth:TFL": "1.6.2", From d8f8c882d5dcad7b90cecb593b424556835c8961 Mon Sep 17 00:00:00 2001 From: matejcik Date: Thu, 30 Aug 2018 18:58:03 +0200 Subject: [PATCH 548/767] support: undo mis-added bitcoin-likes for 1.6.3 --- defs/coins_details.json | 30 +++++++++++++++--------------- defs/support.json | 20 ++++++++++---------- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/defs/coins_details.json b/defs/coins_details.json index 3715f44b1..8993932b8 100644 --- a/defs/coins_details.json +++ b/defs/coins_details.json @@ -141,7 +141,7 @@ "marketcap_usd": 0, "name": "Denarius", "shortcut": "DNR", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "soon", "type": "coin", "wallet": {} @@ -184,7 +184,7 @@ "marketcap_usd": 6483801, "name": "Flashcoin", "shortcut": "FLASH", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "soon", "type": "coin", "wallet": {} @@ -197,7 +197,7 @@ "marketcap_usd": 11541343, "name": "Feathercoin", "shortcut": "FTC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "soon", "type": "coin", "wallet": {} @@ -225,7 +225,7 @@ "marketcap_usd": 0, "name": "Koto", "shortcut": "KOTO", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "soon", "type": "coin", "wallet": {} @@ -269,7 +269,7 @@ "marketcap_usd": 0, "name": "MUE", "shortcut": "MUE", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "soon", "type": "coin", "wallet": {} @@ -297,7 +297,7 @@ "marketcap_usd": 2522620, "name": "Pesetacoin", "shortcut": "PTC", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "soon", "type": "coin", "wallet": {} @@ -310,7 +310,7 @@ "marketcap_usd": 41874199, "name": "SmartCash", "shortcut": "SMART", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "soon", "type": "coin", "wallet": {} @@ -352,7 +352,7 @@ "marketcap_usd": 0, "name": "Bitcoin Gold Testnet", "shortcut": "TBTG", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "soon", "type": "coin", "wallet": {} @@ -453,7 +453,7 @@ "marketcap_usd": 4399423, "name": "Myriad", "shortcut": "XMY", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "soon", "type": "coin", "wallet": {} @@ -539,7 +539,7 @@ "marketcap_usd": 0, "name": "SmartCash Testnet", "shortcut": "tSMART", - "t1_enabled": "yes", + "t1_enabled": "soon", "t2_enabled": "soon", "type": "coin", "wallet": {} @@ -13043,11 +13043,11 @@ } }, "info": { - "marketcap_usd": 171555032734, - "t1_coins": 698, + "marketcap_usd": 171488211348, + "t1_coins": 690, "t2_coins": 628, - "total_marketcap_usd": 222214294535, - "updated_at": 1535646827, - "updated_at_readable": "Thu Aug 30 18:33:47 2018" + "total_marketcap_usd": 221847925234, + "updated_at": 1535648346, + "updated_at_readable": "Thu Aug 30 18:59:06 2018" } } \ No newline at end of file diff --git a/defs/support.json b/defs/support.json index e6cf78624..60db00651 100644 --- a/defs/support.json +++ b/defs/support.json @@ -22,33 +22,33 @@ "bitcoin:DASH": "1.5.2", "bitcoin:DCR": "1.6.2", "bitcoin:DGB": "1.6.0", - "bitcoin:DNR": "1.6.3", + "bitcoin:DNR": "soon", "bitcoin:DOGE": "1.5.2", "bitcoin:FJC": "1.6.1", - "bitcoin:FLASH": "1.6.3", - "bitcoin:FTC": "1.6.3", + "bitcoin:FLASH": "soon", + "bitcoin:FTC": "soon", "bitcoin:GRS": "1.6.2", - "bitcoin:KOTO": "1.6.3", + "bitcoin:KOTO": "soon", "bitcoin:LTC": "1.5.2", "bitcoin:MONA": "1.6.0", - "bitcoin:MUE": "1.6.3", + "bitcoin:MUE": "soon", "bitcoin:NMC": "1.5.2", - "bitcoin:PTC": "1.6.3", - "bitcoin:SMART": "1.6.3", + "bitcoin:PTC": "soon", + "bitcoin:SMART": "soon", "bitcoin:TAZ": "1.6.2", "bitcoin:TBCH": "1.6.2", - "bitcoin:TBTG": "1.6.3", + "bitcoin:TBTG": "soon", "bitcoin:TDCR": "1.6.2", "bitcoin:TEST": "1.5.2", "bitcoin:TLTC": "1.6.2", "bitcoin:VIA": "1.6.2", "bitcoin:VTC": "1.6.1", - "bitcoin:XMY": "1.6.3", + "bitcoin:XMY": "soon", "bitcoin:XZC": "1.6.2", "bitcoin:ZEC": "1.6.2", "bitcoin:tDASH": "1.6.2", "bitcoin:tGRS": "1.6.2", - "bitcoin:tSMART": "1.6.3", + "bitcoin:tSMART": "soon", "bitcoin:tXZC": "1.6.2", "erc20:ella:MINING": "1.6.2", "erc20:etc:BEC": "1.6.2", From a3cf029042f092bc2e42ede0a2fa5fa1df2ec2d9 Mon Sep 17 00:00:00 2001 From: Tomas Susanka Date: Tue, 4 Sep 2018 13:52:03 +0200 Subject: [PATCH 549/767] protobuf: unknown derivation path message --- protob/messages-common.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/protob/messages-common.proto b/protob/messages-common.proto index 9f3f0763a..0e23c87e5 100644 --- a/protob/messages-common.proto +++ b/protob/messages-common.proto @@ -59,6 +59,7 @@ message ButtonRequest { ButtonRequest_MnemonicWordCount = 12; ButtonRequest_MnemonicInput = 13; ButtonRequest_PassphraseType = 14; + ButtonRequest_UnknownDerivationPath = 15; } } From 50a619e12db16b989f5a9eae914414fe80d32d28 Mon Sep 17 00:00:00 2001 From: matejcik Date: Tue, 4 Sep 2018 15:19:14 +0200 Subject: [PATCH 550/767] coin_info: do not use f-strings in the library to make it python3.3 compatible --- tools/coin_info.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tools/coin_info.py b/tools/coin_info.py index 3eb7198bb..74d9d2c1b 100755 --- a/tools/coin_info.py +++ b/tools/coin_info.py @@ -72,7 +72,7 @@ def check_type(val, types, nullable=False, empty=False, regex=None, choice=None) # check type if not isinstance(val, types): - raise TypeError(f"Wrong type (expected: {types})") + raise TypeError("Wrong type (expected: {})".format(types)) # check empty if isinstance(val, (list, dict)) and not empty and not val: @@ -83,12 +83,12 @@ def check_type(val, types, nullable=False, empty=False, regex=None, choice=None) if types is not str: raise TypeError("Wrong type for regex check") if not re.search(regex, val): - raise ValueError(f"Value does not match regex {regex}") + raise ValueError("Value does not match regex {}".format(regex)) # check choice if choice is not None and val not in choice: choice_str = ", ".join(choice) - raise ValueError(f"Value not allowed, use one of: {choice_str}") + raise ValueError("Value not allowed, use one of: {}".format(choice_str)) def check_key(key, types, optional=False, **kwargs): @@ -97,11 +97,11 @@ def check_key(key, types, optional=False, **kwargs): if optional: return else: - raise KeyError(f"{key}: Missing key") + raise KeyError("{}: Missing key".format(key)) try: check_type(coin[key], types, **kwargs) except Exception as e: - raise ValueError(f"{key}: {e}") from e + raise ValueError("{}: {}".format(key, e)) from e return do_check @@ -400,7 +400,7 @@ def mark_duplicate_shortcuts(coins): # first deduplicate keys so that we can identify overrides for values in dup_keys.values(): for i, coin in enumerate(values): - coin["key"] += f":{i}" + coin["key"] += ":" + str(i) # load overrides and put them into their own bucket overrides = load_json("duplicity_overrides.json") From 9342b52c6b4227774fada0425443407fedf76997 Mon Sep 17 00:00:00 2001 From: matejcik Date: Tue, 4 Sep 2018 15:28:06 +0200 Subject: [PATCH 551/767] cointool: replace 'coins_json' with 'dump' `cointool.py coins_json` generated an old-style `coins.json` file with entries on bitcoin-like coins. This is no longe really doing what we need. Instead, the new command `dump` will output _all available data_ in the same format as Python sees it. Much more useful for other kinds of consumers. --- tools/README.md | 3 +-- tools/cointool.py | 34 +++++++++++++++++++++++++--------- 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/tools/README.md b/tools/README.md index 680553f63..cb65b5aff 100644 --- a/tools/README.md +++ b/tools/README.md @@ -19,8 +19,7 @@ the following commands: template. By default, `cointool.py render foo.bar.mako` will put its result into file `foo.bar` in the same directory. See [usage in `trezor-core`](https://github.com/trezor/trezor-core/commit/348b99b8dc5bcfc4ab85e1e7faad3fb4ef3e8763). * **`check`**: check validity of json definitions and associated data. Used in CI. -* **`coins_json`**: generate `coins.json` file for use in Connect, webwallet and python-trezor. - This file contains data on Bitcoin-like coins and their support status. +* **`dump`**: dump all coin information, including support status, in JSON format. * **`coindefs`**: generate signed protobuf descriptions of coins. This is for future use and could allow us to not need to store coin data in Trezor itself. diff --git a/tools/cointool.py b/tools/cointool.py index 1d3fbd070..ca6a3708a 100755 --- a/tools/cointool.py +++ b/tools/cointool.py @@ -542,17 +542,33 @@ def check(backend, icons, show_duplicates): @cli.command() @click.option("-o", "--outfile", type=click.File(mode="w"), default="./coins.json") -def coins_json(outfile): - """Generate coins.json for consumption in python-trezor and Connect/Wallet""" - coins = coin_info.coin_info().bitcoin - support_info = coin_info.support_info(coins) - by_name = {} - for coin in coins: - coin["support"] = support_info[coin["key"]] - by_name[coin["name"]] = coin +def dump(outfile): + """Dump all coin data in a single JSON file. + + This file is structured the same as the internal data. That is, top-level object + is a dict with keys: 'bitcoin', 'eth', 'erc20', 'nem' and 'misc'. Value for each + key is a list of dicts, each describing a known coin. + + \b + Fields are category-specific, except for four common ones: + - 'name' - human-readable name + - 'shortcut' - currency symbol + - 'key' - unique identifier, e.g., 'bitcoin:BTC' + - 'support' - a dict with entries per known device + """ + coins = coin_info.coin_info() + support_info = coin_info.support_info(coins.as_list()) + + for category in coins.values(): + for coin in category: + coin["support"] = support_info[coin["key"]] + + # get rid of address_bytes which are bytes which can't be JSON encoded + for coin in coins.erc20: + coin.pop("address_bytes", None) with outfile: - json.dump(by_name, outfile, indent=4, sort_keys=True) + json.dump(coins, outfile, indent=4, sort_keys=True) outfile.write("\n") From d5972438919239debf4975329476c181a4fed6ea Mon Sep 17 00:00:00 2001 From: matejcik Date: Tue, 4 Sep 2018 15:31:36 +0200 Subject: [PATCH 552/767] update tokens repo --- defs/ethereum/tokens | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/defs/ethereum/tokens b/defs/ethereum/tokens index 44826a687..0be9cc46c 160000 --- a/defs/ethereum/tokens +++ b/defs/ethereum/tokens @@ -1 +1 @@ -Subproject commit 44826a687a155bc0bb5e121370a07f5a95689d09 +Subproject commit 0be9cc46c0702fff1c07cb13b5f9bc05b87e5b69 From cc3f5b37537d26ba5c5b568fabec1bc67f7951fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Du=C5=A1an=20Klinec?= Date: Tue, 4 Sep 2018 18:16:45 +0200 Subject: [PATCH 553/767] xmr: add integrated addresses indicator (#203) --- protob/messages-monero.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/protob/messages-monero.proto b/protob/messages-monero.proto index 067c48ffd..4477082e8 100644 --- a/protob/messages-monero.proto +++ b/protob/messages-monero.proto @@ -140,6 +140,7 @@ message MoneroTransactionInitRequest { optional bytes exp_tx_prefix_hash = 12; repeated bytes use_tx_keys = 13; optional MoneroTransactionRsigData rsig_data = 14; + repeated uint32 integrated_indices = 15; } } From 625f9663e1ab7a600db7f14455b8a4435ef4560b Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 5 Sep 2018 15:35:46 +0200 Subject: [PATCH 554/767] defs/bitcoin: add xpub_magic_segwit_native for testnet --- defs/bitcoin/bitcoin_testnet.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/defs/bitcoin/bitcoin_testnet.json b/defs/bitcoin/bitcoin_testnet.json index 20ec46dfb..b83b38703 100644 --- a/defs/bitcoin/bitcoin_testnet.json +++ b/defs/bitcoin/bitcoin_testnet.json @@ -15,7 +15,7 @@ "xprv_magic": 70615956, "xpub_magic": 70617039, "xpub_magic_segwit_p2sh": 71979618, - "xpub_magic_segwit_native": null, + "xpub_magic_segwit_native": 73342198, "bech32_prefix": "tb", "cashaddr_prefix": null, "slip44": 1, From b6f59d351a2007a9bc80a7cdef64669a87c17739 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 5 Sep 2018 16:42:24 +0200 Subject: [PATCH 555/767] protob: remove TezosCurveType from protobuf; Ed25519 is the only supported one --- protob/messages-tezos.proto | 26 +++++++------------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/protob/messages-tezos.proto b/protob/messages-tezos.proto index 4f3791a05..e429ce8b8 100644 --- a/protob/messages-tezos.proto +++ b/protob/messages-tezos.proto @@ -5,15 +5,6 @@ package hw.trezor.messages.tezos; option java_package = "com.satoshilabs.trezor.lib.protobuf"; option java_outer_classname = "TrezorMessageTezos"; -/** - * Tezos Curve Type - */ -enum TezosCurveType { - Ed25519 = 0; - Secp256k1 = 1; - P256 = 2; -} - /** * Request: Ask device for Tezos address corresponding to address_n path * @start @@ -22,8 +13,7 @@ enum TezosCurveType { */ message TezosGetAddress { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - optional TezosCurveType curve = 2 [default=Ed25519]; // Curve to use in trezor - optional bool show_display = 3; // optionally show on display before sending the result + optional bool show_display = 2; // optionally show on display before sending the result } /** @@ -41,8 +31,7 @@ message TezosAddress { */ message TezosGetPublicKey { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - optional TezosCurveType curve = 2 [default=Ed25519]; // Curve to use in trezor - optional bool show_display = 3; // Optionally show on display before sending the result + optional bool show_display = 2; // Optionally show on display before sending the result } /** @@ -60,13 +49,12 @@ message TezosPublicKey { */ message TezosSignTx { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - optional TezosCurveType curve = 2 [default=Ed25519]; // Curve to use in trezor - optional bytes branch = 3; + optional bytes branch = 2; - optional TezosRevealOp reveal = 4; // Tezos reveal operation (may be bundled with other op) - optional TezosTransactionOp transaction = 5; // Tezos transaction operation - optional TezosOriginationOp origination = 6; // Tezos origination operation - optional TezosDelegationOp delegation = 7; // Tezos delegation operation + optional TezosRevealOp reveal = 3; // Tezos reveal operation (may be bundled with other op) + optional TezosTransactionOp transaction = 4; // Tezos transaction operation + optional TezosOriginationOp origination = 5; // Tezos origination operation + optional TezosDelegationOp delegation = 6; // Tezos delegation operation /* * Tezos contract ID */ From 4079530e6793c0a502a0fd5d962166cf9f76e893 Mon Sep 17 00:00:00 2001 From: matejcik Date: Wed, 5 Sep 2018 17:33:23 +0200 Subject: [PATCH 556/767] defs: defer SmartCash support on T1 (avoids a build problem) --- defs/support.json | 2 -- 1 file changed, 2 deletions(-) diff --git a/defs/support.json b/defs/support.json index 60db00651..f97040c6e 100644 --- a/defs/support.json +++ b/defs/support.json @@ -34,7 +34,6 @@ "bitcoin:MUE": "soon", "bitcoin:NMC": "1.5.2", "bitcoin:PTC": "soon", - "bitcoin:SMART": "soon", "bitcoin:TAZ": "1.6.2", "bitcoin:TBCH": "1.6.2", "bitcoin:TBTG": "soon", @@ -48,7 +47,6 @@ "bitcoin:ZEC": "1.6.2", "bitcoin:tDASH": "1.6.2", "bitcoin:tGRS": "1.6.2", - "bitcoin:tSMART": "soon", "bitcoin:tXZC": "1.6.2", "erc20:ella:MINING": "1.6.2", "erc20:etc:BEC": "1.6.2", From 843facd2c18b22cefea2ba6e14cbad509d91988f Mon Sep 17 00:00:00 2001 From: Tomas Susanka Date: Thu, 6 Sep 2018 13:43:58 +0200 Subject: [PATCH 557/767] protobuf: remove cardano sign/verify messages --- protob/messages-cardano.proto | 32 -------------------------------- 1 file changed, 32 deletions(-) diff --git a/protob/messages-cardano.proto b/protob/messages-cardano.proto index 11510d0c5..09d87d948 100644 --- a/protob/messages-cardano.proto +++ b/protob/messages-cardano.proto @@ -47,38 +47,6 @@ message CardanoPublicKey { optional string root_hd_passphrase = 3; // HD passphrase for root in hex format } -/** - * Request: Ask device to sign Cardano message - * @start - * @next CardanoMessageSignature - * @next Failure - */ -message CardanoSignMessage { - repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - optional bytes message = 2; // message to be signed -} - -/** - * Response: Signed Cardano message - * @end - */ -message CardanoMessageSignature { - optional bytes public_key = 1; // public key which was used to sign mesage - optional bytes signature = 2; // signature of the message -} - -/** - * Request: Ask device to verify Cardano message - * @start - * @next Success - * @next Failure - */ -message CardanoVerifyMessage { - optional bytes public_key = 1; // Public key which was used to sign message - optional bytes signature = 2; // signature to verify - optional bytes message = 3; // message to verify -} - /** * Request: Ask device to sign Cardano transaction * @start From 22b18046c1acabe40340104ff3d8b705336bfda7 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 6 Sep 2018 16:16:10 +0200 Subject: [PATCH 558/767] use implicit encoding in encode/decode --- tools/cointool.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/cointool.py b/tools/cointool.py index ca6a3708a..e37ac7e70 100755 --- a/tools/cointool.py +++ b/tools/cointool.py @@ -417,7 +417,7 @@ def coindef_from_dict(coin): if val is None and fflags & protobuf.FLAG_REPEATED: val = [] elif fname == "signed_message_header": - val = val.encode("utf-8") + val = val.encode() elif fname == "hash_genesis_block": val = binascii.unhexlify(val) setattr(proto, fname, val) @@ -587,7 +587,7 @@ def coindefs(outfile): icon = Image.open(coin["icon"]) ser = serialize_coindef(coindef_from_dict(coin), convert_icon(icon)) sig = sign(ser) - definition = binascii.hexlify(sig + ser).decode("ascii") + definition = binascii.hexlify(sig + ser).decode() coindefs[key] = definition with outfile: From 5d472e8a116c2c9cf6c1a6d0e1de0a1465377d91 Mon Sep 17 00:00:00 2001 From: matejcik Date: Thu, 6 Sep 2018 17:05:09 +0200 Subject: [PATCH 559/767] protobuf: remove Cardano SignVerify entries in wire types --- protob/messages.proto | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/protob/messages.proto b/protob/messages.proto index 7c57f3d5e..e3db7b7b0 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -160,9 +160,7 @@ enum MessageType { MessageType_StellarSignedTx = 230 [(wire_out) = true]; // Cardano - MessageType_CardanoSignMessage = 300 [(wire_in) = true]; - MessageType_CardanoMessageSignature = 301 [(wire_out) = true]; - MessageType_CardanoVerifyMessage = 302 [(wire_in) = true]; + // dropped Sign/VerifyMessage ids 300-302 MessageType_CardanoSignTx = 303 [(wire_in) = true]; MessageType_CardanoTxRequest = 304 [(wire_out) = true]; MessageType_CardanoGetPublicKey = 305 [(wire_in) = true]; From ab58324dc034328dc00cd14691d6bb86fe8ecec5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Du=C5=A1an=20Plav=C3=A1k?= Date: Thu, 6 Sep 2018 18:11:14 +0100 Subject: [PATCH 560/767] Add network param to cardano sign tx (#205) --- protob/messages-cardano.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/protob/messages-cardano.proto b/protob/messages-cardano.proto index 09d87d948..dbf24a8a6 100644 --- a/protob/messages-cardano.proto +++ b/protob/messages-cardano.proto @@ -58,6 +58,7 @@ message CardanoSignTx { repeated CardanoTxInputType inputs = 1; // inputs to be used in transaction repeated CardanoTxOutputType outputs = 2; // outputs to be used in transaction optional uint32 transactions_count = 3; // transactions count + optional uint32 network = 4; // network number /** * Structure representing cardano transaction input */ From cfbe5a5dd1476c55059fd444fcdc774d3d502dae Mon Sep 17 00:00:00 2001 From: matejcik Date: Fri, 7 Sep 2018 13:17:47 +0200 Subject: [PATCH 561/767] defs: add 'chain' key to Ethereum networks, tooling support 'chain' is a "slug"-like string that matches the 'chain' field in token definitions. It is also unique so it can be used as a URL slug in Connect / webwallet --- defs/ethereum/networks.json | 22 ++++++++++++++++++++++ tools/cointool.py | 23 +++++++++++++++++++---- 2 files changed, 41 insertions(+), 4 deletions(-) diff --git a/defs/ethereum/networks.json b/defs/ethereum/networks.json index c20791e37..e96f23403 100644 --- a/defs/ethereum/networks.json +++ b/defs/ethereum/networks.json @@ -1,5 +1,6 @@ [ { + "chain": "eth", "chain_id": 1, "slip44": 60, "shortcut": "ETH", @@ -8,6 +9,7 @@ "url": "https://www.ethereum.org" }, { + "chain": "exp", "chain_id": 2, "slip44": 40, "shortcut": "EXP", @@ -16,6 +18,7 @@ "url": "https://expanse.tech" }, { + "chain": "rop", "chain_id": 3, "slip44": 1, "shortcut": "tROP", @@ -24,6 +27,7 @@ "url": "https://www.ethereum.org" }, { + "chain": "rin", "chain_id": 4, "slip44": 1, "shortcut": "tRIN", @@ -32,6 +36,7 @@ "url": "https://www.ethereum.org" }, { + "chain": "ubq", "chain_id": 8, "slip44": 108, "shortcut": "UBQ", @@ -40,6 +45,7 @@ "url": "https://ubiqsmart.com" }, { + "chain": "eosc", "chain_id": 20, "slip44": 2018, "shortcut": "EOSC", @@ -48,6 +54,7 @@ "url": "https://eos-classic.io" }, { + "chain": "etsc", "chain_id": 28, "slip44": 1128, "shortcut": "ETSC", @@ -56,6 +63,7 @@ "url": "https://ethereumsocial.kr" }, { + "chain": "rsk", "chain_id": 30, "slip44": 137, "shortcut": "RSK", @@ -64,6 +72,7 @@ "url": "https://www.rsk.co" }, { + "chain": "trsk", "chain_id": 31, "slip44": 37310, "shortcut": "tRSK", @@ -72,6 +81,7 @@ "url": "https://www.rsk.co" }, { + "chain": "kov", "chain_id": 42, "slip44": 1, "shortcut": "tKOV", @@ -80,6 +90,7 @@ "url": "https://www.ethereum.org" }, { + "chain": "go", "chain_id": 60, "slip44": 6060, "shortcut": "GO", @@ -88,6 +99,7 @@ "url": "https://gochain.io" }, { + "chain": "etc", "chain_id": 61, "slip44": 61, "shortcut": "ETC", @@ -96,6 +108,7 @@ "url": "https://ethereumclassic.github.io" }, { + "chain": "tetc", "chain_id": 62, "slip44": 1, "shortcut": "tETC", @@ -104,6 +117,7 @@ "url": "https://ethereumclassic.github.io" }, { + "chain": "ella", "chain_id": 64, "slip44": 163, "shortcut": "ELLA", @@ -112,6 +126,7 @@ "url": "https://ellaism.org" }, { + "chain": "clo", "chain_id": 820, "slip44": 820, "shortcut": "CLO", @@ -120,6 +135,7 @@ "url": "https://callisto.network" }, { + "chain": "ath", "chain_id": 1620, "slip44": 1620, "shortcut": "ATH", @@ -128,6 +144,7 @@ "url": "https://atheios.com" }, { + "chain": "egem", "chain_id": 1987, "slip44": 1987, "shortcut": "EGEM", @@ -136,6 +153,7 @@ "url": "https://egem.io" }, { + "chain": "esn", "chain_id": 31102, "slip44": 31102, "shortcut": "ESN", @@ -144,6 +162,7 @@ "url": "https://ethersocial.org" }, { + "chain": "akroma", "chain_id": 200625, "slip44": 200625, "shortcut": "AKA", @@ -152,6 +171,7 @@ "url": "https://akroma.io" }, { + "chain": "music", "chain_id": 7762959, "slip44": 184, "shortcut": "MUSIC", @@ -160,6 +180,7 @@ "url": "https://musicoin.org" }, { + "chain": "etho", "chain_id": 1313114, "slip44": 1313114, "shortcut": "ETHO", @@ -168,6 +189,7 @@ "url": "https://ether1.org" }, { + "chain": "pirl", "chain_id": 3125659152, "slip44": 164, "shortcut": "PIRL", diff --git a/tools/cointool.py b/tools/cointool.py index e37ac7e70..8cbc43aad 100755 --- a/tools/cointool.py +++ b/tools/cointool.py @@ -154,7 +154,7 @@ def highlight_key(coin, color): return f"{key} {name}" -def find_address_collisions(coins, field): +def find_collisions(coins, field): """Detects collisions in a given field. Returns buckets of colliding coins.""" collisions = defaultdict(list) for coin in coins: @@ -163,6 +163,17 @@ def find_address_collisions(coins, field): return {k: v for k, v in collisions.items() if len(v) > 1} +def check_eth(coins): + check_passed = True + chains = find_collisions(coins, "chain") + for key, bucket in chains.items(): + bucket_str = ", ".join(f"{coin['key']} ({coin['name']})" for coin in bucket) + chain_name_str = "colliding chain name " + crayon(None, key, bold=True) + ":" + print_log(logging.ERROR, chain_name_str, bucket_str) + check_passed = False + return check_passed + + def check_btc(coins): check_passed = True support_infos = coin_info.support_info(coins) @@ -233,7 +244,7 @@ def check_btc(coins): # slip44 collisions print("Checking SLIP44 prefix collisions...") - slip44 = find_address_collisions(coins, "slip44") + slip44 = find_collisions(coins, "slip44") if print_collision_buckets(slip44, "key"): check_passed = False @@ -241,12 +252,12 @@ def check_btc(coins): nocashaddr = [coin for coin in coins if not coin.get("cashaddr_prefix")] print("Checking address_type collisions...") - address_type = find_address_collisions(nocashaddr, "address_type") + address_type = find_collisions(nocashaddr, "address_type") if print_collision_buckets(address_type, "address type"): check_passed = False print("Checking address_type_p2sh collisions...") - address_type_p2sh = find_address_collisions(nocashaddr, "address_type_p2sh") + address_type_p2sh = find_collisions(nocashaddr, "address_type_p2sh") # we ignore failed checks on P2SH, because reasons print_collision_buckets(address_type_p2sh, "address type", logging.WARNING) @@ -506,6 +517,10 @@ def check(backend, icons, show_duplicates): if not check_btc(defs.bitcoin): all_checks_passed = False + print("Checking Ethereum networks...") + if not check_eth(defs.eth): + all_checks_passed = False + if show_duplicates == "all": dup_level = logging.DEBUG elif show_duplicates == "nontoken": From beddb31819c1fb5d501283c1579acde9af890640 Mon Sep 17 00:00:00 2001 From: Szymon Lesisz Date: Fri, 7 Sep 2018 13:40:13 +0200 Subject: [PATCH 562/767] added blockbook fields --- defs/ethereum/networks.json | 72 +++++++++++++++++++++++++------------ 1 file changed, 50 insertions(+), 22 deletions(-) diff --git a/defs/ethereum/networks.json b/defs/ethereum/networks.json index e96f23403..5b57834bb 100644 --- a/defs/ethereum/networks.json +++ b/defs/ethereum/networks.json @@ -6,7 +6,10 @@ "shortcut": "ETH", "name": "Ethereum", "rskip60": false, - "url": "https://www.ethereum.org" + "url": "https://www.ethereum.org", + "blockbook": [ + "https://eth1.trezor.io" + ] }, { "chain": "exp", @@ -15,7 +18,8 @@ "shortcut": "EXP", "name": "Expanse", "rskip60": false, - "url": "https://expanse.tech" + "url": "https://expanse.tech", + "blockbook": [] }, { "chain": "rop", @@ -24,7 +28,10 @@ "shortcut": "tROP", "name": "Ethereum Testnet Ropsten", "rskip60": false, - "url": "https://www.ethereum.org" + "url": "https://www.ethereum.org", + "blockbook": [ + "https://ropsten1.trezor.io" + ] }, { "chain": "rin", @@ -33,7 +40,8 @@ "shortcut": "tRIN", "name": "Ethereum Testnet Rinkeby", "rskip60": false, - "url": "https://www.ethereum.org" + "url": "https://www.ethereum.org", + "blockbook": [] }, { "chain": "ubq", @@ -42,7 +50,8 @@ "shortcut": "UBQ", "name": "Ubiq", "rskip60": false, - "url": "https://ubiqsmart.com" + "url": "https://ubiqsmart.com", + "blockbook": [] }, { "chain": "eosc", @@ -51,7 +60,8 @@ "shortcut": "EOSC", "name": "EOS Classic", "rskip60": false, - "url": "https://eos-classic.io" + "url": "https://eos-classic.io", + "blockbook": [] }, { "chain": "etsc", @@ -60,7 +70,8 @@ "shortcut": "ETSC", "name": "Ethereum Social", "rskip60": false, - "url": "https://ethereumsocial.kr" + "url": "https://ethereumsocial.kr", + "blockbook": [] }, { "chain": "rsk", @@ -69,7 +80,8 @@ "shortcut": "RSK", "name": "RSK", "rskip60": true, - "url": "https://www.rsk.co" + "url": "https://www.rsk.co", + "blockbook": [] }, { "chain": "trsk", @@ -78,7 +90,8 @@ "shortcut": "tRSK", "name": "RSK Testnet", "rskip60": true, - "url": "https://www.rsk.co" + "url": "https://www.rsk.co", + "blockbook": [] }, { "chain": "kov", @@ -87,7 +100,8 @@ "shortcut": "tKOV", "name": "Ethereum Testnet Kovan", "rskip60": false, - "url": "https://www.ethereum.org" + "url": "https://www.ethereum.org", + "blockbook": [] }, { "chain": "go", @@ -96,7 +110,8 @@ "shortcut": "GO", "name": "GoChain", "rskip60": false, - "url": "https://gochain.io" + "url": "https://gochain.io", + "blockbook": [] }, { "chain": "etc", @@ -105,7 +120,10 @@ "shortcut": "ETC", "name": "Ethereum Classic", "rskip60": false, - "url": "https://ethereumclassic.github.io" + "url": "https://ethereumclassic.github.io", + "blockbook": [ + "https://etc1.trezor.io" + ] }, { "chain": "tetc", @@ -114,7 +132,8 @@ "shortcut": "tETC", "name": "Ethereum Classic Testnet", "rskip60": false, - "url": "https://ethereumclassic.github.io" + "url": "https://ethereumclassic.github.io", + "blockbook": [] }, { "chain": "ella", @@ -123,7 +142,8 @@ "shortcut": "ELLA", "name": "Ellaism", "rskip60": false, - "url": "https://ellaism.org" + "url": "https://ellaism.org", + "blockbook": [] }, { "chain": "clo", @@ -132,7 +152,8 @@ "shortcut": "CLO", "name": "Callisto", "rskip60": false, - "url": "https://callisto.network" + "url": "https://callisto.network", + "blockbook": [] }, { "chain": "ath", @@ -141,7 +162,8 @@ "shortcut": "ATH", "name": "Atheios", "rskip60": false, - "url": "https://atheios.com" + "url": "https://atheios.com", + "blockbook": [] }, { "chain": "egem", @@ -150,7 +172,8 @@ "shortcut": "EGEM", "name": "EtherGem", "rskip60": false, - "url": "https://egem.io" + "url": "https://egem.io", + "blockbook": [] }, { "chain": "esn", @@ -159,7 +182,8 @@ "shortcut": "ESN", "name": "Ethersocial Network", "rskip60": false, - "url": "https://ethersocial.org" + "url": "https://ethersocial.org", + "blockbook": [] }, { "chain": "akroma", @@ -168,7 +192,8 @@ "shortcut": "AKA", "name": "Akroma", "rskip60": false, - "url": "https://akroma.io" + "url": "https://akroma.io", + "blockbook": [] }, { "chain": "music", @@ -177,7 +202,8 @@ "shortcut": "MUSIC", "name": "Musicoin", "rskip60": false, - "url": "https://musicoin.org" + "url": "https://musicoin.org", + "blockbook": [] }, { "chain": "etho", @@ -186,7 +212,8 @@ "shortcut": "ETHO", "name": "Ether-1", "rskip60": false, - "url": "https://ether1.org" + "url": "https://ether1.org", + "blockbook": [] }, { "chain": "pirl", @@ -195,6 +222,7 @@ "shortcut": "PIRL", "name": "Pirl", "rskip60": false, - "url": "https://pirl.io" + "url": "https://pirl.io", + "blockbook": [] } ] From 4e7df217d337c8800fc91bac61038918bf3773e4 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 7 Sep 2018 19:06:01 +0200 Subject: [PATCH 563/767] protob: remove root_hd_passphrase from CardanoPublicKey --- protob/messages-cardano.proto | 1 - 1 file changed, 1 deletion(-) diff --git a/protob/messages-cardano.proto b/protob/messages-cardano.proto index dbf24a8a6..2970206a3 100644 --- a/protob/messages-cardano.proto +++ b/protob/messages-cardano.proto @@ -44,7 +44,6 @@ message CardanoGetPublicKey { message CardanoPublicKey { optional string xpub = 1; // Xpub key optional hw.trezor.messages.common.HDNodeType node = 2; // BIP-32 public node - optional string root_hd_passphrase = 3; // HD passphrase for root in hex format } /** From 57be211fd688f106d12f05aea44e7f9d972a6e9b Mon Sep 17 00:00:00 2001 From: WO <35449969+wo01@users.noreply.github.com> Date: Mon, 10 Sep 2018 21:00:38 +0900 Subject: [PATCH 564/767] Add Electurm-KOTO (#207) --- defs/coins_details.override.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/defs/coins_details.override.json b/defs/coins_details.override.json index db79f8b30..977e94702 100644 --- a/defs/coins_details.override.json +++ b/defs/coins_details.override.json @@ -53,6 +53,11 @@ "Electrum-GRS": "https://www.groestlcoin.org/groestlcoin-electrum-wallet/" } }, + "bitcoin:KOTO": { + "wallet": { + "Electrum-KOTO": "https://electrum.kotocoin.info" + } + }, "bitcoin:LTC": { "wallet": { "Electrum-LTC": "https://electrum-ltc.org" From 05305f3e9effee9832de3991e2818935389aecfc Mon Sep 17 00:00:00 2001 From: matejcik Date: Mon, 10 Sep 2018 16:41:29 +0200 Subject: [PATCH 565/767] defs: update README to mention the 'chain' field in eth networks --- defs/README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/defs/README.md b/defs/README.md index 1c2778f9d..6c2050e97 100644 --- a/defs/README.md +++ b/defs/README.md @@ -18,12 +18,13 @@ We will not support coins that have `address_type` 0, i.e., same as Bitcoin. #### `eth` The file [`ethereum/networks.json`](ethereum/networks.json) has a list of descriptions -of Ethereum networks. Each network must also have a PNG icon in `ethereum/.png` -file, where `short` is lowercased `shortcut` field from the JSON. +of Ethereum networks. Each network must also have a PNG icon in `ethereum/.png` +file. #### `erc20` -`ethereum/tokens` is a submodule linking to [Ethereum Lists](https://github.com/ethereum-lists/tokens) project with descriptions of ERC20 tokens. If you want to add or update a token +`ethereum/tokens` is a submodule linking to [Ethereum Lists](https://github.com/ethereum-lists/tokens) +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. @@ -45,8 +46,7 @@ generated from the coin's type and shortcut: * for Bitcoin-likes, key is `bitcoin:XYZ` * for Ethereum networks, key is `eth:XYZ` -* for ERC20 tokens, key is `erc20::XYZ`, where `net` is a lowercase shortcut - of the Ethereum network on which the token lives (e.g., `eth`, `ella`, `pirl`) +* for ERC20 tokens, key is `erc20::XYZ` * for NEM mosaic, key is `nem:XYZ` * for others, key is `misc:XYZ` From 34878d30b4ca1218f0d65419513c15627ca284e0 Mon Sep 17 00:00:00 2001 From: WO <35449969+wo01@users.noreply.github.com> Date: Tue, 11 Sep 2018 17:26:52 +0900 Subject: [PATCH 566/767] Re-enable Koto (#208) --- defs/support.json | 1 + 1 file changed, 1 insertion(+) diff --git a/defs/support.json b/defs/support.json index f97040c6e..45afba7a4 100644 --- a/defs/support.json +++ b/defs/support.json @@ -1712,6 +1712,7 @@ "bitcoin:DOGE": true, "bitcoin:FJC": true, "bitcoin:GRS": true, + "bitcoin:KOTO": true, "bitcoin:LTC": true, "bitcoin:MONA": true, "bitcoin:TAZ": true, From 67ca76ab16ab5461221f3702b85d5b570cacf933 Mon Sep 17 00:00:00 2001 From: matejcik Date: Wed, 12 Sep 2018 18:09:01 +0200 Subject: [PATCH 567/767] cointool: add options controlling size of coins.json output --- tools/cointool.py | 41 ++++++++++++++++++++++++++++++++++------- 1 file changed, 34 insertions(+), 7 deletions(-) diff --git a/tools/cointool.py b/tools/cointool.py index 8cbc43aad..6bb43a9b8 100755 --- a/tools/cointool.py +++ b/tools/cointool.py @@ -556,8 +556,13 @@ def check(backend, icons, show_duplicates): @cli.command() +# fmt: off @click.option("-o", "--outfile", type=click.File(mode="w"), default="./coins.json") -def dump(outfile): +@click.option("-s/-S", "--support/--no-support", default=True, help="Include support data for each coin") +@click.option("-p", "--pretty", is_flag=True, help="Generate nicely formatted JSON") +@click.option("-t", "--tokens", type=click.Choice(["full", "stripped", "none"]), default="full", help="Filter token data") +# fmt: on +def dump(outfile, support, pretty, tokens): """Dump all coin data in a single JSON file. This file is structured the same as the internal data. That is, top-level object @@ -570,21 +575,43 @@ def dump(outfile): - 'shortcut' - currency symbol - 'key' - unique identifier, e.g., 'bitcoin:BTC' - 'support' - a dict with entries per known device + + To control the size and properties of the resulting file, you can specify whether + or not you want pretty-printing, whether or not to include support data with + each coin, and whether to include information about ERC20 tokens, which takes up + several hundred kB of space. + + \b + The option '--tokens' can have one of three values: + 'full': include all token data + 'stripped': exclude 'social' links and 'logo' data from tokens + 'none': exclude the 'erc20' category altogether. """ coins = coin_info.coin_info() - support_info = coin_info.support_info(coins.as_list()) - for category in coins.values(): - for coin in category: - coin["support"] = support_info[coin["key"]] + if support: + support_info = coin_info.support_info(coins.as_list()) + + for category in coins.values(): + for coin in category: + coin["support"] = support_info[coin["key"]] # get rid of address_bytes which are bytes which can't be JSON encoded for coin in coins.erc20: coin.pop("address_bytes", None) + if tokens == "stripped": + coin.pop("social", None) + coin.pop("logo", None) + + if tokens == "none": + del coins["erc20"] with outfile: - json.dump(coins, outfile, indent=4, sort_keys=True) - outfile.write("\n") + if pretty: + json.dump(coins, outfile, indent=4, sort_keys=True) + outfile.write("\n") + else: + json.dump(coins, outfile) @cli.command() From d2b3b30999f2388afa9db08e0200e74b17c70d97 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 12 Sep 2018 21:55:32 +0200 Subject: [PATCH 568/767] defs: fix namecoin xpub/xprv magic bytes --- defs/bitcoin/namecoin.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/defs/bitcoin/namecoin.json b/defs/bitcoin/namecoin.json index 7933a1704..81543d7cd 100644 --- a/defs/bitcoin/namecoin.json +++ b/defs/bitcoin/namecoin.json @@ -12,8 +12,8 @@ "minfee_kb": 1000, "signed_message_header": "Namecoin Signed Message:\n", "hash_genesis_block": "000000000062b72c5e2ceb45fbc8587e807c155b0da735e6483dfba2f0a9c770", - "xprv_magic": 27106558, - "xpub_magic": 27108450, + "xprv_magic": 76066276, + "xpub_magic": 76067358, "xpub_magic_segwit_p2sh": null, "xpub_magic_segwit_native": null, "bech32_prefix": null, From 32a688f25ae13803e963868af4ac37298dc03660 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Krac=C3=ADk?= Date: Wed, 12 Sep 2018 16:27:43 +0200 Subject: [PATCH 569/767] defs: added blockbook URLs to Namecoin --- defs/bitcoin/namecoin.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/defs/bitcoin/namecoin.json b/defs/bitcoin/namecoin.json index 81543d7cd..96745d6cb 100644 --- a/defs/bitcoin/namecoin.json +++ b/defs/bitcoin/namecoin.json @@ -34,6 +34,9 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [], - "blockbook": [], + "blockbook": [ + "https://nmc1.trezor.io", + "https://nmc2.trezor.io" + ], "cooldown": 100 } From eca9402772dea8d2579fd312dd16827c8f7bb90b Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 12 Sep 2018 21:59:35 +0200 Subject: [PATCH 570/767] support: enable Namecoin in Connect and Wallet --- defs/support.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/defs/support.json b/defs/support.json index 45afba7a4..c81f70a4b 100644 --- a/defs/support.json +++ b/defs/support.json @@ -7,6 +7,7 @@ "bitcoin:DASH": true, "bitcoin:DOGE": true, "bitcoin:LTC": true, + "bitcoin:NMC": true, "bitcoin:TEST": true, "bitcoin:VTC": true, "bitcoin:ZEC": true @@ -1715,6 +1716,7 @@ "bitcoin:KOTO": true, "bitcoin:LTC": true, "bitcoin:MONA": true, + "bitcoin:NMC": true, "bitcoin:TAZ": true, "bitcoin:TDCR": true, "bitcoin:TEST": true, From 23b07f975d9125285d89f5ccb903a884b701dd52 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 13 Sep 2018 00:14:51 +0200 Subject: [PATCH 571/767] tools: drop binascii usage --- tools/coin_info.py | 3 +-- tools/cointool.py | 5 ++--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/tools/coin_info.py b/tools/coin_info.py index 74d9d2c1b..4f7d82c3c 100755 --- a/tools/coin_info.py +++ b/tools/coin_info.py @@ -1,5 +1,4 @@ #!/usr/bin/env python3 -from binascii import unhexlify from collections import defaultdict, OrderedDict import re import os @@ -232,7 +231,7 @@ def _load_erc20_tokens(): token.update( chain=chain, chain_id=network["chain_id"], - address_bytes=unhexlify(token["address"][2:]), + address_bytes=bytes.fromhex(token["address"][2:]), shortcut=token["symbol"], key="erc20:{}:{}".format(chain, token["symbol"]), ) diff --git a/tools/cointool.py b/tools/cointool.py index 6bb43a9b8..c00b8f961 100755 --- a/tools/cointool.py +++ b/tools/cointool.py @@ -6,7 +6,6 @@ import re import sys import os import glob -import binascii import struct import zlib from collections import defaultdict @@ -430,7 +429,7 @@ def coindef_from_dict(coin): elif fname == "signed_message_header": val = val.encode() elif fname == "hash_genesis_block": - val = binascii.unhexlify(val) + val = bytes.fromhex(val) setattr(proto, fname, val) return proto @@ -629,7 +628,7 @@ def coindefs(outfile): icon = Image.open(coin["icon"]) ser = serialize_coindef(coindef_from_dict(coin), convert_icon(icon)) sig = sign(ser) - definition = binascii.hexlify(sig + ser).decode() + definition = (sig + ser).hex() coindefs[key] = definition with outfile: From d72b787d857fdd1bd03c2a45b863b5904077dd54 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 13 Sep 2018 01:09:49 +0200 Subject: [PATCH 572/767] defs/misc: add curve and github to misc coins --- defs/misc/misc.json | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/defs/misc/misc.json b/defs/misc/misc.json index 1f03ca52e..8f15ea105 100644 --- a/defs/misc/misc.json +++ b/defs/misc/misc.json @@ -3,69 +3,85 @@ "name": "Lisk", "shortcut": "LSK", "slip44": 134, + "curve": "ed25519", "links": { - "Homepage": "https://lisk.io/" + "Homepage": "https://lisk.io/", + "Github": "https://github.com/LiskHQ/lisk" } }, { "name": "Stellar", "notes": "In development", "slip44": 148, + "curve": "ed25519", "shortcut": "XLM", "links": { - "Homepage": "https://www.stellar.org" + "Homepage": "https://www.stellar.org", + "Github": "https://github.com/stellar/stellar-core" } }, { "name": "Monero", "shortcut": "XMR", "slip44": 128, + "curve": "secp256k1", "notes": "In development", "links": { - "Homepage": "https://getmonero.org" + "Homepage": "https://getmonero.org", + "Github": "https://github.com/monero-project/monero" } }, { "name": "Ripple", "shortcut": "XRP", "slip44": 144, + "curve": "secp256k1", "notes": "In development", "links": { - "Homepage": "https://ripple.com" + "Homepage": "https://ripple.com", + "Github": "https://github.com/ripple/rippled" } }, { "name": "Cardano", "shortcut": "ADA", "slip44": 1815, + "curve": "ed25519", "links": { - "Homepage": "https://www.cardano.org" + "Homepage": "https://www.cardano.org", + "Github": "https://github.com/input-output-hk/cardano-sl" } }, { "name": "Tezos", "shortcut": "XTZ", "slip44": 1729, + "curve": "ed25519", "notes": "In development", "links": { - "Homepage": "https://tezos.com" + "Homepage": "https://tezos.com", + "Github": "https://github.com/tezos/tezos" } }, { "name": "Ontology", "shortcut": "ONT", "slip44": 1024, + "curve": "nist256p1", "notes": "In development", "links": { - "Homepage": "https://ont.io" + "Homepage": "https://ont.io", + "Github": "https://github.com/ontio/ontology" } }, { "name": "Wanchain", "shortcut": "WAN", "slip44": 5718350, + "curve": "secp256k1", "links": { - "Homepage": "https://wanchain.org" + "Homepage": "https://wanchain.org", + "Github": "https://github.com/wanchain/go-wanchain" } } ] From c82aad53fe0fbd8a8aeb51aadc59c30394482add Mon Sep 17 00:00:00 2001 From: Fernando Sobreira Date: Mon, 3 Sep 2018 14:50:08 -0300 Subject: [PATCH 573/767] Add Tron support Add Tron support Remove TronGetPublicKey --- protob/Makefile | 2 +- protob/messages-tron.proto | 162 +++++++++++++++++++++++++++++++++++++ protob/messages.proto | 6 ++ 3 files changed, 169 insertions(+), 1 deletion(-) create mode 100644 protob/messages-tron.proto diff --git a/protob/Makefile b/protob/Makefile index 74d2e3339..bfd529254 100644 --- a/protob/Makefile +++ b/protob/Makefile @@ -1,4 +1,4 @@ -check: messages.pb messages-bitcoin.pb messages-bootloader.pb messages-cardano.pb messages-common.pb messages-crypto.pb messages-debug.pb messages-ethereum.pb messages-lisk.pb messages-management.pb messages-monero.pb messages-nem.pb messages-ripple.pb messages-stellar.pb messages-tezos.pb messages-ontology.pb +check: messages.pb messages-bitcoin.pb messages-bootloader.pb messages-cardano.pb messages-common.pb messages-crypto.pb messages-debug.pb messages-ethereum.pb messages-lisk.pb messages-management.pb messages-monero.pb messages-nem.pb messages-ripple.pb messages-stellar.pb messages-tezos.pb messages-ontology.pb messages-tron.pb %.pb: %.proto protoc -I/usr/include -I. $< -o $@ diff --git a/protob/messages-tron.proto b/protob/messages-tron.proto new file mode 100644 index 000000000..b297eeaff --- /dev/null +++ b/protob/messages-tron.proto @@ -0,0 +1,162 @@ +syntax = "proto2"; + +// Sugar for easier handling in Java +option java_package = "com.satoshilabs.trezor.lib.protobuf"; +option java_outer_classname = "TrezorMessageTron"; + +/** + * Request: Ask device for Tron address corresponding to address_n path + * @next PassphraseRequest + * @next TronAddress + * @next Failure + */ +message TronGetAddress { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional bool show_display = 2; // Optionally show on display before sending the result +} + +/** + * Response: Contains Tron address derived from device private seed + * @prev TronGetAddress + */ +message TronAddress { + optional string address = 1; // Tron address (base58) +} + +/** + * Request: Ask device to sign Tron transaction + * @next TronSignedTx + */ +message TronSignTx { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + // Common part of transaction + optional bytes ref_block_bytes = 2; // Reference block number + optional bytes ref_block_hash = 3; // Reference block hash + optional uint64 expiration = 4; // Transaction expiration + optional string data = 5; // Extra transaction info + optional TronContract contract = 6; // Contract messages + optional uint64 timestamp = 7; // UTC timestamp + + /*** + * Tron Contracts Messages + * + */ + message TronContract { + // Update account name + message TronAccountUpdateContract { + optional string account_name = 1; // Account name is not unique + } + // Transfer TRX + message TronTransferContract { + optional bytes to_address = 1; // To address - decoded base 58 + optional uint64 amount = 2; // TRX amount in sun (10^-6) + } + // Transfer asset + message TronTransferAssetContract { + optional string asset_name = 1; // Asset name + optional bytes to_address = 2; // To address - decoded base 58 + optional uint64 amount = 3; // Amount to transfer + } + // Vote witness + message TronVoteWitnessContract { + message TronVote { + optional bytes vote_address = 1; // Candidate Address - decoded base 58 + optional uint64 vote_count = 2; // Amount of votes + } + repeated TronVote votes = 1; // votes + } + // Upgrade account to witness + message TronWitnessCreateContract { + optional string url = 1; // Witness URL + } + // Update witness URL + message TronWitnessUpdateContract { + optional string update_url = 2; // Witness URL + } + // Issue Asset + message TronAssetIssueContract { + message TronFrozenSupply { + optional uint64 frozen_amount = 1; // Amount frozen + optional uint64 frozen_days = 2; // Days from issue date + } + optional string name = 2; // Asset name + optional string abbr = 3; // Asset abbreviation + optional uint64 total_supply = 4; // Total supply including frozen + repeated TronFrozenSupply frozen_supply = 5; // Frozen supply + optional uint32 trx_num = 6; // Amount of TRX (exchange ratio) + optional uint32 num = 7; // Amount of tokens (exchange ratio) + optional uint64 start_time = 8; // Negotiation start date and time + optional uint64 end_time = 9; // Negotiation end date and time + optional string description = 10; // Asset description + optional string url = 11; // Asset URL + } + // Participate in an asset + message TronParticipateAssetIssueContract { + optional bytes to_address = 1; // Asset issuer address - decoded base 58 + optional string asset_name = 2; // The name of target asset + optional uint64 amount = 3; // TRX amount in sun + } + // Freeze TRX balance + message TronFreezeBalanceContract { + optional uint64 frozen_balance = 1; // Amount to freeze + optional uint64 frozen_duration = 2; // Freeze minimal duration in days + } + // Unfreeze TRX Balance + message TronUnfreezeBalanceContract { + } + // Unfreeze Asset Balance + message TronUnfreezeAssetContract { + } + // Withdraw witness balance + message TronWithdrawBalanceContract { + } + // Update Asset + message TronUpdateAssetContract { + optional string description = 1; // New description + optional string url = 2; // New URL + } + // Network proposal contract + message TronProposalCreateContract { + message TronProposalParameters { + optional uint64 key = 1; // Paramter key + optional uint64 value = 2; // Parameter value + } + repeated TronProposalParameters parameters = 1; // Parameter to be changed + } + // Approval contract + message TronProposalApproveContract { + optional uint64 proposal_id = 1; // Proposal ID + optional bool is_add_approval = 2; // Add or remove approval + } + // Delete proposal + message TronProposalDeleteContract { + optional uint64 proposal_id = 1; // Proposal ID + } + + optional TronTransferContract transfer_contract = 1; + optional TronTransferAssetContract transfer_asset_contract = 2; + optional TronVoteWitnessContract vote_witness_contract = 4; + optional TronWitnessCreateContract witness_create_contract = 5; + optional TronAssetIssueContract asset_issue_contract = 6; + optional TronWitnessUpdateContract witness_update_contract = 8; + optional TronParticipateAssetIssueContract participate_asset_issue_contract = 9; + optional TronAccountUpdateContract account_update_contract = 10; + optional TronFreezeBalanceContract freeze_balance_contract = 11; + optional TronUnfreezeBalanceContract unfreeze_balance_contract = 12; + optional TronWithdrawBalanceContract withdraw_balance_contract = 13; + optional TronUnfreezeAssetContract unfreeze_asset_contract = 14; + optional TronUpdateAssetContract update_asset_contract = 15; + optional TronProposalCreateContract proposal_create_contract = 16; + optional TronProposalApproveContract proposal_approve_contract = 17; + optional TronProposalDeleteContract proposal_delete_contract = 18; + } +} + +/** +* Response: Contains Tron transaction signature +* @prev TronSignTx +*/ +message TronSignedTx { + optional bytes signature = 1; // Transaction signature + optional bytes serialized_tx = 2; // Serialized transaction +} diff --git a/protob/messages.proto b/protob/messages.proto index e3db7b7b0..c90bc7422 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -159,6 +159,12 @@ enum MessageType { MessageType_StellarBumpSequenceOp = 221 [(wire_in) = true]; MessageType_StellarSignedTx = 230 [(wire_out) = true]; + // TRON + MessageType_TronGetAddress = 250 [(wire_in) = true]; + MessageType_TronAddress = 251 [(wire_out) = true]; + MessageType_TronSignTx = 252 [(wire_in) = true]; + MessageType_TronSignedTx = 253 [(wire_out) = true]; + // Cardano // dropped Sign/VerifyMessage ids 300-302 MessageType_CardanoSignTx = 303 [(wire_in) = true]; From 9db33632e2fa513a22149090ca40722fa5169215 Mon Sep 17 00:00:00 2001 From: Dusan Klinec Date: Mon, 17 Sep 2018 13:46:35 +0200 Subject: [PATCH 574/767] xmr: rsig in partitions --- protob/messages-monero.proto | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/protob/messages-monero.proto b/protob/messages-monero.proto index 4477082e8..efe71569d 100644 --- a/protob/messages-monero.proto +++ b/protob/messages-monero.proto @@ -66,8 +66,9 @@ message MoneroTransactionRsigData { optional bytes seed = 7; // determ. mask seed optional bytes mask = 8; // mask vector optional bytes amount = 9; // amount vector - optional bytes rsig = 10; // range sig, full or partial - repeated MoneroTransactionDestinationEntry outputs = 11; + optional bytes rsig = 10; // range sig, full or partial + repeated bytes rsig_parts = 11; + repeated MoneroTransactionDestinationEntry outputs = 12; } /** From 08e89cabd234d169a1439dbf64d1bbeb94cdf891 Mon Sep 17 00:00:00 2001 From: Dusan Klinec Date: Tue, 18 Sep 2018 11:25:23 +0200 Subject: [PATCH 575/767] xmr: no wrapper --- protob/messages-monero.proto | 83 +++++++----------------------------- protob/messages.proto | 52 +++++++++++++--------- 2 files changed, 47 insertions(+), 88 deletions(-) diff --git a/protob/messages-monero.proto b/protob/messages-monero.proto index efe71569d..fe9b914d3 100644 --- a/protob/messages-monero.proto +++ b/protob/messages-monero.proto @@ -147,7 +147,7 @@ message MoneroTransactionInitRequest { /** * Response: Response to transaction signing initialization. - * @next MoneroTransactionSignRequest + * @next MoneroTransactionSetInputRequest */ message MoneroTransactionInitAck { optional uint32 version = 1; @@ -170,7 +170,8 @@ message MoneroTransactionSetInputRequest { /** * Response: Response to setting UTXO for signature. Contains sealed values needed for further protocol steps. - * @next MoneroTransactionSignRequest + * @next MoneroTransactionSetInputAck + * @next MoneroTransactionInputsPermutationRequest */ message MoneroTransactionSetInputAck { optional bytes vini = 1; // xmrtypes.TxinToKey @@ -191,7 +192,7 @@ message MoneroTransactionInputsPermutationRequest { /** * Response: Response to setting permutation on key images - * @next MoneroTransactionSignRequest + * @next MoneroTransactionInputViniRequest */ message MoneroTransactionInputsPermutationAck { } @@ -210,7 +211,8 @@ message MoneroTransactionInputViniRequest { /** * Response: Response to setting UTXO to the device - * @next MoneroTransactionSignRequest + * @next MoneroTransactionInputViniRequest + * @next MoneroTransactionAllInputsSetRequest */ message MoneroTransactionInputViniAck { } @@ -225,7 +227,7 @@ message MoneroTransactionAllInputsSetRequest { /** * Response: Response to after all inputs have been set. - * @next MoneroTransactionSignRequest + * @next MoneroTransactionSetOutputRequest */ message MoneroTransactionAllInputsSetAck { optional MoneroTransactionRsigData rsig_data = 1; @@ -243,7 +245,8 @@ message MoneroTransactionSetOutputRequest { /** * Response: Response to setting transaction destination. Contains sealed values needed for further protocol steps. - * @next MoneroTransactionSignRequest + * @next MoneroTransactionSetOutputRequest + * @next MoneroTransactionAllOutSetRequest */ message MoneroTransactionSetOutputAck { optional bytes tx_out = 1; // xmrtypes.TxOut @@ -253,22 +256,6 @@ message MoneroTransactionSetOutputAck { optional bytes ecdh_info = 5; } -/** - * Request: Sub request of MoneroTransactionSign. Rangesig offloading roundtrips. - * @next MoneroTransactionAllInputsSetAck - */ -message MoneroTransactionRangeSigRequest { - optional MoneroTransactionRsigData rsig_data = 1; -} - -/** - * Response: Response to rangesig offloading request - * @next MoneroTransactionSignRequest - */ -message MoneroTransactionRangeSigAck { - optional MoneroTransactionRsigData rsig_data = 1; -} - /** * Request: Sub request of MoneroTransactionSign. Sent after all outputs are sent. * @next MoneroTransactionAllOutSetAck @@ -279,7 +266,7 @@ message MoneroTransactionAllOutSetRequest { /** * Response: After all outputs are sent the initial RCT signature fields are sent. - * @next MoneroTransactionSignRequest + * @next MoneroTransactionMlsagDoneRequest */ message MoneroTransactionAllOutSetAck { optional bytes extra = 1; @@ -305,7 +292,7 @@ message MoneroTransactionMlsagDoneRequest { /** * Response: Contains full message hash needed for the signature - * @next MoneroTransactionSignRequest + * @next MoneroTransactionSignInputRequest */ message MoneroTransactionMlsagDoneAck { optional bytes full_message_hash = 1; @@ -327,7 +314,8 @@ message MoneroTransactionSignInputRequest { /** * Response: Contains full MG signature of the UTXO + multisig data if applicable. - * @next MoneroTransactionSignRequest + * @next MoneroTransactionSignInputRequest + * @next MoneroTransactionFinalRequest */ message MoneroTransactionSignInputAck { optional bytes signature = 1; @@ -352,34 +340,6 @@ message MoneroTransactionFinalAck { optional bytes tx_enc_keys = 4; } -/** - * Request: Wrapping request for transaction signature protocol. - * @wrap MoneroTransactionInitRequest - * @wrap MoneroTransactionSetInputRequest - * @wrap MoneroTransactionInputsPermutationRequest - * @wrap MoneroTransactionInputViniRequest - * @wrap MoneroTransactionAllInputsSetRequest - * @wrap MoneroTransactionSetOutputRequest - * @wrap MoneroTransactionRangeSigRequest - * @wrap MoneroTransactionAllOutSetRequest - * @wrap MoneroTransactionMlsagDoneRequest - * @wrap MoneroTransactionSignInputRequest - * @wrap MoneroTransactionFinalRequest - */ -message MoneroTransactionSignRequest { - optional MoneroTransactionInitRequest init = 1; - optional MoneroTransactionSetInputRequest set_input = 2; - optional MoneroTransactionInputsPermutationRequest input_permutation = 3; - optional MoneroTransactionInputViniRequest input_vini = 4; - optional MoneroTransactionAllInputsSetRequest all_in_set = 5; - optional MoneroTransactionSetOutputRequest set_output = 6; - optional MoneroTransactionRangeSigRequest rsig = 7; - optional MoneroTransactionAllOutSetRequest all_out_set = 8; - optional MoneroTransactionMlsagDoneRequest mlsag_done = 9; - optional MoneroTransactionSignInputRequest sign_input = 10; - optional MoneroTransactionFinalRequest final_msg = 11; -} - /** * Request: Sub request of MoneroKeyImageSync. Initializing key image sync. * @start @@ -402,7 +362,7 @@ message MoneroKeyImageExportInitRequest { /** * Response: Response to key image sync initialization. - * @next MoneroKeyImageSyncRequest + * @next MoneroKeyImageSyncStepRequest */ message MoneroKeyImageExportInitAck { } @@ -426,7 +386,8 @@ message MoneroKeyImageSyncStepRequest { /** * Response: Response to key image sync step. Contains encrypted exported key image. - * @next MoneroKeyImageSyncRequest + * @next MoneroKeyImageSyncStepRequest + * @next MoneroKeyImageSyncFinalRequest */ message MoneroKeyImageSyncStepAck { repeated MoneroExportedKeyImage kis = 1; @@ -455,18 +416,6 @@ message MoneroKeyImageSyncFinalAck { optional bytes enc_key = 1; } -/** - * Request: Wrapping request for key image sync protocol. - * @wrap MoneroKeyImageExportInitRequest - * @wrap MoneroKeyImageSyncStepRequest - * @wrap MoneroKeyImageSyncFinalRequest - */ -message MoneroKeyImageSyncRequest { - optional MoneroKeyImageExportInitRequest init = 1; - optional MoneroKeyImageSyncStepRequest step = 2; - optional MoneroKeyImageSyncFinalRequest final_msg = 3; -} - /** * Request: Universal Monero protocol implementation diagnosis request. * @start diff --git a/protob/messages.proto b/protob/messages.proto index c90bc7422..fb90f1873 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -197,26 +197,36 @@ enum MessageType { MessageType_RippleSignedTx = 403 [(wire_in) = true]; // Monero - MessageType_MoneroTransactionSignRequest = 501 [(wire_in) = true]; + MessageType_MoneroTransactionInitRequest = 501 [(wire_out) = true]; MessageType_MoneroTransactionInitAck = 502 [(wire_out) = true]; - MessageType_MoneroTransactionSetInputAck = 503 [(wire_out) = true]; - MessageType_MoneroTransactionInputsPermutationAck = 504 [(wire_out) = true]; - MessageType_MoneroTransactionInputViniAck = 505 [(wire_out) = true]; - MessageType_MoneroTransactionAllInputsSetAck = 513 [(wire_out) = true]; - MessageType_MoneroTransactionSetOutputAck = 506 [(wire_out) = true]; - MessageType_MoneroTransactionRangeSigAck = 514 [(wire_out) = true]; - MessageType_MoneroTransactionAllOutSetAck = 507 [(wire_out) = true]; - MessageType_MoneroTransactionMlsagDoneAck = 508 [(wire_out) = true]; - MessageType_MoneroTransactionSignInputAck = 509 [(wire_out) = true]; - MessageType_MoneroTransactionFinalAck = 510 [(wire_out) = true]; - MessageType_MoneroKeyImageSyncRequest = 511 [(wire_in) = true]; - MessageType_MoneroKeyImageExportInitAck = 520 [(wire_out) = true]; - MessageType_MoneroKeyImageSyncStepAck = 521 [(wire_out) = true]; - MessageType_MoneroKeyImageSyncFinalAck = 522 [(wire_out) = true]; - MessageType_MoneroGetAddress = 530 [(wire_in) = true]; - MessageType_MoneroAddress = 531 [(wire_out) = true]; - MessageType_MoneroGetWatchKey = 532 [(wire_in) = true]; - MessageType_MoneroWatchKey = 533 [(wire_out) = true]; - MessageType_DebugMoneroDiagRequest = 536 [(wire_in) = true]; - MessageType_DebugMoneroDiagAck = 537 [(wire_out) = true]; + MessageType_MoneroTransactionSetInputRequest = 503 [(wire_out) = true]; + MessageType_MoneroTransactionSetInputAck = 504 [(wire_out) = true]; + MessageType_MoneroTransactionInputsPermutationRequest = 505 [(wire_out) = true]; + MessageType_MoneroTransactionInputsPermutationAck = 506 [(wire_out) = true]; + MessageType_MoneroTransactionInputViniRequest = 507 [(wire_out) = true]; + MessageType_MoneroTransactionInputViniAck = 508 [(wire_out) = true]; + MessageType_MoneroTransactionAllInputsSetRequest = 509 [(wire_out) = true]; + MessageType_MoneroTransactionAllInputsSetAck = 510 [(wire_out) = true]; + MessageType_MoneroTransactionSetOutputRequest = 511 [(wire_out) = true]; + MessageType_MoneroTransactionSetOutputAck = 512 [(wire_out) = true]; + MessageType_MoneroTransactionAllOutSetRequest = 513 [(wire_out) = true]; + MessageType_MoneroTransactionAllOutSetAck = 514 [(wire_out) = true]; + MessageType_MoneroTransactionMlsagDoneRequest = 515 [(wire_out) = true]; + MessageType_MoneroTransactionMlsagDoneAck = 516 [(wire_out) = true]; + MessageType_MoneroTransactionSignInputRequest = 517 [(wire_out) = true]; + MessageType_MoneroTransactionSignInputAck = 518 [(wire_out) = true]; + MessageType_MoneroTransactionFinalRequest = 519 [(wire_out) = true]; + MessageType_MoneroTransactionFinalAck = 520 [(wire_out) = true]; + MessageType_MoneroKeyImageExportInitRequest = 530 [(wire_out) = true]; + MessageType_MoneroKeyImageExportInitAck = 531 [(wire_out) = true]; + MessageType_MoneroKeyImageSyncStepRequest = 532 [(wire_out) = true]; + MessageType_MoneroKeyImageSyncStepAck = 533 [(wire_out) = true]; + MessageType_MoneroKeyImageSyncFinalRequest = 534 [(wire_out) = true]; + MessageType_MoneroKeyImageSyncFinalAck = 535 [(wire_out) = true]; + MessageType_MoneroGetAddress = 540 [(wire_in) = true]; + MessageType_MoneroAddress = 541 [(wire_out) = true]; + MessageType_MoneroGetWatchKey = 542 [(wire_in) = true]; + MessageType_MoneroWatchKey = 543 [(wire_out) = true]; + MessageType_DebugMoneroDiagRequest = 546 [(wire_in) = true]; + MessageType_DebugMoneroDiagAck = 547 [(wire_out) = true]; } From 034289ddd2e517afc1a400341b01801afcf3f455 Mon Sep 17 00:00:00 2001 From: Dusan Klinec Date: Tue, 18 Sep 2018 14:56:55 +0200 Subject: [PATCH 576/767] pb2py: fields moved to classmethod get_fields() - garbage collectable after (de)serialization --- protob/pb2py | 62 +++++++++++++++++++++++++++++----------------------- 1 file changed, 35 insertions(+), 27 deletions(-) diff --git a/protob/pb2py b/protob/pb2py index cf73456f8..4bb14f3bf 100755 --- a/protob/pb2py +++ b/protob/pb2py @@ -211,6 +211,39 @@ class Descriptor: yield " self.{0} = {0}".format(field.name) # fmt: on + def create_fields_method(self, fields): + # fmt: off + yield " @classmethod" + yield " def get_fields(cls):" + yield " return {" + for field in fields: + comments = [] + if field.required: + comments.append("required") + if field.orig.HasField("default_value"): + comments.append("default={}".format(field.orig.default_value)) + + if comments: + comment = " # " + " ".join(comments) + else: + comment = "" + + if field.repeated: + flags = "p.FLAG_REPEATED" + else: + flags = "0" + + yield " {num}: ('{name}', {type}, {flags}),{comment}".format( + num=field.number, + name=field.name, + type=field.proto_type, + flags=flags, + comment=comment, + ) + + yield " }" + # fmt: on + def process_message(self, message): logging.debug("Processing message {}".format(message.name)) msg_id = self.message_types.get(message.name) @@ -238,35 +271,10 @@ class Descriptor: yield " MESSAGE_WIRE_TYPE = {}".format(msg_id) if fields: - yield " FIELDS = {" - for field in fields: - comments = [] - if field.required: - comments.append("required") - if field.orig.HasField("default_value"): - comments.append("default={}".format(field.orig.default_value)) - - if comments: - comment = " # " + " ".join(comments) - else: - comment = "" - - if field.repeated: - flags = "p.FLAG_REPEATED" - else: - flags = "0" - - yield " {num}: ('{name}', {type}, {flags}),{comment}".format( - num=field.number, - name=field.name, - type=field.proto_type, - flags=flags, - comment=comment, - ) - - yield " }" yield "" yield from self.create_init_method(fields) + yield "" + yield from self.create_fields_method(fields) if not fields and not msg_id: yield " pass" From 770409fe4c2a5ffd791a482cee26de6b3ae0a6dd Mon Sep 17 00:00:00 2001 From: Szymon Lesisz Date: Tue, 18 Sep 2018 12:47:11 +0200 Subject: [PATCH 577/767] updated coin support in connect --- defs/support.json | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/defs/support.json b/defs/support.json index c81f70a4b..bba76a9a0 100644 --- a/defs/support.json +++ b/defs/support.json @@ -10,7 +10,40 @@ "bitcoin:NMC": true, "bitcoin:TEST": true, "bitcoin:VTC": true, - "bitcoin:ZEC": true + "bitcoin:ZEC": true, + "eth:ETH": true, + "eth:EXP": true, + "eth:tROP": true, + "eth:tRIN": true, + "eth:UBQ": true, + "eth:EOSC": true, + "eth:ETSC": true, + "eth:RSK": true, + "eth:tRSK": true, + "eth:tKOV": true, + "eth:GO": true, + "eth:ETC": true, + "eth:tETC": true, + "eth:ELLA": true, + "eth:CLO": true, + "eth:ATH": true, + "eth:EGEM": true, + "eth:ESN": true, + "eth:AKA": true, + "eth:ETHO": true, + "eth:MUSIC": true, + "eth:PIRL": true, + "misc:ADA": true, + "misc:LSK": true, + "misc:XLM": true, + "misc:XRP": true, + "misc:XTZ": true, + "nem:XEM": true, + "nem:DIM": true, + "nem:DIMTOK": true, + "nem:BREEZE": true, + "nem:PAC:HRT": true, + "nem:PAC:CHS": true }, "unsupported": {} }, From 92d87f9ba69eabb7bb29fbef8a555d4d24b59970 Mon Sep 17 00:00:00 2001 From: Szymon Lesisz Date: Tue, 18 Sep 2018 14:28:39 +0200 Subject: [PATCH 578/767] changed blockbook addreses for etc & eth --- defs/ethereum/networks.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/defs/ethereum/networks.json b/defs/ethereum/networks.json index 5b57834bb..e48e401cb 100644 --- a/defs/ethereum/networks.json +++ b/defs/ethereum/networks.json @@ -8,7 +8,7 @@ "rskip60": false, "url": "https://www.ethereum.org", "blockbook": [ - "https://eth1.trezor.io" + "https://eth2.trezor.io" ] }, { @@ -122,7 +122,7 @@ "rskip60": false, "url": "https://ethereumclassic.github.io", "blockbook": [ - "https://etc1.trezor.io" + "https://etc2.trezor.io" ] }, { From f60b722638116a878d88b9f9393f311f8b45834e Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 19 Sep 2018 20:13:05 +0200 Subject: [PATCH 579/767] tools: we need to keep cointool py3.5 compatible for T1 deterministic build (which happens in Debian 9 docker container) --- tools/cointool.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tools/cointool.py b/tools/cointool.py index c00b8f961..3dbd8d2ce 100755 --- a/tools/cointool.py +++ b/tools/cointool.py @@ -149,8 +149,8 @@ def highlight_key(coin, color): else: keylist[-1] = crayon(color, keylist[-1], bold=True) key = crayon(color, ":".join(keylist)) - name = crayon(None, f"({coin['name']})", dim=True) - return f"{key} {name}" + name = crayon(None, "({})".format(coin['name']), dim=True) + return "{} {}".format(key, name) def find_collisions(coins, field): @@ -166,7 +166,7 @@ def check_eth(coins): check_passed = True chains = find_collisions(coins, "chain") for key, bucket in chains.items(): - bucket_str = ", ".join(f"{coin['key']} ({coin['name']})" for coin in bucket) + bucket_str = ", ".join("{} ({})".format(coin['key'], coin['name']) for coin in bucket) chain_name_str = "colliding chain name " + crayon(None, key, bold=True) + ":" print_log(logging.ERROR, chain_name_str, bucket_str) check_passed = False @@ -237,7 +237,7 @@ def check_btc(coins): else: # collision between some unsupported networks is OK level = logging.INFO - print_log(level, f"prefix {key}:", collision_str(bucket)) + print_log(level, "prefix {}:".format(key), collision_str(bucket)) return failed @@ -287,7 +287,7 @@ def check_dups(buckets, print_at_level=logging.ERROR): prefix = crayon("green", "*", bold=True) else: prefix = "" - return f"{prefix}{highlighted}" + return "{}{}".format(prefix, highlighted) check_passed = True @@ -315,7 +315,7 @@ def check_dups(buckets, print_at_level=logging.ERROR): if symbol == "_override": print_log(level, "force-set duplicates:", dup_str) else: - print_log(level, f"duplicate symbol {symbol}:", dup_str) + print_log(level, "duplicate symbol {}:".format(symbol), dup_str) return check_passed @@ -387,10 +387,10 @@ def check_key_uniformity(coins): keyset = set(coin.keys()) missing = ", ".join(reference_keyset - keyset) if missing: - print_log(logging.ERROR, f"coin {key} has missing keys: {missing}") + print_log(logging.ERROR, "coin {} has missing keys: {}".format(key, missing)) additional = ", ".join(keyset - reference_keyset) if additional: - print_log(logging.ERROR, f"coin {key} has superfluous keys: {additional}") + print_log(logging.ERROR, "coin {} has superfluous keys: {}".format(key, additional)) return False From 6c47e483d4e7dc6c5149cf53d11e543a6f2a07bd Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 21 Sep 2018 12:50:30 +0200 Subject: [PATCH 580/767] defs: enable Decred for T2 --- defs/support.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/defs/support.json b/defs/support.json index bba76a9a0..cb0fbc7b9 100644 --- a/defs/support.json +++ b/defs/support.json @@ -929,6 +929,7 @@ "bitcoin:BTG": "2.0.7", "bitcoin:DASH": "2.0.5", "bitcoin:DGB": "2.0.5", + "bitcoin:DCR": "2.0.8", "bitcoin:DNR": "soon", "bitcoin:DOGE": "2.0.5", "bitcoin:FJC": "2.0.5", @@ -945,6 +946,7 @@ "bitcoin:TAZ": "2.0.7", "bitcoin:TBCH": "2.0.7", "bitcoin:TBTG": "soon", + "bitcoin:TDCR": "2.0.8", "bitcoin:TEST": "2.0.5", "bitcoin:TLTC": "2.0.7", "bitcoin:VIA": "2.0.7", @@ -1618,8 +1620,6 @@ "unsupported": { "bitcoin:BTX": "address_type collides with Bitcoin", "bitcoin:CRW": "address_type collides with Bitcoin", - "bitcoin:DCR": "not implemented on Trezor T", - "bitcoin:TDCR": "not implemented on Trezor T", "bitcoin:TRC": "address_type collides with Bitcoin", "erc20:etc:PLAY": "(AUTO) duplicate key", "erc20:eth:ATH": "(AUTO) duplicate key", From 265935811ee4a443e21d24546745b9d070efc8fc Mon Sep 17 00:00:00 2001 From: matejcik Date: Fri, 14 Sep 2018 15:57:11 +0200 Subject: [PATCH 581/767] tools: add filtering capabilities to `cointool.py dump` --- tools/README.md | 3 +- tools/cointool.py | 124 ++++++++++++++++++++++++++++++++++++---------- 2 files changed, 99 insertions(+), 28 deletions(-) diff --git a/tools/README.md b/tools/README.md index cb65b5aff..ede0c7280 100644 --- a/tools/README.md +++ b/tools/README.md @@ -19,7 +19,8 @@ the following commands: template. By default, `cointool.py render foo.bar.mako` will put its result into file `foo.bar` in the same directory. See [usage in `trezor-core`](https://github.com/trezor/trezor-core/commit/348b99b8dc5bcfc4ab85e1e7faad3fb4ef3e8763). * **`check`**: check validity of json definitions and associated data. Used in CI. -* **`dump`**: dump all coin information, including support status, in JSON format. +* **`dump`**: dump coin information, including support status, in JSON format. Various + filtering options are available, check help for details. * **`coindefs`**: generate signed protobuf descriptions of coins. This is for future use and could allow us to not need to store coin data in Trezor itself. diff --git a/tools/cointool.py b/tools/cointool.py index 3dbd8d2ce..ca126f581 100755 --- a/tools/cointool.py +++ b/tools/cointool.py @@ -1,4 +1,5 @@ #!/usr/bin/env python3 +import fnmatch import io import json import logging @@ -556,18 +557,41 @@ def check(backend, icons, show_duplicates): @cli.command() # fmt: off -@click.option("-o", "--outfile", type=click.File(mode="w"), default="./coins.json") +@click.option("-o", "--outfile", type=click.File(mode="w"), default="-") @click.option("-s/-S", "--support/--no-support", default=True, help="Include support data for each coin") @click.option("-p", "--pretty", is_flag=True, help="Generate nicely formatted JSON") -@click.option("-t", "--tokens", type=click.Choice(["full", "stripped", "none"]), default="full", help="Filter token data") +@click.option("-l", "--list", "--flat-list", is_flag=True, help="Output a flat list of coins") +@click.option("-i", "--include", metavar="FIELD", multiple=True, help="Include only these fields") +@click.option("-e", "--exclude", metavar="FIELD", multiple=True, help="Exclude these fields") +@click.option("-I", "--include-type", metavar="TYPE", multiple=True, help="Include only these categories") +@click.option("-E", "--exclude-type", metavar="TYPE", multiple=True, help="Exclude these categories") +@click.option("-f", "--filter", metavar="FIELD=FILTER", multiple=True, help="Include only coins that match a filter") +@click.option("-F", "--filter-exclude", metavar="FIELD=FILTER", multiple=True, help="Exclude coins that match a filter") +@click.option("-t", "--exclude-tokens", is_flag=True, help="Exclude ERC20 tokens. Equivalent to '-E erc20'") +@click.option("-d", "--device", metavar="NAME", help="Only include coins supported on a given device") # fmt: on -def dump(outfile, support, pretty, tokens): - """Dump all coin data in a single JSON file. +def dump( + outfile, + support, + pretty, + flat_list, + include, + exclude, + include_type, + exclude_type, + filter, + filter_exclude, + exclude_tokens, + device, +): + """Dump coin data in JSON format This file is structured the same as the internal data. That is, top-level object is a dict with keys: 'bitcoin', 'eth', 'erc20', 'nem' and 'misc'. Value for each key is a list of dicts, each describing a known coin. + If '--list' is specified, the top-level object is instead a flat list of coins. + \b Fields are category-specific, except for four common ones: - 'name' - human-readable name @@ -576,41 +600,87 @@ def dump(outfile, support, pretty, tokens): - 'support' - a dict with entries per known device To control the size and properties of the resulting file, you can specify whether - or not you want pretty-printing, whether or not to include support data with - each coin, and whether to include information about ERC20 tokens, which takes up - several hundred kB of space. + or not you want pretty-printing and whether or not to include support data with + each coin. - \b - The option '--tokens' can have one of three values: - 'full': include all token data - 'stripped': exclude 'social' links and 'logo' data from tokens - 'none': exclude the 'erc20' category altogether. + You can specify which categories and which fields will be included or excluded. + You cannot specify both include and exclude at the same time. Include is "stronger" + than exclude, in that _only_ the specified fields are included. + + You can also specify filters, in the form '-f field=value' (or '-F' for inverse + filter). Filter values are case-insensitive and support shell-style wildcards, + so '-f name=bit*' finds all coins whose names start with "bit" or "Bit". """ + if exclude_tokens: + exclude_type = ("erc20",) + + if include and exclude: + raise click.ClickException( + "You cannot specify --include and --exclude at the same time." + ) + if include_type and exclude_type: + raise click.ClickException( + "You cannot specify --include-type and --exclude-type at the same time." + ) + coins = coin_info.coin_info() + support_info = coin_info.support_info(coins.as_list()) if support: - support_info = coin_info.support_info(coins.as_list()) - for category in coins.values(): for coin in category: coin["support"] = support_info[coin["key"]] - # get rid of address_bytes which are bytes which can't be JSON encoded - for coin in coins.erc20: - coin.pop("address_bytes", None) - if tokens == "stripped": - coin.pop("social", None) - coin.pop("logo", None) + # filter types + if include_type: + coins_dict = {k: v for k, v in coins.items() if k in include_type} + else: + coins_dict = {k: v for k, v in coins.items() if k not in exclude_type} + + # filter individual coins + include_filters = [f.split("=", maxsplit=1) for f in filter] + exclude_filters = [f.split("=", maxsplit=1) for f in filter_exclude] + + # always exclude 'address_bytes', not encodable in JSON + exclude += ("address_bytes",) + + def should_include_coin(coin): + for field, filter in include_filters: + filter = filter.lower() + if field not in coin: + return False + if not fnmatch.fnmatch(coin[field].lower(), filter): + return False + for field, filter in exclude_filters: + filter = filter.lower() + if field not in coin: + continue + if fnmatch.fnmatch(coin[field].lower(), filter): + return False + if device: + is_supported = support_info[coin["key"]].get(device, None) + if not is_supported: + return False + return True - if tokens == "none": - del coins["erc20"] + def modify_coin(coin): + if include: + return {k: v for k, v in coin.items() if k in include} + else: + return {k: v for k, v in coin.items() if k not in exclude} + + for key, coinlist in coins_dict.items(): + coins_dict[key] = [modify_coin(c) for c in coinlist if should_include_coin(c)] + + if flat_list: + output = sum(coins_dict.values(), []) + else: + output = coins_dict with outfile: - if pretty: - json.dump(coins, outfile, indent=4, sort_keys=True) - outfile.write("\n") - else: - json.dump(coins, outfile) + indent = 4 if pretty else None + json.dump(output, outfile, indent=indent, sort_keys=True) + outfile.write("\n") @cli.command() From 8065966e5747f3018b176a34c44ee1015ab75887 Mon Sep 17 00:00:00 2001 From: matejcik Date: Tue, 18 Sep 2018 13:28:00 +0200 Subject: [PATCH 582/767] tools: take coin_label for human readable name instead of coin_name --- tools/coin_info.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/coin_info.py b/tools/coin_info.py index 4f7d82c3c..4d16bf5e7 100755 --- a/tools/coin_info.py +++ b/tools/coin_info.py @@ -193,7 +193,7 @@ def _load_btc_coins(): for filename in glob.glob(os.path.join(DEFS_DIR, "coins", "*.json")): coin = load_json(filename) coin.update( - name=coin["coin_name"], + name=coin["coin_label"], shortcut=coin["coin_shortcut"], key="bitcoin:{}".format(coin["coin_shortcut"]), icon=filename.replace(".json", ".png"), From e1cb5e190b513e6d78e6a11751c39f9fa7113a01 Mon Sep 17 00:00:00 2001 From: matejcik Date: Mon, 1 Oct 2018 13:31:57 +0200 Subject: [PATCH 583/767] support: auto-sort entries --- defs/support.json | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/defs/support.json b/defs/support.json index cb0fbc7b9..5483bd378 100644 --- a/defs/support.json +++ b/defs/support.json @@ -11,39 +11,39 @@ "bitcoin:TEST": true, "bitcoin:VTC": true, "bitcoin:ZEC": true, - "eth:ETH": true, - "eth:EXP": true, - "eth:tROP": true, - "eth:tRIN": true, - "eth:UBQ": true, - "eth:EOSC": true, - "eth:ETSC": true, - "eth:RSK": true, - "eth:tRSK": true, - "eth:tKOV": true, - "eth:GO": true, - "eth:ETC": true, - "eth:tETC": true, - "eth:ELLA": true, - "eth:CLO": true, + "eth:AKA": true, "eth:ATH": true, + "eth:CLO": true, "eth:EGEM": true, + "eth:ELLA": true, + "eth:EOSC": true, "eth:ESN": true, - "eth:AKA": true, + "eth:ETC": true, + "eth:ETH": true, "eth:ETHO": true, + "eth:ETSC": true, + "eth:EXP": true, + "eth:GO": true, "eth:MUSIC": true, "eth:PIRL": true, + "eth:RSK": true, + "eth:UBQ": true, + "eth:tETC": true, + "eth:tKOV": true, + "eth:tRIN": true, + "eth:tROP": true, + "eth:tRSK": true, "misc:ADA": true, "misc:LSK": true, "misc:XLM": true, "misc:XRP": true, "misc:XTZ": true, - "nem:XEM": true, + "nem:BREEZE": true, "nem:DIM": true, "nem:DIMTOK": true, - "nem:BREEZE": true, + "nem:PAC:CHS": true, "nem:PAC:HRT": true, - "nem:PAC:CHS": true + "nem:XEM": true }, "unsupported": {} }, @@ -928,8 +928,8 @@ "bitcoin:BTCP": "2.0.7", "bitcoin:BTG": "2.0.7", "bitcoin:DASH": "2.0.5", - "bitcoin:DGB": "2.0.5", "bitcoin:DCR": "2.0.8", + "bitcoin:DGB": "2.0.5", "bitcoin:DNR": "soon", "bitcoin:DOGE": "2.0.5", "bitcoin:FJC": "2.0.5", From e42214e9619dae42e99e8fae5585314ec1db4b44 Mon Sep 17 00:00:00 2001 From: matejcik Date: Mon, 1 Oct 2018 13:32:16 +0200 Subject: [PATCH 584/767] support: re-enable SmartCash for T1 --- defs/support.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/defs/support.json b/defs/support.json index 5483bd378..3264fae63 100644 --- a/defs/support.json +++ b/defs/support.json @@ -68,6 +68,7 @@ "bitcoin:MUE": "soon", "bitcoin:NMC": "1.5.2", "bitcoin:PTC": "soon", + "bitcoin:SMART": "soon", "bitcoin:TAZ": "1.6.2", "bitcoin:TBCH": "1.6.2", "bitcoin:TBTG": "soon", @@ -81,6 +82,7 @@ "bitcoin:ZEC": "1.6.2", "bitcoin:tDASH": "1.6.2", "bitcoin:tGRS": "1.6.2", + "bitcoin:tSMART": "soon", "bitcoin:tXZC": "1.6.2", "erc20:ella:MINING": "1.6.2", "erc20:etc:BEC": "1.6.2", From 41e4a84b5b01d03e980f84fab29c8f0b0ec948f5 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 4 Oct 2018 16:36:27 +0200 Subject: [PATCH 585/767] protob: add Features.no_backup and ResetDevice.no_backup --- protob/messages-management.proto | 2 ++ 1 file changed, 2 insertions(+) diff --git a/protob/messages-management.proto b/protob/messages-management.proto index cffcbfb29..edf78f29b 100644 --- a/protob/messages-management.proto +++ b/protob/messages-management.proto @@ -56,6 +56,7 @@ message Features { optional string fw_vendor = 25; // reported firmware vendor if in bootloader mode optional bytes fw_vendor_keys = 26; // reported firmware vendor keys (their hash) optional bool unfinished_backup = 27; // report unfinished backup (equals to Storage.unfinished_backup) + optional bool no_backup = 28; // report no backup (equals to Storage.no_backup) } /** @@ -188,6 +189,7 @@ message ResetDevice { optional string label = 6; // device label optional uint32 u2f_counter = 7; // U2F counter optional bool skip_backup = 8; // postpone seed backup to BackupDevice workflow + optional bool no_backup = 9; // indicate that no backup is going to be made } /** From 4a9a517a7d8bfd7f40771a2fc498dbdf5fd5fcf2 Mon Sep 17 00:00:00 2001 From: Samad Sajanlal Date: Sun, 7 Oct 2018 05:32:03 -0500 Subject: [PATCH 586/767] add GameCredits (#213) --- defs/bitcoin/gamecredits.json | 39 ++++++++++++++++++++++++++++++++++ defs/bitcoin/gamecredits.png | Bin 0 -> 7831 bytes 2 files changed, 39 insertions(+) create mode 100644 defs/bitcoin/gamecredits.json create mode 100644 defs/bitcoin/gamecredits.png diff --git a/defs/bitcoin/gamecredits.json b/defs/bitcoin/gamecredits.json new file mode 100644 index 000000000..498b24f71 --- /dev/null +++ b/defs/bitcoin/gamecredits.json @@ -0,0 +1,39 @@ +{ + "coin_name": "GameCredits", + "coin_shortcut": "GAME", + "coin_label": "GameCredits", + "website": "https://gamecredits.org", + "github": "https://github.com/gamecredits-project/gamecredits", + "maintainer": "Samad Sajanlal ", + "curve_name": "secp256k1", + "address_type": 38, + "address_type_p2sh": 62, + "maxfee_kb": 5000000, + "minfee_kb": 100000, + "signed_message_header": "GameCredits Signed Message:\n", + "hash_genesis_block": "91ec5f25ee9a0ffa1af7d4da4db9a552228dd2dc77cdb15b738be4e1f55f30ee", + "xpub_magic": 27106558, + "xprv_magic": 27108450, + "xpub_magic_segwit_p2sh": 28471030, + "xpub_magic_segwit_native": null, + "bech32_prefix": "game", + "cashaddr_prefix": null, + "slip44": 101, + "segwit": true, + "decred": false, + "fork_id": null, + "force_bip143": false, + "bip115": false, + "version_group_id": null, + "default_fee_b": { + "Normal": 1000 + }, + "dust_limit": 54600, + "blocktime_seconds": 90, + "uri_prefix": "gamecredits", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [], + "blockbook": [], + "cooldown": 100 +} diff --git a/defs/bitcoin/gamecredits.png b/defs/bitcoin/gamecredits.png new file mode 100644 index 0000000000000000000000000000000000000000..df88f04cacc169a5559f86dc96d0204553f6c3b9 GIT binary patch literal 7831 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 Date: Mon, 8 Oct 2018 13:57:42 +0200 Subject: [PATCH 587/767] tools: fix cointool.py dump that relied on a Click bug --- tools/cointool.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/cointool.py b/tools/cointool.py index ca126f581..e107dd027 100755 --- a/tools/cointool.py +++ b/tools/cointool.py @@ -560,7 +560,7 @@ def check(backend, icons, show_duplicates): @click.option("-o", "--outfile", type=click.File(mode="w"), default="-") @click.option("-s/-S", "--support/--no-support", default=True, help="Include support data for each coin") @click.option("-p", "--pretty", is_flag=True, help="Generate nicely formatted JSON") -@click.option("-l", "--list", "--flat-list", is_flag=True, help="Output a flat list of coins") +@click.option("-l", "--list", "flat_list", is_flag=True, help="Output a flat list of coins") @click.option("-i", "--include", metavar="FIELD", multiple=True, help="Include only these fields") @click.option("-e", "--exclude", metavar="FIELD", multiple=True, help="Exclude these fields") @click.option("-I", "--include-type", metavar="TYPE", multiple=True, help="Include only these categories") From 2742890439bd1786d2fcb6034d016dc7597b0e98 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 15 Oct 2018 17:25:17 +0200 Subject: [PATCH 588/767] protob: add Decred comments --- protob/messages-bitcoin.proto | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/protob/messages-bitcoin.proto b/protob/messages-bitcoin.proto index 09173edf7..d6d9b19a1 100644 --- a/protob/messages-bitcoin.proto +++ b/protob/messages-bitcoin.proto @@ -204,8 +204,8 @@ message TxAck { optional InputScriptType script_type = 6 [default=SPENDADDRESS]; // defines template of input script optional MultisigRedeemScriptType multisig = 7; // Filled if input is going to spend multisig tx optional uint64 amount = 8; // amount of previous transaction output (for segwit only) - optional uint32 decred_tree = 9; - optional uint32 decred_script_version = 10; + optional uint32 decred_tree = 9; // only for Decred + optional uint32 decred_script_version = 10; // only for Decred optional bytes prev_block_hash_bip115 = 11; // block hash of previous transaction output (for bip115 implementation) optional uint32 prev_block_height_bip115 = 12; // block height of previous transaction output (for bip115 implementation) } @@ -215,7 +215,7 @@ message TxAck { message TxOutputBinType { required uint64 amount = 1; required bytes script_pubkey = 2; - optional uint32 decred_script_version = 3; + optional uint32 decred_script_version = 3; // only for Decred } /** * Structure representing transaction output @@ -227,7 +227,7 @@ message TxAck { required OutputScriptType script_type = 4; // output script type optional MultisigRedeemScriptType multisig = 5; // defines multisig address; script_type must be PAYTOMULTISIG optional bytes op_return_data = 6; // defines op_return data; script_type must be PAYTOOPRETURN, amount must be 0 - optional uint32 decred_script_version = 7; + optional uint32 decred_script_version = 7; // only for Decred optional bytes block_hash_bip115 = 8; // block hash of existing block (recommended current_block - 300) (for bip115 implementation) optional uint32 block_height_bip115 = 9; // block height of existing block (recommended current_block - 300) (for bip115 implementation) enum OutputScriptType { From 95ffa894c8808dd9a66cd6c88f434a241a43de91 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 15 Oct 2018 17:29:43 +0200 Subject: [PATCH 589/767] protob: add version_group_id to SignTx and TxAck --- protob/messages-bitcoin.proto | 2 ++ 1 file changed, 2 insertions(+) diff --git a/protob/messages-bitcoin.proto b/protob/messages-bitcoin.proto index d6d9b19a1..632d0be8b 100644 --- a/protob/messages-bitcoin.proto +++ b/protob/messages-bitcoin.proto @@ -129,6 +129,7 @@ message SignTx { optional uint32 lock_time = 5 [default=0]; // transaction lock_time optional uint32 expiry = 6; // only for Decred and Zcash optional bool overwintered = 7; // only for Zcash + optional uint32 version_group_id = 4; // only for Zcash, nVersionGroupId when overwintered is set } /** @@ -192,6 +193,7 @@ message TxAck { optional uint32 extra_data_len = 9; // only for Zcash optional uint32 expiry = 10; // only for Decred and Zcash optional bool overwintered = 11; // only for Zcash + optional uint32 version_group_id = 12; // only for Zcash, nVersionGroupId when overwintered is set /** * Structure representing transaction input */ From 681772e8bb605bf9f7490b03591ff6b84439371f Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 15 Oct 2018 17:55:09 +0200 Subject: [PATCH 590/767] remove version_group_id from coin definitions --- defs/bitcoin/bcash.json | 1 - defs/bitcoin/bcash_testnet.json | 1 - defs/bitcoin/bgold.json | 1 - defs/bitcoin/bgold_testnet.json | 1 - defs/bitcoin/bitcoin.json | 1 - defs/bitcoin/bitcoin_testnet.json | 1 - defs/bitcoin/bitcore.json | 1 - defs/bitcoin/bprivate.json | 1 - defs/bitcoin/crown.json | 1 - defs/bitcoin/dash.json | 1 - defs/bitcoin/dash_testnet.json | 1 - defs/bitcoin/decred.json | 1 - defs/bitcoin/decred_testnet.json | 1 - defs/bitcoin/denarius.json | 1 - defs/bitcoin/digibyte.json | 1 - defs/bitcoin/dogecoin.json | 1 - defs/bitcoin/feathercoin.json | 1 - defs/bitcoin/flashcoin.json | 1 - defs/bitcoin/fujicoin.json | 1 - defs/bitcoin/gamecredits.json | 1 - defs/bitcoin/groestlcoin.json | 1 - defs/bitcoin/groestlcoin_testnet.json | 1 - defs/bitcoin/koto.json | 1 - defs/bitcoin/litecoin.json | 1 - defs/bitcoin/litecoin_testnet.json | 1 - defs/bitcoin/monacoin.json | 1 - defs/bitcoin/monetaryunit.json | 1 - defs/bitcoin/myriad.json | 1 - defs/bitcoin/namecoin.json | 1 - defs/bitcoin/pesetacoin.json | 1 - defs/bitcoin/smartcash.json | 1 - defs/bitcoin/smartcash_testnet.json | 1 - defs/bitcoin/terracoin.json | 1 - defs/bitcoin/vertcoin.json | 1 - defs/bitcoin/viacoin.json | 1 - defs/bitcoin/zcash.json | 1 - defs/bitcoin/zcash_testnet.json | 1 - defs/bitcoin/zcoin.json | 1 - defs/bitcoin/zcoin_testnet.json | 1 - defs/bitcoin/zencash.json | 1 - tools/coin_info.py | 1 - tools/coindef.py | 3 --- 42 files changed, 44 deletions(-) diff --git a/defs/bitcoin/bcash.json b/defs/bitcoin/bcash.json index e83a45d9f..29a617152 100644 --- a/defs/bitcoin/bcash.json +++ b/defs/bitcoin/bcash.json @@ -24,7 +24,6 @@ "fork_id": 0, "force_bip143": true, "bip115": false, - "version_group_id": null, "default_fee_b": { "Low": 10, "Economy": 70, diff --git a/defs/bitcoin/bcash_testnet.json b/defs/bitcoin/bcash_testnet.json index eb01cb948..ce59249ee 100644 --- a/defs/bitcoin/bcash_testnet.json +++ b/defs/bitcoin/bcash_testnet.json @@ -24,7 +24,6 @@ "fork_id": 0, "force_bip143": true, "bip115": false, - "version_group_id": null, "default_fee_b": { "Normal": 10 }, diff --git a/defs/bitcoin/bgold.json b/defs/bitcoin/bgold.json index 333427fde..75132f7f6 100644 --- a/defs/bitcoin/bgold.json +++ b/defs/bitcoin/bgold.json @@ -24,7 +24,6 @@ "fork_id": 79, "force_bip143": true, "bip115": false, - "version_group_id": null, "default_fee_b": { "Low": 10, "Economy": 70, diff --git a/defs/bitcoin/bgold_testnet.json b/defs/bitcoin/bgold_testnet.json index b5e81235f..e3dae9b2c 100644 --- a/defs/bitcoin/bgold_testnet.json +++ b/defs/bitcoin/bgold_testnet.json @@ -24,7 +24,6 @@ "fork_id": 79, "force_bip143": true, "bip115": false, - "version_group_id": null, "default_fee_b": { "Low": 10, "Economy": 70, diff --git a/defs/bitcoin/bitcoin.json b/defs/bitcoin/bitcoin.json index 88a143029..4df6e08af 100644 --- a/defs/bitcoin/bitcoin.json +++ b/defs/bitcoin/bitcoin.json @@ -24,7 +24,6 @@ "fork_id": null, "force_bip143": false, "bip115": false, - "version_group_id": null, "default_fee_b": { "Low": 10, "Economy": 70, diff --git a/defs/bitcoin/bitcoin_testnet.json b/defs/bitcoin/bitcoin_testnet.json index b83b38703..1b5af1cfc 100644 --- a/defs/bitcoin/bitcoin_testnet.json +++ b/defs/bitcoin/bitcoin_testnet.json @@ -24,7 +24,6 @@ "fork_id": null, "force_bip143": false, "bip115": false, - "version_group_id": null, "default_fee_b": { "Normal": 10 }, diff --git a/defs/bitcoin/bitcore.json b/defs/bitcoin/bitcore.json index 0b38f3390..e40aad6a3 100644 --- a/defs/bitcoin/bitcore.json +++ b/defs/bitcoin/bitcore.json @@ -24,7 +24,6 @@ "fork_id": null, "force_bip143": false, "bip115": false, - "version_group_id": null, "default_fee_b": { "Low": 10 }, diff --git a/defs/bitcoin/bprivate.json b/defs/bitcoin/bprivate.json index 80cd951f0..83ba75bdd 100644 --- a/defs/bitcoin/bprivate.json +++ b/defs/bitcoin/bprivate.json @@ -24,7 +24,6 @@ "fork_id": 42, "force_bip143": false, "bip115": false, - "version_group_id": null, "default_fee_b": { "Normal": 10 }, diff --git a/defs/bitcoin/crown.json b/defs/bitcoin/crown.json index 8d7d7a31b..eabb1890d 100644 --- a/defs/bitcoin/crown.json +++ b/defs/bitcoin/crown.json @@ -24,7 +24,6 @@ "fork_id": null, "force_bip143": false, "bip115": false, - "version_group_id": null, "default_fee_b": { "Normal": 10 }, diff --git a/defs/bitcoin/dash.json b/defs/bitcoin/dash.json index 0c364ea7a..65651b006 100644 --- a/defs/bitcoin/dash.json +++ b/defs/bitcoin/dash.json @@ -24,7 +24,6 @@ "fork_id": null, "force_bip143": false, "bip115": false, - "version_group_id": null, "default_fee_b": { "Normal": 10 }, diff --git a/defs/bitcoin/dash_testnet.json b/defs/bitcoin/dash_testnet.json index f176a1ebd..ce6ace0f5 100644 --- a/defs/bitcoin/dash_testnet.json +++ b/defs/bitcoin/dash_testnet.json @@ -24,7 +24,6 @@ "fork_id": null, "force_bip143": false, "bip115": false, - "version_group_id": null, "default_fee_b": { "Normal": 10 }, diff --git a/defs/bitcoin/decred.json b/defs/bitcoin/decred.json index 8089e6372..1d44e67f4 100644 --- a/defs/bitcoin/decred.json +++ b/defs/bitcoin/decred.json @@ -24,7 +24,6 @@ "fork_id": null, "force_bip143": false, "bip115": false, - "version_group_id": null, "default_fee_b": { "Normal": 10 }, diff --git a/defs/bitcoin/decred_testnet.json b/defs/bitcoin/decred_testnet.json index 9cca77f6c..e4b20e9bd 100644 --- a/defs/bitcoin/decred_testnet.json +++ b/defs/bitcoin/decred_testnet.json @@ -24,7 +24,6 @@ "fork_id": null, "force_bip143": false, "bip115": false, - "version_group_id": null, "default_fee_b": { "Normal": 10 }, diff --git a/defs/bitcoin/denarius.json b/defs/bitcoin/denarius.json index a1fc8bc37..8052e4961 100644 --- a/defs/bitcoin/denarius.json +++ b/defs/bitcoin/denarius.json @@ -24,7 +24,6 @@ "fork_id": null, "force_bip143": false, "bip115": false, - "version_group_id": null, "default_fee_b": { "Normal": 10 }, diff --git a/defs/bitcoin/digibyte.json b/defs/bitcoin/digibyte.json index 33d3166a3..52939f657 100644 --- a/defs/bitcoin/digibyte.json +++ b/defs/bitcoin/digibyte.json @@ -23,7 +23,6 @@ "decred": false, "fork_id": null, "force_bip143": false, - "version_group_id": null, "bip115": false, "default_fee_b": { "Low": 10, diff --git a/defs/bitcoin/dogecoin.json b/defs/bitcoin/dogecoin.json index 4a5dca640..5ff77bcfb 100644 --- a/defs/bitcoin/dogecoin.json +++ b/defs/bitcoin/dogecoin.json @@ -24,7 +24,6 @@ "fork_id": null, "force_bip143": false, "bip115": false, - "version_group_id": null, "default_fee_b": { "Normal": 100000 }, diff --git a/defs/bitcoin/feathercoin.json b/defs/bitcoin/feathercoin.json index bdb401970..06eabb87d 100644 --- a/defs/bitcoin/feathercoin.json +++ b/defs/bitcoin/feathercoin.json @@ -24,7 +24,6 @@ "fork_id": null, "force_bip143": false, "bip115": false, - "version_group_id": null, "default_fee_b": { "Normal": 1000 }, diff --git a/defs/bitcoin/flashcoin.json b/defs/bitcoin/flashcoin.json index 59b7f52c0..71159aa2e 100644 --- a/defs/bitcoin/flashcoin.json +++ b/defs/bitcoin/flashcoin.json @@ -24,7 +24,6 @@ "fork_id": null, "force_bip143": false, "bip115": false, - "version_group_id": null, "default_fee_b": { "Normal": 0 }, diff --git a/defs/bitcoin/fujicoin.json b/defs/bitcoin/fujicoin.json index e34bfe805..1350af5f1 100644 --- a/defs/bitcoin/fujicoin.json +++ b/defs/bitcoin/fujicoin.json @@ -24,7 +24,6 @@ "fork_id": null, "force_bip143": false, "bip115": false, - "version_group_id": null, "default_fee_b": { "Low": 100, "Economy": 200, diff --git a/defs/bitcoin/gamecredits.json b/defs/bitcoin/gamecredits.json index 498b24f71..ba188721e 100644 --- a/defs/bitcoin/gamecredits.json +++ b/defs/bitcoin/gamecredits.json @@ -24,7 +24,6 @@ "fork_id": null, "force_bip143": false, "bip115": false, - "version_group_id": null, "default_fee_b": { "Normal": 1000 }, diff --git a/defs/bitcoin/groestlcoin.json b/defs/bitcoin/groestlcoin.json index 84edbeca0..8c8e9abe3 100644 --- a/defs/bitcoin/groestlcoin.json +++ b/defs/bitcoin/groestlcoin.json @@ -24,7 +24,6 @@ "fork_id": null, "force_bip143": false, "bip115": false, - "version_group_id": null, "default_fee_b": { "Normal": 10 }, diff --git a/defs/bitcoin/groestlcoin_testnet.json b/defs/bitcoin/groestlcoin_testnet.json index 2612a6ca0..42b031199 100644 --- a/defs/bitcoin/groestlcoin_testnet.json +++ b/defs/bitcoin/groestlcoin_testnet.json @@ -24,7 +24,6 @@ "fork_id": null, "force_bip143": false, "bip115": false, - "version_group_id": null, "default_fee_b": { "Normal": 10 }, diff --git a/defs/bitcoin/koto.json b/defs/bitcoin/koto.json index cc9e86b3c..ed31ab738 100644 --- a/defs/bitcoin/koto.json +++ b/defs/bitcoin/koto.json @@ -24,7 +24,6 @@ "fork_id": null, "force_bip143": false, "bip115": false, - "version_group_id": 48748912, "default_fee_b": { "Normal": 10 }, diff --git a/defs/bitcoin/litecoin.json b/defs/bitcoin/litecoin.json index a09adbf28..920718d95 100644 --- a/defs/bitcoin/litecoin.json +++ b/defs/bitcoin/litecoin.json @@ -24,7 +24,6 @@ "fork_id": null, "force_bip143": false, "bip115": false, - "version_group_id": null, "default_fee_b": { "Normal": 1000 }, diff --git a/defs/bitcoin/litecoin_testnet.json b/defs/bitcoin/litecoin_testnet.json index d60e569e7..d9cbf3586 100644 --- a/defs/bitcoin/litecoin_testnet.json +++ b/defs/bitcoin/litecoin_testnet.json @@ -24,7 +24,6 @@ "fork_id": null, "force_bip143": false, "bip115": false, - "version_group_id": null, "default_fee_b": { "Normal": 10 }, diff --git a/defs/bitcoin/monacoin.json b/defs/bitcoin/monacoin.json index a0de87581..2cd7d6e15 100644 --- a/defs/bitcoin/monacoin.json +++ b/defs/bitcoin/monacoin.json @@ -24,7 +24,6 @@ "fork_id": null, "force_bip143": false, "bip115": false, - "version_group_id": null, "default_fee_b": { "Normal": 1000 }, diff --git a/defs/bitcoin/monetaryunit.json b/defs/bitcoin/monetaryunit.json index 63f2b992c..d27f77a62 100644 --- a/defs/bitcoin/monetaryunit.json +++ b/defs/bitcoin/monetaryunit.json @@ -24,7 +24,6 @@ "fork_id": null, "force_bip143": false, "bip115": false, - "version_group_id": null, "default_fee_b": { "Normal": 10 }, diff --git a/defs/bitcoin/myriad.json b/defs/bitcoin/myriad.json index 18889998a..0ca576df9 100644 --- a/defs/bitcoin/myriad.json +++ b/defs/bitcoin/myriad.json @@ -24,7 +24,6 @@ "fork_id": null, "force_bip143": false, "bip115": false, - "version_group_id": null, "default_fee_b": { "Low": 10, "Economy": 70, diff --git a/defs/bitcoin/namecoin.json b/defs/bitcoin/namecoin.json index 96745d6cb..a57622e45 100644 --- a/defs/bitcoin/namecoin.json +++ b/defs/bitcoin/namecoin.json @@ -24,7 +24,6 @@ "fork_id": null, "force_bip143": false, "bip115": false, - "version_group_id": null, "default_fee_b": { "Normal": 10 }, diff --git a/defs/bitcoin/pesetacoin.json b/defs/bitcoin/pesetacoin.json index dbdb2dfc2..af59ed57c 100644 --- a/defs/bitcoin/pesetacoin.json +++ b/defs/bitcoin/pesetacoin.json @@ -24,7 +24,6 @@ "fork_id": null, "force_bip143": false, "bip115": false, - "version_group_id": null, "default_fee_b": { "Normal": 10 }, diff --git a/defs/bitcoin/smartcash.json b/defs/bitcoin/smartcash.json index a918d901e..88438dc8c 100644 --- a/defs/bitcoin/smartcash.json +++ b/defs/bitcoin/smartcash.json @@ -24,7 +24,6 @@ "fork_id": null, "force_bip143": false, "bip115": false, - "version_group_id": null, "default_fee_b": { "Low": 1, "Economy": 10, diff --git a/defs/bitcoin/smartcash_testnet.json b/defs/bitcoin/smartcash_testnet.json index 132ff6848..1be411754 100644 --- a/defs/bitcoin/smartcash_testnet.json +++ b/defs/bitcoin/smartcash_testnet.json @@ -24,7 +24,6 @@ "fork_id": null, "force_bip143": false, "bip115": false, - "version_group_id": null, "default_fee_b": { "Low": 1, "Economy": 10, diff --git a/defs/bitcoin/terracoin.json b/defs/bitcoin/terracoin.json index bbaa6e752..cb167ddf8 100644 --- a/defs/bitcoin/terracoin.json +++ b/defs/bitcoin/terracoin.json @@ -24,7 +24,6 @@ "fork_id": null, "force_bip143": false, "bip115": false, - "version_group_id": null, "default_fee_b": { "Normal": 10 }, diff --git a/defs/bitcoin/vertcoin.json b/defs/bitcoin/vertcoin.json index 0a5fc982f..ac1258821 100644 --- a/defs/bitcoin/vertcoin.json +++ b/defs/bitcoin/vertcoin.json @@ -24,7 +24,6 @@ "fork_id": null, "force_bip143": false, "bip115": false, - "version_group_id": null, "default_fee_b": { "Normal": 1000 }, diff --git a/defs/bitcoin/viacoin.json b/defs/bitcoin/viacoin.json index 527b5b01d..d34ae9a06 100644 --- a/defs/bitcoin/viacoin.json +++ b/defs/bitcoin/viacoin.json @@ -24,7 +24,6 @@ "fork_id": null, "force_bip143": false, "bip115": false, - "version_group_id": null, "default_fee_b": { "Low": 1000, "Economy": 7000, diff --git a/defs/bitcoin/zcash.json b/defs/bitcoin/zcash.json index 807528a3f..f88a1316a 100644 --- a/defs/bitcoin/zcash.json +++ b/defs/bitcoin/zcash.json @@ -24,7 +24,6 @@ "fork_id": null, "force_bip143": false, "bip115": false, - "version_group_id": 63210096, "default_fee_b": { "Normal": 10 }, diff --git a/defs/bitcoin/zcash_testnet.json b/defs/bitcoin/zcash_testnet.json index 468d9ffb0..42dc56360 100644 --- a/defs/bitcoin/zcash_testnet.json +++ b/defs/bitcoin/zcash_testnet.json @@ -24,7 +24,6 @@ "fork_id": null, "force_bip143": false, "bip115": false, - "version_group_id": 63210096, "default_fee_b": { "Normal": 10 }, diff --git a/defs/bitcoin/zcoin.json b/defs/bitcoin/zcoin.json index 796fea6a7..b4de83638 100644 --- a/defs/bitcoin/zcoin.json +++ b/defs/bitcoin/zcoin.json @@ -24,7 +24,6 @@ "fork_id": null, "force_bip143": false, "bip115": false, - "version_group_id": null, "default_fee_b": { "Low": 1, "Economy": 10, diff --git a/defs/bitcoin/zcoin_testnet.json b/defs/bitcoin/zcoin_testnet.json index 41e4f49e0..85d66c158 100644 --- a/defs/bitcoin/zcoin_testnet.json +++ b/defs/bitcoin/zcoin_testnet.json @@ -24,7 +24,6 @@ "fork_id": null, "force_bip143": false, "bip115": false, - "version_group_id": null, "default_fee_b": { "Low": 1, "Economy": 10, diff --git a/defs/bitcoin/zencash.json b/defs/bitcoin/zencash.json index f0b94a9f3..2f0424865 100644 --- a/defs/bitcoin/zencash.json +++ b/defs/bitcoin/zencash.json @@ -24,7 +24,6 @@ "fork_id": null, "force_bip143": false, "bip115": true, - "version_group_id": null, "default_fee_b": { "Normal": 10 }, diff --git a/tools/coin_info.py b/tools/coin_info.py index 4d16bf5e7..57bbf2ffb 100755 --- a/tools/coin_info.py +++ b/tools/coin_info.py @@ -130,7 +130,6 @@ BTC_CHECKS = [ check_key("fork_id", int, nullable=True), check_key("force_bip143", bool), check_key("bip115", bool), - check_key("version_group_id", int, nullable=True), check_key("default_fee_b", dict), check_key("dust_limit", int), check_key("blocktime_seconds", int), diff --git a/tools/coindef.py b/tools/coindef.py index cc658bd2d..e96246054 100644 --- a/tools/coindef.py +++ b/tools/coindef.py @@ -29,7 +29,6 @@ class CoinDef(p.MessageType): 24: ('min_address_length', p.UVarintType, 0), 25: ('max_address_length', p.UVarintType, 0), 26: ('icon', p.BytesType, 0), - 27: ('version_group_id', p.UVarintType, 0), 28: ('website', p.UnicodeType, 0), 29: ('github', p.UnicodeType, 0), 30: ('maintainer', p.UnicodeType, 0), @@ -67,7 +66,6 @@ class CoinDef(p.MessageType): min_address_length: int = None, max_address_length: int = None, icon: bytes = None, - version_group_id: int = None, website: str = None, github: str = None, maintainer: str = None, @@ -104,7 +102,6 @@ class CoinDef(p.MessageType): self.min_address_length = min_address_length self.max_address_length = max_address_length self.icon = icon - self.version_group_id = version_group_id self.website = website self.github = github self.maintainer = maintainer From ea0262266d9c42315617e9abbcf0b539c373ebc6 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 15 Oct 2018 17:59:13 +0200 Subject: [PATCH 591/767] fix typo --- protob/messages-bitcoin.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protob/messages-bitcoin.proto b/protob/messages-bitcoin.proto index 632d0be8b..7b1f89f0c 100644 --- a/protob/messages-bitcoin.proto +++ b/protob/messages-bitcoin.proto @@ -129,7 +129,7 @@ message SignTx { optional uint32 lock_time = 5 [default=0]; // transaction lock_time optional uint32 expiry = 6; // only for Decred and Zcash optional bool overwintered = 7; // only for Zcash - optional uint32 version_group_id = 4; // only for Zcash, nVersionGroupId when overwintered is set + optional uint32 version_group_id = 8; // only for Zcash, nVersionGroupId when overwintered is set } /** From e3b4231926c55fdf217b54789754e82bae89a8df Mon Sep 17 00:00:00 2001 From: EOS Classic Date: Wed, 17 Oct 2018 18:35:36 +0900 Subject: [PATCH 592/767] Change EOSC Chainid (#215) --- defs/ethereum/networks.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/defs/ethereum/networks.json b/defs/ethereum/networks.json index e48e401cb..b322499ac 100644 --- a/defs/ethereum/networks.json +++ b/defs/ethereum/networks.json @@ -55,7 +55,7 @@ }, { "chain": "eosc", - "chain_id": 20, + "chain_id": 2018, "slip44": 2018, "shortcut": "EOSC", "name": "EOS Classic", From 2a3adb584d4d7aa95439217711444b684b4c2dbd Mon Sep 17 00:00:00 2001 From: David <37987466+dalijolijo@users.noreply.github.com> Date: Wed, 17 Oct 2018 11:37:09 +0200 Subject: [PATCH 593/767] Update bitcore.json (#214) --- defs/bitcoin/bitcore.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/defs/bitcoin/bitcore.json b/defs/bitcoin/bitcore.json index e40aad6a3..74748dce9 100644 --- a/defs/bitcoin/bitcore.json +++ b/defs/bitcoin/bitcore.json @@ -6,17 +6,17 @@ "github": "https://github.com/LIMXTEC/BitCore", "maintainer": "limxdev ", "curve_name": "secp256k1", - "address_type": 0, - "address_type_p2sh": 5, + "address_type": 3, + "address_type_p2sh": 125, "maxfee_kb": 2000000, "minfee_kb": 1000, - "signed_message_header": "Bitcore Signed Message:\n", + "signed_message_header": "BitCore Signed Message:\n", "hash_genesis_block": "604148281e5c4b7f2487e5d03cd60d8e6f69411d613f6448034508cea52e9574", "xprv_magic": 76066276, "xpub_magic": 76067358, "xpub_magic_segwit_p2sh": 77429938, - "xpub_magic_segwit_native": null, - "bech32_prefix": "bc", + "xpub_magic_segwit_native": 78792518, + "bech32_prefix": "btx", "cashaddr_prefix": null, "slip44": 160, "segwit": true, From dddc6289742f6e0cb7f8feec13dbabe199111dc1 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 17 Oct 2018 14:27:43 +0200 Subject: [PATCH 594/767] udev: add more info about udev rules path --- udev/51-trezor.rules | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/udev/51-trezor.rules b/udev/51-trezor.rules index c937ad791..50472b952 100644 --- a/udev/51-trezor.rules +++ b/udev/51-trezor.rules @@ -1,6 +1,11 @@ # TREZOR: The Original Hardware Wallet # https://trezor.io/ -# Put this file into /usr/lib/udev/rules.d +# +# Put this file into /etc/udev/rules.d +# +# If you are creating a distribution package, +# put this into /usr/lib/udev/rules.d or /lib/udev/rules.d +# depending on your distribution # TREZOR SUBSYSTEM=="usb", ATTR{idVendor}=="534c", ATTR{idProduct}=="0001", MODE="0660", GROUP="plugdev", TAG+="uaccess", TAG+="udev-acl", SYMLINK+="trezor%n" From d04e11847106e2006387f1a54693e7b014abe496 Mon Sep 17 00:00:00 2001 From: Dusan Klinec Date: Wed, 17 Oct 2018 22:42:49 +0200 Subject: [PATCH 595/767] xmr: protocol message thinning As discussed in https://github.com/trezor/trezor-core/issues/368 --- protob/messages-monero.proto | 74 ++++++++++-------------------------- protob/messages.proto | 10 ++--- 2 files changed, 25 insertions(+), 59 deletions(-) diff --git a/protob/messages-monero.proto b/protob/messages-monero.proto index fe9b914d3..7ba8b854b 100644 --- a/protob/messages-monero.proto +++ b/protob/messages-monero.proto @@ -21,10 +21,10 @@ message MoneroTransactionSourceEntry { optional MoneroMultisigKLRki multisig_kLRki = 9; message MoneroOutputEntry { optional uint64 idx = 1; - optional MoneroRctKey key = 2; - message MoneroRctKey { + optional MoneroRctKeyPublic key = 2; + message MoneroRctKeyPublic { optional bytes dest = 1; - optional bytes mask = 2; + optional bytes commitment = 2; } } message MoneroMultisigKLRki { @@ -56,19 +56,13 @@ message MoneroTransactionDestinationEntry { * Range sig parameters / data. */ message MoneroTransactionRsigData { - optional uint32 version = 1; - optional uint32 rsig_type = 2; - optional uint32 offload_type = 3; - repeated uint64 grouping = 4; // aggregation scheme for BP + optional uint32 rsig_type = 1; // range signature (aka proof) type + optional uint32 offload_type = 2; + repeated uint64 grouping = 3; // aggregation scheme for BP - optional uint32 step = 5; - optional uint64 operation = 6; - optional bytes seed = 7; // determ. mask seed - optional bytes mask = 8; // mask vector - optional bytes amount = 9; // amount vector - optional bytes rsig = 10; // range sig, full or partial - repeated bytes rsig_parts = 11; - repeated MoneroTransactionDestinationEntry outputs = 12; + optional bytes mask = 4; // mask vector + optional bytes rsig = 5; // range sig data, all of it or partial (based on rsig_parts) + repeated bytes rsig_parts = 6; } /** @@ -137,11 +131,8 @@ message MoneroTransactionInitRequest { optional uint64 fee = 8; optional uint32 account = 9; repeated uint32 minor_indices = 10; - optional bool is_multisig = 11; - optional bytes exp_tx_prefix_hash = 12; - repeated bytes use_tx_keys = 13; - optional MoneroTransactionRsigData rsig_data = 14; - repeated uint32 integrated_indices = 15; + optional MoneroTransactionRsigData rsig_data = 11; + repeated uint32 integrated_indices = 12; } } @@ -150,13 +141,8 @@ message MoneroTransactionInitRequest { * @next MoneroTransactionSetInputRequest */ message MoneroTransactionInitAck { - optional uint32 version = 1; - optional uint32 status = 2; - optional bool in_memory = 3; - repeated bytes hmacs = 4; - optional bool many_inputs = 5; - optional bool many_outputs = 6; - optional MoneroTransactionRsigData rsig_data = 7; + repeated bytes hmacs = 1; + optional MoneroTransactionRsigData rsig_data = 2; } /** @@ -164,8 +150,7 @@ message MoneroTransactionInitAck { * @next MoneroTransactionSetInputAck */ message MoneroTransactionSetInputRequest { - optional uint32 version = 1; - optional MoneroTransactionSourceEntry src_entr = 2; + optional MoneroTransactionSourceEntry src_entr = 1; } /** @@ -178,8 +163,8 @@ message MoneroTransactionSetInputAck { optional bytes vini_hmac = 2; optional bytes pseudo_out = 3; optional bytes pseudo_out_hmac = 4; - optional bytes alpha_enc = 5; - optional bytes spend_enc = 6; + optional bytes pseudo_out_alpha = 5; + optional bytes spend_key = 6; } /** @@ -222,7 +207,6 @@ message MoneroTransactionInputViniAck { * @next MoneroTransactionAllInputsSetAck */ message MoneroTransactionAllInputsSetRequest { - optional MoneroTransactionRsigData rsig_data = 1; } /** @@ -266,13 +250,14 @@ message MoneroTransactionAllOutSetRequest { /** * Response: After all outputs are sent the initial RCT signature fields are sent. - * @next MoneroTransactionMlsagDoneRequest + * @next MoneroTransactionSignInputRequest */ message MoneroTransactionAllOutSetAck { optional bytes extra = 1; optional bytes tx_prefix_hash = 2; - optional MoneroTransactionRsigData rsig_data = 3; optional MoneroRingCtSig rv = 4; // xmrtypes.RctSig + optional bytes full_message_hash = 5; + /* * Structure represents initial fields of the Monero RCT signature */ @@ -283,21 +268,6 @@ message MoneroTransactionAllOutSetAck { } } -/** - * Request: Sub request of MoneroTransactionSign. - * @next MoneroTransactionMlsagDoneAck - */ -message MoneroTransactionMlsagDoneRequest { -} - -/** - * Response: Contains full message hash needed for the signature - * @next MoneroTransactionSignInputRequest - */ -message MoneroTransactionMlsagDoneAck { - optional bytes full_message_hash = 1; -} - /** * Request: Sub request of MoneroTransactionSign. Sends UTXO for the signing. * @next MoneroTransactionSignInputAck @@ -308,8 +278,8 @@ message MoneroTransactionSignInputRequest { optional bytes vini_hmac = 3; optional bytes pseudo_out = 4; optional bytes pseudo_out_hmac = 5; - optional bytes alpha_enc = 6; - optional bytes spend_enc = 7; + optional bytes pseudo_out_alpha = 6; + optional bytes spend_key = 7; } /** @@ -319,7 +289,6 @@ message MoneroTransactionSignInputRequest { */ message MoneroTransactionSignInputAck { optional bytes signature = 1; - optional bytes cout = 2; } /** @@ -396,7 +365,6 @@ message MoneroKeyImageSyncStepAck { */ message MoneroExportedKeyImage { optional bytes iv = 1; - optional bytes tag = 2; optional bytes blob = 3; } } diff --git a/protob/messages.proto b/protob/messages.proto index fb90f1873..3ba33e5ad 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -211,12 +211,10 @@ enum MessageType { MessageType_MoneroTransactionSetOutputAck = 512 [(wire_out) = true]; MessageType_MoneroTransactionAllOutSetRequest = 513 [(wire_out) = true]; MessageType_MoneroTransactionAllOutSetAck = 514 [(wire_out) = true]; - MessageType_MoneroTransactionMlsagDoneRequest = 515 [(wire_out) = true]; - MessageType_MoneroTransactionMlsagDoneAck = 516 [(wire_out) = true]; - MessageType_MoneroTransactionSignInputRequest = 517 [(wire_out) = true]; - MessageType_MoneroTransactionSignInputAck = 518 [(wire_out) = true]; - MessageType_MoneroTransactionFinalRequest = 519 [(wire_out) = true]; - MessageType_MoneroTransactionFinalAck = 520 [(wire_out) = true]; + MessageType_MoneroTransactionSignInputRequest = 515 [(wire_out) = true]; + MessageType_MoneroTransactionSignInputAck = 516 [(wire_out) = true]; + MessageType_MoneroTransactionFinalRequest = 517 [(wire_out) = true]; + MessageType_MoneroTransactionFinalAck = 518 [(wire_out) = true]; MessageType_MoneroKeyImageExportInitRequest = 530 [(wire_out) = true]; MessageType_MoneroKeyImageExportInitAck = 531 [(wire_out) = true]; MessageType_MoneroKeyImageSyncStepRequest = 532 [(wire_out) = true]; From 50b9ecaf46681175f7c9136a80888101c9ea7c37 Mon Sep 17 00:00:00 2001 From: Tomas Susanka Date: Thu, 18 Oct 2018 14:14:19 +0200 Subject: [PATCH 596/767] xmr: few comments --- protob/messages-monero.proto | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/protob/messages-monero.proto b/protob/messages-monero.proto index 7ba8b854b..a900f95a0 100644 --- a/protob/messages-monero.proto +++ b/protob/messages-monero.proto @@ -10,13 +10,13 @@ option java_outer_classname = "TrezorMessageMonero"; * @embed */ message MoneroTransactionSourceEntry { - repeated MoneroOutputEntry outputs = 1; - optional uint64 real_output = 2; - optional bytes real_out_tx_key = 3; - repeated bytes real_out_additional_tx_keys = 4; - optional uint64 real_output_in_tx_index = 5; + repeated MoneroOutputEntry outputs = 1; // all outputs including decoys (forms the ring) + optional uint64 real_output = 2; // index denoting which item in `outputs` is our real output (not a decoy) + optional bytes real_out_tx_key = 3; // tx key located in the real output's tx + repeated bytes real_out_additional_tx_keys = 4; // additional tx keys if applicable + optional uint64 real_output_in_tx_index = 5; // index of our real output in the tx (aka which output was it in the transaction) optional uint64 amount = 6; - optional bool rct = 7; + optional bool rct = 7; // is RingCT used (true for newer UTXOs) optional bytes mask = 8; optional MoneroMultisigKLRki multisig_kLRki = 9; message MoneroOutputEntry { From 9744e893788ff7de30b77ef613162b3dc76dd9ad Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 18 Oct 2018 14:08:22 +0200 Subject: [PATCH 597/767] protob: fix small issues with protob, run graph.py in travis --- .travis.yml | 3 ++- protob/graph.py | 35 +++++++++++++++++++++------------- protob/messages-monero.proto | 1 + protob/messages-ontology.proto | 8 ++++---- protob/messages-tron.proto | 20 +++++++++---------- 5 files changed, 39 insertions(+), 28 deletions(-) diff --git a/.travis.yml b/.travis.yml index 486451106..b53888f64 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,7 +12,7 @@ python: - "3.6" install: - - pip install demjson + - pip install demjson graphviz - pip install -r tools/requirements.txt script: @@ -20,6 +20,7 @@ script: - jsonlint defs/*/*.json - python tools/cointool.py check - python tools/support.py check --ignore-tokens --ignore-missing + - python protob/graph.py protob/*.proto notifications: webhooks: diff --git a/protob/graph.py b/protob/graph.py index 6b6543e0a..362a1d8b1 100755 --- a/protob/graph.py +++ b/protob/graph.py @@ -1,11 +1,13 @@ #!/usr/bin/env python3 import sys +from os.path import basename from graphviz import Digraph class Message(object): - def __init__(self, name, attrs): + def __init__(self, fname, name, attrs): + self.fname = basename(fname) self.name = name if len(attrs) == 0: raise ValueError("message '%s' has no attributes" % name) @@ -16,18 +18,20 @@ class Message(object): elif t == "next": self.typ = "normal" attrs = attrs - elif t == "wrap": - self.typ = "normal" - attrs = attrs else: raise ValueError("wrong message type in message '%s'" % name) self.next = [] - self.wrap = [] for a in attrs: if a[0] == "next": self.next.append(a[1]) - elif a[0] == "wrap": - self.wrap.append(a[1]) + + def __repr__(self): + return '%s(type=%s, fname="%s", next=%s)' % ( + self.name, + self.typ, + self.fname, + self.next, + ) def generate_messages(files): @@ -40,13 +44,13 @@ def generate_messages(files): attrs.append(line[4:].split(" ")) elif line.startswith("message "): name = line[8:-2] - msgs[name] = Message(name, attrs) + msgs[name] = Message(f, name, attrs) attrs = [] return msgs def generate_graph(msgs, fn): - dot = Digraph(format="png") + dot = Digraph() dot.attr(rankdir="LR") for m in msgs.values(): if m.typ == "start": @@ -63,10 +67,15 @@ def generate_graph(msgs, fn): for m in msgs.values(): for n in m.next: dot.edge(m.name, n) - for n in m.wrap: - dot.edge(m.name, n) dot.render(fn) -msgs = generate_messages(sys.argv) -generate_graph(msgs, "graph.gv") +def main(): + proto_files = sys.argv + + msgs = generate_messages(proto_files) + generate_graph(msgs, "proto.gv") + + +if __name__ == "__main__": + main() diff --git a/protob/messages-monero.proto b/protob/messages-monero.proto index a900f95a0..2f5b812c5 100644 --- a/protob/messages-monero.proto +++ b/protob/messages-monero.proto @@ -54,6 +54,7 @@ message MoneroTransactionDestinationEntry { /** * Range sig parameters / data. + * @embed */ message MoneroTransactionRsigData { optional uint32 rsig_type = 1; // range signature (aka proof) type diff --git a/protob/messages-ontology.proto b/protob/messages-ontology.proto index cac05cd8e..1bb184569 100644 --- a/protob/messages-ontology.proto +++ b/protob/messages-ontology.proto @@ -63,7 +63,7 @@ message OntologyAddress { /** * Request: Ask device to sign Ontology transfer - * @start + * @start * @next OntologySignedTransfer */ message OntologySignTransfer { @@ -99,7 +99,7 @@ message OntologySignedTransfer { /** * Request: Ask device to sign Ontology ONG withdrawal - * @start + * @start * @next OntologySignedWithdrawOng */ message OntologySignWithdrawOng { @@ -127,7 +127,7 @@ message OntologySignedWithdrawOng { /** * Request: Ask device to sign Ontology ONT ID registration - * @start + * @start * @next OntologySignedOntIdRegister */ message OntologySignOntIdRegister { @@ -154,7 +154,7 @@ message OntologySignedOntIdRegister { /** * Request: Ask device to sign Ontology ONT ID attributes adding - * @start + * @start * @next OntologySignedOntIdAddAttributes */ message OntologySignOntIdAddAttributes { diff --git a/protob/messages-tron.proto b/protob/messages-tron.proto index b297eeaff..ce3525c93 100644 --- a/protob/messages-tron.proto +++ b/protob/messages-tron.proto @@ -6,7 +6,7 @@ option java_outer_classname = "TrezorMessageTron"; /** * Request: Ask device for Tron address corresponding to address_n path - * @next PassphraseRequest + * @start * @next TronAddress * @next Failure */ @@ -17,7 +17,7 @@ message TronGetAddress { /** * Response: Contains Tron address derived from device private seed - * @prev TronGetAddress + * @end */ message TronAddress { optional string address = 1; // Tron address (base58) @@ -25,12 +25,13 @@ message TronAddress { /** * Request: Ask device to sign Tron transaction + * @start * @next TronSignedTx */ message TronSignTx { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node // Common part of transaction - optional bytes ref_block_bytes = 2; // Reference block number + optional bytes ref_block_bytes = 2; // Reference block number optional bytes ref_block_hash = 3; // Reference block hash optional uint64 expiration = 4; // Transaction expiration optional string data = 5; // Extra transaction info @@ -90,13 +91,13 @@ message TronSignTx { optional string description = 10; // Asset description optional string url = 11; // Asset URL } - // Participate in an asset + // Participate in an asset message TronParticipateAssetIssueContract { optional bytes to_address = 1; // Asset issuer address - decoded base 58 optional string asset_name = 2; // The name of target asset optional uint64 amount = 3; // TRX amount in sun } - // Freeze TRX balance + // Freeze TRX balance message TronFreezeBalanceContract { optional uint64 frozen_balance = 1; // Amount to freeze optional uint64 frozen_duration = 2; // Freeze minimal duration in days @@ -118,7 +119,7 @@ message TronSignTx { // Network proposal contract message TronProposalCreateContract { message TronProposalParameters { - optional uint64 key = 1; // Paramter key + optional uint64 key = 1; // Parameter key optional uint64 value = 2; // Parameter value } repeated TronProposalParameters parameters = 1; // Parameter to be changed @@ -132,7 +133,6 @@ message TronSignTx { message TronProposalDeleteContract { optional uint64 proposal_id = 1; // Proposal ID } - optional TronTransferContract transfer_contract = 1; optional TronTransferAssetContract transfer_asset_contract = 2; optional TronVoteWitnessContract vote_witness_contract = 4; @@ -153,9 +153,9 @@ message TronSignTx { } /** -* Response: Contains Tron transaction signature -* @prev TronSignTx -*/ + * Response: Contains Tron transaction signature + * @end + */ message TronSignedTx { optional bytes signature = 1; // Transaction signature optional bytes serialized_tx = 2; // Serialized transaction From d56c8abf9ddac19f5c78b6c88f029dd86b3a4e05 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 18 Oct 2018 14:57:23 +0200 Subject: [PATCH 598/767] protob: update .gitignore --- protob/.gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protob/.gitignore b/protob/.gitignore index ee30dc04a..47e83496f 100644 --- a/protob/.gitignore +++ b/protob/.gitignore @@ -1,3 +1,3 @@ *.pb combined.proto -graph.gv* +*.gv* From 8030b6ce3866b2749bdac96ebd40944fc7d31dfb Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 18 Oct 2018 15:00:09 +0200 Subject: [PATCH 599/767] travis: add graphviz to deps --- .travis.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.travis.yml b/.travis.yml index b53888f64..361471166 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,6 +8,11 @@ cache: directories: - $HOME/.cache/pip +addons: + apt: + packages: + - graphviz + python: - "3.6" From b33157281e01f7ae66c6cc5c37f1b50aafab7e68 Mon Sep 17 00:00:00 2001 From: Szymon Lesisz Date: Thu, 18 Oct 2018 16:45:33 +0200 Subject: [PATCH 600/767] added new blockbook urls for ETH and ETC (#217) --- defs/ethereum/networks.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/defs/ethereum/networks.json b/defs/ethereum/networks.json index b322499ac..f31099d2c 100644 --- a/defs/ethereum/networks.json +++ b/defs/ethereum/networks.json @@ -8,6 +8,7 @@ "rskip60": false, "url": "https://www.ethereum.org", "blockbook": [ + "https://eth1.trezor.io", "https://eth2.trezor.io" ] }, @@ -122,6 +123,7 @@ "rskip60": false, "url": "https://ethereumclassic.github.io", "blockbook": [ + "https://etc1.trezor.io", "https://etc2.trezor.io" ] }, From c1b70ca05881f407e0ce922af220468820814d74 Mon Sep 17 00:00:00 2001 From: matejcik Date: Fri, 19 Oct 2018 12:30:30 +0200 Subject: [PATCH 601/767] defs: refresh coins_details --- defs/coins_details.json | 638 +++++++++++++++++++++++++--------------- 1 file changed, 402 insertions(+), 236 deletions(-) diff --git a/defs/coins_details.json b/defs/coins_details.json index 8993932b8..1aee3e020 100644 --- a/defs/coins_details.json +++ b/defs/coins_details.json @@ -5,7 +5,7 @@ "Github": "https://github.com/Bitcoin-ABC/bitcoin-abc", "Homepage": "https://www.bitcoincash.org" }, - "marketcap_usd": 9163601102, + "marketcap_usd": 7615973800, "name": "Bitcoin Cash", "shortcut": "BCH", "t1_enabled": "yes", @@ -21,7 +21,7 @@ "Github": "https://github.com/bitcoin/bitcoin", "Homepage": "https://bitcoin.org" }, - "marketcap_usd": 118659050043, + "marketcap_usd": 112022585690, "name": "Bitcoin", "shortcut": "BTC", "t1_enabled": "yes", @@ -37,7 +37,7 @@ "Github": "https://github.com/BTCPrivate/BitcoinPrivate", "Homepage": "https://btcprivate.org" }, - "marketcap_usd": 89921730, + "marketcap_usd": 50903149, "name": "Bitcoin Private", "shortcut": "BTCP", "t1_enabled": "yes", @@ -52,7 +52,7 @@ "Github": "https://github.com/BTCGPU/BTCGPU", "Homepage": "https://bitcoingold.org" }, - "marketcap_usd": 367138479, + "marketcap_usd": 444833169, "name": "Bitcoin Gold", "shortcut": "BTG", "t1_enabled": "yes", @@ -69,7 +69,7 @@ "Github": "https://github.com/LIMXTEC/BitCore", "Homepage": "https://bitcore.cc" }, - "marketcap_usd": 18169775, + "marketcap_usd": 13060451, "name": "Bitcore", "shortcut": "BTX", "t1_enabled": "no", @@ -83,7 +83,7 @@ "Github": "https://github.com/Crowndev/crowncoin", "Homepage": "https://crown.tech" }, - "marketcap_usd": 4513655, + "marketcap_usd": 7147017, "name": "Crown", "shortcut": "CRW", "t1_enabled": "no", @@ -96,7 +96,7 @@ "Github": "https://github.com/dashpay/dash", "Homepage": "https://www.dash.org" }, - "marketcap_usd": 1485565916, + "marketcap_usd": 1291948419, "name": "Dash", "shortcut": "DASH", "t1_enabled": "yes", @@ -112,11 +112,11 @@ "Github": "https://github.com/decred/dcrd", "Homepage": "https://www.decred.org" }, - "marketcap_usd": 341414617, + "marketcap_usd": 333098504, "name": "Decred", "shortcut": "DCR", "t1_enabled": "yes", - "t2_enabled": "no", + "t2_enabled": "soon", "type": "coin", "wallet": {} }, @@ -125,7 +125,7 @@ "Github": "https://github.com/digibyte/digibyte", "Homepage": "https://digibyte.io" }, - "marketcap_usd": 311970859, + "marketcap_usd": 255611022, "name": "DigiByte", "shortcut": "DGB", "t1_enabled": "yes", @@ -151,7 +151,7 @@ "Github": "https://github.com/dogecoin/dogecoin", "Homepage": "http://dogecoin.com" }, - "marketcap_usd": 354212399, + "marketcap_usd": 507335690, "name": "Dogecoin", "shortcut": "DOGE", "t1_enabled": "yes", @@ -166,7 +166,7 @@ "Github": "https://github.com/fujicoin/fujicoin", "Homepage": "http://fujicoin.org" }, - "marketcap_usd": 566316, + "marketcap_usd": 388112, "name": "Fujicoin", "shortcut": "FJC", "t1_enabled": "yes", @@ -181,7 +181,7 @@ "Github": "https://github.com/flash-coin", "Homepage": "https://www.flashcoin.io" }, - "marketcap_usd": 6483801, + "marketcap_usd": 5651732, "name": "Flashcoin", "shortcut": "FLASH", "t1_enabled": "soon", @@ -194,7 +194,7 @@ "Github": "https://github.com/FeatherCoin/Feathercoin", "Homepage": "https://feathercoin.com" }, - "marketcap_usd": 11541343, + "marketcap_usd": 8348465, "name": "Feathercoin", "shortcut": "FTC", "t1_enabled": "soon", @@ -202,12 +202,26 @@ "type": "coin", "wallet": {} }, + "bitcoin:GAME": { + "hidden": 1, + "links": { + "Github": "https://github.com/gamecredits-project/gamecredits", + "Homepage": "https://gamecredits.org" + }, + "marketcap_usd": 11457646, + "name": "GameCredits", + "shortcut": "GAME", + "t1_enabled": "no", + "t2_enabled": "no", + "type": "coin", + "wallet": {} + }, "bitcoin:GRS": { "links": { "Github": "https://github.com/Groestlcoin/groestlcoin", "Homepage": "https://www.groestlcoin.org" }, - "marketcap_usd": 42855908, + "marketcap_usd": 38286374, "name": "Groestlcoin", "shortcut": "GRS", "t1_enabled": "yes", @@ -228,14 +242,16 @@ "t1_enabled": "soon", "t2_enabled": "soon", "type": "coin", - "wallet": {} + "wallet": { + "Electrum-KOTO": "https://electrum.kotocoin.info" + } }, "bitcoin:LTC": { "links": { "Github": "https://github.com/litecoin-project/litecoin", "Homepage": "https://litecoin.org" }, - "marketcap_usd": 3438858034, + "marketcap_usd": 3108614763, "name": "Litecoin", "shortcut": "LTC", "t1_enabled": "yes", @@ -251,7 +267,7 @@ "Github": "https://github.com/monacoinproject/monacoin", "Homepage": "https://monacoin.org" }, - "marketcap_usd": 91027428, + "marketcap_usd": 74084305, "name": "Monacoin", "shortcut": "MONA", "t1_enabled": "yes", @@ -279,14 +295,15 @@ "Github": "https://github.com/namecoin/namecoin-core", "Homepage": "https://namecoin.org" }, - "marketcap_usd": 20837607, + "marketcap_usd": 8765767, "name": "Namecoin", "shortcut": "NMC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", "wallet": { - "Electrum-NMC": "https://github.com/namecoin/electrum-nmc" + "Electrum-NMC": "https://github.com/namecoin/electrum-nmc", + "Trezor": "https://wallet.trezor.io" } }, "bitcoin:PTC": { @@ -294,7 +311,7 @@ "Github": "https://github.com/FundacionPesetacoin/PesetacoinCore", "Homepage": "http://pesetacoin.info" }, - "marketcap_usd": 2522620, + "marketcap_usd": 744595, "name": "Pesetacoin", "shortcut": "PTC", "t1_enabled": "soon", @@ -307,7 +324,7 @@ "Github": "https://github.com/SmartCash/Core-Smart", "Homepage": "https://smarcash.cc" }, - "marketcap_usd": 41874199, + "marketcap_usd": 22036721, "name": "SmartCash", "shortcut": "SMART", "t1_enabled": "soon", @@ -367,7 +384,7 @@ "name": "Decred Testnet", "shortcut": "TDCR", "t1_enabled": "yes", - "t2_enabled": "no", + "t2_enabled": "soon", "type": "coin", "wallet": {} }, @@ -407,7 +424,7 @@ "Github": "https://github.com/terracoin/terracoin", "Homepage": "https://terracoin.io" }, - "marketcap_usd": 1706619, + "marketcap_usd": 887649, "name": "Terracoin", "shortcut": "TRC", "t1_enabled": "no", @@ -420,7 +437,7 @@ "Github": "https://github.com/viacoin", "Homepage": "https://viacoin.org" }, - "marketcap_usd": 21155868, + "marketcap_usd": 14650359, "name": "Viacoin", "shortcut": "VIA", "t1_enabled": "yes", @@ -435,7 +452,7 @@ "Github": "https://github.com/vertcoin-project/vertcoin-core", "Homepage": "https://vertcoin.org" }, - "marketcap_usd": 33634370, + "marketcap_usd": 31722206, "name": "Vertcoin", "shortcut": "VTC", "t1_enabled": "yes", @@ -450,7 +467,7 @@ "Github": "https://github.com/myriadcoin/myriadcoin", "Homepage": "https://www.myriadcoin.org" }, - "marketcap_usd": 4399423, + "marketcap_usd": 4802597, "name": "Myriad", "shortcut": "XMY", "t1_enabled": "soon", @@ -463,7 +480,7 @@ "Github": "https://github.com/zcoinofficial/zcoin", "Homepage": "https://zcoin.io" }, - "marketcap_usd": 69561268, + "marketcap_usd": 54012535, "name": "Zcoin", "shortcut": "XZC", "t1_enabled": "yes", @@ -479,7 +496,7 @@ "Github": "https://github.com/zcash/zcash", "Homepage": "https://z.cash" }, - "marketcap_usd": 695131113, + "marketcap_usd": 595709082, "name": "Zcash", "shortcut": "ZEC", "t1_enabled": "yes", @@ -494,7 +511,7 @@ "Github": "https://github.com/ZencashOfficial/zen", "Homepage": "https://zencash.com" }, - "marketcap_usd": 83954420, + "marketcap_usd": 66195877, "name": "Zencash", "shortcut": "ZEN", "t1_enabled": "no", @@ -623,6 +640,23 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:etc:UNV": { + "address": "0x6ADa6F48C815689502C43eC1a59F1b5DD3C04E1F", + "links": { + "Homepage": "https://universalcoin.io/" + }, + "marketcap_usd": 0, + "name": "UniversalCoin", + "network": "etc", + "shortcut": "UNV", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:$FFC": { "address": "0x4E84E9e5fb0A972628Cf4568c403167EF1D40431", "links": { @@ -699,7 +733,7 @@ "links": { "Homepage": "https://0xbitcoin.org/" }, - "marketcap_usd": 1430744, + "marketcap_usd": 925089, "name": "0xBitcoin", "network": "eth", "shortcut": "0xBTC", @@ -716,7 +750,7 @@ "links": { "Homepage": "https://firstblood.io" }, - "marketcap_usd": 5804330, + "marketcap_usd": 6465201, "name": "FirstBlood", "network": "eth", "shortcut": "1ST", @@ -852,7 +886,7 @@ "links": { "Homepage": "http://accelerator.network" }, - "marketcap_usd": 112685, + "marketcap_usd": 104653, "name": "Accelerator Network", "network": "eth", "shortcut": "ACC", @@ -887,7 +921,7 @@ "Github": "https://github.com/aditus", "Homepage": "https://aditus.net" }, - "marketcap_usd": 479149, + "marketcap_usd": 387140, "name": "Aditus", "network": "eth", "shortcut": "ADI", @@ -922,7 +956,7 @@ "links": { "Homepage": "https://adshares.net" }, - "marketcap_usd": 3418041, + "marketcap_usd": 3777288, "name": "AdShares", "network": "eth", "shortcut": "ADST", @@ -940,7 +974,7 @@ "Github": "https://github.com/adchain", "Homepage": "https://adtoken.com" }, - "marketcap_usd": 8448647, + "marketcap_usd": 8203878, "name": "AdToken", "network": "eth", "shortcut": "ADT", @@ -976,7 +1010,7 @@ "Github": "https://github.com/aeternity", "Homepage": "https://www.aeternity.com/" }, - "marketcap_usd": 250922293, + "marketcap_usd": 294655210, "name": "aeternity", "network": "eth", "shortcut": "AE", @@ -994,7 +1028,7 @@ "Github": "https://github.com/singnet/singnet", "Homepage": "https://singularitynet.io" }, - "marketcap_usd": 26427805, + "marketcap_usd": 26672694, "name": "SingularityNET", "network": "eth", "shortcut": "AGI", @@ -1012,7 +1046,7 @@ "Github": "https://github.com/aionnetwork", "Homepage": "https://aion.network/" }, - "marketcap_usd": 119379478, + "marketcap_usd": 102160609, "name": "Aion", "network": "eth", "shortcut": "AION", @@ -1029,7 +1063,7 @@ "links": { "Homepage": "https://airtoken.com" }, - "marketcap_usd": 2923329, + "marketcap_usd": 2446267, "name": "AirToken", "network": "eth", "shortcut": "AIR", @@ -1047,7 +1081,7 @@ "Github": "https://github.com/AigangNetwork", "Homepage": "https://aigang.network/" }, - "marketcap_usd": 776294, + "marketcap_usd": 565333, "name": "Aigang", "network": "eth", "shortcut": "AIX", @@ -1100,7 +1134,7 @@ "Github": "https://github.com/AlisProject", "Homepage": "https://alismedia.jp" }, - "marketcap_usd": 2655578, + "marketcap_usd": 1548109, "name": "ALIS Token", "network": "eth", "shortcut": "ALIS", @@ -1171,7 +1205,7 @@ "Github": "https://github.com/amlt-by-coinfirm", "Homepage": "https://amlt.coinfirm.io/" }, - "marketcap_usd": 1802630, + "marketcap_usd": 1561633, "name": "AMLT", "network": "eth", "shortcut": "AMLT", @@ -1189,7 +1223,7 @@ "Github": "https://github.com/amontech", "Homepage": "https://amon.tech" }, - "marketcap_usd": 481531, + "marketcap_usd": 432886, "name": "Amon", "network": "eth", "shortcut": "AMN", @@ -1259,7 +1293,7 @@ "Github": "https://github.com/Oxchild/crowdsale", "Homepage": "https://apisplatform.io" }, - "marketcap_usd": 10575316, + "marketcap_usd": 14825693, "name": "APIS", "network": "eth", "shortcut": "APIS", @@ -1277,7 +1311,7 @@ "Github": "https://github.com/Aptoide/AppCoins-ethereumj", "Homepage": "https://appcoins.io" }, - "marketcap_usd": 9549699, + "marketcap_usd": 10207763, "name": "AppCoins", "network": "eth", "shortcut": "APPC", @@ -1294,7 +1328,7 @@ "links": { "Homepage": "https://aigang.network" }, - "marketcap_usd": 776294, + "marketcap_usd": 565333, "name": "AIGang", "network": "eth", "shortcut": "APT", @@ -1329,7 +1363,7 @@ "links": { "Homepage": "https://www.arbitragect.com" }, - "marketcap_usd": 156561, + "marketcap_usd": 160046, "name": "ArbitrageCT", "network": "eth", "shortcut": "ARCT", @@ -1434,7 +1468,7 @@ "links": { "Homepage": "https://airswap.io" }, - "marketcap_usd": 15458641, + "marketcap_usd": 13348093, "name": "Airswap", "network": "eth", "shortcut": "AST", @@ -1469,7 +1503,7 @@ "Github": "https://github.com/atonomi", "Homepage": "https://atonomi.io" }, - "marketcap_usd": 0, + "marketcap_usd": 3568119, "name": "Atonomi", "network": "eth", "shortcut": "ATMI", @@ -1592,7 +1626,7 @@ "Github": "https://www.github.com/axpire", "Homepage": "https://www.axpire.io" }, - "marketcap_usd": 5181380, + "marketcap_usd": 4091122, "name": "aXpire", "network": "eth", "shortcut": "AXPR", @@ -1787,7 +1821,7 @@ "Github": "https://github.com/thebeetoken", "Homepage": "https://www.beetoken.com" }, - "marketcap_usd": 1848749, + "marketcap_usd": 1499364, "name": "Bee Token", "network": "eth", "shortcut": "BEE", @@ -1841,7 +1875,7 @@ "Github": "https://github.com/bethereumproject", "Homepage": "https://www.bethereum.com/" }, - "marketcap_usd": 0, + "marketcap_usd": 1181412, "name": "Bethereum", "network": "eth", "shortcut": "BETHER", @@ -1911,7 +1945,7 @@ "Github": "https://github.com/BankEx", "Homepage": "https://bankex.com/" }, - "marketcap_usd": 6449176, + "marketcap_usd": 5550875, "name": "BANKEX", "network": "eth", "shortcut": "BKX", @@ -1947,7 +1981,7 @@ "Github": "https://github.com/BlueCrypto", "Homepage": "https://blueprotocol.com/" }, - "marketcap_usd": 2309309, + "marketcap_usd": 1501335, "name": "Ethereum Blue", "network": "eth", "shortcut": "BLUE", @@ -1982,7 +2016,7 @@ "links": { "Homepage": "https://www.iconomi.net" }, - "marketcap_usd": 45910932, + "marketcap_usd": 31740005, "name": "Iconomi", "network": "eth", "shortcut": "BLX (Iconomi)", @@ -2119,7 +2153,7 @@ "Github": "https://github.com/bancorprotocol", "Homepage": "https://www.bancor.network/discover" }, - "marketcap_usd": 86142745, + "marketcap_usd": 73377374, "name": "Bancor", "network": "eth", "shortcut": "BNT", @@ -2170,7 +2204,7 @@ "links": { "Homepage": "https://bonpay.com" }, - "marketcap_usd": 1037945, + "marketcap_usd": 652429, "name": "Bonpay", "network": "eth", "shortcut": "BON", @@ -2274,7 +2308,7 @@ "links": { "Homepage": "http://bro-consortium.io" }, - "marketcap_usd": 34134, + "marketcap_usd": 41347, "name": "BRAT", "network": "eth", "shortcut": "BRAT", @@ -2292,7 +2326,7 @@ "Github": "https://github.com/breadwallet", "Homepage": "https://token.breadapp.com/en" }, - "marketcap_usd": 31046822, + "marketcap_usd": 32307625, "name": "Bread", "network": "eth", "shortcut": "BRD", @@ -2414,7 +2448,7 @@ "Github": "https://github.com/bethereumproject", "Homepage": "https://www.bethereum.com/" }, - "marketcap_usd": 0, + "marketcap_usd": 1181412, "name": "Bethereum", "network": "eth", "shortcut": "BTHR", @@ -2432,7 +2466,7 @@ "Github": "https://github.com/bitcoin-token", "Homepage": "https://btk.community" }, - "marketcap_usd": 0, + "marketcap_usd": 611388, "name": "Bitcoin Token", "network": "eth", "shortcut": "BTK", @@ -2450,7 +2484,7 @@ "Github": "https://github.com/bytom", "Homepage": "https://bytom.io" }, - "marketcap_usd": 187374905, + "marketcap_usd": 183639296, "name": "Bytom", "network": "eth", "shortcut": "BTM", @@ -2485,7 +2519,7 @@ "Github": "https://github.com/Andyss4545/BitEther", "Homepage": "https://bytom.io" }, - "marketcap_usd": 0, + "marketcap_usd": 71786, "name": "Bitether", "network": "eth", "shortcut": "BTT", @@ -2569,7 +2603,7 @@ "Github": "https://github.com/cryptotwenty", "Homepage": "https://crypto20.com" }, - "marketcap_usd": 29157052, + "marketcap_usd": 26040361, "name": "Crypto20's Token", "network": "eth", "shortcut": "C20", @@ -2687,7 +2721,7 @@ "links": { "Homepage": "https://cashaa.com" }, - "marketcap_usd": 9074871, + "marketcap_usd": 5519548, "name": "Cashaa", "network": "eth", "shortcut": "CAS", @@ -3156,7 +3190,7 @@ "links": { "Homepage": "https://cindicator.com" }, - "marketcap_usd": 26930369, + "marketcap_usd": 33986046, "name": "Cindicator", "network": "eth", "shortcut": "CND", @@ -3263,7 +3297,7 @@ "Github": "https://github.com/CoinvestHQ", "Homepage": "https://coinve.st" }, - "marketcap_usd": 79501, + "marketcap_usd": 75053, "name": "Coinvest V2 Token", "network": "eth", "shortcut": "COIN", @@ -3297,7 +3331,7 @@ "links": { "Homepage": "https://covesting.io/" }, - "marketcap_usd": 16636447, + "marketcap_usd": 9029377, "name": "Covesting", "network": "eth", "shortcut": "COV", @@ -3333,7 +3367,7 @@ "Github": "https://github.com/aditus", "Homepage": "https://copytrack.io" }, - "marketcap_usd": 988221, + "marketcap_usd": 1371486, "name": "COPYTRACK", "network": "eth", "shortcut": "CPY", @@ -3403,7 +3437,7 @@ "links": { "Homepage": "https://bitbounce.io" }, - "marketcap_usd": 13648043, + "marketcap_usd": 22334817, "name": "Credo / Bitbounce", "network": "eth", "shortcut": "CREDO", @@ -3629,7 +3663,7 @@ "Github": "https://github.com/cargoxio", "Homepage": "https://cargox.io" }, - "marketcap_usd": 4283389, + "marketcap_usd": 2695053, "name": "CargoX", "network": "eth", "shortcut": "CXO", @@ -3646,7 +3680,7 @@ "links": { "Homepage": "https://cyberfmradio.com" }, - "marketcap_usd": 0, + "marketcap_usd": 1138039, "name": "CyberFM", "network": "eth", "shortcut": "CYFM", @@ -3663,7 +3697,7 @@ "links": { "Homepage": "https://ccrb.io" }, - "marketcap_usd": 2334403, + "marketcap_usd": 507289, "name": "CryptoCarbon", "network": "eth", "shortcut": "CryptoCarbon", @@ -3697,7 +3731,7 @@ "links": { "Homepage": "https://dadi.cloud" }, - "marketcap_usd": 8254668, + "marketcap_usd": 5897414, "name": "DADI", "network": "eth", "shortcut": "DADI", @@ -3714,7 +3748,7 @@ "links": { "Homepage": "http://www.dalecoin.org" }, - "marketcap_usd": 35455, + "marketcap_usd": 27158, "name": "DaleCoin", "network": "eth", "shortcut": "DALC", @@ -3802,7 +3836,7 @@ "Github": "https://github.com/streamr-dev", "Homepage": "https://www.streamr.com" }, - "marketcap_usd": 51475, + "marketcap_usd": 50098, "name": "DATACoin", "network": "eth", "shortcut": "DATACoin", @@ -3891,7 +3925,7 @@ "Github": "https://github.com/DistributedBanking/DCC", "Homepage": "http://dcc.finance" }, - "marketcap_usd": 16108621, + "marketcap_usd": 8986242, "name": "Distributed Credit Chain", "network": "eth", "shortcut": "DCC", @@ -3926,7 +3960,7 @@ "Github": "https://github.com/Dentacoin", "Homepage": "https://dentacoin.com" }, - "marketcap_usd": 109596206, + "marketcap_usd": 75018351, "name": "Dentacoin", "network": "eth", "shortcut": "DCN", @@ -3996,7 +4030,7 @@ "links": { "Homepage": "https://www.dentwireless.com" }, - "marketcap_usd": 46023234, + "marketcap_usd": 37013977, "name": "DENT", "network": "eth", "shortcut": "DENT", @@ -4014,7 +4048,7 @@ "Github": "https://github.com/digipulseio", "Homepage": "https://www.digipulse.io" }, - "marketcap_usd": 169075, + "marketcap_usd": 64541, "name": "DigiPulse", "network": "eth", "shortcut": "DGPT", @@ -4032,7 +4066,7 @@ "Github": "https://github.com/dragonglasscom", "Homepage": "https://dragonglass.com/" }, - "marketcap_usd": 0, + "marketcap_usd": 94785, "name": "Dragonglass", "network": "eth", "shortcut": "DGS", @@ -4068,7 +4102,7 @@ "Github": "https://github.com/DigixGlobal", "Homepage": "https://digix.global" }, - "marketcap_usd": 2235830, + "marketcap_usd": 2631585, "name": "Digix Gold Token", "network": "eth", "shortcut": "DGX", @@ -4103,7 +4137,7 @@ "links": { "Homepage": "https://etheroll.com" }, - "marketcap_usd": 5528175, + "marketcap_usd": 3317732, "name": "Etheroll", "network": "eth", "shortcut": "DICE", @@ -4305,13 +4339,31 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:DSCP": { + "address": "0x03e3f0c25965f13DbbC58246738C183E27b26a56", + "links": { + "Github": "https://github.com/DisciplinaOU/disciplina", + "Homepage": "https://disciplina.io" + }, + "marketcap_usd": 0, + "name": "Disciplina Token", + "network": "eth", + "shortcut": "DSCP", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:DTH": { "address": "0x5adc961D6AC3f7062D2eA45FEFB8D8167d44b190", "links": { "Github": "https://github.com/dethertech", "Homepage": "https://dether.io" }, - "marketcap_usd": 2316599, + "marketcap_usd": 1626455, "name": "dether", "network": "eth", "shortcut": "DTH", @@ -4381,7 +4433,7 @@ "Github": "https://github.com/elangindonesia/EagleCoin", "Homepage": "https://eaglepay.io" }, - "marketcap_usd": 75467, + "marketcap_usd": 3457, "name": "EagleCoin", "network": "eth", "shortcut": "EAGLE", @@ -4466,7 +4518,7 @@ "links": { "Homepage": "https://edgeless.io" }, - "marketcap_usd": 25302508, + "marketcap_usd": 14559573, "name": "Edgeless", "network": "eth", "shortcut": "EDG", @@ -4483,7 +4535,7 @@ "links": { "Homepage": "https://eidoo.io" }, - "marketcap_usd": 26588675, + "marketcap_usd": 33219767, "name": "Eidoo", "network": "eth", "shortcut": "EDO", @@ -4590,7 +4642,7 @@ "Github": "https://github.com/eltcoin", "Homepage": "http://www.eltcoin.tech/" }, - "marketcap_usd": 143080, + "marketcap_usd": 130768, "name": "ELTCOIN", "network": "eth", "shortcut": "ELTCOIN", @@ -4768,7 +4820,7 @@ "links": { "Homepage": "https://eos.io" }, - "marketcap_usd": 5370134851, + "marketcap_usd": 4844398678, "name": "EOS", "network": "eth", "notes": "EOS has a mainnet now", @@ -4822,7 +4874,7 @@ "links": { "Homepage": "https://www.ethbits.com" }, - "marketcap_usd": 1344915, + "marketcap_usd": 1058177, "name": "Ethbits", "network": "eth", "shortcut": "ETBS", @@ -4978,7 +5030,7 @@ "address": "0x5c743a35E903F6c584514ec617ACEe0611Cf44f3", "hidden": 1, "links": {}, - "marketcap_usd": 3166851, + "marketcap_usd": 3341177, "name": "Experty", "network": "eth", "shortcut": "EXY", @@ -5049,7 +5101,7 @@ "Github": "https://github.com/FortKnoxster", "Homepage": "https://fortknoxster.com" }, - "marketcap_usd": 0, + "marketcap_usd": 590325, "name": "Knoxstertoken", "network": "eth", "shortcut": "FKX", @@ -5153,7 +5205,7 @@ "Github": "https://github.com/FundRequest", "Homepage": "https://fundrequest.io" }, - "marketcap_usd": 689828, + "marketcap_usd": 336279, "name": "FundRequest", "network": "eth", "shortcut": "FND", @@ -5223,7 +5275,7 @@ "Github": "https://github.com/futuraxproject", "Homepage": "https://futurax.global" }, - "marketcap_usd": 195461, + "marketcap_usd": 1085292, "name": "FUTURAX", "network": "eth", "shortcut": "FTXT", @@ -5258,7 +5310,7 @@ "links": { "Homepage": "https://funfair.io" }, - "marketcap_usd": 86676561, + "marketcap_usd": 76438642, "name": "Funfair", "network": "eth", "shortcut": "FUN", @@ -5276,7 +5328,7 @@ "Github": "https://github.com/futuraxproject", "Homepage": "https://futurax.global" }, - "marketcap_usd": 195461, + "marketcap_usd": 1085292, "name": "FUTURAX", "network": "eth", "shortcut": "FXC", @@ -5311,7 +5363,7 @@ "Github": "https://github.com/BlockchainLabsNZ/gambit", "Homepage": "http://gambitcrypto.com" }, - "marketcap_usd": 4598561, + "marketcap_usd": 3164274, "name": "Gambit", "network": "eth", "shortcut": "GAM", @@ -5434,7 +5486,7 @@ "Github": "https://github.com/daostack", "Homepage": "https://daostack.io" }, - "marketcap_usd": 4995972, + "marketcap_usd": 3414625, "name": "DAOstack", "network": "eth", "shortcut": "GEN", @@ -5556,7 +5608,7 @@ "links": { "Homepage": "https://gridplus.io/token-sale" }, - "marketcap_usd": 7195961, + "marketcap_usd": 7604175, "name": "GRID", "network": "eth", "shortcut": "GRID", @@ -5645,7 +5697,7 @@ "Github": "https://github.com/GIFTO-io", "Homepage": "https://gifto.io/" }, - "marketcap_usd": 43583428, + "marketcap_usd": 37302521, "name": "Gifto", "network": "eth", "shortcut": "GTO", @@ -5681,7 +5733,7 @@ "Github": "https://github.com/GenesisVision", "Homepage": "https://genesis.vision" }, - "marketcap_usd": 22215862, + "marketcap_usd": 55573506, "name": "Genesis Vision", "network": "eth", "shortcut": "GVT", @@ -5803,7 +5855,7 @@ "Github": "https://github.com/havven/havven", "Homepage": "https://havven.io" }, - "marketcap_usd": 6900766, + "marketcap_usd": 8573406, "name": "Havven", "network": "eth", "shortcut": "HAV", @@ -5874,7 +5926,7 @@ "Homepage": "https://www.ethereumhigh.org/" }, "marketcap_usd": 0, - "name": "ethereumhigh ", + "name": "ethereumhigh", "network": "eth", "shortcut": "HIG", "t1_enabled": "yes", @@ -5942,7 +5994,7 @@ "links": { "Homepage": "https://github.com/arachnid/hodlcoin" }, - "marketcap_usd": 334785, + "marketcap_usd": 210726, "name": "HODLCoin", "network": "eth", "shortcut": "HODL", @@ -5995,7 +6047,7 @@ "Github": "https://github.com/HiveProjectLTD", "Homepage": "https://hive-project.net" }, - "marketcap_usd": 12654826, + "marketcap_usd": 0, "name": "Hive Project", "network": "eth", "shortcut": "HVN", @@ -6098,7 +6150,7 @@ "links": { "Homepage": "https://icos.icobox.io" }, - "marketcap_usd": 1811081, + "marketcap_usd": 1219554, "name": "ICOS", "network": "eth", "shortcut": "ICOS", @@ -6115,7 +6167,7 @@ "links": { "Homepage": "https://www.icon.foundation" }, - "marketcap_usd": 319763529, + "marketcap_usd": 265205324, "name": "ICON", "network": "eth", "shortcut": "ICX", @@ -6149,7 +6201,7 @@ "links": { "Homepage": "https://investfeed.com" }, - "marketcap_usd": 2860446, + "marketcap_usd": 2054415, "name": "InvestFeed", "network": "eth", "shortcut": "IFT", @@ -6284,7 +6336,7 @@ "links": { "Homepage": "https://insights.network" }, - "marketcap_usd": 1776581, + "marketcap_usd": 1446032, "name": "Insights Network", "network": "eth", "shortcut": "INSTAR", @@ -6301,7 +6353,7 @@ "links": { "Homepage": "https://internxt.io" }, - "marketcap_usd": 1552014, + "marketcap_usd": 1490281, "name": "Internxt", "network": "eth", "shortcut": "INXT", @@ -6318,7 +6370,7 @@ "links": { "Homepage": "https://iost.io/" }, - "marketcap_usd": 119220874, + "marketcap_usd": 99252486, "name": "IOSToken", "network": "eth", "shortcut": "IOST", @@ -6389,7 +6441,7 @@ "Github": "https://github.com/iqeon", "Homepage": "https://iqeon.io/" }, - "marketcap_usd": 0, + "marketcap_usd": 536572, "name": "IQeon", "network": "eth", "shortcut": "IQN", @@ -6425,7 +6477,7 @@ "Github": "https://github.com/IoTChainCode", "Homepage": "https://iotchain.io/" }, - "marketcap_usd": 17295689, + "marketcap_usd": 14328647, "name": "IoT Chain", "network": "eth", "shortcut": "ITC", @@ -6615,7 +6667,7 @@ "Github": "https://github.com/kikinteractive/kin-token", "Homepage": "https://kin.kik.com" }, - "marketcap_usd": 71230692, + "marketcap_usd": 43335013, "name": "Kin Foundation", "network": "eth", "shortcut": "KIN", @@ -6633,7 +6685,7 @@ "Github": "https://github.com/KyberNetwork", "Homepage": "https://kyber.network" }, - "marketcap_usd": 71157052, + "marketcap_usd": 55442294, "name": "Kyber Network", "network": "eth", "shortcut": "KNC", @@ -6669,7 +6721,7 @@ "Github": "https://github.com/Cryptense/", "Homepage": "https://kryll.io/" }, - "marketcap_usd": 708023, + "marketcap_usd": 943632, "name": "Kryll", "network": "eth", "shortcut": "KRL", @@ -6704,7 +6756,7 @@ "Github": "https://github.com/latoken", "Homepage": "https://latoken.com/" }, - "marketcap_usd": 7771068, + "marketcap_usd": 6543907, "name": "LATOKEN", "network": "eth", "shortcut": "LA", @@ -6733,12 +6785,29 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:LCT": { + "address": "0x4A37A91eec4C97F9090CE66d21D3B3Aadf1aE5aD", + "links": { + "Homepage": "http://liquorchain.io" + }, + "marketcap_usd": 0, + "name": "LiquorChain Token", + "network": "eth", + "shortcut": "LCT", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:LDC": { "address": "0x5102791cA02FC3595398400BFE0e33d7B6C82267", "links": { "Homepage": "https://www.leadcoin.network/" }, - "marketcap_usd": 1012768, + "marketcap_usd": 379428, "name": "LEADCOIN", "network": "eth", "shortcut": "LDC", @@ -6842,7 +6911,7 @@ "links": { "Homepage": "http://www.lifelabs.io" }, - "marketcap_usd": 3047752, + "marketcap_usd": 1518704, "name": "LIFE", "network": "eth", "shortcut": "LIFE", @@ -6894,7 +6963,7 @@ "Github": "https://github.com/lendingblock", "Homepage": "https://lendingblock.com" }, - "marketcap_usd": 1517578, + "marketcap_usd": 2544610, "name": "Lendingblock", "network": "eth", "shortcut": "LND", @@ -6911,7 +6980,7 @@ "links": { "Homepage": "https://LockChain.co" }, - "marketcap_usd": 5121030, + "marketcap_usd": 5503455, "name": "LockChain", "network": "eth", "shortcut": "LOC", @@ -6929,7 +6998,7 @@ "Github": "http://github.com/locipro/loci-coin-sale", "Homepage": "https://locipro.com" }, - "marketcap_usd": 1556369, + "marketcap_usd": 858517, "name": "LOCIcoin", "network": "eth", "shortcut": "LOCI", @@ -7244,7 +7313,7 @@ "Github": "https://github.com/theembermine", "Homepage": "https://embermine.com/" }, - "marketcap_usd": 233392, + "marketcap_usd": 113282, "name": "Embers", "network": "eth", "shortcut": "MBRS", @@ -7260,7 +7329,7 @@ "address": "0x93E682107d1E9defB0b5ee701C71707a4B2E46Bc", "hidden": 1, "links": {}, - "marketcap_usd": 297643, + "marketcap_usd": 64328, "name": "MCAP", "network": "eth", "shortcut": "MCAP", @@ -7278,7 +7347,7 @@ "Github": "https://github.com/musiconomi/", "Homepage": "https://musiconomi.com/" }, - "marketcap_usd": 282865, + "marketcap_usd": 304711, "name": "Musiconomi", "network": "eth", "shortcut": "MCI", @@ -7295,7 +7364,7 @@ "links": { "Homepage": "https://mona.co" }, - "marketcap_usd": 67472787, + "marketcap_usd": 0, "name": "MCO", "network": "eth", "shortcut": "MCO", @@ -7401,7 +7470,7 @@ "links": { "Homepage": "https://mftu.net" }, - "marketcap_usd": 68875, + "marketcap_usd": 57143, "name": "Mainstream For The Underground", "network": "eth", "shortcut": "MFTU", @@ -7507,7 +7576,7 @@ "Github": "https://github.com/modum-io", "Homepage": "https://modum.io" }, - "marketcap_usd": 19226919, + "marketcap_usd": 20617561, "name": "Modum", "network": "eth", "shortcut": "MOD", @@ -7576,7 +7645,7 @@ "links": { "Homepage": "https://mothership.cx" }, - "marketcap_usd": 12562371, + "marketcap_usd": 9469058, "name": "Mothership", "network": "eth", "shortcut": "MSP", @@ -7593,7 +7662,7 @@ "links": { "Homepage": "http://www.monetha.io" }, - "marketcap_usd": 5116672, + "marketcap_usd": 7536949, "name": "Monetha", "network": "eth", "shortcut": "MTH", @@ -7713,7 +7782,7 @@ "Github": "https://github.com/Merculet", "Homepage": "https://www.merculet.io" }, - "marketcap_usd": 3514692, + "marketcap_usd": 2732137, "name": "Merculet", "network": "eth", "shortcut": "MVP", @@ -7763,7 +7832,7 @@ "links": { "Homepage": "https://mysterium.network" }, - "marketcap_usd": 2462840, + "marketcap_usd": 3190573, "name": "Mysterium", "network": "eth", "shortcut": "MYST", @@ -7798,7 +7867,7 @@ "Github": "https://github.com/NANJ-COIN", "Homepage": "https://nanjcoin.com/" }, - "marketcap_usd": 14700718, + "marketcap_usd": 9622418, "name": "NANJCOIN", "network": "eth", "shortcut": "NANJ", @@ -7852,7 +7921,7 @@ "Github": "https://github.com/polyswarm", "Homepage": "https://polyswarm.io" }, - "marketcap_usd": 27218297, + "marketcap_usd": 43355009, "name": "Nectar", "network": "eth", "shortcut": "NCT", @@ -7869,7 +7938,7 @@ "links": { "Homepage": "https://neverdie.com" }, - "marketcap_usd": 1066178, + "marketcap_usd": 408659, "name": "Neverdie", "network": "eth", "shortcut": "NDC", @@ -7904,7 +7973,7 @@ "links": { "Homepage": "https://nimiq.com" }, - "marketcap_usd": 3397393, + "marketcap_usd": 2392235, "name": "NIMIQ", "network": "eth", "shortcut": "NET", @@ -8011,7 +8080,7 @@ "Github": "https://github.com/NperProject", "Homepage": "https://nper.io" }, - "marketcap_usd": 2485599, + "marketcap_usd": 1881133, "name": "NPER", "network": "eth", "shortcut": "NPER", @@ -8063,7 +8132,7 @@ "links": { "Homepage": "https://nuls.io" }, - "marketcap_usd": 71438643, + "marketcap_usd": 44484694, "name": "NULS", "network": "eth", "shortcut": "NULS", @@ -8097,7 +8166,7 @@ "links": { "Homepage": "https://beyond-the-void.net" }, - "marketcap_usd": 1893866, + "marketcap_usd": 1288740, "name": "Nexium", "network": "eth", "shortcut": "NxC", @@ -8131,7 +8200,7 @@ "links": { "Homepage": "https://www.openanx.org/en" }, - "marketcap_usd": 4043015, + "marketcap_usd": 6147963, "name": "OAX", "network": "eth", "shortcut": "OAX", @@ -8345,7 +8414,7 @@ "Github": "https://github.com/OpenSTFoundation", "Homepage": "https://simpletoken.org" }, - "marketcap_usd": 12916284, + "marketcap_usd": 19337612, "name": "Simple Token 'OST'", "network": "eth", "shortcut": "OST", @@ -8363,7 +8432,7 @@ "Github": "https://github.com/owndata", "Homepage": "https://owndata.network" }, - "marketcap_usd": 0, + "marketcap_usd": 1164328, "name": "OWNDATA", "network": "eth", "shortcut": "OWN", @@ -8399,7 +8468,7 @@ "Github": "https://github.com/policypalnet", "Homepage": "https://www.policypal.network" }, - "marketcap_usd": 3102921, + "marketcap_usd": 0, "name": "PolicyPal Network", "network": "eth", "shortcut": "PAL", @@ -8504,7 +8573,7 @@ "links": { "Homepage": "http://www.tenx.tech" }, - "marketcap_usd": 65073355, + "marketcap_usd": 59741802, "name": "TenX", "network": "eth", "shortcut": "PAY", @@ -8573,7 +8642,7 @@ "Github": "https://github.com/PeculiumPCL/Peculium", "Homepage": "https://peculium.io" }, - "marketcap_usd": 2862364, + "marketcap_usd": 2026335, "name": "Peculium", "network": "eth", "shortcut": "PCL", @@ -8728,7 +8797,7 @@ "links": { "Homepage": "https://polybius.io" }, - "marketcap_usd": 7716159, + "marketcap_usd": 6054067, "name": "Polybius", "network": "eth", "shortcut": "PLBT", @@ -8832,7 +8901,7 @@ "links": { "Homepage": "https://polymath.network" }, - "marketcap_usd": 58432263, + "marketcap_usd": 73399637, "name": "Polymath Network", "network": "eth", "shortcut": "POLY", @@ -8867,7 +8936,7 @@ "Github": "https://github.com/PoSToken", "Homepage": "https://postoken.org" }, - "marketcap_usd": 39994, + "marketcap_usd": 24135, "name": "PoSToken", "network": "eth", "shortcut": "POS", @@ -8901,7 +8970,7 @@ "links": { "Homepage": "https://www.paypie.com" }, - "marketcap_usd": 16816456, + "marketcap_usd": 9753588, "name": "PayPie", "network": "eth", "shortcut": "PPP", @@ -8918,7 +8987,7 @@ "links": { "Homepage": "https://populous.co" }, - "marketcap_usd": 158658057, + "marketcap_usd": 120848147, "name": "Populous", "network": "eth", "shortcut": "PPT", @@ -8935,7 +9004,7 @@ "links": { "Homepage": "https://presearch.io" }, - "marketcap_usd": 16790621, + "marketcap_usd": 8732060, "name": "Presearch", "network": "eth", "shortcut": "PRE", @@ -8988,7 +9057,7 @@ "links": { "Homepage": "https://propy.com" }, - "marketcap_usd": 6758935, + "marketcap_usd": 23609965, "name": "Propy", "network": "eth", "shortcut": "PRO", @@ -9163,7 +9232,7 @@ "links": { "Homepage": "https://liquid.plus" }, - "marketcap_usd": 74061345, + "marketcap_usd": 76275959, "name": "QASH", "network": "eth", "shortcut": "QASH", @@ -9216,7 +9285,7 @@ "Github": "https://github.com/quantnetwork", "Homepage": "https://www.quant.network/" }, - "marketcap_usd": 0, + "marketcap_usd": 12104850, "name": "Quant", "network": "eth", "shortcut": "QNT", @@ -9305,7 +9374,7 @@ "Github": "https://github.com/qtumproject", "Homepage": "https://qtum.org/" }, - "marketcap_usd": 401693242, + "marketcap_usd": 341259964, "name": "Qtum", "network": "eth", "shortcut": "QTUM", @@ -9359,7 +9428,7 @@ "Github": "https://github.com/ripio/rcn-token", "Homepage": "https://ripiocredit.network" }, - "marketcap_usd": 9599356, + "marketcap_usd": 13782226, "name": "Ripio Credit Network", "network": "eth", "shortcut": "RCN", @@ -9410,7 +9479,7 @@ "links": { "Homepage": "https://www.rebellious.io" }, - "marketcap_usd": 2672658, + "marketcap_usd": 1411676, "name": "Rebellious", "network": "eth", "shortcut": "REBL", @@ -9428,7 +9497,7 @@ "Github": "https://github.com/red", "Homepage": "https://ico.red-lang.org" }, - "marketcap_usd": 1625556, + "marketcap_usd": 3137057, "name": "Red Community Token", "network": "eth", "shortcut": "RED", @@ -9481,7 +9550,7 @@ "links": { "Homepage": "https://request.network" }, - "marketcap_usd": 33124649, + "marketcap_usd": 44515868, "name": "Request Network", "network": "eth", "shortcut": "REQ", @@ -9516,7 +9585,7 @@ "links": { "Homepage": "https://refereum.com" }, - "marketcap_usd": 10405580, + "marketcap_usd": 11880665, "name": "Refereum", "network": "eth", "shortcut": "RFR", @@ -9568,7 +9637,7 @@ "links": { "Homepage": "http://crowdsale.iex.ec" }, - "marketcap_usd": 31188808, + "marketcap_usd": 34205120, "name": "IEx.ec", "network": "eth", "shortcut": "RLC", @@ -9620,7 +9689,7 @@ "links": { "Homepage": "http://www.relex.io" }, - "marketcap_usd": 4036278, + "marketcap_usd": 2125632, "name": "Relex", "network": "eth", "shortcut": "RLX", @@ -9655,7 +9724,7 @@ "Github": "https://github.com/rocketico", "Homepage": "https://rocketico.io" }, - "marketcap_usd": 20501556, + "marketcap_usd": 13583495, "name": "Rocket Token", "network": "eth", "shortcut": "ROCK", @@ -9757,7 +9826,7 @@ "links": { "Homepage": "https://rivetzintl.com" }, - "marketcap_usd": 3468618, + "marketcap_usd": 2219832, "name": "Rivetz", "network": "eth", "shortcut": "RVT", @@ -9808,7 +9877,7 @@ "links": { "Homepage": "https://saltlending.com" }, - "marketcap_usd": 41690369, + "marketcap_usd": 47970805, "name": "Salt Lending Token", "network": "eth", "shortcut": "SALT", @@ -9825,7 +9894,7 @@ "links": { "Homepage": "https://santiment.net" }, - "marketcap_usd": 40246236, + "marketcap_usd": 27761992, "name": "Santiment", "network": "eth", "shortcut": "SAN", @@ -9876,7 +9945,7 @@ "links": { "Homepage": "https://sensay.it" }, - "marketcap_usd": 2012926, + "marketcap_usd": 1784119, "name": "Sensay", "network": "eth", "shortcut": "SENSE", @@ -10049,7 +10118,7 @@ "links": { "Homepage": "http://smartlands.io" }, - "marketcap_usd": 8754232, + "marketcap_usd": 11399327, "name": "Smartlands", "network": "eth", "shortcut": "SLT", @@ -10136,7 +10205,7 @@ "links": { "Homepage": "https://singulardtv.com" }, - "marketcap_usd": 13648030, + "marketcap_usd": 15290919, "name": "SingularDTV", "network": "eth", "shortcut": "SNGLS", @@ -10222,7 +10291,7 @@ "links": { "Homepage": "https://sola.foundation" }, - "marketcap_usd": 0, + "marketcap_usd": 184593, "name": "Sola Token", "network": "eth", "shortcut": "SOL", @@ -10239,7 +10308,7 @@ "links": { "Homepage": "https://spankchain.com" }, - "marketcap_usd": 13540028, + "marketcap_usd": 19051953, "name": "SpankChain", "network": "eth", "shortcut": "SPANK", @@ -10307,7 +10376,7 @@ "links": { "Homepage": "https://www.sapien.network/" }, - "marketcap_usd": 0, + "marketcap_usd": 613296, "name": "Sapien", "network": "eth", "shortcut": "SPN", @@ -10428,7 +10497,7 @@ "links": { "Homepage": "https://stktoken.com" }, - "marketcap_usd": 4966534, + "marketcap_usd": 3957702, "name": "STK Token", "network": "eth", "shortcut": "STK", @@ -10463,7 +10532,7 @@ "Github": "https://github.com/Storj", "Homepage": "https://storj.io" }, - "marketcap_usd": 43125921, + "marketcap_usd": 44212696, "name": "STORJ", "network": "eth", "shortcut": "STORJ", @@ -10480,7 +10549,7 @@ "links": { "Homepage": "https://www.stormtoken.com" }, - "marketcap_usd": 37892294, + "marketcap_usd": 34408981, "name": "Storm Token", "network": "eth", "shortcut": "STORM", @@ -10516,7 +10585,7 @@ "Github": "https://github.com/Storiqa/", "Homepage": "https://storiqa.com" }, - "marketcap_usd": 18749703, + "marketcap_usd": 22281062, "name": "Storiqa", "network": "eth", "shortcut": "STQ", @@ -10569,7 +10638,7 @@ "links": { "Homepage": "https://substratum.net" }, - "marketcap_usd": 57545455, + "marketcap_usd": 41161721, "name": "Substratum", "network": "eth", "shortcut": "SUB", @@ -10738,6 +10807,24 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:TCA": { + "address": "0xfA0eF5E034CaE1AE752d59bdb8aDcDe37Ed7aB97", + "links": { + "Github": "https://github.com/TcandyChain", + "Homepage": "https://www.tcandy.io" + }, + "marketcap_usd": 0, + "name": "TangguoTao Token", + "network": "eth", + "shortcut": "TCA", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:TDH": { "address": "0x2a1dbabe65c595B0022e75208C34014139d5d357", "links": { @@ -10761,7 +10848,7 @@ "Github": "https://github.com/telcoin", "Homepage": "https://www.telco.in" }, - "marketcap_usd": 22830969, + "marketcap_usd": 29655710, "name": "Telcoin", "network": "eth", "shortcut": "TEL", @@ -10779,7 +10866,7 @@ "Github": "https://github.com/TrueFlip", "Homepage": "https://trueflip.io" }, - "marketcap_usd": 3171281, + "marketcap_usd": 2502407, "name": "TrueFlip", "network": "eth", "shortcut": "TFL", @@ -10796,7 +10883,7 @@ "links": { "Homepage": "https://www.thetatoken.org/" }, - "marketcap_usd": 64884083, + "marketcap_usd": 61095713, "name": "Theta Token", "network": "eth", "shortcut": "THETA", @@ -10849,7 +10936,7 @@ "links": { "Homepage": "https://chronobank.io" }, - "marketcap_usd": 5099580, + "marketcap_usd": 4382859, "name": "Chronobank", "network": "eth", "shortcut": "TIME", @@ -10883,7 +10970,7 @@ "links": { "Homepage": "https://www.blocktix.io" }, - "marketcap_usd": 5167044, + "marketcap_usd": 7980850, "name": "Blocktix", "network": "eth", "shortcut": "TIX", @@ -10900,7 +10987,7 @@ "links": { "Homepage": "https://etherscan.io/token/TokenCard" }, - "marketcap_usd": 10979400, + "marketcap_usd": 11720481, "name": "TokenCard", "network": "eth", "shortcut": "TKN", @@ -10912,6 +10999,23 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:TLX": { + "address": "0xb3616550aBc8AF79c7A5902DEF9Efa3bC9A95200", + "links": { + "Homepage": "https://telexai.com" + }, + "marketcap_usd": 0, + "name": "Telex", + "network": "eth", + "shortcut": "TLX", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:TNT": { "address": "0x08f5a9235B08173b7569F83645d2c7fB55e8cCD8", "links": { @@ -11056,7 +11160,7 @@ "links": { "Homepage": "https://taas.fund" }, - "marketcap_usd": 6406506, + "marketcap_usd": 3559372, "name": "Token-as-a-Service", "network": "eth", "shortcut": "TaaS", @@ -11091,7 +11195,7 @@ "links": { "Homepage": "https://uquidcoin.com" }, - "marketcap_usd": 6175841, + "marketcap_usd": 1841516, "name": "Uquid Coin", "network": "eth", "shortcut": "UQC", @@ -11103,6 +11207,42 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:URB": { + "address": "0x931684139f756C24eC0731E9F74FE50e5548dDeF", + "links": { + "Github": "https://github.com/urbitdata", + "Homepage": "https://urbitdata.io" + }, + "marketcap_usd": 0, + "name": "Urbit Data", + "network": "eth", + "shortcut": "URB", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:USDC": { + "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + "links": { + "Github": "https://github.com/centrehq/centre-tokens", + "Homepage": "https://www.centre.io" + }, + "marketcap_usd": 0, + "name": "USD//Coin", + "network": "eth", + "shortcut": "USDC", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:USDM": { "address": "0xD760ADdFb24D9C01Fe4Bfea7475C5e3636684058", "hidden": 1, @@ -11159,7 +11299,7 @@ "Github": "https://github.com/UniversaBlockchain/universa", "Homepage": "https://www.universa.io/" }, - "marketcap_usd": 13029388, + "marketcap_usd": 8640742, "name": "Universa", "network": "eth", "shortcut": "UTN-P", @@ -11246,7 +11386,7 @@ "Github": "https://github.com/blockv", "Homepage": "https://blockv.io" }, - "marketcap_usd": 21610531, + "marketcap_usd": 17491992, "name": "BLOCKv", "network": "eth", "shortcut": "VEE", @@ -11261,11 +11401,11 @@ "erc20:eth:VEN": { "address": "0xD850942eF8811f2A866692A623011bDE52a462C1", "links": { - "Github": "https://github.com/vechain-team", + "Github": "https://github.com/vechain", "Homepage": "https://www.vechain.com" }, - "marketcap_usd": 898155557, - "name": "Vechain", + "marketcap_usd": 632038449, + "name": "VeChain", "network": "eth", "shortcut": "VEN", "t1_enabled": "yes", @@ -11333,7 +11473,7 @@ "Github": "https://github.com/Viewly/", "Homepage": "https://view.ly/" }, - "marketcap_usd": 625291, + "marketcap_usd": 562431, "name": "Viewly", "network": "eth", "shortcut": "VIEW", @@ -11351,7 +11491,7 @@ "Github": "https://github.com/ViceIndustryToken", "Homepage": "https://vicetoken.com/" }, - "marketcap_usd": 1957089, + "marketcap_usd": 930287, "name": "Vice Industry Token", "network": "eth", "shortcut": "VIT", @@ -11439,7 +11579,7 @@ "links": { "Homepage": "https://veros.org" }, - "marketcap_usd": 219592, + "marketcap_usd": 327525, "name": "Veros", "network": "eth", "shortcut": "VRS", @@ -11468,13 +11608,31 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:WATT": { + "address": "0x829A4cA1303383F1082B6B1fB937116e4b3b5605", + "links": { + "Github": "https://github.com/workchainio", + "Homepage": "https://workchain.io/" + }, + "marketcap_usd": 0, + "name": "WorkChain App Token", + "network": "eth", + "shortcut": "WATT", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:WAX": { "address": "0x39Bb259F66E1C59d5ABEF88375979b4D20D98022", "links": { "Github": "https://github.com/waxio", "Homepage": "https://wax.io" }, - "marketcap_usd": 69485789, + "marketcap_usd": 62892283, "name": "WAX", "network": "eth", "shortcut": "WAX", @@ -11526,7 +11684,7 @@ "links": { "Homepage": "https://wepower.network" }, - "marketcap_usd": 10627450, + "marketcap_usd": 14879829, "name": "WePower", "network": "eth", "shortcut": "WCT", @@ -11596,7 +11754,7 @@ "links": { "Homepage": "https://wings.ai" }, - "marketcap_usd": 12571650, + "marketcap_usd": 14153514, "name": "WINGS", "network": "eth", "shortcut": "WINGS", @@ -11769,7 +11927,7 @@ "links": { "Homepage": "https://www.wacoin.io" }, - "marketcap_usd": 8995319, + "marketcap_usd": 13168856, "name": "WaBi", "network": "eth", "shortcut": "WaBi", @@ -11803,7 +11961,7 @@ "links": { "Homepage": "http://www.xaurum.org" }, - "marketcap_usd": 4021792, + "marketcap_usd": 4590788, "name": "Xaurum", "network": "eth", "shortcut": "XAUR", @@ -11821,7 +11979,7 @@ "Github": "https://github.com/blitzpredict", "Homepage": "https://www.blitzpredict.io" }, - "marketcap_usd": 641955, + "marketcap_usd": 437037, "name": "BlitzPredict", "network": "eth", "shortcut": "XBP", @@ -11944,7 +12102,7 @@ "Github": "https://github.com/InkProtocol/", "Homepage": "https://paywithink.com" }, - "marketcap_usd": 3022492, + "marketcap_usd": 3260820, "name": "Ink Protocol", "network": "eth", "shortcut": "XNK", @@ -11961,7 +12119,7 @@ "links": { "Homepage": "https://xenon.network" }, - "marketcap_usd": 820895, + "marketcap_usd": 523596, "name": "XENON", "network": "eth", "shortcut": "XNN", @@ -12068,7 +12226,7 @@ "Github": "https://github.com/zapproject", "Homepage": "https://zap.store" }, - "marketcap_usd": 1982327, + "marketcap_usd": 2311632, "name": "ZAP", "network": "eth", "shortcut": "ZAP", @@ -12085,7 +12243,7 @@ "links": { "Homepage": "https://zsc.io/" }, - "marketcap_usd": 5199400, + "marketcap_usd": 5040822, "name": "Zeusshield", "network": "eth", "shortcut": "ZCS", @@ -12103,7 +12261,7 @@ "Github": "https://github.com/zilliqa", "Homepage": "https://www.zilliqa.com/" }, - "marketcap_usd": 324539255, + "marketcap_usd": 263113938, "name": "Zilliqa", "network": "eth", "shortcut": "ZIL", @@ -12120,7 +12278,7 @@ "links": { "Homepage": "https://www.zmine.com" }, - "marketcap_usd": 5189073, + "marketcap_usd": 3087926, "name": "ZMINE", "network": "eth", "shortcut": "ZMN", @@ -12155,7 +12313,7 @@ "Github": "https://github.com/carVertical", "Homepage": "https://www.carvertical.com" }, - "marketcap_usd": 4487210, + "marketcap_usd": 7750270, "name": "carVertical", "network": "eth", "shortcut": "cV", @@ -12243,7 +12401,7 @@ "Github": "https://github.com/eosdac", "Homepage": "https://eosdac.io/" }, - "marketcap_usd": 16657260, + "marketcap_usd": 15154876, "name": "eosDAC", "network": "eth", "shortcut": "eosDAC", @@ -12277,7 +12435,7 @@ "Github": "https://github.com/havven/havven", "Homepage": "https://www.havven.io" }, - "marketcap_usd": 1145127, + "marketcap_usd": 1278987, "name": "Havven-Backed USD Nomins (nUSD)", "network": "eth", "shortcut": "nUSD", @@ -12311,7 +12469,7 @@ "address": "0x8667559254241ddeD4d11392f868d72092765367", "hidden": 1, "links": {}, - "marketcap_usd": 250922293, + "marketcap_usd": 294655210, "name": "Aeternity", "network": "kov", "shortcut": "Aeternity", @@ -12498,7 +12656,7 @@ "links": { "Homepage": "https://www.qwark.io" }, - "marketcap_usd": 2070874, + "marketcap_usd": 1139944, "name": "QWARK", "network": "ubq", "shortcut": "QWARK", @@ -12531,7 +12689,7 @@ "links": { "Homepage": "https://akroma.io" }, - "marketcap_usd": 659035, + "marketcap_usd": 762477, "name": "Akroma", "shortcut": "AKA", "t1_enabled": "yes", @@ -12576,7 +12734,7 @@ "links": { "Homepage": "https://egem.io" }, - "marketcap_usd": 226818, + "marketcap_usd": 401551, "name": "EtherGem", "shortcut": "EGEM", "t1_enabled": "yes", @@ -12591,7 +12749,7 @@ "links": { "Homepage": "https://ellaism.org" }, - "marketcap_usd": 399803, + "marketcap_usd": 586263, "name": "Ellaism", "shortcut": "ELLA", "t1_enabled": "yes", @@ -12636,7 +12794,7 @@ "links": { "Homepage": "https://ethereumclassic.github.io" }, - "marketcap_usd": 1311425469, + "marketcap_usd": 1003877532, "name": "Ethereum Classic", "shortcut": "ETC", "t1_enabled": "yes", @@ -12651,7 +12809,7 @@ "links": { "Homepage": "https://www.ethereum.org" }, - "marketcap_usd": 28388275708, + "marketcap_usd": 20890272335, "name": "Ethereum", "shortcut": "ETH", "t1_enabled": "yes", @@ -12696,7 +12854,7 @@ "links": { "Homepage": "https://expanse.tech" }, - "marketcap_usd": 4756082, + "marketcap_usd": 2200792, "name": "Expanse", "shortcut": "EXP", "t1_enabled": "yes", @@ -12711,7 +12869,7 @@ "links": { "Homepage": "https://gochain.io" }, - "marketcap_usd": 28630365, + "marketcap_usd": 27582328, "name": "GoChain", "shortcut": "GO", "t1_enabled": "yes", @@ -12726,7 +12884,7 @@ "links": { "Homepage": "https://musicoin.org" }, - "marketcap_usd": 3332317, + "marketcap_usd": 4050875, "name": "Musicoin", "shortcut": "MUSIC", "t1_enabled": "yes", @@ -12741,7 +12899,7 @@ "links": { "Homepage": "https://pirl.io" }, - "marketcap_usd": 2675730, + "marketcap_usd": 2062763, "name": "Pirl", "shortcut": "PIRL", "t1_enabled": "yes", @@ -12771,7 +12929,7 @@ "links": { "Homepage": "https://ubiqsmart.com" }, - "marketcap_usd": 23935280, + "marketcap_usd": 21203852, "name": "Ubiq", "shortcut": "UBQ", "t1_enabled": "yes", @@ -12864,9 +13022,10 @@ }, "misc:ADA": { "links": { + "Github": "https://github.com/input-output-hk/cardano-sl", "Homepage": "https://www.cardano.org" }, - "marketcap_usd": 2545467697, + "marketcap_usd": 1937196644, "name": "Cardano", "shortcut": "ADA", "t1_enabled": "no", @@ -12875,9 +13034,10 @@ }, "misc:LSK": { "links": { + "Github": "https://github.com/LiskHQ/lisk", "Homepage": "https://lisk.io/" }, - "marketcap_usd": 500826972, + "marketcap_usd": 322410218, "name": "Lisk", "shortcut": "LSK", "t1_enabled": "no", @@ -12887,9 +13047,10 @@ "misc:ONT": { "hidden": 1, "links": { + "Github": "https://github.com/ontio/ontology", "Homepage": "https://ont.io" }, - "marketcap_usd": 437689972, + "marketcap_usd": 375993248, "name": "Ontology", "notes": "In development", "shortcut": "ONT", @@ -12899,9 +13060,10 @@ }, "misc:WAN": { "links": { + "Github": "https://github.com/wanchain/go-wanchain", "Homepage": "https://wanchain.org" }, - "marketcap_usd": 118518034, + "marketcap_usd": 105665038, "name": "Wanchain", "shortcut": "WAN", "t1_enabled": "yes", @@ -12910,9 +13072,10 @@ }, "misc:XLM": { "links": { + "Github": "https://github.com/stellar/stellar-core", "Homepage": "https://www.stellar.org" }, - "marketcap_usd": 4079796387, + "marketcap_usd": 4494854829, "name": "Stellar", "notes": "In development", "shortcut": "XLM", @@ -12922,9 +13085,10 @@ }, "misc:XMR": { "links": { + "Github": "https://github.com/monero-project/monero", "Homepage": "https://getmonero.org" }, - "marketcap_usd": 1598899682, + "marketcap_usd": 1709974258, "name": "Monero", "notes": "In development", "shortcut": "XMR", @@ -12934,9 +13098,10 @@ }, "misc:XRP": { "links": { + "Github": "https://github.com/ripple/rippled", "Homepage": "https://ripple.com" }, - "marketcap_usd": 13007985768, + "marketcap_usd": 18169122471, "name": "Ripple", "notes": "In development", "shortcut": "XRP", @@ -12946,9 +13111,10 @@ }, "misc:XTZ": { "links": { + "Github": "https://github.com/tezos/tezos", "Homepage": "https://tezos.com" }, - "marketcap_usd": 815753291, + "marketcap_usd": 788603746, "name": "Tezos", "notes": "In development", "shortcut": "XTZ", @@ -12974,7 +13140,7 @@ "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 6080704, + "marketcap_usd": 4712827, "name": "DIMCOIN", "shortcut": "DIM", "t1_enabled": "yes", @@ -12989,7 +13155,7 @@ "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 6080704, + "marketcap_usd": 4712827, "name": "DIM TOKEN", "shortcut": "DIMTOK", "t1_enabled": "yes", @@ -13031,7 +13197,7 @@ "links": { "Homepage": "https://nem.io" }, - "marketcap_usd": 919751906, + "marketcap_usd": 843408995, "name": "NEM", "shortcut": "XEM", "t1_enabled": "yes", @@ -13043,11 +13209,11 @@ } }, "info": { - "marketcap_usd": 171488211348, + "marketcap_usd": 153997231412, "t1_coins": 690, "t2_coins": 628, - "total_marketcap_usd": 221847925234, - "updated_at": 1535648346, - "updated_at_readable": "Thu Aug 30 18:59:06 2018" + "total_marketcap_usd": 207619196443, + "updated_at": 1539944224, + "updated_at_readable": "Fri Oct 19 12:17:04 2018" } } \ No newline at end of file From 586fe6c0c50abdd69e4f7667f0da2124ead34c6c Mon Sep 17 00:00:00 2001 From: Samad Sajanlal Date: Fri, 19 Oct 2018 05:39:01 -0500 Subject: [PATCH 602/767] add blockbook URL for GameCredits (#218) --- defs/bitcoin/gamecredits.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/defs/bitcoin/gamecredits.json b/defs/bitcoin/gamecredits.json index ba188721e..43cc86f26 100644 --- a/defs/bitcoin/gamecredits.json +++ b/defs/bitcoin/gamecredits.json @@ -33,6 +33,8 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [], - "blockbook": [], + "blockbook": [ + "https://blockbook.gamecredits.network" + ], "cooldown": 100 } From cf5347fd91aeba067bfd1bdebb76f71f050daf98 Mon Sep 17 00:00:00 2001 From: Gruve_p Date: Fri, 19 Oct 2018 12:39:43 +0200 Subject: [PATCH 603/767] Add blockbook URL's for GRS (#219) --- defs/bitcoin/groestlcoin.json | 7 +++++-- defs/bitcoin/groestlcoin_testnet.json | 4 +++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/defs/bitcoin/groestlcoin.json b/defs/bitcoin/groestlcoin.json index 8c8e9abe3..459e1d79c 100644 --- a/defs/bitcoin/groestlcoin.json +++ b/defs/bitcoin/groestlcoin.json @@ -33,8 +33,11 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [ - "https://groestlsight.groestlcoin.org" + "https://groestlsight.groestlcoin.org", + "https://grsblocks.com/" + ], + "blockbook": [ + "https://blockbook.groestlcoin.org" ], - "blockbook": [], "cooldown": 100 } diff --git a/defs/bitcoin/groestlcoin_testnet.json b/defs/bitcoin/groestlcoin_testnet.json index 42b031199..daf8fcb45 100644 --- a/defs/bitcoin/groestlcoin_testnet.json +++ b/defs/bitcoin/groestlcoin_testnet.json @@ -35,6 +35,8 @@ "bitcore": [ "https://groestlsight-test.groestlcoin.org" ], - "blockbook": [], + "blockbook": [ + "https://blockbook-test.groestlcoin.org" + ], "cooldown": 100 } From be699199b6b1bc53bb1ce25f5d3de7e6391d9c2f Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 19 Oct 2018 18:02:12 +0200 Subject: [PATCH 604/767] support: add support info --- defs/support.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/defs/support.json b/defs/support.json index 3264fae63..91aee0e42 100644 --- a/defs/support.json +++ b/defs/support.json @@ -61,6 +61,7 @@ "bitcoin:FJC": "1.6.1", "bitcoin:FLASH": "soon", "bitcoin:FTC": "soon", + "bitcoin:GAME": "1.7.1", "bitcoin:GRS": "1.6.2", "bitcoin:KOTO": "soon", "bitcoin:LTC": "1.5.2", @@ -937,6 +938,7 @@ "bitcoin:FJC": "2.0.5", "bitcoin:FLASH": "soon", "bitcoin:FTC": "soon", + "bitcoin:GAME": "2.0.8", "bitcoin:GRS": "2.0.8", "bitcoin:KOTO": "soon", "bitcoin:LTC": "2.0.5", @@ -1607,6 +1609,7 @@ "eth:tRSK": "2.0.7", "misc:ADA": "soon", "misc:LSK": "2.0.7", + "misc:ONT": "soon", "misc:WAN": "2.0.7", "misc:XLM": "soon", "misc:XMR": "soon", From aa452a5716515bd036c1677174f917a8004ac0f9 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 19 Oct 2018 18:02:27 +0200 Subject: [PATCH 605/767] fix gitignore --- .gitignore | 1 + protob/.gitignore | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index e08caae12..5ede1f0a2 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ defs/coins/tools/coindefs.json tools/coins.json tools/coindefs.json tools/coinmarketcap.json +proto.gv* diff --git a/protob/.gitignore b/protob/.gitignore index 47e83496f..c7a7b20ef 100644 --- a/protob/.gitignore +++ b/protob/.gitignore @@ -1,3 +1,2 @@ *.pb combined.proto -*.gv* From 8cabc077db6cf0e7c66e538d651cfd18e884e021 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 19 Oct 2018 18:02:40 +0200 Subject: [PATCH 606/767] nix: add shell.nix --- shell.nix | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 shell.nix diff --git a/shell.nix b/shell.nix new file mode 100644 index 000000000..784b04291 --- /dev/null +++ b/shell.nix @@ -0,0 +1,9 @@ +with import {}; + +let + myPython = python36.withPackages(p: [p.click p.graphviz p.trezor p.ed25519 p.pillow]) ; +in + stdenv.mkDerivation { + name = "trezor-common-dev"; + buildInputs = [ myPython python27Packages.demjson graphviz ]; + } From 11221cfe1cc5bda4d7b999517e92dd87ad00f2bc Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 19 Oct 2018 18:08:51 +0200 Subject: [PATCH 607/767] defs: fix grs backend uri --- defs/bitcoin/groestlcoin.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/defs/bitcoin/groestlcoin.json b/defs/bitcoin/groestlcoin.json index 459e1d79c..75e2fc275 100644 --- a/defs/bitcoin/groestlcoin.json +++ b/defs/bitcoin/groestlcoin.json @@ -34,7 +34,7 @@ "max_address_length": 34, "bitcore": [ "https://groestlsight.groestlcoin.org", - "https://grsblocks.com/" + "https://grsblocks.com" ], "blockbook": [ "https://blockbook.groestlcoin.org" From dacbc7260cc6c2c77001186d50a59ccbfb73dbb0 Mon Sep 17 00:00:00 2001 From: Tibor Arpas Date: Sat, 20 Oct 2018 09:57:02 +0200 Subject: [PATCH 608/767] defs: add Capricion --- defs/bitcoin/capricoin.json | 46 ++++++++++++++++++++++++++++++++++ defs/bitcoin/capricoin.png | Bin 0 -> 13847 bytes defs/support.json | 3 +++ protob/messages-bitcoin.proto | 2 ++ 4 files changed, 51 insertions(+) create mode 100644 defs/bitcoin/capricoin.json create mode 100644 defs/bitcoin/capricoin.png diff --git a/defs/bitcoin/capricoin.json b/defs/bitcoin/capricoin.json new file mode 100644 index 000000000..2eef0c926 --- /dev/null +++ b/defs/bitcoin/capricoin.json @@ -0,0 +1,46 @@ +{ + "coin_name": "Capricoin", + "coin_shortcut": "CPC", + "coin_label": "Capricoin", + "website": "https://capricoin.org", + "github": "https://github.com/Capricoinofficial/Capricoin", + "maintainer": "Tibor Arpas ", + "curve_name": "secp256k1", + "address_type": 28, + "address_type_p2sh": 35, + "maxfee_kb": 2000000, + "minfee_kb": 1000, + "signed_message_header": "Capricoin Signed Message:\n", + "hash_genesis_block": "000007abc632537def4bce0806ca008150b19363f887ad0cb5cf582804f8bc3d", + "xprv_magic": 76066276, + "xpub_magic": 76067358, + "xpub_magic_segwit_p2sh": 77429938, + "xpub_magic_segwit_native": 78792518, + "bech32_prefix": null, + "cashaddr_prefix": null, + "slip44": 289, + "segwit": false, + "decred": false, + "fork_id": null, + "force_bip143": false, + "bip115": false, + "default_fee_b": { + "Low": 1, + "Economy": 7, + "Normal": 14, + "High": 20 + }, + "dust_limit": 546, + "blocktime_seconds": 60, + "uri_prefix": "capricoin", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [], + "blockbook": [ + "https://blockbook.capricoin.org", + "https://blockbook2.capricoin.org", + "https://blockbook3.capricoin.org", + "https://blockbook4.capricoin.org" + ], + "cooldown": 100 +} diff --git a/defs/bitcoin/capricoin.png b/defs/bitcoin/capricoin.png new file mode 100644 index 0000000000000000000000000000000000000000..005e907bc6ce8084ca4101a629d59bee78711c8a GIT binary patch literal 13847 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 Z{|D5EO|{J|ki`H1002ovPDHLkV1i|P#nb=* literal 0 HcmV?d00001 diff --git a/defs/support.json b/defs/support.json index 91aee0e42..e36366bb9 100644 --- a/defs/support.json +++ b/defs/support.json @@ -4,6 +4,7 @@ "bitcoin:BCH": true, "bitcoin:BTC": true, "bitcoin:BTG": true, + "bitcoin:CPC": true, "bitcoin:DASH": true, "bitcoin:DOGE": true, "bitcoin:LTC": true, @@ -53,6 +54,7 @@ "bitcoin:BTC": "1.5.2", "bitcoin:BTCP": "1.6.2", "bitcoin:BTG": "1.6.2", + "bitcoin:CPC": "soon", "bitcoin:DASH": "1.5.2", "bitcoin:DCR": "1.6.2", "bitcoin:DGB": "1.6.0", @@ -930,6 +932,7 @@ "bitcoin:BTC": "2.0.5", "bitcoin:BTCP": "2.0.7", "bitcoin:BTG": "2.0.7", + "bitcoin:CPC": "soon", "bitcoin:DASH": "2.0.5", "bitcoin:DCR": "2.0.8", "bitcoin:DGB": "2.0.5", diff --git a/protob/messages-bitcoin.proto b/protob/messages-bitcoin.proto index 7b1f89f0c..67bd6a73c 100644 --- a/protob/messages-bitcoin.proto +++ b/protob/messages-bitcoin.proto @@ -130,6 +130,7 @@ message SignTx { optional uint32 expiry = 6; // only for Decred and Zcash optional bool overwintered = 7; // only for Zcash optional uint32 version_group_id = 8; // only for Zcash, nVersionGroupId when overwintered is set + optional uint32 timestamp = 9; // only for Capricoin, transaction timestamp } /** @@ -194,6 +195,7 @@ message TxAck { optional uint32 expiry = 10; // only for Decred and Zcash optional bool overwintered = 11; // only for Zcash optional uint32 version_group_id = 12; // only for Zcash, nVersionGroupId when overwintered is set + optional uint32 timestamp = 13; // only for Capricoin, transaction timestamp /** * Structure representing transaction input */ From b8acf0034a7442c327bc2ff261830c894de6b75e Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 24 Oct 2018 14:00:16 +0200 Subject: [PATCH 609/767] defs: new coins and tokens --- defs/ethereum/tokens | 2 +- defs/support.json | 180 ++++++++++++++++++++++++++++--------------- 2 files changed, 117 insertions(+), 65 deletions(-) diff --git a/defs/ethereum/tokens b/defs/ethereum/tokens index 0be9cc46c..9c1497580 160000 --- a/defs/ethereum/tokens +++ b/defs/ethereum/tokens @@ -1 +1 @@ -Subproject commit 0be9cc46c0702fff1c07cb13b5f9bc05b87e5b69 +Subproject commit 9c14975806392ad9324dc3d0850d7a5e2113ac84 diff --git a/defs/support.json b/defs/support.json index e36366bb9..bd6efe0af 100644 --- a/defs/support.json +++ b/defs/support.json @@ -54,38 +54,39 @@ "bitcoin:BTC": "1.5.2", "bitcoin:BTCP": "1.6.2", "bitcoin:BTG": "1.6.2", + "bitcoin:BTX": "1.7.1", "bitcoin:CPC": "soon", "bitcoin:DASH": "1.5.2", "bitcoin:DCR": "1.6.2", "bitcoin:DGB": "1.6.0", - "bitcoin:DNR": "soon", + "bitcoin:DNR": "1.7.1", "bitcoin:DOGE": "1.5.2", "bitcoin:FJC": "1.6.1", - "bitcoin:FLASH": "soon", - "bitcoin:FTC": "soon", + "bitcoin:FLASH": "1.7.1", + "bitcoin:FTC": "1.7.1", "bitcoin:GAME": "1.7.1", "bitcoin:GRS": "1.6.2", - "bitcoin:KOTO": "soon", + "bitcoin:KOTO": "1.7.1", "bitcoin:LTC": "1.5.2", "bitcoin:MONA": "1.6.0", - "bitcoin:MUE": "soon", + "bitcoin:MUE": "1.7.1", "bitcoin:NMC": "1.5.2", - "bitcoin:PTC": "soon", - "bitcoin:SMART": "soon", + "bitcoin:PTC": "1.7.1", + "bitcoin:SMART": "1.7.1", "bitcoin:TAZ": "1.6.2", "bitcoin:TBCH": "1.6.2", - "bitcoin:TBTG": "soon", + "bitcoin:TBTG": "1.7.1", "bitcoin:TDCR": "1.6.2", "bitcoin:TEST": "1.5.2", "bitcoin:TLTC": "1.6.2", "bitcoin:VIA": "1.6.2", "bitcoin:VTC": "1.6.1", - "bitcoin:XMY": "soon", + "bitcoin:XMY": "1.7.1", "bitcoin:XZC": "1.6.2", "bitcoin:ZEC": "1.6.2", "bitcoin:tDASH": "1.6.2", "bitcoin:tGRS": "1.6.2", - "bitcoin:tSMART": "soon", + "bitcoin:tSMART": "1.7.1", "bitcoin:tXZC": "1.6.2", "erc20:ella:MINING": "1.6.2", "erc20:etc:BEC": "1.6.2", @@ -99,7 +100,6 @@ "erc20:eth:2DC": "1.6.2", "erc20:eth:300": "1.6.2", "erc20:eth:3LT": "1.6.3", - "erc20:eth:A18": "1.6.2", "erc20:eth:ABT": "1.6.2", "erc20:eth:ABYSS": "1.6.2", "erc20:eth:ACC": "1.6.2", @@ -172,7 +172,6 @@ "erc20:eth:BMT": "1.6.2", "erc20:eth:BMX": "1.6.2", "erc20:eth:BNB": "1.6.2", - "erc20:eth:BNC": "1.6.2", "erc20:eth:BNFT": "1.6.2", "erc20:eth:BNT": "1.6.2", "erc20:eth:BNTY": "1.6.2", @@ -180,7 +179,6 @@ "erc20:eth:BON": "1.6.2", "erc20:eth:BOP": "1.6.2", "erc20:eth:BOU": "1.6.2", - "erc20:eth:BOX": "1.6.3", "erc20:eth:BPT": "1.6.2", "erc20:eth:BQX": "1.6.2", "erc20:eth:BRAT": "1.6.2", @@ -307,12 +305,10 @@ "erc20:eth:EAGLE": "1.6.2", "erc20:eth:ECN": "1.6.2", "erc20:eth:ECO2": "1.6.2", - "erc20:eth:ECP": "1.6.3", "erc20:eth:EDC": "1.6.2", "erc20:eth:EDG": "1.6.2", "erc20:eth:EDO": "1.6.2", "erc20:eth:EDR": "1.6.3", - "erc20:eth:EGT": "1.6.2", "erc20:eth:EHT": "1.6.2", "erc20:eth:ELF": "1.6.2", "erc20:eth:ELIX": "1.6.2", @@ -335,7 +331,6 @@ "erc20:eth:ETR": "1.6.2", "erc20:eth:EURT": "1.6.2", "erc20:eth:EVE": "1.6.2", - "erc20:eth:EVN": "1.6.2", "erc20:eth:EVX": "1.6.2", "erc20:eth:EXMR": "1.6.2", "erc20:eth:EXY": "1.6.3", @@ -408,7 +403,6 @@ "erc20:eth:IIC": "1.6.2", "erc20:eth:IKB": "1.6.2", "erc20:eth:IMC": "1.6.2", - "erc20:eth:IMT": "1.6.2", "erc20:eth:IND": "1.6.2", "erc20:eth:INRM": "1.6.2", "erc20:eth:INS": "1.6.2", @@ -472,7 +466,6 @@ "erc20:eth:MCI": "1.6.2", "erc20:eth:MCO": "1.6.2", "erc20:eth:MDA": "1.6.2", - "erc20:eth:MESH": "1.6.2", "erc20:eth:MEST": "1.6.2", "erc20:eth:MFG": "1.6.2", "erc20:eth:MFT": "1.6.3", @@ -536,13 +529,11 @@ "erc20:eth:PAL": "1.6.2", "erc20:eth:PARETO": "1.6.2", "erc20:eth:PASS": "1.6.3", - "erc20:eth:PAT": "1.6.2", "erc20:eth:PATENTS": "1.6.2", "erc20:eth:PATH": "1.6.2", "erc20:eth:PAY": "1.6.2", "erc20:eth:PBL": "1.6.2", "erc20:eth:PBT": "1.6.2", - "erc20:eth:PCH": "1.6.2", "erc20:eth:PCL": "1.6.2", "erc20:eth:PCLOLD": "1.6.2", "erc20:eth:PEG": "1.6.3", @@ -567,7 +558,6 @@ "erc20:eth:PRE": "1.6.2", "erc20:eth:PRG": "1.6.2", "erc20:eth:PRL": "1.6.2", - "erc20:eth:PRO": "1.6.2", "erc20:eth:PRON": "1.6.2", "erc20:eth:PRS": "1.6.2", "erc20:eth:PRSP": "1.6.2", @@ -589,7 +579,6 @@ "erc20:eth:RAO": "1.6.2", "erc20:eth:RBLX": "1.6.2", "erc20:eth:RCN": "1.6.2", - "erc20:eth:RCT": "1.6.2", "erc20:eth:REA": "1.6.2", "erc20:eth:REBL": "1.6.2", "erc20:eth:RED": "1.6.2", @@ -598,7 +587,6 @@ "erc20:eth:REQ": "1.6.2", "erc20:eth:REX": "1.6.2", "erc20:eth:RFR": "1.6.2", - "erc20:eth:RING": "1.6.3", "erc20:eth:RIPT": "1.6.2", "erc20:eth:RLC": "1.6.2", "erc20:eth:RLT": "1.6.2", @@ -673,7 +661,6 @@ "erc20:eth:TFL": "1.6.2", "erc20:eth:THETA": "1.6.2", "erc20:eth:THUG": "1.6.2", - "erc20:eth:TICO": "1.6.3", "erc20:eth:TIME": "1.6.2", "erc20:eth:TIO": "1.6.2", "erc20:eth:TIX": "1.6.2", @@ -708,7 +695,6 @@ "erc20:eth:VLD": "1.6.2", "erc20:eth:VOC": "1.6.2", "erc20:eth:VOISE": "1.6.2", - "erc20:eth:VRS": "1.6.2", "erc20:eth:VSL": "1.6.2", "erc20:eth:WAX": "1.6.2", "erc20:eth:WBA": "1.6.2", @@ -720,7 +706,6 @@ "erc20:eth:WINGS": "1.6.2", "erc20:eth:WMK": "1.6.3", "erc20:eth:WNK": "1.6.3", - "erc20:eth:WORK": "1.6.2", "erc20:eth:WPC": "1.6.2", "erc20:eth:WPR": "1.6.2", "erc20:eth:WRK": "1.6.2", @@ -794,7 +779,7 @@ "eth:tROP": "1.6.2", "eth:tRSK": "1.6.2", "misc:WAN": "1.6.3", - "misc:XLM": "soon", + "misc:XLM": "1.7.1", "nem:BREEZE": "1.6.2", "nem:DIM": "1.6.2", "nem:DIMTOK": "1.6.2", @@ -803,23 +788,30 @@ "nem:XEM": "1.6.2" }, "unsupported": { - "bitcoin:BTX": "address_type collides with Bitcoin", "bitcoin:CRW": "address_type collides with Bitcoin", "bitcoin:TRC": "address_type collides with Bitcoin", "bitcoin:ZEN": "not implemented on T1", "erc20:etc:PLAY": "(AUTO) duplicate key", + "erc20:eth:A18:0": "(AUTO) duplicate key", + "erc20:eth:A18:1": "(AUTO) duplicate key", "erc20:eth:ATH": "(AUTO) duplicate key", "erc20:eth:ATH (AIgatha Token)": "(AUTO) duplicate key", + "erc20:eth:BNC:0": "(AUTO) duplicate key", + "erc20:eth:BNC:1": "(AUTO) duplicate key", + "erc20:eth:BOX:0": "(AUTO) duplicate key", + "erc20:eth:BOX:1": "(AUTO) duplicate key", "erc20:eth:BTL (Battle)": "(AUTO) duplicate key", "erc20:eth:BTL (Bitlle)": "(AUTO) duplicate key", "erc20:eth:CAR": "(AUTO) duplicate key", "erc20:eth:CAR (CarBlock)": "(AUTO) duplicate key", "erc20:eth:CARD:0": "(AUTO) duplicate key", "erc20:eth:CARD:1": "(AUTO) duplicate key", + "erc20:eth:CARD:2": "(AUTO) duplicate key", "erc20:eth:CDX:0": "(AUTO) duplicate key", "erc20:eth:CDX:1": "(AUTO) duplicate key", "erc20:eth:COSS:0": "(AUTO) duplicate key", "erc20:eth:COSS:1": "(AUTO) duplicate key", + "erc20:eth:CPC": "(AUTO) duplicate key", "erc20:eth:DAI": "(AUTO) duplicate key", "erc20:eth:DEPO": "(AUTO) duplicate key", "erc20:eth:DEPO (Depository Network)": "(AUTO) duplicate key", @@ -834,8 +826,15 @@ "erc20:eth:DTx": "(AUTO) duplicate key", "erc20:eth:DUBI:0": "(AUTO) duplicate key", "erc20:eth:DUBI:1": "(AUTO) duplicate key", + "erc20:eth:DUBI:2": "(AUTO) duplicate key", + "erc20:eth:ECP:0": "(AUTO) duplicate key", + "erc20:eth:ECP:1": "(AUTO) duplicate key", "erc20:eth:EDU:0": "(AUTO) duplicate key", "erc20:eth:EDU:1": "(AUTO) duplicate key", + "erc20:eth:EGT:0": "(AUTO) duplicate key", + "erc20:eth:EGT:1": "(AUTO) duplicate key", + "erc20:eth:EVN:0": "(AUTO) duplicate key", + "erc20:eth:EVN:1": "(AUTO) duplicate key", "erc20:eth:FANX:0": "(AUTO) duplicate key", "erc20:eth:FANX:1": "(AUTO) duplicate key", "erc20:eth:FLMC:0": "(AUTO) duplicate key", @@ -851,17 +850,23 @@ "erc20:eth:HOT:1": "(AUTO) duplicate key", "erc20:eth:Hdp": "(AUTO) duplicate key", "erc20:eth:Hdp.\u0444": "(AUTO) duplicate key", + "erc20:eth:IMT:0": "(AUTO) duplicate key", + "erc20:eth:IMT:1": "(AUTO) duplicate key", "erc20:eth:JBX:0": "(AUTO) duplicate key", "erc20:eth:JBX:1": "(AUTO) duplicate key", "erc20:eth:KC": "(AUTO) duplicate key", "erc20:eth:KEY:0": "(AUTO) duplicate key", "erc20:eth:KEY:1": "(AUTO) duplicate key", + "erc20:eth:LCT:0": "(AUTO) duplicate key", + "erc20:eth:LCT:1": "(AUTO) duplicate key", "erc20:eth:LEMO:0": "(AUTO) duplicate key", "erc20:eth:LEMO:1": "(AUTO) duplicate key", "erc20:eth:LEMO:2": "(AUTO) duplicate key", "erc20:eth:LINK Platform": "(AUTO) duplicate key", "erc20:eth:LNC": "(AUTO) duplicate key", "erc20:eth:LNC (Linker Coin)": "(AUTO) duplicate key", + "erc20:eth:MESH:0": "(AUTO) duplicate key", + "erc20:eth:MESH:1": "(AUTO) duplicate key", "erc20:eth:MIT": "(AUTO) duplicate key", "erc20:eth:MIT (Mychatcoin)": "(AUTO) duplicate key", "erc20:eth:MKR": "(AUTO) duplicate key", @@ -869,18 +874,31 @@ "erc20:eth:MTC:0": "(AUTO) duplicate key", "erc20:eth:MTC:1": "(AUTO) duplicate key", "erc20:eth:NONE": "(AUTO) duplicate key", + "erc20:eth:NTK:0": "(AUTO) duplicate key", + "erc20:eth:NTK:1": "(AUTO) duplicate key", "erc20:eth:NXX OLD": "(AUTO) duplicate key", "erc20:eth:OHNI:0": "(AUTO) duplicate key", "erc20:eth:OHNI:1": "(AUTO) duplicate key", "erc20:eth:OPEN:0": "(AUTO) duplicate key", "erc20:eth:OPEN:1": "(AUTO) duplicate key", + "erc20:eth:PAT:0": "(AUTO) duplicate key", + "erc20:eth:PAT:1": "(AUTO) duplicate key", + "erc20:eth:PCH:0": "(AUTO) duplicate key", + "erc20:eth:PCH:1": "(AUTO) duplicate key", "erc20:eth:PLAY": "(AUTO) duplicate key", + "erc20:eth:PRO:0": "(AUTO) duplicate key", + "erc20:eth:PRO:1": "(AUTO) duplicate key", "erc20:eth:PRPS:0": "(AUTO) duplicate key", "erc20:eth:PRPS:1": "(AUTO) duplicate key", + "erc20:eth:PRPS:2": "(AUTO) duplicate key", "erc20:eth:PTC": "(AUTO) duplicate key", + "erc20:eth:RCT:0": "(AUTO) duplicate key", + "erc20:eth:RCT:1": "(AUTO) duplicate key", "erc20:eth:RDN": "(AUTO) duplicate key", "erc20:eth:REP:0": "(AUTO) duplicate key", "erc20:eth:REP:1": "(AUTO) duplicate key", + "erc20:eth:RING:0": "(AUTO) duplicate key", + "erc20:eth:RING:1": "(AUTO) duplicate key", "erc20:eth:SGT:0": "(AUTO) duplicate key", "erc20:eth:SGT:1": "(AUTO) duplicate key", "erc20:eth:SKRP:0": "(AUTO) duplicate key", @@ -892,16 +910,22 @@ "erc20:eth:SMT:2": "(AUTO) duplicate key", "erc20:eth:SS:0": "(AUTO) duplicate key", "erc20:eth:SS:1": "(AUTO) duplicate key", + "erc20:eth:TICO:0": "(AUTO) duplicate key", + "erc20:eth:TICO:1": "(AUTO) duplicate key", "erc20:eth:TRC": "(AUTO) duplicate key", "erc20:eth:UMKA:0": "(AUTO) duplicate key", "erc20:eth:UMKA:1": "(AUTO) duplicate key", "erc20:eth:VIBEX:0": "(AUTO) duplicate key", "erc20:eth:VIBEX:1": "(AUTO) duplicate key", + "erc20:eth:VRS:0": "(AUTO) duplicate key", + "erc20:eth:VRS:1": "(AUTO) duplicate key", "erc20:eth:WHO:0": "(AUTO) duplicate key", "erc20:eth:WHO:1": "(AUTO) duplicate key", "erc20:eth:WIC": "(AUTO) duplicate key", "erc20:eth:WOLK:0": "(AUTO) duplicate key", "erc20:eth:WOLK:1": "(AUTO) duplicate key", + "erc20:eth:WORK:0": "(AUTO) duplicate key", + "erc20:eth:WORK:1": "(AUTO) duplicate key", "erc20:eth:WiC": "(AUTO) duplicate key", "erc20:eth:YEED:0": "(AUTO) duplicate key", "erc20:eth:YEED:1": "(AUTO) duplicate key", @@ -920,7 +944,7 @@ "erc20:rop:NONE": "(AUTO) duplicate key", "misc:ADA": "not implemented on T1", "misc:LSK": "not implemented on T1", - "misc:ONT": "not planned on T1", + "misc:ONT": "not implemented on T1", "misc:XMR": "not implemented on T1", "misc:XRP": "not implemented on T1", "misc:XTZ": "not implemented on T1" @@ -932,39 +956,40 @@ "bitcoin:BTC": "2.0.5", "bitcoin:BTCP": "2.0.7", "bitcoin:BTG": "2.0.7", + "bitcoin:BTX": "2.0.8", "bitcoin:CPC": "soon", "bitcoin:DASH": "2.0.5", "bitcoin:DCR": "2.0.8", "bitcoin:DGB": "2.0.5", - "bitcoin:DNR": "soon", + "bitcoin:DNR": "2.0.8", "bitcoin:DOGE": "2.0.5", "bitcoin:FJC": "2.0.5", - "bitcoin:FLASH": "soon", - "bitcoin:FTC": "soon", + "bitcoin:FLASH": "2.0.8", + "bitcoin:FTC": "2.0.8", "bitcoin:GAME": "2.0.8", "bitcoin:GRS": "2.0.8", - "bitcoin:KOTO": "soon", + "bitcoin:KOTO": "2.0.8", "bitcoin:LTC": "2.0.5", "bitcoin:MONA": "2.0.5", - "bitcoin:MUE": "soon", + "bitcoin:MUE": "2.0.8", "bitcoin:NMC": "2.0.5", - "bitcoin:PTC": "soon", - "bitcoin:SMART": "soon", + "bitcoin:PTC": "2.0.8", + "bitcoin:SMART": "2.0.8", "bitcoin:TAZ": "2.0.7", "bitcoin:TBCH": "2.0.7", - "bitcoin:TBTG": "soon", + "bitcoin:TBTG": "2.0.8", "bitcoin:TDCR": "2.0.8", "bitcoin:TEST": "2.0.5", "bitcoin:TLTC": "2.0.7", "bitcoin:VIA": "2.0.7", "bitcoin:VTC": "2.0.5", - "bitcoin:XMY": "soon", + "bitcoin:XMY": "2.0.8", "bitcoin:XZC": "2.0.7", "bitcoin:ZEC": "2.0.7", "bitcoin:ZEN": "2.0.8", - "bitcoin:tDASH": "soon", + "bitcoin:tDASH": "2.0.8", "bitcoin:tGRS": "2.0.8", - "bitcoin:tSMART": "soon", + "bitcoin:tSMART": "2.0.8", "bitcoin:tXZC": "2.0.7", "erc20:ella:MINING": "2.0.7", "erc20:etc:BEC": "2.0.7", @@ -976,7 +1001,6 @@ "erc20:eth:1WO": "2.0.7", "erc20:eth:2DC": "2.0.7", "erc20:eth:300": "2.0.7", - "erc20:eth:A18": "2.0.7", "erc20:eth:ABT": "2.0.7", "erc20:eth:ABYSS": "2.0.7", "erc20:eth:ACC": "2.0.7", @@ -1045,7 +1069,6 @@ "erc20:eth:BMT": "2.0.7", "erc20:eth:BMX": "2.0.7", "erc20:eth:BNB": "2.0.7", - "erc20:eth:BNC": "2.0.7", "erc20:eth:BNFT": "2.0.7", "erc20:eth:BNT": "2.0.7", "erc20:eth:BNTY": "2.0.7", @@ -1167,7 +1190,6 @@ "erc20:eth:EDC": "2.0.7", "erc20:eth:EDG": "2.0.7", "erc20:eth:EDO": "2.0.7", - "erc20:eth:EGT": "2.0.7", "erc20:eth:EHT": "2.0.7", "erc20:eth:ELF": "2.0.7", "erc20:eth:ELIX": "2.0.7", @@ -1189,7 +1211,6 @@ "erc20:eth:ETR": "2.0.7", "erc20:eth:EURT": "2.0.7", "erc20:eth:EVE": "2.0.7", - "erc20:eth:EVN": "2.0.7", "erc20:eth:EVX": "2.0.7", "erc20:eth:EXMR": "2.0.7", "erc20:eth:FAM": "2.0.7", @@ -1254,7 +1275,6 @@ "erc20:eth:IIC": "2.0.7", "erc20:eth:IKB": "2.0.7", "erc20:eth:IMC": "2.0.7", - "erc20:eth:IMT": "2.0.7", "erc20:eth:IND": "2.0.7", "erc20:eth:INRM": "2.0.7", "erc20:eth:INS": "2.0.7", @@ -1314,7 +1334,6 @@ "erc20:eth:MCI": "2.0.7", "erc20:eth:MCO": "2.0.7", "erc20:eth:MDA": "2.0.7", - "erc20:eth:MESH": "2.0.7", "erc20:eth:MEST": "2.0.7", "erc20:eth:MFG": "2.0.7", "erc20:eth:MGO": "2.0.7", @@ -1369,13 +1388,11 @@ "erc20:eth:Ox Fina": "2.0.7", "erc20:eth:PAL": "2.0.7", "erc20:eth:PARETO": "2.0.7", - "erc20:eth:PAT": "2.0.7", "erc20:eth:PATENTS": "2.0.7", "erc20:eth:PATH": "2.0.7", "erc20:eth:PAY": "2.0.7", "erc20:eth:PBL": "2.0.7", "erc20:eth:PBT": "2.0.7", - "erc20:eth:PCH": "2.0.7", "erc20:eth:PCL": "2.0.7", "erc20:eth:PCLOLD": "2.0.7", "erc20:eth:PET": "2.0.7", @@ -1398,7 +1415,6 @@ "erc20:eth:PRE": "2.0.7", "erc20:eth:PRG": "2.0.7", "erc20:eth:PRL": "2.0.7", - "erc20:eth:PRO": "2.0.7", "erc20:eth:PRON": "2.0.7", "erc20:eth:PRS": "2.0.7", "erc20:eth:PRSP": "2.0.7", @@ -1418,7 +1434,6 @@ "erc20:eth:RAO": "2.0.7", "erc20:eth:RBLX": "2.0.7", "erc20:eth:RCN": "2.0.7", - "erc20:eth:RCT": "2.0.7", "erc20:eth:REA": "2.0.7", "erc20:eth:REBL": "2.0.7", "erc20:eth:RED": "2.0.7", @@ -1529,7 +1544,6 @@ "erc20:eth:VLD": "2.0.7", "erc20:eth:VOC": "2.0.7", "erc20:eth:VOISE": "2.0.7", - "erc20:eth:VRS": "2.0.7", "erc20:eth:VSL": "2.0.7", "erc20:eth:WAX": "2.0.7", "erc20:eth:WBA": "2.0.7", @@ -1539,7 +1553,6 @@ "erc20:eth:WHEN": "2.0.7", "erc20:eth:WILD": "2.0.7", "erc20:eth:WINGS": "2.0.7", - "erc20:eth:WORK": "2.0.7", "erc20:eth:WPC": "2.0.7", "erc20:eth:WPR": "2.0.7", "erc20:eth:WRK": "2.0.7", @@ -1588,21 +1601,21 @@ "erc20:ubq:DOT": "2.0.7", "erc20:ubq:QWARK": "2.0.7", "erc20:ubq:RICKS": "2.0.7", - "eth:AKA": "soon", - "eth:ATH": "soon", + "eth:AKA": "2.0.8", + "eth:ATH": "2.0.8", "eth:CLO": "2.0.7", "eth:EGEM": "2.0.7", "eth:ELLA": "2.0.7", "eth:EOSC": "2.0.7", - "eth:ESN": "soon", + "eth:ESN": "2.0.8", "eth:ETC": "2.0.7", "eth:ETH": "2.0.7", - "eth:ETHO": "soon", + "eth:ETHO": "2.0.8", "eth:ETSC": "2.0.7", "eth:EXP": "2.0.7", "eth:GO": "2.0.7", - "eth:MUSIC": "soon", - "eth:PIRL": "soon", + "eth:MUSIC": "2.0.8", + "eth:PIRL": "2.0.8", "eth:RSK": "2.0.7", "eth:UBQ": "2.0.7", "eth:tETC": "2.0.7", @@ -1610,14 +1623,14 @@ "eth:tRIN": "2.0.7", "eth:tROP": "2.0.7", "eth:tRSK": "2.0.7", - "misc:ADA": "soon", + "misc:ADA": "2.0.8", "misc:LSK": "2.0.7", "misc:ONT": "soon", "misc:WAN": "2.0.7", - "misc:XLM": "soon", - "misc:XMR": "soon", - "misc:XRP": "soon", - "misc:XTZ": "soon", + "misc:XLM": "2.0.8", + "misc:XMR": "2.0.8", + "misc:XRP": "2.0.8", + "misc:XTZ": "2.0.8", "nem:BREEZE": "2.0.7", "nem:DIM": "2.0.7", "nem:DIMTOK": "2.0.7", @@ -1626,22 +1639,29 @@ "nem:XEM": "2.0.7" }, "unsupported": { - "bitcoin:BTX": "address_type collides with Bitcoin", "bitcoin:CRW": "address_type collides with Bitcoin", "bitcoin:TRC": "address_type collides with Bitcoin", "erc20:etc:PLAY": "(AUTO) duplicate key", + "erc20:eth:A18:0": "(AUTO) duplicate key", + "erc20:eth:A18:1": "(AUTO) duplicate key", "erc20:eth:ATH": "(AUTO) duplicate key", "erc20:eth:ATH (AIgatha Token)": "(AUTO) duplicate key", + "erc20:eth:BNC:0": "(AUTO) duplicate key", + "erc20:eth:BNC:1": "(AUTO) duplicate key", + "erc20:eth:BOX:0": "(AUTO) duplicate key", + "erc20:eth:BOX:1": "(AUTO) duplicate key", "erc20:eth:BTL (Battle)": "(AUTO) duplicate key", "erc20:eth:BTL (Bitlle)": "(AUTO) duplicate key", "erc20:eth:CAR": "(AUTO) duplicate key", "erc20:eth:CAR (CarBlock)": "(AUTO) duplicate key", "erc20:eth:CARD:0": "(AUTO) duplicate key", "erc20:eth:CARD:1": "(AUTO) duplicate key", + "erc20:eth:CARD:2": "(AUTO) duplicate key", "erc20:eth:CDX:0": "(AUTO) duplicate key", "erc20:eth:CDX:1": "(AUTO) duplicate key", "erc20:eth:COSS:0": "(AUTO) duplicate key", "erc20:eth:COSS:1": "(AUTO) duplicate key", + "erc20:eth:CPC": "(AUTO) duplicate key", "erc20:eth:DAI": "(AUTO) duplicate key", "erc20:eth:DEPO": "(AUTO) duplicate key", "erc20:eth:DEPO (Depository Network)": "(AUTO) duplicate key", @@ -1656,8 +1676,15 @@ "erc20:eth:DTx": "(AUTO) duplicate key", "erc20:eth:DUBI:0": "(AUTO) duplicate key", "erc20:eth:DUBI:1": "(AUTO) duplicate key", + "erc20:eth:DUBI:2": "(AUTO) duplicate key", + "erc20:eth:ECP:0": "(AUTO) duplicate key", + "erc20:eth:ECP:1": "(AUTO) duplicate key", "erc20:eth:EDU:0": "(AUTO) duplicate key", "erc20:eth:EDU:1": "(AUTO) duplicate key", + "erc20:eth:EGT:0": "(AUTO) duplicate key", + "erc20:eth:EGT:1": "(AUTO) duplicate key", + "erc20:eth:EVN:0": "(AUTO) duplicate key", + "erc20:eth:EVN:1": "(AUTO) duplicate key", "erc20:eth:FANX:0": "(AUTO) duplicate key", "erc20:eth:FANX:1": "(AUTO) duplicate key", "erc20:eth:FLMC:0": "(AUTO) duplicate key", @@ -1673,17 +1700,23 @@ "erc20:eth:HOT:1": "(AUTO) duplicate key", "erc20:eth:Hdp": "(AUTO) duplicate key", "erc20:eth:Hdp.\u0444": "(AUTO) duplicate key", + "erc20:eth:IMT:0": "(AUTO) duplicate key", + "erc20:eth:IMT:1": "(AUTO) duplicate key", "erc20:eth:JBX:0": "(AUTO) duplicate key", "erc20:eth:JBX:1": "(AUTO) duplicate key", "erc20:eth:KC": "(AUTO) duplicate key", "erc20:eth:KEY:0": "(AUTO) duplicate key", "erc20:eth:KEY:1": "(AUTO) duplicate key", + "erc20:eth:LCT:0": "(AUTO) duplicate key", + "erc20:eth:LCT:1": "(AUTO) duplicate key", "erc20:eth:LEMO:0": "(AUTO) duplicate key", "erc20:eth:LEMO:1": "(AUTO) duplicate key", "erc20:eth:LEMO:2": "(AUTO) duplicate key", "erc20:eth:LINK Platform": "(AUTO) duplicate key", "erc20:eth:LNC": "(AUTO) duplicate key", "erc20:eth:LNC (Linker Coin)": "(AUTO) duplicate key", + "erc20:eth:MESH:0": "(AUTO) duplicate key", + "erc20:eth:MESH:1": "(AUTO) duplicate key", "erc20:eth:MIT": "(AUTO) duplicate key", "erc20:eth:MIT (Mychatcoin)": "(AUTO) duplicate key", "erc20:eth:MKR": "(AUTO) duplicate key", @@ -1691,18 +1724,31 @@ "erc20:eth:MTC:0": "(AUTO) duplicate key", "erc20:eth:MTC:1": "(AUTO) duplicate key", "erc20:eth:NONE": "(AUTO) duplicate key", + "erc20:eth:NTK:0": "(AUTO) duplicate key", + "erc20:eth:NTK:1": "(AUTO) duplicate key", "erc20:eth:NXX OLD": "(AUTO) duplicate key", "erc20:eth:OHNI:0": "(AUTO) duplicate key", "erc20:eth:OHNI:1": "(AUTO) duplicate key", "erc20:eth:OPEN:0": "(AUTO) duplicate key", "erc20:eth:OPEN:1": "(AUTO) duplicate key", + "erc20:eth:PAT:0": "(AUTO) duplicate key", + "erc20:eth:PAT:1": "(AUTO) duplicate key", + "erc20:eth:PCH:0": "(AUTO) duplicate key", + "erc20:eth:PCH:1": "(AUTO) duplicate key", "erc20:eth:PLAY": "(AUTO) duplicate key", + "erc20:eth:PRO:0": "(AUTO) duplicate key", + "erc20:eth:PRO:1": "(AUTO) duplicate key", "erc20:eth:PRPS:0": "(AUTO) duplicate key", "erc20:eth:PRPS:1": "(AUTO) duplicate key", + "erc20:eth:PRPS:2": "(AUTO) duplicate key", "erc20:eth:PTC": "(AUTO) duplicate key", + "erc20:eth:RCT:0": "(AUTO) duplicate key", + "erc20:eth:RCT:1": "(AUTO) duplicate key", "erc20:eth:RDN": "(AUTO) duplicate key", "erc20:eth:REP:0": "(AUTO) duplicate key", "erc20:eth:REP:1": "(AUTO) duplicate key", + "erc20:eth:RING:0": "(AUTO) duplicate key", + "erc20:eth:RING:1": "(AUTO) duplicate key", "erc20:eth:SGT:0": "(AUTO) duplicate key", "erc20:eth:SGT:1": "(AUTO) duplicate key", "erc20:eth:SKRP:0": "(AUTO) duplicate key", @@ -1714,16 +1760,22 @@ "erc20:eth:SMT:2": "(AUTO) duplicate key", "erc20:eth:SS:0": "(AUTO) duplicate key", "erc20:eth:SS:1": "(AUTO) duplicate key", + "erc20:eth:TICO:0": "(AUTO) duplicate key", + "erc20:eth:TICO:1": "(AUTO) duplicate key", "erc20:eth:TRC": "(AUTO) duplicate key", "erc20:eth:UMKA:0": "(AUTO) duplicate key", "erc20:eth:UMKA:1": "(AUTO) duplicate key", "erc20:eth:VIBEX:0": "(AUTO) duplicate key", "erc20:eth:VIBEX:1": "(AUTO) duplicate key", + "erc20:eth:VRS:0": "(AUTO) duplicate key", + "erc20:eth:VRS:1": "(AUTO) duplicate key", "erc20:eth:WHO:0": "(AUTO) duplicate key", "erc20:eth:WHO:1": "(AUTO) duplicate key", "erc20:eth:WIC": "(AUTO) duplicate key", "erc20:eth:WOLK:0": "(AUTO) duplicate key", "erc20:eth:WOLK:1": "(AUTO) duplicate key", + "erc20:eth:WORK:0": "(AUTO) duplicate key", + "erc20:eth:WORK:1": "(AUTO) duplicate key", "erc20:eth:WiC": "(AUTO) duplicate key", "erc20:eth:YEED:0": "(AUTO) duplicate key", "erc20:eth:YEED:1": "(AUTO) duplicate key", From aa332e417de9a615be89bda587233e041fc81883 Mon Sep 17 00:00:00 2001 From: Traysi Date: Fri, 26 Oct 2018 07:59:59 -0500 Subject: [PATCH 610/767] Add Ravencoin (RVN) support --- defs/bitcoin/ravencoin.json | 40 ++++++++++++++++++++++++++++++++++++ defs/bitcoin/ravencoin.png | Bin 0 -> 3685 bytes 2 files changed, 40 insertions(+) create mode 100644 defs/bitcoin/ravencoin.json create mode 100644 defs/bitcoin/ravencoin.png diff --git a/defs/bitcoin/ravencoin.json b/defs/bitcoin/ravencoin.json new file mode 100644 index 000000000..d0789b9b4 --- /dev/null +++ b/defs/bitcoin/ravencoin.json @@ -0,0 +1,40 @@ +{ + "coin_name": "Ravencoin", + "coin_shortcut": "RVN", + "coin_label": "Ravencoin", + "website": "https://ravencoin.org/", + "github": "https://github.com/RavenProject/Ravencoin", + "maintainer": "Tron Black ", + "curve_name": "secp256k1", + "address_type": 60, + "address_type_p2sh": 122, + "maxfee_kb": 2000000, + "minfee_kb": 1000, + "signed_message_header": "Ravencoin Signed Message:\n", + "hash_genesis_block": "0000006b444bc2f2ffe627be9d9e7e7a0730000870ef6eb6da46c8eae389df90", + "xprv_magic": 76066276, + "xpub_magic": 76067358, + "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "slip44": 175, + "segwit": false, + "decred": false, + "fork_id": null, + "force_bip143": false, + "bip115": false, + "default_fee_b": { + "Low": 10 + }, + "dust_limit": 546, + "blocktime_seconds": 60, + "uri_prefix": "ravencoin", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "https://ravencoin.network" + ], + "blockbook": [], + "cooldown": 100 +} diff --git a/defs/bitcoin/ravencoin.png b/defs/bitcoin/ravencoin.png new file mode 100644 index 0000000000000000000000000000000000000000..4b012478155023ac5d404a0124f175ca1c2d3c33 GIT binary patch literal 3685 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 D+j$KK literal 0 HcmV?d00001 From fba7ae05c95bbb8eef47154dd2d49314ea5eab29 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 26 Oct 2018 15:23:03 +0200 Subject: [PATCH 611/767] require https for coin website --- defs/bitcoin/dogecoin.json | 2 +- defs/bitcoin/fujicoin.json | 2 +- defs/bitcoin/pesetacoin.json | 2 +- defs/bitcoin/ravencoin.json | 2 +- defs/support.json | 2 ++ tools/coin_info.py | 2 +- 6 files changed, 7 insertions(+), 5 deletions(-) diff --git a/defs/bitcoin/dogecoin.json b/defs/bitcoin/dogecoin.json index 5ff77bcfb..0ff8fdcce 100644 --- a/defs/bitcoin/dogecoin.json +++ b/defs/bitcoin/dogecoin.json @@ -2,7 +2,7 @@ "coin_name": "Dogecoin", "coin_shortcut": "DOGE", "coin_label": "Dogecoin", - "website": "http://dogecoin.com", + "website": "https://dogecoin.com", "github": "https://github.com/dogecoin/dogecoin", "maintainer": "Karel Bilek ", "curve_name": "secp256k1", diff --git a/defs/bitcoin/fujicoin.json b/defs/bitcoin/fujicoin.json index 1350af5f1..8a02a0670 100644 --- a/defs/bitcoin/fujicoin.json +++ b/defs/bitcoin/fujicoin.json @@ -2,7 +2,7 @@ "coin_name": "Fujicoin", "coin_shortcut": "FJC", "coin_label": "Fujicoin", - "website": "http://fujicoin.org", + "website": "https://fujicoin.org", "github": "https://github.com/fujicoin/fujicoin", "maintainer": "motty ", "curve_name": "secp256k1", diff --git a/defs/bitcoin/pesetacoin.json b/defs/bitcoin/pesetacoin.json index af59ed57c..05237b464 100644 --- a/defs/bitcoin/pesetacoin.json +++ b/defs/bitcoin/pesetacoin.json @@ -2,7 +2,7 @@ "coin_name": "Pesetacoin", "coin_shortcut": "PTC", "coin_label": "Pesetacoin", - "website": "http://pesetacoin.info", + "website": "https://pesetacoin.info", "github": "https://github.com/FundacionPesetacoin/PesetacoinCore", "maintainer": "Rw ", "curve_name": "secp256k1", diff --git a/defs/bitcoin/ravencoin.json b/defs/bitcoin/ravencoin.json index d0789b9b4..6f0f35830 100644 --- a/defs/bitcoin/ravencoin.json +++ b/defs/bitcoin/ravencoin.json @@ -2,7 +2,7 @@ "coin_name": "Ravencoin", "coin_shortcut": "RVN", "coin_label": "Ravencoin", - "website": "https://ravencoin.org/", + "website": "https://ravencoin.org", "github": "https://github.com/RavenProject/Ravencoin", "maintainer": "Tron Black ", "curve_name": "secp256k1", diff --git a/defs/support.json b/defs/support.json index bd6efe0af..4b488aea8 100644 --- a/defs/support.json +++ b/defs/support.json @@ -72,6 +72,7 @@ "bitcoin:MUE": "1.7.1", "bitcoin:NMC": "1.5.2", "bitcoin:PTC": "1.7.1", + "bitcoin:RVN": "soon", "bitcoin:SMART": "1.7.1", "bitcoin:TAZ": "1.6.2", "bitcoin:TBCH": "1.6.2", @@ -974,6 +975,7 @@ "bitcoin:MUE": "2.0.8", "bitcoin:NMC": "2.0.5", "bitcoin:PTC": "2.0.8", + "bitcoin:RVN": "soon", "bitcoin:SMART": "2.0.8", "bitcoin:TAZ": "2.0.7", "bitcoin:TBCH": "2.0.7", diff --git a/tools/coin_info.py b/tools/coin_info.py index 57bbf2ffb..ec4e7805e 100755 --- a/tools/coin_info.py +++ b/tools/coin_info.py @@ -109,7 +109,7 @@ BTC_CHECKS = [ check_key("coin_name", str, regex=r"^[A-Z]"), check_key("coin_shortcut", str, regex=r"^t?[A-Z]{3,}$"), check_key("coin_label", str, regex=r"^[A-Z]"), - check_key("website", str, regex=r"^http.*[^/]$"), + check_key("website", str, regex=r"^https://.*[^/]$"), check_key("github", str, regex=r"^https://github.com/.*[^/]$"), check_key("maintainer", str), check_key( From f1dd539e3ab28a1ac33b1fc3a2414c64ad8fc1e4 Mon Sep 17 00:00:00 2001 From: russkidooski Date: Fri, 26 Oct 2018 15:54:12 -0500 Subject: [PATCH 612/767] fixed URI prefix for Ravencoin --- defs/bitcoin/ravencoin.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/defs/bitcoin/ravencoin.json b/defs/bitcoin/ravencoin.json index 6f0f35830..292b1f3ba 100644 --- a/defs/bitcoin/ravencoin.json +++ b/defs/bitcoin/ravencoin.json @@ -29,7 +29,7 @@ }, "dust_limit": 546, "blocktime_seconds": 60, - "uri_prefix": "ravencoin", + "uri_prefix": "raven", "min_address_length": 27, "max_address_length": 34, "bitcore": [ From a87dd7cd3831150912675b6346242d4c481a2390 Mon Sep 17 00:00:00 2001 From: FujiCoin Date: Sat, 27 Oct 2018 08:09:26 +0900 Subject: [PATCH 613/767] defs: fix fujicoin bitcore url (#227) --- defs/bitcoin/fujicoin.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/defs/bitcoin/fujicoin.json b/defs/bitcoin/fujicoin.json index 8a02a0670..b88f97ac8 100644 --- a/defs/bitcoin/fujicoin.json +++ b/defs/bitcoin/fujicoin.json @@ -36,7 +36,7 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [ - "http://explorer.fujicoin.org" + "https://explorer.fujicoin.org" ], "blockbook": [], "cooldown": 100 From efba885f6e4323868051cfc5b24bca52b42350a2 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Sat, 27 Oct 2018 01:23:49 +0200 Subject: [PATCH 614/767] defs: check that backend URIs use https --- defs/bitcoin/pesetacoin.json | 2 +- tools/coin_info.py | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/defs/bitcoin/pesetacoin.json b/defs/bitcoin/pesetacoin.json index 05237b464..812cbb23c 100644 --- a/defs/bitcoin/pesetacoin.json +++ b/defs/bitcoin/pesetacoin.json @@ -33,7 +33,7 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [ - "http://live.pesetacoin.info" + "https://live.pesetacoin.info" ], "blockbook": [], "cooldown": 100 diff --git a/tools/coin_info.py b/tools/coin_info.py index ec4e7805e..cd9a606d7 100755 --- a/tools/coin_info.py +++ b/tools/coin_info.py @@ -177,6 +177,9 @@ def validate_btc(coin): errors.append("max address length must not be smaller than min address length") for bc in coin["bitcore"] + coin["blockbook"]: + if not bc.startswith("https://"): + errors.append("make sure URLs start with https://") + if bc.endswith("/"): errors.append("make sure URLs don't end with '/'") From 7d19028d67a9d82f7896ae5e91b747e3a0f7c419 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Sat, 27 Oct 2018 01:41:50 +0200 Subject: [PATCH 615/767] enable ravencoin for t2 and wallet --- defs/support.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/defs/support.json b/defs/support.json index 4b488aea8..11a50fc9b 100644 --- a/defs/support.json +++ b/defs/support.json @@ -975,7 +975,7 @@ "bitcoin:MUE": "2.0.8", "bitcoin:NMC": "2.0.5", "bitcoin:PTC": "2.0.8", - "bitcoin:RVN": "soon", + "bitcoin:RVN": "2.0.8", "bitcoin:SMART": "2.0.8", "bitcoin:TAZ": "2.0.7", "bitcoin:TBCH": "2.0.7", @@ -1812,6 +1812,7 @@ "bitcoin:LTC": true, "bitcoin:MONA": true, "bitcoin:NMC": true, + "bitcoin:RVN": "true", "bitcoin:TAZ": true, "bitcoin:TDCR": true, "bitcoin:TEST": true, From c624e3d32b666c0d3637b2db23b939e57f64ae08 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Sat, 27 Oct 2018 10:39:49 +0200 Subject: [PATCH 616/767] defs: fix last commit --- defs/support.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/defs/support.json b/defs/support.json index 11a50fc9b..9af3d415f 100644 --- a/defs/support.json +++ b/defs/support.json @@ -1812,7 +1812,7 @@ "bitcoin:LTC": true, "bitcoin:MONA": true, "bitcoin:NMC": true, - "bitcoin:RVN": "true", + "bitcoin:RVN": true, "bitcoin:TAZ": true, "bitcoin:TDCR": true, "bitcoin:TEST": true, From 4d8fbcfc76e8682b05a14aff7fe807d487f2877c Mon Sep 17 00:00:00 2001 From: matejcik Date: Mon, 29 Oct 2018 18:32:33 +0100 Subject: [PATCH 617/767] support: added tokens that are supported since 2.0.8 / 1.7.1 --- defs/support.json | 78 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/defs/support.json b/defs/support.json index 9af3d415f..6ab701d1a 100644 --- a/defs/support.json +++ b/defs/support.json @@ -90,7 +90,10 @@ "bitcoin:tSMART": "1.7.1", "bitcoin:tXZC": "1.6.2", "erc20:ella:MINING": "1.6.2", + "erc20:esn:DGT": "1.7.1", + "erc20:esn:TOPM": "1.7.1", "erc20:etc:BEC": "1.6.2", + "erc20:etc:UNV": "1.7.1", "erc20:eth:$FFC": "1.6.2", "erc20:eth:$FXY": "1.6.2", "erc20:eth:$HUR": "1.6.3", @@ -299,6 +302,7 @@ "erc20:eth:DRGN": "1.6.2", "erc20:eth:DRVH": "1.6.3", "erc20:eth:DSC": "1.6.2", + "erc20:eth:DSCP": "1.7.1", "erc20:eth:DTH": "1.6.2", "erc20:eth:DTR": "1.6.2", "erc20:eth:DTT": "1.6.2", @@ -335,6 +339,7 @@ "erc20:eth:EVX": "1.6.2", "erc20:eth:EXMR": "1.6.2", "erc20:eth:EXY": "1.6.3", + "erc20:eth:E\u20b9": "1.7.1", "erc20:eth:FAM": "1.6.2", "erc20:eth:FAN": "1.6.3", "erc20:eth:FKX": "1.6.2", @@ -657,6 +662,7 @@ "erc20:eth:TAU": "1.6.2", "erc20:eth:TBC2": "1.6.2", "erc20:eth:TBT": "1.6.2", + "erc20:eth:TCA": "1.7.1", "erc20:eth:TDH": "1.6.2", "erc20:eth:TEL": "1.6.2", "erc20:eth:TFL": "1.6.2", @@ -666,6 +672,7 @@ "erc20:eth:TIO": "1.6.2", "erc20:eth:TIX": "1.6.2", "erc20:eth:TKN": "1.6.2", + "erc20:eth:TLX": "1.7.1", "erc20:eth:TNT": "1.6.2", "erc20:eth:TOOR": "1.6.3", "erc20:eth:TRCN": "1.6.2", @@ -677,6 +684,8 @@ "erc20:eth:TaaS": "1.6.2", "erc20:eth:UKG": "1.6.2", "erc20:eth:UQC": "1.6.2", + "erc20:eth:URB": "1.7.1", + "erc20:eth:USDC": "1.7.1", "erc20:eth:USDM": "1.6.2", "erc20:eth:USDT": "1.6.2", "erc20:eth:UTK": "1.6.2", @@ -697,6 +706,7 @@ "erc20:eth:VOC": "1.6.2", "erc20:eth:VOISE": "1.6.2", "erc20:eth:VSL": "1.6.2", + "erc20:eth:WATT": "1.7.1", "erc20:eth:WAX": "1.6.2", "erc20:eth:WBA": "1.6.2", "erc20:eth:WCN": "1.6.2", @@ -994,15 +1004,20 @@ "bitcoin:tSMART": "2.0.8", "bitcoin:tXZC": "2.0.7", "erc20:ella:MINING": "2.0.7", + "erc20:esn:DGT": "2.0.8", + "erc20:esn:TOPM": "2.0.8", "erc20:etc:BEC": "2.0.7", + "erc20:etc:UNV": "2.0.8", "erc20:eth:$FFC": "2.0.7", "erc20:eth:$FXY": "2.0.7", + "erc20:eth:$HUR": "2.0.8", "erc20:eth:$TEAK": "2.0.7", "erc20:eth:0xBTC": "2.0.7", "erc20:eth:1ST": "2.0.7", "erc20:eth:1WO": "2.0.7", "erc20:eth:2DC": "2.0.7", "erc20:eth:300": "2.0.7", + "erc20:eth:3LT": "2.0.8", "erc20:eth:ABT": "2.0.7", "erc20:eth:ABYSS": "2.0.7", "erc20:eth:ACC": "2.0.7", @@ -1017,11 +1032,13 @@ "erc20:eth:AION": "2.0.7", "erc20:eth:AIR": "2.0.7", "erc20:eth:AIX": "2.0.7", + "erc20:eth:AKC": "2.0.8", "erc20:eth:ALCO": "2.0.7", "erc20:eth:ALIS": "2.0.7", "erc20:eth:ALTS": "2.0.7", "erc20:eth:AMB": "2.0.7", "erc20:eth:AMIS": "2.0.7", + "erc20:eth:AMLT": "2.0.8", "erc20:eth:AMN": "2.0.7", "erc20:eth:AMO": "2.0.7", "erc20:eth:AMTC": "2.0.7", @@ -1045,6 +1062,7 @@ "erc20:eth:AVT": "2.0.7", "erc20:eth:AX1": "2.0.7", "erc20:eth:AXP": "2.0.7", + "erc20:eth:AXPR": "2.0.8", "erc20:eth:BANX": "2.0.7", "erc20:eth:BAT": "2.0.7", "erc20:eth:BBK": "2.0.7", @@ -1058,6 +1076,7 @@ "erc20:eth:BEE": "2.0.7", "erc20:eth:BERRY": "2.0.7", "erc20:eth:BET": "2.0.7", + "erc20:eth:BETHER": "2.0.8", "erc20:eth:BETR": "2.0.7", "erc20:eth:BKB": "2.0.7", "erc20:eth:BKRx": "2.0.7", @@ -1094,6 +1113,7 @@ "erc20:eth:BTQ": "2.0.7", "erc20:eth:BTT": "2.0.7", "erc20:eth:BTTX": "2.0.7", + "erc20:eth:BTZ": "2.0.8", "erc20:eth:BUC": "2.0.7", "erc20:eth:BeerCoin": "2.0.7", "erc20:eth:C20": "2.0.7", @@ -1107,6 +1127,7 @@ "erc20:eth:CAT (BitClave)": "2.0.7", "erc20:eth:CAT (Blockcat)": "2.0.7", "erc20:eth:CATs (BitClave)_Old": "2.0.7", + "erc20:eth:CBIX": "2.0.8", "erc20:eth:CC3": "2.0.7", "erc20:eth:CCC (CryptoCrashCourse)": "2.0.7", "erc20:eth:CCC (ICONOMI)": "2.0.7", @@ -1115,6 +1136,8 @@ "erc20:eth:CDL": "2.0.7", "erc20:eth:CDT": "2.0.7", "erc20:eth:CEEK": "2.0.7", + "erc20:eth:CET": "2.0.8", + "erc20:eth:CFC": "2.0.8", "erc20:eth:CFI": "2.0.7", "erc20:eth:CFTY": "2.0.7", "erc20:eth:CHSB": "2.0.7", @@ -1134,6 +1157,7 @@ "erc20:eth:COFI": "2.0.7", "erc20:eth:COIL": "2.0.7", "erc20:eth:COIN": "2.0.7", + "erc20:eth:CORI": "2.0.8", "erc20:eth:COV": "2.0.7", "erc20:eth:CPEX": "2.0.7", "erc20:eth:CPY": "2.0.7", @@ -1141,16 +1165,20 @@ "erc20:eth:CRB": "2.0.7", "erc20:eth:CRED": "2.0.7", "erc20:eth:CREDO": "2.0.7", + "erc20:eth:CRGO": "2.0.8", + "erc20:eth:CRMT": "2.0.8", "erc20:eth:CRPT": "2.0.7", "erc20:eth:CRT": "2.0.7", "erc20:eth:CTF": "2.0.7", "erc20:eth:CTG": "2.0.7", + "erc20:eth:CTGC": "2.0.8", "erc20:eth:CTL": "2.0.7", "erc20:eth:CTT": "2.0.7", "erc20:eth:CTX": "2.0.7", "erc20:eth:CVC": "2.0.7", "erc20:eth:CXC": "2.0.7", "erc20:eth:CXO": "2.0.7", + "erc20:eth:CYFM": "2.0.8", "erc20:eth:CryptoCarbon": "2.0.7", "erc20:eth:DAB": "2.0.7", "erc20:eth:DADI": "2.0.7", @@ -1164,6 +1192,7 @@ "erc20:eth:DAXT": "2.0.7", "erc20:eth:DAY": "2.0.7", "erc20:eth:DCA": "2.0.7", + "erc20:eth:DCC": "2.0.8", "erc20:eth:DCL": "2.0.7", "erc20:eth:DCN": "2.0.7", "erc20:eth:DDF": "2.0.7", @@ -1171,8 +1200,12 @@ "erc20:eth:DEEZ": "2.0.7", "erc20:eth:DENT": "2.0.7", "erc20:eth:DGPT": "2.0.7", + "erc20:eth:DGS": "2.0.8", + "erc20:eth:DGTX": "2.0.8", "erc20:eth:DGX": "2.0.7", + "erc20:eth:DGX1": "2.0.8", "erc20:eth:DICE": "2.0.7", + "erc20:eth:DIP": "2.0.8", "erc20:eth:DIVX": "2.0.7", "erc20:eth:DKP": "2.0.7", "erc20:eth:DLT": "2.0.7", @@ -1181,7 +1214,9 @@ "erc20:eth:DNX": "2.0.7", "erc20:eth:DPP": "2.0.7", "erc20:eth:DRGN": "2.0.7", + "erc20:eth:DRVH": "2.0.8", "erc20:eth:DSC": "2.0.7", + "erc20:eth:DSCP": "2.0.8", "erc20:eth:DTH": "2.0.7", "erc20:eth:DTR": "2.0.7", "erc20:eth:DTT": "2.0.7", @@ -1192,10 +1227,12 @@ "erc20:eth:EDC": "2.0.7", "erc20:eth:EDG": "2.0.7", "erc20:eth:EDO": "2.0.7", + "erc20:eth:EDR": "2.0.8", "erc20:eth:EHT": "2.0.7", "erc20:eth:ELF": "2.0.7", "erc20:eth:ELIX": "2.0.7", "erc20:eth:ELTCOIN": "2.0.7", + "erc20:eth:ELY": "2.0.8", "erc20:eth:EMON": "2.0.7", "erc20:eth:EMONT": "2.0.7", "erc20:eth:EMT": "2.0.7", @@ -1215,7 +1252,10 @@ "erc20:eth:EVE": "2.0.7", "erc20:eth:EVX": "2.0.7", "erc20:eth:EXMR": "2.0.7", + "erc20:eth:EXY": "2.0.8", + "erc20:eth:E\u20b9": "2.0.8", "erc20:eth:FAM": "2.0.7", + "erc20:eth:FAN": "2.0.8", "erc20:eth:FKX": "2.0.7", "erc20:eth:FLIXX": "2.0.7", "erc20:eth:FLP": "2.0.7", @@ -1226,8 +1266,10 @@ "erc20:eth:FRD": "2.0.7", "erc20:eth:FTR": "2.0.7", "erc20:eth:FTT": "2.0.7", + "erc20:eth:FTXT": "2.0.8", "erc20:eth:FUEL": "2.0.7", "erc20:eth:FUN": "2.0.7", + "erc20:eth:FXC": "2.0.8", "erc20:eth:FYN": "2.0.7", "erc20:eth:GAM": "2.0.7", "erc20:eth:GAVEL": "2.0.7", @@ -1245,18 +1287,22 @@ "erc20:eth:GOLDX": "2.0.7", "erc20:eth:GRID": "2.0.7", "erc20:eth:GROW": "2.0.7", + "erc20:eth:GSE": "2.0.8", "erc20:eth:GTC": "2.0.7", "erc20:eth:GTKT": "2.0.7", "erc20:eth:GTO": "2.0.7", + "erc20:eth:GULD": "2.0.8", "erc20:eth:GVT": "2.0.7", "erc20:eth:GXC": "2.0.7", "erc20:eth:GXVC": "2.0.7", "erc20:eth:GZE": "2.0.7", "erc20:eth:GZR": "2.0.7", + "erc20:eth:HAPPY": "2.0.8", "erc20:eth:HAT": "2.0.7", "erc20:eth:HAV": "2.0.7", "erc20:eth:HDG": "2.0.7", "erc20:eth:HGT": "2.0.7", + "erc20:eth:HIBT": "2.0.8", "erc20:eth:HIG": "2.0.7", "erc20:eth:HKG": "2.0.7", "erc20:eth:HKY": "2.0.7", @@ -1286,6 +1332,8 @@ "erc20:eth:IOTX": "2.0.7", "erc20:eth:IPL": "2.0.7", "erc20:eth:IPSX": "2.0.7", + "erc20:eth:IQN": "2.0.8", + "erc20:eth:IST34": "2.0.8", "erc20:eth:ITC": "2.0.7", "erc20:eth:ITT": "2.0.7", "erc20:eth:IXT": "2.0.7", @@ -1318,7 +1366,9 @@ "erc20:eth:LOCI": "2.0.7", "erc20:eth:LOCUS": "2.0.7", "erc20:eth:LOK": "2.0.7", + "erc20:eth:LOOK": "2.0.8", "erc20:eth:LOOM": "2.0.7", + "erc20:eth:LOVE": "2.0.8", "erc20:eth:LPT": "2.0.7", "erc20:eth:LRC": "2.0.7", "erc20:eth:LUC": "2.0.7", @@ -1338,6 +1388,8 @@ "erc20:eth:MDA": "2.0.7", "erc20:eth:MEST": "2.0.7", "erc20:eth:MFG": "2.0.7", + "erc20:eth:MFT": "2.0.8", + "erc20:eth:MFTU": "2.0.8", "erc20:eth:MGO": "2.0.7", "erc20:eth:MKT": "2.0.7", "erc20:eth:MNE": "2.0.7", @@ -1374,22 +1426,29 @@ "erc20:eth:NOX": "2.0.7", "erc20:eth:NPER": "2.0.7", "erc20:eth:NPXS": "2.0.7", + "erc20:eth:NUG": "2.0.8", "erc20:eth:NULS": "2.0.7", "erc20:eth:NXX": "2.0.7", "erc20:eth:NxC": "2.0.7", "erc20:eth:OAK": "2.0.7", "erc20:eth:OAX": "2.0.7", "erc20:eth:OCC": "2.0.7", + "erc20:eth:ODE": "2.0.8", "erc20:eth:OJX": "2.0.7", "erc20:eth:OLD_MKR": "2.0.7", + "erc20:eth:OLT": "2.0.8", "erc20:eth:OMG": "2.0.7", + "erc20:eth:OMT": "2.0.8", "erc20:eth:ONEK": "2.0.7", "erc20:eth:OPT": "2.0.7", "erc20:eth:ORBS": "2.0.7", + "erc20:eth:ORCA": "2.0.8", "erc20:eth:OST": "2.0.7", + "erc20:eth:OWN": "2.0.8", "erc20:eth:Ox Fina": "2.0.7", "erc20:eth:PAL": "2.0.7", "erc20:eth:PARETO": "2.0.7", + "erc20:eth:PASS": "2.0.8", "erc20:eth:PATENTS": "2.0.7", "erc20:eth:PATH": "2.0.7", "erc20:eth:PAY": "2.0.7", @@ -1397,6 +1456,7 @@ "erc20:eth:PBT": "2.0.7", "erc20:eth:PCL": "2.0.7", "erc20:eth:PCLOLD": "2.0.7", + "erc20:eth:PEG": "2.0.8", "erc20:eth:PET": "2.0.7", "erc20:eth:PETRO": "2.0.7", "erc20:eth:PEXT": "2.0.7", @@ -1405,6 +1465,7 @@ "erc20:eth:PLASMA": "2.0.7", "erc20:eth:PLBT": "2.0.7", "erc20:eth:PLR": "2.0.7", + "erc20:eth:PLS": "2.0.8", "erc20:eth:PLU": "2.0.7", "erc20:eth:POE": "2.0.7", "erc20:eth:POIN": "2.0.7", @@ -1424,10 +1485,12 @@ "erc20:eth:PTOY": "2.0.7", "erc20:eth:PTWO": "2.0.7", "erc20:eth:PUC": "2.0.7", + "erc20:eth:PURC": "2.0.8", "erc20:eth:PXT": "2.0.7", "erc20:eth:QASH": "2.0.7", "erc20:eth:QAU": "2.0.7", "erc20:eth:QBX": "2.0.7", + "erc20:eth:QNT": "2.0.8", "erc20:eth:QRG": "2.0.7", "erc20:eth:QRL": "2.0.7", "erc20:eth:QSP": "2.0.7", @@ -1439,6 +1502,7 @@ "erc20:eth:REA": "2.0.7", "erc20:eth:REBL": "2.0.7", "erc20:eth:RED": "2.0.7", + "erc20:eth:REDC": "2.0.8", "erc20:eth:REN": "2.0.7", "erc20:eth:REQ": "2.0.7", "erc20:eth:REX": "2.0.7", @@ -1473,6 +1537,7 @@ "erc20:eth:SKO1": "2.0.7", "erc20:eth:SKR": "2.0.7", "erc20:eth:SLT": "2.0.7", + "erc20:eth:SLY": "2.0.8", "erc20:eth:SNC": "2.0.7", "erc20:eth:SND": "2.0.7", "erc20:eth:SNG": "2.0.7", @@ -1489,6 +1554,7 @@ "erc20:eth:SPN": "2.0.7", "erc20:eth:SRN": "2.0.7", "erc20:eth:SSH": "2.0.7", + "erc20:eth:STABIT": "2.0.8", "erc20:eth:STAC": "2.0.7", "erc20:eth:STAR": "2.0.7", "erc20:eth:STC": "2.0.7", @@ -1510,6 +1576,7 @@ "erc20:eth:TAU": "2.0.7", "erc20:eth:TBC2": "2.0.7", "erc20:eth:TBT": "2.0.7", + "erc20:eth:TCA": "2.0.8", "erc20:eth:TDH": "2.0.7", "erc20:eth:TEL": "2.0.7", "erc20:eth:TFL": "2.0.7", @@ -1519,21 +1586,27 @@ "erc20:eth:TIO": "2.0.7", "erc20:eth:TIX": "2.0.7", "erc20:eth:TKN": "2.0.7", + "erc20:eth:TLX": "2.0.8", "erc20:eth:TNT": "2.0.7", + "erc20:eth:TOOR": "2.0.8", "erc20:eth:TRCN": "2.0.7", "erc20:eth:TRST": "2.0.7", "erc20:eth:TRX": "2.0.7", + "erc20:eth:TSW": "2.0.8", "erc20:eth:TWN": "2.0.7", "erc20:eth:TWNKL": "2.0.7", "erc20:eth:TaaS": "2.0.7", "erc20:eth:UKG": "2.0.7", "erc20:eth:UQC": "2.0.7", + "erc20:eth:URB": "2.0.8", + "erc20:eth:USDC": "2.0.8", "erc20:eth:USDM": "2.0.7", "erc20:eth:USDT": "2.0.7", "erc20:eth:UTK": "2.0.7", "erc20:eth:UTN-P": "2.0.7", "erc20:eth:UUU": "2.0.7", "erc20:eth:Unicorn": "2.0.7", + "erc20:eth:VDG": "2.0.8", "erc20:eth:VDOC": "2.0.7", "erc20:eth:VEE": "2.0.7", "erc20:eth:VEN": "2.0.7", @@ -1547,6 +1620,7 @@ "erc20:eth:VOC": "2.0.7", "erc20:eth:VOISE": "2.0.7", "erc20:eth:VSL": "2.0.7", + "erc20:eth:WATT": "2.0.8", "erc20:eth:WAX": "2.0.7", "erc20:eth:WBA": "2.0.7", "erc20:eth:WCN": "2.0.7", @@ -1555,6 +1629,8 @@ "erc20:eth:WHEN": "2.0.7", "erc20:eth:WILD": "2.0.7", "erc20:eth:WINGS": "2.0.7", + "erc20:eth:WMK": "2.0.8", + "erc20:eth:WNK": "2.0.8", "erc20:eth:WPC": "2.0.7", "erc20:eth:WPR": "2.0.7", "erc20:eth:WRK": "2.0.7", @@ -1576,6 +1652,7 @@ "erc20:eth:XNT": "2.0.7", "erc20:eth:XRL": "2.0.7", "erc20:eth:XSC": "2.0.7", + "erc20:eth:YUP": "2.0.8", "erc20:eth:YUPIE": "2.0.7", "erc20:eth:ZAP": "2.0.7", "erc20:eth:ZCS": "2.0.7", @@ -1597,6 +1674,7 @@ "erc20:rin:CTGA": "2.0.7", "erc20:rin:PPD": "2.0.7", "erc20:rin:WALL": "2.0.7", + "erc20:rop:*PLASMA": "2.0.8", "erc20:rop:ILSC": "2.0.7", "erc20:ubq:BEER": "2.0.7", "erc20:ubq:CEFS": "2.0.7", From 9a8d01a891207bc264fa3e5874482152c4d07549 Mon Sep 17 00:00:00 2001 From: matejcik Date: Mon, 29 Oct 2018 18:39:18 +0100 Subject: [PATCH 618/767] coin_info: use beta wallet for list of latest releases --- tools/coin_info.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/coin_info.py b/tools/coin_info.py index cd9a606d7..4b270a778 100755 --- a/tools/coin_info.py +++ b/tools/coin_info.py @@ -261,7 +261,7 @@ def _load_misc(): # ====== support info ====== -RELEASES_URL = "https://wallet.trezor.io/data/firmware/{}/releases.json" +RELEASES_URL = "https://beta-wallet.trezor.io/data/firmware/{}/releases.json" MISSING_SUPPORT_MEANS_NO = ("connect", "webwallet") VERSIONED_SUPPORT_INFO = ("trezor1", "trezor2") From 7d618036ab50504e245ad8651c4558d413596228 Mon Sep 17 00:00:00 2001 From: matejcik Date: Mon, 29 Oct 2018 18:42:18 +0100 Subject: [PATCH 619/767] coins_details: drop hidden coins from listing, regenerate also precalculate percent market cap supported --- defs/coins_details.json | 2071 +++++++++++++-------------------------- tools/coins_details.py | 10 +- 2 files changed, 672 insertions(+), 1409 deletions(-) diff --git a/defs/coins_details.json b/defs/coins_details.json index 1aee3e020..a24c282dd 100644 --- a/defs/coins_details.json +++ b/defs/coins_details.json @@ -5,7 +5,7 @@ "Github": "https://github.com/Bitcoin-ABC/bitcoin-abc", "Homepage": "https://www.bitcoincash.org" }, - "marketcap_usd": 7615973800, + "marketcap_usd": 7293210728, "name": "Bitcoin Cash", "shortcut": "BCH", "t1_enabled": "yes", @@ -21,7 +21,7 @@ "Github": "https://github.com/bitcoin/bitcoin", "Homepage": "https://bitcoin.org" }, - "marketcap_usd": 112022585690, + "marketcap_usd": 110054412479, "name": "Bitcoin", "shortcut": "BTC", "t1_enabled": "yes", @@ -37,7 +37,7 @@ "Github": "https://github.com/BTCPrivate/BitcoinPrivate", "Homepage": "https://btcprivate.org" }, - "marketcap_usd": 50903149, + "marketcap_usd": 42438194, "name": "Bitcoin Private", "shortcut": "BTCP", "t1_enabled": "yes", @@ -52,7 +52,7 @@ "Github": "https://github.com/BTCGPU/BTCGPU", "Homepage": "https://bitcoingold.org" }, - "marketcap_usd": 444833169, + "marketcap_usd": 455372567, "name": "Bitcoin Gold", "shortcut": "BTG", "t1_enabled": "yes", @@ -64,30 +64,28 @@ } }, "bitcoin:BTX": { - "hidden": 1, "links": { "Github": "https://github.com/LIMXTEC/BitCore", "Homepage": "https://bitcore.cc" }, - "marketcap_usd": 13060451, + "marketcap_usd": 11833890, "name": "Bitcore", "shortcut": "BTX", - "t1_enabled": "no", - "t2_enabled": "no", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "coin", "wallet": {} }, - "bitcoin:CRW": { - "hidden": 1, + "bitcoin:CPC": { "links": { - "Github": "https://github.com/Crowndev/crowncoin", - "Homepage": "https://crown.tech" + "Github": "https://github.com/Capricoinofficial/Capricoin", + "Homepage": "https://capricoin.org" }, - "marketcap_usd": 7147017, - "name": "Crown", - "shortcut": "CRW", - "t1_enabled": "no", - "t2_enabled": "no", + "marketcap_usd": 1449023, + "name": "Capricoin", + "shortcut": "CPC", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "coin", "wallet": {} }, @@ -96,7 +94,7 @@ "Github": "https://github.com/dashpay/dash", "Homepage": "https://www.dash.org" }, - "marketcap_usd": 1291948419, + "marketcap_usd": 1266895965, "name": "Dash", "shortcut": "DASH", "t1_enabled": "yes", @@ -112,11 +110,11 @@ "Github": "https://github.com/decred/dcrd", "Homepage": "https://www.decred.org" }, - "marketcap_usd": 333098504, + "marketcap_usd": 355228905, "name": "Decred", "shortcut": "DCR", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "coin", "wallet": {} }, @@ -125,7 +123,7 @@ "Github": "https://github.com/digibyte/digibyte", "Homepage": "https://digibyte.io" }, - "marketcap_usd": 255611022, + "marketcap_usd": 236578819, "name": "DigiByte", "shortcut": "DGB", "t1_enabled": "yes", @@ -141,17 +139,17 @@ "marketcap_usd": 0, "name": "Denarius", "shortcut": "DNR", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "coin", "wallet": {} }, "bitcoin:DOGE": { "links": { "Github": "https://github.com/dogecoin/dogecoin", - "Homepage": "http://dogecoin.com" + "Homepage": "https://dogecoin.com" }, - "marketcap_usd": 507335690, + "marketcap_usd": 452311648, "name": "Dogecoin", "shortcut": "DOGE", "t1_enabled": "yes", @@ -164,9 +162,9 @@ "bitcoin:FJC": { "links": { "Github": "https://github.com/fujicoin/fujicoin", - "Homepage": "http://fujicoin.org" + "Homepage": "https://fujicoin.org" }, - "marketcap_usd": 388112, + "marketcap_usd": 407889, "name": "Fujicoin", "shortcut": "FJC", "t1_enabled": "yes", @@ -181,11 +179,11 @@ "Github": "https://github.com/flash-coin", "Homepage": "https://www.flashcoin.io" }, - "marketcap_usd": 5651732, + "marketcap_usd": 5441489, "name": "Flashcoin", "shortcut": "FLASH", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "coin", "wallet": {} }, @@ -194,25 +192,24 @@ "Github": "https://github.com/FeatherCoin/Feathercoin", "Homepage": "https://feathercoin.com" }, - "marketcap_usd": 8348465, + "marketcap_usd": 9431916, "name": "Feathercoin", "shortcut": "FTC", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "coin", "wallet": {} }, "bitcoin:GAME": { - "hidden": 1, "links": { "Github": "https://github.com/gamecredits-project/gamecredits", "Homepage": "https://gamecredits.org" }, - "marketcap_usd": 11457646, + "marketcap_usd": 11911928, "name": "GameCredits", "shortcut": "GAME", - "t1_enabled": "no", - "t2_enabled": "no", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "coin", "wallet": {} }, @@ -221,11 +218,11 @@ "Github": "https://github.com/Groestlcoin/groestlcoin", "Homepage": "https://www.groestlcoin.org" }, - "marketcap_usd": 38286374, + "marketcap_usd": 36148152, "name": "Groestlcoin", "shortcut": "GRS", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "coin", "wallet": { "Electrum-GRS": "https://www.groestlcoin.org/groestlcoin-electrum-wallet/" @@ -239,8 +236,8 @@ "marketcap_usd": 0, "name": "Koto", "shortcut": "KOTO", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "coin", "wallet": { "Electrum-KOTO": "https://electrum.kotocoin.info" @@ -251,7 +248,7 @@ "Github": "https://github.com/litecoin-project/litecoin", "Homepage": "https://litecoin.org" }, - "marketcap_usd": 3108614763, + "marketcap_usd": 2906234413, "name": "Litecoin", "shortcut": "LTC", "t1_enabled": "yes", @@ -267,7 +264,7 @@ "Github": "https://github.com/monacoinproject/monacoin", "Homepage": "https://monacoin.org" }, - "marketcap_usd": 74084305, + "marketcap_usd": 72380247, "name": "Monacoin", "shortcut": "MONA", "t1_enabled": "yes", @@ -285,8 +282,8 @@ "marketcap_usd": 0, "name": "MUE", "shortcut": "MUE", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "coin", "wallet": {} }, @@ -295,7 +292,7 @@ "Github": "https://github.com/namecoin/namecoin-core", "Homepage": "https://namecoin.org" }, - "marketcap_usd": 8765767, + "marketcap_usd": 8486208, "name": "Namecoin", "shortcut": "NMC", "t1_enabled": "yes", @@ -309,135 +306,48 @@ "bitcoin:PTC": { "links": { "Github": "https://github.com/FundacionPesetacoin/PesetacoinCore", - "Homepage": "http://pesetacoin.info" + "Homepage": "https://pesetacoin.info" }, - "marketcap_usd": 744595, + "marketcap_usd": 698165, "name": "Pesetacoin", "shortcut": "PTC", - "t1_enabled": "soon", - "t2_enabled": "soon", - "type": "coin", - "wallet": {} - }, - "bitcoin:SMART": { - "links": { - "Github": "https://github.com/SmartCash/Core-Smart", - "Homepage": "https://smarcash.cc" - }, - "marketcap_usd": 22036721, - "name": "SmartCash", - "shortcut": "SMART", - "t1_enabled": "soon", - "t2_enabled": "soon", - "type": "coin", - "wallet": {} - }, - "bitcoin:TAZ": { - "hidden": 1, - "links": { - "Github": "https://github.com/zcash/zcash", - "Homepage": "https://z.cash" - }, - "marketcap_usd": 0, - "name": "Zcash Testnet", - "shortcut": "TAZ", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": {} - }, - "bitcoin:TBCH": { - "hidden": 1, - "links": { - "Github": "https://github.com/Bitcoin-ABC/bitcoin-abc", - "Homepage": "https://www.bitcoincash.org" - }, - "marketcap_usd": 0, - "name": "Bitcoin Cash Testnet", - "shortcut": "TBCH", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", "wallet": {} }, - "bitcoin:TBTG": { - "hidden": 1, + "bitcoin:RVN": { "links": { - "Github": "https://github.com/BTCGPU/BTCGPU", - "Homepage": "https://bitcoingold.org" + "Github": "https://github.com/RavenProject/Ravencoin", + "Homepage": "https://ravencoin.org" }, - "marketcap_usd": 0, - "name": "Bitcoin Gold Testnet", - "shortcut": "TBTG", + "marketcap_usd": 96194967, + "name": "Ravencoin", + "shortcut": "RVN", "t1_enabled": "soon", - "t2_enabled": "soon", - "type": "coin", - "wallet": {} - }, - "bitcoin:TDCR": { - "hidden": 1, - "links": { - "Github": "https://github.com/decred/dcrd", - "Homepage": "https://www.decred.org" - }, - "marketcap_usd": 0, - "name": "Decred Testnet", - "shortcut": "TDCR", - "t1_enabled": "yes", - "t2_enabled": "soon", - "type": "coin", - "wallet": {} - }, - "bitcoin:TEST": { - "hidden": 1, - "links": { - "Github": "https://github.com/bitcoin/bitcoin", - "Homepage": "https://bitcoin.org" - }, - "marketcap_usd": 0, - "name": "Testnet", - "shortcut": "TEST", - "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": { - "Trezor": "https://wallet.trezor.io" - } + "wallet": {} }, - "bitcoin:TLTC": { - "hidden": 1, + "bitcoin:SMART": { "links": { - "Github": "https://github.com/litecoin-project/litecoin", - "Homepage": "https://litecoin.org" + "Github": "https://github.com/SmartCash/Core-Smart", + "Homepage": "https://smarcash.cc" }, - "marketcap_usd": 0, - "name": "Litecoin Testnet", - "shortcut": "TLTC", + "marketcap_usd": 19270548, + "name": "SmartCash", + "shortcut": "SMART", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", "wallet": {} }, - "bitcoin:TRC": { - "hidden": 1, - "links": { - "Github": "https://github.com/terracoin/terracoin", - "Homepage": "https://terracoin.io" - }, - "marketcap_usd": 887649, - "name": "Terracoin", - "shortcut": "TRC", - "t1_enabled": "no", - "t2_enabled": "no", - "type": "coin", - "wallet": {} - }, "bitcoin:VIA": { "links": { "Github": "https://github.com/viacoin", "Homepage": "https://viacoin.org" }, - "marketcap_usd": 14650359, + "marketcap_usd": 16673149, "name": "Viacoin", "shortcut": "VIA", "t1_enabled": "yes", @@ -452,7 +362,7 @@ "Github": "https://github.com/vertcoin-project/vertcoin-core", "Homepage": "https://vertcoin.org" }, - "marketcap_usd": 31722206, + "marketcap_usd": 30009469, "name": "Vertcoin", "shortcut": "VTC", "t1_enabled": "yes", @@ -467,11 +377,11 @@ "Github": "https://github.com/myriadcoin/myriadcoin", "Homepage": "https://www.myriadcoin.org" }, - "marketcap_usd": 4802597, + "marketcap_usd": 4907480, "name": "Myriad", "shortcut": "XMY", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "coin", "wallet": {} }, @@ -480,7 +390,7 @@ "Github": "https://github.com/zcoinofficial/zcoin", "Homepage": "https://zcoin.io" }, - "marketcap_usd": 54012535, + "marketcap_usd": 61072744, "name": "Zcoin", "shortcut": "XZC", "t1_enabled": "yes", @@ -496,7 +406,7 @@ "Github": "https://github.com/zcash/zcash", "Homepage": "https://z.cash" }, - "marketcap_usd": 595709082, + "marketcap_usd": 596828873, "name": "Zcash", "shortcut": "ZEC", "t1_enabled": "yes", @@ -511,66 +421,10 @@ "Github": "https://github.com/ZencashOfficial/zen", "Homepage": "https://zencash.com" }, - "marketcap_usd": 66195877, + "marketcap_usd": 68078423, "name": "Zencash", "shortcut": "ZEN", "t1_enabled": "no", - "t2_enabled": "soon", - "type": "coin", - "wallet": {} - }, - "bitcoin:tDASH": { - "hidden": 1, - "links": { - "Github": "https://github.com/dashpay/dash", - "Homepage": "https://www.dash.org" - }, - "marketcap_usd": 0, - "name": "Dash Testnet", - "shortcut": "tDASH", - "t1_enabled": "yes", - "t2_enabled": "soon", - "type": "coin", - "wallet": {} - }, - "bitcoin:tGRS": { - "hidden": 1, - "links": { - "Github": "https://github.com/Groestlcoin/groestlcoin", - "Homepage": "https://www.groestlcoin.org" - }, - "marketcap_usd": 0, - "name": "Groestlcoin Testnet", - "shortcut": "tGRS", - "t1_enabled": "yes", - "t2_enabled": "soon", - "type": "coin", - "wallet": {} - }, - "bitcoin:tSMART": { - "hidden": 1, - "links": { - "Github": "https://github.com/SmartCash/Core-Smart", - "Homepage": "https://smartcash.cc" - }, - "marketcap_usd": 0, - "name": "SmartCash Testnet", - "shortcut": "tSMART", - "t1_enabled": "soon", - "t2_enabled": "soon", - "type": "coin", - "wallet": {} - }, - "bitcoin:tXZC": { - "hidden": 1, - "links": { - "Github": "https://github.com/zcoinofficial/zcoin", - "Homepage": "https://zcoin.io" - }, - "marketcap_usd": 0, - "name": "Zcoin Testnet", - "shortcut": "tXZC", - "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", "wallet": {} @@ -592,54 +446,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:esn:DGT": { - "address": "0x72ea3508D9d817A91465aBb59bE10FEF9857A055", - "hidden": 1, - "links": {}, - "marketcap_usd": 0, - "name": "DGT", - "network": "esn", - "shortcut": "DGT", - "t1_enabled": "soon", - "t2_enabled": "soon", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "erc20:esn:TOPM": { - "address": "0x0146B9dCd9FB2ABC1b5B136C28D20d0037526961", - "hidden": 1, - "links": {}, - "marketcap_usd": 0, - "name": "TOPM", - "network": "esn", - "shortcut": "TOPM", - "t1_enabled": "soon", - "t2_enabled": "soon", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "erc20:etc:BEC": { - "address": "0x085fb4f24031EAedbC2B611AA528f22343eB52Db", - "hidden": 1, - "links": {}, - "marketcap_usd": 0, - "name": "BEC", - "network": "etc", - "shortcut": "BEC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:etc:UNV": { "address": "0x6ADa6F48C815689502C43eC1a59F1b5DD3C04E1F", "links": { @@ -649,8 +455,8 @@ "name": "UniversalCoin", "network": "etc", "shortcut": "UNV", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -704,7 +510,7 @@ "network": "eth", "shortcut": "$HUR", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -733,7 +539,7 @@ "links": { "Homepage": "https://0xbitcoin.org/" }, - "marketcap_usd": 925089, + "marketcap_usd": 1275205, "name": "0xBitcoin", "network": "eth", "shortcut": "0xBTC", @@ -750,7 +556,7 @@ "links": { "Homepage": "https://firstblood.io" }, - "marketcap_usd": 6465201, + "marketcap_usd": 6291727, "name": "FirstBlood", "network": "eth", "shortcut": "1ST", @@ -779,22 +585,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:2DC": { - "address": "0x9fC0583220eB44fAeE9e2dc1E63F39204DDD9090", - "hidden": 1, - "links": {}, - "marketcap_usd": 0, - "name": "DualChain", - "network": "eth", - "shortcut": "2DC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:300": { "address": "0xaEc98A708810414878c3BCDF46Aad31dEd4a4557", "links": { @@ -822,23 +612,6 @@ "network": "eth", "shortcut": "3LT", "t1_enabled": "yes", - "t2_enabled": "soon", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "erc20:eth:A18": { - "address": "0xBDe8f7820b5544a49D34F9dDeaCAbEDC7C0B5adc", - "links": { - "Homepage": "https://apollo18.co.in" - }, - "marketcap_usd": 0, - "name": "Apollo18", - "network": "eth", - "shortcut": "A18", - "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -886,7 +659,7 @@ "links": { "Homepage": "http://accelerator.network" }, - "marketcap_usd": 104653, + "marketcap_usd": 69707, "name": "Accelerator Network", "network": "eth", "shortcut": "ACC", @@ -921,7 +694,7 @@ "Github": "https://github.com/aditus", "Homepage": "https://aditus.net" }, - "marketcap_usd": 387140, + "marketcap_usd": 340275, "name": "Aditus", "network": "eth", "shortcut": "ADI", @@ -956,7 +729,7 @@ "links": { "Homepage": "https://adshares.net" }, - "marketcap_usd": 3777288, + "marketcap_usd": 2524267, "name": "AdShares", "network": "eth", "shortcut": "ADST", @@ -974,7 +747,7 @@ "Github": "https://github.com/adchain", "Homepage": "https://adtoken.com" }, - "marketcap_usd": 8203878, + "marketcap_usd": 9166811, "name": "AdToken", "network": "eth", "shortcut": "ADT", @@ -1010,7 +783,7 @@ "Github": "https://github.com/aeternity", "Homepage": "https://www.aeternity.com/" }, - "marketcap_usd": 294655210, + "marketcap_usd": 275386761, "name": "aeternity", "network": "eth", "shortcut": "AE", @@ -1028,7 +801,7 @@ "Github": "https://github.com/singnet/singnet", "Homepage": "https://singularitynet.io" }, - "marketcap_usd": 26672694, + "marketcap_usd": 31177976, "name": "SingularityNET", "network": "eth", "shortcut": "AGI", @@ -1046,7 +819,7 @@ "Github": "https://github.com/aionnetwork", "Homepage": "https://aion.network/" }, - "marketcap_usd": 102160609, + "marketcap_usd": 98012246, "name": "Aion", "network": "eth", "shortcut": "AION", @@ -1063,7 +836,7 @@ "links": { "Homepage": "https://airtoken.com" }, - "marketcap_usd": 2446267, + "marketcap_usd": 2395789, "name": "AirToken", "network": "eth", "shortcut": "AIR", @@ -1081,7 +854,7 @@ "Github": "https://github.com/AigangNetwork", "Homepage": "https://aigang.network/" }, - "marketcap_usd": 565333, + "marketcap_usd": 424063, "name": "Aigang", "network": "eth", "shortcut": "AIX", @@ -1104,7 +877,7 @@ "network": "eth", "shortcut": "AKC", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -1134,7 +907,7 @@ "Github": "https://github.com/AlisProject", "Homepage": "https://alismedia.jp" }, - "marketcap_usd": 1548109, + "marketcap_usd": 1958556, "name": "ALIS Token", "network": "eth", "shortcut": "ALIS", @@ -1205,12 +978,12 @@ "Github": "https://github.com/amlt-by-coinfirm", "Homepage": "https://amlt.coinfirm.io/" }, - "marketcap_usd": 1561633, + "marketcap_usd": 1081471, "name": "AMLT", "network": "eth", "shortcut": "AMLT", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -1223,7 +996,7 @@ "Github": "https://github.com/amontech", "Homepage": "https://amon.tech" }, - "marketcap_usd": 432886, + "marketcap_usd": 327760, "name": "Amon", "network": "eth", "shortcut": "AMN", @@ -1293,7 +1066,7 @@ "Github": "https://github.com/Oxchild/crowdsale", "Homepage": "https://apisplatform.io" }, - "marketcap_usd": 14825693, + "marketcap_usd": 15080239, "name": "APIS", "network": "eth", "shortcut": "APIS", @@ -1311,7 +1084,7 @@ "Github": "https://github.com/Aptoide/AppCoins-ethereumj", "Homepage": "https://appcoins.io" }, - "marketcap_usd": 10207763, + "marketcap_usd": 11472620, "name": "AppCoins", "network": "eth", "shortcut": "APPC", @@ -1328,7 +1101,7 @@ "links": { "Homepage": "https://aigang.network" }, - "marketcap_usd": 565333, + "marketcap_usd": 424063, "name": "AIGang", "network": "eth", "shortcut": "APT", @@ -1363,7 +1136,7 @@ "links": { "Homepage": "https://www.arbitragect.com" }, - "marketcap_usd": 160046, + "marketcap_usd": 219847, "name": "ArbitrageCT", "network": "eth", "shortcut": "ARCT", @@ -1468,7 +1241,7 @@ "links": { "Homepage": "https://airswap.io" }, - "marketcap_usd": 13348093, + "marketcap_usd": 15404287, "name": "Airswap", "network": "eth", "shortcut": "AST", @@ -1503,7 +1276,7 @@ "Github": "https://github.com/atonomi", "Homepage": "https://atonomi.io" }, - "marketcap_usd": 3568119, + "marketcap_usd": 3396246, "name": "Atonomi", "network": "eth", "shortcut": "ATMI", @@ -1626,12 +1399,12 @@ "Github": "https://www.github.com/axpire", "Homepage": "https://www.axpire.io" }, - "marketcap_usd": 4091122, + "marketcap_usd": 4425539, "name": "aXpire", "network": "eth", "shortcut": "AXPR", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -1690,6 +1463,23 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:BC": { + "address": "0x2ecB13A8c458c379c4d9a7259e202De03c8F3D19", + "links": { + "Homepage": "https://block-chain.com" + }, + "marketcap_usd": 0, + "name": "Block-Chain.com", + "network": "eth", + "shortcut": "BC", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:BCBC": { "address": "0x7367A68039d4704f30BfBF6d948020C3B07DFC59", "links": { @@ -1821,7 +1611,7 @@ "Github": "https://github.com/thebeetoken", "Homepage": "https://www.beetoken.com" }, - "marketcap_usd": 1499364, + "marketcap_usd": 1474865, "name": "Bee Token", "network": "eth", "shortcut": "BEE", @@ -1875,12 +1665,12 @@ "Github": "https://github.com/bethereumproject", "Homepage": "https://www.bethereum.com/" }, - "marketcap_usd": 1181412, + "marketcap_usd": 966089, "name": "Bethereum", "network": "eth", "shortcut": "BETHER", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -1905,6 +1695,41 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:BHR": { + "address": "0xfe5D908c9Ad85f651185dAa6a4770726E2b27d09", + "links": { + "Homepage": "https://www.bether.cc" + }, + "marketcap_usd": 0, + "name": "BETHER", + "network": "eth", + "shortcut": "BHR", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:BITCAR": { + "address": "0x08b4c866aE9D1bE56a06e0C302054B4FFe067b43", + "links": { + "Github": "https://github.com/BitCar-io", + "Homepage": "https://bitcar.io/" + }, + "marketcap_usd": 0, + "name": "BitCar Token", + "network": "eth", + "shortcut": "BITCAR", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:BKB": { "address": "0xB2Bfeb70B903F1BAaC7f2ba2c62934C7e5B974C4", "links": { @@ -1945,7 +1770,7 @@ "Github": "https://github.com/BankEx", "Homepage": "https://bankex.com/" }, - "marketcap_usd": 5550875, + "marketcap_usd": 6124397, "name": "BANKEX", "network": "eth", "shortcut": "BKX", @@ -1981,7 +1806,7 @@ "Github": "https://github.com/BlueCrypto", "Homepage": "https://blueprotocol.com/" }, - "marketcap_usd": 1501335, + "marketcap_usd": 1152349, "name": "Ethereum Blue", "network": "eth", "shortcut": "BLUE", @@ -2016,7 +1841,7 @@ "links": { "Homepage": "https://www.iconomi.net" }, - "marketcap_usd": 31740005, + "marketcap_usd": 34192808, "name": "Iconomi", "network": "eth", "shortcut": "BLX (Iconomi)", @@ -2028,22 +1853,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:BLZ": { - "address": "0x5732046A883704404F284Ce41FfADd5b007FD668", - "hidden": 1, - "links": {}, - "marketcap_usd": 0, - "name": "Bluezelle", - "network": "eth", - "shortcut": "BLZ", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:BMC": { "address": "0xDf6Ef343350780BF8C3410BF062e0C015B1DD671", "links": { @@ -2114,46 +1923,13 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:BNC": { - "address": "0xdD6Bf56CA2ada24c683FAC50E37783e55B57AF9F", - "links": { - "Homepage": "https://bravenewcoin.com" - }, - "marketcap_usd": 0, - "name": "BNC", - "network": "eth", - "shortcut": "BNC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "erc20:eth:BNFT": { - "address": "0xdA2C424Fc98c741c2d4ef2f42897CEfed897CA75", - "hidden": 1, - "links": {}, - "marketcap_usd": 0, - "name": "Benefits Coin", - "network": "eth", - "shortcut": "BNFT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:BNT": { "address": "0x1F573D6Fb3F13d689FF844B4cE37794d79a7FF1C", "links": { "Github": "https://github.com/bancorprotocol", "Homepage": "https://www.bancor.network/discover" }, - "marketcap_usd": 73377374, + "marketcap_usd": 75483136, "name": "Bancor", "network": "eth", "shortcut": "BNT", @@ -2204,7 +1980,7 @@ "links": { "Homepage": "https://bonpay.com" }, - "marketcap_usd": 652429, + "marketcap_usd": 610532, "name": "Bonpay", "network": "eth", "shortcut": "BON", @@ -2250,24 +2026,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:BOX": { - "address": "0xe1A178B681BD05964d3e3Ed33AE731577d9d96dD", - "links": { - "Github": "https://github.com/boxproject", - "Homepage": "https://box.la/" - }, - "marketcap_usd": 0, - "name": "BOX Token", - "network": "eth", - "shortcut": "BOX", - "t1_enabled": "yes", - "t2_enabled": "soon", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:BPT": { "address": "0x327682779bAB2BF4d1337e8974ab9dE8275A7Ca8", "links": { @@ -2308,7 +2066,7 @@ "links": { "Homepage": "http://bro-consortium.io" }, - "marketcap_usd": 41347, + "marketcap_usd": 52763, "name": "BRAT", "network": "eth", "shortcut": "BRAT", @@ -2326,7 +2084,7 @@ "Github": "https://github.com/breadwallet", "Homepage": "https://token.breadapp.com/en" }, - "marketcap_usd": 32307625, + "marketcap_usd": 33542129, "name": "Bread", "network": "eth", "shortcut": "BRD", @@ -2338,6 +2096,23 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:BRLN": { + "address": "0x80046305aaab08F6033b56a360c184391165dc2d", + "links": { + "Homepage": "https://berlin.bounties.network" + }, + "marketcap_usd": 0, + "name": "Berlin Coin", + "network": "eth", + "shortcut": "BRLN", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:BSDC": { "address": "0xF26ef5E0545384b7Dcc0f297F2674189586830DF", "links": { @@ -2448,7 +2223,7 @@ "Github": "https://github.com/bethereumproject", "Homepage": "https://www.bethereum.com/" }, - "marketcap_usd": 1181412, + "marketcap_usd": 966089, "name": "Bethereum", "network": "eth", "shortcut": "BTHR", @@ -2466,7 +2241,7 @@ "Github": "https://github.com/bitcoin-token", "Homepage": "https://btk.community" }, - "marketcap_usd": 611388, + "marketcap_usd": 503434, "name": "Bitcoin Token", "network": "eth", "shortcut": "BTK", @@ -2484,7 +2259,7 @@ "Github": "https://github.com/bytom", "Homepage": "https://bytom.io" }, - "marketcap_usd": 183639296, + "marketcap_usd": 189468700, "name": "Bytom", "network": "eth", "shortcut": "BTM", @@ -2519,7 +2294,7 @@ "Github": "https://github.com/Andyss4545/BitEther", "Homepage": "https://bytom.io" }, - "marketcap_usd": 71786, + "marketcap_usd": 71978, "name": "Bitether", "network": "eth", "shortcut": "BTT", @@ -2548,15 +2323,17 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:BTZ": { - "address": "0xE5f867dE1EA81346df5181b8b48DD6B0BB3357B0", - "hidden": 1, - "links": {}, + "erc20:eth:BTU": { + "address": "0xb683D83a532e2Cb7DFa5275eED3698436371cc9f", + "links": { + "Github": "https://github.com/btuprotocol", + "Homepage": "https://btu-protocol.com" + }, "marketcap_usd": 0, - "name": "BTZ by Bunz", + "name": "BTU Protocol", "network": "eth", - "shortcut": "BTZ", - "t1_enabled": "yes", + "shortcut": "BTU", + "t1_enabled": "soon", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -2581,29 +2358,13 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:BeerCoin": { - "address": "0x74C1E4b8caE59269ec1D85D3D4F324396048F4ac", - "hidden": 1, - "links": {}, - "marketcap_usd": 0, - "name": "BeerCoin", - "network": "eth", - "shortcut": "BeerCoin", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:C20": { "address": "0x26E75307Fc0C021472fEb8F727839531F112f317", "links": { "Github": "https://github.com/cryptotwenty", "Homepage": "https://crypto20.com" }, - "marketcap_usd": 26040361, + "marketcap_usd": 25974641, "name": "Crypto20's Token", "network": "eth", "shortcut": "C20", @@ -2615,22 +2376,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:C8": { - "address": "0xd42debE4eDc92Bd5a3FBb4243e1ecCf6d63A4A5d", - "hidden": 1, - "links": {}, - "marketcap_usd": 0, - "name": "Carboneum", - "network": "eth", - "shortcut": "C8", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:CAG": { "address": "0x7d4b8Cce0591C9044a22ee543533b72E976E36C3", "links": { @@ -2721,7 +2466,7 @@ "links": { "Homepage": "https://cashaa.com" }, - "marketcap_usd": 5519548, + "marketcap_usd": 5515021, "name": "Cashaa", "network": "eth", "shortcut": "CAS", @@ -2795,7 +2540,7 @@ "network": "eth", "shortcut": "CBIX", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -2952,7 +2697,7 @@ "network": "eth", "shortcut": "CET", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -2969,7 +2714,7 @@ "network": "eth", "shortcut": "CFC", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -3190,7 +2935,7 @@ "links": { "Homepage": "https://cindicator.com" }, - "marketcap_usd": 33986046, + "marketcap_usd": 34737357, "name": "Cindicator", "network": "eth", "shortcut": "CND", @@ -3297,7 +3042,7 @@ "Github": "https://github.com/CoinvestHQ", "Homepage": "https://coinve.st" }, - "marketcap_usd": 75053, + "marketcap_usd": 73395, "name": "Coinvest V2 Token", "network": "eth", "shortcut": "COIN", @@ -3319,7 +3064,7 @@ "network": "eth", "shortcut": "CORI", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -3331,7 +3076,7 @@ "links": { "Homepage": "https://covesting.io/" }, - "marketcap_usd": 9029377, + "marketcap_usd": 14211090, "name": "Covesting", "network": "eth", "shortcut": "COV", @@ -3361,13 +3106,31 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:CPLO": { + "address": "0x7064aAb39A0Fcf7221c3396719D0917a65E35515", + "links": { + "Github": "https://github.com/Cpollo", + "Homepage": "https://cpollo.info/" + }, + "marketcap_usd": 1637762, + "name": "CPOLLO", + "network": "eth", + "shortcut": "CPLO", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:CPY": { "address": "0xf44745fBd41F6A1ba151df190db0564c5fCc4410", "links": { "Github": "https://github.com/aditus", "Homepage": "https://copytrack.io" }, - "marketcap_usd": 1371486, + "marketcap_usd": 1339257, "name": "COPYTRACK", "network": "eth", "shortcut": "CPY", @@ -3437,7 +3200,7 @@ "links": { "Homepage": "https://bitbounce.io" }, - "marketcap_usd": 22334817, + "marketcap_usd": 18472144, "name": "Credo / Bitbounce", "network": "eth", "shortcut": "CREDO", @@ -3460,7 +3223,7 @@ "network": "eth", "shortcut": "CRGO", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -3477,7 +3240,7 @@ "network": "eth", "shortcut": "CRMT", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -3565,22 +3328,6 @@ "network": "eth", "shortcut": "CTGC", "t1_enabled": "yes", - "t2_enabled": "soon", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "erc20:eth:CTL": { - "address": "0xBf4cFD7d1eDeeEA5f6600827411B41A21eB08abd", - "hidden": 1, - "links": {}, - "marketcap_usd": 0, - "name": "CTL", - "network": "eth", - "shortcut": "CTL", - "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -3663,7 +3410,7 @@ "Github": "https://github.com/cargoxio", "Homepage": "https://cargox.io" }, - "marketcap_usd": 2695053, + "marketcap_usd": 2576821, "name": "CargoX", "network": "eth", "shortcut": "CXO", @@ -3680,12 +3427,12 @@ "links": { "Homepage": "https://cyberfmradio.com" }, - "marketcap_usd": 1138039, + "marketcap_usd": 953451, "name": "CyberFM", "network": "eth", "shortcut": "CYFM", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -3697,7 +3444,7 @@ "links": { "Homepage": "https://ccrb.io" }, - "marketcap_usd": 507289, + "marketcap_usd": 697064, "name": "CryptoCarbon", "network": "eth", "shortcut": "CryptoCarbon", @@ -3731,7 +3478,7 @@ "links": { "Homepage": "https://dadi.cloud" }, - "marketcap_usd": 5897414, + "marketcap_usd": 5995656, "name": "DADI", "network": "eth", "shortcut": "DADI", @@ -3748,7 +3495,7 @@ "links": { "Homepage": "http://www.dalecoin.org" }, - "marketcap_usd": 27158, + "marketcap_usd": 26777, "name": "DaleCoin", "network": "eth", "shortcut": "DALC", @@ -3836,7 +3583,7 @@ "Github": "https://github.com/streamr-dev", "Homepage": "https://www.streamr.com" }, - "marketcap_usd": 50098, + "marketcap_usd": 77059, "name": "DATACoin", "network": "eth", "shortcut": "DATACoin", @@ -3925,12 +3672,12 @@ "Github": "https://github.com/DistributedBanking/DCC", "Homepage": "http://dcc.finance" }, - "marketcap_usd": 8986242, + "marketcap_usd": 8453014, "name": "Distributed Credit Chain", "network": "eth", "shortcut": "DCC", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -3960,7 +3707,7 @@ "Github": "https://github.com/Dentacoin", "Homepage": "https://dentacoin.com" }, - "marketcap_usd": 75018351, + "marketcap_usd": 71964016, "name": "Dentacoin", "network": "eth", "shortcut": "DCN", @@ -4030,7 +3777,7 @@ "links": { "Homepage": "https://www.dentwireless.com" }, - "marketcap_usd": 37013977, + "marketcap_usd": 43552570, "name": "DENT", "network": "eth", "shortcut": "DENT", @@ -4048,7 +3795,7 @@ "Github": "https://github.com/digipulseio", "Homepage": "https://www.digipulse.io" }, - "marketcap_usd": 64541, + "marketcap_usd": 39156, "name": "DigiPulse", "network": "eth", "shortcut": "DGPT", @@ -4066,12 +3813,12 @@ "Github": "https://github.com/dragonglasscom", "Homepage": "https://dragonglass.com/" }, - "marketcap_usd": 94785, + "marketcap_usd": 92722, "name": "Dragonglass", "network": "eth", "shortcut": "DGS", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -4089,7 +3836,7 @@ "network": "eth", "shortcut": "DGTX", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -4102,7 +3849,7 @@ "Github": "https://github.com/DigixGlobal", "Homepage": "https://digix.global" }, - "marketcap_usd": 2631585, + "marketcap_usd": 2814702, "name": "Digix Gold Token", "network": "eth", "shortcut": "DGX", @@ -4125,7 +3872,7 @@ "network": "eth", "shortcut": "DGX1", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -4137,7 +3884,7 @@ "links": { "Homepage": "https://etheroll.com" }, - "marketcap_usd": 3317732, + "marketcap_usd": 3051263, "name": "Etheroll", "network": "eth", "shortcut": "DICE", @@ -4149,22 +3896,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:DIP": { - "address": "0xc719d010B63E5bbF2C0551872CD5316ED26AcD83", - "hidden": 1, - "links": {}, - "marketcap_usd": 0, - "name": "Decentralized Insurance Protocol", - "network": "eth", - "shortcut": "DIP", - "t1_enabled": "yes", - "t2_enabled": "soon", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:DIVX": { "address": "0x13f11C9905A08ca76e3e853bE63D4f0944326C72", "links": { @@ -4182,22 +3913,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:DKP": { - "address": "0xBA187B09fFA8DDdc80d2571eD3cbC4Be0Af69E0c", - "hidden": 1, - "links": {}, - "marketcap_usd": 0, - "name": "Draggin Karma Points", - "network": "eth", - "shortcut": "DKP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:DLT": { "address": "0x07e3c70653548B04f0A75970C1F81B4CBbFB606f", "links": { @@ -4315,7 +4030,7 @@ "network": "eth", "shortcut": "DRVH", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -4349,8 +4064,8 @@ "name": "Disciplina Token", "network": "eth", "shortcut": "DSCP", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -4363,7 +4078,7 @@ "Github": "https://github.com/dethertech", "Homepage": "https://dether.io" }, - "marketcap_usd": 1626455, + "marketcap_usd": 1068799, "name": "dether", "network": "eth", "shortcut": "DTH", @@ -4433,7 +4148,7 @@ "Github": "https://github.com/elangindonesia/EagleCoin", "Homepage": "https://eaglepay.io" }, - "marketcap_usd": 3457, + "marketcap_usd": 0, "name": "EagleCoin", "network": "eth", "shortcut": "EAGLE", @@ -4479,23 +4194,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:ECP": { - "address": "0xAEA1C18A992984831002D0cf90E291FB52d72649", - "links": { - "Homepage": "https://ecryptotokens.com" - }, - "marketcap_usd": 0, - "name": "ECRYPTO COIN", - "network": "eth", - "shortcut": "ECP", - "t1_enabled": "yes", - "t2_enabled": "soon", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:EDC": { "address": "0xFA1DE2Ee97e4c10C94C91Cb2b5062b89Fb140b82", "links": { @@ -4518,7 +4216,7 @@ "links": { "Homepage": "https://edgeless.io" }, - "marketcap_usd": 14559573, + "marketcap_usd": 14133260, "name": "Edgeless", "network": "eth", "shortcut": "EDG", @@ -4535,7 +4233,7 @@ "links": { "Homepage": "https://eidoo.io" }, - "marketcap_usd": 33219767, + "marketcap_usd": 33017187, "name": "Eidoo", "network": "eth", "shortcut": "EDO", @@ -4558,24 +4256,6 @@ "network": "eth", "shortcut": "EDR", "t1_enabled": "yes", - "t2_enabled": "soon", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "erc20:eth:EGT": { - "address": "0x8e1b448EC7aDFc7Fa35FC2e885678bD323176E34", - "links": { - "Github": "https://github.com/egretia", - "Homepage": "https://www.egretia.io" - }, - "marketcap_usd": 0, - "name": "Egretia Token", - "network": "eth", - "shortcut": "EGT", - "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -4642,7 +4322,7 @@ "Github": "https://github.com/eltcoin", "Homepage": "http://www.eltcoin.tech/" }, - "marketcap_usd": 130768, + "marketcap_usd": 91568, "name": "ELTCOIN", "network": "eth", "shortcut": "ELTCOIN", @@ -4665,7 +4345,7 @@ "network": "eth", "shortcut": "ELY", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -4814,17 +4494,16 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:EOS": { - "address": "0x86Fa049857E0209aa7D9e616F7eb3b3B78ECfdb0", - "hidden": 1, + "erc20:eth:EPX": { + "address": "0x35BAA72038F127f9f8C8f9B491049f64f377914d", "links": { - "Homepage": "https://eos.io" + "Github": "https://github.com/EthPokerIO/ethpokerIO", + "Homepage": "https://ethPoker.io" }, - "marketcap_usd": 4844398678, - "name": "EOS", + "marketcap_usd": 0, + "name": "ethPoker.io EPX", "network": "eth", - "notes": "EOS has a mainnet now", - "shortcut": "EOS", + "shortcut": "EPX", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -4833,18 +4512,18 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:EPX": { - "address": "0x35BAA72038F127f9f8C8f9B491049f64f377914d", + "erc20:eth:ERT": { + "address": "0x92A5B04D0ED5D94D7a193d1d334D3D16996f4E13", "links": { - "Github": "https://github.com/EthPokerIO/ethpokerIO", - "Homepage": "https://ethPoker.io" + "Github": "https://github.com/Krishtopa/ContractEristica", + "Homepage": "https://eristica.com/" }, - "marketcap_usd": 0, - "name": "ethPoker.io EPX", + "marketcap_usd": 1037661, + "name": "Eristica", "network": "eth", - "shortcut": "EPX", - "t1_enabled": "yes", - "t2_enabled": "yes", + "shortcut": "ERT", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -4874,7 +4553,7 @@ "links": { "Homepage": "https://www.ethbits.com" }, - "marketcap_usd": 1058177, + "marketcap_usd": 1137828, "name": "Ethbits", "network": "eth", "shortcut": "ETBS", @@ -4973,16 +4652,15 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:EVN": { - "address": "0xd780Ae2Bf04cD96E577D3D014762f831d97129d0", + "erc20:eth:EVX": { + "address": "0xf3Db5Fa2C66B7aF3Eb0C0b782510816cbe4813b8", "links": { - "Github": "https://github.com/envion/Smart-Contracts", - "Homepage": "https://envion.org" + "Homepage": "https://everex.io " }, "marketcap_usd": 0, - "name": "Envion AG", + "name": "EVX Token", "network": "eth", - "shortcut": "EVN", + "shortcut": "EVX", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -4991,17 +4669,18 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:EVX": { - "address": "0xf3Db5Fa2C66B7aF3Eb0C0b782510816cbe4813b8", + "erc20:eth:EWO": { + "address": "0x444997b7e7fC830E20089afea3078cd518fCF2A2", "links": { - "Homepage": "https://everex.io " + "Github": "https://github.com/ewoplace", + "Homepage": "https://www.ewoplace.com/" }, "marketcap_usd": 0, - "name": "EVX Token", + "name": "EWO Token", "network": "eth", - "shortcut": "EVX", - "t1_enabled": "yes", - "t2_enabled": "yes", + "shortcut": "EWO", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -5026,22 +4705,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:EXY": { - "address": "0x5c743a35E903F6c584514ec617ACEe0611Cf44f3", - "hidden": 1, - "links": {}, - "marketcap_usd": 3341177, - "name": "Experty", - "network": "eth", - "shortcut": "EXY", - "t1_enabled": "yes", - "t2_enabled": "soon", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:E\u20b9": { "address": "0xb67734521eAbBE9C773729dB73E16CC2dfb20A58", "links": { @@ -5052,8 +4715,8 @@ "name": "eRupee", "network": "eth", "shortcut": "E\u20b9", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -5088,7 +4751,7 @@ "network": "eth", "shortcut": "FAN", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -5101,7 +4764,7 @@ "Github": "https://github.com/FortKnoxster", "Homepage": "https://fortknoxster.com" }, - "marketcap_usd": 590325, + "marketcap_usd": 541345, "name": "Knoxstertoken", "network": "eth", "shortcut": "FKX", @@ -5205,7 +4868,7 @@ "Github": "https://github.com/FundRequest", "Homepage": "https://fundrequest.io" }, - "marketcap_usd": 336279, + "marketcap_usd": 359222, "name": "FundRequest", "network": "eth", "shortcut": "FND", @@ -5275,12 +4938,12 @@ "Github": "https://github.com/futuraxproject", "Homepage": "https://futurax.global" }, - "marketcap_usd": 1085292, + "marketcap_usd": 552684, "name": "FUTURAX", "network": "eth", "shortcut": "FTXT", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -5310,7 +4973,7 @@ "links": { "Homepage": "https://funfair.io" }, - "marketcap_usd": 76438642, + "marketcap_usd": 79338460, "name": "Funfair", "network": "eth", "shortcut": "FUN", @@ -5328,12 +4991,12 @@ "Github": "https://github.com/futuraxproject", "Homepage": "https://futurax.global" }, - "marketcap_usd": 1085292, + "marketcap_usd": 552684, "name": "FUTURAX", "network": "eth", "shortcut": "FXC", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -5363,7 +5026,7 @@ "Github": "https://github.com/BlockchainLabsNZ/gambit", "Homepage": "http://gambitcrypto.com" }, - "marketcap_usd": 3164274, + "marketcap_usd": 3062906, "name": "Gambit", "network": "eth", "shortcut": "GAM", @@ -5486,7 +5149,7 @@ "Github": "https://github.com/daostack", "Homepage": "https://daostack.io" }, - "marketcap_usd": 3414625, + "marketcap_usd": 2885868, "name": "DAOstack", "network": "eth", "shortcut": "GEN", @@ -5608,7 +5271,7 @@ "links": { "Homepage": "https://gridplus.io/token-sale" }, - "marketcap_usd": 7604175, + "marketcap_usd": 6352291, "name": "GRID", "network": "eth", "shortcut": "GRID", @@ -5648,7 +5311,7 @@ "network": "eth", "shortcut": "GSE", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -5697,7 +5360,7 @@ "Github": "https://github.com/GIFTO-io", "Homepage": "https://gifto.io/" }, - "marketcap_usd": 37302521, + "marketcap_usd": 35357355, "name": "Gifto", "network": "eth", "shortcut": "GTO", @@ -5720,7 +5383,7 @@ "network": "eth", "shortcut": "GULD", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -5733,7 +5396,7 @@ "Github": "https://github.com/GenesisVision", "Homepage": "https://genesis.vision" }, - "marketcap_usd": 55573506, + "marketcap_usd": 52967974, "name": "Genesis Vision", "network": "eth", "shortcut": "GVT", @@ -5825,7 +5488,7 @@ "network": "eth", "shortcut": "HAPPY", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -5855,7 +5518,7 @@ "Github": "https://github.com/havven/havven", "Homepage": "https://havven.io" }, - "marketcap_usd": 8573406, + "marketcap_usd": 7969691, "name": "Havven", "network": "eth", "shortcut": "HAV", @@ -5912,7 +5575,7 @@ "network": "eth", "shortcut": "HIBT", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -5972,6 +5635,23 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:HLX": { + "address": "0x66eb65D7Ab8e9567ba0fa6E37c305956c5341574", + "links": { + "Homepage": "https://helex.world" + }, + "marketcap_usd": 0, + "name": "Helex", + "network": "eth", + "shortcut": "HLX", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:HMQ": { "address": "0xcbCC0F036ED4788F63FC0fEE32873d6A7487b908", "links": { @@ -5994,7 +5674,7 @@ "links": { "Homepage": "https://github.com/arachnid/hodlcoin" }, - "marketcap_usd": 210726, + "marketcap_usd": 176562, "name": "HODLCoin", "network": "eth", "shortcut": "HODL", @@ -6112,22 +5792,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:ICN": { - "address": "0x888666CA69E0f178DED6D75b5726Cee99A87D698", - "hidden": 1, - "links": {}, - "marketcap_usd": 0, - "name": "ICN", - "network": "eth", - "shortcut": "ICN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:ICO": { "address": "0xa33e729bf4fdeb868B534e1f20523463D9C46bEe", "links": { @@ -6150,7 +5814,7 @@ "links": { "Homepage": "https://icos.icobox.io" }, - "marketcap_usd": 1219554, + "marketcap_usd": 1597013, "name": "ICOS", "network": "eth", "shortcut": "ICOS", @@ -6167,7 +5831,7 @@ "links": { "Homepage": "https://www.icon.foundation" }, - "marketcap_usd": 265205324, + "marketcap_usd": 239919279, "name": "ICON", "network": "eth", "shortcut": "ICX", @@ -6201,7 +5865,7 @@ "links": { "Homepage": "https://investfeed.com" }, - "marketcap_usd": 2054415, + "marketcap_usd": 2158583, "name": "InvestFeed", "network": "eth", "shortcut": "IFT", @@ -6265,22 +5929,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:IMT": { - "address": "0x22E5F62D0FA19974749faa194e3d3eF6d89c08d7", - "hidden": 1, - "links": {}, - "marketcap_usd": 0, - "name": "IMT", - "network": "eth", - "shortcut": "IMT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:IND": { "address": "0xf8e386EDa857484f5a12e4B5DAa9984E06E73705", "links": { @@ -6298,22 +5946,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:INRM": { - "address": "0x48e5413b73add2434e47504E2a22d14940dBFe78", - "hidden": 1, - "links": {}, - "marketcap_usd": 0, - "name": "Integrated Money", - "network": "eth", - "shortcut": "INRM", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:INS": { "address": "0x5B2e4a700dfBc560061e957edec8F6EeEb74a320", "links": { @@ -6336,7 +5968,7 @@ "links": { "Homepage": "https://insights.network" }, - "marketcap_usd": 1446032, + "marketcap_usd": 1409522, "name": "Insights Network", "network": "eth", "shortcut": "INSTAR", @@ -6353,7 +5985,7 @@ "links": { "Homepage": "https://internxt.io" }, - "marketcap_usd": 1490281, + "marketcap_usd": 1356594, "name": "Internxt", "network": "eth", "shortcut": "INXT", @@ -6370,7 +6002,7 @@ "links": { "Homepage": "https://iost.io/" }, - "marketcap_usd": 99252486, + "marketcap_usd": 103019929, "name": "IOSToken", "network": "eth", "shortcut": "IOST", @@ -6441,12 +6073,12 @@ "Github": "https://github.com/iqeon", "Homepage": "https://iqeon.io/" }, - "marketcap_usd": 536572, + "marketcap_usd": 480816, "name": "IQeon", "network": "eth", "shortcut": "IQN", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -6464,7 +6096,7 @@ "network": "eth", "shortcut": "IST34", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -6477,7 +6109,7 @@ "Github": "https://github.com/IoTChainCode", "Homepage": "https://iotchain.io/" }, - "marketcap_usd": 14328647, + "marketcap_usd": 13192072, "name": "IoT Chain", "network": "eth", "shortcut": "ITC", @@ -6611,38 +6243,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:JetCoins": { - "address": "0x773450335eD4ec3DB45aF74f34F2c85348645D39", - "hidden": 1, - "links": {}, - "marketcap_usd": 0, - "name": "JetCoins", - "network": "eth", - "shortcut": "JetCoins", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "erc20:eth:KEE": { - "address": "0x72D32ac1c5E66BfC5b08806271f8eEF915545164", - "hidden": 1, - "links": {}, - "marketcap_usd": 0, - "name": "CryptoKEE", - "network": "eth", - "shortcut": "KEE", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:KICK": { "address": "0x27695E09149AdC738A978e9A678F99E4c39e9eb9", "links": { @@ -6667,7 +6267,7 @@ "Github": "https://github.com/kikinteractive/kin-token", "Homepage": "https://kin.kik.com" }, - "marketcap_usd": 43335013, + "marketcap_usd": 40498506, "name": "Kin Foundation", "network": "eth", "shortcut": "KIN", @@ -6685,7 +6285,7 @@ "Github": "https://github.com/KyberNetwork", "Homepage": "https://kyber.network" }, - "marketcap_usd": 55442294, + "marketcap_usd": 56467485, "name": "Kyber Network", "network": "eth", "shortcut": "KNC", @@ -6721,7 +6321,7 @@ "Github": "https://github.com/Cryptense/", "Homepage": "https://kryll.io/" }, - "marketcap_usd": 943632, + "marketcap_usd": 879722, "name": "Kryll", "network": "eth", "shortcut": "KRL", @@ -6733,6 +6333,23 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:KUE": { + "address": "0xdf1338FbAfe7aF1789151627B886781ba556eF9a", + "links": { + "Homepage": "https://ico.kuende.com" + }, + "marketcap_usd": 0, + "name": "Kuende Token", + "network": "eth", + "shortcut": "KUE", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:KZN": { "address": "0x9541FD8B9b5FA97381783783CeBF2F5fA793C262", "links": { @@ -6756,7 +6373,7 @@ "Github": "https://github.com/latoken", "Homepage": "https://latoken.com/" }, - "marketcap_usd": 6543907, + "marketcap_usd": 5754742, "name": "LATOKEN", "network": "eth", "shortcut": "LA", @@ -6778,24 +6395,7 @@ "network": "eth", "shortcut": "LALA", "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "erc20:eth:LCT": { - "address": "0x4A37A91eec4C97F9090CE66d21D3B3Aadf1aE5aD", - "links": { - "Homepage": "http://liquorchain.io" - }, - "marketcap_usd": 0, - "name": "LiquorChain Token", - "network": "eth", - "shortcut": "LCT", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -6807,7 +6407,7 @@ "links": { "Homepage": "https://www.leadcoin.network/" }, - "marketcap_usd": 379428, + "marketcap_usd": 492691, "name": "LEADCOIN", "network": "eth", "shortcut": "LDC", @@ -6911,7 +6511,7 @@ "links": { "Homepage": "http://www.lifelabs.io" }, - "marketcap_usd": 1518704, + "marketcap_usd": 1482957, "name": "LIFE", "network": "eth", "shortcut": "LIFE", @@ -6963,7 +6563,7 @@ "Github": "https://github.com/lendingblock", "Homepage": "https://lendingblock.com" }, - "marketcap_usd": 2544610, + "marketcap_usd": 3502600, "name": "Lendingblock", "network": "eth", "shortcut": "LND", @@ -6980,7 +6580,7 @@ "links": { "Homepage": "https://LockChain.co" }, - "marketcap_usd": 5503455, + "marketcap_usd": 10758855, "name": "LockChain", "network": "eth", "shortcut": "LOC", @@ -6998,7 +6598,7 @@ "Github": "http://github.com/locipro/loci-coin-sale", "Homepage": "https://locipro.com" }, - "marketcap_usd": 858517, + "marketcap_usd": 1282333, "name": "LOCIcoin", "network": "eth", "shortcut": "LOCI", @@ -7054,7 +6654,7 @@ "network": "eth", "shortcut": "LOOK", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -7079,24 +6679,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:LOVE": { - "address": "0x5a276Aeb77bCfDAc8Ac6f31BBC7416AE1A85eEF2", - "hidden": 1, - "links": { - "Github": "https://github.com/GNSPS" - }, - "marketcap_usd": 0, - "name": "Love", - "network": "eth", - "shortcut": "LOVE", - "t1_enabled": "yes", - "t2_enabled": "soon", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:LPT": { "address": "0x58b6A8A3302369DAEc383334672404Ee733aB239", "links": { @@ -7313,7 +6895,7 @@ "Github": "https://github.com/theembermine", "Homepage": "https://embermine.com/" }, - "marketcap_usd": 113282, + "marketcap_usd": 104407, "name": "Embers", "network": "eth", "shortcut": "MBRS", @@ -7325,29 +6907,13 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:MCAP": { - "address": "0x93E682107d1E9defB0b5ee701C71707a4B2E46Bc", - "hidden": 1, - "links": {}, - "marketcap_usd": 64328, - "name": "MCAP", - "network": "eth", - "shortcut": "MCAP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:MCI": { "address": "0x138A8752093F4f9a79AaeDF48d4B9248fab93c9C", "links": { "Github": "https://github.com/musiconomi/", "Homepage": "https://musiconomi.com/" }, - "marketcap_usd": 304711, + "marketcap_usd": 283843, "name": "Musiconomi", "network": "eth", "shortcut": "MCI", @@ -7393,24 +6959,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:MESH": { - "address": "0x01F2AcF2914860331C1Cb1a9AcecDa7475e06Af8", - "links": { - "Github": "https://github.com/MeshBox", - "Homepage": "https://meshbox.network" - }, - "marketcap_usd": 0, - "name": "Meshbox", - "network": "eth", - "shortcut": "MESH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:MEST": { "address": "0x5B8D43FfdE4a2982B9A5387cDF21D54Ead64Ac8d", "links": { @@ -7458,7 +7006,7 @@ "network": "eth", "shortcut": "MFT", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -7470,12 +7018,12 @@ "links": { "Homepage": "https://mftu.net" }, - "marketcap_usd": 57143, + "marketcap_usd": 50142, "name": "Mainstream For The Underground", "network": "eth", "shortcut": "MFTU", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -7576,7 +7124,7 @@ "Github": "https://github.com/modum-io", "Homepage": "https://modum.io" }, - "marketcap_usd": 20617561, + "marketcap_usd": 17146887, "name": "Modum", "network": "eth", "shortcut": "MOD", @@ -7645,7 +7193,7 @@ "links": { "Homepage": "https://mothership.cx" }, - "marketcap_usd": 9469058, + "marketcap_usd": 12756464, "name": "Mothership", "network": "eth", "shortcut": "MSP", @@ -7662,7 +7210,7 @@ "links": { "Homepage": "http://www.monetha.io" }, - "marketcap_usd": 7536949, + "marketcap_usd": 8462419, "name": "Monetha", "network": "eth", "shortcut": "MTH", @@ -7782,7 +7330,7 @@ "Github": "https://github.com/Merculet", "Homepage": "https://www.merculet.io" }, - "marketcap_usd": 2732137, + "marketcap_usd": 3747019, "name": "Merculet", "network": "eth", "shortcut": "MVP", @@ -7811,28 +7359,12 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:MYD": { - "address": "0xf7e983781609012307f2514f63D526D83D24F466", - "hidden": 1, - "links": {}, - "marketcap_usd": 0, - "name": "MYD", - "network": "eth", - "shortcut": "MYD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:MYST": { "address": "0xa645264C5603E96c3b0B078cdab68733794B0A71", "links": { "Homepage": "https://mysterium.network" }, - "marketcap_usd": 3190573, + "marketcap_usd": 2689659, "name": "Mysterium", "network": "eth", "shortcut": "MYST", @@ -7867,7 +7399,7 @@ "Github": "https://github.com/NANJ-COIN", "Homepage": "https://nanjcoin.com/" }, - "marketcap_usd": 9622418, + "marketcap_usd": 9416151, "name": "NANJCOIN", "network": "eth", "shortcut": "NANJ", @@ -7921,7 +7453,7 @@ "Github": "https://github.com/polyswarm", "Homepage": "https://polyswarm.io" }, - "marketcap_usd": 43355009, + "marketcap_usd": 40928901, "name": "Nectar", "network": "eth", "shortcut": "NCT", @@ -7938,7 +7470,7 @@ "links": { "Homepage": "https://neverdie.com" }, - "marketcap_usd": 408659, + "marketcap_usd": 510348, "name": "Neverdie", "network": "eth", "shortcut": "NDC", @@ -7968,12 +7500,29 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:NEEO": { + "address": "0xd8446236FA95b9b5f9fd0f8E7Df1a944823c683d", + "links": { + "Homepage": "http://neeoico.com/" + }, + "marketcap_usd": 0, + "name": "NEEO", + "network": "eth", + "shortcut": "NEEO", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:NET": { "address": "0xcfb98637bcae43C13323EAa1731cED2B716962fD", "links": { "Homepage": "https://nimiq.com" }, - "marketcap_usd": 2392235, + "marketcap_usd": 4011953, "name": "NIMIQ", "network": "eth", "shortcut": "NET", @@ -8080,7 +7629,7 @@ "Github": "https://github.com/NperProject", "Homepage": "https://nper.io" }, - "marketcap_usd": 1881133, + "marketcap_usd": 1644112, "name": "NPER", "network": "eth", "shortcut": "NPER", @@ -8120,7 +7669,7 @@ "network": "eth", "shortcut": "NUG", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -8132,7 +7681,7 @@ "links": { "Homepage": "https://nuls.io" }, - "marketcap_usd": 44484694, + "marketcap_usd": 42905763, "name": "NULS", "network": "eth", "shortcut": "NULS", @@ -8166,7 +7715,7 @@ "links": { "Homepage": "https://beyond-the-void.net" }, - "marketcap_usd": 1288740, + "marketcap_usd": 1401659, "name": "Nexium", "network": "eth", "shortcut": "NxC", @@ -8200,7 +7749,7 @@ "links": { "Homepage": "https://www.openanx.org/en" }, - "marketcap_usd": 6147963, + "marketcap_usd": 7242092, "name": "OAX", "network": "eth", "shortcut": "OAX", @@ -8241,7 +7790,7 @@ "network": "eth", "shortcut": "ODE", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -8295,7 +7844,7 @@ "network": "eth", "shortcut": "OLT", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -8331,7 +7880,7 @@ "network": "eth", "shortcut": "OMT", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -8401,7 +7950,7 @@ "network": "eth", "shortcut": "ORCA", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -8414,7 +7963,7 @@ "Github": "https://github.com/OpenSTFoundation", "Homepage": "https://simpletoken.org" }, - "marketcap_usd": 19337612, + "marketcap_usd": 20264478, "name": "Simple Token 'OST'", "network": "eth", "shortcut": "OST", @@ -8432,12 +7981,12 @@ "Github": "https://github.com/owndata", "Homepage": "https://owndata.network" }, - "marketcap_usd": 1164328, + "marketcap_usd": 827468, "name": "OWNDATA", "network": "eth", "shortcut": "OWN", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -8508,24 +8057,6 @@ "network": "eth", "shortcut": "PASS", "t1_enabled": "yes", - "t2_enabled": "soon", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "erc20:eth:PAT": { - "address": "0xBB1fA4FdEB3459733bF67EbC6f893003fA976a82", - "links": { - "Github": "https://github.com/Bit-Nation/", - "Homepage": "https://bitnation.co" - }, - "marketcap_usd": 0, - "name": "Pangea Arbitration Token", - "network": "eth", - "shortcut": "PAT", - "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -8568,12 +8099,30 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:PAX": { + "address": "0x8E870D67F660D95d5be530380D0eC0bd388289E1", + "links": { + "Github": "https://github.com/paxosglobal", + "Homepage": "https://www.paxos.com/standard" + }, + "marketcap_usd": 0, + "name": "Paxos Standard (PAX)", + "network": "eth", + "shortcut": "PAX", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:PAY": { "address": "0xB97048628DB6B661D4C2aA833e95Dbe1A905B280", "links": { "Homepage": "http://www.tenx.tech" }, - "marketcap_usd": 59741802, + "marketcap_usd": 65065407, "name": "TenX", "network": "eth", "shortcut": "PAY", @@ -8619,30 +8168,13 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:PCH": { - "address": "0xfcAC7A7515e9A9d7619fA77A1fa738111f66727e", - "links": { - "Homepage": "https://www.pitchapply.com" - }, - "marketcap_usd": 0, - "name": "PITCH", - "network": "eth", - "shortcut": "PCH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:PCL": { "address": "0x3618516F45CD3c913F81F9987AF41077932Bc40d", "links": { "Github": "https://github.com/PeculiumPCL/Peculium", "Homepage": "https://peculium.io" }, - "marketcap_usd": 2026335, + "marketcap_usd": 2077821, "name": "Peculium", "network": "eth", "shortcut": "PCL", @@ -8672,15 +8204,17 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:PEG": { - "address": "0x8Ae56a6850a7cbeaC3c3Ab2cB311e7620167eAC8", - "hidden": 1, - "links": {}, + "erc20:eth:PDATA": { + "address": "0x0db03B6CDe0B2d427C64a04FeAfd825938368f1F", + "links": { + "Github": "https://github.com/opiria-pdata/Pdata", + "Homepage": "https://opiria.io" + }, "marketcap_usd": 0, - "name": "PEG Network Token", + "name": "PDATA", "network": "eth", - "shortcut": "PEG", - "t1_enabled": "yes", + "shortcut": "PDATA", + "t1_enabled": "soon", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -8706,24 +8240,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:PETRO": { - "address": "0xeC18f898B4076A3E18f1089D33376CC380BDe61D", - "hidden": 1, - "links": { - "Github": "https://github.com/getpetro" - }, - "marketcap_usd": 0, - "name": "PETRO", - "network": "eth", - "shortcut": "PETRO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:PEXT": { "address": "0x55c2A0C171D920843560594dE3d6EEcC09eFc098", "links": { @@ -8797,7 +8313,7 @@ "links": { "Homepage": "https://polybius.io" }, - "marketcap_usd": 6054067, + "marketcap_usd": 6512080, "name": "Polybius", "network": "eth", "shortcut": "PLBT", @@ -8838,7 +8354,7 @@ "network": "eth", "shortcut": "PLS", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -8862,6 +8378,24 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:PNK": { + "address": "0x93ED3FBe21207Ec2E8f2d3c3de6e058Cb73Bc04d", + "links": { + "Github": "https://github.com/kleros", + "Homepage": "https://kleros.io" + }, + "marketcap_usd": 0, + "name": "Pinakion", + "network": "eth", + "shortcut": "PNK", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:POE": { "address": "0x0e0989b1f9B8A38983c2BA8053269Ca62Ec9B195", "links": { @@ -8901,7 +8435,7 @@ "links": { "Homepage": "https://polymath.network" }, - "marketcap_usd": 73399637, + "marketcap_usd": 91175858, "name": "Polymath Network", "network": "eth", "shortcut": "POLY", @@ -8936,7 +8470,7 @@ "Github": "https://github.com/PoSToken", "Homepage": "https://postoken.org" }, - "marketcap_usd": 24135, + "marketcap_usd": 24131, "name": "PoSToken", "network": "eth", "shortcut": "POS", @@ -8970,7 +8504,7 @@ "links": { "Homepage": "https://www.paypie.com" }, - "marketcap_usd": 9753588, + "marketcap_usd": 12549965, "name": "PayPie", "network": "eth", "shortcut": "PPP", @@ -8987,7 +8521,7 @@ "links": { "Homepage": "https://populous.co" }, - "marketcap_usd": 120848147, + "marketcap_usd": 127582144, "name": "Populous", "network": "eth", "shortcut": "PPT", @@ -9004,7 +8538,7 @@ "links": { "Homepage": "https://presearch.io" }, - "marketcap_usd": 8732060, + "marketcap_usd": 9121431, "name": "Presearch", "network": "eth", "shortcut": "PRE", @@ -9052,23 +8586,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:PRO": { - "address": "0x226bb599a12C826476e3A771454697EA52E9E220", - "links": { - "Homepage": "https://propy.com" - }, - "marketcap_usd": 23609965, - "name": "Propy", - "network": "eth", - "shortcut": "PRO", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:PRON": { "address": "0xA3149E0fA0061A9007fAf307074cdCd290f0e2Fd", "links": { @@ -9203,7 +8720,7 @@ "network": "eth", "shortcut": "PURC", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -9232,7 +8749,7 @@ "links": { "Homepage": "https://liquid.plus" }, - "marketcap_usd": 76275959, + "marketcap_usd": 74813138, "name": "QASH", "network": "eth", "shortcut": "QASH", @@ -9285,12 +8802,12 @@ "Github": "https://github.com/quantnetwork", "Homepage": "https://www.quant.network/" }, - "marketcap_usd": 12104850, + "marketcap_usd": 26503765, "name": "Quant", "network": "eth", "shortcut": "QNT", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -9374,7 +8891,7 @@ "Github": "https://github.com/qtumproject", "Homepage": "https://qtum.org/" }, - "marketcap_usd": 341259964, + "marketcap_usd": 338436257, "name": "Qtum", "network": "eth", "shortcut": "QTUM", @@ -9428,7 +8945,7 @@ "Github": "https://github.com/ripio/rcn-token", "Homepage": "https://ripiocredit.network" }, - "marketcap_usd": 13782226, + "marketcap_usd": 15943732, "name": "Ripio Credit Network", "network": "eth", "shortcut": "RCN", @@ -9440,23 +8957,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:RCT": { - "address": "0x2a3Aa9ECA41E720Ed46B5A70D6C37EfA47f768Ac", - "links": { - "Homepage": "http://www.rcfund.org" - }, - "marketcap_usd": 0, - "name": "RCT", - "network": "eth", - "shortcut": "RCT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:REA": { "address": "0x767bA2915EC344015a7938E3eEDfeC2785195D05", "links": { @@ -9479,7 +8979,7 @@ "links": { "Homepage": "https://www.rebellious.io" }, - "marketcap_usd": 1411676, + "marketcap_usd": 1703885, "name": "Rebellious", "network": "eth", "shortcut": "REBL", @@ -9497,7 +8997,7 @@ "Github": "https://github.com/red", "Homepage": "https://ico.red-lang.org" }, - "marketcap_usd": 3137057, + "marketcap_usd": 2278632, "name": "Red Community Token", "network": "eth", "shortcut": "RED", @@ -9520,7 +9020,7 @@ "network": "eth", "shortcut": "REDC", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -9550,7 +9050,7 @@ "links": { "Homepage": "https://request.network" }, - "marketcap_usd": 44515868, + "marketcap_usd": 34962434, "name": "Request Network", "network": "eth", "shortcut": "REQ", @@ -9585,7 +9085,7 @@ "links": { "Homepage": "https://refereum.com" }, - "marketcap_usd": 11880665, + "marketcap_usd": 12620879, "name": "Refereum", "network": "eth", "shortcut": "RFR", @@ -9597,23 +9097,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:RING": { - "address": "0x86E56f3c89a14528858e58B3De48c074538BAf2c", - "links": { - "Homepage": "https://www.evolution.land/" - }, - "marketcap_usd": 0, - "name": "Evolution Land Global Token", - "network": "eth", - "shortcut": "RING", - "t1_enabled": "yes", - "t2_enabled": "soon", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:RIPT": { "address": "0xdd007278B667F6bef52fD0a4c23604aA1f96039a", "links": { @@ -9637,7 +9120,7 @@ "links": { "Homepage": "http://crowdsale.iex.ec" }, - "marketcap_usd": 34205120, + "marketcap_usd": 33944199, "name": "IEx.ec", "network": "eth", "shortcut": "RLC", @@ -9689,7 +9172,7 @@ "links": { "Homepage": "http://www.relex.io" }, - "marketcap_usd": 2125632, + "marketcap_usd": 3762772, "name": "Relex", "network": "eth", "shortcut": "RLX", @@ -9724,7 +9207,7 @@ "Github": "https://github.com/rocketico", "Homepage": "https://rocketico.io" }, - "marketcap_usd": 13583495, + "marketcap_usd": 12197821, "name": "Rocket Token", "network": "eth", "shortcut": "ROCK", @@ -9736,31 +9219,49 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:ROK": { - "address": "0xc9De4B7F0C3d991e967158E4D4bFA4b51Ec0b114", + "erc20:eth:ROCK2": { + "address": "0xC16b542ff490e01fcc0DC58a60e1EFdc3e357cA6", "links": { - "Homepage": "https://rockchain.org" + "Homepage": "https://icerockmining.io" }, - "marketcap_usd": 0, - "name": "Rocketchain", + "marketcap_usd": 5614144, + "name": "ICE ROCK MINING", "network": "eth", - "shortcut": "ROK", - "t1_enabled": "yes", - "t2_enabled": "yes", + "shortcut": "ROCK2", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:ROCK2PAY": { + "address": "0x0E3de3B0E3D617FD8D1D8088639bA877feb4d742", + "links": { + "Homepage": "https://icerockmining.io" + }, + "marketcap_usd": 5614144, + "name": "ICE ROCK MINING", + "network": "eth", + "shortcut": "ROCK2PAY", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:ROUND": { - "address": "0x4993CB95c7443bdC06155c5f5688Be9D8f6999a5", - "hidden": 1, - "links": {}, + "erc20:eth:ROK": { + "address": "0xc9De4B7F0C3d991e967158E4D4bFA4b51Ec0b114", + "links": { + "Homepage": "https://rockchain.org" + }, "marketcap_usd": 0, - "name": "ROUND", + "name": "Rocketchain", "network": "eth", - "shortcut": "ROUND", + "shortcut": "ROK", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -9804,6 +9305,24 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:RUNE": { + "address": "0xdEE02D94be4929d26f67B64Ada7aCf1914007F10", + "links": { + "Github": "https://github.com/thorchain", + "Homepage": "https://thorchain.org" + }, + "marketcap_usd": 0, + "name": "Rune", + "network": "eth", + "shortcut": "RUNE", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:RVL": { "address": "0x41f615E24fAbd2b097a320E9E6c1f448cb40521c", "links": { @@ -9826,7 +9345,7 @@ "links": { "Homepage": "https://rivetzintl.com" }, - "marketcap_usd": 2219832, + "marketcap_usd": 2505807, "name": "Rivetz", "network": "eth", "shortcut": "RVT", @@ -9877,7 +9396,7 @@ "links": { "Homepage": "https://saltlending.com" }, - "marketcap_usd": 47970805, + "marketcap_usd": 54147650, "name": "Salt Lending Token", "network": "eth", "shortcut": "SALT", @@ -9894,7 +9413,7 @@ "links": { "Homepage": "https://santiment.net" }, - "marketcap_usd": 27761992, + "marketcap_usd": 25687128, "name": "Santiment", "network": "eth", "shortcut": "SAN", @@ -9945,7 +9464,7 @@ "links": { "Homepage": "https://sensay.it" }, - "marketcap_usd": 1784119, + "marketcap_usd": 1572264, "name": "Sensay", "network": "eth", "shortcut": "SENSE", @@ -10118,7 +9637,7 @@ "links": { "Homepage": "http://smartlands.io" }, - "marketcap_usd": 11399327, + "marketcap_usd": 12398288, "name": "Smartlands", "network": "eth", "shortcut": "SLT", @@ -10141,7 +9660,7 @@ "network": "eth", "shortcut": "SLY", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -10205,7 +9724,7 @@ "links": { "Homepage": "https://singulardtv.com" }, - "marketcap_usd": 15290919, + "marketcap_usd": 15801465, "name": "SingularDTV", "network": "eth", "shortcut": "SNGLS", @@ -10291,7 +9810,7 @@ "links": { "Homepage": "https://sola.foundation" }, - "marketcap_usd": 184593, + "marketcap_usd": 268262, "name": "Sola Token", "network": "eth", "shortcut": "SOL", @@ -10308,7 +9827,7 @@ "links": { "Homepage": "https://spankchain.com" }, - "marketcap_usd": 19051953, + "marketcap_usd": 17020755, "name": "SpankChain", "network": "eth", "shortcut": "SPANK", @@ -10376,7 +9895,7 @@ "links": { "Homepage": "https://www.sapien.network/" }, - "marketcap_usd": 613296, + "marketcap_usd": 708093, "name": "Sapien", "network": "eth", "shortcut": "SPN", @@ -10433,7 +9952,7 @@ "network": "eth", "shortcut": "STABIT", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -10474,6 +9993,24 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:STB": { + "address": "0x09BcA6eBAb05Ee2ae945BE4edA51393d94Bf7b99", + "links": { + "Github": "https://github.com/stableproject/", + "Homepage": "https://stable.foundation" + }, + "marketcap_usd": 0, + "name": "STABLE Token", + "network": "eth", + "shortcut": "STB", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:STC": { "address": "0x629aEe55ed49581C33ab27f9403F7992A289ffd5", "links": { @@ -10497,7 +10034,7 @@ "links": { "Homepage": "https://stktoken.com" }, - "marketcap_usd": 3957702, + "marketcap_usd": 4200848, "name": "STK Token", "network": "eth", "shortcut": "STK", @@ -10532,7 +10069,7 @@ "Github": "https://github.com/Storj", "Homepage": "https://storj.io" }, - "marketcap_usd": 44212696, + "marketcap_usd": 40511067, "name": "STORJ", "network": "eth", "shortcut": "STORJ", @@ -10549,7 +10086,7 @@ "links": { "Homepage": "https://www.stormtoken.com" }, - "marketcap_usd": 34408981, + "marketcap_usd": 42679557, "name": "Storm Token", "network": "eth", "shortcut": "STORM", @@ -10585,7 +10122,7 @@ "Github": "https://github.com/Storiqa/", "Homepage": "https://storiqa.com" }, - "marketcap_usd": 22281062, + "marketcap_usd": 21465039, "name": "Storiqa", "network": "eth", "shortcut": "STQ", @@ -10638,7 +10175,7 @@ "links": { "Homepage": "https://substratum.net" }, - "marketcap_usd": 41161721, + "marketcap_usd": 40422779, "name": "Substratum", "network": "eth", "shortcut": "SUB", @@ -10817,8 +10354,8 @@ "name": "TangguoTao Token", "network": "eth", "shortcut": "TCA", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -10848,7 +10385,7 @@ "Github": "https://github.com/telcoin", "Homepage": "https://www.telco.in" }, - "marketcap_usd": 29655710, + "marketcap_usd": 28630642, "name": "Telcoin", "network": "eth", "shortcut": "TEL", @@ -10866,7 +10403,7 @@ "Github": "https://github.com/TrueFlip", "Homepage": "https://trueflip.io" }, - "marketcap_usd": 2502407, + "marketcap_usd": 2460808, "name": "TrueFlip", "network": "eth", "shortcut": "TFL", @@ -10883,7 +10420,7 @@ "links": { "Homepage": "https://www.thetatoken.org/" }, - "marketcap_usd": 61095713, + "marketcap_usd": 64286821, "name": "Theta Token", "network": "eth", "shortcut": "THETA", @@ -10913,30 +10450,12 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:TICO": { - "address": "0xa5dB1d6F7A0D5Bccc17d0bFD39D7AF32d5E5EDc6", - "links": { - "Github": "https://github.com/Topinvestmentcoin/Topinvestmentcoin-", - "Homepage": "https://www.topinvestmentcoin.online/" - }, - "marketcap_usd": 0, - "name": "Topinvestmentcoin", - "network": "eth", - "shortcut": "TICO", - "t1_enabled": "yes", - "t2_enabled": "soon", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:TIME": { "address": "0x6531f133e6DeeBe7F2dcE5A0441aA7ef330B4e53", "links": { "Homepage": "https://chronobank.io" }, - "marketcap_usd": 4382859, + "marketcap_usd": 3542163, "name": "Chronobank", "network": "eth", "shortcut": "TIME", @@ -10970,7 +10489,7 @@ "links": { "Homepage": "https://www.blocktix.io" }, - "marketcap_usd": 7980850, + "marketcap_usd": 7545633, "name": "Blocktix", "network": "eth", "shortcut": "TIX", @@ -10987,7 +10506,7 @@ "links": { "Homepage": "https://etherscan.io/token/TokenCard" }, - "marketcap_usd": 11720481, + "marketcap_usd": 16408853, "name": "TokenCard", "network": "eth", "shortcut": "TKN", @@ -11008,8 +10527,8 @@ "name": "Telex", "network": "eth", "shortcut": "TLX", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -11045,7 +10564,7 @@ "network": "eth", "shortcut": "TOOR", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -11114,6 +10633,24 @@ "network": "eth", "shortcut": "TSW", "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, + "erc20:eth:TTA": { + "address": "0xaaB606817809841E8b1168be8779Eeaf6744Ef64", + "links": { + "Github": "http://github.com/TendTechnologies", + "Homepage": "https://www.tend.swiss" + }, + "marketcap_usd": 0, + "name": "Tend Token", + "network": "eth", + "shortcut": "TTA", + "t1_enabled": "soon", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -11160,7 +10697,7 @@ "links": { "Homepage": "https://taas.fund" }, - "marketcap_usd": 3559372, + "marketcap_usd": 3241472, "name": "Token-as-a-Service", "network": "eth", "shortcut": "TaaS", @@ -11195,7 +10732,7 @@ "links": { "Homepage": "https://uquidcoin.com" }, - "marketcap_usd": 1841516, + "marketcap_usd": 1670152, "name": "Uquid Coin", "network": "eth", "shortcut": "UQC", @@ -11217,8 +10754,8 @@ "name": "Urbit Data", "network": "eth", "shortcut": "URB", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -11235,22 +10772,6 @@ "name": "USD//Coin", "network": "eth", "shortcut": "USDC", - "t1_enabled": "soon", - "t2_enabled": "soon", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "erc20:eth:USDM": { - "address": "0xD760ADdFb24D9C01Fe4Bfea7475C5e3636684058", - "hidden": 1, - "links": {}, - "marketcap_usd": 0, - "name": "Mether (USDM)", - "network": "eth", - "shortcut": "USDM", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11299,7 +10820,7 @@ "Github": "https://github.com/UniversaBlockchain/universa", "Homepage": "https://www.universa.io/" }, - "marketcap_usd": 8640742, + "marketcap_usd": 8297917, "name": "Universa", "network": "eth", "shortcut": "UTN-P", @@ -11328,22 +10849,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:Unicorn": { - "address": "0x89205A3A3b2A69De6Dbf7f01ED13B2108B2c43e7", - "hidden": 1, - "links": {}, - "marketcap_usd": 0, - "name": "Unicorn", - "network": "eth", - "shortcut": "Unicorn", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:VDG": { "address": "0x57C75ECCc8557136D32619a191fBCDc88560d711", "links": { @@ -11355,7 +10860,7 @@ "network": "eth", "shortcut": "VDG", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -11386,7 +10891,7 @@ "Github": "https://github.com/blockv", "Homepage": "https://blockv.io" }, - "marketcap_usd": 17491992, + "marketcap_usd": 19423674, "name": "BLOCKv", "network": "eth", "shortcut": "VEE", @@ -11404,7 +10909,7 @@ "Github": "https://github.com/vechain", "Homepage": "https://www.vechain.com" }, - "marketcap_usd": 632038449, + "marketcap_usd": 577970561, "name": "VeChain", "network": "eth", "shortcut": "VEN", @@ -11473,7 +10978,7 @@ "Github": "https://github.com/Viewly/", "Homepage": "https://view.ly/" }, - "marketcap_usd": 562431, + "marketcap_usd": 414835, "name": "Viewly", "network": "eth", "shortcut": "VIEW", @@ -11491,7 +10996,7 @@ "Github": "https://github.com/ViceIndustryToken", "Homepage": "https://vicetoken.com/" }, - "marketcap_usd": 930287, + "marketcap_usd": 770447, "name": "Vice Industry Token", "network": "eth", "shortcut": "VIT", @@ -11574,15 +11079,15 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:VRS": { - "address": "0xeDBaF3c5100302dCddA53269322f3730b1F0416d", + "erc20:eth:VSL": { + "address": "0x5c543e7AE0A1104f78406C340E9C64FD9fCE5170", "links": { - "Homepage": "https://veros.org" + "Homepage": "https://www.vdice.io" }, - "marketcap_usd": 327525, - "name": "Veros", + "marketcap_usd": 0, + "name": "Vdice", "network": "eth", - "shortcut": "VRS", + "shortcut": "VSL", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11591,17 +11096,18 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:VSL": { - "address": "0x5c543e7AE0A1104f78406C340E9C64FD9fCE5170", + "erc20:eth:VUU": { + "address": "0x4b96bf1feF93A216914fc843D81207A027ce52b3", "links": { - "Homepage": "https://www.vdice.io" + "Github": "https://github.com/Vuulr", + "Homepage": "https://www.vuulr.com/" }, "marketcap_usd": 0, - "name": "Vdice", + "name": "Vuulr Token", "network": "eth", - "shortcut": "VSL", - "t1_enabled": "yes", - "t2_enabled": "yes", + "shortcut": "VUU", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -11618,8 +11124,8 @@ "name": "WorkChain App Token", "network": "eth", "shortcut": "WATT", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -11632,7 +11138,7 @@ "Github": "https://github.com/waxio", "Homepage": "https://wax.io" }, - "marketcap_usd": 62892283, + "marketcap_usd": 68436852, "name": "WAX", "network": "eth", "shortcut": "WAX", @@ -11684,7 +11190,7 @@ "links": { "Homepage": "https://wepower.network" }, - "marketcap_usd": 14879829, + "marketcap_usd": 15100777, "name": "WePower", "network": "eth", "shortcut": "WCT", @@ -11754,7 +11260,7 @@ "links": { "Homepage": "https://wings.ai" }, - "marketcap_usd": 14153514, + "marketcap_usd": 15972284, "name": "WINGS", "network": "eth", "shortcut": "WINGS", @@ -11777,40 +11283,6 @@ "network": "eth", "shortcut": "WMK", "t1_enabled": "yes", - "t2_enabled": "soon", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "erc20:eth:WNK": { - "address": "0xd73A66B8FB26Be8B0AcD7c52Bd325054Ac7d468b", - "hidden": 1, - "links": {}, - "marketcap_usd": 0, - "name": "Woonk", - "network": "eth", - "shortcut": "WNK", - "t1_enabled": "yes", - "t2_enabled": "soon", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "erc20:eth:WORK": { - "address": "0xD18e454D844eb0009D32E07A0Cde89E18d64CFb4", - "links": { - "Github": "https://github.com/workchainio", - "Homepage": "https://workchain.io" - }, - "marketcap_usd": 0, - "name": "workTOKEN", - "network": "eth", - "shortcut": "WORK", - "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -11870,22 +11342,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:WTC": { - "address": "0xb7cB1C96dB6B22b0D3d9536E0108d062BD488F74", - "hidden": 1, - "links": {}, - "marketcap_usd": 0, - "name": "Walton", - "network": "eth", - "shortcut": "WTC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:WYS": { "address": "0xd8950fDeaa10304B7A7Fd03a2FC66BC39f3c711a", "links": { @@ -11927,7 +11383,7 @@ "links": { "Homepage": "https://www.wacoin.io" }, - "marketcap_usd": 13168856, + "marketcap_usd": 13211161, "name": "WaBi", "network": "eth", "shortcut": "WaBi", @@ -11961,7 +11417,7 @@ "links": { "Homepage": "http://www.xaurum.org" }, - "marketcap_usd": 4590788, + "marketcap_usd": 5168363, "name": "Xaurum", "network": "eth", "shortcut": "XAUR", @@ -11979,7 +11435,7 @@ "Github": "https://github.com/blitzpredict", "Homepage": "https://www.blitzpredict.io" }, - "marketcap_usd": 437037, + "marketcap_usd": 466515, "name": "BlitzPredict", "network": "eth", "shortcut": "XBP", @@ -12102,7 +11558,7 @@ "Github": "https://github.com/InkProtocol/", "Homepage": "https://paywithink.com" }, - "marketcap_usd": 3260820, + "marketcap_usd": 3148319, "name": "Ink Protocol", "network": "eth", "shortcut": "XNK", @@ -12119,7 +11575,7 @@ "links": { "Homepage": "https://xenon.network" }, - "marketcap_usd": 523596, + "marketcap_usd": 551723, "name": "XENON", "network": "eth", "shortcut": "XNN", @@ -12193,26 +11649,6 @@ "network": "eth", "shortcut": "YUP", "t1_enabled": "yes", - "t2_enabled": "soon", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "erc20:eth:YUPIE": { - "address": "0x0F33bb20a282A7649C7B3AFf644F084a9348e933", - "hidden": 1, - "links": { - "Github": "https://github.com/crowdholdingico/YupieSmartContract", - "Homepage": "https://www.crowdholding.com" - }, - "marketcap_usd": 0, - "name": "YUPIE", - "network": "eth", - "notes": "Replaced by YUP", - "shortcut": "YUPIE", - "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": { @@ -12226,7 +11662,7 @@ "Github": "https://github.com/zapproject", "Homepage": "https://zap.store" }, - "marketcap_usd": 2311632, + "marketcap_usd": 3242337, "name": "ZAP", "network": "eth", "shortcut": "ZAP", @@ -12243,7 +11679,7 @@ "links": { "Homepage": "https://zsc.io/" }, - "marketcap_usd": 5040822, + "marketcap_usd": 4177561, "name": "Zeusshield", "network": "eth", "shortcut": "ZCS", @@ -12261,7 +11697,7 @@ "Github": "https://github.com/zilliqa", "Homepage": "https://www.zilliqa.com/" }, - "marketcap_usd": 263113938, + "marketcap_usd": 266259722, "name": "Zilliqa", "network": "eth", "shortcut": "ZIL", @@ -12278,7 +11714,7 @@ "links": { "Homepage": "https://www.zmine.com" }, - "marketcap_usd": 3087926, + "marketcap_usd": 2729688, "name": "ZMINE", "network": "eth", "shortcut": "ZMN", @@ -12313,7 +11749,7 @@ "Github": "https://github.com/carVertical", "Homepage": "https://www.carvertical.com" }, - "marketcap_usd": 7750270, + "marketcap_usd": 4949777, "name": "carVertical", "network": "eth", "shortcut": "cV", @@ -12401,7 +11837,7 @@ "Github": "https://github.com/eosdac", "Homepage": "https://eosdac.io/" }, - "marketcap_usd": 15154876, + "marketcap_usd": 16649881, "name": "eosDAC", "network": "eth", "shortcut": "eosDAC", @@ -12413,29 +11849,13 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:nCash": { - "address": "0x809826cceAb68c387726af962713b64Cb5Cb3CCA", - "hidden": 1, - "links": {}, - "marketcap_usd": 0, - "name": "NucleusVision", - "network": "eth", - "shortcut": "nCash", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:nUSD": { "address": "0x57Ab1E02fEE23774580C119740129eAC7081e9D3", "links": { "Github": "https://github.com/havven/havven", "Homepage": "https://www.havven.io" }, - "marketcap_usd": 1278987, + "marketcap_usd": 1451227, "name": "Havven-Backed USD Nomins (nUSD)", "network": "eth", "shortcut": "nUSD", @@ -12465,22 +11885,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:kov:Aeternity": { - "address": "0x8667559254241ddeD4d11392f868d72092765367", - "hidden": 1, - "links": {}, - "marketcap_usd": 294655210, - "name": "Aeternity", - "network": "kov", - "shortcut": "Aeternity", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:rin:AETH": { "address": "0x398A7A69f3c59181A1ffe34bed11DCb5DF863A8a", "links": { @@ -12534,24 +11938,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:rin:PPD": { - "address": "0x12fE174C097F6B3e876B3b060C9061F4B9dEBB80", - "hidden": 1, - "links": { - "Github": "https://github.com/cchen408" - }, - "marketcap_usd": 0, - "name": "PP Donation", - "network": "rin", - "shortcut": "PPD", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:rin:WALL": { "address": "0x0A057a87CE9C56D7e336B417c79cf30E8d27860B", "links": { @@ -12570,15 +11956,16 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:rop:*PLASMA": { - "address": "0x95D7321EdCe519419ba1DbC60A89bAfbF55EAC0D", - "hidden": 1, - "links": {}, + "erc20:rop:dqr30": { + "address": "0xa1bAccA0e12D4091Ec1f92e7CaE3394CC9854D3D", + "links": { + "Homepage": "https://dqr-group.com/" + }, "marketcap_usd": 0, - "name": "*PLASMA", + "name": "DQR", "network": "rop", - "shortcut": "*PLASMA", - "t1_enabled": "yes", + "shortcut": "dqr30", + "t1_enabled": "soon", "t2_enabled": "soon", "type": "erc20", "wallet": { @@ -12586,38 +11973,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:rop:ILSC": { - "address": "0x6f95a3B682F8e9aacC86D057A6DF88A0E68145A8", - "hidden": 1, - "links": {}, - "marketcap_usd": 0, - "name": "IsraCoin", - "network": "rop", - "shortcut": "ILSC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "erc20:ubq:BEER": { - "address": "0xFF3bF057ADF3b0E015b6465331a6236e55688274", - "hidden": 1, - "links": {}, - "marketcap_usd": 0, - "name": "BEER", - "network": "ubq", - "shortcut": "BEER", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:ubq:CEFS": { "address": "0x08533D6A06CE365298b12Ef92eb407cBA8Aa8273", "links": { @@ -12635,28 +11990,12 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:ubq:DOT": { - "address": "0x94aD7e41c1D44022C4F47cb1Ba019Fd1a022c536", - "hidden": 1, - "links": {}, - "marketcap_usd": 0, - "name": "DOT", - "network": "ubq", - "shortcut": "DOT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:ubq:QWARK": { "address": "0x4b4899a10F3E507DB207b0ee2426029eFa168a67", "links": { "Homepage": "https://www.qwark.io" }, - "marketcap_usd": 1139944, + "marketcap_usd": 1285274, "name": "QWARK", "network": "ubq", "shortcut": "QWARK", @@ -12689,11 +12028,11 @@ "links": { "Homepage": "https://akroma.io" }, - "marketcap_usd": 762477, + "marketcap_usd": 1428222, "name": "Akroma", "shortcut": "AKA", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "coin", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -12704,11 +12043,11 @@ "links": { "Homepage": "https://atheios.com" }, - "marketcap_usd": 0, + "marketcap_usd": 86094, "name": "Atheios", "shortcut": "ATH", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "coin", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -12734,7 +12073,7 @@ "links": { "Homepage": "https://egem.io" }, - "marketcap_usd": 401551, + "marketcap_usd": 482404, "name": "EtherGem", "shortcut": "EGEM", "t1_enabled": "yes", @@ -12749,7 +12088,7 @@ "links": { "Homepage": "https://ellaism.org" }, - "marketcap_usd": 586263, + "marketcap_usd": 487861, "name": "Ellaism", "shortcut": "ELLA", "t1_enabled": "yes", @@ -12783,7 +12122,7 @@ "name": "Ethersocial Network", "shortcut": "ESN", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "coin", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -12794,7 +12133,7 @@ "links": { "Homepage": "https://ethereumclassic.github.io" }, - "marketcap_usd": 1003877532, + "marketcap_usd": 960928096, "name": "Ethereum Classic", "shortcut": "ETC", "t1_enabled": "yes", @@ -12809,7 +12148,7 @@ "links": { "Homepage": "https://www.ethereum.org" }, - "marketcap_usd": 20890272335, + "marketcap_usd": 20321233300, "name": "Ethereum", "shortcut": "ETH", "t1_enabled": "yes", @@ -12828,7 +12167,7 @@ "name": "Ether-1", "shortcut": "ETHO", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "coin", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -12854,7 +12193,7 @@ "links": { "Homepage": "https://expanse.tech" }, - "marketcap_usd": 2200792, + "marketcap_usd": 2521807, "name": "Expanse", "shortcut": "EXP", "t1_enabled": "yes", @@ -12869,7 +12208,7 @@ "links": { "Homepage": "https://gochain.io" }, - "marketcap_usd": 27582328, + "marketcap_usd": 46565127, "name": "GoChain", "shortcut": "GO", "t1_enabled": "yes", @@ -12884,11 +12223,11 @@ "links": { "Homepage": "https://musicoin.org" }, - "marketcap_usd": 4050875, + "marketcap_usd": 4333442, "name": "Musicoin", "shortcut": "MUSIC", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "coin", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -12899,11 +12238,11 @@ "links": { "Homepage": "https://pirl.io" }, - "marketcap_usd": 2062763, + "marketcap_usd": 1688390, "name": "Pirl", "shortcut": "PIRL", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "coin", "wallet": { "MyCrypto": "https://mycrypto.com", @@ -12929,7 +12268,7 @@ "links": { "Homepage": "https://ubiqsmart.com" }, - "marketcap_usd": 21203852, + "marketcap_usd": 21595456, "name": "Ubiq", "shortcut": "UBQ", "t1_enabled": "yes", @@ -12940,96 +12279,16 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "eth:tETC": { - "hidden": 1, - "links": { - "Homepage": "https://ethereumclassic.github.io" - }, - "marketcap_usd": 0, - "name": "Ethereum Classic Testnet", - "shortcut": "tETC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "eth:tKOV": { - "hidden": 1, - "links": { - "Homepage": "https://www.ethereum.org" - }, - "marketcap_usd": 0, - "name": "Ethereum Testnet Kovan", - "shortcut": "tKOV", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "eth:tRIN": { - "hidden": 1, - "links": { - "Homepage": "https://www.ethereum.org" - }, - "marketcap_usd": 0, - "name": "Ethereum Testnet Rinkeby", - "shortcut": "tRIN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "eth:tROP": { - "hidden": 1, - "links": { - "Homepage": "https://www.ethereum.org" - }, - "marketcap_usd": 0, - "name": "Ethereum Testnet Ropsten", - "shortcut": "tROP", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, - "eth:tRSK": { - "hidden": 1, - "links": { - "Homepage": "https://www.rsk.co" - }, - "marketcap_usd": 0, - "name": "RSK Testnet", - "shortcut": "tRSK", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "coin", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "misc:ADA": { "links": { "Github": "https://github.com/input-output-hk/cardano-sl", "Homepage": "https://www.cardano.org" }, - "marketcap_usd": 1937196644, + "marketcap_usd": 1803867147, "name": "Cardano", "shortcut": "ADA", "t1_enabled": "no", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "coin" }, "misc:LSK": { @@ -13037,7 +12296,7 @@ "Github": "https://github.com/LiskHQ/lisk", "Homepage": "https://lisk.io/" }, - "marketcap_usd": 322410218, + "marketcap_usd": 305534203, "name": "Lisk", "shortcut": "LSK", "t1_enabled": "no", @@ -13045,17 +12304,16 @@ "type": "coin" }, "misc:ONT": { - "hidden": 1, "links": { "Github": "https://github.com/ontio/ontology", "Homepage": "https://ont.io" }, - "marketcap_usd": 375993248, + "marketcap_usd": 341479975, "name": "Ontology", "notes": "In development", "shortcut": "ONT", "t1_enabled": "no", - "t2_enabled": "no", + "t2_enabled": "soon", "type": "coin" }, "misc:WAN": { @@ -13063,7 +12321,7 @@ "Github": "https://github.com/wanchain/go-wanchain", "Homepage": "https://wanchain.org" }, - "marketcap_usd": 105665038, + "marketcap_usd": 111022914, "name": "Wanchain", "shortcut": "WAN", "t1_enabled": "yes", @@ -13075,12 +12333,12 @@ "Github": "https://github.com/stellar/stellar-core", "Homepage": "https://www.stellar.org" }, - "marketcap_usd": 4494854829, + "marketcap_usd": 4222382745, "name": "Stellar", "notes": "In development", "shortcut": "XLM", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "coin" }, "misc:XMR": { @@ -13088,12 +12346,12 @@ "Github": "https://github.com/monero-project/monero", "Homepage": "https://getmonero.org" }, - "marketcap_usd": 1709974258, + "marketcap_usd": 1690117802, "name": "Monero", "notes": "In development", "shortcut": "XMR", "t1_enabled": "no", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "coin" }, "misc:XRP": { @@ -13101,12 +12359,12 @@ "Github": "https://github.com/ripple/rippled", "Homepage": "https://ripple.com" }, - "marketcap_usd": 18169122471, + "marketcap_usd": 17802208011, "name": "Ripple", "notes": "In development", "shortcut": "XRP", "t1_enabled": "no", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "coin" }, "misc:XTZ": { @@ -13114,12 +12372,12 @@ "Github": "https://github.com/tezos/tezos", "Homepage": "https://tezos.com" }, - "marketcap_usd": 788603746, + "marketcap_usd": 781662294, "name": "Tezos", "notes": "In development", "shortcut": "XTZ", "t1_enabled": "no", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "coin" }, "nem:BREEZE": { @@ -13140,7 +12398,7 @@ "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 4712827, + "marketcap_usd": 4393313, "name": "DIMCOIN", "shortcut": "DIM", "t1_enabled": "yes", @@ -13155,7 +12413,7 @@ "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 4712827, + "marketcap_usd": 4393313, "name": "DIM TOKEN", "shortcut": "DIMTOK", "t1_enabled": "yes", @@ -13197,7 +12455,7 @@ "links": { "Homepage": "https://nem.io" }, - "marketcap_usd": 843408995, + "marketcap_usd": 806376761, "name": "NEM", "shortcut": "XEM", "t1_enabled": "yes", @@ -13209,11 +12467,12 @@ } }, "info": { - "marketcap_usd": 153997231412, - "t1_coins": 690, - "t2_coins": 628, - "total_marketcap_usd": 207619196443, - "updated_at": 1539944224, - "updated_at_readable": "Fri Oct 19 12:17:04 2018" + "marketcap_supported": "87.17 %", + "marketcap_usd": 177278193797, + "t1_coins": 694, + "t2_coins": 701, + "total_marketcap_usd": 203381043631, + "updated_at": 1540834908, + "updated_at_readable": "Mon Oct 29 18:41:48 2018" } } \ No newline at end of file diff --git a/tools/coins_details.py b/tools/coins_details.py index f06ee1ec0..298ab79eb 100755 --- a/tools/coins_details.py +++ b/tools/coins_details.py @@ -115,6 +115,9 @@ def summary(coins, api_key): t2_coins=t2_coins, marketcap_usd=supported_marketcap, total_marketcap_usd=total_marketcap, + marketcap_supported="{:.02f} %".format( + 100 * supported_marketcap / total_marketcap + ), ) @@ -267,9 +270,10 @@ def check_missing_data(coins): coin["hidden"] = 1 # summary of hidden coins - for k, coin in coins.items(): - if coin.get("hidden"): - LOG.debug(f"{k}: Coin is hidden") + hidden_coins = [k for k, coin in coins.items() if coin.get("hidden")] + for key in hidden_coins: + del coins[key] + LOG.debug(f"{k}: Coin is hidden") def apply_overrides(coins): From 74e1fceaeaa616d8250a529ad2db3ed95822e6fb Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 1 Nov 2018 15:28:44 +0100 Subject: [PATCH 620/767] update coin definitions --- defs/coins_details.override.json | 10 ++++++++++ defs/misc/misc.json | 5 ----- defs/support.json | 16 ++++++++-------- 3 files changed, 18 insertions(+), 13 deletions(-) diff --git a/defs/coins_details.override.json b/defs/coins_details.override.json index 977e94702..0d9a3ccb9 100644 --- a/defs/coins_details.override.json +++ b/defs/coins_details.override.json @@ -83,5 +83,15 @@ "Electrum-XZC": "https://github.com/zcoinofficial/electrum-xzc", "Znode Tool": "https://github.com/yura-pakhuchiy/znode-tool" } + }, + "misc:ADA": { + "wallet": { + "AdaLite": "https://adalite.io/app" + } + }, + "misc:XLM": { + "wallet": { + "Account Viewer": "https://trezor.io/stellar/" + } } } diff --git a/defs/misc/misc.json b/defs/misc/misc.json index 8f15ea105..91d60563c 100644 --- a/defs/misc/misc.json +++ b/defs/misc/misc.json @@ -11,7 +11,6 @@ }, { "name": "Stellar", - "notes": "In development", "slip44": 148, "curve": "ed25519", "shortcut": "XLM", @@ -25,7 +24,6 @@ "shortcut": "XMR", "slip44": 128, "curve": "secp256k1", - "notes": "In development", "links": { "Homepage": "https://getmonero.org", "Github": "https://github.com/monero-project/monero" @@ -36,7 +34,6 @@ "shortcut": "XRP", "slip44": 144, "curve": "secp256k1", - "notes": "In development", "links": { "Homepage": "https://ripple.com", "Github": "https://github.com/ripple/rippled" @@ -57,7 +54,6 @@ "shortcut": "XTZ", "slip44": 1729, "curve": "ed25519", - "notes": "In development", "links": { "Homepage": "https://tezos.com", "Github": "https://github.com/tezos/tezos" @@ -68,7 +64,6 @@ "shortcut": "ONT", "slip44": 1024, "curve": "nist256p1", - "notes": "In development", "links": { "Homepage": "https://ont.io", "Github": "https://github.com/ontio/ontology" diff --git a/defs/support.json b/defs/support.json index 6ab701d1a..0e8db5bae 100644 --- a/defs/support.json +++ b/defs/support.json @@ -801,7 +801,7 @@ "unsupported": { "bitcoin:CRW": "address_type collides with Bitcoin", "bitcoin:TRC": "address_type collides with Bitcoin", - "bitcoin:ZEN": "not implemented on T1", + "bitcoin:ZEN": "not implemented", "erc20:etc:PLAY": "(AUTO) duplicate key", "erc20:eth:A18:0": "(AUTO) duplicate key", "erc20:eth:A18:1": "(AUTO) duplicate key", @@ -953,12 +953,12 @@ "erc20:rin:NONE": "(AUTO) duplicate key", "erc20:rin:RDN": "(AUTO) duplicate key", "erc20:rop:NONE": "(AUTO) duplicate key", - "misc:ADA": "not implemented on T1", - "misc:LSK": "not implemented on T1", - "misc:ONT": "not implemented on T1", - "misc:XMR": "not implemented on T1", - "misc:XRP": "not implemented on T1", - "misc:XTZ": "not implemented on T1" + "misc:ADA": "not implemented", + "misc:LSK": "not implemented", + "misc:ONT": "not implemented", + "misc:XMR": "not implemented", + "misc:XRP": "not implemented", + "misc:XTZ": "not implemented" } }, "trezor2": { @@ -985,7 +985,7 @@ "bitcoin:MUE": "2.0.8", "bitcoin:NMC": "2.0.5", "bitcoin:PTC": "2.0.8", - "bitcoin:RVN": "2.0.8", + "bitcoin:RVN": "soon", "bitcoin:SMART": "2.0.8", "bitcoin:TAZ": "2.0.7", "bitcoin:TBCH": "2.0.7", From 8d060a93f1cab6d627843b3c5f8e63c47b280391 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 1 Nov 2018 15:41:00 +0100 Subject: [PATCH 621/767] update defs/coins_details.json --- defs/coins_details.json | 467 ++++++++++++++++++++-------------------- tools/coins_details.py | 5 +- 2 files changed, 238 insertions(+), 234 deletions(-) diff --git a/defs/coins_details.json b/defs/coins_details.json index a24c282dd..9d4b8a702 100644 --- a/defs/coins_details.json +++ b/defs/coins_details.json @@ -5,7 +5,7 @@ "Github": "https://github.com/Bitcoin-ABC/bitcoin-abc", "Homepage": "https://www.bitcoincash.org" }, - "marketcap_usd": 7293210728, + "marketcap_usd": 7392015944, "name": "Bitcoin Cash", "shortcut": "BCH", "t1_enabled": "yes", @@ -21,7 +21,7 @@ "Github": "https://github.com/bitcoin/bitcoin", "Homepage": "https://bitcoin.org" }, - "marketcap_usd": 110054412479, + "marketcap_usd": 110873489405, "name": "Bitcoin", "shortcut": "BTC", "t1_enabled": "yes", @@ -37,7 +37,7 @@ "Github": "https://github.com/BTCPrivate/BitcoinPrivate", "Homepage": "https://btcprivate.org" }, - "marketcap_usd": 42438194, + "marketcap_usd": 41166978, "name": "Bitcoin Private", "shortcut": "BTCP", "t1_enabled": "yes", @@ -52,7 +52,7 @@ "Github": "https://github.com/BTCGPU/BTCGPU", "Homepage": "https://bitcoingold.org" }, - "marketcap_usd": 455372567, + "marketcap_usd": 456632374, "name": "Bitcoin Gold", "shortcut": "BTG", "t1_enabled": "yes", @@ -68,7 +68,7 @@ "Github": "https://github.com/LIMXTEC/BitCore", "Homepage": "https://bitcore.cc" }, - "marketcap_usd": 11833890, + "marketcap_usd": 11292168, "name": "Bitcore", "shortcut": "BTX", "t1_enabled": "yes", @@ -81,7 +81,7 @@ "Github": "https://github.com/Capricoinofficial/Capricoin", "Homepage": "https://capricoin.org" }, - "marketcap_usd": 1449023, + "marketcap_usd": 1221249, "name": "Capricoin", "shortcut": "CPC", "t1_enabled": "soon", @@ -94,7 +94,7 @@ "Github": "https://github.com/dashpay/dash", "Homepage": "https://www.dash.org" }, - "marketcap_usd": 1266895965, + "marketcap_usd": 1292433788, "name": "Dash", "shortcut": "DASH", "t1_enabled": "yes", @@ -110,7 +110,7 @@ "Github": "https://github.com/decred/dcrd", "Homepage": "https://www.decred.org" }, - "marketcap_usd": 355228905, + "marketcap_usd": 349401645, "name": "Decred", "shortcut": "DCR", "t1_enabled": "yes", @@ -123,7 +123,7 @@ "Github": "https://github.com/digibyte/digibyte", "Homepage": "https://digibyte.io" }, - "marketcap_usd": 236578819, + "marketcap_usd": 230827729, "name": "DigiByte", "shortcut": "DGB", "t1_enabled": "yes", @@ -149,7 +149,7 @@ "Github": "https://github.com/dogecoin/dogecoin", "Homepage": "https://dogecoin.com" }, - "marketcap_usd": 452311648, + "marketcap_usd": 439994653, "name": "Dogecoin", "shortcut": "DOGE", "t1_enabled": "yes", @@ -164,7 +164,7 @@ "Github": "https://github.com/fujicoin/fujicoin", "Homepage": "https://fujicoin.org" }, - "marketcap_usd": 407889, + "marketcap_usd": 325535, "name": "Fujicoin", "shortcut": "FJC", "t1_enabled": "yes", @@ -179,7 +179,7 @@ "Github": "https://github.com/flash-coin", "Homepage": "https://www.flashcoin.io" }, - "marketcap_usd": 5441489, + "marketcap_usd": 4802957, "name": "Flashcoin", "shortcut": "FLASH", "t1_enabled": "yes", @@ -192,7 +192,7 @@ "Github": "https://github.com/FeatherCoin/Feathercoin", "Homepage": "https://feathercoin.com" }, - "marketcap_usd": 9431916, + "marketcap_usd": 9384867, "name": "Feathercoin", "shortcut": "FTC", "t1_enabled": "yes", @@ -205,7 +205,7 @@ "Github": "https://github.com/gamecredits-project/gamecredits", "Homepage": "https://gamecredits.org" }, - "marketcap_usd": 11911928, + "marketcap_usd": 11510512, "name": "GameCredits", "shortcut": "GAME", "t1_enabled": "yes", @@ -218,7 +218,7 @@ "Github": "https://github.com/Groestlcoin/groestlcoin", "Homepage": "https://www.groestlcoin.org" }, - "marketcap_usd": 36148152, + "marketcap_usd": 36532338, "name": "Groestlcoin", "shortcut": "GRS", "t1_enabled": "yes", @@ -248,7 +248,7 @@ "Github": "https://github.com/litecoin-project/litecoin", "Homepage": "https://litecoin.org" }, - "marketcap_usd": 2906234413, + "marketcap_usd": 2945948871, "name": "Litecoin", "shortcut": "LTC", "t1_enabled": "yes", @@ -264,7 +264,7 @@ "Github": "https://github.com/monacoinproject/monacoin", "Homepage": "https://monacoin.org" }, - "marketcap_usd": 72380247, + "marketcap_usd": 72733471, "name": "Monacoin", "shortcut": "MONA", "t1_enabled": "yes", @@ -292,7 +292,7 @@ "Github": "https://github.com/namecoin/namecoin-core", "Homepage": "https://namecoin.org" }, - "marketcap_usd": 8486208, + "marketcap_usd": 8241534, "name": "Namecoin", "shortcut": "NMC", "t1_enabled": "yes", @@ -308,7 +308,7 @@ "Github": "https://github.com/FundacionPesetacoin/PesetacoinCore", "Homepage": "https://pesetacoin.info" }, - "marketcap_usd": 698165, + "marketcap_usd": 714991, "name": "Pesetacoin", "shortcut": "PTC", "t1_enabled": "yes", @@ -321,11 +321,11 @@ "Github": "https://github.com/RavenProject/Ravencoin", "Homepage": "https://ravencoin.org" }, - "marketcap_usd": 96194967, + "marketcap_usd": 90156932, "name": "Ravencoin", "shortcut": "RVN", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "coin", "wallet": {} }, @@ -334,7 +334,7 @@ "Github": "https://github.com/SmartCash/Core-Smart", "Homepage": "https://smarcash.cc" }, - "marketcap_usd": 19270548, + "marketcap_usd": 16472578, "name": "SmartCash", "shortcut": "SMART", "t1_enabled": "yes", @@ -347,7 +347,7 @@ "Github": "https://github.com/viacoin", "Homepage": "https://viacoin.org" }, - "marketcap_usd": 16673149, + "marketcap_usd": 19572577, "name": "Viacoin", "shortcut": "VIA", "t1_enabled": "yes", @@ -362,7 +362,7 @@ "Github": "https://github.com/vertcoin-project/vertcoin-core", "Homepage": "https://vertcoin.org" }, - "marketcap_usd": 30009469, + "marketcap_usd": 30087534, "name": "Vertcoin", "shortcut": "VTC", "t1_enabled": "yes", @@ -377,7 +377,7 @@ "Github": "https://github.com/myriadcoin/myriadcoin", "Homepage": "https://www.myriadcoin.org" }, - "marketcap_usd": 4907480, + "marketcap_usd": 4827820, "name": "Myriad", "shortcut": "XMY", "t1_enabled": "yes", @@ -390,7 +390,7 @@ "Github": "https://github.com/zcoinofficial/zcoin", "Homepage": "https://zcoin.io" }, - "marketcap_usd": 61072744, + "marketcap_usd": 59791806, "name": "Zcoin", "shortcut": "XZC", "t1_enabled": "yes", @@ -406,7 +406,7 @@ "Github": "https://github.com/zcash/zcash", "Homepage": "https://z.cash" }, - "marketcap_usd": 596828873, + "marketcap_usd": 596868550, "name": "Zcash", "shortcut": "ZEC", "t1_enabled": "yes", @@ -421,7 +421,7 @@ "Github": "https://github.com/ZencashOfficial/zen", "Homepage": "https://zencash.com" }, - "marketcap_usd": 68078423, + "marketcap_usd": 75542656, "name": "Zencash", "shortcut": "ZEN", "t1_enabled": "no", @@ -539,7 +539,7 @@ "links": { "Homepage": "https://0xbitcoin.org/" }, - "marketcap_usd": 1275205, + "marketcap_usd": 1342273, "name": "0xBitcoin", "network": "eth", "shortcut": "0xBTC", @@ -556,7 +556,7 @@ "links": { "Homepage": "https://firstblood.io" }, - "marketcap_usd": 6291727, + "marketcap_usd": 6076424, "name": "FirstBlood", "network": "eth", "shortcut": "1ST", @@ -659,7 +659,7 @@ "links": { "Homepage": "http://accelerator.network" }, - "marketcap_usd": 69707, + "marketcap_usd": 141984, "name": "Accelerator Network", "network": "eth", "shortcut": "ACC", @@ -694,7 +694,7 @@ "Github": "https://github.com/aditus", "Homepage": "https://aditus.net" }, - "marketcap_usd": 340275, + "marketcap_usd": 319513, "name": "Aditus", "network": "eth", "shortcut": "ADI", @@ -729,7 +729,7 @@ "links": { "Homepage": "https://adshares.net" }, - "marketcap_usd": 2524267, + "marketcap_usd": 1897207, "name": "AdShares", "network": "eth", "shortcut": "ADST", @@ -747,7 +747,7 @@ "Github": "https://github.com/adchain", "Homepage": "https://adtoken.com" }, - "marketcap_usd": 9166811, + "marketcap_usd": 9367239, "name": "AdToken", "network": "eth", "shortcut": "ADT", @@ -783,7 +783,7 @@ "Github": "https://github.com/aeternity", "Homepage": "https://www.aeternity.com/" }, - "marketcap_usd": 275386761, + "marketcap_usd": 275642519, "name": "aeternity", "network": "eth", "shortcut": "AE", @@ -801,7 +801,7 @@ "Github": "https://github.com/singnet/singnet", "Homepage": "https://singularitynet.io" }, - "marketcap_usd": 31177976, + "marketcap_usd": 33809130, "name": "SingularityNET", "network": "eth", "shortcut": "AGI", @@ -819,7 +819,7 @@ "Github": "https://github.com/aionnetwork", "Homepage": "https://aion.network/" }, - "marketcap_usd": 98012246, + "marketcap_usd": 101220801, "name": "Aion", "network": "eth", "shortcut": "AION", @@ -836,7 +836,7 @@ "links": { "Homepage": "https://airtoken.com" }, - "marketcap_usd": 2395789, + "marketcap_usd": 2082598, "name": "AirToken", "network": "eth", "shortcut": "AIR", @@ -854,7 +854,7 @@ "Github": "https://github.com/AigangNetwork", "Homepage": "https://aigang.network/" }, - "marketcap_usd": 424063, + "marketcap_usd": 430601, "name": "Aigang", "network": "eth", "shortcut": "AIX", @@ -907,7 +907,7 @@ "Github": "https://github.com/AlisProject", "Homepage": "https://alismedia.jp" }, - "marketcap_usd": 1958556, + "marketcap_usd": 1786381, "name": "ALIS Token", "network": "eth", "shortcut": "ALIS", @@ -978,7 +978,7 @@ "Github": "https://github.com/amlt-by-coinfirm", "Homepage": "https://amlt.coinfirm.io/" }, - "marketcap_usd": 1081471, + "marketcap_usd": 637997, "name": "AMLT", "network": "eth", "shortcut": "AMLT", @@ -996,7 +996,7 @@ "Github": "https://github.com/amontech", "Homepage": "https://amon.tech" }, - "marketcap_usd": 327760, + "marketcap_usd": 361153, "name": "Amon", "network": "eth", "shortcut": "AMN", @@ -1066,7 +1066,7 @@ "Github": "https://github.com/Oxchild/crowdsale", "Homepage": "https://apisplatform.io" }, - "marketcap_usd": 15080239, + "marketcap_usd": 15708014, "name": "APIS", "network": "eth", "shortcut": "APIS", @@ -1084,7 +1084,7 @@ "Github": "https://github.com/Aptoide/AppCoins-ethereumj", "Homepage": "https://appcoins.io" }, - "marketcap_usd": 11472620, + "marketcap_usd": 12889545, "name": "AppCoins", "network": "eth", "shortcut": "APPC", @@ -1101,7 +1101,7 @@ "links": { "Homepage": "https://aigang.network" }, - "marketcap_usd": 424063, + "marketcap_usd": 430601, "name": "AIGang", "network": "eth", "shortcut": "APT", @@ -1136,7 +1136,7 @@ "links": { "Homepage": "https://www.arbitragect.com" }, - "marketcap_usd": 219847, + "marketcap_usd": 272780, "name": "ArbitrageCT", "network": "eth", "shortcut": "ARCT", @@ -1241,7 +1241,7 @@ "links": { "Homepage": "https://airswap.io" }, - "marketcap_usd": 15404287, + "marketcap_usd": 15296576, "name": "Airswap", "network": "eth", "shortcut": "AST", @@ -1276,7 +1276,7 @@ "Github": "https://github.com/atonomi", "Homepage": "https://atonomi.io" }, - "marketcap_usd": 3396246, + "marketcap_usd": 3210643, "name": "Atonomi", "network": "eth", "shortcut": "ATMI", @@ -1399,7 +1399,7 @@ "Github": "https://www.github.com/axpire", "Homepage": "https://www.axpire.io" }, - "marketcap_usd": 4425539, + "marketcap_usd": 4469513, "name": "aXpire", "network": "eth", "shortcut": "AXPR", @@ -1611,7 +1611,7 @@ "Github": "https://github.com/thebeetoken", "Homepage": "https://www.beetoken.com" }, - "marketcap_usd": 1474865, + "marketcap_usd": 1583067, "name": "Bee Token", "network": "eth", "shortcut": "BEE", @@ -1665,7 +1665,7 @@ "Github": "https://github.com/bethereumproject", "Homepage": "https://www.bethereum.com/" }, - "marketcap_usd": 966089, + "marketcap_usd": 1023857, "name": "Bethereum", "network": "eth", "shortcut": "BETHER", @@ -1770,7 +1770,7 @@ "Github": "https://github.com/BankEx", "Homepage": "https://bankex.com/" }, - "marketcap_usd": 6124397, + "marketcap_usd": 6558731, "name": "BANKEX", "network": "eth", "shortcut": "BKX", @@ -1806,7 +1806,7 @@ "Github": "https://github.com/BlueCrypto", "Homepage": "https://blueprotocol.com/" }, - "marketcap_usd": 1152349, + "marketcap_usd": 1326932, "name": "Ethereum Blue", "network": "eth", "shortcut": "BLUE", @@ -1841,7 +1841,7 @@ "links": { "Homepage": "https://www.iconomi.net" }, - "marketcap_usd": 34192808, + "marketcap_usd": 34824283, "name": "Iconomi", "network": "eth", "shortcut": "BLX (Iconomi)", @@ -1929,7 +1929,7 @@ "Github": "https://github.com/bancorprotocol", "Homepage": "https://www.bancor.network/discover" }, - "marketcap_usd": 75483136, + "marketcap_usd": 78902045, "name": "Bancor", "network": "eth", "shortcut": "BNT", @@ -1980,7 +1980,7 @@ "links": { "Homepage": "https://bonpay.com" }, - "marketcap_usd": 610532, + "marketcap_usd": 598702, "name": "Bonpay", "network": "eth", "shortcut": "BON", @@ -2066,7 +2066,7 @@ "links": { "Homepage": "http://bro-consortium.io" }, - "marketcap_usd": 52763, + "marketcap_usd": 38570, "name": "BRAT", "network": "eth", "shortcut": "BRAT", @@ -2084,7 +2084,7 @@ "Github": "https://github.com/breadwallet", "Homepage": "https://token.breadapp.com/en" }, - "marketcap_usd": 33542129, + "marketcap_usd": 32498668, "name": "Bread", "network": "eth", "shortcut": "BRD", @@ -2223,7 +2223,7 @@ "Github": "https://github.com/bethereumproject", "Homepage": "https://www.bethereum.com/" }, - "marketcap_usd": 966089, + "marketcap_usd": 1023857, "name": "Bethereum", "network": "eth", "shortcut": "BTHR", @@ -2241,7 +2241,7 @@ "Github": "https://github.com/bitcoin-token", "Homepage": "https://btk.community" }, - "marketcap_usd": 503434, + "marketcap_usd": 543928, "name": "Bitcoin Token", "network": "eth", "shortcut": "BTK", @@ -2259,7 +2259,7 @@ "Github": "https://github.com/bytom", "Homepage": "https://bytom.io" }, - "marketcap_usd": 189468700, + "marketcap_usd": 193262705, "name": "Bytom", "network": "eth", "shortcut": "BTM", @@ -2294,7 +2294,7 @@ "Github": "https://github.com/Andyss4545/BitEther", "Homepage": "https://bytom.io" }, - "marketcap_usd": 71978, + "marketcap_usd": 68145, "name": "Bitether", "network": "eth", "shortcut": "BTT", @@ -2364,7 +2364,7 @@ "Github": "https://github.com/cryptotwenty", "Homepage": "https://crypto20.com" }, - "marketcap_usd": 25974641, + "marketcap_usd": 25362915, "name": "Crypto20's Token", "network": "eth", "shortcut": "C20", @@ -2466,7 +2466,7 @@ "links": { "Homepage": "https://cashaa.com" }, - "marketcap_usd": 5515021, + "marketcap_usd": 5633897, "name": "Cashaa", "network": "eth", "shortcut": "CAS", @@ -2935,7 +2935,7 @@ "links": { "Homepage": "https://cindicator.com" }, - "marketcap_usd": 34737357, + "marketcap_usd": 38779269, "name": "Cindicator", "network": "eth", "shortcut": "CND", @@ -3042,7 +3042,7 @@ "Github": "https://github.com/CoinvestHQ", "Homepage": "https://coinve.st" }, - "marketcap_usd": 73395, + "marketcap_usd": 72902, "name": "Coinvest V2 Token", "network": "eth", "shortcut": "COIN", @@ -3076,7 +3076,7 @@ "links": { "Homepage": "https://covesting.io/" }, - "marketcap_usd": 14211090, + "marketcap_usd": 14155443, "name": "Covesting", "network": "eth", "shortcut": "COV", @@ -3112,7 +3112,7 @@ "Github": "https://github.com/Cpollo", "Homepage": "https://cpollo.info/" }, - "marketcap_usd": 1637762, + "marketcap_usd": 1243776, "name": "CPOLLO", "network": "eth", "shortcut": "CPLO", @@ -3130,7 +3130,7 @@ "Github": "https://github.com/aditus", "Homepage": "https://copytrack.io" }, - "marketcap_usd": 1339257, + "marketcap_usd": 1364335, "name": "COPYTRACK", "network": "eth", "shortcut": "CPY", @@ -3200,7 +3200,7 @@ "links": { "Homepage": "https://bitbounce.io" }, - "marketcap_usd": 18472144, + "marketcap_usd": 20039044, "name": "Credo / Bitbounce", "network": "eth", "shortcut": "CREDO", @@ -3410,7 +3410,7 @@ "Github": "https://github.com/cargoxio", "Homepage": "https://cargox.io" }, - "marketcap_usd": 2576821, + "marketcap_usd": 3202553, "name": "CargoX", "network": "eth", "shortcut": "CXO", @@ -3427,7 +3427,7 @@ "links": { "Homepage": "https://cyberfmradio.com" }, - "marketcap_usd": 953451, + "marketcap_usd": 839968, "name": "CyberFM", "network": "eth", "shortcut": "CYFM", @@ -3444,7 +3444,7 @@ "links": { "Homepage": "https://ccrb.io" }, - "marketcap_usd": 697064, + "marketcap_usd": 564624, "name": "CryptoCarbon", "network": "eth", "shortcut": "CryptoCarbon", @@ -3478,7 +3478,7 @@ "links": { "Homepage": "https://dadi.cloud" }, - "marketcap_usd": 5995656, + "marketcap_usd": 5935216, "name": "DADI", "network": "eth", "shortcut": "DADI", @@ -3495,7 +3495,7 @@ "links": { "Homepage": "http://www.dalecoin.org" }, - "marketcap_usd": 26777, + "marketcap_usd": 27020, "name": "DaleCoin", "network": "eth", "shortcut": "DALC", @@ -3583,7 +3583,7 @@ "Github": "https://github.com/streamr-dev", "Homepage": "https://www.streamr.com" }, - "marketcap_usd": 77059, + "marketcap_usd": 75008, "name": "DATACoin", "network": "eth", "shortcut": "DATACoin", @@ -3672,7 +3672,7 @@ "Github": "https://github.com/DistributedBanking/DCC", "Homepage": "http://dcc.finance" }, - "marketcap_usd": 8453014, + "marketcap_usd": 8702094, "name": "Distributed Credit Chain", "network": "eth", "shortcut": "DCC", @@ -3707,7 +3707,7 @@ "Github": "https://github.com/Dentacoin", "Homepage": "https://dentacoin.com" }, - "marketcap_usd": 71964016, + "marketcap_usd": 86095614, "name": "Dentacoin", "network": "eth", "shortcut": "DCN", @@ -3777,7 +3777,7 @@ "links": { "Homepage": "https://www.dentwireless.com" }, - "marketcap_usd": 43552570, + "marketcap_usd": 47018885, "name": "DENT", "network": "eth", "shortcut": "DENT", @@ -3813,7 +3813,7 @@ "Github": "https://github.com/dragonglasscom", "Homepage": "https://dragonglass.com/" }, - "marketcap_usd": 92722, + "marketcap_usd": 92356, "name": "Dragonglass", "network": "eth", "shortcut": "DGS", @@ -3849,7 +3849,7 @@ "Github": "https://github.com/DigixGlobal", "Homepage": "https://digix.global" }, - "marketcap_usd": 2814702, + "marketcap_usd": 2845256, "name": "Digix Gold Token", "network": "eth", "shortcut": "DGX", @@ -3884,7 +3884,7 @@ "links": { "Homepage": "https://etheroll.com" }, - "marketcap_usd": 3051263, + "marketcap_usd": 3135528, "name": "Etheroll", "network": "eth", "shortcut": "DICE", @@ -4078,7 +4078,7 @@ "Github": "https://github.com/dethertech", "Homepage": "https://dether.io" }, - "marketcap_usd": 1068799, + "marketcap_usd": 1057913, "name": "dether", "network": "eth", "shortcut": "DTH", @@ -4216,7 +4216,7 @@ "links": { "Homepage": "https://edgeless.io" }, - "marketcap_usd": 14133260, + "marketcap_usd": 14441501, "name": "Edgeless", "network": "eth", "shortcut": "EDG", @@ -4233,7 +4233,7 @@ "links": { "Homepage": "https://eidoo.io" }, - "marketcap_usd": 33017187, + "marketcap_usd": 35734441, "name": "Eidoo", "network": "eth", "shortcut": "EDO", @@ -4322,7 +4322,7 @@ "Github": "https://github.com/eltcoin", "Homepage": "http://www.eltcoin.tech/" }, - "marketcap_usd": 91568, + "marketcap_usd": 86391, "name": "ELTCOIN", "network": "eth", "shortcut": "ELTCOIN", @@ -4518,7 +4518,7 @@ "Github": "https://github.com/Krishtopa/ContractEristica", "Homepage": "https://eristica.com/" }, - "marketcap_usd": 1037661, + "marketcap_usd": 1006473, "name": "Eristica", "network": "eth", "shortcut": "ERT", @@ -4553,7 +4553,7 @@ "links": { "Homepage": "https://www.ethbits.com" }, - "marketcap_usd": 1137828, + "marketcap_usd": 1137427, "name": "Ethbits", "network": "eth", "shortcut": "ETBS", @@ -4764,7 +4764,7 @@ "Github": "https://github.com/FortKnoxster", "Homepage": "https://fortknoxster.com" }, - "marketcap_usd": 541345, + "marketcap_usd": 557001, "name": "Knoxstertoken", "network": "eth", "shortcut": "FKX", @@ -4868,7 +4868,7 @@ "Github": "https://github.com/FundRequest", "Homepage": "https://fundrequest.io" }, - "marketcap_usd": 359222, + "marketcap_usd": 380549, "name": "FundRequest", "network": "eth", "shortcut": "FND", @@ -4938,7 +4938,7 @@ "Github": "https://github.com/futuraxproject", "Homepage": "https://futurax.global" }, - "marketcap_usd": 552684, + "marketcap_usd": 750578, "name": "FUTURAX", "network": "eth", "shortcut": "FTXT", @@ -4973,7 +4973,7 @@ "links": { "Homepage": "https://funfair.io" }, - "marketcap_usd": 79338460, + "marketcap_usd": 72814321, "name": "Funfair", "network": "eth", "shortcut": "FUN", @@ -4991,7 +4991,7 @@ "Github": "https://github.com/futuraxproject", "Homepage": "https://futurax.global" }, - "marketcap_usd": 552684, + "marketcap_usd": 750578, "name": "FUTURAX", "network": "eth", "shortcut": "FXC", @@ -5026,7 +5026,7 @@ "Github": "https://github.com/BlockchainLabsNZ/gambit", "Homepage": "http://gambitcrypto.com" }, - "marketcap_usd": 3062906, + "marketcap_usd": 3157385, "name": "Gambit", "network": "eth", "shortcut": "GAM", @@ -5149,7 +5149,7 @@ "Github": "https://github.com/daostack", "Homepage": "https://daostack.io" }, - "marketcap_usd": 2885868, + "marketcap_usd": 2975722, "name": "DAOstack", "network": "eth", "shortcut": "GEN", @@ -5271,7 +5271,7 @@ "links": { "Homepage": "https://gridplus.io/token-sale" }, - "marketcap_usd": 6352291, + "marketcap_usd": 5540499, "name": "GRID", "network": "eth", "shortcut": "GRID", @@ -5360,7 +5360,7 @@ "Github": "https://github.com/GIFTO-io", "Homepage": "https://gifto.io/" }, - "marketcap_usd": 35357355, + "marketcap_usd": 36859763, "name": "Gifto", "network": "eth", "shortcut": "GTO", @@ -5396,7 +5396,7 @@ "Github": "https://github.com/GenesisVision", "Homepage": "https://genesis.vision" }, - "marketcap_usd": 52967974, + "marketcap_usd": 50497181, "name": "Genesis Vision", "network": "eth", "shortcut": "GVT", @@ -5518,7 +5518,7 @@ "Github": "https://github.com/havven/havven", "Homepage": "https://havven.io" }, - "marketcap_usd": 7969691, + "marketcap_usd": 8051509, "name": "Havven", "network": "eth", "shortcut": "HAV", @@ -5674,7 +5674,7 @@ "links": { "Homepage": "https://github.com/arachnid/hodlcoin" }, - "marketcap_usd": 176562, + "marketcap_usd": 161792, "name": "HODLCoin", "network": "eth", "shortcut": "HODL", @@ -5814,7 +5814,7 @@ "links": { "Homepage": "https://icos.icobox.io" }, - "marketcap_usd": 1597013, + "marketcap_usd": 1633962, "name": "ICOS", "network": "eth", "shortcut": "ICOS", @@ -5831,7 +5831,7 @@ "links": { "Homepage": "https://www.icon.foundation" }, - "marketcap_usd": 239919279, + "marketcap_usd": 251118219, "name": "ICON", "network": "eth", "shortcut": "ICX", @@ -5865,7 +5865,7 @@ "links": { "Homepage": "https://investfeed.com" }, - "marketcap_usd": 2158583, + "marketcap_usd": 1754347, "name": "InvestFeed", "network": "eth", "shortcut": "IFT", @@ -5968,7 +5968,7 @@ "links": { "Homepage": "https://insights.network" }, - "marketcap_usd": 1409522, + "marketcap_usd": 1559295, "name": "Insights Network", "network": "eth", "shortcut": "INSTAR", @@ -5985,7 +5985,7 @@ "links": { "Homepage": "https://internxt.io" }, - "marketcap_usd": 1356594, + "marketcap_usd": 1355268, "name": "Internxt", "network": "eth", "shortcut": "INXT", @@ -6002,7 +6002,7 @@ "links": { "Homepage": "https://iost.io/" }, - "marketcap_usd": 103019929, + "marketcap_usd": 103079253, "name": "IOSToken", "network": "eth", "shortcut": "IOST", @@ -6073,7 +6073,7 @@ "Github": "https://github.com/iqeon", "Homepage": "https://iqeon.io/" }, - "marketcap_usd": 480816, + "marketcap_usd": 497427, "name": "IQeon", "network": "eth", "shortcut": "IQN", @@ -6109,7 +6109,7 @@ "Github": "https://github.com/IoTChainCode", "Homepage": "https://iotchain.io/" }, - "marketcap_usd": 13192072, + "marketcap_usd": 13381111, "name": "IoT Chain", "network": "eth", "shortcut": "ITC", @@ -6267,7 +6267,7 @@ "Github": "https://github.com/kikinteractive/kin-token", "Homepage": "https://kin.kik.com" }, - "marketcap_usd": 40498506, + "marketcap_usd": 37500249, "name": "Kin Foundation", "network": "eth", "shortcut": "KIN", @@ -6285,7 +6285,7 @@ "Github": "https://github.com/KyberNetwork", "Homepage": "https://kyber.network" }, - "marketcap_usd": 56467485, + "marketcap_usd": 58379996, "name": "Kyber Network", "network": "eth", "shortcut": "KNC", @@ -6321,7 +6321,7 @@ "Github": "https://github.com/Cryptense/", "Homepage": "https://kryll.io/" }, - "marketcap_usd": 879722, + "marketcap_usd": 848624, "name": "Kryll", "network": "eth", "shortcut": "KRL", @@ -6373,7 +6373,7 @@ "Github": "https://github.com/latoken", "Homepage": "https://latoken.com/" }, - "marketcap_usd": 5754742, + "marketcap_usd": 5355007, "name": "LATOKEN", "network": "eth", "shortcut": "LA", @@ -6407,7 +6407,7 @@ "links": { "Homepage": "https://www.leadcoin.network/" }, - "marketcap_usd": 492691, + "marketcap_usd": 509746, "name": "LEADCOIN", "network": "eth", "shortcut": "LDC", @@ -6511,7 +6511,7 @@ "links": { "Homepage": "http://www.lifelabs.io" }, - "marketcap_usd": 1482957, + "marketcap_usd": 1804020, "name": "LIFE", "network": "eth", "shortcut": "LIFE", @@ -6563,7 +6563,7 @@ "Github": "https://github.com/lendingblock", "Homepage": "https://lendingblock.com" }, - "marketcap_usd": 3502600, + "marketcap_usd": 3980122, "name": "Lendingblock", "network": "eth", "shortcut": "LND", @@ -6580,7 +6580,7 @@ "links": { "Homepage": "https://LockChain.co" }, - "marketcap_usd": 10758855, + "marketcap_usd": 10310191, "name": "LockChain", "network": "eth", "shortcut": "LOC", @@ -6598,7 +6598,7 @@ "Github": "http://github.com/locipro/loci-coin-sale", "Homepage": "https://locipro.com" }, - "marketcap_usd": 1282333, + "marketcap_usd": 1190529, "name": "LOCIcoin", "network": "eth", "shortcut": "LOCI", @@ -6895,7 +6895,7 @@ "Github": "https://github.com/theembermine", "Homepage": "https://embermine.com/" }, - "marketcap_usd": 104407, + "marketcap_usd": 110696, "name": "Embers", "network": "eth", "shortcut": "MBRS", @@ -6913,7 +6913,7 @@ "Github": "https://github.com/musiconomi/", "Homepage": "https://musiconomi.com/" }, - "marketcap_usd": 283843, + "marketcap_usd": 220689, "name": "Musiconomi", "network": "eth", "shortcut": "MCI", @@ -7018,7 +7018,7 @@ "links": { "Homepage": "https://mftu.net" }, - "marketcap_usd": 50142, + "marketcap_usd": 48068, "name": "Mainstream For The Underground", "network": "eth", "shortcut": "MFTU", @@ -7124,7 +7124,7 @@ "Github": "https://github.com/modum-io", "Homepage": "https://modum.io" }, - "marketcap_usd": 17146887, + "marketcap_usd": 17725951, "name": "Modum", "network": "eth", "shortcut": "MOD", @@ -7193,7 +7193,7 @@ "links": { "Homepage": "https://mothership.cx" }, - "marketcap_usd": 12756464, + "marketcap_usd": 11384839, "name": "Mothership", "network": "eth", "shortcut": "MSP", @@ -7210,7 +7210,7 @@ "links": { "Homepage": "http://www.monetha.io" }, - "marketcap_usd": 8462419, + "marketcap_usd": 9049627, "name": "Monetha", "network": "eth", "shortcut": "MTH", @@ -7330,7 +7330,7 @@ "Github": "https://github.com/Merculet", "Homepage": "https://www.merculet.io" }, - "marketcap_usd": 3747019, + "marketcap_usd": 4237269, "name": "Merculet", "network": "eth", "shortcut": "MVP", @@ -7364,7 +7364,7 @@ "links": { "Homepage": "https://mysterium.network" }, - "marketcap_usd": 2689659, + "marketcap_usd": 2484645, "name": "Mysterium", "network": "eth", "shortcut": "MYST", @@ -7399,7 +7399,7 @@ "Github": "https://github.com/NANJ-COIN", "Homepage": "https://nanjcoin.com/" }, - "marketcap_usd": 9416151, + "marketcap_usd": 8557711, "name": "NANJCOIN", "network": "eth", "shortcut": "NANJ", @@ -7453,7 +7453,7 @@ "Github": "https://github.com/polyswarm", "Homepage": "https://polyswarm.io" }, - "marketcap_usd": 40928901, + "marketcap_usd": 34029331, "name": "Nectar", "network": "eth", "shortcut": "NCT", @@ -7470,7 +7470,7 @@ "links": { "Homepage": "https://neverdie.com" }, - "marketcap_usd": 510348, + "marketcap_usd": 471480, "name": "Neverdie", "network": "eth", "shortcut": "NDC", @@ -7522,7 +7522,7 @@ "links": { "Homepage": "https://nimiq.com" }, - "marketcap_usd": 4011953, + "marketcap_usd": 4523917, "name": "NIMIQ", "network": "eth", "shortcut": "NET", @@ -7629,7 +7629,7 @@ "Github": "https://github.com/NperProject", "Homepage": "https://nper.io" }, - "marketcap_usd": 1644112, + "marketcap_usd": 1822033, "name": "NPER", "network": "eth", "shortcut": "NPER", @@ -7681,7 +7681,7 @@ "links": { "Homepage": "https://nuls.io" }, - "marketcap_usd": 42905763, + "marketcap_usd": 46021731, "name": "NULS", "network": "eth", "shortcut": "NULS", @@ -7715,7 +7715,7 @@ "links": { "Homepage": "https://beyond-the-void.net" }, - "marketcap_usd": 1401659, + "marketcap_usd": 1296008, "name": "Nexium", "network": "eth", "shortcut": "NxC", @@ -7749,7 +7749,7 @@ "links": { "Homepage": "https://www.openanx.org/en" }, - "marketcap_usd": 7242092, + "marketcap_usd": 6573409, "name": "OAX", "network": "eth", "shortcut": "OAX", @@ -7963,7 +7963,7 @@ "Github": "https://github.com/OpenSTFoundation", "Homepage": "https://simpletoken.org" }, - "marketcap_usd": 20264478, + "marketcap_usd": 22129947, "name": "Simple Token 'OST'", "network": "eth", "shortcut": "OST", @@ -7981,7 +7981,7 @@ "Github": "https://github.com/owndata", "Homepage": "https://owndata.network" }, - "marketcap_usd": 827468, + "marketcap_usd": 829108, "name": "OWNDATA", "network": "eth", "shortcut": "OWN", @@ -8122,7 +8122,7 @@ "links": { "Homepage": "http://www.tenx.tech" }, - "marketcap_usd": 65065407, + "marketcap_usd": 64413524, "name": "TenX", "network": "eth", "shortcut": "PAY", @@ -8174,7 +8174,7 @@ "Github": "https://github.com/PeculiumPCL/Peculium", "Homepage": "https://peculium.io" }, - "marketcap_usd": 2077821, + "marketcap_usd": 2753769, "name": "Peculium", "network": "eth", "shortcut": "PCL", @@ -8313,7 +8313,7 @@ "links": { "Homepage": "https://polybius.io" }, - "marketcap_usd": 6512080, + "marketcap_usd": 6384311, "name": "Polybius", "network": "eth", "shortcut": "PLBT", @@ -8435,7 +8435,7 @@ "links": { "Homepage": "https://polymath.network" }, - "marketcap_usd": 91175858, + "marketcap_usd": 82343218, "name": "Polymath Network", "network": "eth", "shortcut": "POLY", @@ -8470,7 +8470,7 @@ "Github": "https://github.com/PoSToken", "Homepage": "https://postoken.org" }, - "marketcap_usd": 24131, + "marketcap_usd": 23565, "name": "PoSToken", "network": "eth", "shortcut": "POS", @@ -8504,7 +8504,7 @@ "links": { "Homepage": "https://www.paypie.com" }, - "marketcap_usd": 12549965, + "marketcap_usd": 12350287, "name": "PayPie", "network": "eth", "shortcut": "PPP", @@ -8521,7 +8521,7 @@ "links": { "Homepage": "https://populous.co" }, - "marketcap_usd": 127582144, + "marketcap_usd": 134591456, "name": "Populous", "network": "eth", "shortcut": "PPT", @@ -8538,7 +8538,7 @@ "links": { "Homepage": "https://presearch.io" }, - "marketcap_usd": 9121431, + "marketcap_usd": 9608414, "name": "Presearch", "network": "eth", "shortcut": "PRE", @@ -8749,7 +8749,7 @@ "links": { "Homepage": "https://liquid.plus" }, - "marketcap_usd": 74813138, + "marketcap_usd": 76785778, "name": "QASH", "network": "eth", "shortcut": "QASH", @@ -8802,7 +8802,7 @@ "Github": "https://github.com/quantnetwork", "Homepage": "https://www.quant.network/" }, - "marketcap_usd": 26503765, + "marketcap_usd": 28093555, "name": "Quant", "network": "eth", "shortcut": "QNT", @@ -8891,7 +8891,7 @@ "Github": "https://github.com/qtumproject", "Homepage": "https://qtum.org/" }, - "marketcap_usd": 338436257, + "marketcap_usd": 341904703, "name": "Qtum", "network": "eth", "shortcut": "QTUM", @@ -8945,7 +8945,7 @@ "Github": "https://github.com/ripio/rcn-token", "Homepage": "https://ripiocredit.network" }, - "marketcap_usd": 15943732, + "marketcap_usd": 17576609, "name": "Ripio Credit Network", "network": "eth", "shortcut": "RCN", @@ -8979,7 +8979,7 @@ "links": { "Homepage": "https://www.rebellious.io" }, - "marketcap_usd": 1703885, + "marketcap_usd": 1920239, "name": "Rebellious", "network": "eth", "shortcut": "REBL", @@ -8997,7 +8997,7 @@ "Github": "https://github.com/red", "Homepage": "https://ico.red-lang.org" }, - "marketcap_usd": 2278632, + "marketcap_usd": 2260305, "name": "Red Community Token", "network": "eth", "shortcut": "RED", @@ -9050,7 +9050,7 @@ "links": { "Homepage": "https://request.network" }, - "marketcap_usd": 34962434, + "marketcap_usd": 38925929, "name": "Request Network", "network": "eth", "shortcut": "REQ", @@ -9085,7 +9085,7 @@ "links": { "Homepage": "https://refereum.com" }, - "marketcap_usd": 12620879, + "marketcap_usd": 12669987, "name": "Refereum", "network": "eth", "shortcut": "RFR", @@ -9120,7 +9120,7 @@ "links": { "Homepage": "http://crowdsale.iex.ec" }, - "marketcap_usd": 33944199, + "marketcap_usd": 36975977, "name": "IEx.ec", "network": "eth", "shortcut": "RLC", @@ -9172,7 +9172,7 @@ "links": { "Homepage": "http://www.relex.io" }, - "marketcap_usd": 3762772, + "marketcap_usd": 3376348, "name": "Relex", "network": "eth", "shortcut": "RLX", @@ -9207,7 +9207,7 @@ "Github": "https://github.com/rocketico", "Homepage": "https://rocketico.io" }, - "marketcap_usd": 12197821, + "marketcap_usd": 11902846, "name": "Rocket Token", "network": "eth", "shortcut": "ROCK", @@ -9224,7 +9224,7 @@ "links": { "Homepage": "https://icerockmining.io" }, - "marketcap_usd": 5614144, + "marketcap_usd": 5298632, "name": "ICE ROCK MINING", "network": "eth", "shortcut": "ROCK2", @@ -9241,7 +9241,7 @@ "links": { "Homepage": "https://icerockmining.io" }, - "marketcap_usd": 5614144, + "marketcap_usd": 5298632, "name": "ICE ROCK MINING", "network": "eth", "shortcut": "ROCK2PAY", @@ -9345,7 +9345,7 @@ "links": { "Homepage": "https://rivetzintl.com" }, - "marketcap_usd": 2505807, + "marketcap_usd": 2945721, "name": "Rivetz", "network": "eth", "shortcut": "RVT", @@ -9396,7 +9396,7 @@ "links": { "Homepage": "https://saltlending.com" }, - "marketcap_usd": 54147650, + "marketcap_usd": 56243567, "name": "Salt Lending Token", "network": "eth", "shortcut": "SALT", @@ -9413,7 +9413,7 @@ "links": { "Homepage": "https://santiment.net" }, - "marketcap_usd": 25687128, + "marketcap_usd": 27826123, "name": "Santiment", "network": "eth", "shortcut": "SAN", @@ -9464,7 +9464,7 @@ "links": { "Homepage": "https://sensay.it" }, - "marketcap_usd": 1572264, + "marketcap_usd": 1602338, "name": "Sensay", "network": "eth", "shortcut": "SENSE", @@ -9637,7 +9637,7 @@ "links": { "Homepage": "http://smartlands.io" }, - "marketcap_usd": 12398288, + "marketcap_usd": 13909702, "name": "Smartlands", "network": "eth", "shortcut": "SLT", @@ -9724,7 +9724,7 @@ "links": { "Homepage": "https://singulardtv.com" }, - "marketcap_usd": 15801465, + "marketcap_usd": 16990801, "name": "SingularDTV", "network": "eth", "shortcut": "SNGLS", @@ -9810,7 +9810,7 @@ "links": { "Homepage": "https://sola.foundation" }, - "marketcap_usd": 268262, + "marketcap_usd": 262678, "name": "Sola Token", "network": "eth", "shortcut": "SOL", @@ -9827,7 +9827,7 @@ "links": { "Homepage": "https://spankchain.com" }, - "marketcap_usd": 17020755, + "marketcap_usd": 16023991, "name": "SpankChain", "network": "eth", "shortcut": "SPANK", @@ -9895,7 +9895,7 @@ "links": { "Homepage": "https://www.sapien.network/" }, - "marketcap_usd": 708093, + "marketcap_usd": 1081851, "name": "Sapien", "network": "eth", "shortcut": "SPN", @@ -10034,7 +10034,7 @@ "links": { "Homepage": "https://stktoken.com" }, - "marketcap_usd": 4200848, + "marketcap_usd": 4027957, "name": "STK Token", "network": "eth", "shortcut": "STK", @@ -10069,7 +10069,7 @@ "Github": "https://github.com/Storj", "Homepage": "https://storj.io" }, - "marketcap_usd": 40511067, + "marketcap_usd": 47062368, "name": "STORJ", "network": "eth", "shortcut": "STORJ", @@ -10086,7 +10086,7 @@ "links": { "Homepage": "https://www.stormtoken.com" }, - "marketcap_usd": 42679557, + "marketcap_usd": 43946576, "name": "Storm Token", "network": "eth", "shortcut": "STORM", @@ -10122,7 +10122,7 @@ "Github": "https://github.com/Storiqa/", "Homepage": "https://storiqa.com" }, - "marketcap_usd": 21465039, + "marketcap_usd": 22562703, "name": "Storiqa", "network": "eth", "shortcut": "STQ", @@ -10175,7 +10175,7 @@ "links": { "Homepage": "https://substratum.net" }, - "marketcap_usd": 40422779, + "marketcap_usd": 44155222, "name": "Substratum", "network": "eth", "shortcut": "SUB", @@ -10385,7 +10385,7 @@ "Github": "https://github.com/telcoin", "Homepage": "https://www.telco.in" }, - "marketcap_usd": 28630642, + "marketcap_usd": 28351165, "name": "Telcoin", "network": "eth", "shortcut": "TEL", @@ -10403,7 +10403,7 @@ "Github": "https://github.com/TrueFlip", "Homepage": "https://trueflip.io" }, - "marketcap_usd": 2460808, + "marketcap_usd": 2578106, "name": "TrueFlip", "network": "eth", "shortcut": "TFL", @@ -10420,7 +10420,7 @@ "links": { "Homepage": "https://www.thetatoken.org/" }, - "marketcap_usd": 64286821, + "marketcap_usd": 66008034, "name": "Theta Token", "network": "eth", "shortcut": "THETA", @@ -10455,7 +10455,7 @@ "links": { "Homepage": "https://chronobank.io" }, - "marketcap_usd": 3542163, + "marketcap_usd": 2960493, "name": "Chronobank", "network": "eth", "shortcut": "TIME", @@ -10489,7 +10489,7 @@ "links": { "Homepage": "https://www.blocktix.io" }, - "marketcap_usd": 7545633, + "marketcap_usd": 8057098, "name": "Blocktix", "network": "eth", "shortcut": "TIX", @@ -10506,7 +10506,7 @@ "links": { "Homepage": "https://etherscan.io/token/TokenCard" }, - "marketcap_usd": 16408853, + "marketcap_usd": 16631405, "name": "TokenCard", "network": "eth", "shortcut": "TKN", @@ -10697,7 +10697,7 @@ "links": { "Homepage": "https://taas.fund" }, - "marketcap_usd": 3241472, + "marketcap_usd": 3420899, "name": "Token-as-a-Service", "network": "eth", "shortcut": "TaaS", @@ -10732,7 +10732,7 @@ "links": { "Homepage": "https://uquidcoin.com" }, - "marketcap_usd": 1670152, + "marketcap_usd": 1663320, "name": "Uquid Coin", "network": "eth", "shortcut": "UQC", @@ -10820,7 +10820,7 @@ "Github": "https://github.com/UniversaBlockchain/universa", "Homepage": "https://www.universa.io/" }, - "marketcap_usd": 8297917, + "marketcap_usd": 7394525, "name": "Universa", "network": "eth", "shortcut": "UTN-P", @@ -10891,7 +10891,7 @@ "Github": "https://github.com/blockv", "Homepage": "https://blockv.io" }, - "marketcap_usd": 19423674, + "marketcap_usd": 17748696, "name": "BLOCKv", "network": "eth", "shortcut": "VEE", @@ -10909,7 +10909,7 @@ "Github": "https://github.com/vechain", "Homepage": "https://www.vechain.com" }, - "marketcap_usd": 577970561, + "marketcap_usd": 583258527, "name": "VeChain", "network": "eth", "shortcut": "VEN", @@ -10996,7 +10996,7 @@ "Github": "https://github.com/ViceIndustryToken", "Homepage": "https://vicetoken.com/" }, - "marketcap_usd": 770447, + "marketcap_usd": 957774, "name": "Vice Industry Token", "network": "eth", "shortcut": "VIT", @@ -11138,7 +11138,7 @@ "Github": "https://github.com/waxio", "Homepage": "https://wax.io" }, - "marketcap_usd": 68436852, + "marketcap_usd": 72297413, "name": "WAX", "network": "eth", "shortcut": "WAX", @@ -11190,7 +11190,7 @@ "links": { "Homepage": "https://wepower.network" }, - "marketcap_usd": 15100777, + "marketcap_usd": 19606741, "name": "WePower", "network": "eth", "shortcut": "WCT", @@ -11260,7 +11260,7 @@ "links": { "Homepage": "https://wings.ai" }, - "marketcap_usd": 15972284, + "marketcap_usd": 16021337, "name": "WINGS", "network": "eth", "shortcut": "WINGS", @@ -11383,7 +11383,7 @@ "links": { "Homepage": "https://www.wacoin.io" }, - "marketcap_usd": 13211161, + "marketcap_usd": 14472922, "name": "WaBi", "network": "eth", "shortcut": "WaBi", @@ -11417,7 +11417,7 @@ "links": { "Homepage": "http://www.xaurum.org" }, - "marketcap_usd": 5168363, + "marketcap_usd": 4468698, "name": "Xaurum", "network": "eth", "shortcut": "XAUR", @@ -11435,7 +11435,7 @@ "Github": "https://github.com/blitzpredict", "Homepage": "https://www.blitzpredict.io" }, - "marketcap_usd": 466515, + "marketcap_usd": 539093, "name": "BlitzPredict", "network": "eth", "shortcut": "XBP", @@ -11558,7 +11558,7 @@ "Github": "https://github.com/InkProtocol/", "Homepage": "https://paywithink.com" }, - "marketcap_usd": 3148319, + "marketcap_usd": 3112889, "name": "Ink Protocol", "network": "eth", "shortcut": "XNK", @@ -11575,7 +11575,7 @@ "links": { "Homepage": "https://xenon.network" }, - "marketcap_usd": 551723, + "marketcap_usd": 573291, "name": "XENON", "network": "eth", "shortcut": "XNN", @@ -11662,7 +11662,7 @@ "Github": "https://github.com/zapproject", "Homepage": "https://zap.store" }, - "marketcap_usd": 3242337, + "marketcap_usd": 2896754, "name": "ZAP", "network": "eth", "shortcut": "ZAP", @@ -11679,7 +11679,7 @@ "links": { "Homepage": "https://zsc.io/" }, - "marketcap_usd": 4177561, + "marketcap_usd": 4429599, "name": "Zeusshield", "network": "eth", "shortcut": "ZCS", @@ -11697,7 +11697,7 @@ "Github": "https://github.com/zilliqa", "Homepage": "https://www.zilliqa.com/" }, - "marketcap_usd": 266259722, + "marketcap_usd": 271452323, "name": "Zilliqa", "network": "eth", "shortcut": "ZIL", @@ -11714,7 +11714,7 @@ "links": { "Homepage": "https://www.zmine.com" }, - "marketcap_usd": 2729688, + "marketcap_usd": 2628123, "name": "ZMINE", "network": "eth", "shortcut": "ZMN", @@ -11749,7 +11749,7 @@ "Github": "https://github.com/carVertical", "Homepage": "https://www.carvertical.com" }, - "marketcap_usd": 4949777, + "marketcap_usd": 5438628, "name": "carVertical", "network": "eth", "shortcut": "cV", @@ -11837,7 +11837,7 @@ "Github": "https://github.com/eosdac", "Homepage": "https://eosdac.io/" }, - "marketcap_usd": 16649881, + "marketcap_usd": 16394933, "name": "eosDAC", "network": "eth", "shortcut": "eosDAC", @@ -11855,7 +11855,7 @@ "Github": "https://github.com/havven/havven", "Homepage": "https://www.havven.io" }, - "marketcap_usd": 1451227, + "marketcap_usd": 1496079, "name": "Havven-Backed USD Nomins (nUSD)", "network": "eth", "shortcut": "nUSD", @@ -11995,7 +11995,7 @@ "links": { "Homepage": "https://www.qwark.io" }, - "marketcap_usd": 1285274, + "marketcap_usd": 1261317, "name": "QWARK", "network": "ubq", "shortcut": "QWARK", @@ -12028,7 +12028,7 @@ "links": { "Homepage": "https://akroma.io" }, - "marketcap_usd": 1428222, + "marketcap_usd": 1134726, "name": "Akroma", "shortcut": "AKA", "t1_enabled": "yes", @@ -12043,7 +12043,7 @@ "links": { "Homepage": "https://atheios.com" }, - "marketcap_usd": 86094, + "marketcap_usd": 106214, "name": "Atheios", "shortcut": "ATH", "t1_enabled": "yes", @@ -12073,7 +12073,7 @@ "links": { "Homepage": "https://egem.io" }, - "marketcap_usd": 482404, + "marketcap_usd": 489252, "name": "EtherGem", "shortcut": "EGEM", "t1_enabled": "yes", @@ -12088,7 +12088,7 @@ "links": { "Homepage": "https://ellaism.org" }, - "marketcap_usd": 487861, + "marketcap_usd": 430449, "name": "Ellaism", "shortcut": "ELLA", "t1_enabled": "yes", @@ -12133,7 +12133,7 @@ "links": { "Homepage": "https://ethereumclassic.github.io" }, - "marketcap_usd": 960928096, + "marketcap_usd": 953173107, "name": "Ethereum Classic", "shortcut": "ETC", "t1_enabled": "yes", @@ -12148,7 +12148,7 @@ "links": { "Homepage": "https://www.ethereum.org" }, - "marketcap_usd": 20321233300, + "marketcap_usd": 20513976005, "name": "Ethereum", "shortcut": "ETH", "t1_enabled": "yes", @@ -12193,7 +12193,7 @@ "links": { "Homepage": "https://expanse.tech" }, - "marketcap_usd": 2521807, + "marketcap_usd": 2521021, "name": "Expanse", "shortcut": "EXP", "t1_enabled": "yes", @@ -12208,7 +12208,7 @@ "links": { "Homepage": "https://gochain.io" }, - "marketcap_usd": 46565127, + "marketcap_usd": 43113684, "name": "GoChain", "shortcut": "GO", "t1_enabled": "yes", @@ -12223,7 +12223,7 @@ "links": { "Homepage": "https://musicoin.org" }, - "marketcap_usd": 4333442, + "marketcap_usd": 4136990, "name": "Musicoin", "shortcut": "MUSIC", "t1_enabled": "yes", @@ -12238,7 +12238,7 @@ "links": { "Homepage": "https://pirl.io" }, - "marketcap_usd": 1688390, + "marketcap_usd": 2033743, "name": "Pirl", "shortcut": "PIRL", "t1_enabled": "yes", @@ -12268,7 +12268,7 @@ "links": { "Homepage": "https://ubiqsmart.com" }, - "marketcap_usd": 21595456, + "marketcap_usd": 22379915, "name": "Ubiq", "shortcut": "UBQ", "t1_enabled": "yes", @@ -12284,19 +12284,22 @@ "Github": "https://github.com/input-output-hk/cardano-sl", "Homepage": "https://www.cardano.org" }, - "marketcap_usd": 1803867147, + "marketcap_usd": 1818960913, "name": "Cardano", "shortcut": "ADA", "t1_enabled": "no", "t2_enabled": "yes", - "type": "coin" + "type": "coin", + "wallet": { + "AdaLite": "https://adalite.io/app" + } }, "misc:LSK": { "links": { "Github": "https://github.com/LiskHQ/lisk", "Homepage": "https://lisk.io/" }, - "marketcap_usd": 305534203, + "marketcap_usd": 309695836, "name": "Lisk", "shortcut": "LSK", "t1_enabled": "no", @@ -12308,9 +12311,8 @@ "Github": "https://github.com/ontio/ontology", "Homepage": "https://ont.io" }, - "marketcap_usd": 341479975, + "marketcap_usd": 344500848, "name": "Ontology", - "notes": "In development", "shortcut": "ONT", "t1_enabled": "no", "t2_enabled": "soon", @@ -12321,7 +12323,7 @@ "Github": "https://github.com/wanchain/go-wanchain", "Homepage": "https://wanchain.org" }, - "marketcap_usd": 111022914, + "marketcap_usd": 115924795, "name": "Wanchain", "shortcut": "WAN", "t1_enabled": "yes", @@ -12333,22 +12335,23 @@ "Github": "https://github.com/stellar/stellar-core", "Homepage": "https://www.stellar.org" }, - "marketcap_usd": 4222382745, + "marketcap_usd": 4213483624, "name": "Stellar", - "notes": "In development", "shortcut": "XLM", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "coin" + "type": "coin", + "wallet": { + "Account Viewer": "https://trezor.io/stellar/" + } }, "misc:XMR": { "links": { "Github": "https://github.com/monero-project/monero", "Homepage": "https://getmonero.org" }, - "marketcap_usd": 1690117802, + "marketcap_usd": 1711092346, "name": "Monero", - "notes": "In development", "shortcut": "XMR", "t1_enabled": "no", "t2_enabled": "yes", @@ -12359,9 +12362,8 @@ "Github": "https://github.com/ripple/rippled", "Homepage": "https://ripple.com" }, - "marketcap_usd": 17802208011, + "marketcap_usd": 18192473057, "name": "Ripple", - "notes": "In development", "shortcut": "XRP", "t1_enabled": "no", "t2_enabled": "yes", @@ -12372,9 +12374,8 @@ "Github": "https://github.com/tezos/tezos", "Homepage": "https://tezos.com" }, - "marketcap_usd": 781662294, + "marketcap_usd": 793806393, "name": "Tezos", - "notes": "In development", "shortcut": "XTZ", "t1_enabled": "no", "t2_enabled": "yes", @@ -12398,7 +12399,7 @@ "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 4393313, + "marketcap_usd": 5068826, "name": "DIMCOIN", "shortcut": "DIM", "t1_enabled": "yes", @@ -12413,7 +12414,7 @@ "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 4393313, + "marketcap_usd": 5068826, "name": "DIM TOKEN", "shortcut": "DIMTOK", "t1_enabled": "yes", @@ -12455,7 +12456,7 @@ "links": { "Homepage": "https://nem.io" }, - "marketcap_usd": 806376761, + "marketcap_usd": 817155514, "name": "NEM", "shortcut": "XEM", "t1_enabled": "yes", @@ -12467,12 +12468,12 @@ } }, "info": { - "marketcap_supported": "87.17 %", - "marketcap_usd": 177278193797, + "marketcap_supported": "87.03 %", + "marketcap_usd": 178871232393, "t1_coins": 694, - "t2_coins": 701, - "total_marketcap_usd": 203381043631, - "updated_at": 1540834908, - "updated_at_readable": "Mon Oct 29 18:41:48 2018" + "t2_coins": 700, + "total_marketcap_usd": 205528184645, + "updated_at": 1541083206, + "updated_at_readable": "Thu Nov 1 15:40:06 2018" } } \ No newline at end of file diff --git a/tools/coins_details.py b/tools/coins_details.py index 298ab79eb..081b03b3f 100755 --- a/tools/coins_details.py +++ b/tools/coins_details.py @@ -37,7 +37,10 @@ def coinmarketcap_init(api_key, refresh=None): force_refresh = refresh is True disable_refresh = refresh is False try: - mtime = os.path.getmtime(COINMAKETCAP_CACHE) + try: + mtime = os.path.getmtime(COINMAKETCAP_CACHE) + except FileNotFoundError: + mtime = 0 cache_is_fresh = mtime > time.time() - 3600 if disable_refresh or (cache_is_fresh and not force_refresh): print("Using cached market cap data") From 351b5387af6ee405dbdc261faa7b45768c9dfc62 Mon Sep 17 00:00:00 2001 From: David <37987466+dalijolijo@users.noreply.github.com> Date: Sun, 4 Nov 2018 15:29:09 +0100 Subject: [PATCH 622/767] Replace BTX logo (#230) --- defs/bitcoin/bitcore.png | Bin 12248 -> 25112 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/defs/bitcoin/bitcore.png b/defs/bitcoin/bitcore.png index 43dd8fc1481d3084cbd53d805e6050d1d7c57620..aebb9f8ab398d6ff61877ef22fde0f700e53736f 100644 GIT binary patch literal 25112 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 literal 12248 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 m^8Y%^FP~pNzkJ?D&;JjloGhst+wouk0000 Date: Mon, 5 Nov 2018 13:51:01 +0100 Subject: [PATCH 623/767] defs/ethereum/tokens: update --- defs/ethereum/tokens | 2 +- defs/support.json | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/defs/ethereum/tokens b/defs/ethereum/tokens index 9c1497580..492a54491 160000 --- a/defs/ethereum/tokens +++ b/defs/ethereum/tokens @@ -1 +1 @@ -Subproject commit 9c14975806392ad9324dc3d0850d7a5e2113ac84 +Subproject commit 492a5449193df1f8359572a2108a795109601c41 diff --git a/defs/support.json b/defs/support.json index 0e8db5bae..d4fa27467 100644 --- a/defs/support.json +++ b/defs/support.json @@ -1254,6 +1254,7 @@ "erc20:eth:EXMR": "2.0.7", "erc20:eth:EXY": "2.0.8", "erc20:eth:E\u20b9": "2.0.8", + "erc20:eth:FABA": "2.0.9", "erc20:eth:FAM": "2.0.7", "erc20:eth:FAN": "2.0.8", "erc20:eth:FKX": "2.0.7", From 1bf9a8c687d1f480ce0c50cc5465a67e27067a89 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 5 Nov 2018 16:13:27 +0100 Subject: [PATCH 624/767] defs: Lisk is supported on T1 --- defs/support.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/defs/support.json b/defs/support.json index d4fa27467..664af6e51 100644 --- a/defs/support.json +++ b/defs/support.json @@ -789,6 +789,7 @@ "eth:tRIN": "1.6.2", "eth:tROP": "1.6.2", "eth:tRSK": "1.6.2", + "misc:LSK": "1.7.1", "misc:WAN": "1.6.3", "misc:XLM": "1.7.1", "nem:BREEZE": "1.6.2", @@ -954,7 +955,6 @@ "erc20:rin:RDN": "(AUTO) duplicate key", "erc20:rop:NONE": "(AUTO) duplicate key", "misc:ADA": "not implemented", - "misc:LSK": "not implemented", "misc:ONT": "not implemented", "misc:XMR": "not implemented", "misc:XRP": "not implemented", From 2849051b91f11ceeb9b6dd90af46b711a9685994 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 7 Nov 2018 16:18:49 +0100 Subject: [PATCH 625/767] coins: add Electrum-GAME --- defs/coins_details.override.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/defs/coins_details.override.json b/defs/coins_details.override.json index 0d9a3ccb9..c4f9e9332 100644 --- a/defs/coins_details.override.json +++ b/defs/coins_details.override.json @@ -48,9 +48,14 @@ "Electrum-FJC": "http://www.fujicoin.org/downloads.php" } }, + "bitcoin:GAME": { + "wallet": { + "Electrum-GAME": "https://electrum-game.org" + } + }, "bitcoin:GRS": { "wallet": { - "Electrum-GRS": "https://www.groestlcoin.org/groestlcoin-electrum-wallet/" + "Electrum-GRS": "https://www.groestlcoin.org/groestlcoin-electrum-wallet" } }, "bitcoin:KOTO": { From 39c95d6309891c9bf0590a1b0598e9715f862500 Mon Sep 17 00:00:00 2001 From: David <37987466+dalijolijo@users.noreply.github.com> Date: Fri, 9 Nov 2018 15:11:07 +0100 Subject: [PATCH 626/767] Add Bitcloud (BTDX) support (#224) --- defs/bitcoin/bitcloud.json | 38 +++++++++++++++++++++++++++++++++++++ defs/bitcoin/bitcloud.png | Bin 0 -> 25430 bytes 2 files changed, 38 insertions(+) create mode 100644 defs/bitcoin/bitcloud.json create mode 100644 defs/bitcoin/bitcloud.png diff --git a/defs/bitcoin/bitcloud.json b/defs/bitcoin/bitcloud.json new file mode 100644 index 000000000..099d05403 --- /dev/null +++ b/defs/bitcoin/bitcloud.json @@ -0,0 +1,38 @@ +{ + "coin_name": "Bitcloud", + "coin_shortcut": "BTDX", + "coin_label": "Bitcloud", + "website": "https://bit-cloud.info", + "github": "https://github.com/LIMXTEC/Bitcloud", + "maintainer": "limxdev ", + "curve_name": "secp256k1", + "address_type": 25, + "address_type_p2sh": 5, + "maxfee_kb": 1000000, + "minfee_kb": 10000, + "signed_message_header": "Diamond Signed Message:\n", + "hash_genesis_block": "000002d56463941c20eae5cb474cc805b646515d18bc7dc222a0885b206eadb0", + "xprv_magic": 76066276, + "xpub_magic": 76067358, + "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "slip44": 218, + "segwit": false, + "decred": false, + "fork_id": null, + "force_bip143": false, + "bip115": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 5460, + "blocktime_seconds": 300, + "uri_prefix": "bitcloud", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [], + "blockbook": [], + "cooldown": 100 +} diff --git a/defs/bitcoin/bitcloud.png b/defs/bitcoin/bitcloud.png new file mode 100644 index 0000000000000000000000000000000000000000..f8cdf2c45f78c21662e0f5702f3ff0608c58a464 GIT binary patch literal 25430 zcmeI4byQT{_wa}ARJw)~5SXF6TS`hwkO78<%mwCb33C7{N=pMBoM7fw zwom}TeLPjuLQ8X%SoCmuPf95a{#*&BL4*#}kP3(2jACM?#lXK4Mw{`8NWFzXRu-A! zU3wT&Loh7-~hl!FEgWcKBY$h9Qlff+@@x zgDFGL@xDkU-ba83AvC*02`Hh%ZvrGdBc!qc5^@Oe)C49?KsqwOxZBiZ0dSWcV0_DO z`6B?HdX(se05Et?ON5Xf1pwZFhRFadg#m?q_a4gvbisg|=1Ok`0b}d{u%eE+0-&@C z(ALcA-MUxs`)|(6JgpLt1Nl$jUvgjU3MYFUs4xXFM&#;{! ziOui=O0C5ZyrS514NZ{_ly2ecx-`!p0suR8u$CcabR@WC;9Q^E`Ih*pd^#flZmt;Z z2mlz#FmPzSFB9)X2LNQ!{aH&TDfU`O*_u%)TTmuju)Z7f1xYcyZI!~8!Zd?ZIvKMR z21qf7d?=-2H3khyQ1LXYTZY6q;BvHTSL2F0;2lHI(^{D8{V|Xw-=W`t(2j>8m^{{{ zk3c6$3_hZ5Q9vdPX8?AE-BhPjisDt^)Of4~)K;L{5p_Zo481Q`8zuY>z!mU4q+Xu$ zx&Iq=(IM;#>6%=A@*ufPtbQ{W&ZJ1<^yGf0a&plpd>JeK1(tZ@kz&%F;O5VyXxwjY z!5kfJQm+NrFk(!*U(*$07j%%9-YZ0^d$e!b_u37a&|kJ0gAdtF3J9T=RM1t{RUK2v z1yVBb5R7B+V;}{ox89+amWO#UkyF0cNU+ zgyX9t&3R^x_ttmFmhhK&mQbMyT$0)^lQgDsGqebJBlV?JF!f$6s#bvy!`C^>3l5hUF~kI z$UGxWpJF*}Zq0=}jG?#!?flfcYnl|A7J0(Cq4^fMFfH*{zIvyRQ1#lB+tj3Asi(hw zuu$It#4;r-b7!Nq!6^uF_2+%d^!mdm?}w~)38z$b;iCC@8G_Q>cer)RGy(pg5(|l+3yP{4 z5P3N)_f!t=iB-q_1%?H?4!e$*OsGt>OiC(WR5p_|RBEzWvW1m}l{-K5e8~JTlE|AZ z$~nrllDv{UnmkiwtnaSRR+(E_4OM)zsGqI3Sy^u%tS_jSrK_!PSSDALTEsX~S5%in zkW-@?qgs$QV$oLmwX&-+uZpa6X$*CuxYDlD2V!ADVo}vz+_o9h5aUzp^Yl~{4JY&y zZUL1(m9KNT(@mj!LeojTDVyRx?R#;nAPe0-{Jt^ng~}VA zg+EdX=;nwQ<4C6Hn0nW+c*kYm(QwXla6dJPrLSSTAD1HZz63YSL={78NV>AX8A3PSI#-RhC=+A!Lh0>_E)v#e&#^2>&$K zwBCar{^qK8Ro!ZBu(SukGtz$a=Vs@g=L3KoI3t1u(j$LKe*?smBTsMIrU-GN3FyI_ zPaBd?(rYA%BqIZg0+w2eXf5BZKP#d=TuJDS>b1fRzU%vWq#q5k3<+=Z#l96B8mto{ z9^nwCOFqCE&+9fYDeXKXb1V}lGo5U~sU}#$eutM;ET6+#WSqa2r&hd!!(6XtST|Ky z(N>94kb||D&)&9i=KIEO=zQut)`AyF0_dHggGWYh>t1jUaUKUDn^2sDa+s>X^KD6d z)?DHzj5{~n7$Yz}TB%ws=s*K}17Ty*_gSe`cNADvJfqj6>UljF+PSmXmTH1-HaH%B&D2 z9d;_+<%U9Q!8am~9ut@gL@2jI?x7ZnR6nj{wHsC|*wBeD_HAJDRI%|lYIz^fQh{Kz zhNX?U6zsD$Il5t}rVG-Wsel}Zq*90xJ$hVxbAlwE$Zw2!(tU{{6!yL;aq@Y2UcuWM zvp(}d^VQ{P_A~?BxcvC#cwBp&Pvhk{Gxy3j_77wyK=B`#C+Y$#rE6X`iB#7^bGmvz z2#agI(%REH*5cb7oT`9~9@!6UQh3!L@T?C{7}Ou0igh(kXd`H=44V%_PZUqe4#kTf z<*y#ao!A)`soFVibRrERoubj>R*u#T4O0z@YH37{++LH%?WAcuOWkr~$Kk`#ewxxT zPwyb(vABAOF>^?bBQ*Z-iC5tq+DDp)R2EbqYpJB2B)MeGq!R-ZgIcv7v4N2<)1Keu zCus0ectrF(?(AxHS&gp-e2lT!>3fnIo9g4s@omz0BD2zK#k62X|WH?PwbgE(36L#2sxIaTY5(YBjcj9B3?7Xv1zcjCrl}vQBc2GBVxpQ+G?cF=sXmOi# zquP2ogQvFW4fJC^xBT{cU$Z~wB!(;|<{TL*VfVW!H~RztAYyE#rR$=rqAX+zv*Uo6 z!AzhW?sg6r7orzBad!uZsSVTxXacpcvKOV>s%xSHTA7K`>F}z6RUD+DmR1U$PEbux zRV`Cb8&g3uI&m>f5qF^r2X;^w2+-Zm*4|mjU6k&pU!jZNKbk>wz@J@QY((iKe*^^T zs@w%i!mjOC

`fw;KXFM6;$d)T`` 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 literal 0 HcmV?d00001 From cae5137bf1f281011ce8bfe3a5d0075f566856cf Mon Sep 17 00:00:00 2001 From: David <37987466+dalijolijo@users.noreply.github.com> Date: Fri, 9 Nov 2018 15:11:26 +0100 Subject: [PATCH 627/767] Add Megacoin (MEC) support (#223) --- defs/bitcoin/megacoin.json | 38 +++++++++++++++++++++++++++++++++++++ defs/bitcoin/megacoin.png | Bin 0 -> 22504 bytes 2 files changed, 38 insertions(+) create mode 100644 defs/bitcoin/megacoin.json create mode 100644 defs/bitcoin/megacoin.png diff --git a/defs/bitcoin/megacoin.json b/defs/bitcoin/megacoin.json new file mode 100644 index 000000000..077c99b17 --- /dev/null +++ b/defs/bitcoin/megacoin.json @@ -0,0 +1,38 @@ +{ + "coin_name": "Megacoin", + "coin_shortcut": "MEC", + "coin_label": "Megacoin", + "website": "https://www.megacoin.eu", + "github": "https://github.com/LIMXTEC/Megacoin", + "maintainer": "limxdev ", + "curve_name": "secp256k1", + "address_type": 50, + "address_type_p2sh": 5, + "maxfee_kb": 1000000, + "minfee_kb": 1000, + "signed_message_header": "MegaCoin Signed Message:\n", + "hash_genesis_block": "7520788e2d99eec7cf6cf7315577e1268e177fff94cb0a7caf6a458ceeea9ac2", + "xprv_magic": 76066276, + "xpub_magic": 76067358, + "xpub_magic_segwit_p2sh": 77429938, + "xpub_magic_segwit_native": 78792518, + "bech32_prefix": null, + "cashaddr_prefix": null, + "slip44": 217, + "segwit": true, + "decred": false, + "fork_id": null, + "force_bip143": false, + "bip115": false, + "default_fee_b": { + "Low": 10 + }, + "dust_limit": 546, + "blocktime_seconds": 150, + "uri_prefix": "megacoin", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [], + "blockbook": [], + "cooldown": 100 +} diff --git a/defs/bitcoin/megacoin.png b/defs/bitcoin/megacoin.png new file mode 100644 index 0000000000000000000000000000000000000000..de0e0e6150d38caceef9366a6fbc70afcbba54d0 GIT binary patch literal 22504 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 Date: Fri, 9 Nov 2018 15:11:38 +0100 Subject: [PATCH 628/767] Add Bitsend (BSD) support (#222) --- defs/bitcoin/bitsend.json | 38 ++++++++++++++++++++++++++++++++++++++ defs/bitcoin/bitsend.png | Bin 0 -> 23983 bytes 2 files changed, 38 insertions(+) create mode 100644 defs/bitcoin/bitsend.json create mode 100644 defs/bitcoin/bitsend.png diff --git a/defs/bitcoin/bitsend.json b/defs/bitcoin/bitsend.json new file mode 100644 index 000000000..02b5196e1 --- /dev/null +++ b/defs/bitcoin/bitsend.json @@ -0,0 +1,38 @@ +{ + "coin_name": "Bitsend", + "coin_shortcut": "BSD", + "coin_label": "Bitsend", + "website": "https://bitsend.info", + "github": "https://github.com/LIMXTEC/BitSend", + "maintainer": "limxdev ", + "curve_name": "secp256k1", + "address_type": 102, + "address_type_p2sh": 5, + "maxfee_kb": 1000000, + "minfee_kb": 10000, + "signed_message_header": "Bitsend Signed Message:\n", + "hash_genesis_block": "0000012e1b8843ac9ce8c18603658eaf8895f99d3f5e7e1b7b1686f35e3c087a", + "xprv_magic": 76066276, + "xpub_magic": 76067358, + "xpub_magic_segwit_p2sh": 77429938, + "xpub_magic_segwit_native": 78792518, + "bech32_prefix": null, + "cashaddr_prefix": null, + "slip44": 91, + "segwit": true, + "decred": false, + "fork_id": null, + "force_bip143": false, + "bip115": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 5460, + "blocktime_seconds": 200, + "uri_prefix": "bitsend", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [], + "blockbook": [], + "cooldown": 100 +} diff --git a/defs/bitcoin/bitsend.png b/defs/bitcoin/bitsend.png new file mode 100644 index 0000000000000000000000000000000000000000..cab15264e18910baf4fc7a0f701fc57a1c14bc6c GIT binary patch literal 23983 zcmeI4bySqw_wXM?x|CExQc@TgN^0otPJw|LLSpDt1O<^2=@LYgE|nHgLJ8?^5Cka! zDFLZ>(0i}m`QFR={?_|@|9Ka)*2F&h?0wGuoPEx7&a>7tAsTA(1h|yA000muD#&Od zzs*nH*qF%AnMBX)$S)ix1w&T=z#}<%qXEf}F986qx~;UdhK3Eo4dH5oaH3O`mZo!Z zL0H+^!vVl+G*#PLM|+W6Y-e&yO8J3*tTIB244Y0%D$JiWikY1r=YrA$`llmgn)MfD zWzSQ!q(4A^_|QL`O!FFkDDE)UEPckqd(R$(e%PP(eP%aUv-7#*sB8!_U$B{4(uGxr zjUTVTtI6+=pDT6c;>UZ<@0zA(xg-K`nVf(N*d;J}*F#1$VAoGnl!KuT>kWYB)rW@- z)TyS_aZ?8$6D>(4nV|UxqSd)YU025TCj}&Y9!g~a5^`w%sfoB&Wyv@?$6QIEf zn6upZ+z0rl?k4%70miZPWN7J8038YZfec_H0u*%Vg~|d3+yJSS@;f15m=oYu)VERq zUQ_^eofq(40oeEex8{Q&HsHK3VBW&W=mi8O0i<#p`l9O`MHlATk))DdiB>TQ$p#o> zb2?+`>vLUU?Np@TAQga~gCF?Ggw%BI-2Xscai{rX*a)~qidiNN`Dbde}|)ttE=a2O!3m)cfzb*5lNH*>5HTK zn@%TeWS>5&8X1|JogG$sCuI!%pnv~OA5`ESAJFtMyi>HOGGHhDq)F`jP$oHi6P(EqA{EW{{%Y?rY-Z}( zK00KIA9!&Sg612=nRCMu{hKn&1p~LbnH>Pws7BQHvtpzB+uWP(@;qJ>Ka@|u3iw+o zMmqz5sSFdB&W955W^4eENe^IuAxX7Wf9YBsCUrf=cs<^Mxj>*4)4K+#3sSf+e`*(V zwt~A-toJ)!(6F0>`Xy-i>NIWc$2bvkHRx6nia8N|hhnGIv(^OQoR@6DCV|qAK0vbw zHDG**O_3C|OJA>Wo;Zw&uJr+_CWCSmzXFd|s1BX30?me)%Q>N76S>z>A}s*;?!o;U zd7jvSSDIq|_+`>nIf9gdav6BtFgKp$Nb>ZQZkJL@v2cN>^WFJ2M5B=q>1OV_g-ckx z@9ep`ni{2EUcZJDW7+nSp#VR>iSmVB0eW@Fwq@5#&-26qvUNBD=RKw9pjRXn3{(u% zh81$?sG0aKj^YU7pa*I;urS2rD3>z7zPR`9k_DJ2*g)YL;~;S)3Fw0F1L=2yOvEA5 zV3w*!=M-N)*XbqhmFsoXVqCnIo5H6+$r#f*3bT8KB@}y&j-w@LHg&dfmUotFmVUz+ zH`PMI`T4H)46D|Mn@X4GF3j=GVZsx^lDf~5wI*_&>RjZHG?FTOTCP>B8Jt7H=bkLo zagSV4IkPY$u8-1&!e+;|c){)U#fi8pY6;!?y={x~3keJ8Tb}p?_sQ-xKd@%KoN@{4 zlJ#ZJOT~#QS(p35E;s9N3-T-{&Luv8+v{ZJjHU6P#zAgU}Iw?q_%yf@#>O(x@)| zTr>Tp*{7N&Iy}qEC0^I)?FjPky9e;UV}98&a?69gI`NREI!r7t_oc!PX}e9e6MKrV$|}}2CW-kte3Zz=T=;PF*l4kR#fg#ej93SL1A6-zNm3ErZ(pG>)R2B zVps&hBZT=hMl^n|r7onxdcu>*osU<=Z@=G)Uj$hjbY18g=KWMo(#H1AHdQ;NPu`ls zy2|z5=7X>h<-2WM2@tLns-}sS+F2#HZRZ=)KE2ziDJ3ZlD>-Aus{*UGtHI+>+WDTa zr5WeU5v8Z2zlh*61Mtk^#o&_IG`5(Z78t zE<6VR_G)BBGCaLXl1wu4ZsFaz`a*h}mM@PA>38N6JEJ;n34=8J76!Yqpr4^(jehtn zLBT=#_r)JNJusl`;Yr~4>=~DKos#)36E8EFV$Gv2RLrTw&ko7sx+yv;_?qvvcoUbE zVf%nVs)3@tGPMvFdy#;n{hO(SmCfLp)ET@_z7&a|mK#pqPdgj7g0jhTxrna`$4jU@ zP`e)cRq_IR4te<14HD0*4{^O4Xd0{;Ks^FI4~C^p*srKt9&H8ipjSul9m6U> zSK_c*?MfaMU>I`ZmP=(V=oqmMv17fmhU;6s?FjiG6rZ2Q(XrBA@?q?e;N!I?$1B7Q z#M9B`nfI0TIcW?&*B0CqdL`=YJ%;;<41?po9%g}PWoS9O!+?7Jihe?oUoEqbs$GC- z{fE2tWoUNGc)GZALARI3hgNQ=8-NU_%Anuxr&2-4LPCp3$0!oW?hLbzd(BY=BR;%M z8jmf_&3{(~>$2*#TKqi8nPyBFpO^4CfzXj)WVDoEO0RTf`5pkX8I$Jv5bp%#>C(58hyN*4pRK7Le_`VE`8Q1I_LR#O9>7wbX4p1ag`axBXeHq*X2N?r5h zBoH9bjdajF#vzpQxd?(xy(U?dam&z8LF`uJF{j)Z2bsd*kL~8Rfq7mYq{Ki4beA zFSt$j${vT!i`0m8nru|MZM+(rBhjzaPc9ZVb69d)5Qh_h zYqhgTl_uCZu~qB6PJTQ%kR~KHQM>7b*m=LRJw-m@=fZN>*;YN`$+B8lqh4dSC9xto zB0Uj2AZ~m#KD;)5=VqN}`ex6#{0?T&y{@CE?MNbNjL4+Ow)+J4m(#98goI|qT@Duy zvZcFVUCe0|M;S+LMHJ*9zukf5q0XMfo~H>L2{CUSZe<=W)h%Bx9&2i7y7H#gi|4(>*00k^hw6k}Mce#<~-3ln3|=U3%cb&`hL z*edwAz_oqUbS!=BEQMeU;t*U>FJYtu2e=!Q&db5x(N)+>jNyl0VdU?VVh{t}k1B3< zVhoZe4bmB?YS2j|T;O#4Tmqby+ya7hfCHz$}^n2%eS z4@~#Rivfa*{3YrFvl7;lk^7@Lq$I{*Nh+{^Y~%uX~v&3>f9&k+(u=AW>%3moc(aM3{^>>)q1?AQ4Td3-v_DmqquTSpke z)0IsWglh6@ynlIv%Rt@W5TxaGP99`33Lv*w!o1wVU?EO!K4EU|-<QnfoxP z8}z^N^0&IEeh@HQEARix%deV$_o1pPtmx?K26eQAE6PBSv2)ql!i3?1a9&=p0GyML zn~#T+4~qPNUI$xn3h+U#U~uqtm;krck0AeU{vWPo5SH#Id4P2NbK=7gmPq%1rIoOt zkd=@CFCQ-_Oo#`}$-@J`&M9OC<>wT-&cg$S3JM4c!k~XP^qaH)Xh_|~7P&4#?SHFt z5(^C37!QnBzybypLUvxrf)mQkC&&rqv$Ejihr(b&R&e-rL7u;2`3E=u(UgL%D>9qB zf6FptuKiefwBgQwFa1+tZ~J2fae}(I!cQiq7{i}4^RFf6uNCFQ=EnpVhFYGiJrK*2 z^o7GjL4Pa#)vdoQ|1h)t&*A*<5d8H2oB6-D;b{YRJT3iyy82P;-<`N3tlT`IE^tX} zWQP1VGxMj{znh`D7X_WH)%Ldk4+g>&>hXU!4FBD%`u}1Wer2(x4b;&Z4ugRHOyEBY z{=1R;Ii7!?S${4F|2Y#yf2}M!a4$C%s5jij_3x?hW2Q<$t^Zzn(%+wn^FN!ZzuNoJ zmKxLn4lz{M)uNM8lvmV|RH0Lo)zMeiQWgdMQ%zI^C%r(acM`^b=kZ5PRFD6=(*dP# zKcbaV)X|nzlli|3@ZX&L4`TWm>E8$T_fGv|KKw>o8exxcQANPu5Z>R-eii>h`rLYyk#R2LDv2}o2!$D4t)}o+a zg}>E2*%S#QuTIF768ht+fb{+!WvKNHPOdWc?my}ag1M0|5YNfyAEv*nQB4g`H~n3W zYWmAk*U{Du0{){ll;Yp4PIhj>KR9b64;gR>GBng8)Y=-hUT}K@8C&Gu!u8}DDJ1ZR z4XWZF4GsUz@HfRDhCj3Fx1+$1W#eZl@}Pk{?H;u)^f`JiaeaG?M>T|C2eIv*7687>qcr;BH}PUnN7J;Q|pEao#)A^ui&v2mtIbA%%bvhpu?HMibP=K5+ zp5Z#34~q5-7YdNm#WP%|^Fh&`;X(m&x_E}`bUrBBGh8S@P8ZK`oz4eEdxi@I$m!x4 zuG9ITXwPt=06ASe!*x0z6zv%<6dbM4P>r0|0VIMHxvQ zuhB25-nVq-2AbcNz`(6cuve1AQY}s70=57;EB2~8I@zNIW6q57f!DfJ4lilVWbH~> z^$K;P^vrPRbkp@ROV2SR=7cEtzXRy;9t9S}IDnJdH;$YU_kGveVT^6*kGrfPtrKfv zZ|8-^T+=pl9;>m;+b$^FPQ#E^Hlp>burUwaRX#uS{`Ry#8aDaV6eb^fp#+TvPVBkn zfLrVOi}|#<8}t|X&Lx75$br^FuQkg$HS>zyozkvz=It$1rNJp+?M8oN|1p2Vd%F`O zbw1|zco>WQF1+1~`JibTZ?{T4L2&g!BSt7JzGx?gwD`n%| ztb({2l0xbt`)98+pAB_|;rD{sgdg>5Vp@d@aC1N&Kz#%?4g#p&nFX-%@{_cHt!793 zG#FZ9lU`%*GIDqJt%u5S7;jST4naxG63Q%Gx9&*y=jpanJA51skt0{bxymdvztYd} z(b-aNGTznnd=glj1+5rJV2yMiPCZzD5#sr#2;TLQnfjg$UXCuep!cPUuJ9Av13q^3 z>=jHuhxQf`w@x(k4=Mv_9J0=gb~ml^@3{-{*SslC)@HV=*a0u}htpn^&jLpr>E7}~CiYt^(s*Cex~ zneTIag^-21@a0!kLp4@r~LJ`JX{P5aHpEWu8p(3*OLa z*3XfbvqWK-dY5=N1a_%`4BNePU#S+4FiRqukG$`y?u(_2DqcJi^-?4iR3m6ir`pYF zS%2+8+<0hPCcOJqLd?!XU(;l4b$vXuufc2eyJjHf>&v0}0rLA6uL!Y$tacsokBE$r z#SF3c9S0WLY-ACu8N657{im)yu$Z3J;6v{jukDt#!`*F*_R4y9{+zkz^%0*J0RtlW ztT{JbMZ}q9n#~fLcm>%Eyjk&fy%F1YS%7|Pwm$qi0k+LlH7{pNWV=69oQ@BlM1z8hIS;w2Bhh`Cqo z*orWpHkRip8_BG;MyCxuxI_)e1XZiqqXGS8qm@S;jI*)jEuE=Xtj)X7Nh*ckU!T=% zu5C_%j}iG9G=*SxF&yOK(BE2@z~!BpC1%bp4O*TOl}a6dTuW@gvH{odsVmV+ni`xo zU!01JGK0pax;4&fK;BrJ=yM&Xe>l##8D{LiwyJv7G2>NChV;Sikl3e6s7sFh9lxNY z%sb+8#=$Do6YLvs^OGfH@|-BMdr|Kc8*@dCuE%7mZB&7>dYxH*1BK1hI(g)NiL#MF zZT^R4_ah^+`Y~Vp z)xHMUe%gp;J;i&le|E^h5-srVk;{F)8mF!-t)vYl8u-V7_v<-2kF^WUl#nBDecSOy z!hDX-*QFV+Ead{m>c-ZI6eSz(wrkJuwXK$BkCxDi>2TP@k9ri7f~g$4H|`wAEU?{O z=))Z*IrK2D8XDGMS>$7%tmTYy3VEV2GA!974)07=n;jcDS;J~Cx0-*jmQNnuEv$*F z@!7O_!p*;*;UCw3)BS}-qjRSFCmy-2rH*HCv7^Jo?Sl#ht4Hl5dqaZ2JDzdf)G-QOLf~GHp4jc%L!$OUeHG8*xQ8 zcG))<*;S?su}mVE++jD=BChenEZqE!cQ*OKWzy5O%1?@mZ?1lwwW$gVS-hwcPUz$? zR66V>B0q?y_1w86?VOYTytqJc%-hv`4_Bprh|QM4mltcK2W%8qCJ7ixVybNA3XC7W z%`UBd5mn}5^_o}X>Q`wc#FuH`vsRk72Qsdq#t}YrI6Lgf`&C_csA~o_Yt6JN^aVmGN`NCut$G5$kEYindSj*ZeqCrF0Bo?z4 z%9g9^w6NZ)MaxE!*mHyE!6FP&hg_Eon?_Z&8!=P&RP}b%FN?+zMBYXldzebIi8iW( zCes{Ae|yz{S#HPPU}xnqC4`gPn?l#`rem59v)Zgv2DN(%VfYt9|0ha<5H_1wn%I_7 zv`mlc?hj_|Br@&arLIp7A9wNC-MuX0C))Oz2`pSN#^kU%VIrp+vm-Mti+gm-q44O)a*){}?vFyx)Y4Tcl$QEKuDx+0 zg$7L04EdBqR13y?-Oe7tsekoywz$p6=2Z)6U*-fFcXKATk}=G2`z{Z9%uBsqY{MWa zWwTT~Gd=9jv*t1AWHbSdhECHk$3*fKeocFIXI{`9)42hrIIDi-1_RdC+-mKKA%Xv~ z7i`9cIXut2W42r@&?p{;k#zKSi9XsrTkJ=TtuWMj*GkCi$Q%x^rs%r03@krG(6*4F=!7A?y8TAIjX z5*GEBJBf;euk`I%r^B$AFU%G%MypSyx|CdMqEF&u#gGv2r&Ark>(5mT?cVv$Sl}^i z#>stXUigtO)viCQmxPBsWGkwWnhVkz5F-`Fm1{R2<-oGL9PKr-r+Co^U$~58Z$~4O z3ix#K^OZ`pN3)^NN=Jkyu7w=RU~Cy2i9FUY0C9`$@EO=2(6tl@JmR*ZW?N@|!zC>1 z91#@Z?QSCMaVZRh9kUn^n*+SL$SZr($UbrOOK;uWbp%5T2HgAJEge?+8efva0!58< zGhN((7qskUdzX`h*#dQxX{w2IzkZE(v1+;uv$D6Se2WM8zxwVG&Uj-F-?A2syJquA zOlT6vr2Xuuz|%}?eJNQyaY~o;hP=p+GmFsc$?C4h!E?7>h>m2w_(Xaj++z-3x(ryn z#z@!WxhE@B-E9$!P;czPluUX^K;|b7(L(RZ`6585U&hNXw-#mQzJazsJqch(F9B>A zdul+JZ@COl&DqnSl&JR2iX%!7W;vHg|iO;?*N^e~Rn zlOQTs6rn2W_=~mJxCz0P`PJtDf6b>GI*qSb>SiQu&y0g=eDWt+S+MePHi|!Ov@&X7Mb`N}>_4x9fAL*gP|w{; zp?vNj65PDb=h-rsN|jQLW(oXn{m3{90J(XeF~YNCn4@1LvyHl?*WdE3K`sg7#np;0kiR*;7Kw)-X>2+I%J$EfuKqdA~-^g7LY%T^otS3rZ;(J6+K$O{#yys+$ z%S45>>g_w*7Z-a=G$11|OUrl_BOa|il&C@dnM=@Bk1*XrQ63*t7w(;|FpCbyHEqbI zdikR}uO5U&M}$-IM+ww^%y8shdTnY3zXz20;ChMPN?UBcCGIjfN!)3D}gBgm*Hc6RPL z&fAgvvghmE6~BIw{W@!33BD38J^PS#&vivc&~PU=<;u$1csGH!`@zOxuW7B9L3+G0 zi@YUK_?M{nu&?)$H1Cq}GLt@e@iMmRDLWbUs*_DqH*9Ytv}C>Dm23v?_~W+1gf%`3!!HSivpMG4`v%kMNq_^=1)R-Ad%%5V(E* z{BF*@6}N^j{1~K4THd1VL<*0Ll1zR5kw<5>JiMY57}KB^W@|&9Kskkn!w^xQok8`r zmtEToxa=LU6`_V&HV0U{f0+Dtu1&OZiey-OB>z&SN3_ZjLeOe9^{dTG@2YuYE$t-= zSJWz-Jr>{XXL0TA4}NpIAG1B8MjQPp`Fzx)34FgbL0$W?S)x-7In&A;&lC-wn z_sn{1+*97w!i+8@M8rfy-Qn7ZgrL*)7GKPJfd0t)kTpZPGw{i>k;B24+EtG5^Gp2& zs_F}xhABdjYktVnySVRKWkI;4+XLDpmql~3y(U9+y1}llFXMy+{TrWq&l}=(a3WTE zN{`rh0z|#HTdn{fQ*bLw)Y3{7o+61wWa50F>`Q72ueo=4&R-$_f>I^Ald~50+iH`v zOW%=)ileWJJ4$;A6cHL81FmvM$I~$}j_wlATZ{f%BQR%p@O+z9OG?1jBi|5Zq70#LBW!%-UTPVBwOspw}OKF3158-*;8)hfeb%)su z&(YN7MYgcFXUMILDYOfc!>j{X!V#eno=k0_!vPxOw%&RnU^ZR3gh)JRJZIqcx5rp_ zM;+ASt>ak3xOv1n>zYKO<1pXjAph5_RIDXR(|1G8(-9k8e>KSyM6 zsrIuJKa7JD>_#6H+kg2uDi}KK@uI%t(Xg957;S?mYFh!8Q=;+Gd=z@A7nr5)XM&L}as6LYnkvkC7`mmtU2HKo?#hTMq4nm|oKBJ%qWp8AZUd z_UG6fnB%!OU&bkj)1k{ZEDiW%A^N%H19IQ1-yhs8nI|^4WZdQ=^39pMhx)(;6?v@Kfk41+T}{AQIahqe&i|Dd*(ybtN1T&QhJUw zeP-9+y?#ttq48~nm$A|@+PP&$oG@D>-r+l5aLb3nm_1&~vQU;H>ei`Vk{&zwmr*nm z`i-Yu{j_#13l|0-DJHD0wNiq^vI47mO(@$1?l1D+W4}wSHXLm>HAe|9202%3Ej07P z?%yKI4CV@%`HY8IK^T?USTFu2-@0S9k2-(bWEjy}$_?%c(v2l0Qjou-8j}QmLSsAA zQ#eOmyeWE5gh`@t2Ct#g8F`y-T@trKyX)BH@9`}>;*1kPzS?j<(! z)~OhGFv)>+dJ>ru`(*HgvTtoSO-FAGe2UxR3MXO^lA6kq+rSQ*p31AdiDPg&TckXr*a1Hs|+_v(cWX89Qt zpPx5QKYueIcOyRnd31hXMvkj)JpTEncSdI!)15T(MYi1bP;T( z{>Qb8(IGu(2TX$!MpBO|$jUNx=t5Jr(aSQ*iwoKAfEp-GCbCreQ!qwMdu%e1{iz*! z*tqzvcUodCTdq*+B6$vddph!VqP$5?QQM4fuX*+*C9ep2BW=HKG>w{W*1$dNu!~DK z3CZWqr34U6f(P&8`_n&XHHSzow(lvhdu^lB$S3ZaXY)yL5p#Oj$OI_8eh)V#>1eY#VUEdUBt49&J~%@0bW!#-Sg? UOLKsn{O_eA@}G^0q|ERBAD1>67XSbN literal 0 HcmV?d00001 From 31ad279a6206450b57ca150fbc12e849cddc535c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Harris=20Brakmi=C4=87?= Date: Fri, 9 Nov 2018 15:14:46 +0100 Subject: [PATCH 629/767] Actinium integration (#221) --- defs/bitcoin/actinium.json | 41 +++++++++++++++++++++++++++++++++++++ defs/bitcoin/actinium.png | Bin 0 -> 6411 bytes defs/support.json | 4 ++++ 3 files changed, 45 insertions(+) create mode 100644 defs/bitcoin/actinium.json create mode 100755 defs/bitcoin/actinium.png diff --git a/defs/bitcoin/actinium.json b/defs/bitcoin/actinium.json new file mode 100644 index 000000000..f7f5e7e0a --- /dev/null +++ b/defs/bitcoin/actinium.json @@ -0,0 +1,41 @@ +{ + "coin_name": "Actinium", + "coin_shortcut": "ACM", + "coin_label": "Actinium", + "website": "https://actinium.org", + "github": "https://github.com/Actinium-project/Actinium", + "maintainer": "Harris Brakmic ", + "curve_name": "secp256k1", + "address_type": 53, + "address_type_p2sh": 55, + "maxfee_kb": 40000000, + "minfee_kb": 100000, + "signed_message_header": "Actinium Signed Message:\n", + "hash_genesis_block": "28d77872e23714562f49a1be792c276623c1bbe3fdcf21b6035cfde78b00b824", + "xprv_magic": 76066276, + "xpub_magic": 76067358, + "xpub_magic_segwit_p2sh": 77429938, + "xpub_magic_segwit_native": null, + "bech32_prefix": "acm", + "cashaddr_prefix": null, + "slip44": 228, + "segwit": true, + "decred": false, + "fork_id": null, + "force_bip143": false, + "bip115": false, + "default_fee_b": { + "Normal": 1000 + }, + "dust_limit": 546, + "blocktime_seconds": 150, + "uri_prefix": "actinium", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [], + "blockbook": [ + "https://explorer.actinium.org", + "https://explorer2.actinium.org" + ], + "cooldown": 100 + } diff --git a/defs/bitcoin/actinium.png b/defs/bitcoin/actinium.png new file mode 100755 index 0000000000000000000000000000000000000000..07823ace384e316df0ac7678873c29a461326e21 GIT binary patch literal 6411 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 Date: Fri, 9 Nov 2018 15:16:22 +0100 Subject: [PATCH 630/767] defs: remove invalid backend APIs --- defs/bitcoin/actinium.json | 7 ++----- defs/bitcoin/capricoin.json | 2 +- defs/bitcoin/crown.json | 3 +-- defs/bitcoin/decred_testnet.json | 2 +- defs/bitcoin/monetaryunit.json | 4 +--- 5 files changed, 6 insertions(+), 12 deletions(-) diff --git a/defs/bitcoin/actinium.json b/defs/bitcoin/actinium.json index f7f5e7e0a..ed072ff2c 100644 --- a/defs/bitcoin/actinium.json +++ b/defs/bitcoin/actinium.json @@ -33,9 +33,6 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [], - "blockbook": [ - "https://explorer.actinium.org", - "https://explorer2.actinium.org" - ], + "blockbook": [], "cooldown": 100 - } +} diff --git a/defs/bitcoin/capricoin.json b/defs/bitcoin/capricoin.json index 2eef0c926..f0b82f694 100644 --- a/defs/bitcoin/capricoin.json +++ b/defs/bitcoin/capricoin.json @@ -11,7 +11,7 @@ "maxfee_kb": 2000000, "minfee_kb": 1000, "signed_message_header": "Capricoin Signed Message:\n", - "hash_genesis_block": "000007abc632537def4bce0806ca008150b19363f887ad0cb5cf582804f8bc3d", + "hash_genesis_block": "00000d23fa0fc52c90893adb1181c9ddffb6c797a3e41864b9a23aa2f2981fe3", "xprv_magic": 76066276, "xpub_magic": 76067358, "xpub_magic_segwit_p2sh": 77429938, diff --git a/defs/bitcoin/crown.json b/defs/bitcoin/crown.json index eabb1890d..71c36b31f 100644 --- a/defs/bitcoin/crown.json +++ b/defs/bitcoin/crown.json @@ -33,8 +33,7 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [ - "https://crw-bitcore.crown.tech", - "https://crw2-bitcore.crown.tech" + "https://crw-bitcore.crown.tech" ], "blockbook": [], "cooldown": 100 diff --git a/defs/bitcoin/decred_testnet.json b/defs/bitcoin/decred_testnet.json index e4b20e9bd..d1f31c479 100644 --- a/defs/bitcoin/decred_testnet.json +++ b/defs/bitcoin/decred_testnet.json @@ -11,7 +11,7 @@ "maxfee_kb": 10000000, "minfee_kb": 1000, "signed_message_header": "Decred Signed Message:\n", - "hash_genesis_block": "4261602a9d07d80ad47621a64ba6a07754902e496777edc4ff581946bd7bc29c", + "hash_genesis_block": "a649dce53918caf422e9c711c858837e08d626ecfcd198969b24f7b634a49bac", "xprv_magic": 70615959, "xpub_magic": 70617041, "xpub_magic_segwit_p2sh": null, diff --git a/defs/bitcoin/monetaryunit.json b/defs/bitcoin/monetaryunit.json index d27f77a62..ca95e27d6 100644 --- a/defs/bitcoin/monetaryunit.json +++ b/defs/bitcoin/monetaryunit.json @@ -32,9 +32,7 @@ "uri_prefix": "monetaryunit", "min_address_length": 27, "max_address_length": 34, - "bitcore": [ - "https://explorer.monetaryunit.org" - ], + "bitcore": [], "blockbook": [], "cooldown": 100 } From 97655c70e7fcef9536e026c73042f8da1496ade5 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 9 Nov 2018 15:36:25 +0100 Subject: [PATCH 631/767] add missing support info --- .travis.yml | 2 +- defs/support.json | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 361471166..d9cbb6ef4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,7 +24,7 @@ script: - jsonlint defs/*.json - jsonlint defs/*/*.json - python tools/cointool.py check - - python tools/support.py check --ignore-tokens --ignore-missing + - python tools/support.py check --ignore-tokens - python protob/graph.py protob/*.proto notifications: diff --git a/defs/support.json b/defs/support.json index 7479c282f..28d1e204e 100644 --- a/defs/support.json +++ b/defs/support.json @@ -1,11 +1,9 @@ { "connect": { "supported": { - "bitcoin:ACM": true, "bitcoin:BCH": true, "bitcoin:BTC": true, "bitcoin:BTG": true, - "bitcoin:CPC": true, "bitcoin:DASH": true, "bitcoin:DOGE": true, "bitcoin:LTC": true, @@ -53,8 +51,10 @@ "supported": { "bitcoin:ACM": "soon", "bitcoin:BCH": "1.6.2", + "bitcoin:BSD": "soon", "bitcoin:BTC": "1.5.2", "bitcoin:BTCP": "1.6.2", + "bitcoin:BTDX": "soon", "bitcoin:BTG": "1.6.2", "bitcoin:BTX": "1.7.1", "bitcoin:CPC": "soon", @@ -71,6 +71,7 @@ "bitcoin:KOTO": "1.7.1", "bitcoin:LTC": "1.5.2", "bitcoin:MONA": "1.6.0", + "bitcoin:MEC": "soon", "bitcoin:MUE": "1.7.1", "bitcoin:NMC": "1.5.2", "bitcoin:PTC": "1.7.1", @@ -967,8 +968,10 @@ "supported": { "bitcoin:ACM": "soon", "bitcoin:BCH": "2.0.7", + "bitcoin:BSD": "soon", "bitcoin:BTC": "2.0.5", "bitcoin:BTCP": "2.0.7", + "bitcoin:BTDX": "soon", "bitcoin:BTG": "2.0.7", "bitcoin:BTX": "2.0.8", "bitcoin:CPC": "soon", @@ -985,6 +988,7 @@ "bitcoin:KOTO": "2.0.8", "bitcoin:LTC": "2.0.5", "bitcoin:MONA": "2.0.5", + "bitcoin:MEC": "soon", "bitcoin:MUE": "2.0.8", "bitcoin:NMC": "2.0.5", "bitcoin:PTC": "2.0.8", From 37a22b045ffbc770d7e8142bc72657486f65dd5d Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 9 Nov 2018 16:08:24 +0100 Subject: [PATCH 632/767] defs: fix testnet backend uris --- defs/bitcoin/bitcoin_testnet.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/defs/bitcoin/bitcoin_testnet.json b/defs/bitcoin/bitcoin_testnet.json index 1b5af1cfc..0e4c88c45 100644 --- a/defs/bitcoin/bitcoin_testnet.json +++ b/defs/bitcoin/bitcoin_testnet.json @@ -32,10 +32,10 @@ "uri_prefix": "bitcoin", "min_address_length": 27, "max_address_length": 34, - "bitcore": [ - "https://testnet-bitcore1.trezor.io", - "https://testnet-bitcore2.trezor.io" + "bitcore": [], + "blockbook": [ + "https://tbtc1.trezor.io", + "https://tbtc2.trezor.io" ], - "blockbook": [], "cooldown": 100 } From 8757aa5cc0acd775f45dbc89a6ed361b984288ce Mon Sep 17 00:00:00 2001 From: WillyTheCat <39898519+WillyTheCat@users.noreply.github.com> Date: Sun, 11 Nov 2018 13:53:57 +0100 Subject: [PATCH 633/767] Added BitCash (#232) --- defs/bitcoin/bitcash.json | 41 ++++++++++++++++++++++++++++++++++++++ defs/bitcoin/bitcash.png | Bin 0 -> 5885 bytes 2 files changed, 41 insertions(+) create mode 100644 defs/bitcoin/bitcash.json create mode 100755 defs/bitcoin/bitcash.png diff --git a/defs/bitcoin/bitcash.json b/defs/bitcoin/bitcash.json new file mode 100644 index 000000000..b152c090b --- /dev/null +++ b/defs/bitcoin/bitcash.json @@ -0,0 +1,41 @@ +{ + "coin_name": "BitCash", + "coin_shortcut": "BITC", + "coin_label": "BitCash", + "website": "https://www.choosebitcash.com", + "github": "https://github.com/WillyTheCat/BitCash", + "maintainer": "Christian Kassler ", + "curve_name": "secp256k1", + "address_type": 230, + "address_type_p2sh": 235, + "maxfee_kb": 30000000, + "minfee_kb": 1000, + "signed_message_header": "Bitcash Signed Message:\n", + "hash_genesis_block": "7d57d87ff3c15a521530af60edee1887fba9c193eb518face926785c4cd8f4f1", + "xprv_magic": 76066276, + "xpub_magic": 76067358, + "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "slip44": 230, + "segwit": false, + "decred": false, + "fork_id": null, + "force_bip143": false, + "bip115": false, + "default_fee_b": { + "Low": 10, + "Economy": 70, + "Normal": 140, + "High": 200 + }, + "dust_limit": 546, + "blocktime_seconds": 60, + "uri_prefix": "bitcash", + "min_address_length": 52, + "max_address_length": 53, + "bitcore": [], + "blockbook": [], + "cooldown": 100 +} diff --git a/defs/bitcoin/bitcash.png b/defs/bitcoin/bitcash.png new file mode 100755 index 0000000000000000000000000000000000000000..609955097a8db0f05389f7ee5ce346554471a901 GIT binary patch literal 5885 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 T&2AKn00000NkvXXu0mjf!KgrG literal 0 HcmV?d00001 From eb0c46542b67f004950134e94706d64504eaf2e2 Mon Sep 17 00:00:00 2001 From: Michael Ira Krufky Date: Sun, 11 Nov 2018 07:54:48 -0500 Subject: [PATCH 634/767] Add Mix support (#234) --- defs/ethereum/networks.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/defs/ethereum/networks.json b/defs/ethereum/networks.json index f31099d2c..e3110fbef 100644 --- a/defs/ethereum/networks.json +++ b/defs/ethereum/networks.json @@ -226,5 +226,15 @@ "rskip60": false, "url": "https://pirl.io", "blockbook": [] + }, + { + "chain": "mix", + "chain_id": 76, + "slip44": 76, + "shortcut": "MIX", + "name": "Mix", + "rskip60": false, + "url": "https://www.mix-blockchain.org", + "blockbook": [] } ] From bea5e320460ea8bd1b6309816362628878075897 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Sun, 11 Nov 2018 13:58:28 +0100 Subject: [PATCH 635/767] add new stuff to support.json --- defs/ethereum/networks.json | 40 ++++++++++++++++++------------------- defs/support.json | 5 +++++ 2 files changed, 25 insertions(+), 20 deletions(-) diff --git a/defs/ethereum/networks.json b/defs/ethereum/networks.json index e3110fbef..10c2683a6 100644 --- a/defs/ethereum/networks.json +++ b/defs/ethereum/networks.json @@ -54,16 +54,6 @@ "url": "https://ubiqsmart.com", "blockbook": [] }, - { - "chain": "eosc", - "chain_id": 2018, - "slip44": 2018, - "shortcut": "EOSC", - "name": "EOS Classic", - "rskip60": false, - "url": "https://eos-classic.io", - "blockbook": [] - }, { "chain": "etsc", "chain_id": 28, @@ -147,6 +137,16 @@ "url": "https://ellaism.org", "blockbook": [] }, + { + "chain": "mix", + "chain_id": 76, + "slip44": 76, + "shortcut": "MIX", + "name": "Mix", + "rskip60": false, + "url": "https://www.mix-blockchain.org", + "blockbook": [] + }, { "chain": "clo", "chain_id": 820, @@ -167,6 +167,16 @@ "url": "https://atheios.com", "blockbook": [] }, + { + "chain": "eosc", + "chain_id": 2018, + "slip44": 2018, + "shortcut": "EOSC", + "name": "EOS Classic", + "rskip60": false, + "url": "https://eos-classic.io", + "blockbook": [] + }, { "chain": "egem", "chain_id": 1987, @@ -226,15 +236,5 @@ "rskip60": false, "url": "https://pirl.io", "blockbook": [] - }, - { - "chain": "mix", - "chain_id": 76, - "slip44": 76, - "shortcut": "MIX", - "name": "Mix", - "rskip60": false, - "url": "https://www.mix-blockchain.org", - "blockbook": [] } ] diff --git a/defs/support.json b/defs/support.json index 28d1e204e..b043761f1 100644 --- a/defs/support.json +++ b/defs/support.json @@ -24,6 +24,7 @@ "eth:ETSC": true, "eth:EXP": true, "eth:GO": true, + "eth:MIX": true, "eth:MUSIC": true, "eth:PIRL": true, "eth:RSK": true, @@ -51,6 +52,7 @@ "supported": { "bitcoin:ACM": "soon", "bitcoin:BCH": "1.6.2", + "bitcoin:BITC": "soon", "bitcoin:BSD": "soon", "bitcoin:BTC": "1.5.2", "bitcoin:BTCP": "1.6.2", @@ -783,6 +785,7 @@ "eth:ETSC": "1.6.2", "eth:EXP": "1.6.2", "eth:GO": "1.6.2", + "eth:MIX": "soon", "eth:MUSIC": "1.6.3", "eth:PIRL": "1.6.3", "eth:RSK": "1.6.2", @@ -968,6 +971,7 @@ "supported": { "bitcoin:ACM": "soon", "bitcoin:BCH": "2.0.7", + "bitcoin:BITC": "soon", "bitcoin:BSD": "soon", "bitcoin:BTC": "2.0.5", "bitcoin:BTCP": "2.0.7", @@ -1702,6 +1706,7 @@ "eth:ETSC": "2.0.7", "eth:EXP": "2.0.7", "eth:GO": "2.0.7", + "eth:MIX": "soon", "eth:MUSIC": "2.0.8", "eth:PIRL": "2.0.8", "eth:RSK": "2.0.7", From 4f153b5fd04333596abf4586d464f721bf4022ca Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Sun, 11 Nov 2018 13:59:48 +0100 Subject: [PATCH 636/767] travis: put back ignore-missing --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index d9cbb6ef4..361471166 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,7 +24,7 @@ script: - jsonlint defs/*.json - jsonlint defs/*/*.json - python tools/cointool.py check - - python tools/support.py check --ignore-tokens + - python tools/support.py check --ignore-tokens --ignore-missing - python protob/graph.py protob/*.proto notifications: From 0fd94f6beebe1d02828931826e56349e64352c94 Mon Sep 17 00:00:00 2001 From: matejcik Date: Mon, 12 Nov 2018 12:03:52 +0100 Subject: [PATCH 637/767] tools/support.py: fix bug when token collides with coin --- tools/support.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/support.py b/tools/support.py index 09143e68b..422f00d29 100755 --- a/tools/support.py +++ b/tools/support.py @@ -271,7 +271,8 @@ def check(ignore_tokens, ignore_missing): print(f"{coin['key']} - {coin['name']}") supported_dups = find_supported_duplicate_tokens(coins_dict) - for coin in supported_dups: + for key in supported_dups: + coin = coins_dict[key] checks_ok = False print(f"Token {coin['key']} ({coin['name']}) is duplicate but supported") From 491f1c1ad2a5fcb0ca246357dd891285a9cdb290 Mon Sep 17 00:00:00 2001 From: matejcik Date: Mon, 12 Nov 2018 12:07:50 +0100 Subject: [PATCH 638/767] tools/support.py: set --ignore-tokens as default when running the checks --- .travis.yml | 2 +- tools/support.py | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index 361471166..2c2dbd900 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,7 +24,7 @@ script: - jsonlint defs/*.json - jsonlint defs/*/*.json - python tools/cointool.py check - - python tools/support.py check --ignore-tokens --ignore-missing + - python tools/support.py check --ignore-missing - python protob/graph.py protob/*.proto notifications: diff --git a/tools/support.py b/tools/support.py index 422f00d29..5b35db0fd 100755 --- a/tools/support.py +++ b/tools/support.py @@ -227,18 +227,18 @@ def fix(dry_run): @cli.command() # fmt: off -@click.option("-t", "--ignore-tokens", is_flag=True, help="Ignore unsupported ERC20 tokens") +@click.option("-T", "--check-tokens", is_flag=True, help="Also check unsupported ERC20 tokens, ignored by default") @click.option("-m", "--ignore-missing", is_flag=True, help="Do not fail on missing supportinfo") # fmt: on -def check(ignore_tokens, ignore_missing): +def check(check_tokens, ignore_missing): """Check validity of support information. Ensures that `support.json` data is well formed, there are no keys without corresponding coins, and there are no coins without corresponding keys. - If `--ignore-tokens` is specified, the check will ignore ERC20 tokens - without support info. This is useful because there is usually a lot of ERC20 - tokens. + If `--check-tokens` is specified, the check will also take into account ERC20 tokens + without support info. This is disabled by default, because support info for ERC20 + tokens is not strictly required. If `--ignore-missing` is specified, the check will display coins with missing support info, but will not fail when missing coins are found. This is @@ -261,7 +261,7 @@ def check(ignore_tokens, ignore_missing): missing = find_unsupported_coins(coins_dict) for device, values in missing.items(): - if ignore_tokens: + if not check_tokens: values = [coin for coin in values if not coin_info.is_token(coin)] if values: if not ignore_missing: From 9f02376c70c4ae5b8020a7693a98baa811e20d46 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 12 Nov 2018 13:50:11 +0100 Subject: [PATCH 639/767] support: replace soon with version where applicable --- defs/support.json | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/defs/support.json b/defs/support.json index b043761f1..231506e1a 100644 --- a/defs/support.json +++ b/defs/support.json @@ -50,13 +50,13 @@ }, "trezor1": { "supported": { - "bitcoin:ACM": "soon", + "bitcoin:ACM": "1.7.2", "bitcoin:BCH": "1.6.2", - "bitcoin:BITC": "soon", - "bitcoin:BSD": "soon", + "bitcoin:BITC": "1.7.2", + "bitcoin:BSD": "1.7.2", "bitcoin:BTC": "1.5.2", "bitcoin:BTCP": "1.6.2", - "bitcoin:BTDX": "soon", + "bitcoin:BTDX": "1.7.2", "bitcoin:BTG": "1.6.2", "bitcoin:BTX": "1.7.1", "bitcoin:CPC": "soon", @@ -73,11 +73,11 @@ "bitcoin:KOTO": "1.7.1", "bitcoin:LTC": "1.5.2", "bitcoin:MONA": "1.6.0", - "bitcoin:MEC": "soon", + "bitcoin:MEC": "1.7.2", "bitcoin:MUE": "1.7.1", "bitcoin:NMC": "1.5.2", "bitcoin:PTC": "1.7.1", - "bitcoin:RVN": "soon", + "bitcoin:RVN": "1.7.2", "bitcoin:SMART": "1.7.1", "bitcoin:TAZ": "1.6.2", "bitcoin:TBCH": "1.6.2", @@ -785,7 +785,7 @@ "eth:ETSC": "1.6.2", "eth:EXP": "1.6.2", "eth:GO": "1.6.2", - "eth:MIX": "soon", + "eth:MIX": "1.7.2", "eth:MUSIC": "1.6.3", "eth:PIRL": "1.6.3", "eth:RSK": "1.6.2", @@ -969,13 +969,13 @@ }, "trezor2": { "supported": { - "bitcoin:ACM": "soon", + "bitcoin:ACM": "2.0.9", "bitcoin:BCH": "2.0.7", - "bitcoin:BITC": "soon", - "bitcoin:BSD": "soon", + "bitcoin:BITC": "2.0.9", + "bitcoin:BSD": "2.0.9", "bitcoin:BTC": "2.0.5", "bitcoin:BTCP": "2.0.7", - "bitcoin:BTDX": "soon", + "bitcoin:BTDX": "2.0.9", "bitcoin:BTG": "2.0.7", "bitcoin:BTX": "2.0.8", "bitcoin:CPC": "soon", @@ -992,11 +992,11 @@ "bitcoin:KOTO": "2.0.8", "bitcoin:LTC": "2.0.5", "bitcoin:MONA": "2.0.5", - "bitcoin:MEC": "soon", + "bitcoin:MEC": "2.0.9", "bitcoin:MUE": "2.0.8", "bitcoin:NMC": "2.0.5", "bitcoin:PTC": "2.0.8", - "bitcoin:RVN": "soon", + "bitcoin:RVN": "2.0.9", "bitcoin:SMART": "2.0.8", "bitcoin:TAZ": "2.0.7", "bitcoin:TBCH": "2.0.7", @@ -1706,7 +1706,7 @@ "eth:ETSC": "2.0.7", "eth:EXP": "2.0.7", "eth:GO": "2.0.7", - "eth:MIX": "soon", + "eth:MIX": "2.0.9", "eth:MUSIC": "2.0.8", "eth:PIRL": "2.0.8", "eth:RSK": "2.0.7", From 3600af0c8e713edf0b0c23525979eab65f5f7537 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 12 Nov 2018 14:02:16 +0100 Subject: [PATCH 640/767] defs: add eos, trx --- defs/misc/eos.png | Bin 0 -> 10347 bytes defs/misc/misc.json | 22 +++++++++++++++++++++- defs/misc/trx.png | Bin 0 -> 4789 bytes defs/support.json | 4 ++++ 4 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 defs/misc/eos.png create mode 100644 defs/misc/trx.png diff --git a/defs/misc/eos.png b/defs/misc/eos.png new file mode 100644 index 0000000000000000000000000000000000000000..08f12fd270a4af39efc50ccc1901fa6b4e276063 GIT binary patch literal 10347 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 P00000NkvXXu0mjfNIXa~ literal 0 HcmV?d00001 diff --git a/defs/support.json b/defs/support.json index 231506e1a..657e14a08 100644 --- a/defs/support.json +++ b/defs/support.json @@ -961,7 +961,9 @@ "erc20:rin:RDN": "(AUTO) duplicate key", "erc20:rop:NONE": "(AUTO) duplicate key", "misc:ADA": "not implemented", + "misc:EOS": "not implemented", "misc:ONT": "not implemented", + "misc:TRX": "not implemented", "misc:XMR": "not implemented", "misc:XRP": "not implemented", "misc:XTZ": "not implemented" @@ -1717,8 +1719,10 @@ "eth:tROP": "2.0.7", "eth:tRSK": "2.0.7", "misc:ADA": "2.0.8", + "misc:EOS": "soon", "misc:LSK": "2.0.7", "misc:ONT": "soon", + "misc:TRX": "soon", "misc:WAN": "2.0.7", "misc:XLM": "2.0.8", "misc:XMR": "2.0.8", From 8c53177626349e801757b0a1452a50ed72c51f27 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 12 Nov 2018 14:12:26 +0100 Subject: [PATCH 641/767] defs: remove eos, trx erc20 tokens --- defs/support.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/defs/support.json b/defs/support.json index 657e14a08..f6f8d41b3 100644 --- a/defs/support.json +++ b/defs/support.json @@ -332,7 +332,6 @@ "erc20:eth:ENG": "1.6.2", "erc20:eth:ENJ": "1.6.2", "erc20:eth:ENTRP": "1.6.2", - "erc20:eth:EOS": "1.6.2", "erc20:eth:EPX": "1.6.2", "erc20:eth:ESZ": "1.6.2", "erc20:eth:ETBS": "1.6.2", @@ -682,7 +681,6 @@ "erc20:eth:TOOR": "1.6.3", "erc20:eth:TRCN": "1.6.2", "erc20:eth:TRST": "1.6.2", - "erc20:eth:TRX": "1.6.2", "erc20:eth:TSW": "1.6.3", "erc20:eth:TWN": "1.6.2", "erc20:eth:TWNKL": "1.6.2", @@ -851,6 +849,7 @@ "erc20:eth:EDU:1": "(AUTO) duplicate key", "erc20:eth:EGT:0": "(AUTO) duplicate key", "erc20:eth:EGT:1": "(AUTO) duplicate key", + "erc20:eth:EOS": "switched to custom network", "erc20:eth:EVN:0": "(AUTO) duplicate key", "erc20:eth:EVN:1": "(AUTO) duplicate key", "erc20:eth:FANX:0": "(AUTO) duplicate key", @@ -931,6 +930,7 @@ "erc20:eth:TICO:0": "(AUTO) duplicate key", "erc20:eth:TICO:1": "(AUTO) duplicate key", "erc20:eth:TRC": "(AUTO) duplicate key", + "erc20:eth:TRX": "switched to custom network", "erc20:eth:UMKA:0": "(AUTO) duplicate key", "erc20:eth:UMKA:1": "(AUTO) duplicate key", "erc20:eth:VIBEX:0": "(AUTO) duplicate key", @@ -1254,7 +1254,6 @@ "erc20:eth:ENG": "2.0.7", "erc20:eth:ENJ": "2.0.7", "erc20:eth:ENTRP": "2.0.7", - "erc20:eth:EOS": "2.0.7", "erc20:eth:EPX": "2.0.7", "erc20:eth:ESZ": "2.0.7", "erc20:eth:ETBS": "2.0.7", @@ -1605,7 +1604,6 @@ "erc20:eth:TOOR": "2.0.8", "erc20:eth:TRCN": "2.0.7", "erc20:eth:TRST": "2.0.7", - "erc20:eth:TRX": "2.0.7", "erc20:eth:TSW": "2.0.8", "erc20:eth:TWN": "2.0.7", "erc20:eth:TWNKL": "2.0.7", @@ -1780,6 +1778,7 @@ "erc20:eth:EDU:1": "(AUTO) duplicate key", "erc20:eth:EGT:0": "(AUTO) duplicate key", "erc20:eth:EGT:1": "(AUTO) duplicate key", + "erc20:eth:EOS": "switched to custom network", "erc20:eth:EVN:0": "(AUTO) duplicate key", "erc20:eth:EVN:1": "(AUTO) duplicate key", "erc20:eth:FANX:0": "(AUTO) duplicate key", @@ -1860,6 +1859,7 @@ "erc20:eth:TICO:0": "(AUTO) duplicate key", "erc20:eth:TICO:1": "(AUTO) duplicate key", "erc20:eth:TRC": "(AUTO) duplicate key", + "erc20:eth:TRX": "switched to custom network", "erc20:eth:UMKA:0": "(AUTO) duplicate key", "erc20:eth:UMKA:1": "(AUTO) duplicate key", "erc20:eth:VIBEX:0": "(AUTO) duplicate key", From 8d7dd590ffe8c02a8d09aaefb7af41c11503f5a2 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 14 Nov 2018 11:17:28 +0100 Subject: [PATCH 642/767] defs: change trc contact --- defs/bitcoin/terracoin.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/defs/bitcoin/terracoin.json b/defs/bitcoin/terracoin.json index cb167ddf8..2f845d3b7 100644 --- a/defs/bitcoin/terracoin.json +++ b/defs/bitcoin/terracoin.json @@ -4,7 +4,7 @@ "coin_label": "Terracoin", "website": "https://terracoin.io", "github": "https://github.com/terracoin/terracoin", - "maintainer": "Justin F. Hallett ", + "maintainer": "The Terracoin Foundation ", "curve_name": "secp256k1", "address_type": 0, "address_type_p2sh": 5, From 67d699ca3fe06e899d80b3d7b1a482e12bb9498d Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 16 Nov 2018 01:21:44 +0100 Subject: [PATCH 643/767] defs: add Tezos SimpleStaking wallet --- defs/coins_details.override.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/defs/coins_details.override.json b/defs/coins_details.override.json index c4f9e9332..146d99b9c 100644 --- a/defs/coins_details.override.json +++ b/defs/coins_details.override.json @@ -98,5 +98,10 @@ "wallet": { "Account Viewer": "https://trezor.io/stellar/" } + }, + "misc:XTZ": { + "wallet": { + "SimpleStaking": "https://simplestaking.com" + } } } From 1fa013ddca78600afde29f40515d8cbe23ab1245 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 16 Nov 2018 01:26:17 +0100 Subject: [PATCH 644/767] defs: EOS erc20 not required anymore in override.json --- defs/coins_details.override.json | 4 ---- 1 file changed, 4 deletions(-) diff --git a/defs/coins_details.override.json b/defs/coins_details.override.json index 146d99b9c..aa5cc9211 100644 --- a/defs/coins_details.override.json +++ b/defs/coins_details.override.json @@ -5,10 +5,6 @@ "erc20:eth:GNT": { "coinmarketcap_alias": "golem-network-tokens" }, - "erc20:eth:EOS": { - "hidden": 1, - "notes": "EOS has a mainnet now" - }, "erc20:eth:VEN": { "links": { "Homepage": "https://www.vechain.com" From b1b592f062a7ea52db99872d637129c4b54d48ab Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 16 Nov 2018 01:31:02 +0100 Subject: [PATCH 645/767] defs: fix t2 support version --- defs/support.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/defs/support.json b/defs/support.json index f6f8d41b3..7e9df4916 100644 --- a/defs/support.json +++ b/defs/support.json @@ -971,13 +971,13 @@ }, "trezor2": { "supported": { - "bitcoin:ACM": "2.0.9", + "bitcoin:ACM": "2.0.10", "bitcoin:BCH": "2.0.7", - "bitcoin:BITC": "2.0.9", - "bitcoin:BSD": "2.0.9", + "bitcoin:BITC": "2.0.10", + "bitcoin:BSD": "2.0.10", "bitcoin:BTC": "2.0.5", "bitcoin:BTCP": "2.0.7", - "bitcoin:BTDX": "2.0.9", + "bitcoin:BTDX": "2.0.10", "bitcoin:BTG": "2.0.7", "bitcoin:BTX": "2.0.8", "bitcoin:CPC": "soon", @@ -994,11 +994,11 @@ "bitcoin:KOTO": "2.0.8", "bitcoin:LTC": "2.0.5", "bitcoin:MONA": "2.0.5", - "bitcoin:MEC": "2.0.9", + "bitcoin:MEC": "2.0.10", "bitcoin:MUE": "2.0.8", "bitcoin:NMC": "2.0.5", "bitcoin:PTC": "2.0.8", - "bitcoin:RVN": "2.0.9", + "bitcoin:RVN": "2.0.10", "bitcoin:SMART": "2.0.8", "bitcoin:TAZ": "2.0.7", "bitcoin:TBCH": "2.0.7", @@ -1266,7 +1266,7 @@ "erc20:eth:EXMR": "2.0.7", "erc20:eth:EXY": "2.0.8", "erc20:eth:E\u20b9": "2.0.8", - "erc20:eth:FABA": "2.0.9", + "erc20:eth:FABA": "2.0.10", "erc20:eth:FAM": "2.0.7", "erc20:eth:FAN": "2.0.8", "erc20:eth:FKX": "2.0.7", @@ -1706,7 +1706,7 @@ "eth:ETSC": "2.0.7", "eth:EXP": "2.0.7", "eth:GO": "2.0.7", - "eth:MIX": "2.0.9", + "eth:MIX": "2.0.10", "eth:MUSIC": "2.0.8", "eth:PIRL": "2.0.8", "eth:RSK": "2.0.7", From b4e568409384aa30fb6be8afe1b6700ad526537f Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 16 Nov 2018 01:43:32 +0100 Subject: [PATCH 646/767] defs/misc: add maid, omni, usdt --- defs/misc/maid.png | Bin 0 -> 4794 bytes defs/misc/misc.json | 29 +++++++++++++++++++++++++++++ defs/misc/omni.png | Bin 0 -> 2258 bytes defs/misc/usdt.png | Bin 0 -> 1286 bytes defs/support.json | 6 ++++++ 5 files changed, 35 insertions(+) create mode 100644 defs/misc/maid.png create mode 100644 defs/misc/omni.png create mode 100644 defs/misc/usdt.png diff --git a/defs/misc/maid.png b/defs/misc/maid.png new file mode 100644 index 0000000000000000000000000000000000000000..3b38762a7141b36d7a550de1136c1c3f29d8fe42 GIT binary patch literal 4794 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 literal 0 HcmV?d00001 diff --git a/defs/misc/usdt.png b/defs/misc/usdt.png new file mode 100644 index 0000000000000000000000000000000000000000..8bd76c3440c93a3e525c4765b608bd679e0945d5 GIT binary patch literal 1286 zcmV+h1^N1kP)C0000~P)t-sOlff? zpnD~udnKWJC82vJp?f8udnKTIC82vIp?W2udL^NICZT)(|NnHut5UR;NU)GPs)z9T z_J+%~FQtL_{QI=u(x=(V$>`qT^6X%`o|x0Y87@L;0000CbW%=J05`ayP#?|>^WleT zVyZgZ000D4Nkla)IMYu-u-0g|dp zQ(N7k7Nfp{bwep7l+vb#U61fZEEvItusx9m_Jt{01SvZfg$Nh3UK8dcQlkRj0d#)W zp9~P>HIHf*ss?2=->?`_bgTJX2)Je`Y7%{+4RXC*!IT*RC`(uTIJ6zhqsWhd8`9%6)`#sC6E^zoE%dI-Z5!#yNSL096Hmrmie6M|Pf@1bP35tw=h#x>!QuV3* zj+GTWi+`-Nj$$ICDew_i+ z7%TC0CIoq);<1_o{P4g7O8}5IAO|b~@Ha=K7Xy5Lf}uE>phb^`D zkUq(b+JsC*d;kmyc}ag80Q7Q!f&fiIGMokA;RKl72Jnc+;6?xxe;}6!po>2d$O8a_ zCxO;t9R{`8`2)b&O{rlOS_e-9zb(0*R%P8Hjg*U{L!c+|0F{d!&MC+_fL`rlmRXHckPm2~=EW>_Jz+RoiiDNMsVUM4 zC*_Q>;}JkxRqcWKnHwvTX2G->?!;jv`VO!fF303)C>CypC;(wNUo*skksrM02te_C z0CNn$z(p*)6~R_wt90T-0bWk*yITNY z(uG+D08sg!)s_KxyD;c)0C>AH315(s0Y2_;yUPJ!V&y_I07$GINd>4=i#JjMKx+9+ zBEU{DP2faG1K2HL=r085(o1NP0BDTDb$KZ?0+2~nKB`#afMb4{AixLo@B6Co#sFCkkaae=zV`bQ?D0H?tR25 z<4|X5{{*o;7j?F_%P538Yu6|4!rYO-?7g?%O}C}mZXXQP!+Kw``MCw%0R(M2a76<+ wMqS-d@@~5BF6%!3ZGi^}A%p Date: Fri, 16 Nov 2018 01:44:46 +0100 Subject: [PATCH 647/767] defs: regenerate coins_details.json --- defs/coins_details.json | 710 +++++++++++++++++++++++++--------------- 1 file changed, 437 insertions(+), 273 deletions(-) diff --git a/defs/coins_details.json b/defs/coins_details.json index 9d4b8a702..7c6984bf8 100644 --- a/defs/coins_details.json +++ b/defs/coins_details.json @@ -1,11 +1,24 @@ { "coins": { + "bitcoin:ACM": { + "links": { + "Github": "https://github.com/Actinium-project/Actinium", + "Homepage": "https://actinium.org" + }, + "marketcap_usd": 355255, + "name": "Actinium", + "shortcut": "ACM", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "coin", + "wallet": {} + }, "bitcoin:BCH": { "links": { "Github": "https://github.com/Bitcoin-ABC/bitcoin-abc", "Homepage": "https://www.bitcoincash.org" }, - "marketcap_usd": 7392015944, + "marketcap_usd": 7384298756, "name": "Bitcoin Cash", "shortcut": "BCH", "t1_enabled": "yes", @@ -16,12 +29,38 @@ "Trezor": "https://wallet.trezor.io" } }, + "bitcoin:BITC": { + "links": { + "Github": "https://github.com/WillyTheCat/BitCash", + "Homepage": "https://www.choosebitcash.com" + }, + "marketcap_usd": 0, + "name": "BitCash", + "shortcut": "BITC", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "coin", + "wallet": {} + }, + "bitcoin:BSD": { + "links": { + "Github": "https://github.com/LIMXTEC/BitSend", + "Homepage": "https://bitsend.info" + }, + "marketcap_usd": 2495394, + "name": "Bitsend", + "shortcut": "BSD", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "coin", + "wallet": {} + }, "bitcoin:BTC": { "links": { "Github": "https://github.com/bitcoin/bitcoin", "Homepage": "https://bitcoin.org" }, - "marketcap_usd": 110873489405, + "marketcap_usd": 98203021547, "name": "Bitcoin", "shortcut": "BTC", "t1_enabled": "yes", @@ -37,7 +76,7 @@ "Github": "https://github.com/BTCPrivate/BitcoinPrivate", "Homepage": "https://btcprivate.org" }, - "marketcap_usd": 41166978, + "marketcap_usd": 36459567, "name": "Bitcoin Private", "shortcut": "BTCP", "t1_enabled": "yes", @@ -47,12 +86,25 @@ "BTCP Electrum": "https://github.com/BTCPrivate/electrum-btcp" } }, + "bitcoin:BTDX": { + "links": { + "Github": "https://github.com/LIMXTEC/Bitcloud", + "Homepage": "https://bit-cloud.info" + }, + "marketcap_usd": 264173, + "name": "Bitcloud", + "shortcut": "BTDX", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "coin", + "wallet": {} + }, "bitcoin:BTG": { "links": { "Github": "https://github.com/BTCGPU/BTCGPU", "Homepage": "https://bitcoingold.org" }, - "marketcap_usd": 456632374, + "marketcap_usd": 458901785, "name": "Bitcoin Gold", "shortcut": "BTG", "t1_enabled": "yes", @@ -68,7 +120,7 @@ "Github": "https://github.com/LIMXTEC/BitCore", "Homepage": "https://bitcore.cc" }, - "marketcap_usd": 11292168, + "marketcap_usd": 8055309, "name": "Bitcore", "shortcut": "BTX", "t1_enabled": "yes", @@ -81,7 +133,7 @@ "Github": "https://github.com/Capricoinofficial/Capricoin", "Homepage": "https://capricoin.org" }, - "marketcap_usd": 1221249, + "marketcap_usd": 1426858, "name": "Capricoin", "shortcut": "CPC", "t1_enabled": "soon", @@ -94,7 +146,7 @@ "Github": "https://github.com/dashpay/dash", "Homepage": "https://www.dash.org" }, - "marketcap_usd": 1292433788, + "marketcap_usd": 1169764329, "name": "Dash", "shortcut": "DASH", "t1_enabled": "yes", @@ -110,7 +162,7 @@ "Github": "https://github.com/decred/dcrd", "Homepage": "https://www.decred.org" }, - "marketcap_usd": 349401645, + "marketcap_usd": 306470317, "name": "Decred", "shortcut": "DCR", "t1_enabled": "yes", @@ -123,7 +175,7 @@ "Github": "https://github.com/digibyte/digibyte", "Homepage": "https://digibyte.io" }, - "marketcap_usd": 230827729, + "marketcap_usd": 182106799, "name": "DigiByte", "shortcut": "DGB", "t1_enabled": "yes", @@ -149,7 +201,7 @@ "Github": "https://github.com/dogecoin/dogecoin", "Homepage": "https://dogecoin.com" }, - "marketcap_usd": 439994653, + "marketcap_usd": 327254828, "name": "Dogecoin", "shortcut": "DOGE", "t1_enabled": "yes", @@ -164,7 +216,7 @@ "Github": "https://github.com/fujicoin/fujicoin", "Homepage": "https://fujicoin.org" }, - "marketcap_usd": 325535, + "marketcap_usd": 369938, "name": "Fujicoin", "shortcut": "FJC", "t1_enabled": "yes", @@ -179,7 +231,7 @@ "Github": "https://github.com/flash-coin", "Homepage": "https://www.flashcoin.io" }, - "marketcap_usd": 4802957, + "marketcap_usd": 4088864, "name": "Flashcoin", "shortcut": "FLASH", "t1_enabled": "yes", @@ -192,7 +244,7 @@ "Github": "https://github.com/FeatherCoin/Feathercoin", "Homepage": "https://feathercoin.com" }, - "marketcap_usd": 9384867, + "marketcap_usd": 6588626, "name": "Feathercoin", "shortcut": "FTC", "t1_enabled": "yes", @@ -205,27 +257,29 @@ "Github": "https://github.com/gamecredits-project/gamecredits", "Homepage": "https://gamecredits.org" }, - "marketcap_usd": 11510512, + "marketcap_usd": 6637591, "name": "GameCredits", "shortcut": "GAME", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": {} + "wallet": { + "Electrum-GAME": "https://electrum-game.org" + } }, "bitcoin:GRS": { "links": { "Github": "https://github.com/Groestlcoin/groestlcoin", "Homepage": "https://www.groestlcoin.org" }, - "marketcap_usd": 36532338, + "marketcap_usd": 27491545, "name": "Groestlcoin", "shortcut": "GRS", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", "wallet": { - "Electrum-GRS": "https://www.groestlcoin.org/groestlcoin-electrum-wallet/" + "Electrum-GRS": "https://www.groestlcoin.org/groestlcoin-electrum-wallet" } }, "bitcoin:KOTO": { @@ -248,7 +302,7 @@ "Github": "https://github.com/litecoin-project/litecoin", "Homepage": "https://litecoin.org" }, - "marketcap_usd": 2945948871, + "marketcap_usd": 2599324586, "name": "Litecoin", "shortcut": "LTC", "t1_enabled": "yes", @@ -259,12 +313,25 @@ "Trezor": "https://wallet.trezor.io" } }, + "bitcoin:MEC": { + "links": { + "Github": "https://github.com/LIMXTEC/Megacoin", + "Homepage": "https://www.megacoin.eu" + }, + "marketcap_usd": 349558, + "name": "Megacoin", + "shortcut": "MEC", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "coin", + "wallet": {} + }, "bitcoin:MONA": { "links": { "Github": "https://github.com/monacoinproject/monacoin", "Homepage": "https://monacoin.org" }, - "marketcap_usd": 72733471, + "marketcap_usd": 67710755, "name": "Monacoin", "shortcut": "MONA", "t1_enabled": "yes", @@ -292,7 +359,7 @@ "Github": "https://github.com/namecoin/namecoin-core", "Homepage": "https://namecoin.org" }, - "marketcap_usd": 8241534, + "marketcap_usd": 7422742, "name": "Namecoin", "shortcut": "NMC", "t1_enabled": "yes", @@ -308,7 +375,7 @@ "Github": "https://github.com/FundacionPesetacoin/PesetacoinCore", "Homepage": "https://pesetacoin.info" }, - "marketcap_usd": 714991, + "marketcap_usd": 446411, "name": "Pesetacoin", "shortcut": "PTC", "t1_enabled": "yes", @@ -321,7 +388,7 @@ "Github": "https://github.com/RavenProject/Ravencoin", "Homepage": "https://ravencoin.org" }, - "marketcap_usd": 90156932, + "marketcap_usd": 61360446, "name": "Ravencoin", "shortcut": "RVN", "t1_enabled": "soon", @@ -334,7 +401,7 @@ "Github": "https://github.com/SmartCash/Core-Smart", "Homepage": "https://smarcash.cc" }, - "marketcap_usd": 16472578, + "marketcap_usd": 19229428, "name": "SmartCash", "shortcut": "SMART", "t1_enabled": "yes", @@ -347,7 +414,7 @@ "Github": "https://github.com/viacoin", "Homepage": "https://viacoin.org" }, - "marketcap_usd": 19572577, + "marketcap_usd": 13323852, "name": "Viacoin", "shortcut": "VIA", "t1_enabled": "yes", @@ -362,7 +429,7 @@ "Github": "https://github.com/vertcoin-project/vertcoin-core", "Homepage": "https://vertcoin.org" }, - "marketcap_usd": 30087534, + "marketcap_usd": 21537136, "name": "Vertcoin", "shortcut": "VTC", "t1_enabled": "yes", @@ -377,7 +444,7 @@ "Github": "https://github.com/myriadcoin/myriadcoin", "Homepage": "https://www.myriadcoin.org" }, - "marketcap_usd": 4827820, + "marketcap_usd": 3672877, "name": "Myriad", "shortcut": "XMY", "t1_enabled": "yes", @@ -390,7 +457,7 @@ "Github": "https://github.com/zcoinofficial/zcoin", "Homepage": "https://zcoin.io" }, - "marketcap_usd": 59791806, + "marketcap_usd": 49824762, "name": "Zcoin", "shortcut": "XZC", "t1_enabled": "yes", @@ -406,7 +473,7 @@ "Github": "https://github.com/zcash/zcash", "Homepage": "https://z.cash" }, - "marketcap_usd": 596868550, + "marketcap_usd": 583718930, "name": "Zcash", "shortcut": "ZEC", "t1_enabled": "yes", @@ -421,7 +488,7 @@ "Github": "https://github.com/ZencashOfficial/zen", "Homepage": "https://zencash.com" }, - "marketcap_usd": 75542656, + "marketcap_usd": 62263636, "name": "Zencash", "shortcut": "ZEN", "t1_enabled": "no", @@ -539,7 +606,7 @@ "links": { "Homepage": "https://0xbitcoin.org/" }, - "marketcap_usd": 1342273, + "marketcap_usd": 1621851, "name": "0xBitcoin", "network": "eth", "shortcut": "0xBTC", @@ -556,7 +623,7 @@ "links": { "Homepage": "https://firstblood.io" }, - "marketcap_usd": 6076424, + "marketcap_usd": 5064419, "name": "FirstBlood", "network": "eth", "shortcut": "1ST", @@ -659,7 +726,7 @@ "links": { "Homepage": "http://accelerator.network" }, - "marketcap_usd": 141984, + "marketcap_usd": 113703, "name": "Accelerator Network", "network": "eth", "shortcut": "ACC", @@ -694,7 +761,7 @@ "Github": "https://github.com/aditus", "Homepage": "https://aditus.net" }, - "marketcap_usd": 319513, + "marketcap_usd": 208406, "name": "Aditus", "network": "eth", "shortcut": "ADI", @@ -712,7 +779,7 @@ "Github": "https://github.com/adelecosystem", "Homepage": "https://adel.io" }, - "marketcap_usd": 0, + "marketcap_usd": 769731, "name": "Adelphoi", "network": "eth", "shortcut": "ADL", @@ -729,7 +796,7 @@ "links": { "Homepage": "https://adshares.net" }, - "marketcap_usd": 1897207, + "marketcap_usd": 1641863, "name": "AdShares", "network": "eth", "shortcut": "ADST", @@ -747,7 +814,7 @@ "Github": "https://github.com/adchain", "Homepage": "https://adtoken.com" }, - "marketcap_usd": 9367239, + "marketcap_usd": 6271670, "name": "AdToken", "network": "eth", "shortcut": "ADT", @@ -783,7 +850,7 @@ "Github": "https://github.com/aeternity", "Homepage": "https://www.aeternity.com/" }, - "marketcap_usd": 275642519, + "marketcap_usd": 218284367, "name": "aeternity", "network": "eth", "shortcut": "AE", @@ -795,13 +862,31 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:AFA": { + "address": "0xfB48E0DEa837f9438309a7e9F0cFe7EE3353A84e", + "links": { + "Github": "https://github.com/mdpienaar/ipparts", + "Homepage": "https://www.africahead.co.za" + }, + "marketcap_usd": 0, + "name": "Africahead Ipparts", + "network": "eth", + "shortcut": "AFA", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:AGI": { "address": "0x8eB24319393716668D768dCEC29356ae9CfFe285", "links": { "Github": "https://github.com/singnet/singnet", "Homepage": "https://singularitynet.io" }, - "marketcap_usd": 33809130, + "marketcap_usd": 28888876, "name": "SingularityNET", "network": "eth", "shortcut": "AGI", @@ -819,7 +904,7 @@ "Github": "https://github.com/aionnetwork", "Homepage": "https://aion.network/" }, - "marketcap_usd": 101220801, + "marketcap_usd": 76176565, "name": "Aion", "network": "eth", "shortcut": "AION", @@ -836,7 +921,7 @@ "links": { "Homepage": "https://airtoken.com" }, - "marketcap_usd": 2082598, + "marketcap_usd": 1059681, "name": "AirToken", "network": "eth", "shortcut": "AIR", @@ -854,7 +939,7 @@ "Github": "https://github.com/AigangNetwork", "Homepage": "https://aigang.network/" }, - "marketcap_usd": 430601, + "marketcap_usd": 346377, "name": "Aigang", "network": "eth", "shortcut": "AIX", @@ -907,7 +992,7 @@ "Github": "https://github.com/AlisProject", "Homepage": "https://alismedia.jp" }, - "marketcap_usd": 1786381, + "marketcap_usd": 1735667, "name": "ALIS Token", "network": "eth", "shortcut": "ALIS", @@ -978,7 +1063,7 @@ "Github": "https://github.com/amlt-by-coinfirm", "Homepage": "https://amlt.coinfirm.io/" }, - "marketcap_usd": 637997, + "marketcap_usd": 1575125, "name": "AMLT", "network": "eth", "shortcut": "AMLT", @@ -996,7 +1081,7 @@ "Github": "https://github.com/amontech", "Homepage": "https://amon.tech" }, - "marketcap_usd": 361153, + "marketcap_usd": 287327, "name": "Amon", "network": "eth", "shortcut": "AMN", @@ -1014,7 +1099,7 @@ "Github": "https://github.com/AMO-Project/", "Homepage": "https://amo.foundation" }, - "marketcap_usd": 0, + "marketcap_usd": 17271206, "name": "AMO Coin", "network": "eth", "shortcut": "AMO", @@ -1066,7 +1151,7 @@ "Github": "https://github.com/Oxchild/crowdsale", "Homepage": "https://apisplatform.io" }, - "marketcap_usd": 15708014, + "marketcap_usd": 18400457, "name": "APIS", "network": "eth", "shortcut": "APIS", @@ -1084,7 +1169,7 @@ "Github": "https://github.com/Aptoide/AppCoins-ethereumj", "Homepage": "https://appcoins.io" }, - "marketcap_usd": 12889545, + "marketcap_usd": 7612178, "name": "AppCoins", "network": "eth", "shortcut": "APPC", @@ -1101,7 +1186,7 @@ "links": { "Homepage": "https://aigang.network" }, - "marketcap_usd": 430601, + "marketcap_usd": 346377, "name": "AIGang", "network": "eth", "shortcut": "APT", @@ -1136,7 +1221,7 @@ "links": { "Homepage": "https://www.arbitragect.com" }, - "marketcap_usd": 272780, + "marketcap_usd": 243713, "name": "ArbitrageCT", "network": "eth", "shortcut": "ARCT", @@ -1241,7 +1326,7 @@ "links": { "Homepage": "https://airswap.io" }, - "marketcap_usd": 15296576, + "marketcap_usd": 9871161, "name": "Airswap", "network": "eth", "shortcut": "AST", @@ -1276,7 +1361,7 @@ "Github": "https://github.com/atonomi", "Homepage": "https://atonomi.io" }, - "marketcap_usd": 3210643, + "marketcap_usd": 2912736, "name": "Atonomi", "network": "eth", "shortcut": "ATMI", @@ -1399,7 +1484,7 @@ "Github": "https://www.github.com/axpire", "Homepage": "https://www.axpire.io" }, - "marketcap_usd": 4469513, + "marketcap_usd": 3973343, "name": "aXpire", "network": "eth", "shortcut": "AXPR", @@ -1611,7 +1696,7 @@ "Github": "https://github.com/thebeetoken", "Homepage": "https://www.beetoken.com" }, - "marketcap_usd": 1583067, + "marketcap_usd": 1387986, "name": "Bee Token", "network": "eth", "shortcut": "BEE", @@ -1665,7 +1750,7 @@ "Github": "https://github.com/bethereumproject", "Homepage": "https://www.bethereum.com/" }, - "marketcap_usd": 1023857, + "marketcap_usd": 755380, "name": "Bethereum", "network": "eth", "shortcut": "BETHER", @@ -1770,7 +1855,7 @@ "Github": "https://github.com/BankEx", "Homepage": "https://bankex.com/" }, - "marketcap_usd": 6558731, + "marketcap_usd": 6071724, "name": "BANKEX", "network": "eth", "shortcut": "BKX", @@ -1806,7 +1891,7 @@ "Github": "https://github.com/BlueCrypto", "Homepage": "https://blueprotocol.com/" }, - "marketcap_usd": 1326932, + "marketcap_usd": 1162837, "name": "Ethereum Blue", "network": "eth", "shortcut": "BLUE", @@ -1841,7 +1926,7 @@ "links": { "Homepage": "https://www.iconomi.net" }, - "marketcap_usd": 34824283, + "marketcap_usd": 39631699, "name": "Iconomi", "network": "eth", "shortcut": "BLX (Iconomi)", @@ -1929,7 +2014,7 @@ "Github": "https://github.com/bancorprotocol", "Homepage": "https://www.bancor.network/discover" }, - "marketcap_usd": 78902045, + "marketcap_usd": 70586140, "name": "Bancor", "network": "eth", "shortcut": "BNT", @@ -1980,7 +2065,7 @@ "links": { "Homepage": "https://bonpay.com" }, - "marketcap_usd": 598702, + "marketcap_usd": 456038, "name": "Bonpay", "network": "eth", "shortcut": "BON", @@ -2066,7 +2151,7 @@ "links": { "Homepage": "http://bro-consortium.io" }, - "marketcap_usd": 38570, + "marketcap_usd": 18038, "name": "BRAT", "network": "eth", "shortcut": "BRAT", @@ -2084,7 +2169,7 @@ "Github": "https://github.com/breadwallet", "Homepage": "https://token.breadapp.com/en" }, - "marketcap_usd": 32498668, + "marketcap_usd": 26452438, "name": "Bread", "network": "eth", "shortcut": "BRD", @@ -2223,7 +2308,7 @@ "Github": "https://github.com/bethereumproject", "Homepage": "https://www.bethereum.com/" }, - "marketcap_usd": 1023857, + "marketcap_usd": 755380, "name": "Bethereum", "network": "eth", "shortcut": "BTHR", @@ -2241,7 +2326,7 @@ "Github": "https://github.com/bitcoin-token", "Homepage": "https://btk.community" }, - "marketcap_usd": 543928, + "marketcap_usd": 283339, "name": "Bitcoin Token", "network": "eth", "shortcut": "BTK", @@ -2259,7 +2344,7 @@ "Github": "https://github.com/bytom", "Homepage": "https://bytom.io" }, - "marketcap_usd": 193262705, + "marketcap_usd": 160229737, "name": "Bytom", "network": "eth", "shortcut": "BTM", @@ -2294,7 +2379,7 @@ "Github": "https://github.com/Andyss4545/BitEther", "Homepage": "https://bytom.io" }, - "marketcap_usd": 68145, + "marketcap_usd": 62239, "name": "Bitether", "network": "eth", "shortcut": "BTT", @@ -2364,7 +2449,7 @@ "Github": "https://github.com/cryptotwenty", "Homepage": "https://crypto20.com" }, - "marketcap_usd": 25362915, + "marketcap_usd": 24485284, "name": "Crypto20's Token", "network": "eth", "shortcut": "C20", @@ -2466,7 +2551,7 @@ "links": { "Homepage": "https://cashaa.com" }, - "marketcap_usd": 5633897, + "marketcap_usd": 8332895, "name": "Cashaa", "network": "eth", "shortcut": "CAS", @@ -2935,7 +3020,7 @@ "links": { "Homepage": "https://cindicator.com" }, - "marketcap_usd": 38779269, + "marketcap_usd": 27582972, "name": "Cindicator", "network": "eth", "shortcut": "CND", @@ -3042,7 +3127,7 @@ "Github": "https://github.com/CoinvestHQ", "Homepage": "https://coinve.st" }, - "marketcap_usd": 72902, + "marketcap_usd": 71310, "name": "Coinvest V2 Token", "network": "eth", "shortcut": "COIN", @@ -3076,7 +3161,7 @@ "links": { "Homepage": "https://covesting.io/" }, - "marketcap_usd": 14155443, + "marketcap_usd": 13743158, "name": "Covesting", "network": "eth", "shortcut": "COV", @@ -3112,7 +3197,7 @@ "Github": "https://github.com/Cpollo", "Homepage": "https://cpollo.info/" }, - "marketcap_usd": 1243776, + "marketcap_usd": 1177694, "name": "CPOLLO", "network": "eth", "shortcut": "CPLO", @@ -3130,7 +3215,7 @@ "Github": "https://github.com/aditus", "Homepage": "https://copytrack.io" }, - "marketcap_usd": 1364335, + "marketcap_usd": 2195766, "name": "COPYTRACK", "network": "eth", "shortcut": "CPY", @@ -3200,7 +3285,7 @@ "links": { "Homepage": "https://bitbounce.io" }, - "marketcap_usd": 20039044, + "marketcap_usd": 19958643, "name": "Credo / Bitbounce", "network": "eth", "shortcut": "CREDO", @@ -3410,7 +3495,7 @@ "Github": "https://github.com/cargoxio", "Homepage": "https://cargox.io" }, - "marketcap_usd": 3202553, + "marketcap_usd": 3698018, "name": "CargoX", "network": "eth", "shortcut": "CXO", @@ -3427,7 +3512,7 @@ "links": { "Homepage": "https://cyberfmradio.com" }, - "marketcap_usd": 839968, + "marketcap_usd": 482923, "name": "CyberFM", "network": "eth", "shortcut": "CYFM", @@ -3444,7 +3529,7 @@ "links": { "Homepage": "https://ccrb.io" }, - "marketcap_usd": 564624, + "marketcap_usd": 420221, "name": "CryptoCarbon", "network": "eth", "shortcut": "CryptoCarbon", @@ -3478,7 +3563,7 @@ "links": { "Homepage": "https://dadi.cloud" }, - "marketcap_usd": 5935216, + "marketcap_usd": 5289941, "name": "DADI", "network": "eth", "shortcut": "DADI", @@ -3495,7 +3580,7 @@ "links": { "Homepage": "http://www.dalecoin.org" }, - "marketcap_usd": 27020, + "marketcap_usd": 33560, "name": "DaleCoin", "network": "eth", "shortcut": "DALC", @@ -3583,7 +3668,7 @@ "Github": "https://github.com/streamr-dev", "Homepage": "https://www.streamr.com" }, - "marketcap_usd": 75008, + "marketcap_usd": 69170, "name": "DATACoin", "network": "eth", "shortcut": "DATACoin", @@ -3672,7 +3757,7 @@ "Github": "https://github.com/DistributedBanking/DCC", "Homepage": "http://dcc.finance" }, - "marketcap_usd": 8702094, + "marketcap_usd": 6038478, "name": "Distributed Credit Chain", "network": "eth", "shortcut": "DCC", @@ -3707,7 +3792,7 @@ "Github": "https://github.com/Dentacoin", "Homepage": "https://dentacoin.com" }, - "marketcap_usd": 86095614, + "marketcap_usd": 57603837, "name": "Dentacoin", "network": "eth", "shortcut": "DCN", @@ -3777,7 +3862,7 @@ "links": { "Homepage": "https://www.dentwireless.com" }, - "marketcap_usd": 47018885, + "marketcap_usd": 34279543, "name": "DENT", "network": "eth", "shortcut": "DENT", @@ -3795,7 +3880,7 @@ "Github": "https://github.com/digipulseio", "Homepage": "https://www.digipulse.io" }, - "marketcap_usd": 39156, + "marketcap_usd": 0, "name": "DigiPulse", "network": "eth", "shortcut": "DGPT", @@ -3813,7 +3898,7 @@ "Github": "https://github.com/dragonglasscom", "Homepage": "https://dragonglass.com/" }, - "marketcap_usd": 92356, + "marketcap_usd": 88289, "name": "Dragonglass", "network": "eth", "shortcut": "DGS", @@ -3849,7 +3934,7 @@ "Github": "https://github.com/DigixGlobal", "Homepage": "https://digix.global" }, - "marketcap_usd": 2845256, + "marketcap_usd": 2914438, "name": "Digix Gold Token", "network": "eth", "shortcut": "DGX", @@ -3884,7 +3969,7 @@ "links": { "Homepage": "https://etheroll.com" }, - "marketcap_usd": 3135528, + "marketcap_usd": 3714192, "name": "Etheroll", "network": "eth", "shortcut": "DICE", @@ -4078,7 +4163,7 @@ "Github": "https://github.com/dethertech", "Homepage": "https://dether.io" }, - "marketcap_usd": 1057913, + "marketcap_usd": 985353, "name": "dether", "network": "eth", "shortcut": "DTH", @@ -4216,7 +4301,7 @@ "links": { "Homepage": "https://edgeless.io" }, - "marketcap_usd": 14441501, + "marketcap_usd": 8276174, "name": "Edgeless", "network": "eth", "shortcut": "EDG", @@ -4233,7 +4318,7 @@ "links": { "Homepage": "https://eidoo.io" }, - "marketcap_usd": 35734441, + "marketcap_usd": 30451730, "name": "Eidoo", "network": "eth", "shortcut": "EDO", @@ -4322,7 +4407,7 @@ "Github": "https://github.com/eltcoin", "Homepage": "http://www.eltcoin.tech/" }, - "marketcap_usd": 86391, + "marketcap_usd": 67261, "name": "ELTCOIN", "network": "eth", "shortcut": "ELTCOIN", @@ -4446,7 +4531,7 @@ "Github": "https://github.com/enigmampc", "Homepage": "https://enigma.co/" }, - "marketcap_usd": 0, + "marketcap_usd": 34979847, "name": "Enigma", "network": "eth", "shortcut": "ENG", @@ -4518,7 +4603,7 @@ "Github": "https://github.com/Krishtopa/ContractEristica", "Homepage": "https://eristica.com/" }, - "marketcap_usd": 1006473, + "marketcap_usd": 1145082, "name": "Eristica", "network": "eth", "shortcut": "ERT", @@ -4553,7 +4638,7 @@ "links": { "Homepage": "https://www.ethbits.com" }, - "marketcap_usd": 1137427, + "marketcap_usd": 921491, "name": "Ethbits", "network": "eth", "shortcut": "ETBS", @@ -4693,7 +4778,7 @@ "Github": "https://github.com/eXMRcoin/", "Homepage": "https://exmr.io/" }, - "marketcap_usd": 0, + "marketcap_usd": 545617, "name": "eXMRcoin", "network": "eth", "shortcut": "EXMR", @@ -4723,6 +4808,23 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:FABA": { + "address": "0x0a1D2fF7156a48131553CF381F220bbedB4eFa37", + "links": { + "Homepage": "https://vc.fabainvest.com" + }, + "marketcap_usd": 0, + "name": "FABA", + "network": "eth", + "shortcut": "FABA", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:FAM": { "address": "0x190e569bE071F40c704e15825F285481CB74B6cC", "links": { @@ -4764,7 +4866,7 @@ "Github": "https://github.com/FortKnoxster", "Homepage": "https://fortknoxster.com" }, - "marketcap_usd": 557001, + "marketcap_usd": 457887, "name": "Knoxstertoken", "network": "eth", "shortcut": "FKX", @@ -4868,7 +4970,7 @@ "Github": "https://github.com/FundRequest", "Homepage": "https://fundrequest.io" }, - "marketcap_usd": 380549, + "marketcap_usd": 292232, "name": "FundRequest", "network": "eth", "shortcut": "FND", @@ -4938,7 +5040,7 @@ "Github": "https://github.com/futuraxproject", "Homepage": "https://futurax.global" }, - "marketcap_usd": 750578, + "marketcap_usd": 410960, "name": "FUTURAX", "network": "eth", "shortcut": "FTXT", @@ -4973,7 +5075,7 @@ "links": { "Homepage": "https://funfair.io" }, - "marketcap_usd": 72814321, + "marketcap_usd": 48079596, "name": "Funfair", "network": "eth", "shortcut": "FUN", @@ -4991,7 +5093,7 @@ "Github": "https://github.com/futuraxproject", "Homepage": "https://futurax.global" }, - "marketcap_usd": 750578, + "marketcap_usd": 410960, "name": "FUTURAX", "network": "eth", "shortcut": "FXC", @@ -5026,7 +5128,7 @@ "Github": "https://github.com/BlockchainLabsNZ/gambit", "Homepage": "http://gambitcrypto.com" }, - "marketcap_usd": 3157385, + "marketcap_usd": 2384595, "name": "Gambit", "network": "eth", "shortcut": "GAM", @@ -5149,7 +5251,7 @@ "Github": "https://github.com/daostack", "Homepage": "https://daostack.io" }, - "marketcap_usd": 2975722, + "marketcap_usd": 3452356, "name": "DAOstack", "network": "eth", "shortcut": "GEN", @@ -5271,7 +5373,7 @@ "links": { "Homepage": "https://gridplus.io/token-sale" }, - "marketcap_usd": 5540499, + "marketcap_usd": 6411555, "name": "GRID", "network": "eth", "shortcut": "GRID", @@ -5360,7 +5462,7 @@ "Github": "https://github.com/GIFTO-io", "Homepage": "https://gifto.io/" }, - "marketcap_usd": 36859763, + "marketcap_usd": 25134857, "name": "Gifto", "network": "eth", "shortcut": "GTO", @@ -5396,7 +5498,7 @@ "Github": "https://github.com/GenesisVision", "Homepage": "https://genesis.vision" }, - "marketcap_usd": 50497181, + "marketcap_usd": 29230888, "name": "Genesis Vision", "network": "eth", "shortcut": "GVT", @@ -5518,7 +5620,7 @@ "Github": "https://github.com/havven/havven", "Homepage": "https://havven.io" }, - "marketcap_usd": 8051509, + "marketcap_usd": 8724092, "name": "Havven", "network": "eth", "shortcut": "HAV", @@ -5674,7 +5776,7 @@ "links": { "Homepage": "https://github.com/arachnid/hodlcoin" }, - "marketcap_usd": 161792, + "marketcap_usd": 117968, "name": "HODLCoin", "network": "eth", "shortcut": "HODL", @@ -5814,7 +5916,7 @@ "links": { "Homepage": "https://icos.icobox.io" }, - "marketcap_usd": 1633962, + "marketcap_usd": 1202475, "name": "ICOS", "network": "eth", "shortcut": "ICOS", @@ -5831,7 +5933,7 @@ "links": { "Homepage": "https://www.icon.foundation" }, - "marketcap_usd": 251118219, + "marketcap_usd": 213279528, "name": "ICON", "network": "eth", "shortcut": "ICX", @@ -5865,7 +5967,7 @@ "links": { "Homepage": "https://investfeed.com" }, - "marketcap_usd": 1754347, + "marketcap_usd": 1296633, "name": "InvestFeed", "network": "eth", "shortcut": "IFT", @@ -5968,7 +6070,7 @@ "links": { "Homepage": "https://insights.network" }, - "marketcap_usd": 1559295, + "marketcap_usd": 1316704, "name": "Insights Network", "network": "eth", "shortcut": "INSTAR", @@ -5983,9 +6085,10 @@ "erc20:eth:INXT": { "address": "0xa8006C4ca56F24d6836727D106349320dB7fEF82", "links": { - "Homepage": "https://internxt.io" + "Github": "https://github.com/Internxt/", + "Homepage": "https://internxt.com/" }, - "marketcap_usd": 1355268, + "marketcap_usd": 2045786, "name": "Internxt", "network": "eth", "shortcut": "INXT", @@ -6002,7 +6105,7 @@ "links": { "Homepage": "https://iost.io/" }, - "marketcap_usd": 103079253, + "marketcap_usd": 103135291, "name": "IOSToken", "network": "eth", "shortcut": "IOST", @@ -6073,7 +6176,7 @@ "Github": "https://github.com/iqeon", "Homepage": "https://iqeon.io/" }, - "marketcap_usd": 497427, + "marketcap_usd": 442032, "name": "IQeon", "network": "eth", "shortcut": "IQN", @@ -6109,7 +6212,7 @@ "Github": "https://github.com/IoTChainCode", "Homepage": "https://iotchain.io/" }, - "marketcap_usd": 13381111, + "marketcap_usd": 10554800, "name": "IoT Chain", "network": "eth", "shortcut": "ITC", @@ -6267,7 +6370,7 @@ "Github": "https://github.com/kikinteractive/kin-token", "Homepage": "https://kin.kik.com" }, - "marketcap_usd": 37500249, + "marketcap_usd": 27757046, "name": "Kin Foundation", "network": "eth", "shortcut": "KIN", @@ -6285,7 +6388,7 @@ "Github": "https://github.com/KyberNetwork", "Homepage": "https://kyber.network" }, - "marketcap_usd": 58379996, + "marketcap_usd": 38769207, "name": "Kyber Network", "network": "eth", "shortcut": "KNC", @@ -6321,7 +6424,7 @@ "Github": "https://github.com/Cryptense/", "Homepage": "https://kryll.io/" }, - "marketcap_usd": 848624, + "marketcap_usd": 703648, "name": "Kryll", "network": "eth", "shortcut": "KRL", @@ -6373,7 +6476,7 @@ "Github": "https://github.com/latoken", "Homepage": "https://latoken.com/" }, - "marketcap_usd": 5355007, + "marketcap_usd": 6015419, "name": "LATOKEN", "network": "eth", "shortcut": "LA", @@ -6407,7 +6510,7 @@ "links": { "Homepage": "https://www.leadcoin.network/" }, - "marketcap_usd": 509746, + "marketcap_usd": 410028, "name": "LEADCOIN", "network": "eth", "shortcut": "LDC", @@ -6511,7 +6614,7 @@ "links": { "Homepage": "http://www.lifelabs.io" }, - "marketcap_usd": 1804020, + "marketcap_usd": 1321474, "name": "LIFE", "network": "eth", "shortcut": "LIFE", @@ -6563,7 +6666,7 @@ "Github": "https://github.com/lendingblock", "Homepage": "https://lendingblock.com" }, - "marketcap_usd": 3980122, + "marketcap_usd": 3397540, "name": "Lendingblock", "network": "eth", "shortcut": "LND", @@ -6580,7 +6683,7 @@ "links": { "Homepage": "https://LockChain.co" }, - "marketcap_usd": 10310191, + "marketcap_usd": 15093425, "name": "LockChain", "network": "eth", "shortcut": "LOC", @@ -6598,7 +6701,7 @@ "Github": "http://github.com/locipro/loci-coin-sale", "Homepage": "https://locipro.com" }, - "marketcap_usd": 1190529, + "marketcap_usd": 829458, "name": "LOCIcoin", "network": "eth", "shortcut": "LOCI", @@ -6895,7 +6998,7 @@ "Github": "https://github.com/theembermine", "Homepage": "https://embermine.com/" }, - "marketcap_usd": 110696, + "marketcap_usd": 73282, "name": "Embers", "network": "eth", "shortcut": "MBRS", @@ -6913,7 +7016,7 @@ "Github": "https://github.com/musiconomi/", "Homepage": "https://musiconomi.com/" }, - "marketcap_usd": 220689, + "marketcap_usd": 182623, "name": "Musiconomi", "network": "eth", "shortcut": "MCI", @@ -7018,7 +7121,7 @@ "links": { "Homepage": "https://mftu.net" }, - "marketcap_usd": 48068, + "marketcap_usd": 31461, "name": "Mainstream For The Underground", "network": "eth", "shortcut": "MFTU", @@ -7124,7 +7227,7 @@ "Github": "https://github.com/modum-io", "Homepage": "https://modum.io" }, - "marketcap_usd": 17725951, + "marketcap_usd": 12576567, "name": "Modum", "network": "eth", "shortcut": "MOD", @@ -7193,7 +7296,7 @@ "links": { "Homepage": "https://mothership.cx" }, - "marketcap_usd": 11384839, + "marketcap_usd": 9265929, "name": "Mothership", "network": "eth", "shortcut": "MSP", @@ -7210,7 +7313,7 @@ "links": { "Homepage": "http://www.monetha.io" }, - "marketcap_usd": 9049627, + "marketcap_usd": 8077347, "name": "Monetha", "network": "eth", "shortcut": "MTH", @@ -7330,7 +7433,7 @@ "Github": "https://github.com/Merculet", "Homepage": "https://www.merculet.io" }, - "marketcap_usd": 4237269, + "marketcap_usd": 2292556, "name": "Merculet", "network": "eth", "shortcut": "MVP", @@ -7364,7 +7467,7 @@ "links": { "Homepage": "https://mysterium.network" }, - "marketcap_usd": 2484645, + "marketcap_usd": 1614640, "name": "Mysterium", "network": "eth", "shortcut": "MYST", @@ -7399,7 +7502,7 @@ "Github": "https://github.com/NANJ-COIN", "Homepage": "https://nanjcoin.com/" }, - "marketcap_usd": 8557711, + "marketcap_usd": 5588093, "name": "NANJCOIN", "network": "eth", "shortcut": "NANJ", @@ -7453,7 +7556,7 @@ "Github": "https://github.com/polyswarm", "Homepage": "https://polyswarm.io" }, - "marketcap_usd": 34029331, + "marketcap_usd": 30503956, "name": "Nectar", "network": "eth", "shortcut": "NCT", @@ -7470,7 +7573,7 @@ "links": { "Homepage": "https://neverdie.com" }, - "marketcap_usd": 471480, + "marketcap_usd": 297520, "name": "Neverdie", "network": "eth", "shortcut": "NDC", @@ -7522,7 +7625,7 @@ "links": { "Homepage": "https://nimiq.com" }, - "marketcap_usd": 4523917, + "marketcap_usd": 3701188, "name": "NIMIQ", "network": "eth", "shortcut": "NET", @@ -7629,7 +7732,7 @@ "Github": "https://github.com/NperProject", "Homepage": "https://nper.io" }, - "marketcap_usd": 1822033, + "marketcap_usd": 1682552, "name": "NPER", "network": "eth", "shortcut": "NPER", @@ -7681,7 +7784,7 @@ "links": { "Homepage": "https://nuls.io" }, - "marketcap_usd": 46021731, + "marketcap_usd": 34621851, "name": "NULS", "network": "eth", "shortcut": "NULS", @@ -7715,7 +7818,7 @@ "links": { "Homepage": "https://beyond-the-void.net" }, - "marketcap_usd": 1296008, + "marketcap_usd": 712470, "name": "Nexium", "network": "eth", "shortcut": "NxC", @@ -7749,7 +7852,7 @@ "links": { "Homepage": "https://www.openanx.org/en" }, - "marketcap_usd": 6573409, + "marketcap_usd": 5064925, "name": "OAX", "network": "eth", "shortcut": "OAX", @@ -7963,7 +8066,7 @@ "Github": "https://github.com/OpenSTFoundation", "Homepage": "https://simpletoken.org" }, - "marketcap_usd": 22129947, + "marketcap_usd": 15693591, "name": "Simple Token 'OST'", "network": "eth", "shortcut": "OST", @@ -7981,7 +8084,7 @@ "Github": "https://github.com/owndata", "Homepage": "https://owndata.network" }, - "marketcap_usd": 829108, + "marketcap_usd": 3823507, "name": "OWNDATA", "network": "eth", "shortcut": "OWN", @@ -8122,7 +8225,7 @@ "links": { "Homepage": "http://www.tenx.tech" }, - "marketcap_usd": 64413524, + "marketcap_usd": 50875640, "name": "TenX", "network": "eth", "shortcut": "PAY", @@ -8174,7 +8277,7 @@ "Github": "https://github.com/PeculiumPCL/Peculium", "Homepage": "https://peculium.io" }, - "marketcap_usd": 2753769, + "marketcap_usd": 3296106, "name": "Peculium", "network": "eth", "shortcut": "PCL", @@ -8313,7 +8416,7 @@ "links": { "Homepage": "https://polybius.io" }, - "marketcap_usd": 6384311, + "marketcap_usd": 6225459, "name": "Polybius", "network": "eth", "shortcut": "PLBT", @@ -8435,7 +8538,7 @@ "links": { "Homepage": "https://polymath.network" }, - "marketcap_usd": 82343218, + "marketcap_usd": 65696102, "name": "Polymath Network", "network": "eth", "shortcut": "POLY", @@ -8470,7 +8573,7 @@ "Github": "https://github.com/PoSToken", "Homepage": "https://postoken.org" }, - "marketcap_usd": 23565, + "marketcap_usd": 23830, "name": "PoSToken", "network": "eth", "shortcut": "POS", @@ -8504,7 +8607,7 @@ "links": { "Homepage": "https://www.paypie.com" }, - "marketcap_usd": 12350287, + "marketcap_usd": 10483120, "name": "PayPie", "network": "eth", "shortcut": "PPP", @@ -8521,7 +8624,7 @@ "links": { "Homepage": "https://populous.co" }, - "marketcap_usd": 134591456, + "marketcap_usd": 142663524, "name": "Populous", "network": "eth", "shortcut": "PPT", @@ -8538,7 +8641,7 @@ "links": { "Homepage": "https://presearch.io" }, - "marketcap_usd": 9608414, + "marketcap_usd": 9086845, "name": "Presearch", "network": "eth", "shortcut": "PRE", @@ -8749,7 +8852,7 @@ "links": { "Homepage": "https://liquid.plus" }, - "marketcap_usd": 76785778, + "marketcap_usd": 74154817, "name": "QASH", "network": "eth", "shortcut": "QASH", @@ -8802,7 +8905,7 @@ "Github": "https://github.com/quantnetwork", "Homepage": "https://www.quant.network/" }, - "marketcap_usd": 28093555, + "marketcap_usd": 21536981, "name": "Quant", "network": "eth", "shortcut": "QNT", @@ -8891,7 +8994,7 @@ "Github": "https://github.com/qtumproject", "Homepage": "https://qtum.org/" }, - "marketcap_usd": 341904703, + "marketcap_usd": 285842968, "name": "Qtum", "network": "eth", "shortcut": "QTUM", @@ -8927,7 +9030,7 @@ "Github": "https://github.com/rublixdev", "Homepage": "https://rublix.io/" }, - "marketcap_usd": 0, + "marketcap_usd": 4330795, "name": "Rublix", "network": "eth", "shortcut": "RBLX", @@ -8945,7 +9048,7 @@ "Github": "https://github.com/ripio/rcn-token", "Homepage": "https://ripiocredit.network" }, - "marketcap_usd": 17576609, + "marketcap_usd": 11690701, "name": "Ripio Credit Network", "network": "eth", "shortcut": "RCN", @@ -8979,7 +9082,7 @@ "links": { "Homepage": "https://www.rebellious.io" }, - "marketcap_usd": 1920239, + "marketcap_usd": 1508842, "name": "Rebellious", "network": "eth", "shortcut": "REBL", @@ -8997,7 +9100,7 @@ "Github": "https://github.com/red", "Homepage": "https://ico.red-lang.org" }, - "marketcap_usd": 2260305, + "marketcap_usd": 1557077, "name": "Red Community Token", "network": "eth", "shortcut": "RED", @@ -9050,7 +9153,7 @@ "links": { "Homepage": "https://request.network" }, - "marketcap_usd": 38925929, + "marketcap_usd": 27423303, "name": "Request Network", "network": "eth", "shortcut": "REQ", @@ -9085,7 +9188,7 @@ "links": { "Homepage": "https://refereum.com" }, - "marketcap_usd": 12669987, + "marketcap_usd": 9582163, "name": "Refereum", "network": "eth", "shortcut": "RFR", @@ -9120,7 +9223,7 @@ "links": { "Homepage": "http://crowdsale.iex.ec" }, - "marketcap_usd": 36975977, + "marketcap_usd": 27933752, "name": "IEx.ec", "network": "eth", "shortcut": "RLC", @@ -9172,7 +9275,7 @@ "links": { "Homepage": "http://www.relex.io" }, - "marketcap_usd": 3376348, + "marketcap_usd": 1855217, "name": "Relex", "network": "eth", "shortcut": "RLX", @@ -9184,6 +9287,24 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "erc20:eth:RMESH": { + "address": "0x8D5682941cE456900b12d47ac06a88b47C764CE1", + "links": { + "Github": "https://github.com/rightmesh", + "Homepage": "https://www.rightmesh.io/" + }, + "marketcap_usd": 0, + "name": "RightMesh Token", + "network": "eth", + "shortcut": "RMESH", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "erc20:eth:RNDR": { "address": "0x0996bFb5D057faa237640E2506BE7B4f9C46de0B", "links": { @@ -9207,7 +9328,7 @@ "Github": "https://github.com/rocketico", "Homepage": "https://rocketico.io" }, - "marketcap_usd": 11902846, + "marketcap_usd": 13636187, "name": "Rocket Token", "network": "eth", "shortcut": "ROCK", @@ -9224,7 +9345,7 @@ "links": { "Homepage": "https://icerockmining.io" }, - "marketcap_usd": 5298632, + "marketcap_usd": 4457075, "name": "ICE ROCK MINING", "network": "eth", "shortcut": "ROCK2", @@ -9241,7 +9362,7 @@ "links": { "Homepage": "https://icerockmining.io" }, - "marketcap_usd": 5298632, + "marketcap_usd": 4457075, "name": "ICE ROCK MINING", "network": "eth", "shortcut": "ROCK2PAY", @@ -9345,7 +9466,7 @@ "links": { "Homepage": "https://rivetzintl.com" }, - "marketcap_usd": 2945721, + "marketcap_usd": 2355432, "name": "Rivetz", "network": "eth", "shortcut": "RVT", @@ -9396,7 +9517,7 @@ "links": { "Homepage": "https://saltlending.com" }, - "marketcap_usd": 56243567, + "marketcap_usd": 37317020, "name": "Salt Lending Token", "network": "eth", "shortcut": "SALT", @@ -9413,7 +9534,7 @@ "links": { "Homepage": "https://santiment.net" }, - "marketcap_usd": 27826123, + "marketcap_usd": 26166492, "name": "Santiment", "network": "eth", "shortcut": "SAN", @@ -9464,7 +9585,7 @@ "links": { "Homepage": "https://sensay.it" }, - "marketcap_usd": 1602338, + "marketcap_usd": 1143554, "name": "Sensay", "network": "eth", "shortcut": "SENSE", @@ -9637,7 +9758,7 @@ "links": { "Homepage": "http://smartlands.io" }, - "marketcap_usd": 13909702, + "marketcap_usd": 26797968, "name": "Smartlands", "network": "eth", "shortcut": "SLT", @@ -9724,7 +9845,7 @@ "links": { "Homepage": "https://singulardtv.com" }, - "marketcap_usd": 16990801, + "marketcap_usd": 12205224, "name": "SingularDTV", "network": "eth", "shortcut": "SNGLS", @@ -9810,7 +9931,7 @@ "links": { "Homepage": "https://sola.foundation" }, - "marketcap_usd": 262678, + "marketcap_usd": 154532, "name": "Sola Token", "network": "eth", "shortcut": "SOL", @@ -9827,7 +9948,7 @@ "links": { "Homepage": "https://spankchain.com" }, - "marketcap_usd": 16023991, + "marketcap_usd": 9335042, "name": "SpankChain", "network": "eth", "shortcut": "SPANK", @@ -9895,7 +10016,7 @@ "links": { "Homepage": "https://www.sapien.network/" }, - "marketcap_usd": 1081851, + "marketcap_usd": 669639, "name": "Sapien", "network": "eth", "shortcut": "SPN", @@ -10034,7 +10155,7 @@ "links": { "Homepage": "https://stktoken.com" }, - "marketcap_usd": 4027957, + "marketcap_usd": 2921203, "name": "STK Token", "network": "eth", "shortcut": "STK", @@ -10069,7 +10190,7 @@ "Github": "https://github.com/Storj", "Homepage": "https://storj.io" }, - "marketcap_usd": 47062368, + "marketcap_usd": 31934614, "name": "STORJ", "network": "eth", "shortcut": "STORJ", @@ -10086,7 +10207,7 @@ "links": { "Homepage": "https://www.stormtoken.com" }, - "marketcap_usd": 43946576, + "marketcap_usd": 29202003, "name": "Storm Token", "network": "eth", "shortcut": "STORM", @@ -10122,7 +10243,7 @@ "Github": "https://github.com/Storiqa/", "Homepage": "https://storiqa.com" }, - "marketcap_usd": 22562703, + "marketcap_usd": 13396262, "name": "Storiqa", "network": "eth", "shortcut": "STQ", @@ -10175,7 +10296,7 @@ "links": { "Homepage": "https://substratum.net" }, - "marketcap_usd": 44155222, + "marketcap_usd": 30949246, "name": "Substratum", "network": "eth", "shortcut": "SUB", @@ -10385,7 +10506,7 @@ "Github": "https://github.com/telcoin", "Homepage": "https://www.telco.in" }, - "marketcap_usd": 28351165, + "marketcap_usd": 22941424, "name": "Telcoin", "network": "eth", "shortcut": "TEL", @@ -10403,7 +10524,7 @@ "Github": "https://github.com/TrueFlip", "Homepage": "https://trueflip.io" }, - "marketcap_usd": 2578106, + "marketcap_usd": 2233801, "name": "TrueFlip", "network": "eth", "shortcut": "TFL", @@ -10420,7 +10541,7 @@ "links": { "Homepage": "https://www.thetatoken.org/" }, - "marketcap_usd": 66008034, + "marketcap_usd": 51977102, "name": "Theta Token", "network": "eth", "shortcut": "THETA", @@ -10455,7 +10576,7 @@ "links": { "Homepage": "https://chronobank.io" }, - "marketcap_usd": 2960493, + "marketcap_usd": 2305050, "name": "Chronobank", "network": "eth", "shortcut": "TIME", @@ -10489,7 +10610,7 @@ "links": { "Homepage": "https://www.blocktix.io" }, - "marketcap_usd": 8057098, + "marketcap_usd": 6295855, "name": "Blocktix", "network": "eth", "shortcut": "TIX", @@ -10506,7 +10627,7 @@ "links": { "Homepage": "https://etherscan.io/token/TokenCard" }, - "marketcap_usd": 16631405, + "marketcap_usd": 13300950, "name": "TokenCard", "network": "eth", "shortcut": "TKN", @@ -10606,23 +10727,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:TRX": { - "address": "0xf230b790E05390FC8295F4d3F60332c93BEd42e2", - "links": { - "Homepage": "https://tronlab.com/en.html" - }, - "marketcap_usd": 0, - "name": "Tron Lab Token", - "network": "eth", - "shortcut": "TRX", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:TSW": { "address": "0x6B87999bE87358065bBdE41e8a0fe0B7b1cd2514", "links": { @@ -10697,7 +10801,7 @@ "links": { "Homepage": "https://taas.fund" }, - "marketcap_usd": 3420899, + "marketcap_usd": 3103103, "name": "Token-as-a-Service", "network": "eth", "shortcut": "TaaS", @@ -10732,7 +10836,7 @@ "links": { "Homepage": "https://uquidcoin.com" }, - "marketcap_usd": 1663320, + "marketcap_usd": 1447032, "name": "Uquid Coin", "network": "eth", "shortcut": "UQC", @@ -10780,23 +10884,6 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, - "erc20:eth:USDT": { - "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7", - "links": { - "Homepage": "https://tether.to" - }, - "marketcap_usd": 0, - "name": "USD Tether (erc20)", - "network": "eth", - "shortcut": "USDT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } - }, "erc20:eth:UTK": { "address": "0x70a72833d6bF7F508C8224CE59ea1Ef3d0Ea3A38", "links": { @@ -10820,7 +10907,7 @@ "Github": "https://github.com/UniversaBlockchain/universa", "Homepage": "https://www.universa.io/" }, - "marketcap_usd": 7394525, + "marketcap_usd": 6648328, "name": "Universa", "network": "eth", "shortcut": "UTN-P", @@ -10891,7 +10978,7 @@ "Github": "https://github.com/blockv", "Homepage": "https://blockv.io" }, - "marketcap_usd": 17748696, + "marketcap_usd": 15573111, "name": "BLOCKv", "network": "eth", "shortcut": "VEE", @@ -10909,7 +10996,7 @@ "Github": "https://github.com/vechain", "Homepage": "https://www.vechain.com" }, - "marketcap_usd": 583258527, + "marketcap_usd": 441545582, "name": "VeChain", "network": "eth", "shortcut": "VEN", @@ -10978,7 +11065,7 @@ "Github": "https://github.com/Viewly/", "Homepage": "https://view.ly/" }, - "marketcap_usd": 414835, + "marketcap_usd": 270994, "name": "Viewly", "network": "eth", "shortcut": "VIEW", @@ -10996,7 +11083,7 @@ "Github": "https://github.com/ViceIndustryToken", "Homepage": "https://vicetoken.com/" }, - "marketcap_usd": 957774, + "marketcap_usd": 1241597, "name": "Vice Industry Token", "network": "eth", "shortcut": "VIT", @@ -11032,7 +11119,7 @@ "Github": "https://github.com/vetri-global/", "Homepage": "https://vetri.global/" }, - "marketcap_usd": 0, + "marketcap_usd": 3299753, "name": "VETRI", "network": "eth", "shortcut": "VLD", @@ -11138,7 +11225,7 @@ "Github": "https://github.com/waxio", "Homepage": "https://wax.io" }, - "marketcap_usd": 72297413, + "marketcap_usd": 89332312, "name": "WAX", "network": "eth", "shortcut": "WAX", @@ -11190,7 +11277,7 @@ "links": { "Homepage": "https://wepower.network" }, - "marketcap_usd": 19606741, + "marketcap_usd": 12655370, "name": "WePower", "network": "eth", "shortcut": "WCT", @@ -11260,7 +11347,7 @@ "links": { "Homepage": "https://wings.ai" }, - "marketcap_usd": 16021337, + "marketcap_usd": 12902392, "name": "WINGS", "network": "eth", "shortcut": "WINGS", @@ -11383,7 +11470,7 @@ "links": { "Homepage": "https://www.wacoin.io" }, - "marketcap_usd": 14472922, + "marketcap_usd": 11894950, "name": "WaBi", "network": "eth", "shortcut": "WaBi", @@ -11417,7 +11504,7 @@ "links": { "Homepage": "http://www.xaurum.org" }, - "marketcap_usd": 4468698, + "marketcap_usd": 3782243, "name": "Xaurum", "network": "eth", "shortcut": "XAUR", @@ -11435,7 +11522,7 @@ "Github": "https://github.com/blitzpredict", "Homepage": "https://www.blitzpredict.io" }, - "marketcap_usd": 539093, + "marketcap_usd": 328844, "name": "BlitzPredict", "network": "eth", "shortcut": "XBP", @@ -11558,7 +11645,7 @@ "Github": "https://github.com/InkProtocol/", "Homepage": "https://paywithink.com" }, - "marketcap_usd": 3112889, + "marketcap_usd": 3347213, "name": "Ink Protocol", "network": "eth", "shortcut": "XNK", @@ -11575,7 +11662,7 @@ "links": { "Homepage": "https://xenon.network" }, - "marketcap_usd": 573291, + "marketcap_usd": 821224, "name": "XENON", "network": "eth", "shortcut": "XNN", @@ -11662,7 +11749,7 @@ "Github": "https://github.com/zapproject", "Homepage": "https://zap.store" }, - "marketcap_usd": 2896754, + "marketcap_usd": 1924575, "name": "ZAP", "network": "eth", "shortcut": "ZAP", @@ -11679,7 +11766,7 @@ "links": { "Homepage": "https://zsc.io/" }, - "marketcap_usd": 4429599, + "marketcap_usd": 3116608, "name": "Zeusshield", "network": "eth", "shortcut": "ZCS", @@ -11697,7 +11784,7 @@ "Github": "https://github.com/zilliqa", "Homepage": "https://www.zilliqa.com/" }, - "marketcap_usd": 271452323, + "marketcap_usd": 220477971, "name": "Zilliqa", "network": "eth", "shortcut": "ZIL", @@ -11714,7 +11801,7 @@ "links": { "Homepage": "https://www.zmine.com" }, - "marketcap_usd": 2628123, + "marketcap_usd": 2341079, "name": "ZMINE", "network": "eth", "shortcut": "ZMN", @@ -11749,7 +11836,7 @@ "Github": "https://github.com/carVertical", "Homepage": "https://www.carvertical.com" }, - "marketcap_usd": 5438628, + "marketcap_usd": 4322481, "name": "carVertical", "network": "eth", "shortcut": "cV", @@ -11837,7 +11924,7 @@ "Github": "https://github.com/eosdac", "Homepage": "https://eosdac.io/" }, - "marketcap_usd": 16394933, + "marketcap_usd": 10530105, "name": "eosDAC", "network": "eth", "shortcut": "eosDAC", @@ -11855,7 +11942,7 @@ "Github": "https://github.com/havven/havven", "Homepage": "https://www.havven.io" }, - "marketcap_usd": 1496079, + "marketcap_usd": 1490864, "name": "Havven-Backed USD Nomins (nUSD)", "network": "eth", "shortcut": "nUSD", @@ -11995,7 +12082,7 @@ "links": { "Homepage": "https://www.qwark.io" }, - "marketcap_usd": 1261317, + "marketcap_usd": 1086659, "name": "QWARK", "network": "ubq", "shortcut": "QWARK", @@ -12028,7 +12115,7 @@ "links": { "Homepage": "https://akroma.io" }, - "marketcap_usd": 1134726, + "marketcap_usd": 951556, "name": "Akroma", "shortcut": "AKA", "t1_enabled": "yes", @@ -12043,7 +12130,7 @@ "links": { "Homepage": "https://atheios.com" }, - "marketcap_usd": 106214, + "marketcap_usd": 76702, "name": "Atheios", "shortcut": "ATH", "t1_enabled": "yes", @@ -12073,7 +12160,7 @@ "links": { "Homepage": "https://egem.io" }, - "marketcap_usd": 489252, + "marketcap_usd": 376148, "name": "EtherGem", "shortcut": "EGEM", "t1_enabled": "yes", @@ -12088,7 +12175,7 @@ "links": { "Homepage": "https://ellaism.org" }, - "marketcap_usd": 430449, + "marketcap_usd": 310847, "name": "Ellaism", "shortcut": "ELLA", "t1_enabled": "yes", @@ -12133,7 +12220,7 @@ "links": { "Homepage": "https://ethereumclassic.github.io" }, - "marketcap_usd": 953173107, + "marketcap_usd": 831234176, "name": "Ethereum Classic", "shortcut": "ETC", "t1_enabled": "yes", @@ -12148,7 +12235,7 @@ "links": { "Homepage": "https://www.ethereum.org" }, - "marketcap_usd": 20513976005, + "marketcap_usd": 18715924264, "name": "Ethereum", "shortcut": "ETH", "t1_enabled": "yes", @@ -12193,7 +12280,7 @@ "links": { "Homepage": "https://expanse.tech" }, - "marketcap_usd": 2521021, + "marketcap_usd": 1810463, "name": "Expanse", "shortcut": "EXP", "t1_enabled": "yes", @@ -12208,7 +12295,7 @@ "links": { "Homepage": "https://gochain.io" }, - "marketcap_usd": 43113684, + "marketcap_usd": 39306019, "name": "GoChain", "shortcut": "GO", "t1_enabled": "yes", @@ -12219,11 +12306,26 @@ "MyEtherWallet": "https://www.myetherwallet.com" } }, + "eth:MIX": { + "links": { + "Homepage": "https://www.mix-blockchain.org" + }, + "marketcap_usd": 0, + "name": "Mix", + "shortcut": "MIX", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "coin", + "wallet": { + "MyCrypto": "https://mycrypto.com", + "MyEtherWallet": "https://www.myetherwallet.com" + } + }, "eth:MUSIC": { "links": { "Homepage": "https://musicoin.org" }, - "marketcap_usd": 4136990, + "marketcap_usd": 2731023, "name": "Musicoin", "shortcut": "MUSIC", "t1_enabled": "yes", @@ -12238,7 +12340,7 @@ "links": { "Homepage": "https://pirl.io" }, - "marketcap_usd": 2033743, + "marketcap_usd": 2887551, "name": "Pirl", "shortcut": "PIRL", "t1_enabled": "yes", @@ -12268,7 +12370,7 @@ "links": { "Homepage": "https://ubiqsmart.com" }, - "marketcap_usd": 22379915, + "marketcap_usd": 17605990, "name": "Ubiq", "shortcut": "UBQ", "t1_enabled": "yes", @@ -12284,7 +12386,7 @@ "Github": "https://github.com/input-output-hk/cardano-sl", "Homepage": "https://www.cardano.org" }, - "marketcap_usd": 1818960913, + "marketcap_usd": 1656539799, "name": "Cardano", "shortcut": "ADA", "t1_enabled": "no", @@ -12294,36 +12396,95 @@ "AdaLite": "https://adalite.io/app" } }, + "misc:EOS": { + "links": { + "Github": "https://github.com/EOSIO/eos", + "Homepage": "https://eos.io" + }, + "marketcap_usd": 4275567957, + "name": "EOS", + "shortcut": "EOS", + "t1_enabled": "no", + "t2_enabled": "soon", + "type": "coin" + }, "misc:LSK": { "links": { "Github": "https://github.com/LiskHQ/lisk", "Homepage": "https://lisk.io/" }, - "marketcap_usd": 309695836, + "marketcap_usd": 246531392, "name": "Lisk", "shortcut": "LSK", - "t1_enabled": "no", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin" }, + "misc:MAID": { + "links": { + "Github": "https://github.com/maidsafe", + "Homepage": "https://maidsafe.net" + }, + "marketcap_usd": 97705054, + "name": "MaidSafeCoin", + "shortcut": "MAID", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "coin" + }, + "misc:OMNI": { + "links": { + "Github": "https://github.com/OmniLayer", + "Homepage": "https://www.omnilayer.org" + }, + "marketcap_usd": 2380090, + "name": "Omni", + "shortcut": "OMNI", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "coin" + }, "misc:ONT": { "links": { "Github": "https://github.com/ontio/ontology", "Homepage": "https://ont.io" }, - "marketcap_usd": 344500848, + "marketcap_usd": 426013021, "name": "Ontology", "shortcut": "ONT", "t1_enabled": "no", "t2_enabled": "soon", "type": "coin" }, + "misc:TRX": { + "links": { + "Github": "https://github.com/tronprotocol/java-tron", + "Homepage": "https://tron.network" + }, + "marketcap_usd": 1281553150, + "name": "Tron", + "shortcut": "TRX", + "t1_enabled": "no", + "t2_enabled": "soon", + "type": "coin" + }, + "misc:USDT": { + "links": { + "Homepage": "https://tether.to" + }, + "marketcap_usd": 1679946640, + "name": "Tether", + "shortcut": "USDT", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "coin" + }, "misc:WAN": { "links": { "Github": "https://github.com/wanchain/go-wanchain", "Homepage": "https://wanchain.org" }, - "marketcap_usd": 115924795, + "marketcap_usd": 77209546, "name": "Wanchain", "shortcut": "WAN", "t1_enabled": "yes", @@ -12335,7 +12496,7 @@ "Github": "https://github.com/stellar/stellar-core", "Homepage": "https://www.stellar.org" }, - "marketcap_usd": 4213483624, + "marketcap_usd": 4598549807, "name": "Stellar", "shortcut": "XLM", "t1_enabled": "yes", @@ -12350,7 +12511,7 @@ "Github": "https://github.com/monero-project/monero", "Homepage": "https://getmonero.org" }, - "marketcap_usd": 1711092346, + "marketcap_usd": 1469254286, "name": "Monero", "shortcut": "XMR", "t1_enabled": "no", @@ -12362,7 +12523,7 @@ "Github": "https://github.com/ripple/rippled", "Homepage": "https://ripple.com" }, - "marketcap_usd": 18192473057, + "marketcap_usd": 19451130302, "name": "Ripple", "shortcut": "XRP", "t1_enabled": "no", @@ -12374,12 +12535,15 @@ "Github": "https://github.com/tezos/tezos", "Homepage": "https://tezos.com" }, - "marketcap_usd": 793806393, + "marketcap_usd": 676700526, "name": "Tezos", "shortcut": "XTZ", "t1_enabled": "no", "t2_enabled": "yes", - "type": "coin" + "type": "coin", + "wallet": { + "SimpleStaking": "https://simplestaking.com" + } }, "nem:BREEZE": { "links": { @@ -12399,7 +12563,7 @@ "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 5068826, + "marketcap_usd": 4523580, "name": "DIMCOIN", "shortcut": "DIM", "t1_enabled": "yes", @@ -12414,7 +12578,7 @@ "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 5068826, + "marketcap_usd": 4523580, "name": "DIM TOKEN", "shortcut": "DIMTOK", "t1_enabled": "yes", @@ -12456,7 +12620,7 @@ "links": { "Homepage": "https://nem.io" }, - "marketcap_usd": 817155514, + "marketcap_usd": 854219843, "name": "NEM", "shortcut": "XEM", "t1_enabled": "yes", @@ -12468,12 +12632,12 @@ } }, "info": { - "marketcap_supported": "87.03 %", - "marketcap_usd": 178871232393, - "t1_coins": 694, - "t2_coins": 700, - "total_marketcap_usd": 205528184645, - "updated_at": 1541083206, - "updated_at_readable": "Thu Nov 1 15:40:06 2018" + "marketcap_supported": "87.72 %", + "marketcap_usd": 163837114931, + "t1_coins": 693, + "t2_coins": 698, + "total_marketcap_usd": 186779079153, + "updated_at": 1542329031, + "updated_at_readable": "Fri Nov 16 01:43:51 2018" } } \ No newline at end of file From caa4a87c5c7e64d1bdc85cb86e8289d08ca9c383 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 16 Nov 2018 01:45:53 +0100 Subject: [PATCH 648/767] defs: remove USDT erc20 --- defs/support.json | 2 -- 1 file changed, 2 deletions(-) diff --git a/defs/support.json b/defs/support.json index 6c8940758..fcf0ee054 100644 --- a/defs/support.json +++ b/defs/support.json @@ -690,7 +690,6 @@ "erc20:eth:URB": "1.7.1", "erc20:eth:USDC": "1.7.1", "erc20:eth:USDM": "1.6.2", - "erc20:eth:USDT": "1.6.2", "erc20:eth:UTK": "1.6.2", "erc20:eth:UTN-P": "1.6.2", "erc20:eth:UUU": "1.6.2", @@ -1616,7 +1615,6 @@ "erc20:eth:URB": "2.0.8", "erc20:eth:USDC": "2.0.8", "erc20:eth:USDM": "2.0.7", - "erc20:eth:USDT": "2.0.7", "erc20:eth:UTK": "2.0.7", "erc20:eth:UTN-P": "2.0.7", "erc20:eth:UUU": "2.0.7", From ff34e73f9cedfffbc9b286a07bf1bb6cfd9fd5ce Mon Sep 17 00:00:00 2001 From: Tomas Susanka Date: Fri, 16 Nov 2018 14:12:52 +0100 Subject: [PATCH 649/767] protobuf: EthereumPublicKey --- protob/messages-ethereum.proto | 21 +++++++++++++++++++++ protob/messages.proto | 2 ++ 2 files changed, 23 insertions(+) diff --git a/protob/messages-ethereum.proto b/protob/messages-ethereum.proto index d059c14b8..bf14ff11e 100644 --- a/protob/messages-ethereum.proto +++ b/protob/messages-ethereum.proto @@ -5,6 +5,27 @@ package hw.trezor.messages.ethereum; option java_package = "com.satoshilabs.trezor.lib.protobuf"; option java_outer_classname = "TrezorMessageEthereum"; +/** + * Request: Ask device for public key corresponding to address_n path + * @start + * @next EthereumPublicKey + * @next Failure + */ +message EthereumGetPublicKey { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional bool show_display = 2; // optionally show on display before sending the result + optional uint32 chain_id = 3; // eth chain +} + +/** + * Response: Contains public key derived from device private seed + * @end + */ +message EthereumPublicKey { + required hw.trezor.messages.common.HDNodeType node = 1; // BIP32 public node + optional string xpub = 2; // serialized form of public node +} + /** * Request: Ask device for Ethereum address corresponding to address_n path * @start diff --git a/protob/messages.proto b/protob/messages.proto index 3ba33e5ad..bb838bcf2 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -104,6 +104,8 @@ enum MessageType { MessageType_DebugLinkFlashErase = 113 [(wire_debug_in) = true]; // Ethereum + MessageType_EthereumGetPublicKey = 450 [(wire_in) = true]; + MessageType_EthereumPublicKey = 451 [(wire_out) = true]; MessageType_EthereumGetAddress = 56 [(wire_in) = true]; MessageType_EthereumAddress = 57 [(wire_out) = true]; MessageType_EthereumSignTx = 58 [(wire_in) = true]; From 016a71c6d0df190bec3cbd4eb26e09a1ab748c73 Mon Sep 17 00:00:00 2001 From: Tomas Susanka Date: Fri, 16 Nov 2018 14:14:18 +0100 Subject: [PATCH 650/767] protobuf: eth fix --- protob/messages-ethereum.proto | 3 +++ 1 file changed, 3 insertions(+) diff --git a/protob/messages-ethereum.proto b/protob/messages-ethereum.proto index bf14ff11e..7ff9010b8 100644 --- a/protob/messages-ethereum.proto +++ b/protob/messages-ethereum.proto @@ -5,6 +5,9 @@ package hw.trezor.messages.ethereum; option java_package = "com.satoshilabs.trezor.lib.protobuf"; option java_outer_classname = "TrezorMessageEthereum"; +import "messages-common.proto"; + + /** * Request: Ask device for public key corresponding to address_n path * @start From beb8bb6dec1739bb5dc42059616f82eea9dad806 Mon Sep 17 00:00:00 2001 From: martin <30367552+mroz22@users.noreply.github.com> Date: Tue, 20 Nov 2018 13:09:03 +0100 Subject: [PATCH 651/767] increase version for DGB Increase version for DGB to 1.6.3 and 2.0.7. Motivation is to make it work seamlessly in current webwallet. Lower versions would need some workarounds. --- defs/support.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/defs/support.json b/defs/support.json index fcf0ee054..10367f1ec 100644 --- a/defs/support.json +++ b/defs/support.json @@ -62,7 +62,7 @@ "bitcoin:CPC": "soon", "bitcoin:DASH": "1.5.2", "bitcoin:DCR": "1.6.2", - "bitcoin:DGB": "1.6.0", + "bitcoin:DGB": "1.6.3", "bitcoin:DNR": "1.7.1", "bitcoin:DOGE": "1.5.2", "bitcoin:FJC": "1.6.1", @@ -985,7 +985,7 @@ "bitcoin:CPC": "soon", "bitcoin:DASH": "2.0.5", "bitcoin:DCR": "2.0.8", - "bitcoin:DGB": "2.0.5", + "bitcoin:DGB": "2.0.7", "bitcoin:DNR": "2.0.8", "bitcoin:DOGE": "2.0.5", "bitcoin:FJC": "2.0.5", From 56fbd816c9897033be3b78b9d496dce6f0c05adc Mon Sep 17 00:00:00 2001 From: matejcik Date: Tue, 20 Nov 2018 17:20:40 +0100 Subject: [PATCH 652/767] improve wallet lists - move bitcoin wallet links from coins_details.override.json to a separate wallets.json file - drop NanoWallet links from nem nem_mosaics.json, auto-add them in coins_details.py instead - move misc wallet links to misc.json - clean out override file - change wallet format in coins_details.json: - they're now list instead of dict, so that we can specify ordering - add Trezor Beta wallet link to ETH/ETC and their tokens - somewhat stricter checking of trezor.io wallet data --- defs/coins_details.json | 12991 ++++++++++++++++++++++------- defs/coins_details.override.json | 89 - defs/misc/misc.json | 9 + defs/nem/nem_mosaics.json | 18 - defs/wallets.json | 45 + tools/coins_details.py | 131 +- 6 files changed, 10059 insertions(+), 3224 deletions(-) create mode 100644 defs/wallets.json diff --git a/defs/coins_details.json b/defs/coins_details.json index 7c6984bf8..82b4f37db 100644 --- a/defs/coins_details.json +++ b/defs/coins_details.json @@ -5,29 +5,35 @@ "Github": "https://github.com/Actinium-project/Actinium", "Homepage": "https://actinium.org" }, - "marketcap_usd": 355255, + "marketcap_usd": 240179, "name": "Actinium", "shortcut": "ACM", "t1_enabled": "soon", "t2_enabled": "soon", "type": "coin", - "wallet": {} + "wallet": [] }, "bitcoin:BCH": { "links": { "Github": "https://github.com/Bitcoin-ABC/bitcoin-abc", "Homepage": "https://www.bitcoincash.org" }, - "marketcap_usd": 7384298756, + "marketcap_usd": 4374220394, "name": "Bitcoin Cash", "shortcut": "BCH", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": { - "Electron Cash": "https://electroncash.org", - "Trezor": "https://wallet.trezor.io" - } + "wallet": [ + { + "name": "Trezor", + "url": "https://wallet.trezor.io" + }, + { + "name": "Electron Cash", + "url": "https://electroncash.org" + } + ] }, "bitcoin:BITC": { "links": { @@ -40,148 +46,169 @@ "t1_enabled": "soon", "t2_enabled": "soon", "type": "coin", - "wallet": {} + "wallet": [] }, "bitcoin:BSD": { "links": { "Github": "https://github.com/LIMXTEC/BitSend", "Homepage": "https://bitsend.info" }, - "marketcap_usd": 2495394, + "marketcap_usd": 1638862, "name": "Bitsend", "shortcut": "BSD", "t1_enabled": "soon", "t2_enabled": "soon", "type": "coin", - "wallet": {} + "wallet": [] }, "bitcoin:BTC": { "links": { "Github": "https://github.com/bitcoin/bitcoin", "Homepage": "https://bitcoin.org" }, - "marketcap_usd": 98203021547, + "marketcap_usd": 82877982519, "name": "Bitcoin", "shortcut": "BTC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": { - "Electrum": "https://electrum.org", - "Trezor": "https://wallet.trezor.io" - } + "wallet": [ + { + "name": "Trezor", + "url": "https://wallet.trezor.io" + }, + { + "name": "Electrum", + "url": "https://electrum.org" + } + ] }, "bitcoin:BTCP": { "links": { "Github": "https://github.com/BTCPrivate/BitcoinPrivate", "Homepage": "https://btcprivate.org" }, - "marketcap_usd": 36459567, + "marketcap_usd": 31975707, "name": "Bitcoin Private", "shortcut": "BTCP", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": { - "BTCP Electrum": "https://github.com/BTCPrivate/electrum-btcp" - } + "wallet": [ + { + "name": "BTCP Electrum", + "url": "https://github.com/BTCPrivate/electrum-btcp" + } + ] }, "bitcoin:BTDX": { "links": { "Github": "https://github.com/LIMXTEC/Bitcloud", "Homepage": "https://bit-cloud.info" }, - "marketcap_usd": 264173, + "marketcap_usd": 203623, "name": "Bitcloud", "shortcut": "BTDX", "t1_enabled": "soon", "t2_enabled": "soon", "type": "coin", - "wallet": {} + "wallet": [] }, "bitcoin:BTG": { "links": { "Github": "https://github.com/BTCGPU/BTCGPU", "Homepage": "https://bitcoingold.org" }, - "marketcap_usd": 458901785, + "marketcap_usd": 385833057, "name": "Bitcoin Gold", "shortcut": "BTG", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": { - "ElectrumG": "https://github.com/BTCGPU/electrum", - "Trezor": "https://wallet.trezor.io" - } + "wallet": [ + { + "name": "Trezor", + "url": "https://wallet.trezor.io" + }, + { + "name": "ElectrumG", + "url": "https://github.com/BTCGPU/electrum" + } + ] }, "bitcoin:BTX": { "links": { "Github": "https://github.com/LIMXTEC/BitCore", "Homepage": "https://bitcore.cc" }, - "marketcap_usd": 8055309, + "marketcap_usd": 6950290, "name": "Bitcore", "shortcut": "BTX", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": {} + "wallet": [] }, "bitcoin:CPC": { "links": { "Github": "https://github.com/Capricoinofficial/Capricoin", "Homepage": "https://capricoin.org" }, - "marketcap_usd": 1426858, + "marketcap_usd": 1151038, "name": "Capricoin", "shortcut": "CPC", "t1_enabled": "soon", "t2_enabled": "soon", "type": "coin", - "wallet": {} + "wallet": [] }, "bitcoin:DASH": { "links": { "Github": "https://github.com/dashpay/dash", "Homepage": "https://www.dash.org" }, - "marketcap_usd": 1169764329, + "marketcap_usd": 909396282, "name": "Dash", "shortcut": "DASH", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": { - "Dash Electrum": "https://electrum.dash.org", - "Trezor": "https://wallet.trezor.io" - } + "wallet": [ + { + "name": "Trezor", + "url": "https://wallet.trezor.io" + }, + { + "name": "Dash Electrum", + "url": "https://electrum.dash.org" + } + ] }, "bitcoin:DCR": { "links": { "Github": "https://github.com/decred/dcrd", "Homepage": "https://www.decred.org" }, - "marketcap_usd": 306470317, + "marketcap_usd": 223041056, "name": "Decred", "shortcut": "DCR", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": {} + "wallet": [] }, "bitcoin:DGB": { "links": { "Github": "https://github.com/digibyte/digibyte", "Homepage": "https://digibyte.io" }, - "marketcap_usd": 182106799, + "marketcap_usd": 146951910, "name": "DigiByte", "shortcut": "DGB", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": {} + "wallet": [] }, "bitcoin:DNR": { "links": { @@ -194,93 +221,105 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": {} + "wallet": [] }, "bitcoin:DOGE": { "links": { "Github": "https://github.com/dogecoin/dogecoin", "Homepage": "https://dogecoin.com" }, - "marketcap_usd": 327254828, + "marketcap_usd": 271064980, "name": "Dogecoin", "shortcut": "DOGE", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": { - "Trezor": "https://wallet.trezor.io" - } + "wallet": [ + { + "name": "Trezor", + "url": "https://wallet.trezor.io" + } + ] }, "bitcoin:FJC": { "links": { "Github": "https://github.com/fujicoin/fujicoin", "Homepage": "https://fujicoin.org" }, - "marketcap_usd": 369938, + "marketcap_usd": 252492, "name": "Fujicoin", "shortcut": "FJC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": { - "Electrum-FJC": "http://www.fujicoin.org/downloads.php" - } + "wallet": [ + { + "name": "Electrum-FJC", + "url": "http://www.fujicoin.org/downloads.php" + } + ] }, "bitcoin:FLASH": { "links": { "Github": "https://github.com/flash-coin", "Homepage": "https://www.flashcoin.io" }, - "marketcap_usd": 4088864, + "marketcap_usd": 3030073, "name": "Flashcoin", "shortcut": "FLASH", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": {} + "wallet": [] }, "bitcoin:FTC": { "links": { "Github": "https://github.com/FeatherCoin/Feathercoin", "Homepage": "https://feathercoin.com" }, - "marketcap_usd": 6588626, + "marketcap_usd": 4569744, "name": "Feathercoin", "shortcut": "FTC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": {} + "wallet": [] }, "bitcoin:GAME": { "links": { "Github": "https://github.com/gamecredits-project/gamecredits", "Homepage": "https://gamecredits.org" }, - "marketcap_usd": 6637591, + "marketcap_usd": 5828584, "name": "GameCredits", "shortcut": "GAME", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": { - "Electrum-GAME": "https://electrum-game.org" - } + "wallet": [ + { + "name": "Electrum-GAME", + "url": "https://electrum-game.org" + } + ] }, "bitcoin:GRS": { "links": { "Github": "https://github.com/Groestlcoin/groestlcoin", "Homepage": "https://www.groestlcoin.org" }, - "marketcap_usd": 27491545, + "marketcap_usd": 21837144, "name": "Groestlcoin", "shortcut": "GRS", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": { - "Electrum-GRS": "https://www.groestlcoin.org/groestlcoin-electrum-wallet" - } + "wallet": [ + { + "name": "Electrum-GRS", + "url": "https://www.groestlcoin.org/groestlcoin-electrum-wallet" + } + ] }, "bitcoin:KOTO": { "links": { @@ -293,53 +332,65 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": { - "Electrum-KOTO": "https://electrum.kotocoin.info" - } + "wallet": [ + { + "name": "Electrum-KOTO", + "url": "https://electrum.kotocoin.info" + } + ] }, "bitcoin:LTC": { "links": { "Github": "https://github.com/litecoin-project/litecoin", "Homepage": "https://litecoin.org" }, - "marketcap_usd": 2599324586, + "marketcap_usd": 2092345017, "name": "Litecoin", "shortcut": "LTC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": { - "Electrum-LTC": "https://electrum-ltc.org", - "Trezor": "https://wallet.trezor.io" - } + "wallet": [ + { + "name": "Trezor", + "url": "https://wallet.trezor.io" + }, + { + "name": "Electrum-LTC", + "url": "https://electrum-ltc.org" + } + ] }, "bitcoin:MEC": { "links": { "Github": "https://github.com/LIMXTEC/Megacoin", "Homepage": "https://www.megacoin.eu" }, - "marketcap_usd": 349558, + "marketcap_usd": 155060, "name": "Megacoin", "shortcut": "MEC", "t1_enabled": "soon", "t2_enabled": "soon", "type": "coin", - "wallet": {} + "wallet": [] }, "bitcoin:MONA": { "links": { "Github": "https://github.com/monacoinproject/monacoin", "Homepage": "https://monacoin.org" }, - "marketcap_usd": 67710755, + "marketcap_usd": 61053434, "name": "Monacoin", "shortcut": "MONA", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": { - "Electrum-MONA": "https://electrum-mona.org" - } + "wallet": [ + { + "name": "Electrum-MONA", + "url": "https://electrum-mona.org" + } + ] }, "bitcoin:MUE": { "links": { @@ -352,149 +403,170 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": {} + "wallet": [] }, "bitcoin:NMC": { "links": { "Github": "https://github.com/namecoin/namecoin-core", "Homepage": "https://namecoin.org" }, - "marketcap_usd": 7422742, + "marketcap_usd": 6329120, "name": "Namecoin", "shortcut": "NMC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": { - "Electrum-NMC": "https://github.com/namecoin/electrum-nmc", - "Trezor": "https://wallet.trezor.io" - } + "wallet": [ + { + "name": "Trezor", + "url": "https://wallet.trezor.io" + }, + { + "name": "Electrum-NMC", + "url": "https://github.com/namecoin/electrum-nmc" + } + ] }, "bitcoin:PTC": { "links": { "Github": "https://github.com/FundacionPesetacoin/PesetacoinCore", "Homepage": "https://pesetacoin.info" }, - "marketcap_usd": 446411, + "marketcap_usd": 439071, "name": "Pesetacoin", "shortcut": "PTC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": {} + "wallet": [] }, "bitcoin:RVN": { "links": { "Github": "https://github.com/RavenProject/Ravencoin", "Homepage": "https://ravencoin.org" }, - "marketcap_usd": 61360446, + "marketcap_usd": 48181909, "name": "Ravencoin", "shortcut": "RVN", "t1_enabled": "soon", "t2_enabled": "soon", "type": "coin", - "wallet": {} + "wallet": [] }, "bitcoin:SMART": { "links": { "Github": "https://github.com/SmartCash/Core-Smart", "Homepage": "https://smarcash.cc" }, - "marketcap_usd": 19229428, + "marketcap_usd": 18023225, "name": "SmartCash", "shortcut": "SMART", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": {} + "wallet": [] }, "bitcoin:VIA": { "links": { "Github": "https://github.com/viacoin", "Homepage": "https://viacoin.org" }, - "marketcap_usd": 13323852, + "marketcap_usd": 9392006, "name": "Viacoin", "shortcut": "VIA", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": { - "Vialectrum": "https://vialectrum.org" - } + "wallet": [ + { + "name": "Vialectrum", + "url": "https://vialectrum.org" + } + ] }, "bitcoin:VTC": { "links": { "Github": "https://github.com/vertcoin-project/vertcoin-core", "Homepage": "https://vertcoin.org" }, - "marketcap_usd": 21537136, + "marketcap_usd": 15917193, "name": "Vertcoin", "shortcut": "VTC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": { - "Trezor": "https://wallet.trezor.io" - } + "wallet": [ + { + "name": "Trezor", + "url": "https://wallet.trezor.io" + } + ] }, "bitcoin:XMY": { "links": { "Github": "https://github.com/myriadcoin/myriadcoin", "Homepage": "https://www.myriadcoin.org" }, - "marketcap_usd": 3672877, + "marketcap_usd": 3036170, "name": "Myriad", "shortcut": "XMY", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": {} + "wallet": [] }, "bitcoin:XZC": { "links": { "Github": "https://github.com/zcoinofficial/zcoin", "Homepage": "https://zcoin.io" }, - "marketcap_usd": 49824762, + "marketcap_usd": 37451856, "name": "Zcoin", "shortcut": "XZC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": { - "Electrum-XZC": "https://github.com/zcoinofficial/electrum-xzc", - "Znode Tool": "https://github.com/yura-pakhuchiy/znode-tool" - } + "wallet": [ + { + "name": "Electrum-XZC", + "url": "https://github.com/zcoinofficial/electrum-xzc" + }, + { + "name": "Znode Tool", + "url": "https://github.com/yura-pakhuchiy/znode-tool" + } + ] }, "bitcoin:ZEC": { "links": { "Github": "https://github.com/zcash/zcash", "Homepage": "https://z.cash" }, - "marketcap_usd": 583718930, + "marketcap_usd": 498701587, "name": "Zcash", "shortcut": "ZEC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": { - "Trezor": "https://wallet.trezor.io" - } + "wallet": [ + { + "name": "Trezor", + "url": "https://wallet.trezor.io" + } + ] }, "bitcoin:ZEN": { "links": { "Github": "https://github.com/ZencashOfficial/zen", "Homepage": "https://zencash.com" }, - "marketcap_usd": 62263636, + "marketcap_usd": 46921906, "name": "Zencash", "shortcut": "ZEN", "t1_enabled": "no", "t2_enabled": "yes", "type": "coin", - "wallet": {} + "wallet": [] }, "erc20:ella:MINING": { "address": "0x991e7Fe4b05f2b3db1D788e705963f5D647b0044", @@ -508,10 +580,16 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:etc:UNV": { "address": "0x6ADa6F48C815689502C43eC1a59F1b5DD3C04E1F", @@ -525,10 +603,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:$FFC": { "address": "0x4E84E9e5fb0A972628Cf4568c403167EF1D40431", @@ -543,10 +631,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:$FXY": { "address": "0xA024E8057EEC474a9b2356833707Dd0579E26eF3", @@ -561,10 +659,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:$HUR": { "address": "0xCDB7eCFd3403Eef3882c65B761ef9B5054890a47", @@ -579,10 +687,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:$TEAK": { "address": "0x7DD7F56D697Cc0f2b52bD55C057f378F1fE6Ab4b", @@ -596,44 +714,74 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:0xBTC": { "address": "0xB6eD7644C69416d67B522e20bC294A9a9B405B31", "links": { "Homepage": "https://0xbitcoin.org/" }, - "marketcap_usd": 1621851, + "marketcap_usd": 1528456, "name": "0xBitcoin", "network": "eth", "shortcut": "0xBTC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:1ST": { "address": "0xAf30D2a7E90d7DC361c8C4585e9BB7D2F6f15bc7", "links": { "Homepage": "https://firstblood.io" }, - "marketcap_usd": 5064419, + "marketcap_usd": 3591758, "name": "FirstBlood", "network": "eth", "shortcut": "1ST", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:1WO": { "address": "0xfDBc1aDc26F0F8f8606a5d63b7D3a3CD21c22B23", @@ -647,10 +795,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:300": { "address": "0xaEc98A708810414878c3BCDF46Aad31dEd4a4557", @@ -664,10 +822,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:3LT": { "address": "0x430241368c1D293fdA21DBa8Bb7aF32007c59109", @@ -681,10 +849,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ABT": { "address": "0xB98d4C97425d9908E66E53A6fDf673ACcA0BE986", @@ -698,10 +876,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ABYSS": { "address": "0x0E8d6b471e332F140e7d9dbB99E5E3822F728DA6", @@ -716,27 +904,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ACC": { "address": "0x13F1b7FDFbE1fc66676D56483e21B1ecb40b58E2", "links": { "Homepage": "http://accelerator.network" }, - "marketcap_usd": 113703, + "marketcap_usd": 48332, "name": "Accelerator Network", "network": "eth", "shortcut": "ACC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ADH": { "address": "0xE69a353b3152Dd7b706ff7dD40fe1d18b7802d31", @@ -750,10 +958,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ADI": { "address": "0x8810C63470d38639954c6B41AaC545848C46484a", @@ -761,17 +979,27 @@ "Github": "https://github.com/aditus", "Homepage": "https://aditus.net" }, - "marketcap_usd": 208406, + "marketcap_usd": 177344, "name": "Aditus", "network": "eth", "shortcut": "ADI", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ADL": { "address": "0x660e71483785f66133548B10f6926dC332b06e61", @@ -779,34 +1007,54 @@ "Github": "https://github.com/adelecosystem", "Homepage": "https://adel.io" }, - "marketcap_usd": 769731, + "marketcap_usd": 197916, "name": "Adelphoi", "network": "eth", "shortcut": "ADL", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ADST": { "address": "0x422866a8F0b032c5cf1DfBDEf31A20F4509562b0", "links": { "Homepage": "https://adshares.net" }, - "marketcap_usd": 1641863, + "marketcap_usd": 1371914, "name": "AdShares", "network": "eth", "shortcut": "ADST", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ADT": { "address": "0xD0D6D6C5Fe4a677D343cC433536BB717bAe167dD", @@ -814,17 +1062,27 @@ "Github": "https://github.com/adchain", "Homepage": "https://adtoken.com" }, - "marketcap_usd": 6271670, + "marketcap_usd": 4463303, "name": "AdToken", "network": "eth", "shortcut": "ADT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ADX": { "address": "0x4470BB87d77b963A013DB939BE332f927f2b992e", @@ -839,10 +1097,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:AE": { "address": "0x5CA9a71B1d01849C0a95490Cc00559717fCF0D1d", @@ -850,17 +1118,27 @@ "Github": "https://github.com/aeternity", "Homepage": "https://www.aeternity.com/" }, - "marketcap_usd": 218284367, + "marketcap_usd": 154911322, "name": "aeternity", "network": "eth", "shortcut": "AE", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:AFA": { "address": "0xfB48E0DEa837f9438309a7e9F0cFe7EE3353A84e", @@ -875,10 +1153,20 @@ "t1_enabled": "soon", "t2_enabled": "soon", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:AGI": { "address": "0x8eB24319393716668D768dCEC29356ae9CfFe285", @@ -886,17 +1174,27 @@ "Github": "https://github.com/singnet/singnet", "Homepage": "https://singularitynet.io" }, - "marketcap_usd": 28888876, + "marketcap_usd": 20759005, "name": "SingularityNET", "network": "eth", "shortcut": "AGI", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:AION": { "address": "0x4CEdA7906a5Ed2179785Cd3A40A69ee8bc99C466", @@ -904,34 +1202,54 @@ "Github": "https://github.com/aionnetwork", "Homepage": "https://aion.network/" }, - "marketcap_usd": 76176565, + "marketcap_usd": 51397071, "name": "Aion", "network": "eth", "shortcut": "AION", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:AIR": { "address": "0x27Dce1eC4d3f72C3E457Cc50354f1F975dDEf488", "links": { "Homepage": "https://airtoken.com" }, - "marketcap_usd": 1059681, + "marketcap_usd": 1302034, "name": "AirToken", "network": "eth", "shortcut": "AIR", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:AIX": { "address": "0x1063ce524265d5a3A624f4914acd573dD89ce988", @@ -939,17 +1257,27 @@ "Github": "https://github.com/AigangNetwork", "Homepage": "https://aigang.network/" }, - "marketcap_usd": 346377, + "marketcap_usd": 287039, "name": "Aigang", "network": "eth", "shortcut": "AIX", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:AKC": { "address": "0x1Ca43a170BaD619322e6f54d46b57e504dB663aA", @@ -964,10 +1292,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ALCO": { "address": "0x181a63746d3Adcf356CBc73aCE22832FFBB1EE5A", @@ -981,10 +1319,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ALIS": { "address": "0xEA610B1153477720748DC13ED378003941d84fAB", @@ -992,17 +1340,27 @@ "Github": "https://github.com/AlisProject", "Homepage": "https://alismedia.jp" }, - "marketcap_usd": 1735667, + "marketcap_usd": 1439718, "name": "ALIS Token", "network": "eth", "shortcut": "ALIS", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ALTS": { "address": "0x638AC149eA8EF9a1286C41B977017AA7359E6Cfa", @@ -1016,10 +1374,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:AMB": { "address": "0x4DC3643DbC642b72C158E7F3d2ff232df61cb6CE", @@ -1034,10 +1402,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:AMIS": { "address": "0x949bEd886c739f1A3273629b3320db0C5024c719", @@ -1052,10 +1430,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:AMLT": { "address": "0xCA0e7269600d353F70b14Ad118A49575455C0f2f", @@ -1063,17 +1451,27 @@ "Github": "https://github.com/amlt-by-coinfirm", "Homepage": "https://amlt.coinfirm.io/" }, - "marketcap_usd": 1575125, + "marketcap_usd": 1717429, "name": "AMLT", "network": "eth", "shortcut": "AMLT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:AMN": { "address": "0x737F98AC8cA59f2C68aD658E3C3d8C8963E40a4c", @@ -1081,17 +1479,27 @@ "Github": "https://github.com/amontech", "Homepage": "https://amon.tech" }, - "marketcap_usd": 287327, + "marketcap_usd": 199631, "name": "Amon", "network": "eth", "shortcut": "AMN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:AMO": { "address": "0x38c87AA89B2B8cD9B95b736e1Fa7b612EA972169", @@ -1099,17 +1507,27 @@ "Github": "https://github.com/AMO-Project/", "Homepage": "https://amo.foundation" }, - "marketcap_usd": 17271206, + "marketcap_usd": 15946017, "name": "AMO Coin", "network": "eth", "shortcut": "AMO", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:AMTC": { "address": "0x84936cF7630AA3e27Dd9AfF968b140d5AEE49F5a", @@ -1123,10 +1541,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ANT": { "address": "0x960b236A07cf122663c4303350609A66A7B288C0", @@ -1140,10 +1568,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:APIS": { "address": "0x4C0fBE1BB46612915E7967d2C3213cd4d87257AD", @@ -1151,17 +1589,27 @@ "Github": "https://github.com/Oxchild/crowdsale", "Homepage": "https://apisplatform.io" }, - "marketcap_usd": 18400457, + "marketcap_usd": 11569227, "name": "APIS", "network": "eth", "shortcut": "APIS", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:APPC": { "address": "0x1a7a8BD9106F2B8D977E08582DC7d24c723ab0DB", @@ -1169,34 +1617,54 @@ "Github": "https://github.com/Aptoide/AppCoins-ethereumj", "Homepage": "https://appcoins.io" }, - "marketcap_usd": 7612178, + "marketcap_usd": 5246614, "name": "AppCoins", "network": "eth", "shortcut": "APPC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:APT": { "address": "0x23aE3C5B39B12f0693e05435EeaA1e51d8c61530", "links": { "Homepage": "https://aigang.network" }, - "marketcap_usd": 346377, + "marketcap_usd": 287039, "name": "AIGang", "network": "eth", "shortcut": "APT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ARC": { "address": "0xAc709FcB44a43c35F0DA4e3163b117A17F3770f5", @@ -1211,27 +1679,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ARCT": { "address": "0x1245ef80F4d9e02ED9425375e8F649B9221b31D8", "links": { "Homepage": "https://www.arbitragect.com" }, - "marketcap_usd": 243713, + "marketcap_usd": 178198, "name": "ArbitrageCT", "network": "eth", "shortcut": "ARCT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ARD": { "address": "0x75Aa7B0d02532f3833b66c7f0Ad35376d373ddF8", @@ -1246,10 +1734,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ARN": { "address": "0xBA5F11b16B155792Cf3B2E6880E8706859A8AEB6", @@ -1263,10 +1761,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ART": { "address": "0xfec0cF7fE078a500abf15F1284958F22049c2C7e", @@ -1280,10 +1788,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ARX": { "address": "0x7705FaA34B16EB6d77Dfc7812be2367ba6B0248e", @@ -1298,10 +1816,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ARXT": { "address": "0xb0D926c1BC3d78064F3e1075D5bD9A24F35Ae6C5", @@ -1316,27 +1844,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:AST": { "address": "0x27054b13b1B798B345b591a4d22e6562d47eA75a", "links": { "Homepage": "https://airswap.io" }, - "marketcap_usd": 9871161, + "marketcap_usd": 6321053, "name": "Airswap", "network": "eth", "shortcut": "AST", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ATL": { "address": "0x78B7FADA55A64dD895D8c8c35779DD8b67fA8a05", @@ -1350,10 +1898,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ATMI": { "address": "0x97AEB5066E1A590e868b511457BEb6FE99d329F5", @@ -1361,17 +1919,27 @@ "Github": "https://github.com/atonomi", "Homepage": "https://atonomi.io" }, - "marketcap_usd": 2912736, + "marketcap_usd": 1374607, "name": "Atonomi", "network": "eth", "shortcut": "ATMI", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ATT": { "address": "0x887834D3b8D450B6bAB109c252Df3DA286d73CE4", @@ -1386,10 +1954,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ATTN": { "address": "0x6339784d9478dA43106A429196772A029C2f177d", @@ -1403,10 +1981,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:AVA": { "address": "0xeD247980396B10169BB1d36f6e278eD16700a60f", @@ -1421,10 +2009,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:AVT": { "address": "0x0d88eD6E74bbFD96B831231638b66C05571e824F", @@ -1438,10 +2036,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:AX1": { "address": "0xCd4b4b0F3284a33AC49C67961EC6e111708318Cf", @@ -1456,10 +2064,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:AXP": { "address": "0x9af2c6B1A28D3d6BC084bd267F70e90d49741D5B", @@ -1473,10 +2091,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:AXPR": { "address": "0xC39E626A04C5971D770e319760D7926502975e47", @@ -1484,17 +2112,27 @@ "Github": "https://www.github.com/axpire", "Homepage": "https://www.axpire.io" }, - "marketcap_usd": 3973343, + "marketcap_usd": 2855463, "name": "aXpire", "network": "eth", "shortcut": "AXPR", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BANX": { "address": "0xF87F0D9153fea549c728Ad61cb801595a68b73de", @@ -1508,10 +2146,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BAT": { "address": "0x0D8775F648430679A709E98d2b0Cb6250d2887EF", @@ -1525,10 +2173,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BBK": { "address": "0x4a6058666cf1057eaC3CD3A5a614620547559fc9", @@ -1543,10 +2201,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BC": { "address": "0x2ecB13A8c458c379c4d9a7259e202De03c8F3D19", @@ -1560,10 +2228,20 @@ "t1_enabled": "soon", "t2_enabled": "soon", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BCBC": { "address": "0x7367A68039d4704f30BfBF6d948020C3B07DFC59", @@ -1578,10 +2256,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BCDN": { "address": "0x1e797Ce986C3CFF4472F7D38d5C4aba55DfEFE40", @@ -1596,10 +2284,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BCDT": { "address": "0xAcfa209Fb73bF3Dd5bBfb1101B9Bc999C49062a5", @@ -1614,10 +2312,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BCL": { "address": "0xbc1234552EBea32B5121190356bBa6D3Bb225bb5", @@ -1631,10 +2339,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BCPT": { "address": "0x1c4481750daa5Ff521A2a7490d9981eD46465Dbd", @@ -1649,10 +2367,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BCV": { "address": "0x1014613E2B3CBc4d575054D4982E580d9b99d7B1", @@ -1667,10 +2395,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BDG": { "address": "0x1961B3331969eD52770751fC718ef530838b6dEE", @@ -1685,10 +2423,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BEE": { "address": "0x4D8fc1453a0F359e99c9675954e656D80d996FbF", @@ -1696,17 +2444,27 @@ "Github": "https://github.com/thebeetoken", "Homepage": "https://www.beetoken.com" }, - "marketcap_usd": 1387986, + "marketcap_usd": 1060273, "name": "Bee Token", "network": "eth", "shortcut": "BEE", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BERRY": { "address": "0x6aEB95F06CDA84cA345c2dE0F3B7f96923a44f4c", @@ -1721,10 +2479,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BET": { "address": "0x8aA33A7899FCC8eA5fBe6A608A109c3893A1B8b2", @@ -1739,10 +2507,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BETHER": { "address": "0x14C926F2290044B647e1Bf2072e67B495eff1905", @@ -1750,17 +2528,27 @@ "Github": "https://github.com/bethereumproject", "Homepage": "https://www.bethereum.com/" }, - "marketcap_usd": 755380, + "marketcap_usd": 729773, "name": "Bethereum", "network": "eth", "shortcut": "BETHER", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BETR": { "address": "0x763186eB8d4856D536eD4478302971214FEbc6A9", @@ -1775,10 +2563,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BHR": { "address": "0xfe5D908c9Ad85f651185dAa6a4770726E2b27d09", @@ -1792,10 +2590,20 @@ "t1_enabled": "soon", "t2_enabled": "soon", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BITCAR": { "address": "0x08b4c866aE9D1bE56a06e0C302054B4FFe067b43", @@ -1810,10 +2618,20 @@ "t1_enabled": "soon", "t2_enabled": "soon", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BKB": { "address": "0xB2Bfeb70B903F1BAaC7f2ba2c62934C7e5B974C4", @@ -1827,10 +2645,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BKRx": { "address": "0x3cf9E0c385a5ABEC9FD2a71790AA344C4e8E3570", @@ -1844,10 +2672,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BKX": { "address": "0x45245bc59219eeaAF6cD3f382e078A461FF9De7B", @@ -1855,17 +2693,27 @@ "Github": "https://github.com/BankEx", "Homepage": "https://bankex.com/" }, - "marketcap_usd": 6071724, + "marketcap_usd": 3182422, "name": "BANKEX", "network": "eth", "shortcut": "BKX", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BLT": { "address": "0x107c4504cd79C5d2696Ea0030a8dD4e92601B82e", @@ -1880,10 +2728,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BLUE": { "address": "0x539EfE69bCDd21a83eFD9122571a64CC25e0282b", @@ -1891,17 +2749,27 @@ "Github": "https://github.com/BlueCrypto", "Homepage": "https://blueprotocol.com/" }, - "marketcap_usd": 1162837, + "marketcap_usd": 663834, "name": "Ethereum Blue", "network": "eth", "shortcut": "BLUE", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BLX (Bullion)": { "address": "0xcE59d29b09aAE565fEEEf8E52f47c3CD5368C663", @@ -1916,27 +2784,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BLX (Iconomi)": { "address": "0xE5a7c12972f3bbFe70ed29521C8949b8Af6a0970", "links": { "Homepage": "https://www.iconomi.net" }, - "marketcap_usd": 39631699, + "marketcap_usd": 23579735, "name": "Iconomi", "network": "eth", "shortcut": "BLX (Iconomi)", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BMC": { "address": "0xDf6Ef343350780BF8C3410BF062e0C015B1DD671", @@ -1951,10 +2839,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BMT": { "address": "0xf028ADEe51533b1B47BEaa890fEb54a457f51E89", @@ -1969,10 +2867,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BMX": { "address": "0x986EE2B944c42D017F52Af21c4c69B84DBeA35d8", @@ -1986,10 +2894,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BNB": { "address": "0xB8c77482e45F1F44dE1745F52C74426C631bDD52", @@ -2003,10 +2921,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BNT": { "address": "0x1F573D6Fb3F13d689FF844B4cE37794d79a7FF1C", @@ -2014,17 +2942,27 @@ "Github": "https://github.com/bancorprotocol", "Homepage": "https://www.bancor.network/discover" }, - "marketcap_usd": 70586140, + "marketcap_usd": 47437831, "name": "Bancor", "network": "eth", "shortcut": "BNT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BNTY": { "address": "0xd2d6158683aeE4Cc838067727209a0aAF4359de3", @@ -2038,10 +2976,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BOB": { "address": "0xDF347911910b6c9A4286bA8E2EE5ea4a39eB2134", @@ -2055,27 +3003,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BON": { "address": "0xCc34366E3842cA1BD36c1f324d15257960fCC801", "links": { "Homepage": "https://bonpay.com" }, - "marketcap_usd": 456038, + "marketcap_usd": 430209, "name": "Bonpay", "network": "eth", "shortcut": "BON", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BOP": { "address": "0x7F1E2C7d6A69bf34824D72C53B4550E895C0D8C2", @@ -2089,10 +3057,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BOU": { "address": "0xC2C63F23ec5E97efbD7565dF9Ec764FDc7d4e91d", @@ -2106,10 +3084,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BPT": { "address": "0x327682779bAB2BF4d1337e8974ab9dE8275A7Ca8", @@ -2124,10 +3112,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BQX": { "address": "0x5Af2Be193a6ABCa9c8817001F45744777Db30756", @@ -2141,27 +3139,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BRAT": { "address": "0x9E77D5a1251b6F7D456722A6eaC6D2d5980bd891", "links": { "Homepage": "http://bro-consortium.io" }, - "marketcap_usd": 18038, + "marketcap_usd": 15173, "name": "BRAT", "network": "eth", "shortcut": "BRAT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BRD": { "address": "0x558EC3152e2eb2174905cd19AeA4e34A23DE9aD6", @@ -2169,17 +3187,27 @@ "Github": "https://github.com/breadwallet", "Homepage": "https://token.breadapp.com/en" }, - "marketcap_usd": 26452438, + "marketcap_usd": 23151866, "name": "Bread", "network": "eth", "shortcut": "BRD", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BRLN": { "address": "0x80046305aaab08F6033b56a360c184391165dc2d", @@ -2193,10 +3221,20 @@ "t1_enabled": "soon", "t2_enabled": "soon", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BSDC": { "address": "0xF26ef5E0545384b7Dcc0f297F2674189586830DF", @@ -2211,10 +3249,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BST": { "address": "0x509A38b7a1cC0dcd83Aa9d06214663D9eC7c7F4a", @@ -2228,10 +3276,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BTCE": { "address": "0x0886949c1b8C412860c4264Ceb8083d1365e86CF", @@ -2245,10 +3303,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BTCL": { "address": "0x5acD19b9c91e596b1f062f18e3D02da7eD8D1e50", @@ -2262,10 +3330,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BTE": { "address": "0x73dD069c299A5d691E9836243BcaeC9c8C1D8734", @@ -2280,10 +3358,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BTH": { "address": "0xFAd572db566E5234AC9Fc3d570c4EdC0050eAA92", @@ -2297,10 +3385,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BTHR": { "address": "0xa02e3bB9cEbc03952601B3724B4940e0845BeBcf", @@ -2308,17 +3406,27 @@ "Github": "https://github.com/bethereumproject", "Homepage": "https://www.bethereum.com/" }, - "marketcap_usd": 755380, + "marketcap_usd": 729773, "name": "Bethereum", "network": "eth", "shortcut": "BTHR", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BTK": { "address": "0xdb8646F5b487B5Dd979FAC618350e85018F557d4", @@ -2326,17 +3434,27 @@ "Github": "https://github.com/bitcoin-token", "Homepage": "https://btk.community" }, - "marketcap_usd": 283339, + "marketcap_usd": 316726, "name": "Bitcoin Token", "network": "eth", "shortcut": "BTK", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BTM": { "address": "0xcB97e65F07DA24D46BcDD078EBebd7C6E6E3d750", @@ -2344,17 +3462,27 @@ "Github": "https://github.com/bytom", "Homepage": "https://bytom.io" }, - "marketcap_usd": 160229737, + "marketcap_usd": 125230157, "name": "Bytom", "network": "eth", "shortcut": "BTM", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BTQ": { "address": "0x16B0E62aC13a2fAeD36D18bce2356d25Ab3CfAD3", @@ -2368,10 +3496,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BTT": { "address": "0x080aa07E2C7185150d7e4DA98838A8d2feac3dfC", @@ -2379,17 +3517,27 @@ "Github": "https://github.com/Andyss4545/BitEther", "Homepage": "https://bytom.io" }, - "marketcap_usd": 62239, + "marketcap_usd": 39038, "name": "Bitether", "network": "eth", "shortcut": "BTT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BTTX": { "address": "0xFA456Cf55250A839088b27EE32A424d7DAcB54Ff", @@ -2403,10 +3551,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BTU": { "address": "0xb683D83a532e2Cb7DFa5275eED3698436371cc9f", @@ -2421,10 +3579,20 @@ "t1_enabled": "soon", "t2_enabled": "soon", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:BUC": { "address": "0xCa3c18a65b802eC267f8f4802545e7F53D24C75e", @@ -2438,10 +3606,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:C20": { "address": "0x26E75307Fc0C021472fEb8F727839531F112f317", @@ -2449,17 +3627,27 @@ "Github": "https://github.com/cryptotwenty", "Homepage": "https://crypto20.com" }, - "marketcap_usd": 24485284, + "marketcap_usd": 19595823, "name": "Crypto20's Token", "network": "eth", "shortcut": "C20", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CAG": { "address": "0x7d4b8Cce0591C9044a22ee543533b72E976E36C3", @@ -2473,10 +3661,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CAN": { "address": "0x1d462414fe14cf489c7A21CaC78509f4bF8CD7c0", @@ -2490,10 +3688,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CARB": { "address": "0xA517a46Baad6B054A76bD19c46844f717fe69fea", @@ -2507,10 +3715,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CARCO": { "address": "0x2108E62D335Bbdc89eC3E9d8582F18DCFB0cDFf4", @@ -2524,10 +3742,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CARE": { "address": "0xbF18F246B9301F231e9561B35A3879769BB46375", @@ -2541,27 +3769,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CAS": { "address": "0xe8780B48bdb05F928697A5e8155f672ED91462F7", "links": { "Homepage": "https://cashaa.com" }, - "marketcap_usd": 8332895, + "marketcap_usd": 6735448, "name": "Cashaa", "network": "eth", "shortcut": "CAS", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CAT (BitClave)": { "address": "0x1234567461d3f8Db7496581774Bd869C83D51c93", @@ -2575,10 +3823,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CAT (Blockcat)": { "address": "0x56ba2Ee7890461f463F7be02aAC3099f6d5811A8", @@ -2592,10 +3850,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CATs (BitClave)_Old": { "address": "0x68e14bb5A45B9681327E16E528084B9d962C1a39", @@ -2609,10 +3877,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CBIX": { "address": "0x05C3617cBf1304b9260AA61ec960F115D67beCEA", @@ -2627,10 +3905,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CC3": { "address": "0xc166038705FFBAb3794185b3a9D925632A1DF37D", @@ -2644,10 +3932,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CCC (CryptoCrashCourse)": { "address": "0x28577A6d31559bd265Ce3ADB62d0458550F7b8a7", @@ -2661,10 +3959,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CCC (ICONOMI)": { "address": "0xBE11eEb186e624b8f26A5045575a1340E4054552", @@ -2678,10 +3986,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CCLC": { "address": "0xd348e07A2806505B856123045d27aeeD90924b50", @@ -2696,10 +4014,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CCS": { "address": "0x315cE59FAFd3A8d562b7Ec1C8542382d2710b06c", @@ -2714,10 +4042,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CDL": { "address": "0x8a95ca448A52C0ADf0054bB3402dC5e09CD6B232", @@ -2732,10 +4070,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CDT": { "address": "0x177d39AC676ED1C67A2b268AD7F1E58826E5B0af", @@ -2749,10 +4097,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CEEK": { "address": "0xb056c38f6b7Dc4064367403E26424CD2c60655e1", @@ -2766,10 +4124,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CET": { "address": "0xF660cA1e228e7BE1fA8B4f5583145E31147FB577", @@ -2784,10 +4152,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CFC": { "address": "0x5Dff89a2caa4D76bc286F74D67Bd718eb834da61", @@ -2801,10 +4179,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CFI": { "address": "0x12FEF5e57bF45873Cd9B62E9DBd7BFb99e32D73e", @@ -2818,10 +4206,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CFTY": { "address": "0x6956983F8B3Ce173B4AB84361AA0ad52f38D936f", @@ -2836,10 +4234,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CHSB": { "address": "0xba9d4199faB4f26eFE3551D490E3821486f135Ba", @@ -2853,10 +4261,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CK": { "address": "0x06012c8cf97BEaD5deAe237070F9587f8E7A266d", @@ -2870,10 +4288,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CLB": { "address": "0xb1c1Cb8C7c1992dba24e628bF7d38E71daD46aeB", @@ -2888,10 +4316,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CLL": { "address": "0x3dC9a42fa7Afe57BE03c58fD7F4411b1E466C508", @@ -2906,10 +4344,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CLN": { "address": "0x4162178B78D6985480A308B2190EE5517460406D", @@ -2924,10 +4372,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CLP": { "address": "0x7FCE2856899a6806eeEf70807985fc7554C66340", @@ -2941,10 +4399,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CMBT": { "address": "0x3EDD235C3E840C1F29286B2e39370a255C7B6fdb", @@ -2958,10 +4426,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CMC": { "address": "0x7e667525521cF61352e2E01b50FaaaE7Df39749a", @@ -2975,10 +4453,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CMT": { "address": "0xf85fEea2FdD81d51177F6b8F35F0e6734Ce45F5F", @@ -2993,10 +4481,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CNB": { "address": "0xEBf2F9E8De960f64ec0fDCDa6Cb282423133347B", @@ -3010,27 +4508,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CND": { "address": "0xd4c435F5B09F855C3317c8524Cb1F586E42795fa", "links": { "Homepage": "https://cindicator.com" }, - "marketcap_usd": 27582972, + "marketcap_usd": 20677043, "name": "Cindicator", "network": "eth", "shortcut": "CND", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CO2": { "address": "0xB4b1D2C217EC0776584CE08D3DD98F90EDedA44b", @@ -3045,10 +4563,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CO2Bit": { "address": "0x574B36BceD443338875d171CC377E691f7d4F887", @@ -3062,10 +4590,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:COB": { "address": "0xb2F7EB1f2c37645bE61d73953035360e768D81E6", @@ -3080,10 +4618,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:COFI": { "address": "0x3136eF851592aCf49CA4C825131E364170FA32b3", @@ -3098,10 +4646,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:COIL": { "address": "0x0C91B015AbA6f7B4738dcD36E7410138b29ADC29", @@ -3116,10 +4674,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:COIN": { "address": "0x5e8F855966D638135a968861E80DdA722291B06d", @@ -3127,17 +4695,27 @@ "Github": "https://github.com/CoinvestHQ", "Homepage": "https://coinve.st" }, - "marketcap_usd": 71310, + "marketcap_usd": 64881, "name": "Coinvest V2 Token", "network": "eth", "shortcut": "COIN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CORI": { "address": "0x725B190Bc077FFde17Cf549AA8ba25e298550B18", @@ -3151,27 +4729,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:COV": { "address": "0xE2FB6529EF566a080e6d23dE0bd351311087D567", "links": { "Homepage": "https://covesting.io/" }, - "marketcap_usd": 13743158, + "marketcap_usd": 11184871, "name": "Covesting", "network": "eth", "shortcut": "COV", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CPEX": { "address": "0xb787d4eAc8899730bb8C57fc3c998c49c5244ec0", @@ -3186,10 +4784,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CPLO": { "address": "0x7064aAb39A0Fcf7221c3396719D0917a65E35515", @@ -3197,17 +4805,27 @@ "Github": "https://github.com/Cpollo", "Homepage": "https://cpollo.info/" }, - "marketcap_usd": 1177694, + "marketcap_usd": 977051, "name": "CPOLLO", "network": "eth", "shortcut": "CPLO", "t1_enabled": "soon", "t2_enabled": "soon", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CPY": { "address": "0xf44745fBd41F6A1ba151df190db0564c5fCc4410", @@ -3215,17 +4833,27 @@ "Github": "https://github.com/aditus", "Homepage": "https://copytrack.io" }, - "marketcap_usd": 2195766, + "marketcap_usd": 1359495, "name": "COPYTRACK", "network": "eth", "shortcut": "CPY", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CR7": { "address": "0x7F585B9130c64e9e9F470b618A7badD03D79cA7E", @@ -3240,10 +4868,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CRB": { "address": "0xAef38fBFBF932D1AeF3B808Bc8fBd8Cd8E1f8BC5", @@ -3257,10 +4895,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CRED": { "address": "0x672a1AD4f667FB18A333Af13667aa0Af1F5b5bDD", @@ -3275,27 +4923,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CREDO": { "address": "0x4E0603e2A27A30480E5e3a4Fe548e29EF12F64bE", "links": { "Homepage": "https://bitbounce.io" }, - "marketcap_usd": 19958643, + "marketcap_usd": 19529599, "name": "Credo / Bitbounce", "network": "eth", "shortcut": "CREDO", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CRGO": { "address": "0xf49CDD50aD408d387d611F88A647179C3de3492b", @@ -3310,10 +4978,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CRMT": { "address": "0x9238bfB781A55eACC3Cf05F7DF94038c198CD9B9", @@ -3327,10 +5005,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CRPT": { "address": "0x80A7E048F37A50500351C204Cb407766fA3baE7f", @@ -3344,10 +5032,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CRT": { "address": "0xF0da1186a4977226b9135d0613ee72e229EC3F4d", @@ -3361,10 +5059,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CTF": { "address": "0x4545750F39aF6Be4F237B6869D4EccA928Fd5A85", @@ -3379,10 +5087,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CTG": { "address": "0xC87c5dD86A3d567fF28701886fB0745aaa898da4", @@ -3397,10 +5115,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CTGC": { "address": "0x9E7D29bd499B6c7da2a5B2EaFCF4A39d3BD845D1", @@ -3415,10 +5143,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CTT": { "address": "0xE3Fa177AcecfB86721Cf6f9f4206bd3Bd672D7d5", @@ -3432,10 +5170,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CTX": { "address": "0x662aBcAd0b7f345AB7FfB1b1fbb9Df7894f18e66", @@ -3449,10 +5197,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CVC": { "address": "0x41e5560054824eA6B0732E656E3Ad64E20e94E45", @@ -3466,10 +5224,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CXC": { "address": "0x2134057C0b461F898D375Cead652Acae62b59541", @@ -3484,10 +5252,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CXO": { "address": "0xb6EE9668771a79be7967ee29a63D4184F8097143", @@ -3495,51 +5273,81 @@ "Github": "https://github.com/cargoxio", "Homepage": "https://cargox.io" }, - "marketcap_usd": 3698018, + "marketcap_usd": 3008537, "name": "CargoX", "network": "eth", "shortcut": "CXO", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CYFM": { "address": "0x3f06B5D78406cD97bdf10f5C420B241D32759c80", "links": { "Homepage": "https://cyberfmradio.com" }, - "marketcap_usd": 482923, + "marketcap_usd": 377420, "name": "CyberFM", "network": "eth", "shortcut": "CYFM", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:CryptoCarbon": { "address": "0xE4c94d45f7Aef7018a5D66f44aF780ec6023378e", "links": { "Homepage": "https://ccrb.io" }, - "marketcap_usd": 420221, + "marketcap_usd": 304481, "name": "CryptoCarbon", "network": "eth", "shortcut": "CryptoCarbon", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:DAB": { "address": "0xdab0C31BF34C897Fb0Fe90D12EC9401caf5c36Ec", @@ -3553,44 +5361,74 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:DADI": { "address": "0xFb2f26F266Fb2805a387230f2aa0a331b4d96Fba", "links": { "Homepage": "https://dadi.cloud" }, - "marketcap_usd": 5289941, + "marketcap_usd": 4256998, "name": "DADI", "network": "eth", "shortcut": "DADI", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:DALC": { "address": "0x07D9e49Ea402194bf48A8276dAfB16E4eD633317", "links": { "Homepage": "http://www.dalecoin.org" }, - "marketcap_usd": 33560, + "marketcap_usd": 16771, "name": "DaleCoin", "network": "eth", "shortcut": "DALC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:DAN": { "address": "0x9B70740e708a083C6fF38Df52297020f5DfAa5EE", @@ -3605,10 +5443,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:DAO": { "address": "0xBB9bc244D798123fDe783fCc1C72d3Bb8C189413", @@ -3622,10 +5470,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:DAT": { "address": "0x81c9151de0C8bafCd325a57E3dB5a5dF1CEBf79c", @@ -3639,10 +5497,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:DATABroker": { "address": "0x1B5f21ee98eed48d292e8e2d3Ed82b40a9728A22", @@ -3657,10 +5525,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:DATACoin": { "address": "0x0Cf0Ee63788A0849fE5297F3407f701E122cC023", @@ -3668,17 +5546,27 @@ "Github": "https://github.com/streamr-dev", "Homepage": "https://www.streamr.com" }, - "marketcap_usd": 69170, + "marketcap_usd": 56620, "name": "DATACoin", "network": "eth", "shortcut": "DATACoin", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:DAV": { "address": "0xd82Df0ABD3f51425Eb15ef7580fDA55727875f14", @@ -3693,10 +5581,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:DAXT": { "address": "0x61725f3db4004AFE014745B21DAb1E1677CC328b", @@ -3710,10 +5608,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:DAY": { "address": "0xE814aeE960a85208C3dB542C53E7D4a6C8D5f60F", @@ -3728,10 +5636,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:DCA": { "address": "0x386Faa4703a34a7Fdb19Bec2e14Fd427C9638416", @@ -3746,10 +5664,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:DCC": { "address": "0xFFa93Aacf49297D51E211817452839052FDFB961", @@ -3757,17 +5685,27 @@ "Github": "https://github.com/DistributedBanking/DCC", "Homepage": "http://dcc.finance" }, - "marketcap_usd": 6038478, + "marketcap_usd": 4050197, "name": "Distributed Credit Chain", "network": "eth", "shortcut": "DCC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:DCL": { "address": "0x399A0e6FbEb3d74c85357439f4c8AeD9678a5cbF", @@ -3781,10 +5719,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:DCN": { "address": "0x08d32b0da63e2C3bcF8019c9c5d849d7a9d791e6", @@ -3792,17 +5740,27 @@ "Github": "https://github.com/Dentacoin", "Homepage": "https://dentacoin.com" }, - "marketcap_usd": 57603837, + "marketcap_usd": 42714695, "name": "Dentacoin", "network": "eth", "shortcut": "DCN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:DDF": { "address": "0xcC4eF9EEAF656aC1a2Ab886743E98e97E090ed38", @@ -3817,10 +5775,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:DEB": { "address": "0x151202C9c18e495656f372281F493EB7698961D5", @@ -3834,10 +5802,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:DEEZ": { "address": "0x075c60EE2cD308ff47873b38Bd9A0Fa5853382c4", @@ -3852,27 +5830,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:DENT": { "address": "0x3597bfD533a99c9aa083587B074434E61Eb0A258", "links": { "Homepage": "https://www.dentwireless.com" }, - "marketcap_usd": 34279543, + "marketcap_usd": 22929311, "name": "DENT", "network": "eth", "shortcut": "DENT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:DGPT": { "address": "0xf6cFe53d6FEbaEEA051f400ff5fc14F0cBBDacA1", @@ -3887,10 +5885,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:DGS": { "address": "0x6aEDbF8dFF31437220dF351950Ba2a3362168d1b", @@ -3898,17 +5906,27 @@ "Github": "https://github.com/dragonglasscom", "Homepage": "https://dragonglass.com/" }, - "marketcap_usd": 88289, + "marketcap_usd": 68572, "name": "Dragonglass", "network": "eth", "shortcut": "DGS", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:DGTX": { "address": "0x1C83501478f1320977047008496DACBD60Bb15ef", @@ -3923,10 +5941,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:DGX": { "address": "0x4f3AfEC4E5a3F2A6a1A411DEF7D7dFe50eE057bF", @@ -3934,17 +5962,27 @@ "Github": "https://github.com/DigixGlobal", "Homepage": "https://digix.global" }, - "marketcap_usd": 2914438, + "marketcap_usd": 3134017, "name": "Digix Gold Token", "network": "eth", "shortcut": "DGX", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:DGX1": { "address": "0x55b9a11c2e8351b4Ffc7b11561148bfaC9977855", @@ -3959,27 +5997,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:DICE": { "address": "0x2e071D2966Aa7D8dECB1005885bA1977D6038A65", "links": { "Homepage": "https://etheroll.com" }, - "marketcap_usd": 3714192, + "marketcap_usd": 2542389, "name": "Etheroll", "network": "eth", "shortcut": "DICE", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:DIVX": { "address": "0x13f11C9905A08ca76e3e853bE63D4f0944326C72", @@ -3993,10 +6051,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:DLT": { "address": "0x07e3c70653548B04f0A75970C1F81B4CBbFB606f", @@ -4010,10 +6078,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:DMT": { "address": "0x2ccbFF3A042c68716Ed2a2Cb0c544A9f1d1935E1", @@ -4028,10 +6106,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:DNT": { "address": "0x0AbdAce70D3790235af448C88547603b945604ea", @@ -4046,10 +6134,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:DNX": { "address": "0xE43E2041dc3786e166961eD9484a5539033d10fB", @@ -4064,10 +6162,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:DPP": { "address": "0x01b3Ec4aAe1B8729529BEB4965F27d008788B0EB", @@ -4081,10 +6189,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:DRGN": { "address": "0x419c4dB4B9e25d6Db2AD9691ccb832C8D9fDA05E", @@ -4099,10 +6217,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:DRVH": { "address": "0x62D4c04644314F35868Ba4c65cc27a77681dE7a9", @@ -4117,10 +6245,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:DSC": { "address": "0x1e09BD8Cadb441632e441Db3e1D79909EE0A2256", @@ -4134,10 +6272,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:DSCP": { "address": "0x03e3f0c25965f13DbbC58246738C183E27b26a56", @@ -4152,10 +6300,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:DTH": { "address": "0x5adc961D6AC3f7062D2eA45FEFB8D8167d44b190", @@ -4163,17 +6321,27 @@ "Github": "https://github.com/dethertech", "Homepage": "https://dether.io" }, - "marketcap_usd": 985353, + "marketcap_usd": 864544, "name": "dether", "network": "eth", "shortcut": "DTH", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:DTR": { "address": "0xd234BF2410a0009dF9c3C63b610c09738f18ccD7", @@ -4187,10 +6355,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:DTT": { "address": "0xf9F7c29CFdf19FCf1f2AA6B84aA367Bcf1bD1676", @@ -4205,10 +6383,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:Devcon2 Token": { "address": "0xdd94De9cFE063577051A5eb7465D08317d8808B6", @@ -4222,10 +6410,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:EAGLE": { "address": "0x994f0DffdbaE0BbF09b652D6f11A493fd33F42B9", @@ -4240,10 +6438,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ECN": { "address": "0xa578aCc0cB7875781b7880903F4594D13cFa8B98", @@ -4257,10 +6465,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ECO2": { "address": "0x17F93475d2A978f527c3f7c44aBf44AdfBa60D5C", @@ -4274,10 +6492,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:EDC": { "address": "0xFA1DE2Ee97e4c10C94C91Cb2b5062b89Fb140b82", @@ -4291,44 +6519,74 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:EDG": { "address": "0x08711D3B02C8758F2FB3ab4e80228418a7F8e39c", "links": { "Homepage": "https://edgeless.io" }, - "marketcap_usd": 8276174, + "marketcap_usd": 5578115, "name": "Edgeless", "network": "eth", "shortcut": "EDG", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:EDO": { "address": "0xCeD4E93198734dDaFf8492d525Bd258D49eb388E", "links": { "Homepage": "https://eidoo.io" }, - "marketcap_usd": 30451730, + "marketcap_usd": 24327547, "name": "Eidoo", "network": "eth", "shortcut": "EDO", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:EDR": { "address": "0xc528c28FEC0A90C083328BC45f587eE215760A0F", @@ -4343,10 +6601,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:EHT": { "address": "0xf9F0FC7167c311Dd2F1e21E9204F87EBA9012fB2", @@ -4361,10 +6629,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ELF": { "address": "0xbf2179859fc6D5BEE9Bf9158632Dc51678a4100e", @@ -4379,10 +6657,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ELIX": { "address": "0xc8C6A31A4A806d3710A7B38b7B296D2fABCCDBA8", @@ -4396,10 +6684,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ELTCOIN": { "address": "0x44197A4c44D6A059297cAf6be4F7e172BD56Caaf", @@ -4407,17 +6705,27 @@ "Github": "https://github.com/eltcoin", "Homepage": "http://www.eltcoin.tech/" }, - "marketcap_usd": 67261, + "marketcap_usd": 65720, "name": "ELTCOIN", "network": "eth", "shortcut": "ELTCOIN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ELY": { "address": "0xa95592DCFfA3C080B4B40E459c5f5692F67DB7F8", @@ -4432,10 +6740,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:EMON": { "address": "0xb67b88a25708a35AE7c2d736D398D268CE4f7F83", @@ -4450,10 +6768,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:EMONT": { "address": "0x95dAaaB98046846bF4B2853e23cba236fa394A31", @@ -4467,10 +6795,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:EMT": { "address": "0x9501BFc48897DCEEadf73113EF635d2fF7ee4B97", @@ -4485,10 +6823,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:EMV": { "address": "0xB802b24E0637c2B87D2E8b7784C055BBE921011a", @@ -4502,10 +6850,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ENC": { "address": "0x039F5050dE4908f9b5ddF40A4F3Aa3f329086387", @@ -4520,10 +6878,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ENG": { "address": "0xf0Ee6b27b759C9893Ce4f094b49ad28fd15A23e4", @@ -4531,17 +6899,27 @@ "Github": "https://github.com/enigmampc", "Homepage": "https://enigma.co/" }, - "marketcap_usd": 34979847, + "marketcap_usd": 25475967, "name": "Enigma", "network": "eth", "shortcut": "ENG", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ENJ": { "address": "0xF629cBd94d3791C9250152BD8dfBDF380E2a3B9c", @@ -4556,10 +6934,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ENTRP": { "address": "0x5BC7e5f0Ab8b2E10D2D0a3F21739FCe62459aeF3", @@ -4574,10 +6962,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:EPX": { "address": "0x35BAA72038F127f9f8C8f9B491049f64f377914d", @@ -4592,10 +6990,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ERT": { "address": "0x92A5B04D0ED5D94D7a193d1d334D3D16996f4E13", @@ -4603,17 +7011,27 @@ "Github": "https://github.com/Krishtopa/ContractEristica", "Homepage": "https://eristica.com/" }, - "marketcap_usd": 1145082, + "marketcap_usd": 770330, "name": "Eristica", "network": "eth", "shortcut": "ERT", "t1_enabled": "soon", "t2_enabled": "soon", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ESZ": { "address": "0xe8A1Df958bE379045E2B46a31A98B93A2eCDfDeD", @@ -4628,27 +7046,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ETBS": { "address": "0x1B9743f556D65e757c4c650B4555bAF354cB8bd3", "links": { "Homepage": "https://www.ethbits.com" }, - "marketcap_usd": 921491, + "marketcap_usd": 1003473, "name": "Ethbits", "network": "eth", "shortcut": "ETBS", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ETCH": { "address": "0xDd74a7A3769fA72561B3A69e65968F49748c690c", @@ -4662,10 +7100,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ETHB": { "address": "0x3a26746Ddb79B1B8e4450e3F4FFE3285A307387E", @@ -4679,10 +7127,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ETR": { "address": "0x6927C69fb4daf2043fbB1Cb7b86c5661416bea29", @@ -4697,10 +7155,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:EURT": { "address": "0xAbdf147870235FcFC34153828c769A70B3FAe01F", @@ -4714,10 +7182,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:EVE": { "address": "0x923108a439C4e8C2315c4f6521E5cE95B44e9B4c", @@ -4732,10 +7210,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:EVX": { "address": "0xf3Db5Fa2C66B7aF3Eb0C0b782510816cbe4813b8", @@ -4749,10 +7237,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:EWO": { "address": "0x444997b7e7fC830E20089afea3078cd518fCF2A2", @@ -4767,10 +7265,20 @@ "t1_enabled": "soon", "t2_enabled": "soon", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:EXMR": { "address": "0xc98e0639c6d2EC037A615341c369666B110e80E5", @@ -4778,17 +7286,27 @@ "Github": "https://github.com/eXMRcoin/", "Homepage": "https://exmr.io/" }, - "marketcap_usd": 545617, + "marketcap_usd": 333443, "name": "eXMRcoin", "network": "eth", "shortcut": "EXMR", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:E\u20b9": { "address": "0xb67734521eAbBE9C773729dB73E16CC2dfb20A58", @@ -4803,10 +7321,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:FABA": { "address": "0x0a1D2fF7156a48131553CF381F220bbedB4eFa37", @@ -4820,10 +7348,20 @@ "t1_enabled": "soon", "t2_enabled": "soon", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:FAM": { "address": "0x190e569bE071F40c704e15825F285481CB74B6cC", @@ -4838,10 +7376,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:FAN": { "address": "0x90162f41886c0946D09999736f1C15c8a105A421", @@ -4855,10 +7403,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:FKX": { "address": "0x009e864923b49263c7F10D19B7f8Ab7a9A5AAd33", @@ -4866,17 +7424,27 @@ "Github": "https://github.com/FortKnoxster", "Homepage": "https://fortknoxster.com" }, - "marketcap_usd": 457887, + "marketcap_usd": 289576, "name": "Knoxstertoken", "network": "eth", "shortcut": "FKX", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:FLIXX": { "address": "0xf04a8ac553FceDB5BA99A64799155826C136b0Be", @@ -4890,10 +7458,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:FLP": { "address": "0x3a1Bda28AdB5B0a812a7CF10A1950c920F79BcD3", @@ -4908,10 +7486,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:FLR": { "address": "0x9aeFBE0b3C3ba9Eab262CB9856E8157AB7648e09", @@ -4925,10 +7513,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:FLUZ": { "address": "0x954b5De09A55e59755aCBda29e1Eb74A45D30175", @@ -4942,10 +7540,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:FLX": { "address": "0x70b147E01E9285E7cE68B9BA437Fe3a9190E756a", @@ -4959,10 +7567,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:FND": { "address": "0x4DF47B4969B2911C966506E3592c41389493953b", @@ -4970,17 +7588,27 @@ "Github": "https://github.com/FundRequest", "Homepage": "https://fundrequest.io" }, - "marketcap_usd": 292232, + "marketcap_usd": 256256, "name": "FundRequest", "network": "eth", "shortcut": "FND", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:FRD": { "address": "0x0ABeFb7611Cb3A01EA3FaD85f33C3C934F8e2cF4", @@ -4994,10 +7622,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:FTR": { "address": "0x2023DCf7c438c8C8C0B0F28dBaE15520B4f3Ee20", @@ -5011,10 +7649,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:FTT": { "address": "0x2AEC18c5500f21359CE1BEA5Dc1777344dF4C0Dc", @@ -5029,10 +7677,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:FTXT": { "address": "0x41875C2332B0877cDFAA699B641402b7D4642c32", @@ -5040,17 +7698,27 @@ "Github": "https://github.com/futuraxproject", "Homepage": "https://futurax.global" }, - "marketcap_usd": 410960, + "marketcap_usd": 389120, "name": "FUTURAX", "network": "eth", "shortcut": "FTXT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:FUEL": { "address": "0xEA38eAa3C86c8F9B751533Ba2E562deb9acDED40", @@ -5065,27 +7733,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:FUN": { "address": "0x419D0d8BdD9aF5e606Ae2232ed285Aff190E711b", "links": { "Homepage": "https://funfair.io" }, - "marketcap_usd": 48079596, + "marketcap_usd": 32554360, "name": "Funfair", "network": "eth", "shortcut": "FUN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:FXC": { "address": "0xc92D6E3E64302C59d734f3292E2A13A13D7E1817", @@ -5093,17 +7781,27 @@ "Github": "https://github.com/futuraxproject", "Homepage": "https://futurax.global" }, - "marketcap_usd": 410960, + "marketcap_usd": 389120, "name": "FUTURAX", "network": "eth", "shortcut": "FXC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:FYN": { "address": "0x88FCFBc22C6d3dBaa25aF478C578978339BDe77a", @@ -5117,10 +7815,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:GAM": { "address": "0xF67451Dc8421F0e0afEB52faa8101034ed081Ed9", @@ -5128,17 +7836,27 @@ "Github": "https://github.com/BlockchainLabsNZ/gambit", "Homepage": "http://gambitcrypto.com" }, - "marketcap_usd": 2384595, + "marketcap_usd": 1970035, "name": "Gambit", "network": "eth", "shortcut": "GAM", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:GAVEL": { "address": "0x708876f486e448Ee89eB332bFbC8E593553058b9", @@ -5152,10 +7870,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:GBT": { "address": "0x7585F835ae2d522722d2684323a0ba83401f32f5", @@ -5170,10 +7898,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:GBX": { "address": "0x12fCd6463E66974cF7bBC24FFC4d40d6bE458283", @@ -5187,10 +7925,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:GCP": { "address": "0xdb0F69306FF8F949f258E83f6b87ee5D052d0b23", @@ -5205,10 +7953,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:GEE": { "address": "0x4F4f0Db4de903B88f2B1a2847971E231D54F8fd3", @@ -5223,10 +7981,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:GELD": { "address": "0x24083Bb30072643C3bB90B44B7285860a755e687", @@ -5240,10 +8008,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:GEN": { "address": "0x543Ff227F64Aa17eA132Bf9886cAb5DB55DCAddf", @@ -5251,17 +8029,27 @@ "Github": "https://github.com/daostack", "Homepage": "https://daostack.io" }, - "marketcap_usd": 3452356, + "marketcap_usd": 1981451, "name": "DAOstack", "network": "eth", "shortcut": "GEN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:GET": { "address": "0x8a854288a5976036A725879164Ca3e91d30c6A1B", @@ -5276,10 +8064,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:GIF": { "address": "0xFcD862985628b254061F7A918035B80340D045d3", @@ -5293,10 +8091,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:GIM": { "address": "0xaE4f56F072c34C0a65B3ae3E4DB797D831439D93", @@ -5311,10 +8119,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:GMT": { "address": "0xb3Bd49E28f8F832b8d1E246106991e546c323502", @@ -5328,10 +8146,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:GNO": { "address": "0x6810e776880C02933D47DB1b9fc05908e5386b96", @@ -5345,10 +8173,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:GOLDX": { "address": "0xeAb43193CF0623073Ca89DB9B712796356FA7414", @@ -5363,27 +8201,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:GRID": { "address": "0x12B19D3e2ccc14Da04FAe33e63652ce469b3F2FD", "links": { "Homepage": "https://gridplus.io/token-sale" }, - "marketcap_usd": 6411555, + "marketcap_usd": 3177302, "name": "GRID", "network": "eth", "shortcut": "GRID", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:GROW": { "address": "0x0a9A9ce600D08BF9b76F49FA4e7b38A67EBEB1E6", @@ -5398,10 +8256,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:GSE": { "address": "0xe530441f4f73bDB6DC2fA5aF7c3fC5fD551Ec838", @@ -5415,10 +8283,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:GTC": { "address": "0xB70835D7822eBB9426B56543E391846C107bd32C", @@ -5433,10 +8311,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:GTKT": { "address": "0x025abAD9e518516fdaAFBDcdB9701b37fb7eF0FA", @@ -5451,10 +8339,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:GTO": { "address": "0xC5bBaE50781Be1669306b9e001EFF57a2957b09d", @@ -5462,17 +8360,27 @@ "Github": "https://github.com/GIFTO-io", "Homepage": "https://gifto.io/" }, - "marketcap_usd": 25134857, + "marketcap_usd": 17022996, "name": "Gifto", "network": "eth", "shortcut": "GTO", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:GULD": { "address": "0x9847345de8b614c956146bbea549336d9C8d26b6", @@ -5487,10 +8395,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:GVT": { "address": "0x103c3A209da59d3E7C4A89307e66521e081CFDF0", @@ -5498,17 +8416,27 @@ "Github": "https://github.com/GenesisVision", "Homepage": "https://genesis.vision" }, - "marketcap_usd": 29230888, + "marketcap_usd": 26174120, "name": "Genesis Vision", "network": "eth", "shortcut": "GVT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:GXC": { "address": "0x58ca3065C0F24C7c96Aee8d6056b5B5deCf9c2f8", @@ -5522,10 +8450,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:GXVC": { "address": "0x22F0AF8D78851b72EE799e05F54A77001586B18A", @@ -5540,10 +8478,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:GZE": { "address": "0x8C65e992297d5f092A756dEf24F4781a280198Ff", @@ -5557,10 +8505,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:GZR": { "address": "0xE638dc39b6aDBEE8526b5C22380b4b45dAf46d8e", @@ -5575,10 +8533,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:HAPPY": { "address": "0x5A567e28dbFa2bBD3ef13C0a01be114745349657", @@ -5592,10 +8560,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:HAT": { "address": "0x9002D4485b7594e3E850F0a206713B305113f69e", @@ -5609,10 +8587,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:HAV": { "address": "0xC011A72400E58ecD99Ee497CF89E3775d4bd732F", @@ -5620,17 +8608,27 @@ "Github": "https://github.com/havven/havven", "Homepage": "https://havven.io" }, - "marketcap_usd": 8724092, + "marketcap_usd": 5771514, "name": "Havven", "network": "eth", "shortcut": "HAV", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:HDG": { "address": "0xfFe8196bc259E8dEDc544d935786Aa4709eC3E64", @@ -5644,10 +8642,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:HGT": { "address": "0xba2184520A1cC49a6159c57e61E1844E085615B6", @@ -5662,10 +8670,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:HIBT": { "address": "0x9bb1Db1445b83213a56d90d331894b3f26218e4e", @@ -5679,10 +8697,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:HIG": { "address": "0xa9240fBCAC1F0b9A6aDfB04a53c8E3B0cC1D1444", @@ -5697,10 +8725,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:HKG": { "address": "0x14F37B574242D366558dB61f3335289a5035c506", @@ -5714,10 +8752,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:HKY": { "address": "0x88aC94D5d175130347Fc95E109d77AC09dbF5ab7", @@ -5732,10 +8780,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:HLX": { "address": "0x66eb65D7Ab8e9567ba0fa6E37c305956c5341574", @@ -5749,10 +8807,20 @@ "t1_enabled": "soon", "t2_enabled": "soon", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:HMQ": { "address": "0xcbCC0F036ED4788F63FC0fEE32873d6A7487b908", @@ -5766,27 +8834,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:HODL": { "address": "0xb45d7Bc4cEBcAB98aD09BABDF8C818B2292B672c", "links": { "Homepage": "https://github.com/arachnid/hodlcoin" }, - "marketcap_usd": 117968, + "marketcap_usd": 92678, "name": "HODLCoin", "network": "eth", "shortcut": "HODL", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:HORSE": { "address": "0x5B0751713b2527d7f002c0c4e2a37e1219610A6B", @@ -5801,10 +8889,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:HST": { "address": "0x554C20B7c486beeE439277b4540A434566dC4C02", @@ -5818,10 +8916,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:HVN": { "address": "0xC0Eb85285d83217CD7c891702bcbC0FC401E2D9D", @@ -5836,10 +8944,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:HYDRO": { "address": "0xEBBdf302c940c6bfd49C6b165f457fdb324649bc", @@ -5854,10 +8972,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:IAD": { "address": "0xC1E2097d788d33701BA3Cc2773BF67155ec93FC4", @@ -5872,10 +9000,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ICE": { "address": "0x5a84969bb663fb64F6d015DcF9F622Aedc796750", @@ -5889,10 +9027,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ICO": { "address": "0xa33e729bf4fdeb868B534e1f20523463D9C46bEe", @@ -5906,44 +9054,74 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ICOS": { "address": "0x014B50466590340D41307Cc54DCee990c8D58aa8", "links": { "Homepage": "https://icos.icobox.io" }, - "marketcap_usd": 1202475, + "marketcap_usd": 0, "name": "ICOS", "network": "eth", "shortcut": "ICOS", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ICX": { "address": "0xb5A5F22694352C15B00323844aD545ABb2B11028", "links": { "Homepage": "https://www.icon.foundation" }, - "marketcap_usd": 213279528, + "marketcap_usd": 147826217, "name": "ICON", "network": "eth", "shortcut": "ICX", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:IDEA": { "address": "0x814CAfd4782d2e728170FDA68257983F03321c58", @@ -5957,27 +9135,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:IFT": { "address": "0x7654915A1b82D6D2D0AFc37c52Af556eA8983c7E", "links": { "Homepage": "https://investfeed.com" }, - "marketcap_usd": 1296633, + "marketcap_usd": 731525, "name": "InvestFeed", "network": "eth", "shortcut": "IFT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:IIC": { "address": "0x16662F73dF3e79e54c6c5938b4313f92C524C120", @@ -5991,10 +9189,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:IKB": { "address": "0x88AE96845e157558ef59e9Ff90E766E22E480390", @@ -6009,10 +9217,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:IMC": { "address": "0xe3831c5A982B279A198456D577cfb90424cb6340", @@ -6026,10 +9244,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:IND": { "address": "0xf8e386EDa857484f5a12e4B5DAa9984E06E73705", @@ -6043,10 +9271,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:INS": { "address": "0x5B2e4a700dfBc560061e957edec8F6EeEb74a320", @@ -6060,27 +9298,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:INSTAR": { "address": "0xc72fe8e3Dd5BeF0F9f31f259399F301272eF2a2D", "links": { "Homepage": "https://insights.network" }, - "marketcap_usd": 1316704, + "marketcap_usd": 1039412, "name": "Insights Network", "network": "eth", "shortcut": "INSTAR", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:INXT": { "address": "0xa8006C4ca56F24d6836727D106349320dB7fEF82", @@ -6088,34 +9346,54 @@ "Github": "https://github.com/Internxt/", "Homepage": "https://internxt.com/" }, - "marketcap_usd": 2045786, + "marketcap_usd": 1612101, "name": "Internxt", "network": "eth", "shortcut": "INXT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:IOST": { "address": "0xFA1a856Cfa3409CFa145Fa4e20Eb270dF3EB21ab", "links": { "Homepage": "https://iost.io/" }, - "marketcap_usd": 103135291, + "marketcap_usd": 71743541, "name": "IOSToken", "network": "eth", "shortcut": "IOST", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:IOTX": { "address": "0x6fB3e0A217407EFFf7Ca062D46c26E5d60a14d69", @@ -6130,10 +9408,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:IPL": { "address": "0x64CdF819d3E75Ac8eC217B3496d7cE167Be42e80", @@ -6148,10 +9436,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:IPSX": { "address": "0x001F0aA5dA15585e5b2305DbaB2bac425ea71007", @@ -6165,10 +9463,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:IQN": { "address": "0x0DB8D8b76BC361bAcbB72E2C491E06085A97Ab31", @@ -6176,17 +9484,27 @@ "Github": "https://github.com/iqeon", "Homepage": "https://iqeon.io/" }, - "marketcap_usd": 442032, + "marketcap_usd": 389945, "name": "IQeon", "network": "eth", "shortcut": "IQN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:IST34": { "address": "0x0cF713b11C9b986EC40D65bD4F7fbd50F6ff2d64", @@ -6201,10 +9519,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ITC": { "address": "0x5E6b6d9aBAd9093fdc861Ea1600eBa1b355Cd940", @@ -6212,17 +9540,27 @@ "Github": "https://github.com/IoTChainCode", "Homepage": "https://iotchain.io/" }, - "marketcap_usd": 10554800, + "marketcap_usd": 7697584, "name": "IoT Chain", "network": "eth", "shortcut": "ITC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ITT": { "address": "0x0aeF06DcCCC531e581f0440059E6FfCC206039EE", @@ -6237,10 +9575,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:IXT": { "address": "0xfcA47962D45ADFdfd1Ab2D972315dB4ce7CCf094", @@ -6254,10 +9602,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:IoT": { "address": "0xC34B21f6F8e51cC965c2393B3ccFa3b82BEb2403", @@ -6271,10 +9629,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:J8T": { "address": "0x0D262e5dC4A06a0F1c90cE79C7a60C09DfC884E4", @@ -6289,10 +9657,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:JET": { "address": "0x8727c112C712c4a03371AC87a74dD6aB104Af768", @@ -6306,10 +9684,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:JNT": { "address": "0xa5Fd1A791C4dfcaacC963D4F73c6Ae5824149eA7", @@ -6324,10 +9712,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:JOY": { "address": "0xDDe12a12A6f67156e0DA672be05c374e1B0a3e57", @@ -6341,10 +9739,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:KICK": { "address": "0x27695E09149AdC738A978e9A678F99E4c39e9eb9", @@ -6359,10 +9767,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:KIN": { "address": "0x818Fc6C2Ec5986bc6E2CBf00939d90556aB12ce5", @@ -6370,17 +9788,27 @@ "Github": "https://github.com/kikinteractive/kin-token", "Homepage": "https://kin.kik.com" }, - "marketcap_usd": 27757046, + "marketcap_usd": 23858134, "name": "Kin Foundation", "network": "eth", "shortcut": "KIN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:KNC": { "address": "0xdd974D5C2e2928deA5F71b9825b8b646686BD200", @@ -6388,17 +9816,27 @@ "Github": "https://github.com/KyberNetwork", "Homepage": "https://kyber.network" }, - "marketcap_usd": 38769207, + "marketcap_usd": 26193706, "name": "Kyber Network", "network": "eth", "shortcut": "KNC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:KPR": { "address": "0xb5C33F965C8899D255c34CDD2A3efA8AbCbB3DeA", @@ -6413,10 +9851,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:KRL": { "address": "0x464eBE77c293E473B48cFe96dDCf88fcF7bFDAC0", @@ -6424,17 +9872,27 @@ "Github": "https://github.com/Cryptense/", "Homepage": "https://kryll.io/" }, - "marketcap_usd": 703648, + "marketcap_usd": 546148, "name": "Kryll", "network": "eth", "shortcut": "KRL", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:KUE": { "address": "0xdf1338FbAfe7aF1789151627B886781ba556eF9a", @@ -6448,10 +9906,20 @@ "t1_enabled": "soon", "t2_enabled": "soon", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:KZN": { "address": "0x9541FD8B9b5FA97381783783CeBF2F5fA793C262", @@ -6465,10 +9933,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:LA": { "address": "0xE50365f5D679CB98a1dd62D6F6e58e59321BcdDf", @@ -6476,17 +9954,27 @@ "Github": "https://github.com/latoken", "Homepage": "https://latoken.com/" }, - "marketcap_usd": 6015419, + "marketcap_usd": 4526952, "name": "LATOKEN", "network": "eth", "shortcut": "LA", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:LALA": { "address": "0xfD107B473AB90e8Fbd89872144a3DC92C40Fa8C9", @@ -6500,27 +9988,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:LDC": { "address": "0x5102791cA02FC3595398400BFE0e33d7B6C82267", "links": { "Homepage": "https://www.leadcoin.network/" }, - "marketcap_usd": 410028, + "marketcap_usd": 316296, "name": "LEADCOIN", "network": "eth", "shortcut": "LDC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:LEND": { "address": "0x80fB784B7eD66730e8b1DBd9820aFD29931aab03", @@ -6535,10 +10043,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:LFR": { "address": "0xc798cd1c49db0E297312E4c682752668CE1dB2AD", @@ -6552,10 +10070,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:LGO": { "address": "0x123aB195DD38B1b40510d467a6a359b201af056f", @@ -6569,10 +10097,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:LGR": { "address": "0x2eb86e8fC520E0F6Bb5D9Af08F924fe70558Ab89", @@ -6586,10 +10124,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:LIF": { "address": "0xEB9951021698B42e4399f9cBb6267Aa35F82D59D", @@ -6604,27 +10152,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:LIFE": { "address": "0xfF18DBc487b4c2E3222d115952bABfDa8BA52F5F", "links": { "Homepage": "http://www.lifelabs.io" }, - "marketcap_usd": 1321474, + "marketcap_usd": 1111570, "name": "LIFE", "network": "eth", "shortcut": "LIFE", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:LINK (Chainlink)": { "address": "0x514910771AF9Ca656af840dff83E8264EcF986CA", @@ -6638,10 +10206,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:LIVE": { "address": "0x24A77c1F17C547105E14813e517be06b0040aa76", @@ -6655,10 +10233,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:LND": { "address": "0x0947b0e6D821378805c9598291385CE7c791A6B2", @@ -6666,34 +10254,54 @@ "Github": "https://github.com/lendingblock", "Homepage": "https://lendingblock.com" }, - "marketcap_usd": 3397540, + "marketcap_usd": 3184800, "name": "Lendingblock", "network": "eth", "shortcut": "LND", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:LOC": { "address": "0x5e3346444010135322268a4630d2ED5F8D09446c", "links": { "Homepage": "https://LockChain.co" }, - "marketcap_usd": 15093425, + "marketcap_usd": 9440208, "name": "LockChain", "network": "eth", "shortcut": "LOC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:LOCI": { "address": "0x9c23D67AEA7B95D80942e3836BCDF7E708A747C2", @@ -6701,17 +10309,27 @@ "Github": "http://github.com/locipro/loci-coin-sale", "Homepage": "https://locipro.com" }, - "marketcap_usd": 829458, + "marketcap_usd": 669663, "name": "LOCIcoin", "network": "eth", "shortcut": "LOCI", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:LOCUS": { "address": "0xC64500DD7B0f1794807e67802F8Abbf5F8Ffb054", @@ -6725,10 +10343,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:LOK": { "address": "0x21aE23B882A340A22282162086bC98D3E2B73018", @@ -6742,10 +10370,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:LOOK": { "address": "0x253C7dd074f4BaCb305387F922225A4f737C08bd", @@ -6759,10 +10397,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:LOOM": { "address": "0xA4e8C3Ec456107eA67d3075bF9e3DF3A75823DB0", @@ -6777,10 +10425,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:LPT": { "address": "0x58b6A8A3302369DAEc383334672404Ee733aB239", @@ -6795,10 +10453,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:LRC": { "address": "0xEF68e7C694F40c8202821eDF525dE3782458639f", @@ -6812,10 +10480,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:LUC": { "address": "0x5dbe296F97B23C4A6AA6183D73e574D02bA5c719", @@ -6830,10 +10508,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:LUCK": { "address": "0xFB12e3CcA983B9f59D90912Fd17F8D745A8B2953", @@ -6847,10 +10535,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:LUM": { "address": "0xA89b5934863447f6E4Fc53B315a93e873bdA69a3", @@ -6864,10 +10562,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:LUN": { "address": "0xfa05A73FfE78ef8f1a739473e462c54bae6567D9", @@ -6882,10 +10590,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:LYS": { "address": "0xdD41fBd1Ae95C5D9B198174A28e04Be6b3d1aa27", @@ -6900,10 +10618,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:M-ETH": { "address": "0x3f4B726668da46f5e0E75aA5D478ACEc9f38210F", @@ -6917,10 +10645,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:MAD": { "address": "0x5B09A0371C1DA44A8E24D36Bf5DEb1141a84d875", @@ -6934,10 +10672,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:MAN": { "address": "0xe25bCec5D3801cE3a794079BF94adF1B8cCD802D", @@ -6952,10 +10700,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:MANA": { "address": "0x0F5D2fB29fb7d3CFeE444a200298f468908cC942", @@ -6970,10 +10728,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:MART": { "address": "0xfdcc07Ab60660de533b5Ad26e1457b565a9D59Bd", @@ -6987,10 +10755,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:MBRS": { "address": "0x386467F1f3ddbE832448650418311a479EECFC57", @@ -6998,17 +10776,27 @@ "Github": "https://github.com/theembermine", "Homepage": "https://embermine.com/" }, - "marketcap_usd": 73282, + "marketcap_usd": 54529, "name": "Embers", "network": "eth", "shortcut": "MBRS", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:MCI": { "address": "0x138A8752093F4f9a79AaeDF48d4B9248fab93c9C", @@ -7016,17 +10804,27 @@ "Github": "https://github.com/musiconomi/", "Homepage": "https://musiconomi.com/" }, - "marketcap_usd": 182623, + "marketcap_usd": 135234, "name": "Musiconomi", "network": "eth", "shortcut": "MCI", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:MCO": { "address": "0xB63B606Ac810a52cCa15e44bB630fd42D8d1d83d", @@ -7040,10 +10838,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:MDA": { "address": "0x51DB5Ad35C671a87207d88fC11d593AC0C8415bd", @@ -7057,10 +10865,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:MEST": { "address": "0x5B8D43FfdE4a2982B9A5387cDF21D54Ead64Ac8d", @@ -7075,10 +10893,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:MFG": { "address": "0x6710c63432A2De02954fc0f851db07146a6c0312", @@ -7093,10 +10921,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:MFT": { "address": "0xDF2C7238198Ad8B389666574f2d8bc411A4b7428", @@ -7111,27 +10949,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:MFTU": { "address": "0x05D412CE18F24040bB3Fa45CF2C69e506586D8e8", "links": { "Homepage": "https://mftu.net" }, - "marketcap_usd": 31461, + "marketcap_usd": 22618, "name": "Mainstream For The Underground", "network": "eth", "shortcut": "MFTU", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:MGO": { "address": "0x40395044Ac3c0C57051906dA938B54BD6557F212", @@ -7145,10 +11003,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:MKT": { "address": "0x7939882b54fcf0bCAe6b53dEc39Ad6e806176442", @@ -7163,10 +11031,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:MNE": { "address": "0x1a95B271B0535D15fa49932Daba31BA612b52946", @@ -7180,10 +11058,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:MNT": { "address": "0xA9877b1e05D035899131DBd1e403825166D09f92", @@ -7198,10 +11086,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:MNTP": { "address": "0x83cee9e086A77e492eE0bB93C2B0437aD6fdECCc", @@ -7216,10 +11114,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:MOD": { "address": "0x957c30aB0426e0C93CD8241E2c60392d08c6aC8e", @@ -7227,17 +11135,27 @@ "Github": "https://github.com/modum-io", "Homepage": "https://modum.io" }, - "marketcap_usd": 12576567, + "marketcap_usd": 9021894, "name": "Modum", "network": "eth", "shortcut": "MOD", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:MRL": { "address": "0x82125AFe01819Dff1535D0D6276d57045291B6c0", @@ -7252,10 +11170,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:MRP": { "address": "0x21f0F0fD3141Ee9E11B3d7f13a1028CD515f459c", @@ -7269,10 +11197,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:MRV": { "address": "0xAB6CF87a50F17d7F5E1FEaf81B6fE9FfBe8EBF84", @@ -7286,44 +11224,74 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:MSP": { "address": "0x68AA3F232dA9bdC2343465545794ef3eEa5209BD", "links": { "Homepage": "https://mothership.cx" }, - "marketcap_usd": 9265929, + "marketcap_usd": 6796141, "name": "Mothership", "network": "eth", "shortcut": "MSP", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:MTH": { "address": "0xaF4DcE16Da2877f8c9e00544c93B62Ac40631F16", "links": { "Homepage": "http://www.monetha.io" }, - "marketcap_usd": 8077347, + "marketcap_usd": 6250097, "name": "Monetha", "network": "eth", "shortcut": "MTH", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:MTL": { "address": "0xF433089366899D83a9f26A773D59ec7eCF30355e", @@ -7337,10 +11305,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:MTN": { "address": "0x41dBECc1cdC5517C6f76f6a6E836aDbEe2754DE3", @@ -7354,10 +11332,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:MTR": { "address": "0x7FC408011165760eE31bE2BF20dAf450356692Af", @@ -7371,10 +11359,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:MTRc": { "address": "0x1e49fF77c355A3e38D6651ce8404AF0E48c5395f", @@ -7388,10 +11386,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:MTX": { "address": "0x0AF44e2784637218dD1D32A322D44e603A8f0c6A", @@ -7405,10 +11413,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:MUXE": { "address": "0x515669d308f887Fd83a471C7764F5d084886D34D", @@ -7422,10 +11440,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:MVP": { "address": "0x8a77e40936BbC27e80E9a3F526368C967869c86D", @@ -7433,17 +11461,27 @@ "Github": "https://github.com/Merculet", "Homepage": "https://www.merculet.io" }, - "marketcap_usd": 2292556, + "marketcap_usd": 1640693, "name": "Merculet", "network": "eth", "shortcut": "MVP", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:MWAT": { "address": "0x6425c6BE902d692AE2db752B3c268AFAdb099D3b", @@ -7457,27 +11495,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:MYST": { "address": "0xa645264C5603E96c3b0B078cdab68733794B0A71", "links": { "Homepage": "https://mysterium.network" }, - "marketcap_usd": 1614640, + "marketcap_usd": 1686308, "name": "Mysterium", "network": "eth", "shortcut": "MYST", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:NAC": { "address": "0x8d80de8A78198396329dfA769aD54d24bF90E7aa", @@ -7491,10 +11549,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:NANJ": { "address": "0xFFE02ee4C69eDf1b340fCaD64fbd6b37a7b9e265", @@ -7502,17 +11570,27 @@ "Github": "https://github.com/NANJ-COIN", "Homepage": "https://nanjcoin.com/" }, - "marketcap_usd": 5588093, + "marketcap_usd": 4596528, "name": "NANJCOIN", "network": "eth", "shortcut": "NANJ", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:NAVI": { "address": "0x588047365dF5BA589F923604AAC23d673555c623", @@ -7527,10 +11605,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:NBAI": { "address": "0x17f8aFB63DfcDcC90ebE6e84F060Cc306A98257D", @@ -7545,10 +11633,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:NCT": { "address": "0x9E46A38F5DaaBe8683E10793b06749EEF7D733d1", @@ -7556,34 +11654,54 @@ "Github": "https://github.com/polyswarm", "Homepage": "https://polyswarm.io" }, - "marketcap_usd": 30503956, + "marketcap_usd": 27741991, "name": "Nectar", "network": "eth", "shortcut": "NCT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:NDC": { "address": "0xA54ddC7B3CcE7FC8b1E3Fa0256D0DB80D2c10970", "links": { "Homepage": "https://neverdie.com" }, - "marketcap_usd": 297520, + "marketcap_usd": 343695, "name": "Neverdie", "network": "eth", "shortcut": "NDC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:NEC": { "address": "0xCc80C051057B774cD75067Dc48f8987C4Eb97A5e", @@ -7598,10 +11716,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:NEEO": { "address": "0xd8446236FA95b9b5f9fd0f8E7Df1a944823c683d", @@ -7615,27 +11743,47 @@ "t1_enabled": "soon", "t2_enabled": "soon", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:NET": { "address": "0xcfb98637bcae43C13323EAa1731cED2B716962fD", "links": { "Homepage": "https://nimiq.com" }, - "marketcap_usd": 3701188, + "marketcap_usd": 2506629, "name": "NIMIQ", "network": "eth", "shortcut": "NET", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:NEU": { "address": "0xA823E6722006afe99E91c30FF5295052fe6b8E32", @@ -7650,10 +11798,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:NGC": { "address": "0x72dD4b6bd852A3AA172Be4d6C5a6dbEc588cf131", @@ -7667,10 +11825,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:NIMFA": { "address": "0xe26517A9967299453d3F1B48Aa005E6127e67210", @@ -7685,10 +11853,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:NMR": { "address": "0x1776e1F26f98b1A5dF9cD347953a26dd3Cb46671", @@ -7703,10 +11881,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:NOX": { "address": "0xeC46f8207D766012454c408De210BCBc2243E71c", @@ -7721,10 +11909,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:NPER": { "address": "0x4cE6B362Bc77A24966Dda9078f9cEF81b3B886a7", @@ -7732,17 +11930,27 @@ "Github": "https://github.com/NperProject", "Homepage": "https://nper.io" }, - "marketcap_usd": 1682552, + "marketcap_usd": 1498454, "name": "NPER", "network": "eth", "shortcut": "NPER", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:NPXS": { "address": "0xA15C7Ebe1f07CaF6bFF097D8a589fb8AC49Ae5B3", @@ -7757,10 +11965,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:NUG": { "address": "0x245ef47D4d0505ECF3Ac463F4d81f41ADE8f1fd1", @@ -7774,27 +11992,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:NULS": { "address": "0xB91318F35Bdb262E9423Bc7c7c2A3A93DD93C92C", "links": { "Homepage": "https://nuls.io" }, - "marketcap_usd": 34621851, + "marketcap_usd": 22201718, "name": "NULS", "network": "eth", "shortcut": "NULS", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:NXX": { "address": "0x7627de4B93263a6a7570b8dAfa64bae812e5c394", @@ -7808,27 +12046,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:NxC": { "address": "0x45e42D659D9f9466cD5DF622506033145a9b89Bc", "links": { "Homepage": "https://beyond-the-void.net" }, - "marketcap_usd": 712470, + "marketcap_usd": 564835, "name": "Nexium", "network": "eth", "shortcut": "NxC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:OAK": { "address": "0x5e888B83B7287EED4fB7DA7b7d0A0D4c735d94b3", @@ -7842,27 +12100,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:OAX": { "address": "0x701C244b988a513c945973dEFA05de933b23Fe1D", "links": { "Homepage": "https://www.openanx.org/en" }, - "marketcap_usd": 5064925, + "marketcap_usd": 3863903, "name": "OAX", "network": "eth", "shortcut": "OAX", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:OCC": { "address": "0x0235fE624e044A05eeD7A43E16E3083bc8A4287A", @@ -7877,10 +12155,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ODE": { "address": "0xbf52F2ab39e26E0951d2a02b49B7702aBe30406a", @@ -7895,10 +12183,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:OJX": { "address": "0xBeef546ac8a4e0a80DC1E2d696968Ef54138f1d4", @@ -7913,10 +12211,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:OLD_MKR": { "address": "0xC66eA802717bFb9833400264Dd12c2bCeAa34a6d", @@ -7931,10 +12239,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:OLT": { "address": "0x64A60493D888728Cf42616e034a0dfEAe38EFCF0", @@ -7949,10 +12267,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:OMG": { "address": "0xd26114cd6EE289AccF82350c8d8487fedB8A0C07", @@ -7967,10 +12295,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:OMT": { "address": "0x047187e53477be70DBe8Ea5B799318f2e165052F", @@ -7985,10 +12323,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ONEK": { "address": "0xB23be73573bC7E03DB6e5dfc62405368716d28a8", @@ -8002,10 +12350,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:OPT": { "address": "0x4355fC160f74328f9b383dF2EC589bB3dFd82Ba0", @@ -8019,10 +12377,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ORBS": { "address": "0xff56Cc6b1E6dEd347aA0B7676C85AB0B3D08B0FA", @@ -8037,10 +12405,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ORCA": { "address": "0x6F59e0461Ae5E2799F1fB3847f05a63B16d0DbF8", @@ -8055,10 +12433,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:OST": { "address": "0x2C4e8f2D746113d0696cE89B35F0d8bF88E0AEcA", @@ -8066,17 +12454,27 @@ "Github": "https://github.com/OpenSTFoundation", "Homepage": "https://simpletoken.org" }, - "marketcap_usd": 15693591, + "marketcap_usd": 11770749, "name": "Simple Token 'OST'", "network": "eth", "shortcut": "OST", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:OWN": { "address": "0x170b275CEd089FffAEBFe927F445a350ED9160DC", @@ -8084,17 +12482,27 @@ "Github": "https://github.com/owndata", "Homepage": "https://owndata.network" }, - "marketcap_usd": 3823507, + "marketcap_usd": 3121256, "name": "OWNDATA", "network": "eth", "shortcut": "OWN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:Ox Fina": { "address": "0x65A15014964F2102Ff58647e16a16a6B9E14bCF6", @@ -8109,10 +12517,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:PAL": { "address": "0xfeDAE5642668f8636A11987Ff386bfd215F942EE", @@ -8127,10 +12545,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:PARETO": { "address": "0xea5f88E54d982Cbb0c441cde4E79bC305e5b43Bc", @@ -8145,10 +12573,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:PASS": { "address": "0x77761e63C05aeE6648FDaeaa9B94248351AF9bCd", @@ -8162,10 +12600,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:PATENTS": { "address": "0x694404595e3075A942397F466AAcD462FF1a7BD0", @@ -8179,10 +12627,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:PATH": { "address": "0xF813F3902bBc00A6DCe378634d3B79D84F9803d7", @@ -8197,10 +12655,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:PAX": { "address": "0x8E870D67F660D95d5be530380D0eC0bd388289E1", @@ -8215,27 +12683,47 @@ "t1_enabled": "soon", "t2_enabled": "soon", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:PAY": { "address": "0xB97048628DB6B661D4C2aA833e95Dbe1A905B280", "links": { "Homepage": "http://www.tenx.tech" }, - "marketcap_usd": 50875640, + "marketcap_usd": 37484484, "name": "TenX", "network": "eth", "shortcut": "PAY", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:PBL": { "address": "0x55648De19836338549130B1af587F16beA46F66B", @@ -8249,10 +12737,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:PBT": { "address": "0xF4c07b1865bC326A3c01339492Ca7538FD038Cc0", @@ -8266,10 +12764,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:PCL": { "address": "0x3618516F45CD3c913F81F9987AF41077932Bc40d", @@ -8277,17 +12785,27 @@ "Github": "https://github.com/PeculiumPCL/Peculium", "Homepage": "https://peculium.io" }, - "marketcap_usd": 3296106, + "marketcap_usd": 2673121, "name": "Peculium", "network": "eth", "shortcut": "PCL", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:PCLOLD": { "address": "0x53148Bb4551707edF51a1e8d7A93698d18931225", @@ -8302,10 +12820,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:PDATA": { "address": "0x0db03B6CDe0B2d427C64a04FeAfd825938368f1F", @@ -8320,10 +12848,20 @@ "t1_enabled": "soon", "t2_enabled": "soon", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:PET": { "address": "0x5884969Ec0480556E11d119980136a4C17eDDEd1", @@ -8338,10 +12876,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:PEXT": { "address": "0x55c2A0C171D920843560594dE3d6EEcC09eFc098", @@ -8355,10 +12903,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:PIPL": { "address": "0xE64509F0bf07ce2d29A7eF19A8A9bc065477C1B4", @@ -8372,10 +12930,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:PIX": { "address": "0x8eFFd494eB698cc399AF6231fCcd39E08fd20B15", @@ -8389,10 +12957,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:PLASMA": { "address": "0x59416A25628A76b4730eC51486114c32E0B582A1", @@ -8406,27 +12984,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:PLBT": { "address": "0x0AfFa06e7Fbe5bC9a764C979aA66E8256A631f02", "links": { "Homepage": "https://polybius.io" }, - "marketcap_usd": 6225459, + "marketcap_usd": 5036412, "name": "Polybius", "network": "eth", "shortcut": "PLBT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:PLR": { "address": "0xe3818504c1B32bF1557b16C238B2E01Fd3149C17", @@ -8441,10 +13039,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:PLS": { "address": "0xe43ac1714F7394173b15E7CfF31A63d523Ce4fB9", @@ -8459,10 +13067,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:PLU": { "address": "0xD8912C10681D8B21Fd3742244f44658dBA12264E", @@ -8476,10 +13094,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:PNK": { "address": "0x93ED3FBe21207Ec2E8f2d3c3de6e058Cb73Bc04d", @@ -8494,10 +13122,20 @@ "t1_enabled": "soon", "t2_enabled": "soon", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:POE": { "address": "0x0e0989b1f9B8A38983c2BA8053269Ca62Ec9B195", @@ -8511,10 +13149,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:POIN": { "address": "0x43F6a1BE992deE408721748490772B15143CE0a7", @@ -8528,27 +13176,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:POLY": { "address": "0x9992eC3cF6A55b00978cdDF2b27BC6882d88D1eC", "links": { "Homepage": "https://polymath.network" }, - "marketcap_usd": 65696102, + "marketcap_usd": 45095360, "name": "Polymath Network", "network": "eth", "shortcut": "POLY", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:POOL": { "address": "0x779B7b713C86e3E6774f5040D9cCC2D43ad375F8", @@ -8562,10 +13230,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:POS": { "address": "0xEe609fE292128Cad03b786DBb9Bc2634Ccdbe7fC", @@ -8573,17 +13251,27 @@ "Github": "https://github.com/PoSToken", "Homepage": "https://postoken.org" }, - "marketcap_usd": 23830, + "marketcap_usd": 30821, "name": "PoSToken", "network": "eth", "shortcut": "POS", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:POWR": { "address": "0x595832F8FC6BF59c85C527fEC3740A1b7a361269", @@ -8597,61 +13285,101 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:PPP": { "address": "0xc42209aCcC14029c1012fB5680D95fBd6036E2a0", "links": { "Homepage": "https://www.paypie.com" }, - "marketcap_usd": 10483120, + "marketcap_usd": 6518945, "name": "PayPie", "network": "eth", "shortcut": "PPP", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:PPT": { "address": "0xd4fa1460F537bb9085d22C7bcCB5DD450Ef28e3a", "links": { "Homepage": "https://populous.co" }, - "marketcap_usd": 142663524, + "marketcap_usd": 96285008, "name": "Populous", "network": "eth", "shortcut": "PPT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:PRE": { "address": "0x88A3E4F35D64aAD41A6d4030ac9AFE4356cB84fA", "links": { "Homepage": "https://presearch.io" }, - "marketcap_usd": 9086845, + "marketcap_usd": 6908649, "name": "Presearch", "network": "eth", "shortcut": "PRE", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:PRG": { "address": "0x7728dFEF5aBd468669EB7f9b48A7f70a501eD29D", @@ -8666,10 +13394,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:PRL": { "address": "0x1844b21593262668B7248d0f57a220CaaBA46ab9", @@ -8684,10 +13422,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:PRON": { "address": "0xA3149E0fA0061A9007fAf307074cdCd290f0e2Fd", @@ -8701,10 +13449,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:PRS": { "address": "0x163733bcc28dbf26B41a8CfA83e369b5B3af741b", @@ -8719,10 +13477,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:PRSP": { "address": "0x0C04d4f331DA8dF75f9E2e271E3f3F1494C66C36", @@ -8736,10 +13504,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:PT": { "address": "0x66497A283E0a007bA3974e837784C6AE323447de", @@ -8754,10 +13532,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:PTOY": { "address": "0x8Ae4BF2C33a8e667de34B54938B0ccD03Eb8CC06", @@ -8771,10 +13559,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:PTWO": { "address": "0x5512e1D6A7BE424b4323126B4f9E86D023F95764", @@ -8789,10 +13587,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:PUC": { "address": "0xEf6B4cE8C9Bc83744fbcdE2657b32eC18790458A", @@ -8807,10 +13615,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:PURC": { "address": "0xe25ff6Eb959BCE67975778e46A47750C243B6B99", @@ -8825,10 +13643,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:PXT": { "address": "0xc14830E53aA344E8c14603A91229A0b925b0B262", @@ -8842,27 +13670,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:QASH": { "address": "0x618E75Ac90b12c6049Ba3b27f5d5F8651b0037F6", "links": { "Homepage": "https://liquid.plus" }, - "marketcap_usd": 74154817, + "marketcap_usd": 73912843, "name": "QASH", "network": "eth", "shortcut": "QASH", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:QAU": { "address": "0x671AbBe5CE652491985342e85428EB1b07bC6c64", @@ -8876,10 +13724,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:QBX": { "address": "0x2467AA6B5A2351416fD4C3DeF8462d841feeecEC", @@ -8894,10 +13752,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:QNT": { "address": "0x4a220E6096B25EADb88358cb44068A3248254675", @@ -8905,17 +13773,27 @@ "Github": "https://github.com/quantnetwork", "Homepage": "https://www.quant.network/" }, - "marketcap_usd": 21536981, + "marketcap_usd": 15347313, "name": "Quant", "network": "eth", "shortcut": "QNT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:QRG": { "address": "0xFFAA5ffc455d9131f8A2713A741fD1960330508B", @@ -8929,10 +13807,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:QRL": { "address": "0x697beac28B09E122C4332D163985e8a73121b97F", @@ -8947,10 +13835,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:QSP": { "address": "0x99ea4dB9EE77ACD40B119BD1dC4E33e1C070b80d", @@ -8965,10 +13863,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:QTQ": { "address": "0x2C3C1F05187dBa7A5f2Dd47Dca57281C4d4F183F", @@ -8983,10 +13891,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:QTUM": { "address": "0x9a642d6b3368ddc662CA244bAdf32cDA716005BC", @@ -8994,17 +13912,27 @@ "Github": "https://github.com/qtumproject", "Homepage": "https://qtum.org/" }, - "marketcap_usd": 285842968, + "marketcap_usd": 229115936, "name": "Qtum", "network": "eth", "shortcut": "QTUM", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:RAO": { "address": "0x45eDb535942a8C84D9f4b5D37e1b25F91Ea4804c", @@ -9019,10 +13947,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:RBLX": { "address": "0xFc2C4D8f95002C14eD0a7aA65102Cac9e5953b5E", @@ -9030,17 +13968,27 @@ "Github": "https://github.com/rublixdev", "Homepage": "https://rublix.io/" }, - "marketcap_usd": 4330795, + "marketcap_usd": 4325880, "name": "Rublix", "network": "eth", "shortcut": "RBLX", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:RCN": { "address": "0xF970b8E36e23F7fC3FD752EeA86f8Be8D83375A6", @@ -9048,17 +13996,27 @@ "Github": "https://github.com/ripio/rcn-token", "Homepage": "https://ripiocredit.network" }, - "marketcap_usd": 11690701, + "marketcap_usd": 8536740, "name": "Ripio Credit Network", "network": "eth", "shortcut": "RCN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:REA": { "address": "0x767bA2915EC344015a7938E3eEDfeC2785195D05", @@ -9072,27 +14030,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:REBL": { "address": "0x5F53f7A8075614b699Baad0bC2c899f4bAd8FBBF", "links": { "Homepage": "https://www.rebellious.io" }, - "marketcap_usd": 1508842, + "marketcap_usd": 1033987, "name": "Rebellious", "network": "eth", "shortcut": "REBL", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:RED": { "address": "0x76960Dccd5a1fe799F7c29bE9F19ceB4627aEb2f", @@ -9100,17 +14078,27 @@ "Github": "https://github.com/red", "Homepage": "https://ico.red-lang.org" }, - "marketcap_usd": 1557077, + "marketcap_usd": 1163693, "name": "Red Community Token", "network": "eth", "shortcut": "RED", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:REDC": { "address": "0xB563300A3BAc79FC09B93b6F84CE0d4465A2AC27", @@ -9125,10 +14113,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:REN": { "address": "0x408e41876cCCDC0F92210600ef50372656052a38", @@ -9143,27 +14141,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:REQ": { "address": "0x8f8221aFbB33998d8584A2B05749bA73c37a938a", "links": { "Homepage": "https://request.network" }, - "marketcap_usd": 27423303, + "marketcap_usd": 19476084, "name": "Request Network", "network": "eth", "shortcut": "REQ", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:REX": { "address": "0xf05a9382A4C3F29E2784502754293D88b835109C", @@ -9178,27 +14196,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:RFR": { "address": "0xd0929d411954c47438dc1d871dd6081F5C5e149c", "links": { "Homepage": "https://refereum.com" }, - "marketcap_usd": 9582163, + "marketcap_usd": 6840370, "name": "Refereum", "network": "eth", "shortcut": "RFR", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:RIPT": { "address": "0xdd007278B667F6bef52fD0a4c23604aA1f96039a", @@ -9213,27 +14251,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:RLC": { "address": "0x607F4C5BB672230e8672085532f7e901544a7375", "links": { "Homepage": "http://crowdsale.iex.ec" }, - "marketcap_usd": 27933752, + "marketcap_usd": 21507553, "name": "IEx.ec", "network": "eth", "shortcut": "RLC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:RLT": { "address": "0xcCeD5B8288086BE8c38E23567e684C3740be4D48", @@ -9248,10 +14306,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:RLTY": { "address": "0xbe99B09709fc753b09BCf557A992F6605D5997B0", @@ -9265,27 +14333,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:RLX": { "address": "0x4A42d2c580f83dcE404aCad18dab26Db11a1750E", "links": { "Homepage": "http://www.relex.io" }, - "marketcap_usd": 1855217, + "marketcap_usd": 1115665, "name": "Relex", "network": "eth", "shortcut": "RLX", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:RMESH": { "address": "0x8D5682941cE456900b12d47ac06a88b47C764CE1", @@ -9300,10 +14388,20 @@ "t1_enabled": "soon", "t2_enabled": "soon", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:RNDR": { "address": "0x0996bFb5D057faa237640E2506BE7B4f9C46de0B", @@ -9317,10 +14415,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ROCK": { "address": "0xA40106134c5bF4c41411554e6db99B95A15ed9d8", @@ -9328,51 +14436,81 @@ "Github": "https://github.com/rocketico", "Homepage": "https://rocketico.io" }, - "marketcap_usd": 13636187, + "marketcap_usd": 11862835, "name": "Rocket Token", "network": "eth", "shortcut": "ROCK", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ROCK2": { "address": "0xC16b542ff490e01fcc0DC58a60e1EFdc3e357cA6", "links": { "Homepage": "https://icerockmining.io" }, - "marketcap_usd": 4457075, + "marketcap_usd": 3773995, "name": "ICE ROCK MINING", "network": "eth", "shortcut": "ROCK2", "t1_enabled": "soon", "t2_enabled": "soon", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ROCK2PAY": { "address": "0x0E3de3B0E3D617FD8D1D8088639bA877feb4d742", "links": { "Homepage": "https://icerockmining.io" }, - "marketcap_usd": 4457075, + "marketcap_usd": 3773995, "name": "ICE ROCK MINING", "network": "eth", "shortcut": "ROCK2PAY", "t1_enabled": "soon", "t2_enabled": "soon", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ROK": { "address": "0xc9De4B7F0C3d991e967158E4D4bFA4b51Ec0b114", @@ -9386,10 +14524,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:RPL": { "address": "0xB4EFd85c19999D84251304bDA99E90B92300Bd93", @@ -9403,10 +14551,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:RTN": { "address": "0x54b293226000ccBFC04DF902eEC567CB4C35a903", @@ -9421,10 +14579,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:RUNE": { "address": "0xdEE02D94be4929d26f67B64Ada7aCf1914007F10", @@ -9439,10 +14607,20 @@ "t1_enabled": "soon", "t2_enabled": "soon", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:RVL": { "address": "0x41f615E24fAbd2b097a320E9E6c1f448cb40521c", @@ -9456,27 +14634,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:RVT": { "address": "0x3d1BA9be9f66B8ee101911bC36D3fB562eaC2244", "links": { "Homepage": "https://rivetzintl.com" }, - "marketcap_usd": 2355432, + "marketcap_usd": 1737889, "name": "Rivetz", "network": "eth", "shortcut": "RVT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:S-A-PAT": { "address": "0x1EC8fE51a9B6A3a6C427D17d9ECC3060fbc4a45c", @@ -9490,10 +14688,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:S-ETH": { "address": "0x3eb91D237e491E0DEE8582c402D85CB440fb6b54", @@ -9507,44 +14715,74 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:SALT": { "address": "0x4156D3342D5c385a87D264F90653733592000581", "links": { "Homepage": "https://saltlending.com" }, - "marketcap_usd": 37317020, + "marketcap_usd": 24087942, "name": "Salt Lending Token", "network": "eth", "shortcut": "SALT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:SAN": { "address": "0x7C5A0CE9267ED19B22F8cae653F198e3E8daf098", "links": { "Homepage": "https://santiment.net" }, - "marketcap_usd": 26166492, + "marketcap_usd": 18557441, "name": "Santiment", "network": "eth", "shortcut": "SAN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:SCANDI": { "address": "0x78fE18e41f436e1981a3a60D1557c8a7a9370461", @@ -9558,10 +14796,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:SCL": { "address": "0xd7631787B4dCc87b1254cfd1e5cE48e96823dEe8", @@ -9575,27 +14823,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:SENSE": { "address": "0x6745fAB6801e376cD24F03572B9C9B0D4EdDDCcf", "links": { "Homepage": "https://sensay.it" }, - "marketcap_usd": 1143554, + "marketcap_usd": 968638, "name": "Sensay", "network": "eth", "shortcut": "SENSE", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:SET": { "address": "0xe06eda7435bA749b047380CEd49121ddE93334Ae", @@ -9610,10 +14878,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:SEXY": { "address": "0x98F5e9b7F0e33956C0443E81bF7deB8B5b1ed545", @@ -9627,10 +14905,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:SGEL": { "address": "0xa1ccc166faf0E998b3E33225A1A0301B1C86119D", @@ -9644,10 +14932,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:SHIT": { "address": "0xEF2E9966eb61BB494E5375d5Df8d67B7dB8A780D", @@ -9661,10 +14959,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:SIFT": { "address": "0x8a187D5285d316bcBC9ADafc08b51d70a0d8e000", @@ -9678,10 +14986,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:SIG": { "address": "0x6888a16eA9792c15A4DCF2f6C623D055c8eDe792", @@ -9696,10 +15014,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:SKIN": { "address": "0x2bDC0D42996017fCe214b21607a515DA41A9E0C5", @@ -9714,10 +15042,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:SKO1": { "address": "0x4994e81897a920c0FEA235eb8CEdEEd3c6fFF697", @@ -9731,10 +15069,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:SKR": { "address": "0x4c382F8E09615AC86E08CE58266CC227e7d4D913", @@ -9748,27 +15096,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:SLT": { "address": "0x7A5fF295Dc8239d5C2374E4D894202aAF029Cab6", "links": { "Homepage": "http://smartlands.io" }, - "marketcap_usd": 26797968, + "marketcap_usd": 24669931, "name": "Smartlands", "network": "eth", "shortcut": "SLT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:SLY": { "address": "0x7928c8aBF1F74eF9F96D4D0a44e3b4209d360785", @@ -9783,10 +15151,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:SNC": { "address": "0xF4134146AF2d511Dd5EA8cDB1C4AC88C57D60404", @@ -9800,10 +15178,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:SND": { "address": "0xf333b2Ace992ac2bBD8798bF57Bc65a06184afBa", @@ -9817,10 +15205,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:SNG": { "address": "0xcFD6Ae8BF13f42DE14867351eAff7A8A3b9FbBe7", @@ -9835,27 +15233,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:SNGLS": { "address": "0xaeC2E87E0A235266D9C5ADc9DEb4b2E29b54D009", "links": { "Homepage": "https://singulardtv.com" }, - "marketcap_usd": 12205224, + "marketcap_usd": 9782204, "name": "SingularDTV", "network": "eth", "shortcut": "SNGLS", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:SNIP": { "address": "0x44F588aEeB8C44471439D1270B3603c66a9262F1", @@ -9869,10 +15287,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:SNM": { "address": "0x983F6d60db79ea8cA4eB9968C6aFf8cfA04B3c63", @@ -9887,10 +15315,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:SNOV": { "address": "0xBDC5bAC39Dbe132B1E030e898aE3830017D7d969", @@ -9904,10 +15342,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:SNT": { "address": "0x744d70FDBE2Ba4CF95131626614a1763DF805B9E", @@ -9921,44 +15369,74 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:SOL": { "address": "0x1F54638b7737193FFd86c19Ec51907A7c41755D8", "links": { "Homepage": "https://sola.foundation" }, - "marketcap_usd": 154532, + "marketcap_usd": 88991, "name": "Sola Token", "network": "eth", "shortcut": "SOL", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:SPANK": { "address": "0x42d6622deCe394b54999Fbd73D108123806f6a18", "links": { "Homepage": "https://spankchain.com" }, - "marketcap_usd": 9335042, + "marketcap_usd": 8351501, "name": "SpankChain", "network": "eth", "shortcut": "SPANK", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:SPARC": { "address": "0x58bf7df57d9DA7113c4cCb49d8463D4908C735cb", @@ -9972,10 +15450,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:SPARTA": { "address": "0x24AEF3BF1A47561500f9430D74Ed4097C47F51F2", @@ -9989,10 +15477,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:SPF": { "address": "0x85089389C14Bd9c77FC2b8F0c3d1dC3363Bf06Ef", @@ -10006,27 +15504,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:SPN": { "address": "0x20F7A3DdF244dc9299975b4Da1C39F8D5D75f05A", "links": { "Homepage": "https://www.sapien.network/" }, - "marketcap_usd": 669639, + "marketcap_usd": 496057, "name": "Sapien", "network": "eth", "shortcut": "SPN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:SRN": { "address": "0x68d57c9a1C35f63E2c83eE8e49A64e9d70528D25", @@ -10041,10 +15559,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:SSH": { "address": "0x6e2050CBFB3eD8A4d39b64cC9f47E711a03a5a89", @@ -10058,10 +15586,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:STABIT": { "address": "0x4A89cD486fA996ad50c0a63C35c78702f5422a50", @@ -10075,10 +15613,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:STAC": { "address": "0x9a005c9a89BD72a4Bd27721E7a09A3c11D2b03C4", @@ -10092,10 +15640,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:STAR": { "address": "0xF70a642bD387F94380fFb90451C2c81d4Eb82CBc", @@ -10109,10 +15667,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:STB": { "address": "0x09BcA6eBAb05Ee2ae945BE4edA51393d94Bf7b99", @@ -10127,10 +15695,20 @@ "t1_enabled": "soon", "t2_enabled": "soon", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:STC": { "address": "0x629aEe55ed49581C33ab27f9403F7992A289ffd5", @@ -10145,27 +15723,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:STK": { "address": "0xaE73B38d1c9A8b274127ec30160a4927C4d71824", "links": { "Homepage": "https://stktoken.com" }, - "marketcap_usd": 2921203, + "marketcap_usd": 2014867, "name": "STK Token", "network": "eth", "shortcut": "STK", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:STN": { "address": "0x599346779e90fc3F5F997b5ea715349820F91571", @@ -10179,10 +15777,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:STORJ": { "address": "0xB64ef51C888972c908CFacf59B47C1AfBC0Ab8aC", @@ -10190,34 +15798,54 @@ "Github": "https://github.com/Storj", "Homepage": "https://storj.io" }, - "marketcap_usd": 31934614, + "marketcap_usd": 21915283, "name": "STORJ", "network": "eth", "shortcut": "STORJ", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:STORM": { "address": "0xD0a4b8946Cb52f0661273bfbC6fD0E0C75Fc6433", "links": { "Homepage": "https://www.stormtoken.com" }, - "marketcap_usd": 29202003, + "marketcap_usd": 20936983, "name": "Storm Token", "network": "eth", "shortcut": "STORM", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:STP": { "address": "0xecd570bBf74761b960Fa04Cc10fe2c4e86FfDA36", @@ -10232,10 +15860,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:STQ": { "address": "0x5c3a228510D246b78a3765C20221Cbf3082b44a4", @@ -10243,17 +15881,27 @@ "Github": "https://github.com/Storiqa/", "Homepage": "https://storiqa.com" }, - "marketcap_usd": 13396262, + "marketcap_usd": 8955911, "name": "Storiqa", "network": "eth", "shortcut": "STQ", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:STRC": { "address": "0x46492473755e8dF960F8034877F61732D718CE96", @@ -10268,10 +15916,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:STX": { "address": "0x006BeA43Baa3f7A6f765F14f10A1a1b08334EF45", @@ -10286,27 +15944,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:SUB": { "address": "0x12480E24eb5bec1a9D4369CaB6a80caD3c0A377A", "links": { "Homepage": "https://substratum.net" }, - "marketcap_usd": 30949246, + "marketcap_usd": 20835058, "name": "Substratum", "network": "eth", "shortcut": "SUB", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:SWM": { "address": "0x9e88613418cF03dCa54D6a2cf6Ad934A78C7A17A", @@ -10321,10 +15999,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:SWT": { "address": "0xB9e7F8568e08d5659f5D29C4997173d84CdF2607", @@ -10338,10 +16026,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:SXDT": { "address": "0x12B306fA98F4CbB8d4457FdFf3a0A0a56f07cCdf", @@ -10355,10 +16053,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:SXUT": { "address": "0x2C82c73d5B34AA015989462b2948cd616a37641F", @@ -10372,10 +16080,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:SYN": { "address": "0x10B123FdDde003243199aaD03522065dC05827A0", @@ -10389,10 +16107,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:SenSatorI": { "address": "0x4cA74185532DC1789527194e5B9c866dD33F4E82", @@ -10406,10 +16134,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:TAU": { "address": "0xc27A2F05fa577a83BA0fDb4c38443c0718356501", @@ -10424,10 +16162,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:TBC2": { "address": "0xFACCD5Fc83c3E4C3c1AC1EF35D15adf06bCF209C", @@ -10442,10 +16190,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:TBT": { "address": "0xAFe60511341a37488de25Bef351952562E31fCc1", @@ -10460,10 +16218,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:TCA": { "address": "0xfA0eF5E034CaE1AE752d59bdb8aDcDe37Ed7aB97", @@ -10478,10 +16246,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:TDH": { "address": "0x2a1dbabe65c595B0022e75208C34014139d5d357", @@ -10495,10 +16273,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:TEL": { "address": "0x85e076361cc813A908Ff672F9BAd1541474402b2", @@ -10506,17 +16294,27 @@ "Github": "https://github.com/telcoin", "Homepage": "https://www.telco.in" }, - "marketcap_usd": 22941424, + "marketcap_usd": 18078579, "name": "Telcoin", "network": "eth", "shortcut": "TEL", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:TFL": { "address": "0xa7f976C360ebBeD4465c2855684D1AAE5271eFa9", @@ -10524,34 +16322,54 @@ "Github": "https://github.com/TrueFlip", "Homepage": "https://trueflip.io" }, - "marketcap_usd": 2233801, + "marketcap_usd": 1928892, "name": "TrueFlip", "network": "eth", "shortcut": "TFL", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:THETA": { "address": "0x3883f5e181fccaF8410FA61e12b59BAd963fb645", "links": { "Homepage": "https://www.thetatoken.org/" }, - "marketcap_usd": 51977102, + "marketcap_usd": 38403233, "name": "Theta Token", "network": "eth", "shortcut": "THETA", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:THUG": { "address": "0xfe7B915A0bAA0E79f85c5553266513F7C1c03Ed0", @@ -10566,27 +16384,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:TIME": { "address": "0x6531f133e6DeeBe7F2dcE5A0441aA7ef330B4e53", "links": { "Homepage": "https://chronobank.io" }, - "marketcap_usd": 2305050, + "marketcap_usd": 1873125, "name": "Chronobank", "network": "eth", "shortcut": "TIME", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:TIO": { "address": "0x80BC5512561c7f85A3A9508c7df7901b370Fa1DF", @@ -10600,44 +16438,74 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:TIX": { "address": "0xEa1f346faF023F974Eb5adaf088BbCdf02d761F4", "links": { "Homepage": "https://www.blocktix.io" }, - "marketcap_usd": 6295855, + "marketcap_usd": 5076942, "name": "Blocktix", "network": "eth", "shortcut": "TIX", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:TKN": { "address": "0xaAAf91D9b90dF800Df4F55c205fd6989c977E73a", "links": { "Homepage": "https://etherscan.io/token/TokenCard" }, - "marketcap_usd": 13300950, + "marketcap_usd": 12823759, "name": "TokenCard", "network": "eth", "shortcut": "TKN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:TLX": { "address": "0xb3616550aBc8AF79c7A5902DEF9Efa3bC9A95200", @@ -10651,10 +16519,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:TNT": { "address": "0x08f5a9235B08173b7569F83645d2c7fB55e8cCD8", @@ -10669,10 +16547,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:TOOR": { "address": "0x8eb965ee9cCFBCE76c0a06264492c0afEfc2826d", @@ -10687,10 +16575,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:TRCN": { "address": "0x566Fd7999B1Fc3988022bD38507A48F0bCf22c77", @@ -10704,10 +16602,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:TRST": { "address": "0xCb94be6f13A1182E4A4B6140cb7bf2025d28e41B", @@ -10722,10 +16630,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:TSW": { "address": "0x6B87999bE87358065bBdE41e8a0fe0B7b1cd2514", @@ -10739,10 +16657,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:TTA": { "address": "0xaaB606817809841E8b1168be8779Eeaf6744Ef64", @@ -10757,10 +16685,20 @@ "t1_enabled": "soon", "t2_enabled": "soon", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:TWN": { "address": "0x2eF1aB8a26187C58BB8aAeB11B2fC6D25C5c0716", @@ -10774,10 +16712,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:TWNKL": { "address": "0xfbd0d1c77B501796A35D86cF91d65D9778EeE695", @@ -10791,27 +16739,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:TaaS": { "address": "0xE7775A6e9Bcf904eb39DA2b68c5efb4F9360e08C", "links": { "Homepage": "https://taas.fund" }, - "marketcap_usd": 3103103, + "marketcap_usd": 2276729, "name": "Token-as-a-Service", "network": "eth", "shortcut": "TaaS", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:UKG": { "address": "0x24692791Bc444c5Cd0b81e3CBCaba4b04Acd1F3B", @@ -10826,27 +16794,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:UQC": { "address": "0xD01DB73E047855Efb414e6202098C4Be4Cd2423B", "links": { "Homepage": "https://uquidcoin.com" }, - "marketcap_usd": 1447032, + "marketcap_usd": 1211009, "name": "Uquid Coin", "network": "eth", "shortcut": "UQC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:URB": { "address": "0x931684139f756C24eC0731E9F74FE50e5548dDeF", @@ -10861,10 +16849,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:USDC": { "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", @@ -10879,10 +16877,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:UTK": { "address": "0x70a72833d6bF7F508C8224CE59ea1Ef3d0Ea3A38", @@ -10896,10 +16904,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:UTN-P": { "address": "0x9e3319636e2126e3c0bc9e3134AEC5e1508A46c7", @@ -10907,17 +16925,27 @@ "Github": "https://github.com/UniversaBlockchain/universa", "Homepage": "https://www.universa.io/" }, - "marketcap_usd": 6648328, + "marketcap_usd": 5219782, "name": "Universa", "network": "eth", "shortcut": "UTN-P", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:UUU": { "address": "0x3543638eD4a9006E4840B105944271Bcea15605D", @@ -10931,10 +16959,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:VDG": { "address": "0x57C75ECCc8557136D32619a191fBCDc88560d711", @@ -10949,10 +16987,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:VDOC": { "address": "0x82BD526bDB718C6d4DD2291Ed013A5186cAE2DCa", @@ -10967,10 +17015,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:VEE": { "address": "0x340D2bdE5Eb28c1eed91B2f790723E3B160613B7", @@ -10978,17 +17036,27 @@ "Github": "https://github.com/blockv", "Homepage": "https://blockv.io" }, - "marketcap_usd": 15573111, + "marketcap_usd": 10255083, "name": "BLOCKv", "network": "eth", "shortcut": "VEE", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:VEN": { "address": "0xD850942eF8811f2A866692A623011bDE52a462C1", @@ -10996,17 +17064,27 @@ "Github": "https://github.com/vechain", "Homepage": "https://www.vechain.com" }, - "marketcap_usd": 441545582, + "marketcap_usd": 331228725, "name": "VeChain", "network": "eth", "shortcut": "VEN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:VENUS": { "address": "0xEbeD4fF9fe34413db8fC8294556BBD1528a4DAca", @@ -11020,10 +17098,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:VERI": { "address": "0x8f3470A7388c05eE4e7AF3d01D8C722b0FF52374", @@ -11037,10 +17125,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:VIB": { "address": "0x2C974B2d0BA1716E644c1FC59982a89DDD2fF724", @@ -11054,10 +17152,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:VIEW": { "address": "0xF03f8D65BaFA598611C3495124093c56e8F638f0", @@ -11065,17 +17173,27 @@ "Github": "https://github.com/Viewly/", "Homepage": "https://view.ly/" }, - "marketcap_usd": 270994, + "marketcap_usd": 228984, "name": "Viewly", "network": "eth", "shortcut": "VIEW", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:VIT": { "address": "0x23b75Bc7AaF28e2d6628C3f424B3882F8f072a3c", @@ -11083,17 +17201,27 @@ "Github": "https://github.com/ViceIndustryToken", "Homepage": "https://vicetoken.com/" }, - "marketcap_usd": 1241597, + "marketcap_usd": 1126785, "name": "Vice Industry Token", "network": "eth", "shortcut": "VIT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:VIU": { "address": "0x519475b31653E46D20cD09F9FdcF3B12BDAcB4f5", @@ -11108,10 +17236,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:VLD": { "address": "0x922aC473A3cC241fD3a0049Ed14536452D58D73c", @@ -11119,17 +17257,27 @@ "Github": "https://github.com/vetri-global/", "Homepage": "https://vetri.global/" }, - "marketcap_usd": 3299753, + "marketcap_usd": 3267947, "name": "VETRI", "network": "eth", "shortcut": "VLD", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:VOC": { "address": "0xc3bC9Eb71f75Ec439A6b6C8E8b746fCF5b62F703", @@ -11144,10 +17292,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:VOISE": { "address": "0x83eEA00D838f92dEC4D1475697B9f4D3537b56E3", @@ -11161,10 +17319,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:VSL": { "address": "0x5c543e7AE0A1104f78406C340E9C64FD9fCE5170", @@ -11178,10 +17346,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:VUU": { "address": "0x4b96bf1feF93A216914fc843D81207A027ce52b3", @@ -11196,10 +17374,20 @@ "t1_enabled": "soon", "t2_enabled": "soon", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:WATT": { "address": "0x829A4cA1303383F1082B6B1fB937116e4b3b5605", @@ -11214,10 +17402,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:WAX": { "address": "0x39Bb259F66E1C59d5ABEF88375979b4D20D98022", @@ -11225,17 +17423,27 @@ "Github": "https://github.com/waxio", "Homepage": "https://wax.io" }, - "marketcap_usd": 89332312, + "marketcap_usd": 66397339, "name": "WAX", "network": "eth", "shortcut": "WAX", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:WBA": { "address": "0x74951B677de32D596EE851A233336926e6A2cd09", @@ -11249,10 +17457,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:WCN": { "address": "0x8F936fE0faF0604c9C0Ef2406bde0A65365515d6", @@ -11267,27 +17485,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:WCT": { "address": "0x6a0A97E47d15aAd1D132a1Ac79a480E3F2079063", "links": { "Homepage": "https://wepower.network" }, - "marketcap_usd": 12655370, + "marketcap_usd": 9047738, "name": "WePower", "network": "eth", "shortcut": "WCT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:WETH": { "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", @@ -11301,10 +17539,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:WHEN": { "address": "0xF4FE95603881D0e07954fD7605E0e9a916e42C44", @@ -11319,10 +17567,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:WILD": { "address": "0xD3C00772B24D997A812249ca637a921e81357701", @@ -11337,27 +17595,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:WINGS": { "address": "0x667088b212ce3d06a1b553a7221E1fD19000d9aF", "links": { "Homepage": "https://wings.ai" }, - "marketcap_usd": 12902392, + "marketcap_usd": 9560064, "name": "WINGS", "network": "eth", "shortcut": "WINGS", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:WMK": { "address": "0xBFbe5332f172d77811bC6c272844f3e54A7B23bB", @@ -11372,10 +17650,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:WPC": { "address": "0x62087245087125d3DB5B9A3D713d78E7BBc31e54", @@ -11389,10 +17677,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:WPR": { "address": "0x4CF488387F035FF08c371515562CBa712f9015d4", @@ -11406,10 +17704,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:WRK": { "address": "0x71e8d74fF1C923E369D0e70DFb09866629C4DD35", @@ -11424,10 +17732,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:WYS": { "address": "0xd8950fDeaa10304B7A7Fd03a2FC66BC39f3c711a", @@ -11442,10 +17760,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:WYV": { "address": "0x056017c55aE7AE32d12AeF7C679dF83A85ca75Ff", @@ -11460,27 +17788,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:WaBi": { "address": "0x286BDA1413a2Df81731D4930ce2F862a35A609fE", "links": { "Homepage": "https://www.wacoin.io" }, - "marketcap_usd": 11894950, + "marketcap_usd": 8409644, "name": "WaBi", "network": "eth", "shortcut": "WaBi", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:X8X": { "address": "0x910Dfc18D6EA3D6a7124A6F8B5458F281060fa4c", @@ -11494,27 +17842,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:XAUR": { "address": "0x4DF812F6064def1e5e029f1ca858777CC98D2D81", "links": { "Homepage": "http://www.xaurum.org" }, - "marketcap_usd": 3782243, + "marketcap_usd": 3783857, "name": "Xaurum", "network": "eth", "shortcut": "XAUR", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:XBP": { "address": "0x28dee01D53FED0Edf5f6E310BF8Ef9311513Ae40", @@ -11522,17 +17890,27 @@ "Github": "https://github.com/blitzpredict", "Homepage": "https://www.blitzpredict.io" }, - "marketcap_usd": 328844, + "marketcap_usd": 257316, "name": "BlitzPredict", "network": "eth", "shortcut": "XBP", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:XCC": { "address": "0x4d829f8C92a6691c56300D020c9e0dB984Cfe2BA", @@ -11547,10 +17925,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:XFS": { "address": "0x16aF5bfb4Ae7E475b9aDC3Bf5Cb2f1E6a50d7940", @@ -11564,10 +17952,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:XGG": { "address": "0xf6b6AA0Ef0f5Edc2C1c5d925477F97eAF66303e7", @@ -11582,10 +17980,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:XGM": { "address": "0x533ef0984b2FAA227AcC620C67cce12aA39CD8CD", @@ -11599,10 +18007,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:XGT": { "address": "0x30f4A3e0aB7a76733D8b60b89DD93c3D0b4c9E2f", @@ -11617,10 +18035,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:XID": { "address": "0xB110eC7B1dcb8FAB8dEDbf28f53Bc63eA5BEdd84", @@ -11634,10 +18062,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:XNK": { "address": "0xBC86727E770de68B1060C91f6BB6945c73e10388", @@ -11645,34 +18083,54 @@ "Github": "https://github.com/InkProtocol/", "Homepage": "https://paywithink.com" }, - "marketcap_usd": 3347213, + "marketcap_usd": 3457498, "name": "Ink Protocol", "network": "eth", "shortcut": "XNK", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:XNN": { "address": "0xab95E915c123fdEd5BDfB6325e35ef5515F1EA69", "links": { "Homepage": "https://xenon.network" }, - "marketcap_usd": 821224, + "marketcap_usd": 759656, "name": "XENON", "network": "eth", "shortcut": "XNN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:XNT": { "address": "0x572E6f318056ba0C5d47A422653113843D250691", @@ -11686,10 +18144,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:XRL": { "address": "0xB24754bE79281553dc1adC160ddF5Cd9b74361a4", @@ -11703,10 +18171,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:XSC": { "address": "0x0F513fFb4926ff82D7F60A05069047AcA295C413", @@ -11720,10 +18198,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:YUP": { "address": "0xD9A12Cde03a86E800496469858De8581D3A5353d", @@ -11738,10 +18226,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ZAP": { "address": "0x6781a0F84c7E9e846DCb84A9a5bd49333067b104", @@ -11749,34 +18247,54 @@ "Github": "https://github.com/zapproject", "Homepage": "https://zap.store" }, - "marketcap_usd": 1924575, + "marketcap_usd": 1444064, "name": "ZAP", "network": "eth", "shortcut": "ZAP", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ZCS": { "address": "0x7A41e0517a5ecA4FdbC7FbebA4D4c47B9fF6DC63", "links": { "Homepage": "https://zsc.io/" }, - "marketcap_usd": 3116608, + "marketcap_usd": 2225230, "name": "Zeusshield", "network": "eth", "shortcut": "ZCS", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ZIL": { "address": "0x05f4a42e251f2d52b8ed15E9FEdAacFcEF1FAD27", @@ -11784,34 +18302,54 @@ "Github": "https://github.com/zilliqa", "Homepage": "https://www.zilliqa.com/" }, - "marketcap_usd": 220477971, + "marketcap_usd": 156616238, "name": "Zilliqa", "network": "eth", "shortcut": "ZIL", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ZMN": { "address": "0x554FFc77F4251a9fB3c0E3590a6a205f8d4e067D", "links": { "Homepage": "https://www.zmine.com" }, - "marketcap_usd": 2341079, + "marketcap_usd": 1722266, "name": "ZMINE", "network": "eth", "shortcut": "ZMN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:ZST": { "address": "0xe386B139Ed3715Ca4B18Fd52671bDcea1cdFE4b1", @@ -11825,10 +18363,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:cV": { "address": "0xdA6cb58A0D0C01610a29c5A65c303e13e885887C", @@ -11836,17 +18384,27 @@ "Github": "https://github.com/carVertical", "Homepage": "https://www.carvertical.com" }, - "marketcap_usd": 4322481, + "marketcap_usd": 2944592, "name": "carVertical", "network": "eth", "shortcut": "cV", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:eBCH": { "address": "0xaFC39788c51f0c1Ff7B55317f3e70299e521Fff6", @@ -11860,10 +18418,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:eBTC": { "address": "0xeB7C20027172E5d143fB030d50f91Cece2D1485D", @@ -11878,10 +18446,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:eGAS": { "address": "0xb53A96bcBdD9CF78dfF20BAB6C2be7bAec8f00f8", @@ -11895,10 +18473,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:eUSD": { "address": "0x523630976eB6147621B5c31c781eBe2Ec2a806E0", @@ -11913,10 +18501,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:eosDAC": { "address": "0x7e9e431a0B8c4D532C745B1043c7FA29a48D4fBa", @@ -11924,17 +18522,27 @@ "Github": "https://github.com/eosdac", "Homepage": "https://eosdac.io/" }, - "marketcap_usd": 10530105, + "marketcap_usd": 8332451, "name": "eosDAC", "network": "eth", "shortcut": "eosDAC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:nUSD": { "address": "0x57Ab1E02fEE23774580C119740129eAC7081e9D3", @@ -11942,17 +18550,27 @@ "Github": "https://github.com/havven/havven", "Homepage": "https://www.havven.io" }, - "marketcap_usd": 1490864, + "marketcap_usd": 1444816, "name": "Havven-Backed USD Nomins (nUSD)", "network": "eth", "shortcut": "nUSD", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:eth:onG": { "address": "0xd341d1680Eeee3255b8C4c75bCCE7EB57f144dAe", @@ -11967,10 +18585,20 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:rin:AETH": { "address": "0x398A7A69f3c59181A1ffe34bed11DCb5DF863A8a", @@ -11985,10 +18613,16 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:rin:BHNT": { "address": "0xe27826eE778B6F78a49a686dA7D64f6E7b084a4f", @@ -12003,10 +18637,16 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:rin:CTGA": { "address": "0x8B65d4B7ee3FFFA986C577F0F4b70a21BaE3dD54", @@ -12020,10 +18660,16 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:rin:WALL": { "address": "0x0A057a87CE9C56D7e336B417c79cf30E8d27860B", @@ -12038,10 +18684,16 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:rop:dqr30": { "address": "0xa1bAccA0e12D4091Ec1f92e7CaE3394CC9854D3D", @@ -12055,10 +18707,16 @@ "t1_enabled": "soon", "t2_enabled": "soon", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:ubq:CEFS": { "address": "0x08533D6A06CE365298b12Ef92eb407cBA8Aa8273", @@ -12072,27 +18730,39 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:ubq:QWARK": { "address": "0x4b4899a10F3E507DB207b0ee2426029eFa168a67", "links": { "Homepage": "https://www.qwark.io" }, - "marketcap_usd": 1086659, + "marketcap_usd": 795714, "name": "QWARK", "network": "ubq", "shortcut": "QWARK", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "erc20:ubq:RICKS": { "address": "0x5e1715bB79805Bd672729760B3f7F34D6f485098", @@ -12106,40 +18776,58 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "eth:AKA": { "links": { "Homepage": "https://akroma.io" }, - "marketcap_usd": 951556, + "marketcap_usd": 728725, "name": "Akroma", "shortcut": "AKA", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "eth:ATH": { "links": { "Homepage": "https://atheios.com" }, - "marketcap_usd": 76702, + "marketcap_usd": 60745, "name": "Atheios", "shortcut": "ATH", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "eth:CLO": { "links": { @@ -12151,40 +18839,58 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "eth:EGEM": { "links": { "Homepage": "https://egem.io" }, - "marketcap_usd": 376148, + "marketcap_usd": 364355, "name": "EtherGem", "shortcut": "EGEM", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "eth:ELLA": { "links": { "Homepage": "https://ellaism.org" }, - "marketcap_usd": 310847, + "marketcap_usd": 253884, "name": "Ellaism", "shortcut": "ELLA", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "eth:EOSC": { "links": { @@ -12196,10 +18902,16 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "eth:ESN": { "links": { @@ -12211,40 +18923,66 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "eth:ETC": { "links": { "Homepage": "https://ethereumclassic.github.io" }, - "marketcap_usd": 831234176, + "marketcap_usd": 631625051, "name": "Ethereum Classic", "shortcut": "ETC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "eth:ETH": { "links": { "Homepage": "https://www.ethereum.org" }, - "marketcap_usd": 18715924264, + "marketcap_usd": 14757623254, "name": "Ethereum", "shortcut": "ETH", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "eth:ETHO": { "links": { @@ -12256,10 +18994,16 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "eth:ETSC": { "links": { @@ -12271,40 +19015,58 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "eth:EXP": { "links": { "Homepage": "https://expanse.tech" }, - "marketcap_usd": 1810463, + "marketcap_usd": 1418548, "name": "Expanse", "shortcut": "EXP", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "eth:GO": { "links": { "Homepage": "https://gochain.io" }, - "marketcap_usd": 39306019, + "marketcap_usd": 29511076, "name": "GoChain", "shortcut": "GO", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "eth:MIX": { "links": { @@ -12316,40 +19078,58 @@ "t1_enabled": "soon", "t2_enabled": "soon", "type": "coin", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "eth:MUSIC": { "links": { "Homepage": "https://musicoin.org" }, - "marketcap_usd": 2731023, + "marketcap_usd": 2136766, "name": "Musicoin", "shortcut": "MUSIC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "eth:PIRL": { "links": { "Homepage": "https://pirl.io" }, - "marketcap_usd": 2887551, + "marketcap_usd": 2230638, "name": "Pirl", "shortcut": "PIRL", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "eth:RSK": { "links": { @@ -12361,189 +19141,220 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "eth:UBQ": { "links": { "Homepage": "https://ubiqsmart.com" }, - "marketcap_usd": 17605990, + "marketcap_usd": 14770349, "name": "Ubiq", "shortcut": "UBQ", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": { - "MyCrypto": "https://mycrypto.com", - "MyEtherWallet": "https://www.myetherwallet.com" - } + "wallet": [ + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] }, "misc:ADA": { "links": { "Github": "https://github.com/input-output-hk/cardano-sl", "Homepage": "https://www.cardano.org" }, - "marketcap_usd": 1656539799, + "marketcap_usd": 1274090229, "name": "Cardano", "shortcut": "ADA", "t1_enabled": "no", "t2_enabled": "yes", "type": "coin", - "wallet": { - "AdaLite": "https://adalite.io/app" - } + "wallet": [ + { + "name": "AdaLite", + "url": "https://adalite.io/app" + } + ] }, "misc:EOS": { "links": { "Github": "https://github.com/EOSIO/eos", "Homepage": "https://eos.io" }, - "marketcap_usd": 4275567957, + "marketcap_usd": 3531733448, "name": "EOS", "shortcut": "EOS", "t1_enabled": "no", "t2_enabled": "soon", - "type": "coin" + "type": "coin", + "wallet": [] }, "misc:LSK": { "links": { "Github": "https://github.com/LiskHQ/lisk", "Homepage": "https://lisk.io/" }, - "marketcap_usd": 246531392, + "marketcap_usd": 188257019, "name": "Lisk", "shortcut": "LSK", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "coin" + "type": "coin", + "wallet": [] }, "misc:MAID": { "links": { "Github": "https://github.com/maidsafe", "Homepage": "https://maidsafe.net" }, - "marketcap_usd": 97705054, + "marketcap_usd": 86086677, "name": "MaidSafeCoin", "shortcut": "MAID", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "coin" + "type": "coin", + "wallet": [] }, "misc:OMNI": { "links": { "Github": "https://github.com/OmniLayer", "Homepage": "https://www.omnilayer.org" }, - "marketcap_usd": 2380090, + "marketcap_usd": 1750897, "name": "Omni", "shortcut": "OMNI", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "coin" + "type": "coin", + "wallet": [] }, "misc:ONT": { "links": { "Github": "https://github.com/ontio/ontology", "Homepage": "https://ont.io" }, - "marketcap_usd": 426013021, + "marketcap_usd": 312364116, "name": "Ontology", "shortcut": "ONT", "t1_enabled": "no", "t2_enabled": "soon", - "type": "coin" + "type": "coin", + "wallet": [] }, "misc:TRX": { "links": { "Github": "https://github.com/tronprotocol/java-tron", "Homepage": "https://tron.network" }, - "marketcap_usd": 1281553150, + "marketcap_usd": 1006000787, "name": "Tron", "shortcut": "TRX", "t1_enabled": "no", "t2_enabled": "soon", - "type": "coin" + "type": "coin", + "wallet": [] }, "misc:USDT": { "links": { "Homepage": "https://tether.to" }, - "marketcap_usd": 1679946640, + "marketcap_usd": 1752855490, "name": "Tether", "shortcut": "USDT", "t1_enabled": "soon", "t2_enabled": "soon", - "type": "coin" + "type": "coin", + "wallet": [] }, "misc:WAN": { "links": { "Github": "https://github.com/wanchain/go-wanchain", "Homepage": "https://wanchain.org" }, - "marketcap_usd": 77209546, + "marketcap_usd": 54122082, "name": "Wanchain", "shortcut": "WAN", "t1_enabled": "yes", "t2_enabled": "yes", - "type": "coin" + "type": "coin", + "wallet": [] }, "misc:XLM": { "links": { "Github": "https://github.com/stellar/stellar-core", "Homepage": "https://www.stellar.org" }, - "marketcap_usd": 4598549807, + "marketcap_usd": 4076286086, "name": "Stellar", "shortcut": "XLM", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": { - "Account Viewer": "https://trezor.io/stellar/" - } + "wallet": [ + { + "name": "Account Viewer", + "url": "https://trezor.io/stellar/" + } + ] }, "misc:XMR": { "links": { "Github": "https://github.com/monero-project/monero", "Homepage": "https://getmonero.org" }, - "marketcap_usd": 1469254286, + "marketcap_usd": 1197918142, "name": "Monero", "shortcut": "XMR", "t1_enabled": "no", "t2_enabled": "yes", - "type": "coin" + "type": "coin", + "wallet": [] }, "misc:XRP": { "links": { "Github": "https://github.com/ripple/rippled", "Homepage": "https://ripple.com" }, - "marketcap_usd": 19451130302, + "marketcap_usd": 18764332247, "name": "Ripple", "shortcut": "XRP", "t1_enabled": "no", "t2_enabled": "yes", - "type": "coin" + "type": "coin", + "wallet": [] }, "misc:XTZ": { "links": { "Github": "https://github.com/tezos/tezos", "Homepage": "https://tezos.com" }, - "marketcap_usd": 676700526, + "marketcap_usd": 484550782, "name": "Tezos", "shortcut": "XTZ", "t1_enabled": "no", "t2_enabled": "yes", "type": "coin", - "wallet": { - "SimpleStaking": "https://simplestaking.com" - } + "wallet": [ + { + "name": "SimpleStaking", + "url": "https://simplestaking.com" + } + ] }, "nem:BREEZE": { "links": { @@ -12555,38 +19366,47 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "mosaic", - "wallet": { - "Nano Wallet": "https://nem.io/downloads/" - } + "wallet": [ + { + "name": "Nano Wallet", + "url": "https://nem.io/downloads/" + } + ] }, "nem:DIM": { "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 4523580, + "marketcap_usd": 3693239, "name": "DIMCOIN", "shortcut": "DIM", "t1_enabled": "yes", "t2_enabled": "yes", "type": "mosaic", - "wallet": { - "Nano Wallet": "https://nem.io/downloads/" - } + "wallet": [ + { + "name": "Nano Wallet", + "url": "https://nem.io/downloads/" + } + ] }, "nem:DIMTOK": { "coinmarketcap_alias": "dimcoin", "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 4523580, + "marketcap_usd": 3693239, "name": "DIM TOKEN", "shortcut": "DIMTOK", "t1_enabled": "yes", "t2_enabled": "yes", "type": "mosaic", - "wallet": { - "Nano Wallet": "https://nem.io/downloads/" - } + "wallet": [ + { + "name": "Nano Wallet", + "url": "https://nem.io/downloads/" + } + ] }, "nem:PAC:CHS": { "links": { @@ -12598,9 +19418,12 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "mosaic", - "wallet": { - "Nano Wallet": "https://nem.io/downloads/" - } + "wallet": [ + { + "name": "Nano Wallet", + "url": "https://nem.io/downloads/" + } + ] }, "nem:PAC:HRT": { "links": { @@ -12612,32 +19435,38 @@ "t1_enabled": "yes", "t2_enabled": "yes", "type": "mosaic", - "wallet": { - "Nano Wallet": "https://nem.io/downloads/" - } + "wallet": [ + { + "name": "Nano Wallet", + "url": "https://nem.io/downloads/" + } + ] }, "nem:XEM": { "links": { "Homepage": "https://nem.io" }, - "marketcap_usd": 854219843, + "marketcap_usd": 750004440, "name": "NEM", "shortcut": "XEM", "t1_enabled": "yes", "t2_enabled": "yes", "type": "mosaic", - "wallet": { - "Nano Wallet": "https://nem.io/downloads/" - } + "wallet": [ + { + "name": "Nano Wallet", + "url": "https://nem.io/downloads/" + } + ] } }, "info": { - "marketcap_supported": "87.72 %", - "marketcap_usd": 163837114931, + "marketcap_supported": "87.89 %", + "marketcap_usd": 136986851044, "t1_coins": 693, "t2_coins": 698, - "total_marketcap_usd": 186779079153, - "updated_at": 1542329031, - "updated_at_readable": "Fri Nov 16 01:43:51 2018" + "total_marketcap_usd": 155869917869, + "updated_at": 1542731226, + "updated_at_readable": "Tue Nov 20 17:27:06 2018" } } \ No newline at end of file diff --git a/defs/coins_details.override.json b/defs/coins_details.override.json index aa5cc9211..e88762d91 100644 --- a/defs/coins_details.override.json +++ b/defs/coins_details.override.json @@ -2,9 +2,6 @@ "nem:DIMTOK": { "coinmarketcap_alias": "dimcoin" }, - "erc20:eth:GNT": { - "coinmarketcap_alias": "golem-network-tokens" - }, "erc20:eth:VEN": { "links": { "Homepage": "https://www.vechain.com" @@ -13,91 +10,5 @@ "erc20:eth:YUPIE": { "hidden": 1, "notes": "Replaced by YUP" - }, - "bitcoin:BCH": { - "wallet": { - "Electron Cash": "https://electroncash.org" - } - }, - "bitcoin:BTC": { - "wallet": { - "Electrum": "https://electrum.org" - } - }, - "bitcoin:BTCP": { - "wallet": { - "BTCP Electrum": "https://github.com/BTCPrivate/electrum-btcp" - } - }, - "bitcoin:BTG": { - "wallet": { - "ElectrumG": "https://github.com/BTCGPU/electrum" - } - }, - "bitcoin:DASH": { - "wallet": { - "Dash Electrum": "https://electrum.dash.org" - } - }, - "bitcoin:FJC": { - "wallet": { - "Electrum-FJC": "http://www.fujicoin.org/downloads.php" - } - }, - "bitcoin:GAME": { - "wallet": { - "Electrum-GAME": "https://electrum-game.org" - } - }, - "bitcoin:GRS": { - "wallet": { - "Electrum-GRS": "https://www.groestlcoin.org/groestlcoin-electrum-wallet" - } - }, - "bitcoin:KOTO": { - "wallet": { - "Electrum-KOTO": "https://electrum.kotocoin.info" - } - }, - "bitcoin:LTC": { - "wallet": { - "Electrum-LTC": "https://electrum-ltc.org" - } - }, - "bitcoin:MONA": { - "wallet": { - "Electrum-MONA": "https://electrum-mona.org" - } - }, - "bitcoin:NMC": { - "wallet": { - "Electrum-NMC": "https://github.com/namecoin/electrum-nmc" - } - }, - "bitcoin:VIA": { - "wallet": { - "Vialectrum": "https://vialectrum.org" - } - }, - "bitcoin:XZC": { - "wallet": { - "Electrum-XZC": "https://github.com/zcoinofficial/electrum-xzc", - "Znode Tool": "https://github.com/yura-pakhuchiy/znode-tool" - } - }, - "misc:ADA": { - "wallet": { - "AdaLite": "https://adalite.io/app" - } - }, - "misc:XLM": { - "wallet": { - "Account Viewer": "https://trezor.io/stellar/" - } - }, - "misc:XTZ": { - "wallet": { - "SimpleStaking": "https://simplestaking.com" - } } } diff --git a/defs/misc/misc.json b/defs/misc/misc.json index 14b421fda..5a3d70744 100644 --- a/defs/misc/misc.json +++ b/defs/misc/misc.json @@ -17,6 +17,9 @@ "links": { "Homepage": "https://www.stellar.org", "Github": "https://github.com/stellar/stellar-core" + }, + "wallet": { + "Account Viewer": "https://trezor.io/stellar/" } }, { @@ -47,6 +50,9 @@ "links": { "Homepage": "https://www.cardano.org", "Github": "https://github.com/input-output-hk/cardano-sl" + }, + "wallet": { + "AdaLite": "https://adalite.io/app" } }, { @@ -57,6 +63,9 @@ "links": { "Homepage": "https://tezos.com", "Github": "https://github.com/tezos/tezos" + }, + "wallet": { + "SimpleStaking": "https://simplestaking.com" } }, { diff --git a/defs/nem/nem_mosaics.json b/defs/nem/nem_mosaics.json index c4ca8a06f..d8fa3a4fb 100644 --- a/defs/nem/nem_mosaics.json +++ b/defs/nem/nem_mosaics.json @@ -7,9 +7,6 @@ "divisibility": 6, "links": { "Homepage": "https://nem.io" - }, - "wallet": { - "Nano Wallet": "https://nem.io/downloads/" } }, { @@ -27,9 +24,6 @@ ], "links": { "Homepage": "https://www.dimcoin.io" - }, - "wallet": { - "Nano Wallet": "https://nem.io/downloads/" } }, { @@ -43,9 +37,6 @@ ], "links": { "Homepage": "https://www.dimcoin.io" - }, - "wallet": { - "Nano Wallet": "https://nem.io/downloads/" } }, { @@ -59,9 +50,6 @@ ], "links": { "Homepage": "https://breeze.chat" - }, - "wallet": { - "Nano Wallet": "https://nem.io/downloads/" } }, { @@ -75,9 +63,6 @@ ], "links": { "Homepage": "https://pacnem.com" - }, - "wallet": { - "Nano Wallet": "https://nem.io/downloads/" } }, { @@ -95,9 +80,6 @@ ], "links": { "Homepage": "https://pacnem.com" - }, - "wallet": { - "Nano Wallet": "https://nem.io/downloads/" } } ] diff --git a/defs/wallets.json b/defs/wallets.json new file mode 100644 index 000000000..a5c014575 --- /dev/null +++ b/defs/wallets.json @@ -0,0 +1,45 @@ +{ + "bitcoin:BCH": { + "Electron Cash": "https://electroncash.org" + }, + "bitcoin:BTC": { + "Electrum": "https://electrum.org" + }, + "bitcoin:BTCP": { + "BTCP Electrum": "https://github.com/BTCPrivate/electrum-btcp" + }, + "bitcoin:BTG": { + "ElectrumG": "https://github.com/BTCGPU/electrum" + }, + "bitcoin:DASH": { + "Dash Electrum": "https://electrum.dash.org" + }, + "bitcoin:FJC": { + "Electrum-FJC": "http://www.fujicoin.org/downloads.php" + }, + "bitcoin:GAME": { + "Electrum-GAME": "https://electrum-game.org" + }, + "bitcoin:GRS": { + "Electrum-GRS": "https://www.groestlcoin.org/groestlcoin-electrum-wallet" + }, + "bitcoin:KOTO": { + "Electrum-KOTO": "https://electrum.kotocoin.info" + }, + "bitcoin:LTC": { + "Electrum-LTC": "https://electrum-ltc.org" + }, + "bitcoin:MONA": { + "Electrum-MONA": "https://electrum-mona.org" + }, + "bitcoin:NMC": { + "Electrum-NMC": "https://github.com/namecoin/electrum-nmc" + }, + "bitcoin:VIA": { + "Vialectrum": "https://vialectrum.org" + }, + "bitcoin:XZC": { + "Electrum-XZC": "https://github.com/zcoinofficial/electrum-xzc", + "Znode Tool": "https://github.com/yura-pakhuchiy/znode-tool" + } +} diff --git a/tools/coins_details.py b/tools/coins_details.py index 081b03b3f..f33ae673c 100755 --- a/tools/coins_details.py +++ b/tools/coins_details.py @@ -15,6 +15,7 @@ LOG = logging.getLogger(__name__) OPTIONAL_KEYS = ("links", "notes", "wallet") ALLOWED_SUPPORT_STATUS = ("yes", "no", "planned", "soon") +WALLETS = coin_info.load_json("wallets.json") OVERRIDES = coin_info.load_json("coins_details.override.json") VERSIONS = coin_info.latest_releases() @@ -23,6 +24,28 @@ COINMARKETCAP_API_BASE = "https://pro-api.coinmarketcap.com/v1/" MARKET_CAPS = {} +# automatic wallet entries +WALLET_TREZOR = {"Trezor": "https://wallet.trezor.io"} +WALLET_TREZOR_NEXT = {"Trezor Beta": "https://beta-wallet.trezor.io/next/"} +WALLET_NEM = {"Nano Wallet": "https://nem.io/downloads/"} + +WALLETS_ETH_3RDPARTY = { + "MyEtherWallet": "https://www.myetherwallet.com", + "MyCrypto": "https://mycrypto.com", +} +WALLETS_ETH_NATIVE = WALLETS_ETH_3RDPARTY.copy() +WALLETS_ETH_NATIVE.update(WALLET_TREZOR_NEXT) + + +TREZORIO_KNOWN_URLS = ( + "https://wallet.trezor.io", + "https://beta-wallet.trezor.io/next/", + "https://trezor.io/stellar/", +) + +# TODO: we should read this from support.json +TREZOR_NEXT_ETH_NETWORKS = ("eth", "etc") + def coinmarketcap_call(endpoint, api_key, params=None): url = COINMARKETCAP_API_BASE + endpoint @@ -151,6 +174,15 @@ def _webwallet_support(coin, support): return any(".trezor.io" in url for url in coin["blockbook"] + coin["bitcore"]) +def dict_merge(orig, new): + if isinstance(new, dict) and isinstance(orig, dict): + for k, v in new.items(): + orig[k] = dict_merge(orig.get(k), v) + return orig + else: + return new + + def update_simple(coins, support_info, type): res = {} for coin in coins: @@ -163,11 +195,14 @@ def update_simple(coins, support_info, type): type=type, t1_enabled=_is_supported(support, "trezor1"), t2_enabled=_is_supported(support, "trezor2"), + wallet={}, ) for k in OPTIONAL_KEYS: if k in coin: details[k] = coin[k] + details["wallet"].update(WALLETS.get(key, {})) + res[key] = details return res @@ -181,12 +216,9 @@ def update_bitcoin(coins, support_info): details = dict( name=coin["coin_label"], links=dict(Homepage=coin["website"], Github=coin["github"]), - wallet={}, + wallet=WALLET_TREZOR if _webwallet_support(coin, support) else {}, ) - if _webwallet_support(coin, support): - details["wallet"]["Trezor"] = "https://wallet.trezor.io" - - res[key].update(details) + dict_merge(res[key], details) return res @@ -196,22 +228,25 @@ def update_erc20(coins, support_info): res = update_simple(coins, support_info, "erc20") for coin in coins: key = coin["key"] + chain = coin["chain"] + if chain in TREZOR_NEXT_ETH_NETWORKS: + wallets = WALLETS_ETH_NATIVE + else: + wallets = WALLETS_ETH_3RDPARTY + details = dict( - network=coin["chain"], + network=chain, address=coin["address"], shortcut=coin["shortcut"], links={}, - wallet=dict( - MyCrypto="https://mycrypto.com", - MyEtherWallet="https://www.myetherwallet.com", - ), + wallet=wallets, ) if coin.get("website"): details["links"]["Homepage"] = coin["website"] if coin.get("social", {}).get("github"): details["links"]["Github"] = coin["social"]["github"] - res[key].update(details) + dict_merge(res[key], details) return res @@ -220,14 +255,22 @@ def update_ethereum_networks(coins, support_info): res = update_simple(coins, support_info, "coin") for coin in coins: key = coin["key"] - details = dict( - wallet=dict( - MyCrypto="https://mycrypto.com", - MyEtherWallet="https://www.myetherwallet.com", - ), - links=dict(Homepage=coin.get("url")), - ) - res[key].update(details) + if coin["chain"] in TREZOR_NEXT_ETH_NETWORKS: + wallets = WALLETS_ETH_NATIVE + else: + wallets = WALLETS_ETH_3RDPARTY + details = dict(links=dict(Homepage=coin.get("url")), wallet=wallets) + dict_merge(res[key], details) + + return res + + +def update_nem_mosaics(coins, support_info): + res = update_simple(coins, support_info, "mosaic") + for coin in coins: + key = coin["key"] + details = dict(wallet=WALLET_NEM) + dict_merge(res[key], details) return res @@ -248,18 +291,26 @@ def check_missing_data(coins): if coin["t2_enabled"] not in ALLOWED_SUPPORT_STATUS: LOG.warning(f"{k}: Unknown t2_enabled") hide = True - if ( - "Trezor" in coin.get("wallet", {}) - and coin["wallet"]["Trezor"] != "https://wallet.trezor.io" - ): - LOG.warning(f"{k}: Strange URL for Trezor Wallet") - hide = True + + # check wallets + for wallet in coin["wallet"]: + name = wallet.get("name") + url = wallet.get("url") + if not name or not url: + LOG.warning(f"{k}: Bad wallet entry") + hide = True + continue + if "trezor" in name.lower() and url not in TREZORIO_KNOWN_URLS: + LOG.warning(f"{k}: Strange URL for Trezor Wallet") + hide = True + if "trezor.io" in url.lower() and url not in TREZORIO_KNOWN_URLS: + LOG.warning(f"{k}: Unexpected trezor.io URL: {url}") if coin["t1_enabled"] == "no" and coin["t2_enabled"] == "no": LOG.info(f"{k}: Coin not enabled on either device") hide = True - if len(coin.get("wallet", {})) == 0: + if len(coin.get("wallet", [])) == 0: LOG.debug(f"{k}: Missing wallet") if "Testnet" in coin["name"]: @@ -285,16 +336,22 @@ def apply_overrides(coins): LOG.warning(f"override without coin: {key}") continue - def recursive_update(orig, new): - if isinstance(new, dict) and isinstance(orig, dict): - for k, v in new.items(): - orig[k] = recursive_update(orig.get(k), v) - return orig - else: - return new + dict_merge(coins[key], override) - coin = coins[key] - recursive_update(coin, override) + +def finalize_wallets(coins): + def sort_key(w): + if "trezor.io" in w["url"]: + return 0, w["name"] + else: + return 1, w["name"] + + for coin in coins.values(): + wallets_list = [ + dict(name=name, url=url) for name, url in coin["wallet"].items() + ] + wallets_list.sort(key=sort_key) + coin["wallet"] = wallets_list @click.command() @@ -322,11 +379,13 @@ def main(refresh, api_key, verbose): coins.update(update_bitcoin(defs.bitcoin, support_info)) coins.update(update_erc20(defs.erc20, support_info)) coins.update(update_ethereum_networks(defs.eth, support_info)) - coins.update(update_simple(defs.nem, support_info, "mosaic")) + coins.update(update_nem_mosaics(defs.nem, support_info)) coins.update(update_simple(defs.misc, support_info, "coin")) apply_overrides(coins) + finalize_wallets(coins) update_marketcaps(coins) + check_missing_data(coins) info = summary(coins, api_key) From 88fa3c7381252820b025370ba1b07dc8350e13c0 Mon Sep 17 00:00:00 2001 From: matejcik Date: Tue, 20 Nov 2018 17:51:04 +0100 Subject: [PATCH 653/767] cointool: fix uniformity check also uniformize misc.json --- defs/misc/misc.json | 30 ++++++++++++++++++++---------- tools/cointool.py | 7 ++++--- 2 files changed, 24 insertions(+), 13 deletions(-) diff --git a/defs/misc/misc.json b/defs/misc/misc.json index 5a3d70744..b3437748b 100644 --- a/defs/misc/misc.json +++ b/defs/misc/misc.json @@ -7,7 +7,8 @@ "links": { "Homepage": "https://lisk.io/", "Github": "https://github.com/LiskHQ/lisk" - } + }, + "wallet": {} }, { "name": "Stellar", @@ -30,7 +31,8 @@ "links": { "Homepage": "https://getmonero.org", "Github": "https://github.com/monero-project/monero" - } + }, + "wallet": {} }, { "name": "Ripple", @@ -40,7 +42,8 @@ "links": { "Homepage": "https://ripple.com", "Github": "https://github.com/ripple/rippled" - } + }, + "wallet": {} }, { "name": "Cardano", @@ -76,7 +79,8 @@ "links": { "Homepage": "https://ont.io", "Github": "https://github.com/ontio/ontology" - } + }, + "wallet": {} }, { "name": "Wanchain", @@ -86,7 +90,8 @@ "links": { "Homepage": "https://wanchain.org", "Github": "https://github.com/wanchain/go-wanchain" - } + }, + "wallet": {} }, { "name": "EOS", @@ -96,7 +101,8 @@ "links": { "Homepage": "https://eos.io", "Github": "https://github.com/EOSIO/eos" - } + }, + "wallet": {} }, { "name": "Tron", @@ -106,7 +112,8 @@ "links": { "Homepage": "https://tron.network", "Github": "https://github.com/tronprotocol/java-tron" - } + }, + "wallet": {} }, { "name": "Omni", @@ -116,7 +123,8 @@ "links": { "Homepage": "https://www.omnilayer.org", "Github": "https://github.com/OmniLayer" - } + }, + "wallet": {} }, { "name": "MaidSafeCoin", @@ -126,7 +134,8 @@ "links": { "Homepage": "https://maidsafe.net", "Github": "https://github.com/maidsafe" - } + }, + "wallet": {} }, { "name": "Tether", @@ -135,6 +144,7 @@ "curve": "secp256k1", "links": { "Homepage": "https://tether.to" - } + }, + "wallet": {} } ] diff --git a/tools/cointool.py b/tools/cointool.py index e107dd027..b99d2a262 100755 --- a/tools/cointool.py +++ b/tools/cointool.py @@ -365,7 +365,7 @@ def check_icons(coins): return check_passed -IGNORE_NONUNIFORM_KEYS = frozenset(("unsupported", "duplicate", "notes")) +IGNORE_NONUNIFORM_KEYS = frozenset(("unsupported", "duplicate")) def check_key_uniformity(coins): @@ -381,11 +381,12 @@ def check_key_uniformity(coins): buckets.sort(key=lambda x: len(x)) majority = buckets[-1] rest = sum(buckets[:-1], []) - reference_keyset = set(majority[0].keys()) + reference_keyset = set(majority[0].keys()) | IGNORE_NONUNIFORM_KEYS + print(reference_keyset) for coin in rest: key = coin["key"] - keyset = set(coin.keys()) + keyset = set(coin.keys()) | IGNORE_NONUNIFORM_KEYS missing = ", ".join(reference_keyset - keyset) if missing: print_log(logging.ERROR, "coin {} has missing keys: {}".format(key, missing)) From a1265b48d1ca4bb05b20b39f2f87551dbfcddcc9 Mon Sep 17 00:00:00 2001 From: matejcik Date: Tue, 20 Nov 2018 18:00:38 +0100 Subject: [PATCH 654/767] support: add ETH and ETC as supported in webwallet also use this information when generating coins_details.json --- defs/support.json | 8 +++++--- tools/coins_details.py | 12 +++++------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/defs/support.json b/defs/support.json index 10367f1ec..58eb3ca93 100644 --- a/defs/support.json +++ b/defs/support.json @@ -72,8 +72,8 @@ "bitcoin:GRS": "1.6.2", "bitcoin:KOTO": "1.7.1", "bitcoin:LTC": "1.5.2", - "bitcoin:MONA": "1.6.0", "bitcoin:MEC": "1.7.2", + "bitcoin:MONA": "1.6.0", "bitcoin:MUE": "1.7.1", "bitcoin:NMC": "1.5.2", "bitcoin:PTC": "1.7.1", @@ -995,8 +995,8 @@ "bitcoin:GRS": "2.0.8", "bitcoin:KOTO": "2.0.8", "bitcoin:LTC": "2.0.5", - "bitcoin:MONA": "2.0.5", "bitcoin:MEC": "2.0.10", + "bitcoin:MONA": "2.0.5", "bitcoin:MUE": "2.0.8", "bitcoin:NMC": "2.0.5", "bitcoin:PTC": "2.0.8", @@ -1921,7 +1921,9 @@ "bitcoin:VTC": true, "bitcoin:XZC": true, "bitcoin:ZEC": true, - "bitcoin:tGRS": true + "bitcoin:tGRS": true, + "eth:ETC": true, + "eth:ETH": true }, "unsupported": {} } diff --git a/tools/coins_details.py b/tools/coins_details.py index f33ae673c..b5bbf90e0 100755 --- a/tools/coins_details.py +++ b/tools/coins_details.py @@ -43,9 +43,6 @@ TREZORIO_KNOWN_URLS = ( "https://trezor.io/stellar/", ) -# TODO: we should read this from support.json -TREZOR_NEXT_ETH_NETWORKS = ("eth", "etc") - def coinmarketcap_call(endpoint, api_key, params=None): url = COINMARKETCAP_API_BASE + endpoint @@ -223,13 +220,14 @@ def update_bitcoin(coins, support_info): return res -def update_erc20(coins, support_info): +def update_erc20(coins, networks, support_info): # TODO skip disabled networks? + network_support = {n["chain"]: support_info.get(n["key"]) for n in networks} res = update_simple(coins, support_info, "erc20") for coin in coins: key = coin["key"] chain = coin["chain"] - if chain in TREZOR_NEXT_ETH_NETWORKS: + if network_support.get(chain, {}).get("webwallet"): wallets = WALLETS_ETH_NATIVE else: wallets = WALLETS_ETH_3RDPARTY @@ -255,7 +253,7 @@ def update_ethereum_networks(coins, support_info): res = update_simple(coins, support_info, "coin") for coin in coins: key = coin["key"] - if coin["chain"] in TREZOR_NEXT_ETH_NETWORKS: + if support_info[key].get("webwallet"): wallets = WALLETS_ETH_NATIVE else: wallets = WALLETS_ETH_3RDPARTY @@ -377,7 +375,7 @@ def main(refresh, api_key, verbose): coins = {} coins.update(update_bitcoin(defs.bitcoin, support_info)) - coins.update(update_erc20(defs.erc20, support_info)) + coins.update(update_erc20(defs.erc20, defs.eth, support_info)) coins.update(update_ethereum_networks(defs.eth, support_info)) coins.update(update_nem_mosaics(defs.nem, support_info)) coins.update(update_simple(defs.misc, support_info, "coin")) From 638f401172387f5c095e2748d534ad307f43bd54 Mon Sep 17 00:00:00 2001 From: David <37987466+dalijolijo@users.noreply.github.com> Date: Tue, 27 Nov 2018 17:22:16 +0100 Subject: [PATCH 655/767] Add wallet link for Bitcore BTX --- defs/wallets.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/defs/wallets.json b/defs/wallets.json index a5c014575..773283b48 100644 --- a/defs/wallets.json +++ b/defs/wallets.json @@ -11,6 +11,9 @@ "bitcoin:BTG": { "ElectrumG": "https://github.com/BTCGPU/electrum" }, + "bitcoin:BTX": { + "Electrum-BTX": "https://github.com/LIMXTEC/electrum-btx" + }, "bitcoin:DASH": { "Dash Electrum": "https://electrum.dash.org" }, From dd02e2bf83928e2a5c3361a441730ba4d5016330 Mon Sep 17 00:00:00 2001 From: martin <30367552+mroz22@users.noreply.github.com> Date: Wed, 28 Nov 2018 11:15:47 +0100 Subject: [PATCH 656/767] Update ZEC support Actually after sapling, ZEC is supported only by newer firmware versions --- defs/support.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/defs/support.json b/defs/support.json index 58eb3ca93..313c80365 100644 --- a/defs/support.json +++ b/defs/support.json @@ -89,7 +89,7 @@ "bitcoin:VTC": "1.6.1", "bitcoin:XMY": "1.7.1", "bitcoin:XZC": "1.6.2", - "bitcoin:ZEC": "1.6.2", + "bitcoin:ZEC": "1.7.1", "bitcoin:tDASH": "1.6.2", "bitcoin:tGRS": "1.6.2", "bitcoin:tSMART": "1.7.1", @@ -1012,7 +1012,7 @@ "bitcoin:VTC": "2.0.5", "bitcoin:XMY": "2.0.8", "bitcoin:XZC": "2.0.7", - "bitcoin:ZEC": "2.0.7", + "bitcoin:ZEC": "2.0.8", "bitcoin:ZEN": "2.0.8", "bitcoin:tDASH": "2.0.8", "bitcoin:tGRS": "2.0.8", From e51aa9b3cd204ab662d600405a3f805810b33817 Mon Sep 17 00:00:00 2001 From: matejcik Date: Thu, 29 Nov 2018 15:42:49 +0100 Subject: [PATCH 657/767] tools: new rules for ERC20 duplicates We now allow duplicates if they're their own testnets, or if they're deprecated. Also some checks are smarter. --- tools/coin_info.py | 152 ++++++++++++++++++++++++++++++--------------- tools/cointool.py | 23 +++++-- 2 files changed, 122 insertions(+), 53 deletions(-) diff --git a/tools/coin_info.py b/tools/coin_info.py index 4b270a778..f3dd1384b 100755 --- a/tools/coin_info.py +++ b/tools/coin_info.py @@ -113,7 +113,14 @@ BTC_CHECKS = [ check_key("github", str, regex=r"^https://github.com/.*[^/]$"), check_key("maintainer", str), check_key( - "curve_name", str, choice=["secp256k1", "secp256k1_decred", "secp256k1_groestl", "secp256k1_smart"] + "curve_name", + str, + choice=[ + "secp256k1", + "secp256k1_decred", + "secp256k1_groestl", + "secp256k1_smart", + ], ), check_key("address_type", int), check_key("address_type_p2sh", int), @@ -218,14 +225,7 @@ def _load_erc20_tokens(): networks = _load_ethereum_networks() tokens = [] for network in networks: - if network["name"].startswith("Ethereum Testnet "): - idx = len("Ethereum Testnet ") - chain = network["name"][idx : idx + 3] - else: - chain = network["shortcut"] - chain = chain.lower() - if not chain: - continue + chain = network["chain"] chain_path = os.path.join(DEFS_DIR, "ethereum", "tokens", "tokens", chain) for filename in glob.glob(os.path.join(chain_path, "*.json")): @@ -362,46 +362,25 @@ def symbol_from_shortcut(shortcut): def mark_duplicate_shortcuts(coins): - """Finds coins with identical `shortcut`s. - Updates their keys and sets a `duplicate` field. + """Finds coins with identical symbols and sets their `duplicate` field. - The logic is a little crazy. + "Symbol" here means the first part of `shortcut` (separated by space), + so, e.g., "BTL (Battle)" and "BTL (Bitlle)" have the same symbol "BTL". The result of this function is a dictionary of _buckets_, each of which is indexed by the duplicated symbol, or `_override`. The `_override` bucket will - contain all coins that are set to `true` in `duplicity_overrides.json`. These - will _always_ be marked as duplicate (and later possibly deleted if they're ERC20). - - The rest will disambiguate based on the full shortcut. - (i.e., when `shortcut` is `BTL (Battle)`, the `symbol` is just `BTL`). - If _all tokens_ in the bucket have shortcuts with distinct suffixes, e.g., - `CAT (BitClave)` and `CAT (Blockcat)`, we DO NOT mark them as duplicate. - These will then be supported and included in outputs. - - If even one token in the bucket _does not_ have a distinct suffix, e.g., - `MIT` and `MIT (Mychatcoin)`, the whole bucket is marked as duplicate. + contain all coins that are set to `true` in `duplicity_overrides.json`. - If a token is set to `false` in `duplicity_overrides.json`, it will NOT - be marked as duplicate in this step, even if it is part of a "bad" bucket. + Each coin in every bucket will have its "duplicate" property set to True, unless + it's explicitly marked as `false` in `duplicity_overrides.json`. """ dup_symbols = defaultdict(list) - dup_keys = defaultdict(list) - - def dups_only(dups): - return {k: v for k, v in dups.items() if len(v) > 1} for coin in coins: symbol, _ = symbol_from_shortcut(coin["shortcut"].lower()) dup_symbols[symbol].append(coin) - dup_keys[coin["key"]].append(coin) - - dup_symbols = dups_only(dup_symbols) - dup_keys = dups_only(dup_keys) - # first deduplicate keys so that we can identify overrides - for values in dup_keys.values(): - for i, coin in enumerate(values): - coin["key"] += ":" + str(i) + dup_symbols = {k: v for k, v in dup_symbols.items() if len(v) > 1} # load overrides and put them into their own bucket overrides = load_json("duplicity_overrides.json") @@ -413,18 +392,6 @@ def mark_duplicate_shortcuts(coins): # mark duplicate symbols for values in dup_symbols.values(): - splits = (symbol_from_shortcut(coin["shortcut"]) for coin in values) - suffixes = {suffix for _, suffix in splits} - # if 1. all suffixes are distinct and 2. none of them are empty - if len(suffixes) == len(values) and all(suffixes): - # Allow the whole bucket. - # For all intents and purposes these should be considered non-dups - # So we won't mark them as dups here - # But they still have their own bucket, and also overrides can - # explicitly mark them as duplicate one step before, in which case - # they *still* keep duplicate status (and possibly are deleted). - continue - for coin in values: # allow overrides to skip this; if not listed in overrides, assume True is_dup = overrides.get(coin["key"], True) @@ -436,6 +403,91 @@ def mark_duplicate_shortcuts(coins): return dup_symbols +def deduplicate_erc20(buckets, networks): + """Apply further processing to ERC20 duplicate buckets. + + This function works on results of `mark_duplicate_shortcuts`. + + Buckets that contain at least one non-token are ignored - symbol collisions + with non-tokens are always fatal. + + Otherwise the following rules are applied: + + 1. If _all tokens_ in the bucket have shortcuts with distinct suffixes, e.g., + `CAT (BitClave)` and `CAT (Blockcat)`, the bucket is cleared - all are considered + non-duplicate. + + (If even one token in the bucket _does not_ have a distinct suffix, e.g., + `MIT` and `MIT (Mychatcoin)`, this rule does not apply and ALL tokens in the bucket + are still considered duplicate.) + + 2. If there is only one "main" token in the bucket, the bucket is cleared. + That means that all other tokens must either be on testnets, or they must be marked + as deprecated, with a deprecation pointing to the "main" token. + """ + + testnet_networks = {n["chain"] for n in networks if "Testnet" in n["name"]} + overrides = buckets["_override"] + + def clear_bucket(bucket): + # allow all coins, except those that are explicitly marked through overrides + for coin in bucket: + if coin not in overrides: + coin["duplicate"] = False + + for bucket in buckets.values(): + # Only check buckets that contain purely ERC20 tokens. Collision with + # a non-token is always forbidden. + if not all(is_token(c) for c in bucket): + continue + + splits = (symbol_from_shortcut(coin["shortcut"]) for coin in bucket) + suffixes = {suffix for _, suffix in splits} + # if 1. all suffixes are distinct and 2. none of them are empty + if len(suffixes) == len(bucket) and all(suffixes): + clear_bucket(bucket) + continue + + # protected categories: + testnets = [coin for coin in bucket if coin["chain"] in testnet_networks] + deprecated_by_same = [ + coin + for coin in bucket + if "deprecation" in coin + and any( + other["address"] == coin["deprecation"]["new_address"] + for other in bucket + ) + ] + remaining = [ + coin + for coin in bucket + if coin not in testnets and coin not in deprecated_by_same + ] + if len(remaining) <= 1: + for coin in deprecated_by_same: + deprecated_symbol = "[deprecated] " + coin["symbol"] + coin["shortcut"] = coin["symbol"] = deprecated_symbol + coin["key"] += ":deprecated" + clear_bucket(bucket) + + +def deduplicate_keys(all_coins): + dups = defaultdict(list) + for coin in all_coins: + dups[coin["key"]].append(coin) + + for coins in dups.values(): + if len(coins) <= 1: + continue + for i, coin in enumerate(coins): + if is_token(coin): + coin["key"] += ":" + coin["address"][2:6].lower() # first 4 hex chars + else: + coin["key"] += ":{}".format(i) + coin["dup_key_nontoken"] = True + + def _btc_sort_key(coin): if coin["name"] in ("Bitcoin", "Testnet"): return "000000" + coin["name"] @@ -485,6 +537,8 @@ def coin_info_with_duplicates(): """ all_coins = collect_coin_info() buckets = mark_duplicate_shortcuts(all_coins.as_list()) + deduplicate_erc20(buckets, all_coins.eth) + deduplicate_keys(all_coins.as_list()) return all_coins, buckets diff --git a/tools/cointool.py b/tools/cointool.py index b99d2a262..d3c0daf10 100755 --- a/tools/cointool.py +++ b/tools/cointool.py @@ -150,7 +150,7 @@ def highlight_key(coin, color): else: keylist[-1] = crayon(color, keylist[-1], bold=True) key = crayon(color, ":".join(keylist)) - name = crayon(None, "({})".format(coin['name']), dim=True) + name = crayon(None, "({})".format(coin["name"]), dim=True) return "{} {}".format(key, name) @@ -167,7 +167,9 @@ def check_eth(coins): check_passed = True chains = find_collisions(coins, "chain") for key, bucket in chains.items(): - bucket_str = ", ".join("{} ({})".format(coin['key'], coin['name']) for coin in bucket) + bucket_str = ", ".join( + "{} ({})".format(coin["key"], coin["name"]) for coin in bucket + ) chain_name_str = "colliding chain name " + crayon(None, key, bold=True) + ":" print_log(logging.ERROR, chain_name_str, bucket_str) check_passed = False @@ -389,10 +391,15 @@ def check_key_uniformity(coins): keyset = set(coin.keys()) | IGNORE_NONUNIFORM_KEYS missing = ", ".join(reference_keyset - keyset) if missing: - print_log(logging.ERROR, "coin {} has missing keys: {}".format(key, missing)) + print_log( + logging.ERROR, "coin {} has missing keys: {}".format(key, missing) + ) additional = ", ".join(keyset - reference_keyset) if additional: - print_log(logging.ERROR, "coin {} has superfluous keys: {}".format(key, additional)) + print_log( + logging.ERROR, + "coin {} has superfluous keys: {}".format(key, additional), + ) return False @@ -532,6 +539,14 @@ def check(backend, icons, show_duplicates): if not check_dups(buckets, dup_level): all_checks_passed = False + nontoken_dups = [coin for coin in defs.as_list() if "dup_key_nontoken" in coin] + if nontoken_dups: + nontoken_dup_str = ", ".join( + highlight_key(coin, "red") for coin in nontoken_dups + ) + print_log(logging.ERROR, "Non-token duplicate keys: " + nontoken_dup_str) + all_checks_passed = False + if icons: print("Checking icon files...") if not check_icons(defs.bitcoin): From b02390f56071dae3d54932ceab8af80b097e1b75 Mon Sep 17 00:00:00 2001 From: matejcik Date: Thu, 29 Nov 2018 15:43:30 +0100 Subject: [PATCH 658/767] tokens: new tokens checkout --- defs/ethereum/tokens | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/defs/ethereum/tokens b/defs/ethereum/tokens index 492a54491..ac3936c37 160000 --- a/defs/ethereum/tokens +++ b/defs/ethereum/tokens @@ -1 +1 @@ -Subproject commit 492a5449193df1f8359572a2108a795109601c41 +Subproject commit ac3936c3713e3da78caeefd4fda2408f97906c08 From e8d38b909089ec51f61224290595663cc51be4f3 Mon Sep 17 00:00:00 2001 From: matejcik Date: Thu, 29 Nov 2018 15:43:49 +0100 Subject: [PATCH 659/767] defs: allow USDT ERC20 token (collides with USDT OMNI token) --- defs/duplicity_overrides.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/defs/duplicity_overrides.json b/defs/duplicity_overrides.json index 7832becea..ee40caa1f 100644 --- a/defs/duplicity_overrides.json +++ b/defs/duplicity_overrides.json @@ -4,5 +4,6 @@ "erc20:eth:LINK Platform": true, "erc20:eth:NXX": false, "erc20:eth:Hdp": true, - "erc20:eth:Hdp.Ñ„": true + "erc20:eth:Hdp.Ñ„": true, + "erc20:eth:USDT": false } From 7eb479c4f3b3d96b96ad861e7768319ac1fb67a6 Mon Sep 17 00:00:00 2001 From: matejcik Date: Thu, 29 Nov 2018 15:46:26 +0100 Subject: [PATCH 660/767] support: regenerate duplicates list --- defs/support.json | 460 +++++++++++++++++++++------------------------- 1 file changed, 212 insertions(+), 248 deletions(-) diff --git a/defs/support.json b/defs/support.json index 313c80365..d9f00ea31 100644 --- a/defs/support.json +++ b/defs/support.json @@ -247,7 +247,6 @@ "erc20:eth:COB": "1.6.2", "erc20:eth:COFI": "1.6.2", "erc20:eth:COIL": "1.6.2", - "erc20:eth:COIN": "1.6.2", "erc20:eth:CORI": "1.6.3", "erc20:eth:COV": "1.6.2", "erc20:eth:CPEX": "1.6.2", @@ -668,7 +667,6 @@ "erc20:eth:TBT": "1.6.2", "erc20:eth:TCA": "1.7.1", "erc20:eth:TDH": "1.6.2", - "erc20:eth:TEL": "1.6.2", "erc20:eth:TFL": "1.6.2", "erc20:eth:THETA": "1.6.2", "erc20:eth:THUG": "1.6.2", @@ -810,158 +808,142 @@ "bitcoin:TRC": "address_type collides with Bitcoin", "bitcoin:ZEN": "not implemented", "erc20:etc:PLAY": "(AUTO) duplicate key", - "erc20:eth:A18:0": "(AUTO) duplicate key", - "erc20:eth:A18:1": "(AUTO) duplicate key", + "erc20:eth:A18:ba7d": "(AUTO) duplicate key", + "erc20:eth:A18:bde8": "(AUTO) duplicate key", "erc20:eth:ATH": "(AUTO) duplicate key", "erc20:eth:ATH (AIgatha Token)": "(AUTO) duplicate key", - "erc20:eth:BNC:0": "(AUTO) duplicate key", - "erc20:eth:BNC:1": "(AUTO) duplicate key", - "erc20:eth:BOX:0": "(AUTO) duplicate key", - "erc20:eth:BOX:1": "(AUTO) duplicate key", + "erc20:eth:BCAP:1f41": "(AUTO) duplicate key", + "erc20:eth:BCAP:ff35": "(AUTO) duplicate key", + "erc20:eth:BNC:dd6b": "(AUTO) duplicate key", + "erc20:eth:BNC:ef51": "(AUTO) duplicate key", + "erc20:eth:BOX:63f5": "(AUTO) duplicate key", + "erc20:eth:BOX:e1a1": "(AUTO) duplicate key", "erc20:eth:BTL (Battle)": "(AUTO) duplicate key", "erc20:eth:BTL (Bitlle)": "(AUTO) duplicate key", "erc20:eth:CAR": "(AUTO) duplicate key", "erc20:eth:CAR (CarBlock)": "(AUTO) duplicate key", - "erc20:eth:CARD:0": "(AUTO) duplicate key", - "erc20:eth:CARD:1": "(AUTO) duplicate key", - "erc20:eth:CARD:2": "(AUTO) duplicate key", - "erc20:eth:CDX:0": "(AUTO) duplicate key", - "erc20:eth:CDX:1": "(AUTO) duplicate key", - "erc20:eth:COSS:0": "(AUTO) duplicate key", - "erc20:eth:COSS:1": "(AUTO) duplicate key", + "erc20:eth:CARD:1ed2": "(AUTO) duplicate key", + "erc20:eth:CARD:954b": "(AUTO) duplicate key", + "erc20:eth:CARD:b07e": "(AUTO) duplicate key", + "erc20:eth:CDX:2cb1": "(AUTO) duplicate key", + "erc20:eth:CDX:6fff": "(AUTO) duplicate key", + "erc20:eth:COIN:5e8f": "(AUTO) duplicate key", + "erc20:eth:COIN:eb54": "(AUTO) duplicate key", + "erc20:eth:COSS:6529": "(AUTO) duplicate key", + "erc20:eth:COSS:9e96": "(AUTO) duplicate key", "erc20:eth:CPC": "(AUTO) duplicate key", - "erc20:eth:DAI": "(AUTO) duplicate key", "erc20:eth:DEPO": "(AUTO) duplicate key", "erc20:eth:DEPO (Depository Network)": "(AUTO) duplicate key", - "erc20:eth:DGD": "(AUTO) duplicate key", - "erc20:eth:DOW:0": "(AUTO) duplicate key", - "erc20:eth:DOW:1": "(AUTO) duplicate key", + "erc20:eth:DOW:7697": "(AUTO) duplicate key", + "erc20:eth:DOW:eef6": "(AUTO) duplicate key", "erc20:eth:DROP": "(AUTO) duplicate key", "erc20:eth:DROP (dropil)": "(AUTO) duplicate key", - "erc20:eth:DRP:0": "(AUTO) duplicate key", - "erc20:eth:DRP:1": "(AUTO) duplicate key", + "erc20:eth:DRP:2799": "(AUTO) duplicate key", + "erc20:eth:DRP:621d": "(AUTO) duplicate key", "erc20:eth:DTX": "(AUTO) duplicate key", "erc20:eth:DTx": "(AUTO) duplicate key", - "erc20:eth:DUBI:0": "(AUTO) duplicate key", - "erc20:eth:DUBI:1": "(AUTO) duplicate key", - "erc20:eth:DUBI:2": "(AUTO) duplicate key", - "erc20:eth:ECP:0": "(AUTO) duplicate key", - "erc20:eth:ECP:1": "(AUTO) duplicate key", - "erc20:eth:EDU:0": "(AUTO) duplicate key", - "erc20:eth:EDU:1": "(AUTO) duplicate key", - "erc20:eth:EGT:0": "(AUTO) duplicate key", - "erc20:eth:EGT:1": "(AUTO) duplicate key", + "erc20:eth:DUBI:9c6f": "(AUTO) duplicate key", + "erc20:eth:DUBI:d4cf": "(AUTO) duplicate key", + "erc20:eth:DUBI:ed7f": "(AUTO) duplicate key", + "erc20:eth:ECP:8869": "(AUTO) duplicate key", + "erc20:eth:ECP:aea1": "(AUTO) duplicate key", + "erc20:eth:EDU:2a22": "(AUTO) duplicate key", + "erc20:eth:EDU:5b26": "(AUTO) duplicate key", + "erc20:eth:EGT:5dba": "(AUTO) duplicate key", + "erc20:eth:EGT:8e1b": "(AUTO) duplicate key", "erc20:eth:EOS": "switched to custom network", - "erc20:eth:EVN:0": "(AUTO) duplicate key", - "erc20:eth:EVN:1": "(AUTO) duplicate key", - "erc20:eth:FANX:0": "(AUTO) duplicate key", - "erc20:eth:FANX:1": "(AUTO) duplicate key", - "erc20:eth:FLMC:0": "(AUTO) duplicate key", - "erc20:eth:FLMC:1": "(AUTO) duplicate key", + "erc20:eth:EVN:6890": "(AUTO) duplicate key", + "erc20:eth:EVN:d780": "(AUTO) duplicate key", + "erc20:eth:FANX:7dcb": "(AUTO) duplicate key", + "erc20:eth:FANX:7f67": "(AUTO) duplicate key", + "erc20:eth:FLMC:04cc": "(AUTO) duplicate key", + "erc20:eth:FLMC:5976": "(AUTO) duplicate key", "erc20:eth:FTC": "(AUTO) duplicate key", - "erc20:eth:FUCK:0": "(AUTO) duplicate key", - "erc20:eth:FUCK:1": "(AUTO) duplicate key", - "erc20:eth:GANA:0": "(AUTO) duplicate key", - "erc20:eth:GANA:1": "(AUTO) duplicate key", - "erc20:eth:GNT": "(AUTO) duplicate key", - "erc20:eth:GUP": "(AUTO) duplicate key", - "erc20:eth:HOT:0": "(AUTO) duplicate key", - "erc20:eth:HOT:1": "(AUTO) duplicate key", + "erc20:eth:FUCK:65be": "(AUTO) duplicate key", + "erc20:eth:FUCK:ab16": "(AUTO) duplicate key", + "erc20:eth:GANA:6754": "(AUTO) duplicate key", + "erc20:eth:GANA:c0ea": "(AUTO) duplicate key", + "erc20:eth:HOT:6c6e": "(AUTO) duplicate key", + "erc20:eth:HOT:9af8": "(AUTO) duplicate key", "erc20:eth:Hdp": "(AUTO) duplicate key", "erc20:eth:Hdp.\u0444": "(AUTO) duplicate key", - "erc20:eth:IMT:0": "(AUTO) duplicate key", - "erc20:eth:IMT:1": "(AUTO) duplicate key", - "erc20:eth:JBX:0": "(AUTO) duplicate key", - "erc20:eth:JBX:1": "(AUTO) duplicate key", - "erc20:eth:KC": "(AUTO) duplicate key", - "erc20:eth:KEY:0": "(AUTO) duplicate key", - "erc20:eth:KEY:1": "(AUTO) duplicate key", - "erc20:eth:LCT:0": "(AUTO) duplicate key", - "erc20:eth:LCT:1": "(AUTO) duplicate key", - "erc20:eth:LEMO:0": "(AUTO) duplicate key", - "erc20:eth:LEMO:1": "(AUTO) duplicate key", - "erc20:eth:LEMO:2": "(AUTO) duplicate key", + "erc20:eth:IMT:1311": "(AUTO) duplicate key", + "erc20:eth:IMT:22e5": "(AUTO) duplicate key", + "erc20:eth:JBX:0aaf": "(AUTO) duplicate key", + "erc20:eth:JBX:884e": "(AUTO) duplicate key", + "erc20:eth:KEY:4cc1": "(AUTO) duplicate key", + "erc20:eth:KEY:4cd9": "(AUTO) duplicate key", + "erc20:eth:LCT:05c7": "(AUTO) duplicate key", + "erc20:eth:LCT:4a37": "(AUTO) duplicate key", + "erc20:eth:LEMO:60c2": "(AUTO) duplicate key", + "erc20:eth:LEMO:b5ae": "(AUTO) duplicate key", + "erc20:eth:LEMO:d6e3": "(AUTO) duplicate key", "erc20:eth:LINK Platform": "(AUTO) duplicate key", "erc20:eth:LNC": "(AUTO) duplicate key", "erc20:eth:LNC (Linker Coin)": "(AUTO) duplicate key", - "erc20:eth:MESH:0": "(AUTO) duplicate key", - "erc20:eth:MESH:1": "(AUTO) duplicate key", + "erc20:eth:MESH:01f2": "(AUTO) duplicate key", + "erc20:eth:MESH:f030": "(AUTO) duplicate key", "erc20:eth:MIT": "(AUTO) duplicate key", "erc20:eth:MIT (Mychatcoin)": "(AUTO) duplicate key", - "erc20:eth:MKR": "(AUTO) duplicate key", - "erc20:eth:MLN": "(AUTO) duplicate key", - "erc20:eth:MTC:0": "(AUTO) duplicate key", - "erc20:eth:MTC:1": "(AUTO) duplicate key", - "erc20:eth:NONE": "(AUTO) duplicate key", - "erc20:eth:NTK:0": "(AUTO) duplicate key", - "erc20:eth:NTK:1": "(AUTO) duplicate key", + "erc20:eth:MTC:905e": "(AUTO) duplicate key", + "erc20:eth:MTC:dfdc": "(AUTO) duplicate key", + "erc20:eth:NCC:5d48": "(AUTO) duplicate key", + "erc20:eth:NCC:9344": "(AUTO) duplicate key", + "erc20:eth:NTK:5d4d": "(AUTO) duplicate key", + "erc20:eth:NTK:69be": "(AUTO) duplicate key", "erc20:eth:NXX OLD": "(AUTO) duplicate key", - "erc20:eth:OHNI:0": "(AUTO) duplicate key", - "erc20:eth:OHNI:1": "(AUTO) duplicate key", - "erc20:eth:OPEN:0": "(AUTO) duplicate key", - "erc20:eth:OPEN:1": "(AUTO) duplicate key", - "erc20:eth:PAT:0": "(AUTO) duplicate key", - "erc20:eth:PAT:1": "(AUTO) duplicate key", - "erc20:eth:PCH:0": "(AUTO) duplicate key", - "erc20:eth:PCH:1": "(AUTO) duplicate key", + "erc20:eth:OHNI:6f53": "(AUTO) duplicate key", + "erc20:eth:OHNI:7f21": "(AUTO) duplicate key", + "erc20:eth:OPEN:69c4": "(AUTO) duplicate key", + "erc20:eth:OPEN:e9de": "(AUTO) duplicate key", + "erc20:eth:PAT:bb1f": "(AUTO) duplicate key", + "erc20:eth:PAT:f3b3": "(AUTO) duplicate key", + "erc20:eth:PCH:e3f4": "(AUTO) duplicate key", + "erc20:eth:PCH:fcac": "(AUTO) duplicate key", "erc20:eth:PLAY": "(AUTO) duplicate key", - "erc20:eth:PRO:0": "(AUTO) duplicate key", - "erc20:eth:PRO:1": "(AUTO) duplicate key", - "erc20:eth:PRPS:0": "(AUTO) duplicate key", - "erc20:eth:PRPS:1": "(AUTO) duplicate key", - "erc20:eth:PRPS:2": "(AUTO) duplicate key", + "erc20:eth:PRO:226b": "(AUTO) duplicate key", + "erc20:eth:PRO:9041": "(AUTO) duplicate key", + "erc20:eth:PRPS:7641": "(AUTO) duplicate key", + "erc20:eth:PRPS:d94f": "(AUTO) duplicate key", + "erc20:eth:PRPS:e40c": "(AUTO) duplicate key", "erc20:eth:PTC": "(AUTO) duplicate key", - "erc20:eth:RCT:0": "(AUTO) duplicate key", - "erc20:eth:RCT:1": "(AUTO) duplicate key", - "erc20:eth:RDN": "(AUTO) duplicate key", - "erc20:eth:REP:0": "(AUTO) duplicate key", - "erc20:eth:REP:1": "(AUTO) duplicate key", - "erc20:eth:RING:0": "(AUTO) duplicate key", - "erc20:eth:RING:1": "(AUTO) duplicate key", - "erc20:eth:SGT:0": "(AUTO) duplicate key", - "erc20:eth:SGT:1": "(AUTO) duplicate key", - "erc20:eth:SKRP:0": "(AUTO) duplicate key", - "erc20:eth:SKRP:1": "(AUTO) duplicate key", - "erc20:eth:SKRP:2": "(AUTO) duplicate key", + "erc20:eth:RCT:13f2": "(AUTO) duplicate key", + "erc20:eth:RCT:2a3a": "(AUTO) duplicate key", + "erc20:eth:RING:86e5": "(AUTO) duplicate key", + "erc20:eth:RING:9469": "(AUTO) duplicate key", + "erc20:eth:SGT:3742": "(AUTO) duplicate key", + "erc20:eth:SGT:d248": "(AUTO) duplicate key", + "erc20:eth:SKRP:324a": "(AUTO) duplicate key", + "erc20:eth:SKRP:6e34": "(AUTO) duplicate key", + "erc20:eth:SKRP:fdfe": "(AUTO) duplicate key", "erc20:eth:SMART": "(AUTO) duplicate key", - "erc20:eth:SMT:0": "(AUTO) duplicate key", - "erc20:eth:SMT:1": "(AUTO) duplicate key", - "erc20:eth:SMT:2": "(AUTO) duplicate key", - "erc20:eth:SS:0": "(AUTO) duplicate key", - "erc20:eth:SS:1": "(AUTO) duplicate key", - "erc20:eth:TICO:0": "(AUTO) duplicate key", - "erc20:eth:TICO:1": "(AUTO) duplicate key", + "erc20:eth:SMT:2dcf": "(AUTO) duplicate key", + "erc20:eth:SMT:55f9": "(AUTO) duplicate key", + "erc20:eth:SMT:78eb": "(AUTO) duplicate key", + "erc20:eth:SS:b15f": "(AUTO) duplicate key", + "erc20:eth:SS:bbff": "(AUTO) duplicate key", + "erc20:eth:TEL:85e0": "(AUTO) duplicate key", + "erc20:eth:TEL:ec32": "(AUTO) duplicate key", + "erc20:eth:TICO:7f4b": "(AUTO) duplicate key", + "erc20:eth:TICO:a5db": "(AUTO) duplicate key", "erc20:eth:TRC": "(AUTO) duplicate key", "erc20:eth:TRX": "switched to custom network", - "erc20:eth:UMKA:0": "(AUTO) duplicate key", - "erc20:eth:UMKA:1": "(AUTO) duplicate key", - "erc20:eth:VIBEX:0": "(AUTO) duplicate key", - "erc20:eth:VIBEX:1": "(AUTO) duplicate key", - "erc20:eth:VRS:0": "(AUTO) duplicate key", - "erc20:eth:VRS:1": "(AUTO) duplicate key", - "erc20:eth:WHO:0": "(AUTO) duplicate key", - "erc20:eth:WHO:1": "(AUTO) duplicate key", + "erc20:eth:UMKA:105d": "(AUTO) duplicate key", + "erc20:eth:UMKA:8e5a": "(AUTO) duplicate key", + "erc20:eth:VIBEX:8824": "(AUTO) duplicate key", + "erc20:eth:VIBEX:e8ff": "(AUTO) duplicate key", + "erc20:eth:VRS:92e7": "(AUTO) duplicate key", + "erc20:eth:VRS:edba": "(AUTO) duplicate key", + "erc20:eth:WHO:e200": "(AUTO) duplicate key", + "erc20:eth:WHO:e933": "(AUTO) duplicate key", "erc20:eth:WIC": "(AUTO) duplicate key", - "erc20:eth:WOLK:0": "(AUTO) duplicate key", - "erc20:eth:WOLK:1": "(AUTO) duplicate key", - "erc20:eth:WORK:0": "(AUTO) duplicate key", - "erc20:eth:WORK:1": "(AUTO) duplicate key", + "erc20:eth:WOLK:7287": "(AUTO) duplicate key", + "erc20:eth:WOLK:f6b5": "(AUTO) duplicate key", + "erc20:eth:WORK:a686": "(AUTO) duplicate key", + "erc20:eth:WORK:d18e": "(AUTO) duplicate key", "erc20:eth:WiC": "(AUTO) duplicate key", - "erc20:eth:YEED:0": "(AUTO) duplicate key", - "erc20:eth:YEED:1": "(AUTO) duplicate key", - "erc20:eth:ZRX": "(AUTO) duplicate key", - "erc20:kov:DAI": "(AUTO) duplicate key", - "erc20:kov:DGD": "(AUTO) duplicate key", - "erc20:kov:GNT": "(AUTO) duplicate key", - "erc20:kov:GUP": "(AUTO) duplicate key", - "erc20:kov:MKR": "(AUTO) duplicate key", - "erc20:kov:MLN": "(AUTO) duplicate key", - "erc20:kov:REP": "(AUTO) duplicate key", - "erc20:kov:ZRX": "(AUTO) duplicate key", - "erc20:rin:KC": "(AUTO) duplicate key", - "erc20:rin:NONE": "(AUTO) duplicate key", - "erc20:rin:RDN": "(AUTO) duplicate key", - "erc20:rop:NONE": "(AUTO) duplicate key", + "erc20:eth:YEED:6f7a": "(AUTO) duplicate key", + "erc20:eth:YEED:ca27": "(AUTO) duplicate key", "misc:ADA": "not implemented", "misc:EOS": "not implemented", "misc:ONT": "not implemented", @@ -1171,7 +1153,6 @@ "erc20:eth:COB": "2.0.7", "erc20:eth:COFI": "2.0.7", "erc20:eth:COIL": "2.0.7", - "erc20:eth:COIN": "2.0.7", "erc20:eth:CORI": "2.0.8", "erc20:eth:COV": "2.0.7", "erc20:eth:CPEX": "2.0.7", @@ -1593,7 +1574,6 @@ "erc20:eth:TBT": "2.0.7", "erc20:eth:TCA": "2.0.8", "erc20:eth:TDH": "2.0.7", - "erc20:eth:TEL": "2.0.7", "erc20:eth:TFL": "2.0.7", "erc20:eth:THETA": "2.0.7", "erc20:eth:THUG": "2.0.7", @@ -1741,158 +1721,142 @@ "bitcoin:CRW": "address_type collides with Bitcoin", "bitcoin:TRC": "address_type collides with Bitcoin", "erc20:etc:PLAY": "(AUTO) duplicate key", - "erc20:eth:A18:0": "(AUTO) duplicate key", - "erc20:eth:A18:1": "(AUTO) duplicate key", + "erc20:eth:A18:ba7d": "(AUTO) duplicate key", + "erc20:eth:A18:bde8": "(AUTO) duplicate key", "erc20:eth:ATH": "(AUTO) duplicate key", "erc20:eth:ATH (AIgatha Token)": "(AUTO) duplicate key", - "erc20:eth:BNC:0": "(AUTO) duplicate key", - "erc20:eth:BNC:1": "(AUTO) duplicate key", - "erc20:eth:BOX:0": "(AUTO) duplicate key", - "erc20:eth:BOX:1": "(AUTO) duplicate key", + "erc20:eth:BCAP:1f41": "(AUTO) duplicate key", + "erc20:eth:BCAP:ff35": "(AUTO) duplicate key", + "erc20:eth:BNC:dd6b": "(AUTO) duplicate key", + "erc20:eth:BNC:ef51": "(AUTO) duplicate key", + "erc20:eth:BOX:63f5": "(AUTO) duplicate key", + "erc20:eth:BOX:e1a1": "(AUTO) duplicate key", "erc20:eth:BTL (Battle)": "(AUTO) duplicate key", "erc20:eth:BTL (Bitlle)": "(AUTO) duplicate key", "erc20:eth:CAR": "(AUTO) duplicate key", "erc20:eth:CAR (CarBlock)": "(AUTO) duplicate key", - "erc20:eth:CARD:0": "(AUTO) duplicate key", - "erc20:eth:CARD:1": "(AUTO) duplicate key", - "erc20:eth:CARD:2": "(AUTO) duplicate key", - "erc20:eth:CDX:0": "(AUTO) duplicate key", - "erc20:eth:CDX:1": "(AUTO) duplicate key", - "erc20:eth:COSS:0": "(AUTO) duplicate key", - "erc20:eth:COSS:1": "(AUTO) duplicate key", + "erc20:eth:CARD:1ed2": "(AUTO) duplicate key", + "erc20:eth:CARD:954b": "(AUTO) duplicate key", + "erc20:eth:CARD:b07e": "(AUTO) duplicate key", + "erc20:eth:CDX:2cb1": "(AUTO) duplicate key", + "erc20:eth:CDX:6fff": "(AUTO) duplicate key", + "erc20:eth:COIN:5e8f": "(AUTO) duplicate key", + "erc20:eth:COIN:eb54": "(AUTO) duplicate key", + "erc20:eth:COSS:6529": "(AUTO) duplicate key", + "erc20:eth:COSS:9e96": "(AUTO) duplicate key", "erc20:eth:CPC": "(AUTO) duplicate key", - "erc20:eth:DAI": "(AUTO) duplicate key", "erc20:eth:DEPO": "(AUTO) duplicate key", "erc20:eth:DEPO (Depository Network)": "(AUTO) duplicate key", - "erc20:eth:DGD": "(AUTO) duplicate key", - "erc20:eth:DOW:0": "(AUTO) duplicate key", - "erc20:eth:DOW:1": "(AUTO) duplicate key", + "erc20:eth:DOW:7697": "(AUTO) duplicate key", + "erc20:eth:DOW:eef6": "(AUTO) duplicate key", "erc20:eth:DROP": "(AUTO) duplicate key", "erc20:eth:DROP (dropil)": "(AUTO) duplicate key", - "erc20:eth:DRP:0": "(AUTO) duplicate key", - "erc20:eth:DRP:1": "(AUTO) duplicate key", + "erc20:eth:DRP:2799": "(AUTO) duplicate key", + "erc20:eth:DRP:621d": "(AUTO) duplicate key", "erc20:eth:DTX": "(AUTO) duplicate key", "erc20:eth:DTx": "(AUTO) duplicate key", - "erc20:eth:DUBI:0": "(AUTO) duplicate key", - "erc20:eth:DUBI:1": "(AUTO) duplicate key", - "erc20:eth:DUBI:2": "(AUTO) duplicate key", - "erc20:eth:ECP:0": "(AUTO) duplicate key", - "erc20:eth:ECP:1": "(AUTO) duplicate key", - "erc20:eth:EDU:0": "(AUTO) duplicate key", - "erc20:eth:EDU:1": "(AUTO) duplicate key", - "erc20:eth:EGT:0": "(AUTO) duplicate key", - "erc20:eth:EGT:1": "(AUTO) duplicate key", + "erc20:eth:DUBI:9c6f": "(AUTO) duplicate key", + "erc20:eth:DUBI:d4cf": "(AUTO) duplicate key", + "erc20:eth:DUBI:ed7f": "(AUTO) duplicate key", + "erc20:eth:ECP:8869": "(AUTO) duplicate key", + "erc20:eth:ECP:aea1": "(AUTO) duplicate key", + "erc20:eth:EDU:2a22": "(AUTO) duplicate key", + "erc20:eth:EDU:5b26": "(AUTO) duplicate key", + "erc20:eth:EGT:5dba": "(AUTO) duplicate key", + "erc20:eth:EGT:8e1b": "(AUTO) duplicate key", "erc20:eth:EOS": "switched to custom network", - "erc20:eth:EVN:0": "(AUTO) duplicate key", - "erc20:eth:EVN:1": "(AUTO) duplicate key", - "erc20:eth:FANX:0": "(AUTO) duplicate key", - "erc20:eth:FANX:1": "(AUTO) duplicate key", - "erc20:eth:FLMC:0": "(AUTO) duplicate key", - "erc20:eth:FLMC:1": "(AUTO) duplicate key", + "erc20:eth:EVN:6890": "(AUTO) duplicate key", + "erc20:eth:EVN:d780": "(AUTO) duplicate key", + "erc20:eth:FANX:7dcb": "(AUTO) duplicate key", + "erc20:eth:FANX:7f67": "(AUTO) duplicate key", + "erc20:eth:FLMC:04cc": "(AUTO) duplicate key", + "erc20:eth:FLMC:5976": "(AUTO) duplicate key", "erc20:eth:FTC": "(AUTO) duplicate key", - "erc20:eth:FUCK:0": "(AUTO) duplicate key", - "erc20:eth:FUCK:1": "(AUTO) duplicate key", - "erc20:eth:GANA:0": "(AUTO) duplicate key", - "erc20:eth:GANA:1": "(AUTO) duplicate key", - "erc20:eth:GNT": "(AUTO) duplicate key", - "erc20:eth:GUP": "(AUTO) duplicate key", - "erc20:eth:HOT:0": "(AUTO) duplicate key", - "erc20:eth:HOT:1": "(AUTO) duplicate key", + "erc20:eth:FUCK:65be": "(AUTO) duplicate key", + "erc20:eth:FUCK:ab16": "(AUTO) duplicate key", + "erc20:eth:GANA:6754": "(AUTO) duplicate key", + "erc20:eth:GANA:c0ea": "(AUTO) duplicate key", + "erc20:eth:HOT:6c6e": "(AUTO) duplicate key", + "erc20:eth:HOT:9af8": "(AUTO) duplicate key", "erc20:eth:Hdp": "(AUTO) duplicate key", "erc20:eth:Hdp.\u0444": "(AUTO) duplicate key", - "erc20:eth:IMT:0": "(AUTO) duplicate key", - "erc20:eth:IMT:1": "(AUTO) duplicate key", - "erc20:eth:JBX:0": "(AUTO) duplicate key", - "erc20:eth:JBX:1": "(AUTO) duplicate key", - "erc20:eth:KC": "(AUTO) duplicate key", - "erc20:eth:KEY:0": "(AUTO) duplicate key", - "erc20:eth:KEY:1": "(AUTO) duplicate key", - "erc20:eth:LCT:0": "(AUTO) duplicate key", - "erc20:eth:LCT:1": "(AUTO) duplicate key", - "erc20:eth:LEMO:0": "(AUTO) duplicate key", - "erc20:eth:LEMO:1": "(AUTO) duplicate key", - "erc20:eth:LEMO:2": "(AUTO) duplicate key", + "erc20:eth:IMT:1311": "(AUTO) duplicate key", + "erc20:eth:IMT:22e5": "(AUTO) duplicate key", + "erc20:eth:JBX:0aaf": "(AUTO) duplicate key", + "erc20:eth:JBX:884e": "(AUTO) duplicate key", + "erc20:eth:KEY:4cc1": "(AUTO) duplicate key", + "erc20:eth:KEY:4cd9": "(AUTO) duplicate key", + "erc20:eth:LCT:05c7": "(AUTO) duplicate key", + "erc20:eth:LCT:4a37": "(AUTO) duplicate key", + "erc20:eth:LEMO:60c2": "(AUTO) duplicate key", + "erc20:eth:LEMO:b5ae": "(AUTO) duplicate key", + "erc20:eth:LEMO:d6e3": "(AUTO) duplicate key", "erc20:eth:LINK Platform": "(AUTO) duplicate key", "erc20:eth:LNC": "(AUTO) duplicate key", "erc20:eth:LNC (Linker Coin)": "(AUTO) duplicate key", - "erc20:eth:MESH:0": "(AUTO) duplicate key", - "erc20:eth:MESH:1": "(AUTO) duplicate key", + "erc20:eth:MESH:01f2": "(AUTO) duplicate key", + "erc20:eth:MESH:f030": "(AUTO) duplicate key", "erc20:eth:MIT": "(AUTO) duplicate key", "erc20:eth:MIT (Mychatcoin)": "(AUTO) duplicate key", - "erc20:eth:MKR": "(AUTO) duplicate key", - "erc20:eth:MLN": "(AUTO) duplicate key", - "erc20:eth:MTC:0": "(AUTO) duplicate key", - "erc20:eth:MTC:1": "(AUTO) duplicate key", - "erc20:eth:NONE": "(AUTO) duplicate key", - "erc20:eth:NTK:0": "(AUTO) duplicate key", - "erc20:eth:NTK:1": "(AUTO) duplicate key", + "erc20:eth:MTC:905e": "(AUTO) duplicate key", + "erc20:eth:MTC:dfdc": "(AUTO) duplicate key", + "erc20:eth:NCC:5d48": "(AUTO) duplicate key", + "erc20:eth:NCC:9344": "(AUTO) duplicate key", + "erc20:eth:NTK:5d4d": "(AUTO) duplicate key", + "erc20:eth:NTK:69be": "(AUTO) duplicate key", "erc20:eth:NXX OLD": "(AUTO) duplicate key", - "erc20:eth:OHNI:0": "(AUTO) duplicate key", - "erc20:eth:OHNI:1": "(AUTO) duplicate key", - "erc20:eth:OPEN:0": "(AUTO) duplicate key", - "erc20:eth:OPEN:1": "(AUTO) duplicate key", - "erc20:eth:PAT:0": "(AUTO) duplicate key", - "erc20:eth:PAT:1": "(AUTO) duplicate key", - "erc20:eth:PCH:0": "(AUTO) duplicate key", - "erc20:eth:PCH:1": "(AUTO) duplicate key", + "erc20:eth:OHNI:6f53": "(AUTO) duplicate key", + "erc20:eth:OHNI:7f21": "(AUTO) duplicate key", + "erc20:eth:OPEN:69c4": "(AUTO) duplicate key", + "erc20:eth:OPEN:e9de": "(AUTO) duplicate key", + "erc20:eth:PAT:bb1f": "(AUTO) duplicate key", + "erc20:eth:PAT:f3b3": "(AUTO) duplicate key", + "erc20:eth:PCH:e3f4": "(AUTO) duplicate key", + "erc20:eth:PCH:fcac": "(AUTO) duplicate key", "erc20:eth:PLAY": "(AUTO) duplicate key", - "erc20:eth:PRO:0": "(AUTO) duplicate key", - "erc20:eth:PRO:1": "(AUTO) duplicate key", - "erc20:eth:PRPS:0": "(AUTO) duplicate key", - "erc20:eth:PRPS:1": "(AUTO) duplicate key", - "erc20:eth:PRPS:2": "(AUTO) duplicate key", + "erc20:eth:PRO:226b": "(AUTO) duplicate key", + "erc20:eth:PRO:9041": "(AUTO) duplicate key", + "erc20:eth:PRPS:7641": "(AUTO) duplicate key", + "erc20:eth:PRPS:d94f": "(AUTO) duplicate key", + "erc20:eth:PRPS:e40c": "(AUTO) duplicate key", "erc20:eth:PTC": "(AUTO) duplicate key", - "erc20:eth:RCT:0": "(AUTO) duplicate key", - "erc20:eth:RCT:1": "(AUTO) duplicate key", - "erc20:eth:RDN": "(AUTO) duplicate key", - "erc20:eth:REP:0": "(AUTO) duplicate key", - "erc20:eth:REP:1": "(AUTO) duplicate key", - "erc20:eth:RING:0": "(AUTO) duplicate key", - "erc20:eth:RING:1": "(AUTO) duplicate key", - "erc20:eth:SGT:0": "(AUTO) duplicate key", - "erc20:eth:SGT:1": "(AUTO) duplicate key", - "erc20:eth:SKRP:0": "(AUTO) duplicate key", - "erc20:eth:SKRP:1": "(AUTO) duplicate key", - "erc20:eth:SKRP:2": "(AUTO) duplicate key", + "erc20:eth:RCT:13f2": "(AUTO) duplicate key", + "erc20:eth:RCT:2a3a": "(AUTO) duplicate key", + "erc20:eth:RING:86e5": "(AUTO) duplicate key", + "erc20:eth:RING:9469": "(AUTO) duplicate key", + "erc20:eth:SGT:3742": "(AUTO) duplicate key", + "erc20:eth:SGT:d248": "(AUTO) duplicate key", + "erc20:eth:SKRP:324a": "(AUTO) duplicate key", + "erc20:eth:SKRP:6e34": "(AUTO) duplicate key", + "erc20:eth:SKRP:fdfe": "(AUTO) duplicate key", "erc20:eth:SMART": "(AUTO) duplicate key", - "erc20:eth:SMT:0": "(AUTO) duplicate key", - "erc20:eth:SMT:1": "(AUTO) duplicate key", - "erc20:eth:SMT:2": "(AUTO) duplicate key", - "erc20:eth:SS:0": "(AUTO) duplicate key", - "erc20:eth:SS:1": "(AUTO) duplicate key", - "erc20:eth:TICO:0": "(AUTO) duplicate key", - "erc20:eth:TICO:1": "(AUTO) duplicate key", + "erc20:eth:SMT:2dcf": "(AUTO) duplicate key", + "erc20:eth:SMT:55f9": "(AUTO) duplicate key", + "erc20:eth:SMT:78eb": "(AUTO) duplicate key", + "erc20:eth:SS:b15f": "(AUTO) duplicate key", + "erc20:eth:SS:bbff": "(AUTO) duplicate key", + "erc20:eth:TEL:85e0": "(AUTO) duplicate key", + "erc20:eth:TEL:ec32": "(AUTO) duplicate key", + "erc20:eth:TICO:7f4b": "(AUTO) duplicate key", + "erc20:eth:TICO:a5db": "(AUTO) duplicate key", "erc20:eth:TRC": "(AUTO) duplicate key", "erc20:eth:TRX": "switched to custom network", - "erc20:eth:UMKA:0": "(AUTO) duplicate key", - "erc20:eth:UMKA:1": "(AUTO) duplicate key", - "erc20:eth:VIBEX:0": "(AUTO) duplicate key", - "erc20:eth:VIBEX:1": "(AUTO) duplicate key", - "erc20:eth:VRS:0": "(AUTO) duplicate key", - "erc20:eth:VRS:1": "(AUTO) duplicate key", - "erc20:eth:WHO:0": "(AUTO) duplicate key", - "erc20:eth:WHO:1": "(AUTO) duplicate key", + "erc20:eth:UMKA:105d": "(AUTO) duplicate key", + "erc20:eth:UMKA:8e5a": "(AUTO) duplicate key", + "erc20:eth:VIBEX:8824": "(AUTO) duplicate key", + "erc20:eth:VIBEX:e8ff": "(AUTO) duplicate key", + "erc20:eth:VRS:92e7": "(AUTO) duplicate key", + "erc20:eth:VRS:edba": "(AUTO) duplicate key", + "erc20:eth:WHO:e200": "(AUTO) duplicate key", + "erc20:eth:WHO:e933": "(AUTO) duplicate key", "erc20:eth:WIC": "(AUTO) duplicate key", - "erc20:eth:WOLK:0": "(AUTO) duplicate key", - "erc20:eth:WOLK:1": "(AUTO) duplicate key", - "erc20:eth:WORK:0": "(AUTO) duplicate key", - "erc20:eth:WORK:1": "(AUTO) duplicate key", + "erc20:eth:WOLK:7287": "(AUTO) duplicate key", + "erc20:eth:WOLK:f6b5": "(AUTO) duplicate key", + "erc20:eth:WORK:a686": "(AUTO) duplicate key", + "erc20:eth:WORK:d18e": "(AUTO) duplicate key", "erc20:eth:WiC": "(AUTO) duplicate key", - "erc20:eth:YEED:0": "(AUTO) duplicate key", - "erc20:eth:YEED:1": "(AUTO) duplicate key", - "erc20:eth:ZRX": "(AUTO) duplicate key", - "erc20:kov:DAI": "(AUTO) duplicate key", - "erc20:kov:DGD": "(AUTO) duplicate key", - "erc20:kov:GNT": "(AUTO) duplicate key", - "erc20:kov:GUP": "(AUTO) duplicate key", - "erc20:kov:MKR": "(AUTO) duplicate key", - "erc20:kov:MLN": "(AUTO) duplicate key", - "erc20:kov:REP": "(AUTO) duplicate key", - "erc20:kov:ZRX": "(AUTO) duplicate key", - "erc20:rin:KC": "(AUTO) duplicate key", - "erc20:rin:NONE": "(AUTO) duplicate key", - "erc20:rin:RDN": "(AUTO) duplicate key", - "erc20:rop:NONE": "(AUTO) duplicate key" + "erc20:eth:YEED:6f7a": "(AUTO) duplicate key", + "erc20:eth:YEED:ca27": "(AUTO) duplicate key" } }, "webwallet": { From 91923097de4b65025decb75091bd2cd14fa96d40 Mon Sep 17 00:00:00 2001 From: matejcik Date: Thu, 29 Nov 2018 15:53:22 +0100 Subject: [PATCH 661/767] support: change handling of "soon" coins "soon" coins that are not tokens will not be included in build --- tools/cointool.py | 5 ++++- tools/support.py | 3 +-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/tools/cointool.py b/tools/cointool.py index d3c0daf10..28702a59a 100755 --- a/tools/cointool.py +++ b/tools/cointool.py @@ -111,7 +111,10 @@ def ascii_filter(s): def make_support_filter(support_info): def supported_on(device, coins): for coin in coins: - if support_info[coin.key].get(device): + supp = support_info[coin.key].get(device) + if not supp: + continue + if coin_info.is_token(coin) or supp != "soon": yield coin return supported_on diff --git a/tools/support.py b/tools/support.py index 5b35db0fd..593387eb5 100755 --- a/tools/support.py +++ b/tools/support.py @@ -401,8 +401,7 @@ def release( ] for coin in soon_list: key = coin["key"] - print(f"Releasing {key} ({coin['name']}) marked 'soon'") - set_supported(device, key, version) + maybe_add(coin, "soon") # process missing (not listed) supportinfos if release_missing: From 5f59b5100bf4cd14b6514f249f46f19b97ba7274 Mon Sep 17 00:00:00 2001 From: matejcik Date: Thu, 29 Nov 2018 15:59:59 +0100 Subject: [PATCH 662/767] support: release tokens for 2.0.10 --- defs/support.json | 377 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 376 insertions(+), 1 deletion(-) diff --git a/defs/support.json b/defs/support.json index d9f00ea31..849205b54 100644 --- a/defs/support.json +++ b/defs/support.json @@ -964,7 +964,7 @@ "bitcoin:BTDX": "2.0.10", "bitcoin:BTG": "2.0.7", "bitcoin:BTX": "2.0.8", - "bitcoin:CPC": "soon", + "bitcoin:CPC": "2.0.10", "bitcoin:DASH": "2.0.5", "bitcoin:DCR": "2.0.8", "bitcoin:DGB": "2.0.7", @@ -1009,15 +1009,21 @@ "erc20:eth:$FXY": "2.0.7", "erc20:eth:$HUR": "2.0.8", "erc20:eth:$TEAK": "2.0.7", + "erc20:eth:(PARKGENE) (GENE)": "2.0.10", + "erc20:eth:(TTC) (TTC)": "2.0.10", "erc20:eth:0xBTC": "2.0.7", "erc20:eth:1ST": "2.0.7", "erc20:eth:1WO": "2.0.7", + "erc20:eth:22x": "2.0.10", "erc20:eth:2DC": "2.0.7", "erc20:eth:300": "2.0.7", "erc20:eth:3LT": "2.0.8", + "erc20:eth:ABCH": "2.0.10", "erc20:eth:ABT": "2.0.7", "erc20:eth:ABYSS": "2.0.7", "erc20:eth:ACC": "2.0.7", + "erc20:eth:ACE": "2.0.10", + "erc20:eth:ADB": "2.0.10", "erc20:eth:ADH": "2.0.7", "erc20:eth:ADI": "2.0.7", "erc20:eth:ADL": "2.0.7", @@ -1025,14 +1031,19 @@ "erc20:eth:ADT": "2.0.7", "erc20:eth:ADX": "2.0.7", "erc20:eth:AE": "2.0.7", + "erc20:eth:AFA": "2.0.10", "erc20:eth:AGI": "2.0.7", + "erc20:eth:AI": "2.0.10", + "erc20:eth:AID": "2.0.10", "erc20:eth:AION": "2.0.7", "erc20:eth:AIR": "2.0.7", "erc20:eth:AIX": "2.0.7", "erc20:eth:AKC": "2.0.8", "erc20:eth:ALCO": "2.0.7", + "erc20:eth:ALI": "2.0.10", "erc20:eth:ALIS": "2.0.7", "erc20:eth:ALTS": "2.0.7", + "erc20:eth:ALX": "2.0.10", "erc20:eth:AMB": "2.0.7", "erc20:eth:AMIS": "2.0.7", "erc20:eth:AMLT": "2.0.8", @@ -1040,9 +1051,11 @@ "erc20:eth:AMO": "2.0.7", "erc20:eth:AMTC": "2.0.7", "erc20:eth:ANT": "2.0.7", + "erc20:eth:AOA": "2.0.10", "erc20:eth:APIS": "2.0.7", "erc20:eth:APPC": "2.0.7", "erc20:eth:APT": "2.0.7", + "erc20:eth:ARB": "2.0.10", "erc20:eth:ARC": "2.0.7", "erc20:eth:ARCT": "2.0.7", "erc20:eth:ARD": "2.0.7", @@ -1050,19 +1063,36 @@ "erc20:eth:ART": "2.0.7", "erc20:eth:ARX": "2.0.7", "erc20:eth:ARXT": "2.0.7", + "erc20:eth:ARY": "2.0.10", "erc20:eth:AST": "2.0.7", + "erc20:eth:ASTRO": "2.0.10", "erc20:eth:ATL": "2.0.7", + "erc20:eth:ATM": "2.0.10", "erc20:eth:ATMI": "2.0.7", + "erc20:eth:ATS": "2.0.10", "erc20:eth:ATT": "2.0.7", "erc20:eth:ATTN": "2.0.7", + "erc20:eth:ATX": "2.0.10", + "erc20:eth:AUC": "2.0.10", + "erc20:eth:AURA": "2.0.10", + "erc20:eth:AUTO": "2.0.10", "erc20:eth:AVA": "2.0.7", "erc20:eth:AVT": "2.0.7", "erc20:eth:AX1": "2.0.7", "erc20:eth:AXP": "2.0.7", "erc20:eth:AXPR": "2.0.8", + "erc20:eth:B2BX": "2.0.10", + "erc20:eth:BANCA": "2.0.10", "erc20:eth:BANX": "2.0.7", + "erc20:eth:BAS": "2.0.10", "erc20:eth:BAT": "2.0.7", + "erc20:eth:BAX": "2.0.10", + "erc20:eth:BBC": "2.0.10", + "erc20:eth:BBI": "2.0.10", "erc20:eth:BBK": "2.0.7", + "erc20:eth:BBN": "2.0.10", + "erc20:eth:BBO": "2.0.10", + "erc20:eth:BC": "2.0.10", "erc20:eth:BCBC": "2.0.7", "erc20:eth:BCDN": "2.0.7", "erc20:eth:BCDT": "2.0.7", @@ -1075,9 +1105,15 @@ "erc20:eth:BET": "2.0.7", "erc20:eth:BETHER": "2.0.8", "erc20:eth:BETR": "2.0.7", + "erc20:eth:BHPC": "2.0.10", + "erc20:eth:BHR": "2.0.10", + "erc20:eth:BITCAR": "2.0.10", + "erc20:eth:BITPARK": "2.0.10", + "erc20:eth:BIX": "2.0.10", "erc20:eth:BKB": "2.0.7", "erc20:eth:BKRx": "2.0.7", "erc20:eth:BKX": "2.0.7", + "erc20:eth:BLN": "2.0.10", "erc20:eth:BLT": "2.0.7", "erc20:eth:BLUE": "2.0.7", "erc20:eth:BLX (Bullion)": "2.0.7", @@ -1088,35 +1124,51 @@ "erc20:eth:BMX": "2.0.7", "erc20:eth:BNB": "2.0.7", "erc20:eth:BNFT": "2.0.7", + "erc20:eth:BNN": "2.0.10", "erc20:eth:BNT": "2.0.7", "erc20:eth:BNTY": "2.0.7", "erc20:eth:BOB": "2.0.7", "erc20:eth:BON": "2.0.7", "erc20:eth:BOP": "2.0.7", "erc20:eth:BOU": "2.0.7", + "erc20:eth:BOUTS": "2.0.10", + "erc20:eth:BOXX": "2.0.10", "erc20:eth:BPT": "2.0.7", "erc20:eth:BQX": "2.0.7", "erc20:eth:BRAT": "2.0.7", "erc20:eth:BRD": "2.0.7", + "erc20:eth:BRLN": "2.0.10", "erc20:eth:BSDC": "2.0.7", "erc20:eth:BST": "2.0.7", + "erc20:eth:BTCA": "2.0.10", "erc20:eth:BTCE": "2.0.7", "erc20:eth:BTCL": "2.0.7", + "erc20:eth:BTCONE": "2.0.10", + "erc20:eth:BTCR": "2.0.10", "erc20:eth:BTE": "2.0.7", "erc20:eth:BTH": "2.0.7", "erc20:eth:BTHR": "2.0.7", "erc20:eth:BTK": "2.0.7", "erc20:eth:BTM": "2.0.7", + "erc20:eth:BTO": "2.0.10", "erc20:eth:BTQ": "2.0.7", + "erc20:eth:BTR": "2.0.10", + "erc20:eth:BTRN": "2.0.10", "erc20:eth:BTT": "2.0.7", "erc20:eth:BTTX": "2.0.7", + "erc20:eth:BTU": "2.0.10", "erc20:eth:BTZ": "2.0.8", "erc20:eth:BUC": "2.0.7", + "erc20:eth:BWX": "2.0.10", + "erc20:eth:BZ": "2.0.10", + "erc20:eth:BZNT": "2.0.10", "erc20:eth:BeerCoin": "2.0.7", + "erc20:eth:Bez": "2.0.10", "erc20:eth:C20": "2.0.7", "erc20:eth:C8": "2.0.7", "erc20:eth:CAG": "2.0.7", "erc20:eth:CAN": "2.0.7", + "erc20:eth:CAPP": "2.0.10", "erc20:eth:CARB": "2.0.7", "erc20:eth:CARCO": "2.0.7", "erc20:eth:CARE": "2.0.7", @@ -1124,69 +1176,100 @@ "erc20:eth:CAT (BitClave)": "2.0.7", "erc20:eth:CAT (Blockcat)": "2.0.7", "erc20:eth:CATs (BitClave)_Old": "2.0.7", + "erc20:eth:CBC": "2.0.10", "erc20:eth:CBIX": "2.0.8", + "erc20:eth:CBT": "2.0.10", "erc20:eth:CC3": "2.0.7", "erc20:eth:CCC (CryptoCrashCourse)": "2.0.7", "erc20:eth:CCC (ICONOMI)": "2.0.7", + "erc20:eth:CCCX": "2.0.10", "erc20:eth:CCLC": "2.0.7", + "erc20:eth:CCO": "2.0.10", "erc20:eth:CCS": "2.0.7", + "erc20:eth:CCT": "2.0.10", "erc20:eth:CDL": "2.0.7", "erc20:eth:CDT": "2.0.7", "erc20:eth:CEEK": "2.0.7", + "erc20:eth:CENNZ": "2.0.10", "erc20:eth:CET": "2.0.8", "erc20:eth:CFC": "2.0.8", "erc20:eth:CFI": "2.0.7", "erc20:eth:CFTY": "2.0.7", + "erc20:eth:CHP": "2.0.10", "erc20:eth:CHSB": "2.0.7", + "erc20:eth:CHX": "2.0.10", + "erc20:eth:CJT": "2.0.10", "erc20:eth:CK": "2.0.7", + "erc20:eth:CL": "2.0.10", "erc20:eth:CLB": "2.0.7", "erc20:eth:CLL": "2.0.7", "erc20:eth:CLN": "2.0.7", "erc20:eth:CLP": "2.0.7", "erc20:eth:CMBT": "2.0.7", "erc20:eth:CMC": "2.0.7", + "erc20:eth:CMCT": "2.0.10", "erc20:eth:CMT": "2.0.7", "erc20:eth:CNB": "2.0.7", "erc20:eth:CND": "2.0.7", + "erc20:eth:CNN": "2.0.10", "erc20:eth:CO2": "2.0.7", "erc20:eth:CO2Bit": "2.0.7", "erc20:eth:COB": "2.0.7", "erc20:eth:COFI": "2.0.7", "erc20:eth:COIL": "2.0.7", "erc20:eth:CORI": "2.0.8", + "erc20:eth:COSM": "2.0.10", "erc20:eth:COV": "2.0.7", + "erc20:eth:CPAY": "2.0.10", "erc20:eth:CPEX": "2.0.7", + "erc20:eth:CPLO": "2.0.10", + "erc20:eth:CPT": "2.0.10", "erc20:eth:CPY": "2.0.7", "erc20:eth:CR7": "2.0.7", "erc20:eth:CRB": "2.0.7", + "erc20:eth:CRBT": "2.0.10", + "erc20:eth:CRC": "2.0.10", "erc20:eth:CRED": "2.0.7", "erc20:eth:CREDO": "2.0.7", "erc20:eth:CRGO": "2.0.8", "erc20:eth:CRMT": "2.0.8", "erc20:eth:CRPT": "2.0.7", "erc20:eth:CRT": "2.0.7", + "erc20:eth:CS": "2.0.10", + "erc20:eth:CSNO": "2.0.10", + "erc20:eth:CST": "2.0.10", "erc20:eth:CTF": "2.0.7", "erc20:eth:CTG": "2.0.7", "erc20:eth:CTGC": "2.0.8", "erc20:eth:CTL": "2.0.7", + "erc20:eth:CTR": "2.0.10", "erc20:eth:CTT": "2.0.7", "erc20:eth:CTX": "2.0.7", + "erc20:eth:CTXC": "2.0.10", "erc20:eth:CVC": "2.0.7", + "erc20:eth:CVT": "2.0.10", "erc20:eth:CXC": "2.0.7", "erc20:eth:CXO": "2.0.7", "erc20:eth:CYFM": "2.0.8", + "erc20:eth:CYMT": "2.0.10", + "erc20:eth:CZR": "2.0.10", "erc20:eth:CryptoCarbon": "2.0.7", "erc20:eth:DAB": "2.0.7", + "erc20:eth:DACS": "2.0.10", "erc20:eth:DADI": "2.0.7", + "erc20:eth:DAI": "2.0.10", "erc20:eth:DALC": "2.0.7", "erc20:eth:DAN": "2.0.7", "erc20:eth:DAO": "2.0.7", "erc20:eth:DAT": "2.0.7", "erc20:eth:DATABroker": "2.0.7", "erc20:eth:DATACoin": "2.0.7", + "erc20:eth:DATx": "2.0.10", "erc20:eth:DAV": "2.0.7", + "erc20:eth:DAX": "2.0.10", "erc20:eth:DAXT": "2.0.7", "erc20:eth:DAY": "2.0.7", + "erc20:eth:DBET": "2.0.10", "erc20:eth:DCA": "2.0.7", "erc20:eth:DCC": "2.0.8", "erc20:eth:DCL": "2.0.7", @@ -1194,7 +1277,11 @@ "erc20:eth:DDF": "2.0.7", "erc20:eth:DEB": "2.0.7", "erc20:eth:DEEZ": "2.0.7", + "erc20:eth:DELTA": "2.0.10", "erc20:eth:DENT": "2.0.7", + "erc20:eth:DEW": "2.0.10", + "erc20:eth:DEX": "2.0.10", + "erc20:eth:DGD": "2.0.10", "erc20:eth:DGPT": "2.0.7", "erc20:eth:DGS": "2.0.8", "erc20:eth:DGTX": "2.0.8", @@ -1202,29 +1289,45 @@ "erc20:eth:DGX1": "2.0.8", "erc20:eth:DICE": "2.0.7", "erc20:eth:DIP": "2.0.8", + "erc20:eth:DIT": "2.0.10", "erc20:eth:DIVX": "2.0.7", "erc20:eth:DKP": "2.0.7", "erc20:eth:DLT": "2.0.7", "erc20:eth:DMT": "2.0.7", + "erc20:eth:DNA": "2.0.10", "erc20:eth:DNT": "2.0.7", "erc20:eth:DNX": "2.0.7", + "erc20:eth:DOCK": "2.0.10", + "erc20:eth:DOR": "2.0.10", + "erc20:eth:DOV": "2.0.10", "erc20:eth:DPP": "2.0.7", "erc20:eth:DRGN": "2.0.7", + "erc20:eth:DRPU": "2.0.10", + "erc20:eth:DRT": "2.0.10", "erc20:eth:DRVH": "2.0.8", "erc20:eth:DSC": "2.0.7", "erc20:eth:DSCP": "2.0.8", "erc20:eth:DTH": "2.0.7", "erc20:eth:DTR": "2.0.7", + "erc20:eth:DTRC": "2.0.10", "erc20:eth:DTT": "2.0.7", + "erc20:eth:DXT": "2.0.10", "erc20:eth:Devcon2 Token": "2.0.7", + "erc20:eth:E4ROW": "2.0.10", "erc20:eth:EAGLE": "2.0.7", + "erc20:eth:EARTH": "2.0.10", + "erc20:eth:EBC": "2.0.10", "erc20:eth:ECN": "2.0.7", "erc20:eth:ECO2": "2.0.7", + "erc20:eth:ECOM": "2.0.10", "erc20:eth:EDC": "2.0.7", "erc20:eth:EDG": "2.0.7", "erc20:eth:EDO": "2.0.7", "erc20:eth:EDR": "2.0.8", "erc20:eth:EHT": "2.0.7", + "erc20:eth:EKO": "2.0.10", + "erc20:eth:EKT": "2.0.10", + "erc20:eth:ELEC": "2.0.10", "erc20:eth:ELF": "2.0.7", "erc20:eth:ELIX": "2.0.7", "erc20:eth:ELTCOIN": "2.0.7", @@ -1238,74 +1341,128 @@ "erc20:eth:ENJ": "2.0.7", "erc20:eth:ENTRP": "2.0.7", "erc20:eth:EPX": "2.0.7", + "erc20:eth:EPY": "2.0.10", + "erc20:eth:EQL": "2.0.10", + "erc20:eth:ERO": "2.0.10", + "erc20:eth:ERT": "2.0.10", "erc20:eth:ESZ": "2.0.7", "erc20:eth:ETBS": "2.0.7", "erc20:eth:ETCH": "2.0.7", + "erc20:eth:ETG": "2.0.10", "erc20:eth:ETHB": "2.0.7", + "erc20:eth:ETHD": "2.0.10", + "erc20:eth:ETK": "2.0.10", "erc20:eth:ETR": "2.0.7", + "erc20:eth:EURS": "2.0.10", "erc20:eth:EURT": "2.0.7", + "erc20:eth:EVC": "2.0.10", "erc20:eth:EVE": "2.0.7", "erc20:eth:EVX": "2.0.7", + "erc20:eth:EWO": "2.0.10", + "erc20:eth:EXC": "2.0.10", "erc20:eth:EXMR": "2.0.7", + "erc20:eth:EXRN": "2.0.10", "erc20:eth:EXY": "2.0.8", + "erc20:eth:EZT": "2.0.10", "erc20:eth:E\u20b9": "2.0.8", "erc20:eth:FABA": "2.0.10", + "erc20:eth:FACE": "2.0.10", "erc20:eth:FAM": "2.0.7", "erc20:eth:FAN": "2.0.8", + "erc20:eth:FDZ": "2.0.10", + "erc20:eth:FGP": "2.0.10", + "erc20:eth:FID": "2.0.10", "erc20:eth:FKX": "2.0.7", "erc20:eth:FLIXX": "2.0.7", + "erc20:eth:FLOT": "2.0.10", "erc20:eth:FLP": "2.0.7", "erc20:eth:FLR": "2.0.7", "erc20:eth:FLUZ": "2.0.7", "erc20:eth:FLX": "2.0.7", "erc20:eth:FND": "2.0.7", + "erc20:eth:FNKOS": "2.0.10", + "erc20:eth:FNTB": "2.0.10", + "erc20:eth:FOOD": "2.0.10", + "erc20:eth:FOTA": "2.0.10", "erc20:eth:FRD": "2.0.7", + "erc20:eth:FREC": "2.0.10", + "erc20:eth:FRV": "2.0.10", + "erc20:eth:FSN": "2.0.10", + "erc20:eth:FT": "2.0.10", + "erc20:eth:FTI": "2.0.10", "erc20:eth:FTR": "2.0.7", "erc20:eth:FTT": "2.0.7", + "erc20:eth:FTX": "2.0.10", "erc20:eth:FTXT": "2.0.8", "erc20:eth:FUEL": "2.0.7", "erc20:eth:FUN": "2.0.7", "erc20:eth:FXC": "2.0.8", + "erc20:eth:FXT": "2.0.10", "erc20:eth:FYN": "2.0.7", + "erc20:eth:FYP": "2.0.10", + "erc20:eth:Fzcoin": "2.0.10", "erc20:eth:GAM": "2.0.7", + "erc20:eth:GAT": "2.0.10", "erc20:eth:GAVEL": "2.0.7", "erc20:eth:GBT": "2.0.7", "erc20:eth:GBX": "2.0.7", "erc20:eth:GCP": "2.0.7", "erc20:eth:GEE": "2.0.7", "erc20:eth:GELD": "2.0.7", + "erc20:eth:GEM": "2.0.10", "erc20:eth:GEN": "2.0.7", "erc20:eth:GET": "2.0.7", "erc20:eth:GIF": "2.0.7", "erc20:eth:GIM": "2.0.7", + "erc20:eth:GLA": "2.0.10", "erc20:eth:GMT": "2.0.7", "erc20:eth:GNO": "2.0.7", + "erc20:eth:GNT": "2.0.10", + "erc20:eth:GNX": "2.0.10", + "erc20:eth:GNY": "2.0.10", "erc20:eth:GOLDX": "2.0.7", + "erc20:eth:GOT": "2.0.10", "erc20:eth:GRID": "2.0.7", + "erc20:eth:GRMD": "2.0.10", + "erc20:eth:GROO": "2.0.10", "erc20:eth:GROW": "2.0.7", + "erc20:eth:GSC": "2.0.10", "erc20:eth:GSE": "2.0.8", "erc20:eth:GTC": "2.0.7", "erc20:eth:GTKT": "2.0.7", "erc20:eth:GTO": "2.0.7", + "erc20:eth:GUESS": "2.0.10", "erc20:eth:GULD": "2.0.8", + "erc20:eth:GUP": "2.0.10", "erc20:eth:GVT": "2.0.7", "erc20:eth:GXC": "2.0.7", "erc20:eth:GXVC": "2.0.7", "erc20:eth:GZE": "2.0.7", "erc20:eth:GZR": "2.0.7", + "erc20:eth:HAND": "2.0.10", "erc20:eth:HAPPY": "2.0.8", "erc20:eth:HAT": "2.0.7", "erc20:eth:HAV": "2.0.7", + "erc20:eth:HB": "2.0.10", + "erc20:eth:HBT": "2.0.10", + "erc20:eth:HBZ": "2.0.10", "erc20:eth:HDG": "2.0.7", + "erc20:eth:HDL": "2.0.10", + "erc20:eth:HER": "2.0.10", "erc20:eth:HGT": "2.0.7", "erc20:eth:HIBT": "2.0.8", "erc20:eth:HIG": "2.0.7", "erc20:eth:HKG": "2.0.7", + "erc20:eth:HKN": "2.0.10", "erc20:eth:HKY": "2.0.7", + "erc20:eth:HLX": "2.0.10", + "erc20:eth:HMC": "2.0.10", "erc20:eth:HMQ": "2.0.7", "erc20:eth:HODL": "2.0.7", "erc20:eth:HORSE": "2.0.7", + "erc20:eth:HPB": "2.0.10", "erc20:eth:HST": "2.0.7", + "erc20:eth:HT": "2.0.10", "erc20:eth:HVN": "2.0.7", "erc20:eth:HYDRO": "2.0.7", "erc20:eth:IAD": "2.0.7", @@ -1315,14 +1472,21 @@ "erc20:eth:ICOS": "2.0.7", "erc20:eth:ICX": "2.0.7", "erc20:eth:IDEA": "2.0.7", + "erc20:eth:IDH": "2.0.10", + "erc20:eth:IDXM": "2.0.10", "erc20:eth:IFT": "2.0.7", + "erc20:eth:IG": "2.0.10", + "erc20:eth:IHT": "2.0.10", "erc20:eth:IIC": "2.0.7", "erc20:eth:IKB": "2.0.7", "erc20:eth:IMC": "2.0.7", "erc20:eth:IND": "2.0.7", + "erc20:eth:ING": "2.0.10", "erc20:eth:INRM": "2.0.7", "erc20:eth:INS": "2.0.7", "erc20:eth:INSTAR": "2.0.7", + "erc20:eth:INT": "2.0.10", + "erc20:eth:INV": "2.0.10", "erc20:eth:INXT": "2.0.7", "erc20:eth:IOST": "2.0.7", "erc20:eth:IOTX": "2.0.7", @@ -1332,31 +1496,51 @@ "erc20:eth:IST34": "2.0.8", "erc20:eth:ITC": "2.0.7", "erc20:eth:ITT": "2.0.7", + "erc20:eth:IVY": "2.0.10", "erc20:eth:IXT": "2.0.7", "erc20:eth:IoT": "2.0.7", "erc20:eth:J8T": "2.0.7", + "erc20:eth:JC": "2.0.10", "erc20:eth:JET": "2.0.7", "erc20:eth:JNT": "2.0.7", + "erc20:eth:JOT": "2.0.10", "erc20:eth:JOY": "2.0.7", "erc20:eth:JetCoins": "2.0.7", + "erc20:eth:KAN": "2.0.10", + "erc20:eth:KC": "2.0.10", "erc20:eth:KEE": "2.0.7", "erc20:eth:KICK": "2.0.7", "erc20:eth:KIN": "2.0.7", + "erc20:eth:KIND": "2.0.10", "erc20:eth:KNC": "2.0.7", + "erc20:eth:KNDC": "2.0.10", + "erc20:eth:KNT": "2.0.10", "erc20:eth:KPR": "2.0.7", "erc20:eth:KRL": "2.0.7", + "erc20:eth:KUE": "2.0.10", + "erc20:eth:KWATT": "2.0.10", "erc20:eth:KZN": "2.0.7", "erc20:eth:LA": "2.0.7", "erc20:eth:LALA": "2.0.7", + "erc20:eth:LATX": "2.0.10", + "erc20:eth:LBA": "2.0.10", + "erc20:eth:LCS": "2.0.10", "erc20:eth:LDC": "2.0.7", "erc20:eth:LEND": "2.0.7", + "erc20:eth:LEV": "2.0.10", "erc20:eth:LFR": "2.0.7", + "erc20:eth:LG": "2.0.10", + "erc20:eth:LGD": "2.0.10", "erc20:eth:LGO": "2.0.7", "erc20:eth:LGR": "2.0.7", + "erc20:eth:LIBER": "2.0.10", "erc20:eth:LIF": "2.0.7", "erc20:eth:LIFE": "2.0.7", + "erc20:eth:LIKE": "2.0.10", "erc20:eth:LINK (Chainlink)": "2.0.7", "erc20:eth:LIVE": "2.0.7", + "erc20:eth:LKY": "2.0.10", + "erc20:eth:LML": "2.0.10", "erc20:eth:LND": "2.0.7", "erc20:eth:LOC": "2.0.7", "erc20:eth:LOCI": "2.0.7", @@ -1371,6 +1555,7 @@ "erc20:eth:LUCK": "2.0.7", "erc20:eth:LUM": "2.0.7", "erc20:eth:LUN": "2.0.7", + "erc20:eth:LYM": "2.0.10", "erc20:eth:LYS": "2.0.7", "erc20:eth:M-ETH": "2.0.7", "erc20:eth:MAD": "2.0.7", @@ -1382,16 +1567,30 @@ "erc20:eth:MCI": "2.0.7", "erc20:eth:MCO": "2.0.7", "erc20:eth:MDA": "2.0.7", + "erc20:eth:MDS": "2.0.10", + "erc20:eth:MDT": "2.0.10", + "erc20:eth:MEDX": "2.0.10", "erc20:eth:MEST": "2.0.7", + "erc20:eth:MET": "2.0.10", + "erc20:eth:METM": "2.0.10", "erc20:eth:MFG": "2.0.7", "erc20:eth:MFT": "2.0.8", "erc20:eth:MFTU": "2.0.8", "erc20:eth:MGO": "2.0.7", + "erc20:eth:MIC": "2.0.10", + "erc20:eth:MITx": "2.0.10", + "erc20:eth:MKR": "2.0.10", "erc20:eth:MKT": "2.0.7", + "erc20:eth:MLN": "2.0.10", "erc20:eth:MNE": "2.0.7", "erc20:eth:MNT": "2.0.7", "erc20:eth:MNTP": "2.0.7", + "erc20:eth:MOC": "2.0.10", "erc20:eth:MOD": "2.0.7", + "erc20:eth:MORE": "2.0.10", + "erc20:eth:MOT": "2.0.10", + "erc20:eth:MOZO": "2.0.10", + "erc20:eth:MRK": "2.0.10", "erc20:eth:MRL": "2.0.7", "erc20:eth:MRP": "2.0.7", "erc20:eth:MRV": "2.0.7", @@ -1403,25 +1602,38 @@ "erc20:eth:MTRc": "2.0.7", "erc20:eth:MTX": "2.0.7", "erc20:eth:MUXE": "2.0.7", + "erc20:eth:MVL": "2.0.10", "erc20:eth:MVP": "2.0.7", "erc20:eth:MWAT": "2.0.7", "erc20:eth:MYD": "2.0.7", "erc20:eth:MYST": "2.0.7", "erc20:eth:NAC": "2.0.7", "erc20:eth:NANJ": "2.0.7", + "erc20:eth:NAS": "2.0.10", "erc20:eth:NAVI": "2.0.7", "erc20:eth:NBAI": "2.0.7", + "erc20:eth:NBC": "2.0.10", "erc20:eth:NCT": "2.0.7", "erc20:eth:NDC": "2.0.7", "erc20:eth:NEC": "2.0.7", + "erc20:eth:NEEO": "2.0.10", "erc20:eth:NET": "2.0.7", "erc20:eth:NEU": "2.0.7", + "erc20:eth:NEWB": "2.0.10", + "erc20:eth:NEXO": "2.0.10", "erc20:eth:NGC": "2.0.7", "erc20:eth:NIMFA": "2.0.7", + "erc20:eth:NIO": "2.0.10", "erc20:eth:NMR": "2.0.7", + "erc20:eth:NOAH": "2.0.10", + "erc20:eth:NOBS": "2.0.10", + "erc20:eth:NONE": "2.0.10", "erc20:eth:NOX": "2.0.7", "erc20:eth:NPER": "2.0.7", + "erc20:eth:NPX": "2.0.10", "erc20:eth:NPXS": "2.0.7", + "erc20:eth:NTO": "2.0.10", + "erc20:eth:NTWK": "2.0.10", "erc20:eth:NUG": "2.0.8", "erc20:eth:NULS": "2.0.7", "erc20:eth:NXX": "2.0.7", @@ -1429,42 +1641,63 @@ "erc20:eth:OAK": "2.0.7", "erc20:eth:OAX": "2.0.7", "erc20:eth:OCC": "2.0.7", + "erc20:eth:OCN": "2.0.10", "erc20:eth:ODE": "2.0.8", "erc20:eth:OJX": "2.0.7", "erc20:eth:OLD_MKR": "2.0.7", + "erc20:eth:OLE": "2.0.10", "erc20:eth:OLT": "2.0.8", "erc20:eth:OMG": "2.0.7", "erc20:eth:OMT": "2.0.8", + "erc20:eth:OMX": "2.0.10", "erc20:eth:ONEK": "2.0.7", + "erc20:eth:ONL": "2.0.10", "erc20:eth:OPT": "2.0.7", + "erc20:eth:OPTI": "2.0.10", "erc20:eth:ORBS": "2.0.7", "erc20:eth:ORCA": "2.0.8", + "erc20:eth:ORI": "2.0.10", + "erc20:eth:ORME": "2.0.10", + "erc20:eth:ORS": "2.0.10", "erc20:eth:OST": "2.0.7", + "erc20:eth:OTN": "2.0.10", "erc20:eth:OWN": "2.0.8", "erc20:eth:Ox Fina": "2.0.7", + "erc20:eth:PAI": "2.0.10", "erc20:eth:PAL": "2.0.7", "erc20:eth:PARETO": "2.0.7", "erc20:eth:PASS": "2.0.8", "erc20:eth:PATENTS": "2.0.7", "erc20:eth:PATH": "2.0.7", + "erc20:eth:PAX": "2.0.10", "erc20:eth:PAY": "2.0.7", "erc20:eth:PBL": "2.0.7", "erc20:eth:PBT": "2.0.7", "erc20:eth:PCL": "2.0.7", "erc20:eth:PCLOLD": "2.0.7", + "erc20:eth:PDATA": "2.0.10", "erc20:eth:PEG": "2.0.8", "erc20:eth:PET": "2.0.7", "erc20:eth:PETRO": "2.0.7", "erc20:eth:PEXT": "2.0.7", + "erc20:eth:PFR": "2.0.10", + "erc20:eth:PHI": "2.0.10", "erc20:eth:PIPL": "2.0.7", "erc20:eth:PIX": "2.0.7", + "erc20:eth:PKG": "2.0.10", + "erc20:eth:PKT": "2.0.10", "erc20:eth:PLASMA": "2.0.7", "erc20:eth:PLBT": "2.0.7", "erc20:eth:PLR": "2.0.7", "erc20:eth:PLS": "2.0.8", "erc20:eth:PLU": "2.0.7", + "erc20:eth:PMA": "2.0.10", + "erc20:eth:PMNT": "2.0.10", + "erc20:eth:PNK": "2.0.10", + "erc20:eth:POA20": "2.0.10", "erc20:eth:POE": "2.0.7", "erc20:eth:POIN": "2.0.7", + "erc20:eth:POLL": "2.0.10", "erc20:eth:POLY": "2.0.7", "erc20:eth:POOL": "2.0.7", "erc20:eth:POS": "2.0.7", @@ -1473,67 +1706,113 @@ "erc20:eth:PPT": "2.0.7", "erc20:eth:PRE": "2.0.7", "erc20:eth:PRG": "2.0.7", + "erc20:eth:PRIX": "2.0.10", "erc20:eth:PRL": "2.0.7", "erc20:eth:PRON": "2.0.7", "erc20:eth:PRS": "2.0.7", "erc20:eth:PRSP": "2.0.7", + "erc20:eth:PST": "2.0.10", "erc20:eth:PT": "2.0.7", + "erc20:eth:PTON": "2.0.10", "erc20:eth:PTOY": "2.0.7", + "erc20:eth:PTT": "2.0.10", "erc20:eth:PTWO": "2.0.7", "erc20:eth:PUC": "2.0.7", "erc20:eth:PURC": "2.0.8", "erc20:eth:PXT": "2.0.7", + "erc20:eth:PYLNT": "2.0.10", "erc20:eth:QASH": "2.0.7", "erc20:eth:QAU": "2.0.7", + "erc20:eth:QBIT": "2.0.10", "erc20:eth:QBX": "2.0.7", + "erc20:eth:QKC": "2.0.10", "erc20:eth:QNT": "2.0.8", "erc20:eth:QRG": "2.0.7", "erc20:eth:QRL": "2.0.7", "erc20:eth:QSP": "2.0.7", "erc20:eth:QTQ": "2.0.7", "erc20:eth:QTUM": "2.0.7", + "erc20:eth:QUN": "2.0.10", + "erc20:eth:QVT": "2.0.10", + "erc20:eth:R": "2.0.10", "erc20:eth:RAO": "2.0.7", "erc20:eth:RBLX": "2.0.7", "erc20:eth:RCN": "2.0.7", + "erc20:eth:RDN": "2.0.10", "erc20:eth:REA": "2.0.7", + "erc20:eth:REAL": "2.0.10", "erc20:eth:REBL": "2.0.7", "erc20:eth:RED": "2.0.7", "erc20:eth:REDC": "2.0.8", + "erc20:eth:REF": "2.0.10", + "erc20:eth:REM": "2.0.10", "erc20:eth:REN": "2.0.7", + "erc20:eth:REP": "2.0.10", + "erc20:eth:REP:deprecated": "2.0.10", "erc20:eth:REQ": "2.0.7", "erc20:eth:REX": "2.0.7", "erc20:eth:RFR": "2.0.7", + "erc20:eth:RGS": "2.0.10", + "erc20:eth:RHOC": "2.0.10", "erc20:eth:RIPT": "2.0.7", + "erc20:eth:RIYA": "2.0.10", + "erc20:eth:RKT": "2.0.10", "erc20:eth:RLC": "2.0.7", "erc20:eth:RLT": "2.0.7", "erc20:eth:RLTY": "2.0.7", "erc20:eth:RLX": "2.0.7", + "erc20:eth:RMC": "2.0.10", + "erc20:eth:RMESH": "2.0.10", "erc20:eth:RNDR": "2.0.7", + "erc20:eth:RNT": "2.0.10", + "erc20:eth:RNTB": "2.0.10", + "erc20:eth:ROC": "2.0.10", "erc20:eth:ROCK": "2.0.7", + "erc20:eth:ROCK2": "2.0.10", + "erc20:eth:ROCK2PAY": "2.0.10", "erc20:eth:ROK": "2.0.7", "erc20:eth:ROUND": "2.0.7", "erc20:eth:RPL": "2.0.7", + "erc20:eth:RTB": "2.0.10", + "erc20:eth:RTH": "2.0.10", "erc20:eth:RTN": "2.0.7", + "erc20:eth:RUFF": "2.0.10", + "erc20:eth:RUNE": "2.0.10", "erc20:eth:RVL": "2.0.7", "erc20:eth:RVT": "2.0.7", + "erc20:eth:Rating": "2.0.10", "erc20:eth:S-A-PAT": "2.0.7", "erc20:eth:S-ETH": "2.0.7", + "erc20:eth:SAC": "2.0.10", "erc20:eth:SALT": "2.0.7", "erc20:eth:SAN": "2.0.7", "erc20:eth:SCANDI": "2.0.7", "erc20:eth:SCL": "2.0.7", + "erc20:eth:SCRL": "2.0.10", + "erc20:eth:SENC": "2.0.10", "erc20:eth:SENSE": "2.0.7", + "erc20:eth:SENT": "2.0.10", "erc20:eth:SET": "2.0.7", "erc20:eth:SEXY": "2.0.7", "erc20:eth:SGEL": "2.0.7", + "erc20:eth:SGN": "2.0.10", + "erc20:eth:SGP": "2.0.10", + "erc20:eth:SGR": "2.0.10", + "erc20:eth:SHIP": "2.0.10", "erc20:eth:SHIT": "2.0.7", + "erc20:eth:SHL": "2.0.10", + "erc20:eth:SHP": "2.0.10", "erc20:eth:SIFT": "2.0.7", "erc20:eth:SIG": "2.0.7", + "erc20:eth:SKB": "2.0.10", "erc20:eth:SKIN": "2.0.7", + "erc20:eth:SKM": "2.0.10", "erc20:eth:SKO1": "2.0.7", "erc20:eth:SKR": "2.0.7", "erc20:eth:SLT": "2.0.7", "erc20:eth:SLY": "2.0.8", + "erc20:eth:SMS": "2.0.10", + "erc20:eth:SNBL": "2.0.10", "erc20:eth:SNC": "2.0.7", "erc20:eth:SND": "2.0.7", "erc20:eth:SNG": "2.0.7", @@ -1542,17 +1821,26 @@ "erc20:eth:SNM": "2.0.7", "erc20:eth:SNOV": "2.0.7", "erc20:eth:SNT": "2.0.7", + "erc20:eth:SNTR": "2.0.10", + "erc20:eth:SOC": "2.0.10", "erc20:eth:SOL": "2.0.7", + "erc20:eth:SONIQ": "2.0.10", "erc20:eth:SPANK": "2.0.7", "erc20:eth:SPARC": "2.0.7", "erc20:eth:SPARTA": "2.0.7", + "erc20:eth:SPD": "2.0.10", "erc20:eth:SPF": "2.0.7", + "erc20:eth:SPHTX": "2.0.10", + "erc20:eth:SPICE": "2.0.10", "erc20:eth:SPN": "2.0.7", + "erc20:eth:SPX": "2.0.10", "erc20:eth:SRN": "2.0.7", "erc20:eth:SSH": "2.0.7", + "erc20:eth:SSP": "2.0.10", "erc20:eth:STABIT": "2.0.8", "erc20:eth:STAC": "2.0.7", "erc20:eth:STAR": "2.0.7", + "erc20:eth:STB": "2.0.10", "erc20:eth:STC": "2.0.7", "erc20:eth:STK": "2.0.7", "erc20:eth:STN": "2.0.7", @@ -1560,43 +1848,83 @@ "erc20:eth:STORM": "2.0.7", "erc20:eth:STP": "2.0.7", "erc20:eth:STQ": "2.0.7", + "erc20:eth:STR": "2.0.10", "erc20:eth:STRC": "2.0.7", + "erc20:eth:STU": "2.0.10", "erc20:eth:STX": "2.0.7", "erc20:eth:SUB": "2.0.7", + "erc20:eth:SUR": "2.0.10", + "erc20:eth:SVD": "2.0.10", + "erc20:eth:SWFTC": "2.0.10", "erc20:eth:SWM": "2.0.7", "erc20:eth:SWT": "2.0.7", "erc20:eth:SXDT": "2.0.7", "erc20:eth:SXUT": "2.0.7", "erc20:eth:SYN": "2.0.7", + "erc20:eth:Seele": "2.0.10", "erc20:eth:SenSatorI": "2.0.7", + "erc20:eth:Soar": "2.0.10", + "erc20:eth:TALAO": "2.0.10", "erc20:eth:TAU": "2.0.7", "erc20:eth:TBC2": "2.0.7", "erc20:eth:TBT": "2.0.7", + "erc20:eth:TBX": "2.0.10", "erc20:eth:TCA": "2.0.8", + "erc20:eth:TCH": "2.0.10", "erc20:eth:TDH": "2.0.7", + "erc20:eth:TEAM": "2.0.10", + "erc20:eth:TEN": "2.0.10", + "erc20:eth:TFD": "2.0.10", "erc20:eth:TFL": "2.0.7", + "erc20:eth:TGAME": "2.0.10", + "erc20:eth:TGT": "2.0.10", "erc20:eth:THETA": "2.0.7", + "erc20:eth:THR": "2.0.10", + "erc20:eth:THRT": "2.0.10", "erc20:eth:THUG": "2.0.7", + "erc20:eth:TIC": "2.0.10", + "erc20:eth:TIE": "2.0.10", + "erc20:eth:TIG": "2.0.10", "erc20:eth:TIME": "2.0.7", "erc20:eth:TIO": "2.0.7", "erc20:eth:TIX": "2.0.7", + "erc20:eth:TKA": "2.0.10", "erc20:eth:TKN": "2.0.7", + "erc20:eth:TKR": "2.0.10", "erc20:eth:TLX": "2.0.8", + "erc20:eth:TMT": "2.0.10", + "erc20:eth:TNS": "2.0.10", "erc20:eth:TNT": "2.0.7", + "erc20:eth:TOMO": "2.0.10", "erc20:eth:TOOR": "2.0.8", + "erc20:eth:TRAC": "2.0.10", + "erc20:eth:TRAK": "2.0.10", "erc20:eth:TRCN": "2.0.7", + "erc20:eth:TRCT": "2.0.10", + "erc20:eth:TRDT": "2.0.10", "erc20:eth:TRST": "2.0.7", "erc20:eth:TSW": "2.0.8", + "erc20:eth:TTA": "2.0.10", + "erc20:eth:TTU": "2.0.10", + "erc20:eth:TUSD": "2.0.10", "erc20:eth:TWN": "2.0.7", "erc20:eth:TWNKL": "2.0.7", "erc20:eth:TaaS": "2.0.7", + "erc20:eth:UBT": "2.0.10", + "erc20:eth:UCASH": "2.0.10", + "erc20:eth:UCN": "2.0.10", + "erc20:eth:UFR": "2.0.10", "erc20:eth:UKG": "2.0.7", + "erc20:eth:UP": "2.0.10", + "erc20:eth:UPP": "2.0.10", "erc20:eth:UQC": "2.0.7", "erc20:eth:URB": "2.0.8", "erc20:eth:USDC": "2.0.8", "erc20:eth:USDM": "2.0.7", + "erc20:eth:USDT": "2.0.10", "erc20:eth:UTK": "2.0.7", "erc20:eth:UTN-P": "2.0.7", + "erc20:eth:UTT": "2.0.10", "erc20:eth:UUU": "2.0.7", "erc20:eth:Unicorn": "2.0.7", "erc20:eth:VDG": "2.0.8", @@ -1607,68 +1935,115 @@ "erc20:eth:VERI": "2.0.7", "erc20:eth:VIB": "2.0.7", "erc20:eth:VIEW": "2.0.7", + "erc20:eth:VIKKY": "2.0.10", + "erc20:eth:VIN": "2.0.10", "erc20:eth:VIT": "2.0.7", + "erc20:eth:VITE": "2.0.10", "erc20:eth:VIU": "2.0.7", "erc20:eth:VLD": "2.0.7", "erc20:eth:VOC": "2.0.7", "erc20:eth:VOISE": "2.0.7", "erc20:eth:VSL": "2.0.7", + "erc20:eth:VUU": "2.0.10", + "erc20:eth:VZT": "2.0.10", + "erc20:eth:WAB": "2.0.10", "erc20:eth:WATT": "2.0.8", "erc20:eth:WAX": "2.0.7", "erc20:eth:WBA": "2.0.7", "erc20:eth:WCN": "2.0.7", "erc20:eth:WCT": "2.0.7", + "erc20:eth:WEB": "2.0.10", "erc20:eth:WETH": "2.0.7", "erc20:eth:WHEN": "2.0.7", "erc20:eth:WILD": "2.0.7", + "erc20:eth:WIN": "2.0.10", "erc20:eth:WINGS": "2.0.7", + "erc20:eth:WISH": "2.0.10", "erc20:eth:WMK": "2.0.8", "erc20:eth:WNK": "2.0.8", "erc20:eth:WPC": "2.0.7", "erc20:eth:WPR": "2.0.7", + "erc20:eth:WRC": "2.0.10", "erc20:eth:WRK": "2.0.7", "erc20:eth:WTC": "2.0.7", + "erc20:eth:WTT": "2.0.10", "erc20:eth:WYS": "2.0.7", "erc20:eth:WYV": "2.0.7", "erc20:eth:WaBi": "2.0.7", "erc20:eth:X8X": "2.0.7", "erc20:eth:XAUR": "2.0.7", + "erc20:eth:XBL": "2.0.10", "erc20:eth:XBP": "2.0.7", "erc20:eth:XCC": "2.0.7", + "erc20:eth:XCLR": "2.0.10", + "erc20:eth:XDCE": "2.0.10", + "erc20:eth:XES": "2.0.10", + "erc20:eth:XET": "2.0.10", "erc20:eth:XFS": "2.0.7", "erc20:eth:XGG": "2.0.7", "erc20:eth:XGM": "2.0.7", "erc20:eth:XGT": "2.0.7", "erc20:eth:XID": "2.0.7", + "erc20:eth:XMCT": "2.0.10", + "erc20:eth:XMX": "2.0.10", "erc20:eth:XNK": "2.0.7", "erc20:eth:XNN": "2.0.7", "erc20:eth:XNT": "2.0.7", + "erc20:eth:XOV": "2.0.10", + "erc20:eth:XPA": "2.0.10", "erc20:eth:XRL": "2.0.7", "erc20:eth:XSC": "2.0.7", + "erc20:eth:XYO": "2.0.10", + "erc20:eth:YEE": "2.0.10", + "erc20:eth:YOYOW": "2.0.10", "erc20:eth:YUP": "2.0.8", "erc20:eth:YUPIE": "2.0.7", "erc20:eth:ZAP": "2.0.7", + "erc20:eth:ZCN": "2.0.10", + "erc20:eth:ZCO": "2.0.10", "erc20:eth:ZCS": "2.0.7", "erc20:eth:ZIL": "2.0.7", + "erc20:eth:ZINC": "2.0.10", + "erc20:eth:ZIP": "2.0.10", + "erc20:eth:ZIPT": "2.0.10", + "erc20:eth:ZLA": "2.0.10", "erc20:eth:ZMN": "2.0.7", + "erc20:eth:ZPR": "2.0.10", + "erc20:eth:ZRX": "2.0.10", "erc20:eth:ZST": "2.0.7", + "erc20:eth:ZTX": "2.0.10", + "erc20:eth:ZXC": "2.0.10", "erc20:eth:cV": "2.0.7", "erc20:eth:eBCH": "2.0.7", "erc20:eth:eBTC": "2.0.7", "erc20:eth:eGAS": "2.0.7", "erc20:eth:eUSD": "2.0.7", "erc20:eth:eosDAC": "2.0.7", + "erc20:eth:iETH": "2.0.10", "erc20:eth:nCash": "2.0.7", "erc20:eth:nUSD": "2.0.7", "erc20:eth:onG": "2.0.7", "erc20:kov:Aeternity": "2.0.7", + "erc20:kov:DAI": "2.0.10", + "erc20:kov:DGD": "2.0.10", + "erc20:kov:GNT": "2.0.10", + "erc20:kov:GUP": "2.0.10", + "erc20:kov:MKR": "2.0.10", + "erc20:kov:MLN": "2.0.10", + "erc20:kov:REP": "2.0.10", + "erc20:kov:ZRX": "2.0.10", "erc20:rin:AETH": "2.0.7", "erc20:rin:BHNT": "2.0.7", "erc20:rin:CTGA": "2.0.7", + "erc20:rin:KC": "2.0.10", + "erc20:rin:NONE": "2.0.10", "erc20:rin:PPD": "2.0.7", + "erc20:rin:RDN": "2.0.10", "erc20:rin:WALL": "2.0.7", "erc20:rop:*PLASMA": "2.0.8", "erc20:rop:ILSC": "2.0.7", + "erc20:rop:NONE": "2.0.10", + "erc20:rop:dqr30": "2.0.10", "erc20:ubq:BEER": "2.0.7", "erc20:ubq:CEFS": "2.0.7", "erc20:ubq:DOT": "2.0.7", From 2f198f0b467b148ac35edd2d7ff610784b5202e6 Mon Sep 17 00:00:00 2001 From: matejcik Date: Thu, 29 Nov 2018 16:39:31 +0100 Subject: [PATCH 663/767] coins_details: hide testnet and deprecated tokens --- tools/coins_details.py | 12 +++++++++++- tools/diffize_coins_details.py | 2 +- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/tools/coins_details.py b/tools/coins_details.py index b5bbf90e0..e98974ef7 100755 --- a/tools/coins_details.py +++ b/tools/coins_details.py @@ -223,10 +223,18 @@ def update_bitcoin(coins, support_info): def update_erc20(coins, networks, support_info): # TODO skip disabled networks? network_support = {n["chain"]: support_info.get(n["key"]) for n in networks} + network_testnets = {n["chain"] for n in networks if "Testnet" in n["name"]} res = update_simple(coins, support_info, "erc20") for coin in coins: key = coin["key"] chain = coin["chain"] + + hidden = False + if chain in network_testnets: + hidden = True + if "deprecation" in coin: + hidden = True + if network_support.get(chain, {}).get("webwallet"): wallets = WALLETS_ETH_NATIVE else: @@ -239,6 +247,8 @@ def update_erc20(coins, networks, support_info): links={}, wallet=wallets, ) + if hidden: + details["hidden"] = True if coin.get("website"): details["links"]["Homepage"] = coin["website"] if coin.get("social", {}).get("github"): @@ -325,7 +335,7 @@ def check_missing_data(coins): hidden_coins = [k for k, coin in coins.items() if coin.get("hidden")] for key in hidden_coins: del coins[key] - LOG.debug(f"{k}: Coin is hidden") + LOG.debug(f"{key}: Coin is hidden") def apply_overrides(coins): diff --git a/tools/diffize_coins_details.py b/tools/diffize_coins_details.py index 430b8f272..1e1a69796 100755 --- a/tools/diffize_coins_details.py +++ b/tools/diffize_coins_details.py @@ -24,7 +24,7 @@ def diffize_file(coins_details, tmp): for link in links: links[link] = links[link].rstrip("/") for wallet in wallets: - wallets[wallet] = wallets[wallet].rstrip("/") + wallet["url"] = wallet["url"].rstrip("/") if not coin.get("wallet"): coin.pop("wallet", None) From 71528b526020b5c6a95261b07336cff5d68ea66e Mon Sep 17 00:00:00 2001 From: matejcik Date: Thu, 29 Nov 2018 16:42:12 +0100 Subject: [PATCH 664/767] coins_details: add a bunch of overrides for network names, regenerate --- defs/coins_details.json | 1260 +++++++++++++++++++----------- defs/coins_details.override.json | 46 +- 2 files changed, 869 insertions(+), 437 deletions(-) diff --git a/defs/coins_details.json b/defs/coins_details.json index 82b4f37db..32b76f13d 100644 --- a/defs/coins_details.json +++ b/defs/coins_details.json @@ -5,7 +5,7 @@ "Github": "https://github.com/Actinium-project/Actinium", "Homepage": "https://actinium.org" }, - "marketcap_usd": 240179, + "marketcap_usd": 249528, "name": "Actinium", "shortcut": "ACM", "t1_enabled": "soon", @@ -18,7 +18,7 @@ "Github": "https://github.com/Bitcoin-ABC/bitcoin-abc", "Homepage": "https://www.bitcoincash.org" }, - "marketcap_usd": 4374220394, + "marketcap_usd": 3155673709, "name": "Bitcoin Cash", "shortcut": "BCH", "t1_enabled": "yes", @@ -53,7 +53,7 @@ "Github": "https://github.com/LIMXTEC/BitSend", "Homepage": "https://bitsend.info" }, - "marketcap_usd": 1638862, + "marketcap_usd": 1486398, "name": "Bitsend", "shortcut": "BSD", "t1_enabled": "soon", @@ -66,7 +66,7 @@ "Github": "https://github.com/bitcoin/bitcoin", "Homepage": "https://bitcoin.org" }, - "marketcap_usd": 82877982519, + "marketcap_usd": 74765362137, "name": "Bitcoin", "shortcut": "BTC", "t1_enabled": "yes", @@ -88,7 +88,7 @@ "Github": "https://github.com/BTCPrivate/BitcoinPrivate", "Homepage": "https://btcprivate.org" }, - "marketcap_usd": 31975707, + "marketcap_usd": 55685828, "name": "Bitcoin Private", "shortcut": "BTCP", "t1_enabled": "yes", @@ -106,7 +106,7 @@ "Github": "https://github.com/LIMXTEC/Bitcloud", "Homepage": "https://bit-cloud.info" }, - "marketcap_usd": 203623, + "marketcap_usd": 273167, "name": "Bitcloud", "shortcut": "BTDX", "t1_enabled": "soon", @@ -119,7 +119,7 @@ "Github": "https://github.com/BTCGPU/BTCGPU", "Homepage": "https://bitcoingold.org" }, - "marketcap_usd": 385833057, + "marketcap_usd": 328491192, "name": "Bitcoin Gold", "shortcut": "BTG", "t1_enabled": "yes", @@ -141,20 +141,25 @@ "Github": "https://github.com/LIMXTEC/BitCore", "Homepage": "https://bitcore.cc" }, - "marketcap_usd": 6950290, + "marketcap_usd": 5973749, "name": "Bitcore", "shortcut": "BTX", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": [] + "wallet": [ + { + "name": "Electrum-BTX", + "url": "https://github.com/LIMXTEC/electrum-btx" + } + ] }, "bitcoin:CPC": { "links": { "Github": "https://github.com/Capricoinofficial/Capricoin", "Homepage": "https://capricoin.org" }, - "marketcap_usd": 1151038, + "marketcap_usd": 1074466, "name": "Capricoin", "shortcut": "CPC", "t1_enabled": "soon", @@ -167,7 +172,7 @@ "Github": "https://github.com/dashpay/dash", "Homepage": "https://www.dash.org" }, - "marketcap_usd": 909396282, + "marketcap_usd": 823888496, "name": "Dash", "shortcut": "DASH", "t1_enabled": "yes", @@ -189,7 +194,7 @@ "Github": "https://github.com/decred/dcrd", "Homepage": "https://www.decred.org" }, - "marketcap_usd": 223041056, + "marketcap_usd": 192550023, "name": "Decred", "shortcut": "DCR", "t1_enabled": "yes", @@ -202,7 +207,7 @@ "Github": "https://github.com/digibyte/digibyte", "Homepage": "https://digibyte.io" }, - "marketcap_usd": 146951910, + "marketcap_usd": 160503558, "name": "DigiByte", "shortcut": "DGB", "t1_enabled": "yes", @@ -211,11 +216,12 @@ "wallet": [] }, "bitcoin:DNR": { + "coinmarketcap_alias": "denarius-dnr", "links": { "Github": "https://github.com/carsenk/denarius", "Homepage": "https://denarius.io" }, - "marketcap_usd": 0, + "marketcap_usd": 538294, "name": "Denarius", "shortcut": "DNR", "t1_enabled": "yes", @@ -228,7 +234,7 @@ "Github": "https://github.com/dogecoin/dogecoin", "Homepage": "https://dogecoin.com" }, - "marketcap_usd": 271064980, + "marketcap_usd": 260425352, "name": "Dogecoin", "shortcut": "DOGE", "t1_enabled": "yes", @@ -246,7 +252,7 @@ "Github": "https://github.com/fujicoin/fujicoin", "Homepage": "https://fujicoin.org" }, - "marketcap_usd": 252492, + "marketcap_usd": 227458, "name": "Fujicoin", "shortcut": "FJC", "t1_enabled": "yes", @@ -264,7 +270,7 @@ "Github": "https://github.com/flash-coin", "Homepage": "https://www.flashcoin.io" }, - "marketcap_usd": 3030073, + "marketcap_usd": 2964719, "name": "Flashcoin", "shortcut": "FLASH", "t1_enabled": "yes", @@ -277,7 +283,7 @@ "Github": "https://github.com/FeatherCoin/Feathercoin", "Homepage": "https://feathercoin.com" }, - "marketcap_usd": 4569744, + "marketcap_usd": 5209885, "name": "Feathercoin", "shortcut": "FTC", "t1_enabled": "yes", @@ -290,7 +296,7 @@ "Github": "https://github.com/gamecredits-project/gamecredits", "Homepage": "https://gamecredits.org" }, - "marketcap_usd": 5828584, + "marketcap_usd": 5547144, "name": "GameCredits", "shortcut": "GAME", "t1_enabled": "yes", @@ -308,7 +314,7 @@ "Github": "https://github.com/Groestlcoin/groestlcoin", "Homepage": "https://www.groestlcoin.org" }, - "marketcap_usd": 21837144, + "marketcap_usd": 21152256, "name": "Groestlcoin", "shortcut": "GRS", "t1_enabled": "yes", @@ -344,7 +350,7 @@ "Github": "https://github.com/litecoin-project/litecoin", "Homepage": "https://litecoin.org" }, - "marketcap_usd": 2092345017, + "marketcap_usd": 2012453397, "name": "Litecoin", "shortcut": "LTC", "t1_enabled": "yes", @@ -366,7 +372,7 @@ "Github": "https://github.com/LIMXTEC/Megacoin", "Homepage": "https://www.megacoin.eu" }, - "marketcap_usd": 155060, + "marketcap_usd": 138708, "name": "Megacoin", "shortcut": "MEC", "t1_enabled": "soon", @@ -379,7 +385,7 @@ "Github": "https://github.com/monacoinproject/monacoin", "Homepage": "https://monacoin.org" }, - "marketcap_usd": 61053434, + "marketcap_usd": 48842744, "name": "Monacoin", "shortcut": "MONA", "t1_enabled": "yes", @@ -397,8 +403,8 @@ "Github": "https://github.com/muecoin/MUECore", "Homepage": "https://www.monetaryunit.org" }, - "marketcap_usd": 0, - "name": "MUE", + "marketcap_usd": 2548148, + "name": "MonetaryUnit", "shortcut": "MUE", "t1_enabled": "yes", "t2_enabled": "yes", @@ -410,7 +416,7 @@ "Github": "https://github.com/namecoin/namecoin-core", "Homepage": "https://namecoin.org" }, - "marketcap_usd": 6329120, + "marketcap_usd": 5892713, "name": "Namecoin", "shortcut": "NMC", "t1_enabled": "yes", @@ -432,7 +438,7 @@ "Github": "https://github.com/FundacionPesetacoin/PesetacoinCore", "Homepage": "https://pesetacoin.info" }, - "marketcap_usd": 439071, + "marketcap_usd": 351390, "name": "Pesetacoin", "shortcut": "PTC", "t1_enabled": "yes", @@ -445,7 +451,7 @@ "Github": "https://github.com/RavenProject/Ravencoin", "Homepage": "https://ravencoin.org" }, - "marketcap_usd": 48181909, + "marketcap_usd": 49673490, "name": "Ravencoin", "shortcut": "RVN", "t1_enabled": "soon", @@ -458,7 +464,7 @@ "Github": "https://github.com/SmartCash/Core-Smart", "Homepage": "https://smarcash.cc" }, - "marketcap_usd": 18023225, + "marketcap_usd": 18114724, "name": "SmartCash", "shortcut": "SMART", "t1_enabled": "yes", @@ -471,7 +477,7 @@ "Github": "https://github.com/viacoin", "Homepage": "https://viacoin.org" }, - "marketcap_usd": 9392006, + "marketcap_usd": 8469964, "name": "Viacoin", "shortcut": "VIA", "t1_enabled": "yes", @@ -489,7 +495,7 @@ "Github": "https://github.com/vertcoin-project/vertcoin-core", "Homepage": "https://vertcoin.org" }, - "marketcap_usd": 15917193, + "marketcap_usd": 16824691, "name": "Vertcoin", "shortcut": "VTC", "t1_enabled": "yes", @@ -507,7 +513,7 @@ "Github": "https://github.com/myriadcoin/myriadcoin", "Homepage": "https://www.myriadcoin.org" }, - "marketcap_usd": 3036170, + "marketcap_usd": 3085626, "name": "Myriad", "shortcut": "XMY", "t1_enabled": "yes", @@ -520,7 +526,7 @@ "Github": "https://github.com/zcoinofficial/zcoin", "Homepage": "https://zcoin.io" }, - "marketcap_usd": 37451856, + "marketcap_usd": 35305009, "name": "Zcoin", "shortcut": "XZC", "t1_enabled": "yes", @@ -542,7 +548,7 @@ "Github": "https://github.com/zcash/zcash", "Homepage": "https://z.cash" }, - "marketcap_usd": 498701587, + "marketcap_usd": 429476520, "name": "Zcash", "shortcut": "ZEC", "t1_enabled": "yes", @@ -560,7 +566,7 @@ "Github": "https://github.com/ZencashOfficial/zen", "Homepage": "https://zencash.com" }, - "marketcap_usd": 46921906, + "marketcap_usd": 37170862, "name": "Zencash", "shortcut": "ZEN", "t1_enabled": "no", @@ -734,7 +740,7 @@ "links": { "Homepage": "https://0xbitcoin.org/" }, - "marketcap_usd": 1528456, + "marketcap_usd": 1316108, "name": "0xBitcoin", "network": "eth", "shortcut": "0xBTC", @@ -761,7 +767,7 @@ "links": { "Homepage": "https://firstblood.io" }, - "marketcap_usd": 3591758, + "marketcap_usd": 3219031, "name": "FirstBlood", "network": "eth", "shortcut": "1ST", @@ -864,6 +870,34 @@ } ] }, + "erc20:eth:ABCH": { + "address": "0xcc7d26D8eA6281BB363C8448515F2C61F7BC19F0", + "links": { + "Github": "https://github.com/ABBCCash/ABBCCashtoken", + "Homepage": "https://www.abbcfoundation.com/" + }, + "marketcap_usd": 0, + "name": "ABBC Cash", + "network": "eth", + "shortcut": "ABCH", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, "erc20:eth:ABT": { "address": "0xB98d4C97425d9908E66E53A6fDf673ACcA0BE986", "links": { @@ -924,7 +958,7 @@ "links": { "Homepage": "http://accelerator.network" }, - "marketcap_usd": 48332, + "marketcap_usd": 59523, "name": "Accelerator Network", "network": "eth", "shortcut": "ACC", @@ -979,7 +1013,7 @@ "Github": "https://github.com/aditus", "Homepage": "https://aditus.net" }, - "marketcap_usd": 177344, + "marketcap_usd": 211681, "name": "Aditus", "network": "eth", "shortcut": "ADI", @@ -1007,7 +1041,7 @@ "Github": "https://github.com/adelecosystem", "Homepage": "https://adel.io" }, - "marketcap_usd": 197916, + "marketcap_usd": 590327, "name": "Adelphoi", "network": "eth", "shortcut": "ADL", @@ -1034,7 +1068,7 @@ "links": { "Homepage": "https://adshares.net" }, - "marketcap_usd": 1371914, + "marketcap_usd": 1018114, "name": "AdShares", "network": "eth", "shortcut": "ADST", @@ -1062,7 +1096,7 @@ "Github": "https://github.com/adchain", "Homepage": "https://adtoken.com" }, - "marketcap_usd": 4463303, + "marketcap_usd": 5295310, "name": "AdToken", "network": "eth", "shortcut": "ADT", @@ -1118,7 +1152,7 @@ "Github": "https://github.com/aeternity", "Homepage": "https://www.aeternity.com/" }, - "marketcap_usd": 154911322, + "marketcap_usd": 138684634, "name": "aeternity", "network": "eth", "shortcut": "AE", @@ -1174,7 +1208,7 @@ "Github": "https://github.com/singnet/singnet", "Homepage": "https://singularitynet.io" }, - "marketcap_usd": 20759005, + "marketcap_usd": 22135987, "name": "SingularityNET", "network": "eth", "shortcut": "AGI", @@ -1202,7 +1236,7 @@ "Github": "https://github.com/aionnetwork", "Homepage": "https://aion.network/" }, - "marketcap_usd": 51397071, + "marketcap_usd": 42520572, "name": "Aion", "network": "eth", "shortcut": "AION", @@ -1229,7 +1263,7 @@ "links": { "Homepage": "https://airtoken.com" }, - "marketcap_usd": 1302034, + "marketcap_usd": 0, "name": "AirToken", "network": "eth", "shortcut": "AIR", @@ -1257,7 +1291,7 @@ "Github": "https://github.com/AigangNetwork", "Homepage": "https://aigang.network/" }, - "marketcap_usd": 287039, + "marketcap_usd": 247909, "name": "Aigang", "network": "eth", "shortcut": "AIX", @@ -1340,7 +1374,7 @@ "Github": "https://github.com/AlisProject", "Homepage": "https://alismedia.jp" }, - "marketcap_usd": 1439718, + "marketcap_usd": 1359343, "name": "ALIS Token", "network": "eth", "shortcut": "ALIS", @@ -1451,7 +1485,7 @@ "Github": "https://github.com/amlt-by-coinfirm", "Homepage": "https://amlt.coinfirm.io/" }, - "marketcap_usd": 1717429, + "marketcap_usd": 2046309, "name": "AMLT", "network": "eth", "shortcut": "AMLT", @@ -1479,7 +1513,7 @@ "Github": "https://github.com/amontech", "Homepage": "https://amon.tech" }, - "marketcap_usd": 199631, + "marketcap_usd": 180795, "name": "Amon", "network": "eth", "shortcut": "AMN", @@ -1507,7 +1541,7 @@ "Github": "https://github.com/AMO-Project/", "Homepage": "https://amo.foundation" }, - "marketcap_usd": 15946017, + "marketcap_usd": 11577271, "name": "AMO Coin", "network": "eth", "shortcut": "AMO", @@ -1589,7 +1623,7 @@ "Github": "https://github.com/Oxchild/crowdsale", "Homepage": "https://apisplatform.io" }, - "marketcap_usd": 11569227, + "marketcap_usd": 15881813, "name": "APIS", "network": "eth", "shortcut": "APIS", @@ -1617,7 +1651,7 @@ "Github": "https://github.com/Aptoide/AppCoins-ethereumj", "Homepage": "https://appcoins.io" }, - "marketcap_usd": 5246614, + "marketcap_usd": 5332332, "name": "AppCoins", "network": "eth", "shortcut": "APPC", @@ -1644,7 +1678,7 @@ "links": { "Homepage": "https://aigang.network" }, - "marketcap_usd": 287039, + "marketcap_usd": 247909, "name": "AIGang", "network": "eth", "shortcut": "APT", @@ -1699,7 +1733,7 @@ "links": { "Homepage": "https://www.arbitragect.com" }, - "marketcap_usd": 178198, + "marketcap_usd": 154749, "name": "ArbitrageCT", "network": "eth", "shortcut": "ARCT", @@ -1864,7 +1898,7 @@ "links": { "Homepage": "https://airswap.io" }, - "marketcap_usd": 6321053, + "marketcap_usd": 6328724, "name": "Airswap", "network": "eth", "shortcut": "AST", @@ -1919,7 +1953,7 @@ "Github": "https://github.com/atonomi", "Homepage": "https://atonomi.io" }, - "marketcap_usd": 1374607, + "marketcap_usd": 1205236, "name": "Atonomi", "network": "eth", "shortcut": "ATMI", @@ -2112,7 +2146,7 @@ "Github": "https://www.github.com/axpire", "Homepage": "https://www.axpire.io" }, - "marketcap_usd": 2855463, + "marketcap_usd": 2709923, "name": "aXpire", "network": "eth", "shortcut": "AXPR", @@ -2166,8 +2200,8 @@ "links": { "Homepage": "https://basicattentiontoken.org" }, - "marketcap_usd": 0, - "name": "BAT", + "marketcap_usd": 202349332, + "name": "Basic Attention Token", "network": "eth", "shortcut": "BAT", "t1_enabled": "yes", @@ -2444,7 +2478,7 @@ "Github": "https://github.com/thebeetoken", "Homepage": "https://www.beetoken.com" }, - "marketcap_usd": 1060273, + "marketcap_usd": 972084, "name": "Bee Token", "network": "eth", "shortcut": "BEE", @@ -2528,7 +2562,7 @@ "Github": "https://github.com/bethereumproject", "Homepage": "https://www.bethereum.com/" }, - "marketcap_usd": 729773, + "marketcap_usd": 777685, "name": "Bethereum", "network": "eth", "shortcut": "BETHER", @@ -2693,7 +2727,7 @@ "Github": "https://github.com/BankEx", "Homepage": "https://bankex.com/" }, - "marketcap_usd": 3182422, + "marketcap_usd": 3207549, "name": "BANKEX", "network": "eth", "shortcut": "BKX", @@ -2749,7 +2783,7 @@ "Github": "https://github.com/BlueCrypto", "Homepage": "https://blueprotocol.com/" }, - "marketcap_usd": 663834, + "marketcap_usd": 710490, "name": "Ethereum Blue", "network": "eth", "shortcut": "BLUE", @@ -2804,7 +2838,7 @@ "links": { "Homepage": "https://www.iconomi.net" }, - "marketcap_usd": 23579735, + "marketcap_usd": 19897446, "name": "Iconomi", "network": "eth", "shortcut": "BLX (Iconomi)", @@ -2914,8 +2948,8 @@ "links": { "Homepage": "https://www.binance.com" }, - "marketcap_usd": 0, - "name": "BNB", + "marketcap_usd": 705290129, + "name": "Binance Coin", "network": "eth", "shortcut": "BNB", "t1_enabled": "yes", @@ -2942,7 +2976,7 @@ "Github": "https://github.com/bancorprotocol", "Homepage": "https://www.bancor.network/discover" }, - "marketcap_usd": 47437831, + "marketcap_usd": 41216803, "name": "Bancor", "network": "eth", "shortcut": "BNT", @@ -3023,7 +3057,7 @@ "links": { "Homepage": "https://bonpay.com" }, - "marketcap_usd": 430209, + "marketcap_usd": 361351, "name": "Bonpay", "network": "eth", "shortcut": "BON", @@ -3159,7 +3193,7 @@ "links": { "Homepage": "http://bro-consortium.io" }, - "marketcap_usd": 15173, + "marketcap_usd": 20568, "name": "BRAT", "network": "eth", "shortcut": "BRAT", @@ -3187,7 +3221,7 @@ "Github": "https://github.com/breadwallet", "Homepage": "https://token.breadapp.com/en" }, - "marketcap_usd": 23151866, + "marketcap_usd": 21924610, "name": "Bread", "network": "eth", "shortcut": "BRD", @@ -3406,7 +3440,7 @@ "Github": "https://github.com/bethereumproject", "Homepage": "https://www.bethereum.com/" }, - "marketcap_usd": 729773, + "marketcap_usd": 777685, "name": "Bethereum", "network": "eth", "shortcut": "BTHR", @@ -3434,7 +3468,7 @@ "Github": "https://github.com/bitcoin-token", "Homepage": "https://btk.community" }, - "marketcap_usd": 316726, + "marketcap_usd": 260087, "name": "Bitcoin Token", "network": "eth", "shortcut": "BTK", @@ -3462,7 +3496,7 @@ "Github": "https://github.com/bytom", "Homepage": "https://bytom.io" }, - "marketcap_usd": 125230157, + "marketcap_usd": 102941655, "name": "Bytom", "network": "eth", "shortcut": "BTM", @@ -3517,7 +3551,7 @@ "Github": "https://github.com/Andyss4545/BitEther", "Homepage": "https://bytom.io" }, - "marketcap_usd": 39038, + "marketcap_usd": 35364, "name": "Bitether", "network": "eth", "shortcut": "BTT", @@ -3627,7 +3661,7 @@ "Github": "https://github.com/cryptotwenty", "Homepage": "https://crypto20.com" }, - "marketcap_usd": 19595823, + "marketcap_usd": 16477276, "name": "Crypto20's Token", "network": "eth", "shortcut": "C20", @@ -3789,7 +3823,7 @@ "links": { "Homepage": "https://cashaa.com" }, - "marketcap_usd": 6735448, + "marketcap_usd": 9550606, "name": "Cashaa", "network": "eth", "shortcut": "CAS", @@ -4528,7 +4562,7 @@ "links": { "Homepage": "https://cindicator.com" }, - "marketcap_usd": 20677043, + "marketcap_usd": 19365564, "name": "Cindicator", "network": "eth", "shortcut": "CND", @@ -4689,34 +4723,6 @@ } ] }, - "erc20:eth:COIN": { - "address": "0x5e8F855966D638135a968861E80DdA722291B06d", - "links": { - "Github": "https://github.com/CoinvestHQ", - "Homepage": "https://coinve.st" - }, - "marketcap_usd": 64881, - "name": "Coinvest V2 Token", - "network": "eth", - "shortcut": "COIN", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Beta", - "url": "https://beta-wallet.trezor.io/next/" - }, - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, "erc20:eth:CORI": { "address": "0x725B190Bc077FFde17Cf549AA8ba25e298550B18", "links": { @@ -4749,7 +4755,7 @@ "links": { "Homepage": "https://covesting.io/" }, - "marketcap_usd": 11184871, + "marketcap_usd": 7559000, "name": "Covesting", "network": "eth", "shortcut": "COV", @@ -4805,7 +4811,7 @@ "Github": "https://github.com/Cpollo", "Homepage": "https://cpollo.info/" }, - "marketcap_usd": 977051, + "marketcap_usd": 868675, "name": "CPOLLO", "network": "eth", "shortcut": "CPLO", @@ -4833,7 +4839,7 @@ "Github": "https://github.com/aditus", "Homepage": "https://copytrack.io" }, - "marketcap_usd": 1359495, + "marketcap_usd": 1355240, "name": "COPYTRACK", "network": "eth", "shortcut": "CPY", @@ -4943,7 +4949,7 @@ "links": { "Homepage": "https://bitbounce.io" }, - "marketcap_usd": 19529599, + "marketcap_usd": 16107236, "name": "Credo / Bitbounce", "network": "eth", "shortcut": "CREDO", @@ -5273,7 +5279,7 @@ "Github": "https://github.com/cargoxio", "Homepage": "https://cargox.io" }, - "marketcap_usd": 3008537, + "marketcap_usd": 2417909, "name": "CargoX", "network": "eth", "shortcut": "CXO", @@ -5300,7 +5306,7 @@ "links": { "Homepage": "https://cyberfmradio.com" }, - "marketcap_usd": 377420, + "marketcap_usd": 278520, "name": "CyberFM", "network": "eth", "shortcut": "CYFM", @@ -5327,7 +5333,7 @@ "links": { "Homepage": "https://ccrb.io" }, - "marketcap_usd": 304481, + "marketcap_usd": 495282, "name": "CryptoCarbon", "network": "eth", "shortcut": "CryptoCarbon", @@ -5381,7 +5387,7 @@ "links": { "Homepage": "https://dadi.cloud" }, - "marketcap_usd": 4256998, + "marketcap_usd": 3499383, "name": "DADI", "network": "eth", "shortcut": "DADI", @@ -5403,12 +5409,40 @@ } ] }, + "erc20:eth:DAI": { + "address": "0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359", + "links": { + "Github": "https://github.com/makerdao", + "Homepage": "https://makerdao.com" + }, + "marketcap_usd": 60934273, + "name": "Dai Stablecoin v1.0", + "network": "eth", + "shortcut": "DAI", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, "erc20:eth:DALC": { "address": "0x07D9e49Ea402194bf48A8276dAfB16E4eD633317", "links": { "Homepage": "http://www.dalecoin.org" }, - "marketcap_usd": 16771, + "marketcap_usd": 10905, "name": "DaleCoin", "network": "eth", "shortcut": "DALC", @@ -5546,7 +5580,7 @@ "Github": "https://github.com/streamr-dev", "Homepage": "https://www.streamr.com" }, - "marketcap_usd": 56620, + "marketcap_usd": 30813, "name": "DATACoin", "network": "eth", "shortcut": "DATACoin", @@ -5685,7 +5719,7 @@ "Github": "https://github.com/DistributedBanking/DCC", "Homepage": "http://dcc.finance" }, - "marketcap_usd": 4050197, + "marketcap_usd": 3067297, "name": "Distributed Credit Chain", "network": "eth", "shortcut": "DCC", @@ -5740,7 +5774,7 @@ "Github": "https://github.com/Dentacoin", "Homepage": "https://dentacoin.com" }, - "marketcap_usd": 42714695, + "marketcap_usd": 32827229, "name": "Dentacoin", "network": "eth", "shortcut": "DCN", @@ -5850,7 +5884,7 @@ "links": { "Homepage": "https://www.dentwireless.com" }, - "marketcap_usd": 22929311, + "marketcap_usd": 20561850, "name": "DENT", "network": "eth", "shortcut": "DENT", @@ -5872,6 +5906,60 @@ } ] }, + "erc20:eth:DEX": { + "address": "0x497bAEF294c11a5f0f5Bea3f2AdB3073DB448B56", + "links": { + "Homepage": "https://www.coinbit.co.kr/" + }, + "marketcap_usd": 0, + "name": "DEX", + "network": "eth", + "shortcut": "DEX", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:DGD": { + "address": "0xE0B7927c4aF23765Cb51314A0E0521A9645F0E2A", + "links": { + "Homepage": "https://www.dgx.io" + }, + "marketcap_usd": 0, + "name": "Digix DAO", + "network": "eth", + "shortcut": "DGD", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, "erc20:eth:DGPT": { "address": "0xf6cFe53d6FEbaEEA051f400ff5fc14F0cBBDacA1", "links": { @@ -5906,7 +5994,7 @@ "Github": "https://github.com/dragonglasscom", "Homepage": "https://dragonglass.com/" }, - "marketcap_usd": 68572, + "marketcap_usd": 69108, "name": "Dragonglass", "network": "eth", "shortcut": "DGS", @@ -5962,7 +6050,7 @@ "Github": "https://github.com/DigixGlobal", "Homepage": "https://digix.global" }, - "marketcap_usd": 3134017, + "marketcap_usd": 3350392, "name": "Digix Gold Token", "network": "eth", "shortcut": "DGX", @@ -6017,7 +6105,7 @@ "links": { "Homepage": "https://etheroll.com" }, - "marketcap_usd": 2542389, + "marketcap_usd": 2409937, "name": "Etheroll", "network": "eth", "shortcut": "DICE", @@ -6321,7 +6409,7 @@ "Github": "https://github.com/dethertech", "Homepage": "https://dether.io" }, - "marketcap_usd": 864544, + "marketcap_usd": 729418, "name": "dether", "network": "eth", "shortcut": "DTH", @@ -6539,7 +6627,7 @@ "links": { "Homepage": "https://edgeless.io" }, - "marketcap_usd": 5578115, + "marketcap_usd": 7205071, "name": "Edgeless", "network": "eth", "shortcut": "EDG", @@ -6566,7 +6654,7 @@ "links": { "Homepage": "https://eidoo.io" }, - "marketcap_usd": 24327547, + "marketcap_usd": 23924213, "name": "Eidoo", "network": "eth", "shortcut": "EDO", @@ -6705,7 +6793,7 @@ "Github": "https://github.com/eltcoin", "Homepage": "http://www.eltcoin.tech/" }, - "marketcap_usd": 65720, + "marketcap_usd": 95887, "name": "ELTCOIN", "network": "eth", "shortcut": "ELTCOIN", @@ -6899,7 +6987,7 @@ "Github": "https://github.com/enigmampc", "Homepage": "https://enigma.co/" }, - "marketcap_usd": 25475967, + "marketcap_usd": 25758964, "name": "Enigma", "network": "eth", "shortcut": "ENG", @@ -7011,7 +7099,7 @@ "Github": "https://github.com/Krishtopa/ContractEristica", "Homepage": "https://eristica.com/" }, - "marketcap_usd": 770330, + "marketcap_usd": 696628, "name": "Eristica", "network": "eth", "shortcut": "ERT", @@ -7066,7 +7154,7 @@ "links": { "Homepage": "https://www.ethbits.com" }, - "marketcap_usd": 1003473, + "marketcap_usd": 891114, "name": "Ethbits", "network": "eth", "shortcut": "ETBS", @@ -7286,7 +7374,7 @@ "Github": "https://github.com/eXMRcoin/", "Homepage": "https://exmr.io/" }, - "marketcap_usd": 333443, + "marketcap_usd": 312859, "name": "eXMRcoin", "network": "eth", "shortcut": "EXMR", @@ -7418,13 +7506,41 @@ } ] }, + "erc20:eth:FGP": { + "address": "0xd9A8cfe21C232D485065cb62a96866799d4645f7", + "links": { + "Github": "https://github.com/FGPTEAM/FingerPrint", + "Homepage": "https://fingerprintcoin.org/" + }, + "marketcap_usd": 0, + "name": "FingerPrint", + "network": "eth", + "shortcut": "FGP", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, "erc20:eth:FKX": { "address": "0x009e864923b49263c7F10D19B7f8Ab7a9A5AAd33", "links": { "Github": "https://github.com/FortKnoxster", "Homepage": "https://fortknoxster.com" }, - "marketcap_usd": 289576, + "marketcap_usd": 230209, "name": "Knoxstertoken", "network": "eth", "shortcut": "FKX", @@ -7588,7 +7704,7 @@ "Github": "https://github.com/FundRequest", "Homepage": "https://fundrequest.io" }, - "marketcap_usd": 256256, + "marketcap_usd": 216401, "name": "FundRequest", "network": "eth", "shortcut": "FND", @@ -7698,7 +7814,7 @@ "Github": "https://github.com/futuraxproject", "Homepage": "https://futurax.global" }, - "marketcap_usd": 389120, + "marketcap_usd": 440081, "name": "FUTURAX", "network": "eth", "shortcut": "FTXT", @@ -7753,7 +7869,7 @@ "links": { "Homepage": "https://funfair.io" }, - "marketcap_usd": 32554360, + "marketcap_usd": 31031470, "name": "Funfair", "network": "eth", "shortcut": "FUN", @@ -7781,7 +7897,7 @@ "Github": "https://github.com/futuraxproject", "Homepage": "https://futurax.global" }, - "marketcap_usd": 389120, + "marketcap_usd": 440081, "name": "FUTURAX", "network": "eth", "shortcut": "FXC", @@ -7830,13 +7946,41 @@ } ] }, + "erc20:eth:Fzcoin": { + "address": "0xE5aeE163513119F4F750376C718766B40fA37A5F", + "links": { + "Github": "https://github.com/fzcoinProtocol", + "Homepage": "https://fzcoin.cc/" + }, + "marketcap_usd": 0, + "name": "Frozencoin Network", + "network": "eth", + "shortcut": "Fzcoin", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, "erc20:eth:GAM": { "address": "0xF67451Dc8421F0e0afEB52faa8101034ed081Ed9", "links": { "Github": "https://github.com/BlockchainLabsNZ/gambit", "Homepage": "http://gambitcrypto.com" }, - "marketcap_usd": 1970035, + "marketcap_usd": 1642669, "name": "Gambit", "network": "eth", "shortcut": "GAM", @@ -8029,7 +8173,7 @@ "Github": "https://github.com/daostack", "Homepage": "https://daostack.io" }, - "marketcap_usd": 1981451, + "marketcap_usd": 1352714, "name": "DAOstack", "network": "eth", "shortcut": "GEN", @@ -8188,6 +8332,62 @@ } ] }, + "erc20:eth:GNT": { + "address": "0xa74476443119A942dE498590Fe1f2454d7D4aC0d", + "coinmarketcap_alias": "golem-network-tokens", + "links": { + "Homepage": "https://golem.network" + }, + "marketcap_usd": 87438211, + "name": "Golem", + "network": "eth", + "shortcut": "GNT", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:GNY": { + "address": "0x247551F2EB3362E222c742E9c788B8957D9BC87e", + "links": { + "Github": "https://github.com/GNYIO", + "Homepage": "https://www.gny.io/" + }, + "marketcap_usd": 0, + "name": "GNY", + "network": "eth", + "shortcut": "GNY", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, "erc20:eth:GOLDX": { "address": "0xeAb43193CF0623073Ca89DB9B712796356FA7414", "links": { @@ -8221,7 +8421,7 @@ "links": { "Homepage": "https://gridplus.io/token-sale" }, - "marketcap_usd": 3177302, + "marketcap_usd": 2223339, "name": "GRID", "network": "eth", "shortcut": "GRID", @@ -8243,6 +8443,34 @@ } ] }, + "erc20:eth:GROO": { + "address": "0xC17195bde49D70CefCF8A9F2ee1759FFC27BF0B1", + "links": { + "Github": "https://github.com/groocoindev", + "Homepage": "https://groo.io/" + }, + "marketcap_usd": 0, + "name": "Groocoin", + "network": "eth", + "shortcut": "GROO", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, "erc20:eth:GROW": { "address": "0x0a9A9ce600D08BF9b76F49FA4e7b38A67EBEB1E6", "links": { @@ -8360,7 +8588,7 @@ "Github": "https://github.com/GIFTO-io", "Homepage": "https://gifto.io/" }, - "marketcap_usd": 17022996, + "marketcap_usd": 17446607, "name": "Gifto", "network": "eth", "shortcut": "GTO", @@ -8416,7 +8644,7 @@ "Github": "https://github.com/GenesisVision", "Homepage": "https://genesis.vision" }, - "marketcap_usd": 26174120, + "marketcap_usd": 22682241, "name": "Genesis Vision", "network": "eth", "shortcut": "GVT", @@ -8608,7 +8836,7 @@ "Github": "https://github.com/havven/havven", "Homepage": "https://havven.io" }, - "marketcap_usd": 5771514, + "marketcap_usd": 4205742, "name": "Havven", "network": "eth", "shortcut": "HAV", @@ -8854,7 +9082,7 @@ "links": { "Homepage": "https://github.com/arachnid/hodlcoin" }, - "marketcap_usd": 92678, + "marketcap_usd": 99639, "name": "HODLCoin", "network": "eth", "shortcut": "HODL", @@ -9101,7 +9329,7 @@ "links": { "Homepage": "https://www.icon.foundation" }, - "marketcap_usd": 147826217, + "marketcap_usd": 137620327, "name": "ICON", "network": "eth", "shortcut": "ICX", @@ -9155,7 +9383,7 @@ "links": { "Homepage": "https://investfeed.com" }, - "marketcap_usd": 731525, + "marketcap_usd": 698408, "name": "InvestFeed", "network": "eth", "shortcut": "IFT", @@ -9318,7 +9546,7 @@ "links": { "Homepage": "https://insights.network" }, - "marketcap_usd": 1039412, + "marketcap_usd": 976302, "name": "Insights Network", "network": "eth", "shortcut": "INSTAR", @@ -9346,7 +9574,7 @@ "Github": "https://github.com/Internxt/", "Homepage": "https://internxt.com/" }, - "marketcap_usd": 1612101, + "marketcap_usd": 980538, "name": "Internxt", "network": "eth", "shortcut": "INXT", @@ -9373,7 +9601,7 @@ "links": { "Homepage": "https://iost.io/" }, - "marketcap_usd": 71743541, + "marketcap_usd": 63735840, "name": "IOSToken", "network": "eth", "shortcut": "IOST", @@ -9484,7 +9712,7 @@ "Github": "https://github.com/iqeon", "Homepage": "https://iqeon.io/" }, - "marketcap_usd": 389945, + "marketcap_usd": 368536, "name": "IQeon", "network": "eth", "shortcut": "IQN", @@ -9540,7 +9768,7 @@ "Github": "https://github.com/IoTChainCode", "Homepage": "https://iotchain.io/" }, - "marketcap_usd": 7697584, + "marketcap_usd": 7727355, "name": "IoT Chain", "network": "eth", "shortcut": "ITC", @@ -9754,6 +9982,33 @@ } ] }, + "erc20:eth:KC": { + "address": "0x0D6DD9f68d24EC1d5fE2174f3EC8DAB52B52BaF5", + "links": { + "Homepage": "https://www.kmcc.io" + }, + "marketcap_usd": 0, + "name": "KMCC", + "network": "eth", + "shortcut": "KC", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, "erc20:eth:KICK": { "address": "0x27695E09149AdC738A978e9A678F99E4c39e9eb9", "links": { @@ -9788,7 +10043,7 @@ "Github": "https://github.com/kikinteractive/kin-token", "Homepage": "https://kin.kik.com" }, - "marketcap_usd": 23858134, + "marketcap_usd": 23176450, "name": "Kin Foundation", "network": "eth", "shortcut": "KIN", @@ -9816,7 +10071,7 @@ "Github": "https://github.com/KyberNetwork", "Homepage": "https://kyber.network" }, - "marketcap_usd": 26193706, + "marketcap_usd": 26548907, "name": "Kyber Network", "network": "eth", "shortcut": "KNC", @@ -9872,7 +10127,7 @@ "Github": "https://github.com/Cryptense/", "Homepage": "https://kryll.io/" }, - "marketcap_usd": 546148, + "marketcap_usd": 422310, "name": "Kryll", "network": "eth", "shortcut": "KRL", @@ -9954,7 +10209,7 @@ "Github": "https://github.com/latoken", "Homepage": "https://latoken.com/" }, - "marketcap_usd": 4526952, + "marketcap_usd": 4627280, "name": "LATOKEN", "network": "eth", "shortcut": "LA", @@ -10008,7 +10263,7 @@ "links": { "Homepage": "https://www.leadcoin.network/" }, - "marketcap_usd": 316296, + "marketcap_usd": 280373, "name": "LEADCOIN", "network": "eth", "shortcut": "LDC", @@ -10085,15 +10340,42 @@ } ] }, - "erc20:eth:LGO": { - "address": "0x123aB195DD38B1b40510d467a6a359b201af056f", + "erc20:eth:LG": { + "address": "0xc520F3Ac303a107D8F4B08b326B6ea66A4f961cd", "links": { - "Homepage": "https://legolas.exchange/" + "Homepage": "https://android.myapp.com/myapp/detail.htm?apkName=com.inspiration.lemoCard" }, "marketcap_usd": 0, - "name": "LGO", + "name": "LG", "network": "eth", - "shortcut": "LGO", + "shortcut": "LG", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:LGO": { + "address": "0x123aB195DD38B1b40510d467a6a359b201af056f", + "links": { + "Homepage": "https://legolas.exchange/" + }, + "marketcap_usd": 0, + "name": "LGO", + "network": "eth", + "shortcut": "LGO", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -10139,6 +10421,33 @@ } ] }, + "erc20:eth:LIBER": { + "address": "0xE6DfBF1FAcA95036B8E76e1Fb28933D025B76Cc0", + "links": { + "Homepage": "https://www.libereum.io" + }, + "marketcap_usd": 0, + "name": "Libereum", + "network": "eth", + "shortcut": "LIBER", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, "erc20:eth:LIF": { "address": "0xEB9951021698B42e4399f9cBb6267Aa35F82D59D", "links": { @@ -10172,7 +10481,7 @@ "links": { "Homepage": "http://www.lifelabs.io" }, - "marketcap_usd": 1111570, + "marketcap_usd": 1005222, "name": "LIFE", "network": "eth", "shortcut": "LIFE", @@ -10199,8 +10508,8 @@ "links": { "Homepage": "https://link.smartcontract.com" }, - "marketcap_usd": 0, - "name": "LINK Chainlink", + "marketcap_usd": 124068565, + "name": "Chainlink", "network": "eth", "shortcut": "LINK (Chainlink)", "t1_enabled": "yes", @@ -10248,13 +10557,41 @@ } ] }, + "erc20:eth:LML": { + "address": "0x25B6325f5BB1c1E03cfbC3e53F470E1F1ca022E3", + "links": { + "Github": "https://github.com/GNYIO", + "Homepage": "https://www.gny.io/" + }, + "marketcap_usd": 0, + "name": "LML", + "network": "eth", + "shortcut": "LML", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, "erc20:eth:LND": { "address": "0x0947b0e6D821378805c9598291385CE7c791A6B2", "links": { "Github": "https://github.com/lendingblock", "Homepage": "https://lendingblock.com" }, - "marketcap_usd": 3184800, + "marketcap_usd": 2204205, "name": "Lendingblock", "network": "eth", "shortcut": "LND", @@ -10281,7 +10618,7 @@ "links": { "Homepage": "https://LockChain.co" }, - "marketcap_usd": 9440208, + "marketcap_usd": 8689647, "name": "LockChain", "network": "eth", "shortcut": "LOC", @@ -10309,7 +10646,7 @@ "Github": "http://github.com/locipro/loci-coin-sale", "Homepage": "https://locipro.com" }, - "marketcap_usd": 669663, + "marketcap_usd": 573549, "name": "LOCIcoin", "network": "eth", "shortcut": "LOCI", @@ -10776,7 +11113,7 @@ "Github": "https://github.com/theembermine", "Homepage": "https://embermine.com/" }, - "marketcap_usd": 54529, + "marketcap_usd": 42851, "name": "Embers", "network": "eth", "shortcut": "MBRS", @@ -10804,7 +11141,7 @@ "Github": "https://github.com/musiconomi/", "Homepage": "https://musiconomi.com/" }, - "marketcap_usd": 135234, + "marketcap_usd": 107146, "name": "Musiconomi", "network": "eth", "shortcut": "MCI", @@ -10969,7 +11306,7 @@ "links": { "Homepage": "https://mftu.net" }, - "marketcap_usd": 22618, + "marketcap_usd": 17958, "name": "Mainstream For The Underground", "network": "eth", "shortcut": "MFTU", @@ -11018,6 +11355,35 @@ } ] }, + "erc20:eth:MKR": { + "address": "0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2", + "coinmarketcap_alias": "maker", + "links": { + "Github": "https://github.com/makerdao", + "Homepage": "https://makerdao.com" + }, + "marketcap_usd": 274592620, + "name": "MakerDAO", + "network": "eth", + "shortcut": "MKR", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, "erc20:eth:MKT": { "address": "0x7939882b54fcf0bCAe6b53dEc39Ad6e806176442", "links": { @@ -11046,6 +11412,33 @@ } ] }, + "erc20:eth:MLN": { + "address": "0xBEB9eF514a379B997e0798FDcC901Ee474B6D9A1", + "links": { + "Homepage": "https://melonport.com" + }, + "marketcap_usd": 0, + "name": "Melonport", + "network": "eth", + "shortcut": "MLN", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, "erc20:eth:MNE": { "address": "0x1a95B271B0535D15fa49932Daba31BA612b52946", "links": { @@ -11135,7 +11528,7 @@ "Github": "https://github.com/modum-io", "Homepage": "https://modum.io" }, - "marketcap_usd": 9021894, + "marketcap_usd": 9743250, "name": "Modum", "network": "eth", "shortcut": "MOD", @@ -11244,7 +11637,7 @@ "links": { "Homepage": "https://mothership.cx" }, - "marketcap_usd": 6796141, + "marketcap_usd": 6115175, "name": "Mothership", "network": "eth", "shortcut": "MSP", @@ -11271,7 +11664,7 @@ "links": { "Homepage": "http://www.monetha.io" }, - "marketcap_usd": 6250097, + "marketcap_usd": 5556456, "name": "Monetha", "network": "eth", "shortcut": "MTH", @@ -11461,7 +11854,7 @@ "Github": "https://github.com/Merculet", "Homepage": "https://www.merculet.io" }, - "marketcap_usd": 1640693, + "marketcap_usd": 1186106, "name": "Merculet", "network": "eth", "shortcut": "MVP", @@ -11515,7 +11908,7 @@ "links": { "Homepage": "https://mysterium.network" }, - "marketcap_usd": 1686308, + "marketcap_usd": 1785901, "name": "Mysterium", "network": "eth", "shortcut": "MYST", @@ -11570,7 +11963,7 @@ "Github": "https://github.com/NANJ-COIN", "Homepage": "https://nanjcoin.com/" }, - "marketcap_usd": 4596528, + "marketcap_usd": 4143350, "name": "NANJCOIN", "network": "eth", "shortcut": "NANJ", @@ -11654,7 +12047,7 @@ "Github": "https://github.com/polyswarm", "Homepage": "https://polyswarm.io" }, - "marketcap_usd": 27741991, + "marketcap_usd": 25284155, "name": "Nectar", "network": "eth", "shortcut": "NCT", @@ -11681,7 +12074,7 @@ "links": { "Homepage": "https://neverdie.com" }, - "marketcap_usd": 343695, + "marketcap_usd": 150427, "name": "Neverdie", "network": "eth", "shortcut": "NDC", @@ -11763,7 +12156,7 @@ "links": { "Homepage": "https://nimiq.com" }, - "marketcap_usd": 2506629, + "marketcap_usd": 2549306, "name": "NIMIQ", "network": "eth", "shortcut": "NET", @@ -11930,7 +12323,7 @@ "Github": "https://github.com/NperProject", "Homepage": "https://nper.io" }, - "marketcap_usd": 1498454, + "marketcap_usd": 805691, "name": "NPER", "network": "eth", "shortcut": "NPER", @@ -11954,11 +12347,12 @@ }, "erc20:eth:NPXS": { "address": "0xA15C7Ebe1f07CaF6bFF097D8a589fb8AC49Ae5B3", + "coinmarketcap_alias": "pundi-x", "links": { "Github": "https://github.com/pundix", "Homepage": "https://pundix.com" }, - "marketcap_usd": 0, + "marketcap_usd": 103771125, "name": "Pundi X Token", "network": "eth", "shortcut": "NPXS", @@ -12012,7 +12406,7 @@ "links": { "Homepage": "https://nuls.io" }, - "marketcap_usd": 22201718, + "marketcap_usd": 21546315, "name": "NULS", "network": "eth", "shortcut": "NULS", @@ -12066,7 +12460,7 @@ "links": { "Homepage": "https://beyond-the-void.net" }, - "marketcap_usd": 564835, + "marketcap_usd": 484504, "name": "Nexium", "network": "eth", "shortcut": "NxC", @@ -12120,7 +12514,7 @@ "links": { "Homepage": "https://www.openanx.org/en" }, - "marketcap_usd": 3863903, + "marketcap_usd": 3085690, "name": "OAX", "network": "eth", "shortcut": "OAX", @@ -12288,8 +12682,8 @@ "Github": "https://github.com/omisego", "Homepage": "https://omisego.network" }, - "marketcap_usd": 0, - "name": "OMG", + "marketcap_usd": 231350462, + "name": "OmiseGO", "network": "eth", "shortcut": "OMG", "t1_enabled": "yes", @@ -12448,13 +12842,40 @@ } ] }, + "erc20:eth:ORME": { + "address": "0x516E5436bAfdc11083654DE7Bb9b95382d08d5DE", + "links": { + "Homepage": "https://ormeuscoin.com" + }, + "marketcap_usd": 1467748, + "name": "Ormeus Coin", + "network": "eth", + "shortcut": "ORME", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, "erc20:eth:OST": { "address": "0x2C4e8f2D746113d0696cE89B35F0d8bF88E0AEcA", "links": { "Github": "https://github.com/OpenSTFoundation", "Homepage": "https://simpletoken.org" }, - "marketcap_usd": 11770749, + "marketcap_usd": 12630168, "name": "Simple Token 'OST'", "network": "eth", "shortcut": "OST", @@ -12482,7 +12903,7 @@ "Github": "https://github.com/owndata", "Homepage": "https://owndata.network" }, - "marketcap_usd": 3121256, + "marketcap_usd": 2451823, "name": "OWNDATA", "network": "eth", "shortcut": "OWN", @@ -12672,11 +13093,12 @@ }, "erc20:eth:PAX": { "address": "0x8E870D67F660D95d5be530380D0eC0bd388289E1", + "coinmarketcap_alias": "paxos-standard-token", "links": { "Github": "https://github.com/paxosglobal", "Homepage": "https://www.paxos.com/standard" }, - "marketcap_usd": 0, + "marketcap_usd": 139242343, "name": "Paxos Standard (PAX)", "network": "eth", "shortcut": "PAX", @@ -12703,7 +13125,7 @@ "links": { "Homepage": "http://www.tenx.tech" }, - "marketcap_usd": 37484484, + "marketcap_usd": 32642316, "name": "TenX", "network": "eth", "shortcut": "PAY", @@ -12785,7 +13207,7 @@ "Github": "https://github.com/PeculiumPCL/Peculium", "Homepage": "https://peculium.io" }, - "marketcap_usd": 2673121, + "marketcap_usd": 2940438, "name": "Peculium", "network": "eth", "shortcut": "PCL", @@ -13004,7 +13426,7 @@ "links": { "Homepage": "https://polybius.io" }, - "marketcap_usd": 5036412, + "marketcap_usd": 4946618, "name": "Polybius", "network": "eth", "shortcut": "PLBT", @@ -13196,7 +13618,7 @@ "links": { "Homepage": "https://polymath.network" }, - "marketcap_usd": 45095360, + "marketcap_usd": 42950407, "name": "Polymath Network", "network": "eth", "shortcut": "POLY", @@ -13251,7 +13673,7 @@ "Github": "https://github.com/PoSToken", "Homepage": "https://postoken.org" }, - "marketcap_usd": 30821, + "marketcap_usd": 23900, "name": "PoSToken", "network": "eth", "shortcut": "POS", @@ -13305,7 +13727,7 @@ "links": { "Homepage": "https://www.paypie.com" }, - "marketcap_usd": 6518945, + "marketcap_usd": 6175935, "name": "PayPie", "network": "eth", "shortcut": "PPP", @@ -13332,7 +13754,7 @@ "links": { "Homepage": "https://populous.co" }, - "marketcap_usd": 96285008, + "marketcap_usd": 98718006, "name": "Populous", "network": "eth", "shortcut": "PPT", @@ -13359,7 +13781,7 @@ "links": { "Homepage": "https://presearch.io" }, - "marketcap_usd": 6908649, + "marketcap_usd": 5317194, "name": "Presearch", "network": "eth", "shortcut": "PRE", @@ -13690,7 +14112,7 @@ "links": { "Homepage": "https://liquid.plus" }, - "marketcap_usd": 73912843, + "marketcap_usd": 73992998, "name": "QASH", "network": "eth", "shortcut": "QASH", @@ -13773,7 +14195,7 @@ "Github": "https://github.com/quantnetwork", "Homepage": "https://www.quant.network/" }, - "marketcap_usd": 15347313, + "marketcap_usd": 11752310, "name": "Quant", "network": "eth", "shortcut": "QNT", @@ -13912,7 +14334,7 @@ "Github": "https://github.com/qtumproject", "Homepage": "https://qtum.org/" }, - "marketcap_usd": 229115936, + "marketcap_usd": 191948643, "name": "Qtum", "network": "eth", "shortcut": "QTUM", @@ -13968,7 +14390,7 @@ "Github": "https://github.com/rublixdev", "Homepage": "https://rublix.io/" }, - "marketcap_usd": 4325880, + "marketcap_usd": 4632615, "name": "Rublix", "network": "eth", "shortcut": "RBLX", @@ -13996,7 +14418,7 @@ "Github": "https://github.com/ripio/rcn-token", "Homepage": "https://ripiocredit.network" }, - "marketcap_usd": 8536740, + "marketcap_usd": 8612903, "name": "Ripio Credit Network", "network": "eth", "shortcut": "RCN", @@ -14018,6 +14440,34 @@ } ] }, + "erc20:eth:RDN": { + "address": "0x255Aa6DF07540Cb5d3d297f0D0D4D84cb52bc8e6", + "links": { + "Github": "https://github.com/raiden-network/raiden/", + "Homepage": "https://raiden.network" + }, + "marketcap_usd": 0, + "name": "Raiden Network", + "network": "eth", + "shortcut": "RDN", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, "erc20:eth:REA": { "address": "0x767bA2915EC344015a7938E3eEDfeC2785195D05", "links": { @@ -14050,7 +14500,7 @@ "links": { "Homepage": "https://www.rebellious.io" }, - "marketcap_usd": 1033987, + "marketcap_usd": 965125, "name": "Rebellious", "network": "eth", "shortcut": "REBL", @@ -14078,7 +14528,7 @@ "Github": "https://github.com/red", "Homepage": "https://ico.red-lang.org" }, - "marketcap_usd": 1163693, + "marketcap_usd": 1210773, "name": "Red Community Token", "network": "eth", "shortcut": "RED", @@ -14156,12 +14606,39 @@ } ] }, + "erc20:eth:REP": { + "address": "0x1985365e9f78359a9B6AD760e32412f4a445E862", + "links": { + "Homepage": "https://augur.net" + }, + "marketcap_usd": 95174621, + "name": "Augur", + "network": "eth", + "shortcut": "REP", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, "erc20:eth:REQ": { "address": "0x8f8221aFbB33998d8584A2B05749bA73c37a938a", "links": { "Homepage": "https://request.network" }, - "marketcap_usd": 19476084, + "marketcap_usd": 19481307, "name": "Request Network", "network": "eth", "shortcut": "REQ", @@ -14216,7 +14693,7 @@ "links": { "Homepage": "https://refereum.com" }, - "marketcap_usd": 6840370, + "marketcap_usd": 7920012, "name": "Refereum", "network": "eth", "shortcut": "RFR", @@ -14271,7 +14748,7 @@ "links": { "Homepage": "http://crowdsale.iex.ec" }, - "marketcap_usd": 21507553, + "marketcap_usd": 20520227, "name": "IEx.ec", "network": "eth", "shortcut": "RLC", @@ -14353,7 +14830,7 @@ "links": { "Homepage": "http://www.relex.io" }, - "marketcap_usd": 1115665, + "marketcap_usd": 1590102, "name": "Relex", "network": "eth", "shortcut": "RLX", @@ -14436,7 +14913,7 @@ "Github": "https://github.com/rocketico", "Homepage": "https://rocketico.io" }, - "marketcap_usd": 11862835, + "marketcap_usd": 11563705, "name": "Rocket Token", "network": "eth", "shortcut": "ROCK", @@ -14463,7 +14940,7 @@ "links": { "Homepage": "https://icerockmining.io" }, - "marketcap_usd": 3773995, + "marketcap_usd": 3699316, "name": "ICE ROCK MINING", "network": "eth", "shortcut": "ROCK2", @@ -14490,7 +14967,7 @@ "links": { "Homepage": "https://icerockmining.io" }, - "marketcap_usd": 3773995, + "marketcap_usd": 3699316, "name": "ICE ROCK MINING", "network": "eth", "shortcut": "ROCK2PAY", @@ -14654,7 +15131,7 @@ "links": { "Homepage": "https://rivetzintl.com" }, - "marketcap_usd": 1737889, + "marketcap_usd": 1463501, "name": "Rivetz", "network": "eth", "shortcut": "RVT", @@ -14735,7 +15212,7 @@ "links": { "Homepage": "https://saltlending.com" }, - "marketcap_usd": 24087942, + "marketcap_usd": 21583879, "name": "Salt Lending Token", "network": "eth", "shortcut": "SALT", @@ -14762,7 +15239,7 @@ "links": { "Homepage": "https://santiment.net" }, - "marketcap_usd": 18557441, + "marketcap_usd": 17358047, "name": "Santiment", "network": "eth", "shortcut": "SAN", @@ -14843,7 +15320,7 @@ "links": { "Homepage": "https://sensay.it" }, - "marketcap_usd": 968638, + "marketcap_usd": 809438, "name": "Sensay", "network": "eth", "shortcut": "SENSE", @@ -15116,7 +15593,7 @@ "links": { "Homepage": "http://smartlands.io" }, - "marketcap_usd": 24669931, + "marketcap_usd": 32496326, "name": "Smartlands", "network": "eth", "shortcut": "SLT", @@ -15253,7 +15730,7 @@ "links": { "Homepage": "https://singulardtv.com" }, - "marketcap_usd": 9782204, + "marketcap_usd": 8539463, "name": "SingularDTV", "network": "eth", "shortcut": "SNGLS", @@ -15389,7 +15866,7 @@ "links": { "Homepage": "https://sola.foundation" }, - "marketcap_usd": 88991, + "marketcap_usd": 99804, "name": "Sola Token", "network": "eth", "shortcut": "SOL", @@ -15416,7 +15893,7 @@ "links": { "Homepage": "https://spankchain.com" }, - "marketcap_usd": 8351501, + "marketcap_usd": 6089602, "name": "SpankChain", "network": "eth", "shortcut": "SPANK", @@ -15524,7 +16001,7 @@ "links": { "Homepage": "https://www.sapien.network/" }, - "marketcap_usd": 496057, + "marketcap_usd": 438526, "name": "Sapien", "network": "eth", "shortcut": "SPN", @@ -15743,7 +16220,7 @@ "links": { "Homepage": "https://stktoken.com" }, - "marketcap_usd": 2014867, + "marketcap_usd": 2019715, "name": "STK Token", "network": "eth", "shortcut": "STK", @@ -15798,7 +16275,7 @@ "Github": "https://github.com/Storj", "Homepage": "https://storj.io" }, - "marketcap_usd": 21915283, + "marketcap_usd": 23059543, "name": "STORJ", "network": "eth", "shortcut": "STORJ", @@ -15825,7 +16302,7 @@ "links": { "Homepage": "https://www.stormtoken.com" }, - "marketcap_usd": 20936983, + "marketcap_usd": 20272737, "name": "Storm Token", "network": "eth", "shortcut": "STORM", @@ -15881,7 +16358,7 @@ "Github": "https://github.com/Storiqa/", "Homepage": "https://storiqa.com" }, - "marketcap_usd": 8955911, + "marketcap_usd": 8712365, "name": "Storiqa", "network": "eth", "shortcut": "STQ", @@ -15964,7 +16441,7 @@ "links": { "Homepage": "https://substratum.net" }, - "marketcap_usd": 20835058, + "marketcap_usd": 20143228, "name": "Substratum", "network": "eth", "shortcut": "SUB", @@ -16288,41 +16765,13 @@ } ] }, - "erc20:eth:TEL": { - "address": "0x85e076361cc813A908Ff672F9BAd1541474402b2", - "links": { - "Github": "https://github.com/telcoin", - "Homepage": "https://www.telco.in" - }, - "marketcap_usd": 18078579, - "name": "Telcoin", - "network": "eth", - "shortcut": "TEL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Beta", - "url": "https://beta-wallet.trezor.io/next/" - }, - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, "erc20:eth:TFL": { "address": "0xa7f976C360ebBeD4465c2855684D1AAE5271eFa9", "links": { "Github": "https://github.com/TrueFlip", "Homepage": "https://trueflip.io" }, - "marketcap_usd": 1928892, + "marketcap_usd": 1640219, "name": "TrueFlip", "network": "eth", "shortcut": "TFL", @@ -16349,7 +16798,7 @@ "links": { "Homepage": "https://www.thetatoken.org/" }, - "marketcap_usd": 38403233, + "marketcap_usd": 37474827, "name": "Theta Token", "network": "eth", "shortcut": "THETA", @@ -16404,7 +16853,7 @@ "links": { "Homepage": "https://chronobank.io" }, - "marketcap_usd": 1873125, + "marketcap_usd": 1509211, "name": "Chronobank", "network": "eth", "shortcut": "TIME", @@ -16458,7 +16907,7 @@ "links": { "Homepage": "https://www.blocktix.io" }, - "marketcap_usd": 5076942, + "marketcap_usd": 5893566, "name": "Blocktix", "network": "eth", "shortcut": "TIX", @@ -16485,7 +16934,7 @@ "links": { "Homepage": "https://etherscan.io/token/TokenCard" }, - "marketcap_usd": 12823759, + "marketcap_usd": 8284284, "name": "TokenCard", "network": "eth", "shortcut": "TKN", @@ -16759,7 +17208,7 @@ "links": { "Homepage": "https://taas.fund" }, - "marketcap_usd": 2276729, + "marketcap_usd": 2570370, "name": "Token-as-a-Service", "network": "eth", "shortcut": "TaaS", @@ -16814,7 +17263,7 @@ "links": { "Homepage": "https://uquidcoin.com" }, - "marketcap_usd": 1211009, + "marketcap_usd": 1018713, "name": "Uquid Coin", "network": "eth", "shortcut": "UQC", @@ -16866,11 +17315,12 @@ }, "erc20:eth:USDC": { "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + "coinmarketcap_alias": "usd-coin", "links": { "Github": "https://github.com/centrehq/centre-tokens", "Homepage": "https://www.centre.io" }, - "marketcap_usd": 0, + "marketcap_usd": 178124143, "name": "USD//Coin", "network": "eth", "shortcut": "USDC", @@ -16892,6 +17342,33 @@ } ] }, + "erc20:eth:USDT": { + "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7", + "links": { + "Homepage": "https://tether.to" + }, + "marketcap_usd": 0, + "name": "USD Tether (erc20)", + "network": "eth", + "shortcut": "USDT", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, "erc20:eth:UTK": { "address": "0x70a72833d6bF7F508C8224CE59ea1Ef3d0Ea3A38", "links": { @@ -16925,7 +17402,7 @@ "Github": "https://github.com/UniversaBlockchain/universa", "Homepage": "https://www.universa.io/" }, - "marketcap_usd": 5219782, + "marketcap_usd": 5887761, "name": "Universa", "network": "eth", "shortcut": "UTN-P", @@ -17036,7 +17513,7 @@ "Github": "https://github.com/blockv", "Homepage": "https://blockv.io" }, - "marketcap_usd": 10255083, + "marketcap_usd": 9290705, "name": "BLOCKv", "network": "eth", "shortcut": "VEE", @@ -17064,7 +17541,7 @@ "Github": "https://github.com/vechain", "Homepage": "https://www.vechain.com" }, - "marketcap_usd": 331228725, + "marketcap_usd": 301216086, "name": "VeChain", "network": "eth", "shortcut": "VEN", @@ -17173,7 +17650,7 @@ "Github": "https://github.com/Viewly/", "Homepage": "https://view.ly/" }, - "marketcap_usd": 228984, + "marketcap_usd": 171796, "name": "Viewly", "network": "eth", "shortcut": "VIEW", @@ -17201,7 +17678,7 @@ "Github": "https://github.com/ViceIndustryToken", "Homepage": "https://vicetoken.com/" }, - "marketcap_usd": 1126785, + "marketcap_usd": 970953, "name": "Vice Industry Token", "network": "eth", "shortcut": "VIT", @@ -17257,7 +17734,7 @@ "Github": "https://github.com/vetri-global/", "Homepage": "https://vetri.global/" }, - "marketcap_usd": 3267947, + "marketcap_usd": 3105655, "name": "VETRI", "network": "eth", "shortcut": "VLD", @@ -17423,7 +17900,7 @@ "Github": "https://github.com/waxio", "Homepage": "https://wax.io" }, - "marketcap_usd": 66397339, + "marketcap_usd": 66499364, "name": "WAX", "network": "eth", "shortcut": "WAX", @@ -17505,7 +17982,7 @@ "links": { "Homepage": "https://wepower.network" }, - "marketcap_usd": 9047738, + "marketcap_usd": 8461743, "name": "WePower", "network": "eth", "shortcut": "WCT", @@ -17615,7 +18092,7 @@ "links": { "Homepage": "https://wings.ai" }, - "marketcap_usd": 9560064, + "marketcap_usd": 8550678, "name": "WINGS", "network": "eth", "shortcut": "WINGS", @@ -17808,7 +18285,7 @@ "links": { "Homepage": "https://www.wacoin.io" }, - "marketcap_usd": 8409644, + "marketcap_usd": 8910764, "name": "WaBi", "network": "eth", "shortcut": "WaBi", @@ -17862,7 +18339,7 @@ "links": { "Homepage": "http://www.xaurum.org" }, - "marketcap_usd": 3783857, + "marketcap_usd": 3984649, "name": "Xaurum", "network": "eth", "shortcut": "XAUR", @@ -17890,7 +18367,7 @@ "Github": "https://github.com/blitzpredict", "Homepage": "https://www.blitzpredict.io" }, - "marketcap_usd": 257316, + "marketcap_usd": 250572, "name": "BlitzPredict", "network": "eth", "shortcut": "XBP", @@ -18083,7 +18560,7 @@ "Github": "https://github.com/InkProtocol/", "Homepage": "https://paywithink.com" }, - "marketcap_usd": 3457498, + "marketcap_usd": 1788247, "name": "Ink Protocol", "network": "eth", "shortcut": "XNK", @@ -18110,7 +18587,7 @@ "links": { "Homepage": "https://xenon.network" }, - "marketcap_usd": 759656, + "marketcap_usd": 697659, "name": "XENON", "network": "eth", "shortcut": "XNN", @@ -18247,7 +18724,7 @@ "Github": "https://github.com/zapproject", "Homepage": "https://zap.store" }, - "marketcap_usd": 1444064, + "marketcap_usd": 1130077, "name": "ZAP", "network": "eth", "shortcut": "ZAP", @@ -18274,7 +18751,7 @@ "links": { "Homepage": "https://zsc.io/" }, - "marketcap_usd": 2225230, + "marketcap_usd": 1837864, "name": "Zeusshield", "network": "eth", "shortcut": "ZCS", @@ -18302,7 +18779,7 @@ "Github": "https://github.com/zilliqa", "Homepage": "https://www.zilliqa.com/" }, - "marketcap_usd": 156616238, + "marketcap_usd": 156139524, "name": "Zilliqa", "network": "eth", "shortcut": "ZIL", @@ -18329,7 +18806,7 @@ "links": { "Homepage": "https://www.zmine.com" }, - "marketcap_usd": 1722266, + "marketcap_usd": 2060560, "name": "ZMINE", "network": "eth", "shortcut": "ZMN", @@ -18351,6 +18828,35 @@ } ] }, + "erc20:eth:ZRX": { + "address": "0xE41d2489571d322189246DaFA5ebDe1F4699F498", + "coinmarketcap_alias": "0x", + "links": { + "Github": "https://github.com/0xProject", + "Homepage": "https://0xproject.com" + }, + "marketcap_usd": 243505300, + "name": "0x Project", + "network": "eth", + "shortcut": "ZRX", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, "erc20:eth:ZST": { "address": "0xe386B139Ed3715Ca4B18Fd52671bDcea1cdFE4b1", "links": { @@ -18384,7 +18890,7 @@ "Github": "https://github.com/carVertical", "Homepage": "https://www.carvertical.com" }, - "marketcap_usd": 2944592, + "marketcap_usd": 2413576, "name": "carVertical", "network": "eth", "shortcut": "cV", @@ -18522,7 +19028,7 @@ "Github": "https://github.com/eosdac", "Homepage": "https://eosdac.io/" }, - "marketcap_usd": 8332451, + "marketcap_usd": 5941740, "name": "eosDAC", "network": "eth", "shortcut": "eosDAC", @@ -18550,7 +19056,7 @@ "Github": "https://github.com/havven/havven", "Homepage": "https://www.havven.io" }, - "marketcap_usd": 1444816, + "marketcap_usd": 1496181, "name": "Havven-Backed USD Nomins (nUSD)", "network": "eth", "shortcut": "nUSD", @@ -18600,124 +19106,6 @@ } ] }, - "erc20:rin:AETH": { - "address": "0x398A7A69f3c59181A1ffe34bed11DCb5DF863A8a", - "links": { - "Github": "https://github.com/akashaProject", - "Homepage": "http://akasha.world" - }, - "marketcap_usd": 0, - "name": "AKASHA Tokens", - "network": "rin", - "shortcut": "AETH", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "erc20:rin:BHNT": { - "address": "0xe27826eE778B6F78a49a686dA7D64f6E7b084a4f", - "links": { - "Github": "https://github.com/berlin-hack-and-tell", - "Homepage": "http://berlin.hackandtell.org" - }, - "marketcap_usd": 0, - "name": "Berlin Hack&Tell winner token", - "network": "rin", - "shortcut": "BHNT", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "erc20:rin:CTGA": { - "address": "0x8B65d4B7ee3FFFA986C577F0F4b70a21BaE3dD54", - "links": { - "Homepage": "https://www.ctgcoin.org" - }, - "marketcap_usd": 0, - "name": "Convenient To Go", - "network": "rin", - "shortcut": "CTGA", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "erc20:rin:WALL": { - "address": "0x0A057a87CE9C56D7e336B417c79cf30E8d27860B", - "links": { - "Github": "https://github.com/walleth", - "Homepage": "https://walleth.org" - }, - "marketcap_usd": 0, - "name": "WALLETH Community-Token", - "network": "rin", - "shortcut": "WALL", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, - "erc20:rop:dqr30": { - "address": "0xa1bAccA0e12D4091Ec1f92e7CaE3394CC9854D3D", - "links": { - "Homepage": "https://dqr-group.com/" - }, - "marketcap_usd": 0, - "name": "DQR", - "network": "rop", - "shortcut": "dqr30", - "t1_enabled": "soon", - "t2_enabled": "soon", - "type": "erc20", - "wallet": [ - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, "erc20:ubq:CEFS": { "address": "0x08533D6A06CE365298b12Ef92eb407cBA8Aa8273", "links": { @@ -18746,7 +19134,7 @@ "links": { "Homepage": "https://www.qwark.io" }, - "marketcap_usd": 795714, + "marketcap_usd": 1336173, "name": "QWARK", "network": "ubq", "shortcut": "QWARK", @@ -18791,7 +19179,7 @@ "links": { "Homepage": "https://akroma.io" }, - "marketcap_usd": 728725, + "marketcap_usd": 592443, "name": "Akroma", "shortcut": "AKA", "t1_enabled": "yes", @@ -18812,7 +19200,7 @@ "links": { "Homepage": "https://atheios.com" }, - "marketcap_usd": 60745, + "marketcap_usd": 63342, "name": "Atheios", "shortcut": "ATH", "t1_enabled": "yes", @@ -18830,10 +19218,11 @@ ] }, "eth:CLO": { + "coinmarketcap_alias": "callisto-network", "links": { "Homepage": "https://callisto.network" }, - "marketcap_usd": 0, + "marketcap_usd": 4408805, "name": "Callisto", "shortcut": "CLO", "t1_enabled": "yes", @@ -18854,7 +19243,7 @@ "links": { "Homepage": "https://egem.io" }, - "marketcap_usd": 364355, + "marketcap_usd": 252376, "name": "EtherGem", "shortcut": "EGEM", "t1_enabled": "yes", @@ -18875,7 +19264,7 @@ "links": { "Homepage": "https://ellaism.org" }, - "marketcap_usd": 253884, + "marketcap_usd": 194498, "name": "Ellaism", "shortcut": "ELLA", "t1_enabled": "yes", @@ -18914,10 +19303,11 @@ ] }, "eth:ESN": { + "coinmarketcap_alias": "ethersocial", "links": { "Homepage": "https://ethersocial.org" }, - "marketcap_usd": 0, + "marketcap_usd": 1701981, "name": "Ethersocial Network", "shortcut": "ESN", "t1_enabled": "yes", @@ -18938,7 +19328,7 @@ "links": { "Homepage": "https://ethereumclassic.github.io" }, - "marketcap_usd": 631625051, + "marketcap_usd": 516891396, "name": "Ethereum Classic", "shortcut": "ETC", "t1_enabled": "yes", @@ -18963,7 +19353,7 @@ "links": { "Homepage": "https://www.ethereum.org" }, - "marketcap_usd": 14757623254, + "marketcap_usd": 12248926016, "name": "Ethereum", "shortcut": "ETH", "t1_enabled": "yes", @@ -19030,7 +19420,7 @@ "links": { "Homepage": "https://expanse.tech" }, - "marketcap_usd": 1418548, + "marketcap_usd": 1116732, "name": "Expanse", "shortcut": "EXP", "t1_enabled": "yes", @@ -19051,7 +19441,7 @@ "links": { "Homepage": "https://gochain.io" }, - "marketcap_usd": 29511076, + "marketcap_usd": 24899807, "name": "GoChain", "shortcut": "GO", "t1_enabled": "yes", @@ -19093,7 +19483,7 @@ "links": { "Homepage": "https://musicoin.org" }, - "marketcap_usd": 2136766, + "marketcap_usd": 1757307, "name": "Musicoin", "shortcut": "MUSIC", "t1_enabled": "yes", @@ -19114,7 +19504,7 @@ "links": { "Homepage": "https://pirl.io" }, - "marketcap_usd": 2230638, + "marketcap_usd": 1302145, "name": "Pirl", "shortcut": "PIRL", "t1_enabled": "yes", @@ -19156,7 +19546,7 @@ "links": { "Homepage": "https://ubiqsmart.com" }, - "marketcap_usd": 14770349, + "marketcap_usd": 11369015, "name": "Ubiq", "shortcut": "UBQ", "t1_enabled": "yes", @@ -19178,7 +19568,7 @@ "Github": "https://github.com/input-output-hk/cardano-sl", "Homepage": "https://www.cardano.org" }, - "marketcap_usd": 1274090229, + "marketcap_usd": 1090739863, "name": "Cardano", "shortcut": "ADA", "t1_enabled": "no", @@ -19196,7 +19586,7 @@ "Github": "https://github.com/EOSIO/eos", "Homepage": "https://eos.io" }, - "marketcap_usd": 3531733448, + "marketcap_usd": 2729663170, "name": "EOS", "shortcut": "EOS", "t1_enabled": "no", @@ -19209,7 +19599,7 @@ "Github": "https://github.com/LiskHQ/lisk", "Homepage": "https://lisk.io/" }, - "marketcap_usd": 188257019, + "marketcap_usd": 173272901, "name": "Lisk", "shortcut": "LSK", "t1_enabled": "yes", @@ -19222,7 +19612,7 @@ "Github": "https://github.com/maidsafe", "Homepage": "https://maidsafe.net" }, - "marketcap_usd": 86086677, + "marketcap_usd": 79747827, "name": "MaidSafeCoin", "shortcut": "MAID", "t1_enabled": "soon", @@ -19235,7 +19625,7 @@ "Github": "https://github.com/OmniLayer", "Homepage": "https://www.omnilayer.org" }, - "marketcap_usd": 1750897, + "marketcap_usd": 1573372, "name": "Omni", "shortcut": "OMNI", "t1_enabled": "soon", @@ -19248,7 +19638,7 @@ "Github": "https://github.com/ontio/ontology", "Homepage": "https://ont.io" }, - "marketcap_usd": 312364116, + "marketcap_usd": 241061167, "name": "Ontology", "shortcut": "ONT", "t1_enabled": "no", @@ -19261,7 +19651,7 @@ "Github": "https://github.com/tronprotocol/java-tron", "Homepage": "https://tron.network" }, - "marketcap_usd": 1006000787, + "marketcap_usd": 1042480272, "name": "Tron", "shortcut": "TRX", "t1_enabled": "no", @@ -19273,7 +19663,7 @@ "links": { "Homepage": "https://tether.to" }, - "marketcap_usd": 1752855490, + "marketcap_usd": 1853973088, "name": "Tether", "shortcut": "USDT", "t1_enabled": "soon", @@ -19286,7 +19676,7 @@ "Github": "https://github.com/wanchain/go-wanchain", "Homepage": "https://wanchain.org" }, - "marketcap_usd": 54122082, + "marketcap_usd": 47753658, "name": "Wanchain", "shortcut": "WAN", "t1_enabled": "yes", @@ -19299,7 +19689,7 @@ "Github": "https://github.com/stellar/stellar-core", "Homepage": "https://www.stellar.org" }, - "marketcap_usd": 4076286086, + "marketcap_usd": 3193455596, "name": "Stellar", "shortcut": "XLM", "t1_enabled": "yes", @@ -19317,7 +19707,7 @@ "Github": "https://github.com/monero-project/monero", "Homepage": "https://getmonero.org" }, - "marketcap_usd": 1197918142, + "marketcap_usd": 1013697821, "name": "Monero", "shortcut": "XMR", "t1_enabled": "no", @@ -19330,7 +19720,7 @@ "Github": "https://github.com/ripple/rippled", "Homepage": "https://ripple.com" }, - "marketcap_usd": 18764332247, + "marketcap_usd": 15247117715, "name": "Ripple", "shortcut": "XRP", "t1_enabled": "no", @@ -19343,7 +19733,7 @@ "Github": "https://github.com/tezos/tezos", "Homepage": "https://tezos.com" }, - "marketcap_usd": 484550782, + "marketcap_usd": 321539734, "name": "Tezos", "shortcut": "XTZ", "t1_enabled": "no", @@ -19377,7 +19767,7 @@ "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 3693239, + "marketcap_usd": 2707613, "name": "DIMCOIN", "shortcut": "DIM", "t1_enabled": "yes", @@ -19395,7 +19785,7 @@ "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 3693239, + "marketcap_usd": 2707613, "name": "DIM TOKEN", "shortcut": "DIMTOK", "t1_enabled": "yes", @@ -19446,7 +19836,7 @@ "links": { "Homepage": "https://nem.io" }, - "marketcap_usd": 750004440, + "marketcap_usd": 716801769, "name": "NEM", "shortcut": "XEM", "t1_enabled": "yes", @@ -19461,12 +19851,12 @@ } }, "info": { - "marketcap_supported": "87.89 %", - "marketcap_usd": 136986851044, - "t1_coins": 693, - "t2_coins": 698, - "total_marketcap_usd": 155869917869, - "updated_at": 1542731226, - "updated_at_readable": "Tue Nov 20 17:27:06 2018" + "marketcap_supported": "87.83 %", + "marketcap_usd": 121045589479, + "t1_coins": 687, + "t2_coins": 692, + "total_marketcap_usd": 137815758137, + "updated_at": 1543505895, + "updated_at_readable": "Thu Nov 29 16:38:15 2018" } } \ No newline at end of file diff --git a/defs/coins_details.override.json b/defs/coins_details.override.json index e88762d91..c8b7695ee 100644 --- a/defs/coins_details.override.json +++ b/defs/coins_details.override.json @@ -1,6 +1,36 @@ { - "nem:DIMTOK": { - "coinmarketcap_alias": "dimcoin" + "bitcoin:DNR": { + "coinmarketcap_alias": "denarius-dnr" + }, + "bitcoin:MUE": { + "name": "MonetaryUnit" + }, + "erc20:eth:BAT": { + "name": "Basic Attention Token" + }, + "erc20:eth:BNB": { + "name": "Binance Coin" + }, + "erc20:eth:GNT": { + "coinmarketcap_alias": "golem-network-tokens" + }, + "erc20:eth:LINK (Chainlink)": { + "name": "Chainlink" + }, + "erc20:eth:MKR": { + "coinmarketcap_alias": "maker" + }, + "erc20:eth:NPXS": { + "coinmarketcap_alias": "pundi-x" + }, + "erc20:eth:OMG": { + "name": "OmiseGO" + }, + "erc20:eth:PAX": { + "coinmarketcap_alias": "paxos-standard-token" + }, + "erc20:eth:USDC": { + "coinmarketcap_alias": "usd-coin" }, "erc20:eth:VEN": { "links": { @@ -10,5 +40,17 @@ "erc20:eth:YUPIE": { "hidden": 1, "notes": "Replaced by YUP" + }, + "erc20:eth:ZRX": { + "coinmarketcap_alias": "0x" + }, + "eth:CLO": { + "coinmarketcap_alias": "callisto-network" + }, + "eth:ESN": { + "coinmarketcap_alias": "ethersocial" + }, + "nem:DIMTOK": { + "coinmarketcap_alias": "dimcoin" } } From 047e3e7f2185ef7ed76d4e3e67a3716222569bf8 Mon Sep 17 00:00:00 2001 From: Ilan <36084092+ilanolkies@users.noreply.github.com> Date: Fri, 30 Nov 2018 09:34:37 -0300 Subject: [PATCH 665/767] Update RSK Network shortcut (#243) --- defs/ethereum/networks.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/defs/ethereum/networks.json b/defs/ethereum/networks.json index 10c2683a6..23bd7cc10 100644 --- a/defs/ethereum/networks.json +++ b/defs/ethereum/networks.json @@ -68,7 +68,7 @@ "chain": "rsk", "chain_id": 30, "slip44": 137, - "shortcut": "RSK", + "shortcut": "RBTC", "name": "RSK", "rskip60": true, "url": "https://www.rsk.co", @@ -78,7 +78,7 @@ "chain": "trsk", "chain_id": 31, "slip44": 37310, - "shortcut": "tRSK", + "shortcut": "tRBTC", "name": "RSK Testnet", "rskip60": true, "url": "https://www.rsk.co", From eaa3efa228beb10418e4e04059d38f817623f0a2 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 30 Nov 2018 13:42:47 +0100 Subject: [PATCH 666/767] defs: rename RSK to RBTC in support.json --- defs/support.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/defs/support.json b/defs/support.json index 849205b54..cdc93e249 100644 --- a/defs/support.json +++ b/defs/support.json @@ -27,13 +27,13 @@ "eth:MIX": true, "eth:MUSIC": true, "eth:PIRL": true, - "eth:RSK": true, + "eth:RBTC": true, "eth:UBQ": true, "eth:tETC": true, "eth:tKOV": true, "eth:tRIN": true, "eth:tROP": true, - "eth:tRSK": true, + "eth:tRBTC": true, "misc:ADA": true, "misc:LSK": true, "misc:XLM": true, @@ -783,13 +783,13 @@ "eth:MIX": "1.7.2", "eth:MUSIC": "1.6.3", "eth:PIRL": "1.6.3", - "eth:RSK": "1.6.2", + "eth:RBTC": "1.6.2", "eth:UBQ": "1.6.2", "eth:tETC": "1.6.2", "eth:tKOV": "1.6.2", "eth:tRIN": "1.6.2", "eth:tROP": "1.6.2", - "eth:tRSK": "1.6.2", + "eth:tRBTC": "1.6.2", "misc:LSK": "1.7.1", "misc:MAID": "1.7.2", "misc:OMNI": "1.7.2", @@ -2065,13 +2065,13 @@ "eth:MIX": "2.0.10", "eth:MUSIC": "2.0.8", "eth:PIRL": "2.0.8", - "eth:RSK": "2.0.7", + "eth:RBTC": "2.0.7", "eth:UBQ": "2.0.7", "eth:tETC": "2.0.7", "eth:tKOV": "2.0.7", "eth:tRIN": "2.0.7", "eth:tROP": "2.0.7", - "eth:tRSK": "2.0.7", + "eth:tRBTC": "2.0.7", "misc:ADA": "2.0.8", "misc:EOS": "soon", "misc:LSK": "2.0.7", From 30bcad5174a6aa9fda305c3a79784b327a417f74 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 30 Nov 2018 13:43:20 +0100 Subject: [PATCH 667/767] defs: regenerate coins_details.json --- defs/coins_details.json | 502 ++++++++++++++++++++-------------------- 1 file changed, 251 insertions(+), 251 deletions(-) diff --git a/defs/coins_details.json b/defs/coins_details.json index 32b76f13d..a94399c11 100644 --- a/defs/coins_details.json +++ b/defs/coins_details.json @@ -5,7 +5,7 @@ "Github": "https://github.com/Actinium-project/Actinium", "Homepage": "https://actinium.org" }, - "marketcap_usd": 249528, + "marketcap_usd": 226969, "name": "Actinium", "shortcut": "ACM", "t1_enabled": "soon", @@ -18,7 +18,7 @@ "Github": "https://github.com/Bitcoin-ABC/bitcoin-abc", "Homepage": "https://www.bitcoincash.org" }, - "marketcap_usd": 3155673709, + "marketcap_usd": 2945938774, "name": "Bitcoin Cash", "shortcut": "BCH", "t1_enabled": "yes", @@ -53,7 +53,7 @@ "Github": "https://github.com/LIMXTEC/BitSend", "Homepage": "https://bitsend.info" }, - "marketcap_usd": 1486398, + "marketcap_usd": 1287986, "name": "Bitsend", "shortcut": "BSD", "t1_enabled": "soon", @@ -66,7 +66,7 @@ "Github": "https://github.com/bitcoin/bitcoin", "Homepage": "https://bitcoin.org" }, - "marketcap_usd": 74765362137, + "marketcap_usd": 68881115878, "name": "Bitcoin", "shortcut": "BTC", "t1_enabled": "yes", @@ -88,7 +88,7 @@ "Github": "https://github.com/BTCPrivate/BitcoinPrivate", "Homepage": "https://btcprivate.org" }, - "marketcap_usd": 55685828, + "marketcap_usd": 53873018, "name": "Bitcoin Private", "shortcut": "BTCP", "t1_enabled": "yes", @@ -106,7 +106,7 @@ "Github": "https://github.com/LIMXTEC/Bitcloud", "Homepage": "https://bit-cloud.info" }, - "marketcap_usd": 273167, + "marketcap_usd": 178824, "name": "Bitcloud", "shortcut": "BTDX", "t1_enabled": "soon", @@ -119,7 +119,7 @@ "Github": "https://github.com/BTCGPU/BTCGPU", "Homepage": "https://bitcoingold.org" }, - "marketcap_usd": 328491192, + "marketcap_usd": 307394106, "name": "Bitcoin Gold", "shortcut": "BTG", "t1_enabled": "yes", @@ -141,7 +141,7 @@ "Github": "https://github.com/LIMXTEC/BitCore", "Homepage": "https://bitcore.cc" }, - "marketcap_usd": 5973749, + "marketcap_usd": 5663011, "name": "Bitcore", "shortcut": "BTX", "t1_enabled": "yes", @@ -159,7 +159,7 @@ "Github": "https://github.com/Capricoinofficial/Capricoin", "Homepage": "https://capricoin.org" }, - "marketcap_usd": 1074466, + "marketcap_usd": 1010223, "name": "Capricoin", "shortcut": "CPC", "t1_enabled": "soon", @@ -172,7 +172,7 @@ "Github": "https://github.com/dashpay/dash", "Homepage": "https://www.dash.org" }, - "marketcap_usd": 823888496, + "marketcap_usd": 758422088, "name": "Dash", "shortcut": "DASH", "t1_enabled": "yes", @@ -194,7 +194,7 @@ "Github": "https://github.com/decred/dcrd", "Homepage": "https://www.decred.org" }, - "marketcap_usd": 192550023, + "marketcap_usd": 174497263, "name": "Decred", "shortcut": "DCR", "t1_enabled": "yes", @@ -207,7 +207,7 @@ "Github": "https://github.com/digibyte/digibyte", "Homepage": "https://digibyte.io" }, - "marketcap_usd": 160503558, + "marketcap_usd": 136913497, "name": "DigiByte", "shortcut": "DGB", "t1_enabled": "yes", @@ -234,7 +234,7 @@ "Github": "https://github.com/dogecoin/dogecoin", "Homepage": "https://dogecoin.com" }, - "marketcap_usd": 260425352, + "marketcap_usd": 249730124, "name": "Dogecoin", "shortcut": "DOGE", "t1_enabled": "yes", @@ -252,7 +252,7 @@ "Github": "https://github.com/fujicoin/fujicoin", "Homepage": "https://fujicoin.org" }, - "marketcap_usd": 227458, + "marketcap_usd": 223203, "name": "Fujicoin", "shortcut": "FJC", "t1_enabled": "yes", @@ -270,7 +270,7 @@ "Github": "https://github.com/flash-coin", "Homepage": "https://www.flashcoin.io" }, - "marketcap_usd": 2964719, + "marketcap_usd": 2802887, "name": "Flashcoin", "shortcut": "FLASH", "t1_enabled": "yes", @@ -283,7 +283,7 @@ "Github": "https://github.com/FeatherCoin/Feathercoin", "Homepage": "https://feathercoin.com" }, - "marketcap_usd": 5209885, + "marketcap_usd": 4435830, "name": "Feathercoin", "shortcut": "FTC", "t1_enabled": "yes", @@ -296,7 +296,7 @@ "Github": "https://github.com/gamecredits-project/gamecredits", "Homepage": "https://gamecredits.org" }, - "marketcap_usd": 5547144, + "marketcap_usd": 5110725, "name": "GameCredits", "shortcut": "GAME", "t1_enabled": "yes", @@ -314,7 +314,7 @@ "Github": "https://github.com/Groestlcoin/groestlcoin", "Homepage": "https://www.groestlcoin.org" }, - "marketcap_usd": 21152256, + "marketcap_usd": 18465532, "name": "Groestlcoin", "shortcut": "GRS", "t1_enabled": "yes", @@ -350,7 +350,7 @@ "Github": "https://github.com/litecoin-project/litecoin", "Homepage": "https://litecoin.org" }, - "marketcap_usd": 2012453397, + "marketcap_usd": 1876911528, "name": "Litecoin", "shortcut": "LTC", "t1_enabled": "yes", @@ -372,7 +372,7 @@ "Github": "https://github.com/LIMXTEC/Megacoin", "Homepage": "https://www.megacoin.eu" }, - "marketcap_usd": 138708, + "marketcap_usd": 130774, "name": "Megacoin", "shortcut": "MEC", "t1_enabled": "soon", @@ -385,7 +385,7 @@ "Github": "https://github.com/monacoinproject/monacoin", "Homepage": "https://monacoin.org" }, - "marketcap_usd": 48842744, + "marketcap_usd": 44054538, "name": "Monacoin", "shortcut": "MONA", "t1_enabled": "yes", @@ -403,7 +403,7 @@ "Github": "https://github.com/muecoin/MUECore", "Homepage": "https://www.monetaryunit.org" }, - "marketcap_usd": 2548148, + "marketcap_usd": 2332002, "name": "MonetaryUnit", "shortcut": "MUE", "t1_enabled": "yes", @@ -416,7 +416,7 @@ "Github": "https://github.com/namecoin/namecoin-core", "Homepage": "https://namecoin.org" }, - "marketcap_usd": 5892713, + "marketcap_usd": 5544320, "name": "Namecoin", "shortcut": "NMC", "t1_enabled": "yes", @@ -438,7 +438,7 @@ "Github": "https://github.com/FundacionPesetacoin/PesetacoinCore", "Homepage": "https://pesetacoin.info" }, - "marketcap_usd": 351390, + "marketcap_usd": 334459, "name": "Pesetacoin", "shortcut": "PTC", "t1_enabled": "yes", @@ -451,7 +451,7 @@ "Github": "https://github.com/RavenProject/Ravencoin", "Homepage": "https://ravencoin.org" }, - "marketcap_usd": 49673490, + "marketcap_usd": 42386146, "name": "Ravencoin", "shortcut": "RVN", "t1_enabled": "soon", @@ -464,7 +464,7 @@ "Github": "https://github.com/SmartCash/Core-Smart", "Homepage": "https://smarcash.cc" }, - "marketcap_usd": 18114724, + "marketcap_usd": 17181120, "name": "SmartCash", "shortcut": "SMART", "t1_enabled": "yes", @@ -477,7 +477,7 @@ "Github": "https://github.com/viacoin", "Homepage": "https://viacoin.org" }, - "marketcap_usd": 8469964, + "marketcap_usd": 7337921, "name": "Viacoin", "shortcut": "VIA", "t1_enabled": "yes", @@ -495,7 +495,7 @@ "Github": "https://github.com/vertcoin-project/vertcoin-core", "Homepage": "https://vertcoin.org" }, - "marketcap_usd": 16824691, + "marketcap_usd": 14783207, "name": "Vertcoin", "shortcut": "VTC", "t1_enabled": "yes", @@ -513,7 +513,7 @@ "Github": "https://github.com/myriadcoin/myriadcoin", "Homepage": "https://www.myriadcoin.org" }, - "marketcap_usd": 3085626, + "marketcap_usd": 2734242, "name": "Myriad", "shortcut": "XMY", "t1_enabled": "yes", @@ -526,7 +526,7 @@ "Github": "https://github.com/zcoinofficial/zcoin", "Homepage": "https://zcoin.io" }, - "marketcap_usd": 35305009, + "marketcap_usd": 32503050, "name": "Zcoin", "shortcut": "XZC", "t1_enabled": "yes", @@ -548,7 +548,7 @@ "Github": "https://github.com/zcash/zcash", "Homepage": "https://z.cash" }, - "marketcap_usd": 429476520, + "marketcap_usd": 424095992, "name": "Zcash", "shortcut": "ZEC", "t1_enabled": "yes", @@ -566,7 +566,7 @@ "Github": "https://github.com/ZencashOfficial/zen", "Homepage": "https://zencash.com" }, - "marketcap_usd": 37170862, + "marketcap_usd": 32779978, "name": "Zencash", "shortcut": "ZEN", "t1_enabled": "no", @@ -740,7 +740,7 @@ "links": { "Homepage": "https://0xbitcoin.org/" }, - "marketcap_usd": 1316108, + "marketcap_usd": 1147641, "name": "0xBitcoin", "network": "eth", "shortcut": "0xBTC", @@ -767,7 +767,7 @@ "links": { "Homepage": "https://firstblood.io" }, - "marketcap_usd": 3219031, + "marketcap_usd": 3084437, "name": "FirstBlood", "network": "eth", "shortcut": "1ST", @@ -958,7 +958,7 @@ "links": { "Homepage": "http://accelerator.network" }, - "marketcap_usd": 59523, + "marketcap_usd": 59582, "name": "Accelerator Network", "network": "eth", "shortcut": "ACC", @@ -1013,7 +1013,7 @@ "Github": "https://github.com/aditus", "Homepage": "https://aditus.net" }, - "marketcap_usd": 211681, + "marketcap_usd": 196550, "name": "Aditus", "network": "eth", "shortcut": "ADI", @@ -1041,7 +1041,7 @@ "Github": "https://github.com/adelecosystem", "Homepage": "https://adel.io" }, - "marketcap_usd": 590327, + "marketcap_usd": 536958, "name": "Adelphoi", "network": "eth", "shortcut": "ADL", @@ -1068,7 +1068,7 @@ "links": { "Homepage": "https://adshares.net" }, - "marketcap_usd": 1018114, + "marketcap_usd": 945374, "name": "AdShares", "network": "eth", "shortcut": "ADST", @@ -1096,7 +1096,7 @@ "Github": "https://github.com/adchain", "Homepage": "https://adtoken.com" }, - "marketcap_usd": 5295310, + "marketcap_usd": 4080047, "name": "AdToken", "network": "eth", "shortcut": "ADT", @@ -1152,7 +1152,7 @@ "Github": "https://github.com/aeternity", "Homepage": "https://www.aeternity.com/" }, - "marketcap_usd": 138684634, + "marketcap_usd": 128327767, "name": "aeternity", "network": "eth", "shortcut": "AE", @@ -1208,7 +1208,7 @@ "Github": "https://github.com/singnet/singnet", "Homepage": "https://singularitynet.io" }, - "marketcap_usd": 22135987, + "marketcap_usd": 18705610, "name": "SingularityNET", "network": "eth", "shortcut": "AGI", @@ -1236,7 +1236,7 @@ "Github": "https://github.com/aionnetwork", "Homepage": "https://aion.network/" }, - "marketcap_usd": 42520572, + "marketcap_usd": 37421103, "name": "Aion", "network": "eth", "shortcut": "AION", @@ -1291,7 +1291,7 @@ "Github": "https://github.com/AigangNetwork", "Homepage": "https://aigang.network/" }, - "marketcap_usd": 247909, + "marketcap_usd": 226792, "name": "Aigang", "network": "eth", "shortcut": "AIX", @@ -1374,7 +1374,7 @@ "Github": "https://github.com/AlisProject", "Homepage": "https://alismedia.jp" }, - "marketcap_usd": 1359343, + "marketcap_usd": 1402872, "name": "ALIS Token", "network": "eth", "shortcut": "ALIS", @@ -1485,7 +1485,7 @@ "Github": "https://github.com/amlt-by-coinfirm", "Homepage": "https://amlt.coinfirm.io/" }, - "marketcap_usd": 2046309, + "marketcap_usd": 2040467, "name": "AMLT", "network": "eth", "shortcut": "AMLT", @@ -1513,7 +1513,7 @@ "Github": "https://github.com/amontech", "Homepage": "https://amon.tech" }, - "marketcap_usd": 180795, + "marketcap_usd": 162356, "name": "Amon", "network": "eth", "shortcut": "AMN", @@ -1541,7 +1541,7 @@ "Github": "https://github.com/AMO-Project/", "Homepage": "https://amo.foundation" }, - "marketcap_usd": 11577271, + "marketcap_usd": 12640079, "name": "AMO Coin", "network": "eth", "shortcut": "AMO", @@ -1623,7 +1623,7 @@ "Github": "https://github.com/Oxchild/crowdsale", "Homepage": "https://apisplatform.io" }, - "marketcap_usd": 15881813, + "marketcap_usd": 14039405, "name": "APIS", "network": "eth", "shortcut": "APIS", @@ -1651,7 +1651,7 @@ "Github": "https://github.com/Aptoide/AppCoins-ethereumj", "Homepage": "https://appcoins.io" }, - "marketcap_usd": 5332332, + "marketcap_usd": 4600005, "name": "AppCoins", "network": "eth", "shortcut": "APPC", @@ -1678,7 +1678,7 @@ "links": { "Homepage": "https://aigang.network" }, - "marketcap_usd": 247909, + "marketcap_usd": 226792, "name": "AIGang", "network": "eth", "shortcut": "APT", @@ -1733,7 +1733,7 @@ "links": { "Homepage": "https://www.arbitragect.com" }, - "marketcap_usd": 154749, + "marketcap_usd": 170106, "name": "ArbitrageCT", "network": "eth", "shortcut": "ARCT", @@ -1898,7 +1898,7 @@ "links": { "Homepage": "https://airswap.io" }, - "marketcap_usd": 6328724, + "marketcap_usd": 4887756, "name": "Airswap", "network": "eth", "shortcut": "AST", @@ -1953,7 +1953,7 @@ "Github": "https://github.com/atonomi", "Homepage": "https://atonomi.io" }, - "marketcap_usd": 1205236, + "marketcap_usd": 863716, "name": "Atonomi", "network": "eth", "shortcut": "ATMI", @@ -2146,7 +2146,7 @@ "Github": "https://www.github.com/axpire", "Homepage": "https://www.axpire.io" }, - "marketcap_usd": 2709923, + "marketcap_usd": 2438052, "name": "aXpire", "network": "eth", "shortcut": "AXPR", @@ -2200,7 +2200,7 @@ "links": { "Homepage": "https://basicattentiontoken.org" }, - "marketcap_usd": 202349332, + "marketcap_usd": 189100409, "name": "Basic Attention Token", "network": "eth", "shortcut": "BAT", @@ -2478,7 +2478,7 @@ "Github": "https://github.com/thebeetoken", "Homepage": "https://www.beetoken.com" }, - "marketcap_usd": 972084, + "marketcap_usd": 1051689, "name": "Bee Token", "network": "eth", "shortcut": "BEE", @@ -2562,7 +2562,7 @@ "Github": "https://github.com/bethereumproject", "Homepage": "https://www.bethereum.com/" }, - "marketcap_usd": 777685, + "marketcap_usd": 765695, "name": "Bethereum", "network": "eth", "shortcut": "BETHER", @@ -2727,7 +2727,7 @@ "Github": "https://github.com/BankEx", "Homepage": "https://bankex.com/" }, - "marketcap_usd": 3207549, + "marketcap_usd": 3272311, "name": "BANKEX", "network": "eth", "shortcut": "BKX", @@ -2783,7 +2783,7 @@ "Github": "https://github.com/BlueCrypto", "Homepage": "https://blueprotocol.com/" }, - "marketcap_usd": 710490, + "marketcap_usd": 678811, "name": "Ethereum Blue", "network": "eth", "shortcut": "BLUE", @@ -2838,7 +2838,7 @@ "links": { "Homepage": "https://www.iconomi.net" }, - "marketcap_usd": 19897446, + "marketcap_usd": 17401149, "name": "Iconomi", "network": "eth", "shortcut": "BLX (Iconomi)", @@ -2948,7 +2948,7 @@ "links": { "Homepage": "https://www.binance.com" }, - "marketcap_usd": 705290129, + "marketcap_usd": 650972692, "name": "Binance Coin", "network": "eth", "shortcut": "BNB", @@ -2976,7 +2976,7 @@ "Github": "https://github.com/bancorprotocol", "Homepage": "https://www.bancor.network/discover" }, - "marketcap_usd": 41216803, + "marketcap_usd": 38480775, "name": "Bancor", "network": "eth", "shortcut": "BNT", @@ -3057,7 +3057,7 @@ "links": { "Homepage": "https://bonpay.com" }, - "marketcap_usd": 361351, + "marketcap_usd": 340063, "name": "Bonpay", "network": "eth", "shortcut": "BON", @@ -3193,7 +3193,7 @@ "links": { "Homepage": "http://bro-consortium.io" }, - "marketcap_usd": 20568, + "marketcap_usd": 20632, "name": "BRAT", "network": "eth", "shortcut": "BRAT", @@ -3221,7 +3221,7 @@ "Github": "https://github.com/breadwallet", "Homepage": "https://token.breadapp.com/en" }, - "marketcap_usd": 21924610, + "marketcap_usd": 19531130, "name": "Bread", "network": "eth", "shortcut": "BRD", @@ -3440,7 +3440,7 @@ "Github": "https://github.com/bethereumproject", "Homepage": "https://www.bethereum.com/" }, - "marketcap_usd": 777685, + "marketcap_usd": 765695, "name": "Bethereum", "network": "eth", "shortcut": "BTHR", @@ -3468,7 +3468,7 @@ "Github": "https://github.com/bitcoin-token", "Homepage": "https://btk.community" }, - "marketcap_usd": 260087, + "marketcap_usd": 247200, "name": "Bitcoin Token", "network": "eth", "shortcut": "BTK", @@ -3496,7 +3496,7 @@ "Github": "https://github.com/bytom", "Homepage": "https://bytom.io" }, - "marketcap_usd": 102941655, + "marketcap_usd": 96904124, "name": "Bytom", "network": "eth", "shortcut": "BTM", @@ -3551,7 +3551,7 @@ "Github": "https://github.com/Andyss4545/BitEther", "Homepage": "https://bytom.io" }, - "marketcap_usd": 35364, + "marketcap_usd": 34392, "name": "Bitether", "network": "eth", "shortcut": "BTT", @@ -3661,7 +3661,7 @@ "Github": "https://github.com/cryptotwenty", "Homepage": "https://crypto20.com" }, - "marketcap_usd": 16477276, + "marketcap_usd": 15059951, "name": "Crypto20's Token", "network": "eth", "shortcut": "C20", @@ -3823,7 +3823,7 @@ "links": { "Homepage": "https://cashaa.com" }, - "marketcap_usd": 9550606, + "marketcap_usd": 8575133, "name": "Cashaa", "network": "eth", "shortcut": "CAS", @@ -4562,7 +4562,7 @@ "links": { "Homepage": "https://cindicator.com" }, - "marketcap_usd": 19365564, + "marketcap_usd": 16952590, "name": "Cindicator", "network": "eth", "shortcut": "CND", @@ -4755,7 +4755,7 @@ "links": { "Homepage": "https://covesting.io/" }, - "marketcap_usd": 7559000, + "marketcap_usd": 7007119, "name": "Covesting", "network": "eth", "shortcut": "COV", @@ -4811,7 +4811,7 @@ "Github": "https://github.com/Cpollo", "Homepage": "https://cpollo.info/" }, - "marketcap_usd": 868675, + "marketcap_usd": 804070, "name": "CPOLLO", "network": "eth", "shortcut": "CPLO", @@ -4839,7 +4839,7 @@ "Github": "https://github.com/aditus", "Homepage": "https://copytrack.io" }, - "marketcap_usd": 1355240, + "marketcap_usd": 1201355, "name": "COPYTRACK", "network": "eth", "shortcut": "CPY", @@ -4949,7 +4949,7 @@ "links": { "Homepage": "https://bitbounce.io" }, - "marketcap_usd": 16107236, + "marketcap_usd": 17618626, "name": "Credo / Bitbounce", "network": "eth", "shortcut": "CREDO", @@ -5279,7 +5279,7 @@ "Github": "https://github.com/cargoxio", "Homepage": "https://cargox.io" }, - "marketcap_usd": 2417909, + "marketcap_usd": 2227380, "name": "CargoX", "network": "eth", "shortcut": "CXO", @@ -5306,7 +5306,7 @@ "links": { "Homepage": "https://cyberfmradio.com" }, - "marketcap_usd": 278520, + "marketcap_usd": 278261, "name": "CyberFM", "network": "eth", "shortcut": "CYFM", @@ -5333,7 +5333,7 @@ "links": { "Homepage": "https://ccrb.io" }, - "marketcap_usd": 495282, + "marketcap_usd": 447123, "name": "CryptoCarbon", "network": "eth", "shortcut": "CryptoCarbon", @@ -5387,7 +5387,7 @@ "links": { "Homepage": "https://dadi.cloud" }, - "marketcap_usd": 3499383, + "marketcap_usd": 3187944, "name": "DADI", "network": "eth", "shortcut": "DADI", @@ -5415,7 +5415,7 @@ "Github": "https://github.com/makerdao", "Homepage": "https://makerdao.com" }, - "marketcap_usd": 60934273, + "marketcap_usd": 61431650, "name": "Dai Stablecoin v1.0", "network": "eth", "shortcut": "DAI", @@ -5442,7 +5442,7 @@ "links": { "Homepage": "http://www.dalecoin.org" }, - "marketcap_usd": 10905, + "marketcap_usd": 8949, "name": "DaleCoin", "network": "eth", "shortcut": "DALC", @@ -5580,7 +5580,7 @@ "Github": "https://github.com/streamr-dev", "Homepage": "https://www.streamr.com" }, - "marketcap_usd": 30813, + "marketcap_usd": 28413, "name": "DATACoin", "network": "eth", "shortcut": "DATACoin", @@ -5719,7 +5719,7 @@ "Github": "https://github.com/DistributedBanking/DCC", "Homepage": "http://dcc.finance" }, - "marketcap_usd": 3067297, + "marketcap_usd": 2760283, "name": "Distributed Credit Chain", "network": "eth", "shortcut": "DCC", @@ -5774,7 +5774,7 @@ "Github": "https://github.com/Dentacoin", "Homepage": "https://dentacoin.com" }, - "marketcap_usd": 32827229, + "marketcap_usd": 32276452, "name": "Dentacoin", "network": "eth", "shortcut": "DCN", @@ -5884,7 +5884,7 @@ "links": { "Homepage": "https://www.dentwireless.com" }, - "marketcap_usd": 20561850, + "marketcap_usd": 18343049, "name": "DENT", "network": "eth", "shortcut": "DENT", @@ -5994,7 +5994,7 @@ "Github": "https://github.com/dragonglasscom", "Homepage": "https://dragonglass.com/" }, - "marketcap_usd": 69108, + "marketcap_usd": 53795, "name": "Dragonglass", "network": "eth", "shortcut": "DGS", @@ -6050,7 +6050,7 @@ "Github": "https://github.com/DigixGlobal", "Homepage": "https://digix.global" }, - "marketcap_usd": 3350392, + "marketcap_usd": 3039836, "name": "Digix Gold Token", "network": "eth", "shortcut": "DGX", @@ -6105,7 +6105,7 @@ "links": { "Homepage": "https://etheroll.com" }, - "marketcap_usd": 2409937, + "marketcap_usd": 2125254, "name": "Etheroll", "network": "eth", "shortcut": "DICE", @@ -6409,7 +6409,7 @@ "Github": "https://github.com/dethertech", "Homepage": "https://dether.io" }, - "marketcap_usd": 729418, + "marketcap_usd": 736550, "name": "dether", "network": "eth", "shortcut": "DTH", @@ -6627,7 +6627,7 @@ "links": { "Homepage": "https://edgeless.io" }, - "marketcap_usd": 7205071, + "marketcap_usd": 6654581, "name": "Edgeless", "network": "eth", "shortcut": "EDG", @@ -6654,7 +6654,7 @@ "links": { "Homepage": "https://eidoo.io" }, - "marketcap_usd": 23924213, + "marketcap_usd": 22461378, "name": "Eidoo", "network": "eth", "shortcut": "EDO", @@ -6793,7 +6793,7 @@ "Github": "https://github.com/eltcoin", "Homepage": "http://www.eltcoin.tech/" }, - "marketcap_usd": 95887, + "marketcap_usd": 78206, "name": "ELTCOIN", "network": "eth", "shortcut": "ELTCOIN", @@ -6987,7 +6987,7 @@ "Github": "https://github.com/enigmampc", "Homepage": "https://enigma.co/" }, - "marketcap_usd": 25758964, + "marketcap_usd": 22823971, "name": "Enigma", "network": "eth", "shortcut": "ENG", @@ -7099,7 +7099,7 @@ "Github": "https://github.com/Krishtopa/ContractEristica", "Homepage": "https://eristica.com/" }, - "marketcap_usd": 696628, + "marketcap_usd": 634270, "name": "Eristica", "network": "eth", "shortcut": "ERT", @@ -7154,7 +7154,7 @@ "links": { "Homepage": "https://www.ethbits.com" }, - "marketcap_usd": 891114, + "marketcap_usd": 847068, "name": "Ethbits", "network": "eth", "shortcut": "ETBS", @@ -7374,7 +7374,7 @@ "Github": "https://github.com/eXMRcoin/", "Homepage": "https://exmr.io/" }, - "marketcap_usd": 312859, + "marketcap_usd": 234228, "name": "eXMRcoin", "network": "eth", "shortcut": "EXMR", @@ -7540,7 +7540,7 @@ "Github": "https://github.com/FortKnoxster", "Homepage": "https://fortknoxster.com" }, - "marketcap_usd": 230209, + "marketcap_usd": 219173, "name": "Knoxstertoken", "network": "eth", "shortcut": "FKX", @@ -7704,7 +7704,7 @@ "Github": "https://github.com/FundRequest", "Homepage": "https://fundrequest.io" }, - "marketcap_usd": 216401, + "marketcap_usd": 209645, "name": "FundRequest", "network": "eth", "shortcut": "FND", @@ -7814,7 +7814,7 @@ "Github": "https://github.com/futuraxproject", "Homepage": "https://futurax.global" }, - "marketcap_usd": 440081, + "marketcap_usd": 388107, "name": "FUTURAX", "network": "eth", "shortcut": "FTXT", @@ -7869,7 +7869,7 @@ "links": { "Homepage": "https://funfair.io" }, - "marketcap_usd": 31031470, + "marketcap_usd": 26289828, "name": "Funfair", "network": "eth", "shortcut": "FUN", @@ -7897,7 +7897,7 @@ "Github": "https://github.com/futuraxproject", "Homepage": "https://futurax.global" }, - "marketcap_usd": 440081, + "marketcap_usd": 388107, "name": "FUTURAX", "network": "eth", "shortcut": "FXC", @@ -7980,7 +7980,7 @@ "Github": "https://github.com/BlockchainLabsNZ/gambit", "Homepage": "http://gambitcrypto.com" }, - "marketcap_usd": 1642669, + "marketcap_usd": 1506883, "name": "Gambit", "network": "eth", "shortcut": "GAM", @@ -8173,7 +8173,7 @@ "Github": "https://github.com/daostack", "Homepage": "https://daostack.io" }, - "marketcap_usd": 1352714, + "marketcap_usd": 1329005, "name": "DAOstack", "network": "eth", "shortcut": "GEN", @@ -8338,7 +8338,7 @@ "links": { "Homepage": "https://golem.network" }, - "marketcap_usd": 87438211, + "marketcap_usd": 79829626, "name": "Golem", "network": "eth", "shortcut": "GNT", @@ -8588,7 +8588,7 @@ "Github": "https://github.com/GIFTO-io", "Homepage": "https://gifto.io/" }, - "marketcap_usd": 17446607, + "marketcap_usd": 15450476, "name": "Gifto", "network": "eth", "shortcut": "GTO", @@ -8644,7 +8644,7 @@ "Github": "https://github.com/GenesisVision", "Homepage": "https://genesis.vision" }, - "marketcap_usd": 22682241, + "marketcap_usd": 19597404, "name": "Genesis Vision", "network": "eth", "shortcut": "GVT", @@ -8836,7 +8836,7 @@ "Github": "https://github.com/havven/havven", "Homepage": "https://havven.io" }, - "marketcap_usd": 4205742, + "marketcap_usd": 4047901, "name": "Havven", "network": "eth", "shortcut": "HAV", @@ -9082,7 +9082,7 @@ "links": { "Homepage": "https://github.com/arachnid/hodlcoin" }, - "marketcap_usd": 99639, + "marketcap_usd": 91848, "name": "HODLCoin", "network": "eth", "shortcut": "HODL", @@ -9329,7 +9329,7 @@ "links": { "Homepage": "https://www.icon.foundation" }, - "marketcap_usd": 137620327, + "marketcap_usd": 116982279, "name": "ICON", "network": "eth", "shortcut": "ICX", @@ -9383,7 +9383,7 @@ "links": { "Homepage": "https://investfeed.com" }, - "marketcap_usd": 698408, + "marketcap_usd": 529176, "name": "InvestFeed", "network": "eth", "shortcut": "IFT", @@ -9546,7 +9546,7 @@ "links": { "Homepage": "https://insights.network" }, - "marketcap_usd": 976302, + "marketcap_usd": 975410, "name": "Insights Network", "network": "eth", "shortcut": "INSTAR", @@ -9574,7 +9574,7 @@ "Github": "https://github.com/Internxt/", "Homepage": "https://internxt.com/" }, - "marketcap_usd": 980538, + "marketcap_usd": 972668, "name": "Internxt", "network": "eth", "shortcut": "INXT", @@ -9601,7 +9601,7 @@ "links": { "Homepage": "https://iost.io/" }, - "marketcap_usd": 63735840, + "marketcap_usd": 55388787, "name": "IOSToken", "network": "eth", "shortcut": "IOST", @@ -9712,7 +9712,7 @@ "Github": "https://github.com/iqeon", "Homepage": "https://iqeon.io/" }, - "marketcap_usd": 368536, + "marketcap_usd": 366659, "name": "IQeon", "network": "eth", "shortcut": "IQN", @@ -9768,7 +9768,7 @@ "Github": "https://github.com/IoTChainCode", "Homepage": "https://iotchain.io/" }, - "marketcap_usd": 7727355, + "marketcap_usd": 7112043, "name": "IoT Chain", "network": "eth", "shortcut": "ITC", @@ -10043,7 +10043,7 @@ "Github": "https://github.com/kikinteractive/kin-token", "Homepage": "https://kin.kik.com" }, - "marketcap_usd": 23176450, + "marketcap_usd": 21896247, "name": "Kin Foundation", "network": "eth", "shortcut": "KIN", @@ -10071,7 +10071,7 @@ "Github": "https://github.com/KyberNetwork", "Homepage": "https://kyber.network" }, - "marketcap_usd": 26548907, + "marketcap_usd": 22784755, "name": "Kyber Network", "network": "eth", "shortcut": "KNC", @@ -10127,7 +10127,7 @@ "Github": "https://github.com/Cryptense/", "Homepage": "https://kryll.io/" }, - "marketcap_usd": 422310, + "marketcap_usd": 407478, "name": "Kryll", "network": "eth", "shortcut": "KRL", @@ -10209,7 +10209,7 @@ "Github": "https://github.com/latoken", "Homepage": "https://latoken.com/" }, - "marketcap_usd": 4627280, + "marketcap_usd": 4116385, "name": "LATOKEN", "network": "eth", "shortcut": "LA", @@ -10263,7 +10263,7 @@ "links": { "Homepage": "https://www.leadcoin.network/" }, - "marketcap_usd": 280373, + "marketcap_usd": 270388, "name": "LEADCOIN", "network": "eth", "shortcut": "LDC", @@ -10481,7 +10481,7 @@ "links": { "Homepage": "http://www.lifelabs.io" }, - "marketcap_usd": 1005222, + "marketcap_usd": 1078911, "name": "LIFE", "network": "eth", "shortcut": "LIFE", @@ -10508,7 +10508,7 @@ "links": { "Homepage": "https://link.smartcontract.com" }, - "marketcap_usd": 124068565, + "marketcap_usd": 112503541, "name": "Chainlink", "network": "eth", "shortcut": "LINK (Chainlink)", @@ -10591,7 +10591,7 @@ "Github": "https://github.com/lendingblock", "Homepage": "https://lendingblock.com" }, - "marketcap_usd": 2204205, + "marketcap_usd": 2727966, "name": "Lendingblock", "network": "eth", "shortcut": "LND", @@ -10618,7 +10618,7 @@ "links": { "Homepage": "https://LockChain.co" }, - "marketcap_usd": 8689647, + "marketcap_usd": 7855180, "name": "LockChain", "network": "eth", "shortcut": "LOC", @@ -10646,7 +10646,7 @@ "Github": "http://github.com/locipro/loci-coin-sale", "Homepage": "https://locipro.com" }, - "marketcap_usd": 573549, + "marketcap_usd": 531508, "name": "LOCIcoin", "network": "eth", "shortcut": "LOCI", @@ -11113,7 +11113,7 @@ "Github": "https://github.com/theembermine", "Homepage": "https://embermine.com/" }, - "marketcap_usd": 42851, + "marketcap_usd": 35550, "name": "Embers", "network": "eth", "shortcut": "MBRS", @@ -11306,7 +11306,7 @@ "links": { "Homepage": "https://mftu.net" }, - "marketcap_usd": 17958, + "marketcap_usd": 17996, "name": "Mainstream For The Underground", "network": "eth", "shortcut": "MFTU", @@ -11362,7 +11362,7 @@ "Github": "https://github.com/makerdao", "Homepage": "https://makerdao.com" }, - "marketcap_usd": 274592620, + "marketcap_usd": 263365798, "name": "MakerDAO", "network": "eth", "shortcut": "MKR", @@ -11528,7 +11528,7 @@ "Github": "https://github.com/modum-io", "Homepage": "https://modum.io" }, - "marketcap_usd": 9743250, + "marketcap_usd": 7652248, "name": "Modum", "network": "eth", "shortcut": "MOD", @@ -11637,7 +11637,7 @@ "links": { "Homepage": "https://mothership.cx" }, - "marketcap_usd": 6115175, + "marketcap_usd": 5695983, "name": "Mothership", "network": "eth", "shortcut": "MSP", @@ -11664,7 +11664,7 @@ "links": { "Homepage": "http://www.monetha.io" }, - "marketcap_usd": 5556456, + "marketcap_usd": 4524117, "name": "Monetha", "network": "eth", "shortcut": "MTH", @@ -11854,7 +11854,7 @@ "Github": "https://github.com/Merculet", "Homepage": "https://www.merculet.io" }, - "marketcap_usd": 1186106, + "marketcap_usd": 1087557, "name": "Merculet", "network": "eth", "shortcut": "MVP", @@ -11908,7 +11908,7 @@ "links": { "Homepage": "https://mysterium.network" }, - "marketcap_usd": 1785901, + "marketcap_usd": 1435800, "name": "Mysterium", "network": "eth", "shortcut": "MYST", @@ -11963,7 +11963,7 @@ "Github": "https://github.com/NANJ-COIN", "Homepage": "https://nanjcoin.com/" }, - "marketcap_usd": 4143350, + "marketcap_usd": 3833578, "name": "NANJCOIN", "network": "eth", "shortcut": "NANJ", @@ -12047,7 +12047,7 @@ "Github": "https://github.com/polyswarm", "Homepage": "https://polyswarm.io" }, - "marketcap_usd": 25284155, + "marketcap_usd": 22597175, "name": "Nectar", "network": "eth", "shortcut": "NCT", @@ -12074,7 +12074,7 @@ "links": { "Homepage": "https://neverdie.com" }, - "marketcap_usd": 150427, + "marketcap_usd": 193609, "name": "Neverdie", "network": "eth", "shortcut": "NDC", @@ -12156,7 +12156,7 @@ "links": { "Homepage": "https://nimiq.com" }, - "marketcap_usd": 2549306, + "marketcap_usd": 2294723, "name": "NIMIQ", "network": "eth", "shortcut": "NET", @@ -12323,7 +12323,7 @@ "Github": "https://github.com/NperProject", "Homepage": "https://nper.io" }, - "marketcap_usd": 805691, + "marketcap_usd": 856284, "name": "NPER", "network": "eth", "shortcut": "NPER", @@ -12352,7 +12352,7 @@ "Github": "https://github.com/pundix", "Homepage": "https://pundix.com" }, - "marketcap_usd": 103771125, + "marketcap_usd": 94277654, "name": "Pundi X Token", "network": "eth", "shortcut": "NPXS", @@ -12406,7 +12406,7 @@ "links": { "Homepage": "https://nuls.io" }, - "marketcap_usd": 21546315, + "marketcap_usd": 19653509, "name": "NULS", "network": "eth", "shortcut": "NULS", @@ -12460,7 +12460,7 @@ "links": { "Homepage": "https://beyond-the-void.net" }, - "marketcap_usd": 484504, + "marketcap_usd": 443975, "name": "Nexium", "network": "eth", "shortcut": "NxC", @@ -12514,7 +12514,7 @@ "links": { "Homepage": "https://www.openanx.org/en" }, - "marketcap_usd": 3085690, + "marketcap_usd": 2544597, "name": "OAX", "network": "eth", "shortcut": "OAX", @@ -12682,7 +12682,7 @@ "Github": "https://github.com/omisego", "Homepage": "https://omisego.network" }, - "marketcap_usd": 231350462, + "marketcap_usd": 203065295, "name": "OmiseGO", "network": "eth", "shortcut": "OMG", @@ -12847,7 +12847,7 @@ "links": { "Homepage": "https://ormeuscoin.com" }, - "marketcap_usd": 1467748, + "marketcap_usd": 1420758, "name": "Ormeus Coin", "network": "eth", "shortcut": "ORME", @@ -12875,7 +12875,7 @@ "Github": "https://github.com/OpenSTFoundation", "Homepage": "https://simpletoken.org" }, - "marketcap_usd": 12630168, + "marketcap_usd": 10576286, "name": "Simple Token 'OST'", "network": "eth", "shortcut": "OST", @@ -12903,7 +12903,7 @@ "Github": "https://github.com/owndata", "Homepage": "https://owndata.network" }, - "marketcap_usd": 2451823, + "marketcap_usd": 2111806, "name": "OWNDATA", "network": "eth", "shortcut": "OWN", @@ -13098,7 +13098,7 @@ "Github": "https://github.com/paxosglobal", "Homepage": "https://www.paxos.com/standard" }, - "marketcap_usd": 139242343, + "marketcap_usd": 155475021, "name": "Paxos Standard (PAX)", "network": "eth", "shortcut": "PAX", @@ -13125,7 +13125,7 @@ "links": { "Homepage": "http://www.tenx.tech" }, - "marketcap_usd": 32642316, + "marketcap_usd": 31081129, "name": "TenX", "network": "eth", "shortcut": "PAY", @@ -13207,7 +13207,7 @@ "Github": "https://github.com/PeculiumPCL/Peculium", "Homepage": "https://peculium.io" }, - "marketcap_usd": 2940438, + "marketcap_usd": 2696684, "name": "Peculium", "network": "eth", "shortcut": "PCL", @@ -13426,7 +13426,7 @@ "links": { "Homepage": "https://polybius.io" }, - "marketcap_usd": 4946618, + "marketcap_usd": 4711450, "name": "Polybius", "network": "eth", "shortcut": "PLBT", @@ -13618,7 +13618,7 @@ "links": { "Homepage": "https://polymath.network" }, - "marketcap_usd": 42950407, + "marketcap_usd": 37816838, "name": "Polymath Network", "network": "eth", "shortcut": "POLY", @@ -13727,7 +13727,7 @@ "links": { "Homepage": "https://www.paypie.com" }, - "marketcap_usd": 6175935, + "marketcap_usd": 5569509, "name": "PayPie", "network": "eth", "shortcut": "PPP", @@ -13754,7 +13754,7 @@ "links": { "Homepage": "https://populous.co" }, - "marketcap_usd": 98718006, + "marketcap_usd": 86562805, "name": "Populous", "network": "eth", "shortcut": "PPT", @@ -13781,7 +13781,7 @@ "links": { "Homepage": "https://presearch.io" }, - "marketcap_usd": 5317194, + "marketcap_usd": 4769208, "name": "Presearch", "network": "eth", "shortcut": "PRE", @@ -14112,7 +14112,7 @@ "links": { "Homepage": "https://liquid.plus" }, - "marketcap_usd": 73992998, + "marketcap_usd": 74485589, "name": "QASH", "network": "eth", "shortcut": "QASH", @@ -14195,7 +14195,7 @@ "Github": "https://github.com/quantnetwork", "Homepage": "https://www.quant.network/" }, - "marketcap_usd": 11752310, + "marketcap_usd": 11272098, "name": "Quant", "network": "eth", "shortcut": "QNT", @@ -14334,7 +14334,7 @@ "Github": "https://github.com/qtumproject", "Homepage": "https://qtum.org/" }, - "marketcap_usd": 191948643, + "marketcap_usd": 175262968, "name": "Qtum", "network": "eth", "shortcut": "QTUM", @@ -14390,7 +14390,7 @@ "Github": "https://github.com/rublixdev", "Homepage": "https://rublix.io/" }, - "marketcap_usd": 4632615, + "marketcap_usd": 4281996, "name": "Rublix", "network": "eth", "shortcut": "RBLX", @@ -14418,7 +14418,7 @@ "Github": "https://github.com/ripio/rcn-token", "Homepage": "https://ripiocredit.network" }, - "marketcap_usd": 8612903, + "marketcap_usd": 7372670, "name": "Ripio Credit Network", "network": "eth", "shortcut": "RCN", @@ -14500,7 +14500,7 @@ "links": { "Homepage": "https://www.rebellious.io" }, - "marketcap_usd": 965125, + "marketcap_usd": 881046, "name": "Rebellious", "network": "eth", "shortcut": "REBL", @@ -14528,7 +14528,7 @@ "Github": "https://github.com/red", "Homepage": "https://ico.red-lang.org" }, - "marketcap_usd": 1210773, + "marketcap_usd": 1161701, "name": "Red Community Token", "network": "eth", "shortcut": "RED", @@ -14611,7 +14611,7 @@ "links": { "Homepage": "https://augur.net" }, - "marketcap_usd": 95174621, + "marketcap_usd": 89312303, "name": "Augur", "network": "eth", "shortcut": "REP", @@ -14638,7 +14638,7 @@ "links": { "Homepage": "https://request.network" }, - "marketcap_usd": 19481307, + "marketcap_usd": 16481913, "name": "Request Network", "network": "eth", "shortcut": "REQ", @@ -14693,7 +14693,7 @@ "links": { "Homepage": "https://refereum.com" }, - "marketcap_usd": 7920012, + "marketcap_usd": 6275652, "name": "Refereum", "network": "eth", "shortcut": "RFR", @@ -14748,7 +14748,7 @@ "links": { "Homepage": "http://crowdsale.iex.ec" }, - "marketcap_usd": 20520227, + "marketcap_usd": 17460166, "name": "IEx.ec", "network": "eth", "shortcut": "RLC", @@ -14830,7 +14830,7 @@ "links": { "Homepage": "http://www.relex.io" }, - "marketcap_usd": 1590102, + "marketcap_usd": 829352, "name": "Relex", "network": "eth", "shortcut": "RLX", @@ -14913,7 +14913,7 @@ "Github": "https://github.com/rocketico", "Homepage": "https://rocketico.io" }, - "marketcap_usd": 11563705, + "marketcap_usd": 12006338, "name": "Rocket Token", "network": "eth", "shortcut": "ROCK", @@ -14940,7 +14940,7 @@ "links": { "Homepage": "https://icerockmining.io" }, - "marketcap_usd": 3699316, + "marketcap_usd": 3659682, "name": "ICE ROCK MINING", "network": "eth", "shortcut": "ROCK2", @@ -14967,7 +14967,7 @@ "links": { "Homepage": "https://icerockmining.io" }, - "marketcap_usd": 3699316, + "marketcap_usd": 3659682, "name": "ICE ROCK MINING", "network": "eth", "shortcut": "ROCK2PAY", @@ -15131,7 +15131,7 @@ "links": { "Homepage": "https://rivetzintl.com" }, - "marketcap_usd": 1463501, + "marketcap_usd": 1347673, "name": "Rivetz", "network": "eth", "shortcut": "RVT", @@ -15212,7 +15212,7 @@ "links": { "Homepage": "https://saltlending.com" }, - "marketcap_usd": 21583879, + "marketcap_usd": 18322762, "name": "Salt Lending Token", "network": "eth", "shortcut": "SALT", @@ -15239,7 +15239,7 @@ "links": { "Homepage": "https://santiment.net" }, - "marketcap_usd": 17358047, + "marketcap_usd": 15574893, "name": "Santiment", "network": "eth", "shortcut": "SAN", @@ -15320,7 +15320,7 @@ "links": { "Homepage": "https://sensay.it" }, - "marketcap_usd": 809438, + "marketcap_usd": 772240, "name": "Sensay", "network": "eth", "shortcut": "SENSE", @@ -15593,7 +15593,7 @@ "links": { "Homepage": "http://smartlands.io" }, - "marketcap_usd": 32496326, + "marketcap_usd": 31072171, "name": "Smartlands", "network": "eth", "shortcut": "SLT", @@ -15730,7 +15730,7 @@ "links": { "Homepage": "https://singulardtv.com" }, - "marketcap_usd": 8539463, + "marketcap_usd": 7235938, "name": "SingularDTV", "network": "eth", "shortcut": "SNGLS", @@ -15866,7 +15866,7 @@ "links": { "Homepage": "https://sola.foundation" }, - "marketcap_usd": 99804, + "marketcap_usd": 91840, "name": "Sola Token", "network": "eth", "shortcut": "SOL", @@ -15893,7 +15893,7 @@ "links": { "Homepage": "https://spankchain.com" }, - "marketcap_usd": 6089602, + "marketcap_usd": 5437817, "name": "SpankChain", "network": "eth", "shortcut": "SPANK", @@ -16001,7 +16001,7 @@ "links": { "Homepage": "https://www.sapien.network/" }, - "marketcap_usd": 438526, + "marketcap_usd": 407763, "name": "Sapien", "network": "eth", "shortcut": "SPN", @@ -16220,7 +16220,7 @@ "links": { "Homepage": "https://stktoken.com" }, - "marketcap_usd": 2019715, + "marketcap_usd": 1895449, "name": "STK Token", "network": "eth", "shortcut": "STK", @@ -16275,7 +16275,7 @@ "Github": "https://github.com/Storj", "Homepage": "https://storj.io" }, - "marketcap_usd": 23059543, + "marketcap_usd": 22888802, "name": "STORJ", "network": "eth", "shortcut": "STORJ", @@ -16302,7 +16302,7 @@ "links": { "Homepage": "https://www.stormtoken.com" }, - "marketcap_usd": 20272737, + "marketcap_usd": 17008098, "name": "Storm Token", "network": "eth", "shortcut": "STORM", @@ -16358,7 +16358,7 @@ "Github": "https://github.com/Storiqa/", "Homepage": "https://storiqa.com" }, - "marketcap_usd": 8712365, + "marketcap_usd": 8365051, "name": "Storiqa", "network": "eth", "shortcut": "STQ", @@ -16441,7 +16441,7 @@ "links": { "Homepage": "https://substratum.net" }, - "marketcap_usd": 20143228, + "marketcap_usd": 17338166, "name": "Substratum", "network": "eth", "shortcut": "SUB", @@ -16771,7 +16771,7 @@ "Github": "https://github.com/TrueFlip", "Homepage": "https://trueflip.io" }, - "marketcap_usd": 1640219, + "marketcap_usd": 1467298, "name": "TrueFlip", "network": "eth", "shortcut": "TFL", @@ -16798,7 +16798,7 @@ "links": { "Homepage": "https://www.thetatoken.org/" }, - "marketcap_usd": 37474827, + "marketcap_usd": 60344803, "name": "Theta Token", "network": "eth", "shortcut": "THETA", @@ -16853,7 +16853,7 @@ "links": { "Homepage": "https://chronobank.io" }, - "marketcap_usd": 1509211, + "marketcap_usd": 1374282, "name": "Chronobank", "network": "eth", "shortcut": "TIME", @@ -16907,7 +16907,7 @@ "links": { "Homepage": "https://www.blocktix.io" }, - "marketcap_usd": 5893566, + "marketcap_usd": 6133162, "name": "Blocktix", "network": "eth", "shortcut": "TIX", @@ -16934,7 +16934,7 @@ "links": { "Homepage": "https://etherscan.io/token/TokenCard" }, - "marketcap_usd": 8284284, + "marketcap_usd": 9110851, "name": "TokenCard", "network": "eth", "shortcut": "TKN", @@ -17208,7 +17208,7 @@ "links": { "Homepage": "https://taas.fund" }, - "marketcap_usd": 2570370, + "marketcap_usd": 2218809, "name": "Token-as-a-Service", "network": "eth", "shortcut": "TaaS", @@ -17263,7 +17263,7 @@ "links": { "Homepage": "https://uquidcoin.com" }, - "marketcap_usd": 1018713, + "marketcap_usd": 943941, "name": "Uquid Coin", "network": "eth", "shortcut": "UQC", @@ -17320,7 +17320,7 @@ "Github": "https://github.com/centrehq/centre-tokens", "Homepage": "https://www.centre.io" }, - "marketcap_usd": 178124143, + "marketcap_usd": 179198775, "name": "USD//Coin", "network": "eth", "shortcut": "USDC", @@ -17402,7 +17402,7 @@ "Github": "https://github.com/UniversaBlockchain/universa", "Homepage": "https://www.universa.io/" }, - "marketcap_usd": 5887761, + "marketcap_usd": 5785653, "name": "Universa", "network": "eth", "shortcut": "UTN-P", @@ -17513,7 +17513,7 @@ "Github": "https://github.com/blockv", "Homepage": "https://blockv.io" }, - "marketcap_usd": 9290705, + "marketcap_usd": 8226007, "name": "BLOCKv", "network": "eth", "shortcut": "VEE", @@ -17541,7 +17541,7 @@ "Github": "https://github.com/vechain", "Homepage": "https://www.vechain.com" }, - "marketcap_usd": 301216086, + "marketcap_usd": 253356272, "name": "VeChain", "network": "eth", "shortcut": "VEN", @@ -17678,7 +17678,7 @@ "Github": "https://github.com/ViceIndustryToken", "Homepage": "https://vicetoken.com/" }, - "marketcap_usd": 970953, + "marketcap_usd": 978033, "name": "Vice Industry Token", "network": "eth", "shortcut": "VIT", @@ -17734,7 +17734,7 @@ "Github": "https://github.com/vetri-global/", "Homepage": "https://vetri.global/" }, - "marketcap_usd": 3105655, + "marketcap_usd": 3082939, "name": "VETRI", "network": "eth", "shortcut": "VLD", @@ -17900,7 +17900,7 @@ "Github": "https://github.com/waxio", "Homepage": "https://wax.io" }, - "marketcap_usd": 66499364, + "marketcap_usd": 58804330, "name": "WAX", "network": "eth", "shortcut": "WAX", @@ -17982,7 +17982,7 @@ "links": { "Homepage": "https://wepower.network" }, - "marketcap_usd": 8461743, + "marketcap_usd": 7896045, "name": "WePower", "network": "eth", "shortcut": "WCT", @@ -18092,7 +18092,7 @@ "links": { "Homepage": "https://wings.ai" }, - "marketcap_usd": 8550678, + "marketcap_usd": 8076846, "name": "WINGS", "network": "eth", "shortcut": "WINGS", @@ -18285,7 +18285,7 @@ "links": { "Homepage": "https://www.wacoin.io" }, - "marketcap_usd": 8910764, + "marketcap_usd": 7783069, "name": "WaBi", "network": "eth", "shortcut": "WaBi", @@ -18339,7 +18339,7 @@ "links": { "Homepage": "http://www.xaurum.org" }, - "marketcap_usd": 3984649, + "marketcap_usd": 3586961, "name": "Xaurum", "network": "eth", "shortcut": "XAUR", @@ -18367,7 +18367,7 @@ "Github": "https://github.com/blitzpredict", "Homepage": "https://www.blitzpredict.io" }, - "marketcap_usd": 250572, + "marketcap_usd": 231897, "name": "BlitzPredict", "network": "eth", "shortcut": "XBP", @@ -18560,7 +18560,7 @@ "Github": "https://github.com/InkProtocol/", "Homepage": "https://paywithink.com" }, - "marketcap_usd": 1788247, + "marketcap_usd": 1774721, "name": "Ink Protocol", "network": "eth", "shortcut": "XNK", @@ -18587,7 +18587,7 @@ "links": { "Homepage": "https://xenon.network" }, - "marketcap_usd": 697659, + "marketcap_usd": 691696, "name": "XENON", "network": "eth", "shortcut": "XNN", @@ -18724,7 +18724,7 @@ "Github": "https://github.com/zapproject", "Homepage": "https://zap.store" }, - "marketcap_usd": 1130077, + "marketcap_usd": 1036629, "name": "ZAP", "network": "eth", "shortcut": "ZAP", @@ -18751,7 +18751,7 @@ "links": { "Homepage": "https://zsc.io/" }, - "marketcap_usd": 1837864, + "marketcap_usd": 1722275, "name": "Zeusshield", "network": "eth", "shortcut": "ZCS", @@ -18779,7 +18779,7 @@ "Github": "https://github.com/zilliqa", "Homepage": "https://www.zilliqa.com/" }, - "marketcap_usd": 156139524, + "marketcap_usd": 131035965, "name": "Zilliqa", "network": "eth", "shortcut": "ZIL", @@ -18806,7 +18806,7 @@ "links": { "Homepage": "https://www.zmine.com" }, - "marketcap_usd": 2060560, + "marketcap_usd": 1839888, "name": "ZMINE", "network": "eth", "shortcut": "ZMN", @@ -18835,7 +18835,7 @@ "Github": "https://github.com/0xProject", "Homepage": "https://0xproject.com" }, - "marketcap_usd": 243505300, + "marketcap_usd": 213075265, "name": "0x Project", "network": "eth", "shortcut": "ZRX", @@ -18890,7 +18890,7 @@ "Github": "https://github.com/carVertical", "Homepage": "https://www.carvertical.com" }, - "marketcap_usd": 2413576, + "marketcap_usd": 2497276, "name": "carVertical", "network": "eth", "shortcut": "cV", @@ -19028,7 +19028,7 @@ "Github": "https://github.com/eosdac", "Homepage": "https://eosdac.io/" }, - "marketcap_usd": 5941740, + "marketcap_usd": 5311368, "name": "eosDAC", "network": "eth", "shortcut": "eosDAC", @@ -19056,7 +19056,7 @@ "Github": "https://github.com/havven/havven", "Homepage": "https://www.havven.io" }, - "marketcap_usd": 1496181, + "marketcap_usd": 1424635, "name": "Havven-Backed USD Nomins (nUSD)", "network": "eth", "shortcut": "nUSD", @@ -19134,7 +19134,7 @@ "links": { "Homepage": "https://www.qwark.io" }, - "marketcap_usd": 1336173, + "marketcap_usd": 1195067, "name": "QWARK", "network": "ubq", "shortcut": "QWARK", @@ -19179,7 +19179,7 @@ "links": { "Homepage": "https://akroma.io" }, - "marketcap_usd": 592443, + "marketcap_usd": 508970, "name": "Akroma", "shortcut": "AKA", "t1_enabled": "yes", @@ -19200,7 +19200,7 @@ "links": { "Homepage": "https://atheios.com" }, - "marketcap_usd": 63342, + "marketcap_usd": 65481, "name": "Atheios", "shortcut": "ATH", "t1_enabled": "yes", @@ -19222,7 +19222,7 @@ "links": { "Homepage": "https://callisto.network" }, - "marketcap_usd": 4408805, + "marketcap_usd": 3601861, "name": "Callisto", "shortcut": "CLO", "t1_enabled": "yes", @@ -19243,7 +19243,7 @@ "links": { "Homepage": "https://egem.io" }, - "marketcap_usd": 252376, + "marketcap_usd": 199285, "name": "EtherGem", "shortcut": "EGEM", "t1_enabled": "yes", @@ -19264,7 +19264,7 @@ "links": { "Homepage": "https://ellaism.org" }, - "marketcap_usd": 194498, + "marketcap_usd": 162360, "name": "Ellaism", "shortcut": "ELLA", "t1_enabled": "yes", @@ -19307,7 +19307,7 @@ "links": { "Homepage": "https://ethersocial.org" }, - "marketcap_usd": 1701981, + "marketcap_usd": 1443249, "name": "Ethersocial Network", "shortcut": "ESN", "t1_enabled": "yes", @@ -19328,7 +19328,7 @@ "links": { "Homepage": "https://ethereumclassic.github.io" }, - "marketcap_usd": 516891396, + "marketcap_usd": 495212295, "name": "Ethereum Classic", "shortcut": "ETC", "t1_enabled": "yes", @@ -19353,7 +19353,7 @@ "links": { "Homepage": "https://www.ethereum.org" }, - "marketcap_usd": 12248926016, + "marketcap_usd": 11637678470, "name": "Ethereum", "shortcut": "ETH", "t1_enabled": "yes", @@ -19378,7 +19378,7 @@ "links": { "Homepage": "https://ether1.org" }, - "marketcap_usd": 0, + "marketcap_usd": 249585, "name": "Ether-1", "shortcut": "ETHO", "t1_enabled": "yes", @@ -19420,7 +19420,7 @@ "links": { "Homepage": "https://expanse.tech" }, - "marketcap_usd": 1116732, + "marketcap_usd": 1041186, "name": "Expanse", "shortcut": "EXP", "t1_enabled": "yes", @@ -19441,7 +19441,7 @@ "links": { "Homepage": "https://gochain.io" }, - "marketcap_usd": 24899807, + "marketcap_usd": 22164469, "name": "GoChain", "shortcut": "GO", "t1_enabled": "yes", @@ -19483,7 +19483,7 @@ "links": { "Homepage": "https://musicoin.org" }, - "marketcap_usd": 1757307, + "marketcap_usd": 1763036, "name": "Musicoin", "shortcut": "MUSIC", "t1_enabled": "yes", @@ -19504,7 +19504,7 @@ "links": { "Homepage": "https://pirl.io" }, - "marketcap_usd": 1302145, + "marketcap_usd": 1210662, "name": "Pirl", "shortcut": "PIRL", "t1_enabled": "yes", @@ -19521,13 +19521,13 @@ } ] }, - "eth:RSK": { + "eth:RBTC": { "links": { "Homepage": "https://www.rsk.co" }, "marketcap_usd": 0, "name": "RSK", - "shortcut": "RSK", + "shortcut": "RBTC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", @@ -19546,7 +19546,7 @@ "links": { "Homepage": "https://ubiqsmart.com" }, - "marketcap_usd": 11369015, + "marketcap_usd": 11641739, "name": "Ubiq", "shortcut": "UBQ", "t1_enabled": "yes", @@ -19568,7 +19568,7 @@ "Github": "https://github.com/input-output-hk/cardano-sl", "Homepage": "https://www.cardano.org" }, - "marketcap_usd": 1090739863, + "marketcap_usd": 980604655, "name": "Cardano", "shortcut": "ADA", "t1_enabled": "no", @@ -19586,7 +19586,7 @@ "Github": "https://github.com/EOSIO/eos", "Homepage": "https://eos.io" }, - "marketcap_usd": 2729663170, + "marketcap_usd": 2559342792, "name": "EOS", "shortcut": "EOS", "t1_enabled": "no", @@ -19599,7 +19599,7 @@ "Github": "https://github.com/LiskHQ/lisk", "Homepage": "https://lisk.io/" }, - "marketcap_usd": 173272901, + "marketcap_usd": 154160385, "name": "Lisk", "shortcut": "LSK", "t1_enabled": "yes", @@ -19612,7 +19612,7 @@ "Github": "https://github.com/maidsafe", "Homepage": "https://maidsafe.net" }, - "marketcap_usd": 79747827, + "marketcap_usd": 72709296, "name": "MaidSafeCoin", "shortcut": "MAID", "t1_enabled": "soon", @@ -19625,7 +19625,7 @@ "Github": "https://github.com/OmniLayer", "Homepage": "https://www.omnilayer.org" }, - "marketcap_usd": 1573372, + "marketcap_usd": 1492406, "name": "Omni", "shortcut": "OMNI", "t1_enabled": "soon", @@ -19638,7 +19638,7 @@ "Github": "https://github.com/ontio/ontology", "Homepage": "https://ont.io" }, - "marketcap_usd": 241061167, + "marketcap_usd": 217745658, "name": "Ontology", "shortcut": "ONT", "t1_enabled": "no", @@ -19651,7 +19651,7 @@ "Github": "https://github.com/tronprotocol/java-tron", "Homepage": "https://tron.network" }, - "marketcap_usd": 1042480272, + "marketcap_usd": 903827884, "name": "Tron", "shortcut": "TRX", "t1_enabled": "no", @@ -19663,7 +19663,7 @@ "links": { "Homepage": "https://tether.to" }, - "marketcap_usd": 1853973088, + "marketcap_usd": 1848585371, "name": "Tether", "shortcut": "USDT", "t1_enabled": "soon", @@ -19676,7 +19676,7 @@ "Github": "https://github.com/wanchain/go-wanchain", "Homepage": "https://wanchain.org" }, - "marketcap_usd": 47753658, + "marketcap_usd": 40973155, "name": "Wanchain", "shortcut": "WAN", "t1_enabled": "yes", @@ -19689,7 +19689,7 @@ "Github": "https://github.com/stellar/stellar-core", "Homepage": "https://www.stellar.org" }, - "marketcap_usd": 3193455596, + "marketcap_usd": 2962223596, "name": "Stellar", "shortcut": "XLM", "t1_enabled": "yes", @@ -19707,7 +19707,7 @@ "Github": "https://github.com/monero-project/monero", "Homepage": "https://getmonero.org" }, - "marketcap_usd": 1013697821, + "marketcap_usd": 943937403, "name": "Monero", "shortcut": "XMR", "t1_enabled": "no", @@ -19720,7 +19720,7 @@ "Github": "https://github.com/ripple/rippled", "Homepage": "https://ripple.com" }, - "marketcap_usd": 15247117715, + "marketcap_usd": 14406675545, "name": "Ripple", "shortcut": "XRP", "t1_enabled": "no", @@ -19733,7 +19733,7 @@ "Github": "https://github.com/tezos/tezos", "Homepage": "https://tezos.com" }, - "marketcap_usd": 321539734, + "marketcap_usd": 293389849, "name": "Tezos", "shortcut": "XTZ", "t1_enabled": "no", @@ -19767,7 +19767,7 @@ "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 2707613, + "marketcap_usd": 2484102, "name": "DIMCOIN", "shortcut": "DIM", "t1_enabled": "yes", @@ -19785,7 +19785,7 @@ "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 2707613, + "marketcap_usd": 2484102, "name": "DIM TOKEN", "shortcut": "DIMTOK", "t1_enabled": "yes", @@ -19836,7 +19836,7 @@ "links": { "Homepage": "https://nem.io" }, - "marketcap_usd": 716801769, + "marketcap_usd": 649342137, "name": "NEM", "shortcut": "XEM", "t1_enabled": "yes", @@ -19851,12 +19851,12 @@ } }, "info": { - "marketcap_supported": "87.83 %", - "marketcap_usd": 121045589479, + "marketcap_supported": "86.53 %", + "marketcap_usd": 112289040842, "t1_coins": 687, "t2_coins": 692, - "total_marketcap_usd": 137815758137, - "updated_at": 1543505895, - "updated_at_readable": "Thu Nov 29 16:38:15 2018" + "total_marketcap_usd": 129768515783, + "updated_at": 1543581694, + "updated_at_readable": "Fri Nov 30 13:41:34 2018" } } \ No newline at end of file From 22f5ba1dfe9c40395acf5f6719f8bf1117adf0a6 Mon Sep 17 00:00:00 2001 From: mattt21 Date: Sun, 2 Dec 2018 05:43:11 -0600 Subject: [PATCH 668/767] defs: add NIX --- defs/bitcoin/nix.json | 41 +++++++++++++++++++++++++++++++++++++++++ defs/bitcoin/nix.png | Bin 0 -> 10177 bytes 2 files changed, 41 insertions(+) create mode 100644 defs/bitcoin/nix.json create mode 100644 defs/bitcoin/nix.png diff --git a/defs/bitcoin/nix.json b/defs/bitcoin/nix.json new file mode 100644 index 000000000..28c1a18fa --- /dev/null +++ b/defs/bitcoin/nix.json @@ -0,0 +1,41 @@ +{ + "coin_name": "Nix", + "coin_shortcut": "NIX", + "coin_label": "Nix", + "website": "https://nixplatform.io", + "github": "https://github.com/nixplatform/nixcore", + "maintainer": "mattt21 ", + "curve_name": "secp256k1", + "address_type": 38, + "address_type_p2sh": 53, + "maxfee_kb": 40000000, + "minfee_kb": 0, + "signed_message_header": "NIX Signed Message:\n", + "hash_genesis_block": "dd28ad86def767c3cfc34267a950d871fc7462bc57ea4a929fc3596d9b598e41", + "xprv_magic": 76066276, + "xpub_magic": 76067358, + "xpub_magic_segwit_p2sh": 77429938, + "xpub_magic_segwit_native": null, + "bech32_prefix": "nix", + "cashaddr_prefix": null, + "slip44": 400, + "segwit": true, + "decred": false, + "fork_id": null, + "force_bip143": false, + "bip115": false, + "default_fee_b": { + "Normal": 1000 + }, + "dust_limit": 54600, + "blocktime_seconds": 120, + "uri_prefix": "nix", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "https://blockchain.nixplatform.io" + ], + "blockbook": [ + ], + "cooldown": 100 +} diff --git a/defs/bitcoin/nix.png b/defs/bitcoin/nix.png new file mode 100644 index 0000000000000000000000000000000000000000..132c4062b11ae518eb3fe27590257dc43d5214c5 GIT binary patch literal 10177 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 Date: Mon, 3 Dec 2018 16:38:49 +0100 Subject: [PATCH 669/767] coin_info: sort keys after deduplication this ensures that key order is stable in cases where some ERC20 tokens are sorted with identical keys which change later i.e.: Two tokens with erc20:eth:REP keys are sorted based on the order of reading them from disk. Previously, at most one such key would be left in data so their mutual order wouldn't matter. Now, one of them can be deprecated and get a ":deprecated" suffix. Depending on the load order, this could be the first or the second of them, so the resulting sort would not be stable. To fix that, we do key deduplication first and sorting second. To prevent further problems like this, we also sort glob results. --- tools/coin_info.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/tools/coin_info.py b/tools/coin_info.py index f3dd1384b..40fd6489f 100755 --- a/tools/coin_info.py +++ b/tools/coin_info.py @@ -228,7 +228,7 @@ def _load_erc20_tokens(): chain = network["chain"] chain_path = os.path.join(DEFS_DIR, "ethereum", "tokens", "tokens", chain) - for filename in glob.glob(os.path.join(chain_path, "*.json")): + for filename in sorted(glob.glob(os.path.join(chain_path, "*.json"))): token = load_json(filename) token.update( chain=chain, @@ -513,6 +513,13 @@ def collect_coin_info(): misc=_load_misc(), ) + for k, coins in all_coins.items(): + _ensure_mandatory_values(coins) + + return all_coins + + +def sort_coin_infos(all_coins): for k, coins in all_coins.items(): if k == "bitcoin": coins.sort(key=_btc_sort_key) @@ -525,10 +532,6 @@ def collect_coin_info(): else: coins.sort(key=lambda c: c["key"].upper()) - _ensure_mandatory_values(coins) - - return all_coins - def coin_info_with_duplicates(): """Collects coin info, detects duplicates but does not remove them. @@ -539,6 +542,8 @@ def coin_info_with_duplicates(): buckets = mark_duplicate_shortcuts(all_coins.as_list()) deduplicate_erc20(buckets, all_coins.eth) deduplicate_keys(all_coins.as_list()) + sort_coin_infos(all_coins) + return all_coins, buckets From 79a9891939418263febc98d8d862be53f722d338 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 5 Dec 2018 14:53:00 +0100 Subject: [PATCH 670/767] wallets: add electrum-ftc --- defs/wallets.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/defs/wallets.json b/defs/wallets.json index 773283b48..e4733fee1 100644 --- a/defs/wallets.json +++ b/defs/wallets.json @@ -20,6 +20,9 @@ "bitcoin:FJC": { "Electrum-FJC": "http://www.fujicoin.org/downloads.php" }, + "bitcoin:FTC": { + "Electrum-FTC": "https://github.com/Feathercoin-Foundation/electrum-ftc" + }, "bitcoin:GAME": { "Electrum-GAME": "https://electrum-game.org" }, From 9141eefb4b8d0e3d53a083051dbb56f27c0a6749 Mon Sep 17 00:00:00 2001 From: Michael Ira Krufky Date: Fri, 7 Dec 2018 07:45:27 -0500 Subject: [PATCH 671/767] Add REOSC Ecosystem support (#246) --- defs/ethereum/networks.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/defs/ethereum/networks.json b/defs/ethereum/networks.json index 23bd7cc10..4e9f3393f 100644 --- a/defs/ethereum/networks.json +++ b/defs/ethereum/networks.json @@ -187,6 +187,16 @@ "url": "https://egem.io", "blockbook": [] }, + { + "chain": "reosc", + "chain_id": 2894, + "slip44": 2894, + "shortcut": "REOSC", + "name": "REOSC Ecosystem", + "rskip60": false, + "url": "https://reosc.io", + "blockbook": [] + }, { "chain": "esn", "chain_id": 31102, From 86f15f392b04f962d536073f587841ab842f6997 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Sun, 9 Dec 2018 19:12:26 +0100 Subject: [PATCH 672/767] defs: regenerate coins_details.json --- defs/coins_details.json | 629 ++++++++++++++++++++-------------------- 1 file changed, 317 insertions(+), 312 deletions(-) diff --git a/defs/coins_details.json b/defs/coins_details.json index a94399c11..15b164884 100644 --- a/defs/coins_details.json +++ b/defs/coins_details.json @@ -5,11 +5,11 @@ "Github": "https://github.com/Actinium-project/Actinium", "Homepage": "https://actinium.org" }, - "marketcap_usd": 226969, + "marketcap_usd": 201344, "name": "Actinium", "shortcut": "ACM", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "coin", "wallet": [] }, @@ -18,7 +18,7 @@ "Github": "https://github.com/Bitcoin-ABC/bitcoin-abc", "Homepage": "https://www.bitcoincash.org" }, - "marketcap_usd": 2945938774, + "marketcap_usd": 1944964734, "name": "Bitcoin Cash", "shortcut": "BCH", "t1_enabled": "yes", @@ -44,7 +44,7 @@ "name": "BitCash", "shortcut": "BITC", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "coin", "wallet": [] }, @@ -53,11 +53,11 @@ "Github": "https://github.com/LIMXTEC/BitSend", "Homepage": "https://bitsend.info" }, - "marketcap_usd": 1287986, + "marketcap_usd": 1591719, "name": "Bitsend", "shortcut": "BSD", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "coin", "wallet": [] }, @@ -66,7 +66,7 @@ "Github": "https://github.com/bitcoin/bitcoin", "Homepage": "https://bitcoin.org" }, - "marketcap_usd": 68881115878, + "marketcap_usd": 63417834353, "name": "Bitcoin", "shortcut": "BTC", "t1_enabled": "yes", @@ -88,7 +88,7 @@ "Github": "https://github.com/BTCPrivate/BitcoinPrivate", "Homepage": "https://btcprivate.org" }, - "marketcap_usd": 53873018, + "marketcap_usd": 40473486, "name": "Bitcoin Private", "shortcut": "BTCP", "t1_enabled": "yes", @@ -106,11 +106,11 @@ "Github": "https://github.com/LIMXTEC/Bitcloud", "Homepage": "https://bit-cloud.info" }, - "marketcap_usd": 178824, + "marketcap_usd": 147616, "name": "Bitcloud", "shortcut": "BTDX", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "coin", "wallet": [] }, @@ -119,7 +119,7 @@ "Github": "https://github.com/BTCGPU/BTCGPU", "Homepage": "https://bitcoingold.org" }, - "marketcap_usd": 307394106, + "marketcap_usd": 219616992, "name": "Bitcoin Gold", "shortcut": "BTG", "t1_enabled": "yes", @@ -141,7 +141,7 @@ "Github": "https://github.com/LIMXTEC/BitCore", "Homepage": "https://bitcore.cc" }, - "marketcap_usd": 5663011, + "marketcap_usd": 4773443, "name": "Bitcore", "shortcut": "BTX", "t1_enabled": "yes", @@ -159,11 +159,11 @@ "Github": "https://github.com/Capricoinofficial/Capricoin", "Homepage": "https://capricoin.org" }, - "marketcap_usd": 1010223, + "marketcap_usd": 1189832, "name": "Capricoin", "shortcut": "CPC", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "coin", "wallet": [] }, @@ -172,7 +172,7 @@ "Github": "https://github.com/dashpay/dash", "Homepage": "https://www.dash.org" }, - "marketcap_usd": 758422088, + "marketcap_usd": 640313992, "name": "Dash", "shortcut": "DASH", "t1_enabled": "yes", @@ -194,7 +194,7 @@ "Github": "https://github.com/decred/dcrd", "Homepage": "https://www.decred.org" }, - "marketcap_usd": 174497263, + "marketcap_usd": 158994844, "name": "Decred", "shortcut": "DCR", "t1_enabled": "yes", @@ -207,7 +207,7 @@ "Github": "https://github.com/digibyte/digibyte", "Homepage": "https://digibyte.io" }, - "marketcap_usd": 136913497, + "marketcap_usd": 115210383, "name": "DigiByte", "shortcut": "DGB", "t1_enabled": "yes", @@ -221,7 +221,7 @@ "Github": "https://github.com/carsenk/denarius", "Homepage": "https://denarius.io" }, - "marketcap_usd": 538294, + "marketcap_usd": 494395, "name": "Denarius", "shortcut": "DNR", "t1_enabled": "yes", @@ -234,7 +234,7 @@ "Github": "https://github.com/dogecoin/dogecoin", "Homepage": "https://dogecoin.com" }, - "marketcap_usd": 249730124, + "marketcap_usd": 248111682, "name": "Dogecoin", "shortcut": "DOGE", "t1_enabled": "yes", @@ -252,7 +252,7 @@ "Github": "https://github.com/fujicoin/fujicoin", "Homepage": "https://fujicoin.org" }, - "marketcap_usd": 223203, + "marketcap_usd": 250402, "name": "Fujicoin", "shortcut": "FJC", "t1_enabled": "yes", @@ -270,7 +270,7 @@ "Github": "https://github.com/flash-coin", "Homepage": "https://www.flashcoin.io" }, - "marketcap_usd": 2802887, + "marketcap_usd": 4874540, "name": "Flashcoin", "shortcut": "FLASH", "t1_enabled": "yes", @@ -283,20 +283,25 @@ "Github": "https://github.com/FeatherCoin/Feathercoin", "Homepage": "https://feathercoin.com" }, - "marketcap_usd": 4435830, + "marketcap_usd": 4043569, "name": "Feathercoin", "shortcut": "FTC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": [] + "wallet": [ + { + "name": "Electrum-FTC", + "url": "https://github.com/Feathercoin-Foundation/electrum-ftc" + } + ] }, "bitcoin:GAME": { "links": { "Github": "https://github.com/gamecredits-project/gamecredits", "Homepage": "https://gamecredits.org" }, - "marketcap_usd": 5110725, + "marketcap_usd": 4721215, "name": "GameCredits", "shortcut": "GAME", "t1_enabled": "yes", @@ -314,7 +319,7 @@ "Github": "https://github.com/Groestlcoin/groestlcoin", "Homepage": "https://www.groestlcoin.org" }, - "marketcap_usd": 18465532, + "marketcap_usd": 17200884, "name": "Groestlcoin", "shortcut": "GRS", "t1_enabled": "yes", @@ -350,7 +355,7 @@ "Github": "https://github.com/litecoin-project/litecoin", "Homepage": "https://litecoin.org" }, - "marketcap_usd": 1876911528, + "marketcap_usd": 1583252153, "name": "Litecoin", "shortcut": "LTC", "t1_enabled": "yes", @@ -372,11 +377,11 @@ "Github": "https://github.com/LIMXTEC/Megacoin", "Homepage": "https://www.megacoin.eu" }, - "marketcap_usd": 130774, + "marketcap_usd": 102971, "name": "Megacoin", "shortcut": "MEC", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "coin", "wallet": [] }, @@ -385,7 +390,7 @@ "Github": "https://github.com/monacoinproject/monacoin", "Homepage": "https://monacoin.org" }, - "marketcap_usd": 44054538, + "marketcap_usd": 32767939, "name": "Monacoin", "shortcut": "MONA", "t1_enabled": "yes", @@ -403,7 +408,7 @@ "Github": "https://github.com/muecoin/MUECore", "Homepage": "https://www.monetaryunit.org" }, - "marketcap_usd": 2332002, + "marketcap_usd": 2702869, "name": "MonetaryUnit", "shortcut": "MUE", "t1_enabled": "yes", @@ -416,7 +421,7 @@ "Github": "https://github.com/namecoin/namecoin-core", "Homepage": "https://namecoin.org" }, - "marketcap_usd": 5544320, + "marketcap_usd": 7202293, "name": "Namecoin", "shortcut": "NMC", "t1_enabled": "yes", @@ -438,7 +443,7 @@ "Github": "https://github.com/FundacionPesetacoin/PesetacoinCore", "Homepage": "https://pesetacoin.info" }, - "marketcap_usd": 334459, + "marketcap_usd": 384100, "name": "Pesetacoin", "shortcut": "PTC", "t1_enabled": "yes", @@ -451,11 +456,11 @@ "Github": "https://github.com/RavenProject/Ravencoin", "Homepage": "https://ravencoin.org" }, - "marketcap_usd": 42386146, + "marketcap_usd": 36450721, "name": "Ravencoin", "shortcut": "RVN", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "coin", "wallet": [] }, @@ -464,7 +469,7 @@ "Github": "https://github.com/SmartCash/Core-Smart", "Homepage": "https://smarcash.cc" }, - "marketcap_usd": 17181120, + "marketcap_usd": 18347854, "name": "SmartCash", "shortcut": "SMART", "t1_enabled": "yes", @@ -477,7 +482,7 @@ "Github": "https://github.com/viacoin", "Homepage": "https://viacoin.org" }, - "marketcap_usd": 7337921, + "marketcap_usd": 6930457, "name": "Viacoin", "shortcut": "VIA", "t1_enabled": "yes", @@ -495,7 +500,7 @@ "Github": "https://github.com/vertcoin-project/vertcoin-core", "Homepage": "https://vertcoin.org" }, - "marketcap_usd": 14783207, + "marketcap_usd": 11729190, "name": "Vertcoin", "shortcut": "VTC", "t1_enabled": "yes", @@ -513,7 +518,7 @@ "Github": "https://github.com/myriadcoin/myriadcoin", "Homepage": "https://www.myriadcoin.org" }, - "marketcap_usd": 2734242, + "marketcap_usd": 2643268, "name": "Myriad", "shortcut": "XMY", "t1_enabled": "yes", @@ -526,7 +531,7 @@ "Github": "https://github.com/zcoinofficial/zcoin", "Homepage": "https://zcoin.io" }, - "marketcap_usd": 32503050, + "marketcap_usd": 31894181, "name": "Zcoin", "shortcut": "XZC", "t1_enabled": "yes", @@ -548,7 +553,7 @@ "Github": "https://github.com/zcash/zcash", "Homepage": "https://z.cash" }, - "marketcap_usd": 424095992, + "marketcap_usd": 334325275, "name": "Zcash", "shortcut": "ZEC", "t1_enabled": "yes", @@ -566,7 +571,7 @@ "Github": "https://github.com/ZencashOfficial/zen", "Homepage": "https://zencash.com" }, - "marketcap_usd": 32779978, + "marketcap_usd": 26886561, "name": "Zencash", "shortcut": "ZEN", "t1_enabled": "no", @@ -740,7 +745,7 @@ "links": { "Homepage": "https://0xbitcoin.org/" }, - "marketcap_usd": 1147641, + "marketcap_usd": 854947, "name": "0xBitcoin", "network": "eth", "shortcut": "0xBTC", @@ -767,7 +772,7 @@ "links": { "Homepage": "https://firstblood.io" }, - "marketcap_usd": 3084437, + "marketcap_usd": 2807415, "name": "FirstBlood", "network": "eth", "shortcut": "1ST", @@ -881,7 +886,7 @@ "network": "eth", "shortcut": "ABCH", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -958,7 +963,7 @@ "links": { "Homepage": "http://accelerator.network" }, - "marketcap_usd": 59582, + "marketcap_usd": 32288, "name": "Accelerator Network", "network": "eth", "shortcut": "ACC", @@ -1013,7 +1018,7 @@ "Github": "https://github.com/aditus", "Homepage": "https://aditus.net" }, - "marketcap_usd": 196550, + "marketcap_usd": 162119, "name": "Aditus", "network": "eth", "shortcut": "ADI", @@ -1041,7 +1046,7 @@ "Github": "https://github.com/adelecosystem", "Homepage": "https://adel.io" }, - "marketcap_usd": 536958, + "marketcap_usd": 497314, "name": "Adelphoi", "network": "eth", "shortcut": "ADL", @@ -1068,7 +1073,7 @@ "links": { "Homepage": "https://adshares.net" }, - "marketcap_usd": 945374, + "marketcap_usd": 956947, "name": "AdShares", "network": "eth", "shortcut": "ADST", @@ -1096,7 +1101,7 @@ "Github": "https://github.com/adchain", "Homepage": "https://adtoken.com" }, - "marketcap_usd": 4080047, + "marketcap_usd": 3469492, "name": "AdToken", "network": "eth", "shortcut": "ADT", @@ -1152,7 +1157,7 @@ "Github": "https://github.com/aeternity", "Homepage": "https://www.aeternity.com/" }, - "marketcap_usd": 128327767, + "marketcap_usd": 98960170, "name": "aeternity", "network": "eth", "shortcut": "AE", @@ -1185,7 +1190,7 @@ "network": "eth", "shortcut": "AFA", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -1208,7 +1213,7 @@ "Github": "https://github.com/singnet/singnet", "Homepage": "https://singularitynet.io" }, - "marketcap_usd": 18705610, + "marketcap_usd": 22012963, "name": "SingularityNET", "network": "eth", "shortcut": "AGI", @@ -1236,7 +1241,7 @@ "Github": "https://github.com/aionnetwork", "Homepage": "https://aion.network/" }, - "marketcap_usd": 37421103, + "marketcap_usd": 35136359, "name": "Aion", "network": "eth", "shortcut": "AION", @@ -1291,7 +1296,7 @@ "Github": "https://github.com/AigangNetwork", "Homepage": "https://aigang.network/" }, - "marketcap_usd": 226792, + "marketcap_usd": 171768, "name": "Aigang", "network": "eth", "shortcut": "AIX", @@ -1374,7 +1379,7 @@ "Github": "https://github.com/AlisProject", "Homepage": "https://alismedia.jp" }, - "marketcap_usd": 1402872, + "marketcap_usd": 1150352, "name": "ALIS Token", "network": "eth", "shortcut": "ALIS", @@ -1485,7 +1490,7 @@ "Github": "https://github.com/amlt-by-coinfirm", "Homepage": "https://amlt.coinfirm.io/" }, - "marketcap_usd": 2040467, + "marketcap_usd": 1841149, "name": "AMLT", "network": "eth", "shortcut": "AMLT", @@ -1513,7 +1518,7 @@ "Github": "https://github.com/amontech", "Homepage": "https://amon.tech" }, - "marketcap_usd": 162356, + "marketcap_usd": 146583, "name": "Amon", "network": "eth", "shortcut": "AMN", @@ -1541,7 +1546,7 @@ "Github": "https://github.com/AMO-Project/", "Homepage": "https://amo.foundation" }, - "marketcap_usd": 12640079, + "marketcap_usd": 10769108, "name": "AMO Coin", "network": "eth", "shortcut": "AMO", @@ -1623,7 +1628,7 @@ "Github": "https://github.com/Oxchild/crowdsale", "Homepage": "https://apisplatform.io" }, - "marketcap_usd": 14039405, + "marketcap_usd": 14569184, "name": "APIS", "network": "eth", "shortcut": "APIS", @@ -1651,7 +1656,7 @@ "Github": "https://github.com/Aptoide/AppCoins-ethereumj", "Homepage": "https://appcoins.io" }, - "marketcap_usd": 4600005, + "marketcap_usd": 4221629, "name": "AppCoins", "network": "eth", "shortcut": "APPC", @@ -1678,7 +1683,7 @@ "links": { "Homepage": "https://aigang.network" }, - "marketcap_usd": 226792, + "marketcap_usd": 171768, "name": "AIGang", "network": "eth", "shortcut": "APT", @@ -1733,7 +1738,7 @@ "links": { "Homepage": "https://www.arbitragect.com" }, - "marketcap_usd": 170106, + "marketcap_usd": 113917, "name": "ArbitrageCT", "network": "eth", "shortcut": "ARCT", @@ -1898,7 +1903,7 @@ "links": { "Homepage": "https://airswap.io" }, - "marketcap_usd": 4887756, + "marketcap_usd": 4514260, "name": "Airswap", "network": "eth", "shortcut": "AST", @@ -1953,7 +1958,7 @@ "Github": "https://github.com/atonomi", "Homepage": "https://atonomi.io" }, - "marketcap_usd": 863716, + "marketcap_usd": 781640, "name": "Atonomi", "network": "eth", "shortcut": "ATMI", @@ -2146,7 +2151,7 @@ "Github": "https://www.github.com/axpire", "Homepage": "https://www.axpire.io" }, - "marketcap_usd": 2438052, + "marketcap_usd": 1732797, "name": "aXpire", "network": "eth", "shortcut": "AXPR", @@ -2200,7 +2205,7 @@ "links": { "Homepage": "https://basicattentiontoken.org" }, - "marketcap_usd": 189100409, + "marketcap_usd": 175923938, "name": "Basic Attention Token", "network": "eth", "shortcut": "BAT", @@ -2260,7 +2265,7 @@ "network": "eth", "shortcut": "BC", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -2339,7 +2344,7 @@ "Github": "https://github.com/VinceBCD/BCDiploma", "Homepage": "https://www.bcdiploma.com" }, - "marketcap_usd": 0, + "marketcap_usd": 205611, "name": "Blockchain Certified Data Token", "network": "eth", "shortcut": "BCDT", @@ -2478,7 +2483,7 @@ "Github": "https://github.com/thebeetoken", "Homepage": "https://www.beetoken.com" }, - "marketcap_usd": 1051689, + "marketcap_usd": 698645, "name": "Bee Token", "network": "eth", "shortcut": "BEE", @@ -2562,7 +2567,7 @@ "Github": "https://github.com/bethereumproject", "Homepage": "https://www.bethereum.com/" }, - "marketcap_usd": 765695, + "marketcap_usd": 618090, "name": "Bethereum", "network": "eth", "shortcut": "BETHER", @@ -2622,7 +2627,7 @@ "network": "eth", "shortcut": "BHR", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -2650,7 +2655,7 @@ "network": "eth", "shortcut": "BITCAR", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -2727,7 +2732,7 @@ "Github": "https://github.com/BankEx", "Homepage": "https://bankex.com/" }, - "marketcap_usd": 3272311, + "marketcap_usd": 3691507, "name": "BANKEX", "network": "eth", "shortcut": "BKX", @@ -2783,7 +2788,7 @@ "Github": "https://github.com/BlueCrypto", "Homepage": "https://blueprotocol.com/" }, - "marketcap_usd": 678811, + "marketcap_usd": 697612, "name": "Ethereum Blue", "network": "eth", "shortcut": "BLUE", @@ -2838,7 +2843,7 @@ "links": { "Homepage": "https://www.iconomi.net" }, - "marketcap_usd": 17401149, + "marketcap_usd": 15665243, "name": "Iconomi", "network": "eth", "shortcut": "BLX (Iconomi)", @@ -2948,7 +2953,7 @@ "links": { "Homepage": "https://www.binance.com" }, - "marketcap_usd": 650972692, + "marketcap_usd": 639741916, "name": "Binance Coin", "network": "eth", "shortcut": "BNB", @@ -2976,7 +2981,7 @@ "Github": "https://github.com/bancorprotocol", "Homepage": "https://www.bancor.network/discover" }, - "marketcap_usd": 38480775, + "marketcap_usd": 34614681, "name": "Bancor", "network": "eth", "shortcut": "BNT", @@ -3057,7 +3062,7 @@ "links": { "Homepage": "https://bonpay.com" }, - "marketcap_usd": 340063, + "marketcap_usd": 329658, "name": "Bonpay", "network": "eth", "shortcut": "BON", @@ -3193,7 +3198,7 @@ "links": { "Homepage": "http://bro-consortium.io" }, - "marketcap_usd": 20632, + "marketcap_usd": 10593, "name": "BRAT", "network": "eth", "shortcut": "BRAT", @@ -3221,7 +3226,7 @@ "Github": "https://github.com/breadwallet", "Homepage": "https://token.breadapp.com/en" }, - "marketcap_usd": 19531130, + "marketcap_usd": 17999552, "name": "Bread", "network": "eth", "shortcut": "BRD", @@ -3253,7 +3258,7 @@ "network": "eth", "shortcut": "BRLN", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -3440,7 +3445,7 @@ "Github": "https://github.com/bethereumproject", "Homepage": "https://www.bethereum.com/" }, - "marketcap_usd": 765695, + "marketcap_usd": 618090, "name": "Bethereum", "network": "eth", "shortcut": "BTHR", @@ -3468,7 +3473,7 @@ "Github": "https://github.com/bitcoin-token", "Homepage": "https://btk.community" }, - "marketcap_usd": 247200, + "marketcap_usd": 161917, "name": "Bitcoin Token", "network": "eth", "shortcut": "BTK", @@ -3496,7 +3501,7 @@ "Github": "https://github.com/bytom", "Homepage": "https://bytom.io" }, - "marketcap_usd": 96904124, + "marketcap_usd": 77075939, "name": "Bytom", "network": "eth", "shortcut": "BTM", @@ -3551,7 +3556,7 @@ "Github": "https://github.com/Andyss4545/BitEther", "Homepage": "https://bytom.io" }, - "marketcap_usd": 34392, + "marketcap_usd": 29297, "name": "Bitether", "network": "eth", "shortcut": "BTT", @@ -3611,7 +3616,7 @@ "network": "eth", "shortcut": "BTU", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -3661,7 +3666,7 @@ "Github": "https://github.com/cryptotwenty", "Homepage": "https://crypto20.com" }, - "marketcap_usd": 15059951, + "marketcap_usd": 12773549, "name": "Crypto20's Token", "network": "eth", "shortcut": "C20", @@ -3823,7 +3828,7 @@ "links": { "Homepage": "https://cashaa.com" }, - "marketcap_usd": 8575133, + "marketcap_usd": 6022809, "name": "Cashaa", "network": "eth", "shortcut": "CAS", @@ -4562,7 +4567,7 @@ "links": { "Homepage": "https://cindicator.com" }, - "marketcap_usd": 16952590, + "marketcap_usd": 14861308, "name": "Cindicator", "network": "eth", "shortcut": "CND", @@ -4755,7 +4760,7 @@ "links": { "Homepage": "https://covesting.io/" }, - "marketcap_usd": 7007119, + "marketcap_usd": 6354713, "name": "Covesting", "network": "eth", "shortcut": "COV", @@ -4811,12 +4816,12 @@ "Github": "https://github.com/Cpollo", "Homepage": "https://cpollo.info/" }, - "marketcap_usd": 804070, + "marketcap_usd": 301865, "name": "CPOLLO", "network": "eth", "shortcut": "CPLO", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -4839,7 +4844,7 @@ "Github": "https://github.com/aditus", "Homepage": "https://copytrack.io" }, - "marketcap_usd": 1201355, + "marketcap_usd": 925277, "name": "COPYTRACK", "network": "eth", "shortcut": "CPY", @@ -4949,7 +4954,7 @@ "links": { "Homepage": "https://bitbounce.io" }, - "marketcap_usd": 17618626, + "marketcap_usd": 25568974, "name": "Credo / Bitbounce", "network": "eth", "shortcut": "CREDO", @@ -5279,7 +5284,7 @@ "Github": "https://github.com/cargoxio", "Homepage": "https://cargox.io" }, - "marketcap_usd": 2227380, + "marketcap_usd": 1852179, "name": "CargoX", "network": "eth", "shortcut": "CXO", @@ -5306,7 +5311,7 @@ "links": { "Homepage": "https://cyberfmradio.com" }, - "marketcap_usd": 278261, + "marketcap_usd": 242449, "name": "CyberFM", "network": "eth", "shortcut": "CYFM", @@ -5333,7 +5338,7 @@ "links": { "Homepage": "https://ccrb.io" }, - "marketcap_usd": 447123, + "marketcap_usd": 452911, "name": "CryptoCarbon", "network": "eth", "shortcut": "CryptoCarbon", @@ -5387,7 +5392,7 @@ "links": { "Homepage": "https://dadi.cloud" }, - "marketcap_usd": 3187944, + "marketcap_usd": 2781930, "name": "DADI", "network": "eth", "shortcut": "DADI", @@ -5415,12 +5420,12 @@ "Github": "https://github.com/makerdao", "Homepage": "https://makerdao.com" }, - "marketcap_usd": 61431650, + "marketcap_usd": 55772777, "name": "Dai Stablecoin v1.0", "network": "eth", "shortcut": "DAI", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -5442,7 +5447,7 @@ "links": { "Homepage": "http://www.dalecoin.org" }, - "marketcap_usd": 8949, + "marketcap_usd": 5348, "name": "DaleCoin", "network": "eth", "shortcut": "DALC", @@ -5580,7 +5585,7 @@ "Github": "https://github.com/streamr-dev", "Homepage": "https://www.streamr.com" }, - "marketcap_usd": 28413, + "marketcap_usd": 26347, "name": "DATACoin", "network": "eth", "shortcut": "DATACoin", @@ -5719,7 +5724,7 @@ "Github": "https://github.com/DistributedBanking/DCC", "Homepage": "http://dcc.finance" }, - "marketcap_usd": 2760283, + "marketcap_usd": 2511171, "name": "Distributed Credit Chain", "network": "eth", "shortcut": "DCC", @@ -5774,7 +5779,7 @@ "Github": "https://github.com/Dentacoin", "Homepage": "https://dentacoin.com" }, - "marketcap_usd": 32276452, + "marketcap_usd": 25898072, "name": "Dentacoin", "network": "eth", "shortcut": "DCN", @@ -5884,7 +5889,7 @@ "links": { "Homepage": "https://www.dentwireless.com" }, - "marketcap_usd": 18343049, + "marketcap_usd": 16945554, "name": "DENT", "network": "eth", "shortcut": "DENT", @@ -5911,12 +5916,12 @@ "links": { "Homepage": "https://www.coinbit.co.kr/" }, - "marketcap_usd": 0, + "marketcap_usd": 29891190, "name": "DEX", "network": "eth", "shortcut": "DEX", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -5943,7 +5948,7 @@ "network": "eth", "shortcut": "DGD", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -5994,7 +5999,7 @@ "Github": "https://github.com/dragonglasscom", "Homepage": "https://dragonglass.com/" }, - "marketcap_usd": 53795, + "marketcap_usd": 49684, "name": "Dragonglass", "network": "eth", "shortcut": "DGS", @@ -6050,7 +6055,7 @@ "Github": "https://github.com/DigixGlobal", "Homepage": "https://digix.global" }, - "marketcap_usd": 3039836, + "marketcap_usd": 3485934, "name": "Digix Gold Token", "network": "eth", "shortcut": "DGX", @@ -6105,7 +6110,7 @@ "links": { "Homepage": "https://etheroll.com" }, - "marketcap_usd": 2125254, + "marketcap_usd": 2791930, "name": "Etheroll", "network": "eth", "shortcut": "DICE", @@ -6409,7 +6414,7 @@ "Github": "https://github.com/dethertech", "Homepage": "https://dether.io" }, - "marketcap_usd": 736550, + "marketcap_usd": 538261, "name": "dether", "network": "eth", "shortcut": "DTH", @@ -6627,7 +6632,7 @@ "links": { "Homepage": "https://edgeless.io" }, - "marketcap_usd": 6654581, + "marketcap_usd": 6337500, "name": "Edgeless", "network": "eth", "shortcut": "EDG", @@ -6654,7 +6659,7 @@ "links": { "Homepage": "https://eidoo.io" }, - "marketcap_usd": 22461378, + "marketcap_usd": 20224090, "name": "Eidoo", "network": "eth", "shortcut": "EDO", @@ -6793,7 +6798,7 @@ "Github": "https://github.com/eltcoin", "Homepage": "http://www.eltcoin.tech/" }, - "marketcap_usd": 78206, + "marketcap_usd": 48156, "name": "ELTCOIN", "network": "eth", "shortcut": "ELTCOIN", @@ -6987,7 +6992,7 @@ "Github": "https://github.com/enigmampc", "Homepage": "https://enigma.co/" }, - "marketcap_usd": 22823971, + "marketcap_usd": 20365047, "name": "Enigma", "network": "eth", "shortcut": "ENG", @@ -7099,12 +7104,12 @@ "Github": "https://github.com/Krishtopa/ContractEristica", "Homepage": "https://eristica.com/" }, - "marketcap_usd": 634270, + "marketcap_usd": 558851, "name": "Eristica", "network": "eth", "shortcut": "ERT", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -7154,7 +7159,7 @@ "links": { "Homepage": "https://www.ethbits.com" }, - "marketcap_usd": 847068, + "marketcap_usd": 715365, "name": "Ethbits", "network": "eth", "shortcut": "ETBS", @@ -7351,7 +7356,7 @@ "network": "eth", "shortcut": "EWO", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -7374,7 +7379,7 @@ "Github": "https://github.com/eXMRcoin/", "Homepage": "https://exmr.io/" }, - "marketcap_usd": 234228, + "marketcap_usd": 274258, "name": "eXMRcoin", "network": "eth", "shortcut": "EXMR", @@ -7434,7 +7439,7 @@ "network": "eth", "shortcut": "FABA", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -7517,7 +7522,7 @@ "network": "eth", "shortcut": "FGP", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -7540,7 +7545,7 @@ "Github": "https://github.com/FortKnoxster", "Homepage": "https://fortknoxster.com" }, - "marketcap_usd": 219173, + "marketcap_usd": 194668, "name": "Knoxstertoken", "network": "eth", "shortcut": "FKX", @@ -7704,7 +7709,7 @@ "Github": "https://github.com/FundRequest", "Homepage": "https://fundrequest.io" }, - "marketcap_usd": 209645, + "marketcap_usd": 204084, "name": "FundRequest", "network": "eth", "shortcut": "FND", @@ -7814,7 +7819,7 @@ "Github": "https://github.com/futuraxproject", "Homepage": "https://futurax.global" }, - "marketcap_usd": 388107, + "marketcap_usd": 331124, "name": "FUTURAX", "network": "eth", "shortcut": "FTXT", @@ -7869,7 +7874,7 @@ "links": { "Homepage": "https://funfair.io" }, - "marketcap_usd": 26289828, + "marketcap_usd": 25042817, "name": "Funfair", "network": "eth", "shortcut": "FUN", @@ -7897,7 +7902,7 @@ "Github": "https://github.com/futuraxproject", "Homepage": "https://futurax.global" }, - "marketcap_usd": 388107, + "marketcap_usd": 331124, "name": "FUTURAX", "network": "eth", "shortcut": "FXC", @@ -7957,7 +7962,7 @@ "network": "eth", "shortcut": "Fzcoin", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -7980,7 +7985,7 @@ "Github": "https://github.com/BlockchainLabsNZ/gambit", "Homepage": "http://gambitcrypto.com" }, - "marketcap_usd": 1506883, + "marketcap_usd": 1514841, "name": "Gambit", "network": "eth", "shortcut": "GAM", @@ -8173,7 +8178,7 @@ "Github": "https://github.com/daostack", "Homepage": "https://daostack.io" }, - "marketcap_usd": 1329005, + "marketcap_usd": 1271603, "name": "DAOstack", "network": "eth", "shortcut": "GEN", @@ -8338,12 +8343,12 @@ "links": { "Homepage": "https://golem.network" }, - "marketcap_usd": 79829626, + "marketcap_usd": 65729395, "name": "Golem", "network": "eth", "shortcut": "GNT", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -8371,7 +8376,7 @@ "network": "eth", "shortcut": "GNY", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -8421,7 +8426,7 @@ "links": { "Homepage": "https://gridplus.io/token-sale" }, - "marketcap_usd": 2223339, + "marketcap_usd": 1672686, "name": "GRID", "network": "eth", "shortcut": "GRID", @@ -8454,7 +8459,7 @@ "network": "eth", "shortcut": "GROO", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -8588,7 +8593,7 @@ "Github": "https://github.com/GIFTO-io", "Homepage": "https://gifto.io/" }, - "marketcap_usd": 15450476, + "marketcap_usd": 12529785, "name": "Gifto", "network": "eth", "shortcut": "GTO", @@ -8644,7 +8649,7 @@ "Github": "https://github.com/GenesisVision", "Homepage": "https://genesis.vision" }, - "marketcap_usd": 19597404, + "marketcap_usd": 16749783, "name": "Genesis Vision", "network": "eth", "shortcut": "GVT", @@ -8836,7 +8841,7 @@ "Github": "https://github.com/havven/havven", "Homepage": "https://havven.io" }, - "marketcap_usd": 4047901, + "marketcap_usd": 0, "name": "Havven", "network": "eth", "shortcut": "HAV", @@ -9033,7 +9038,7 @@ "network": "eth", "shortcut": "HLX", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -9082,7 +9087,7 @@ "links": { "Homepage": "https://github.com/arachnid/hodlcoin" }, - "marketcap_usd": 91848, + "marketcap_usd": 101756, "name": "HODLCoin", "network": "eth", "shortcut": "HODL", @@ -9329,7 +9334,7 @@ "links": { "Homepage": "https://www.icon.foundation" }, - "marketcap_usd": 116982279, + "marketcap_usd": 106710394, "name": "ICON", "network": "eth", "shortcut": "ICX", @@ -9383,7 +9388,7 @@ "links": { "Homepage": "https://investfeed.com" }, - "marketcap_usd": 529176, + "marketcap_usd": 538266, "name": "InvestFeed", "network": "eth", "shortcut": "IFT", @@ -9546,7 +9551,7 @@ "links": { "Homepage": "https://insights.network" }, - "marketcap_usd": 975410, + "marketcap_usd": 933889, "name": "Insights Network", "network": "eth", "shortcut": "INSTAR", @@ -9574,7 +9579,7 @@ "Github": "https://github.com/Internxt/", "Homepage": "https://internxt.com/" }, - "marketcap_usd": 972668, + "marketcap_usd": 689022, "name": "Internxt", "network": "eth", "shortcut": "INXT", @@ -9601,7 +9606,7 @@ "links": { "Homepage": "https://iost.io/" }, - "marketcap_usd": 55388787, + "marketcap_usd": 51213641, "name": "IOSToken", "network": "eth", "shortcut": "IOST", @@ -9712,7 +9717,7 @@ "Github": "https://github.com/iqeon", "Homepage": "https://iqeon.io/" }, - "marketcap_usd": 366659, + "marketcap_usd": 341413, "name": "IQeon", "network": "eth", "shortcut": "IQN", @@ -9768,7 +9773,7 @@ "Github": "https://github.com/IoTChainCode", "Homepage": "https://iotchain.io/" }, - "marketcap_usd": 7112043, + "marketcap_usd": 7196613, "name": "IoT Chain", "network": "eth", "shortcut": "ITC", @@ -9992,7 +9997,7 @@ "network": "eth", "shortcut": "KC", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -10043,7 +10048,7 @@ "Github": "https://github.com/kikinteractive/kin-token", "Homepage": "https://kin.kik.com" }, - "marketcap_usd": 21896247, + "marketcap_usd": 21833399, "name": "Kin Foundation", "network": "eth", "shortcut": "KIN", @@ -10071,7 +10076,7 @@ "Github": "https://github.com/KyberNetwork", "Homepage": "https://kyber.network" }, - "marketcap_usd": 22784755, + "marketcap_usd": 19037907, "name": "Kyber Network", "network": "eth", "shortcut": "KNC", @@ -10127,7 +10132,7 @@ "Github": "https://github.com/Cryptense/", "Homepage": "https://kryll.io/" }, - "marketcap_usd": 407478, + "marketcap_usd": 356032, "name": "Kryll", "network": "eth", "shortcut": "KRL", @@ -10159,7 +10164,7 @@ "network": "eth", "shortcut": "KUE", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -10209,7 +10214,7 @@ "Github": "https://github.com/latoken", "Homepage": "https://latoken.com/" }, - "marketcap_usd": 4116385, + "marketcap_usd": 3614243, "name": "LATOKEN", "network": "eth", "shortcut": "LA", @@ -10263,7 +10268,7 @@ "links": { "Homepage": "https://www.leadcoin.network/" }, - "marketcap_usd": 270388, + "marketcap_usd": 267974, "name": "LEADCOIN", "network": "eth", "shortcut": "LDC", @@ -10350,7 +10355,7 @@ "network": "eth", "shortcut": "LG", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -10431,7 +10436,7 @@ "network": "eth", "shortcut": "LIBER", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -10481,7 +10486,7 @@ "links": { "Homepage": "http://www.lifelabs.io" }, - "marketcap_usd": 1078911, + "marketcap_usd": 854946, "name": "LIFE", "network": "eth", "shortcut": "LIFE", @@ -10508,7 +10513,7 @@ "links": { "Homepage": "https://link.smartcontract.com" }, - "marketcap_usd": 112503541, + "marketcap_usd": 83143754, "name": "Chainlink", "network": "eth", "shortcut": "LINK (Chainlink)", @@ -10568,7 +10573,7 @@ "network": "eth", "shortcut": "LML", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -10591,7 +10596,7 @@ "Github": "https://github.com/lendingblock", "Homepage": "https://lendingblock.com" }, - "marketcap_usd": 2727966, + "marketcap_usd": 2785627, "name": "Lendingblock", "network": "eth", "shortcut": "LND", @@ -10618,7 +10623,7 @@ "links": { "Homepage": "https://LockChain.co" }, - "marketcap_usd": 7855180, + "marketcap_usd": 6825239, "name": "LockChain", "network": "eth", "shortcut": "LOC", @@ -10646,7 +10651,7 @@ "Github": "http://github.com/locipro/loci-coin-sale", "Homepage": "https://locipro.com" }, - "marketcap_usd": 531508, + "marketcap_usd": 508767, "name": "LOCIcoin", "network": "eth", "shortcut": "LOCI", @@ -11113,7 +11118,7 @@ "Github": "https://github.com/theembermine", "Homepage": "https://embermine.com/" }, - "marketcap_usd": 35550, + "marketcap_usd": 43761, "name": "Embers", "network": "eth", "shortcut": "MBRS", @@ -11141,7 +11146,7 @@ "Github": "https://github.com/musiconomi/", "Homepage": "https://musiconomi.com/" }, - "marketcap_usd": 107146, + "marketcap_usd": 97509, "name": "Musiconomi", "network": "eth", "shortcut": "MCI", @@ -11306,7 +11311,7 @@ "links": { "Homepage": "https://mftu.net" }, - "marketcap_usd": 17996, + "marketcap_usd": 23414, "name": "Mainstream For The Underground", "network": "eth", "shortcut": "MFTU", @@ -11362,12 +11367,12 @@ "Github": "https://github.com/makerdao", "Homepage": "https://makerdao.com" }, - "marketcap_usd": 263365798, + "marketcap_usd": 258413352, "name": "MakerDAO", "network": "eth", "shortcut": "MKR", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -11422,7 +11427,7 @@ "network": "eth", "shortcut": "MLN", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -11528,7 +11533,7 @@ "Github": "https://github.com/modum-io", "Homepage": "https://modum.io" }, - "marketcap_usd": 7652248, + "marketcap_usd": 7155484, "name": "Modum", "network": "eth", "shortcut": "MOD", @@ -11637,7 +11642,7 @@ "links": { "Homepage": "https://mothership.cx" }, - "marketcap_usd": 5695983, + "marketcap_usd": 5329638, "name": "Mothership", "network": "eth", "shortcut": "MSP", @@ -11664,7 +11669,7 @@ "links": { "Homepage": "http://www.monetha.io" }, - "marketcap_usd": 4524117, + "marketcap_usd": 4239376, "name": "Monetha", "network": "eth", "shortcut": "MTH", @@ -11854,7 +11859,7 @@ "Github": "https://github.com/Merculet", "Homepage": "https://www.merculet.io" }, - "marketcap_usd": 1087557, + "marketcap_usd": 1097599, "name": "Merculet", "network": "eth", "shortcut": "MVP", @@ -11908,7 +11913,7 @@ "links": { "Homepage": "https://mysterium.network" }, - "marketcap_usd": 1435800, + "marketcap_usd": 857439, "name": "Mysterium", "network": "eth", "shortcut": "MYST", @@ -11963,7 +11968,7 @@ "Github": "https://github.com/NANJ-COIN", "Homepage": "https://nanjcoin.com/" }, - "marketcap_usd": 3833578, + "marketcap_usd": 3497890, "name": "NANJCOIN", "network": "eth", "shortcut": "NANJ", @@ -12047,7 +12052,7 @@ "Github": "https://github.com/polyswarm", "Homepage": "https://polyswarm.io" }, - "marketcap_usd": 22597175, + "marketcap_usd": 26101743, "name": "Nectar", "network": "eth", "shortcut": "NCT", @@ -12074,7 +12079,7 @@ "links": { "Homepage": "https://neverdie.com" }, - "marketcap_usd": 193609, + "marketcap_usd": 191187, "name": "Neverdie", "network": "eth", "shortcut": "NDC", @@ -12134,7 +12139,7 @@ "network": "eth", "shortcut": "NEEO", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -12156,7 +12161,7 @@ "links": { "Homepage": "https://nimiq.com" }, - "marketcap_usd": 2294723, + "marketcap_usd": 1910327, "name": "NIMIQ", "network": "eth", "shortcut": "NET", @@ -12323,7 +12328,7 @@ "Github": "https://github.com/NperProject", "Homepage": "https://nper.io" }, - "marketcap_usd": 856284, + "marketcap_usd": 744660, "name": "NPER", "network": "eth", "shortcut": "NPER", @@ -12352,7 +12357,7 @@ "Github": "https://github.com/pundix", "Homepage": "https://pundix.com" }, - "marketcap_usd": 94277654, + "marketcap_usd": 86503358, "name": "Pundi X Token", "network": "eth", "shortcut": "NPXS", @@ -12406,7 +12411,7 @@ "links": { "Homepage": "https://nuls.io" }, - "marketcap_usd": 19653509, + "marketcap_usd": 16479238, "name": "NULS", "network": "eth", "shortcut": "NULS", @@ -12460,7 +12465,7 @@ "links": { "Homepage": "https://beyond-the-void.net" }, - "marketcap_usd": 443975, + "marketcap_usd": 448712, "name": "Nexium", "network": "eth", "shortcut": "NxC", @@ -12514,7 +12519,7 @@ "links": { "Homepage": "https://www.openanx.org/en" }, - "marketcap_usd": 2544597, + "marketcap_usd": 2142473, "name": "OAX", "network": "eth", "shortcut": "OAX", @@ -12682,7 +12687,7 @@ "Github": "https://github.com/omisego", "Homepage": "https://omisego.network" }, - "marketcap_usd": 203065295, + "marketcap_usd": 196971983, "name": "OmiseGO", "network": "eth", "shortcut": "OMG", @@ -12847,12 +12852,12 @@ "links": { "Homepage": "https://ormeuscoin.com" }, - "marketcap_usd": 1420758, + "marketcap_usd": 1323832, "name": "Ormeus Coin", "network": "eth", "shortcut": "ORME", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -12875,7 +12880,7 @@ "Github": "https://github.com/OpenSTFoundation", "Homepage": "https://simpletoken.org" }, - "marketcap_usd": 10576286, + "marketcap_usd": 10571948, "name": "Simple Token 'OST'", "network": "eth", "shortcut": "OST", @@ -12903,7 +12908,7 @@ "Github": "https://github.com/owndata", "Homepage": "https://owndata.network" }, - "marketcap_usd": 2111806, + "marketcap_usd": 2487624, "name": "OWNDATA", "network": "eth", "shortcut": "OWN", @@ -13098,12 +13103,12 @@ "Github": "https://github.com/paxosglobal", "Homepage": "https://www.paxos.com/standard" }, - "marketcap_usd": 155475021, + "marketcap_usd": 176217754, "name": "Paxos Standard (PAX)", "network": "eth", "shortcut": "PAX", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -13125,7 +13130,7 @@ "links": { "Homepage": "http://www.tenx.tech" }, - "marketcap_usd": 31081129, + "marketcap_usd": 28174155, "name": "TenX", "network": "eth", "shortcut": "PAY", @@ -13207,7 +13212,7 @@ "Github": "https://github.com/PeculiumPCL/Peculium", "Homepage": "https://peculium.io" }, - "marketcap_usd": 2696684, + "marketcap_usd": 2286917, "name": "Peculium", "network": "eth", "shortcut": "PCL", @@ -13268,7 +13273,7 @@ "network": "eth", "shortcut": "PDATA", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -13426,7 +13431,7 @@ "links": { "Homepage": "https://polybius.io" }, - "marketcap_usd": 4711450, + "marketcap_usd": 5030873, "name": "Polybius", "network": "eth", "shortcut": "PLBT", @@ -13542,7 +13547,7 @@ "network": "eth", "shortcut": "PNK", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -13618,7 +13623,7 @@ "links": { "Homepage": "https://polymath.network" }, - "marketcap_usd": 37816838, + "marketcap_usd": 35130790, "name": "Polymath Network", "network": "eth", "shortcut": "POLY", @@ -13673,7 +13678,7 @@ "Github": "https://github.com/PoSToken", "Homepage": "https://postoken.org" }, - "marketcap_usd": 23900, + "marketcap_usd": 6353, "name": "PoSToken", "network": "eth", "shortcut": "POS", @@ -13727,7 +13732,7 @@ "links": { "Homepage": "https://www.paypie.com" }, - "marketcap_usd": 5569509, + "marketcap_usd": 4952521, "name": "PayPie", "network": "eth", "shortcut": "PPP", @@ -13754,7 +13759,7 @@ "links": { "Homepage": "https://populous.co" }, - "marketcap_usd": 86562805, + "marketcap_usd": 72441312, "name": "Populous", "network": "eth", "shortcut": "PPT", @@ -13781,7 +13786,7 @@ "links": { "Homepage": "https://presearch.io" }, - "marketcap_usd": 4769208, + "marketcap_usd": 4861459, "name": "Presearch", "network": "eth", "shortcut": "PRE", @@ -14112,7 +14117,7 @@ "links": { "Homepage": "https://liquid.plus" }, - "marketcap_usd": 74485589, + "marketcap_usd": 75024830, "name": "QASH", "network": "eth", "shortcut": "QASH", @@ -14195,7 +14200,7 @@ "Github": "https://github.com/quantnetwork", "Homepage": "https://www.quant.network/" }, - "marketcap_usd": 11272098, + "marketcap_usd": 15187334, "name": "Quant", "network": "eth", "shortcut": "QNT", @@ -14334,7 +14339,7 @@ "Github": "https://github.com/qtumproject", "Homepage": "https://qtum.org/" }, - "marketcap_usd": 175262968, + "marketcap_usd": 151603360, "name": "Qtum", "network": "eth", "shortcut": "QTUM", @@ -14390,7 +14395,7 @@ "Github": "https://github.com/rublixdev", "Homepage": "https://rublix.io/" }, - "marketcap_usd": 4281996, + "marketcap_usd": 4492210, "name": "Rublix", "network": "eth", "shortcut": "RBLX", @@ -14418,7 +14423,7 @@ "Github": "https://github.com/ripio/rcn-token", "Homepage": "https://ripiocredit.network" }, - "marketcap_usd": 7372670, + "marketcap_usd": 6202835, "name": "Ripio Credit Network", "network": "eth", "shortcut": "RCN", @@ -14451,7 +14456,7 @@ "network": "eth", "shortcut": "RDN", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -14500,7 +14505,7 @@ "links": { "Homepage": "https://www.rebellious.io" }, - "marketcap_usd": 881046, + "marketcap_usd": 891857, "name": "Rebellious", "network": "eth", "shortcut": "REBL", @@ -14528,7 +14533,7 @@ "Github": "https://github.com/red", "Homepage": "https://ico.red-lang.org" }, - "marketcap_usd": 1161701, + "marketcap_usd": 1088890, "name": "Red Community Token", "network": "eth", "shortcut": "RED", @@ -14611,12 +14616,12 @@ "links": { "Homepage": "https://augur.net" }, - "marketcap_usd": 89312303, + "marketcap_usd": 71749016, "name": "Augur", "network": "eth", "shortcut": "REP", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -14638,7 +14643,7 @@ "links": { "Homepage": "https://request.network" }, - "marketcap_usd": 16481913, + "marketcap_usd": 15782061, "name": "Request Network", "network": "eth", "shortcut": "REQ", @@ -14693,7 +14698,7 @@ "links": { "Homepage": "https://refereum.com" }, - "marketcap_usd": 6275652, + "marketcap_usd": 5006275, "name": "Refereum", "network": "eth", "shortcut": "RFR", @@ -14748,7 +14753,7 @@ "links": { "Homepage": "http://crowdsale.iex.ec" }, - "marketcap_usd": 17460166, + "marketcap_usd": 15181003, "name": "IEx.ec", "network": "eth", "shortcut": "RLC", @@ -14830,7 +14835,7 @@ "links": { "Homepage": "http://www.relex.io" }, - "marketcap_usd": 829352, + "marketcap_usd": 847587, "name": "Relex", "network": "eth", "shortcut": "RLX", @@ -14863,7 +14868,7 @@ "network": "eth", "shortcut": "RMESH", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -14913,7 +14918,7 @@ "Github": "https://github.com/rocketico", "Homepage": "https://rocketico.io" }, - "marketcap_usd": 12006338, + "marketcap_usd": 0, "name": "Rocket Token", "network": "eth", "shortcut": "ROCK", @@ -14940,12 +14945,12 @@ "links": { "Homepage": "https://icerockmining.io" }, - "marketcap_usd": 3659682, + "marketcap_usd": 3278753, "name": "ICE ROCK MINING", "network": "eth", "shortcut": "ROCK2", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -14967,12 +14972,12 @@ "links": { "Homepage": "https://icerockmining.io" }, - "marketcap_usd": 3659682, + "marketcap_usd": 3278753, "name": "ICE ROCK MINING", "network": "eth", "shortcut": "ROCK2PAY", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -15082,7 +15087,7 @@ "network": "eth", "shortcut": "RUNE", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -15131,7 +15136,7 @@ "links": { "Homepage": "https://rivetzintl.com" }, - "marketcap_usd": 1347673, + "marketcap_usd": 1148498, "name": "Rivetz", "network": "eth", "shortcut": "RVT", @@ -15212,7 +15217,7 @@ "links": { "Homepage": "https://saltlending.com" }, - "marketcap_usd": 18322762, + "marketcap_usd": 17685993, "name": "Salt Lending Token", "network": "eth", "shortcut": "SALT", @@ -15239,7 +15244,7 @@ "links": { "Homepage": "https://santiment.net" }, - "marketcap_usd": 15574893, + "marketcap_usd": 13322823, "name": "Santiment", "network": "eth", "shortcut": "SAN", @@ -15320,7 +15325,7 @@ "links": { "Homepage": "https://sensay.it" }, - "marketcap_usd": 772240, + "marketcap_usd": 692133, "name": "Sensay", "network": "eth", "shortcut": "SENSE", @@ -15593,7 +15598,7 @@ "links": { "Homepage": "http://smartlands.io" }, - "marketcap_usd": 31072171, + "marketcap_usd": 23262856, "name": "Smartlands", "network": "eth", "shortcut": "SLT", @@ -15730,7 +15735,7 @@ "links": { "Homepage": "https://singulardtv.com" }, - "marketcap_usd": 7235938, + "marketcap_usd": 6464658, "name": "SingularDTV", "network": "eth", "shortcut": "SNGLS", @@ -15866,7 +15871,7 @@ "links": { "Homepage": "https://sola.foundation" }, - "marketcap_usd": 91840, + "marketcap_usd": 104136, "name": "Sola Token", "network": "eth", "shortcut": "SOL", @@ -15893,7 +15898,7 @@ "links": { "Homepage": "https://spankchain.com" }, - "marketcap_usd": 5437817, + "marketcap_usd": 4538415, "name": "SpankChain", "network": "eth", "shortcut": "SPANK", @@ -16001,7 +16006,7 @@ "links": { "Homepage": "https://www.sapien.network/" }, - "marketcap_usd": 407763, + "marketcap_usd": 368141, "name": "Sapien", "network": "eth", "shortcut": "SPN", @@ -16170,7 +16175,7 @@ "network": "eth", "shortcut": "STB", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -16220,7 +16225,7 @@ "links": { "Homepage": "https://stktoken.com" }, - "marketcap_usd": 1895449, + "marketcap_usd": 1610465, "name": "STK Token", "network": "eth", "shortcut": "STK", @@ -16275,7 +16280,7 @@ "Github": "https://github.com/Storj", "Homepage": "https://storj.io" }, - "marketcap_usd": 22888802, + "marketcap_usd": 18707446, "name": "STORJ", "network": "eth", "shortcut": "STORJ", @@ -16302,7 +16307,7 @@ "links": { "Homepage": "https://www.stormtoken.com" }, - "marketcap_usd": 17008098, + "marketcap_usd": 13815630, "name": "Storm Token", "network": "eth", "shortcut": "STORM", @@ -16358,7 +16363,7 @@ "Github": "https://github.com/Storiqa/", "Homepage": "https://storiqa.com" }, - "marketcap_usd": 8365051, + "marketcap_usd": 6446737, "name": "Storiqa", "network": "eth", "shortcut": "STQ", @@ -16441,7 +16446,7 @@ "links": { "Homepage": "https://substratum.net" }, - "marketcap_usd": 17338166, + "marketcap_usd": 18081543, "name": "Substratum", "network": "eth", "shortcut": "SUB", @@ -16771,7 +16776,7 @@ "Github": "https://github.com/TrueFlip", "Homepage": "https://trueflip.io" }, - "marketcap_usd": 1467298, + "marketcap_usd": 1386232, "name": "TrueFlip", "network": "eth", "shortcut": "TFL", @@ -16798,7 +16803,7 @@ "links": { "Homepage": "https://www.thetatoken.org/" }, - "marketcap_usd": 60344803, + "marketcap_usd": 34616262, "name": "Theta Token", "network": "eth", "shortcut": "THETA", @@ -16853,7 +16858,7 @@ "links": { "Homepage": "https://chronobank.io" }, - "marketcap_usd": 1374282, + "marketcap_usd": 1387076, "name": "Chronobank", "network": "eth", "shortcut": "TIME", @@ -16907,7 +16912,7 @@ "links": { "Homepage": "https://www.blocktix.io" }, - "marketcap_usd": 6133162, + "marketcap_usd": 4729159, "name": "Blocktix", "network": "eth", "shortcut": "TIX", @@ -16934,7 +16939,7 @@ "links": { "Homepage": "https://etherscan.io/token/TokenCard" }, - "marketcap_usd": 9110851, + "marketcap_usd": 7041184, "name": "TokenCard", "network": "eth", "shortcut": "TKN", @@ -17132,7 +17137,7 @@ "network": "eth", "shortcut": "TTA", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -17208,7 +17213,7 @@ "links": { "Homepage": "https://taas.fund" }, - "marketcap_usd": 2218809, + "marketcap_usd": 1938236, "name": "Token-as-a-Service", "network": "eth", "shortcut": "TaaS", @@ -17263,7 +17268,7 @@ "links": { "Homepage": "https://uquidcoin.com" }, - "marketcap_usd": 943941, + "marketcap_usd": 942765, "name": "Uquid Coin", "network": "eth", "shortcut": "UQC", @@ -17320,7 +17325,7 @@ "Github": "https://github.com/centrehq/centre-tokens", "Homepage": "https://www.centre.io" }, - "marketcap_usd": 179198775, + "marketcap_usd": 188145986, "name": "USD//Coin", "network": "eth", "shortcut": "USDC", @@ -17352,7 +17357,7 @@ "network": "eth", "shortcut": "USDT", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -17402,7 +17407,7 @@ "Github": "https://github.com/UniversaBlockchain/universa", "Homepage": "https://www.universa.io/" }, - "marketcap_usd": 5785653, + "marketcap_usd": 3743682, "name": "Universa", "network": "eth", "shortcut": "UTN-P", @@ -17513,7 +17518,7 @@ "Github": "https://github.com/blockv", "Homepage": "https://blockv.io" }, - "marketcap_usd": 8226007, + "marketcap_usd": 8651284, "name": "BLOCKv", "network": "eth", "shortcut": "VEE", @@ -17541,7 +17546,7 @@ "Github": "https://github.com/vechain", "Homepage": "https://www.vechain.com" }, - "marketcap_usd": 253356272, + "marketcap_usd": 226986630, "name": "VeChain", "network": "eth", "shortcut": "VEN", @@ -17650,7 +17655,7 @@ "Github": "https://github.com/Viewly/", "Homepage": "https://view.ly/" }, - "marketcap_usd": 171796, + "marketcap_usd": 0, "name": "Viewly", "network": "eth", "shortcut": "VIEW", @@ -17678,7 +17683,7 @@ "Github": "https://github.com/ViceIndustryToken", "Homepage": "https://vicetoken.com/" }, - "marketcap_usd": 978033, + "marketcap_usd": 740349, "name": "Vice Industry Token", "network": "eth", "shortcut": "VIT", @@ -17734,7 +17739,7 @@ "Github": "https://github.com/vetri-global/", "Homepage": "https://vetri.global/" }, - "marketcap_usd": 3082939, + "marketcap_usd": 1290853, "name": "VETRI", "network": "eth", "shortcut": "VLD", @@ -17849,7 +17854,7 @@ "network": "eth", "shortcut": "VUU", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -17900,7 +17905,7 @@ "Github": "https://github.com/waxio", "Homepage": "https://wax.io" }, - "marketcap_usd": 58804330, + "marketcap_usd": 56784653, "name": "WAX", "network": "eth", "shortcut": "WAX", @@ -17982,7 +17987,7 @@ "links": { "Homepage": "https://wepower.network" }, - "marketcap_usd": 7896045, + "marketcap_usd": 6755381, "name": "WePower", "network": "eth", "shortcut": "WCT", @@ -18092,7 +18097,7 @@ "links": { "Homepage": "https://wings.ai" }, - "marketcap_usd": 8076846, + "marketcap_usd": 7054848, "name": "WINGS", "network": "eth", "shortcut": "WINGS", @@ -18285,7 +18290,7 @@ "links": { "Homepage": "https://www.wacoin.io" }, - "marketcap_usd": 7783069, + "marketcap_usd": 6543232, "name": "WaBi", "network": "eth", "shortcut": "WaBi", @@ -18339,7 +18344,7 @@ "links": { "Homepage": "http://www.xaurum.org" }, - "marketcap_usd": 3586961, + "marketcap_usd": 4040704, "name": "Xaurum", "network": "eth", "shortcut": "XAUR", @@ -18367,7 +18372,7 @@ "Github": "https://github.com/blitzpredict", "Homepage": "https://www.blitzpredict.io" }, - "marketcap_usd": 231897, + "marketcap_usd": 200340, "name": "BlitzPredict", "network": "eth", "shortcut": "XBP", @@ -18560,7 +18565,7 @@ "Github": "https://github.com/InkProtocol/", "Homepage": "https://paywithink.com" }, - "marketcap_usd": 1774721, + "marketcap_usd": 1271482, "name": "Ink Protocol", "network": "eth", "shortcut": "XNK", @@ -18587,7 +18592,7 @@ "links": { "Homepage": "https://xenon.network" }, - "marketcap_usd": 691696, + "marketcap_usd": 550159, "name": "XENON", "network": "eth", "shortcut": "XNN", @@ -18724,7 +18729,7 @@ "Github": "https://github.com/zapproject", "Homepage": "https://zap.store" }, - "marketcap_usd": 1036629, + "marketcap_usd": 1091385, "name": "ZAP", "network": "eth", "shortcut": "ZAP", @@ -18751,7 +18756,7 @@ "links": { "Homepage": "https://zsc.io/" }, - "marketcap_usd": 1722275, + "marketcap_usd": 1379746, "name": "Zeusshield", "network": "eth", "shortcut": "ZCS", @@ -18779,7 +18784,7 @@ "Github": "https://github.com/zilliqa", "Homepage": "https://www.zilliqa.com/" }, - "marketcap_usd": 131035965, + "marketcap_usd": 115626100, "name": "Zilliqa", "network": "eth", "shortcut": "ZIL", @@ -18806,7 +18811,7 @@ "links": { "Homepage": "https://www.zmine.com" }, - "marketcap_usd": 1839888, + "marketcap_usd": 1553644, "name": "ZMINE", "network": "eth", "shortcut": "ZMN", @@ -18835,12 +18840,12 @@ "Github": "https://github.com/0xProject", "Homepage": "https://0xproject.com" }, - "marketcap_usd": 213075265, + "marketcap_usd": 189202285, "name": "0x Project", "network": "eth", "shortcut": "ZRX", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -18890,7 +18895,7 @@ "Github": "https://github.com/carVertical", "Homepage": "https://www.carvertical.com" }, - "marketcap_usd": 2497276, + "marketcap_usd": 2130570, "name": "carVertical", "network": "eth", "shortcut": "cV", @@ -19028,7 +19033,7 @@ "Github": "https://github.com/eosdac", "Homepage": "https://eosdac.io/" }, - "marketcap_usd": 5311368, + "marketcap_usd": 3624465, "name": "eosDAC", "network": "eth", "shortcut": "eosDAC", @@ -19056,7 +19061,7 @@ "Github": "https://github.com/havven/havven", "Homepage": "https://www.havven.io" }, - "marketcap_usd": 1424635, + "marketcap_usd": 0, "name": "Havven-Backed USD Nomins (nUSD)", "network": "eth", "shortcut": "nUSD", @@ -19134,7 +19139,7 @@ "links": { "Homepage": "https://www.qwark.io" }, - "marketcap_usd": 1195067, + "marketcap_usd": 985450, "name": "QWARK", "network": "ubq", "shortcut": "QWARK", @@ -19179,7 +19184,7 @@ "links": { "Homepage": "https://akroma.io" }, - "marketcap_usd": 508970, + "marketcap_usd": 439260, "name": "Akroma", "shortcut": "AKA", "t1_enabled": "yes", @@ -19200,7 +19205,7 @@ "links": { "Homepage": "https://atheios.com" }, - "marketcap_usd": 65481, + "marketcap_usd": 38789, "name": "Atheios", "shortcut": "ATH", "t1_enabled": "yes", @@ -19222,7 +19227,7 @@ "links": { "Homepage": "https://callisto.network" }, - "marketcap_usd": 3601861, + "marketcap_usd": 2792802, "name": "Callisto", "shortcut": "CLO", "t1_enabled": "yes", @@ -19243,7 +19248,7 @@ "links": { "Homepage": "https://egem.io" }, - "marketcap_usd": 199285, + "marketcap_usd": 255267, "name": "EtherGem", "shortcut": "EGEM", "t1_enabled": "yes", @@ -19264,7 +19269,7 @@ "links": { "Homepage": "https://ellaism.org" }, - "marketcap_usd": 162360, + "marketcap_usd": 141109, "name": "Ellaism", "shortcut": "ELLA", "t1_enabled": "yes", @@ -19307,7 +19312,7 @@ "links": { "Homepage": "https://ethersocial.org" }, - "marketcap_usd": 1443249, + "marketcap_usd": 1398154, "name": "Ethersocial Network", "shortcut": "ESN", "t1_enabled": "yes", @@ -19328,7 +19333,7 @@ "links": { "Homepage": "https://ethereumclassic.github.io" }, - "marketcap_usd": 495212295, + "marketcap_usd": 446594661, "name": "Ethereum Classic", "shortcut": "ETC", "t1_enabled": "yes", @@ -19353,7 +19358,7 @@ "links": { "Homepage": "https://www.ethereum.org" }, - "marketcap_usd": 11637678470, + "marketcap_usd": 10071896175, "name": "Ethereum", "shortcut": "ETH", "t1_enabled": "yes", @@ -19378,7 +19383,7 @@ "links": { "Homepage": "https://ether1.org" }, - "marketcap_usd": 249585, + "marketcap_usd": 226681, "name": "Ether-1", "shortcut": "ETHO", "t1_enabled": "yes", @@ -19420,7 +19425,7 @@ "links": { "Homepage": "https://expanse.tech" }, - "marketcap_usd": 1041186, + "marketcap_usd": 1102357, "name": "Expanse", "shortcut": "EXP", "t1_enabled": "yes", @@ -19441,7 +19446,7 @@ "links": { "Homepage": "https://gochain.io" }, - "marketcap_usd": 22164469, + "marketcap_usd": 17207137, "name": "GoChain", "shortcut": "GO", "t1_enabled": "yes", @@ -19466,7 +19471,7 @@ "name": "Mix", "shortcut": "MIX", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "coin", "wallet": [ { @@ -19483,7 +19488,7 @@ "links": { "Homepage": "https://musicoin.org" }, - "marketcap_usd": 1763036, + "marketcap_usd": 1567748, "name": "Musicoin", "shortcut": "MUSIC", "t1_enabled": "yes", @@ -19504,7 +19509,7 @@ "links": { "Homepage": "https://pirl.io" }, - "marketcap_usd": 1210662, + "marketcap_usd": 1064914, "name": "Pirl", "shortcut": "PIRL", "t1_enabled": "yes", @@ -19546,7 +19551,7 @@ "links": { "Homepage": "https://ubiqsmart.com" }, - "marketcap_usd": 11641739, + "marketcap_usd": 11022660, "name": "Ubiq", "shortcut": "UBQ", "t1_enabled": "yes", @@ -19568,7 +19573,7 @@ "Github": "https://github.com/input-output-hk/cardano-sl", "Homepage": "https://www.cardano.org" }, - "marketcap_usd": 980604655, + "marketcap_usd": 829562278, "name": "Cardano", "shortcut": "ADA", "t1_enabled": "no", @@ -19586,7 +19591,7 @@ "Github": "https://github.com/EOSIO/eos", "Homepage": "https://eos.io" }, - "marketcap_usd": 2559342792, + "marketcap_usd": 1876611746, "name": "EOS", "shortcut": "EOS", "t1_enabled": "no", @@ -19599,7 +19604,7 @@ "Github": "https://github.com/LiskHQ/lisk", "Homepage": "https://lisk.io/" }, - "marketcap_usd": 154160385, + "marketcap_usd": 146420547, "name": "Lisk", "shortcut": "LSK", "t1_enabled": "yes", @@ -19612,11 +19617,11 @@ "Github": "https://github.com/maidsafe", "Homepage": "https://maidsafe.net" }, - "marketcap_usd": 72709296, + "marketcap_usd": 71134225, "name": "MaidSafeCoin", "shortcut": "MAID", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "coin", "wallet": [] }, @@ -19625,11 +19630,11 @@ "Github": "https://github.com/OmniLayer", "Homepage": "https://www.omnilayer.org" }, - "marketcap_usd": 1492406, + "marketcap_usd": 1324438, "name": "Omni", "shortcut": "OMNI", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "coin", "wallet": [] }, @@ -19638,7 +19643,7 @@ "Github": "https://github.com/ontio/ontology", "Homepage": "https://ont.io" }, - "marketcap_usd": 217745658, + "marketcap_usd": 170414205, "name": "Ontology", "shortcut": "ONT", "t1_enabled": "no", @@ -19651,7 +19656,7 @@ "Github": "https://github.com/tronprotocol/java-tron", "Homepage": "https://tron.network" }, - "marketcap_usd": 903827884, + "marketcap_usd": 911154632, "name": "Tron", "shortcut": "TRX", "t1_enabled": "no", @@ -19663,11 +19668,11 @@ "links": { "Homepage": "https://tether.to" }, - "marketcap_usd": 1848585371, + "marketcap_usd": 1884928041, "name": "Tether", "shortcut": "USDT", "t1_enabled": "soon", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "coin", "wallet": [] }, @@ -19676,7 +19681,7 @@ "Github": "https://github.com/wanchain/go-wanchain", "Homepage": "https://wanchain.org" }, - "marketcap_usd": 40973155, + "marketcap_usd": 37748114, "name": "Wanchain", "shortcut": "WAN", "t1_enabled": "yes", @@ -19689,7 +19694,7 @@ "Github": "https://github.com/stellar/stellar-core", "Homepage": "https://www.stellar.org" }, - "marketcap_usd": 2962223596, + "marketcap_usd": 2402428086, "name": "Stellar", "shortcut": "XLM", "t1_enabled": "yes", @@ -19707,7 +19712,7 @@ "Github": "https://github.com/monero-project/monero", "Homepage": "https://getmonero.org" }, - "marketcap_usd": 943937403, + "marketcap_usd": 811434639, "name": "Monero", "shortcut": "XMR", "t1_enabled": "no", @@ -19720,7 +19725,7 @@ "Github": "https://github.com/ripple/rippled", "Homepage": "https://ripple.com" }, - "marketcap_usd": 14406675545, + "marketcap_usd": 12984342755, "name": "Ripple", "shortcut": "XRP", "t1_enabled": "no", @@ -19733,7 +19738,7 @@ "Github": "https://github.com/tezos/tezos", "Homepage": "https://tezos.com" }, - "marketcap_usd": 293389849, + "marketcap_usd": 249024201, "name": "Tezos", "shortcut": "XTZ", "t1_enabled": "no", @@ -19767,7 +19772,7 @@ "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 2484102, + "marketcap_usd": 2296914, "name": "DIMCOIN", "shortcut": "DIM", "t1_enabled": "yes", @@ -19785,7 +19790,7 @@ "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 2484102, + "marketcap_usd": 2296914, "name": "DIM TOKEN", "shortcut": "DIMTOK", "t1_enabled": "yes", @@ -19836,7 +19841,7 @@ "links": { "Homepage": "https://nem.io" }, - "marketcap_usd": 649342137, + "marketcap_usd": 678778409, "name": "NEM", "shortcut": "XEM", "t1_enabled": "yes", @@ -19851,12 +19856,12 @@ } }, "info": { - "marketcap_supported": "86.53 %", - "marketcap_usd": 112289040842, + "marketcap_supported": "89.70 %", + "marketcap_usd": 103774348342, "t1_coins": 687, - "t2_coins": 692, - "total_marketcap_usd": 129768515783, - "updated_at": 1543581694, - "updated_at_readable": "Fri Nov 30 13:41:34 2018" + "t2_coins": 746, + "total_marketcap_usd": 115696077884, + "updated_at": 1544379077, + "updated_at_readable": "Sun Dec 9 19:11:17 2018" } } \ No newline at end of file From 29c3c9fd3006be850f51f2da97ca146c7f689214 Mon Sep 17 00:00:00 2001 From: "Robert \"Red\" English" Date: Wed, 12 Dec 2018 05:49:58 -0500 Subject: [PATCH 673/767] Add Florincoin support (#248) --- defs/bitcoin/florincoin.json | 40 +++++++++++++++++++++++++++++++++++ defs/bitcoin/florincoin.png | Bin 0 -> 11994 bytes 2 files changed, 40 insertions(+) create mode 100644 defs/bitcoin/florincoin.json create mode 100755 defs/bitcoin/florincoin.png diff --git a/defs/bitcoin/florincoin.json b/defs/bitcoin/florincoin.json new file mode 100644 index 000000000..734a62fcf --- /dev/null +++ b/defs/bitcoin/florincoin.json @@ -0,0 +1,40 @@ +{ + "coin_name": "Florincoin", + "coin_shortcut": "FLO", + "coin_label": "Flo", + "website": "https://flo.cash", + "github": "https://github.com/floblockchain/flo", + "maintainer": "Robert English ", + "curve_name": "secp256k1", + "address_type": 35, + "address_type_p2sh": 94, + "maxfee_kb": 40000000, + "minfee_kb": 100000, + "signed_message_header": "Florincoin Signed Message:\n", + "hash_genesis_block": "09c7781c9df90708e278c35d38ea5c9041d7ecfcdd1c56ba67274b7cff3e1cea", + "xprv_magic": 15264107, + "xpub_magic": 1526049, + "xpub_magic_segwit_p2sh": 28471030, + "xpub_magic_segwit_native": null, + "bech32_prefix": "flo", + "cashaddr_prefix": null, + "slip44": 2, + "segwit": true, + "decred": false, + "fork_id": null, + "force_bip143": false, + "bip115": false, + "default_fee_b": { + "Normal": 1000 + }, + "dust_limit": 546, + "blocktime_seconds": 40, + "uri_prefix": "florincoin", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "https://livenet.flocha.in" + ], + "blockbook": [], + "cooldown": 100 +} diff --git a/defs/bitcoin/florincoin.png b/defs/bitcoin/florincoin.png new file mode 100755 index 0000000000000000000000000000000000000000..bee3dc52cf1f350b93f9d56c35adf782f17b62f5 GIT binary patch literal 11994 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 Date: Thu, 13 Dec 2018 06:44:47 -0500 Subject: [PATCH 674/767] add AXE support (#250) --- defs/bitcoin/axe.json | 38 ++++++++++++++++++++++++++++++++++++++ defs/bitcoin/axe.png | Bin 0 -> 11164 bytes 2 files changed, 38 insertions(+) create mode 100644 defs/bitcoin/axe.json create mode 100644 defs/bitcoin/axe.png diff --git a/defs/bitcoin/axe.json b/defs/bitcoin/axe.json new file mode 100644 index 000000000..69c26c6eb --- /dev/null +++ b/defs/bitcoin/axe.json @@ -0,0 +1,38 @@ +{ + "coin_name": "Axe", + "coin_shortcut": "AXE", + "coin_label": "Axe", + "website": "https://axerunners.com", + "github": "https://github.com/axerunners/axe", + "maintainer": "Kirill Orlov ", + "curve_name": "secp256k1", + "address_type": 55, + "address_type_p2sh": 16, + "maxfee_kb": 100000, + "minfee_kb": 1000, + "signed_message_header": "AxeCoin Signed Message:\n", + "hash_genesis_block": "00000c33631ca6f2f61368991ce2dc03306b5bb50bf7cede5cfbba6db38e52e6", + "xprv_magic": 50221816, + "xpub_magic": 50221772, + "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "slip44": 4242, + "segwit": false, + "decred": false, + "fork_id": null, + "force_bip143": false, + "bip115": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 5460, + "blocktime_seconds": 150, + "uri_prefix": "axe", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [], + "blockbook": [], + "cooldown": 100 +} diff --git a/defs/bitcoin/axe.png b/defs/bitcoin/axe.png new file mode 100644 index 0000000000000000000000000000000000000000..a73e6b96270a0c79497e17b3657b6579c622e46e GIT binary patch literal 11164 zcmY+q1yEc;w=F!lySqzp*MZ=!L4&)ygbB_B50+qqOK=PB&S1e^gS!p^g2T&q@BQ!p z-l^(3y;tvEyH|Hton3u8MoU8x3!NMt003YqE6IKM_qO;?K}7}t;8ODxYyKIC_R{Lo z06<+L#4Q1|;Li*IgoXnEkN=?1BLKjc2LL#+006`w004CkDHH=^PdN&_h&aBOAx1@oIZ|r|9>Pm@BfkYPayYyTDW<+ zc)0(U`(Ib!e^4<^FGt&dk^jRl$qW21&;JMepEyA7{{;WP2J_!a{|o&mRT3S@{lC*D ziLTbq@(}=dSFJ23tqX$N4?+Ry>aD^8#!|-Bm?NeU=t*_8#FWs&ndN)I^pzboT(L(g zc!Z{77eh_erVl=*_xjVmNFSGK@@Hi(JzQ|nrqJ?x z`^TNfQpl-ufe#&KRJ$fG`3H=^cUDZ(*QKs3zIhvo*lmfZbNt6-te*avN2Qkr6t zOU6@Qh}dr3(L0hP^kl2Rxs^`KQ1VG0pW$u>p7xX0+M!^i)6LTgj}s>l>@aSY-*qh= zXMim+(t)cx=$-02e@#sX!yabB8d=K~R|X!>X_xy}$Tm*wQAZQNKxrIAPuPQKCmpA^Zht5&=2_Ge<`I_1&C| z)vDN@-hr-!AX@(>r1t*tTys-Zx&ZU0&U>1H?(sOwz~wzwJa)J!izd_kY+?(b`lt8kQPr+ zR?RRZ@_n>JB7OU;FeBKFL`4+U&dRN|ycAp&cTjNYpJ;s)_#$Oc+-!T0``d>D zImQ=%u||SGX4K28`3dfo8oex7S}HD{+Emuq2mY}{-)1|d_7^3)w&5}%#46CLQI;Fc zvhT5S5*~-Kcly$PfvRl!HrYl%dVd2A7U?BPPo?=Dshz@@!cSrjsO#+V9wqKxqDR5Rnd9k(LyM_45eIAe`3(e6rW-* z1(nHR3oYuUt$WZ#_YvZ@uQ;J%HOE{mtzH$e8*7PCx8>&Z0$0}M;QZXTooF>YN?eNo zqwk4J+PN7|W0h?A_eChwb5G+*T=w+m_IK~4ju zJOU5oJl3u^VC07!vEG~c_Ea@rbCZ^AT%??UZ>Z5~9~*J@ss4CT0xecvLN3*u?~64e1Twhr5PtYItjKfZX3FzJnVCOX#Le2oHcv(vQa zzhfq08uWxDFMKRP>xOHBPrphT`^V#$*7CYo##Nk`P(E{ z0NgbxuRA9rUU76Hp=c^s9!+-XVSP_q;yk@gx9@x_{8DD>@5ib^V&TF+k8hoRgv6Ek z7<8bfsU`n@~+vgee`SP2>V{hj~5r-xK7b zq6Uoc>u;_S%JUOjCZE>8+ zVS`AwfNo+B6`BUcAE^A-@$zu5QkPhw+2v3~jRz|)4~uD80^WnuNI=wJgL6wKL4hW< z0Y+cU*)f6MkQF>PDq{ZE8Gs~b8aC-^`$LzJ5I|K5>t6h!Rkue! z)R=^P(DELI{7`qCn&Gvrh9ib~&1NW^VT9*1+pl__$BJg!5#LY$R&{8~mr)FUxHd+l zFciWRW;Z@2RP%-X>^wzVZ&)1?R^9BUy`-0eOGBf8A76}<*`Y*xcsul2q3IfvBFa^? zGQuXYK-kbPxag+p*HYN^&C_|ti5|hh*ON9PAnRTho`^_nT>r&y6;!xEwgH7Fh}IXm z@BCZC@$9J^uNA0Ul(S~u>`lg-i>&qfbds2eofWz$8pkrf@^JNcnk@>y2N_>%TFOovtlu z8Dy$r+uw0_`fM$eKnJz0%O|M1YbKlPxFC39HSF446Ie47$2wK&m!5I~2dgbs=`Za7 z0bGq!TR*rs*K|q4w!6%MS2BrU>}o%Oq^4Isnean!zQoEM<2B+h+1kKZcv-HNhToO$ zgl2bC?v45m`0Mz=)W_kyzs@LBwhsFnLVuuB;Uq{tFPBpL2bph9hl|KbEvu^SWy21i zE*1OP`@b)B?!@6Bn|%`HcmpOkDYt8YRvILjt1>AC-P@E}$2RPW*1Ua+>*W2E9N$<_ z=Xq@h{f`t)qH=#HQzd^xEy{+qAiG!!?7EM{jL22)5#Ecr)7oUB)DgUS$W#sRocT}P>ab!_m;jqmczYH2y2E|8^3(`{td)+N>Y=09&&=u9TJ)>Ewmg%S3 zzQXDzNHt>uNcs|`+%0*sXO>z3LIG4RIHkUu#TTX(`i$WQ1hynd`7 zzqGQ#?a0RWZi{v>pT-?ERs^|SZTu7`7Jhv%SFxW~%DLl2TwCED-BnBs203 z#We^`n9)hN&v#$l;Y|AUb8OddQu%7Aqf>I?S2?3K`XI|v7 z+a<(Q=6mVkD=0F9HSDuHz$mjQn)n?g-9qkg*pUdVs1W}5bhFS&j_qKi!c)N?u|PvH zd~Mdn+5?0yFEWL%A%#WlB&q%#6~}cXO05H~-AAC0u|r}=PEzds+u}#-)++W!!=73* z1uH(O@Y0e|>$-vaiW*#R49}bLxnYNyS~n1 zEFjNoR)?YdBveaOLJDBLv^4s2alY)X_z?kV^)@ez|H6jv^4PM9PH7uNfpO}-UA z3Kd-O!N_TNvuD(E?{(p?+xVczG29`fl#;~aq?*4k@CtAc4<*8W|13c%{7sr1Z}CNu zg&VA}RC^_!RFsPEMOyTvq{>$L4YLA6t z&1Q&x`zB*kwBNf{V84Kj8}EphIZF`Phl3*JGwmOyIWLyM&Oe3GLGmrhNqn>R)K>vF z1d*ZX13G?mMvLr*;#~fZu6Xe7U#5?#5lyIxlYVqf65{)}j<)Y|pu7exL&|Yr<$mS( z$uJ!u#&z~sB@iBdcNX6f7c&BoFNxnvy!)=7B^Gb~n-?MFIf>LtOG7H*7k5tu+tDvG z_=g@Re^k|#&pM}mnDYD9l@SMlfpRrJ2s|HUe&+jvfBi!37ajK}+lp}@A=wNlh)cqw zpTp5hD2VlWZWt6At_w#y^k_@;AnSNaLT0(dm9FCYfUiOcV4}|Q$Q7o`!^*3T|J^(k zAN0D3=V&s{0uEJQ9a`41vGe&fY-jw#GT!h}DLQ6-3tfr+^Xr?6xb3f=;)6ZVFT(6Z zq4caQ(?2t38V!d6c1WDmnH!xmF?twr0|cxko(51di3F|%h`(`ORn2VVRMCS0JjV!9 zbR88HPI=SZxa%E7NmGc%96U1~rH1#{ad<&tceyXHT`R!EVcL$$Q}uk@<8yFpvtEq< z&M*nJ>QCIHm`>zx^UT70i1x=WM>cuwPf+cyd(vVXt%{UZh(l6Xo5UT*fL!teOa^*h z|H+Ze!@^ZjP+2Xws%i1=I|Sl-JXu55DD~TWgP!RMi7OikB1h3$5ssWu=I42LmAjTk zhV*9h5k?U&0xeMN*Qlyxq+!qh<--I$ zDQ@>`C=Em(+3}sEyQ6f8u6a(S4noLTmnRu<#%S5^GE2E6)c4rwI?Fg7ugk*~E6Wd8 zHc^lI^n=HEW4MgL4gRNlbF)Lq_8#>FUkNiwKhhP`ubAj7=0vAryv_!w3tr7w=aZw& zwmY;4om(EqvKMrH4s}ZUPNVs0a2RSmy2M}VrO@?!B3}IAO-iZ%_rPQJ$9m}x^8RYf zPDBMge;(F3)@PW6V;*YydAOSf;i2!VDK!_RQ? z5~mVurW=oTO8gjt@+_FaB5qi&f94x8Hg4cGt9J+s-~?RmNtrw`nuHkfsFmaS{eW>H zsv_eOAQwr)7c!B(rk%(%7-Voi_G316i#p?1*{1OjllGu-<67~}c;YC*XRqb(#2y0b zSJ$DPB3saeZElek0mW=DI5;mP&SX>O`yo-9YFJ3})Ih7I^-zZwaUa^0KgY0wHqrxA zlweaDGj+qpIJ}xJQHjb2BQZ+JOXSKp)o#?}_mp-5)UVY}L>64B9!dU2lhqr7_^5BsRH1Og<_e)o`JR@49~Yhy!dJ5)A`VkI{HDU7xjUahVXIs%G%cpoRwFOW+9_vc8WU=@UYii9 z!?|z_k6jg`49WJ*%b74tih+4;;(EY?0R`5Pc&}|vqKsKCN|fp=c&fPEpF-fP{DLqw zv0rh4v6?I;bgeU2a?h^DrKpS^fj%!0r1?;&T*1?_i^+&n3Uf**azIXH=ytO<;3>xA zP$3K2p^zAXVH;2J8TU%qwTmAN0@L&XkZ=j)FY@fH5&6C?Pp1`SJMj)+e9r45N=rkP zK;5AIYT>pU8NApRnuZ(BOs5Fltlhsbf)XS_rWdiMQdNIDHh5+{5uMQytZLHDnU|WN z8)K(~!OUE`gcv5+pg;#~kr@c*w?gIOsRXEb&we)qx-<%q$0fjS2_n`XG0;vbI7r(e z_i9~+cc)p$C9Xh^$wDuGz9F^26T9}}6GPB77 zhOO5?Ry(8vpVK&sK(u{@jsOhI6<~+i4uwr9J}v>=PfOxv4Kzn^nq&_rM-;_s>4}2N ztx7CzL>pnsbEx_?Ib&`;6e%5o+u6^-v5Cej-CJJ$6$4HCO9JDj{oJl6p62mxq`Deu z;ECEi)EUBEASNBX<5`Z3VbXC`-WtOK@#L3^iHTv%b7%f_8xK_x*ss|vX1FqNyZ4rX z5^X^KIy-1n? z9vc2sgM6~mreF0PSS7-6W8$m=%`fJt&=#d*^@R?w!vl5Uco8bWQ`qBb8q5J7^eX9)Cf5DFpnMP{s#gYog8w3gH^nnNo z`3e$xx1$aZCd+U6w7C%?1}@N4%%nz>5gDlEm|;;nM-mX`QJ3&Lp*-ZQFzJenKICHj z$mQ=IEfE7-j%`x|Z9k)SDZ%kdb04~deKpqf)0t0fwsvYeAh7|(f`iCmQAFR`H<(gx z8Xigu7>HdNa`$+5Y-aT%B9}h8_Ez2Rg7J_k1PkIF%2zrG#OPKRTjvfN2L1Vw08Rx*caO^~e#<+9_l@wS`?&tY;T z(&RR+eo}5b9sK7{w^1IlUg4&>xgUl^Ys;UAc-Xd(@vsWXw{1pCUFO@O@+ z5hk;ZGZLHED5N_hqi%werpM1NlK9rZLz?i;1JR!ETmyeCnUbOu2(tDj1*ex|8@C>Of{{x8C|W8 z9I5U>NqE6)pE8!8AQ;B%!_xvzoXiRR#(Cy%&~F(r5I;om8h>0KLsi3*+;QhC(H!J; z&tp`{z)NJ0wEpcWS12xfN=FYIw8GYm!Us=(`=ZdA`i^se)WEb zLYM1Ht_QrpRg&q+8=qC*X(D0g?^ljd6Yp54$)**y`qK;-woNG`CT0q^J)gIOmpj1ZWqZ(5%xRp|QlS4#1txJLPf9K7v@8|L9fNqCMRxS}=0*yH zfNl_az19s#1ixJ`cb+Nl>oh8(s8zqQ?@EUkHoT`1p2w3n&t+l8cJ+0Z~in(#BSGM>*ymvEk5639+$ z@Br!h{iW=$@RWWo3Ciqve5paTZdF;K7(ctuEw`+#0<87A6QnjS#@_n=iYMP-dULw&Bk`U(mvPsGObN zOh?9Ik!VJ zP#{L9jL!AxMA^ZF+s6n1ljfE~MI)d|uqUC$Y@hwKg2}Z1t7W$4f{||@Q2_;&ORpE* z^5xM#hQ*LqPzrC)NuYq-Lz@60j+SwM3p|C8t_JM8j0%4}12#VUhmP*6&~mt zC6n0V%eyr#kd7f8m;OoK?H|Zg)K$m0eeLekN&NlwC-vj2L_UtccT~d`Yo(*MAZO$H zNwqy#tZONzc<$#ro2mHg$4&A8!Zizs;&xknqjN#$#CeiJkUt+Bj=ZG!z46~wM!l@y zbJ0)cQ@a6nrk>++_ooe6j+jB}9}rr%ysxJBF9Tj0ecbY7nE5xWk=rOW@+6#CKN+vI zW~rLxM!YB%uud+LIrh>Q@s0}!;ZPkFb)L^ECPE?wG$`NZ{D$^iZl|vhz|s})WY53l zJ64`7rUn8=KrypIsq|dRaNFR#-`<<`!%w+($b_90#9?sH3S^ueRmfQCx!mYclf)`t zSi}vThM&xXQ8PH2)AZTlAD(*lKr!x)e-fT0uzTSr=Qd44RO^fk9YgsK6I4eH59(+w zn_#>62JaqzPkfpYFFj0DFNs!oM{5F0{JYV1miUsu+ZdTqRWWE2Lr_1zP0YvqZTzgW z_TlhF=F*H?$+YIl{lJ3?^e|I&QKi)Qx+4fqzfY?V+H=t%Ik?L)T%mWa5p$ZwUiLjn z+540pCcjvVyHF3`&tCK^NioDPK&AJ|;b%^IRdhHZF4sLvfVRpavoea>A+BOz}T^HQ9lm$h0;w+g7nj3}OD+0+#rjcl}5^>!X)H&yzDW44Dq&!ENl+4}#AxTf2b?omf1&Rsj zo;tDpdAB)P`>2jx#-xiiLrI`2hl$Yp*l$y{NGu@g{rQ*Wa0Z6Q(q0~|sCV=hW_H@I z=Ld)P%-wRrYVFm?6?h`wsWgJ*7;L~)Ow?g4qHR?f3^Wb#mS6{?;~S##4JqE%)WG9c z3P9bp->G$bR zflqbv8W|@}HZd%4^ZO$%BipwFxa+l|MmK_0t5*VzEjMsqm+_s$N5;V%JA>fF?lYqd zt$5nL!+w_F_DWUa2qJPW{_QhU-^#%cG4?DrwlBmAzIiBF8V6s{md+d^%8n^xQXXbT zmXGF4p2kx{1$QFFoaMsdy#`zWn@4wp!^EQr;Ga&qIt1LZMTo+=awAR)VR_)$e*H0fduNXc%AGy{@H!scZfaT@-ByfK} zES%5to<@x2u2+403t2OsKCTS)?OE9L?Q<$C2+HRR{8NZQO@?t^WfcO?v?0T)7ZR@M zW(Z#zD+sIf;T+>0!Y4`k&cQ;FU2#go|LN69j6_m?u`v8@L-jFOgj-p|AIqIdIx<*P z9x$^7Dl61gNUy4kEmA*=u&=w)D6Z#aKzJSDBI)a0*BcP53l0dy8FB+s6pTmhtnZUeVr zvEg7C6G-4uPbs|px2x|UoMe$BLbCbd_ERRK1p#%~s-Y+D0Txvv@+wt9|1L5a&R-98 zCK*{PM_)`<5C!^1)81qb&OAE^TilJ#Oa3{ackTLnoue0<+p0{_v**B;62WZ-Gr$ZH z{wvN;cpYU79;WSF+uL*d?b?x&EyyJYFk1p0GK`K+Ziu9esky*$$qK40Q1RrqpuALTVzRkKzrq8%G{*HsX<0VEFA6Qy9TDBi+C=UDR zlBtCUryI`oT+%ZSma~$QCV3$A*p}|#5+Zmdk@-P9(@IGWLvnHYj!9Hue|1zH;)LJl z9j;yiz)oVPci)=xKKH_3MCBGzpMNj#d1hW)D2Qq|`$!Uf!>UYo{i}EL`?VtQp<$*8 z93_tdG)-Dl!X-K0U7&?tWTWIN18iTa1G6kAJl#)yY7RVl>PpMw$Rg1vKgn&N+uDCvsybZZY4Ep`|K}Ak-~&Ds>i6 zcvL_OC*TbEDFbQ1=>VKM^h#45+41+Lh4%?;m)Ps2i|okrWM3mC%r+F>rs`LM?JZY z5N$BD%db@?@>HfO*chUDglfL=fZ4mu*;`F;yQw$l<0%CDeQKi$7M}YXm^|przc8+k z-5LsjZcfsY!2CGvXWQQ)6?qQy(gSOD#cT_2QCwLY1Cmy)Kp=ObPzWoR&X}^~TaYyb9GnZl$7Rw2 zTY3KR=mFGXPsCg{I(c2hXHAptxp%|}}ujg29pF)WKiG4&z(u8-yRz%!c zq%`z+*v93m?Ml5Pxalj_2I?rOB8aING3QU*=CQGD4@u`(Hm;y^ypyw5$VJ!UY)W2jZI2sA0%{Qw|&jyMz7f>||feG%94v_$)m1>;6D9GrD&TDFK7 zM%#4XzzCXM1urFzjccb6Q28{TxO^6EyjZ}yaL+;8sPF=QTL;g85-M(q=*baBB6`A> z)i)A{?J6%jY5)i*%E=CulU4)b3bTCiX%XVxh3L#-C?sym5Gst0!ZEquUJu0 zm+kbhRfqBqx9?}123W9!)VF=Y^S%4h_t(jpKw;P%;j@C97}VqgS(#m&9lhqC4x|sg z_os!J)LXJqSxDa%AidwoQt+~Xe6I+3|Kcm`CBa5W7+3VZ=Lth)T6hlI&J22Z~bu^zx5ryc?j@>7*Yqyh! z)^X)ECFAlPra4}A_$p6Hhuv-6$p(Le(OD(kf83SGHQgjIeBTBe_d1lWdy78j|zzF(AxA-L+XzPHIpX$O%#i(}E#v0IUbAQgR5_fP(ZQD%R*5L+&sK zqZr19;G3nc?ItO1{cN;9ZFWj{)DxXdXhhpHL}6)1q~`3hpaX@@WRN@%5pSfEOmg#) zCP~9RR0xzUi4~P2@(e9e5YTm6E$mKc;6MlXI}nb zIXk~pAU|pcds5MsXmnZdK}Svg#sv~aH%p1g-@3Yd?tjw@b@-{1yB!O2D&e&IcyU>& zFDEb;|1`v`=nKYMyZ_!OT^sy>`TTyBur~oCh+jz1f>p84&oBF{Dr`m|pZ2JGsFyC_ zfJ1x{mBp;{pby=Yo)qe}BzojKcbYU9+iM($@;lyD8zsJjlYyK&n4Ov9%8U?*J$gb2 zoH8hd2fP z5Fh?5ZH*kiY^^*4NjWoAQ2HEUr-#*3 zcPYRG>VhaM=JL{`-}Q23;gkw>q5X;BPDwk!q+DnvX})fw=?$E(Q}C&&vlNs}xgg3{ z#Yay*<4=ZP4bgMdh<}Bv+0Aj5(-}?A7hT#(9b0DHt~W!_z^jAqa;gp%GBR@f%euDr z9h?$mGM0XJVCy20$Sef4CPz`l9+Z}A?0s<-THce|qKzK4mUg@oFnP9U^^$*es-+nJ z>biknP(Afx!Bv60y%Ph;{Dw6=mm-Olx0Q3P%c-W94UXu`=1SABdgxJbq&@|yJ6)5O z7)A(WMdz`a`D_s4*{_XQBVk{OE1xbk6^3-vL9hgcQTAJ{|DJS__@(_{lXEiuV{qOa zc?l$4ws7ia^~MA#mxZbMTL)5FuwJp4(`zneSayN}dnf{`0ixNo7gbT|uEcJ?O@`Drly@)h%}dF0VyVt8{&NRbSzbe~M#cjCe*os2_=W%g literal 0 HcmV?d00001 From 6708499b1542b2b410a0f472b90a3ee6b53d958b Mon Sep 17 00:00:00 2001 From: -k Date: Thu, 13 Dec 2018 11:54:24 -0500 Subject: [PATCH 675/767] include AXE in the firmware (#252) --- defs/support.json | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/defs/support.json b/defs/support.json index cdc93e249..d8e3252fa 100644 --- a/defs/support.json +++ b/defs/support.json @@ -1,6 +1,7 @@ { "connect": { "supported": { + "bitcoin:AXE": true, "bitcoin:BCH": true, "bitcoin:BTC": true, "bitcoin:BTG": true, @@ -31,9 +32,9 @@ "eth:UBQ": true, "eth:tETC": true, "eth:tKOV": true, + "eth:tRBTC": true, "eth:tRIN": true, "eth:tROP": true, - "eth:tRBTC": true, "misc:ADA": true, "misc:LSK": true, "misc:XLM": true, @@ -51,6 +52,7 @@ "trezor1": { "supported": { "bitcoin:ACM": "1.7.2", + "bitcoin:AXE": "1.7.3", "bitcoin:BCH": "1.6.2", "bitcoin:BITC": "1.7.2", "bitcoin:BSD": "1.7.2", @@ -787,9 +789,9 @@ "eth:UBQ": "1.6.2", "eth:tETC": "1.6.2", "eth:tKOV": "1.6.2", + "eth:tRBTC": "1.6.2", "eth:tRIN": "1.6.2", "eth:tROP": "1.6.2", - "eth:tRBTC": "1.6.2", "misc:LSK": "1.7.1", "misc:MAID": "1.7.2", "misc:OMNI": "1.7.2", @@ -956,6 +958,7 @@ "trezor2": { "supported": { "bitcoin:ACM": "2.0.10", + "bitcoin:AXE": "2.0.11", "bitcoin:BCH": "2.0.7", "bitcoin:BITC": "2.0.10", "bitcoin:BSD": "2.0.10", @@ -2069,9 +2072,9 @@ "eth:UBQ": "2.0.7", "eth:tETC": "2.0.7", "eth:tKOV": "2.0.7", + "eth:tRBTC": "2.0.7", "eth:tRIN": "2.0.7", "eth:tROP": "2.0.7", - "eth:tRBTC": "2.0.7", "misc:ADA": "2.0.8", "misc:EOS": "soon", "misc:LSK": "2.0.7", From b7b1f546426a65f560100f4eb01cdf64c7364c01 Mon Sep 17 00:00:00 2001 From: Dragos Badea Date: Sun, 16 Dec 2018 20:43:36 +0200 Subject: [PATCH 676/767] Added Gincoin support (#253) --- defs/bitcoin/gincoin.json | 40 ++++++++++++++++++++++++++++++++++++++ defs/bitcoin/gincoin.png | Bin 0 -> 8976 bytes 2 files changed, 40 insertions(+) create mode 100644 defs/bitcoin/gincoin.json create mode 100644 defs/bitcoin/gincoin.png diff --git a/defs/bitcoin/gincoin.json b/defs/bitcoin/gincoin.json new file mode 100644 index 000000000..5c25cf528 --- /dev/null +++ b/defs/bitcoin/gincoin.json @@ -0,0 +1,40 @@ +{ + "coin_name": "Gincoin", + "coin_shortcut": "GIN", + "coin_label": "GIN", + "website": "https://gincoin.io", + "github": "https://github.com/gincoin-dev/gincoin-core", + "maintainer": "Dragos Badea ", + "curve_name": "secp256k1", + "address_type": 38, + "address_type_p2sh": 10, + "maxfee_kb": 100000, + "minfee_kb": 1000, + "signed_message_header": "DarkCoin Signed Message:\n", + "hash_genesis_block": "00000cd6bde619b2c3b23ad2e384328a450a37fa28731debf748c3b17f91f97d", + "xprv_magic": 50221816, + "xpub_magic": 50221772, + "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "slip44": 5, + "segwit": false, + "decred": false, + "fork_id": null, + "force_bip143": false, + "bip115": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 5460, + "blocktime_seconds": 120, + "uri_prefix": "gincoin", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [], + "blockbook": [ + "https://blockbook.gincoin.io" + ], + "cooldown": 100 +} diff --git a/defs/bitcoin/gincoin.png b/defs/bitcoin/gincoin.png new file mode 100644 index 0000000000000000000000000000000000000000..8aa1a30c02f21879869293500b1f0cb202683990 GIT binary patch literal 8976 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 literal 0 HcmV?d00001 From 7edcd671df137fc8e59938e97ea4d5c4c78d10ea Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 17 Dec 2018 17:54:15 +0100 Subject: [PATCH 677/767] support: add new coins/eth networks --- defs/support.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/defs/support.json b/defs/support.json index d8e3252fa..2182a19fc 100644 --- a/defs/support.json +++ b/defs/support.json @@ -29,6 +29,7 @@ "eth:MUSIC": true, "eth:PIRL": true, "eth:RBTC": true, + "eth:REOSC": true, "eth:UBQ": true, "eth:tETC": true, "eth:tKOV": true, @@ -69,14 +70,17 @@ "bitcoin:DOGE": "1.5.2", "bitcoin:FJC": "1.6.1", "bitcoin:FLASH": "1.7.1", + "bitcoin:FLO": "1.7.2", "bitcoin:FTC": "1.7.1", "bitcoin:GAME": "1.7.1", + "bitcoin:GIN": "1.7.2", "bitcoin:GRS": "1.6.2", "bitcoin:KOTO": "1.7.1", "bitcoin:LTC": "1.5.2", "bitcoin:MEC": "1.7.2", "bitcoin:MONA": "1.6.0", "bitcoin:MUE": "1.7.1", + "bitcoin:NIX": "1.7.2", "bitcoin:NMC": "1.5.2", "bitcoin:PTC": "1.7.1", "bitcoin:RVN": "1.7.2", @@ -786,6 +790,7 @@ "eth:MUSIC": "1.6.3", "eth:PIRL": "1.6.3", "eth:RBTC": "1.6.2", + "eth:REOSC": "1.7.2", "eth:UBQ": "1.6.2", "eth:tETC": "1.6.2", "eth:tKOV": "1.6.2", @@ -975,14 +980,17 @@ "bitcoin:DOGE": "2.0.5", "bitcoin:FJC": "2.0.5", "bitcoin:FLASH": "2.0.8", + "bitcoin:FLO": "2.0.11", "bitcoin:FTC": "2.0.8", "bitcoin:GAME": "2.0.8", + "bitcoin:GIN": "2.0.11", "bitcoin:GRS": "2.0.8", "bitcoin:KOTO": "2.0.8", "bitcoin:LTC": "2.0.5", "bitcoin:MEC": "2.0.10", "bitcoin:MONA": "2.0.5", "bitcoin:MUE": "2.0.8", + "bitcoin:NIX": "2.0.11", "bitcoin:NMC": "2.0.5", "bitcoin:PTC": "2.0.8", "bitcoin:RVN": "2.0.10", @@ -2069,6 +2077,7 @@ "eth:MUSIC": "2.0.8", "eth:PIRL": "2.0.8", "eth:RBTC": "2.0.7", + "eth:REOSC": "2.0.11", "eth:UBQ": "2.0.7", "eth:tETC": "2.0.7", "eth:tKOV": "2.0.7", From 5f24bc927f375100b4cdc9633a7fd1129c8698f6 Mon Sep 17 00:00:00 2001 From: Dragos Badea Date: Tue, 18 Dec 2018 00:03:03 +0200 Subject: [PATCH 678/767] Added correct BIP44 type for Gincoin (#254) --- defs/bitcoin/gincoin.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/defs/bitcoin/gincoin.json b/defs/bitcoin/gincoin.json index 5c25cf528..01469ea05 100644 --- a/defs/bitcoin/gincoin.json +++ b/defs/bitcoin/gincoin.json @@ -18,7 +18,7 @@ "xpub_magic_segwit_native": null, "bech32_prefix": null, "cashaddr_prefix": null, - "slip44": 5, + "slip44": 2000, "segwit": false, "decred": false, "fork_id": null, From 5b31341c6d8bfe2d025ffc3d51607a50fe5610c0 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 17 Dec 2018 23:11:30 +0100 Subject: [PATCH 679/767] tools/cointool: collisions in SLIP44 should be fatal (if not testnet) --- tools/cointool.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tools/cointool.py b/tools/cointool.py index 28702a59a..0b8d71fc4 100755 --- a/tools/cointool.py +++ b/tools/cointool.py @@ -210,7 +210,7 @@ def check_btc(coins): coin_strings.append(prefix + hl) return ", ".join(coin_strings) - def print_collision_buckets(buckets, prefix, maxlevel=logging.ERROR): + def print_collision_buckets(buckets, prefix, maxlevel=logging.ERROR, strict=False): """Intelligently print collision buckets. For each bucket, if there are any collision with a mainnet, print it. @@ -233,7 +233,7 @@ def check_btc(coins): supported_networks = [c for c in bucket if not c.get("unsupported")] if len(mainnets) > 1: - if have_bitcoin and len(supported_networks) > 1: + if (have_bitcoin or strict) and len(supported_networks) > 1: # ANY collision with Bitcoin is bad level = maxlevel failed = True @@ -243,14 +243,14 @@ def check_btc(coins): else: # collision between some unsupported networks is OK level = logging.INFO - print_log(level, "prefix {}:".format(key), collision_str(bucket)) + print_log(level, "{} {}:".format(prefix, key), collision_str(bucket)) return failed # slip44 collisions - print("Checking SLIP44 prefix collisions...") + print("Checking SLIP44 values collisions...") slip44 = find_collisions(coins, "slip44") - if print_collision_buckets(slip44, "key"): + if print_collision_buckets(slip44, "value", strict=True): check_passed = False # only check address_type on coins that don't use cashaddr From 482a8e37f0f627bfefc720ed0bd8a8c4a93cdbe3 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 17 Dec 2018 23:14:05 +0100 Subject: [PATCH 680/767] defs: fix sloppy flo submission --- defs/bitcoin/florincoin.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/defs/bitcoin/florincoin.json b/defs/bitcoin/florincoin.json index 734a62fcf..6458916e5 100644 --- a/defs/bitcoin/florincoin.json +++ b/defs/bitcoin/florincoin.json @@ -18,7 +18,7 @@ "xpub_magic_segwit_native": null, "bech32_prefix": "flo", "cashaddr_prefix": null, - "slip44": 2, + "slip44": 216, "segwit": true, "decred": false, "fork_id": null, From 43d718f9d6c8b1000ed64b67f89217a873425ce5 Mon Sep 17 00:00:00 2001 From: Dusan Klinec Date: Tue, 18 Dec 2018 23:10:57 +0100 Subject: [PATCH 681/767] xmr: live refresh and get_tx_key added - get_tx_key supports retrieval of private tx keys - required by users to check the transaction or when resolving disputes with the decipient - get_tx_key supports to return transaction derivations = private tx key * public view key. This enables to compute tx_proof for outgoing transactions which is also a nice tool when resolving disputes, provides better protection as tx private key is hidden. - live refresh enables computation of key images on the fly during the refresh. This helps to completely avoid key image sync and enables to use the Trezor with untrusted node. --- protob/messages-monero.proto | 82 ++++++++++++++++++++++++++++++++++++ protob/messages.proto | 8 ++++ 2 files changed, 90 insertions(+) diff --git a/protob/messages-monero.proto b/protob/messages-monero.proto index 2f5b812c5..76f069801 100644 --- a/protob/messages-monero.proto +++ b/protob/messages-monero.proto @@ -385,6 +385,88 @@ message MoneroKeyImageSyncFinalAck { optional bytes enc_key = 1; } +/** + * Request: Decrypt tx private keys blob + * @next MoneroGetTxKeyAck + */ +message MoneroGetTxKeyRequest { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional uint32 network_type = 2; // Main-net / testnet / stagenet + + optional bytes salt1 = 3; + optional bytes salt2 = 4; + optional bytes tx_enc_keys = 5; + optional bytes tx_prefix_hash = 6; + optional uint32 reason = 7; // reason to display for user. e.g., tx_proof + optional bytes view_public_key = 8; // addr for derivation +} + +/** + * Response: Response with the re-encrypted private keys and derivations blob under view key + * @end + */ +message MoneroGetTxKeyAck { + optional bytes salt = 1; + optional bytes tx_keys = 2; + optional bytes tx_derivations = 3; +} + +/** + * Request: Starts live refresh flow. Asks user permission, switches state + * @next MoneroLiveRefreshStartAck + */ +message MoneroLiveRefreshStartRequest { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional uint32 network_type = 2; // Main-net / testnet / stagenet +} + +/** + * Response after user gave permission + * @next MoneroLiveRefreshStepRequest + * @next MoneroLiveRefreshFinalRequest + */ +message MoneroLiveRefreshStartAck { + +} + +/** + * Request: Request to compute a single key image during live sync + * @next MoneroLiveRefreshStepAck + */ +message MoneroLiveRefreshStepRequest { + optional bytes out_key = 1; + optional bytes recv_deriv = 2; + optional uint64 real_out_idx = 3; + optional uint32 sub_addr_major = 4; + optional uint32 sub_addr_minor = 5; +} + +/** + * Response: Response with the encrypted key image + signature + * @next MoneroLiveRefreshStepRequest + * @next MoneroLiveRefreshFinishedRequest + */ +message MoneroLiveRefreshStepAck { + optional bytes salt = 1; + optional bytes key_image = 2; +} + +/** + * Request: Request terminating live refresh mode. + * @next MoneroLiveRefreshFinishedAck + */ +message MoneroLiveRefreshFinalRequest { + +} + +/** + * Response: Response on termination of live refresh mode. + * @end + */ +message MoneroLiveRefreshFinalAck { + +} + /** * Request: Universal Monero protocol implementation diagnosis request. * @start diff --git a/protob/messages.proto b/protob/messages.proto index bb838bcf2..f62d02352 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -229,4 +229,12 @@ enum MessageType { MessageType_MoneroWatchKey = 543 [(wire_out) = true]; MessageType_DebugMoneroDiagRequest = 546 [(wire_in) = true]; MessageType_DebugMoneroDiagAck = 547 [(wire_out) = true]; + MessageType_MoneroGetTxKeyRequest = 550 [(wire_in) = true]; + MessageType_MoneroGetTxKeyAck = 551 [(wire_out) = true]; + MessageType_MoneroLiveRefreshStartRequest = 552 [(wire_in) = true]; + MessageType_MoneroLiveRefreshStartAck = 553 [(wire_out) = true]; + MessageType_MoneroLiveRefreshStepRequest = 554 [(wire_in) = true]; + MessageType_MoneroLiveRefreshStepAck = 555 [(wire_out) = true]; + MessageType_MoneroLiveRefreshFinalRequest = 556 [(wire_in) = true]; + MessageType_MoneroLiveRefreshFinalAck = 557 [(wire_out) = true]; } From d247872508f6414ea63086ac7082c3eee2e293e5 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 21 Dec 2018 21:52:00 +0100 Subject: [PATCH 682/767] regenerate defs/coins_details.json --- defs/coins_details.json | 599 ++++++++++++++++++++++------------------ 1 file changed, 336 insertions(+), 263 deletions(-) diff --git a/defs/coins_details.json b/defs/coins_details.json index 15b164884..ee98af5f9 100644 --- a/defs/coins_details.json +++ b/defs/coins_details.json @@ -5,20 +5,33 @@ "Github": "https://github.com/Actinium-project/Actinium", "Homepage": "https://actinium.org" }, - "marketcap_usd": 201344, + "marketcap_usd": 155019, "name": "Actinium", "shortcut": "ACM", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", "wallet": [] }, + "bitcoin:AXE": { + "links": { + "Github": "https://github.com/axerunners/axe", + "Homepage": "https://axerunners.com" + }, + "marketcap_usd": 0, + "name": "Axe", + "shortcut": "AXE", + "t1_enabled": "yes", + "t2_enabled": "soon", + "type": "coin", + "wallet": [] + }, "bitcoin:BCH": { "links": { "Github": "https://github.com/Bitcoin-ABC/bitcoin-abc", "Homepage": "https://www.bitcoincash.org" }, - "marketcap_usd": 1944964734, + "marketcap_usd": 3184003623, "name": "Bitcoin Cash", "shortcut": "BCH", "t1_enabled": "yes", @@ -43,7 +56,7 @@ "marketcap_usd": 0, "name": "BitCash", "shortcut": "BITC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", "wallet": [] @@ -53,10 +66,10 @@ "Github": "https://github.com/LIMXTEC/BitSend", "Homepage": "https://bitsend.info" }, - "marketcap_usd": 1591719, + "marketcap_usd": 1457955, "name": "Bitsend", "shortcut": "BSD", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", "wallet": [] @@ -66,7 +79,7 @@ "Github": "https://github.com/bitcoin/bitcoin", "Homepage": "https://bitcoin.org" }, - "marketcap_usd": 63417834353, + "marketcap_usd": 67135492933, "name": "Bitcoin", "shortcut": "BTC", "t1_enabled": "yes", @@ -88,7 +101,7 @@ "Github": "https://github.com/BTCPrivate/BitcoinPrivate", "Homepage": "https://btcprivate.org" }, - "marketcap_usd": 40473486, + "marketcap_usd": 49884725, "name": "Bitcoin Private", "shortcut": "BTCP", "t1_enabled": "yes", @@ -106,10 +119,10 @@ "Github": "https://github.com/LIMXTEC/Bitcloud", "Homepage": "https://bit-cloud.info" }, - "marketcap_usd": 147616, + "marketcap_usd": 145070, "name": "Bitcloud", "shortcut": "BTDX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", "wallet": [] @@ -119,7 +132,7 @@ "Github": "https://github.com/BTCGPU/BTCGPU", "Homepage": "https://bitcoingold.org" }, - "marketcap_usd": 219616992, + "marketcap_usd": 245023967, "name": "Bitcoin Gold", "shortcut": "BTG", "t1_enabled": "yes", @@ -141,7 +154,7 @@ "Github": "https://github.com/LIMXTEC/BitCore", "Homepage": "https://bitcore.cc" }, - "marketcap_usd": 4773443, + "marketcap_usd": 5176781, "name": "Bitcore", "shortcut": "BTX", "t1_enabled": "yes", @@ -159,7 +172,7 @@ "Github": "https://github.com/Capricoinofficial/Capricoin", "Homepage": "https://capricoin.org" }, - "marketcap_usd": 1189832, + "marketcap_usd": 757856, "name": "Capricoin", "shortcut": "CPC", "t1_enabled": "soon", @@ -172,7 +185,7 @@ "Github": "https://github.com/dashpay/dash", "Homepage": "https://www.dash.org" }, - "marketcap_usd": 640313992, + "marketcap_usd": 727348258, "name": "Dash", "shortcut": "DASH", "t1_enabled": "yes", @@ -194,7 +207,7 @@ "Github": "https://github.com/decred/dcrd", "Homepage": "https://www.decred.org" }, - "marketcap_usd": 158994844, + "marketcap_usd": 163625344, "name": "Decred", "shortcut": "DCR", "t1_enabled": "yes", @@ -207,7 +220,7 @@ "Github": "https://github.com/digibyte/digibyte", "Homepage": "https://digibyte.io" }, - "marketcap_usd": 115210383, + "marketcap_usd": 117600307, "name": "DigiByte", "shortcut": "DGB", "t1_enabled": "yes", @@ -221,7 +234,7 @@ "Github": "https://github.com/carsenk/denarius", "Homepage": "https://denarius.io" }, - "marketcap_usd": 494395, + "marketcap_usd": 573486, "name": "Denarius", "shortcut": "DNR", "t1_enabled": "yes", @@ -234,7 +247,7 @@ "Github": "https://github.com/dogecoin/dogecoin", "Homepage": "https://dogecoin.com" }, - "marketcap_usd": 248111682, + "marketcap_usd": 297196306, "name": "Dogecoin", "shortcut": "DOGE", "t1_enabled": "yes", @@ -252,7 +265,7 @@ "Github": "https://github.com/fujicoin/fujicoin", "Homepage": "https://fujicoin.org" }, - "marketcap_usd": 250402, + "marketcap_usd": 205530, "name": "Fujicoin", "shortcut": "FJC", "t1_enabled": "yes", @@ -270,7 +283,7 @@ "Github": "https://github.com/flash-coin", "Homepage": "https://www.flashcoin.io" }, - "marketcap_usd": 4874540, + "marketcap_usd": 3879737, "name": "Flashcoin", "shortcut": "FLASH", "t1_enabled": "yes", @@ -278,12 +291,25 @@ "type": "coin", "wallet": [] }, + "bitcoin:FLO": { + "links": { + "Github": "https://github.com/floblockchain/flo", + "Homepage": "https://flo.cash" + }, + "marketcap_usd": 5871789, + "name": "Flo", + "shortcut": "FLO", + "t1_enabled": "yes", + "t2_enabled": "soon", + "type": "coin", + "wallet": [] + }, "bitcoin:FTC": { "links": { "Github": "https://github.com/FeatherCoin/Feathercoin", "Homepage": "https://feathercoin.com" }, - "marketcap_usd": 4043569, + "marketcap_usd": 4143153, "name": "Feathercoin", "shortcut": "FTC", "t1_enabled": "yes", @@ -301,7 +327,7 @@ "Github": "https://github.com/gamecredits-project/gamecredits", "Homepage": "https://gamecredits.org" }, - "marketcap_usd": 4721215, + "marketcap_usd": 6169040, "name": "GameCredits", "shortcut": "GAME", "t1_enabled": "yes", @@ -314,12 +340,25 @@ } ] }, + "bitcoin:GIN": { + "links": { + "Github": "https://github.com/gincoin-dev/gincoin-core", + "Homepage": "https://gincoin.io" + }, + "marketcap_usd": 0, + "name": "GIN", + "shortcut": "GIN", + "t1_enabled": "yes", + "t2_enabled": "soon", + "type": "coin", + "wallet": [] + }, "bitcoin:GRS": { "links": { "Github": "https://github.com/Groestlcoin/groestlcoin", "Homepage": "https://www.groestlcoin.org" }, - "marketcap_usd": 17200884, + "marketcap_usd": 17401135, "name": "Groestlcoin", "shortcut": "GRS", "t1_enabled": "yes", @@ -355,7 +394,7 @@ "Github": "https://github.com/litecoin-project/litecoin", "Homepage": "https://litecoin.org" }, - "marketcap_usd": 1583252153, + "marketcap_usd": 1820036175, "name": "Litecoin", "shortcut": "LTC", "t1_enabled": "yes", @@ -377,10 +416,10 @@ "Github": "https://github.com/LIMXTEC/Megacoin", "Homepage": "https://www.megacoin.eu" }, - "marketcap_usd": 102971, + "marketcap_usd": 57971, "name": "Megacoin", "shortcut": "MEC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", "wallet": [] @@ -390,7 +429,7 @@ "Github": "https://github.com/monacoinproject/monacoin", "Homepage": "https://monacoin.org" }, - "marketcap_usd": 32767939, + "marketcap_usd": 44325120, "name": "Monacoin", "shortcut": "MONA", "t1_enabled": "yes", @@ -408,7 +447,7 @@ "Github": "https://github.com/muecoin/MUECore", "Homepage": "https://www.monetaryunit.org" }, - "marketcap_usd": 2702869, + "marketcap_usd": 3321959, "name": "MonetaryUnit", "shortcut": "MUE", "t1_enabled": "yes", @@ -416,12 +455,25 @@ "type": "coin", "wallet": [] }, + "bitcoin:NIX": { + "links": { + "Github": "https://github.com/nixplatform/nixcore", + "Homepage": "https://nixplatform.io" + }, + "marketcap_usd": 6163333, + "name": "Nix", + "shortcut": "NIX", + "t1_enabled": "yes", + "t2_enabled": "soon", + "type": "coin", + "wallet": [] + }, "bitcoin:NMC": { "links": { "Github": "https://github.com/namecoin/namecoin-core", "Homepage": "https://namecoin.org" }, - "marketcap_usd": 7202293, + "marketcap_usd": 8863537, "name": "Namecoin", "shortcut": "NMC", "t1_enabled": "yes", @@ -443,7 +495,7 @@ "Github": "https://github.com/FundacionPesetacoin/PesetacoinCore", "Homepage": "https://pesetacoin.info" }, - "marketcap_usd": 384100, + "marketcap_usd": 462761, "name": "Pesetacoin", "shortcut": "PTC", "t1_enabled": "yes", @@ -456,10 +508,10 @@ "Github": "https://github.com/RavenProject/Ravencoin", "Homepage": "https://ravencoin.org" }, - "marketcap_usd": 36450721, + "marketcap_usd": 36951975, "name": "Ravencoin", "shortcut": "RVN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", "wallet": [] @@ -469,7 +521,7 @@ "Github": "https://github.com/SmartCash/Core-Smart", "Homepage": "https://smarcash.cc" }, - "marketcap_usd": 18347854, + "marketcap_usd": 16975398, "name": "SmartCash", "shortcut": "SMART", "t1_enabled": "yes", @@ -482,7 +534,7 @@ "Github": "https://github.com/viacoin", "Homepage": "https://viacoin.org" }, - "marketcap_usd": 6930457, + "marketcap_usd": 7392920, "name": "Viacoin", "shortcut": "VIA", "t1_enabled": "yes", @@ -500,7 +552,7 @@ "Github": "https://github.com/vertcoin-project/vertcoin-core", "Homepage": "https://vertcoin.org" }, - "marketcap_usd": 11729190, + "marketcap_usd": 12918081, "name": "Vertcoin", "shortcut": "VTC", "t1_enabled": "yes", @@ -518,7 +570,7 @@ "Github": "https://github.com/myriadcoin/myriadcoin", "Homepage": "https://www.myriadcoin.org" }, - "marketcap_usd": 2643268, + "marketcap_usd": 3879943, "name": "Myriad", "shortcut": "XMY", "t1_enabled": "yes", @@ -531,7 +583,7 @@ "Github": "https://github.com/zcoinofficial/zcoin", "Homepage": "https://zcoin.io" }, - "marketcap_usd": 31894181, + "marketcap_usd": 30473142, "name": "Zcoin", "shortcut": "XZC", "t1_enabled": "yes", @@ -553,7 +605,7 @@ "Github": "https://github.com/zcash/zcash", "Homepage": "https://z.cash" }, - "marketcap_usd": 334325275, + "marketcap_usd": 335034063, "name": "Zcash", "shortcut": "ZEC", "t1_enabled": "yes", @@ -571,7 +623,7 @@ "Github": "https://github.com/ZencashOfficial/zen", "Homepage": "https://zencash.com" }, - "marketcap_usd": 26886561, + "marketcap_usd": 27289762, "name": "Zencash", "shortcut": "ZEN", "t1_enabled": "no", @@ -745,7 +797,7 @@ "links": { "Homepage": "https://0xbitcoin.org/" }, - "marketcap_usd": 854947, + "marketcap_usd": 967805, "name": "0xBitcoin", "network": "eth", "shortcut": "0xBTC", @@ -772,7 +824,7 @@ "links": { "Homepage": "https://firstblood.io" }, - "marketcap_usd": 2807415, + "marketcap_usd": 2476353, "name": "FirstBlood", "network": "eth", "shortcut": "1ST", @@ -963,7 +1015,7 @@ "links": { "Homepage": "http://accelerator.network" }, - "marketcap_usd": 32288, + "marketcap_usd": 81233, "name": "Accelerator Network", "network": "eth", "shortcut": "ACC", @@ -1018,7 +1070,7 @@ "Github": "https://github.com/aditus", "Homepage": "https://aditus.net" }, - "marketcap_usd": 162119, + "marketcap_usd": 174907, "name": "Aditus", "network": "eth", "shortcut": "ADI", @@ -1046,7 +1098,7 @@ "Github": "https://github.com/adelecosystem", "Homepage": "https://adel.io" }, - "marketcap_usd": 497314, + "marketcap_usd": 260628, "name": "Adelphoi", "network": "eth", "shortcut": "ADL", @@ -1073,7 +1125,7 @@ "links": { "Homepage": "https://adshares.net" }, - "marketcap_usd": 956947, + "marketcap_usd": 1006995, "name": "AdShares", "network": "eth", "shortcut": "ADST", @@ -1101,7 +1153,7 @@ "Github": "https://github.com/adchain", "Homepage": "https://adtoken.com" }, - "marketcap_usd": 3469492, + "marketcap_usd": 3317802, "name": "AdToken", "network": "eth", "shortcut": "ADT", @@ -1157,7 +1209,7 @@ "Github": "https://github.com/aeternity", "Homepage": "https://www.aeternity.com/" }, - "marketcap_usd": 98960170, + "marketcap_usd": 103493938, "name": "aeternity", "network": "eth", "shortcut": "AE", @@ -1213,7 +1265,7 @@ "Github": "https://github.com/singnet/singnet", "Homepage": "https://singularitynet.io" }, - "marketcap_usd": 22012963, + "marketcap_usd": 24861353, "name": "SingularityNET", "network": "eth", "shortcut": "AGI", @@ -1241,7 +1293,7 @@ "Github": "https://github.com/aionnetwork", "Homepage": "https://aion.network/" }, - "marketcap_usd": 35136359, + "marketcap_usd": 42374595, "name": "Aion", "network": "eth", "shortcut": "AION", @@ -1296,7 +1348,7 @@ "Github": "https://github.com/AigangNetwork", "Homepage": "https://aigang.network/" }, - "marketcap_usd": 171768, + "marketcap_usd": 227692, "name": "Aigang", "network": "eth", "shortcut": "AIX", @@ -1379,7 +1431,7 @@ "Github": "https://github.com/AlisProject", "Homepage": "https://alismedia.jp" }, - "marketcap_usd": 1150352, + "marketcap_usd": 1174518, "name": "ALIS Token", "network": "eth", "shortcut": "ALIS", @@ -1490,7 +1542,7 @@ "Github": "https://github.com/amlt-by-coinfirm", "Homepage": "https://amlt.coinfirm.io/" }, - "marketcap_usd": 1841149, + "marketcap_usd": 1900161, "name": "AMLT", "network": "eth", "shortcut": "AMLT", @@ -1518,7 +1570,7 @@ "Github": "https://github.com/amontech", "Homepage": "https://amon.tech" }, - "marketcap_usd": 146583, + "marketcap_usd": 143880, "name": "Amon", "network": "eth", "shortcut": "AMN", @@ -1546,7 +1598,7 @@ "Github": "https://github.com/AMO-Project/", "Homepage": "https://amo.foundation" }, - "marketcap_usd": 10769108, + "marketcap_usd": 10358362, "name": "AMO Coin", "network": "eth", "shortcut": "AMO", @@ -1628,7 +1680,7 @@ "Github": "https://github.com/Oxchild/crowdsale", "Homepage": "https://apisplatform.io" }, - "marketcap_usd": 14569184, + "marketcap_usd": 15570133, "name": "APIS", "network": "eth", "shortcut": "APIS", @@ -1656,7 +1708,7 @@ "Github": "https://github.com/Aptoide/AppCoins-ethereumj", "Homepage": "https://appcoins.io" }, - "marketcap_usd": 4221629, + "marketcap_usd": 4310395, "name": "AppCoins", "network": "eth", "shortcut": "APPC", @@ -1683,7 +1735,7 @@ "links": { "Homepage": "https://aigang.network" }, - "marketcap_usd": 171768, + "marketcap_usd": 227692, "name": "AIGang", "network": "eth", "shortcut": "APT", @@ -1738,7 +1790,7 @@ "links": { "Homepage": "https://www.arbitragect.com" }, - "marketcap_usd": 113917, + "marketcap_usd": 100496, "name": "ArbitrageCT", "network": "eth", "shortcut": "ARCT", @@ -1903,7 +1955,7 @@ "links": { "Homepage": "https://airswap.io" }, - "marketcap_usd": 4514260, + "marketcap_usd": 4277451, "name": "Airswap", "network": "eth", "shortcut": "AST", @@ -1958,7 +2010,7 @@ "Github": "https://github.com/atonomi", "Homepage": "https://atonomi.io" }, - "marketcap_usd": 781640, + "marketcap_usd": 854161, "name": "Atonomi", "network": "eth", "shortcut": "ATMI", @@ -2151,7 +2203,7 @@ "Github": "https://www.github.com/axpire", "Homepage": "https://www.axpire.io" }, - "marketcap_usd": 1732797, + "marketcap_usd": 1871447, "name": "aXpire", "network": "eth", "shortcut": "AXPR", @@ -2205,7 +2257,7 @@ "links": { "Homepage": "https://basicattentiontoken.org" }, - "marketcap_usd": 175923938, + "marketcap_usd": 168416142, "name": "Basic Attention Token", "network": "eth", "shortcut": "BAT", @@ -2344,7 +2396,7 @@ "Github": "https://github.com/VinceBCD/BCDiploma", "Homepage": "https://www.bcdiploma.com" }, - "marketcap_usd": 205611, + "marketcap_usd": 223782, "name": "Blockchain Certified Data Token", "network": "eth", "shortcut": "BCDT", @@ -2483,7 +2535,7 @@ "Github": "https://github.com/thebeetoken", "Homepage": "https://www.beetoken.com" }, - "marketcap_usd": 698645, + "marketcap_usd": 690438, "name": "Bee Token", "network": "eth", "shortcut": "BEE", @@ -2567,7 +2619,7 @@ "Github": "https://github.com/bethereumproject", "Homepage": "https://www.bethereum.com/" }, - "marketcap_usd": 618090, + "marketcap_usd": 508668, "name": "Bethereum", "network": "eth", "shortcut": "BETHER", @@ -2732,7 +2784,7 @@ "Github": "https://github.com/BankEx", "Homepage": "https://bankex.com/" }, - "marketcap_usd": 3691507, + "marketcap_usd": 2572828, "name": "BANKEX", "network": "eth", "shortcut": "BKX", @@ -2788,7 +2840,7 @@ "Github": "https://github.com/BlueCrypto", "Homepage": "https://blueprotocol.com/" }, - "marketcap_usd": 697612, + "marketcap_usd": 685613, "name": "Ethereum Blue", "network": "eth", "shortcut": "BLUE", @@ -2843,7 +2895,7 @@ "links": { "Homepage": "https://www.iconomi.net" }, - "marketcap_usd": 15665243, + "marketcap_usd": 17382437, "name": "Iconomi", "network": "eth", "shortcut": "BLX (Iconomi)", @@ -2953,7 +3005,7 @@ "links": { "Homepage": "https://www.binance.com" }, - "marketcap_usd": 639741916, + "marketcap_usd": 713786424, "name": "Binance Coin", "network": "eth", "shortcut": "BNB", @@ -2981,7 +3033,7 @@ "Github": "https://github.com/bancorprotocol", "Homepage": "https://www.bancor.network/discover" }, - "marketcap_usd": 34614681, + "marketcap_usd": 34459764, "name": "Bancor", "network": "eth", "shortcut": "BNT", @@ -3062,7 +3114,7 @@ "links": { "Homepage": "https://bonpay.com" }, - "marketcap_usd": 329658, + "marketcap_usd": 290746, "name": "Bonpay", "network": "eth", "shortcut": "BON", @@ -3198,7 +3250,7 @@ "links": { "Homepage": "http://bro-consortium.io" }, - "marketcap_usd": 10593, + "marketcap_usd": 6220, "name": "BRAT", "network": "eth", "shortcut": "BRAT", @@ -3226,7 +3278,7 @@ "Github": "https://github.com/breadwallet", "Homepage": "https://token.breadapp.com/en" }, - "marketcap_usd": 17999552, + "marketcap_usd": 18277135, "name": "Bread", "network": "eth", "shortcut": "BRD", @@ -3445,7 +3497,7 @@ "Github": "https://github.com/bethereumproject", "Homepage": "https://www.bethereum.com/" }, - "marketcap_usd": 618090, + "marketcap_usd": 508668, "name": "Bethereum", "network": "eth", "shortcut": "BTHR", @@ -3473,7 +3525,7 @@ "Github": "https://github.com/bitcoin-token", "Homepage": "https://btk.community" }, - "marketcap_usd": 161917, + "marketcap_usd": 215200, "name": "Bitcoin Token", "network": "eth", "shortcut": "BTK", @@ -3501,7 +3553,7 @@ "Github": "https://github.com/bytom", "Homepage": "https://bytom.io" }, - "marketcap_usd": 77075939, + "marketcap_usd": 91212964, "name": "Bytom", "network": "eth", "shortcut": "BTM", @@ -3556,7 +3608,7 @@ "Github": "https://github.com/Andyss4545/BitEther", "Homepage": "https://bytom.io" }, - "marketcap_usd": 29297, + "marketcap_usd": 28235, "name": "Bitether", "network": "eth", "shortcut": "BTT", @@ -3666,7 +3718,7 @@ "Github": "https://github.com/cryptotwenty", "Homepage": "https://crypto20.com" }, - "marketcap_usd": 12773549, + "marketcap_usd": 14747327, "name": "Crypto20's Token", "network": "eth", "shortcut": "C20", @@ -3828,7 +3880,7 @@ "links": { "Homepage": "https://cashaa.com" }, - "marketcap_usd": 6022809, + "marketcap_usd": 6407986, "name": "Cashaa", "network": "eth", "shortcut": "CAS", @@ -4567,7 +4619,7 @@ "links": { "Homepage": "https://cindicator.com" }, - "marketcap_usd": 14861308, + "marketcap_usd": 15806317, "name": "Cindicator", "network": "eth", "shortcut": "CND", @@ -4760,7 +4812,7 @@ "links": { "Homepage": "https://covesting.io/" }, - "marketcap_usd": 6354713, + "marketcap_usd": 6687892, "name": "Covesting", "network": "eth", "shortcut": "COV", @@ -4816,7 +4868,7 @@ "Github": "https://github.com/Cpollo", "Homepage": "https://cpollo.info/" }, - "marketcap_usd": 301865, + "marketcap_usd": 313893, "name": "CPOLLO", "network": "eth", "shortcut": "CPLO", @@ -4844,7 +4896,7 @@ "Github": "https://github.com/aditus", "Homepage": "https://copytrack.io" }, - "marketcap_usd": 925277, + "marketcap_usd": 1005613, "name": "COPYTRACK", "network": "eth", "shortcut": "CPY", @@ -4954,7 +5006,7 @@ "links": { "Homepage": "https://bitbounce.io" }, - "marketcap_usd": 25568974, + "marketcap_usd": 28228646, "name": "Credo / Bitbounce", "network": "eth", "shortcut": "CREDO", @@ -5284,7 +5336,7 @@ "Github": "https://github.com/cargoxio", "Homepage": "https://cargox.io" }, - "marketcap_usd": 1852179, + "marketcap_usd": 2501428, "name": "CargoX", "network": "eth", "shortcut": "CXO", @@ -5311,7 +5363,7 @@ "links": { "Homepage": "https://cyberfmradio.com" }, - "marketcap_usd": 242449, + "marketcap_usd": 244942, "name": "CyberFM", "network": "eth", "shortcut": "CYFM", @@ -5338,7 +5390,7 @@ "links": { "Homepage": "https://ccrb.io" }, - "marketcap_usd": 452911, + "marketcap_usd": 253561, "name": "CryptoCarbon", "network": "eth", "shortcut": "CryptoCarbon", @@ -5392,7 +5444,7 @@ "links": { "Homepage": "https://dadi.cloud" }, - "marketcap_usd": 2781930, + "marketcap_usd": 3198324, "name": "DADI", "network": "eth", "shortcut": "DADI", @@ -5420,7 +5472,7 @@ "Github": "https://github.com/makerdao", "Homepage": "https://makerdao.com" }, - "marketcap_usd": 55772777, + "marketcap_usd": 60072998, "name": "Dai Stablecoin v1.0", "network": "eth", "shortcut": "DAI", @@ -5447,7 +5499,7 @@ "links": { "Homepage": "http://www.dalecoin.org" }, - "marketcap_usd": 5348, + "marketcap_usd": 6456, "name": "DaleCoin", "network": "eth", "shortcut": "DALC", @@ -5585,7 +5637,7 @@ "Github": "https://github.com/streamr-dev", "Homepage": "https://www.streamr.com" }, - "marketcap_usd": 26347, + "marketcap_usd": 27967, "name": "DATACoin", "network": "eth", "shortcut": "DATACoin", @@ -5724,7 +5776,7 @@ "Github": "https://github.com/DistributedBanking/DCC", "Homepage": "http://dcc.finance" }, - "marketcap_usd": 2511171, + "marketcap_usd": 2835710, "name": "Distributed Credit Chain", "network": "eth", "shortcut": "DCC", @@ -5779,7 +5831,7 @@ "Github": "https://github.com/Dentacoin", "Homepage": "https://dentacoin.com" }, - "marketcap_usd": 25898072, + "marketcap_usd": 41435261, "name": "Dentacoin", "network": "eth", "shortcut": "DCN", @@ -5889,7 +5941,7 @@ "links": { "Homepage": "https://www.dentwireless.com" }, - "marketcap_usd": 16945554, + "marketcap_usd": 17386429, "name": "DENT", "network": "eth", "shortcut": "DENT", @@ -5916,7 +5968,7 @@ "links": { "Homepage": "https://www.coinbit.co.kr/" }, - "marketcap_usd": 29891190, + "marketcap_usd": 33658905, "name": "DEX", "network": "eth", "shortcut": "DEX", @@ -5999,7 +6051,7 @@ "Github": "https://github.com/dragonglasscom", "Homepage": "https://dragonglass.com/" }, - "marketcap_usd": 49684, + "marketcap_usd": 63940, "name": "Dragonglass", "network": "eth", "shortcut": "DGS", @@ -6055,7 +6107,7 @@ "Github": "https://github.com/DigixGlobal", "Homepage": "https://digix.global" }, - "marketcap_usd": 3485934, + "marketcap_usd": 3379104, "name": "Digix Gold Token", "network": "eth", "shortcut": "DGX", @@ -6110,7 +6162,7 @@ "links": { "Homepage": "https://etheroll.com" }, - "marketcap_usd": 2791930, + "marketcap_usd": 1973541, "name": "Etheroll", "network": "eth", "shortcut": "DICE", @@ -6414,7 +6466,7 @@ "Github": "https://github.com/dethertech", "Homepage": "https://dether.io" }, - "marketcap_usd": 538261, + "marketcap_usd": 728268, "name": "dether", "network": "eth", "shortcut": "DTH", @@ -6632,7 +6684,7 @@ "links": { "Homepage": "https://edgeless.io" }, - "marketcap_usd": 6337500, + "marketcap_usd": 10871576, "name": "Edgeless", "network": "eth", "shortcut": "EDG", @@ -6659,7 +6711,7 @@ "links": { "Homepage": "https://eidoo.io" }, - "marketcap_usd": 20224090, + "marketcap_usd": 24266110, "name": "Eidoo", "network": "eth", "shortcut": "EDO", @@ -6798,7 +6850,7 @@ "Github": "https://github.com/eltcoin", "Homepage": "http://www.eltcoin.tech/" }, - "marketcap_usd": 48156, + "marketcap_usd": 46146, "name": "ELTCOIN", "network": "eth", "shortcut": "ELTCOIN", @@ -6992,7 +7044,7 @@ "Github": "https://github.com/enigmampc", "Homepage": "https://enigma.co/" }, - "marketcap_usd": 20365047, + "marketcap_usd": 18776523, "name": "Enigma", "network": "eth", "shortcut": "ENG", @@ -7104,7 +7156,7 @@ "Github": "https://github.com/Krishtopa/ContractEristica", "Homepage": "https://eristica.com/" }, - "marketcap_usd": 558851, + "marketcap_usd": 484805, "name": "Eristica", "network": "eth", "shortcut": "ERT", @@ -7159,7 +7211,7 @@ "links": { "Homepage": "https://www.ethbits.com" }, - "marketcap_usd": 715365, + "marketcap_usd": 754493, "name": "Ethbits", "network": "eth", "shortcut": "ETBS", @@ -7379,7 +7431,7 @@ "Github": "https://github.com/eXMRcoin/", "Homepage": "https://exmr.io/" }, - "marketcap_usd": 274258, + "marketcap_usd": 243769, "name": "eXMRcoin", "network": "eth", "shortcut": "EXMR", @@ -7545,7 +7597,7 @@ "Github": "https://github.com/FortKnoxster", "Homepage": "https://fortknoxster.com" }, - "marketcap_usd": 194668, + "marketcap_usd": 250399, "name": "Knoxstertoken", "network": "eth", "shortcut": "FKX", @@ -7709,7 +7761,7 @@ "Github": "https://github.com/FundRequest", "Homepage": "https://fundrequest.io" }, - "marketcap_usd": 204084, + "marketcap_usd": 222681, "name": "FundRequest", "network": "eth", "shortcut": "FND", @@ -7819,7 +7871,7 @@ "Github": "https://github.com/futuraxproject", "Homepage": "https://futurax.global" }, - "marketcap_usd": 331124, + "marketcap_usd": 240396, "name": "FUTURAX", "network": "eth", "shortcut": "FTXT", @@ -7874,7 +7926,7 @@ "links": { "Homepage": "https://funfair.io" }, - "marketcap_usd": 25042817, + "marketcap_usd": 25232390, "name": "Funfair", "network": "eth", "shortcut": "FUN", @@ -7902,7 +7954,7 @@ "Github": "https://github.com/futuraxproject", "Homepage": "https://futurax.global" }, - "marketcap_usd": 331124, + "marketcap_usd": 240396, "name": "FUTURAX", "network": "eth", "shortcut": "FXC", @@ -7985,7 +8037,7 @@ "Github": "https://github.com/BlockchainLabsNZ/gambit", "Homepage": "http://gambitcrypto.com" }, - "marketcap_usd": 1514841, + "marketcap_usd": 1601381, "name": "Gambit", "network": "eth", "shortcut": "GAM", @@ -8178,7 +8230,7 @@ "Github": "https://github.com/daostack", "Homepage": "https://daostack.io" }, - "marketcap_usd": 1271603, + "marketcap_usd": 1747268, "name": "DAOstack", "network": "eth", "shortcut": "GEN", @@ -8343,7 +8395,7 @@ "links": { "Homepage": "https://golem.network" }, - "marketcap_usd": 65729395, + "marketcap_usd": 64627553, "name": "Golem", "network": "eth", "shortcut": "GNT", @@ -8426,7 +8478,7 @@ "links": { "Homepage": "https://gridplus.io/token-sale" }, - "marketcap_usd": 1672686, + "marketcap_usd": 1520289, "name": "GRID", "network": "eth", "shortcut": "GRID", @@ -8593,7 +8645,7 @@ "Github": "https://github.com/GIFTO-io", "Homepage": "https://gifto.io/" }, - "marketcap_usd": 12529785, + "marketcap_usd": 13204332, "name": "Gifto", "network": "eth", "shortcut": "GTO", @@ -8649,7 +8701,7 @@ "Github": "https://github.com/GenesisVision", "Homepage": "https://genesis.vision" }, - "marketcap_usd": 16749783, + "marketcap_usd": 16918016, "name": "Genesis Vision", "network": "eth", "shortcut": "GVT", @@ -9087,7 +9139,7 @@ "links": { "Homepage": "https://github.com/arachnid/hodlcoin" }, - "marketcap_usd": 101756, + "marketcap_usd": 98378, "name": "HODLCoin", "network": "eth", "shortcut": "HODL", @@ -9334,7 +9386,7 @@ "links": { "Homepage": "https://www.icon.foundation" }, - "marketcap_usd": 106710394, + "marketcap_usd": 113466307, "name": "ICON", "network": "eth", "shortcut": "ICX", @@ -9388,7 +9440,7 @@ "links": { "Homepage": "https://investfeed.com" }, - "marketcap_usd": 538266, + "marketcap_usd": 515271, "name": "InvestFeed", "network": "eth", "shortcut": "IFT", @@ -9551,7 +9603,7 @@ "links": { "Homepage": "https://insights.network" }, - "marketcap_usd": 933889, + "marketcap_usd": 1056876, "name": "Insights Network", "network": "eth", "shortcut": "INSTAR", @@ -9579,7 +9631,7 @@ "Github": "https://github.com/Internxt/", "Homepage": "https://internxt.com/" }, - "marketcap_usd": 689022, + "marketcap_usd": 888683, "name": "Internxt", "network": "eth", "shortcut": "INXT", @@ -9606,7 +9658,7 @@ "links": { "Homepage": "https://iost.io/" }, - "marketcap_usd": 51213641, + "marketcap_usd": 63690577, "name": "IOSToken", "network": "eth", "shortcut": "IOST", @@ -9717,7 +9769,7 @@ "Github": "https://github.com/iqeon", "Homepage": "https://iqeon.io/" }, - "marketcap_usd": 341413, + "marketcap_usd": 394787, "name": "IQeon", "network": "eth", "shortcut": "IQN", @@ -9773,7 +9825,7 @@ "Github": "https://github.com/IoTChainCode", "Homepage": "https://iotchain.io/" }, - "marketcap_usd": 7196613, + "marketcap_usd": 8183004, "name": "IoT Chain", "network": "eth", "shortcut": "ITC", @@ -10048,7 +10100,7 @@ "Github": "https://github.com/kikinteractive/kin-token", "Homepage": "https://kin.kik.com" }, - "marketcap_usd": 21833399, + "marketcap_usd": 23231988, "name": "Kin Foundation", "network": "eth", "shortcut": "KIN", @@ -10076,7 +10128,7 @@ "Github": "https://github.com/KyberNetwork", "Homepage": "https://kyber.network" }, - "marketcap_usd": 19037907, + "marketcap_usd": 20946396, "name": "Kyber Network", "network": "eth", "shortcut": "KNC", @@ -10132,7 +10184,7 @@ "Github": "https://github.com/Cryptense/", "Homepage": "https://kryll.io/" }, - "marketcap_usd": 356032, + "marketcap_usd": 374093, "name": "Kryll", "network": "eth", "shortcut": "KRL", @@ -10214,7 +10266,7 @@ "Github": "https://github.com/latoken", "Homepage": "https://latoken.com/" }, - "marketcap_usd": 3614243, + "marketcap_usd": 4766701, "name": "LATOKEN", "network": "eth", "shortcut": "LA", @@ -10268,7 +10320,7 @@ "links": { "Homepage": "https://www.leadcoin.network/" }, - "marketcap_usd": 267974, + "marketcap_usd": 268548, "name": "LEADCOIN", "network": "eth", "shortcut": "LDC", @@ -10486,7 +10538,7 @@ "links": { "Homepage": "http://www.lifelabs.io" }, - "marketcap_usd": 854946, + "marketcap_usd": 1132669, "name": "LIFE", "network": "eth", "shortcut": "LIFE", @@ -10513,7 +10565,7 @@ "links": { "Homepage": "https://link.smartcontract.com" }, - "marketcap_usd": 83143754, + "marketcap_usd": 102718780, "name": "Chainlink", "network": "eth", "shortcut": "LINK (Chainlink)", @@ -10596,7 +10648,7 @@ "Github": "https://github.com/lendingblock", "Homepage": "https://lendingblock.com" }, - "marketcap_usd": 2785627, + "marketcap_usd": 3334080, "name": "Lendingblock", "network": "eth", "shortcut": "LND", @@ -10623,7 +10675,7 @@ "links": { "Homepage": "https://LockChain.co" }, - "marketcap_usd": 6825239, + "marketcap_usd": 7610643, "name": "LockChain", "network": "eth", "shortcut": "LOC", @@ -10651,7 +10703,7 @@ "Github": "http://github.com/locipro/loci-coin-sale", "Homepage": "https://locipro.com" }, - "marketcap_usd": 508767, + "marketcap_usd": 495457, "name": "LOCIcoin", "network": "eth", "shortcut": "LOCI", @@ -11118,7 +11170,7 @@ "Github": "https://github.com/theembermine", "Homepage": "https://embermine.com/" }, - "marketcap_usd": 43761, + "marketcap_usd": 34616, "name": "Embers", "network": "eth", "shortcut": "MBRS", @@ -11146,7 +11198,7 @@ "Github": "https://github.com/musiconomi/", "Homepage": "https://musiconomi.com/" }, - "marketcap_usd": 97509, + "marketcap_usd": 104650, "name": "Musiconomi", "network": "eth", "shortcut": "MCI", @@ -11311,7 +11363,7 @@ "links": { "Homepage": "https://mftu.net" }, - "marketcap_usd": 23414, + "marketcap_usd": 22480, "name": "Mainstream For The Underground", "network": "eth", "shortcut": "MFTU", @@ -11367,7 +11419,7 @@ "Github": "https://github.com/makerdao", "Homepage": "https://makerdao.com" }, - "marketcap_usd": 258413352, + "marketcap_usd": 309146518, "name": "MakerDAO", "network": "eth", "shortcut": "MKR", @@ -11533,7 +11585,7 @@ "Github": "https://github.com/modum-io", "Homepage": "https://modum.io" }, - "marketcap_usd": 7155484, + "marketcap_usd": 7638076, "name": "Modum", "network": "eth", "shortcut": "MOD", @@ -11642,7 +11694,7 @@ "links": { "Homepage": "https://mothership.cx" }, - "marketcap_usd": 5329638, + "marketcap_usd": 5880420, "name": "Mothership", "network": "eth", "shortcut": "MSP", @@ -11669,7 +11721,7 @@ "links": { "Homepage": "http://www.monetha.io" }, - "marketcap_usd": 4239376, + "marketcap_usd": 3935062, "name": "Monetha", "network": "eth", "shortcut": "MTH", @@ -11859,7 +11911,7 @@ "Github": "https://github.com/Merculet", "Homepage": "https://www.merculet.io" }, - "marketcap_usd": 1097599, + "marketcap_usd": 914602, "name": "Merculet", "network": "eth", "shortcut": "MVP", @@ -11913,7 +11965,7 @@ "links": { "Homepage": "https://mysterium.network" }, - "marketcap_usd": 857439, + "marketcap_usd": 1566147, "name": "Mysterium", "network": "eth", "shortcut": "MYST", @@ -11968,7 +12020,7 @@ "Github": "https://github.com/NANJ-COIN", "Homepage": "https://nanjcoin.com/" }, - "marketcap_usd": 3497890, + "marketcap_usd": 3694018, "name": "NANJCOIN", "network": "eth", "shortcut": "NANJ", @@ -12052,7 +12104,7 @@ "Github": "https://github.com/polyswarm", "Homepage": "https://polyswarm.io" }, - "marketcap_usd": 26101743, + "marketcap_usd": 21725622, "name": "Nectar", "network": "eth", "shortcut": "NCT", @@ -12079,7 +12131,7 @@ "links": { "Homepage": "https://neverdie.com" }, - "marketcap_usd": 191187, + "marketcap_usd": 812708, "name": "Neverdie", "network": "eth", "shortcut": "NDC", @@ -12161,7 +12213,7 @@ "links": { "Homepage": "https://nimiq.com" }, - "marketcap_usd": 1910327, + "marketcap_usd": 2214239, "name": "NIMIQ", "network": "eth", "shortcut": "NET", @@ -12328,7 +12380,7 @@ "Github": "https://github.com/NperProject", "Homepage": "https://nper.io" }, - "marketcap_usd": 744660, + "marketcap_usd": 700751, "name": "NPER", "network": "eth", "shortcut": "NPER", @@ -12357,7 +12409,7 @@ "Github": "https://github.com/pundix", "Homepage": "https://pundix.com" }, - "marketcap_usd": 86503358, + "marketcap_usd": 86897787, "name": "Pundi X Token", "network": "eth", "shortcut": "NPXS", @@ -12411,7 +12463,7 @@ "links": { "Homepage": "https://nuls.io" }, - "marketcap_usd": 16479238, + "marketcap_usd": 20214666, "name": "NULS", "network": "eth", "shortcut": "NULS", @@ -12465,7 +12517,7 @@ "links": { "Homepage": "https://beyond-the-void.net" }, - "marketcap_usd": 448712, + "marketcap_usd": 460462, "name": "Nexium", "network": "eth", "shortcut": "NxC", @@ -12519,7 +12571,7 @@ "links": { "Homepage": "https://www.openanx.org/en" }, - "marketcap_usd": 2142473, + "marketcap_usd": 2260516, "name": "OAX", "network": "eth", "shortcut": "OAX", @@ -12687,7 +12739,7 @@ "Github": "https://github.com/omisego", "Homepage": "https://omisego.network" }, - "marketcap_usd": 196971983, + "marketcap_usd": 206675559, "name": "OmiseGO", "network": "eth", "shortcut": "OMG", @@ -12852,7 +12904,7 @@ "links": { "Homepage": "https://ormeuscoin.com" }, - "marketcap_usd": 1323832, + "marketcap_usd": 1246411, "name": "Ormeus Coin", "network": "eth", "shortcut": "ORME", @@ -12880,7 +12932,7 @@ "Github": "https://github.com/OpenSTFoundation", "Homepage": "https://simpletoken.org" }, - "marketcap_usd": 10571948, + "marketcap_usd": 11500448, "name": "Simple Token 'OST'", "network": "eth", "shortcut": "OST", @@ -12908,7 +12960,7 @@ "Github": "https://github.com/owndata", "Homepage": "https://owndata.network" }, - "marketcap_usd": 2487624, + "marketcap_usd": 1427846, "name": "OWNDATA", "network": "eth", "shortcut": "OWN", @@ -13103,7 +13155,7 @@ "Github": "https://github.com/paxosglobal", "Homepage": "https://www.paxos.com/standard" }, - "marketcap_usd": 176217754, + "marketcap_usd": 153289234, "name": "Paxos Standard (PAX)", "network": "eth", "shortcut": "PAX", @@ -13130,7 +13182,7 @@ "links": { "Homepage": "http://www.tenx.tech" }, - "marketcap_usd": 28174155, + "marketcap_usd": 51938105, "name": "TenX", "network": "eth", "shortcut": "PAY", @@ -13212,7 +13264,7 @@ "Github": "https://github.com/PeculiumPCL/Peculium", "Homepage": "https://peculium.io" }, - "marketcap_usd": 2286917, + "marketcap_usd": 3684453, "name": "Peculium", "network": "eth", "shortcut": "PCL", @@ -13431,7 +13483,7 @@ "links": { "Homepage": "https://polybius.io" }, - "marketcap_usd": 5030873, + "marketcap_usd": 5288601, "name": "Polybius", "network": "eth", "shortcut": "PLBT", @@ -13623,7 +13675,7 @@ "links": { "Homepage": "https://polymath.network" }, - "marketcap_usd": 35130790, + "marketcap_usd": 40917150, "name": "Polymath Network", "network": "eth", "shortcut": "POLY", @@ -13678,7 +13730,7 @@ "Github": "https://github.com/PoSToken", "Homepage": "https://postoken.org" }, - "marketcap_usd": 6353, + "marketcap_usd": 6811, "name": "PoSToken", "network": "eth", "shortcut": "POS", @@ -13732,7 +13784,7 @@ "links": { "Homepage": "https://www.paypie.com" }, - "marketcap_usd": 4952521, + "marketcap_usd": 3990032, "name": "PayPie", "network": "eth", "shortcut": "PPP", @@ -13759,7 +13811,7 @@ "links": { "Homepage": "https://populous.co" }, - "marketcap_usd": 72441312, + "marketcap_usd": 78276469, "name": "Populous", "network": "eth", "shortcut": "PPT", @@ -13786,7 +13838,7 @@ "links": { "Homepage": "https://presearch.io" }, - "marketcap_usd": 4861459, + "marketcap_usd": 4894179, "name": "Presearch", "network": "eth", "shortcut": "PRE", @@ -14117,7 +14169,7 @@ "links": { "Homepage": "https://liquid.plus" }, - "marketcap_usd": 75024830, + "marketcap_usd": 53887272, "name": "QASH", "network": "eth", "shortcut": "QASH", @@ -14200,7 +14252,7 @@ "Github": "https://github.com/quantnetwork", "Homepage": "https://www.quant.network/" }, - "marketcap_usd": 15187334, + "marketcap_usd": 15183919, "name": "Quant", "network": "eth", "shortcut": "QNT", @@ -14339,7 +14391,7 @@ "Github": "https://github.com/qtumproject", "Homepage": "https://qtum.org/" }, - "marketcap_usd": 151603360, + "marketcap_usd": 201762372, "name": "Qtum", "network": "eth", "shortcut": "QTUM", @@ -14395,7 +14447,7 @@ "Github": "https://github.com/rublixdev", "Homepage": "https://rublix.io/" }, - "marketcap_usd": 4492210, + "marketcap_usd": 4666067, "name": "Rublix", "network": "eth", "shortcut": "RBLX", @@ -14423,7 +14475,7 @@ "Github": "https://github.com/ripio/rcn-token", "Homepage": "https://ripiocredit.network" }, - "marketcap_usd": 6202835, + "marketcap_usd": 6379908, "name": "Ripio Credit Network", "network": "eth", "shortcut": "RCN", @@ -14505,7 +14557,7 @@ "links": { "Homepage": "https://www.rebellious.io" }, - "marketcap_usd": 891857, + "marketcap_usd": 980661, "name": "Rebellious", "network": "eth", "shortcut": "REBL", @@ -14533,7 +14585,7 @@ "Github": "https://github.com/red", "Homepage": "https://ico.red-lang.org" }, - "marketcap_usd": 1088890, + "marketcap_usd": 968720, "name": "Red Community Token", "network": "eth", "shortcut": "RED", @@ -14616,7 +14668,7 @@ "links": { "Homepage": "https://augur.net" }, - "marketcap_usd": 71749016, + "marketcap_usd": 77789332, "name": "Augur", "network": "eth", "shortcut": "REP", @@ -14643,7 +14695,7 @@ "links": { "Homepage": "https://request.network" }, - "marketcap_usd": 15782061, + "marketcap_usd": 16373109, "name": "Request Network", "network": "eth", "shortcut": "REQ", @@ -14698,7 +14750,7 @@ "links": { "Homepage": "https://refereum.com" }, - "marketcap_usd": 5006275, + "marketcap_usd": 5559233, "name": "Refereum", "network": "eth", "shortcut": "RFR", @@ -14753,7 +14805,7 @@ "links": { "Homepage": "http://crowdsale.iex.ec" }, - "marketcap_usd": 15181003, + "marketcap_usd": 14920507, "name": "IEx.ec", "network": "eth", "shortcut": "RLC", @@ -14835,7 +14887,7 @@ "links": { "Homepage": "http://www.relex.io" }, - "marketcap_usd": 847587, + "marketcap_usd": 414105, "name": "Relex", "network": "eth", "shortcut": "RLX", @@ -14945,7 +14997,7 @@ "links": { "Homepage": "https://icerockmining.io" }, - "marketcap_usd": 3278753, + "marketcap_usd": 4609877, "name": "ICE ROCK MINING", "network": "eth", "shortcut": "ROCK2", @@ -14972,7 +15024,7 @@ "links": { "Homepage": "https://icerockmining.io" }, - "marketcap_usd": 3278753, + "marketcap_usd": 4609877, "name": "ICE ROCK MINING", "network": "eth", "shortcut": "ROCK2PAY", @@ -15136,7 +15188,7 @@ "links": { "Homepage": "https://rivetzintl.com" }, - "marketcap_usd": 1148498, + "marketcap_usd": 894459, "name": "Rivetz", "network": "eth", "shortcut": "RVT", @@ -15217,7 +15269,7 @@ "links": { "Homepage": "https://saltlending.com" }, - "marketcap_usd": 17685993, + "marketcap_usd": 18251833, "name": "Salt Lending Token", "network": "eth", "shortcut": "SALT", @@ -15244,7 +15296,7 @@ "links": { "Homepage": "https://santiment.net" }, - "marketcap_usd": 13322823, + "marketcap_usd": 20936234, "name": "Santiment", "network": "eth", "shortcut": "SAN", @@ -15325,7 +15377,7 @@ "links": { "Homepage": "https://sensay.it" }, - "marketcap_usd": 692133, + "marketcap_usd": 1415495, "name": "Sensay", "network": "eth", "shortcut": "SENSE", @@ -15598,7 +15650,7 @@ "links": { "Homepage": "http://smartlands.io" }, - "marketcap_usd": 23262856, + "marketcap_usd": 18340158, "name": "Smartlands", "network": "eth", "shortcut": "SLT", @@ -15735,7 +15787,7 @@ "links": { "Homepage": "https://singulardtv.com" }, - "marketcap_usd": 6464658, + "marketcap_usd": 6208806, "name": "SingularDTV", "network": "eth", "shortcut": "SNGLS", @@ -15871,7 +15923,7 @@ "links": { "Homepage": "https://sola.foundation" }, - "marketcap_usd": 104136, + "marketcap_usd": 28757, "name": "Sola Token", "network": "eth", "shortcut": "SOL", @@ -15898,7 +15950,7 @@ "links": { "Homepage": "https://spankchain.com" }, - "marketcap_usd": 4538415, + "marketcap_usd": 4241771, "name": "SpankChain", "network": "eth", "shortcut": "SPANK", @@ -16006,7 +16058,7 @@ "links": { "Homepage": "https://www.sapien.network/" }, - "marketcap_usd": 368141, + "marketcap_usd": 458866, "name": "Sapien", "network": "eth", "shortcut": "SPN", @@ -16225,7 +16277,7 @@ "links": { "Homepage": "https://stktoken.com" }, - "marketcap_usd": 1610465, + "marketcap_usd": 1228181, "name": "STK Token", "network": "eth", "shortcut": "STK", @@ -16280,7 +16332,7 @@ "Github": "https://github.com/Storj", "Homepage": "https://storj.io" }, - "marketcap_usd": 18707446, + "marketcap_usd": 19690194, "name": "STORJ", "network": "eth", "shortcut": "STORJ", @@ -16307,7 +16359,7 @@ "links": { "Homepage": "https://www.stormtoken.com" }, - "marketcap_usd": 13815630, + "marketcap_usd": 14067749, "name": "Storm Token", "network": "eth", "shortcut": "STORM", @@ -16363,7 +16415,7 @@ "Github": "https://github.com/Storiqa/", "Homepage": "https://storiqa.com" }, - "marketcap_usd": 6446737, + "marketcap_usd": 3765121, "name": "Storiqa", "network": "eth", "shortcut": "STQ", @@ -16446,7 +16498,7 @@ "links": { "Homepage": "https://substratum.net" }, - "marketcap_usd": 18081543, + "marketcap_usd": 17988590, "name": "Substratum", "network": "eth", "shortcut": "SUB", @@ -16776,7 +16828,7 @@ "Github": "https://github.com/TrueFlip", "Homepage": "https://trueflip.io" }, - "marketcap_usd": 1386232, + "marketcap_usd": 1559460, "name": "TrueFlip", "network": "eth", "shortcut": "TFL", @@ -16803,7 +16855,7 @@ "links": { "Homepage": "https://www.thetatoken.org/" }, - "marketcap_usd": 34616262, + "marketcap_usd": 34214008, "name": "Theta Token", "network": "eth", "shortcut": "THETA", @@ -16858,7 +16910,7 @@ "links": { "Homepage": "https://chronobank.io" }, - "marketcap_usd": 1387076, + "marketcap_usd": 1383409, "name": "Chronobank", "network": "eth", "shortcut": "TIME", @@ -16912,7 +16964,7 @@ "links": { "Homepage": "https://www.blocktix.io" }, - "marketcap_usd": 4729159, + "marketcap_usd": 4926571, "name": "Blocktix", "network": "eth", "shortcut": "TIX", @@ -16939,7 +16991,7 @@ "links": { "Homepage": "https://etherscan.io/token/TokenCard" }, - "marketcap_usd": 7041184, + "marketcap_usd": 6791577, "name": "TokenCard", "network": "eth", "shortcut": "TKN", @@ -17213,7 +17265,7 @@ "links": { "Homepage": "https://taas.fund" }, - "marketcap_usd": 1938236, + "marketcap_usd": 2644991, "name": "Token-as-a-Service", "network": "eth", "shortcut": "TaaS", @@ -17268,7 +17320,7 @@ "links": { "Homepage": "https://uquidcoin.com" }, - "marketcap_usd": 942765, + "marketcap_usd": 992987, "name": "Uquid Coin", "network": "eth", "shortcut": "UQC", @@ -17325,7 +17377,7 @@ "Github": "https://github.com/centrehq/centre-tokens", "Homepage": "https://www.centre.io" }, - "marketcap_usd": 188145986, + "marketcap_usd": 229091285, "name": "USD//Coin", "network": "eth", "shortcut": "USDC", @@ -17407,7 +17459,7 @@ "Github": "https://github.com/UniversaBlockchain/universa", "Homepage": "https://www.universa.io/" }, - "marketcap_usd": 3743682, + "marketcap_usd": 5558735, "name": "Universa", "network": "eth", "shortcut": "UTN-P", @@ -17518,7 +17570,7 @@ "Github": "https://github.com/blockv", "Homepage": "https://blockv.io" }, - "marketcap_usd": 8651284, + "marketcap_usd": 8609207, "name": "BLOCKv", "network": "eth", "shortcut": "VEE", @@ -17546,7 +17598,7 @@ "Github": "https://github.com/vechain", "Homepage": "https://www.vechain.com" }, - "marketcap_usd": 226986630, + "marketcap_usd": 239856374, "name": "VeChain", "network": "eth", "shortcut": "VEN", @@ -17683,7 +17735,7 @@ "Github": "https://github.com/ViceIndustryToken", "Homepage": "https://vicetoken.com/" }, - "marketcap_usd": 740349, + "marketcap_usd": 718995, "name": "Vice Industry Token", "network": "eth", "shortcut": "VIT", @@ -17739,7 +17791,7 @@ "Github": "https://github.com/vetri-global/", "Homepage": "https://vetri.global/" }, - "marketcap_usd": 1290853, + "marketcap_usd": 1026874, "name": "VETRI", "network": "eth", "shortcut": "VLD", @@ -17905,7 +17957,7 @@ "Github": "https://github.com/waxio", "Homepage": "https://wax.io" }, - "marketcap_usd": 56784653, + "marketcap_usd": 36362245, "name": "WAX", "network": "eth", "shortcut": "WAX", @@ -17987,7 +18039,7 @@ "links": { "Homepage": "https://wepower.network" }, - "marketcap_usd": 6755381, + "marketcap_usd": 7160880, "name": "WePower", "network": "eth", "shortcut": "WCT", @@ -18097,7 +18149,7 @@ "links": { "Homepage": "https://wings.ai" }, - "marketcap_usd": 7054848, + "marketcap_usd": 7831114, "name": "WINGS", "network": "eth", "shortcut": "WINGS", @@ -18290,7 +18342,7 @@ "links": { "Homepage": "https://www.wacoin.io" }, - "marketcap_usd": 6543232, + "marketcap_usd": 6928499, "name": "WaBi", "network": "eth", "shortcut": "WaBi", @@ -18344,7 +18396,7 @@ "links": { "Homepage": "http://www.xaurum.org" }, - "marketcap_usd": 4040704, + "marketcap_usd": 3531514, "name": "Xaurum", "network": "eth", "shortcut": "XAUR", @@ -18372,7 +18424,7 @@ "Github": "https://github.com/blitzpredict", "Homepage": "https://www.blitzpredict.io" }, - "marketcap_usd": 200340, + "marketcap_usd": 234482, "name": "BlitzPredict", "network": "eth", "shortcut": "XBP", @@ -18565,7 +18617,7 @@ "Github": "https://github.com/InkProtocol/", "Homepage": "https://paywithink.com" }, - "marketcap_usd": 1271482, + "marketcap_usd": 993185, "name": "Ink Protocol", "network": "eth", "shortcut": "XNK", @@ -18592,7 +18644,7 @@ "links": { "Homepage": "https://xenon.network" }, - "marketcap_usd": 550159, + "marketcap_usd": 643928, "name": "XENON", "network": "eth", "shortcut": "XNN", @@ -18729,7 +18781,7 @@ "Github": "https://github.com/zapproject", "Homepage": "https://zap.store" }, - "marketcap_usd": 1091385, + "marketcap_usd": 1108830, "name": "ZAP", "network": "eth", "shortcut": "ZAP", @@ -18756,7 +18808,7 @@ "links": { "Homepage": "https://zsc.io/" }, - "marketcap_usd": 1379746, + "marketcap_usd": 1500004, "name": "Zeusshield", "network": "eth", "shortcut": "ZCS", @@ -18784,7 +18836,7 @@ "Github": "https://github.com/zilliqa", "Homepage": "https://www.zilliqa.com/" }, - "marketcap_usd": 115626100, + "marketcap_usd": 157666579, "name": "Zilliqa", "network": "eth", "shortcut": "ZIL", @@ -18811,7 +18863,7 @@ "links": { "Homepage": "https://www.zmine.com" }, - "marketcap_usd": 1553644, + "marketcap_usd": 1594146, "name": "ZMINE", "network": "eth", "shortcut": "ZMN", @@ -18840,7 +18892,7 @@ "Github": "https://github.com/0xProject", "Homepage": "https://0xproject.com" }, - "marketcap_usd": 189202285, + "marketcap_usd": 176341379, "name": "0x Project", "network": "eth", "shortcut": "ZRX", @@ -18895,7 +18947,7 @@ "Github": "https://github.com/carVertical", "Homepage": "https://www.carvertical.com" }, - "marketcap_usd": 2130570, + "marketcap_usd": 2679505, "name": "carVertical", "network": "eth", "shortcut": "cV", @@ -19033,7 +19085,7 @@ "Github": "https://github.com/eosdac", "Homepage": "https://eosdac.io/" }, - "marketcap_usd": 3624465, + "marketcap_usd": 4044050, "name": "eosDAC", "network": "eth", "shortcut": "eosDAC", @@ -19139,7 +19191,7 @@ "links": { "Homepage": "https://www.qwark.io" }, - "marketcap_usd": 985450, + "marketcap_usd": 1190111, "name": "QWARK", "network": "ubq", "shortcut": "QWARK", @@ -19184,7 +19236,7 @@ "links": { "Homepage": "https://akroma.io" }, - "marketcap_usd": 439260, + "marketcap_usd": 307790, "name": "Akroma", "shortcut": "AKA", "t1_enabled": "yes", @@ -19205,7 +19257,7 @@ "links": { "Homepage": "https://atheios.com" }, - "marketcap_usd": 38789, + "marketcap_usd": 39774, "name": "Atheios", "shortcut": "ATH", "t1_enabled": "yes", @@ -19227,7 +19279,7 @@ "links": { "Homepage": "https://callisto.network" }, - "marketcap_usd": 2792802, + "marketcap_usd": 3797371, "name": "Callisto", "shortcut": "CLO", "t1_enabled": "yes", @@ -19248,7 +19300,7 @@ "links": { "Homepage": "https://egem.io" }, - "marketcap_usd": 255267, + "marketcap_usd": 196355, "name": "EtherGem", "shortcut": "EGEM", "t1_enabled": "yes", @@ -19269,7 +19321,7 @@ "links": { "Homepage": "https://ellaism.org" }, - "marketcap_usd": 141109, + "marketcap_usd": 143114, "name": "Ellaism", "shortcut": "ELLA", "t1_enabled": "yes", @@ -19312,7 +19364,7 @@ "links": { "Homepage": "https://ethersocial.org" }, - "marketcap_usd": 1398154, + "marketcap_usd": 979668, "name": "Ethersocial Network", "shortcut": "ESN", "t1_enabled": "yes", @@ -19333,7 +19385,7 @@ "links": { "Homepage": "https://ethereumclassic.github.io" }, - "marketcap_usd": 446594661, + "marketcap_usd": 485357014, "name": "Ethereum Classic", "shortcut": "ETC", "t1_enabled": "yes", @@ -19358,7 +19410,7 @@ "links": { "Homepage": "https://www.ethereum.org" }, - "marketcap_usd": 10071896175, + "marketcap_usd": 11195741067, "name": "Ethereum", "shortcut": "ETH", "t1_enabled": "yes", @@ -19383,7 +19435,7 @@ "links": { "Homepage": "https://ether1.org" }, - "marketcap_usd": 226681, + "marketcap_usd": 258097, "name": "Ether-1", "shortcut": "ETHO", "t1_enabled": "yes", @@ -19425,7 +19477,7 @@ "links": { "Homepage": "https://expanse.tech" }, - "marketcap_usd": 1102357, + "marketcap_usd": 1320583, "name": "Expanse", "shortcut": "EXP", "t1_enabled": "yes", @@ -19446,7 +19498,7 @@ "links": { "Homepage": "https://gochain.io" }, - "marketcap_usd": 17207137, + "marketcap_usd": 16870390, "name": "GoChain", "shortcut": "GO", "t1_enabled": "yes", @@ -19470,7 +19522,7 @@ "marketcap_usd": 0, "name": "Mix", "shortcut": "MIX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", "wallet": [ @@ -19488,7 +19540,7 @@ "links": { "Homepage": "https://musicoin.org" }, - "marketcap_usd": 1567748, + "marketcap_usd": 1586549, "name": "Musicoin", "shortcut": "MUSIC", "t1_enabled": "yes", @@ -19509,7 +19561,7 @@ "links": { "Homepage": "https://pirl.io" }, - "marketcap_usd": 1064914, + "marketcap_usd": 1076272, "name": "Pirl", "shortcut": "PIRL", "t1_enabled": "yes", @@ -19547,11 +19599,32 @@ } ] }, + "eth:REOSC": { + "links": { + "Homepage": "https://reosc.io" + }, + "marketcap_usd": 0, + "name": "REOSC Ecosystem", + "shortcut": "REOSC", + "t1_enabled": "yes", + "t2_enabled": "soon", + "type": "coin", + "wallet": [ + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, "eth:UBQ": { "links": { "Homepage": "https://ubiqsmart.com" }, - "marketcap_usd": 11022660, + "marketcap_usd": 10337464, "name": "Ubiq", "shortcut": "UBQ", "t1_enabled": "yes", @@ -19573,7 +19646,7 @@ "Github": "https://github.com/input-output-hk/cardano-sl", "Homepage": "https://www.cardano.org" }, - "marketcap_usd": 829562278, + "marketcap_usd": 1014081104, "name": "Cardano", "shortcut": "ADA", "t1_enabled": "no", @@ -19591,7 +19664,7 @@ "Github": "https://github.com/EOSIO/eos", "Homepage": "https://eos.io" }, - "marketcap_usd": 1876611746, + "marketcap_usd": 2303030611, "name": "EOS", "shortcut": "EOS", "t1_enabled": "no", @@ -19604,7 +19677,7 @@ "Github": "https://github.com/LiskHQ/lisk", "Homepage": "https://lisk.io/" }, - "marketcap_usd": 146420547, + "marketcap_usd": 163969212, "name": "Lisk", "shortcut": "LSK", "t1_enabled": "yes", @@ -19617,10 +19690,10 @@ "Github": "https://github.com/maidsafe", "Homepage": "https://maidsafe.net" }, - "marketcap_usd": 71134225, + "marketcap_usd": 62300073, "name": "MaidSafeCoin", "shortcut": "MAID", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", "wallet": [] @@ -19630,10 +19703,10 @@ "Github": "https://github.com/OmniLayer", "Homepage": "https://www.omnilayer.org" }, - "marketcap_usd": 1324438, + "marketcap_usd": 1433882, "name": "Omni", "shortcut": "OMNI", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", "wallet": [] @@ -19643,7 +19716,7 @@ "Github": "https://github.com/ontio/ontology", "Homepage": "https://ont.io" }, - "marketcap_usd": 170414205, + "marketcap_usd": 205404425, "name": "Ontology", "shortcut": "ONT", "t1_enabled": "no", @@ -19656,7 +19729,7 @@ "Github": "https://github.com/tronprotocol/java-tron", "Homepage": "https://tron.network" }, - "marketcap_usd": 911154632, + "marketcap_usd": 1281612590, "name": "Tron", "shortcut": "TRX", "t1_enabled": "no", @@ -19668,10 +19741,10 @@ "links": { "Homepage": "https://tether.to" }, - "marketcap_usd": 1884928041, + "marketcap_usd": 1889360741, "name": "Tether", "shortcut": "USDT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", "wallet": [] @@ -19681,7 +19754,7 @@ "Github": "https://github.com/wanchain/go-wanchain", "Homepage": "https://wanchain.org" }, - "marketcap_usd": 37748114, + "marketcap_usd": 40001099, "name": "Wanchain", "shortcut": "WAN", "t1_enabled": "yes", @@ -19694,7 +19767,7 @@ "Github": "https://github.com/stellar/stellar-core", "Homepage": "https://www.stellar.org" }, - "marketcap_usd": 2402428086, + "marketcap_usd": 2248186965, "name": "Stellar", "shortcut": "XLM", "t1_enabled": "yes", @@ -19712,7 +19785,7 @@ "Github": "https://github.com/monero-project/monero", "Homepage": "https://getmonero.org" }, - "marketcap_usd": 811434639, + "marketcap_usd": 854132663, "name": "Monero", "shortcut": "XMR", "t1_enabled": "no", @@ -19725,7 +19798,7 @@ "Github": "https://github.com/ripple/rippled", "Homepage": "https://ripple.com" }, - "marketcap_usd": 12984342755, + "marketcap_usd": 14489648951, "name": "Ripple", "shortcut": "XRP", "t1_enabled": "no", @@ -19738,7 +19811,7 @@ "Github": "https://github.com/tezos/tezos", "Homepage": "https://tezos.com" }, - "marketcap_usd": 249024201, + "marketcap_usd": 273408365, "name": "Tezos", "shortcut": "XTZ", "t1_enabled": "no", @@ -19772,7 +19845,7 @@ "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 2296914, + "marketcap_usd": 2279614, "name": "DIMCOIN", "shortcut": "DIM", "t1_enabled": "yes", @@ -19790,7 +19863,7 @@ "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 2296914, + "marketcap_usd": 2279614, "name": "DIM TOKEN", "shortcut": "DIMTOK", "t1_enabled": "yes", @@ -19841,7 +19914,7 @@ "links": { "Homepage": "https://nem.io" }, - "marketcap_usd": 678778409, + "marketcap_usd": 647754138, "name": "NEM", "shortcut": "XEM", "t1_enabled": "yes", @@ -19856,12 +19929,12 @@ } }, "info": { - "marketcap_supported": "89.70 %", - "marketcap_usd": 103774348342, - "t1_coins": 687, + "marketcap_supported": "88.73 %", + "marketcap_usd": 112285954348, + "t1_coins": 702, "t2_coins": 746, - "total_marketcap_usd": 115696077884, - "updated_at": 1544379077, - "updated_at_readable": "Sun Dec 9 19:11:17 2018" + "total_marketcap_usd": 126550482965, + "updated_at": 1545425454, + "updated_at_readable": "Fri Dec 21 21:50:54 2018" } } \ No newline at end of file From c8a57caf72b3363cba22f348122ee460a8ae4bc0 Mon Sep 17 00:00:00 2001 From: -k Date: Wed, 2 Jan 2019 06:05:56 -0500 Subject: [PATCH 683/767] axe: fix sign message constant (#256) --- defs/bitcoin/axe.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/defs/bitcoin/axe.json b/defs/bitcoin/axe.json index 69c26c6eb..e57e3e64b 100644 --- a/defs/bitcoin/axe.json +++ b/defs/bitcoin/axe.json @@ -10,7 +10,7 @@ "address_type_p2sh": 16, "maxfee_kb": 100000, "minfee_kb": 1000, - "signed_message_header": "AxeCoin Signed Message:\n", + "signed_message_header": "DarkCoin Signed Message:\n", "hash_genesis_block": "00000c33631ca6f2f61368991ce2dc03306b5bb50bf7cede5cfbba6db38e52e6", "xprv_magic": 50221816, "xpub_magic": 50221772, From 8bcc553a3dd95829416c10da3da9bec42cba641d Mon Sep 17 00:00:00 2001 From: Szymon Lesisz Date: Mon, 7 Jan 2019 14:51:14 +0100 Subject: [PATCH 684/767] extended Ripple definition (#259) added for all coins: - decimals - blockchain-link settings --- defs/misc/misc.json | 77 +++++++++++++++++++++++++++++++++++++-------- 1 file changed, 64 insertions(+), 13 deletions(-) diff --git a/defs/misc/misc.json b/defs/misc/misc.json index b3437748b..91bd66b56 100644 --- a/defs/misc/misc.json +++ b/defs/misc/misc.json @@ -4,147 +4,198 @@ "shortcut": "LSK", "slip44": 134, "curve": "ed25519", + "decimals": 8, "links": { "Homepage": "https://lisk.io/", "Github": "https://github.com/LiskHQ/lisk" }, - "wallet": {} + "wallet": {}, + "blockchain_link": {} }, { "name": "Stellar", "slip44": 148, "curve": "ed25519", "shortcut": "XLM", + "decimals": 7, "links": { "Homepage": "https://www.stellar.org", "Github": "https://github.com/stellar/stellar-core" }, "wallet": { "Account Viewer": "https://trezor.io/stellar/" - } + }, + "blockchain_link": {} }, { "name": "Monero", "shortcut": "XMR", "slip44": 128, "curve": "ed25519", + "decimals": 12, "links": { "Homepage": "https://getmonero.org", "Github": "https://github.com/monero-project/monero" }, - "wallet": {} + "wallet": {}, + "blockchain_link": {} }, { "name": "Ripple", "shortcut": "XRP", "slip44": 144, "curve": "secp256k1", + "decimals": 6, "links": { "Homepage": "https://ripple.com", "Github": "https://github.com/ripple/rippled" }, - "wallet": {} + "wallet": {}, + "blockchain_link": { + "type": "ripple", + "url": [ + "wss://s1.ripple.com", + "wss://s-east.ripple.com", + "wss://s-west.ripple.com" + ] + } + }, + { + "name": "Ripple Testnet", + "shortcut": "tXRP", + "slip44": 1, + "curve": "secp256k1", + "decimals": 6, + "links": { + "Homepage": "https://ripple.com", + "Github": "https://github.com/ripple/rippled" + }, + "wallet": {}, + "blockchain_link": { + "type": "ripple", + "url": [ + "wss://s.altnet.rippletest.net" + ] + } }, { "name": "Cardano", "shortcut": "ADA", "slip44": 1815, "curve": "ed25519", + "decimals": 6, "links": { "Homepage": "https://www.cardano.org", "Github": "https://github.com/input-output-hk/cardano-sl" }, "wallet": { "AdaLite": "https://adalite.io/app" - } + }, + "blockchain_link": {} }, { "name": "Tezos", "shortcut": "XTZ", "slip44": 1729, "curve": "ed25519", + "decimals": 6, "links": { "Homepage": "https://tezos.com", "Github": "https://github.com/tezos/tezos" }, "wallet": { "SimpleStaking": "https://simplestaking.com" - } + }, + "blockchain_link": {} }, { "name": "Ontology", "shortcut": "ONT", "slip44": 1024, "curve": "nist256p1", + "decimals": 8, "links": { "Homepage": "https://ont.io", "Github": "https://github.com/ontio/ontology" }, - "wallet": {} + "wallet": {}, + "blockchain_link": {} }, { "name": "Wanchain", "shortcut": "WAN", "slip44": 5718350, "curve": "secp256k1", + "decimals": 18, "links": { "Homepage": "https://wanchain.org", "Github": "https://github.com/wanchain/go-wanchain" }, - "wallet": {} + "wallet": {}, + "blockchain_link": {} }, { "name": "EOS", "shortcut": "EOS", "slip44": 194, "curve": "secp256k1", + "decimals": 4, "links": { "Homepage": "https://eos.io", "Github": "https://github.com/EOSIO/eos" }, - "wallet": {} + "wallet": {}, + "blockchain_link": {} }, { "name": "Tron", "shortcut": "TRX", "slip44": 195, "curve": "secp256k1", + "decimals": 6, "links": { "Homepage": "https://tron.network", "Github": "https://github.com/tronprotocol/java-tron" }, - "wallet": {} + "wallet": {}, + "blockchain_link": {} }, { "name": "Omni", "shortcut": "OMNI", "slip44": 0, "curve": "secp256k1", + "decimals": 2, "links": { "Homepage": "https://www.omnilayer.org", "Github": "https://github.com/OmniLayer" }, - "wallet": {} + "wallet": {}, + "blockchain_link": {} }, { "name": "MaidSafeCoin", "shortcut": "MAID", "slip44": 0, "curve": "secp256k1", + "decimals": 8, "links": { "Homepage": "https://maidsafe.net", "Github": "https://github.com/maidsafe" }, - "wallet": {} + "wallet": {}, + "blockchain_link": {} }, { "name": "Tether", "shortcut": "USDT", "slip44": 0, "curve": "secp256k1", + "decimals": 2, "links": { "Homepage": "https://tether.to" }, - "wallet": {} + "wallet": {}, + "blockchain_link": {} } ] From b42aa8096b2a954328f983248fce7a99fbf540e0 Mon Sep 17 00:00:00 2001 From: Tomas Susanka Date: Tue, 8 Jan 2019 15:49:11 +0100 Subject: [PATCH 685/767] protob: add destination tag field for ripple --- protob/messages-ripple.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/protob/messages-ripple.proto b/protob/messages-ripple.proto index 5d13c909e..ce31fbf0b 100644 --- a/protob/messages-ripple.proto +++ b/protob/messages-ripple.proto @@ -45,6 +45,7 @@ message RippleSignTx { message RipplePayment { optional uint64 amount = 1; // only XRP is supported at the moment so this an integer optional string destination = 2; // destination account address + optional uint32 destination_tag = 3; // destination tag to identify payments } } From 60f43b2db31e3eac1da7f483e13773a1a61bd431 Mon Sep 17 00:00:00 2001 From: Tomas Susanka Date: Wed, 9 Jan 2019 14:22:16 +0100 Subject: [PATCH 686/767] protob: add chain_id to EthGetAddress --- protob/messages-ethereum.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/protob/messages-ethereum.proto b/protob/messages-ethereum.proto index 7ff9010b8..af9b0a263 100644 --- a/protob/messages-ethereum.proto +++ b/protob/messages-ethereum.proto @@ -38,6 +38,7 @@ message EthereumPublicKey { message EthereumGetAddress { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node optional bool show_display = 2; // optionally show on display before sending the result + optional uint32 chain_id = 3; // Chain Id for EIP 155 } /** From 7c151de354e0dbf9aeff21df2dffe1f9ab585b48 Mon Sep 17 00:00:00 2001 From: Tomas Susanka Date: Fri, 11 Jan 2019 10:55:29 +0100 Subject: [PATCH 687/767] protob: remove chain_id from get address and get public key --- protob/messages-ethereum.proto | 2 -- 1 file changed, 2 deletions(-) diff --git a/protob/messages-ethereum.proto b/protob/messages-ethereum.proto index af9b0a263..96a1d9323 100644 --- a/protob/messages-ethereum.proto +++ b/protob/messages-ethereum.proto @@ -17,7 +17,6 @@ import "messages-common.proto"; message EthereumGetPublicKey { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node optional bool show_display = 2; // optionally show on display before sending the result - optional uint32 chain_id = 3; // eth chain } /** @@ -38,7 +37,6 @@ message EthereumPublicKey { message EthereumGetAddress { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node optional bool show_display = 2; // optionally show on display before sending the result - optional uint32 chain_id = 3; // Chain Id for EIP 155 } /** From 86406218194255035bd044d9e076316e99608ad4 Mon Sep 17 00:00:00 2001 From: ca333 Date: Fri, 11 Jan 2019 11:23:33 +0100 Subject: [PATCH 688/767] add Komodo [KMD] (#260) --- defs/bitcoin/komodo.json | 41 +++++++++++++++++++++++++++++++++++++++ defs/bitcoin/komodo.png | Bin 0 -> 3400 bytes 2 files changed, 41 insertions(+) create mode 100644 defs/bitcoin/komodo.json create mode 100644 defs/bitcoin/komodo.png diff --git a/defs/bitcoin/komodo.json b/defs/bitcoin/komodo.json new file mode 100644 index 000000000..084616088 --- /dev/null +++ b/defs/bitcoin/komodo.json @@ -0,0 +1,41 @@ +{ + "coin_name": "Komodo", + "coin_shortcut": "KMD", + "coin_label": "Komodo", + "website": "https://komodoplatform.com", + "github": "https://github.com/komodoplatform/komodo", + "maintainer": "Kadan Stadelmann ", + "curve_name": "secp256k1", + "address_type": 60, + "address_type_p2sh": 85, + "maxfee_kb": 1000000, + "minfee_kb": 1000, + "signed_message_header": "Komodo Signed Message:\n", + "hash_genesis_block": "027e3758c3a65b12aa1046462b486d0a63bfa1beae327897f56c5cfb7daaae71", + "xprv_magic": 76066276, + "xpub_magic": 76067358, + "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "slip44": 141, + "segwit": false, + "decred": false, + "fork_id": null, + "force_bip143": false, + "bip115": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 546, + "blocktime_seconds": 60, + "uri_prefix": "komodo", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [ + "https://www.kmdexplorer.io", + "https://kmdexplorer.ru" + ], + "blockbook": [], + "cooldown": 100 +} diff --git a/defs/bitcoin/komodo.png b/defs/bitcoin/komodo.png new file mode 100644 index 0000000000000000000000000000000000000000..4e55b520c1b61b74c6120cdf70a14c2fd1dfa66e GIT binary patch literal 3400 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 eM?d<}2k}2xyOpq$C*v9b0000 Date: Mon, 14 Jan 2019 20:57:46 +0900 Subject: [PATCH 689/767] mod fujicoin (#261) --- defs/bitcoin/fujicoin.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/defs/bitcoin/fujicoin.json b/defs/bitcoin/fujicoin.json index b88f97ac8..cc6763236 100644 --- a/defs/bitcoin/fujicoin.json +++ b/defs/bitcoin/fujicoin.json @@ -35,9 +35,9 @@ "uri_prefix": "fujicoin", "min_address_length": 27, "max_address_length": 34, - "bitcore": [ + "bitcore": [], + "blockbook": [ "https://explorer.fujicoin.org" ], - "blockbook": [], "cooldown": 100 } From ecafb8642c42725df441527cd3d8546680b7fbed Mon Sep 17 00:00:00 2001 From: Peter Grassberger Date: Wed, 16 Jan 2019 13:47:47 +0100 Subject: [PATCH 690/767] add eth network: ARTIS sigma1 & tau1 (#258) --- defs/ethereum/artis_sigma1.png | Bin 0 -> 4601 bytes defs/ethereum/artis_tau1.png | Bin 0 -> 4426 bytes defs/ethereum/networks.json | 20 ++++++++++++++++++++ defs/support.json | 3 ++- 4 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 defs/ethereum/artis_sigma1.png create mode 100644 defs/ethereum/artis_tau1.png diff --git a/defs/ethereum/artis_sigma1.png b/defs/ethereum/artis_sigma1.png new file mode 100644 index 0000000000000000000000000000000000000000..6250778d491c2e2b76139ce5adbd7cd0f07860f6 GIT binary patch literal 4601 zcmVCiMi*$nvQDM4qE2L-T&mz;UxNsrq78g;})F?_e)>NSjDUeiCDhh#gsX>fr zh`_o{=E0@eec$EebCJCUe&Aj-Z}T2@0@$?xevVg=9{#{#l?e5*Sc+X1( zhy)0KOhhY|D;`ezqb=iT!&oXn1+==I4SZYtyGcY>JXd>q(jOfdM;pYF12~`wSpD~! z{aa253$RpxT#!J(KCFAr*N*#I0b1RTc;Txx3fPCS=X~v`RRNR{Coq`wN2kVzid|0% znETg8#+t;X+-|5A64>f?HW41JX{T;Y`lD^*3-j-Bf^9;;Cm6kBki9CuofQ#Gt^g4J z3&x2#enLbqW+dQqf0O=bOmpjXz$meVi1*)4L=PEf%+GD)k|3%>0mhD(Ru{YiwxQMS zv>|vGZ#X8RZE>wuxAQy^Jw-(CFg`VhxS#c^E-(g?DgZ{!OU8-#5TiUOrkS!`}d+|TZ$KiW6W%;8gj zYprf)x9JpdE(-8JBKjT7a&iIN0E@Nn$>`mJ@O|dH=dm6FH(T9~h=z`gGc_T#3lL`X zHRFVd?-9{26cQ+2UeD*BBi^U*^Sjz4j*dGblUL-PTHTKRa!(jO)F>&eg9Lt`h(2wc zFfj{{5dMkip$%(r#QE7s_qPjQZ!`BN@biU7DZ>Mf@jSYs4WR_JlfpV&z<-P*JZ`tT z9TG}_(Qq~*U_~}t-OheY>)^;uNW_@N)fHd^O1-YRnJb7iHjOJJMiVaJpG5R?B6>Fw zJ!*W(lPIZb9q|2q4?#P`sIQu-Yhr<$P8gzQL=T~FoiIHXnpJqa|#h}~5_BYf)< z#+OT^OfkBpnI&l*poqK7h?AIN#79rjGS4@Q|G_`>NMVX3k)gyXkgO;a=1=#poO#=V zV(7Sycsv+_JBZPR`33QEKho-U{thc-6aJo1n1uOxeKgNp4+g@qc3#|PZDC=`s$hMR zXUaVo{OpE92@21lE9u*>6Vb!Q2kt?<_{%~FiP^Vd&b3+5EkqhBuE0GeM-l~q0Ccl{ zWP8ybCFq4Jf$;M%tFJJ>FL44tyIF^sMMN{z4sR&uPr+mK&)g_#0m~qj1>kPn8BRHr zU?oHe@UjMsPnDR0fVJx+S%Cg~=jH&QB;2%kDGOKxsqz5&!`ulOZ9)lP9(!7xER^7v zt#0SrMD#k2iJ80ue15l%u&x4nnng1170U)CrgB&rabYSU4%8N|?sN zp#(Z?C04@EKPkek911UdJb*c_fA$(Oq0tdl0Wh-l(O8PjLJ77oQy7XV!n*Y)XV@%o z@&E}%`E@*-f)vKK036Y)63(0!xW_{XK6O}E7S?=#4p@w*jT1!su}NVx1yItmDvm3L zT25D?0)9TbvTFrFJU{|&^H4i1_`m_)bri(309>_fRlgPLzyE9;$qWT~fCNVhuf$wk z6jK3o^M4W{-rj^8@Zpc1^SL012S_-QL{A{$RT)tfpg`Wg$TbDwxs6#q7p9J^Uv3EI z0TOU)T%Ev8mkS9+EDNBs(`gkm1?|4A9saNJL84cQ=D=!U(ep^|h`*bY{^&iE{^(c6Co@G!9&iTN%wZK$7$X(T z<*-Yce@B6cC?a{rIJ%h7)50HR_>&D=Oq%=(-gl`SK@1n5|M0L(_RS;w>^f^yfbIq! zMZt;}N^*>wISjgnj!FuEvZl)9?*a**7zH?ks2mF90|REz2|QOONmQvMj46AbPWmIK zKavkAL&TWE$F=KNZZ)n_LB!Mv?g<}{$Y)coGc>+<{u=wt%;6N(O~L%DGzW;0_m3s~ zz=F@H5Xx4;I_W$>4vGWR5N^w7vI$en9Ad<)GFZX2gDpW77r^ zz}z$EU{@RCkuANRTMxMQfS`)5+06A-aK7qROQ}`k%7SjbpJ2j zCEmrr#t)QCp^o60!%_+mQ1rn_4Sk{}7)9~{f-8yoMPcQj2yN|r zrJ2K0Bv7nq)nZYR_jhKbAbdTBm8je{1rOU}6qDq71mkFVR3d@oSubFN(zC$e2Npi% zZA4L60q~;lYKQk+Yv@u7U-_LaCWRdRcVd8BH8tsv9tgR#vYL6IE+u0ICixVrj0@mM ziIsHJC48FCp>sKNN>NNv5vAq@$m9n-t=}P6PG%jPg)D$&v8R=_*C~AMcR6!NW#Z(N zu;l|vJnuF_zgwUb3H04Hcxh>B0HRrml`NI}XP181_TMii9m5X=# zA#up~&>YW7B?wl4(4r3q8?Ut$ibn}_nurXzNt`m6!di&yU50!9 zDmt=pIF@pCx&ZjiSG2=>Xz9x3+#55cMUcy!0n>d$x#ZZRXC zJ`!jf5!}mL2;tMb@gVH|S;S0ROu=hLH$DW;Xr!Kwh3#hz2kOIsM> zOL!uKc1`>Hh&7GxH;$gi>y!S-)(2q*P54~79?NlD9DrNwX`5?bDB&xxS-86JV!-cw z!#JWr6+X^z&&9emmjc)_Xet&~_^@z|Hj$Y0N1r94zZoay7}`dzgf4uG<+hgVu?m3c zMJ`^}Z*EaXJ~{RUI4Q6!JqA8VM89FKbLe}&%*ZE;<+du(ED9)CTHSQltxB-8Xr(6e z7feLp>=|qkKG&YtS+1v&KwFkfhqVA?5r7xR37@bbMD`WN4&fJGrvD&?n|!(tgum{1 zAv+m1mNH-yKETO_``iqY18`r|@y3D+f7Ozb|1k;>z9sMP{EmuQCJ;Y#6-k~uo)o2o@T)Izix!)Nhx9E3|0{iam zFdIM$^YbKbf-6{D13$QfiKC>9+r#)zQR!oxD2Z{?lVKQKx}_`3ZGzSXV5iFst$uw4 zvxl-q-L?;}P>#E;ZYT8&qU+(;EcaFx*HAUoq)Xw#@WQo>P8Y!ZAlJHFkiH{KIqo<( z!wv8Qu39AqIL4n6oYkuZW%K?Vf)ya7OC`c9p$NB(3*5sB*5r+2CX#Z^MI;3G?pzko zibBi7L%LKd%akuO&5b2wBB>WccuFG6W_?m%r^esX!7bA-#j&h;02hjMsf2)Sp_#-X znjW!rYX$CWwMdi13K+*O8xPF`SauyRy_TVLt5~K@EV&XbF!}o)U)^{jsVNjt0KK~y zJMcnLrBP&|E|t*GHiT?5)iRO9xtR+O%QF3gDg&mp0+i`eskA{|cQjgD$$g@!L2wyX zcEE+AQoH!FT`H9}XV)?D#6eCp^%l4gB{uYd6|^U_3zgc%OIX^ndAn39-xrqTTSW9; z_z`GB&U9uM?P9{T0C5p9H8 zgvW%{S)}S^2e^6fynpFEnQcg_05sq9SRb`3Hh+$A z(v{%2ZX6-{A*MtxPx_My^9fr5qu!i!u7sP~4BJPl^b!}Z7Ud%odn)z7EmUTO2R{GjDUJUqN749G#JWGX;&-Dxuebdo` zCuw7@MihYT{+y&w$LL&@Bgaw=dzB-KHn_H4Eph*=ie=yyY5FjPLVSUU-s<@5Dk<#eKbuI>f$MC+og{maP%81a8^JoL;1WX7(5M0ca@$jN)La4a8Q^8EG6c*? zs+88Zr**c01HWjaxMhsz;I`cfMbb5ojVplg!|?9|?O_Fz{u7jg3kj_j0A*;aF!!-n z@T}w7ZRRiL3glXlg9SKC+rmfdB=3tvbcv}E7;*#-inNKv5>^FqL2*4&(CWW+uRx}X zv!7mMp#X%0POID5W12jCMvztQ*tv}sV0QO?eqLKUsBXDV4K4TnJ*uExa!9(VMWayw z2WIUXhY>bNCh6y)0Maz;BX>12GY`cO_cqY~Rn|9f>2ZnV8(8J2076)Q@GKG`?2Gp= zB6<~zLz?iv(meOne~Y>wSg>uyIt^0r7Y^Ae0Nr~bKN1NL<3zofaw8W}MfQ6Ngu>-} zn#4P6_-&D=A9H_;yu_?1a#esB@cQ2+@>PIwAS?eh5&aDRFXewPI&$Rz+?KUE7JB=d zTu^I4NGRZgxxNDuL#AYUi4w@t0!SzY8!|62M6##p9Y60IWUT;8q(_!6V2S#$RDcVP jr2<@VEEV7)gNXhQWbh7h)4Dl>00000NkvXXu0mjfc^#Th literal 0 HcmV?d00001 diff --git a/defs/ethereum/artis_tau1.png b/defs/ethereum/artis_tau1.png new file mode 100644 index 0000000000000000000000000000000000000000..929f5c9727552c16826d3d2b0270d9071a8392df GIT binary patch literal 4426 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 Q>;M1&07*qoM6N<$f**}CZvX%Q literal 0 HcmV?d00001 diff --git a/defs/ethereum/networks.json b/defs/ethereum/networks.json index 4e9f3393f..8a34b2644 100644 --- a/defs/ethereum/networks.json +++ b/defs/ethereum/networks.json @@ -217,6 +217,26 @@ "url": "https://akroma.io", "blockbook": [] }, + { + "chain": "artis_sigma1", + "chain_id": 246529, + "slip44": 246529, + "shortcut": "ATS (ARTIS sigma1)", + "name": "ARTIS sigma1", + "rskip60": false, + "url": "https://artis.eco", + "blockbook": [] + }, + { + "chain": "artis_tau1", + "chain_id": 246785, + "slip44": 246785, + "shortcut": "tATS (ARTIS tau1)", + "name": "ARTIS tau1", + "rskip60": false, + "url": "https://artis.eco", + "blockbook": [] + }, { "chain": "music", "chain_id": 7762959, diff --git a/defs/support.json b/defs/support.json index 2182a19fc..b8362a33e 100644 --- a/defs/support.json +++ b/defs/support.json @@ -819,6 +819,7 @@ "erc20:eth:A18:bde8": "(AUTO) duplicate key", "erc20:eth:ATH": "(AUTO) duplicate key", "erc20:eth:ATH (AIgatha Token)": "(AUTO) duplicate key", + "erc20:eth:ATS": "(AUTO) duplicate key", "erc20:eth:BCAP:1f41": "(AUTO) duplicate key", "erc20:eth:BCAP:ff35": "(AUTO) duplicate key", "erc20:eth:BNC:dd6b": "(AUTO) duplicate key", @@ -1080,7 +1081,6 @@ "erc20:eth:ATL": "2.0.7", "erc20:eth:ATM": "2.0.10", "erc20:eth:ATMI": "2.0.7", - "erc20:eth:ATS": "2.0.10", "erc20:eth:ATT": "2.0.7", "erc20:eth:ATTN": "2.0.7", "erc20:eth:ATX": "2.0.10", @@ -2112,6 +2112,7 @@ "erc20:eth:A18:bde8": "(AUTO) duplicate key", "erc20:eth:ATH": "(AUTO) duplicate key", "erc20:eth:ATH (AIgatha Token)": "(AUTO) duplicate key", + "erc20:eth:ATS": "(AUTO) duplicate key", "erc20:eth:BCAP:1f41": "(AUTO) duplicate key", "erc20:eth:BCAP:ff35": "(AUTO) duplicate key", "erc20:eth:BNC:dd6b": "(AUTO) duplicate key", From ad1bc863cb5a8d18286c741e1a97c655561151da Mon Sep 17 00:00:00 2001 From: matejcik Date: Wed, 16 Jan 2019 13:52:18 +0100 Subject: [PATCH 691/767] cointool: add genesis block collision check --- tools/cointool.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tools/cointool.py b/tools/cointool.py index 0b8d71fc4..1f9291ff2 100755 --- a/tools/cointool.py +++ b/tools/cointool.py @@ -266,6 +266,10 @@ def check_btc(coins): # we ignore failed checks on P2SH, because reasons print_collision_buckets(address_type_p2sh, "address type", logging.WARNING) + print("Checking genesis block collisions...") + genesis = find_collisions(coins, "hash_genesis_block") + print_collision_buckets(genesis, "genesis block", logging.WARNING) + return check_passed From 0b1d5b7a91438ff6b06bac0eaab24a7a61e80d08 Mon Sep 17 00:00:00 2001 From: matejcik Date: Wed, 16 Jan 2019 13:53:10 +0100 Subject: [PATCH 692/767] defs: add URLs for some tokens --- defs/coins_details.override.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/defs/coins_details.override.json b/defs/coins_details.override.json index c8b7695ee..c187a102e 100644 --- a/defs/coins_details.override.json +++ b/defs/coins_details.override.json @@ -5,6 +5,11 @@ "bitcoin:MUE": { "name": "MonetaryUnit" }, + "erc20:eth:AOA": { + "links": { + "Homepage": "https://www.aurorachain.io/" + } + }, "erc20:eth:BAT": { "name": "Basic Attention Token" }, @@ -29,6 +34,11 @@ "erc20:eth:PAX": { "coinmarketcap_alias": "paxos-standard-token" }, + "erc20:eth:TUSD": { + "links": { + "Homepage": "https://www.trusttoken.com/" + } + }, "erc20:eth:USDC": { "coinmarketcap_alias": "usd-coin" }, From 616c9fa7c01df32e9db6b25e54ea4ceb00eb9e1d Mon Sep 17 00:00:00 2001 From: matejcik Date: Wed, 16 Jan 2019 14:02:16 +0100 Subject: [PATCH 693/767] defs: add missing blockbook backends --- defs/bitcoin/digibyte.json | 7 ++++--- defs/ethereum/networks.json | 3 ++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/defs/bitcoin/digibyte.json b/defs/bitcoin/digibyte.json index 52939f657..a7041e970 100644 --- a/defs/bitcoin/digibyte.json +++ b/defs/bitcoin/digibyte.json @@ -35,9 +35,10 @@ "uri_prefix": "digibyte", "min_address_length": 27, "max_address_length": 34, - "bitcore": [ - "https://explorer.digibyteprojects.com" + "bitcore": [], + "blockbook": [ + "https://dgb1.trezor.io", + "https://dgb2.trezor.io" ], - "blockbook": [], "cooldown": 100 } diff --git a/defs/ethereum/networks.json b/defs/ethereum/networks.json index 8a34b2644..8a76326af 100644 --- a/defs/ethereum/networks.json +++ b/defs/ethereum/networks.json @@ -31,7 +31,8 @@ "rskip60": false, "url": "https://www.ethereum.org", "blockbook": [ - "https://ropsten1.trezor.io" + "https://ropsten1.trezor.io", + "https://ropsten2.trezor.io" ] }, { From 5a5c0db19469311ea3fa89d0e27372e78e2263f5 Mon Sep 17 00:00:00 2001 From: matejcik Date: Wed, 16 Jan 2019 14:05:56 +0100 Subject: [PATCH 694/767] defs: drop non-responding bitcore backends --- defs/bitcoin/crown.json | 4 +--- defs/bitcoin/komodo.json | 5 +---- defs/bitcoin/nix.json | 7 ++----- 3 files changed, 4 insertions(+), 12 deletions(-) diff --git a/defs/bitcoin/crown.json b/defs/bitcoin/crown.json index 71c36b31f..07cfbc288 100644 --- a/defs/bitcoin/crown.json +++ b/defs/bitcoin/crown.json @@ -32,9 +32,7 @@ "uri_prefix": "crown", "min_address_length": 27, "max_address_length": 34, - "bitcore": [ - "https://crw-bitcore.crown.tech" - ], + "bitcore": [], "blockbook": [], "cooldown": 100 } diff --git a/defs/bitcoin/komodo.json b/defs/bitcoin/komodo.json index 084616088..b81d7fee6 100644 --- a/defs/bitcoin/komodo.json +++ b/defs/bitcoin/komodo.json @@ -32,10 +32,7 @@ "uri_prefix": "komodo", "min_address_length": 27, "max_address_length": 34, - "bitcore": [ - "https://www.kmdexplorer.io", - "https://kmdexplorer.ru" - ], + "bitcore": [], "blockbook": [], "cooldown": 100 } diff --git a/defs/bitcoin/nix.json b/defs/bitcoin/nix.json index 28c1a18fa..e094ab2c1 100644 --- a/defs/bitcoin/nix.json +++ b/defs/bitcoin/nix.json @@ -32,10 +32,7 @@ "uri_prefix": "nix", "min_address_length": 27, "max_address_length": 34, - "bitcore": [ - "https://blockchain.nixplatform.io" - ], - "blockbook": [ - ], + "bitcore": [], + "blockbook": [], "cooldown": 100 } From aeb6c351e3c6b1c7db41e440a58251b28227b58e Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 18 Jan 2019 15:38:14 +0100 Subject: [PATCH 695/767] defs: fix ATS entries --- defs/ethereum/networks.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/defs/ethereum/networks.json b/defs/ethereum/networks.json index 8a76326af..f78ce2c69 100644 --- a/defs/ethereum/networks.json +++ b/defs/ethereum/networks.json @@ -222,7 +222,7 @@ "chain": "artis_sigma1", "chain_id": 246529, "slip44": 246529, - "shortcut": "ATS (ARTIS sigma1)", + "shortcut": "ATS", "name": "ARTIS sigma1", "rskip60": false, "url": "https://artis.eco", @@ -231,8 +231,8 @@ { "chain": "artis_tau1", "chain_id": 246785, - "slip44": 246785, - "shortcut": "tATS (ARTIS tau1)", + "slip44": 1, + "shortcut": "tATS", "name": "ARTIS tau1", "rskip60": false, "url": "https://artis.eco", From b947aa3d45af58605f8f090078a2de3d5878571d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20Korba=C5=A1?= Date: Fri, 18 Jan 2019 15:48:25 +0100 Subject: [PATCH 696/767] replace network with protocol magic on cardano (#244) --- protob/messages-cardano.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protob/messages-cardano.proto b/protob/messages-cardano.proto index 2970206a3..c18f7b99a 100644 --- a/protob/messages-cardano.proto +++ b/protob/messages-cardano.proto @@ -57,7 +57,7 @@ message CardanoSignTx { repeated CardanoTxInputType inputs = 1; // inputs to be used in transaction repeated CardanoTxOutputType outputs = 2; // outputs to be used in transaction optional uint32 transactions_count = 3; // transactions count - optional uint32 network = 4; // network number + optional uint32 protocol_magic = 5; // network's protocol magic /** * Structure representing cardano transaction input */ From 886f2e076cff5986c6695e5d52bd4769fb7c6f1a Mon Sep 17 00:00:00 2001 From: Tomas Susanka Date: Fri, 25 Jan 2019 15:17:52 +0100 Subject: [PATCH 697/767] protobuf/eth: EthereumAddress now sends string instead of bytes --- protob/messages-ethereum.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protob/messages-ethereum.proto b/protob/messages-ethereum.proto index 96a1d9323..d59114350 100644 --- a/protob/messages-ethereum.proto +++ b/protob/messages-ethereum.proto @@ -44,7 +44,7 @@ message EthereumGetAddress { * @end */ message EthereumAddress { - required bytes address = 1; // Coin address as an Ethereum 160 bit hash + required string address = 2; // Ethereum address as string } /** From 534d15f208dccb1091f85381c9946d7c97c7c881 Mon Sep 17 00:00:00 2001 From: Tomas Susanka Date: Fri, 25 Jan 2019 15:46:26 +0100 Subject: [PATCH 698/767] protobuf/eth: MessageSignature and VerifyMessage have also address as a string --- protob/messages-ethereum.proto | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/protob/messages-ethereum.proto b/protob/messages-ethereum.proto index d59114350..49d1c69c0 100644 --- a/protob/messages-ethereum.proto +++ b/protob/messages-ethereum.proto @@ -106,8 +106,8 @@ message EthereumSignMessage { * @end */ message EthereumMessageSignature { - optional bytes address = 1; // address used to sign the message optional bytes signature = 2; // signature of the message + optional string address = 3; // address used to sign the message } /** @@ -117,7 +117,7 @@ message EthereumMessageSignature { * @next Failure */ message EthereumVerifyMessage { - optional bytes address = 1; // address to verify optional bytes signature = 2; // signature to verify optional bytes message = 3; // message to verify + optional string address = 4; // address to verify } From 101242f902bc628a076dca6e91a89ba3e390e116 Mon Sep 17 00:00:00 2001 From: Tomas Susanka Date: Fri, 25 Jan 2019 16:06:26 +0100 Subject: [PATCH 699/767] protobuf/eth: also 'to' is string --- protob/messages-ethereum.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protob/messages-ethereum.proto b/protob/messages-ethereum.proto index 49d1c69c0..0910df710 100644 --- a/protob/messages-ethereum.proto +++ b/protob/messages-ethereum.proto @@ -60,7 +60,7 @@ message EthereumSignTx { optional bytes nonce = 2; // <=256 bit unsigned big endian optional bytes gas_price = 3; // <=256 bit unsigned big endian (in wei) optional bytes gas_limit = 4; // <=256 bit unsigned big endian - optional bytes to = 5; // 160 bit address hash + optional string to = 11; // recipient address optional bytes value = 6; // <=256 bit unsigned big endian (in wei) optional bytes data_initial_chunk = 7; // The initial data chunk (<= 1024 bytes) optional uint32 data_length = 8; // Length of transaction payload From 495b35e212f48ea2ac9e356febd5a49c3ee5254b Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 28 Jan 2019 18:38:10 +0100 Subject: [PATCH 700/767] protob: don't use required for eth fields --- protob/messages-ethereum.proto | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/protob/messages-ethereum.proto b/protob/messages-ethereum.proto index 0910df710..abc699010 100644 --- a/protob/messages-ethereum.proto +++ b/protob/messages-ethereum.proto @@ -24,7 +24,7 @@ message EthereumGetPublicKey { * @end */ message EthereumPublicKey { - required hw.trezor.messages.common.HDNodeType node = 1; // BIP32 public node + optional hw.trezor.messages.common.HDNodeType node = 1; // BIP32 public node optional string xpub = 2; // serialized form of public node } @@ -44,7 +44,7 @@ message EthereumGetAddress { * @end */ message EthereumAddress { - required string address = 2; // Ethereum address as string + optional string address = 2; // Ethereum address as string } /** @@ -98,7 +98,7 @@ message EthereumTxAck { */ message EthereumSignMessage { repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node - required bytes message = 2; // message to be signed + optional bytes message = 2; // message to be signed } /** From e1d15264534e4fe187aedc27372667f06ebf566c Mon Sep 17 00:00:00 2001 From: matejcik Date: Mon, 28 Jan 2019 18:49:56 +0100 Subject: [PATCH 701/767] protob: EOS support (#231) --- protob/Makefile | 2 +- protob/messages-eos.proto | 283 ++++++++++++++++++++++++++++++++++++++ protob/messages.proto | 8 ++ 3 files changed, 292 insertions(+), 1 deletion(-) create mode 100644 protob/messages-eos.proto diff --git a/protob/Makefile b/protob/Makefile index bfd529254..623959ce5 100644 --- a/protob/Makefile +++ b/protob/Makefile @@ -1,4 +1,4 @@ -check: messages.pb messages-bitcoin.pb messages-bootloader.pb messages-cardano.pb messages-common.pb messages-crypto.pb messages-debug.pb messages-ethereum.pb messages-lisk.pb messages-management.pb messages-monero.pb messages-nem.pb messages-ripple.pb messages-stellar.pb messages-tezos.pb messages-ontology.pb messages-tron.pb +check: messages.pb messages-bitcoin.pb messages-bootloader.pb messages-cardano.pb messages-common.pb messages-crypto.pb messages-debug.pb messages-ethereum.pb messages-lisk.pb messages-management.pb messages-monero.pb messages-nem.pb messages-ripple.pb messages-stellar.pb messages-tezos.pb messages-ontology.pb messages-tron.pb messages-eos.pb %.pb: %.proto protoc -I/usr/include -I. $< -o $@ diff --git a/protob/messages-eos.proto b/protob/messages-eos.proto new file mode 100644 index 000000000..c66799e56 --- /dev/null +++ b/protob/messages-eos.proto @@ -0,0 +1,283 @@ +syntax = "proto2"; +package hw.trezor.messages.eos; + +// Sugar for easier handling in Java +option java_package = "com.satoshilabs.trezor.lib.protobuf"; +option java_outer_classname = "TrezorMessageEos"; + +/** + * Request: Ask device for Eos public key corresponding to address_n path + * @start + * @next EosPublicKey + * @next Failure + */ +message EosGetPublicKey { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node 44'/194'/0' + optional bool show_display = 2; // optionally show on display before sending the result +} + +/** + * Response: Contains an Eos public key derived from device private seed + * @end + */ +message EosPublicKey { + optional string wif_public_key = 1; // EOS pub key in Base58 encoding + optional bytes raw_public_key = 2; // Raw public key +} + +/** + * Request: Ask device to sign transaction + * @start + * @next EosTxRequest + * @next Failure + */ +message EosSignTx { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node 44'/194'/0' + optional bytes chain_id = 2; // 256-bit long chain id + optional EosTxHeader header = 3; // EOS transaction header + optional uint32 num_actions = 4; // number of actions + + /** + * Structure representing EOS transaction header + */ + message EosTxHeader { + required uint32 expiration = 1; // time at which transaction expires + required uint32 ref_block_num = 2; // 16-bit specifies a block num in the last 2^16 blocks. + required uint32 ref_block_prefix = 3; // specifies the lower 32 bits of the blockid at get_ref_blocknum + required uint32 max_net_usage_words = 4; // upper limit on total network bandwidth (in 8 byte words) billed for this transaction + required uint32 max_cpu_usage_ms = 5; // 8-bit upper limit on the total CPU time billed for this transaction + required uint32 delay_sec = 6; // number of seconds to delay this transaction for during which it may be canceled. + } +} + +/** + * Response: Device asks to upload next action + * @next EosTxActionAck + */ +message EosTxActionRequest { + optional uint32 data_size = 1; +} + +/** + * Request: Next action data that needs to be uploaded + * @next EosTxActionRequest + * @next EosSignedTx + * @next Failure + */ +message EosTxActionAck { + optional EosActionCommon common = 1; + optional EosActionTransfer transfer = 2; + optional EosActionDelegate delegate = 3; + optional EosActionUndelegate undelegate = 4; + optional EosActionRefund refund = 5; + optional EosActionBuyRam buy_ram = 6; + optional EosActionBuyRamBytes buy_ram_bytes = 7; + optional EosActionSellRam sell_ram = 8; + optional EosActionVoteProducer vote_producer = 9; + optional EosActionUpdateAuth update_auth = 10; + optional EosActionDeleteAuth delete_auth = 11; + optional EosActionLinkAuth link_auth = 12; + optional EosActionUnlinkAuth unlink_auth = 13; + optional EosActionNewAccount new_account = 14; + optional EosActionUnknown unknown = 15; + + /** + * Structure representing asset type + */ + message EosAsset { + optional sint64 amount = 1; + optional uint64 symbol = 2; // Lowest 8 bits used for precision. + } + + /** + * Structure representing action permission level + */ + message EosPermissionLevel { + optional uint64 actor = 1; + optional uint64 permission = 2; + } + + /** + * Structure representing auth key + */ + message EosAuthorizationKey { + optional uint32 type = 1; + optional bytes key = 2; // Explicit public key bytes; when present, address_n must be empty + repeated uint32 address_n = 3; // BIP-32 path to derive key; when filled out, key must not be present + optional uint32 weight = 4; + } + + /** + * Structure representing auth account + */ + message EosAuthorizationAccount { + optional EosPermissionLevel account = 1; + optional uint32 weight = 2; + } + + /** + * Structure representing auth delays + */ + message EosAuthorizationWait { + optional uint32 wait_sec = 1; + optional uint32 weight = 2; + } + + /** + * Structure representing authorization settings + */ + message EosAuthorization { + optional uint32 threshold = 1; + repeated EosAuthorizationKey keys = 2; + repeated EosAuthorizationAccount accounts = 3; + repeated EosAuthorizationWait waits = 4; + } + + /** + * Structure representing the common part of every action + */ + message EosActionCommon { + optional uint64 account = 1; // Contract name + optional uint64 name = 2; // Action name + repeated EosPermissionLevel authorization = 3; + } + + /** + * Structure representing transfer data structure + */ + message EosActionTransfer { + optional uint64 sender = 1; // Asset sender + optional uint64 receiver = 2; + optional EosAsset quantity = 3; + optional string memo = 4; + } + + /** + * Structure representing delegation data structure + */ + message EosActionDelegate { + optional uint64 sender = 1; + optional uint64 receiver = 2; + optional EosAsset net_quantity = 3; // Asset format '1.0000 EOS' + optional EosAsset cpu_quantity = 4; // Asset format '1.0000 EOS' + optional bool transfer = 5; // Transfer delegated tokens or not. + } + + /** + * Structure representing the removal of delegated resources from `sender` + */ + message EosActionUndelegate { + optional uint64 sender = 1; + optional uint64 receiver = 2; + optional EosAsset net_quantity = 3; // Asset format '1.0000 EOS' + optional EosAsset cpu_quantity = 4; // Asset format '1.0000 EOS' + } + + /** + * Structure representing fallback if undelegate wasnt executed automaticaly. + */ + message EosActionRefund { + optional uint64 owner = 1; + } + + /** + * Structure representing buying RAM operation for EOS tokens + */ + message EosActionBuyRam { + optional uint64 payer = 1; + optional uint64 receiver = 2; + optional EosAsset quantity = 3; // Asset format '1.0000 EOS' + } + + /** + * Structure representing buying bytes according to RAM market price. + */ + message EosActionBuyRamBytes { + optional uint64 payer = 1; + optional uint64 receiver = 2; + optional uint32 bytes = 3; // Number of bytes + } + + /** + * Structure representing sell RAM + */ + message EosActionSellRam { + optional uint64 account = 1; + optional uint64 bytes = 2; // Number of bytes + } + + /** + * Structure representing voting. Currently, there could be up to 30 producers. + */ + message EosActionVoteProducer { + optional uint64 voter = 1; // Voter account + optional uint64 proxy = 2; // Proxy voter account + repeated uint64 producers = 3; // List of producers + } + + /** + * Structure representing update authorization. + */ + message EosActionUpdateAuth { + optional uint64 account = 1; + optional uint64 permission = 2; + optional uint64 parent = 3; + optional EosAuthorization auth = 4; + } + + /** + * Structure representing delete authorization. + */ + message EosActionDeleteAuth { + optional uint64 account = 1; + optional uint64 permission = 2; + } + + /** + * Structure representing link authorization to action. + */ + message EosActionLinkAuth { + optional uint64 account = 1; + optional uint64 code = 2; + optional uint64 type = 3; + optional uint64 requirement = 4; + } + + /** + * Structure representing unlink authorization from action. + */ + message EosActionUnlinkAuth { + optional uint64 account = 1; + optional uint64 code = 2; + optional uint64 type = 3; + } + + /** + * Structure representing creation of a new account. + */ + message EosActionNewAccount { + optional uint64 creator = 1; + optional uint64 name = 2; + optional EosAuthorization owner = 3; + optional EosAuthorization active = 4; + } + + /** + * Structure representing actions not implemented above. + */ + message EosActionUnknown { + optional uint32 data_size = 1; + optional bytes data_chunk = 2; + } +} + +/** + * Response: Device returns the signature. + * The signature_* fields contain the computed transaction signature. All three fields will be present. + * @end + */ +message EosSignedTx { + optional uint32 signature_v = 1; // Computed signature (recovery parameter, limited to 31 or 32) + optional bytes signature_r = 2; // Computed signature R component (256 bit) + optional bytes signature_s = 3; // Computed signature S component (256 bit) +} diff --git a/protob/messages.proto b/protob/messages.proto index f62d02352..bc5010687 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -237,4 +237,12 @@ enum MessageType { MessageType_MoneroLiveRefreshStepAck = 555 [(wire_out) = true]; MessageType_MoneroLiveRefreshFinalRequest = 556 [(wire_in) = true]; MessageType_MoneroLiveRefreshFinalAck = 557 [(wire_out) = true]; + + // EOS + MessageType_EosGetPublicKey = 600 [(wire_in) = true]; + MessageType_EosPublicKey = 601 [(wire_out) = true]; + MessageType_EosSignTx = 602 [(wire_in) = true]; + MessageType_EosTxActionRequest = 603 [(wire_out) = true]; + MessageType_EosTxActionAck = 604 [(wire_in) = true]; + MessageType_EosSignedTx = 605 [(wire_out) = true]; } From ee25c4a6f4d8e36770b4bc2d6b962076547260aa Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 29 Jan 2019 02:09:07 +0100 Subject: [PATCH 702/767] nix: use python3, not python36 --- shell.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell.nix b/shell.nix index 784b04291..fc4e99268 100644 --- a/shell.nix +++ b/shell.nix @@ -1,7 +1,7 @@ with import {}; let - myPython = python36.withPackages(p: [p.click p.graphviz p.trezor p.ed25519 p.pillow]) ; + myPython = python3.withPackages(p: [p.click p.graphviz p.trezor p.ed25519 p.pillow]) ; in stdenv.mkDerivation { name = "trezor-common-dev"; From a37e80905e33d619ea82921c671be189d9c7971e Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 31 Jan 2019 20:43:28 +0100 Subject: [PATCH 703/767] defs: add KMD to T1 and T2 --- defs/bitcoin/komodo.json | 4 ++-- defs/support.json | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/defs/bitcoin/komodo.json b/defs/bitcoin/komodo.json index b81d7fee6..be01fb96a 100644 --- a/defs/bitcoin/komodo.json +++ b/defs/bitcoin/komodo.json @@ -30,8 +30,8 @@ "dust_limit": 546, "blocktime_seconds": 60, "uri_prefix": "komodo", - "min_address_length": 27, - "max_address_length": 34, + "min_address_length": 35, + "max_address_length": 95, "bitcore": [], "blockbook": [], "cooldown": 100 diff --git a/defs/support.json b/defs/support.json index b8362a33e..4aefe61c6 100644 --- a/defs/support.json +++ b/defs/support.json @@ -75,6 +75,7 @@ "bitcoin:GAME": "1.7.1", "bitcoin:GIN": "1.7.2", "bitcoin:GRS": "1.6.2", + "bitcoin:KMD": "1.8.0", "bitcoin:KOTO": "1.7.1", "bitcoin:LTC": "1.5.2", "bitcoin:MEC": "1.7.2", @@ -986,6 +987,7 @@ "bitcoin:GAME": "2.0.8", "bitcoin:GIN": "2.0.11", "bitcoin:GRS": "2.0.8", + "bitcoin:KMD": "2.0.11", "bitcoin:KOTO": "2.0.8", "bitcoin:LTC": "2.0.5", "bitcoin:MEC": "2.0.10", From 484c35bb6a7d3a29fa23e9038c07ecb8418a40f4 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 31 Jan 2019 20:47:45 +0100 Subject: [PATCH 704/767] defs: fix permissions on png files --- defs/bitcoin/actinium.png | Bin defs/bitcoin/bitcash.png | Bin defs/bitcoin/florincoin.png | Bin 3 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 defs/bitcoin/actinium.png mode change 100755 => 100644 defs/bitcoin/bitcash.png mode change 100755 => 100644 defs/bitcoin/florincoin.png diff --git a/defs/bitcoin/actinium.png b/defs/bitcoin/actinium.png old mode 100755 new mode 100644 diff --git a/defs/bitcoin/bitcash.png b/defs/bitcoin/bitcash.png old mode 100755 new mode 100644 diff --git a/defs/bitcoin/florincoin.png b/defs/bitcoin/florincoin.png old mode 100755 new mode 100644 From 4b41d2e63841517bf701618434c018acf4f1bca2 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 31 Jan 2019 20:52:38 +0100 Subject: [PATCH 705/767] protob: add branch_id to SignTx and TransactionType (zcash) --- protob/messages-bitcoin.proto | 2 ++ 1 file changed, 2 insertions(+) diff --git a/protob/messages-bitcoin.proto b/protob/messages-bitcoin.proto index 67bd6a73c..2acab9cd5 100644 --- a/protob/messages-bitcoin.proto +++ b/protob/messages-bitcoin.proto @@ -131,6 +131,7 @@ message SignTx { optional bool overwintered = 7; // only for Zcash optional uint32 version_group_id = 8; // only for Zcash, nVersionGroupId when overwintered is set optional uint32 timestamp = 9; // only for Capricoin, transaction timestamp + optional uint32 branch_id = 10; // only for Zcash, BRANCH_ID when overwintered is set } /** @@ -196,6 +197,7 @@ message TxAck { optional bool overwintered = 11; // only for Zcash optional uint32 version_group_id = 12; // only for Zcash, nVersionGroupId when overwintered is set optional uint32 timestamp = 13; // only for Capricoin, transaction timestamp + optional uint32 branch_id = 14; // only for Zcash, BRANCH_ID when overwintered is set /** * Structure representing transaction input */ From 6bda1e351f953732a79d814284bde70a69e7e2cf Mon Sep 17 00:00:00 2001 From: matejcik Date: Fri, 1 Feb 2019 12:58:20 +0100 Subject: [PATCH 706/767] cointool: fix filtering on non-string fields --- tools/cointool.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/cointool.py b/tools/cointool.py index 1f9291ff2..92820cf4f 100755 --- a/tools/cointool.py +++ b/tools/cointool.py @@ -672,13 +672,13 @@ def dump( filter = filter.lower() if field not in coin: return False - if not fnmatch.fnmatch(coin[field].lower(), filter): + if not fnmatch.fnmatch(str(coin[field]).lower(), filter): return False for field, filter in exclude_filters: filter = filter.lower() if field not in coin: continue - if fnmatch.fnmatch(coin[field].lower(), filter): + if fnmatch.fnmatch(str(coin[field]).lower(), filter): return False if device: is_supported = support_info[coin["key"]].get(device, None) From 44085a9d1a28e8716856fa20158366b245c9e91a Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Sun, 3 Feb 2019 23:20:20 +0100 Subject: [PATCH 707/767] protob: add simplified fields for MultisigRedeemScriptType --- protob/messages-bitcoin.proto | 2 ++ 1 file changed, 2 insertions(+) diff --git a/protob/messages-bitcoin.proto b/protob/messages-bitcoin.proto index 2acab9cd5..a2f3e5813 100644 --- a/protob/messages-bitcoin.proto +++ b/protob/messages-bitcoin.proto @@ -26,6 +26,8 @@ message MultisigRedeemScriptType { repeated HDNodePathType pubkeys = 1; // pubkeys from multisig address (sorted lexicographically) repeated bytes signatures = 2; // existing signatures for partially signed input optional uint32 m = 3; // "m" from n, how many valid signatures is necessary for spending + repeated hw.trezor.messages.common.HDNodeType nodes = 4; // simplified way how to specify pubkeys if they share the same address_n path + repeated uint32 common_address_n = 5; // use only field 1 or fields 4+5, if fields 4+5 are used, field 1 is ignored /** * Structure representing HDNode + Path */ From 0735c7d6f524b4c5108d201c789612aad7ce7920 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 4 Feb 2019 01:11:44 +0100 Subject: [PATCH 708/767] protob: rename common_address_n to address_n in MultisigRedeemScriptType --- protob/messages-bitcoin.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protob/messages-bitcoin.proto b/protob/messages-bitcoin.proto index a2f3e5813..d44143314 100644 --- a/protob/messages-bitcoin.proto +++ b/protob/messages-bitcoin.proto @@ -27,7 +27,7 @@ message MultisigRedeemScriptType { repeated bytes signatures = 2; // existing signatures for partially signed input optional uint32 m = 3; // "m" from n, how many valid signatures is necessary for spending repeated hw.trezor.messages.common.HDNodeType nodes = 4; // simplified way how to specify pubkeys if they share the same address_n path - repeated uint32 common_address_n = 5; // use only field 1 or fields 4+5, if fields 4+5 are used, field 1 is ignored + repeated uint32 address_n = 5; // use only field 1 or fields 4+5, if fields 4+5 are used, field 1 is ignored /** * Structure representing HDNode + Path */ From 063d8f7b8e9406328f94854aad7402f8fe4826ce Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Mon, 4 Feb 2019 16:48:54 +0100 Subject: [PATCH 709/767] nix: add protobuf to shell.nix --- shell.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell.nix b/shell.nix index fc4e99268..dd573f1f6 100644 --- a/shell.nix +++ b/shell.nix @@ -5,5 +5,5 @@ let in stdenv.mkDerivation { name = "trezor-common-dev"; - buildInputs = [ myPython python27Packages.demjson graphviz ]; + buildInputs = [ myPython python2Packages.demjson graphviz protobuf ]; } From 8f5026e71e612ba303340dd241b4c25381b1a09e Mon Sep 17 00:00:00 2001 From: matejcik Date: Tue, 5 Feb 2019 14:16:30 +0100 Subject: [PATCH 710/767] defs: fix MonetaryUnit label --- defs/bitcoin/monetaryunit.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/defs/bitcoin/monetaryunit.json b/defs/bitcoin/monetaryunit.json index ca95e27d6..7245c8235 100644 --- a/defs/bitcoin/monetaryunit.json +++ b/defs/bitcoin/monetaryunit.json @@ -1,7 +1,7 @@ { "coin_name": "MonetaryUnit", "coin_shortcut": "MUE", - "coin_label": "MUE", + "coin_label": "MonetaryUnit", "website": "https://www.monetaryunit.org", "github": "https://github.com/muecoin/MUECore", "maintainer": "Sotiris Blad ", From 1ecd56f33be351feda0500b3868fa4f93c65fffb Mon Sep 17 00:00:00 2001 From: matejcik Date: Tue, 5 Feb 2019 14:18:39 +0100 Subject: [PATCH 711/767] coins_details: fetch CMC metadata, match tokens by contract address --- tools/coins_details.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/tools/coins_details.py b/tools/coins_details.py index e98974ef7..798f1c55a 100755 --- a/tools/coins_details.py +++ b/tools/coins_details.py @@ -73,6 +73,19 @@ def coinmarketcap_init(api_key, refresh=None): api_key, params={"limit": 5000, "convert": "USD"}, ) + by_id = {str(coin["id"]): coin for coin in coinmarketcap_data["data"]} + all_ids = list(by_id.keys()) + while all_ids: + first_100 = all_ids[:100] + all_ids = all_ids[100:] + time.sleep(1) + print("Fetching metadata, {} coins remaining...".format(len(all_ids))) + metadata = coinmarketcap_call( + "cryptocurrency/info", api_key, params={"id": ",".join(first_100)} + ) + for coin_id, meta in metadata["data"].items(): + by_id[coin_id]["meta"] = meta + with open(COINMAKETCAP_CACHE, "w") as f: json.dump(coinmarketcap_data, f) except Exception as e: @@ -81,9 +94,13 @@ def coinmarketcap_init(api_key, refresh=None): coin_data = {} for coin in coinmarketcap_data["data"]: slug = coin["slug"] + platform = coin["meta"]["platform"] market_cap = coin["quote"]["USD"]["market_cap"] if market_cap is not None: coin_data[slug] = int(market_cap) + if platform is not None and platform["name"] == "Ethereum": + address = platform["token_address"].lower() + coin_data[address] = market_cap MARKET_CAPS = coin_data @@ -92,6 +109,10 @@ def coinmarketcap_init(api_key, refresh=None): def marketcap(coin): cap = None + if coin["type"] == "erc20": + address = coin["address"].lower() + return MARKET_CAPS.get(address) + if "coinmarketcap_alias" in coin: cap = MARKET_CAPS.get(coin["coinmarketcap_alias"]) if cap is None: From ac0061740f2e10c5116cc86c83f1f31d853c7b84 Mon Sep 17 00:00:00 2001 From: matejcik Date: Tue, 5 Feb 2019 14:21:37 +0100 Subject: [PATCH 712/767] tokens: update from upstream, refresh support data --- defs/ethereum/tokens | 2 +- defs/support.json | 47 +++++++++++--------------------------------- 2 files changed, 13 insertions(+), 36 deletions(-) diff --git a/defs/ethereum/tokens b/defs/ethereum/tokens index ac3936c37..6420966b6 160000 --- a/defs/ethereum/tokens +++ b/defs/ethereum/tokens @@ -1 +1 @@ -Subproject commit ac3936c3713e3da78caeefd4fda2408f97906c08 +Subproject commit 6420966b64427d6eb08d965f5b5f70cb78b73490 diff --git a/defs/support.json b/defs/support.json index 4aefe61c6..3d5ed2793 100644 --- a/defs/support.json +++ b/defs/support.json @@ -395,7 +395,6 @@ "erc20:eth:GZR": "1.6.2", "erc20:eth:HAPPY": "1.6.3", "erc20:eth:HAT": "1.6.2", - "erc20:eth:HAV": "1.6.2", "erc20:eth:HDG": "1.6.2", "erc20:eth:HGT": "1.6.2", "erc20:eth:HIBT": "1.6.3", @@ -544,7 +543,6 @@ "erc20:eth:Ox Fina": "1.6.2", "erc20:eth:PAL": "1.6.2", "erc20:eth:PARETO": "1.6.2", - "erc20:eth:PASS": "1.6.3", "erc20:eth:PATENTS": "1.6.2", "erc20:eth:PATH": "1.6.2", "erc20:eth:PAY": "1.6.2", @@ -696,7 +694,6 @@ "erc20:eth:USDC": "1.7.1", "erc20:eth:USDM": "1.6.2", "erc20:eth:UTK": "1.6.2", - "erc20:eth:UTN-P": "1.6.2", "erc20:eth:UUU": "1.6.2", "erc20:eth:Unicorn": "1.6.2", "erc20:eth:VDG": "1.6.3", @@ -758,8 +755,6 @@ "erc20:eth:eGAS": "1.6.2", "erc20:eth:eUSD": "1.6.2", "erc20:eth:eosDAC": "1.6.2", - "erc20:eth:nCash": "1.6.2", - "erc20:eth:nUSD": "1.6.2", "erc20:eth:onG": "1.6.2", "erc20:kov:Aeternity": "1.6.2", "erc20:rin:AETH": "1.6.2", @@ -841,6 +836,8 @@ "erc20:eth:COSS:6529": "(AUTO) duplicate key", "erc20:eth:COSS:9e96": "(AUTO) duplicate key", "erc20:eth:CPC": "(AUTO) duplicate key", + "erc20:eth:CPT:88d5": "(AUTO) duplicate key", + "erc20:eth:CPT:9b62": "(AUTO) duplicate key", "erc20:eth:DEPO": "(AUTO) duplicate key", "erc20:eth:DEPO (Depository Network)": "(AUTO) duplicate key", "erc20:eth:DOW:7697": "(AUTO) duplicate key", @@ -858,8 +855,6 @@ "erc20:eth:ECP:aea1": "(AUTO) duplicate key", "erc20:eth:EDU:2a22": "(AUTO) duplicate key", "erc20:eth:EDU:5b26": "(AUTO) duplicate key", - "erc20:eth:EGT:5dba": "(AUTO) duplicate key", - "erc20:eth:EGT:8e1b": "(AUTO) duplicate key", "erc20:eth:EOS": "switched to custom network", "erc20:eth:EVN:6890": "(AUTO) duplicate key", "erc20:eth:EVN:d780": "(AUTO) duplicate key", @@ -872,8 +867,6 @@ "erc20:eth:FUCK:ab16": "(AUTO) duplicate key", "erc20:eth:GANA:6754": "(AUTO) duplicate key", "erc20:eth:GANA:c0ea": "(AUTO) duplicate key", - "erc20:eth:HOT:6c6e": "(AUTO) duplicate key", - "erc20:eth:HOT:9af8": "(AUTO) duplicate key", "erc20:eth:Hdp": "(AUTO) duplicate key", "erc20:eth:Hdp.\u0444": "(AUTO) duplicate key", "erc20:eth:IMT:1311": "(AUTO) duplicate key", @@ -894,6 +887,8 @@ "erc20:eth:MESH:f030": "(AUTO) duplicate key", "erc20:eth:MIT": "(AUTO) duplicate key", "erc20:eth:MIT (Mychatcoin)": "(AUTO) duplicate key", + "erc20:eth:MORE:5012": "(AUTO) duplicate key", + "erc20:eth:MORE:5906": "(AUTO) duplicate key", "erc20:eth:MTC:905e": "(AUTO) duplicate key", "erc20:eth:MTC:dfdc": "(AUTO) duplicate key", "erc20:eth:NCC:5d48": "(AUTO) duplicate key", @@ -905,8 +900,8 @@ "erc20:eth:OHNI:7f21": "(AUTO) duplicate key", "erc20:eth:OPEN:69c4": "(AUTO) duplicate key", "erc20:eth:OPEN:e9de": "(AUTO) duplicate key", - "erc20:eth:PAT:bb1f": "(AUTO) duplicate key", - "erc20:eth:PAT:f3b3": "(AUTO) duplicate key", + "erc20:eth:PASS:7776": "(AUTO) duplicate key", + "erc20:eth:PASS:ee44": "(AUTO) duplicate key", "erc20:eth:PCH:e3f4": "(AUTO) duplicate key", "erc20:eth:PCH:fcac": "(AUTO) duplicate key", "erc20:eth:PLAY": "(AUTO) duplicate key", @@ -1023,8 +1018,6 @@ "erc20:eth:$FXY": "2.0.7", "erc20:eth:$HUR": "2.0.8", "erc20:eth:$TEAK": "2.0.7", - "erc20:eth:(PARKGENE) (GENE)": "2.0.10", - "erc20:eth:(TTC) (TTC)": "2.0.10", "erc20:eth:0xBTC": "2.0.7", "erc20:eth:1ST": "2.0.7", "erc20:eth:1WO": "2.0.7", @@ -1176,7 +1169,6 @@ "erc20:eth:BZ": "2.0.10", "erc20:eth:BZNT": "2.0.10", "erc20:eth:BeerCoin": "2.0.7", - "erc20:eth:Bez": "2.0.10", "erc20:eth:C20": "2.0.7", "erc20:eth:C8": "2.0.7", "erc20:eth:CAG": "2.0.7", @@ -1236,7 +1228,6 @@ "erc20:eth:CPAY": "2.0.10", "erc20:eth:CPEX": "2.0.7", "erc20:eth:CPLO": "2.0.10", - "erc20:eth:CPT": "2.0.10", "erc20:eth:CPY": "2.0.7", "erc20:eth:CR7": "2.0.7", "erc20:eth:CRB": "2.0.7", @@ -1277,7 +1268,6 @@ "erc20:eth:DAT": "2.0.7", "erc20:eth:DATABroker": "2.0.7", "erc20:eth:DATACoin": "2.0.7", - "erc20:eth:DATx": "2.0.10", "erc20:eth:DAV": "2.0.7", "erc20:eth:DAX": "2.0.10", "erc20:eth:DAXT": "2.0.7", @@ -1455,7 +1445,6 @@ "erc20:eth:HAND": "2.0.10", "erc20:eth:HAPPY": "2.0.8", "erc20:eth:HAT": "2.0.7", - "erc20:eth:HAV": "2.0.7", "erc20:eth:HB": "2.0.10", "erc20:eth:HBT": "2.0.10", "erc20:eth:HBZ": "2.0.10", @@ -1543,7 +1532,6 @@ "erc20:eth:LEV": "2.0.10", "erc20:eth:LFR": "2.0.7", "erc20:eth:LG": "2.0.10", - "erc20:eth:LGD": "2.0.10", "erc20:eth:LGO": "2.0.7", "erc20:eth:LGR": "2.0.7", "erc20:eth:LIBER": "2.0.10", @@ -1591,16 +1579,13 @@ "erc20:eth:MFTU": "2.0.8", "erc20:eth:MGO": "2.0.7", "erc20:eth:MIC": "2.0.10", - "erc20:eth:MITx": "2.0.10", "erc20:eth:MKR": "2.0.10", "erc20:eth:MKT": "2.0.7", - "erc20:eth:MLN": "2.0.10", "erc20:eth:MNE": "2.0.7", "erc20:eth:MNT": "2.0.7", "erc20:eth:MNTP": "2.0.7", "erc20:eth:MOC": "2.0.10", "erc20:eth:MOD": "2.0.7", - "erc20:eth:MORE": "2.0.10", "erc20:eth:MOT": "2.0.10", "erc20:eth:MOZO": "2.0.10", "erc20:eth:MRK": "2.0.10", @@ -1679,7 +1664,6 @@ "erc20:eth:PAI": "2.0.10", "erc20:eth:PAL": "2.0.7", "erc20:eth:PARETO": "2.0.7", - "erc20:eth:PASS": "2.0.8", "erc20:eth:PATENTS": "2.0.7", "erc20:eth:PATH": "2.0.7", "erc20:eth:PAX": "2.0.10", @@ -1793,7 +1777,6 @@ "erc20:eth:RUNE": "2.0.10", "erc20:eth:RVL": "2.0.7", "erc20:eth:RVT": "2.0.7", - "erc20:eth:Rating": "2.0.10", "erc20:eth:S-A-PAT": "2.0.7", "erc20:eth:S-ETH": "2.0.7", "erc20:eth:SAC": "2.0.10", @@ -1874,9 +1857,7 @@ "erc20:eth:SXDT": "2.0.7", "erc20:eth:SXUT": "2.0.7", "erc20:eth:SYN": "2.0.7", - "erc20:eth:Seele": "2.0.10", "erc20:eth:SenSatorI": "2.0.7", - "erc20:eth:Soar": "2.0.10", "erc20:eth:TALAO": "2.0.10", "erc20:eth:TAU": "2.0.7", "erc20:eth:TBC2": "2.0.7", @@ -1936,7 +1917,6 @@ "erc20:eth:USDM": "2.0.7", "erc20:eth:USDT": "2.0.10", "erc20:eth:UTK": "2.0.7", - "erc20:eth:UTN-P": "2.0.7", "erc20:eth:UTT": "2.0.10", "erc20:eth:UUU": "2.0.7", "erc20:eth:Unicorn": "2.0.7", @@ -2032,9 +2012,6 @@ "erc20:eth:eGAS": "2.0.7", "erc20:eth:eUSD": "2.0.7", "erc20:eth:eosDAC": "2.0.7", - "erc20:eth:iETH": "2.0.10", - "erc20:eth:nCash": "2.0.7", - "erc20:eth:nUSD": "2.0.7", "erc20:eth:onG": "2.0.7", "erc20:kov:Aeternity": "2.0.7", "erc20:kov:DAI": "2.0.10", @@ -2135,6 +2112,8 @@ "erc20:eth:COSS:6529": "(AUTO) duplicate key", "erc20:eth:COSS:9e96": "(AUTO) duplicate key", "erc20:eth:CPC": "(AUTO) duplicate key", + "erc20:eth:CPT:88d5": "(AUTO) duplicate key", + "erc20:eth:CPT:9b62": "(AUTO) duplicate key", "erc20:eth:DEPO": "(AUTO) duplicate key", "erc20:eth:DEPO (Depository Network)": "(AUTO) duplicate key", "erc20:eth:DOW:7697": "(AUTO) duplicate key", @@ -2152,8 +2131,6 @@ "erc20:eth:ECP:aea1": "(AUTO) duplicate key", "erc20:eth:EDU:2a22": "(AUTO) duplicate key", "erc20:eth:EDU:5b26": "(AUTO) duplicate key", - "erc20:eth:EGT:5dba": "(AUTO) duplicate key", - "erc20:eth:EGT:8e1b": "(AUTO) duplicate key", "erc20:eth:EOS": "switched to custom network", "erc20:eth:EVN:6890": "(AUTO) duplicate key", "erc20:eth:EVN:d780": "(AUTO) duplicate key", @@ -2166,8 +2143,6 @@ "erc20:eth:FUCK:ab16": "(AUTO) duplicate key", "erc20:eth:GANA:6754": "(AUTO) duplicate key", "erc20:eth:GANA:c0ea": "(AUTO) duplicate key", - "erc20:eth:HOT:6c6e": "(AUTO) duplicate key", - "erc20:eth:HOT:9af8": "(AUTO) duplicate key", "erc20:eth:Hdp": "(AUTO) duplicate key", "erc20:eth:Hdp.\u0444": "(AUTO) duplicate key", "erc20:eth:IMT:1311": "(AUTO) duplicate key", @@ -2188,6 +2163,8 @@ "erc20:eth:MESH:f030": "(AUTO) duplicate key", "erc20:eth:MIT": "(AUTO) duplicate key", "erc20:eth:MIT (Mychatcoin)": "(AUTO) duplicate key", + "erc20:eth:MORE:5012": "(AUTO) duplicate key", + "erc20:eth:MORE:5906": "(AUTO) duplicate key", "erc20:eth:MTC:905e": "(AUTO) duplicate key", "erc20:eth:MTC:dfdc": "(AUTO) duplicate key", "erc20:eth:NCC:5d48": "(AUTO) duplicate key", @@ -2199,8 +2176,8 @@ "erc20:eth:OHNI:7f21": "(AUTO) duplicate key", "erc20:eth:OPEN:69c4": "(AUTO) duplicate key", "erc20:eth:OPEN:e9de": "(AUTO) duplicate key", - "erc20:eth:PAT:bb1f": "(AUTO) duplicate key", - "erc20:eth:PAT:f3b3": "(AUTO) duplicate key", + "erc20:eth:PASS:7776": "(AUTO) duplicate key", + "erc20:eth:PASS:ee44": "(AUTO) duplicate key", "erc20:eth:PCH:e3f4": "(AUTO) duplicate key", "erc20:eth:PCH:fcac": "(AUTO) duplicate key", "erc20:eth:PLAY": "(AUTO) duplicate key", From 6a7a08f83f1833da20ed4079b5e6072b5fdabb65 Mon Sep 17 00:00:00 2001 From: matejcik Date: Tue, 5 Feb 2019 14:31:44 +0100 Subject: [PATCH 713/767] coins_details: clean out some overrides, regenerate data --- defs/coins_details.json | 16193 ++++++++++++++++++++++------- defs/coins_details.override.json | 42 - 2 files changed, 12284 insertions(+), 3951 deletions(-) diff --git a/defs/coins_details.json b/defs/coins_details.json index ee98af5f9..0045b1838 100644 --- a/defs/coins_details.json +++ b/defs/coins_details.json @@ -5,7 +5,7 @@ "Github": "https://github.com/Actinium-project/Actinium", "Homepage": "https://actinium.org" }, - "marketcap_usd": 155019, + "marketcap_usd": 191210, "name": "Actinium", "shortcut": "ACM", "t1_enabled": "yes", @@ -31,7 +31,7 @@ "Github": "https://github.com/Bitcoin-ABC/bitcoin-abc", "Homepage": "https://www.bitcoincash.org" }, - "marketcap_usd": 3184003623, + "marketcap_usd": 2091165388, "name": "Bitcoin Cash", "shortcut": "BCH", "t1_enabled": "yes", @@ -66,7 +66,7 @@ "Github": "https://github.com/LIMXTEC/BitSend", "Homepage": "https://bitsend.info" }, - "marketcap_usd": 1457955, + "marketcap_usd": 985152, "name": "Bitsend", "shortcut": "BSD", "t1_enabled": "yes", @@ -79,7 +79,7 @@ "Github": "https://github.com/bitcoin/bitcoin", "Homepage": "https://bitcoin.org" }, - "marketcap_usd": 67135492933, + "marketcap_usd": 60720581828, "name": "Bitcoin", "shortcut": "BTC", "t1_enabled": "yes", @@ -101,7 +101,7 @@ "Github": "https://github.com/BTCPrivate/BitcoinPrivate", "Homepage": "https://btcprivate.org" }, - "marketcap_usd": 49884725, + "marketcap_usd": 19647502, "name": "Bitcoin Private", "shortcut": "BTCP", "t1_enabled": "yes", @@ -119,7 +119,7 @@ "Github": "https://github.com/LIMXTEC/Bitcloud", "Homepage": "https://bit-cloud.info" }, - "marketcap_usd": 145070, + "marketcap_usd": 89110, "name": "Bitcloud", "shortcut": "BTDX", "t1_enabled": "yes", @@ -132,7 +132,7 @@ "Github": "https://github.com/BTCGPU/BTCGPU", "Homepage": "https://bitcoingold.org" }, - "marketcap_usd": 245023967, + "marketcap_usd": 167614408, "name": "Bitcoin Gold", "shortcut": "BTG", "t1_enabled": "yes", @@ -154,7 +154,7 @@ "Github": "https://github.com/LIMXTEC/BitCore", "Homepage": "https://bitcore.cc" }, - "marketcap_usd": 5176781, + "marketcap_usd": 3804914, "name": "Bitcore", "shortcut": "BTX", "t1_enabled": "yes", @@ -172,7 +172,7 @@ "Github": "https://github.com/Capricoinofficial/Capricoin", "Homepage": "https://capricoin.org" }, - "marketcap_usd": 757856, + "marketcap_usd": 474617, "name": "Capricoin", "shortcut": "CPC", "t1_enabled": "soon", @@ -185,7 +185,7 @@ "Github": "https://github.com/dashpay/dash", "Homepage": "https://www.dash.org" }, - "marketcap_usd": 727348258, + "marketcap_usd": 586472432, "name": "Dash", "shortcut": "DASH", "t1_enabled": "yes", @@ -207,7 +207,7 @@ "Github": "https://github.com/decred/dcrd", "Homepage": "https://www.decred.org" }, - "marketcap_usd": 163625344, + "marketcap_usd": 147647416, "name": "Decred", "shortcut": "DCR", "t1_enabled": "yes", @@ -220,13 +220,18 @@ "Github": "https://github.com/digibyte/digibyte", "Homepage": "https://digibyte.io" }, - "marketcap_usd": 117600307, + "marketcap_usd": 100216260, "name": "DigiByte", "shortcut": "DGB", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": [] + "wallet": [ + { + "name": "Trezor", + "url": "https://wallet.trezor.io" + } + ] }, "bitcoin:DNR": { "coinmarketcap_alias": "denarius-dnr", @@ -234,7 +239,7 @@ "Github": "https://github.com/carsenk/denarius", "Homepage": "https://denarius.io" }, - "marketcap_usd": 573486, + "marketcap_usd": 160000, "name": "Denarius", "shortcut": "DNR", "t1_enabled": "yes", @@ -247,7 +252,7 @@ "Github": "https://github.com/dogecoin/dogecoin", "Homepage": "https://dogecoin.com" }, - "marketcap_usd": 297196306, + "marketcap_usd": 224765670, "name": "Dogecoin", "shortcut": "DOGE", "t1_enabled": "yes", @@ -265,7 +270,7 @@ "Github": "https://github.com/fujicoin/fujicoin", "Homepage": "https://fujicoin.org" }, - "marketcap_usd": 205530, + "marketcap_usd": 129755, "name": "Fujicoin", "shortcut": "FJC", "t1_enabled": "yes", @@ -283,7 +288,7 @@ "Github": "https://github.com/flash-coin", "Homepage": "https://www.flashcoin.io" }, - "marketcap_usd": 3879737, + "marketcap_usd": 3130072, "name": "Flashcoin", "shortcut": "FLASH", "t1_enabled": "yes", @@ -296,7 +301,7 @@ "Github": "https://github.com/floblockchain/flo", "Homepage": "https://flo.cash" }, - "marketcap_usd": 5871789, + "marketcap_usd": 10744544, "name": "Flo", "shortcut": "FLO", "t1_enabled": "yes", @@ -309,7 +314,7 @@ "Github": "https://github.com/FeatherCoin/Feathercoin", "Homepage": "https://feathercoin.com" }, - "marketcap_usd": 4143153, + "marketcap_usd": 3003441, "name": "Feathercoin", "shortcut": "FTC", "t1_enabled": "yes", @@ -327,7 +332,7 @@ "Github": "https://github.com/gamecredits-project/gamecredits", "Homepage": "https://gamecredits.org" }, - "marketcap_usd": 6169040, + "marketcap_usd": 5927682, "name": "GameCredits", "shortcut": "GAME", "t1_enabled": "yes", @@ -358,7 +363,7 @@ "Github": "https://github.com/Groestlcoin/groestlcoin", "Homepage": "https://www.groestlcoin.org" }, - "marketcap_usd": 17401135, + "marketcap_usd": 13706007, "name": "Groestlcoin", "shortcut": "GRS", "t1_enabled": "yes", @@ -371,6 +376,19 @@ } ] }, + "bitcoin:KMD": { + "links": { + "Github": "https://github.com/komodoplatform/komodo", + "Homepage": "https://komodoplatform.com" + }, + "marketcap_usd": 71491727, + "name": "Komodo", + "shortcut": "KMD", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "coin", + "wallet": [] + }, "bitcoin:KOTO": { "links": { "Github": "https://github.com/KotoDevelopers/koto", @@ -394,7 +412,7 @@ "Github": "https://github.com/litecoin-project/litecoin", "Homepage": "https://litecoin.org" }, - "marketcap_usd": 1820036175, + "marketcap_usd": 2054316003, "name": "Litecoin", "shortcut": "LTC", "t1_enabled": "yes", @@ -416,7 +434,7 @@ "Github": "https://github.com/LIMXTEC/Megacoin", "Homepage": "https://www.megacoin.eu" }, - "marketcap_usd": 57971, + "marketcap_usd": 116396, "name": "Megacoin", "shortcut": "MEC", "t1_enabled": "yes", @@ -429,7 +447,7 @@ "Github": "https://github.com/monacoinproject/monacoin", "Homepage": "https://monacoin.org" }, - "marketcap_usd": 44325120, + "marketcap_usd": 30764483, "name": "Monacoin", "shortcut": "MONA", "t1_enabled": "yes", @@ -447,7 +465,7 @@ "Github": "https://github.com/muecoin/MUECore", "Homepage": "https://www.monetaryunit.org" }, - "marketcap_usd": 3321959, + "marketcap_usd": 2025089, "name": "MonetaryUnit", "shortcut": "MUE", "t1_enabled": "yes", @@ -460,7 +478,7 @@ "Github": "https://github.com/nixplatform/nixcore", "Homepage": "https://nixplatform.io" }, - "marketcap_usd": 6163333, + "marketcap_usd": 6071683, "name": "Nix", "shortcut": "NIX", "t1_enabled": "yes", @@ -473,7 +491,7 @@ "Github": "https://github.com/namecoin/namecoin-core", "Homepage": "https://namecoin.org" }, - "marketcap_usd": 8863537, + "marketcap_usd": 9673644, "name": "Namecoin", "shortcut": "NMC", "t1_enabled": "yes", @@ -495,7 +513,7 @@ "Github": "https://github.com/FundacionPesetacoin/PesetacoinCore", "Homepage": "https://pesetacoin.info" }, - "marketcap_usd": 462761, + "marketcap_usd": 276219, "name": "Pesetacoin", "shortcut": "PTC", "t1_enabled": "yes", @@ -508,7 +526,7 @@ "Github": "https://github.com/RavenProject/Ravencoin", "Homepage": "https://ravencoin.org" }, - "marketcap_usd": 36951975, + "marketcap_usd": 28850929, "name": "Ravencoin", "shortcut": "RVN", "t1_enabled": "yes", @@ -521,7 +539,7 @@ "Github": "https://github.com/SmartCash/Core-Smart", "Homepage": "https://smarcash.cc" }, - "marketcap_usd": 16975398, + "marketcap_usd": 9582381, "name": "SmartCash", "shortcut": "SMART", "t1_enabled": "yes", @@ -534,7 +552,7 @@ "Github": "https://github.com/viacoin", "Homepage": "https://viacoin.org" }, - "marketcap_usd": 7392920, + "marketcap_usd": 7026718, "name": "Viacoin", "shortcut": "VIA", "t1_enabled": "yes", @@ -552,7 +570,7 @@ "Github": "https://github.com/vertcoin-project/vertcoin-core", "Homepage": "https://vertcoin.org" }, - "marketcap_usd": 12918081, + "marketcap_usd": 13670381, "name": "Vertcoin", "shortcut": "VTC", "t1_enabled": "yes", @@ -570,7 +588,7 @@ "Github": "https://github.com/myriadcoin/myriadcoin", "Homepage": "https://www.myriadcoin.org" }, - "marketcap_usd": 3879943, + "marketcap_usd": 1981220, "name": "Myriad", "shortcut": "XMY", "t1_enabled": "yes", @@ -583,7 +601,7 @@ "Github": "https://github.com/zcoinofficial/zcoin", "Homepage": "https://zcoin.io" }, - "marketcap_usd": 30473142, + "marketcap_usd": 31416993, "name": "Zcoin", "shortcut": "XZC", "t1_enabled": "yes", @@ -605,7 +623,7 @@ "Github": "https://github.com/zcash/zcash", "Homepage": "https://z.cash" }, - "marketcap_usd": 335034063, + "marketcap_usd": 282340204, "name": "Zcash", "shortcut": "ZEC", "t1_enabled": "yes", @@ -623,7 +641,7 @@ "Github": "https://github.com/ZencashOfficial/zen", "Homepage": "https://zencash.com" }, - "marketcap_usd": 27289762, + "marketcap_usd": 22097668, "name": "Zencash", "shortcut": "ZEN", "t1_enabled": "no", @@ -743,7 +761,7 @@ "Github": "https://github.com/HurifyPlatform", "Homepage": "https://hurify.co/" }, - "marketcap_usd": 0, + "marketcap_usd": 82031.04494452103, "name": "$Hurify Token", "network": "eth", "shortcut": "$HUR", @@ -797,7 +815,7 @@ "links": { "Homepage": "https://0xbitcoin.org/" }, - "marketcap_usd": 967805, + "marketcap_usd": 514562.21502881806, "name": "0xBitcoin", "network": "eth", "shortcut": "0xBTC", @@ -824,7 +842,7 @@ "links": { "Homepage": "https://firstblood.io" }, - "marketcap_usd": 2476353, + "marketcap_usd": 1919392.1776221949, "name": "FirstBlood", "network": "eth", "shortcut": "1ST", @@ -851,7 +869,7 @@ "links": { "Homepage": "https://ico.1worldonline.com" }, - "marketcap_usd": 0, + "marketcap_usd": 428346.4658797973, "name": "1WO", "network": "eth", "shortcut": "1WO", @@ -878,7 +896,7 @@ "links": { "Homepage": "https://300tokensparta.com" }, - "marketcap_usd": 0, + "marketcap_usd": 60817.4714646, "name": "300 Token Sparta", "network": "eth", "shortcut": "300", @@ -960,7 +978,7 @@ "links": { "Homepage": "https://www.arcblock.io" }, - "marketcap_usd": 0, + "marketcap_usd": 6608438.105302575, "name": "ArcBlock Token", "network": "eth", "shortcut": "ABT", @@ -988,7 +1006,7 @@ "Github": "https://github.com/theabyssportal", "Homepage": "https://www.theabyss.com" }, - "marketcap_usd": 0, + "marketcap_usd": 1173525.8212509586, "name": "ABYSS", "network": "eth", "shortcut": "ABYSS", @@ -1015,7 +1033,7 @@ "links": { "Homepage": "http://accelerator.network" }, - "marketcap_usd": 81233, + "marketcap_usd": 0, "name": "Accelerator Network", "network": "eth", "shortcut": "ACC", @@ -1037,12 +1055,66 @@ } ] }, + "erc20:eth:ACE": { + "address": "0x06147110022B768BA8F99A8f385df11a151A9cc8", + "links": { + "Homepage": "https://tokenstars.com/en/ace" + }, + "marketcap_usd": 160706.92859916607, + "name": "ACE (TokenStars)", + "network": "eth", + "shortcut": "ACE", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:ADB": { + "address": "0x2baac9330Cf9aC479D819195794d79AD0c7616e3", + "links": { + "Homepage": "https://adbank.network" + }, + "marketcap_usd": 548705.6589799658, + "name": "adbank", + "network": "eth", + "shortcut": "ADB", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, "erc20:eth:ADH": { "address": "0xE69a353b3152Dd7b706ff7dD40fe1d18b7802d31", "links": { "Homepage": "https://adhive.tv" }, - "marketcap_usd": 0, + "marketcap_usd": 256400.3328229861, "name": "AdHive Token", "network": "eth", "shortcut": "ADH", @@ -1070,7 +1142,7 @@ "Github": "https://github.com/aditus", "Homepage": "https://aditus.net" }, - "marketcap_usd": 174907, + "marketcap_usd": 161764.00943883182, "name": "Aditus", "network": "eth", "shortcut": "ADI", @@ -1098,7 +1170,7 @@ "Github": "https://github.com/adelecosystem", "Homepage": "https://adel.io" }, - "marketcap_usd": 260628, + "marketcap_usd": 360729.0059094079, "name": "Adelphoi", "network": "eth", "shortcut": "ADL", @@ -1125,7 +1197,7 @@ "links": { "Homepage": "https://adshares.net" }, - "marketcap_usd": 1006995, + "marketcap_usd": 962640.5753279638, "name": "AdShares", "network": "eth", "shortcut": "ADST", @@ -1153,7 +1225,7 @@ "Github": "https://github.com/adchain", "Homepage": "https://adtoken.com" }, - "marketcap_usd": 3317802, + "marketcap_usd": 3499812.20331, "name": "AdToken", "network": "eth", "shortcut": "ADT", @@ -1181,7 +1253,7 @@ "Github": "https://github.com/AdExBlockchain", "Homepage": "https://www.adex.network" }, - "marketcap_usd": 0, + "marketcap_usd": 6668024.590304959, "name": "AdEx Network", "network": "eth", "shortcut": "ADX", @@ -1209,7 +1281,7 @@ "Github": "https://github.com/aeternity", "Homepage": "https://www.aeternity.com/" }, - "marketcap_usd": 103493938, + "marketcap_usd": 85714709.73224911, "name": "aeternity", "network": "eth", "shortcut": "AE", @@ -1265,7 +1337,7 @@ "Github": "https://github.com/singnet/singnet", "Homepage": "https://singularitynet.io" }, - "marketcap_usd": 24861353, + "marketcap_usd": 21390638.330524858, "name": "SingularityNET", "network": "eth", "shortcut": "AGI", @@ -1287,13 +1359,67 @@ } ] }, + "erc20:eth:AI": { + "address": "0x5121E348e897dAEf1Eef23959Ab290e5557CF274", + "links": { + "Homepage": "https://polynetwork.org" + }, + "marketcap_usd": 103.26914554290045, + "name": "POLY AI", + "network": "eth", + "shortcut": "AI", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:AID": { + "address": "0x37E8789bB9996CaC9156cD5F5Fd32599E6b91289", + "links": { + "Homepage": "https://www.aidcoin.co" + }, + "marketcap_usd": 1576502.0408466419, + "name": "AidCoin", + "network": "eth", + "shortcut": "AID", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, "erc20:eth:AION": { "address": "0x4CEdA7906a5Ed2179785Cd3A40A69ee8bc99C466", "links": { "Github": "https://github.com/aionnetwork", "Homepage": "https://aion.network/" }, - "marketcap_usd": 42374595, + "marketcap_usd": 0, "name": "Aion", "network": "eth", "shortcut": "AION", @@ -1348,7 +1474,7 @@ "Github": "https://github.com/AigangNetwork", "Homepage": "https://aigang.network/" }, - "marketcap_usd": 227692, + "marketcap_usd": 111873.09137861899, "name": "Aigang", "network": "eth", "shortcut": "AIX", @@ -1425,13 +1551,40 @@ } ] }, + "erc20:eth:ALI": { + "address": "0x4289c043A12392F1027307fB58272D8EBd853912", + "links": { + "Homepage": "http://ailink.in" + }, + "marketcap_usd": 681678.743605896, + "name": "AiLink Token", + "network": "eth", + "shortcut": "ALI", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, "erc20:eth:ALIS": { "address": "0xEA610B1153477720748DC13ED378003941d84fAB", "links": { "Github": "https://github.com/AlisProject", "Homepage": "https://alismedia.jp" }, - "marketcap_usd": 1174518, + "marketcap_usd": 677872.7415949875, "name": "ALIS Token", "network": "eth", "shortcut": "ALIS", @@ -1480,13 +1633,40 @@ } ] }, + "erc20:eth:ALX": { + "address": "0x49b127Bc33ce7E1586EC28CEC6a65b112596C822", + "links": { + "Homepage": "https://alax.io" + }, + "marketcap_usd": 909107.6099334836, + "name": "ALAX", + "network": "eth", + "shortcut": "ALX", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, "erc20:eth:AMB": { "address": "0x4DC3643DbC642b72C158E7F3d2ff232df61cb6CE", "links": { "Github": "https://github.com/ambrosus", "Homepage": "https://ambrosus.com/index.html" }, - "marketcap_usd": 0, + "marketcap_usd": 7167124.35700235, "name": "Amber Token", "network": "eth", "shortcut": "AMB", @@ -1542,7 +1722,7 @@ "Github": "https://github.com/amlt-by-coinfirm", "Homepage": "https://amlt.coinfirm.io/" }, - "marketcap_usd": 1900161, + "marketcap_usd": 1113525.4310252108, "name": "AMLT", "network": "eth", "shortcut": "AMLT", @@ -1570,7 +1750,7 @@ "Github": "https://github.com/amontech", "Homepage": "https://amon.tech" }, - "marketcap_usd": 143880, + "marketcap_usd": 139671.8376740499, "name": "Amon", "network": "eth", "shortcut": "AMN", @@ -1598,7 +1778,7 @@ "Github": "https://github.com/AMO-Project/", "Homepage": "https://amo.foundation" }, - "marketcap_usd": 10358362, + "marketcap_usd": 4910194.761285167, "name": "AMO Coin", "network": "eth", "shortcut": "AMO", @@ -1652,7 +1832,7 @@ "links": { "Homepage": "https://aragon.one/network" }, - "marketcap_usd": 0, + "marketcap_usd": 10625686.390244687, "name": "ANT", "network": "eth", "shortcut": "ANT", @@ -1674,13 +1854,40 @@ } ] }, + "erc20:eth:AOA": { + "address": "0x9ab165D795019b6d8B3e971DdA91071421305e5a", + "links": { + "Homepage": "https://www.aurorachain.io" + }, + "marketcap_usd": 43597590.18877502, + "name": "Aurora", + "network": "eth", + "shortcut": "AOA", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, "erc20:eth:APIS": { "address": "0x4C0fBE1BB46612915E7967d2C3213cd4d87257AD", "links": { "Github": "https://github.com/Oxchild/crowdsale", "Homepage": "https://apisplatform.io" }, - "marketcap_usd": 15570133, + "marketcap_usd": 7786300.4495246, "name": "APIS", "network": "eth", "shortcut": "APIS", @@ -1708,7 +1915,7 @@ "Github": "https://github.com/Aptoide/AppCoins-ethereumj", "Homepage": "https://appcoins.io" }, - "marketcap_usd": 4310395, + "marketcap_usd": 4149953.550818882, "name": "AppCoins", "network": "eth", "shortcut": "APPC", @@ -1735,7 +1942,7 @@ "links": { "Homepage": "https://aigang.network" }, - "marketcap_usd": 227692, + "marketcap_usd": 0, "name": "AIGang", "network": "eth", "shortcut": "APT", @@ -1790,7 +1997,7 @@ "links": { "Homepage": "https://www.arbitragect.com" }, - "marketcap_usd": 100496, + "marketcap_usd": 69685.03099459283, "name": "ArbitrageCT", "network": "eth", "shortcut": "ARCT", @@ -1845,8 +2052,8 @@ "links": { "Homepage": "https://aeron.aero" }, - "marketcap_usd": 0, - "name": "Aeron Token", + "marketcap_usd": 4711458.824442, + "name": "Aeron", "network": "eth", "shortcut": "ARN", "t1_enabled": "yes", @@ -1872,7 +2079,7 @@ "links": { "Homepage": "https://cofound.it/en/projects/maecenas" }, - "marketcap_usd": 0, + "marketcap_usd": 815790.4727551684, "name": "ART", "network": "eth", "shortcut": "ART", @@ -1950,12 +2157,39 @@ } ] }, + "erc20:eth:ARY": { + "address": "0xa5F8fC0921880Cb7342368BD128eb8050442B1a1", + "links": { + "Homepage": "https://www.blockarray.com" + }, + "marketcap_usd": 842117.05851655, + "name": "Block Array", + "network": "eth", + "shortcut": "ARY", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, "erc20:eth:AST": { "address": "0x27054b13b1B798B345b591a4d22e6562d47eA75a", "links": { "Homepage": "https://airswap.io" }, - "marketcap_usd": 4277451, + "marketcap_usd": 3684517.8559649996, "name": "Airswap", "network": "eth", "shortcut": "AST", @@ -1982,7 +2216,7 @@ "links": { "Homepage": "https://atlant.io" }, - "marketcap_usd": 0, + "marketcap_usd": 643684.7116981795, "name": "ATL", "network": "eth", "shortcut": "ATL", @@ -2004,13 +2238,40 @@ } ] }, + "erc20:eth:ATM": { + "address": "0x9B11EFcAAA1890f6eE52C6bB7CF8153aC5d74139", + "links": { + "Homepage": "https://www.atmchain.io" + }, + "marketcap_usd": 322566.47722295823, + "name": "ATMChain", + "network": "eth", + "shortcut": "ATM", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, "erc20:eth:ATMI": { "address": "0x97AEB5066E1A590e868b511457BEb6FE99d329F5", "links": { "Github": "https://github.com/atonomi", "Homepage": "https://atonomi.io" }, - "marketcap_usd": 854161, + "marketcap_usd": 442789.6583272286, "name": "Atonomi", "network": "eth", "shortcut": "ATMI", @@ -2087,17 +2348,16 @@ } ] }, - "erc20:eth:AVA": { - "address": "0xeD247980396B10169BB1d36f6e278eD16700a60f", + "erc20:eth:ATX": { + "address": "0x1A0F2aB46EC630F9FD638029027b552aFA64b94c", "links": { - "Github": "https://github.com/AvalonPlatform", - "Homepage": "https://avalon.nu" + "Homepage": "https://www.aston.company" }, - "marketcap_usd": 0, - "name": "AVA", + "marketcap_usd": 4275923.77203232, + "name": "Aston", "network": "eth", - "shortcut": "AVA", - "t1_enabled": "yes", + "shortcut": "ATX", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -2115,16 +2375,16 @@ } ] }, - "erc20:eth:AVT": { - "address": "0x0d88eD6E74bbFD96B831231638b66C05571e824F", + "erc20:eth:AUC": { + "address": "0xc12d099be31567add4e4e4d0D45691C3F58f5663", "links": { - "Homepage": "https://aventus.io" + "Homepage": "https://auctus.org" }, - "marketcap_usd": 0, - "name": "AVT", + "marketcap_usd": 292328.3272692107, + "name": "Auctus", "network": "eth", - "shortcut": "AVT", - "t1_enabled": "yes", + "shortcut": "AUC", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -2142,17 +2402,16 @@ } ] }, - "erc20:eth:AX1": { - "address": "0xCd4b4b0F3284a33AC49C67961EC6e111708318Cf", + "erc20:eth:AURA": { + "address": "0xCdCFc0f66c522Fd086A1b725ea3c0Eeb9F9e8814", "links": { - "Github": "https://github.com/Pickeringwareltd/AX1_v1.03", - "Homepage": "https://ax1.io" + "Homepage": "https://auroradao.com" }, - "marketcap_usd": 0, - "name": "AX1 Mining Token", + "marketcap_usd": 3060206.452979388, + "name": "Aurora DAO", "network": "eth", - "shortcut": "AX1", - "t1_enabled": "yes", + "shortcut": "AURA", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -2170,16 +2429,16 @@ } ] }, - "erc20:eth:AXP": { - "address": "0x9af2c6B1A28D3d6BC084bd267F70e90d49741D5B", + "erc20:eth:AUTO": { + "address": "0x622dFfCc4e83C64ba959530A5a5580687a57581b", "links": { - "Homepage": "https://www.axpire.io/" + "Homepage": "https://cubeint.io" }, - "marketcap_usd": 0, - "name": "AXP", + "marketcap_usd": 15258453.80129185, + "name": "Cube", "network": "eth", - "shortcut": "AXP", - "t1_enabled": "yes", + "shortcut": "AUTO", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -2197,13 +2456,123 @@ } ] }, - "erc20:eth:AXPR": { - "address": "0xC39E626A04C5971D770e319760D7926502975e47", + "erc20:eth:AVA": { + "address": "0xeD247980396B10169BB1d36f6e278eD16700a60f", + "links": { + "Github": "https://github.com/AvalonPlatform", + "Homepage": "https://avalon.nu" + }, + "marketcap_usd": 0, + "name": "AVA", + "network": "eth", + "shortcut": "AVA", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:AVT": { + "address": "0x0d88eD6E74bbFD96B831231638b66C05571e824F", + "links": { + "Homepage": "https://aventus.io" + }, + "marketcap_usd": 952213.1989679999, + "name": "AVT", + "network": "eth", + "shortcut": "AVT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:AX1": { + "address": "0xCd4b4b0F3284a33AC49C67961EC6e111708318Cf", + "links": { + "Github": "https://github.com/Pickeringwareltd/AX1_v1.03", + "Homepage": "https://ax1.io" + }, + "marketcap_usd": 0, + "name": "AX1 Mining Token", + "network": "eth", + "shortcut": "AX1", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:AXP": { + "address": "0x9af2c6B1A28D3d6BC084bd267F70e90d49741D5B", + "links": { + "Homepage": "https://www.axpire.io/" + }, + "marketcap_usd": 0, + "name": "AXP", + "network": "eth", + "shortcut": "AXP", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:AXPR": { + "address": "0xC39E626A04C5971D770e319760D7926502975e47", "links": { "Github": "https://www.github.com/axpire", "Homepage": "https://www.axpire.io" }, - "marketcap_usd": 1871447, + "marketcap_usd": 1835362.9182474406, "name": "aXpire", "network": "eth", "shortcut": "AXPR", @@ -2225,6 +2594,60 @@ } ] }, + "erc20:eth:B2BX": { + "address": "0x5d51FCceD3114A8bb5E90cDD0f9d682bCbCC5393", + "links": { + "Homepage": "https://www.b2bx.exchange" + }, + "marketcap_usd": 3422145.3231067644, + "name": "B2BX", + "network": "eth", + "shortcut": "B2BX", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:BANCA": { + "address": "0x998b3B82bC9dBA173990Be7afb772788B5aCB8Bd", + "links": { + "Homepage": "https://www.banca.world" + }, + "marketcap_usd": 1364999.4317603367, + "name": "Banca", + "network": "eth", + "shortcut": "BANCA", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, "erc20:eth:BANX": { "address": "0xF87F0D9153fea549c728Ad61cb801595a68b73de", "links": { @@ -2257,7 +2680,7 @@ "links": { "Homepage": "https://basicattentiontoken.org" }, - "marketcap_usd": 168416142, + "marketcap_usd": 132068898.73267034, "name": "Basic Attention Token", "network": "eth", "shortcut": "BAT", @@ -2279,13 +2702,67 @@ } ] }, + "erc20:eth:BAX": { + "address": "0x9a0242b7a33DAcbe40eDb927834F96eB39f8fBCB", + "links": { + "Homepage": "https://getbabb.com" + }, + "marketcap_usd": 6921515.455245404, + "name": "BABB", + "network": "eth", + "shortcut": "BAX", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:BBC": { + "address": "0xe7D3e4413E29ae35B0893140F4500965c74365e5", + "links": { + "Homepage": "http://bbcoin.tradove.com" + }, + "marketcap_usd": 4776275.78595, + "name": "TraDove B2BCoin", + "network": "eth", + "shortcut": "BBC", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, "erc20:eth:BBK": { "address": "0x4a6058666cf1057eaC3CD3A5a614620547559fc9", "links": { "Github": "https://github.com/brickblock-io", "Homepage": "https://www.brickblock.io/" }, - "marketcap_usd": 0, + "marketcap_usd": 1656162.1972212282, "name": "BRICKBLOCK TOKEN", "network": "eth", "shortcut": "BBK", @@ -2307,12 +2784,66 @@ } ] }, + "erc20:eth:BBN": { + "address": "0x35a69642857083BA2F30bfaB735dacC7F0bac969", + "links": { + "Homepage": "http://www.banyanbbt.org" + }, + "marketcap_usd": 605850.9647453884, + "name": "Banyan Network", + "network": "eth", + "shortcut": "BBN", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:BBO": { + "address": "0x84F7c44B6Fed1080f647E354D552595be2Cc602F", + "links": { + "Homepage": "https://bigbom.com" + }, + "marketcap_usd": 166211.35115558517, + "name": "Bigbom", + "network": "eth", + "shortcut": "BBO", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, "erc20:eth:BC": { "address": "0x2ecB13A8c458c379c4d9a7259e202De03c8F3D19", "links": { "Homepage": "https://block-chain.com" }, - "marketcap_usd": 0, + "marketcap_usd": 44403.42711205552, "name": "Block-Chain.com", "network": "eth", "shortcut": "BC", @@ -2369,7 +2900,7 @@ "Homepage": "https://www.blockcdn.org" }, "marketcap_usd": 0, - "name": "BCDN", + "name": "BlockCDN", "network": "eth", "shortcut": "BCDN", "t1_enabled": "yes", @@ -2396,7 +2927,7 @@ "Github": "https://github.com/VinceBCD/BCDiploma", "Homepage": "https://www.bcdiploma.com" }, - "marketcap_usd": 223782, + "marketcap_usd": 132502.2091200458, "name": "Blockchain Certified Data Token", "network": "eth", "shortcut": "BCDT", @@ -2451,7 +2982,7 @@ "Github": "https://github.com/blockmason", "Homepage": "https://blockmason.io" }, - "marketcap_usd": 0, + "marketcap_usd": 3342660.4597807997, "name": "BCPT", "network": "eth", "shortcut": "BCPT", @@ -2479,7 +3010,7 @@ "Github": "https://github.com/bitcv", "Homepage": "https://bitcv.one/" }, - "marketcap_usd": 0, + "marketcap_usd": 7239618.36207, "name": "BitCapitalVendor Token", "network": "eth", "shortcut": "BCV", @@ -2507,7 +3038,7 @@ "Github": "https://github.com/bitdegree", "Homepage": "https://bitdegree.org" }, - "marketcap_usd": 0, + "marketcap_usd": 856764.3601047774, "name": "BitDegree Token", "network": "eth", "shortcut": "BDG", @@ -2535,7 +3066,7 @@ "Github": "https://github.com/thebeetoken", "Homepage": "https://www.beetoken.com" }, - "marketcap_usd": 690438, + "marketcap_usd": 722937.1448122382, "name": "Bee Token", "network": "eth", "shortcut": "BEE", @@ -2563,7 +3094,7 @@ "Github": "https://github.com/Rentberry", "Homepage": "https://rentberry.com" }, - "marketcap_usd": 0, + "marketcap_usd": 620086.3643516239, "name": "Berry", "network": "eth", "shortcut": "BERRY", @@ -2591,8 +3122,8 @@ "Github": "https://github.com/daocasino", "Homepage": "https://dao.casino" }, - "marketcap_usd": 0, - "name": "BET", + "marketcap_usd": 1459870.9319291087, + "name": "DAO.Casino", "network": "eth", "shortcut": "BET", "t1_enabled": "yes", @@ -2619,7 +3150,7 @@ "Github": "https://github.com/bethereumproject", "Homepage": "https://www.bethereum.com/" }, - "marketcap_usd": 508668, + "marketcap_usd": 386698.5226857671, "name": "Bethereum", "network": "eth", "shortcut": "BETHER", @@ -2647,7 +3178,7 @@ "Github": "https://github.com/betterbetting", "Homepage": "https://www.betterbetting.org" }, - "marketcap_usd": 0, + "marketcap_usd": 526007.3807241232, "name": "BETR", "network": "eth", "shortcut": "BETR", @@ -2669,17 +3200,17 @@ } ] }, - "erc20:eth:BHR": { - "address": "0xfe5D908c9Ad85f651185dAa6a4770726E2b27d09", + "erc20:eth:BEZ": { + "address": "0x3839d8ba312751Aa0248fEd6a8bACB84308E20Ed", "links": { - "Homepage": "https://www.bether.cc" + "Homepage": "https://bezop.io" }, - "marketcap_usd": 0, - "name": "BETHER", + "marketcap_usd": 1138467.3723765637, + "name": "Bezop", "network": "eth", - "shortcut": "BHR", + "shortcut": "BEZ", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20", "wallet": [ { @@ -2696,13 +3227,94 @@ } ] }, - "erc20:eth:BITCAR": { - "address": "0x08b4c866aE9D1bE56a06e0C302054B4FFe067b43", + "erc20:eth:BHPC": { + "address": "0xEE74110fB5A1007b06282e0DE5d73A61bf41d9Cd", "links": { - "Github": "https://github.com/BitCar-io", - "Homepage": "https://bitcar.io/" + "Homepage": "https://bhpcash.io/bhpc/index.html" }, - "marketcap_usd": 0, + "marketcap_usd": 23318213.51703977, + "name": "BHPCash", + "network": "eth", + "shortcut": "BHPC", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:BHR": { + "address": "0xfe5D908c9Ad85f651185dAa6a4770726E2b27d09", + "links": { + "Homepage": "https://www.bether.cc" + }, + "marketcap_usd": 0, + "name": "BETHER", + "network": "eth", + "shortcut": "BHR", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:BIT": { + "address": "0x089B85FA15f72c1088CBbef23a49DB80B91DD521", + "links": { + "Homepage": "https://www.blockestate.net" + }, + "marketcap_usd": 0, + "name": "BlockEstate Investment Token", + "network": "eth", + "shortcut": "BIT", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:BITCAR": { + "address": "0x08b4c866aE9D1bE56a06e0C302054B4FFe067b43", + "links": { + "Github": "https://github.com/BitCar-io", + "Homepage": "https://bitcar.io/" + }, + "marketcap_usd": 0, "name": "BitCar Token", "network": "eth", "shortcut": "BITCAR", @@ -2724,6 +3336,33 @@ } ] }, + "erc20:eth:BIX": { + "address": "0xb3104b4B9Da82025E8b9F8Fb28b3553ce2f67069", + "links": { + "Homepage": "https://www.bibox.com" + }, + "marketcap_usd": 13458028.803837648, + "name": "Bibox Token", + "network": "eth", + "shortcut": "BIX", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, "erc20:eth:BKB": { "address": "0xB2Bfeb70B903F1BAaC7f2ba2c62934C7e5B974C4", "links": { @@ -2784,7 +3423,7 @@ "Github": "https://github.com/BankEx", "Homepage": "https://bankex.com/" }, - "marketcap_usd": 2572828, + "marketcap_usd": 1204323.1991340118, "name": "BANKEX", "network": "eth", "shortcut": "BKX", @@ -2806,13 +3445,40 @@ } ] }, + "erc20:eth:BLN": { + "address": "0xCA29db4221c111888a7e80b12eAc8a266Da3Ee0d", + "links": { + "Homepage": "http://bolenum.com" + }, + "marketcap_usd": 44.0383858122, + "name": "Bolenum", + "network": "eth", + "shortcut": "BLN", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, "erc20:eth:BLT": { "address": "0x107c4504cd79C5d2696Ea0030a8dD4e92601B82e", "links": { "Github": "https://github.com/hellobloom", "Homepage": "https://hellobloom.io" }, - "marketcap_usd": 0, + "marketcap_usd": 1387710.8769785995, "name": "Bloom", "network": "eth", "shortcut": "BLT", @@ -2840,7 +3506,7 @@ "Github": "https://github.com/BlueCrypto", "Homepage": "https://blueprotocol.com/" }, - "marketcap_usd": 685613, + "marketcap_usd": 501442.8856324111, "name": "Ethereum Blue", "network": "eth", "shortcut": "BLUE", @@ -2895,7 +3561,7 @@ "links": { "Homepage": "https://www.iconomi.net" }, - "marketcap_usd": 17382437, + "marketcap_usd": 0, "name": "Iconomi", "network": "eth", "shortcut": "BLX (Iconomi)", @@ -2917,13 +3583,40 @@ } ] }, + "erc20:eth:BLZ": { + "address": "0x5732046A883704404F284Ce41FfADd5b007FD668", + "links": { + "Homepage": "https://bluzelle.com" + }, + "marketcap_usd": 7491299.491153803, + "name": "Bluzelle", + "network": "eth", + "shortcut": "BLZ", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, "erc20:eth:BMC": { "address": "0xDf6Ef343350780BF8C3410BF062e0C015B1DD671", "links": { "Github": "https://github.com/blackmoonfg", "Homepage": "https://blackmooncrypto.com" }, - "marketcap_usd": 0, + "marketcap_usd": 2909952.6715368605, "name": "Blackmoon Crypto BMC Token", "network": "eth", "shortcut": "BMC", @@ -2976,10 +3669,10 @@ "erc20:eth:BMX": { "address": "0x986EE2B944c42D017F52Af21c4c69B84DBeA35d8", "links": { - "Homepage": "https://bitmart.com" + "Homepage": "https://www.bitmart.com" }, - "marketcap_usd": 0, - "name": "BitMartToken", + "marketcap_usd": 1453900.289170328, + "name": "BitMart Token", "network": "eth", "shortcut": "BMX", "t1_enabled": "yes", @@ -3005,7 +3698,7 @@ "links": { "Homepage": "https://www.binance.com" }, - "marketcap_usd": 713786424, + "marketcap_usd": 920950671.8153768, "name": "Binance Coin", "network": "eth", "shortcut": "BNB", @@ -3027,13 +3720,40 @@ } ] }, + "erc20:eth:BNN": { + "address": "0xDA80B20038BDF968C7307BB5907A469482CF6251", + "links": { + "Homepage": "https://www.brokerneko.com" + }, + "marketcap_usd": 16130.223417149824, + "name": "BrokerNekoNetwork", + "network": "eth", + "shortcut": "BNN", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, "erc20:eth:BNT": { "address": "0x1F573D6Fb3F13d689FF844B4cE37794d79a7FF1C", "links": { "Github": "https://github.com/bancorprotocol", "Homepage": "https://www.bancor.network/discover" }, - "marketcap_usd": 34459764, + "marketcap_usd": 29688919.28422186, "name": "Bancor", "network": "eth", "shortcut": "BNT", @@ -3060,7 +3780,7 @@ "links": { "Homepage": "https://bounty0x.io" }, - "marketcap_usd": 0, + "marketcap_usd": 645195.5269725319, "name": "Bounty0x Token", "network": "eth", "shortcut": "BNTY", @@ -3087,7 +3807,7 @@ "links": { "Homepage": "https://bobsrepair.com" }, - "marketcap_usd": 0, + "marketcap_usd": 279919.6285340227, "name": "Bob's repair", "network": "eth", "shortcut": "BOB", @@ -3114,7 +3834,7 @@ "links": { "Homepage": "https://bonpay.com" }, - "marketcap_usd": 290746, + "marketcap_usd": 208652.45341511004, "name": "Bonpay", "network": "eth", "shortcut": "BON", @@ -3190,13 +3910,67 @@ } ] }, + "erc20:eth:BOUTS": { + "address": "0x139d9397274bb9E2C29A9aa8Aa0b5874d30D62E3", + "links": { + "Homepage": "https://www.bouts.pro" + }, + "marketcap_usd": 159575.67294349548, + "name": "BoutsPro", + "network": "eth", + "shortcut": "BOUTS", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:BOXX": { + "address": "0x780116D91E5592E58a3b3c76A351571b39abCEc6", + "links": { + "Homepage": "https://www.goblockparty.com" + }, + "marketcap_usd": 988354.4087748872, + "name": "BOXX Token [Blockparty]", + "network": "eth", + "shortcut": "BOXX", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, "erc20:eth:BPT": { "address": "0x327682779bAB2BF4d1337e8974ab9dE8275A7Ca8", "links": { "Github": "https://github.com/Blockport/tokensale", "Homepage": "https://blockport.io" }, - "marketcap_usd": 0, + "marketcap_usd": 5836835.641333012, "name": "Blockport Token", "network": "eth", "shortcut": "BPT", @@ -3223,7 +3997,7 @@ "links": { "Homepage": "https://www.bitquence.com" }, - "marketcap_usd": 0, + "marketcap_usd": 13121863.728156526, "name": "Bitquence", "network": "eth", "shortcut": "BQX", @@ -3250,7 +4024,7 @@ "links": { "Homepage": "http://bro-consortium.io" }, - "marketcap_usd": 6220, + "marketcap_usd": 17643.9286664, "name": "BRAT", "network": "eth", "shortcut": "BRAT", @@ -3278,7 +4052,7 @@ "Github": "https://github.com/breadwallet", "Homepage": "https://token.breadapp.com/en" }, - "marketcap_usd": 18277135, + "marketcap_usd": 16465833.472879272, "name": "Bread", "network": "eth", "shortcut": "BRD", @@ -3436,6 +4210,33 @@ } ] }, + "erc20:eth:BTCONE": { + "address": "0x87f5E8c3425218837f3CB67dB941aF0C01323E56", + "links": { + "Homepage": "https://www.bitcoinone.io" + }, + "marketcap_usd": 5543.64046248, + "name": "BitCoin One", + "network": "eth", + "shortcut": "BTCONE", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, "erc20:eth:BTE": { "address": "0x73dD069c299A5d691E9836243BcaeC9c8C1D8734", "links": { @@ -3497,7 +4298,7 @@ "Github": "https://github.com/bethereumproject", "Homepage": "https://www.bethereum.com/" }, - "marketcap_usd": 508668, + "marketcap_usd": 0, "name": "Bethereum", "network": "eth", "shortcut": "BTHR", @@ -3525,7 +4326,7 @@ "Github": "https://github.com/bitcoin-token", "Homepage": "https://btk.community" }, - "marketcap_usd": 215200, + "marketcap_usd": 91201.37122135403, "name": "Bitcoin Token", "network": "eth", "shortcut": "BTK", @@ -3553,7 +4354,7 @@ "Github": "https://github.com/bytom", "Homepage": "https://bytom.io" }, - "marketcap_usd": 91212964, + "marketcap_usd": 0, "name": "Bytom", "network": "eth", "shortcut": "BTM", @@ -3575,16 +4376,16 @@ } ] }, - "erc20:eth:BTQ": { - "address": "0x16B0E62aC13a2fAeD36D18bce2356d25Ab3CfAD3", + "erc20:eth:BTO": { + "address": "0x36905Fc93280f52362A1CBAB151F25DC46742Fb5", "links": { - "Homepage": "https://thebtcbtq.com" + "Homepage": "https://www.bottos.org" }, - "marketcap_usd": 0, - "name": "Bitcoin Boutique", + "marketcap_usd": 5394576.2577483505, + "name": "Bottos", "network": "eth", - "shortcut": "BTQ", - "t1_enabled": "yes", + "shortcut": "BTO", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -3602,16 +4403,15 @@ } ] }, - "erc20:eth:BTT": { - "address": "0x080aa07E2C7185150d7e4DA98838A8d2feac3dfC", + "erc20:eth:BTQ": { + "address": "0x16B0E62aC13a2fAeD36D18bce2356d25Ab3CfAD3", "links": { - "Github": "https://github.com/Andyss4545/BitEther", - "Homepage": "https://bytom.io" + "Homepage": "https://thebtcbtq.com" }, - "marketcap_usd": 28235, - "name": "Bitether", + "marketcap_usd": 0, + "name": "Bitcoin Boutique", "network": "eth", - "shortcut": "BTT", + "shortcut": "BTQ", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -3630,16 +4430,16 @@ } ] }, - "erc20:eth:BTTX": { - "address": "0xFA456Cf55250A839088b27EE32A424d7DAcB54Ff", + "erc20:eth:BTR": { + "address": "0x499A6B77bc25C26bCf8265E2102B1B3dd1617024", "links": { - "Homepage": "https://blocktrade.com/" + "Homepage": "https://bitether.org" }, - "marketcap_usd": 0, - "name": "Blocktrade.com", + "marketcap_usd": 59082.47974980482, + "name": "Bitether", "network": "eth", - "shortcut": "BTTX", - "t1_enabled": "yes", + "shortcut": "BTR", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -3657,16 +4457,15 @@ } ] }, - "erc20:eth:BTU": { - "address": "0xb683D83a532e2Cb7DFa5275eED3698436371cc9f", + "erc20:eth:BTRN": { + "address": "0x03C780cD554598592B97b7256dDAad759945b125", "links": { - "Github": "https://github.com/btuprotocol", - "Homepage": "https://btu-protocol.com" + "Homepage": "https://biotron.io" }, - "marketcap_usd": 0, - "name": "BTU Protocol", + "marketcap_usd": 272214.34414271085, + "name": "Biotron", "network": "eth", - "shortcut": "BTU", + "shortcut": "BTRN", "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", @@ -3685,15 +4484,16 @@ } ] }, - "erc20:eth:BUC": { - "address": "0xCa3c18a65b802eC267f8f4802545e7F53D24C75e", + "erc20:eth:BTT": { + "address": "0x080aa07E2C7185150d7e4DA98838A8d2feac3dfC", "links": { - "Homepage": "https://beeunity.org" + "Github": "https://github.com/Andyss4545/BitEther", + "Homepage": "https://bytom.io" }, "marketcap_usd": 0, - "name": "BeeUnity Chain", + "name": "Bitether", "network": "eth", - "shortcut": "BUC", + "shortcut": "BTT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -3712,16 +4512,15 @@ } ] }, - "erc20:eth:C20": { - "address": "0x26E75307Fc0C021472fEb8F727839531F112f317", + "erc20:eth:BTTX": { + "address": "0xFA456Cf55250A839088b27EE32A424d7DAcB54Ff", "links": { - "Github": "https://github.com/cryptotwenty", - "Homepage": "https://crypto20.com" + "Homepage": "https://blocktrade.com/" }, - "marketcap_usd": 14747327, - "name": "Crypto20's Token", + "marketcap_usd": 1389006.7327868673, + "name": "Blocktrade.com", "network": "eth", - "shortcut": "C20", + "shortcut": "BTTX", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -3740,16 +4539,17 @@ } ] }, - "erc20:eth:CAG": { - "address": "0x7d4b8Cce0591C9044a22ee543533b72E976E36C3", + "erc20:eth:BTU": { + "address": "0xb683D83a532e2Cb7DFa5275eED3698436371cc9f", "links": { - "Homepage": "https://change-bank.com" + "Github": "https://github.com/btuprotocol", + "Homepage": "https://btu-protocol.com" }, "marketcap_usd": 0, - "name": "Change Bank", + "name": "BTU Protocol", "network": "eth", - "shortcut": "CAG", - "t1_enabled": "yes", + "shortcut": "BTU", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -3767,15 +4567,15 @@ } ] }, - "erc20:eth:CAN": { - "address": "0x1d462414fe14cf489c7A21CaC78509f4bF8CD7c0", + "erc20:eth:BUC": { + "address": "0xCa3c18a65b802eC267f8f4802545e7F53D24C75e", "links": { - "Homepage": "https://canya.io" + "Homepage": "https://beeunity.org" }, "marketcap_usd": 0, - "name": "CAN", + "name": "BeeUnity Chain", "network": "eth", - "shortcut": "CAN", + "shortcut": "BUC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -3794,16 +4594,16 @@ } ] }, - "erc20:eth:CARB": { - "address": "0xA517a46Baad6B054A76bD19c46844f717fe69fea", + "erc20:eth:BWX": { + "address": "0xbD168CbF9d3a375B38dC51A202B5E8a4E52069Ed", "links": { - "Homepage": "https://carbcoin.eu/" + "Homepage": "https://www.bluewhale.foundation" }, - "marketcap_usd": 0, - "name": "CarbCoin", + "marketcap_usd": 2771004.9184069186, + "name": "Blue Whale Token", "network": "eth", - "shortcut": "CARB", - "t1_enabled": "yes", + "shortcut": "BWX", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -3821,16 +4621,16 @@ } ] }, - "erc20:eth:CARCO": { - "address": "0x2108E62D335Bbdc89eC3E9d8582F18DCFB0cDFf4", + "erc20:eth:BZ": { + "address": "0x4375E7aD8A01B8eC3Ed041399f62D9Cd120e0063", "links": { - "Homepage": "https://carcohub.com" + "Homepage": "https://www.bitz.com" }, - "marketcap_usd": 0, - "name": "CARCO", + "marketcap_usd": 3035017.8581350544, + "name": "Bit-Z Token", "network": "eth", - "shortcut": "CARCO", - "t1_enabled": "yes", + "shortcut": "BZ", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -3848,16 +4648,16 @@ } ] }, - "erc20:eth:CARE": { - "address": "0xbF18F246B9301F231e9561B35A3879769BB46375", + "erc20:eth:BZNT": { + "address": "0xE1Aee98495365fc179699C1bB3E761FA716beE62", "links": { - "Homepage": "https://tombcare.com/" + "Homepage": "https://bezant.io" }, - "marketcap_usd": 0, - "name": "Token CARE", + "marketcap_usd": 12050684.380868295, + "name": "Bezant", "network": "eth", - "shortcut": "CARE", - "t1_enabled": "yes", + "shortcut": "BZNT", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -3875,15 +4675,16 @@ } ] }, - "erc20:eth:CAS": { - "address": "0xe8780B48bdb05F928697A5e8155f672ED91462F7", + "erc20:eth:C20": { + "address": "0x26E75307Fc0C021472fEb8F727839531F112f317", "links": { - "Homepage": "https://cashaa.com" + "Github": "https://github.com/cryptotwenty", + "Homepage": "https://crypto20.com" }, - "marketcap_usd": 6407986, - "name": "Cashaa", + "marketcap_usd": 14278554.830531472, + "name": "Crypto20's Token", "network": "eth", - "shortcut": "CAS", + "shortcut": "C20", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -3902,15 +4703,15 @@ } ] }, - "erc20:eth:CAT (BitClave)": { - "address": "0x1234567461d3f8Db7496581774Bd869C83D51c93", + "erc20:eth:C8": { + "address": "0xd42debE4eDc92Bd5a3FBb4243e1ecCf6d63A4A5d", "links": { - "Homepage": "https://www.bitclave.com" + "Homepage": "https://www.carboneum.io" }, - "marketcap_usd": 0, - "name": "CAT (BitClave)", + "marketcap_usd": 390948.19348648033, + "name": "Carboneum", "network": "eth", - "shortcut": "CAT (BitClave)", + "shortcut": "C8", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -3929,15 +4730,15 @@ } ] }, - "erc20:eth:CAT (Blockcat)": { - "address": "0x56ba2Ee7890461f463F7be02aAC3099f6d5811A8", + "erc20:eth:CAG": { + "address": "0x7d4b8Cce0591C9044a22ee543533b72E976E36C3", "links": { - "Homepage": "https://blockcat.io" + "Homepage": "https://change-bank.com" }, - "marketcap_usd": 0, - "name": "CAT (Blockcat)", + "marketcap_usd": 2539179.215815956, + "name": "Change Bank", "network": "eth", - "shortcut": "CAT (Blockcat)", + "shortcut": "CAG", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -3956,15 +4757,15 @@ } ] }, - "erc20:eth:CATs (BitClave)_Old": { - "address": "0x68e14bb5A45B9681327E16E528084B9d962C1a39", + "erc20:eth:CAN": { + "address": "0x1d462414fe14cf489c7A21CaC78509f4bF8CD7c0", "links": { - "Homepage": "https://www.bitclave.com" + "Homepage": "https://canya.io" }, - "marketcap_usd": 0, - "name": "CATs (BitClave)_Old", + "marketcap_usd": 593000.6600401021, + "name": "CAN", "network": "eth", - "shortcut": "CATs (BitClave)_Old", + "shortcut": "CAN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -3983,17 +4784,16 @@ } ] }, - "erc20:eth:CBIX": { - "address": "0x05C3617cBf1304b9260AA61ec960F115D67beCEA", + "erc20:eth:CAPP": { + "address": "0x04F2E7221fdb1B52A68169B25793E51478fF0329", "links": { - "Github": "https://github.com/Cubrixio", - "Homepage": "https://cubrix.io" + "Homepage": "https://cappasity.com/tech/" }, - "marketcap_usd": 0, - "name": "Cubrix", + "marketcap_usd": 875537.6711131476, + "name": "Cappasity", "network": "eth", - "shortcut": "CBIX", - "t1_enabled": "yes", + "shortcut": "CAPP", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -4011,15 +4811,15 @@ } ] }, - "erc20:eth:CC3": { - "address": "0xc166038705FFBAb3794185b3a9D925632A1DF37D", + "erc20:eth:CARB": { + "address": "0xA517a46Baad6B054A76bD19c46844f717fe69fea", "links": { - "Homepage": "https://coalcoin.tech/en" + "Homepage": "https://carbcoin.eu/" }, "marketcap_usd": 0, - "name": "Coal Coin", + "name": "CarbCoin", "network": "eth", - "shortcut": "CC3", + "shortcut": "CARB", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -4038,15 +4838,15 @@ } ] }, - "erc20:eth:CCC (CryptoCrashCourse)": { - "address": "0x28577A6d31559bd265Ce3ADB62d0458550F7b8a7", + "erc20:eth:CARCO": { + "address": "0x2108E62D335Bbdc89eC3E9d8582F18DCFB0cDFf4", "links": { - "Homepage": "http://cryptocrashcourse.com" + "Homepage": "https://carcohub.com" }, "marketcap_usd": 0, - "name": "CryptoCrashCourse", + "name": "CARCO", "network": "eth", - "shortcut": "CCC (CryptoCrashCourse)", + "shortcut": "CARCO", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -4065,15 +4865,15 @@ } ] }, - "erc20:eth:CCC (ICONOMI)": { - "address": "0xBE11eEb186e624b8f26A5045575a1340E4054552", + "erc20:eth:CARE": { + "address": "0xbF18F246B9301F231e9561B35A3879769BB46375", "links": { - "Homepage": "https://www.iconomi.net/dashboard/#/daa/CCC" + "Homepage": "https://tombcare.com/" }, "marketcap_usd": 0, - "name": "CCC (ICONOMI)", + "name": "Token CARE", "network": "eth", - "shortcut": "CCC (ICONOMI)", + "shortcut": "CARE", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -4092,16 +4892,15 @@ } ] }, - "erc20:eth:CCLC": { - "address": "0xd348e07A2806505B856123045d27aeeD90924b50", + "erc20:eth:CAS": { + "address": "0xe8780B48bdb05F928697A5e8155f672ED91462F7", "links": { - "Github": "https://github.com/lifechange-io/christ-coin", - "Homepage": "https://christcoins.io" + "Homepage": "https://cashaa.com" }, - "marketcap_usd": 0, - "name": "Christ Coin", + "marketcap_usd": 5691784.546765446, + "name": "Cashaa", "network": "eth", - "shortcut": "CCLC", + "shortcut": "CAS", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -4120,16 +4919,15 @@ } ] }, - "erc20:eth:CCS": { - "address": "0x315cE59FAFd3A8d562b7Ec1C8542382d2710b06c", + "erc20:eth:CAT (BitClave)": { + "address": "0x1234567461d3f8Db7496581774Bd869C83D51c93", "links": { - "Github": "github.com/AnalemaTechnologies/CacaoShares", - "Homepage": "http://www.cacaoshares.com" + "Homepage": "https://www.bitclave.com" }, - "marketcap_usd": 0, - "name": "CacaoShares", + "marketcap_usd": 242931.725937579, + "name": "CAT (BitClave)", "network": "eth", - "shortcut": "CCS", + "shortcut": "CAT (BitClave)", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -4148,16 +4946,15 @@ } ] }, - "erc20:eth:CDL": { - "address": "0x8a95ca448A52C0ADf0054bB3402dC5e09CD6B232", + "erc20:eth:CAT (Blockcat)": { + "address": "0x56ba2Ee7890461f463F7be02aAC3099f6d5811A8", "links": { - "Github": "https://github.com/confideal", - "Homepage": "https://confideal.io" + "Homepage": "https://blockcat.io" }, - "marketcap_usd": 0, - "name": "Confideal", + "marketcap_usd": 650212.1818758751, + "name": "CAT (Blockcat)", "network": "eth", - "shortcut": "CDL", + "shortcut": "CAT (Blockcat)", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -4176,15 +4973,15 @@ } ] }, - "erc20:eth:CDT": { - "address": "0x177d39AC676ED1C67A2b268AD7F1E58826E5B0af", + "erc20:eth:CATs (BitClave)_Old": { + "address": "0x68e14bb5A45B9681327E16E528084B9d962C1a39", "links": { - "Homepage": "https://www.coindash.io" + "Homepage": "https://www.bitclave.com" }, "marketcap_usd": 0, - "name": "CoinDash", + "name": "CATs (BitClave)_Old", "network": "eth", - "shortcut": "CDT", + "shortcut": "CATs (BitClave)_Old", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -4203,16 +5000,16 @@ } ] }, - "erc20:eth:CEEK": { - "address": "0xb056c38f6b7Dc4064367403E26424CD2c60655e1", + "erc20:eth:CBC": { + "address": "0x26DB5439F651CAF491A87d48799dA81F191bDB6b", "links": { - "Homepage": "https://www.ceek.com/" + "Homepage": "https://coin.cashbet.com" }, - "marketcap_usd": 0, - "name": "CEEK VR Token", + "marketcap_usd": 889978.2409939371, + "name": "CashBet Coin", "network": "eth", - "shortcut": "CEEK", - "t1_enabled": "yes", + "shortcut": "CBC", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -4230,16 +5027,16 @@ } ] }, - "erc20:eth:CET": { - "address": "0xF660cA1e228e7BE1fA8B4f5583145E31147FB577", + "erc20:eth:CBIX": { + "address": "0x05C3617cBf1304b9260AA61ec960F115D67beCEA", "links": { - "Github": "https://github.com/DICE-Money/", - "Homepage": "https://dice.money/" + "Github": "https://github.com/Cubrixio", + "Homepage": "https://cubrix.io" }, "marketcap_usd": 0, - "name": "DICE Money Dicet", + "name": "Cubrix", "network": "eth", - "shortcut": "CET", + "shortcut": "CBIX", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -4258,16 +5055,16 @@ } ] }, - "erc20:eth:CFC": { - "address": "0x5Dff89a2caa4D76bc286F74D67Bd718eb834da61", + "erc20:eth:CBT": { + "address": "0x076C97e1c869072eE22f8c91978C99B4bcB02591", "links": { - "Homepage": "https://cryptfillcoin.com" + "Homepage": "https://www.commerceblock.com" }, - "marketcap_usd": 0, - "name": "CryptFillCoin", + "marketcap_usd": 2627112.5735166552, + "name": "CommerceBlock", "network": "eth", - "shortcut": "CFC", - "t1_enabled": "yes", + "shortcut": "CBT", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -4285,15 +5082,15 @@ } ] }, - "erc20:eth:CFI": { - "address": "0x12FEF5e57bF45873Cd9B62E9DBd7BFb99e32D73e", + "erc20:eth:CC3": { + "address": "0xc166038705FFBAb3794185b3a9D925632A1DF37D", "links": { - "Homepage": "https://cofound.it/" + "Homepage": "https://coalcoin.tech/en" }, "marketcap_usd": 0, - "name": "Cofound.it", + "name": "Coal Coin", "network": "eth", - "shortcut": "CFI", + "shortcut": "CC3", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -4312,16 +5109,15 @@ } ] }, - "erc20:eth:CFTY": { - "address": "0x6956983F8B3Ce173B4AB84361AA0ad52f38D936f", + "erc20:eth:CCC (CryptoCrashCourse)": { + "address": "0x28577A6d31559bd265Ce3ADB62d0458550F7b8a7", "links": { - "Github": "https://github.com/crafty-work", - "Homepage": "https://crafty.work/" + "Homepage": "http://cryptocrashcourse.com" }, "marketcap_usd": 0, - "name": "Crafty Token", + "name": "CryptoCrashCourse", "network": "eth", - "shortcut": "CFTY", + "shortcut": "CCC (CryptoCrashCourse)", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -4340,15 +5136,15 @@ } ] }, - "erc20:eth:CHSB": { - "address": "0xba9d4199faB4f26eFE3551D490E3821486f135Ba", + "erc20:eth:CCC (ICONOMI)": { + "address": "0xBE11eEb186e624b8f26A5045575a1340E4054552", "links": { - "Homepage": "https://swissborg.com" + "Homepage": "https://www.iconomi.net/dashboard/#/daa/CCC" }, "marketcap_usd": 0, - "name": "CHSB", + "name": "CCC (ICONOMI)", "network": "eth", - "shortcut": "CHSB", + "shortcut": "CCC (ICONOMI)", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -4367,16 +5163,16 @@ } ] }, - "erc20:eth:CK": { - "address": "0x06012c8cf97BEaD5deAe237070F9587f8E7A266d", + "erc20:eth:CCCX": { + "address": "0x378903a03FB2C3AC76BB52773e3CE11340377A32", "links": { - "Homepage": "https://cryptokitties.co" + "Homepage": "http://clippercoin.com" }, - "marketcap_usd": 0, - "name": "CK", + "marketcap_usd": 3430577.7547347965, + "name": "Clipper Coin", "network": "eth", - "shortcut": "CK", - "t1_enabled": "yes", + "shortcut": "CCCX", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -4394,16 +5190,16 @@ } ] }, - "erc20:eth:CLB": { - "address": "0xb1c1Cb8C7c1992dba24e628bF7d38E71daD46aeB", + "erc20:eth:CCLC": { + "address": "0xd348e07A2806505B856123045d27aeeD90924b50", "links": { - "Github": "https://github.com/Cloudbric-Project", - "Homepage": "https://www.cloudbric.io/" + "Github": "https://github.com/lifechange-io/christ-coin", + "Homepage": "https://christcoins.io" }, "marketcap_usd": 0, - "name": "Cloudbric", + "name": "Christ Coin", "network": "eth", - "shortcut": "CLB", + "shortcut": "CCLC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -4422,17 +5218,16 @@ } ] }, - "erc20:eth:CLL": { - "address": "0x3dC9a42fa7Afe57BE03c58fD7F4411b1E466C508", + "erc20:eth:CCO": { + "address": "0x679BADc551626e01B23CeecEFBc9B877EA18fc46", "links": { - "Github": "https://github.com/CryptoLiveLeak/CLL-Token", - "Homepage": "https://www.cryptoliveleak.com/" + "Homepage": "https://ccore.io" }, - "marketcap_usd": 0, - "name": "CryptoLiveLeak", + "marketcap_usd": 65427.030899098594, + "name": "Ccore", "network": "eth", - "shortcut": "CLL", - "t1_enabled": "yes", + "shortcut": "CCO", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -4450,16 +5245,16 @@ } ] }, - "erc20:eth:CLN": { - "address": "0x4162178B78D6985480A308B2190EE5517460406D", + "erc20:eth:CCS": { + "address": "0x315cE59FAFd3A8d562b7Ec1C8542382d2710b06c", "links": { - "Github": "https://github.com/colucom/CLN-solidity", - "Homepage": "https://cln.network" + "Github": "github.com/AnalemaTechnologies/CacaoShares", + "Homepage": "http://www.cacaoshares.com" }, "marketcap_usd": 0, - "name": "ColuLocalNetwork", + "name": "CacaoShares", "network": "eth", - "shortcut": "CLN", + "shortcut": "CCS", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -4478,16 +5273,16 @@ } ] }, - "erc20:eth:CLP": { - "address": "0x7FCE2856899a6806eeEf70807985fc7554C66340", + "erc20:eth:CCT": { + "address": "0x336F646F87D9f6bC6Ed42Dd46E8b3fD9DbD15C22", "links": { - "Homepage": "https://cryptolending.org" + "Homepage": "http://crystal-clear.io" }, - "marketcap_usd": 0, - "name": "CryptoLending", + "marketcap_usd": 54212.30699051036, + "name": "Crystal Clear Token", "network": "eth", - "shortcut": "CLP", - "t1_enabled": "yes", + "shortcut": "CCT", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -4505,15 +5300,16 @@ } ] }, - "erc20:eth:CMBT": { - "address": "0x3EDD235C3E840C1F29286B2e39370a255C7B6fdb", + "erc20:eth:CDL": { + "address": "0x8a95ca448A52C0ADf0054bB3402dC5e09CD6B232", "links": { - "Homepage": "https://www.coinmarketbrasil.com.br" + "Github": "https://github.com/confideal", + "Homepage": "https://confideal.io" }, "marketcap_usd": 0, - "name": "CMBToken", + "name": "Confideal", "network": "eth", - "shortcut": "CMBT", + "shortcut": "CDL", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -4532,15 +5328,15 @@ } ] }, - "erc20:eth:CMC": { - "address": "0x7e667525521cF61352e2E01b50FaaaE7Df39749a", + "erc20:eth:CDT": { + "address": "0x177d39AC676ED1C67A2b268AD7F1E58826E5B0af", "links": { - "Homepage": "https://www.cryptomart.me" + "Homepage": "https://www.coindash.io" }, - "marketcap_usd": 0, - "name": "CryptoMart", + "marketcap_usd": 4843450.883170687, + "name": "CoinDash", "network": "eth", - "shortcut": "CMC", + "shortcut": "CDT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -4559,16 +5355,15 @@ } ] }, - "erc20:eth:CMT": { - "address": "0xf85fEea2FdD81d51177F6b8F35F0e6734Ce45F5F", + "erc20:eth:CEEK": { + "address": "0xb056c38f6b7Dc4064367403E26424CD2c60655e1", "links": { - "Github": "https://github.com/CyberMiles", - "Homepage": "https://cm.5miles.com" + "Homepage": "https://www.ceek.com/" }, - "marketcap_usd": 0, - "name": "CyberMiles Token", + "marketcap_usd": 2542674.607204032, + "name": "CEEK VR Token", "network": "eth", - "shortcut": "CMT", + "shortcut": "CEEK", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -4587,16 +5382,16 @@ } ] }, - "erc20:eth:CNB": { - "address": "0xEBf2F9E8De960f64ec0fDCDa6Cb282423133347B", + "erc20:eth:CENNZ": { + "address": "0x1122B6a0E00DCe0563082b6e2953f3A943855c1F", "links": { - "Homepage": "https://canabio.net" + "Homepage": "https://www.centrality.ai" }, - "marketcap_usd": 0, - "name": "Canabio", + "marketcap_usd": 28612165.32777112, + "name": "Centrality", "network": "eth", - "shortcut": "CNB", - "t1_enabled": "yes", + "shortcut": "CENNZ", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -4614,15 +5409,16 @@ } ] }, - "erc20:eth:CND": { - "address": "0xd4c435F5B09F855C3317c8524Cb1F586E42795fa", + "erc20:eth:CET": { + "address": "0xF660cA1e228e7BE1fA8B4f5583145E31147FB577", "links": { - "Homepage": "https://cindicator.com" + "Github": "https://github.com/DICE-Money/", + "Homepage": "https://dice.money/" }, - "marketcap_usd": 15806317, - "name": "Cindicator", + "marketcap_usd": 0, + "name": "DICE Money Dicet", "network": "eth", - "shortcut": "CND", + "shortcut": "CET", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -4641,16 +5437,15 @@ } ] }, - "erc20:eth:CO2": { - "address": "0xB4b1D2C217EC0776584CE08D3DD98F90EDedA44b", + "erc20:eth:CFC": { + "address": "0x5Dff89a2caa4D76bc286F74D67Bd718eb834da61", "links": { - "Github": "https://github.com/climatecoinio", - "Homepage": "https://climatecoin.io" + "Homepage": "https://cryptfillcoin.com" }, "marketcap_usd": 0, - "name": "Climatecoin", + "name": "CryptFillCoin", "network": "eth", - "shortcut": "CO2", + "shortcut": "CFC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -4669,15 +5464,15 @@ } ] }, - "erc20:eth:CO2Bit": { - "address": "0x574B36BceD443338875d171CC377E691f7d4F887", + "erc20:eth:CFI": { + "address": "0x12FEF5e57bF45873Cd9B62E9DBd7BFb99e32D73e", "links": { - "Homepage": "https://co2bit.com" + "Homepage": "https://cofound.it/" }, - "marketcap_usd": 0, - "name": "CO2Bit", + "marketcap_usd": 5214429.88521, + "name": "Cofound.it", "network": "eth", - "shortcut": "CO2Bit", + "shortcut": "CFI", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -4696,16 +5491,16 @@ } ] }, - "erc20:eth:COB": { - "address": "0xb2F7EB1f2c37645bE61d73953035360e768D81E6", + "erc20:eth:CFTY": { + "address": "0x6956983F8B3Ce173B4AB84361AA0ad52f38D936f", "links": { - "Github": "https://github.com/cobinhood", - "Homepage": "https://cobinhood.com" + "Github": "https://github.com/crafty-work", + "Homepage": "https://crafty.work/" }, "marketcap_usd": 0, - "name": "Cobinhood Token", + "name": "Crafty Token", "network": "eth", - "shortcut": "COB", + "shortcut": "CFTY", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -4724,17 +5519,16 @@ } ] }, - "erc20:eth:COFI": { - "address": "0x3136eF851592aCf49CA4C825131E364170FA32b3", + "erc20:eth:CHP": { + "address": "0xf3db7560E820834658B590C96234c333Cd3D5E5e", "links": { - "Github": "https://github.com/coinfi", - "Homepage": "https://www.coinfi.com" + "Homepage": "https://coinpoker.com" }, - "marketcap_usd": 0, - "name": "CoinFi Token", + "marketcap_usd": 616129.2559977383, + "name": "CoinPoker", "network": "eth", - "shortcut": "COFI", - "t1_enabled": "yes", + "shortcut": "CHP", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -4752,16 +5546,15 @@ } ] }, - "erc20:eth:COIL": { - "address": "0x0C91B015AbA6f7B4738dcD36E7410138b29ADC29", + "erc20:eth:CHSB": { + "address": "0xba9d4199faB4f26eFE3551D490E3821486f135Ba", "links": { - "Github": "https://github.com/CoinOil", - "Homepage": "https://coinoil.io/" + "Homepage": "https://swissborg.com" }, - "marketcap_usd": 0, - "name": "CoinOil", + "marketcap_usd": 3334582.157094668, + "name": "CHSB", "network": "eth", - "shortcut": "COIL", + "shortcut": "CHSB", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -4780,16 +5573,16 @@ } ] }, - "erc20:eth:CORI": { - "address": "0x725B190Bc077FFde17Cf549AA8ba25e298550B18", + "erc20:eth:CHX": { + "address": "0x1460a58096d80a50a2F1f956DDA497611Fa4f165", "links": { - "Homepage": "https://corrently.de/token/" + "Homepage": "https://weown.com" }, - "marketcap_usd": 0, - "name": "Corrently Invest Token", + "marketcap_usd": 14993769.3357209, + "name": "Own", "network": "eth", - "shortcut": "CORI", - "t1_enabled": "yes", + "shortcut": "CHX", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -4807,17 +5600,18 @@ } ] }, - "erc20:eth:COV": { - "address": "0xE2FB6529EF566a080e6d23dE0bd351311087D567", + "erc20:eth:CIYA": { + "address": "0xf75fBfa2f681860B9A6D19FC3FF3D34CB322E2D6", "links": { - "Homepage": "https://covesting.io/" + "Github": "https://github.com/cryptoriya", + "Homepage": "https://www.cryptoriya.com" }, - "marketcap_usd": 6687892, - "name": "Covesting", + "marketcap_usd": 0, + "name": "CRYPTORIYA", "network": "eth", - "shortcut": "COV", - "t1_enabled": "yes", - "t2_enabled": "yes", + "shortcut": "CIYA", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20", "wallet": [ { @@ -4834,17 +5628,16 @@ } ] }, - "erc20:eth:CPEX": { - "address": "0xb787d4eAc8899730bb8C57fc3c998c49c5244ec0", + "erc20:eth:CJT": { + "address": "0x3abdfF32F76b42E7635bdb7e425f0231A5F3aB17", "links": { - "Github": "https://github.com/coinpulse", - "Homepage": "https://CoinPulse.io" + "Homepage": "https://www.connectjob.io" }, - "marketcap_usd": 0, - "name": "CoinPulseToken", + "marketcap_usd": 24261.569046430595, + "name": "ConnectJob", "network": "eth", - "shortcut": "CPEX", - "t1_enabled": "yes", + "shortcut": "CJT", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -4862,17 +5655,16 @@ } ] }, - "erc20:eth:CPLO": { - "address": "0x7064aAb39A0Fcf7221c3396719D0917a65E35515", + "erc20:eth:CK": { + "address": "0x06012c8cf97BEaD5deAe237070F9587f8E7A266d", "links": { - "Github": "https://github.com/Cpollo", - "Homepage": "https://cpollo.info/" + "Homepage": "https://cryptokitties.co" }, - "marketcap_usd": 313893, - "name": "CPOLLO", + "marketcap_usd": 0, + "name": "CK", "network": "eth", - "shortcut": "CPLO", - "t1_enabled": "soon", + "shortcut": "CK", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -4890,17 +5682,16 @@ } ] }, - "erc20:eth:CPY": { - "address": "0xf44745fBd41F6A1ba151df190db0564c5fCc4410", + "erc20:eth:CL": { + "address": "0xe81D72D14B1516e68ac3190a46C93302Cc8eD60f", "links": { - "Github": "https://github.com/aditus", - "Homepage": "https://copytrack.io" + "Homepage": "https://www.coinlancer.io" }, - "marketcap_usd": 1005613, - "name": "COPYTRACK", + "marketcap_usd": 227444.249547434, + "name": "Coinlancer", "network": "eth", - "shortcut": "CPY", - "t1_enabled": "yes", + "shortcut": "CL", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -4918,16 +5709,16 @@ } ] }, - "erc20:eth:CR7": { - "address": "0x7F585B9130c64e9e9F470b618A7badD03D79cA7E", + "erc20:eth:CLB": { + "address": "0xb1c1Cb8C7c1992dba24e628bF7d38E71daD46aeB", "links": { - "Github": "https://github.com/CR7CoinProject", - "Homepage": "https://cr7coin.org" + "Github": "https://github.com/Cloudbric-Project", + "Homepage": "https://www.cloudbric.io/" }, "marketcap_usd": 0, - "name": "CR7Coin", + "name": "Cloudbric", "network": "eth", - "shortcut": "CR7", + "shortcut": "CLB", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -4946,15 +5737,16 @@ } ] }, - "erc20:eth:CRB": { - "address": "0xAef38fBFBF932D1AeF3B808Bc8fBd8Cd8E1f8BC5", + "erc20:eth:CLL": { + "address": "0x3dC9a42fa7Afe57BE03c58fD7F4411b1E466C508", "links": { - "Homepage": "https://www.creditbit.org" + "Github": "https://github.com/CryptoLiveLeak/CLL-Token", + "Homepage": "https://www.cryptoliveleak.com/" }, "marketcap_usd": 0, - "name": "CRB", + "name": "CryptoLiveLeak", "network": "eth", - "shortcut": "CRB", + "shortcut": "CLL", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -4973,16 +5765,16 @@ } ] }, - "erc20:eth:CRED": { - "address": "0x672a1AD4f667FB18A333Af13667aa0Af1F5b5bDD", + "erc20:eth:CLN": { + "address": "0x4162178B78D6985480A308B2190EE5517460406D", "links": { - "Github": "https://github.com/verifyas", - "Homepage": "https://verify.as" + "Github": "https://github.com/colucom/CLN-solidity", + "Homepage": "https://cln.network" }, - "marketcap_usd": 0, - "name": "CRED", + "marketcap_usd": 562035.3728181673, + "name": "ColuLocalNetwork", "network": "eth", - "shortcut": "CRED", + "shortcut": "CLN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -5001,15 +5793,15 @@ } ] }, - "erc20:eth:CREDO": { - "address": "0x4E0603e2A27A30480E5e3a4Fe548e29EF12F64bE", + "erc20:eth:CLP": { + "address": "0x7FCE2856899a6806eeEf70807985fc7554C66340", "links": { - "Homepage": "https://bitbounce.io" + "Homepage": "https://cryptolending.org" }, - "marketcap_usd": 28228646, - "name": "Credo / Bitbounce", + "marketcap_usd": 0, + "name": "CryptoLending", "network": "eth", - "shortcut": "CREDO", + "shortcut": "CLP", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -5028,16 +5820,15 @@ } ] }, - "erc20:eth:CRGO": { - "address": "0xf49CDD50aD408d387d611F88A647179C3de3492b", + "erc20:eth:CMBT": { + "address": "0x3EDD235C3E840C1F29286B2e39370a255C7B6fdb", "links": { - "Github": "https://github.com/CargoCoinRepo/Cargo-Coin", - "Homepage": "https://thecargocoin.com" + "Homepage": "https://www.coinmarketbrasil.com.br" }, "marketcap_usd": 0, - "name": "CargoCoin", + "name": "CMBToken", "network": "eth", - "shortcut": "CRGO", + "shortcut": "CMBT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -5056,15 +5847,15 @@ } ] }, - "erc20:eth:CRMT": { - "address": "0x9238bfB781A55eACC3Cf05F7DF94038c198CD9B9", + "erc20:eth:CMC": { + "address": "0x7e667525521cF61352e2E01b50FaaaE7Df39749a", "links": { - "Homepage": "https://www.cremit.co" + "Homepage": "https://www.cryptomart.me" }, "marketcap_usd": 0, - "name": "Cremit", + "name": "CryptoMart", "network": "eth", - "shortcut": "CRMT", + "shortcut": "CMC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -5083,16 +5874,16 @@ } ] }, - "erc20:eth:CRPT": { - "address": "0x80A7E048F37A50500351C204Cb407766fA3baE7f", + "erc20:eth:CMCT": { + "address": "0x47bc01597798DCD7506DCCA36ac4302fc93a8cFb", "links": { - "Homepage": "https://crypterium.io" + "Homepage": "https://crowdmachine.com" }, - "marketcap_usd": 0, - "name": "CrypteriumToken", + "marketcap_usd": 1042589.3989987739, + "name": "Crowd Machine Compute Token", "network": "eth", - "shortcut": "CRPT", - "t1_enabled": "yes", + "shortcut": "CMCT", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -5110,15 +5901,16 @@ } ] }, - "erc20:eth:CRT": { - "address": "0xF0da1186a4977226b9135d0613ee72e229EC3F4d", + "erc20:eth:CMT": { + "address": "0xf85fEea2FdD81d51177F6b8F35F0e6734Ce45F5F", "links": { - "Homepage": "http://creamtoecoin.com" + "Github": "https://github.com/CyberMiles", + "Homepage": "https://cm.5miles.com" }, "marketcap_usd": 0, - "name": "CreamtoeCoin", + "name": "CyberMiles Token", "network": "eth", - "shortcut": "CRT", + "shortcut": "CMT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -5137,16 +5929,15 @@ } ] }, - "erc20:eth:CTF": { - "address": "0x4545750F39aF6Be4F237B6869D4EccA928Fd5A85", + "erc20:eth:CNB": { + "address": "0xEBf2F9E8De960f64ec0fDCDa6Cb282423133347B", "links": { - "Github": "https://github.com/vkajic/cryptotask", - "Homepage": "http://www.cryptotask.org" + "Homepage": "https://canabio.net" }, "marketcap_usd": 0, - "name": "CryptoTask", + "name": "Canabio", "network": "eth", - "shortcut": "CTF", + "shortcut": "CNB", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -5165,16 +5956,15 @@ } ] }, - "erc20:eth:CTG": { - "address": "0xC87c5dD86A3d567fF28701886fB0745aaa898da4", + "erc20:eth:CND": { + "address": "0xd4c435F5B09F855C3317c8524Cb1F586E42795fa", "links": { - "Github": "github.com/CTGlobal/ChristianTraders", - "Homepage": "https://christiantraders.com" + "Homepage": "https://cindicator.com" }, - "marketcap_usd": 0, - "name": "CT Global Token", + "marketcap_usd": 14730070.474465415, + "name": "Cindicator", "network": "eth", - "shortcut": "CTG", + "shortcut": "CND", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -5193,17 +5983,16 @@ } ] }, - "erc20:eth:CTGC": { - "address": "0x9E7D29bd499B6c7da2a5B2EaFCF4A39d3BD845D1", + "erc20:eth:CNN": { + "address": "0x8713d26637CF49e1b6B4a7Ce57106AaBc9325343", "links": { - "Github": "https://github.com/ctgcoin/", - "Homepage": "https://www.ctgcoin.org" + "Homepage": "https://cnntoken.io" }, - "marketcap_usd": 0, - "name": "Convenient To Go", + "marketcap_usd": 4291806.90096272, + "name": "Content Neutrality Network", "network": "eth", - "shortcut": "CTGC", - "t1_enabled": "yes", + "shortcut": "CNN", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -5221,15 +6010,16 @@ } ] }, - "erc20:eth:CTT": { - "address": "0xE3Fa177AcecfB86721Cf6f9f4206bd3Bd672D7d5", + "erc20:eth:CO2": { + "address": "0xB4b1D2C217EC0776584CE08D3DD98F90EDedA44b", "links": { - "Homepage": "https://chaintrade.net" + "Github": "https://github.com/climatecoinio", + "Homepage": "https://climatecoin.io" }, "marketcap_usd": 0, - "name": "ChainTrade Token", + "name": "Climatecoin", "network": "eth", - "shortcut": "CTT", + "shortcut": "CO2", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -5248,15 +6038,15 @@ } ] }, - "erc20:eth:CTX": { - "address": "0x662aBcAd0b7f345AB7FfB1b1fbb9Df7894f18e66", + "erc20:eth:CO2Bit": { + "address": "0x574B36BceD443338875d171CC377E691f7d4F887", "links": { - "Homepage": "https://cartaxi.io" + "Homepage": "https://co2bit.com" }, "marketcap_usd": 0, - "name": "CarTaxi", + "name": "CO2Bit", "network": "eth", - "shortcut": "CTX", + "shortcut": "CO2Bit", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -5275,15 +6065,16 @@ } ] }, - "erc20:eth:CVC": { - "address": "0x41e5560054824eA6B0732E656E3Ad64E20e94E45", + "erc20:eth:COB": { + "address": "0xb2F7EB1f2c37645bE61d73953035360e768D81E6", "links": { - "Homepage": "https://www.civic.com" + "Github": "https://github.com/cobinhood", + "Homepage": "https://cobinhood.com" }, - "marketcap_usd": 0, - "name": "CVC", + "marketcap_usd": 3561657.5282208957, + "name": "Cobinhood Token", "network": "eth", - "shortcut": "CVC", + "shortcut": "COB", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -5302,16 +6093,16 @@ } ] }, - "erc20:eth:CXC": { - "address": "0x2134057C0b461F898D375Cead652Acae62b59541", + "erc20:eth:COFI": { + "address": "0x3136eF851592aCf49CA4C825131E364170FA32b3", "links": { - "Github": "https://github.com/coxxxcoin/smart_contract", - "Homepage": "http://coxxxcoin.com" + "Github": "https://github.com/coinfi", + "Homepage": "https://www.coinfi.com" }, - "marketcap_usd": 0, - "name": "CoxxxCoin", + "marketcap_usd": 587894.0555754991, + "name": "CoinFi Token", "network": "eth", - "shortcut": "CXC", + "shortcut": "COFI", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -5330,16 +6121,16 @@ } ] }, - "erc20:eth:CXO": { - "address": "0xb6EE9668771a79be7967ee29a63D4184F8097143", + "erc20:eth:COIL": { + "address": "0x0C91B015AbA6f7B4738dcD36E7410138b29ADC29", "links": { - "Github": "https://github.com/cargoxio", - "Homepage": "https://cargox.io" + "Github": "https://github.com/CoinOil", + "Homepage": "https://coinoil.io/" }, - "marketcap_usd": 2501428, - "name": "CargoX", + "marketcap_usd": 0, + "name": "CoinOil", "network": "eth", - "shortcut": "CXO", + "shortcut": "COIL", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -5358,15 +6149,15 @@ } ] }, - "erc20:eth:CYFM": { - "address": "0x3f06B5D78406cD97bdf10f5C420B241D32759c80", + "erc20:eth:CORI": { + "address": "0x725B190Bc077FFde17Cf549AA8ba25e298550B18", "links": { - "Homepage": "https://cyberfmradio.com" + "Homepage": "https://corrently.de/token/" }, - "marketcap_usd": 244942, - "name": "CyberFM", + "marketcap_usd": 0, + "name": "Corrently Invest Token", "network": "eth", - "shortcut": "CYFM", + "shortcut": "CORI", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -5385,16 +6176,16 @@ } ] }, - "erc20:eth:CryptoCarbon": { - "address": "0xE4c94d45f7Aef7018a5D66f44aF780ec6023378e", + "erc20:eth:COSM": { + "address": "0xC4Bcd64CB216D49fD3C643A32762F34626b45a1a", "links": { - "Homepage": "https://ccrb.io" + "Homepage": "https://cosmochain.io" }, - "marketcap_usd": 253561, - "name": "CryptoCarbon", + "marketcap_usd": 6511143.925036114, + "name": "Cosmo Coin", "network": "eth", - "shortcut": "CryptoCarbon", - "t1_enabled": "yes", + "shortcut": "COSM", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -5412,15 +6203,15 @@ } ] }, - "erc20:eth:DAB": { - "address": "0xdab0C31BF34C897Fb0Fe90D12EC9401caf5c36Ec", + "erc20:eth:COV": { + "address": "0xE2FB6529EF566a080e6d23dE0bd351311087D567", "links": { - "Homepage": "https://dabco.in" + "Homepage": "https://covesting.io/" }, - "marketcap_usd": 0, - "name": "DAB", + "marketcap_usd": 2767254.537258, + "name": "Covesting", "network": "eth", - "shortcut": "DAB", + "shortcut": "COV", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -5439,16 +6230,16 @@ } ] }, - "erc20:eth:DADI": { - "address": "0xFb2f26F266Fb2805a387230f2aa0a331b4d96Fba", + "erc20:eth:CPAY": { + "address": "0x0Ebb614204E47c09B6C3FeB9AAeCad8EE060E23E", "links": { - "Homepage": "https://dadi.cloud" + "Homepage": "https://cryptopay.me" }, - "marketcap_usd": 3198324, - "name": "DADI", + "marketcap_usd": 881088.8734718722, + "name": "Cryptopay", "network": "eth", - "shortcut": "DADI", - "t1_enabled": "yes", + "shortcut": "CPAY", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -5466,17 +6257,17 @@ } ] }, - "erc20:eth:DAI": { - "address": "0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359", + "erc20:eth:CPEX": { + "address": "0xb787d4eAc8899730bb8C57fc3c998c49c5244ec0", "links": { - "Github": "https://github.com/makerdao", - "Homepage": "https://makerdao.com" + "Github": "https://github.com/coinpulse", + "Homepage": "https://CoinPulse.io" }, - "marketcap_usd": 60072998, - "name": "Dai Stablecoin v1.0", + "marketcap_usd": 0, + "name": "CoinPulseToken", "network": "eth", - "shortcut": "DAI", - "t1_enabled": "soon", + "shortcut": "CPEX", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -5494,16 +6285,17 @@ } ] }, - "erc20:eth:DALC": { - "address": "0x07D9e49Ea402194bf48A8276dAfB16E4eD633317", + "erc20:eth:CPLO": { + "address": "0x7064aAb39A0Fcf7221c3396719D0917a65E35515", "links": { - "Homepage": "http://www.dalecoin.org" + "Github": "https://github.com/Cpollo", + "Homepage": "https://cpollo.info/" }, - "marketcap_usd": 6456, - "name": "DaleCoin", + "marketcap_usd": 319331.2394813123, + "name": "CPOLLO", "network": "eth", - "shortcut": "DALC", - "t1_enabled": "yes", + "shortcut": "CPLO", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -5521,16 +6313,16 @@ } ] }, - "erc20:eth:DAN": { - "address": "0x9B70740e708a083C6fF38Df52297020f5DfAa5EE", + "erc20:eth:CPY": { + "address": "0xf44745fBd41F6A1ba151df190db0564c5fCc4410", "links": { - "Github": "https://github.com/project-daneel", - "Homepage": "https://daneel.io" + "Github": "https://github.com/aditus", + "Homepage": "https://copytrack.io" }, - "marketcap_usd": 0, - "name": "DaneelToken", + "marketcap_usd": 1316242.9996093481, + "name": "COPYTRACK", "network": "eth", - "shortcut": "DAN", + "shortcut": "CPY", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -5549,15 +6341,16 @@ } ] }, - "erc20:eth:DAO": { - "address": "0xBB9bc244D798123fDe783fCc1C72d3Bb8C189413", + "erc20:eth:CR7": { + "address": "0x7F585B9130c64e9e9F470b618A7badD03D79cA7E", "links": { - "Homepage": "https://blog.daohub.org" + "Github": "https://github.com/CR7CoinProject", + "Homepage": "https://cr7coin.org" }, "marketcap_usd": 0, - "name": "DAO", + "name": "CR7Coin", "network": "eth", - "shortcut": "DAO", + "shortcut": "CR7", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -5576,15 +6369,15 @@ } ] }, - "erc20:eth:DAT": { - "address": "0x81c9151de0C8bafCd325a57E3dB5a5dF1CEBf79c", + "erc20:eth:CRB": { + "address": "0xAef38fBFBF932D1AeF3B808Bc8fBd8Cd8E1f8BC5", "links": { - "Homepage": "https://datum.org" + "Homepage": "https://www.creditbit.org" }, - "marketcap_usd": 0, - "name": "Datum Token", + "marketcap_usd": 80713.83973191722, + "name": "Creditbit", "network": "eth", - "shortcut": "DAT", + "shortcut": "CRB", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -5603,17 +6396,16 @@ } ] }, - "erc20:eth:DATABroker": { - "address": "0x1B5f21ee98eed48d292e8e2d3Ed82b40a9728A22", + "erc20:eth:CRBT": { + "address": "0x2cF618c19041D9Db330d8222B860A624021F30fb", "links": { - "Github": "https://github.com/DataBrokerDAO", - "Homepage": "https://databrokerdao.com" + "Homepage": "https://www.cruisebit.com" }, - "marketcap_usd": 0, - "name": "DataBrokerDAO Token", + "marketcap_usd": 224255.61850532927, + "name": "Cruisebit", "network": "eth", - "shortcut": "DATABroker", - "t1_enabled": "yes", + "shortcut": "CRBT", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -5631,17 +6423,16 @@ } ] }, - "erc20:eth:DATACoin": { - "address": "0x0Cf0Ee63788A0849fE5297F3407f701E122cC023", + "erc20:eth:CRC": { + "address": "0xF41e5Fbc2F6Aac200Dd8619E121CE1f05D150077", "links": { - "Github": "https://github.com/streamr-dev", - "Homepage": "https://www.streamr.com" + "Homepage": "https://crycash.io" }, - "marketcap_usd": 27967, - "name": "DATACoin", + "marketcap_usd": 401319.25729221746, + "name": "CryCash", "network": "eth", - "shortcut": "DATACoin", - "t1_enabled": "yes", + "shortcut": "CRC", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -5659,16 +6450,16 @@ } ] }, - "erc20:eth:DAV": { - "address": "0xd82Df0ABD3f51425Eb15ef7580fDA55727875f14", + "erc20:eth:CRED": { + "address": "0x672a1AD4f667FB18A333Af13667aa0Af1F5b5bDD", "links": { - "Github": "https://github.com/DAVFoundation", - "Homepage": "https://dav.network/" + "Github": "https://github.com/verifyas", + "Homepage": "https://verify.as" }, - "marketcap_usd": 0, - "name": "DAV Token", + "marketcap_usd": 329065.3664067789, + "name": "CRED", "network": "eth", - "shortcut": "DAV", + "shortcut": "CRED", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -5687,15 +6478,15 @@ } ] }, - "erc20:eth:DAXT": { - "address": "0x61725f3db4004AFE014745B21DAb1E1677CC328b", + "erc20:eth:CREDO": { + "address": "0x4E0603e2A27A30480E5e3a4Fe548e29EF12F64bE", "links": { - "Homepage": "https://www.daxt.io" + "Homepage": "https://bitbounce.io" }, - "marketcap_usd": 0, - "name": "Digital Asset Exchange Token", + "marketcap_usd": 22809649.40685733, + "name": "Credo / Bitbounce", "network": "eth", - "shortcut": "DAXT", + "shortcut": "CREDO", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -5714,16 +6505,16 @@ } ] }, - "erc20:eth:DAY": { - "address": "0xE814aeE960a85208C3dB542C53E7D4a6C8D5f60F", + "erc20:eth:CRGO": { + "address": "0xf49CDD50aD408d387d611F88A647179C3de3492b", "links": { - "Github": "https://github.com/chronologic", - "Homepage": "https://chronologic.network" + "Github": "https://github.com/CargoCoinRepo/Cargo-Coin", + "Homepage": "https://thecargocoin.com" }, "marketcap_usd": 0, - "name": "ChronoLogic DAY", + "name": "CargoCoin", "network": "eth", - "shortcut": "DAY", + "shortcut": "CRGO", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -5742,16 +6533,15 @@ } ] }, - "erc20:eth:DCA": { - "address": "0x386Faa4703a34a7Fdb19Bec2e14Fd427C9638416", + "erc20:eth:CRMT": { + "address": "0x9238bfB781A55eACC3Cf05F7DF94038c198CD9B9", "links": { - "Github": "https://github.com/dobetacceptbet", - "Homepage": "http://www.dobetacceptbet.com" + "Homepage": "https://www.cremit.co" }, "marketcap_usd": 0, - "name": "DoBetAcceptBet", + "name": "Cremit", "network": "eth", - "shortcut": "DCA", + "shortcut": "CRMT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -5770,16 +6560,15 @@ } ] }, - "erc20:eth:DCC": { - "address": "0xFFa93Aacf49297D51E211817452839052FDFB961", + "erc20:eth:CRPT": { + "address": "0x80A7E048F37A50500351C204Cb407766fA3baE7f", "links": { - "Github": "https://github.com/DistributedBanking/DCC", - "Homepage": "http://dcc.finance" + "Homepage": "https://crypterium.io" }, - "marketcap_usd": 2835710, - "name": "Distributed Credit Chain", + "marketcap_usd": 10791207.275288494, + "name": "CrypteriumToken", "network": "eth", - "shortcut": "DCC", + "shortcut": "CRPT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -5798,15 +6587,15 @@ } ] }, - "erc20:eth:DCL": { - "address": "0x399A0e6FbEb3d74c85357439f4c8AeD9678a5cbF", + "erc20:eth:CRT": { + "address": "0xF0da1186a4977226b9135d0613ee72e229EC3F4d", "links": { - "Homepage": "https://www.DisLedger.com" + "Homepage": "http://creamtoecoin.com" }, "marketcap_usd": 0, - "name": "DCL", + "name": "CreamtoeCoin", "network": "eth", - "shortcut": "DCL", + "shortcut": "CRT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -5825,17 +6614,16 @@ } ] }, - "erc20:eth:DCN": { - "address": "0x08d32b0da63e2C3bcF8019c9c5d849d7a9d791e6", + "erc20:eth:CS": { + "address": "0x46b9Ad944d1059450Da1163511069C718F699D31", "links": { - "Github": "https://github.com/Dentacoin", - "Homepage": "https://dentacoin.com" + "Homepage": "https://credits.com/en" }, - "marketcap_usd": 41435261, - "name": "Dentacoin", + "marketcap_usd": 8612333.341517327, + "name": "Credits", "network": "eth", - "shortcut": "DCN", - "t1_enabled": "yes", + "shortcut": "CS", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -5853,17 +6641,16 @@ } ] }, - "erc20:eth:DDF": { - "address": "0xcC4eF9EEAF656aC1a2Ab886743E98e97E090ed38", + "erc20:eth:CSNO": { + "address": "0x29D75277aC7F0335b2165D0895E8725cbF658d73", "links": { - "Github": "https://github.com/digitaldevelopersfund/ddf", - "Homepage": "https://www.digitaldevelopersfund.com" + "Homepage": "https://www.bitdice.me" }, - "marketcap_usd": 0, - "name": "DDF", + "marketcap_usd": 2180305.073618, + "name": "BitDice", "network": "eth", - "shortcut": "DDF", - "t1_enabled": "yes", + "shortcut": "CSNO", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -5881,16 +6668,16 @@ } ] }, - "erc20:eth:DEB": { - "address": "0x151202C9c18e495656f372281F493EB7698961D5", + "erc20:eth:CST": { + "address": "0xBB49A51Ee5a66ca3a8CbE529379bA44Ba67E6771", "links": { - "Homepage": "https://debitum.network/" + "Homepage": "https://cryptosolartech.org" }, - "marketcap_usd": 0, - "name": "DEBITUM", + "marketcap_usd": 255898.6940172887, + "name": "Cryptosolartech", "network": "eth", - "shortcut": "DEB", - "t1_enabled": "yes", + "shortcut": "CST", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -5908,16 +6695,16 @@ } ] }, - "erc20:eth:DEEZ": { - "address": "0x075c60EE2cD308ff47873b38Bd9A0Fa5853382c4", + "erc20:eth:CTF": { + "address": "0x4545750F39aF6Be4F237B6869D4EccA928Fd5A85", "links": { - "Github": "https://github.com/DeezNutsToken/DEEZ", - "Homepage": "https://deeznuts.in" + "Github": "https://github.com/vkajic/cryptotask", + "Homepage": "http://www.cryptotask.org" }, "marketcap_usd": 0, - "name": "DeezNuts", + "name": "CryptoTask", "network": "eth", - "shortcut": "DEEZ", + "shortcut": "CTF", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -5936,15 +6723,16 @@ } ] }, - "erc20:eth:DENT": { - "address": "0x3597bfD533a99c9aa083587B074434E61Eb0A258", + "erc20:eth:CTG": { + "address": "0xC87c5dD86A3d567fF28701886fB0745aaa898da4", "links": { - "Homepage": "https://www.dentwireless.com" + "Github": "github.com/CTGlobal/ChristianTraders", + "Homepage": "https://christiantraders.com" }, - "marketcap_usd": 17386429, - "name": "DENT", + "marketcap_usd": 0, + "name": "CT Global Token", "network": "eth", - "shortcut": "DENT", + "shortcut": "CTG", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -5963,16 +6751,17 @@ } ] }, - "erc20:eth:DEX": { - "address": "0x497bAEF294c11a5f0f5Bea3f2AdB3073DB448B56", + "erc20:eth:CTGC": { + "address": "0x9E7D29bd499B6c7da2a5B2EaFCF4A39d3BD845D1", "links": { - "Homepage": "https://www.coinbit.co.kr/" + "Github": "https://github.com/ctgcoin/", + "Homepage": "https://www.ctgcoin.org" }, - "marketcap_usd": 33658905, - "name": "DEX", + "marketcap_usd": 0, + "name": "Convenient To Go", "network": "eth", - "shortcut": "DEX", - "t1_enabled": "soon", + "shortcut": "CTGC", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -5990,16 +6779,16 @@ } ] }, - "erc20:eth:DGD": { - "address": "0xE0B7927c4aF23765Cb51314A0E0521A9645F0E2A", + "erc20:eth:CTT": { + "address": "0xE3Fa177AcecfB86721Cf6f9f4206bd3Bd672D7d5", "links": { - "Homepage": "https://www.dgx.io" + "Homepage": "https://chaintrade.net" }, "marketcap_usd": 0, - "name": "Digix DAO", + "name": "ChainTrade Token", "network": "eth", - "shortcut": "DGD", - "t1_enabled": "soon", + "shortcut": "CTT", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -6017,16 +6806,15 @@ } ] }, - "erc20:eth:DGPT": { - "address": "0xf6cFe53d6FEbaEEA051f400ff5fc14F0cBBDacA1", + "erc20:eth:CTX": { + "address": "0x662aBcAd0b7f345AB7FfB1b1fbb9Df7894f18e66", "links": { - "Github": "https://github.com/digipulseio", - "Homepage": "https://www.digipulse.io" + "Homepage": "https://cartaxi.io" }, "marketcap_usd": 0, - "name": "DigiPulse", + "name": "CarTaxi", "network": "eth", - "shortcut": "DGPT", + "shortcut": "CTX", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -6045,17 +6833,16 @@ } ] }, - "erc20:eth:DGS": { - "address": "0x6aEDbF8dFF31437220dF351950Ba2a3362168d1b", + "erc20:eth:CTXC": { + "address": "0xEa11755Ae41D889CeEc39A63E6FF75a02Bc1C00d", "links": { - "Github": "https://github.com/dragonglasscom", - "Homepage": "https://dragonglass.com/" + "Homepage": "http://www.cortexlabs.ai" }, - "marketcap_usd": 63940, - "name": "Dragonglass", + "marketcap_usd": 15301690.986850433, + "name": "Cortex", "network": "eth", - "shortcut": "DGS", - "t1_enabled": "yes", + "shortcut": "CTXC", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -6073,16 +6860,15 @@ } ] }, - "erc20:eth:DGTX": { - "address": "0x1C83501478f1320977047008496DACBD60Bb15ef", + "erc20:eth:CVC": { + "address": "0x41e5560054824eA6B0732E656E3Ad64E20e94E45", "links": { - "Github": "https://github.com/DigitexFutures", - "Homepage": "https://digitexfutures.com/" + "Homepage": "https://www.civic.com" }, - "marketcap_usd": 0, - "name": "DigitexFutures", + "marketcap_usd": 16000793.938641094, + "name": "CVC", "network": "eth", - "shortcut": "DGTX", + "shortcut": "CVC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -6101,17 +6887,16 @@ } ] }, - "erc20:eth:DGX": { - "address": "0x4f3AfEC4E5a3F2A6a1A411DEF7D7dFe50eE057bF", + "erc20:eth:CVT": { + "address": "0xBe428c3867F05deA2A89Fc76a102b544eaC7f772", "links": { - "Github": "https://github.com/DigixGlobal", - "Homepage": "https://digix.global" + "Homepage": "http://www.cybervein.org" }, - "marketcap_usd": 3379104, - "name": "Digix Gold Token", + "marketcap_usd": 5714964.933976312, + "name": "CyberVein", "network": "eth", - "shortcut": "DGX", - "t1_enabled": "yes", + "shortcut": "CVT", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -6129,16 +6914,16 @@ } ] }, - "erc20:eth:DGX1": { - "address": "0x55b9a11c2e8351b4Ffc7b11561148bfaC9977855", + "erc20:eth:CXC": { + "address": "0x2134057C0b461F898D375Cead652Acae62b59541", "links": { - "Github": "https://github.com/DigixGlobal", - "Homepage": "https://digix.global" + "Github": "https://github.com/coxxxcoin/smart_contract", + "Homepage": "http://coxxxcoin.com" }, "marketcap_usd": 0, - "name": "Digix Gold Token 1.0", + "name": "CoxxxCoin", "network": "eth", - "shortcut": "DGX1", + "shortcut": "CXC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -6157,15 +6942,16 @@ } ] }, - "erc20:eth:DICE": { - "address": "0x2e071D2966Aa7D8dECB1005885bA1977D6038A65", + "erc20:eth:CXO": { + "address": "0xb6EE9668771a79be7967ee29a63D4184F8097143", "links": { - "Homepage": "https://etheroll.com" + "Github": "https://github.com/cargoxio", + "Homepage": "https://cargox.io" }, - "marketcap_usd": 1973541, - "name": "Etheroll", + "marketcap_usd": 1803762.4689762709, + "name": "CargoX", "network": "eth", - "shortcut": "DICE", + "shortcut": "CXO", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -6184,15 +6970,15 @@ } ] }, - "erc20:eth:DIVX": { - "address": "0x13f11C9905A08ca76e3e853bE63D4f0944326C72", + "erc20:eth:CYFM": { + "address": "0x3f06B5D78406cD97bdf10f5C420B241D32759c80", "links": { - "Homepage": "https://www.diviproject.org" + "Homepage": "https://cyberfmradio.com" }, - "marketcap_usd": 0, - "name": "DIVX", + "marketcap_usd": 131639.160142336, + "name": "CyberFM", "network": "eth", - "shortcut": "DIVX", + "shortcut": "CYFM", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -6211,16 +6997,16 @@ } ] }, - "erc20:eth:DLT": { - "address": "0x07e3c70653548B04f0A75970C1F81B4CBbFB606f", + "erc20:eth:CYMT": { + "address": "0x78c292D1445E6b9558bf42e8BC369271DeD062eA", "links": { - "Homepage": "https://www.agrello.org" + "Homepage": "https://cybermusic.io" }, - "marketcap_usd": 0, - "name": "Agrello", + "marketcap_usd": 49477.07922061134, + "name": "CyberMusic", "network": "eth", - "shortcut": "DLT", - "t1_enabled": "yes", + "shortcut": "CYMT", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -6238,17 +7024,16 @@ } ] }, - "erc20:eth:DMT": { - "address": "0x2ccbFF3A042c68716Ed2a2Cb0c544A9f1d1935E1", + "erc20:eth:CZR": { + "address": "0x0223fc70574214F65813fE336D870Ac47E147fAe", "links": { - "Github": "https://github.com/suntechsoft/dmarket-smartcontract", - "Homepage": "https://dmarket.com" + "Homepage": "http://www.canonchain.com" }, - "marketcap_usd": 0, - "name": "DMarket Token", + "marketcap_usd": 4019154.2781847822, + "name": "CanonChain", "network": "eth", - "shortcut": "DMT", - "t1_enabled": "yes", + "shortcut": "CZR", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -6266,16 +7051,15 @@ } ] }, - "erc20:eth:DNT": { - "address": "0x0AbdAce70D3790235af448C88547603b945604ea", + "erc20:eth:CryptoCarbon": { + "address": "0xE4c94d45f7Aef7018a5D66f44aF780ec6023378e", "links": { - "Github": "https://github.com/district0x", - "Homepage": "https://district0x.io" + "Homepage": "https://ccrb.io" }, "marketcap_usd": 0, - "name": "District0x Network Token", + "name": "CryptoCarbon", "network": "eth", - "shortcut": "DNT", + "shortcut": "CryptoCarbon", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -6294,16 +7078,15 @@ } ] }, - "erc20:eth:DNX": { - "address": "0xE43E2041dc3786e166961eD9484a5539033d10fB", + "erc20:eth:DAB": { + "address": "0xdab0C31BF34C897Fb0Fe90D12EC9401caf5c36Ec", "links": { - "Github": "https://github.com/DenCity-life", - "Homepage": "https://dencity.life" + "Homepage": "https://dabco.in" }, "marketcap_usd": 0, - "name": "DenCity", + "name": "DAB", "network": "eth", - "shortcut": "DNX", + "shortcut": "DAB", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -6322,16 +7105,16 @@ } ] }, - "erc20:eth:DPP": { - "address": "0x01b3Ec4aAe1B8729529BEB4965F27d008788B0EB", + "erc20:eth:DACS": { + "address": "0xA31108E5BAB5494560Db34c95492658AF239357C", "links": { - "Homepage": "https://cofound.it/en/projects/digital-assets-power-play" + "Homepage": "https://dacsee.io/#" }, - "marketcap_usd": 0, - "name": "Digital Assets Power Play", + "marketcap_usd": 2343819.0130847, + "name": "DACSEE", "network": "eth", - "shortcut": "DPP", - "t1_enabled": "yes", + "shortcut": "DACS", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -6349,16 +7132,15 @@ } ] }, - "erc20:eth:DRGN": { - "address": "0x419c4dB4B9e25d6Db2AD9691ccb832C8D9fDA05E", + "erc20:eth:DADI": { + "address": "0xFb2f26F266Fb2805a387230f2aa0a331b4d96Fba", "links": { - "Github": "https://github.com/dragonchain/dragonchain", - "Homepage": "https://dragonchain.com" + "Homepage": "https://dadi.cloud" }, - "marketcap_usd": 0, - "name": "Dragon", + "marketcap_usd": 2372986.684220939, + "name": "DADI", "network": "eth", - "shortcut": "DRGN", + "shortcut": "DADI", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -6377,17 +7159,17 @@ } ] }, - "erc20:eth:DRVH": { - "address": "0x62D4c04644314F35868Ba4c65cc27a77681dE7a9", + "erc20:eth:DAI": { + "address": "0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359", "links": { - "Github": "https://github.com/TeamDriveholic", - "Homepage": "https://driveholic.com/" + "Github": "https://github.com/makerdao", + "Homepage": "https://makerdao.com" }, - "marketcap_usd": 0, - "name": "Driveholic Token", + "marketcap_usd": 75666922.95984253, + "name": "Dai Stablecoin v1.0", "network": "eth", - "shortcut": "DRVH", - "t1_enabled": "yes", + "shortcut": "DAI", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -6405,15 +7187,15 @@ } ] }, - "erc20:eth:DSC": { - "address": "0x1e09BD8Cadb441632e441Db3e1D79909EE0A2256", + "erc20:eth:DALC": { + "address": "0x07D9e49Ea402194bf48A8276dAfB16E4eD633317", "links": { - "Homepage": "https://github.com/xxxxyy1" + "Homepage": "http://www.dalecoin.org" }, - "marketcap_usd": 0, - "name": "Digital Safe Coin", + "marketcap_usd": 8336.239916910572, + "name": "DaleCoin", "network": "eth", - "shortcut": "DSC", + "shortcut": "DALC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -6432,16 +7214,16 @@ } ] }, - "erc20:eth:DSCP": { - "address": "0x03e3f0c25965f13DbbC58246738C183E27b26a56", + "erc20:eth:DAN": { + "address": "0x9B70740e708a083C6fF38Df52297020f5DfAa5EE", "links": { - "Github": "https://github.com/DisciplinaOU/disciplina", - "Homepage": "https://disciplina.io" + "Github": "https://github.com/project-daneel", + "Homepage": "https://daneel.io" }, - "marketcap_usd": 0, - "name": "Disciplina Token", + "marketcap_usd": 264480.5270281596, + "name": "DaneelToken", "network": "eth", - "shortcut": "DSCP", + "shortcut": "DAN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -6460,16 +7242,15 @@ } ] }, - "erc20:eth:DTH": { - "address": "0x5adc961D6AC3f7062D2eA45FEFB8D8167d44b190", + "erc20:eth:DAO": { + "address": "0xBB9bc244D798123fDe783fCc1C72d3Bb8C189413", "links": { - "Github": "https://github.com/dethertech", - "Homepage": "https://dether.io" + "Homepage": "https://blog.daohub.org" }, - "marketcap_usd": 728268, - "name": "dether", + "marketcap_usd": 0, + "name": "DAO", "network": "eth", - "shortcut": "DTH", + "shortcut": "DAO", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -6488,15 +7269,15 @@ } ] }, - "erc20:eth:DTR": { - "address": "0xd234BF2410a0009dF9c3C63b610c09738f18ccD7", + "erc20:eth:DAT": { + "address": "0x81c9151de0C8bafCd325a57E3dB5a5dF1CEBf79c", "links": { - "Homepage": "https://www.tokens.net" + "Homepage": "https://datum.org" }, - "marketcap_usd": 0, - "name": "DTR", + "marketcap_usd": 625404.2465045627, + "name": "Datum Token", "network": "eth", - "shortcut": "DTR", + "shortcut": "DAT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -6515,16 +7296,16 @@ } ] }, - "erc20:eth:DTT": { - "address": "0xf9F7c29CFdf19FCf1f2AA6B84aA367Bcf1bD1676", + "erc20:eth:DATABroker": { + "address": "0x1B5f21ee98eed48d292e8e2d3Ed82b40a9728A22", "links": { - "Github": "https://github.com/DTToken", - "Homepage": "https://delphifund.org/" + "Github": "https://github.com/DataBrokerDAO", + "Homepage": "https://databrokerdao.com" }, "marketcap_usd": 0, - "name": "Delphi Tech Token", + "name": "DataBrokerDAO Token", "network": "eth", - "shortcut": "DTT", + "shortcut": "DATABroker", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -6543,15 +7324,16 @@ } ] }, - "erc20:eth:Devcon2 Token": { - "address": "0xdd94De9cFE063577051A5eb7465D08317d8808B6", + "erc20:eth:DATACoin": { + "address": "0x0Cf0Ee63788A0849fE5297F3407f701E122cC023", "links": { - "Homepage": "https://www.devcon2-token.com" + "Github": "https://github.com/streamr-dev", + "Homepage": "https://www.streamr.com" }, - "marketcap_usd": 0, - "name": "Devcon2 Token", + "marketcap_usd": 12001717.914080625, + "name": "DATACoin", "network": "eth", - "shortcut": "Devcon2 Token", + "shortcut": "DATACoin", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -6570,18 +7352,17 @@ } ] }, - "erc20:eth:EAGLE": { - "address": "0x994f0DffdbaE0BbF09b652D6f11A493fd33F42B9", + "erc20:eth:DATX": { + "address": "0xaBbBB6447B68ffD6141DA77C18c7B5876eD6c5ab", "links": { - "Github": "https://github.com/elangindonesia/EagleCoin", - "Homepage": "https://eaglepay.io" + "Homepage": "https://www.datx.co" }, - "marketcap_usd": 0, - "name": "EagleCoin", + "marketcap_usd": 821408.7617223936, + "name": "DATx", "network": "eth", - "shortcut": "EAGLE", - "t1_enabled": "yes", - "t2_enabled": "yes", + "shortcut": "DATX", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20", "wallet": [ { @@ -6598,15 +7379,16 @@ } ] }, - "erc20:eth:ECN": { - "address": "0xa578aCc0cB7875781b7880903F4594D13cFa8B98", + "erc20:eth:DAV": { + "address": "0xd82Df0ABD3f51425Eb15ef7580fDA55727875f14", "links": { - "Homepage": "http://www.cewrd.com" + "Github": "https://github.com/DAVFoundation", + "Homepage": "https://dav.network/" }, - "marketcap_usd": 0, - "name": "ECN", + "marketcap_usd": 934513.9283264156, + "name": "DAV Token", "network": "eth", - "shortcut": "ECN", + "shortcut": "DAV", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -6625,16 +7407,16 @@ } ] }, - "erc20:eth:ECO2": { - "address": "0x17F93475d2A978f527c3f7c44aBf44AdfBa60D5C", + "erc20:eth:DAX": { + "address": "0x0B4BdC478791897274652DC15eF5C135cae61E60", "links": { - "Homepage": "http://www.ethco2.com" + "Homepage": "https://www.daex.io" }, - "marketcap_usd": 0, - "name": "EtherCO2", + "marketcap_usd": 1590908.6671961963, + "name": "DAEX", "network": "eth", - "shortcut": "ECO2", - "t1_enabled": "yes", + "shortcut": "DAX", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -6652,15 +7434,15 @@ } ] }, - "erc20:eth:EDC": { - "address": "0xFA1DE2Ee97e4c10C94C91Cb2b5062b89Fb140b82", + "erc20:eth:DAXT": { + "address": "0x61725f3db4004AFE014745B21DAb1E1677CC328b", "links": { - "Homepage": "https://www.edc.network" + "Homepage": "https://www.daxt.io" }, "marketcap_usd": 0, - "name": "Education Credits", + "name": "Digital Asset Exchange Token", "network": "eth", - "shortcut": "EDC", + "shortcut": "DAXT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -6679,15 +7461,16 @@ } ] }, - "erc20:eth:EDG": { - "address": "0x08711D3B02C8758F2FB3ab4e80228418a7F8e39c", + "erc20:eth:DAY": { + "address": "0xE814aeE960a85208C3dB542C53E7D4a6C8D5f60F", "links": { - "Homepage": "https://edgeless.io" + "Github": "https://github.com/chronologic", + "Homepage": "https://chronologic.network" }, - "marketcap_usd": 10871576, - "name": "Edgeless", + "marketcap_usd": 115115.75786432411, + "name": "ChronoLogic DAY", "network": "eth", - "shortcut": "EDG", + "shortcut": "DAY", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -6706,16 +7489,16 @@ } ] }, - "erc20:eth:EDO": { - "address": "0xCeD4E93198734dDaFf8492d525Bd258D49eb388E", + "erc20:eth:DBET": { + "address": "0x9b68bFaE21DF5A510931A262CECf63f41338F264", "links": { - "Homepage": "https://eidoo.io" + "Homepage": "https://www.decent.bet" }, - "marketcap_usd": 24266110, - "name": "Eidoo", + "marketcap_usd": 3838424.612847095, + "name": "DecentBet", "network": "eth", - "shortcut": "EDO", - "t1_enabled": "yes", + "shortcut": "DBET", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -6733,16 +7516,16 @@ } ] }, - "erc20:eth:EDR": { - "address": "0xc528c28FEC0A90C083328BC45f587eE215760A0F", + "erc20:eth:DCA": { + "address": "0x386Faa4703a34a7Fdb19Bec2e14Fd427C9638416", "links": { - "Github": "https://github.com/EndorCoin", - "Homepage": "https://www.endor.com" + "Github": "https://github.com/dobetacceptbet", + "Homepage": "http://www.dobetacceptbet.com" }, "marketcap_usd": 0, - "name": "Endor Protocol Token", + "name": "DoBetAcceptBet", "network": "eth", - "shortcut": "EDR", + "shortcut": "DCA", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -6761,16 +7544,16 @@ } ] }, - "erc20:eth:EHT": { - "address": "0xf9F0FC7167c311Dd2F1e21E9204F87EBA9012fB2", + "erc20:eth:DCC": { + "address": "0xFFa93Aacf49297D51E211817452839052FDFB961", "links": { - "Github": "https://github.com/team-easyhomes", - "Homepage": "https://easyhomes.io" + "Github": "https://github.com/DistributedBanking/DCC", + "Homepage": "http://dcc.finance" }, - "marketcap_usd": 0, - "name": "EasyHomes", + "marketcap_usd": 3233938.761682423, + "name": "Distributed Credit Chain", "network": "eth", - "shortcut": "EHT", + "shortcut": "DCC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -6789,16 +7572,15 @@ } ] }, - "erc20:eth:ELF": { - "address": "0xbf2179859fc6D5BEE9Bf9158632Dc51678a4100e", + "erc20:eth:DCL": { + "address": "0x399A0e6FbEb3d74c85357439f4c8AeD9678a5cbF", "links": { - "Github": "https://github.com/aelfProject", - "Homepage": "https://aelf.io/" + "Homepage": "https://www.DisLedger.com" }, "marketcap_usd": 0, - "name": "ELF Token", + "name": "DCL", "network": "eth", - "shortcut": "ELF", + "shortcut": "DCL", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -6817,15 +7599,16 @@ } ] }, - "erc20:eth:ELIX": { - "address": "0xc8C6A31A4A806d3710A7B38b7B296D2fABCCDBA8", + "erc20:eth:DCN": { + "address": "0x08d32b0da63e2C3bcF8019c9c5d849d7a9d791e6", "links": { - "Homepage": "https://elixirtoken.io" + "Github": "https://github.com/Dentacoin", + "Homepage": "https://dentacoin.com" }, - "marketcap_usd": 0, - "name": "Elixir Token", + "marketcap_usd": 22444222.401283763, + "name": "Dentacoin", "network": "eth", - "shortcut": "ELIX", + "shortcut": "DCN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -6844,16 +7627,16 @@ } ] }, - "erc20:eth:ELTCOIN": { - "address": "0x44197A4c44D6A059297cAf6be4F7e172BD56Caaf", + "erc20:eth:DDF": { + "address": "0xcC4eF9EEAF656aC1a2Ab886743E98e97E090ed38", "links": { - "Github": "https://github.com/eltcoin", - "Homepage": "http://www.eltcoin.tech/" + "Github": "https://github.com/digitaldevelopersfund/ddf", + "Homepage": "https://www.digitaldevelopersfund.com" }, - "marketcap_usd": 46146, - "name": "ELTCOIN", + "marketcap_usd": 0, + "name": "DDF", "network": "eth", - "shortcut": "ELTCOIN", + "shortcut": "DDF", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -6872,16 +7655,15 @@ } ] }, - "erc20:eth:ELY": { - "address": "0xa95592DCFfA3C080B4B40E459c5f5692F67DB7F8", + "erc20:eth:DEB": { + "address": "0x151202C9c18e495656f372281F493EB7698961D5", "links": { - "Github": "https://github.com/Elysian-ELY", - "Homepage": "https://elycoin.io" + "Homepage": "https://debitum.network/" }, - "marketcap_usd": 0, - "name": "ELYCOIN", + "marketcap_usd": 636367.9089379003, + "name": "DEBITUM", "network": "eth", - "shortcut": "ELY", + "shortcut": "DEB", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -6900,16 +7682,16 @@ } ] }, - "erc20:eth:EMON": { - "address": "0xb67b88a25708a35AE7c2d736D398D268CE4f7F83", + "erc20:eth:DEEZ": { + "address": "0x075c60EE2cD308ff47873b38Bd9A0Fa5853382c4", "links": { - "Github": "https://github.com/etheremon/smartcontract", - "Homepage": "https://www.etheremon.com/" + "Github": "https://github.com/DeezNutsToken/DEEZ", + "Homepage": "https://deeznuts.in" }, "marketcap_usd": 0, - "name": "Etheremon", + "name": "DeezNuts", "network": "eth", - "shortcut": "EMON", + "shortcut": "DEEZ", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -6928,16 +7710,16 @@ } ] }, - "erc20:eth:EMONT": { - "address": "0x95dAaaB98046846bF4B2853e23cba236fa394A31", + "erc20:eth:DELTA": { + "address": "0xDE1E0AE6101b46520cF66fDC0B1059c5cC3d106c", "links": { - "Homepage": "https://www.etheremon.com" + "Homepage": "https://deltachain.tech" }, - "marketcap_usd": 0, - "name": "Etheremon Token", + "marketcap_usd": 14814.816196723395, + "name": "DeltaChain", "network": "eth", - "shortcut": "EMONT", - "t1_enabled": "yes", + "shortcut": "DELTA", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -6955,16 +7737,15 @@ } ] }, - "erc20:eth:EMT": { - "address": "0x9501BFc48897DCEEadf73113EF635d2fF7ee4B97", + "erc20:eth:DENT": { + "address": "0x3597bfD533a99c9aa083587B074434E61Eb0A258", "links": { - "Github": "https://github.com/easyMINE", - "Homepage": "https://easymine.io" + "Homepage": "https://www.dentwireless.com" }, - "marketcap_usd": 0, - "name": "easyMINE Token", + "marketcap_usd": 31855376.82887633, + "name": "DENT", "network": "eth", - "shortcut": "EMT", + "shortcut": "DENT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -6983,16 +7764,16 @@ } ] }, - "erc20:eth:EMV": { - "address": "0xB802b24E0637c2B87D2E8b7784C055BBE921011a", + "erc20:eth:DEW": { + "address": "0x20E94867794dBA030Ee287F1406E100d03C84Cd3", "links": { - "Homepage": "http://emovieventure.com" + "Homepage": "https://www.dew.one" }, - "marketcap_usd": 0, - "name": "EMovieVenture", + "marketcap_usd": 6450318.7467823075, + "name": "DEW", "network": "eth", - "shortcut": "EMV", - "t1_enabled": "yes", + "shortcut": "DEW", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -7010,17 +7791,16 @@ } ] }, - "erc20:eth:ENC": { - "address": "0x039F5050dE4908f9b5ddF40A4F3Aa3f329086387", + "erc20:eth:DEX": { + "address": "0x497bAEF294c11a5f0f5Bea3f2AdB3073DB448B56", "links": { - "Github": "https://github.com/ethernetcash", - "Homepage": "https://ethernet.cash" + "Homepage": "https://www.coinbit.co.kr/" }, - "marketcap_usd": 0, - "name": "Ethernet.Cash", + "marketcap_usd": 7396678.265497176, + "name": "DEX", "network": "eth", - "shortcut": "ENC", - "t1_enabled": "yes", + "shortcut": "DEX", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -7038,17 +7818,16 @@ } ] }, - "erc20:eth:ENG": { - "address": "0xf0Ee6b27b759C9893Ce4f094b49ad28fd15A23e4", + "erc20:eth:DGD": { + "address": "0xE0B7927c4aF23765Cb51314A0E0521A9645F0E2A", "links": { - "Github": "https://github.com/enigmampc", - "Homepage": "https://enigma.co/" + "Homepage": "https://www.dgx.io" }, - "marketcap_usd": 18776523, - "name": "Enigma", + "marketcap_usd": 31080758.8882, + "name": "Digix DAO", "network": "eth", - "shortcut": "ENG", - "t1_enabled": "yes", + "shortcut": "DGD", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -7066,16 +7845,16 @@ } ] }, - "erc20:eth:ENJ": { - "address": "0xF629cBd94d3791C9250152BD8dfBDF380E2a3B9c", + "erc20:eth:DGPT": { + "address": "0xf6cFe53d6FEbaEEA051f400ff5fc14F0cBBDacA1", "links": { - "Github": "https://github.com/enjin/contracts", - "Homepage": "https://enjincoin.io" + "Github": "https://github.com/digipulseio", + "Homepage": "https://www.digipulse.io" }, "marketcap_usd": 0, - "name": "ENJIN", + "name": "DigiPulse", "network": "eth", - "shortcut": "ENJ", + "shortcut": "DGPT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -7094,16 +7873,16 @@ } ] }, - "erc20:eth:ENTRP": { - "address": "0x5BC7e5f0Ab8b2E10D2D0a3F21739FCe62459aeF3", + "erc20:eth:DGS": { + "address": "0x6aEDbF8dFF31437220dF351950Ba2a3362168d1b", "links": { - "Github": "https://github.com/hut34", - "Homepage": "https://hut34.io/" + "Github": "https://github.com/dragonglasscom", + "Homepage": "https://dragonglass.com/" }, - "marketcap_usd": 0, - "name": "Hut34 Entropy Token", + "marketcap_usd": 34199.284758589856, + "name": "Dragonglass", "network": "eth", - "shortcut": "ENTRP", + "shortcut": "DGS", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -7122,16 +7901,16 @@ } ] }, - "erc20:eth:EPX": { - "address": "0x35BAA72038F127f9f8C8f9B491049f64f377914d", + "erc20:eth:DGTX": { + "address": "0x1C83501478f1320977047008496DACBD60Bb15ef", "links": { - "Github": "https://github.com/EthPokerIO/ethpokerIO", - "Homepage": "https://ethPoker.io" + "Github": "https://github.com/DigitexFutures", + "Homepage": "https://digitexfutures.com/" }, - "marketcap_usd": 0, - "name": "ethPoker.io EPX", + "marketcap_usd": 24660426.037677497, + "name": "DigitexFutures", "network": "eth", - "shortcut": "EPX", + "shortcut": "DGTX", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -7150,17 +7929,17 @@ } ] }, - "erc20:eth:ERT": { - "address": "0x92A5B04D0ED5D94D7a193d1d334D3D16996f4E13", + "erc20:eth:DGX": { + "address": "0x4f3AfEC4E5a3F2A6a1A411DEF7D7dFe50eE057bF", "links": { - "Github": "https://github.com/Krishtopa/ContractEristica", - "Homepage": "https://eristica.com/" + "Github": "https://github.com/DigixGlobal", + "Homepage": "https://digix.global" }, - "marketcap_usd": 484805, - "name": "Eristica", + "marketcap_usd": 3796802.1150401053, + "name": "Digix Gold Token", "network": "eth", - "shortcut": "ERT", - "t1_enabled": "soon", + "shortcut": "DGX", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -7178,16 +7957,16 @@ } ] }, - "erc20:eth:ESZ": { - "address": "0xe8A1Df958bE379045E2B46a31A98B93A2eCDfDeD", + "erc20:eth:DGX1": { + "address": "0x55b9a11c2e8351b4Ffc7b11561148bfaC9977855", "links": { - "Github": "https://github.com/EtherSportz/ESZCoin", - "Homepage": "https://ethersportz.com" + "Github": "https://github.com/DigixGlobal", + "Homepage": "https://digix.global" }, "marketcap_usd": 0, - "name": "ESZCoin", + "name": "Digix Gold Token 1.0", "network": "eth", - "shortcut": "ESZ", + "shortcut": "DGX1", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -7206,15 +7985,15 @@ } ] }, - "erc20:eth:ETBS": { - "address": "0x1B9743f556D65e757c4c650B4555bAF354cB8bd3", + "erc20:eth:DICE": { + "address": "0x2e071D2966Aa7D8dECB1005885bA1977D6038A65", "links": { - "Homepage": "https://www.ethbits.com" + "Homepage": "https://etheroll.com" }, - "marketcap_usd": 754493, - "name": "Ethbits", + "marketcap_usd": 1630795.3321510488, + "name": "Etheroll", "network": "eth", - "shortcut": "ETBS", + "shortcut": "DICE", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -7233,16 +8012,16 @@ } ] }, - "erc20:eth:ETCH": { - "address": "0xDd74a7A3769fA72561B3A69e65968F49748c690c", + "erc20:eth:DIT": { + "address": "0xf14922001A2FB8541a433905437ae954419C2439", "links": { - "Homepage": "https://etch.work" + "Homepage": "https://inmediate.io" }, - "marketcap_usd": 0, - "name": "ETCH", + "marketcap_usd": 181632.79066851293, + "name": "Digital Insurance Token", "network": "eth", - "shortcut": "ETCH", - "t1_enabled": "yes", + "shortcut": "DIT", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -7260,15 +8039,15 @@ } ] }, - "erc20:eth:ETHB": { - "address": "0x3a26746Ddb79B1B8e4450e3F4FFE3285A307387E", + "erc20:eth:DIVX": { + "address": "0x13f11C9905A08ca76e3e853bE63D4f0944326C72", "links": { - "Homepage": "https://etherbtc.io/faq" + "Homepage": "https://www.diviproject.org" }, "marketcap_usd": 0, - "name": "EtherBTC", + "name": "DIVX", "network": "eth", - "shortcut": "ETHB", + "shortcut": "DIVX", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -7287,16 +8066,15 @@ } ] }, - "erc20:eth:ETR": { - "address": "0x6927C69fb4daf2043fbB1Cb7b86c5661416bea29", + "erc20:eth:DLT": { + "address": "0x07e3c70653548B04f0A75970C1F81B4CBbFB606f", "links": { - "Github": "https://github.com/pironmind/EthereumRisen", - "Homepage": "http://ethereumrisen.io" + "Homepage": "https://www.agrello.org" }, - "marketcap_usd": 0, - "name": "Etheruem Risen", + "marketcap_usd": 9540744.565179393, + "name": "Agrello", "network": "eth", - "shortcut": "ETR", + "shortcut": "DLT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -7315,15 +8093,16 @@ } ] }, - "erc20:eth:EURT": { - "address": "0xAbdf147870235FcFC34153828c769A70B3FAe01F", + "erc20:eth:DMT": { + "address": "0x2ccbFF3A042c68716Ed2a2Cb0c544A9f1d1935E1", "links": { - "Homepage": "https://tether.to" + "Github": "https://github.com/suntechsoft/dmarket-smartcontract", + "Homepage": "https://dmarket.com" }, - "marketcap_usd": 0, - "name": "EUR Tether (erc20)", + "marketcap_usd": 10334708.237814771, + "name": "DMarket Token", "network": "eth", - "shortcut": "EURT", + "shortcut": "DMT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -7342,17 +8121,16 @@ } ] }, - "erc20:eth:EVE": { - "address": "0x923108a439C4e8C2315c4f6521E5cE95B44e9B4c", + "erc20:eth:DNA": { + "address": "0x82b0E50478eeaFde392D45D1259Ed1071B6fDa81", "links": { - "Github": "https://github.com/devery", - "Homepage": "https://devery.io" + "Homepage": "https://www.encrypgen.com" }, - "marketcap_usd": 0, - "name": "EVE", + "marketcap_usd": 2820585.8131941226, + "name": "EncrypGen", "network": "eth", - "shortcut": "EVE", - "t1_enabled": "yes", + "shortcut": "DNA", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -7370,15 +8148,16 @@ } ] }, - "erc20:eth:EVX": { - "address": "0xf3Db5Fa2C66B7aF3Eb0C0b782510816cbe4813b8", + "erc20:eth:DNT": { + "address": "0x0AbdAce70D3790235af448C88547603b945604ea", "links": { - "Homepage": "https://everex.io " + "Github": "https://github.com/district0x", + "Homepage": "https://district0x.io" }, - "marketcap_usd": 0, - "name": "EVX Token", + "marketcap_usd": 6276055.94436, + "name": "District0x Network Token", "network": "eth", - "shortcut": "EVX", + "shortcut": "DNT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -7397,17 +8176,17 @@ } ] }, - "erc20:eth:EWO": { - "address": "0x444997b7e7fC830E20089afea3078cd518fCF2A2", + "erc20:eth:DNX": { + "address": "0xE43E2041dc3786e166961eD9484a5539033d10fB", "links": { - "Github": "https://github.com/ewoplace", - "Homepage": "https://www.ewoplace.com/" + "Github": "https://github.com/DenCity-life", + "Homepage": "https://dencity.life" }, "marketcap_usd": 0, - "name": "EWO Token", + "name": "DenCity", "network": "eth", - "shortcut": "EWO", - "t1_enabled": "soon", + "shortcut": "DNX", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -7425,17 +8204,16 @@ } ] }, - "erc20:eth:EXMR": { - "address": "0xc98e0639c6d2EC037A615341c369666B110e80E5", + "erc20:eth:DOCK": { + "address": "0xE5Dada80Aa6477e85d09747f2842f7993D0Df71C", "links": { - "Github": "https://github.com/eXMRcoin/", - "Homepage": "https://exmr.io/" + "Homepage": "https://dock.io" }, - "marketcap_usd": 243769, - "name": "eXMRcoin", + "marketcap_usd": 3607936.948100271, + "name": "Dock", "network": "eth", - "shortcut": "EXMR", - "t1_enabled": "yes", + "shortcut": "DOCK", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -7453,17 +8231,16 @@ } ] }, - "erc20:eth:E\u20b9": { - "address": "0xb67734521eAbBE9C773729dB73E16CC2dfb20A58", + "erc20:eth:DOR": { + "address": "0x906b3f8b7845840188Eab53c3f5AD348A787752f", "links": { - "Github": "https://github.com/eRupee", - "Homepage": "https://erupee.wordpress.com" + "Homepage": "https://www.dorado.tech" }, - "marketcap_usd": 0, - "name": "eRupee", + "marketcap_usd": 74530.16062263204, + "name": "Dorado", "network": "eth", - "shortcut": "E\u20b9", - "t1_enabled": "yes", + "shortcut": "DOR", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -7481,15 +8258,15 @@ } ] }, - "erc20:eth:FABA": { - "address": "0x0a1D2fF7156a48131553CF381F220bbedB4eFa37", + "erc20:eth:DOV": { + "address": "0xac3211a5025414Af2866FF09c23FC18bc97e79b1", "links": { - "Homepage": "https://vc.fabainvest.com" + "Homepage": "https://dovu.io" }, - "marketcap_usd": 0, - "name": "FABA", + "marketcap_usd": 1414272.2462644312, + "name": "Dovu", "network": "eth", - "shortcut": "FABA", + "shortcut": "DOV", "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", @@ -7508,16 +8285,15 @@ } ] }, - "erc20:eth:FAM": { - "address": "0x190e569bE071F40c704e15825F285481CB74B6cC", + "erc20:eth:DPP": { + "address": "0x01b3Ec4aAe1B8729529BEB4965F27d008788B0EB", "links": { - "Github": "https://github.com/BattleDrome", - "Homepage": "http://www.battledrome.io" + "Homepage": "https://cofound.it/en/projects/digital-assets-power-play" }, "marketcap_usd": 0, - "name": "FAM", + "name": "Digital Assets Power Play", "network": "eth", - "shortcut": "FAM", + "shortcut": "DPP", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -7536,17 +8312,17 @@ } ] }, - "erc20:eth:FAN": { - "address": "0x90162f41886c0946D09999736f1C15c8a105A421", + "erc20:eth:DREAM": { + "address": "0x82f4dED9Cec9B5750FBFf5C2185AEe35AfC16587", "links": { - "Homepage": "https://tokensale.fanfare.global" + "Homepage": "https://dreamteam.gg" }, "marketcap_usd": 0, - "name": "Fan Token", + "name": "DREAM", "network": "eth", - "shortcut": "FAN", - "t1_enabled": "yes", - "t2_enabled": "yes", + "shortcut": "DREAM", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20", "wallet": [ { @@ -7563,17 +8339,17 @@ } ] }, - "erc20:eth:FGP": { - "address": "0xd9A8cfe21C232D485065cb62a96866799d4645f7", + "erc20:eth:DRGN": { + "address": "0x419c4dB4B9e25d6Db2AD9691ccb832C8D9fDA05E", "links": { - "Github": "https://github.com/FGPTEAM/FingerPrint", - "Homepage": "https://fingerprintcoin.org/" + "Github": "https://github.com/dragonchain/dragonchain", + "Homepage": "https://dragonchain.com" }, - "marketcap_usd": 0, - "name": "FingerPrint", + "marketcap_usd": 16941222.761417296, + "name": "Dragon", "network": "eth", - "shortcut": "FGP", - "t1_enabled": "soon", + "shortcut": "DRGN", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -7591,17 +8367,16 @@ } ] }, - "erc20:eth:FKX": { - "address": "0x009e864923b49263c7F10D19B7f8Ab7a9A5AAd33", + "erc20:eth:DRPU": { + "address": "0xe30e02f049957e2A5907589e06Ba646fB2c321bA", "links": { - "Github": "https://github.com/FortKnoxster", - "Homepage": "https://fortknoxster.com" + "Homepage": "https://www.dcorp.it" }, - "marketcap_usd": 250399, - "name": "Knoxstertoken", + "marketcap_usd": 220175.06752871978, + "name": "DCORP Utility", "network": "eth", - "shortcut": "FKX", - "t1_enabled": "yes", + "shortcut": "DRPU", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -7619,16 +8394,16 @@ } ] }, - "erc20:eth:FLIXX": { - "address": "0xf04a8ac553FceDB5BA99A64799155826C136b0Be", + "erc20:eth:DRT": { + "address": "0x9AF4f26941677C706cfEcf6D3379FF01bB85D5Ab", "links": { - "Homepage": "http://flixxo.com" + "Homepage": "https://token.domraider.com" }, - "marketcap_usd": 0, - "name": "FLIXX", + "marketcap_usd": 1051281.90848044, + "name": "DomRaider", "network": "eth", - "shortcut": "FLIXX", - "t1_enabled": "yes", + "shortcut": "DRT", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -7646,16 +8421,16 @@ } ] }, - "erc20:eth:FLP": { - "address": "0x3a1Bda28AdB5B0a812a7CF10A1950c920F79BcD3", + "erc20:eth:DRVH": { + "address": "0x62D4c04644314F35868Ba4c65cc27a77681dE7a9", "links": { - "Github": "https://github.com/gameflip", - "Homepage": "https://gameflip.com" + "Github": "https://github.com/TeamDriveholic", + "Homepage": "https://driveholic.com/" }, "marketcap_usd": 0, - "name": "FLIP Token", + "name": "Driveholic Token", "network": "eth", - "shortcut": "FLP", + "shortcut": "DRVH", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -7674,15 +8449,15 @@ } ] }, - "erc20:eth:FLR": { - "address": "0x9aeFBE0b3C3ba9Eab262CB9856E8157AB7648e09", + "erc20:eth:DSC": { + "address": "0x1e09BD8Cadb441632e441Db3e1D79909EE0A2256", "links": { - "Homepage": "https://flaircoin.co/" + "Homepage": "https://github.com/xxxxyy1" }, "marketcap_usd": 0, - "name": "Flair Coin", + "name": "Digital Safe Coin", "network": "eth", - "shortcut": "FLR", + "shortcut": "DSC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -7701,15 +8476,16 @@ } ] }, - "erc20:eth:FLUZ": { - "address": "0x954b5De09A55e59755aCBda29e1Eb74A45D30175", + "erc20:eth:DSCP": { + "address": "0x03e3f0c25965f13DbbC58246738C183E27b26a56", "links": { - "Homepage": "https://ico.fluzfluz.com" + "Github": "https://github.com/DisciplinaOU/disciplina", + "Homepage": "https://disciplina.io" }, "marketcap_usd": 0, - "name": "Fluz Fluz Global", + "name": "Disciplina Token", "network": "eth", - "shortcut": "FLUZ", + "shortcut": "DSCP", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -7728,17 +8504,18 @@ } ] }, - "erc20:eth:FLX": { - "address": "0x70b147E01E9285E7cE68B9BA437Fe3a9190E756a", + "erc20:eth:DST": { + "address": "0x68d53441c0e253f76c500e551bdeA3D102206C9a", "links": { - "Homepage": "http://fluxproject.xyz" + "Github": "https://github.com/DimensionsNetwork", + "Homepage": "https://dimensions.network/" }, "marketcap_usd": 0, - "name": "BitFlux", + "name": "Dimensions Strike Token", "network": "eth", - "shortcut": "FLX", - "t1_enabled": "yes", - "t2_enabled": "yes", + "shortcut": "DST", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20", "wallet": [ { @@ -7755,16 +8532,16 @@ } ] }, - "erc20:eth:FND": { - "address": "0x4DF47B4969B2911C966506E3592c41389493953b", + "erc20:eth:DTH": { + "address": "0x5adc961D6AC3f7062D2eA45FEFB8D8167d44b190", "links": { - "Github": "https://github.com/FundRequest", - "Homepage": "https://fundrequest.io" + "Github": "https://github.com/dethertech", + "Homepage": "https://dether.io" }, - "marketcap_usd": 222681, - "name": "FundRequest", + "marketcap_usd": 579774.63415905, + "name": "dether", "network": "eth", - "shortcut": "FND", + "shortcut": "DTH", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -7783,15 +8560,15 @@ } ] }, - "erc20:eth:FRD": { - "address": "0x0ABeFb7611Cb3A01EA3FaD85f33C3C934F8e2cF4", + "erc20:eth:DTR": { + "address": "0xd234BF2410a0009dF9c3C63b610c09738f18ccD7", "links": { - "Homepage": "https://farad.energy" + "Homepage": "https://www.tokens.net" }, - "marketcap_usd": 0, - "name": "FARAD Cryptoken", + "marketcap_usd": 12450274.183034208, + "name": "DTR", "network": "eth", - "shortcut": "FRD", + "shortcut": "DTR", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -7810,16 +8587,16 @@ } ] }, - "erc20:eth:FTR": { - "address": "0x2023DCf7c438c8C8C0B0F28dBaE15520B4f3Ee20", + "erc20:eth:DTRC": { + "address": "0xc20464e0C373486d2B3335576e83a218b1618A5E", "links": { - "Homepage": "https://futourist.io/" + "Homepage": "https://datarius.io" }, - "marketcap_usd": 0, - "name": "Futourist Token", + "marketcap_usd": 65299.17397006626, + "name": "Datarius Credit", "network": "eth", - "shortcut": "FTR", - "t1_enabled": "yes", + "shortcut": "DTRC", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -7837,16 +8614,16 @@ } ] }, - "erc20:eth:FTT": { - "address": "0x2AEC18c5500f21359CE1BEA5Dc1777344dF4C0Dc", + "erc20:eth:DTT": { + "address": "0xf9F7c29CFdf19FCf1f2AA6B84aA367Bcf1bD1676", "links": { - "Github": "https://github.com/farmatrust", - "Homepage": "https://www.farmatrust.io" + "Github": "https://github.com/DTToken", + "Homepage": "https://delphifund.org/" }, "marketcap_usd": 0, - "name": "FarmaTrust Token", + "name": "Delphi Tech Token", "network": "eth", - "shortcut": "FTT", + "shortcut": "DTT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -7865,17 +8642,16 @@ } ] }, - "erc20:eth:FTXT": { - "address": "0x41875C2332B0877cDFAA699B641402b7D4642c32", + "erc20:eth:DXT": { + "address": "0x8dB54ca569D3019A2ba126D03C37c44b5eF81EF6", "links": { - "Github": "https://github.com/futuraxproject", - "Homepage": "https://futurax.global" + "Homepage": "https://datawallet.com" }, - "marketcap_usd": 240396, - "name": "FUTURAX", + "marketcap_usd": 811710.384343415, + "name": "Datawallet", "network": "eth", - "shortcut": "FTXT", - "t1_enabled": "yes", + "shortcut": "DXT", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -7893,16 +8669,15 @@ } ] }, - "erc20:eth:FUEL": { - "address": "0xEA38eAa3C86c8F9B751533Ba2E562deb9acDED40", + "erc20:eth:Devcon2 Token": { + "address": "0xdd94De9cFE063577051A5eb7465D08317d8808B6", "links": { - "Github": "https://github.com/etherparty", - "Homepage": "https://etherparty.io" + "Homepage": "https://www.devcon2-token.com" }, "marketcap_usd": 0, - "name": "Etherparty FUEL", + "name": "Devcon2 Token", "network": "eth", - "shortcut": "FUEL", + "shortcut": "Devcon2 Token", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -7921,15 +8696,16 @@ } ] }, - "erc20:eth:FUN": { - "address": "0x419D0d8BdD9aF5e606Ae2232ed285Aff190E711b", + "erc20:eth:EAGLE": { + "address": "0x994f0DffdbaE0BbF09b652D6f11A493fd33F42B9", "links": { - "Homepage": "https://funfair.io" + "Github": "https://github.com/elangindonesia/EagleCoin", + "Homepage": "https://eaglepay.io" }, - "marketcap_usd": 25232390, - "name": "Funfair", + "marketcap_usd": 0, + "name": "EagleCoin", "network": "eth", - "shortcut": "FUN", + "shortcut": "EAGLE", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -7948,17 +8724,16 @@ } ] }, - "erc20:eth:FXC": { - "address": "0xc92D6E3E64302C59d734f3292E2A13A13D7E1817", + "erc20:eth:EARTH": { + "address": "0x900b4449236a7bb26b286601dD14d2bDe7a6aC6c", "links": { - "Github": "https://github.com/futuraxproject", - "Homepage": "https://futurax.global" + "Homepage": "https://earth-token.com" }, - "marketcap_usd": 240396, - "name": "FUTURAX", + "marketcap_usd": 42769.107434929036, + "name": "Earth Token", "network": "eth", - "shortcut": "FXC", - "t1_enabled": "yes", + "shortcut": "EARTH", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -7976,16 +8751,16 @@ } ] }, - "erc20:eth:FYN": { - "address": "0x88FCFBc22C6d3dBaa25aF478C578978339BDe77a", + "erc20:eth:EBC": { + "address": "0x31f3D9D1BeCE0c033fF78fA6DA60a6048F3E13c5", "links": { - "Homepage": "http://www.fundyourselfnow.com" + "Homepage": "https://ebcoin.io" }, - "marketcap_usd": 0, - "name": "Fund Yourself Now", + "marketcap_usd": 2155363.258075087, + "name": "EBCoin", "network": "eth", - "shortcut": "FYN", - "t1_enabled": "yes", + "shortcut": "EBC", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -8003,17 +8778,16 @@ } ] }, - "erc20:eth:Fzcoin": { - "address": "0xE5aeE163513119F4F750376C718766B40fA37A5F", + "erc20:eth:ECN": { + "address": "0xa578aCc0cB7875781b7880903F4594D13cFa8B98", "links": { - "Github": "https://github.com/fzcoinProtocol", - "Homepage": "https://fzcoin.cc/" + "Homepage": "http://www.cewrd.com" }, "marketcap_usd": 0, - "name": "Frozencoin Network", + "name": "ECN", "network": "eth", - "shortcut": "Fzcoin", - "t1_enabled": "soon", + "shortcut": "ECN", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -8031,16 +8805,15 @@ } ] }, - "erc20:eth:GAM": { - "address": "0xF67451Dc8421F0e0afEB52faa8101034ed081Ed9", + "erc20:eth:ECO2": { + "address": "0x17F93475d2A978f527c3f7c44aBf44AdfBa60D5C", "links": { - "Github": "https://github.com/BlockchainLabsNZ/gambit", - "Homepage": "http://gambitcrypto.com" + "Homepage": "http://www.ethco2.com" }, - "marketcap_usd": 1601381, - "name": "Gambit", + "marketcap_usd": 0, + "name": "EtherCO2", "network": "eth", - "shortcut": "GAM", + "shortcut": "ECO2", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -8059,16 +8832,16 @@ } ] }, - "erc20:eth:GAVEL": { - "address": "0x708876f486e448Ee89eB332bFbC8E593553058b9", + "erc20:eth:ECOM": { + "address": "0x171D750d42d661B62C277a6B486ADb82348c3Eca", "links": { - "Homepage": "http://gavelcoin.com" + "Homepage": "https://omnitude.tech" }, - "marketcap_usd": 0, - "name": "GAVEL", + "marketcap_usd": 3980939.7294354667, + "name": "Omnitude", "network": "eth", - "shortcut": "GAVEL", - "t1_enabled": "yes", + "shortcut": "ECOM", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -8086,16 +8859,15 @@ } ] }, - "erc20:eth:GBT": { - "address": "0x7585F835ae2d522722d2684323a0ba83401f32f5", + "erc20:eth:EDC": { + "address": "0xFA1DE2Ee97e4c10C94C91Cb2b5062b89Fb140b82", "links": { - "Github": "https://github.com/myHelloGold/Foundation", - "Homepage": "https://www.hellogold.org" + "Homepage": "https://www.edc.network" }, "marketcap_usd": 0, - "name": "GBT", + "name": "Education Credits", "network": "eth", - "shortcut": "GBT", + "shortcut": "EDC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -8114,15 +8886,15 @@ } ] }, - "erc20:eth:GBX": { - "address": "0x12fCd6463E66974cF7bBC24FFC4d40d6bE458283", + "erc20:eth:EDG": { + "address": "0x08711D3B02C8758F2FB3ab4e80228418a7F8e39c", "links": { - "Homepage": "https://www.globitexico.com" + "Homepage": "https://edgeless.io" }, - "marketcap_usd": 0, - "name": "Globitex", + "marketcap_usd": 14946802.964308614, + "name": "Edgeless", "network": "eth", - "shortcut": "GBX", + "shortcut": "EDG", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -8141,16 +8913,15 @@ } ] }, - "erc20:eth:GCP": { - "address": "0xdb0F69306FF8F949f258E83f6b87ee5D052d0b23", + "erc20:eth:EDO": { + "address": "0xCeD4E93198734dDaFf8492d525Bd258D49eb388E", "links": { - "Github": "https://github.com/Globcoin", - "Homepage": "https://globcoin.io/" + "Homepage": "https://eidoo.io" }, - "marketcap_usd": 0, - "name": "Globcoin Crypto Platform", + "marketcap_usd": 19094369.02521375, + "name": "Eidoo", "network": "eth", - "shortcut": "GCP", + "shortcut": "EDO", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -8169,16 +8940,16 @@ } ] }, - "erc20:eth:GEE": { - "address": "0x4F4f0Db4de903B88f2B1a2847971E231D54F8fd3", + "erc20:eth:EDR": { + "address": "0xc528c28FEC0A90C083328BC45f587eE215760A0F", "links": { - "Github": "https://github.com/GeensNPO", - "Homepage": "https://www.geens.com" + "Github": "https://github.com/EndorCoin", + "Homepage": "https://www.endor.com" }, - "marketcap_usd": 0, - "name": "Geens NPO", + "marketcap_usd": 20273898.775331568, + "name": "Endor Protocol Token", "network": "eth", - "shortcut": "GEE", + "shortcut": "EDR", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -8197,17 +8968,18 @@ } ] }, - "erc20:eth:GELD": { - "address": "0x24083Bb30072643C3bB90B44B7285860a755e687", + "erc20:eth:EGT": { + "address": "0x8e1b448EC7aDFc7Fa35FC2e885678bD323176E34", "links": { - "Homepage": "https://www.soerengelder.com" + "Github": "https://github.com/egretia", + "Homepage": "https://www.egretia.io" }, - "marketcap_usd": 0, - "name": "GELD", + "marketcap_usd": 1150596.7436378906, + "name": "Egretia Token", "network": "eth", - "shortcut": "GELD", - "t1_enabled": "yes", - "t2_enabled": "yes", + "shortcut": "EGT", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20", "wallet": [ { @@ -8224,16 +8996,16 @@ } ] }, - "erc20:eth:GEN": { - "address": "0x543Ff227F64Aa17eA132Bf9886cAb5DB55DCAddf", + "erc20:eth:EHT": { + "address": "0xf9F0FC7167c311Dd2F1e21E9204F87EBA9012fB2", "links": { - "Github": "https://github.com/daostack", - "Homepage": "https://daostack.io" + "Github": "https://github.com/team-easyhomes", + "Homepage": "https://easyhomes.io" }, - "marketcap_usd": 1747268, - "name": "DAOstack", + "marketcap_usd": 0, + "name": "EasyHomes", "network": "eth", - "shortcut": "GEN", + "shortcut": "EHT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -8252,17 +9024,7567 @@ } ] }, - "erc20:eth:GET": { - "address": "0x8a854288a5976036A725879164Ca3e91d30c6A1B", + "erc20:eth:EKO": { + "address": "0xa6a840E50bCaa50dA017b91A0D86B8b2d41156EE", "links": { - "Github": "https://github.com/Getprotocol", - "Homepage": "http://www.get-protocol.io" + "Homepage": "https://echolink.info" }, - "marketcap_usd": 0, - "name": "GET", + "marketcap_usd": 1200731.4954274925, + "name": "EchoLink", "network": "eth", - "shortcut": "GET", - "t1_enabled": "yes", + "shortcut": "EKO", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:EKT": { + "address": "0xBAb165dF9455AA0F2AeD1f2565520B91DDadB4c8", + "links": { + "Homepage": "http://ekt8.io" + }, + "marketcap_usd": 3451419.7829505, + "name": "EDUCare", + "network": "eth", + "shortcut": "EKT", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:ELEC": { + "address": "0xD49ff13661451313cA1553fd6954BD1d9b6E02b9", + "links": { + "Homepage": "https://electrify.asia" + }, + "marketcap_usd": 1506337.7672980702, + "name": "Electrify.Asia", + "network": "eth", + "shortcut": "ELEC", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:ELF": { + "address": "0xbf2179859fc6D5BEE9Bf9158632Dc51678a4100e", + "links": { + "Github": "https://github.com/aelfProject", + "Homepage": "https://aelf.io/" + }, + "marketcap_usd": 27564479.863984, + "name": "ELF Token", + "network": "eth", + "shortcut": "ELF", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:ELIX": { + "address": "0xc8C6A31A4A806d3710A7B38b7B296D2fABCCDBA8", + "links": { + "Homepage": "https://elixirtoken.io" + }, + "marketcap_usd": 299549.9024516517, + "name": "Elixir Token", + "network": "eth", + "shortcut": "ELIX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:ELTCOIN": { + "address": "0x44197A4c44D6A059297cAf6be4F7e172BD56Caaf", + "links": { + "Github": "https://github.com/eltcoin", + "Homepage": "http://www.eltcoin.tech/" + }, + "marketcap_usd": 47322.92563713, + "name": "ELTCOIN", + "network": "eth", + "shortcut": "ELTCOIN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:ELY": { + "address": "0xa95592DCFfA3C080B4B40E459c5f5692F67DB7F8", + "links": { + "Github": "https://github.com/Elysian-ELY", + "Homepage": "https://elycoin.io" + }, + "marketcap_usd": 161888.16126236046, + "name": "ELYCOIN", + "network": "eth", + "shortcut": "ELY", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:EMON": { + "address": "0xb67b88a25708a35AE7c2d736D398D268CE4f7F83", + "links": { + "Github": "https://github.com/etheremon/smartcontract", + "Homepage": "https://www.etheremon.com/" + }, + "marketcap_usd": 0, + "name": "Etheremon", + "network": "eth", + "shortcut": "EMON", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:EMONT": { + "address": "0x95dAaaB98046846bF4B2853e23cba236fa394A31", + "links": { + "Homepage": "https://www.etheremon.com" + }, + "marketcap_usd": 0, + "name": "Etheremon Token", + "network": "eth", + "shortcut": "EMONT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:EMT": { + "address": "0x9501BFc48897DCEEadf73113EF635d2fF7ee4B97", + "links": { + "Github": "https://github.com/easyMINE", + "Homepage": "https://easymine.io" + }, + "marketcap_usd": 0, + "name": "easyMINE Token", + "network": "eth", + "shortcut": "EMT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:EMV": { + "address": "0xB802b24E0637c2B87D2E8b7784C055BBE921011a", + "links": { + "Homepage": "http://emovieventure.com" + }, + "marketcap_usd": 0, + "name": "EMovieVenture", + "network": "eth", + "shortcut": "EMV", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:ENC": { + "address": "0x039F5050dE4908f9b5ddF40A4F3Aa3f329086387", + "links": { + "Github": "https://github.com/ethernetcash", + "Homepage": "https://ethernet.cash" + }, + "marketcap_usd": 0, + "name": "Ethernet.Cash", + "network": "eth", + "shortcut": "ENC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:ENG": { + "address": "0xf0Ee6b27b759C9893Ce4f094b49ad28fd15A23e4", + "links": { + "Github": "https://github.com/enigmampc", + "Homepage": "https://enigma.co/" + }, + "marketcap_usd": 19521592.7306533, + "name": "Enigma", + "network": "eth", + "shortcut": "ENG", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:ENGT": { + "address": "0x5DBAC24e98E2a4f43ADC0DC82Af403fca063Ce2c", + "links": { + "Homepage": "https://engagementtoken.com" + }, + "marketcap_usd": 60338.490281806255, + "name": "Engagement Token", + "network": "eth", + "shortcut": "ENGT", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:ENJ": { + "address": "0xF629cBd94d3791C9250152BD8dfBDF380E2a3B9c", + "links": { + "Github": "https://github.com/enjin/contracts", + "Homepage": "https://enjincoin.io" + }, + "marketcap_usd": 21145351.554662187, + "name": "ENJIN", + "network": "eth", + "shortcut": "ENJ", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:ENTRP": { + "address": "0x5BC7e5f0Ab8b2E10D2D0a3F21739FCe62459aeF3", + "links": { + "Github": "https://github.com/hut34", + "Homepage": "https://hut34.io/" + }, + "marketcap_usd": 0, + "name": "Hut34 Entropy Token", + "network": "eth", + "shortcut": "ENTRP", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:EPX": { + "address": "0x35BAA72038F127f9f8C8f9B491049f64f377914d", + "links": { + "Github": "https://github.com/EthPokerIO/ethpokerIO", + "Homepage": "https://ethPoker.io" + }, + "marketcap_usd": 0, + "name": "ethPoker.io EPX", + "network": "eth", + "shortcut": "EPX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:EPY": { + "address": "0x50Ee674689d75C0f88E8f83cfE8c4B69E8fd590D", + "links": { + "Homepage": "https://emphy.io" + }, + "marketcap_usd": 90727.96065924762, + "name": "Emphy", + "network": "eth", + "shortcut": "EPY", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:EQL": { + "address": "0x47dD62D4D075DeAd71d0e00299fc56a2d747beBb", + "links": { + "Homepage": "http://www.equaltoken.io" + }, + "marketcap_usd": 327548.59613907675, + "name": "Equal", + "network": "eth", + "shortcut": "EQL", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:ERO": { + "address": "0x74CEDa77281b339142A36817Fa5F9E29412bAb85", + "links": { + "Homepage": "https://eroscoin.org" + }, + "marketcap_usd": 708648.1751829007, + "name": "Eroscoin", + "network": "eth", + "shortcut": "ERO", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:ERT": { + "address": "0x92A5B04D0ED5D94D7a193d1d334D3D16996f4E13", + "links": { + "Github": "https://github.com/Krishtopa/ContractEristica", + "Homepage": "https://eristica.com/" + }, + "marketcap_usd": 430244.3323421533, + "name": "Eristica", + "network": "eth", + "shortcut": "ERT", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:ESZ": { + "address": "0xe8A1Df958bE379045E2B46a31A98B93A2eCDfDeD", + "links": { + "Github": "https://github.com/EtherSportz/ESZCoin", + "Homepage": "https://ethersportz.com" + }, + "marketcap_usd": 127985.46967809553, + "name": "ESZCoin", + "network": "eth", + "shortcut": "ESZ", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:ETBS": { + "address": "0x1B9743f556D65e757c4c650B4555bAF354cB8bd3", + "links": { + "Homepage": "https://www.ethbits.com" + }, + "marketcap_usd": 301083.66553227307, + "name": "Ethbits", + "network": "eth", + "shortcut": "ETBS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:ETCH": { + "address": "0xDd74a7A3769fA72561B3A69e65968F49748c690c", + "links": { + "Homepage": "https://etch.work" + }, + "marketcap_usd": 0, + "name": "ETCH", + "network": "eth", + "shortcut": "ETCH", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:ETG": { + "address": "0x28c8d01FF633eA9Cd8fc6a451D7457889E698de6", + "links": { + "Homepage": "https://www.etgproject.org" + }, + "marketcap_usd": 40699.02804096, + "name": "Ethereum Gold", + "network": "eth", + "shortcut": "ETG", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:ETHB": { + "address": "0x3a26746Ddb79B1B8e4450e3F4FFE3285A307387E", + "links": { + "Homepage": "https://etherbtc.io/faq" + }, + "marketcap_usd": 0, + "name": "EtherBTC", + "network": "eth", + "shortcut": "ETHB", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:ETK": { + "address": "0x3c4a3ffd813a107febd57B2f01BC344264D90FdE", + "links": { + "Homepage": "https://energitoken.com" + }, + "marketcap_usd": 983555.0067028479, + "name": "EnergiToken", + "network": "eth", + "shortcut": "ETK", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:ETR": { + "address": "0x6927C69fb4daf2043fbB1Cb7b86c5661416bea29", + "links": { + "Github": "https://github.com/pironmind/EthereumRisen", + "Homepage": "http://ethereumrisen.io" + }, + "marketcap_usd": 0, + "name": "Etheruem Risen", + "network": "eth", + "shortcut": "ETR", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:EURS": { + "address": "0xdB25f211AB05b1c97D595516F45794528a807ad8", + "links": { + "Homepage": "https://stasis.net" + }, + "marketcap_usd": 34888024.06418034, + "name": "STASIS EURS", + "network": "eth", + "shortcut": "EURS", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:EURT": { + "address": "0xAbdf147870235FcFC34153828c769A70B3FAe01F", + "links": { + "Homepage": "https://tether.to" + }, + "marketcap_usd": 0, + "name": "EUR Tether (erc20)", + "network": "eth", + "shortcut": "EURT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:EVC": { + "address": "0xb62d18DeA74045E822352CE4B3EE77319DC5ff2F", + "links": { + "Homepage": "https://eventchain.io" + }, + "marketcap_usd": 424670.6283636352, + "name": "EventChain", + "network": "eth", + "shortcut": "EVC", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:EVE": { + "address": "0x923108a439C4e8C2315c4f6521E5cE95B44e9B4c", + "links": { + "Github": "https://github.com/devery", + "Homepage": "https://devery.io" + }, + "marketcap_usd": 445506.9910476732, + "name": "EVE", + "network": "eth", + "shortcut": "EVE", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:EVX": { + "address": "0xf3Db5Fa2C66B7aF3Eb0C0b782510816cbe4813b8", + "links": { + "Homepage": "https://everex.io " + }, + "marketcap_usd": 5324364.41596023, + "name": "EVX Token", + "network": "eth", + "shortcut": "EVX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:EWO": { + "address": "0x444997b7e7fC830E20089afea3078cd518fCF2A2", + "links": { + "Github": "https://github.com/ewoplace", + "Homepage": "https://www.ewoplace.com/" + }, + "marketcap_usd": 0, + "name": "EWO Token", + "network": "eth", + "shortcut": "EWO", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:EXMR": { + "address": "0xc98e0639c6d2EC037A615341c369666B110e80E5", + "links": { + "Github": "https://github.com/eXMRcoin/", + "Homepage": "https://exmr.io/" + }, + "marketcap_usd": 142723.48146162374, + "name": "eXMRcoin", + "network": "eth", + "shortcut": "EXMR", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:EXRN": { + "address": "0xe469c4473af82217B30CF17b10BcDb6C8c796e75", + "links": { + "Homepage": "https://exrnchain.com" + }, + "marketcap_usd": 1436442.3278104998, + "name": "EXRNchain", + "network": "eth", + "shortcut": "EXRN", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:EXY": { + "address": "0x5c743a35E903F6c584514ec617ACEe0611Cf44f3", + "links": { + "Homepage": "https://experty.io/en" + }, + "marketcap_usd": 748496.2957125612, + "name": "Experty", + "network": "eth", + "shortcut": "EXY", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:EZT": { + "address": "0x5e6016Ae7d7C49d347dcF834860B9f3Ee282812b", + "links": { + "Homepage": "https://ico.ezpos.io" + }, + "marketcap_usd": 61971.2459821221, + "name": "EZToken", + "network": "eth", + "shortcut": "EZT", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:E\u20b9": { + "address": "0xb67734521eAbBE9C773729dB73E16CC2dfb20A58", + "links": { + "Github": "https://github.com/eRupee", + "Homepage": "https://erupee.wordpress.com" + }, + "marketcap_usd": 0, + "name": "eRupee", + "network": "eth", + "shortcut": "E\u20b9", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:FABA": { + "address": "0x0a1D2fF7156a48131553CF381F220bbedB4eFa37", + "links": { + "Homepage": "https://vc.fabainvest.com" + }, + "marketcap_usd": 0, + "name": "FABA", + "network": "eth", + "shortcut": "FABA", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:FACE": { + "address": "0x1CCAA0F2a7210d76E1fDec740d5F323E2E1b1672", + "links": { + "Homepage": "https://tokensale.faceter.io" + }, + "marketcap_usd": 590238.4362108753, + "name": "Faceter", + "network": "eth", + "shortcut": "FACE", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:FAM": { + "address": "0x190e569bE071F40c704e15825F285481CB74B6cC", + "links": { + "Github": "https://github.com/BattleDrome", + "Homepage": "http://www.battledrome.io" + }, + "marketcap_usd": 0, + "name": "FAM", + "network": "eth", + "shortcut": "FAM", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:FAN": { + "address": "0x90162f41886c0946D09999736f1C15c8a105A421", + "links": { + "Homepage": "https://tokensale.fanfare.global" + }, + "marketcap_usd": 0, + "name": "Fan Token", + "network": "eth", + "shortcut": "FAN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:FDZ": { + "address": "0x23352036E911A22Cfc692B5E2E196692658ADED9", + "links": { + "Homepage": "https://friendz.io" + }, + "marketcap_usd": 1823769.1958733432, + "name": "Friendz", + "network": "eth", + "shortcut": "FDZ", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:FGP": { + "address": "0xd9A8cfe21C232D485065cb62a96866799d4645f7", + "links": { + "Github": "https://github.com/FGPTEAM/FingerPrint", + "Homepage": "https://fingerprintcoin.org/" + }, + "marketcap_usd": 0, + "name": "FingerPrint", + "network": "eth", + "shortcut": "FGP", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:FID": { + "address": "0x52fb36C83ad33C1824912FC81071cA5eEB8AB390", + "links": { + "Homepage": "http://www.fidelium.io" + }, + "marketcap_usd": 264002.41693745996, + "name": "Fidelium", + "network": "eth", + "shortcut": "FID", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:FIH": { + "address": "0xdfC3e857c8cCEA7657E0ed98AB92e048e38deE0f", + "links": { + "Github": "https://github.com/FidelityHouseInternational", + "Homepage": "https://www.fidelityhouse.io" + }, + "marketcap_usd": 0, + "name": "FidelityHouse Token", + "network": "eth", + "shortcut": "FIH", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:FKX": { + "address": "0x009e864923b49263c7F10D19B7f8Ab7a9A5AAd33", + "links": { + "Github": "https://github.com/FortKnoxster", + "Homepage": "https://fortknoxster.com" + }, + "marketcap_usd": 222138.09855874497, + "name": "Knoxstertoken", + "network": "eth", + "shortcut": "FKX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:FLIXX": { + "address": "0xf04a8ac553FceDB5BA99A64799155826C136b0Be", + "links": { + "Homepage": "http://flixxo.com" + }, + "marketcap_usd": 1052537.2338193122, + "name": "FLIXX", + "network": "eth", + "shortcut": "FLIXX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:FLOT": { + "address": "0x049399a6B048D52971F7D122aE21A1532722285F", + "links": { + "Homepage": "https://firelotto.io" + }, + "marketcap_usd": 834145.5884506268, + "name": "Fire Lotto", + "network": "eth", + "shortcut": "FLOT", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:FLP": { + "address": "0x3a1Bda28AdB5B0a812a7CF10A1950c920F79BcD3", + "links": { + "Github": "https://github.com/gameflip", + "Homepage": "https://gameflip.com" + }, + "marketcap_usd": 849411.7845503815, + "name": "FLIP Token", + "network": "eth", + "shortcut": "FLP", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:FLR": { + "address": "0x9aeFBE0b3C3ba9Eab262CB9856E8157AB7648e09", + "links": { + "Homepage": "https://flaircoin.co/" + }, + "marketcap_usd": 0, + "name": "Flair Coin", + "network": "eth", + "shortcut": "FLR", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:FLUZ": { + "address": "0x954b5De09A55e59755aCBda29e1Eb74A45D30175", + "links": { + "Homepage": "https://ico.fluzfluz.com" + }, + "marketcap_usd": 3524060.476518228, + "name": "Fluz Fluz Global", + "network": "eth", + "shortcut": "FLUZ", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:FLX": { + "address": "0x70b147E01E9285E7cE68B9BA437Fe3a9190E756a", + "links": { + "Homepage": "http://fluxproject.xyz" + }, + "marketcap_usd": 0, + "name": "BitFlux", + "network": "eth", + "shortcut": "FLX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:FMF": { + "address": "0xb4d0FDFC8497AEF97d3c2892AE682eE06064A2BC", + "links": { + "Github": "https://github.com/FormosaFinancial", + "Homepage": "https://www.formosa.financial/" + }, + "marketcap_usd": 553348.762226238, + "name": "Formosa Financial Token", + "network": "eth", + "shortcut": "FMF", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:FND": { + "address": "0x4DF47B4969B2911C966506E3592c41389493953b", + "links": { + "Github": "https://github.com/FundRequest", + "Homepage": "https://fundrequest.io" + }, + "marketcap_usd": 142879.25406690908, + "name": "FundRequest", + "network": "eth", + "shortcut": "FND", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:FNKOS": { + "address": "0x0707681F344dEB24184037fC0228856F2137B02E", + "links": { + "Homepage": "https://www.foglink.io" + }, + "marketcap_usd": 1458490.8869997722, + "name": "FNKOS", + "network": "eth", + "shortcut": "FNKOS", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:FNTB": { + "address": "0xbD4B60a138b3fce3584EA01f50c0908c18f9677A", + "links": { + "Homepage": "https://fintab.io/ico" + }, + "marketcap_usd": 6066.869379669122, + "name": "Fintab", + "network": "eth", + "shortcut": "FNTB", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:FOOD": { + "address": "0x2a093BcF0C98Ef744Bb6F69D74f2F85605324290", + "links": { + "Homepage": "https://www.foodcoin.io" + }, + "marketcap_usd": 773854.0371785497, + "name": "FoodCoin", + "network": "eth", + "shortcut": "FOOD", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:FOTA": { + "address": "0x4270bb238f6DD8B1c3ca01f96CA65b2647c06D3C", + "links": { + "Homepage": "https://www.fota.io" + }, + "marketcap_usd": 3514022.058687674, + "name": "Fortuna", + "network": "eth", + "shortcut": "FOTA", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:FRD": { + "address": "0x0ABeFb7611Cb3A01EA3FaD85f33C3C934F8e2cF4", + "links": { + "Homepage": "https://farad.energy" + }, + "marketcap_usd": 0, + "name": "FARAD Cryptoken", + "network": "eth", + "shortcut": "FRD", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:FREC": { + "address": "0x17e67d1CB4e349B9CA4Bc3e17C7DF2a397A7BB64", + "links": { + "Homepage": "http://www.freyrchain.org" + }, + "marketcap_usd": 292185.077576, + "name": "Freyrchain", + "network": "eth", + "shortcut": "FREC", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:FSN": { + "address": "0xD0352a019e9AB9d757776F532377aAEbd36Fd541", + "links": { + "Homepage": "https://fusion.org" + }, + "marketcap_usd": 8923260.453373097, + "name": "Fusion", + "network": "eth", + "shortcut": "FSN", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:FT": { + "address": "0x78a73B6CBc5D183CE56e786f6e905CaDEC63547B", + "links": { + "Homepage": "https://fabrictoken.io" + }, + "marketcap_usd": 79769.69369004668, + "name": "Fabric Token", + "network": "eth", + "shortcut": "FT", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:FTI": { + "address": "0x943ED852DadB5C3938ECdC6883718df8142DE4C8", + "links": { + "Homepage": "https://fanstime.org" + }, + "marketcap_usd": 1464424.32413295, + "name": "FansTime", + "network": "eth", + "shortcut": "FTI", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:FTR": { + "address": "0x2023DCf7c438c8C8C0B0F28dBaE15520B4f3Ee20", + "links": { + "Homepage": "https://futourist.io/" + }, + "marketcap_usd": 0, + "name": "Futourist Token", + "network": "eth", + "shortcut": "FTR", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:FTT": { + "address": "0x2AEC18c5500f21359CE1BEA5Dc1777344dF4C0Dc", + "links": { + "Github": "https://github.com/farmatrust", + "Homepage": "https://www.farmatrust.io" + }, + "marketcap_usd": 1751126.81586, + "name": "FarmaTrust Token", + "network": "eth", + "shortcut": "FTT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:FTX": { + "address": "0xd559f20296FF4895da39b5bd9ADd54b442596a61", + "links": { + "Homepage": "https://www.fintrux.com" + }, + "marketcap_usd": 1259441.3467764999, + "name": "FintruX Network", + "network": "eth", + "shortcut": "FTX", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:FTXT": { + "address": "0x41875C2332B0877cDFAA699B641402b7D4642c32", + "links": { + "Github": "https://github.com/futuraxproject", + "Homepage": "https://futurax.global" + }, + "marketcap_usd": 89418.2063797853, + "name": "FUTURAX", + "network": "eth", + "shortcut": "FTXT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:FUEL": { + "address": "0xEA38eAa3C86c8F9B751533Ba2E562deb9acDED40", + "links": { + "Github": "https://github.com/etherparty", + "Homepage": "https://etherparty.io" + }, + "marketcap_usd": 3928253.67247894, + "name": "Etherparty FUEL", + "network": "eth", + "shortcut": "FUEL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:FUN": { + "address": "0x419D0d8BdD9aF5e606Ae2232ed285Aff190E711b", + "links": { + "Homepage": "https://funfair.io" + }, + "marketcap_usd": 21571805.827022515, + "name": "Funfair", + "network": "eth", + "shortcut": "FUN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:FXC": { + "address": "0xc92D6E3E64302C59d734f3292E2A13A13D7E1817", + "links": { + "Github": "https://github.com/futuraxproject", + "Homepage": "https://futurax.global" + }, + "marketcap_usd": 0, + "name": "FUTURAX", + "network": "eth", + "shortcut": "FXC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:FXT": { + "address": "0x1829aA045E21E0D59580024A951DB48096e01782", + "links": { + "Homepage": "https://fuzex.co" + }, + "marketcap_usd": 2102314.177313833, + "name": "FuzeX", + "network": "eth", + "shortcut": "FXT", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:FYN": { + "address": "0x88FCFBc22C6d3dBaa25aF478C578978339BDe77a", + "links": { + "Homepage": "http://www.fundyourselfnow.com" + }, + "marketcap_usd": 0, + "name": "Fund Yourself Now", + "network": "eth", + "shortcut": "FYN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:FYP": { + "address": "0x8F0921f30555624143d427b340b1156914882C10", + "links": { + "Homepage": "https://flyp.me" + }, + "marketcap_usd": 243839.015301415, + "name": "FlypMe", + "network": "eth", + "shortcut": "FYP", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:Fzcoin": { + "address": "0xE5aeE163513119F4F750376C718766B40fA37A5F", + "links": { + "Github": "https://github.com/fzcoinProtocol", + "Homepage": "https://fzcoin.cc/" + }, + "marketcap_usd": 0, + "name": "Frozencoin Network", + "network": "eth", + "shortcut": "Fzcoin", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:GAM": { + "address": "0xF67451Dc8421F0e0afEB52faa8101034ed081Ed9", + "links": { + "Github": "https://github.com/BlockchainLabsNZ/gambit", + "Homepage": "http://gambitcrypto.com" + }, + "marketcap_usd": 1369964.6612315404, + "name": "Gambit", + "network": "eth", + "shortcut": "GAM", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:GAT": { + "address": "0x687174f8C49ceb7729D925C3A961507ea4Ac7b28", + "links": { + "Homepage": "https://www.gatcoin.io" + }, + "marketcap_usd": 833185.1813366282, + "name": "Global Awards Token", + "network": "eth", + "shortcut": "GAT", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:GAVEL": { + "address": "0x708876f486e448Ee89eB332bFbC8E593553058b9", + "links": { + "Homepage": "http://gavelcoin.com" + }, + "marketcap_usd": 0, + "name": "GAVEL", + "network": "eth", + "shortcut": "GAVEL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:GBT": { + "address": "0x7585F835ae2d522722d2684323a0ba83401f32f5", + "links": { + "Github": "https://github.com/myHelloGold/Foundation", + "Homepage": "https://www.hellogold.org" + }, + "marketcap_usd": 0, + "name": "GBT", + "network": "eth", + "shortcut": "GBT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:GBX": { + "address": "0x12fCd6463E66974cF7bBC24FFC4d40d6bE458283", + "links": { + "Homepage": "https://www.globitexico.com" + }, + "marketcap_usd": 0, + "name": "Globitex", + "network": "eth", + "shortcut": "GBX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:GCP": { + "address": "0xdb0F69306FF8F949f258E83f6b87ee5D052d0b23", + "links": { + "Github": "https://github.com/Globcoin", + "Homepage": "https://globcoin.io/" + }, + "marketcap_usd": 0, + "name": "Globcoin Crypto Platform", + "network": "eth", + "shortcut": "GCP", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:GEE": { + "address": "0x4F4f0Db4de903B88f2B1a2847971E231D54F8fd3", + "links": { + "Github": "https://github.com/GeensNPO", + "Homepage": "https://www.geens.com" + }, + "marketcap_usd": 0, + "name": "Geens NPO", + "network": "eth", + "shortcut": "GEE", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:GELD": { + "address": "0x24083Bb30072643C3bB90B44B7285860a755e687", + "links": { + "Homepage": "https://www.soerengelder.com" + }, + "marketcap_usd": 0, + "name": "GELD", + "network": "eth", + "shortcut": "GELD", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:GEM": { + "address": "0xc7BbA5b765581eFb2Cdd2679DB5Bea9eE79b201f", + "links": { + "Homepage": "https://gems.org" + }, + "marketcap_usd": 1176616.3551722215, + "name": "Gems", + "network": "eth", + "shortcut": "GEM", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:GEN": { + "address": "0x543Ff227F64Aa17eA132Bf9886cAb5DB55DCAddf", + "links": { + "Github": "https://github.com/daostack", + "Homepage": "https://daostack.io" + }, + "marketcap_usd": 3996888.3895106674, + "name": "DAOstack", + "network": "eth", + "shortcut": "GEN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:GENE": { + "address": "0x6DD4e4Aad29A40eDd6A409b9c1625186C9855b4D", + "links": { + "Homepage": "https://parkgene.io" + }, + "marketcap_usd": 333050.34909678577, + "name": "Parkgene", + "network": "eth", + "shortcut": "GENE", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:GET": { + "address": "0x8a854288a5976036A725879164Ca3e91d30c6A1B", + "links": { + "Github": "https://github.com/Getprotocol", + "Homepage": "http://www.get-protocol.io" + }, + "marketcap_usd": 2502634.6470488724, + "name": "GET", + "network": "eth", + "shortcut": "GET", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:GIF": { + "address": "0xFcD862985628b254061F7A918035B80340D045d3", + "links": { + "Homepage": "https://gifcoin.io/" + }, + "marketcap_usd": 0, + "name": "GIFcoin Token", + "network": "eth", + "shortcut": "GIF", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:GIM": { + "address": "0xaE4f56F072c34C0a65B3ae3E4DB797D831439D93", + "links": { + "Github": "https://github.com/thegimliproject/GimliToken", + "Homepage": "https://gimli.io" + }, + "marketcap_usd": 0, + "name": "Gimli", + "network": "eth", + "shortcut": "GIM", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:GLA": { + "address": "0x71D01dB8d6a2fBEa7f8d434599C237980C234e4C", + "links": { + "Homepage": "https://gladius.io" + }, + "marketcap_usd": 778954.9331684116, + "name": "Gladius", + "network": "eth", + "shortcut": "GLA", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:GMT": { + "address": "0xb3Bd49E28f8F832b8d1E246106991e546c323502", + "links": { + "Homepage": "http://www.mercuryprotocol.com" + }, + "marketcap_usd": 0, + "name": "GMT", + "network": "eth", + "shortcut": "GMT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:GNO": { + "address": "0x6810e776880C02933D47DB1b9fc05908e5386b96", + "links": { + "Homepage": "https://gnosis.pm" + }, + "marketcap_usd": 12955844.747752007, + "name": "Gnosis", + "network": "eth", + "shortcut": "GNO", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:GNT": { + "address": "0xa74476443119A942dE498590Fe1f2454d7D4aC0d", + "links": { + "Homepage": "https://golem.network" + }, + "marketcap_usd": 54334824.11710737, + "name": "Golem", + "network": "eth", + "shortcut": "GNT", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:GNX": { + "address": "0x6EC8a24CaBdc339A06a172F8223ea557055aDAa5", + "links": { + "Homepage": "https://genaro.network" + }, + "marketcap_usd": 3746717.587822055, + "name": "Genaro Network", + "network": "eth", + "shortcut": "GNX", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:GNY": { + "address": "0x247551F2EB3362E222c742E9c788B8957D9BC87e", + "links": { + "Github": "https://github.com/GNYIO", + "Homepage": "https://www.gny.io/" + }, + "marketcap_usd": 0, + "name": "GNY", + "network": "eth", + "shortcut": "GNY", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:GOLDX": { + "address": "0xeAb43193CF0623073Ca89DB9B712796356FA7414", + "links": { + "Github": "https://github.com/myHelloGold/Foundation", + "Homepage": "https://www.hellogold.org/" + }, + "marketcap_usd": 0, + "name": "GOLDX", + "network": "eth", + "shortcut": "GOLDX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:GOT": { + "address": "0x423b5F62b328D0D6D44870F4Eee316befA0b2dF5", + "links": { + "Homepage": "https://gonetwork.co/index.html" + }, + "marketcap_usd": 603020.9480312243, + "name": "GoNetwork", + "network": "eth", + "shortcut": "GOT", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:GRID": { + "address": "0x12B19D3e2ccc14Da04FAe33e63652ce469b3F2FD", + "links": { + "Homepage": "https://gridplus.io/token-sale" + }, + "marketcap_usd": 3425057.657732727, + "name": "GRID", + "network": "eth", + "shortcut": "GRID", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:GRMD": { + "address": "0xb444208cB0516C150178fCf9a52604BC04A1aCEa", + "links": { + "Homepage": "https://www.greenmed.io" + }, + "marketcap_usd": 56934.72050719716, + "name": "GreenMed", + "network": "eth", + "shortcut": "GRMD", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:GROO": { + "address": "0xC17195bde49D70CefCF8A9F2ee1759FFC27BF0B1", + "links": { + "Github": "https://github.com/groocoindev", + "Homepage": "https://groo.io/" + }, + "marketcap_usd": 0, + "name": "Groocoin", + "network": "eth", + "shortcut": "GROO", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:GROW": { + "address": "0x0a9A9ce600D08BF9b76F49FA4e7b38A67EBEB1E6", + "links": { + "Github": "https://github.com/growchainnet", + "Homepage": "http://www.growchain.us" + }, + "marketcap_usd": 0, + "name": "Growchain", + "network": "eth", + "shortcut": "GROW", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:GSC": { + "address": "0x228ba514309FFDF03A81a205a6D040E429d6E80C", + "links": { + "Homepage": "https://www.gsc.social" + }, + "marketcap_usd": 1628545.9236365324, + "name": "Global Social Chain", + "network": "eth", + "shortcut": "GSC", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:GSE": { + "address": "0xe530441f4f73bDB6DC2fA5aF7c3fC5fD551Ec838", + "links": { + "Homepage": "https://gse.network" + }, + "marketcap_usd": 0, + "name": "GSENetwork", + "network": "eth", + "shortcut": "GSE", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:GTC": { + "address": "0xB70835D7822eBB9426B56543E391846C107bd32C", + "links": { + "Github": "https://github.com/GameLeLe", + "Homepage": "https://game.com" + }, + "marketcap_usd": 10584401.432999784, + "name": "GTC Token", + "network": "eth", + "shortcut": "GTC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:GTKT": { + "address": "0x025abAD9e518516fdaAFBDcdB9701b37fb7eF0FA", + "links": { + "Github": "https://github.com/sprux/BackToEarth", + "Homepage": "https://backto.earth" + }, + "marketcap_usd": 0, + "name": "GTKT", + "network": "eth", + "shortcut": "GTKT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:GTO": { + "address": "0xC5bBaE50781Be1669306b9e001EFF57a2957b09d", + "links": { + "Github": "https://github.com/GIFTO-io", + "Homepage": "https://gifto.io/" + }, + "marketcap_usd": 12535222.464424279, + "name": "Gifto", + "network": "eth", + "shortcut": "GTO", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:GUESS": { + "address": "0xBDCFbf5C4D91Abc0bC9709C7286d00063c0e6F22", + "links": { + "Homepage": "https://peerguess.com" + }, + "marketcap_usd": 18824.685813253185, + "name": "Peerguess", + "network": "eth", + "shortcut": "GUESS", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:GULD": { + "address": "0x9847345de8b614c956146bbea549336d9C8d26b6", + "links": { + "Github": "https://github.com/guldcoin", + "Homepage": "https://guld.io" + }, + "marketcap_usd": 0, + "name": "GULD ERC20", + "network": "eth", + "shortcut": "GULD", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:GUP": { + "address": "0xf7B098298f7C69Fc14610bf71d5e02c60792894C", + "links": { + "Homepage": "https://matchpool.co" + }, + "marketcap_usd": 1235975.6060025, + "name": "Matchpool", + "network": "eth", + "shortcut": "GUP", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:GVT": { + "address": "0x103c3A209da59d3E7C4A89307e66521e081CFDF0", + "links": { + "Github": "https://github.com/GenesisVision", + "Homepage": "https://genesis.vision" + }, + "marketcap_usd": 15130370.520677315, + "name": "Genesis Vision", + "network": "eth", + "shortcut": "GVT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:GXC": { + "address": "0x58ca3065C0F24C7c96Aee8d6056b5B5deCf9c2f8", + "links": { + "Homepage": "https://genevieveco.com" + }, + "marketcap_usd": 0, + "name": "GXC", + "network": "eth", + "shortcut": "GXC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:GXVC": { + "address": "0x22F0AF8D78851b72EE799e05F54A77001586B18A", + "links": { + "Github": "https://github.com/GxC17Genevieve/GXVC", + "Homepage": "https://genevieveco.io" + }, + "marketcap_usd": 0, + "name": "Genevieve VC", + "network": "eth", + "shortcut": "GXVC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:GZB": { + "address": "0x9DAe8b7F6D37ea8e5d32C6c3E856a6d8a1d3B363", + "links": { + "Github": "https://github.com/Gigzi", + "Homepage": "https://gigzi.com" + }, + "marketcap_usd": 0, + "name": "GigziBlack", + "network": "eth", + "shortcut": "GZB", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:GZE": { + "address": "0x8C65e992297d5f092A756dEf24F4781a280198Ff", + "links": { + "Homepage": "https://gazecoin.io" + }, + "marketcap_usd": 0, + "name": "GazeCoin", + "network": "eth", + "shortcut": "GZE", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:GZR": { + "address": "0xE638dc39b6aDBEE8526b5C22380b4b45dAf46d8e", + "links": { + "Github": "https://github.com/GizerInc/Gizer", + "Homepage": "https://gizer.io" + }, + "marketcap_usd": 0, + "name": "Gizer", + "network": "eth", + "shortcut": "GZR", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:HAND": { + "address": "0x48C1B2f3eFA85fbafb2ab951bF4Ba860a08cdBB7", + "links": { + "Homepage": "https://www.showhand.io" + }, + "marketcap_usd": 111901.15807910309, + "name": "ShowHand", + "network": "eth", + "shortcut": "HAND", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:HAPPY": { + "address": "0x5A567e28dbFa2bBD3ef13C0a01be114745349657", + "links": { + "Homepage": "https://btr.works" + }, + "marketcap_usd": 0, + "name": "Happiness", + "network": "eth", + "shortcut": "HAPPY", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:HAT": { + "address": "0x9002D4485b7594e3E850F0a206713B305113f69e", + "links": { + "Homepage": "https://www.hawala.today/" + }, + "marketcap_usd": 0, + "name": "Hawala Today", + "network": "eth", + "shortcut": "HAT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:HB": { + "address": "0xE2492F8D2A2618d8709Ca99b1d8d75713Bd84089", + "links": { + "Homepage": "https://heartbout.com" + }, + "marketcap_usd": 310364.91419261205, + "name": "HeartBout", + "network": "eth", + "shortcut": "HB", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:HBT": { + "address": "0xDd6C68bb32462e01705011a4e2Ad1a60740f217F", + "links": { + "Homepage": "https://www.hubii.network" + }, + "marketcap_usd": 1957932.253682411, + "name": "Hubii Network", + "network": "eth", + "shortcut": "HBT", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:HBZ": { + "address": "0xE34e1944E776f39B9252790a0527eBDa647aE668", + "links": { + "Homepage": "https://www.hbzcoin.com/#" + }, + "marketcap_usd": 366394.8448885944, + "name": "HBZ coin", + "network": "eth", + "shortcut": "HBZ", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:HDG": { + "address": "0xfFe8196bc259E8dEDc544d935786Aa4709eC3E64", + "links": { + "Homepage": "https://www.hedge-crypto.com" + }, + "marketcap_usd": 0, + "name": "Hedge Crypto", + "network": "eth", + "shortcut": "HDG", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:HER": { + "address": "0x491C9A23DB85623EEd455a8EfDd6AbA9b911C5dF", + "links": { + "Homepage": "https://heronode.io" + }, + "marketcap_usd": 382528.6933201237, + "name": "HeroNode", + "network": "eth", + "shortcut": "HER", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:HGT": { + "address": "0xba2184520A1cC49a6159c57e61E1844E085615B6", + "links": { + "Github": "https://github.com/myHelloGold/Foundation", + "Homepage": "https://www.hellogold.org" + }, + "marketcap_usd": 450769.79276849993, + "name": "HGT", + "network": "eth", + "shortcut": "HGT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:HIBT": { + "address": "0x9bb1Db1445b83213a56d90d331894b3f26218e4e", + "links": { + "Homepage": "https://www.hibtc.com/" + }, + "marketcap_usd": 0, + "name": "HiBTC Token", + "network": "eth", + "shortcut": "HIBT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:HIG": { + "address": "0xa9240fBCAC1F0b9A6aDfB04a53c8E3B0cC1D1444", + "links": { + "Github": "https://github.com/ethereumhigh/Ethereum-High", + "Homepage": "https://www.ethereumhigh.org/" + }, + "marketcap_usd": 0, + "name": "ethereumhigh", + "network": "eth", + "shortcut": "HIG", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:HKG": { + "address": "0x14F37B574242D366558dB61f3335289a5035c506", + "links": { + "Homepage": "http://www.ether.camp" + }, + "marketcap_usd": 0, + "name": "HKG", + "network": "eth", + "shortcut": "HKG", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:HKN": { + "address": "0x9e6B2B11542f2BC52f3029077acE37E8fD838D7F", + "links": { + "Homepage": "https://hacken.io" + }, + "marketcap_usd": 1068277.400407102, + "name": "Hacken", + "network": "eth", + "shortcut": "HKN", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:HKY": { + "address": "0x88aC94D5d175130347Fc95E109d77AC09dbF5ab7", + "links": { + "Github": "https://github.com/HickyToken/hickycontracts", + "Homepage": "https://hicky.io" + }, + "marketcap_usd": 0, + "name": "Hicky", + "network": "eth", + "shortcut": "HKY", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:HLX": { + "address": "0x66eb65D7Ab8e9567ba0fa6E37c305956c5341574", + "links": { + "Homepage": "https://helex.world" + }, + "marketcap_usd": 0, + "name": "Helex", + "network": "eth", + "shortcut": "HLX", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:HMQ": { + "address": "0xcbCC0F036ED4788F63FC0fEE32873d6A7487b908", + "links": { + "Homepage": "https://humaniq.co" + }, + "marketcap_usd": 1369339.139588483, + "name": "HMQ", + "network": "eth", + "shortcut": "HMQ", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:HODL": { + "address": "0xb45d7Bc4cEBcAB98aD09BABDF8C818B2292B672c", + "links": { + "Homepage": "https://github.com/arachnid/hodlcoin" + }, + "marketcap_usd": 0, + "name": "HODLCoin", + "network": "eth", + "shortcut": "HODL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:HORSE": { + "address": "0x5B0751713b2527d7f002c0c4e2a37e1219610A6B", + "links": { + "Github": "https://github.com/ethorse", + "Homepage": "https://ethorse.com" + }, + "marketcap_usd": 371344.78017416364, + "name": "HORSE", + "network": "eth", + "shortcut": "HORSE", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:HOT (Holo)": { + "address": "0x6c6EE5e31d828De241282B9606C8e98Ea48526E2", + "links": { + "Github": "https://github.com/Holo-Host", + "Homepage": "https://holo.host/" + }, + "marketcap_usd": 173061191.74925312, + "name": "Holo Token", + "network": "eth", + "shortcut": "HOT (Holo)", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:HOT (Hydro)": { + "address": "0x9AF839687F6C94542ac5ece2e317dAAE355493A1", + "links": { + "Homepage": "https://thehydrofoundation.com/" + }, + "marketcap_usd": 1783360.92582648, + "name": "Hydro Protocol", + "network": "eth", + "shortcut": "HOT (Hydro)", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:HST": { + "address": "0x554C20B7c486beeE439277b4540A434566dC4C02", + "links": { + "Homepage": "https://horizonstate.com" + }, + "marketcap_usd": 1414552.4060039124, + "name": "HST", + "network": "eth", + "shortcut": "HST", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:HT": { + "address": "0x6f259637dcD74C767781E37Bc6133cd6A68aa161", + "links": { + "Homepage": "https://www.hbg.com" + }, + "marketcap_usd": 46680814.67906183, + "name": "Huobi Token", + "network": "eth", + "shortcut": "HT", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:HVN": { + "address": "0xC0Eb85285d83217CD7c891702bcbC0FC401E2D9D", + "links": { + "Github": "https://github.com/HiveProjectLTD", + "Homepage": "https://www.hiveterminal.com" + }, + "marketcap_usd": 1165482.5284496143, + "name": "Hiveterminal Token", + "network": "eth", + "shortcut": "HVN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:HYDRO": { + "address": "0xEBBdf302c940c6bfd49C6b165f457fdb324649bc", + "links": { + "Github": "https://github.com/hydrogen-dev", + "Homepage": "https://www.hydrogenplatform.com/hydro" + }, + "marketcap_usd": 6165616.853775192, + "name": "Hydro", + "network": "eth", + "shortcut": "HYDRO", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:IAD": { + "address": "0xC1E2097d788d33701BA3Cc2773BF67155ec93FC4", + "links": { + "Github": "https://github.com/IADOWR", + "Homepage": "https://www.iadowrcoin.com" + }, + "marketcap_usd": 0, + "name": "IADOWR Coin", + "network": "eth", + "shortcut": "IAD", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:ICE": { + "address": "0x5a84969bb663fb64F6d015DcF9F622Aedc796750", + "links": { + "Homepage": "https://idice.io" + }, + "marketcap_usd": 0, + "name": "ICE", + "network": "eth", + "shortcut": "ICE", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:ICN": { + "address": "0x888666CA69E0f178DED6D75b5726Cee99A87D698", + "links": { + "Homepage": "https://www.iconomi.net" + }, + "marketcap_usd": 8658746.915638594, + "name": "ICONOMI", + "network": "eth", + "shortcut": "ICN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:ICO": { + "address": "0xa33e729bf4fdeb868B534e1f20523463D9C46bEe", + "links": { + "Homepage": "http://icocoin.org" + }, + "marketcap_usd": 0, + "name": "ICO", + "network": "eth", + "shortcut": "ICO", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:ICOS": { + "address": "0x014B50466590340D41307Cc54DCee990c8D58aa8", + "links": { + "Homepage": "https://icos.icobox.io" + }, + "marketcap_usd": 0, + "name": "ICOS", + "network": "eth", + "shortcut": "ICOS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:ICX": { + "address": "0xb5A5F22694352C15B00323844aD545ABb2B11028", + "links": { + "Homepage": "https://www.icon.foundation" + }, + "marketcap_usd": 0, + "name": "ICON", + "network": "eth", + "shortcut": "ICX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:IDEA": { + "address": "0x814CAfd4782d2e728170FDA68257983F03321c58", + "links": { + "Homepage": "http://www.ideatoken.io/" + }, + "marketcap_usd": 0, + "name": "IDEA Token", + "network": "eth", + "shortcut": "IDEA", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:IDH": { + "address": "0x5136C98A80811C3f46bDda8B5c4555CFd9f812F0", + "links": { + "Homepage": "https://indahash.com" + }, + "marketcap_usd": 985654.65731452, + "name": "indaHash", + "network": "eth", + "shortcut": "IDH", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:IETH": { + "address": "0x859a9C0b44cb7066D956a958B0b82e54C9e44b4B", + "links": { + "Homepage": "http://iethereum.trade" + }, + "marketcap_usd": 630138.7487229588, + "name": "iEthereum", + "network": "eth", + "shortcut": "IETH", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:IFT": { + "address": "0x7654915A1b82D6D2D0AFc37c52Af556eA8983c7E", + "links": { + "Homepage": "https://investfeed.com" + }, + "marketcap_usd": 311296.3127728498, + "name": "InvestFeed", + "network": "eth", + "shortcut": "IFT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:IG": { + "address": "0x8a88f04e0c905054D2F33b26BB3A46D7091A039A", + "links": { + "Homepage": "http://igtoken.net" + }, + "marketcap_usd": 40735.57406210995, + "name": "IGToken", + "network": "eth", + "shortcut": "IG", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:IHT": { + "address": "0xEda8B016efA8b1161208Cf041cD86972eeE0F31E", + "links": { + "Homepage": "https://ihtcoin.com" + }, + "marketcap_usd": 6452211.56033957, + "name": "I HOUSE TOKEN", + "network": "eth", + "shortcut": "IHT", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:IIC": { + "address": "0x16662F73dF3e79e54c6c5938b4313f92C524C120", + "links": { + "Homepage": "https://ibiscoin.co" + }, + "marketcap_usd": 0, + "name": "IIC", + "network": "eth", + "shortcut": "IIC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:IKB": { + "address": "0x88AE96845e157558ef59e9Ff90E766E22E480390", + "links": { + "Github": "https://github.com/mitchellfchan/IKB", + "Homepage": "http://www.mitchellfchan.com" + }, + "marketcap_usd": 0, + "name": "IKB", + "network": "eth", + "shortcut": "IKB", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:IMC": { + "address": "0xe3831c5A982B279A198456D577cfb90424cb6340", + "links": { + "Homepage": "http://immunecoin.info" + }, + "marketcap_usd": 0, + "name": "Immune Coin", + "network": "eth", + "shortcut": "IMC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:IND": { + "address": "0xf8e386EDa857484f5a12e4B5DAa9984E06E73705", + "links": { + "Homepage": "https://indorse.io" + }, + "marketcap_usd": 398631.98342640564, + "name": "Indorse", + "network": "eth", + "shortcut": "IND", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:ING": { + "address": "0x24dDFf6D8B8a42d835af3b440De91f3386554Aa4", + "links": { + "Homepage": "https://iungo.network" + }, + "marketcap_usd": 177014.19487399998, + "name": "Iungo", + "network": "eth", + "shortcut": "ING", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:INS": { + "address": "0x5B2e4a700dfBc560061e957edec8F6EeEb74a320", + "links": { + "Homepage": "https://ins.world" + }, + "marketcap_usd": 8730100.0756775, + "name": "INS", + "network": "eth", + "shortcut": "INS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:INSTAR": { + "address": "0xc72fe8e3Dd5BeF0F9f31f259399F301272eF2a2D", + "links": { + "Homepage": "https://insights.network" + }, + "marketcap_usd": 1035483.0993694412, + "name": "Insights Network", + "network": "eth", + "shortcut": "INSTAR", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:INT": { + "address": "0x0b76544F6C413a555F309Bf76260d1E02377c02A", + "links": { + "Homepage": "https://intchain.io" + }, + "marketcap_usd": 4552395.815827534, + "name": "Internet Node Token", + "network": "eth", + "shortcut": "INT", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:INV": { + "address": "0xEcE83617Db208Ad255Ad4f45Daf81E25137535bb", + "links": { + "Homepage": "https://www.invacio.com" + }, + "marketcap_usd": 1230654.5943559888, + "name": "Invacio", + "network": "eth", + "shortcut": "INV", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:INXT": { + "address": "0xa8006C4ca56F24d6836727D106349320dB7fEF82", + "links": { + "Github": "https://github.com/Internxt/", + "Homepage": "https://internxt.com/" + }, + "marketcap_usd": 547245.9652493921, + "name": "Internxt", + "network": "eth", + "shortcut": "INXT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:IOST": { + "address": "0xFA1a856Cfa3409CFa145Fa4e20Eb270dF3EB21ab", + "links": { + "Homepage": "https://iost.io/" + }, + "marketcap_usd": 72804789.40542851, + "name": "IOSToken", + "network": "eth", + "shortcut": "IOST", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:IOTX": { + "address": "0x6fB3e0A217407EFFf7Ca062D46c26E5d60a14d69", + "links": { + "Github": "https://github.com/iotexproject/iotex-core", + "Homepage": "http://iotex.io/" + }, + "marketcap_usd": 17078792.766846806, + "name": "IoTeX Network", + "network": "eth", + "shortcut": "IOTX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:IPL": { + "address": "0x64CdF819d3E75Ac8eC217B3496d7cE167Be42e80", + "links": { + "Github": "https://github.com/InsurePal", + "Homepage": "https://insurepal.io/" + }, + "marketcap_usd": 897193.7822278499, + "name": "InsurePal token", + "network": "eth", + "shortcut": "IPL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:IPSX": { + "address": "0x001F0aA5dA15585e5b2305DbaB2bac425ea71007", + "links": { + "Homepage": "https://ip.sx" + }, + "marketcap_usd": 563792.837275282, + "name": "IPSX", + "network": "eth", + "shortcut": "IPSX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:IQN": { + "address": "0x0DB8D8b76BC361bAcbB72E2C491E06085A97Ab31", + "links": { + "Github": "https://github.com/iqeon", + "Homepage": "https://iqeon.io/" + }, + "marketcap_usd": 634614.6664803243, + "name": "IQeon", + "network": "eth", + "shortcut": "IQN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:IST34": { + "address": "0x0cF713b11C9b986EC40D65bD4F7fbd50F6ff2d64", + "links": { + "Github": "https://github.com/IST34Token", + "Homepage": "https://hiperteknoloji.org" + }, + "marketcap_usd": 0, + "name": "IST34 Token", + "network": "eth", + "shortcut": "IST34", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:ITC": { + "address": "0x5E6b6d9aBAd9093fdc861Ea1600eBa1b355Cd940", + "links": { + "Github": "https://github.com/IoTChainCode", + "Homepage": "https://iotchain.io/" + }, + "marketcap_usd": 6809090.211150714, + "name": "IoT Chain", + "network": "eth", + "shortcut": "ITC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:ITT": { + "address": "0x0aeF06DcCCC531e581f0440059E6FfCC206039EE", + "links": { + "Github": "https://github.com/IntelligentTrading", + "Homepage": "http://intelligenttrading.org" + }, + "marketcap_usd": 104614.50476370726, + "name": "ITT Token", + "network": "eth", + "shortcut": "ITT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:IVY": { + "address": "0xA4eA687A2A7F29cF2dc66B39c68e4411C0D00C49", + "links": { + "Homepage": "https://www.ivykoin.com" + }, + "marketcap_usd": 2537047.525192771, + "name": "IvyKoin Public Network Tokens", + "network": "eth", + "shortcut": "IVY", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:IXT": { + "address": "0xfcA47962D45ADFdfd1Ab2D972315dB4ce7CCf094", + "links": { + "Homepage": "https://www.insurex.co" + }, + "marketcap_usd": 1282137.7439754591, + "name": "InsureX", + "network": "eth", + "shortcut": "IXT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:IoT": { + "address": "0xC34B21f6F8e51cC965c2393B3ccFa3b82BEb2403", + "links": { + "Homepage": "http://www.bitcoin-biz.net" + }, + "marketcap_usd": 0, + "name": "IoT\u30b3\u30a4\u30f3", + "network": "eth", + "shortcut": "IoT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:J8T": { + "address": "0x0D262e5dC4A06a0F1c90cE79C7a60C09DfC884E4", + "links": { + "Github": "https://github.com/jet8", + "Homepage": "https://jet8.io" + }, + "marketcap_usd": 461688.01741140924, + "name": "J8T Token", + "network": "eth", + "shortcut": "J8T", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:JC": { + "address": "0xE2D82Dc7dA0E6f882E96846451F4faBcc8f90528", + "links": { + "Homepage": "https://jesuscoin.network" + }, + "marketcap_usd": 73726.71192662609, + "name": "Jesus Coin", + "network": "eth", + "shortcut": "JC", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:JET": { + "address": "0x8727c112C712c4a03371AC87a74dD6aB104Af768", + "links": { + "Homepage": "https://jetcoin.io" + }, + "marketcap_usd": 164580.4289335173, + "name": "JET", + "network": "eth", + "shortcut": "JET", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:JNT": { + "address": "0xa5Fd1A791C4dfcaacC963D4F73c6Ae5824149eA7", + "links": { + "Github": "https://github.com/jibrelnetwork", + "Homepage": "https://jibrel.network" + }, + "marketcap_usd": 5532992.162325281, + "name": "JNT", + "network": "eth", + "shortcut": "JNT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:JOT": { + "address": "0xdb455c71C1bC2de4e80cA451184041Ef32054001", + "links": { + "Homepage": "https://jury.online" + }, + "marketcap_usd": 59391.883295741885, + "name": "Jury.Online Token", + "network": "eth", + "shortcut": "JOT", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:JOY": { + "address": "0xDDe12a12A6f67156e0DA672be05c374e1B0a3e57", + "links": { + "Homepage": "https://joyso.io/" + }, + "marketcap_usd": 0, + "name": "JOYSO", + "network": "eth", + "shortcut": "JOY", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:KAN": { + "address": "0x1410434b0346f5bE678d0FB554E5c7ab620f8f4a", + "links": { + "Homepage": "http://www.kan.land" + }, + "marketcap_usd": 4217103.205016183, + "name": "BitKan", + "network": "eth", + "shortcut": "KAN", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:KC": { + "address": "0x0D6DD9f68d24EC1d5fE2174f3EC8DAB52B52BaF5", + "links": { + "Homepage": "https://www.kmcc.io" + }, + "marketcap_usd": 0, + "name": "KMCC", + "network": "eth", + "shortcut": "KC", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:KICK": { + "address": "0x27695E09149AdC738A978e9A678F99E4c39e9eb9", + "links": { + "Github": "https://github.com/kickico", + "Homepage": "https://www.kickico.com" + }, + "marketcap_usd": 2963841.7019184497, + "name": "KICK", + "network": "eth", + "shortcut": "KICK", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:KIN": { + "address": "0x818Fc6C2Ec5986bc6E2CBf00939d90556aB12ce5", + "links": { + "Github": "https://github.com/kikinteractive/kin-token", + "Homepage": "https://kin.kik.com" + }, + "marketcap_usd": 20029135.737566434, + "name": "Kin Foundation", + "network": "eth", + "shortcut": "KIN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:KIND": { + "address": "0x4618519de4C304F3444ffa7f812dddC2971cc688", + "links": { + "Homepage": "https://kindads.io" + }, + "marketcap_usd": 673059.5108085156, + "name": "Kind Ads Token", + "network": "eth", + "shortcut": "KIND", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:KNC": { + "address": "0xdd974D5C2e2928deA5F71b9825b8b646686BD200", + "links": { + "Github": "https://github.com/KyberNetwork", + "Homepage": "https://kyber.network" + }, + "marketcap_usd": 18269440.732441016, + "name": "Kyber Network", + "network": "eth", + "shortcut": "KNC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:KNDC": { + "address": "0x8E5610ab5E39d26828167640EA29823fe1dD5843", + "links": { + "Homepage": "https://kanadecoin.com" + }, + "marketcap_usd": 88489.49038136305, + "name": "KanadeCoin", + "network": "eth", + "shortcut": "KNDC", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:KNT": { + "address": "0xfF5c25D2F40B47C4a37f989DE933E26562Ef0Ac0", + "links": { + "Homepage": "https://kora.network" + }, + "marketcap_usd": 216858.9624723, + "name": "Kora Network Token", + "network": "eth", + "shortcut": "KNT", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:KPR": { + "address": "0xb5C33F965C8899D255c34CDD2A3efA8AbCbB3DeA", + "links": { + "Github": "https://github.com/KPRToken/KPR-code-for-ICO", + "Homepage": "https://www.kprms.com/" + }, + "marketcap_usd": 0, + "name": "KPRCoin", + "network": "eth", + "shortcut": "KPR", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:KRL": { + "address": "0x464eBE77c293E473B48cFe96dDCf88fcF7bFDAC0", + "links": { + "Github": "https://github.com/Cryptense/", + "Homepage": "https://kryll.io/" + }, + "marketcap_usd": 473589.05703729787, + "name": "Kryll", + "network": "eth", + "shortcut": "KRL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:KUE": { + "address": "0xdf1338FbAfe7aF1789151627B886781ba556eF9a", + "links": { + "Homepage": "https://ico.kuende.com" + }, + "marketcap_usd": 0, + "name": "Kuende Token", + "network": "eth", + "shortcut": "KUE", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:KWATT": { + "address": "0x241bA672574A78a3A604CDd0a94429A73a84a324", + "links": { + "Homepage": "https://4new.io" + }, + "marketcap_usd": 103523.70728662336, + "name": "4NEW", + "network": "eth", + "shortcut": "KWATT", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:KZN": { + "address": "0x9541FD8B9b5FA97381783783CeBF2F5fA793C262", + "links": { + "Homepage": "http://kaizencoin.io" + }, + "marketcap_usd": 0, + "name": "KaizenCoin", + "network": "eth", + "shortcut": "KZN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:LA": { + "address": "0xE50365f5D679CB98a1dd62D6F6e58e59321BcdDf", + "links": { + "Github": "https://github.com/latoken", + "Homepage": "https://latoken.com/" + }, + "marketcap_usd": 6040350.978454925, + "name": "LATOKEN", + "network": "eth", + "shortcut": "LA", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:LALA": { + "address": "0xfD107B473AB90e8Fbd89872144a3DC92C40Fa8C9", + "links": { + "Homepage": "https://lalaworld.io/" + }, + "marketcap_usd": 209134.18995898572, + "name": "LALA World Token", + "network": "eth", + "shortcut": "LALA", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:LATX": { + "address": "0x2f85E502a988AF76f7ee6D83b7db8d6c0A823bf9", + "links": { + "Homepage": "https://latium.org" + }, + "marketcap_usd": 1051893.2344236625, + "name": "LatiumX", + "network": "eth", + "shortcut": "LATX", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:LBA": { + "address": "0xfe5F141Bf94fE84bC28deD0AB966c16B17490657", + "links": { + "Homepage": "https://www.mycred.io" + }, + "marketcap_usd": 4181871.3432163135, + "name": "Cred", + "network": "eth", + "shortcut": "LBA", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:LCS": { + "address": "0xAA19961b6B858D9F18a115f25aa1D98ABc1fdBA8", + "links": { + "Homepage": "https://www.localcoinswap.com" + }, + "marketcap_usd": 1161828.256897553, + "name": "LocalCoinSwap", + "network": "eth", + "shortcut": "LCS", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:LDC": { + "address": "0x5102791cA02FC3595398400BFE0e33d7B6C82267", + "links": { + "Homepage": "https://www.leadcoin.network/" + }, + "marketcap_usd": 115645.94678485894, + "name": "LEADCOIN", + "network": "eth", + "shortcut": "LDC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:LEND": { + "address": "0x80fB784B7eD66730e8b1DBd9820aFD29931aab03", + "links": { + "Github": "https://github.com/ETHLend", + "Homepage": "https://ethlend.io/" + }, + "marketcap_usd": 8056638.072769597, + "name": "EHTLend", + "network": "eth", + "shortcut": "LEND", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:LEV": { + "address": "0x0F4CA92660Efad97a9a70CB0fe969c755439772C", + "links": { + "Homepage": "https://www.leverj.io" + }, + "marketcap_usd": 1275009.143533616, + "name": "Leverj", + "network": "eth", + "shortcut": "LEV", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:LFR": { + "address": "0xc798cd1c49db0E297312E4c682752668CE1dB2AD", + "links": { + "Homepage": "https://www.liferun.cc" + }, + "marketcap_usd": 0, + "name": "LifeRun Coin", + "network": "eth", + "shortcut": "LFR", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:LG": { + "address": "0xc520F3Ac303a107D8F4B08b326B6ea66A4f961cd", + "links": { + "Homepage": "https://android.myapp.com/myapp/detail.htm?apkName=com.inspiration.lemoCard" + }, + "marketcap_usd": 0, + "name": "LG", + "network": "eth", + "shortcut": "LG", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:LGO": { + "address": "0x123aB195DD38B1b40510d467a6a359b201af056f", + "links": { + "Homepage": "https://legolas.exchange/" + }, + "marketcap_usd": 4402831.158268302, + "name": "LGO", + "network": "eth", + "shortcut": "LGO", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:LGR": { + "address": "0x2eb86e8fC520E0F6Bb5D9Af08F924fe70558Ab89", + "links": { + "Homepage": "https://getlogarithm.com" + }, + "marketcap_usd": 0, + "name": "Logarithm", + "network": "eth", + "shortcut": "LGR", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:LIBER": { + "address": "0xE6DfBF1FAcA95036B8E76e1Fb28933D025B76Cc0", + "links": { + "Homepage": "https://www.libereum.io" + }, + "marketcap_usd": 0, + "name": "Libereum", + "network": "eth", + "shortcut": "LIBER", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:LIF": { + "address": "0xEB9951021698B42e4399f9cBb6267Aa35F82D59D", + "links": { + "Github": "https://github.com/windingtree", + "Homepage": "https://windingtree.com/" + }, + "marketcap_usd": 2772510.9103156617, + "name": "LIF", + "network": "eth", + "shortcut": "LIF", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:LIFE": { + "address": "0xfF18DBc487b4c2E3222d115952bABfDa8BA52F5F", + "links": { + "Homepage": "http://www.lifelabs.io" + }, + "marketcap_usd": 914038.0693476206, + "name": "LIFE", + "network": "eth", + "shortcut": "LIFE", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:LIKE": { + "address": "0x02F61Fd266DA6E8B102D4121f5CE7b992640CF98", + "links": { + "Github": "https://github.com/likecoin", + "Homepage": "https://like.co" + }, + "marketcap_usd": 774896.81342193, + "name": "LikeCoin", + "network": "eth", + "shortcut": "LIKE", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:LINK (Chainlink)": { + "address": "0x514910771AF9Ca656af840dff83E8264EcF986CA", + "links": { + "Homepage": "https://link.smartcontract.com" + }, + "marketcap_usd": 138809272.89565, + "name": "Chainlink", + "network": "eth", + "shortcut": "LINK (Chainlink)", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:LIVE": { + "address": "0x24A77c1F17C547105E14813e517be06b0040aa76", + "links": { + "Homepage": "https://livestars.io" + }, + "marketcap_usd": 0, + "name": "LIVE Token", + "network": "eth", + "shortcut": "LIVE", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:LKY": { + "address": "0x49bD2DA75b1F7AF1E4dFd6b1125FEcDe59dBec58", + "links": { + "Homepage": "https://www.linkey.info" + }, + "marketcap_usd": 39063630.20505, + "name": "Linkey", + "network": "eth", + "shortcut": "LKY", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:LML": { + "address": "0x25B6325f5BB1c1E03cfbC3e53F470E1F1ca022E3", + "links": { + "Github": "https://github.com/GNYIO", + "Homepage": "https://www.gny.io/" + }, + "marketcap_usd": 10507084.062048, + "name": "LML", + "network": "eth", + "shortcut": "LML", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:LND": { + "address": "0x0947b0e6D821378805c9598291385CE7c791A6B2", + "links": { + "Github": "https://github.com/lendingblock", + "Homepage": "https://lendingblock.com" + }, + "marketcap_usd": 2764752.5724721756, + "name": "Lendingblock", + "network": "eth", + "shortcut": "LND", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:LOC": { + "address": "0x5e3346444010135322268a4630d2ED5F8D09446c", + "links": { + "Homepage": "https://LockChain.co" + }, + "marketcap_usd": 14152222.392254235, + "name": "LockChain", + "network": "eth", + "shortcut": "LOC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:LOCI": { + "address": "0x9c23D67AEA7B95D80942e3836BCDF7E708A747C2", + "links": { + "Github": "http://github.com/locipro/loci-coin-sale", + "Homepage": "https://locipro.com" + }, + "marketcap_usd": 213532.10109130424, + "name": "LOCIcoin", + "network": "eth", + "shortcut": "LOCI", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:LOCUS": { + "address": "0xC64500DD7B0f1794807e67802F8Abbf5F8Ffb054", + "links": { + "Homepage": "https://www.locuschain.com" + }, + "marketcap_usd": 0, + "name": "Locus Chain", + "network": "eth", + "shortcut": "LOCUS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:LOK": { + "address": "0x21aE23B882A340A22282162086bC98D3E2B73018", + "links": { + "Homepage": "https://lookrev.com" + }, + "marketcap_usd": 0, + "name": "LOK", + "network": "eth", + "shortcut": "LOK", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:LOOK": { + "address": "0x253C7dd074f4BaCb305387F922225A4f737C08bd", + "links": { + "Homepage": "https://lookrev.com" + }, + "marketcap_usd": 0, + "name": "LookRev", + "network": "eth", + "shortcut": "LOOK", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:LOOM": { + "address": "0xA4e8C3Ec456107eA67d3075bF9e3DF3A75823DB0", + "links": { + "Github": "github.com/loomnetwork/", + "Homepage": "https://loomx.io" + }, + "marketcap_usd": 26122666.018161274, + "name": "LOOM", + "network": "eth", + "shortcut": "LOOM", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:LPT": { + "address": "0x58b6A8A3302369DAEc383334672404Ee733aB239", + "links": { + "Github": "https://github.com/livepeer", + "Homepage": "https://livepeer.org/" + }, + "marketcap_usd": 0, + "name": "Livepeer Token", + "network": "eth", + "shortcut": "LPT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:LRC": { + "address": "0xEF68e7C694F40c8202821eDF525dE3782458639f", + "links": { + "Homepage": "https://loopring.org" + }, + "marketcap_usd": 43241397.77957, + "name": "LRC", + "network": "eth", + "shortcut": "LRC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:LUC": { + "address": "0x5dbe296F97B23C4A6AA6183D73e574D02bA5c719", + "links": { + "Github": "https://github.com/Play2Live/blockchain", + "Homepage": "https://play2live.io" + }, + "marketcap_usd": 135510.40863941403, + "name": "LUCToken", + "network": "eth", + "shortcut": "LUC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:LUCK": { + "address": "0xFB12e3CcA983B9f59D90912Fd17F8D745A8B2953", + "links": { + "Homepage": "http://www.luckytoken.info" + }, + "marketcap_usd": 0, + "name": "LUCK", + "network": "eth", + "shortcut": "LUCK", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:LUM": { + "address": "0xA89b5934863447f6E4Fc53B315a93e873bdA69a3", + "links": { + "Homepage": "https://www.luminocoin.com" + }, + "marketcap_usd": 0, + "name": "Lumino Coin", + "network": "eth", + "shortcut": "LUM", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:LUN": { + "address": "0xfa05A73FfE78ef8f1a739473e462c54bae6567D9", + "links": { + "Github": "https://github.com/lunyr", + "Homepage": "https://lunyr.com" + }, + "marketcap_usd": 3730501.7105859597, + "name": "Lunyr", + "network": "eth", + "shortcut": "LUN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:LYM": { + "address": "0x57aD67aCf9bF015E4820Fbd66EA1A21BED8852eC", + "links": { + "Homepage": "https://lympo.io" + }, + "marketcap_usd": 4599817.205894216, + "name": "Lympo", + "network": "eth", + "shortcut": "LYM", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:LYS": { + "address": "0xdD41fBd1Ae95C5D9B198174A28e04Be6b3d1aa27", + "links": { + "Github": "https://github.com/LIGHTYEARS-LYS/LIGHTYEARS-Token", + "Homepage": "https://lightyearstoken.com" + }, + "marketcap_usd": 0, + "name": "Lightyears", + "network": "eth", + "shortcut": "LYS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:M-ETH": { + "address": "0x3f4B726668da46f5e0E75aA5D478ACEc9f38210F", + "links": { + "Homepage": "http://www.mostexclusive.com" + }, + "marketcap_usd": 0, + "name": "M-ETH", + "network": "eth", + "shortcut": "M-ETH", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MAD": { + "address": "0x5B09A0371C1DA44A8E24D36Bf5DEb1141a84d875", + "links": { + "Homepage": "https://madnetwork.io" + }, + "marketcap_usd": 0, + "name": "MAD", + "network": "eth", + "shortcut": "MAD", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MAN": { + "address": "0xe25bCec5D3801cE3a794079BF94adF1B8cCD802D", + "links": { + "Github": "https://github.com/MatrixAINetwork", + "Homepage": "https://www.matrix.io" + }, + "marketcap_usd": 10086397.818735, + "name": "MAN", + "network": "eth", + "shortcut": "MAN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MANA": { + "address": "0x0F5D2fB29fb7d3CFeE444a200298f468908cC942", + "links": { + "Github": "https://github.com/decentraland", + "Homepage": "https://decentraland.org" + }, + "marketcap_usd": 35393616.303868696, + "name": "Decentraland MANA", + "network": "eth", + "shortcut": "MANA", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MART": { + "address": "0xfdcc07Ab60660de533b5Ad26e1457b565a9D59Bd", + "links": { + "Homepage": "https://martcoin.io" + }, + "marketcap_usd": 0, + "name": "Martcoin", + "network": "eth", + "shortcut": "MART", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MBRS": { + "address": "0x386467F1f3ddbE832448650418311a479EECFC57", + "links": { + "Github": "https://github.com/theembermine", + "Homepage": "https://embermine.com/" + }, + "marketcap_usd": 36918.354711550004, + "name": "Embers", + "network": "eth", + "shortcut": "MBRS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MCAP": { + "address": "0x93E682107d1E9defB0b5ee701C71707a4B2E46Bc", + "links": { + "Homepage": "https://bitcoingrowthfund.com/mcap" + }, + "marketcap_usd": 50250.124077760396, + "name": "MCAP", + "network": "eth", + "shortcut": "MCAP", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MCI": { + "address": "0x138A8752093F4f9a79AaeDF48d4B9248fab93c9C", + "links": { + "Github": "https://github.com/musiconomi/", + "Homepage": "https://musiconomi.com/" + }, + "marketcap_usd": 37823.37184971599, + "name": "Musiconomi", + "network": "eth", + "shortcut": "MCI", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MCO": { + "address": "0xB63B606Ac810a52cCa15e44bB630fd42D8d1d83d", + "links": { + "Homepage": "https://mona.co" + }, + "marketcap_usd": 31215940.899176612, + "name": "MCO", + "network": "eth", + "shortcut": "MCO", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MDA": { + "address": "0x51DB5Ad35C671a87207d88fC11d593AC0C8415bd", + "links": { + "Homepage": "https://moeda.in" + }, + "marketcap_usd": 14154045.504548501, + "name": "MDA", + "network": "eth", + "shortcut": "MDA", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MDS": { + "address": "0x66186008C1050627F979d464eABb258860563dbE", + "links": { + "Homepage": "http://www.medishares.org" + }, + "marketcap_usd": 7066169.834097559, + "name": "MediShares", + "network": "eth", + "shortcut": "MDS", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MDT": { + "address": "0x814e0908b12A99FeCf5BC101bB5d0b8B5cDf7d26", + "links": { + "Homepage": "https://www.mdt.co" + }, + "marketcap_usd": 1582848.033404688, + "name": "Measurable Data Token", + "network": "eth", + "shortcut": "MDT", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MEDX": { + "address": "0xfd1e80508F243E64CE234eA88A5Fd2827c71D4b7", + "links": { + "Homepage": "https://medibloc.org" + }, + "marketcap_usd": 9259514.529259738, + "name": "MediBloc [ERC20]", + "network": "eth", + "shortcut": "MEDX", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MEST": { + "address": "0x5B8D43FfdE4a2982B9A5387cDF21D54Ead64Ac8d", + "links": { + "Github": "https://github.com/monacoestate", + "Homepage": "https://monacoestate.io/" + }, + "marketcap_usd": 0, + "name": "Monaco Estate", + "network": "eth", + "shortcut": "MEST", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MET": { + "address": "0xa3d58c4E56fedCae3a7c43A725aeE9A71F0ece4e", + "links": { + "Homepage": "https://www.metronome.io" + }, + "marketcap_usd": 5811930.797491133, + "name": "Metronome", + "network": "eth", + "shortcut": "MET", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:METM": { + "address": "0xFEF3884b603C33EF8eD4183346E093A173C94da6", + "links": { + "Homepage": "https://metamorph.pro" + }, + "marketcap_usd": 297973.032300822, + "name": "MetaMorph", + "network": "eth", + "shortcut": "METM", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MFG": { + "address": "0x6710c63432A2De02954fc0f851db07146a6c0312", + "links": { + "Github": "https://github.com/syncfab", + "Homepage": "https://syncfab.com/" + }, + "marketcap_usd": 235855.59331496942, + "name": "SyncFab Smart Manufacturing Blockchain", + "network": "eth", + "shortcut": "MFG", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MFT": { + "address": "0xDF2C7238198Ad8B389666574f2d8bc411A4b7428", + "links": { + "Github": "https://github.com/MainframeHQ", + "Homepage": "https://mainframe.com" + }, + "marketcap_usd": 17625821.664529067, + "name": "Mainframe Token", + "network": "eth", + "shortcut": "MFT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MFTU": { + "address": "0x05D412CE18F24040bB3Fa45CF2C69e506586D8e8", + "links": { + "Homepage": "https://mftu.net" + }, + "marketcap_usd": 17821.817632276, + "name": "Mainstream For The Underground", + "network": "eth", + "shortcut": "MFTU", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MGO": { + "address": "0x40395044Ac3c0C57051906dA938B54BD6557F212", + "links": { + "Homepage": "https://mobilego.io" + }, + "marketcap_usd": 22096838.97096693, + "name": "MobileGo", + "network": "eth", + "shortcut": "MGO", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MIC": { + "address": "0x3A1237D38D0Fb94513f85D61679cAd7F38507242", + "links": { + "Homepage": "https://mindexcoin.com" + }, + "marketcap_usd": 674331.8311950575, + "name": "Mindexcoin", + "network": "eth", + "shortcut": "MIC", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MITX": { + "address": "0x4a527d8fc13C5203AB24BA0944F4Cb14658D1Db6", + "links": { + "Homepage": "https://token.morpheuslabs.io" + }, + "marketcap_usd": 1383750.9436519546, + "name": "Morpheus Infrastructure Token", + "network": "eth", + "shortcut": "MITX", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MKR": { + "address": "0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2", + "links": { + "Github": "https://github.com/makerdao", + "Homepage": "https://makerdao.com" + }, + "marketcap_usd": 295708643.24730027, + "name": "MakerDAO", + "network": "eth", + "shortcut": "MKR", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MKT": { + "address": "0x7939882b54fcf0bCAe6b53dEc39Ad6e806176442", + "links": { + "Github": "https://github.com/mikadohq", + "Homepage": "https://mikado.io" + }, + "marketcap_usd": 0, + "name": "Mikado", + "network": "eth", + "shortcut": "MKT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MLN (new)": { + "address": "0xec67005c4E498Ec7f55E092bd1d35cbC47C91892", + "links": { + "Homepage": "https://melonport.com" + }, + "marketcap_usd": 0, + "name": "Melonport", + "network": "eth", + "shortcut": "MLN (new)", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MNE": { + "address": "0x1a95B271B0535D15fa49932Daba31BA612b52946", + "links": { + "Homepage": "https://minereum.com" + }, + "marketcap_usd": 28558.474596446948, + "name": "MNE", + "network": "eth", + "shortcut": "MNE", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MNT": { + "address": "0xA9877b1e05D035899131DBd1e403825166D09f92", + "links": { + "Github": "https://github.com/coinjoker/cjtoken", + "Homepage": "https://coinjoker.com" + }, + "marketcap_usd": 0, + "name": "Media Network Token", + "network": "eth", + "shortcut": "MNT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MNTP": { + "address": "0x83cee9e086A77e492eE0bB93C2B0437aD6fdECCc", + "links": { + "Github": "https://github.com/Goldmint", + "Homepage": "https://goldmint.io" + }, + "marketcap_usd": 0, + "name": "Goldmint MNT Prelaunch Token", + "network": "eth", + "shortcut": "MNTP", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MOC": { + "address": "0x865ec58b06bF6305B886793AA20A2da31D034E68", + "links": { + "Homepage": "https://moss.land" + }, + "marketcap_usd": 7807891.964279149, + "name": "Moss Coin", + "network": "eth", + "shortcut": "MOC", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MOD": { + "address": "0x957c30aB0426e0C93CD8241E2c60392d08c6aC8e", + "links": { + "Github": "https://github.com/modum-io", + "Homepage": "https://modum.io" + }, + "marketcap_usd": 6060679.531556751, + "name": "Modum", + "network": "eth", + "shortcut": "MOD", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MOT": { + "address": "0x263c618480DBe35C300D8d5EcDA19bbB986AcaeD", + "links": { + "Homepage": "https://olympuslabs.io" + }, + "marketcap_usd": 1654762.1549843785, + "name": "Olympus Labs", + "network": "eth", + "shortcut": "MOT", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MRK": { + "address": "0xf453B5B9d4E0B5c62ffB256BB2378cc2BC8e8a89", + "links": { + "Homepage": "https://mark.space" + }, + "marketcap_usd": 2972208.3227560124, + "name": "MARK.SPACE", + "network": "eth", + "shortcut": "MRK", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MRL": { + "address": "0x82125AFe01819Dff1535D0D6276d57045291B6c0", + "links": { + "Github": "https://github.com/MarceloMRL", + "Homepage": "https://moneyrebel.io/" + }, + "marketcap_usd": 0, + "name": "Marcelo", + "network": "eth", + "shortcut": "MRL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MRP": { + "address": "0x21f0F0fD3141Ee9E11B3d7f13a1028CD515f459c", + "links": { + "Homepage": "https://moneyrebel.io/" + }, + "marketcap_usd": 0, + "name": "MoneyRebel Token", + "network": "eth", + "shortcut": "MRP", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MRV": { + "address": "0xAB6CF87a50F17d7F5E1FEaf81B6fE9FfBe8EBF84", + "links": { + "Homepage": "https://macroverse.io" + }, + "marketcap_usd": 0, + "name": "MRV", + "network": "eth", + "shortcut": "MRV", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MSP": { + "address": "0x68AA3F232dA9bdC2343465545794ef3eEa5209BD", + "links": { + "Homepage": "https://mothership.cx" + }, + "marketcap_usd": 752946.319755, + "name": "Mothership", + "network": "eth", + "shortcut": "MSP", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MTH": { + "address": "0xaF4DcE16Da2877f8c9e00544c93B62Ac40631F16", + "links": { + "Homepage": "http://www.monetha.io" + }, + "marketcap_usd": 4717695.493335855, + "name": "Monetha", + "network": "eth", + "shortcut": "MTH", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MTL": { + "address": "0xF433089366899D83a9f26A773D59ec7eCF30355e", + "links": { + "Homepage": "https://www.metalpay.com" + }, + "marketcap_usd": 10607469.701707141, + "name": "Metal", + "network": "eth", + "shortcut": "MTL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MTN": { + "address": "0x41dBECc1cdC5517C6f76f6a6E836aDbEe2754DE3", + "links": { + "Homepage": "https://medicalchain.com" + }, + "marketcap_usd": 1218710.8770300818, + "name": "MedToken", + "network": "eth", + "shortcut": "MTN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MTR": { + "address": "0x7FC408011165760eE31bE2BF20dAf450356692Af", + "links": { + "Homepage": "https://mitrav.co" + }, + "marketcap_usd": 0, + "name": "Mitrav", + "network": "eth", + "shortcut": "MTR", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MTRc": { + "address": "0x1e49fF77c355A3e38D6651ce8404AF0E48c5395f", + "links": { + "Homepage": "https://modultrade.io" + }, + "marketcap_usd": 139213.71990150496, + "name": "MTRCToken", + "network": "eth", + "shortcut": "MTRc", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MTX": { + "address": "0x0AF44e2784637218dD1D32A322D44e603A8f0c6A", + "links": { + "Homepage": "https://www.matryx.ai" + }, + "marketcap_usd": 337725.5776423626, + "name": "MTX", + "network": "eth", + "shortcut": "MTX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MUXE": { + "address": "0x515669d308f887Fd83a471C7764F5d084886D34D", + "links": { + "Homepage": "https://www.muxe.io" + }, + "marketcap_usd": 0, + "name": "MUXE", + "network": "eth", + "shortcut": "MUXE", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MVL": { + "address": "0xA849EaaE994fb86Afa73382e9Bd88c2B6b18Dc71", + "links": { + "Homepage": "http://mvlchain.io" + }, + "marketcap_usd": 1468508.4610582497, + "name": "Mass Vehicle Ledger Token", + "network": "eth", + "shortcut": "MVL", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MVP": { + "address": "0x8a77e40936BbC27e80E9a3F526368C967869c86D", + "links": { + "Github": "https://github.com/Merculet", + "Homepage": "https://www.merculet.io" + }, + "marketcap_usd": 528643.4643249221, + "name": "Merculet", + "network": "eth", + "shortcut": "MVP", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MWAT": { + "address": "0x6425c6BE902d692AE2db752B3c268AFAdb099D3b", + "links": { + "Homepage": "https://www.restartenergy.io" + }, + "marketcap_usd": 7005660.475244125, + "name": "RED MWAT", + "network": "eth", + "shortcut": "MWAT", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:MYST": { + "address": "0xa645264C5603E96c3b0B078cdab68733794B0A71", + "links": { + "Homepage": "https://mysterium.network" + }, + "marketcap_usd": 1523664.9750150698, + "name": "Mysterium", + "network": "eth", + "shortcut": "MYST", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:NAC": { + "address": "0x8d80de8A78198396329dfA769aD54d24bF90E7aa", + "links": { + "Homepage": "https://nami.trade" + }, + "marketcap_usd": 0, + "name": "Nami ICO", + "network": "eth", + "shortcut": "NAC", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:NANJ": { + "address": "0xFFE02ee4C69eDf1b340fCaD64fbd6b37a7b9e265", + "links": { + "Github": "https://github.com/NANJ-COIN", + "Homepage": "https://nanjcoin.com/" + }, + "marketcap_usd": 3001498.1854613633, + "name": "NANJCOIN", + "network": "eth", + "shortcut": "NANJ", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:NAVI": { + "address": "0x588047365dF5BA589F923604AAC23d673555c623", + "links": { + "Github": "https://github.com/naviworld", + "Homepage": "https://naviaddress.com" + }, + "marketcap_usd": 251195.90791517746, + "name": "NaviToken", + "network": "eth", + "shortcut": "NAVI", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -8280,15 +16602,16 @@ } ] }, - "erc20:eth:GIF": { - "address": "0xFcD862985628b254061F7A918035B80340D045d3", + "erc20:eth:NBAI": { + "address": "0x17f8aFB63DfcDcC90ebE6e84F060Cc306A98257D", "links": { - "Homepage": "https://gifcoin.io/" + "Github": "https://github.com/nebulaai", + "Homepage": "https://tokensale.nebula-ai.network" }, - "marketcap_usd": 0, - "name": "GIFcoin Token", + "marketcap_usd": 1090139.1381073168, + "name": "NebulaAiToken", "network": "eth", - "shortcut": "GIF", + "shortcut": "NBAI", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -8307,17 +16630,16 @@ } ] }, - "erc20:eth:GIM": { - "address": "0xaE4f56F072c34C0a65B3ae3E4DB797D831439D93", + "erc20:eth:NBC": { + "address": "0x9F195617fA8fbAD9540C5D113A99A0a0172aaEDC", "links": { - "Github": "https://github.com/thegimliproject/GimliToken", - "Homepage": "https://gimli.io" + "Homepage": "https://niobiumcoin.io" }, - "marketcap_usd": 0, - "name": "Gimli", + "marketcap_usd": 652814.5148882471, + "name": "Niobium Coin", "network": "eth", - "shortcut": "GIM", - "t1_enabled": "yes", + "shortcut": "NBC", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -8335,15 +16657,43 @@ } ] }, - "erc20:eth:GMT": { - "address": "0xb3Bd49E28f8F832b8d1E246106991e546c323502", + "erc20:eth:NCASH": { + "address": "0x809826cceAb68c387726af962713b64Cb5Cb3CCA", "links": { - "Homepage": "http://www.mercuryprotocol.com" + "Homepage": "https://nucleus.vision" }, - "marketcap_usd": 0, - "name": "GMT", + "marketcap_usd": 10048565.40301621, + "name": "Nucleus Vision", "network": "eth", - "shortcut": "GMT", + "shortcut": "NCASH", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:NCT": { + "address": "0x9E46A38F5DaaBe8683E10793b06749EEF7D733d1", + "links": { + "Github": "https://github.com/polyswarm", + "Homepage": "https://polyswarm.io" + }, + "marketcap_usd": 2856602.849379442, + "name": "Nectar", + "network": "eth", + "shortcut": "NCT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -8362,15 +16712,15 @@ } ] }, - "erc20:eth:GNO": { - "address": "0x6810e776880C02933D47DB1b9fc05908e5386b96", + "erc20:eth:NDC": { + "address": "0xA54ddC7B3CcE7FC8b1E3Fa0256D0DB80D2c10970", "links": { - "Homepage": "https://gnosis.pm" + "Homepage": "https://neverdie.com" }, - "marketcap_usd": 0, - "name": "Gnosis", + "marketcap_usd": 150528.94679899464, + "name": "Neverdie", "network": "eth", - "shortcut": "GNO", + "shortcut": "NDC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -8389,17 +16739,45 @@ } ] }, - "erc20:eth:GNT": { - "address": "0xa74476443119A942dE498590Fe1f2454d7D4aC0d", - "coinmarketcap_alias": "golem-network-tokens", + "erc20:eth:NDX": { + "address": "0x1966d718A565566e8E202792658D7b5Ff4ECe469", "links": { - "Homepage": "https://golem.network" + "Github": "https://github.com/ndexnetwork/NDX", + "Homepage": "https://ndexnetwork.com" }, - "marketcap_usd": 64627553, - "name": "Golem", + "marketcap_usd": 91697.0882000592, + "name": "nDEX", "network": "eth", - "shortcut": "GNT", + "shortcut": "NDX", "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:NEC": { + "address": "0xCc80C051057B774cD75067Dc48f8987C4Eb97A5e", + "links": { + "Github": "https://github.com/ethfinex/", + "Homepage": "https://nectar.community" + }, + "marketcap_usd": 14064873.621576004, + "name": "Ethfinex Nectar Token", + "network": "eth", + "shortcut": "NEC", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -8417,16 +16795,15 @@ } ] }, - "erc20:eth:GNY": { - "address": "0x247551F2EB3362E222c742E9c788B8957D9BC87e", + "erc20:eth:NEEO": { + "address": "0xd8446236FA95b9b5f9fd0f8E7Df1a944823c683d", "links": { - "Github": "https://github.com/GNYIO", - "Homepage": "https://www.gny.io/" + "Homepage": "http://neeoico.com/" }, "marketcap_usd": 0, - "name": "GNY", + "name": "NEEO", "network": "eth", - "shortcut": "GNY", + "shortcut": "NEEO", "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", @@ -8445,16 +16822,15 @@ } ] }, - "erc20:eth:GOLDX": { - "address": "0xeAb43193CF0623073Ca89DB9B712796356FA7414", + "erc20:eth:NET": { + "address": "0xcfb98637bcae43C13323EAa1731cED2B716962fD", "links": { - "Github": "https://github.com/myHelloGold/Foundation", - "Homepage": "https://www.hellogold.org/" + "Homepage": "https://nimiq.com" }, "marketcap_usd": 0, - "name": "GOLDX", + "name": "NIMIQ", "network": "eth", - "shortcut": "GOLDX", + "shortcut": "NET", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -8473,15 +16849,16 @@ } ] }, - "erc20:eth:GRID": { - "address": "0x12B19D3e2ccc14Da04FAe33e63652ce469b3F2FD", + "erc20:eth:NEU": { + "address": "0xA823E6722006afe99E91c30FF5295052fe6b8E32", "links": { - "Homepage": "https://gridplus.io/token-sale" + "Github": "https://github.com/neufund", + "Homepage": "https://neufund.org" }, - "marketcap_usd": 1520289, - "name": "GRID", + "marketcap_usd": 8755009.04712989, + "name": "NEU Fund", "network": "eth", - "shortcut": "GRID", + "shortcut": "NEU", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -8500,16 +16877,15 @@ } ] }, - "erc20:eth:GROO": { - "address": "0xC17195bde49D70CefCF8A9F2ee1759FFC27BF0B1", + "erc20:eth:NEXO": { + "address": "0xB62132e35a6c13ee1EE0f84dC5d40bad8d815206", "links": { - "Github": "https://github.com/groocoindev", - "Homepage": "https://groo.io/" + "Homepage": "http://nexo.io" }, - "marketcap_usd": 0, - "name": "Groocoin", + "marketcap_usd": 31294886.37011297, + "name": "Nexo", "network": "eth", - "shortcut": "GROO", + "shortcut": "NEXO", "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", @@ -8528,16 +16904,15 @@ } ] }, - "erc20:eth:GROW": { - "address": "0x0a9A9ce600D08BF9b76F49FA4e7b38A67EBEB1E6", + "erc20:eth:NGC": { + "address": "0x72dD4b6bd852A3AA172Be4d6C5a6dbEc588cf131", "links": { - "Github": "https://github.com/growchainnet", - "Homepage": "http://www.growchain.us" + "Homepage": "https://www.nagaico.com" }, - "marketcap_usd": 0, - "name": "Growchain", + "marketcap_usd": 2650526.545789325, + "name": "NAGA Coin", "network": "eth", - "shortcut": "GROW", + "shortcut": "NGC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -8556,15 +16931,16 @@ } ] }, - "erc20:eth:GSE": { - "address": "0xe530441f4f73bDB6DC2fA5aF7c3fC5fD551Ec838", + "erc20:eth:NIMFA": { + "address": "0xe26517A9967299453d3F1B48Aa005E6127e67210", "links": { - "Homepage": "https://www.gse.network" + "Github": "https://github.com/nimfamoney", + "Homepage": "https://nimfamoney.io" }, "marketcap_usd": 0, - "name": "GSENetwork", + "name": "Ninfa Money", "network": "eth", - "shortcut": "GSE", + "shortcut": "NIMFA", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -8583,17 +16959,16 @@ } ] }, - "erc20:eth:GTC": { - "address": "0xB70835D7822eBB9426B56543E391846C107bd32C", + "erc20:eth:NIO": { + "address": "0x5554e04e76533E1d14c52f05beEF6c9d329E1E30", "links": { - "Github": "https://github.com/GameLeLe", - "Homepage": "https://game.com" + "Homepage": "https://auton.io" }, - "marketcap_usd": 0, - "name": "GTC Token", + "marketcap_usd": 714628.1074708569, + "name": "Autonio", "network": "eth", - "shortcut": "GTC", - "t1_enabled": "yes", + "shortcut": "NIO", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -8611,16 +16986,16 @@ } ] }, - "erc20:eth:GTKT": { - "address": "0x025abAD9e518516fdaAFBDcdB9701b37fb7eF0FA", + "erc20:eth:NMR": { + "address": "0x1776e1F26f98b1A5dF9cD347953a26dd3Cb46671", "links": { - "Github": "https://github.com/sprux/BackToEarth", - "Homepage": "https://backto.earth" + "Github": "https://github.com/numerai", + "Homepage": "https://numer.ai/homepage" }, - "marketcap_usd": 0, - "name": "GTKT", + "marketcap_usd": 4565979.449883198, + "name": "NMR", "network": "eth", - "shortcut": "GTKT", + "shortcut": "NMR", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -8639,17 +17014,16 @@ } ] }, - "erc20:eth:GTO": { - "address": "0xC5bBaE50781Be1669306b9e001EFF57a2957b09d", + "erc20:eth:NOAH": { + "address": "0x58a4884182d9E835597f405e5F258290E46ae7C2", "links": { - "Github": "https://github.com/GIFTO-io", - "Homepage": "https://gifto.io/" + "Homepage": "https://noahcoin.org" }, - "marketcap_usd": 13204332, - "name": "Gifto", + "marketcap_usd": 6010809.536823563, + "name": "Noah Coin", "network": "eth", - "shortcut": "GTO", - "t1_enabled": "yes", + "shortcut": "NOAH", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -8667,17 +17041,16 @@ } ] }, - "erc20:eth:GULD": { - "address": "0x9847345de8b614c956146bbea549336d9C8d26b6", + "erc20:eth:NOBS": { + "address": "0xF4FaEa455575354d2699BC209B0a65CA99F69982", "links": { - "Github": "https://github.com/guldcoin", - "Homepage": "https://guld.io" + "Homepage": "https://nobscrypto.com" }, - "marketcap_usd": 0, - "name": "GULD ERC20", + "marketcap_usd": 176484.5842169797, + "name": "No BS Crypto", "network": "eth", - "shortcut": "GULD", - "t1_enabled": "yes", + "shortcut": "NOBS", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -8695,16 +17068,16 @@ } ] }, - "erc20:eth:GVT": { - "address": "0x103c3A209da59d3E7C4A89307e66521e081CFDF0", + "erc20:eth:NOX": { + "address": "0xeC46f8207D766012454c408De210BCBc2243E71c", "links": { - "Github": "https://github.com/GenesisVision", - "Homepage": "https://genesis.vision" + "Github": "https://github.com/nitrotoken/nitro-crowdsale", + "Homepage": "https://nitro.live" }, - "marketcap_usd": 16918016, - "name": "Genesis Vision", + "marketcap_usd": 46342.53622761556, + "name": "NOX", "network": "eth", - "shortcut": "GVT", + "shortcut": "NOX", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -8723,15 +17096,16 @@ } ] }, - "erc20:eth:GXC": { - "address": "0x58ca3065C0F24C7c96Aee8d6056b5B5deCf9c2f8", + "erc20:eth:NPER": { + "address": "0x4cE6B362Bc77A24966Dda9078f9cEF81b3B886a7", "links": { - "Homepage": "https://genevieveco.com" + "Github": "https://github.com/NperProject", + "Homepage": "https://nper.io" }, - "marketcap_usd": 0, - "name": "GXC", + "marketcap_usd": 414283.3834728235, + "name": "NPER", "network": "eth", - "shortcut": "GXC", + "shortcut": "NPER", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -8750,16 +17124,43 @@ } ] }, - "erc20:eth:GXVC": { - "address": "0x22F0AF8D78851b72EE799e05F54A77001586B18A", + "erc20:eth:NPX": { + "address": "0x28b5E12CcE51f15594B0b91d5b5AdaA70F684a02", "links": { - "Github": "https://github.com/GxC17Genevieve/GXVC", - "Homepage": "https://genevieveco.io" + "Homepage": "https://napoleonx.ai" + }, + "marketcap_usd": 4324056.354677183, + "name": "NaPoleonX", + "network": "eth", + "shortcut": "NPX", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:NPXS": { + "address": "0xA15C7Ebe1f07CaF6bFF097D8a589fb8AC49Ae5B3", + "links": { + "Github": "https://github.com/pundix", + "Homepage": "https://pundix.com" }, - "marketcap_usd": 0, - "name": "Genevieve VC", + "marketcap_usd": 116943874.78459245, + "name": "Pundi X Token", "network": "eth", - "shortcut": "GXVC", + "shortcut": "NPXS", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -8778,16 +17179,16 @@ } ] }, - "erc20:eth:GZE": { - "address": "0x8C65e992297d5f092A756dEf24F4781a280198Ff", + "erc20:eth:NTO": { + "address": "0x8A99ED8a1b204903Ee46e733f2c1286F6d20b177", "links": { - "Homepage": "https://gazecoin.io" + "Homepage": "https://fujinto.io" }, - "marketcap_usd": 0, - "name": "GazeCoin", + "marketcap_usd": 1699.7251132176991, + "name": "Fujinto", "network": "eth", - "shortcut": "GZE", - "t1_enabled": "yes", + "shortcut": "NTO", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -8805,16 +17206,15 @@ } ] }, - "erc20:eth:GZR": { - "address": "0xE638dc39b6aDBEE8526b5C22380b4b45dAf46d8e", + "erc20:eth:NUG": { + "address": "0x245ef47D4d0505ECF3Ac463F4d81f41ADE8f1fd1", "links": { - "Github": "https://github.com/GizerInc/Gizer", - "Homepage": "https://gizer.io" + "Homepage": "https://nuggets.life/" }, "marketcap_usd": 0, - "name": "Gizer", + "name": "Nuggets Token", "network": "eth", - "shortcut": "GZR", + "shortcut": "NUG", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -8833,15 +17233,15 @@ } ] }, - "erc20:eth:HAPPY": { - "address": "0x5A567e28dbFa2bBD3ef13C0a01be114745349657", + "erc20:eth:NULS": { + "address": "0xB91318F35Bdb262E9423Bc7c7c2A3A93DD93C92C", "links": { - "Homepage": "https://btr.works" + "Homepage": "https://nuls.io" }, "marketcap_usd": 0, - "name": "Happiness", + "name": "NULS", "network": "eth", - "shortcut": "HAPPY", + "shortcut": "NULS", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -8860,15 +17260,15 @@ } ] }, - "erc20:eth:HAT": { - "address": "0x9002D4485b7594e3E850F0a206713B305113f69e", + "erc20:eth:NXX": { + "address": "0x7627de4B93263a6a7570b8dAfa64bae812e5c394", "links": { - "Homepage": "https://www.hawala.today/" + "Homepage": "https://www.nexxuscoin.com" }, "marketcap_usd": 0, - "name": "Hawala Today", + "name": "NXX", "network": "eth", - "shortcut": "HAT", + "shortcut": "NXX", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -8887,16 +17287,15 @@ } ] }, - "erc20:eth:HAV": { - "address": "0xC011A72400E58ecD99Ee497CF89E3775d4bd732F", + "erc20:eth:NxC": { + "address": "0x45e42D659D9f9466cD5DF622506033145a9b89Bc", "links": { - "Github": "https://github.com/havven/havven", - "Homepage": "https://havven.io" + "Homepage": "https://beyond-the-void.net" }, - "marketcap_usd": 0, - "name": "Havven", + "marketcap_usd": 342898.67413780274, + "name": "Nexium", "network": "eth", - "shortcut": "HAV", + "shortcut": "NxC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -8915,15 +17314,15 @@ } ] }, - "erc20:eth:HDG": { - "address": "0xfFe8196bc259E8dEDc544d935786Aa4709eC3E64", + "erc20:eth:OAK": { + "address": "0x5e888B83B7287EED4fB7DA7b7d0A0D4c735d94b3", "links": { - "Homepage": "https://www.hedge-crypto.com" + "Homepage": "https://aco.ai" }, "marketcap_usd": 0, - "name": "Hedge Crypto", + "name": "OAK", "network": "eth", - "shortcut": "HDG", + "shortcut": "OAK", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -8942,16 +17341,15 @@ } ] }, - "erc20:eth:HGT": { - "address": "0xba2184520A1cC49a6159c57e61E1844E085615B6", + "erc20:eth:OAX": { + "address": "0x701C244b988a513c945973dEFA05de933b23Fe1D", "links": { - "Github": "https://github.com/myHelloGold/Foundation", - "Homepage": "https://www.hellogold.org" + "Homepage": "https://www.openanx.org/en" }, - "marketcap_usd": 0, - "name": "HGT", + "marketcap_usd": 2997473.2580078407, + "name": "OAX", "network": "eth", - "shortcut": "HGT", + "shortcut": "OAX", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -8970,15 +17368,16 @@ } ] }, - "erc20:eth:HIBT": { - "address": "0x9bb1Db1445b83213a56d90d331894b3f26218e4e", + "erc20:eth:OCC": { + "address": "0x0235fE624e044A05eeD7A43E16E3083bc8A4287A", "links": { - "Homepage": "https://www.hibtc.com/" + "Github": "https://github.com/OriginalCrypto/", + "Homepage": "https://www.OriginalCryptoCoin.com/" }, "marketcap_usd": 0, - "name": "HiBTC Token", + "name": "Original Crypto Coin", "network": "eth", - "shortcut": "HIBT", + "shortcut": "OCC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -8997,17 +17396,16 @@ } ] }, - "erc20:eth:HIG": { - "address": "0xa9240fBCAC1F0b9A6aDfB04a53c8E3B0cC1D1444", + "erc20:eth:OCN": { + "address": "0x4092678e4E78230F46A1534C0fbc8fA39780892B", "links": { - "Github": "https://github.com/ethereumhigh/Ethereum-High", - "Homepage": "https://www.ethereumhigh.org/" + "Homepage": "http://www.ocnex.net" }, - "marketcap_usd": 0, - "name": "ethereumhigh", + "marketcap_usd": 13239098.569315942, + "name": "Odyssey", "network": "eth", - "shortcut": "HIG", - "t1_enabled": "yes", + "shortcut": "OCN", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -9025,15 +17423,16 @@ } ] }, - "erc20:eth:HKG": { - "address": "0x14F37B574242D366558dB61f3335289a5035c506", + "erc20:eth:ODE": { + "address": "0xbf52F2ab39e26E0951d2a02b49B7702aBe30406a", "links": { - "Homepage": "http://www.ether.camp" + "Github": "https://github.com/odemio", + "Homepage": "https://odem.io/" }, - "marketcap_usd": 0, - "name": "HKG", + "marketcap_usd": 47028579.65206613, + "name": "ODEM Token", "network": "eth", - "shortcut": "HKG", + "shortcut": "ODE", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -9052,16 +17451,16 @@ } ] }, - "erc20:eth:HKY": { - "address": "0x88aC94D5d175130347Fc95E109d77AC09dbF5ab7", + "erc20:eth:OJX": { + "address": "0xBeef546ac8a4e0a80DC1E2d696968Ef54138f1d4", "links": { - "Github": "https://github.com/HickyToken/hickycontracts", - "Homepage": "https://hicky.io" + "Github": "https://github.com/OjoooInc", + "Homepage": "https://ico.ojooo.com/" }, "marketcap_usd": 0, - "name": "Hicky", + "name": "Ojooo Coin", "network": "eth", - "shortcut": "HKY", + "shortcut": "OJX", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -9080,16 +17479,17 @@ } ] }, - "erc20:eth:HLX": { - "address": "0x66eb65D7Ab8e9567ba0fa6E37c305956c5341574", + "erc20:eth:OLD_MKR": { + "address": "0xC66eA802717bFb9833400264Dd12c2bCeAa34a6d", "links": { - "Homepage": "https://helex.world" + "Github": "https://github.com/makerdao", + "Homepage": "https://makerdao.com" }, "marketcap_usd": 0, - "name": "Helex", + "name": "MakerDAO", "network": "eth", - "shortcut": "HLX", - "t1_enabled": "soon", + "shortcut": "OLD_MKR", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -9107,16 +17507,16 @@ } ] }, - "erc20:eth:HMQ": { - "address": "0xcbCC0F036ED4788F63FC0fEE32873d6A7487b908", + "erc20:eth:OLE": { + "address": "0x9d9223436dDD466FC247e9dbbD20207e640fEf58", "links": { - "Homepage": "https://humaniq.co" + "Homepage": "http://www.olivecoin.co" }, - "marketcap_usd": 0, - "name": "HMQ", + "marketcap_usd": 310284.6184532296, + "name": "Olive", "network": "eth", - "shortcut": "HMQ", - "t1_enabled": "yes", + "shortcut": "OLE", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -9134,15 +17534,16 @@ } ] }, - "erc20:eth:HODL": { - "address": "0xb45d7Bc4cEBcAB98aD09BABDF8C818B2292B672c", + "erc20:eth:OLT": { + "address": "0x64A60493D888728Cf42616e034a0dfEAe38EFCF0", "links": { - "Homepage": "https://github.com/arachnid/hodlcoin" + "Github": "https://github.com/Oneledger", + "Homepage": "https://oneledger.io" }, - "marketcap_usd": 98378, - "name": "HODLCoin", + "marketcap_usd": 947965.8952545587, + "name": "OneLedger Token", "network": "eth", - "shortcut": "HODL", + "shortcut": "OLT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -9161,16 +17562,16 @@ } ] }, - "erc20:eth:HORSE": { - "address": "0x5B0751713b2527d7f002c0c4e2a37e1219610A6B", + "erc20:eth:OMG": { + "address": "0xd26114cd6EE289AccF82350c8d8487fedB8A0C07", "links": { - "Github": "https://github.com/ethorse", - "Homepage": "https://ethorse.com" + "Github": "https://github.com/omisego", + "Homepage": "https://omg.omise.co" }, - "marketcap_usd": 0, - "name": "HORSE", + "marketcap_usd": 153439353.99770877, + "name": "OmiseGO", "network": "eth", - "shortcut": "HORSE", + "shortcut": "OMG", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -9189,15 +17590,16 @@ } ] }, - "erc20:eth:HST": { - "address": "0x554C20B7c486beeE439277b4540A434566dC4C02", + "erc20:eth:OMT": { + "address": "0x047187e53477be70DBe8Ea5B799318f2e165052F", "links": { - "Homepage": "https://horizonstate.com" + "Github": "https://github.com/OTCMAKER/OMT", + "Homepage": "https://www.otcmaker.com" }, "marketcap_usd": 0, - "name": "HST", + "name": "OTCMAKER Token", "network": "eth", - "shortcut": "HST", + "shortcut": "OMT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -9216,17 +17618,16 @@ } ] }, - "erc20:eth:HVN": { - "address": "0xC0Eb85285d83217CD7c891702bcbC0FC401E2D9D", + "erc20:eth:OMX": { + "address": "0xB5DBC6D3cf380079dF3b27135664b6BCF45D1869", "links": { - "Github": "https://github.com/HiveProjectLTD", - "Homepage": "https://hive-project.net" + "Homepage": "https://shivom.io" }, - "marketcap_usd": 0, - "name": "Hive Project", + "marketcap_usd": 624805.4066482248, + "name": "Shivom", "network": "eth", - "shortcut": "HVN", - "t1_enabled": "yes", + "shortcut": "OMX", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -9244,18 +17645,18 @@ } ] }, - "erc20:eth:HYDRO": { - "address": "0xEBBdf302c940c6bfd49C6b165f457fdb324649bc", + "erc20:eth:ONE": { + "address": "0x4D807509aECe24C0fa5A102b6a3B059Ec6E14392", "links": { - "Github": "https://github.com/hydrogen-dev", - "Homepage": "https://www.hydrogenplatform.com/hydro" + "Github": "https://github.com/MenloOne/", + "Homepage": "https://www.menlo.one" }, - "marketcap_usd": 0, - "name": "Hydro", + "marketcap_usd": 228478.3028364383, + "name": "Menlo One", "network": "eth", - "shortcut": "HYDRO", - "t1_enabled": "yes", - "t2_enabled": "yes", + "shortcut": "ONE", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20", "wallet": [ { @@ -9272,16 +17673,15 @@ } ] }, - "erc20:eth:IAD": { - "address": "0xC1E2097d788d33701BA3Cc2773BF67155ec93FC4", + "erc20:eth:ONEK": { + "address": "0xB23be73573bC7E03DB6e5dfc62405368716d28a8", "links": { - "Github": "https://github.com/IADOWR", - "Homepage": "https://www.iadowrcoin.com" + "Homepage": "http://onek.one" }, "marketcap_usd": 0, - "name": "IADOWR Coin", + "name": "One K Token", "network": "eth", - "shortcut": "IAD", + "shortcut": "ONEK", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -9300,16 +17700,16 @@ } ] }, - "erc20:eth:ICE": { - "address": "0x5a84969bb663fb64F6d015DcF9F622Aedc796750", + "erc20:eth:ONL": { + "address": "0x6863bE0e7CF7ce860A574760e9020D519a8bDC47", "links": { - "Homepage": "https://idice.io" + "Homepage": "https://on.live" }, - "marketcap_usd": 0, - "name": "ICE", + "marketcap_usd": 1041198.1094474809, + "name": "On.Live", "network": "eth", - "shortcut": "ICE", - "t1_enabled": "yes", + "shortcut": "ONL", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -9327,15 +17727,15 @@ } ] }, - "erc20:eth:ICO": { - "address": "0xa33e729bf4fdeb868B534e1f20523463D9C46bEe", + "erc20:eth:OPT": { + "address": "0x4355fC160f74328f9b383dF2EC589bB3dFd82Ba0", "links": { - "Homepage": "http://icocoin.org" + "Homepage": "https://opus-foundation.org" }, - "marketcap_usd": 0, - "name": "ICO", + "marketcap_usd": 969582.0046883348, + "name": "Opus Foundation", "network": "eth", - "shortcut": "ICO", + "shortcut": "OPT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -9354,16 +17754,16 @@ } ] }, - "erc20:eth:ICOS": { - "address": "0x014B50466590340D41307Cc54DCee990c8D58aa8", + "erc20:eth:OPTI": { + "address": "0x832904863978b94802123106e6eB491BDF0Df928", "links": { - "Homepage": "https://icos.icobox.io" + "Homepage": "https://optitoken.io" }, - "marketcap_usd": 0, - "name": "ICOS", + "marketcap_usd": 629735.3469709583, + "name": "OptiToken", "network": "eth", - "shortcut": "ICOS", - "t1_enabled": "yes", + "shortcut": "OPTI", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -9381,15 +17781,16 @@ } ] }, - "erc20:eth:ICX": { - "address": "0xb5A5F22694352C15B00323844aD545ABb2B11028", + "erc20:eth:ORBS": { + "address": "0xff56Cc6b1E6dEd347aA0B7676C85AB0B3D08B0FA", "links": { - "Homepage": "https://www.icon.foundation" + "Github": "https://github.com/orbs-network", + "Homepage": "https://orbs.com" }, - "marketcap_usd": 113466307, - "name": "ICON", + "marketcap_usd": 0, + "name": "Orbs", "network": "eth", - "shortcut": "ICX", + "shortcut": "ORBS", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -9408,15 +17809,16 @@ } ] }, - "erc20:eth:IDEA": { - "address": "0x814CAfd4782d2e728170FDA68257983F03321c58", + "erc20:eth:ORCA": { + "address": "0x6F59e0461Ae5E2799F1fB3847f05a63B16d0DbF8", "links": { - "Homepage": "http://www.ideatoken.io/" + "Github": "https://github.com/orcaalliance", + "Homepage": "https://www.orcaalliance.eu" }, "marketcap_usd": 0, - "name": "IDEA Token", + "name": "ORCA Token", "network": "eth", - "shortcut": "IDEA", + "shortcut": "ORCA", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -9435,16 +17837,16 @@ } ] }, - "erc20:eth:IFT": { - "address": "0x7654915A1b82D6D2D0AFc37c52Af556eA8983c7E", + "erc20:eth:ORI": { + "address": "0xd2Fa8f92Ea72AbB35dBD6DECa57173d22db2BA49", "links": { - "Homepage": "https://investfeed.com" + "Homepage": "https://ori.network" }, - "marketcap_usd": 515271, - "name": "InvestFeed", + "marketcap_usd": 41801.39420097134, + "name": "Origami", "network": "eth", - "shortcut": "IFT", - "t1_enabled": "yes", + "shortcut": "ORI", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -9462,16 +17864,16 @@ } ] }, - "erc20:eth:IIC": { - "address": "0x16662F73dF3e79e54c6c5938b4313f92C524C120", + "erc20:eth:ORME": { + "address": "0x516E5436bAfdc11083654DE7Bb9b95382d08d5DE", "links": { - "Homepage": "https://ibiscoin.co" + "Homepage": "https://ormeuscoin.com" }, - "marketcap_usd": 0, - "name": "IIC", + "marketcap_usd": 1735946.4492024437, + "name": "Ormeus Coin", "network": "eth", - "shortcut": "IIC", - "t1_enabled": "yes", + "shortcut": "ORME", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -9489,17 +17891,16 @@ } ] }, - "erc20:eth:IKB": { - "address": "0x88AE96845e157558ef59e9Ff90E766E22E480390", + "erc20:eth:ORS": { + "address": "0xEB9A4B185816C354dB92DB09cC3B50bE60b901b6", "links": { - "Github": "https://github.com/mitchellfchan/IKB", - "Homepage": "http://www.mitchellfchan.com" + "Homepage": "https://www.originsport.io" }, - "marketcap_usd": 0, - "name": "IKB", + "marketcap_usd": 195886.87390642238, + "name": "Origin Sport", "network": "eth", - "shortcut": "IKB", - "t1_enabled": "yes", + "shortcut": "ORS", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -9517,15 +17918,16 @@ } ] }, - "erc20:eth:IMC": { - "address": "0xe3831c5A982B279A198456D577cfb90424cb6340", + "erc20:eth:OST": { + "address": "0x2C4e8f2D746113d0696cE89B35F0d8bF88E0AEcA", "links": { - "Homepage": "http://immunecoin.info" + "Github": "https://github.com/OpenSTFoundation", + "Homepage": "https://simpletoken.org" }, - "marketcap_usd": 0, - "name": "Immune Coin", + "marketcap_usd": 9416430.417761868, + "name": "Simple Token 'OST'", "network": "eth", - "shortcut": "IMC", + "shortcut": "OST", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -9544,16 +17946,16 @@ } ] }, - "erc20:eth:IND": { - "address": "0xf8e386EDa857484f5a12e4B5DAa9984E06E73705", + "erc20:eth:OTN": { + "address": "0x881Ef48211982D01E2CB7092C915E647Cd40D85C", "links": { - "Homepage": "https://indorse.io" + "Homepage": "https://otn.org" }, - "marketcap_usd": 0, - "name": "Indorse", + "marketcap_usd": 70064.95691821576, + "name": "Open Trading Network", "network": "eth", - "shortcut": "IND", - "t1_enabled": "yes", + "shortcut": "OTN", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -9571,15 +17973,16 @@ } ] }, - "erc20:eth:INS": { - "address": "0x5B2e4a700dfBc560061e957edec8F6EeEb74a320", + "erc20:eth:OWN": { + "address": "0x170b275CEd089FffAEBFe927F445a350ED9160DC", "links": { - "Homepage": "https://ins.world" + "Github": "https://github.com/owndata", + "Homepage": "https://owndata.network" }, - "marketcap_usd": 0, - "name": "INS", + "marketcap_usd": 824301.0617196668, + "name": "OWNDATA", "network": "eth", - "shortcut": "INS", + "shortcut": "OWN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -9598,15 +18001,16 @@ } ] }, - "erc20:eth:INSTAR": { - "address": "0xc72fe8e3Dd5BeF0F9f31f259399F301272eF2a2D", + "erc20:eth:Ox Fina": { + "address": "0x65A15014964F2102Ff58647e16a16a6B9E14bCF6", "links": { - "Homepage": "https://insights.network" + "Github": "https://github.com/oxfina", + "Homepage": "https://oxfina.com" }, - "marketcap_usd": 1056876, - "name": "Insights Network", + "marketcap_usd": 0, + "name": "Ox Fina", "network": "eth", - "shortcut": "INSTAR", + "shortcut": "Ox Fina", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -9625,17 +18029,16 @@ } ] }, - "erc20:eth:INXT": { - "address": "0xa8006C4ca56F24d6836727D106349320dB7fEF82", + "erc20:eth:PAI": { + "address": "0xB9bb08AB7E9Fa0A1356bd4A39eC0ca267E03b0b3", "links": { - "Github": "https://github.com/Internxt/", - "Homepage": "https://internxt.com/" + "Homepage": "https://www.pchain.org" }, - "marketcap_usd": 888683, - "name": "Internxt", + "marketcap_usd": 4277463.804057349, + "name": "PCHAIN", "network": "eth", - "shortcut": "INXT", - "t1_enabled": "yes", + "shortcut": "PAI", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -9653,15 +18056,16 @@ } ] }, - "erc20:eth:IOST": { - "address": "0xFA1a856Cfa3409CFa145Fa4e20Eb270dF3EB21ab", + "erc20:eth:PAL": { + "address": "0xfeDAE5642668f8636A11987Ff386bfd215F942EE", "links": { - "Homepage": "https://iost.io/" + "Github": "https://github.com/policypalnet", + "Homepage": "https://www.policypal.network" }, - "marketcap_usd": 63690577, - "name": "IOSToken", + "marketcap_usd": 2235813.6109488867, + "name": "PolicyPal Network", "network": "eth", - "shortcut": "IOST", + "shortcut": "PAL", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -9680,16 +18084,16 @@ } ] }, - "erc20:eth:IOTX": { - "address": "0x6fB3e0A217407EFFf7Ca062D46c26E5d60a14d69", + "erc20:eth:PARETO": { + "address": "0xea5f88E54d982Cbb0c441cde4E79bC305e5b43Bc", "links": { - "Github": "https://github.com/iotexproject/iotex-core", - "Homepage": "http://iotex.io/" + "Github": "https://github.com/ParetoNetwork", + "Homepage": "https://pareto.network" }, - "marketcap_usd": 0, - "name": "IoTeX Network", + "marketcap_usd": 357959.0474347371, + "name": "PARETO", "network": "eth", - "shortcut": "IOTX", + "shortcut": "PARETO", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -9708,18 +18112,17 @@ } ] }, - "erc20:eth:IPL": { - "address": "0x64CdF819d3E75Ac8eC217B3496d7cE167Be42e80", + "erc20:eth:PAT": { + "address": "0xF3b3Cad094B89392fcE5faFD40bC03b80F2Bc624", "links": { - "Github": "https://github.com/InsurePal", - "Homepage": "https://insurepal.io/" + "Homepage": "https://patron-influencers.com" }, - "marketcap_usd": 0, - "name": "InsurePal token", + "marketcap_usd": 1085303.732619526, + "name": "Patron", "network": "eth", - "shortcut": "IPL", - "t1_enabled": "yes", - "t2_enabled": "yes", + "shortcut": "PAT", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20", "wallet": [ { @@ -9736,15 +18139,15 @@ } ] }, - "erc20:eth:IPSX": { - "address": "0x001F0aA5dA15585e5b2305DbaB2bac425ea71007", + "erc20:eth:PATENTS": { + "address": "0x694404595e3075A942397F466AAcD462FF1a7BD0", "links": { - "Homepage": "https://ip.sx" + "Homepage": "https://www.smartillions.ch" }, "marketcap_usd": 0, - "name": "IPSX", + "name": "PATENTS", "network": "eth", - "shortcut": "IPSX", + "shortcut": "PATENTS", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -9763,16 +18166,16 @@ } ] }, - "erc20:eth:IQN": { - "address": "0x0DB8D8b76BC361bAcbB72E2C491E06085A97Ab31", + "erc20:eth:PATH": { + "address": "0xF813F3902bBc00A6DCe378634d3B79D84F9803d7", "links": { - "Github": "https://github.com/iqeon", - "Homepage": "https://iqeon.io/" + "Github": "https://github.com/path-network-token", + "Homepage": "https://path.network" }, - "marketcap_usd": 394787, - "name": "IQeon", + "marketcap_usd": 0, + "name": "PATH", "network": "eth", - "shortcut": "IQN", + "shortcut": "PATH", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -9791,17 +18194,17 @@ } ] }, - "erc20:eth:IST34": { - "address": "0x0cF713b11C9b986EC40D65bD4F7fbd50F6ff2d64", + "erc20:eth:PAX": { + "address": "0x8E870D67F660D95d5be530380D0eC0bd388289E1", "links": { - "Github": "https://github.com/IST34Token", - "Homepage": "https://hiperteknoloji.org" + "Github": "https://github.com/paxosglobal", + "Homepage": "https://www.paxos.com/standard" }, - "marketcap_usd": 0, - "name": "IST34 Token", + "marketcap_usd": 122990112.18377115, + "name": "Paxos Standard (PAX)", "network": "eth", - "shortcut": "IST34", - "t1_enabled": "yes", + "shortcut": "PAX", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -9819,16 +18222,15 @@ } ] }, - "erc20:eth:ITC": { - "address": "0x5E6b6d9aBAd9093fdc861Ea1600eBa1b355Cd940", + "erc20:eth:PAY": { + "address": "0xB97048628DB6B661D4C2aA833e95Dbe1A905B280", "links": { - "Github": "https://github.com/IoTChainCode", - "Homepage": "https://iotchain.io/" + "Homepage": "http://www.tenx.tech" }, - "marketcap_usd": 8183004, - "name": "IoT Chain", + "marketcap_usd": 27551611.421412956, + "name": "TenX", "network": "eth", - "shortcut": "ITC", + "shortcut": "PAY", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -9847,16 +18249,15 @@ } ] }, - "erc20:eth:ITT": { - "address": "0x0aeF06DcCCC531e581f0440059E6FfCC206039EE", + "erc20:eth:PBL": { + "address": "0x55648De19836338549130B1af587F16beA46F66B", "links": { - "Github": "https://github.com/IntelligentTrading", - "Homepage": "http://intelligenttrading.org" + "Homepage": "https://publica.io" }, "marketcap_usd": 0, - "name": "ITT Token", + "name": "PBL", "network": "eth", - "shortcut": "ITT", + "shortcut": "PBL", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -9875,15 +18276,15 @@ } ] }, - "erc20:eth:IXT": { - "address": "0xfcA47962D45ADFdfd1Ab2D972315dB4ce7CCf094", + "erc20:eth:PBT": { + "address": "0xF4c07b1865bC326A3c01339492Ca7538FD038Cc0", "links": { - "Homepage": "https://www.insurex.co" + "Homepage": "http://primalbase.com/" }, "marketcap_usd": 0, - "name": "InsureX", + "name": "Primalbase Token (PBT)", "network": "eth", - "shortcut": "IXT", + "shortcut": "PBT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -9902,15 +18303,16 @@ } ] }, - "erc20:eth:IoT": { - "address": "0xC34B21f6F8e51cC965c2393B3ccFa3b82BEb2403", + "erc20:eth:PCL": { + "address": "0x3618516F45CD3c913F81F9987AF41077932Bc40d", "links": { - "Homepage": "http://www.bitcoin-biz.net" + "Github": "https://github.com/PeculiumPCL/Peculium", + "Homepage": "https://peculium.io" }, - "marketcap_usd": 0, - "name": "IoT\u30b3\u30a4\u30f3", + "marketcap_usd": 2538878.2656619675, + "name": "Peculium", "network": "eth", - "shortcut": "IoT", + "shortcut": "PCL", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -9929,16 +18331,16 @@ } ] }, - "erc20:eth:J8T": { - "address": "0x0D262e5dC4A06a0F1c90cE79C7a60C09DfC884E4", + "erc20:eth:PCLOLD": { + "address": "0x53148Bb4551707edF51a1e8d7A93698d18931225", "links": { - "Github": "https://github.com/jet8", - "Homepage": "https://jet8.io" + "Github": "https://github.com/PeculiumPCL/Peculium", + "Homepage": "https://peculium.io" }, "marketcap_usd": 0, - "name": "J8T Token", + "name": "PeculiumOLD", "network": "eth", - "shortcut": "J8T", + "shortcut": "PCLOLD", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -9957,16 +18359,17 @@ } ] }, - "erc20:eth:JET": { - "address": "0x8727c112C712c4a03371AC87a74dD6aB104Af768", + "erc20:eth:PDATA": { + "address": "0x0db03B6CDe0B2d427C64a04FeAfd825938368f1F", "links": { - "Homepage": "https://jetcoin.io" + "Github": "https://github.com/opiria-pdata/Pdata", + "Homepage": "https://opiria.io" }, "marketcap_usd": 0, - "name": "JET", + "name": "PDATA", "network": "eth", - "shortcut": "JET", - "t1_enabled": "yes", + "shortcut": "PDATA", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -9984,16 +18387,16 @@ } ] }, - "erc20:eth:JNT": { - "address": "0xa5Fd1A791C4dfcaacC963D4F73c6Ae5824149eA7", + "erc20:eth:PET": { + "address": "0x5884969Ec0480556E11d119980136a4C17eDDEd1", "links": { - "Github": "https://github.com/jibrelnetwork", - "Homepage": "https://jibrel.network" + "Github": "https://github.com/Pethereum", + "Homepage": "https://pethereum.org/" }, "marketcap_usd": 0, - "name": "JNT", + "name": "PETHEREUM", "network": "eth", - "shortcut": "JNT", + "shortcut": "PET", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -10012,15 +18415,15 @@ } ] }, - "erc20:eth:JOY": { - "address": "0xDDe12a12A6f67156e0DA672be05c374e1B0a3e57", + "erc20:eth:PEXT": { + "address": "0x55c2A0C171D920843560594dE3d6EEcC09eFc098", "links": { - "Homepage": "https://joyso.io/" + "Homepage": "https://prime-ex.com" }, "marketcap_usd": 0, - "name": "JOYSO", + "name": "PEX-Token", "network": "eth", - "shortcut": "JOY", + "shortcut": "PEXT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -10039,15 +18442,15 @@ } ] }, - "erc20:eth:KC": { - "address": "0x0D6DD9f68d24EC1d5fE2174f3EC8DAB52B52BaF5", + "erc20:eth:PFR": { + "address": "0x2FA32a39fc1c399E0Cc7B2935868f5165De7cE97", "links": { - "Homepage": "https://www.kmcc.io" + "Homepage": "https://payfair.io" }, - "marketcap_usd": 0, - "name": "KMCC", + "marketcap_usd": 381173.8567802593, + "name": "Payfair", "network": "eth", - "shortcut": "KC", + "shortcut": "PFR", "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", @@ -10066,17 +18469,16 @@ } ] }, - "erc20:eth:KICK": { - "address": "0x27695E09149AdC738A978e9A678F99E4c39e9eb9", + "erc20:eth:PHI": { + "address": "0x13C2fab6354d3790D8ece4f0f1a3280b4A25aD96", "links": { - "Github": "https://github.com/kickico", - "Homepage": "https://www.kickico.com" + "Homepage": "https://www.phitoken.io" }, - "marketcap_usd": 0, - "name": "KICK", + "marketcap_usd": 468595.99830765085, + "name": "PHI Token", "network": "eth", - "shortcut": "KICK", - "t1_enabled": "yes", + "shortcut": "PHI", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -10094,16 +18496,15 @@ } ] }, - "erc20:eth:KIN": { - "address": "0x818Fc6C2Ec5986bc6E2CBf00939d90556aB12ce5", + "erc20:eth:PIPL": { + "address": "0xE64509F0bf07ce2d29A7eF19A8A9bc065477C1B4", "links": { - "Github": "https://github.com/kikinteractive/kin-token", - "Homepage": "https://kin.kik.com" + "Homepage": "https://piplcoin.com" }, - "marketcap_usd": 23231988, - "name": "Kin Foundation", + "marketcap_usd": 0, + "name": "PIPL Coin", "network": "eth", - "shortcut": "KIN", + "shortcut": "PIPL", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -10122,18 +18523,17 @@ } ] }, - "erc20:eth:KNC": { - "address": "0xdd974D5C2e2928deA5F71b9825b8b646686BD200", + "erc20:eth:PIT": { + "address": "0x0fF161071e627A0E6de138105C73970F86ca7922", "links": { - "Github": "https://github.com/KyberNetwork", - "Homepage": "https://kyber.network" + "Homepage": "https://paypite.org" }, - "marketcap_usd": 20946396, - "name": "Kyber Network", + "marketcap_usd": 0, + "name": "Paypite v2", "network": "eth", - "shortcut": "KNC", - "t1_enabled": "yes", - "t2_enabled": "yes", + "shortcut": "PIT", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20", "wallet": [ { @@ -10150,16 +18550,15 @@ } ] }, - "erc20:eth:KPR": { - "address": "0xb5C33F965C8899D255c34CDD2A3efA8AbCbB3DeA", + "erc20:eth:PIX": { + "address": "0x8eFFd494eB698cc399AF6231fCcd39E08fd20B15", "links": { - "Github": "https://github.com/KPRToken/KPR-code-for-ICO", - "Homepage": "https://www.kprms.com/" + "Homepage": "https://www.lampix.co" }, - "marketcap_usd": 0, - "name": "KPRCoin", + "marketcap_usd": 561902.2984974828, + "name": "Lampix", "network": "eth", - "shortcut": "KPR", + "shortcut": "PIX", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -10178,17 +18577,16 @@ } ] }, - "erc20:eth:KRL": { - "address": "0x464eBE77c293E473B48cFe96dDCf88fcF7bFDAC0", + "erc20:eth:PKG": { + "address": "0x02F2D4a04E6E01aCE88bD2Cd632875543b2eF577", "links": { - "Github": "https://github.com/Cryptense/", - "Homepage": "https://kryll.io/" + "Homepage": "http://pkgtoken.io" }, - "marketcap_usd": 374093, - "name": "Kryll", + "marketcap_usd": 63645.5671202678, + "name": "PKG Token", "network": "eth", - "shortcut": "KRL", - "t1_enabled": "yes", + "shortcut": "PKG", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -10206,15 +18604,15 @@ } ] }, - "erc20:eth:KUE": { - "address": "0xdf1338FbAfe7aF1789151627B886781ba556eF9a", + "erc20:eth:PKT": { + "address": "0x2604FA406Be957E542BEb89E6754fCdE6815e83f", "links": { - "Homepage": "https://ico.kuende.com" + "Homepage": "https://playkey.io" }, - "marketcap_usd": 0, - "name": "Kuende Token", + "marketcap_usd": 351802.2172334798, + "name": "Playkey", "network": "eth", - "shortcut": "KUE", + "shortcut": "PKT", "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", @@ -10233,15 +18631,15 @@ } ] }, - "erc20:eth:KZN": { - "address": "0x9541FD8B9b5FA97381783783CeBF2F5fA793C262", + "erc20:eth:PLASMA": { + "address": "0x59416A25628A76b4730eC51486114c32E0B582A1", "links": { - "Homepage": "http://kaizencoin.io" + "Homepage": "https://plasma.io" }, "marketcap_usd": 0, - "name": "KaizenCoin", + "name": "PLASMA", "network": "eth", - "shortcut": "KZN", + "shortcut": "PLASMA", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -10260,16 +18658,15 @@ } ] }, - "erc20:eth:LA": { - "address": "0xE50365f5D679CB98a1dd62D6F6e58e59321BcdDf", + "erc20:eth:PLBT": { + "address": "0x0AfFa06e7Fbe5bC9a764C979aA66E8256A631f02", "links": { - "Github": "https://github.com/latoken", - "Homepage": "https://latoken.com/" + "Homepage": "https://polybius.io" }, - "marketcap_usd": 4766701, - "name": "LATOKEN", + "marketcap_usd": 3607345.6294503585, + "name": "Polybius", "network": "eth", - "shortcut": "LA", + "shortcut": "PLBT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -10288,15 +18685,16 @@ } ] }, - "erc20:eth:LALA": { - "address": "0xfD107B473AB90e8Fbd89872144a3DC92C40Fa8C9", + "erc20:eth:PLR": { + "address": "0xe3818504c1B32bF1557b16C238B2E01Fd3149C17", "links": { - "Homepage": "https://lalaworld.io/" + "Github": "https://github.com/twentythirty/PillarToken", + "Homepage": "https://www.pillarproject.io" }, - "marketcap_usd": 0, - "name": "LALA World Token", + "marketcap_usd": 8668812.225489786, + "name": "Pillar Project", "network": "eth", - "shortcut": "LALA", + "shortcut": "PLR", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -10315,15 +18713,16 @@ } ] }, - "erc20:eth:LDC": { - "address": "0x5102791cA02FC3595398400BFE0e33d7B6C82267", + "erc20:eth:PLS": { + "address": "0xe43ac1714F7394173b15E7CfF31A63d523Ce4fB9", "links": { - "Homepage": "https://www.leadcoin.network/" + "Github": "https://github.com/bitsuperlab", + "Homepage": "https://dacplay.org" }, - "marketcap_usd": 268548, - "name": "LEADCOIN", + "marketcap_usd": 0, + "name": "DACPLAY Token", "network": "eth", - "shortcut": "LDC", + "shortcut": "PLS", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -10342,16 +18741,15 @@ } ] }, - "erc20:eth:LEND": { - "address": "0x80fB784B7eD66730e8b1DBd9820aFD29931aab03", + "erc20:eth:PLU": { + "address": "0xD8912C10681D8B21Fd3742244f44658dBA12264E", "links": { - "Github": "https://github.com/ETHLend", - "Homepage": "https://ethlend.io/" + "Homepage": "https://plutus.it" }, - "marketcap_usd": 0, - "name": "EHTLend", + "marketcap_usd": 425894.7980387008, + "name": "Pluton", "network": "eth", - "shortcut": "LEND", + "shortcut": "PLU", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -10370,16 +18768,16 @@ } ] }, - "erc20:eth:LFR": { - "address": "0xc798cd1c49db0E297312E4c682752668CE1dB2AD", + "erc20:eth:PMA": { + "address": "0x846C66cf71C43f80403B51fE3906B3599D63336f", "links": { - "Homepage": "https://www.liferun.cc" + "Homepage": "https://pumapay.io" }, - "marketcap_usd": 0, - "name": "LifeRun Coin", + "marketcap_usd": 11598807.948196672, + "name": "PumaPay", "network": "eth", - "shortcut": "LFR", - "t1_enabled": "yes", + "shortcut": "PMA", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -10397,15 +18795,15 @@ } ] }, - "erc20:eth:LG": { - "address": "0xc520F3Ac303a107D8F4B08b326B6ea66A4f961cd", + "erc20:eth:PMNT": { + "address": "0x81b4D08645DA11374a03749AB170836E4e539767", "links": { - "Homepage": "https://android.myapp.com/myapp/detail.htm?apkName=com.inspiration.lemoCard" + "Homepage": "https://paymon.org" }, - "marketcap_usd": 0, - "name": "LG", + "marketcap_usd": 431943.17076677666, + "name": "Paymon", "network": "eth", - "shortcut": "LG", + "shortcut": "PMNT", "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", @@ -10424,16 +18822,17 @@ } ] }, - "erc20:eth:LGO": { - "address": "0x123aB195DD38B1b40510d467a6a359b201af056f", + "erc20:eth:PNK": { + "address": "0x93ED3FBe21207Ec2E8f2d3c3de6e058Cb73Bc04d", "links": { - "Homepage": "https://legolas.exchange/" + "Github": "https://github.com/kleros", + "Homepage": "https://kleros.io" }, - "marketcap_usd": 0, - "name": "LGO", + "marketcap_usd": 1057074.3783200344, + "name": "Pinakion", "network": "eth", - "shortcut": "LGO", - "t1_enabled": "yes", + "shortcut": "PNK", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -10451,15 +18850,15 @@ } ] }, - "erc20:eth:LGR": { - "address": "0x2eb86e8fC520E0F6Bb5D9Af08F924fe70558Ab89", + "erc20:eth:POE": { + "address": "0x0e0989b1f9B8A38983c2BA8053269Ca62Ec9B195", "links": { - "Homepage": "https://getlogarithm.com" + "Homepage": "https://po.et" }, - "marketcap_usd": 0, - "name": "Logarithm", + "marketcap_usd": 11574220.164731447, + "name": "Po.et Tokens", "network": "eth", - "shortcut": "LGR", + "shortcut": "POE", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -10478,16 +18877,16 @@ } ] }, - "erc20:eth:LIBER": { - "address": "0xE6DfBF1FAcA95036B8E76e1Fb28933D025B76Cc0", + "erc20:eth:POIN": { + "address": "0x43F6a1BE992deE408721748490772B15143CE0a7", "links": { - "Homepage": "https://www.libereum.io" + "Homepage": "https://potatoin.foundation" }, "marketcap_usd": 0, - "name": "Libereum", + "name": "Potatoin", "network": "eth", - "shortcut": "LIBER", - "t1_enabled": "soon", + "shortcut": "POIN", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -10505,17 +18904,16 @@ } ] }, - "erc20:eth:LIF": { - "address": "0xEB9951021698B42e4399f9cBb6267Aa35F82D59D", + "erc20:eth:POLL": { + "address": "0x705EE96c1c160842C92c1aeCfCFfccc9C412e3D9", "links": { - "Github": "https://github.com/windingtree", - "Homepage": "https://windingtree.com/" + "Homepage": "https://clearpoll.com" }, - "marketcap_usd": 0, - "name": "LIF", + "marketcap_usd": 705731.8513183102, + "name": "ClearPoll", "network": "eth", - "shortcut": "LIF", - "t1_enabled": "yes", + "shortcut": "POLL", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -10533,15 +18931,15 @@ } ] }, - "erc20:eth:LIFE": { - "address": "0xfF18DBc487b4c2E3222d115952bABfDa8BA52F5F", + "erc20:eth:POLY": { + "address": "0x9992eC3cF6A55b00978cdDF2b27BC6882d88D1eC", "links": { - "Homepage": "http://www.lifelabs.io" + "Homepage": "https://polymath.network" }, - "marketcap_usd": 1132669, - "name": "LIFE", + "marketcap_usd": 25540862.839835323, + "name": "Polymath Network", "network": "eth", - "shortcut": "LIFE", + "shortcut": "POLY", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -10560,15 +18958,15 @@ } ] }, - "erc20:eth:LINK (Chainlink)": { - "address": "0x514910771AF9Ca656af840dff83E8264EcF986CA", + "erc20:eth:POOL": { + "address": "0x779B7b713C86e3E6774f5040D9cCC2D43ad375F8", "links": { - "Homepage": "https://link.smartcontract.com" + "Homepage": "http://stakepool.co" }, - "marketcap_usd": 102718780, - "name": "Chainlink", + "marketcap_usd": 0, + "name": "Stake Pool", "network": "eth", - "shortcut": "LINK (Chainlink)", + "shortcut": "POOL", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -10587,17 +18985,18 @@ } ] }, - "erc20:eth:LIVE": { - "address": "0x24A77c1F17C547105E14813e517be06b0040aa76", + "erc20:eth:POP": { + "address": "0x5D858bcd53E085920620549214a8b27CE2f04670", "links": { - "Homepage": "https://livestars.io" + "Github": "https://github.com/popchest", + "Homepage": "https://www.thepopnetwork.org" }, "marketcap_usd": 0, - "name": "LIVE Token", + "name": "POP Network Token", "network": "eth", - "shortcut": "LIVE", - "t1_enabled": "yes", - "t2_enabled": "yes", + "shortcut": "POP", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20", "wallet": [ { @@ -10614,17 +19013,17 @@ } ] }, - "erc20:eth:LML": { - "address": "0x25B6325f5BB1c1E03cfbC3e53F470E1F1ca022E3", + "erc20:eth:POS": { + "address": "0xEe609fE292128Cad03b786DBb9Bc2634Ccdbe7fC", "links": { - "Github": "https://github.com/GNYIO", - "Homepage": "https://www.gny.io/" + "Github": "https://github.com/PoSToken", + "Homepage": "https://postoken.org" }, - "marketcap_usd": 0, - "name": "LML", + "marketcap_usd": 5936.053333699051, + "name": "PoSToken", "network": "eth", - "shortcut": "LML", - "t1_enabled": "soon", + "shortcut": "POS", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -10642,16 +19041,15 @@ } ] }, - "erc20:eth:LND": { - "address": "0x0947b0e6D821378805c9598291385CE7c791A6B2", + "erc20:eth:POWR": { + "address": "0x595832F8FC6BF59c85C527fEC3740A1b7a361269", "links": { - "Github": "https://github.com/lendingblock", - "Homepage": "https://lendingblock.com" + "Homepage": "https://powerledger.io" }, - "marketcap_usd": 3334080, - "name": "Lendingblock", + "marketcap_usd": 31246017.55950815, + "name": "PowerLedger", "network": "eth", - "shortcut": "LND", + "shortcut": "POWR", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -10670,15 +19068,15 @@ } ] }, - "erc20:eth:LOC": { - "address": "0x5e3346444010135322268a4630d2ED5F8D09446c", + "erc20:eth:PPP": { + "address": "0xc42209aCcC14029c1012fB5680D95fBd6036E2a0", "links": { - "Homepage": "https://LockChain.co" + "Homepage": "https://www.paypie.com" }, - "marketcap_usd": 7610643, - "name": "LockChain", + "marketcap_usd": 7991400.47175525, + "name": "PayPie", "network": "eth", - "shortcut": "LOC", + "shortcut": "PPP", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -10697,16 +19095,15 @@ } ] }, - "erc20:eth:LOCI": { - "address": "0x9c23D67AEA7B95D80942e3836BCDF7E708A747C2", + "erc20:eth:PPT": { + "address": "0xd4fa1460F537bb9085d22C7bcCB5DD450Ef28e3a", "links": { - "Github": "http://github.com/locipro/loci-coin-sale", - "Homepage": "https://locipro.com" + "Homepage": "https://populous.co" }, - "marketcap_usd": 495457, - "name": "LOCIcoin", + "marketcap_usd": 62738173.45633133, + "name": "Populous", "network": "eth", - "shortcut": "LOCI", + "shortcut": "PPT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -10725,15 +19122,15 @@ } ] }, - "erc20:eth:LOCUS": { - "address": "0xC64500DD7B0f1794807e67802F8Abbf5F8Ffb054", + "erc20:eth:PRE": { + "address": "0x88A3E4F35D64aAD41A6d4030ac9AFE4356cB84fA", "links": { - "Homepage": "https://www.locuschain.com" + "Homepage": "https://presearch.io" }, - "marketcap_usd": 0, - "name": "Locus Chain", + "marketcap_usd": 4345036.5395735, + "name": "Presearch", "network": "eth", - "shortcut": "LOCUS", + "shortcut": "PRE", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -10752,15 +19149,16 @@ } ] }, - "erc20:eth:LOK": { - "address": "0x21aE23B882A340A22282162086bC98D3E2B73018", + "erc20:eth:PRG": { + "address": "0x7728dFEF5aBd468669EB7f9b48A7f70a501eD29D", "links": { - "Homepage": "https://lookrev.com" + "Github": "https://github.com/paragon-coin/token", + "Homepage": "https://paragoncoin.com" }, - "marketcap_usd": 0, - "name": "LOK", + "marketcap_usd": 6175051.796778297, + "name": "Paragon", "network": "eth", - "shortcut": "LOK", + "shortcut": "PRG", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -10779,16 +19177,16 @@ } ] }, - "erc20:eth:LOOK": { - "address": "0x253C7dd074f4BaCb305387F922225A4f737C08bd", + "erc20:eth:PRIX": { + "address": "0x3ADfc4999F77D04c8341BAC5F3A76f58DfF5B37A", "links": { - "Homepage": "https://lookrev.com" + "Homepage": "https://privatix.io" }, - "marketcap_usd": 0, - "name": "LookRev", + "marketcap_usd": 910882.5100423446, + "name": "Privatix", "network": "eth", - "shortcut": "LOOK", - "t1_enabled": "yes", + "shortcut": "PRIX", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -10806,16 +19204,16 @@ } ] }, - "erc20:eth:LOOM": { - "address": "0xA4e8C3Ec456107eA67d3075bF9e3DF3A75823DB0", + "erc20:eth:PRL": { + "address": "0x1844b21593262668B7248d0f57a220CaaBA46ab9", "links": { - "Github": "github.com/loomnetwork/", - "Homepage": "https://loomx.io" + "Github": "https://github.com/oysterprotocol", + "Homepage": "https://oyster.ws" }, "marketcap_usd": 0, - "name": "LOOM", + "name": "Oyster Pearl", "network": "eth", - "shortcut": "LOOM", + "shortcut": "PRL", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -10834,16 +19232,15 @@ } ] }, - "erc20:eth:LPT": { - "address": "0x58b6A8A3302369DAEc383334672404Ee733aB239", + "erc20:eth:PRON": { + "address": "0xA3149E0fA0061A9007fAf307074cdCd290f0e2Fd", "links": { - "Github": "https://github.com/livepeer", - "Homepage": "https://livepeer.org/" + "Homepage": "https://proncoin.io" }, "marketcap_usd": 0, - "name": "Livepeer Token", + "name": "PronCoin", "network": "eth", - "shortcut": "LPT", + "shortcut": "PRON", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -10862,15 +19259,16 @@ } ] }, - "erc20:eth:LRC": { - "address": "0xEF68e7C694F40c8202821eDF525dE3782458639f", + "erc20:eth:PRS": { + "address": "0x163733bcc28dbf26B41a8CfA83e369b5B3af741b", "links": { - "Homepage": "https://loopring.org" + "Github": "https://github.com/Neurone/persians", + "Homepage": "http://persians.network" }, "marketcap_usd": 0, - "name": "LRC", + "name": "Persians", "network": "eth", - "shortcut": "LRC", + "shortcut": "PRS", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -10889,16 +19287,15 @@ } ] }, - "erc20:eth:LUC": { - "address": "0x5dbe296F97B23C4A6AA6183D73e574D02bA5c719", + "erc20:eth:PRSP": { + "address": "0x0C04d4f331DA8dF75f9E2e271E3f3F1494C66C36", "links": { - "Github": "https://github.com/Play2Live/blockchain", - "Homepage": "https://play2live.io" + "Homepage": "http://www.prsp.me" }, "marketcap_usd": 0, - "name": "LUCToken", + "name": "PRSP", "network": "eth", - "shortcut": "LUC", + "shortcut": "PRSP", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -10917,16 +19314,16 @@ } ] }, - "erc20:eth:LUCK": { - "address": "0xFB12e3CcA983B9f59D90912Fd17F8D745A8B2953", + "erc20:eth:PST": { + "address": "0x5d4ABC77B8405aD177d8ac6682D584ecbFd46CEc", "links": { - "Homepage": "http://www.luckytoken.info" + "Homepage": "https://primas.io" }, - "marketcap_usd": 0, - "name": "LUCK", + "marketcap_usd": 4008477.014729622, + "name": "Primas", "network": "eth", - "shortcut": "LUCK", - "t1_enabled": "yes", + "shortcut": "PST", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -10944,15 +19341,16 @@ } ] }, - "erc20:eth:LUM": { - "address": "0xA89b5934863447f6E4Fc53B315a93e873bdA69a3", + "erc20:eth:PT": { + "address": "0x66497A283E0a007bA3974e837784C6AE323447de", "links": { - "Homepage": "https://www.luminocoin.com" + "Github": "https://github.com/porntoken/smart_contract", + "Homepage": "https://www.porntoken.io" }, "marketcap_usd": 0, - "name": "Lumino Coin", + "name": "PornToken", "network": "eth", - "shortcut": "LUM", + "shortcut": "PT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -10971,16 +19369,15 @@ } ] }, - "erc20:eth:LUN": { - "address": "0xfa05A73FfE78ef8f1a739473e462c54bae6567D9", + "erc20:eth:PTOY": { + "address": "0x8Ae4BF2C33a8e667de34B54938B0ccD03Eb8CC06", "links": { - "Github": "https://github.com/lunyr", - "Homepage": "https://lunyr.com" + "Homepage": "https://patientory.com" }, - "marketcap_usd": 0, - "name": "LUN", + "marketcap_usd": 980919.782745, + "name": "PTOY", "network": "eth", - "shortcut": "LUN", + "shortcut": "PTOY", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -10999,17 +19396,16 @@ } ] }, - "erc20:eth:LYS": { - "address": "0xdD41fBd1Ae95C5D9B198174A28e04Be6b3d1aa27", + "erc20:eth:PTT": { + "address": "0x4689a4e169eB39cC9078C0940e21ff1Aa8A39B9C", "links": { - "Github": "https://github.com/LIGHTYEARS-LYS/LIGHTYEARS-Token", - "Homepage": "https://lightyearstoken.com" + "Homepage": "https://www.proton.global" }, - "marketcap_usd": 0, - "name": "Lightyears", + "marketcap_usd": 250421.86338980525, + "name": "Proton Token", "network": "eth", - "shortcut": "LYS", - "t1_enabled": "yes", + "shortcut": "PTT", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -11027,15 +19423,16 @@ } ] }, - "erc20:eth:M-ETH": { - "address": "0x3f4B726668da46f5e0E75aA5D478ACEc9f38210F", + "erc20:eth:PTWO": { + "address": "0x5512e1D6A7BE424b4323126B4f9E86D023F95764", "links": { - "Homepage": "http://www.mostexclusive.com" + "Github": "https://github.com/porntoken/smart_contract", + "Homepage": "https://www.porntoken.io" }, "marketcap_usd": 0, - "name": "M-ETH", + "name": "PornTokenV2", "network": "eth", - "shortcut": "M-ETH", + "shortcut": "PTWO", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11054,15 +19451,16 @@ } ] }, - "erc20:eth:MAD": { - "address": "0x5B09A0371C1DA44A8E24D36Bf5DEb1141a84d875", + "erc20:eth:PUC": { + "address": "0xEf6B4cE8C9Bc83744fbcdE2657b32eC18790458A", "links": { - "Homepage": "https://madnetwork.io" + "Github": "https://github.com/pourcoin/pourcoin-PUC/projects", + "Homepage": "http://price-s.info" }, "marketcap_usd": 0, - "name": "MAD", + "name": "Pour Coin", "network": "eth", - "shortcut": "MAD", + "shortcut": "PUC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11081,16 +19479,16 @@ } ] }, - "erc20:eth:MAN": { - "address": "0xe25bCec5D3801cE3a794079BF94adF1B8cCD802D", + "erc20:eth:PURC": { + "address": "0xe25ff6Eb959BCE67975778e46A47750C243B6B99", "links": { - "Github": "https://github.com/MatrixAINetwork", - "Homepage": "https://www.matrix.io" + "Github": "https://github.com/seanyc99/PureCarbon-Smart-Contract", + "Homepage": "https://purecarbon.io" }, "marketcap_usd": 0, - "name": "MAN", + "name": "PureCarbon", "network": "eth", - "shortcut": "MAN", + "shortcut": "PURC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11109,16 +19507,15 @@ } ] }, - "erc20:eth:MANA": { - "address": "0x0F5D2fB29fb7d3CFeE444a200298f468908cC942", + "erc20:eth:PXT": { + "address": "0xc14830E53aA344E8c14603A91229A0b925b0B262", "links": { - "Github": "https://github.com/decentraland", - "Homepage": "https://decentraland.org" + "Homepage": "https://populous.co" }, "marketcap_usd": 0, - "name": "Decentraland MANA", + "name": "Populous XBRL Token (PXT)", "network": "eth", - "shortcut": "MANA", + "shortcut": "PXT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11137,16 +19534,16 @@ } ] }, - "erc20:eth:MART": { - "address": "0xfdcc07Ab60660de533b5Ad26e1457b565a9D59Bd", + "erc20:eth:PYLNT": { + "address": "0x7703C35CfFdC5CDa8D27aa3df2F9ba6964544b6e", "links": { - "Homepage": "https://martcoin.io" + "Homepage": "https://pylon-network.org" }, - "marketcap_usd": 0, - "name": "Martcoin", + "marketcap_usd": 316153.35276769754, + "name": "Pylon Network", "network": "eth", - "shortcut": "MART", - "t1_enabled": "yes", + "shortcut": "PYLNT", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -11164,16 +19561,15 @@ } ] }, - "erc20:eth:MBRS": { - "address": "0x386467F1f3ddbE832448650418311a479EECFC57", + "erc20:eth:QASH": { + "address": "0x618E75Ac90b12c6049Ba3b27f5d5F8651b0037F6", "links": { - "Github": "https://github.com/theembermine", - "Homepage": "https://embermine.com/" + "Homepage": "https://liquid.plus" }, - "marketcap_usd": 34616, - "name": "Embers", + "marketcap_usd": 22884950.749185003, + "name": "QASH", "network": "eth", - "shortcut": "MBRS", + "shortcut": "QASH", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11192,16 +19588,15 @@ } ] }, - "erc20:eth:MCI": { - "address": "0x138A8752093F4f9a79AaeDF48d4B9248fab93c9C", + "erc20:eth:QAU": { + "address": "0x671AbBe5CE652491985342e85428EB1b07bC6c64", "links": { - "Github": "https://github.com/musiconomi/", - "Homepage": "https://musiconomi.com/" + "Homepage": "http://www.quantumproject.org" }, - "marketcap_usd": 104650, - "name": "Musiconomi", + "marketcap_usd": 0, + "name": "QAU", "network": "eth", - "shortcut": "MCI", + "shortcut": "QAU", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11220,15 +19615,16 @@ } ] }, - "erc20:eth:MCO": { - "address": "0xB63B606Ac810a52cCa15e44bB630fd42D8d1d83d", + "erc20:eth:QBX": { + "address": "0x2467AA6B5A2351416fD4C3DeF8462d841feeecEC", "links": { - "Homepage": "https://mona.co" + "Github": "https://github.com/qiibee", + "Homepage": "https://www.qiibee.com" }, "marketcap_usd": 0, - "name": "MCO", + "name": "qiibeeToken", "network": "eth", - "shortcut": "MCO", + "shortcut": "QBX", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11247,16 +19643,16 @@ } ] }, - "erc20:eth:MDA": { - "address": "0x51DB5Ad35C671a87207d88fC11d593AC0C8415bd", + "erc20:eth:QKC": { + "address": "0xEA26c4aC16D4a5A106820BC8AEE85fd0b7b2b664", "links": { - "Homepage": "https://moeda.in" + "Homepage": "https://quarkchain.io" }, - "marketcap_usd": 0, - "name": "MDA", + "marketcap_usd": 23375416.35710599, + "name": "QuarkChain", "network": "eth", - "shortcut": "MDA", - "t1_enabled": "yes", + "shortcut": "QKC", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -11274,16 +19670,16 @@ } ] }, - "erc20:eth:MEST": { - "address": "0x5B8D43FfdE4a2982B9A5387cDF21D54Ead64Ac8d", + "erc20:eth:QNT": { + "address": "0x4a220E6096B25EADb88358cb44068A3248254675", "links": { - "Github": "https://github.com/monacoestate", - "Homepage": "https://monacoestate.io/" + "Github": "https://github.com/quantnetwork", + "Homepage": "https://www.quant.network/" }, - "marketcap_usd": 0, - "name": "Monaco Estate", + "marketcap_usd": 22478559.041123416, + "name": "Quant", "network": "eth", - "shortcut": "MEST", + "shortcut": "QNT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11302,16 +19698,15 @@ } ] }, - "erc20:eth:MFG": { - "address": "0x6710c63432A2De02954fc0f851db07146a6c0312", + "erc20:eth:QRG": { + "address": "0xFFAA5ffc455d9131f8A2713A741fD1960330508B", "links": { - "Github": "https://github.com/syncfab", - "Homepage": "https://syncfab.com/" + "Homepage": "http://qrg-stamps.com/" }, "marketcap_usd": 0, - "name": "SyncFab Smart Manufacturing Blockchain", + "name": "QRG", "network": "eth", - "shortcut": "MFG", + "shortcut": "QRG", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11330,16 +19725,16 @@ } ] }, - "erc20:eth:MFT": { - "address": "0xDF2C7238198Ad8B389666574f2d8bc411A4b7428", + "erc20:eth:QRL": { + "address": "0x697beac28B09E122C4332D163985e8a73121b97F", "links": { - "Github": "https://github.com/MainframeHQ", - "Homepage": "https://mainframe.com" + "Github": "https://github.com/theQRL", + "Homepage": "https://theqrl.org" }, "marketcap_usd": 0, - "name": "Mainframe Token", + "name": "QRL", "network": "eth", - "shortcut": "MFT", + "shortcut": "QRL", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11358,15 +19753,16 @@ } ] }, - "erc20:eth:MFTU": { - "address": "0x05D412CE18F24040bB3Fa45CF2C69e506586D8e8", + "erc20:eth:QSP": { + "address": "0x99ea4dB9EE77ACD40B119BD1dC4E33e1C070b80d", "links": { - "Homepage": "https://mftu.net" + "Github": "https://github.com/quantstamp", + "Homepage": "https://quantstamp.com/" }, - "marketcap_usd": 22480, - "name": "Mainstream For The Underground", + "marketcap_usd": 8758537.326160954, + "name": "Quantstamp Token", "network": "eth", - "shortcut": "MFTU", + "shortcut": "QSP", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11385,15 +19781,16 @@ } ] }, - "erc20:eth:MGO": { - "address": "0x40395044Ac3c0C57051906dA938B54BD6557F212", + "erc20:eth:QTQ": { + "address": "0x2C3C1F05187dBa7A5f2Dd47Dca57281C4d4F183F", "links": { - "Homepage": "https://gamecredits.com/mobilego" + "Github": "https://github.com/TiiQu-Network/TiiQu-Network", + "Homepage": "http://tiiqu.com" }, "marketcap_usd": 0, - "name": "MGO", + "name": "TiiQu's Q Token", "network": "eth", - "shortcut": "MGO", + "shortcut": "QTQ", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11412,18 +19809,17 @@ } ] }, - "erc20:eth:MKR": { - "address": "0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2", - "coinmarketcap_alias": "maker", + "erc20:eth:QTUM": { + "address": "0x9a642d6b3368ddc662CA244bAdf32cDA716005BC", "links": { - "Github": "https://github.com/makerdao", - "Homepage": "https://makerdao.com" + "Github": "https://github.com/qtumproject", + "Homepage": "https://qtum.org/" }, - "marketcap_usd": 309146518, - "name": "MakerDAO", + "marketcap_usd": 0, + "name": "Qtum", "network": "eth", - "shortcut": "MKR", - "t1_enabled": "soon", + "shortcut": "QTUM", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -11441,17 +19837,16 @@ } ] }, - "erc20:eth:MKT": { - "address": "0x7939882b54fcf0bCAe6b53dEc39Ad6e806176442", + "erc20:eth:QUN": { + "address": "0x264Dc2DedCdcbb897561A57CBa5085CA416fb7b4", "links": { - "Github": "https://github.com/mikadohq", - "Homepage": "https://mikado.io" + "Homepage": "https://qunqun.io" }, - "marketcap_usd": 0, - "name": "Mikado", + "marketcap_usd": 1934789.0625060417, + "name": "QunQun", "network": "eth", - "shortcut": "MKT", - "t1_enabled": "yes", + "shortcut": "QUN", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -11469,15 +19864,15 @@ } ] }, - "erc20:eth:MLN": { - "address": "0xBEB9eF514a379B997e0798FDcC901Ee474B6D9A1", + "erc20:eth:R": { + "address": "0x48f775EFBE4F5EcE6e0DF2f7b5932dF56823B990", "links": { - "Homepage": "https://melonport.com" + "Homepage": "https://revain.org" }, - "marketcap_usd": 0, - "name": "Melonport", + "marketcap_usd": 69793048.3308294, + "name": "Revain", "network": "eth", - "shortcut": "MLN", + "shortcut": "R", "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", @@ -11496,15 +19891,16 @@ } ] }, - "erc20:eth:MNE": { - "address": "0x1a95B271B0535D15fa49932Daba31BA612b52946", + "erc20:eth:RAO": { + "address": "0x45eDb535942a8C84D9f4b5D37e1b25F91Ea4804c", "links": { - "Homepage": "https://minereum.com" + "Github": "https://github.com/RadioYoFM/ICO_smartcontract/", + "Homepage": "https://rao.radioyo.fm" }, "marketcap_usd": 0, - "name": "MNE", + "name": "RadioYo", "network": "eth", - "shortcut": "MNE", + "shortcut": "RAO", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11523,18 +19919,17 @@ } ] }, - "erc20:eth:MNT": { - "address": "0xA9877b1e05D035899131DBd1e403825166D09f92", + "erc20:eth:RATING": { + "address": "0xE8663A64A96169ff4d95b4299E7ae9a76b905B31", "links": { - "Github": "https://github.com/coinjoker/cjtoken", - "Homepage": "https://coinjoker.com" + "Homepage": "http://token.dprating.com" }, - "marketcap_usd": 0, - "name": "Media Network Token", + "marketcap_usd": 644790.8716336725, + "name": "DPRating", "network": "eth", - "shortcut": "MNT", - "t1_enabled": "yes", - "t2_enabled": "yes", + "shortcut": "RATING", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20", "wallet": [ { @@ -11551,16 +19946,16 @@ } ] }, - "erc20:eth:MNTP": { - "address": "0x83cee9e086A77e492eE0bB93C2B0437aD6fdECCc", + "erc20:eth:RBLX": { + "address": "0xFc2C4D8f95002C14eD0a7aA65102Cac9e5953b5E", "links": { - "Github": "https://github.com/Goldmint", - "Homepage": "https://goldmint.io" + "Github": "https://github.com/rublixdev", + "Homepage": "https://rublix.io/" }, - "marketcap_usd": 0, - "name": "Goldmint MNT Prelaunch Token", + "marketcap_usd": 4241816.583243515, + "name": "Rublix", "network": "eth", - "shortcut": "MNTP", + "shortcut": "RBLX", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11579,16 +19974,16 @@ } ] }, - "erc20:eth:MOD": { - "address": "0x957c30aB0426e0C93CD8241E2c60392d08c6aC8e", + "erc20:eth:RCN": { + "address": "0xF970b8E36e23F7fC3FD752EeA86f8Be8D83375A6", "links": { - "Github": "https://github.com/modum-io", - "Homepage": "https://modum.io" + "Github": "https://github.com/ripio/rcn-token", + "Homepage": "https://ripiocredit.network" }, - "marketcap_usd": 7638076, - "name": "Modum", + "marketcap_usd": 5340433.616171048, + "name": "Ripio Credit Network", "network": "eth", - "shortcut": "MOD", + "shortcut": "RCN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11607,17 +20002,17 @@ } ] }, - "erc20:eth:MRL": { - "address": "0x82125AFe01819Dff1535D0D6276d57045291B6c0", + "erc20:eth:RDN": { + "address": "0x255Aa6DF07540Cb5d3d297f0D0D4D84cb52bc8e6", "links": { - "Github": "https://github.com/MarceloMRL", - "Homepage": "https://moneyrebel.io/" + "Github": "https://github.com/raiden-network/raiden/", + "Homepage": "https://raiden.network" }, - "marketcap_usd": 0, - "name": "Marcelo", + "marketcap_usd": 10341849.512080895, + "name": "Raiden Network", "network": "eth", - "shortcut": "MRL", - "t1_enabled": "yes", + "shortcut": "RDN", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -11635,15 +20030,15 @@ } ] }, - "erc20:eth:MRP": { - "address": "0x21f0F0fD3141Ee9E11B3d7f13a1028CD515f459c", + "erc20:eth:REA": { + "address": "0x767bA2915EC344015a7938E3eEDfeC2785195D05", "links": { - "Homepage": "https://moneyrebel.io/" + "Homepage": "https://www.realisto.io" }, "marketcap_usd": 0, - "name": "MoneyRebel Token", + "name": "Realisto", "network": "eth", - "shortcut": "MRP", + "shortcut": "REA", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11662,16 +20057,16 @@ } ] }, - "erc20:eth:MRV": { - "address": "0xAB6CF87a50F17d7F5E1FEaf81B6fE9FfBe8EBF84", + "erc20:eth:REAL": { + "address": "0x9214eC02CB71CbA0ADA6896b8dA260736a67ab10", "links": { - "Homepage": "https://macroverse.io" + "Homepage": "https://www.real.markets" }, - "marketcap_usd": 0, - "name": "MRV", + "marketcap_usd": 938796.9382803963, + "name": "Real Estate Asset Ledger", "network": "eth", - "shortcut": "MRV", - "t1_enabled": "yes", + "shortcut": "REAL", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -11689,15 +20084,15 @@ } ] }, - "erc20:eth:MSP": { - "address": "0x68AA3F232dA9bdC2343465545794ef3eEa5209BD", + "erc20:eth:REBL": { + "address": "0x5F53f7A8075614b699Baad0bC2c899f4bAd8FBBF", "links": { - "Homepage": "https://mothership.cx" + "Homepage": "https://www.rebellious.io" }, - "marketcap_usd": 5880420, - "name": "Mothership", + "marketcap_usd": 773445.3948725174, + "name": "Rebellious", "network": "eth", - "shortcut": "MSP", + "shortcut": "REBL", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11716,15 +20111,16 @@ } ] }, - "erc20:eth:MTH": { - "address": "0xaF4DcE16Da2877f8c9e00544c93B62Ac40631F16", + "erc20:eth:RED": { + "address": "0x76960Dccd5a1fe799F7c29bE9F19ceB4627aEb2f", "links": { - "Homepage": "http://www.monetha.io" + "Github": "https://github.com/red", + "Homepage": "https://ico.red-lang.org" }, - "marketcap_usd": 3935062, - "name": "Monetha", + "marketcap_usd": 766824.0570367093, + "name": "Red Community Token", "network": "eth", - "shortcut": "MTH", + "shortcut": "RED", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11743,15 +20139,16 @@ } ] }, - "erc20:eth:MTL": { - "address": "0xF433089366899D83a9f26A773D59ec7eCF30355e", + "erc20:eth:REDC": { + "address": "0xB563300A3BAc79FC09B93b6F84CE0d4465A2AC27", "links": { - "Homepage": "https://www.metalpay.com" + "Github": "https://github.com/Redcabllc", + "Homepage": "https://redcab.io" }, "marketcap_usd": 0, - "name": "MetalPay", + "name": "RedCab", "network": "eth", - "shortcut": "MTL", + "shortcut": "REDC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11770,16 +20167,16 @@ } ] }, - "erc20:eth:MTN": { - "address": "0x41dBECc1cdC5517C6f76f6a6E836aDbEe2754DE3", + "erc20:eth:REF": { + "address": "0x89303500a7Abfb178B274FD89F2469C264951e1f", "links": { - "Homepage": "https://medicalchain.com" + "Homepage": "https://reftoken.io" }, - "marketcap_usd": 0, - "name": "MedToken", + "marketcap_usd": 400988.8887686271, + "name": "RefToken", "network": "eth", - "shortcut": "MTN", - "t1_enabled": "yes", + "shortcut": "REF", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -11797,16 +20194,16 @@ } ] }, - "erc20:eth:MTR": { - "address": "0x7FC408011165760eE31bE2BF20dAf450356692Af", + "erc20:eth:REM": { + "address": "0x83984d6142934bb535793A82ADB0a46EF0F66B6d", "links": { - "Homepage": "https://mitrav.co" + "Homepage": "https://remme.io" }, - "marketcap_usd": 0, - "name": "Mitrav", + "marketcap_usd": 2647466.0262178243, + "name": "Remme", "network": "eth", - "shortcut": "MTR", - "t1_enabled": "yes", + "shortcut": "REM", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -11824,17 +20221,18 @@ } ] }, - "erc20:eth:MTRc": { - "address": "0x1e49fF77c355A3e38D6651ce8404AF0E48c5395f", + "erc20:eth:REMI": { + "address": "0x13cb85823f78Cff38f0B0E90D3e975b8CB3AAd64", "links": { - "Homepage": "https://modultrade.io" + "Github": "https://github.com/remiit", + "Homepage": "https://remiit.io" }, "marketcap_usd": 0, - "name": "MTRCToken", + "name": "REMI", "network": "eth", - "shortcut": "MTRc", - "t1_enabled": "yes", - "t2_enabled": "yes", + "shortcut": "REMI", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20", "wallet": [ { @@ -11851,15 +20249,16 @@ } ] }, - "erc20:eth:MTX": { - "address": "0x0AF44e2784637218dD1D32A322D44e603A8f0c6A", + "erc20:eth:REN": { + "address": "0x408e41876cCCDC0F92210600ef50372656052a38", "links": { - "Homepage": "https://www.matryx.ai" + "Github": "https://github.com/republicprotocol", + "Homepage": "https://republicprotocol.com" }, - "marketcap_usd": 0, - "name": "MTX", + "marketcap_usd": 10615528.29549307, + "name": "Republic Token", "network": "eth", - "shortcut": "MTX", + "shortcut": "REN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11878,16 +20277,16 @@ } ] }, - "erc20:eth:MUXE": { - "address": "0x515669d308f887Fd83a471C7764F5d084886D34D", + "erc20:eth:REP": { + "address": "0x1985365e9f78359a9B6AD760e32412f4a445E862", "links": { - "Homepage": "https://www.muxe.io" + "Homepage": "https://augur.net" }, - "marketcap_usd": 0, - "name": "MUXE", + "marketcap_usd": 151263146.1792, + "name": "Augur", "network": "eth", - "shortcut": "MUXE", - "t1_enabled": "yes", + "shortcut": "REP", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -11905,16 +20304,15 @@ } ] }, - "erc20:eth:MVP": { - "address": "0x8a77e40936BbC27e80E9a3F526368C967869c86D", + "erc20:eth:REQ": { + "address": "0x8f8221aFbB33998d8584A2B05749bA73c37a938a", "links": { - "Github": "https://github.com/Merculet", - "Homepage": "https://www.merculet.io" + "Homepage": "https://request.network" }, - "marketcap_usd": 914602, - "name": "Merculet", + "marketcap_usd": 14146547.532696635, + "name": "Request Network", "network": "eth", - "shortcut": "MVP", + "shortcut": "REQ", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11933,15 +20331,16 @@ } ] }, - "erc20:eth:MWAT": { - "address": "0x6425c6BE902d692AE2db752B3c268AFAdb099D3b", + "erc20:eth:REX": { + "address": "0xf05a9382A4C3F29E2784502754293D88b835109C", "links": { - "Homepage": "https://www.restartenergy.io" + "Github": "https://github.com/rexmls/RexToken", + "Homepage": "https://imbrex.io" }, - "marketcap_usd": 0, - "name": "RED MWAT", + "marketcap_usd": 189113.06991579288, + "name": "REX", "network": "eth", - "shortcut": "MWAT", + "shortcut": "REX", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11960,15 +20359,15 @@ } ] }, - "erc20:eth:MYST": { - "address": "0xa645264C5603E96c3b0B078cdab68733794B0A71", + "erc20:eth:RFR": { + "address": "0xd0929d411954c47438dc1d871dd6081F5C5e149c", "links": { - "Homepage": "https://mysterium.network" + "Homepage": "https://refereum.com" }, - "marketcap_usd": 1566147, - "name": "Mysterium", + "marketcap_usd": 5643766.307485999, + "name": "Refereum", "network": "eth", - "shortcut": "MYST", + "shortcut": "RFR", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -11987,16 +20386,16 @@ } ] }, - "erc20:eth:NAC": { - "address": "0x8d80de8A78198396329dfA769aD54d24bF90E7aa", + "erc20:eth:RHOC": { + "address": "0x168296bb09e24A88805CB9c33356536B980D3fC5", "links": { - "Homepage": "https://nami.trade" + "Homepage": "https://www.rchain.coop" }, - "marketcap_usd": 0, - "name": "Nami ICO", + "marketcap_usd": 10086385.346874574, + "name": "RChain", "network": "eth", - "shortcut": "NAC", - "t1_enabled": "yes", + "shortcut": "RHOC", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -12014,16 +20413,16 @@ } ] }, - "erc20:eth:NANJ": { - "address": "0xFFE02ee4C69eDf1b340fCaD64fbd6b37a7b9e265", + "erc20:eth:RIPT": { + "address": "0xdd007278B667F6bef52fD0a4c23604aA1f96039a", "links": { - "Github": "https://github.com/NANJ-COIN", - "Homepage": "https://nanjcoin.com/" + "Github": "https://github.com/riptidecoin/riptide-coin", + "Homepage": "https://riptidecoin.com" }, - "marketcap_usd": 3694018, - "name": "NANJCOIN", + "marketcap_usd": 0, + "name": "RiptideCoin", "network": "eth", - "shortcut": "NANJ", + "shortcut": "RIPT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12042,17 +20441,16 @@ } ] }, - "erc20:eth:NAVI": { - "address": "0x588047365dF5BA589F923604AAC23d673555c623", + "erc20:eth:RIYA": { + "address": "0x0b1724cc9FDA0186911EF6a75949e9c0d3F0f2F3", "links": { - "Github": "https://github.com/naviworld", - "Homepage": "https://naviaddress.com" + "Homepage": "http://etheriya.com" }, - "marketcap_usd": 0, - "name": "NaviToken", + "marketcap_usd": 130093.19259471267, + "name": "Etheriya", "network": "eth", - "shortcut": "NAVI", - "t1_enabled": "yes", + "shortcut": "RIYA", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -12070,16 +20468,15 @@ } ] }, - "erc20:eth:NBAI": { - "address": "0x17f8aFB63DfcDcC90ebE6e84F060Cc306A98257D", + "erc20:eth:RLC": { + "address": "0x607F4C5BB672230e8672085532f7e901544a7375", "links": { - "Github": "https://github.com/nebulaai", - "Homepage": "https://tokensale.nebula-ai.network" + "Homepage": "http://crowdsale.iex.ec" }, - "marketcap_usd": 0, - "name": "NebulaAiToken", + "marketcap_usd": 19358594.27431683, + "name": "IEx.ec", "network": "eth", - "shortcut": "NBAI", + "shortcut": "RLC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12098,16 +20495,16 @@ } ] }, - "erc20:eth:NCT": { - "address": "0x9E46A38F5DaaBe8683E10793b06749EEF7D733d1", + "erc20:eth:RLT": { + "address": "0xcCeD5B8288086BE8c38E23567e684C3740be4D48", "links": { - "Github": "https://github.com/polyswarm", - "Homepage": "https://polyswarm.io" + "Github": "https://github.com/Smartroulette", + "Homepage": "https://smartplay.tech" }, - "marketcap_usd": 21725622, - "name": "Nectar", + "marketcap_usd": 49511.98327998259, + "name": "RLT", "network": "eth", - "shortcut": "NCT", + "shortcut": "RLT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12126,15 +20523,15 @@ } ] }, - "erc20:eth:NDC": { - "address": "0xA54ddC7B3CcE7FC8b1E3Fa0256D0DB80D2c10970", + "erc20:eth:RLTY": { + "address": "0xbe99B09709fc753b09BCf557A992F6605D5997B0", "links": { - "Homepage": "https://neverdie.com" + "Homepage": "http://www.smartrealty.io" }, - "marketcap_usd": 812708, - "name": "Neverdie", + "marketcap_usd": 0, + "name": "SMARTRealty", "network": "eth", - "shortcut": "NDC", + "shortcut": "RLTY", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12153,16 +20550,15 @@ } ] }, - "erc20:eth:NEC": { - "address": "0xCc80C051057B774cD75067Dc48f8987C4Eb97A5e", + "erc20:eth:RLX": { + "address": "0x4A42d2c580f83dcE404aCad18dab26Db11a1750E", "links": { - "Github": "https://github.com/ethfinex/", - "Homepage": "https://nectar.community" + "Homepage": "http://www.relex.io" }, - "marketcap_usd": 0, - "name": "Ethfinex Nectar Token", + "marketcap_usd": 252365.132480246, + "name": "Relex", "network": "eth", - "shortcut": "NEC", + "shortcut": "RLX", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12181,15 +20577,16 @@ } ] }, - "erc20:eth:NEEO": { - "address": "0xd8446236FA95b9b5f9fd0f8E7Df1a944823c683d", + "erc20:eth:RMESH": { + "address": "0x8D5682941cE456900b12d47ac06a88b47C764CE1", "links": { - "Homepage": "http://neeoico.com/" + "Github": "https://github.com/rightmesh", + "Homepage": "https://www.rightmesh.io/" }, - "marketcap_usd": 0, - "name": "NEEO", + "marketcap_usd": 1675346.448667343, + "name": "RightMesh Token", "network": "eth", - "shortcut": "NEEO", + "shortcut": "RMESH", "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", @@ -12208,15 +20605,15 @@ } ] }, - "erc20:eth:NET": { - "address": "0xcfb98637bcae43C13323EAa1731cED2B716962fD", + "erc20:eth:RNDR": { + "address": "0x0996bFb5D057faa237640E2506BE7B4f9C46de0B", "links": { - "Homepage": "https://nimiq.com" + "Homepage": "https://rendertoken.com" }, - "marketcap_usd": 2214239, - "name": "NIMIQ", + "marketcap_usd": 0, + "name": "Render Token", "network": "eth", - "shortcut": "NET", + "shortcut": "RNDR", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12235,17 +20632,16 @@ } ] }, - "erc20:eth:NEU": { - "address": "0xA823E6722006afe99E91c30FF5295052fe6b8E32", + "erc20:eth:RNT": { + "address": "0xFF603F43946A3A28DF5E6A73172555D8C8b02386", "links": { - "Github": "https://github.com/neufund", - "Homepage": "https://neufund.org" + "Homepage": "https://www.oneroot.io/en" }, - "marketcap_usd": 0, - "name": "NEU Fund", + "marketcap_usd": 20182631.60003923, + "name": "OneRoot Network", "network": "eth", - "shortcut": "NEU", - "t1_enabled": "yes", + "shortcut": "RNT", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -12263,16 +20659,16 @@ } ] }, - "erc20:eth:NGC": { - "address": "0x72dD4b6bd852A3AA172Be4d6C5a6dbEc588cf131", + "erc20:eth:RNTB": { + "address": "0x1FE70bE734e473e5721ea57C8B5B01e6Caa52686", "links": { - "Homepage": "https://www.nagaico.com" + "Homepage": "https://bitrent.io" }, - "marketcap_usd": 0, - "name": "NAGA Coin", + "marketcap_usd": 386582.28361933475, + "name": "BitRent", "network": "eth", - "shortcut": "NGC", - "t1_enabled": "yes", + "shortcut": "RNTB", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -12290,16 +20686,16 @@ } ] }, - "erc20:eth:NIMFA": { - "address": "0xe26517A9967299453d3F1B48Aa005E6127e67210", + "erc20:eth:ROCK": { + "address": "0xA40106134c5bF4c41411554e6db99B95A15ed9d8", "links": { - "Github": "https://github.com/nimfamoney", - "Homepage": "https://nimfamoney.io" + "Github": "https://github.com/rocketico", + "Homepage": "https://rocketico.io" }, "marketcap_usd": 0, - "name": "Ninfa Money", + "name": "Rocket Token", "network": "eth", - "shortcut": "NIMFA", + "shortcut": "ROCK", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12318,17 +20714,16 @@ } ] }, - "erc20:eth:NMR": { - "address": "0x1776e1F26f98b1A5dF9cD347953a26dd3Cb46671", + "erc20:eth:ROCK2": { + "address": "0xC16b542ff490e01fcc0DC58a60e1EFdc3e357cA6", "links": { - "Github": "https://github.com/numerai", - "Homepage": "https://numer.ai/homepage" + "Homepage": "https://icerockmining.io" }, - "marketcap_usd": 0, - "name": "NMR", + "marketcap_usd": 3069919.1846967465, + "name": "ICE ROCK MINING", "network": "eth", - "shortcut": "NMR", - "t1_enabled": "yes", + "shortcut": "ROCK2", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -12346,17 +20741,16 @@ } ] }, - "erc20:eth:NOX": { - "address": "0xeC46f8207D766012454c408De210BCBc2243E71c", + "erc20:eth:ROCK2PAY": { + "address": "0x0E3de3B0E3D617FD8D1D8088639bA877feb4d742", "links": { - "Github": "https://github.com/nitrotoken/nitro-crowdsale", - "Homepage": "https://nitro.live" + "Homepage": "https://icerockmining.io" }, "marketcap_usd": 0, - "name": "NOX", + "name": "ICE ROCK MINING", "network": "eth", - "shortcut": "NOX", - "t1_enabled": "yes", + "shortcut": "ROCK2PAY", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -12374,16 +20768,15 @@ } ] }, - "erc20:eth:NPER": { - "address": "0x4cE6B362Bc77A24966Dda9078f9cEF81b3B886a7", + "erc20:eth:ROK": { + "address": "0xc9De4B7F0C3d991e967158E4D4bFA4b51Ec0b114", "links": { - "Github": "https://github.com/NperProject", - "Homepage": "https://nper.io" + "Homepage": "https://rockchain.org" }, - "marketcap_usd": 700751, - "name": "NPER", + "marketcap_usd": 0, + "name": "Rocketchain", "network": "eth", - "shortcut": "NPER", + "shortcut": "ROK", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12402,17 +20795,15 @@ } ] }, - "erc20:eth:NPXS": { - "address": "0xA15C7Ebe1f07CaF6bFF097D8a589fb8AC49Ae5B3", - "coinmarketcap_alias": "pundi-x", + "erc20:eth:RPL": { + "address": "0xB4EFd85c19999D84251304bDA99E90B92300Bd93", "links": { - "Github": "https://github.com/pundix", - "Homepage": "https://pundix.com" + "Homepage": "https://www.rocketpool.net" }, - "marketcap_usd": 86897787, - "name": "Pundi X Token", + "marketcap_usd": 0, + "name": "Rocket Pool", "network": "eth", - "shortcut": "NPXS", + "shortcut": "RPL", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12431,16 +20822,16 @@ } ] }, - "erc20:eth:NUG": { - "address": "0x245ef47D4d0505ECF3Ac463F4d81f41ADE8f1fd1", + "erc20:eth:RTB": { + "address": "0xEC491c1088Eae992B7A214efB0a266AD0927A72A", "links": { - "Homepage": "https://nuggets.life/" + "Homepage": "https://ab-chain.com" }, - "marketcap_usd": 0, - "name": "Nuggets Token", + "marketcap_usd": 308706.58590665704, + "name": "AB-Chain RTB", "network": "eth", - "shortcut": "NUG", - "t1_enabled": "yes", + "shortcut": "RTB", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -12458,16 +20849,16 @@ } ] }, - "erc20:eth:NULS": { - "address": "0xB91318F35Bdb262E9423Bc7c7c2A3A93DD93C92C", + "erc20:eth:RTH": { + "address": "0x3FD8f39A962eFDA04956981C31AB89FAB5FB8bC8", "links": { - "Homepage": "https://nuls.io" + "Homepage": "https://www.rotharium.io" }, - "marketcap_usd": 20214666, - "name": "NULS", + "marketcap_usd": 4224183.079579117, + "name": "Rotharium", "network": "eth", - "shortcut": "NULS", - "t1_enabled": "yes", + "shortcut": "RTH", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -12485,15 +20876,16 @@ } ] }, - "erc20:eth:NXX": { - "address": "0x7627de4B93263a6a7570b8dAfa64bae812e5c394", + "erc20:eth:RTN": { + "address": "0x54b293226000ccBFC04DF902eEC567CB4C35a903", "links": { - "Homepage": "https://www.nexxuscoin.com" + "Github": "https://github.com/Ridercoin2/RiderCoin/blob/master/README.md", + "Homepage": "http://ridertoken.com" }, "marketcap_usd": 0, - "name": "NXX", + "name": "RiderToken", "network": "eth", - "shortcut": "NXX", + "shortcut": "RTN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12512,16 +20904,16 @@ } ] }, - "erc20:eth:NxC": { - "address": "0x45e42D659D9f9466cD5DF622506033145a9b89Bc", + "erc20:eth:RUFF": { + "address": "0xf278c1CA969095ffddDED020290cf8B5C424AcE2", "links": { - "Homepage": "https://beyond-the-void.net" + "Homepage": "http://ruffchain.com" }, - "marketcap_usd": 460462, - "name": "Nexium", + "marketcap_usd": 8966750.416736564, + "name": "Ruff", "network": "eth", - "shortcut": "NxC", - "t1_enabled": "yes", + "shortcut": "RUFF", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -12539,16 +20931,17 @@ } ] }, - "erc20:eth:OAK": { - "address": "0x5e888B83B7287EED4fB7DA7b7d0A0D4c735d94b3", + "erc20:eth:RUNE": { + "address": "0xdEE02D94be4929d26f67B64Ada7aCf1914007F10", "links": { - "Homepage": "https://aco.ai" + "Github": "https://github.com/thorchain", + "Homepage": "https://thorchain.org" }, "marketcap_usd": 0, - "name": "OAK", + "name": "Rune", "network": "eth", - "shortcut": "OAK", - "t1_enabled": "yes", + "shortcut": "RUNE", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -12566,15 +20959,15 @@ } ] }, - "erc20:eth:OAX": { - "address": "0x701C244b988a513c945973dEFA05de933b23Fe1D", + "erc20:eth:RVL": { + "address": "0x41f615E24fAbd2b097a320E9E6c1f448cb40521c", "links": { - "Homepage": "https://www.openanx.org/en" + "Homepage": "https://www.r-evolutioncoin.com" }, - "marketcap_usd": 2260516, - "name": "OAX", + "marketcap_usd": 0, + "name": "RVL", "network": "eth", - "shortcut": "OAX", + "shortcut": "RVL", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12593,16 +20986,15 @@ } ] }, - "erc20:eth:OCC": { - "address": "0x0235fE624e044A05eeD7A43E16E3083bc8A4287A", + "erc20:eth:RVT": { + "address": "0x3d1BA9be9f66B8ee101911bC36D3fB562eaC2244", "links": { - "Github": "https://github.com/OriginalCrypto/", - "Homepage": "https://www.OriginalCryptoCoin.com/" + "Homepage": "https://rivetzintl.com" }, - "marketcap_usd": 0, - "name": "Original Crypto Coin", + "marketcap_usd": 1131434.8301450305, + "name": "Rivetz", "network": "eth", - "shortcut": "OCC", + "shortcut": "RVT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12621,16 +21013,15 @@ } ] }, - "erc20:eth:ODE": { - "address": "0xbf52F2ab39e26E0951d2a02b49B7702aBe30406a", + "erc20:eth:S-A-PAT": { + "address": "0x1EC8fE51a9B6A3a6C427D17d9ECC3060fbc4a45c", "links": { - "Github": "https://github.com/odemio", - "Homepage": "https://odem.io/" + "Homepage": "https://www.smartillions.ch" }, "marketcap_usd": 0, - "name": "ODEM Token", + "name": "S-A-PAT", "network": "eth", - "shortcut": "ODE", + "shortcut": "S-A-PAT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12649,16 +21040,15 @@ } ] }, - "erc20:eth:OJX": { - "address": "0xBeef546ac8a4e0a80DC1E2d696968Ef54138f1d4", + "erc20:eth:S-ETH": { + "address": "0x3eb91D237e491E0DEE8582c402D85CB440fb6b54", "links": { - "Github": "https://github.com/OjoooInc", - "Homepage": "https://ico.ojooo.com/" + "Homepage": "https://www.smartillions.ch" }, "marketcap_usd": 0, - "name": "Ojooo Coin", + "name": "S-ETH", "network": "eth", - "shortcut": "OJX", + "shortcut": "S-ETH", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12677,17 +21067,16 @@ } ] }, - "erc20:eth:OLD_MKR": { - "address": "0xC66eA802717bFb9833400264Dd12c2bCeAa34a6d", + "erc20:eth:SAC": { + "address": "0xabC1280A0187a2020cC675437aed400185F86Db6", "links": { - "Github": "https://github.com/makerdao", - "Homepage": "https://makerdao.com" + "Homepage": "https://www.sachain.net" }, "marketcap_usd": 0, - "name": "MakerDAO", + "name": "Smart Application Chain", "network": "eth", - "shortcut": "OLD_MKR", - "t1_enabled": "yes", + "shortcut": "SAC", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -12705,16 +21094,15 @@ } ] }, - "erc20:eth:OLT": { - "address": "0x64A60493D888728Cf42616e034a0dfEAe38EFCF0", + "erc20:eth:SALT": { + "address": "0x4156D3342D5c385a87D264F90653733592000581", "links": { - "Github": "https://github.com/Oneledger", - "Homepage": "https://oneledger.io" + "Homepage": "https://saltlending.com" }, - "marketcap_usd": 0, - "name": "OneLedger Token", + "marketcap_usd": 16628654.327731555, + "name": "Salt Lending Token", "network": "eth", - "shortcut": "OLT", + "shortcut": "SALT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12733,16 +21121,15 @@ } ] }, - "erc20:eth:OMG": { - "address": "0xd26114cd6EE289AccF82350c8d8487fedB8A0C07", + "erc20:eth:SAN": { + "address": "0x7C5A0CE9267ED19B22F8cae653F198e3E8daf098", "links": { - "Github": "https://github.com/omisego", - "Homepage": "https://omisego.network" + "Homepage": "https://santiment.net" }, - "marketcap_usd": 206675559, - "name": "OmiseGO", + "marketcap_usd": 25281209.4081768, + "name": "Santiment", "network": "eth", - "shortcut": "OMG", + "shortcut": "SAN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12761,16 +21148,15 @@ } ] }, - "erc20:eth:OMT": { - "address": "0x047187e53477be70DBe8Ea5B799318f2e165052F", + "erc20:eth:SCANDI": { + "address": "0x78fE18e41f436e1981a3a60D1557c8a7a9370461", "links": { - "Github": "https://github.com/OTCMAKER/OMT", - "Homepage": "https://www.otcmaker.com" + "Homepage": "https://scandiweb.com" }, "marketcap_usd": 0, - "name": "OTCMAKER Token", + "name": "Scandiweb Coin", "network": "eth", - "shortcut": "OMT", + "shortcut": "SCANDI", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12789,15 +21175,15 @@ } ] }, - "erc20:eth:ONEK": { - "address": "0xB23be73573bC7E03DB6e5dfc62405368716d28a8", + "erc20:eth:SCL": { + "address": "0xd7631787B4dCc87b1254cfd1e5cE48e96823dEe8", "links": { - "Homepage": "http://onek.one" + "Homepage": "https://ico.nexus.social" }, - "marketcap_usd": 0, - "name": "One K Token", + "marketcap_usd": 347063.4464261077, + "name": "SocialCoin", "network": "eth", - "shortcut": "ONEK", + "shortcut": "SCL", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12816,16 +21202,16 @@ } ] }, - "erc20:eth:OPT": { - "address": "0x4355fC160f74328f9b383dF2EC589bB3dFd82Ba0", + "erc20:eth:SCRL": { + "address": "0x24DCc881E7Dd730546834452F21872D5cb4b5293", "links": { - "Homepage": "https://opus-foundation.org" + "Homepage": "https://www.scroll.network" }, - "marketcap_usd": 0, - "name": "Opus Foundation", + "marketcap_usd": 5916495.454967834, + "name": "SCRL", "network": "eth", - "shortcut": "OPT", - "t1_enabled": "yes", + "shortcut": "SCRL", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -12843,18 +21229,17 @@ } ] }, - "erc20:eth:ORBS": { - "address": "0xff56Cc6b1E6dEd347aA0B7676C85AB0B3D08B0FA", + "erc20:eth:SEELE": { + "address": "0xB1eeF147028E9f480DbC5ccaA3277D417D1b85F0", "links": { - "Github": "https://github.com/orbs-network", - "Homepage": "https://orbs.com" + "Homepage": "http://seele.pro" }, - "marketcap_usd": 0, - "name": "Orbs", + "marketcap_usd": 1995853.9255169886, + "name": "Seele", "network": "eth", - "shortcut": "ORBS", - "t1_enabled": "yes", - "t2_enabled": "yes", + "shortcut": "SEELE", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20", "wallet": [ { @@ -12871,17 +21256,16 @@ } ] }, - "erc20:eth:ORCA": { - "address": "0x6F59e0461Ae5E2799F1fB3847f05a63B16d0DbF8", + "erc20:eth:SENC": { + "address": "0xA13f0743951B4f6E3e3AA039f682E17279f52bc3", "links": { - "Github": "https://github.com/orcaalliance", - "Homepage": "https://www.orcaalliance.eu" + "Homepage": "https://www.sentinel-chain.org" }, - "marketcap_usd": 0, - "name": "ORCA Token", + "marketcap_usd": 802280.9249926882, + "name": "Sentinel Chain", "network": "eth", - "shortcut": "ORCA", - "t1_enabled": "yes", + "shortcut": "SENC", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -12899,16 +21283,16 @@ } ] }, - "erc20:eth:ORME": { - "address": "0x516E5436bAfdc11083654DE7Bb9b95382d08d5DE", + "erc20:eth:SENSE": { + "address": "0x6745fAB6801e376cD24F03572B9C9B0D4EdDDCcf", "links": { - "Homepage": "https://ormeuscoin.com" + "Homepage": "https://sensay.it" }, - "marketcap_usd": 1246411, - "name": "Ormeus Coin", + "marketcap_usd": 628600.3950814914, + "name": "Sensay", "network": "eth", - "shortcut": "ORME", - "t1_enabled": "soon", + "shortcut": "SENSE", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -12926,17 +21310,16 @@ } ] }, - "erc20:eth:OST": { - "address": "0x2C4e8f2D746113d0696cE89B35F0d8bF88E0AEcA", + "erc20:eth:SENT": { + "address": "0xa44E5137293E855B1b7bC7E2C6f8cD796fFCB037", "links": { - "Github": "https://github.com/OpenSTFoundation", - "Homepage": "https://simpletoken.org" + "Homepage": "https://sentinel.co" }, - "marketcap_usd": 11500448, - "name": "Simple Token 'OST'", + "marketcap_usd": 2014870.9026914558, + "name": "SENTinel", "network": "eth", - "shortcut": "OST", - "t1_enabled": "yes", + "shortcut": "SENT", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -12954,16 +21337,16 @@ } ] }, - "erc20:eth:OWN": { - "address": "0x170b275CEd089FffAEBFe927F445a350ED9160DC", + "erc20:eth:SET": { + "address": "0xe06eda7435bA749b047380CEd49121ddE93334Ae", "links": { - "Github": "https://github.com/owndata", - "Homepage": "https://owndata.network" + "Github": "https://github.com/SydEthereum/meetup-token#meetup-token", + "Homepage": "http://sydeth.com" }, - "marketcap_usd": 1427846, - "name": "OWNDATA", + "marketcap_usd": 0, + "name": "SET", "network": "eth", - "shortcut": "OWN", + "shortcut": "SET", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -12982,16 +21365,15 @@ } ] }, - "erc20:eth:Ox Fina": { - "address": "0x65A15014964F2102Ff58647e16a16a6B9E14bCF6", + "erc20:eth:SEXY": { + "address": "0x98F5e9b7F0e33956C0443E81bF7deB8B5b1ed545", "links": { - "Github": "https://github.com/oxfina", - "Homepage": "https://oxfina.com" + "Homepage": "http://sexytoken.co" }, "marketcap_usd": 0, - "name": "Ox Fina", + "name": "Sexy Token", "network": "eth", - "shortcut": "Ox Fina", + "shortcut": "SEXY", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -13010,16 +21392,15 @@ } ] }, - "erc20:eth:PAL": { - "address": "0xfeDAE5642668f8636A11987Ff386bfd215F942EE", + "erc20:eth:SGEL": { + "address": "0xa1ccc166faf0E998b3E33225A1A0301B1C86119D", "links": { - "Github": "https://github.com/policypalnet", - "Homepage": "https://www.policypal.network" + "Homepage": "https://www.soerengelder.com" }, "marketcap_usd": 0, - "name": "PolicyPal Network", + "name": "SGELDER", "network": "eth", - "shortcut": "PAL", + "shortcut": "SGEL", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -13038,17 +21419,16 @@ } ] }, - "erc20:eth:PARETO": { - "address": "0xea5f88E54d982Cbb0c441cde4E79bC305e5b43Bc", + "erc20:eth:SGN": { + "address": "0xB2135AB9695a7678Dd590B1A996CB0f37BCB0718", "links": { - "Github": "https://github.com/ParetoNetwork", - "Homepage": "https://pareto.network" + "Homepage": "https://signals.network" }, - "marketcap_usd": 0, - "name": "PARETO", + "marketcap_usd": 3007848.219061052, + "name": "Signals Network", "network": "eth", - "shortcut": "PARETO", - "t1_enabled": "yes", + "shortcut": "SGN", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -13066,16 +21446,16 @@ } ] }, - "erc20:eth:PASS": { - "address": "0x77761e63C05aeE6648FDaeaa9B94248351AF9bCd", + "erc20:eth:SGR": { + "address": "0xCB5A05beF3257613E984C17DbcF039952B6d883F", "links": { - "Homepage": "http://www.wisepass.co" + "Homepage": "http://sugarexchange.io" }, - "marketcap_usd": 0, - "name": "PASS Token", + "marketcap_usd": 129523.89140688989, + "name": "Sugar Exchange", "network": "eth", - "shortcut": "PASS", - "t1_enabled": "yes", + "shortcut": "SGR", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -13093,16 +21473,16 @@ } ] }, - "erc20:eth:PATENTS": { - "address": "0x694404595e3075A942397F466AAcD462FF1a7BD0", + "erc20:eth:SHIP": { + "address": "0xe25b0BBA01Dc5630312B6A21927E578061A13f55", "links": { - "Homepage": "https://www.smartillions.ch" + "Homepage": "https://www.shipchain.io" }, - "marketcap_usd": 0, - "name": "PATENTS", + "marketcap_usd": 1129330.3258180718, + "name": "ShipChain", "network": "eth", - "shortcut": "PATENTS", - "t1_enabled": "yes", + "shortcut": "SHIP", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -13120,16 +21500,15 @@ } ] }, - "erc20:eth:PATH": { - "address": "0xF813F3902bBc00A6DCe378634d3B79D84F9803d7", + "erc20:eth:SHIT": { + "address": "0xEF2E9966eb61BB494E5375d5Df8d67B7dB8A780D", "links": { - "Github": "https://github.com/path-network-token", - "Homepage": "https://path.network" + "Homepage": "https://www.shitcoin.io" }, "marketcap_usd": 0, - "name": "PATH", + "name": "SHIT", "network": "eth", - "shortcut": "PATH", + "shortcut": "SHIT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -13148,17 +21527,15 @@ } ] }, - "erc20:eth:PAX": { - "address": "0x8E870D67F660D95d5be530380D0eC0bd388289E1", - "coinmarketcap_alias": "paxos-standard-token", + "erc20:eth:SHP": { + "address": "0xEF2463099360a085f1f10b076Ed72Ef625497a06", "links": { - "Github": "https://github.com/paxosglobal", - "Homepage": "https://www.paxos.com/standard" + "Homepage": "https://sharpe.capital" }, - "marketcap_usd": 153289234, - "name": "Paxos Standard (PAX)", + "marketcap_usd": 677113.5347218404, + "name": "Sharpe Platform Token", "network": "eth", - "shortcut": "PAX", + "shortcut": "SHP", "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", @@ -13177,15 +21554,15 @@ } ] }, - "erc20:eth:PAY": { - "address": "0xB97048628DB6B661D4C2aA833e95Dbe1A905B280", + "erc20:eth:SIFT": { + "address": "0x8a187D5285d316bcBC9ADafc08b51d70a0d8e000", "links": { - "Homepage": "http://www.tenx.tech" + "Homepage": "https://smartift.com" }, - "marketcap_usd": 51938105, - "name": "TenX", + "marketcap_usd": 0, + "name": "SIFT", "network": "eth", - "shortcut": "PAY", + "shortcut": "SIFT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -13204,15 +21581,16 @@ } ] }, - "erc20:eth:PBL": { - "address": "0x55648De19836338549130B1af587F16beA46F66B", + "erc20:eth:SIG": { + "address": "0x6888a16eA9792c15A4DCF2f6C623D055c8eDe792", "links": { - "Homepage": "https://publica.io" + "Github": "https://github.com/SpectivOfficial", + "Homepage": "https://spectivvr.com" }, - "marketcap_usd": 0, - "name": "PBL", + "marketcap_usd": 267484.78434519353, + "name": "Signal", "network": "eth", - "shortcut": "PBL", + "shortcut": "SIG", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -13231,16 +21609,16 @@ } ] }, - "erc20:eth:PBT": { - "address": "0xF4c07b1865bC326A3c01339492Ca7538FD038Cc0", + "erc20:eth:SKB": { + "address": "0x4aF328C52921706dCB739F25786210499169AFe6", "links": { - "Homepage": "http://primalbase.com/" + "Homepage": "https://www.skb-coin.jp/en" }, - "marketcap_usd": 0, - "name": "Primalbase Token (PBT)", + "marketcap_usd": 3306612.818340511, + "name": "Sakura Bloom", "network": "eth", - "shortcut": "PBT", - "t1_enabled": "yes", + "shortcut": "SKB", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -13258,18 +21636,17 @@ } ] }, - "erc20:eth:PCL": { - "address": "0x3618516F45CD3c913F81F9987AF41077932Bc40d", + "erc20:eth:SKE": { + "address": "0x13DB74B3cf512F65C4b91683940B4f3955E05085", "links": { - "Github": "https://github.com/PeculiumPCL/Peculium", - "Homepage": "https://peculium.io" + "Homepage": "http://superkeep.pro/" }, - "marketcap_usd": 3684453, - "name": "Peculium", + "marketcap_usd": 0, + "name": "Super Keep Token", "network": "eth", - "shortcut": "PCL", - "t1_enabled": "yes", - "t2_enabled": "yes", + "shortcut": "SKE", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20", "wallet": [ { @@ -13286,16 +21663,16 @@ } ] }, - "erc20:eth:PCLOLD": { - "address": "0x53148Bb4551707edF51a1e8d7A93698d18931225", + "erc20:eth:SKIN": { + "address": "0x2bDC0D42996017fCe214b21607a515DA41A9E0C5", "links": { - "Github": "https://github.com/PeculiumPCL/Peculium", - "Homepage": "https://peculium.io" + "Github": "https://github.com/Steamtradenet/smart-contract", + "Homepage": "https://skincoin.org" }, - "marketcap_usd": 0, - "name": "PeculiumOLD", + "marketcap_usd": 469892.06272373564, + "name": "SKIN", "network": "eth", - "shortcut": "PCLOLD", + "shortcut": "SKIN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -13314,16 +21691,15 @@ } ] }, - "erc20:eth:PDATA": { - "address": "0x0db03B6CDe0B2d427C64a04FeAfd825938368f1F", + "erc20:eth:SKM": { + "address": "0xd99b8A7fA48E25Cce83B81812220A3E03Bf64e5f", "links": { - "Github": "https://github.com/opiria-pdata/Pdata", - "Homepage": "https://opiria.io" + "Homepage": "https://skrumble.network" }, - "marketcap_usd": 0, - "name": "PDATA", + "marketcap_usd": 2286657.8883176283, + "name": "Skrumble Network", "network": "eth", - "shortcut": "PDATA", + "shortcut": "SKM", "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", @@ -13342,16 +21718,15 @@ } ] }, - "erc20:eth:PET": { - "address": "0x5884969Ec0480556E11d119980136a4C17eDDEd1", + "erc20:eth:SKO1": { + "address": "0x4994e81897a920c0FEA235eb8CEdEEd3c6fFF697", "links": { - "Github": "https://github.com/Pethereum", - "Homepage": "https://pethereum.org/" + "Homepage": "http://www.sikoba.com" }, "marketcap_usd": 0, - "name": "PETHEREUM", + "name": "Sikoba", "network": "eth", - "shortcut": "PET", + "shortcut": "SKO1", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -13370,15 +21745,15 @@ } ] }, - "erc20:eth:PEXT": { - "address": "0x55c2A0C171D920843560594dE3d6EEcC09eFc098", + "erc20:eth:SKR": { + "address": "0x4c382F8E09615AC86E08CE58266CC227e7d4D913", "links": { - "Homepage": "https://prime-ex.com" + "Homepage": "https://tokensale.skrilla.com" }, "marketcap_usd": 0, - "name": "PEX-Token", + "name": "SKR Token", "network": "eth", - "shortcut": "PEXT", + "shortcut": "SKR", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -13397,17 +21772,18 @@ } ] }, - "erc20:eth:PIPL": { - "address": "0xE64509F0bf07ce2d29A7eF19A8A9bc065477C1B4", + "erc20:eth:SKYM": { + "address": "0x7297862B9670fF015192799cc849726c88bf1d77", "links": { - "Homepage": "https://piplcoin.com" + "Github": "https://github.com/SoarEarth", + "Homepage": "https://soar.earth" }, "marketcap_usd": 0, - "name": "PIPL Coin", + "name": "Skymap Token", "network": "eth", - "shortcut": "PIPL", - "t1_enabled": "yes", - "t2_enabled": "yes", + "shortcut": "SKYM", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20", "wallet": [ { @@ -13424,15 +21800,15 @@ } ] }, - "erc20:eth:PIX": { - "address": "0x8eFFd494eB698cc399AF6231fCcd39E08fd20B15", + "erc20:eth:SLT": { + "address": "0x7A5fF295Dc8239d5C2374E4D894202aAF029Cab6", "links": { - "Homepage": "http://www.lampix.co" + "Homepage": "http://smartlands.io" }, "marketcap_usd": 0, - "name": "PIX", + "name": "Smartlands", "network": "eth", - "shortcut": "PIX", + "shortcut": "SLT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -13451,15 +21827,16 @@ } ] }, - "erc20:eth:PLASMA": { - "address": "0x59416A25628A76b4730eC51486114c32E0B582A1", + "erc20:eth:SLY": { + "address": "0x7928c8aBF1F74eF9F96D4D0a44e3b4209d360785", "links": { - "Homepage": "https://plasma.io" + "Github": "https://github.com/SELFLLERY", + "Homepage": "https://selfllery.com/" }, "marketcap_usd": 0, - "name": "PLASMA", + "name": "Selfllery", "network": "eth", - "shortcut": "PLASMA", + "shortcut": "SLY", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -13478,16 +21855,16 @@ } ] }, - "erc20:eth:PLBT": { - "address": "0x0AfFa06e7Fbe5bC9a764C979aA66E8256A631f02", + "erc20:eth:SMS": { + "address": "0x39013F961c378f02C2b82A6E1d31E9812786FD9D", "links": { - "Homepage": "https://polybius.io" + "Homepage": "https://smscoin.jp/en" }, - "marketcap_usd": 5288601, - "name": "Polybius", + "marketcap_usd": 69319.95041989215, + "name": "Speed Mining Service", "network": "eth", - "shortcut": "PLBT", - "t1_enabled": "yes", + "shortcut": "SMS", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -13505,16 +21882,15 @@ } ] }, - "erc20:eth:PLR": { - "address": "0xe3818504c1B32bF1557b16C238B2E01Fd3149C17", + "erc20:eth:SNC": { + "address": "0xF4134146AF2d511Dd5EA8cDB1C4AC88C57D60404", "links": { - "Github": "https://github.com/twentythirty/PillarToken", - "Homepage": "https://www.pillarproject.io" + "Homepage": "https://suncontract.org" }, - "marketcap_usd": 0, - "name": "Pillar Project", + "marketcap_usd": 1637236.971764509, + "name": "SunContract", "network": "eth", - "shortcut": "PLR", + "shortcut": "SNC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -13533,16 +21909,15 @@ } ] }, - "erc20:eth:PLS": { - "address": "0xe43ac1714F7394173b15E7CfF31A63d523Ce4fB9", + "erc20:eth:SND": { + "address": "0xf333b2Ace992ac2bBD8798bF57Bc65a06184afBa", "links": { - "Github": "https://github.com/bitsuperlab", - "Homepage": "https://dacplay.org" + "Homepage": "https://www.sandcoin.io" }, "marketcap_usd": 0, - "name": "DACPLAY Token", + "name": "Sandcoin", "network": "eth", - "shortcut": "PLS", + "shortcut": "SND", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -13561,15 +21936,16 @@ } ] }, - "erc20:eth:PLU": { - "address": "0xD8912C10681D8B21Fd3742244f44658dBA12264E", + "erc20:eth:SNG": { + "address": "0xcFD6Ae8BF13f42DE14867351eAff7A8A3b9FbBe7", "links": { - "Homepage": "https://plutus.it" + "Github": "https://github.com/SinergiaBlockchain", + "Homepage": "https://sinergiablockchain.org/index-en.html" }, "marketcap_usd": 0, - "name": "Plutus", + "name": "SINERGIA", "network": "eth", - "shortcut": "PLU", + "shortcut": "SNG", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -13588,17 +21964,16 @@ } ] }, - "erc20:eth:PNK": { - "address": "0x93ED3FBe21207Ec2E8f2d3c3de6e058Cb73Bc04d", + "erc20:eth:SNGLS": { + "address": "0xaeC2E87E0A235266D9C5ADc9DEb4b2E29b54D009", "links": { - "Github": "https://github.com/kleros", - "Homepage": "https://kleros.io" + "Homepage": "https://singulardtv.com" }, - "marketcap_usd": 0, - "name": "Pinakion", + "marketcap_usd": 6831301.52412, + "name": "SingularDTV", "network": "eth", - "shortcut": "PNK", - "t1_enabled": "soon", + "shortcut": "SNGLS", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -13616,15 +21991,15 @@ } ] }, - "erc20:eth:POE": { - "address": "0x0e0989b1f9B8A38983c2BA8053269Ca62Ec9B195", + "erc20:eth:SNIP": { + "address": "0x44F588aEeB8C44471439D1270B3603c66a9262F1", "links": { - "Homepage": "https://po.et" + "Homepage": "https://www.snip.network" }, "marketcap_usd": 0, - "name": "Po.et Tokens", + "name": "SNIP", "network": "eth", - "shortcut": "POE", + "shortcut": "SNIP", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -13643,15 +22018,16 @@ } ] }, - "erc20:eth:POIN": { - "address": "0x43F6a1BE992deE408721748490772B15143CE0a7", + "erc20:eth:SNM": { + "address": "0x983F6d60db79ea8cA4eB9968C6aFf8cfA04B3c63", "links": { - "Homepage": "https://potatoin.foundation" + "Github": "https://github.com/sonm-io", + "Homepage": "https://sonm.com" }, - "marketcap_usd": 0, - "name": "Potatoin", + "marketcap_usd": 6508351.263536801, + "name": "SNM", "network": "eth", - "shortcut": "POIN", + "shortcut": "SNM", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -13670,15 +22046,15 @@ } ] }, - "erc20:eth:POLY": { - "address": "0x9992eC3cF6A55b00978cdDF2b27BC6882d88D1eC", + "erc20:eth:SNOV": { + "address": "0xBDC5bAC39Dbe132B1E030e898aE3830017D7d969", "links": { - "Homepage": "https://polymath.network" + "Homepage": "https://tokensale.snov.io" }, - "marketcap_usd": 40917150, - "name": "Polymath Network", + "marketcap_usd": 935867.3682524911, + "name": "SNOV", "network": "eth", - "shortcut": "POLY", + "shortcut": "SNOV", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -13697,15 +22073,15 @@ } ] }, - "erc20:eth:POOL": { - "address": "0x779B7b713C86e3E6774f5040D9cCC2D43ad375F8", + "erc20:eth:SNT": { + "address": "0x744d70FDBE2Ba4CF95131626614a1763DF805B9E", "links": { - "Homepage": "http://stakepool.co" + "Homepage": "https://status.im" }, - "marketcap_usd": 0, - "name": "Stake Pool", + "marketcap_usd": 63360106.218848586, + "name": "Status Network Token", "network": "eth", - "shortcut": "POOL", + "shortcut": "SNT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -13724,17 +22100,16 @@ } ] }, - "erc20:eth:POS": { - "address": "0xEe609fE292128Cad03b786DBb9Bc2634Ccdbe7fC", + "erc20:eth:SNTR": { + "address": "0x2859021eE7F2Cb10162E67F33Af2D22764B31aFf", "links": { - "Github": "https://github.com/PoSToken", - "Homepage": "https://postoken.org" + "Homepage": "https://silentnotary.com" }, - "marketcap_usd": 6811, - "name": "PoSToken", + "marketcap_usd": 778334.3655575688, + "name": "Silent Notary", "network": "eth", - "shortcut": "POS", - "t1_enabled": "yes", + "shortcut": "SNTR", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -13752,17 +22127,18 @@ } ] }, - "erc20:eth:POWR": { - "address": "0x595832F8FC6BF59c85C527fEC3740A1b7a361269", + "erc20:eth:SNX": { + "address": "0xC011A72400E58ecD99Ee497CF89E3775d4bd732F", "links": { - "Homepage": "https://powerledger.io" + "Github": "https://github.com/havven/havven", + "Homepage": "https://synthetix.io" }, - "marketcap_usd": 0, - "name": "PowerLedger", + "marketcap_usd": 2868217.615212391, + "name": "Synthetix Network Token", "network": "eth", - "shortcut": "POWR", - "t1_enabled": "yes", - "t2_enabled": "yes", + "shortcut": "SNX", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20", "wallet": [ { @@ -13779,17 +22155,17 @@ } ] }, - "erc20:eth:PPP": { - "address": "0xc42209aCcC14029c1012fB5680D95fBd6036E2a0", + "erc20:eth:SOAR": { + "address": "0xD65960FAcb8E4a2dFcb2C2212cb2e44a02e2a57E", "links": { - "Homepage": "https://www.paypie.com" + "Homepage": "http://soarlabs.org" }, - "marketcap_usd": 3990032, - "name": "PayPie", + "marketcap_usd": 1645059.3958474377, + "name": "Soarcoin", "network": "eth", - "shortcut": "PPP", - "t1_enabled": "yes", - "t2_enabled": "yes", + "shortcut": "SOAR", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20", "wallet": [ { @@ -13806,16 +22182,16 @@ } ] }, - "erc20:eth:PPT": { - "address": "0xd4fa1460F537bb9085d22C7bcCB5DD450Ef28e3a", + "erc20:eth:SOC": { + "address": "0x2d0E95bd4795D7aCe0da3C0Ff7b706a5970eb9D3", "links": { - "Homepage": "https://populous.co" + "Homepage": "https://www.allsportschain.com" }, - "marketcap_usd": 78276469, - "name": "Populous", + "marketcap_usd": 5289839.720724809, + "name": "All Sports", "network": "eth", - "shortcut": "PPT", - "t1_enabled": "yes", + "shortcut": "SOC", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -13833,15 +22209,15 @@ } ] }, - "erc20:eth:PRE": { - "address": "0x88A3E4F35D64aAD41A6d4030ac9AFE4356cB84fA", + "erc20:eth:SOL": { + "address": "0x1F54638b7737193FFd86c19Ec51907A7c41755D8", "links": { - "Homepage": "https://presearch.io" + "Homepage": "https://sola.foundation" }, - "marketcap_usd": 4894179, - "name": "Presearch", + "marketcap_usd": 51395.30195731496, + "name": "Sola Token", "network": "eth", - "shortcut": "PRE", + "shortcut": "SOL", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -13860,17 +22236,16 @@ } ] }, - "erc20:eth:PRG": { - "address": "0x7728dFEF5aBd468669EB7f9b48A7f70a501eD29D", + "erc20:eth:SONIQ": { + "address": "0x1C62aCa2b7605Db3606eAcdA7Bc67A1857DDb8FF", "links": { - "Github": "https://github.com/paragon-coin/token", - "Homepage": "https://paragoncoin.com" + "Homepage": "https://soniqproject.com" }, - "marketcap_usd": 0, - "name": "PRG", + "marketcap_usd": 1325276.5480605, + "name": "Soniq", "network": "eth", - "shortcut": "PRG", - "t1_enabled": "yes", + "shortcut": "SONIQ", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -13888,18 +22263,18 @@ } ] }, - "erc20:eth:PRL": { - "address": "0x1844b21593262668B7248d0f57a220CaaBA46ab9", + "erc20:eth:SOUL": { + "address": "0xBb1f24C0c1554b9990222f036b0AaD6Ee4CAec29", "links": { - "Github": "https://github.com/oysterprotocol", - "Homepage": "https://oyster.ws" + "Github": "https://github.com/cryptosoulgame", + "Homepage": "https://cryptosoul.io/" }, - "marketcap_usd": 0, - "name": "Oyster Pearl", + "marketcap_usd": 43206.541581889935, + "name": "CryptoSoul", "network": "eth", - "shortcut": "PRL", - "t1_enabled": "yes", - "t2_enabled": "yes", + "shortcut": "SOUL", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20", "wallet": [ { @@ -13916,15 +22291,15 @@ } ] }, - "erc20:eth:PRON": { - "address": "0xA3149E0fA0061A9007fAf307074cdCd290f0e2Fd", + "erc20:eth:SPANK": { + "address": "0x42d6622deCe394b54999Fbd73D108123806f6a18", "links": { - "Homepage": "https://proncoin.io" + "Homepage": "https://spankchain.com" }, - "marketcap_usd": 0, - "name": "PronCoin", + "marketcap_usd": 3459400.389591638, + "name": "SpankChain", "network": "eth", - "shortcut": "PRON", + "shortcut": "SPANK", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -13943,16 +22318,15 @@ } ] }, - "erc20:eth:PRS": { - "address": "0x163733bcc28dbf26B41a8CfA83e369b5B3af741b", + "erc20:eth:SPARC": { + "address": "0x58bf7df57d9DA7113c4cCb49d8463D4908C735cb", "links": { - "Github": "https://github.com/Neurone/persians", - "Homepage": "http://persians.network" + "Homepage": "https://kingsds.network" }, "marketcap_usd": 0, - "name": "Persians", + "name": "SPARC", "network": "eth", - "shortcut": "PRS", + "shortcut": "SPARC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -13971,15 +22345,15 @@ } ] }, - "erc20:eth:PRSP": { - "address": "0x0C04d4f331DA8dF75f9E2e271E3f3F1494C66C36", + "erc20:eth:SPARTA": { + "address": "0x24AEF3BF1A47561500f9430D74Ed4097C47F51F2", "links": { - "Homepage": "http://www.prsp.me" + "Homepage": "https://www.spartaico.com" }, "marketcap_usd": 0, - "name": "PRSP", + "name": "SPARTA", "network": "eth", - "shortcut": "PRSP", + "shortcut": "SPARTA", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -13998,17 +22372,16 @@ } ] }, - "erc20:eth:PT": { - "address": "0x66497A283E0a007bA3974e837784C6AE323447de", + "erc20:eth:SPD": { + "address": "0x1dEa979ae76f26071870F824088dA78979eb91C8", "links": { - "Github": "https://github.com/porntoken/smart_contract", - "Homepage": "https://www.porntoken.io" + "Homepage": "https://spindle.zone" }, - "marketcap_usd": 0, - "name": "PornToken", + "marketcap_usd": 2975568.9560201676, + "name": "SPINDLE", "network": "eth", - "shortcut": "PT", - "t1_enabled": "yes", + "shortcut": "SPD", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -14026,15 +22399,15 @@ } ] }, - "erc20:eth:PTOY": { - "address": "0x8Ae4BF2C33a8e667de34B54938B0ccD03Eb8CC06", + "erc20:eth:SPF": { + "address": "0x85089389C14Bd9c77FC2b8F0c3d1dC3363Bf06Ef", "links": { - "Homepage": "https://patientory.com" + "Homepage": "https://sportyfi.io" }, - "marketcap_usd": 0, - "name": "PTOY", + "marketcap_usd": 107883.3623511865, + "name": "Sportify", "network": "eth", - "shortcut": "PTOY", + "shortcut": "SPF", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -14053,16 +22426,15 @@ } ] }, - "erc20:eth:PTWO": { - "address": "0x5512e1D6A7BE424b4323126B4f9E86D023F95764", + "erc20:eth:SPN": { + "address": "0x20F7A3DdF244dc9299975b4Da1C39F8D5D75f05A", "links": { - "Github": "https://github.com/porntoken/smart_contract", - "Homepage": "https://www.porntoken.io" + "Homepage": "https://www.sapien.network/" }, - "marketcap_usd": 0, - "name": "PornTokenV2", + "marketcap_usd": 309667.93625624676, + "name": "Sapien", "network": "eth", - "shortcut": "PTWO", + "shortcut": "SPN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -14081,17 +22453,16 @@ } ] }, - "erc20:eth:PUC": { - "address": "0xEf6B4cE8C9Bc83744fbcdE2657b32eC18790458A", + "erc20:eth:SPX": { + "address": "0x05aAaA829Afa407D83315cDED1d45EB16025910c", "links": { - "Github": "https://github.com/pourcoin/pourcoin-PUC/projects", - "Homepage": "http://price-s.info" + "Homepage": "https://sp8de.com" }, - "marketcap_usd": 0, - "name": "Pour Coin", + "marketcap_usd": 519893.699464796, + "name": "Sp8de", "network": "eth", - "shortcut": "PUC", - "t1_enabled": "yes", + "shortcut": "SPX", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -14109,16 +22480,16 @@ } ] }, - "erc20:eth:PURC": { - "address": "0xe25ff6Eb959BCE67975778e46A47750C243B6B99", + "erc20:eth:SRN": { + "address": "0x68d57c9a1C35f63E2c83eE8e49A64e9d70528D25", "links": { - "Github": "https://github.com/seanyc99/PureCarbon-Smart-Contract", - "Homepage": "https://purecarbon.io" + "Github": "https://github.com/sirin-labs/crowdsale-smart-contract", + "Homepage": "https://sirinlabs.com" }, - "marketcap_usd": 0, - "name": "PureCarbon", + "marketcap_usd": 13252451.78514952, + "name": "Sirin Labs", "network": "eth", - "shortcut": "PURC", + "shortcut": "SRN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -14137,15 +22508,15 @@ } ] }, - "erc20:eth:PXT": { - "address": "0xc14830E53aA344E8c14603A91229A0b925b0B262", + "erc20:eth:SSH": { + "address": "0x6e2050CBFB3eD8A4d39b64cC9f47E711a03a5a89", "links": { - "Homepage": "https://populous.co" + "Homepage": "https://www.stream.space" }, "marketcap_usd": 0, - "name": "Populous XBRL Token (PXT)", + "name": "StreamShares", "network": "eth", - "shortcut": "PXT", + "shortcut": "SSH", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -14164,16 +22535,16 @@ } ] }, - "erc20:eth:QASH": { - "address": "0x618E75Ac90b12c6049Ba3b27f5d5F8651b0037F6", + "erc20:eth:SSP": { + "address": "0x624d520BAB2E4aD83935Fa503fB130614374E850", "links": { - "Homepage": "https://liquid.plus" + "Homepage": "https://smartshare.vip/#" }, - "marketcap_usd": 53887272, - "name": "QASH", + "marketcap_usd": 4699812.087469562, + "name": "Smartshare", "network": "eth", - "shortcut": "QASH", - "t1_enabled": "yes", + "shortcut": "SSP", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -14191,15 +22562,15 @@ } ] }, - "erc20:eth:QAU": { - "address": "0x671AbBe5CE652491985342e85428EB1b07bC6c64", + "erc20:eth:STABIT": { + "address": "0x4A89cD486fA996ad50c0a63C35c78702f5422a50", "links": { - "Homepage": "http://www.quantumproject.org" + "Homepage": "https://stabitcoin.com/" }, "marketcap_usd": 0, - "name": "QAU", + "name": "StabitCoin", "network": "eth", - "shortcut": "QAU", + "shortcut": "STABIT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -14218,16 +22589,15 @@ } ] }, - "erc20:eth:QBX": { - "address": "0x2467AA6B5A2351416fD4C3DeF8462d841feeecEC", + "erc20:eth:STAC": { + "address": "0x9a005c9a89BD72a4Bd27721E7a09A3c11D2b03C4", "links": { - "Github": "https://github.com/qiibee", - "Homepage": "https://www.qiibee.com" + "Homepage": "https://coinstarter.com" }, - "marketcap_usd": 0, - "name": "qiibeeToken", + "marketcap_usd": 158986.3291101041, + "name": "Starter Coin", "network": "eth", - "shortcut": "QBX", + "shortcut": "STAC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -14246,18 +22616,17 @@ } ] }, - "erc20:eth:QNT": { - "address": "0x4a220E6096B25EADb88358cb44068A3248254675", + "erc20:eth:STACS": { + "address": "0x286708f069225905194673755F12359e6afF6FE1", "links": { - "Github": "https://github.com/quantnetwork", - "Homepage": "https://www.quant.network/" + "Homepage": "https://stacs.io" }, - "marketcap_usd": 15183919, - "name": "Quant", + "marketcap_usd": 8983665.826468162, + "name": "STACS", "network": "eth", - "shortcut": "QNT", - "t1_enabled": "yes", - "t2_enabled": "yes", + "shortcut": "STACS", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20", "wallet": [ { @@ -14274,15 +22643,15 @@ } ] }, - "erc20:eth:QRG": { - "address": "0xFFAA5ffc455d9131f8A2713A741fD1960330508B", + "erc20:eth:STAR": { + "address": "0xF70a642bD387F94380fFb90451C2c81d4Eb82CBc", "links": { - "Homepage": "http://qrg-stamps.com/" + "Homepage": "http://starbase.co" }, - "marketcap_usd": 0, - "name": "QRG", + "marketcap_usd": 266676.32275125, + "name": "Star Token", "network": "eth", - "shortcut": "QRG", + "shortcut": "STAR", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -14301,17 +22670,17 @@ } ] }, - "erc20:eth:QRL": { - "address": "0x697beac28B09E122C4332D163985e8a73121b97F", + "erc20:eth:STB": { + "address": "0x09BcA6eBAb05Ee2ae945BE4edA51393d94Bf7b99", "links": { - "Github": "https://github.com/theQRL", - "Homepage": "https://theqrl.org" + "Github": "https://github.com/stableproject/", + "Homepage": "https://stable.foundation" }, "marketcap_usd": 0, - "name": "QRL", + "name": "STABLE Token", "network": "eth", - "shortcut": "QRL", - "t1_enabled": "yes", + "shortcut": "STB", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -14329,16 +22698,16 @@ } ] }, - "erc20:eth:QSP": { - "address": "0x99ea4dB9EE77ACD40B119BD1dC4E33e1C070b80d", + "erc20:eth:STC": { + "address": "0x629aEe55ed49581C33ab27f9403F7992A289ffd5", "links": { - "Github": "https://github.com/quantstamp", - "Homepage": "https://quantstamp.com/" + "Github": "https://github.com/DimensionsNetwork", + "Homepage": "https://dimensions.network" }, "marketcap_usd": 0, - "name": "Quantstamp Token", + "name": "StrikeCoin Token", "network": "eth", - "shortcut": "QSP", + "shortcut": "STC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -14357,16 +22726,15 @@ } ] }, - "erc20:eth:QTQ": { - "address": "0x2C3C1F05187dBa7A5f2Dd47Dca57281C4d4F183F", + "erc20:eth:STK": { + "address": "0xaE73B38d1c9A8b274127ec30160a4927C4d71824", "links": { - "Github": "https://github.com/TiiQu-Network/TiiQu-Network", - "Homepage": "http://tiiqu.com" + "Homepage": "https://stktoken.com" }, - "marketcap_usd": 0, - "name": "TiiQu's Q Token", + "marketcap_usd": 830820.9948462043, + "name": "STK Token", "network": "eth", - "shortcut": "QTQ", + "shortcut": "STK", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -14385,16 +22753,15 @@ } ] }, - "erc20:eth:QTUM": { - "address": "0x9a642d6b3368ddc662CA244bAdf32cDA716005BC", + "erc20:eth:STN": { + "address": "0x599346779e90fc3F5F997b5ea715349820F91571", "links": { - "Github": "https://github.com/qtumproject", - "Homepage": "https://qtum.org/" + "Homepage": "https://saturn.network" }, - "marketcap_usd": 201762372, - "name": "Qtum", + "marketcap_usd": 0, + "name": "Saturn Network", "network": "eth", - "shortcut": "QTUM", + "shortcut": "STN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -14413,16 +22780,16 @@ } ] }, - "erc20:eth:RAO": { - "address": "0x45eDb535942a8C84D9f4b5D37e1b25F91Ea4804c", + "erc20:eth:STORJ": { + "address": "0xB64ef51C888972c908CFacf59B47C1AfBC0Ab8aC", "links": { - "Github": "https://github.com/RadioYoFM/ICO_smartcontract/", - "Homepage": "https://rao.radioyo.fm" + "Github": "https://github.com/Storj", + "Homepage": "https://storj.io" }, - "marketcap_usd": 0, - "name": "RadioYo", + "marketcap_usd": 19053313.62957093, + "name": "STORJ", "network": "eth", - "shortcut": "RAO", + "shortcut": "STORJ", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -14441,16 +22808,15 @@ } ] }, - "erc20:eth:RBLX": { - "address": "0xFc2C4D8f95002C14eD0a7aA65102Cac9e5953b5E", + "erc20:eth:STORM": { + "address": "0xD0a4b8946Cb52f0661273bfbC6fD0E0C75Fc6433", "links": { - "Github": "https://github.com/rublixdev", - "Homepage": "https://rublix.io/" + "Homepage": "https://www.stormtoken.com" }, - "marketcap_usd": 4666067, - "name": "Rublix", + "marketcap_usd": 13791276.795329388, + "name": "Storm Token", "network": "eth", - "shortcut": "RBLX", + "shortcut": "STORM", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -14469,16 +22835,16 @@ } ] }, - "erc20:eth:RCN": { - "address": "0xF970b8E36e23F7fC3FD752EeA86f8Be8D83375A6", + "erc20:eth:STP": { + "address": "0xecd570bBf74761b960Fa04Cc10fe2c4e86FfDA36", "links": { - "Github": "https://github.com/ripio/rcn-token", - "Homepage": "https://ripiocredit.network" + "Github": "https://github.com/stashpayio", + "Homepage": "https://stashpay.io" }, - "marketcap_usd": 6379908, - "name": "Ripio Credit Network", + "marketcap_usd": 0, + "name": "StashPay", "network": "eth", - "shortcut": "RCN", + "shortcut": "STP", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -14497,17 +22863,17 @@ } ] }, - "erc20:eth:RDN": { - "address": "0x255Aa6DF07540Cb5d3d297f0D0D4D84cb52bc8e6", + "erc20:eth:STQ": { + "address": "0x5c3a228510D246b78a3765C20221Cbf3082b44a4", "links": { - "Github": "https://github.com/raiden-network/raiden/", - "Homepage": "https://raiden.network" + "Github": "https://github.com/Storiqa/", + "Homepage": "https://storiqa.com" }, - "marketcap_usd": 0, - "name": "Raiden Network", + "marketcap_usd": 2797979.022906793, + "name": "Storiqa", "network": "eth", - "shortcut": "RDN", - "t1_enabled": "soon", + "shortcut": "STQ", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -14525,16 +22891,16 @@ } ] }, - "erc20:eth:REA": { - "address": "0x767bA2915EC344015a7938E3eEDfeC2785195D05", + "erc20:eth:STR": { + "address": "0xBAE235823D7255D9D48635cEd4735227244Cd583", "links": { - "Homepage": "https://www.realisto.io" + "Homepage": "https://staker.network" }, - "marketcap_usd": 0, - "name": "Realisto", + "marketcap_usd": 4442.062555170289, + "name": "Staker", "network": "eth", - "shortcut": "REA", - "t1_enabled": "yes", + "shortcut": "STR", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -14552,15 +22918,16 @@ } ] }, - "erc20:eth:REBL": { - "address": "0x5F53f7A8075614b699Baad0bC2c899f4bAd8FBBF", + "erc20:eth:STRC": { + "address": "0x46492473755e8dF960F8034877F61732D718CE96", "links": { - "Homepage": "https://www.rebellious.io" + "Github": "https://github.com/sprux/BackToEarth", + "Homepage": "https://backto.earth" }, - "marketcap_usd": 980661, - "name": "Rebellious", + "marketcap_usd": 0, + "name": "STRC", "network": "eth", - "shortcut": "REBL", + "shortcut": "STRC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -14579,17 +22946,16 @@ } ] }, - "erc20:eth:RED": { - "address": "0x76960Dccd5a1fe799F7c29bE9F19ceB4627aEb2f", + "erc20:eth:STU": { + "address": "0x0371A82e4A9d0A4312f3ee2Ac9c6958512891372", "links": { - "Github": "https://github.com/red", - "Homepage": "https://ico.red-lang.org" + "Homepage": "https://bitjob.io" }, - "marketcap_usd": 968720, - "name": "Red Community Token", + "marketcap_usd": 131360.5165751962, + "name": "bitJob", "network": "eth", - "shortcut": "RED", - "t1_enabled": "yes", + "shortcut": "STU", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -14607,16 +22973,16 @@ } ] }, - "erc20:eth:REDC": { - "address": "0xB563300A3BAc79FC09B93b6F84CE0d4465A2AC27", + "erc20:eth:STX": { + "address": "0x006BeA43Baa3f7A6f765F14f10A1a1b08334EF45", "links": { - "Github": "https://github.com/Redcabllc", - "Homepage": "https://redcab.io" + "Github": "https://github.com/stx-technologies/stox-token", + "Homepage": "https://www.stox.com" }, - "marketcap_usd": 0, - "name": "RedCab", + "marketcap_usd": 830080.9470579723, + "name": "StoxToken", "network": "eth", - "shortcut": "REDC", + "shortcut": "STX", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -14635,16 +23001,15 @@ } ] }, - "erc20:eth:REN": { - "address": "0x408e41876cCCDC0F92210600ef50372656052a38", + "erc20:eth:SUB": { + "address": "0x12480E24eb5bec1a9D4369CaB6a80caD3c0A377A", "links": { - "Github": "https://github.com/republicprotocol", - "Homepage": "https://republicprotocol.com" + "Homepage": "https://substratum.net" }, "marketcap_usd": 0, - "name": "Republic Token", + "name": "Substratum", "network": "eth", - "shortcut": "REN", + "shortcut": "SUB", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -14663,15 +23028,15 @@ } ] }, - "erc20:eth:REP": { - "address": "0x1985365e9f78359a9B6AD760e32412f4a445E862", + "erc20:eth:SUR": { + "address": "0xe120c1ECBfdFeA7F0A8f0Ee30063491E8c26fedf", "links": { - "Homepage": "https://augur.net" + "Homepage": "https://www.suretly.com" }, - "marketcap_usd": 77789332, - "name": "Augur", + "marketcap_usd": 138128.37687532563, + "name": "Suretly", "network": "eth", - "shortcut": "REP", + "shortcut": "SUR", "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", @@ -14690,16 +23055,16 @@ } ] }, - "erc20:eth:REQ": { - "address": "0x8f8221aFbB33998d8584A2B05749bA73c37a938a", + "erc20:eth:SVD": { + "address": "0xbdEB4b83251Fb146687fa19D1C660F99411eefe3", "links": { - "Homepage": "https://request.network" + "Homepage": "https://ico.savedroid.com" }, - "marketcap_usd": 16373109, - "name": "Request Network", + "marketcap_usd": 839456.8831429093, + "name": "savedroid", "network": "eth", - "shortcut": "REQ", - "t1_enabled": "yes", + "shortcut": "SVD", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -14717,17 +23082,16 @@ } ] }, - "erc20:eth:REX": { - "address": "0xf05a9382A4C3F29E2784502754293D88b835109C", + "erc20:eth:SWFTC": { + "address": "0x0bb217E40F8a5Cb79Adf04E1aAb60E5abd0dfC1e", "links": { - "Github": "https://github.com/rexmls/RexToken", - "Homepage": "https://imbrex.io" + "Homepage": "http://www.swftcoin.com" }, - "marketcap_usd": 0, - "name": "REX", + "marketcap_usd": 3452822.2239462347, + "name": "SwftCoin", "network": "eth", - "shortcut": "REX", - "t1_enabled": "yes", + "shortcut": "SWFTC", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -14745,15 +23109,16 @@ } ] }, - "erc20:eth:RFR": { - "address": "0xd0929d411954c47438dc1d871dd6081F5C5e149c", + "erc20:eth:SWM": { + "address": "0x9e88613418cF03dCa54D6a2cf6Ad934A78C7A17A", "links": { - "Homepage": "https://refereum.com" + "Github": "https://github.com/swarmfund", + "Homepage": "https://swarm.fund" }, - "marketcap_usd": 5559233, - "name": "Refereum", + "marketcap_usd": 8791253.672604106, + "name": "Swarm Fund Token", "network": "eth", - "shortcut": "RFR", + "shortcut": "SWM", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -14772,16 +23137,15 @@ } ] }, - "erc20:eth:RIPT": { - "address": "0xdd007278B667F6bef52fD0a4c23604aA1f96039a", + "erc20:eth:SWT": { + "address": "0xB9e7F8568e08d5659f5D29C4997173d84CdF2607", "links": { - "Github": "https://github.com/riptidecoin/riptide-coin", - "Homepage": "https://riptidecoin.com" + "Homepage": "http://swarm.city" }, - "marketcap_usd": 0, - "name": "RiptideCoin", + "marketcap_usd": 918198.8185689499, + "name": "Swarm City Token", "network": "eth", - "shortcut": "RIPT", + "shortcut": "SWT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -14800,15 +23164,15 @@ } ] }, - "erc20:eth:RLC": { - "address": "0x607F4C5BB672230e8672085532f7e901544a7375", + "erc20:eth:SXDT": { + "address": "0x12B306fA98F4CbB8d4457FdFf3a0A0a56f07cCdf", "links": { - "Homepage": "http://crowdsale.iex.ec" + "Homepage": "http://www.spectre.ai" }, - "marketcap_usd": 14920507, - "name": "IEx.ec", + "marketcap_usd": 18748612.950990014, + "name": "Spectre.ai D-Token", "network": "eth", - "shortcut": "RLC", + "shortcut": "SXDT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -14827,16 +23191,15 @@ } ] }, - "erc20:eth:RLT": { - "address": "0xcCeD5B8288086BE8c38E23567e684C3740be4D48", + "erc20:eth:SXUT": { + "address": "0x2C82c73d5B34AA015989462b2948cd616a37641F", "links": { - "Github": "https://github.com/Smartroulette", - "Homepage": "https://smartplay.tech" + "Homepage": "http://www.spectre.ai" }, - "marketcap_usd": 0, - "name": "RLT", + "marketcap_usd": 1472502.2629439272, + "name": "Spectre.ai U-Token", "network": "eth", - "shortcut": "RLT", + "shortcut": "SXUT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -14855,15 +23218,15 @@ } ] }, - "erc20:eth:RLTY": { - "address": "0xbe99B09709fc753b09BCf557A992F6605D5997B0", + "erc20:eth:SYN": { + "address": "0x10B123FdDde003243199aaD03522065dC05827A0", "links": { - "Homepage": "http://www.smartrealty.io" + "Homepage": "https://synapse.ai" }, "marketcap_usd": 0, - "name": "SMARTRealty", + "name": "Synapse", "network": "eth", - "shortcut": "RLTY", + "shortcut": "SYN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -14882,15 +23245,15 @@ } ] }, - "erc20:eth:RLX": { - "address": "0x4A42d2c580f83dcE404aCad18dab26Db11a1750E", + "erc20:eth:SenSatorI": { + "address": "0x4cA74185532DC1789527194e5B9c866dD33F4E82", "links": { - "Homepage": "http://www.relex.io" + "Homepage": "http://theglobalbitcoin.com" }, - "marketcap_usd": 414105, - "name": "Relex", + "marketcap_usd": 0, + "name": "SenSatorI Token", "network": "eth", - "shortcut": "RLX", + "shortcut": "SenSatorI", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -14909,16 +23272,15 @@ } ] }, - "erc20:eth:RMESH": { - "address": "0x8D5682941cE456900b12d47ac06a88b47C764CE1", + "erc20:eth:TALAO": { + "address": "0x1D4cCC31dAB6EA20f461d329a0562C1c58412515", "links": { - "Github": "https://github.com/rightmesh", - "Homepage": "https://www.rightmesh.io/" + "Homepage": "https://www.talao.io" }, - "marketcap_usd": 0, - "name": "RightMesh Token", + "marketcap_usd": 197519.25172725355, + "name": "Talao", "network": "eth", - "shortcut": "RMESH", + "shortcut": "TALAO", "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", @@ -14937,15 +23299,16 @@ } ] }, - "erc20:eth:RNDR": { - "address": "0x0996bFb5D057faa237640E2506BE7B4f9C46de0B", + "erc20:eth:TAU": { + "address": "0xc27A2F05fa577a83BA0fDb4c38443c0718356501", "links": { - "Homepage": "https://rendertoken.com" + "Github": "https://github.com/lamden", + "Homepage": "https://www.lamden.io" }, - "marketcap_usd": 0, - "name": "Render Token", + "marketcap_usd": 3580323.440292222, + "name": "Lamden Tau", "network": "eth", - "shortcut": "RNDR", + "shortcut": "TAU", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -14964,16 +23327,16 @@ } ] }, - "erc20:eth:ROCK": { - "address": "0xA40106134c5bF4c41411554e6db99B95A15ed9d8", + "erc20:eth:TBC2": { + "address": "0xFACCD5Fc83c3E4C3c1AC1EF35D15adf06bCF209C", "links": { - "Github": "https://github.com/rocketico", - "Homepage": "https://rocketico.io" + "Github": "https://github.com/erc20club", + "Homepage": "https://www.tbc.erc20.club" }, "marketcap_usd": 0, - "name": "Rocket Token", + "name": "TBC2", "network": "eth", - "shortcut": "ROCK", + "shortcut": "TBC2", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -14992,16 +23355,17 @@ } ] }, - "erc20:eth:ROCK2": { - "address": "0xC16b542ff490e01fcc0DC58a60e1EFdc3e357cA6", + "erc20:eth:TBT": { + "address": "0xAFe60511341a37488de25Bef351952562E31fCc1", "links": { - "Homepage": "https://icerockmining.io" + "Github": "https://github.com/tbitbot", + "Homepage": "https://tbitbot.com" }, - "marketcap_usd": 4609877, - "name": "ICE ROCK MINING", + "marketcap_usd": 0, + "name": "TBitBot", "network": "eth", - "shortcut": "ROCK2", - "t1_enabled": "soon", + "shortcut": "TBT", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -15019,15 +23383,15 @@ } ] }, - "erc20:eth:ROCK2PAY": { - "address": "0x0E3de3B0E3D617FD8D1D8088639bA877feb4d742", + "erc20:eth:TBX": { + "address": "0x3A92bD396aEf82af98EbC0Aa9030D25a23B11C6b", "links": { - "Homepage": "https://icerockmining.io" + "Homepage": "https://tokenbox.io" }, - "marketcap_usd": 4609877, - "name": "ICE ROCK MINING", + "marketcap_usd": 174109.5589990741, + "name": "Tokenbox", "network": "eth", - "shortcut": "ROCK2PAY", + "shortcut": "TBX", "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", @@ -15046,15 +23410,16 @@ } ] }, - "erc20:eth:ROK": { - "address": "0xc9De4B7F0C3d991e967158E4D4bFA4b51Ec0b114", + "erc20:eth:TCA": { + "address": "0xfA0eF5E034CaE1AE752d59bdb8aDcDe37Ed7aB97", "links": { - "Homepage": "https://rockchain.org" + "Github": "https://github.com/TcandyChain", + "Homepage": "https://www.tcandy.io" }, "marketcap_usd": 0, - "name": "Rocketchain", + "name": "TangguoTao Token", "network": "eth", - "shortcut": "ROK", + "shortcut": "TCA", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -15073,16 +23438,16 @@ } ] }, - "erc20:eth:RPL": { - "address": "0xB4EFd85c19999D84251304bDA99E90B92300Bd93", + "erc20:eth:TCH": { + "address": "0x9972A0F24194447E73a7e8b6CD26a52e02DDfAD5", "links": { - "Homepage": "https://www.rocketpool.net" + "Homepage": "https://www.thorecash.com" }, - "marketcap_usd": 0, - "name": "Rocket Pool", + "marketcap_usd": 40890.95446855782, + "name": "Thore Cash", "network": "eth", - "shortcut": "RPL", - "t1_enabled": "yes", + "shortcut": "TCH", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -15100,16 +23465,15 @@ } ] }, - "erc20:eth:RTN": { - "address": "0x54b293226000ccBFC04DF902eEC567CB4C35a903", + "erc20:eth:TDH": { + "address": "0x2a1dbabe65c595B0022e75208C34014139d5d357", "links": { - "Github": "https://github.com/Ridercoin2/RiderCoin/blob/master/README.md", - "Homepage": "http://ridertoken.com" + "Homepage": "https://trustedhealth.io" }, "marketcap_usd": 0, - "name": "RiderToken", + "name": "TrustedHealth", "network": "eth", - "shortcut": "RTN", + "shortcut": "TDH", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -15128,16 +23492,15 @@ } ] }, - "erc20:eth:RUNE": { - "address": "0xdEE02D94be4929d26f67B64Ada7aCf1914007F10", + "erc20:eth:TEAM": { + "address": "0x1c79ab32C66aCAa1e9E81952B8AAa581B43e54E7", "links": { - "Github": "https://github.com/thorchain", - "Homepage": "https://thorchain.org" + "Homepage": "https://tokenstars.com/team" }, - "marketcap_usd": 0, - "name": "Rune", + "marketcap_usd": 19356.16537537995, + "name": "TEAM (TokenStars)", "network": "eth", - "shortcut": "RUNE", + "shortcut": "TEAM", "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", @@ -15156,16 +23519,16 @@ } ] }, - "erc20:eth:RVL": { - "address": "0x41f615E24fAbd2b097a320E9E6c1f448cb40521c", + "erc20:eth:TEN": { + "address": "0xDD16eC0F66E54d453e6756713E533355989040E4", "links": { - "Homepage": "https://www.r-evolutioncoin.com" + "Homepage": "https://www.tokenomy.com" }, - "marketcap_usd": 0, - "name": "RVL", + "marketcap_usd": 11732660.77114, + "name": "Tokenomy", "network": "eth", - "shortcut": "RVL", - "t1_enabled": "yes", + "shortcut": "TEN", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -15183,16 +23546,16 @@ } ] }, - "erc20:eth:RVT": { - "address": "0x3d1BA9be9f66B8ee101911bC36D3fB562eaC2244", + "erc20:eth:TFD": { + "address": "0xE5F166c0D8872B68790061317BB6CcA04582C912", "links": { - "Homepage": "https://rivetzintl.com" + "Homepage": "https://ico.tefoodint.com" }, - "marketcap_usd": 894459, - "name": "Rivetz", + "marketcap_usd": 3632802.3881724575, + "name": "TE-FOOD", "network": "eth", - "shortcut": "RVT", - "t1_enabled": "yes", + "shortcut": "TFD", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -15210,15 +23573,16 @@ } ] }, - "erc20:eth:S-A-PAT": { - "address": "0x1EC8fE51a9B6A3a6C427D17d9ECC3060fbc4a45c", + "erc20:eth:TFL": { + "address": "0xa7f976C360ebBeD4465c2855684D1AAE5271eFa9", "links": { - "Homepage": "https://www.smartillions.ch" + "Github": "https://github.com/TrueFlip", + "Homepage": "https://trueflip.io" }, - "marketcap_usd": 0, - "name": "S-A-PAT", + "marketcap_usd": 1241672.4239099557, + "name": "TrueFlip", "network": "eth", - "shortcut": "S-A-PAT", + "shortcut": "TFL", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -15237,16 +23601,16 @@ } ] }, - "erc20:eth:S-ETH": { - "address": "0x3eb91D237e491E0DEE8582c402D85CB440fb6b54", + "erc20:eth:TGAME": { + "address": "0xF8e06E4e4A80287FDCa5b02dcCecAa9D0954840F", "links": { - "Homepage": "https://www.smartillions.ch" + "Homepage": "https://ico.truegame.io" }, - "marketcap_usd": 0, - "name": "S-ETH", + "marketcap_usd": 778972.4337919885, + "name": "Truegame", "network": "eth", - "shortcut": "S-ETH", - "t1_enabled": "yes", + "shortcut": "TGAME", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -15264,16 +23628,16 @@ } ] }, - "erc20:eth:SALT": { - "address": "0x4156D3342D5c385a87D264F90653733592000581", + "erc20:eth:TGT": { + "address": "0xAc3Da587eac229C9896D919aBC235CA4Fd7f72c1", "links": { - "Homepage": "https://saltlending.com" + "Homepage": "https://www.tgtcoins.com" }, - "marketcap_usd": 18251833, - "name": "Salt Lending Token", + "marketcap_usd": 294965.16272370523, + "name": "Target Coin", "network": "eth", - "shortcut": "SALT", - "t1_enabled": "yes", + "shortcut": "TGT", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -15291,15 +23655,15 @@ } ] }, - "erc20:eth:SAN": { - "address": "0x7C5A0CE9267ED19B22F8cae653F198e3E8daf098", + "erc20:eth:THETA": { + "address": "0x3883f5e181fccaF8410FA61e12b59BAd963fb645", "links": { - "Homepage": "https://santiment.net" + "Homepage": "https://www.thetatoken.org/" }, - "marketcap_usd": 20936234, - "name": "Santiment", + "marketcap_usd": 44270574.58432219, + "name": "Theta Token", "network": "eth", - "shortcut": "SAN", + "shortcut": "THETA", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -15318,16 +23682,16 @@ } ] }, - "erc20:eth:SCANDI": { - "address": "0x78fE18e41f436e1981a3a60D1557c8a7a9370461", + "erc20:eth:THR": { + "address": "0x1Cb3209D45B2a60B7fBCA1cCDBF87f674237A4aa", "links": { - "Homepage": "https://scandiweb.com" + "Homepage": "https://www.thorecoin.com" }, - "marketcap_usd": 0, - "name": "Scandiweb Coin", + "marketcap_usd": 80326.7467547608, + "name": "ThoreCoin", "network": "eth", - "shortcut": "SCANDI", - "t1_enabled": "yes", + "shortcut": "THR", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -15345,16 +23709,16 @@ } ] }, - "erc20:eth:SCL": { - "address": "0xd7631787B4dCc87b1254cfd1e5cE48e96823dEe8", + "erc20:eth:THRT": { + "address": "0x4f27053F32edA8Af84956437Bc00e5fFa7003287", "links": { - "Homepage": "https://ico.nexus.social" + "Homepage": "https://ico.thrivelabs.io" }, - "marketcap_usd": 0, - "name": "SocialCoin", + "marketcap_usd": 701556.9061326698, + "name": "Thrive Token", "network": "eth", - "shortcut": "SCL", - "t1_enabled": "yes", + "shortcut": "THRT", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -15372,15 +23736,16 @@ } ] }, - "erc20:eth:SENSE": { - "address": "0x6745fAB6801e376cD24F03572B9C9B0D4EdDDCcf", + "erc20:eth:THUG": { + "address": "0xfe7B915A0bAA0E79f85c5553266513F7C1c03Ed0", "links": { - "Homepage": "https://sensay.it" + "Github": "https://github.com/THUGCOIN/THUGCoin", + "Homepage": "https://thugcoin.cash" }, - "marketcap_usd": 1415495, - "name": "Sensay", + "marketcap_usd": 0, + "name": "THUG", "network": "eth", - "shortcut": "SENSE", + "shortcut": "THUG", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -15399,17 +23764,16 @@ } ] }, - "erc20:eth:SET": { - "address": "0xe06eda7435bA749b047380CEd49121ddE93334Ae", + "erc20:eth:TIC": { + "address": "0x72430A612Adc007c50e3b6946dBb1Bb0fd3101D1", "links": { - "Github": "https://github.com/SydEthereum/meetup-token#meetup-token", - "Homepage": "http://sydeth.com" + "Homepage": "https://thingschain.network" }, - "marketcap_usd": 0, - "name": "SET", + "marketcap_usd": 51010.61399112525, + "name": "Thingschain", "network": "eth", - "shortcut": "SET", - "t1_enabled": "yes", + "shortcut": "TIC", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -15427,16 +23791,16 @@ } ] }, - "erc20:eth:SEXY": { - "address": "0x98F5e9b7F0e33956C0443E81bF7deB8B5b1ed545", + "erc20:eth:TIE": { + "address": "0x999967E2Ec8A74B7c8E9dB19E039d920B31d39D0", "links": { - "Homepage": "http://sexytoken.co" + "Homepage": "https://ties.network" }, - "marketcap_usd": 0, - "name": "Sexy Token", + "marketcap_usd": 532600.5576246629, + "name": "Ties.DB", "network": "eth", - "shortcut": "SEXY", - "t1_enabled": "yes", + "shortcut": "TIE", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -15454,16 +23818,16 @@ } ] }, - "erc20:eth:SGEL": { - "address": "0xa1ccc166faf0E998b3E33225A1A0301B1C86119D", + "erc20:eth:TIG": { + "address": "0xEee2d00Eb7DEB8Dd6924187f5AA3496B7d06E62A", "links": { - "Homepage": "https://www.soerengelder.com" + "Homepage": "https://www.tigereum.io" }, - "marketcap_usd": 0, - "name": "SGELDER", + "marketcap_usd": 233947.50072339625, + "name": "Tigereum", "network": "eth", - "shortcut": "SGEL", - "t1_enabled": "yes", + "shortcut": "TIG", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -15481,15 +23845,15 @@ } ] }, - "erc20:eth:SHIT": { - "address": "0xEF2E9966eb61BB494E5375d5Df8d67B7dB8A780D", + "erc20:eth:TIME": { + "address": "0x6531f133e6DeeBe7F2dcE5A0441aA7ef330B4e53", "links": { - "Homepage": "https://www.shitcoin.io" + "Homepage": "https://chronobank.io" }, - "marketcap_usd": 0, - "name": "SHIT", + "marketcap_usd": 1350824.4697287933, + "name": "Chronobank", "network": "eth", - "shortcut": "SHIT", + "shortcut": "TIME", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -15508,15 +23872,15 @@ } ] }, - "erc20:eth:SIFT": { - "address": "0x8a187D5285d316bcBC9ADafc08b51d70a0d8e000", + "erc20:eth:TIO": { + "address": "0x80BC5512561c7f85A3A9508c7df7901b370Fa1DF", "links": { - "Homepage": "https://smartift.com" + "Homepage": "https://trade.io" }, "marketcap_usd": 0, - "name": "SIFT", + "name": "TIO", "network": "eth", - "shortcut": "SIFT", + "shortcut": "TIO", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -15535,16 +23899,15 @@ } ] }, - "erc20:eth:SIG": { - "address": "0x6888a16eA9792c15A4DCF2f6C623D055c8eDe792", + "erc20:eth:TIX": { + "address": "0xEa1f346faF023F974Eb5adaf088BbCdf02d761F4", "links": { - "Github": "https://github.com/SpectivOfficial", - "Homepage": "https://spectivvr.com" + "Homepage": "https://www.blocktix.io" }, - "marketcap_usd": 0, - "name": "Signal", + "marketcap_usd": 4153421.9742799997, + "name": "Blocktix", "network": "eth", - "shortcut": "SIG", + "shortcut": "TIX", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -15563,17 +23926,16 @@ } ] }, - "erc20:eth:SKIN": { - "address": "0x2bDC0D42996017fCe214b21607a515DA41A9E0C5", + "erc20:eth:TKA": { + "address": "0xdaE1Baf249964bc4b6aC98c3122f0e3E785fd279", "links": { - "Github": "https://github.com/Steamtradenet/smart-contract", - "Homepage": "https://skincoin.org" + "Homepage": "https://www.tokia.io" }, - "marketcap_usd": 0, - "name": "SKIN", + "marketcap_usd": 132440.69119547028, + "name": "Tokia", "network": "eth", - "shortcut": "SKIN", - "t1_enabled": "yes", + "shortcut": "TKA", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -15591,17 +23953,17 @@ } ] }, - "erc20:eth:SKO1": { - "address": "0x4994e81897a920c0FEA235eb8CEdEEd3c6fFF697", + "erc20:eth:TKLN": { + "address": "0x0675DAa94725A528b05A3A88635C03EA964BFA7E", "links": { - "Homepage": "http://www.sikoba.com" + "Homepage": "https://taklimakan.io" }, "marketcap_usd": 0, - "name": "Sikoba", + "name": "Taklimakan Network", "network": "eth", - "shortcut": "SKO1", - "t1_enabled": "yes", - "t2_enabled": "yes", + "shortcut": "TKLN", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20", "wallet": [ { @@ -15618,15 +23980,15 @@ } ] }, - "erc20:eth:SKR": { - "address": "0x4c382F8E09615AC86E08CE58266CC227e7d4D913", + "erc20:eth:TKN": { + "address": "0xaAAf91D9b90dF800Df4F55c205fd6989c977E73a", "links": { - "Homepage": "https://tokensale.skrilla.com" + "Homepage": "https://etherscan.io/token/TokenCard" }, - "marketcap_usd": 0, - "name": "SKR Token", + "marketcap_usd": 6099151.00377654, + "name": "TokenCard", "network": "eth", - "shortcut": "SKR", + "shortcut": "TKN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -15645,15 +24007,15 @@ } ] }, - "erc20:eth:SLT": { - "address": "0x7A5fF295Dc8239d5C2374E4D894202aAF029Cab6", + "erc20:eth:TLX": { + "address": "0xb3616550aBc8AF79c7A5902DEF9Efa3bC9A95200", "links": { - "Homepage": "http://smartlands.io" + "Homepage": "https://telexai.com" }, - "marketcap_usd": 18340158, - "name": "Smartlands", + "marketcap_usd": 0, + "name": "Telex", "network": "eth", - "shortcut": "SLT", + "shortcut": "TLX", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -15672,17 +24034,16 @@ } ] }, - "erc20:eth:SLY": { - "address": "0x7928c8aBF1F74eF9F96D4D0a44e3b4209d360785", + "erc20:eth:TMT": { + "address": "0x3209f98BeBF0149B769ce26D71F7aEA8E435EfEa", "links": { - "Github": "https://github.com/SELFLLERY", - "Homepage": "https://selfllery.com/" + "Homepage": "http://traxia.co" }, - "marketcap_usd": 0, - "name": "Selfllery", + "marketcap_usd": 1550128.8573761904, + "name": "TRAXIA", "network": "eth", - "shortcut": "SLY", - "t1_enabled": "yes", + "shortcut": "TMT", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -15700,16 +24061,16 @@ } ] }, - "erc20:eth:SNC": { - "address": "0xF4134146AF2d511Dd5EA8cDB1C4AC88C57D60404", + "erc20:eth:TNS": { + "address": "0xb0280743b44bF7db4B6bE482b2Ba7b75E5dA096C", "links": { - "Homepage": "https://suncontract.org" + "Homepage": "https://transcodium.com" }, - "marketcap_usd": 0, - "name": "SNC", + "marketcap_usd": 116166.67813871022, + "name": "Transcodium", "network": "eth", - "shortcut": "SNC", - "t1_enabled": "yes", + "shortcut": "TNS", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -15727,15 +24088,16 @@ } ] }, - "erc20:eth:SND": { - "address": "0xf333b2Ace992ac2bBD8798bF57Bc65a06184afBa", + "erc20:eth:TNT": { + "address": "0x08f5a9235B08173b7569F83645d2c7fB55e8cCD8", "links": { - "Homepage": "https://www.sandcoin.io" + "Github": "https://github.com/tierion", + "Homepage": "https://tierion.com" }, - "marketcap_usd": 0, - "name": "Sandcoin", + "marketcap_usd": 5872092.115278546, + "name": "Tierion Network Token", "network": "eth", - "shortcut": "SND", + "shortcut": "TNT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -15754,18 +24116,17 @@ } ] }, - "erc20:eth:SNG": { - "address": "0xcFD6Ae8BF13f42DE14867351eAff7A8A3b9FbBe7", + "erc20:eth:TOK": { + "address": "0x9a49f02e128a8E989b443a8f94843C0918BF45E7", "links": { - "Github": "https://github.com/SinergiaBlockchain", - "Homepage": "https://sinergiablockchain.org/index-en.html" + "Homepage": "https://www.tokok.com/" }, "marketcap_usd": 0, - "name": "SINERGIA", + "name": "TOKOK", "network": "eth", - "shortcut": "SNG", - "t1_enabled": "yes", - "t2_enabled": "yes", + "shortcut": "TOK", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20", "wallet": [ { @@ -15782,15 +24143,16 @@ } ] }, - "erc20:eth:SNGLS": { - "address": "0xaeC2E87E0A235266D9C5ADc9DEb4b2E29b54D009", + "erc20:eth:TOOR": { + "address": "0x8eb965ee9cCFBCE76c0a06264492c0afEfc2826d", "links": { - "Homepage": "https://singulardtv.com" + "Github": "https://github.com/toorister/toorcoin", + "Homepage": "https://www.toorcoin.com" }, - "marketcap_usd": 6208806, - "name": "SingularDTV", + "marketcap_usd": 0, + "name": "ToorCoin", "network": "eth", - "shortcut": "SNGLS", + "shortcut": "TOOR", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -15809,16 +24171,16 @@ } ] }, - "erc20:eth:SNIP": { - "address": "0x44F588aEeB8C44471439D1270B3603c66a9262F1", + "erc20:eth:TRAC": { + "address": "0xaA7a9CA87d3694B5755f213B5D04094b8d0F0A6F", "links": { - "Homepage": "https://www.snip.network" + "Homepage": "https://origintrail.io" }, - "marketcap_usd": 0, - "name": "SNIP", + "marketcap_usd": 5303653.612972855, + "name": "OriginTrail", "network": "eth", - "shortcut": "SNIP", - "t1_enabled": "yes", + "shortcut": "TRAC", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -15836,17 +24198,16 @@ } ] }, - "erc20:eth:SNM": { - "address": "0x983F6d60db79ea8cA4eB9968C6aFf8cfA04B3c63", + "erc20:eth:TRAK": { + "address": "0x12759512D326303B45f1ceC8F7B6fd96F387778E", "links": { - "Github": "https://github.com/sonm-io", - "Homepage": "https://sonm.com" + "Homepage": "http://www.trakinvest.com" }, - "marketcap_usd": 0, - "name": "SNM", + "marketcap_usd": 256071.96508907626, + "name": "TrakInvest", "network": "eth", - "shortcut": "SNM", - "t1_enabled": "yes", + "shortcut": "TRAK", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -15864,15 +24225,15 @@ } ] }, - "erc20:eth:SNOV": { - "address": "0xBDC5bAC39Dbe132B1E030e898aE3830017D7d969", + "erc20:eth:TRCN": { + "address": "0x566Fd7999B1Fc3988022bD38507A48F0bCf22c77", "links": { - "Homepage": "https://tokensale.snov.io" + "Homepage": "http://www.therealcoinz.com" }, "marketcap_usd": 0, - "name": "SNOV", + "name": "The Real Coin", "network": "eth", - "shortcut": "SNOV", + "shortcut": "TRCN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -15891,16 +24252,16 @@ } ] }, - "erc20:eth:SNT": { - "address": "0x744d70FDBE2Ba4CF95131626614a1763DF805B9E", + "erc20:eth:TRCT": { + "address": "0x30ceCB5461A449A90081F5a5F55db4e048397BAB", "links": { - "Homepage": "https://status.im" + "Homepage": "http://www.tracto.org" }, - "marketcap_usd": 0, - "name": "Status Network Token", + "marketcap_usd": 196696.50386815143, + "name": "Tracto", "network": "eth", - "shortcut": "SNT", - "t1_enabled": "yes", + "shortcut": "TRCT", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -15918,16 +24279,16 @@ } ] }, - "erc20:eth:SOL": { - "address": "0x1F54638b7737193FFd86c19Ec51907A7c41755D8", + "erc20:eth:TRDT": { + "address": "0x33f90Dee07c6E8B9682dD20F73E6C358B2ED0f03", "links": { - "Homepage": "https://sola.foundation" + "Homepage": "https://www.tridentgroup.io" }, - "marketcap_usd": 28757, - "name": "Sola Token", + "marketcap_usd": 17529.479199632515, + "name": "Trident Group", "network": "eth", - "shortcut": "SOL", - "t1_enabled": "yes", + "shortcut": "TRDT", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -15945,15 +24306,16 @@ } ] }, - "erc20:eth:SPANK": { - "address": "0x42d6622deCe394b54999Fbd73D108123806f6a18", + "erc20:eth:TRST": { + "address": "0xCb94be6f13A1182E4A4B6140cb7bf2025d28e41B", "links": { - "Homepage": "https://spankchain.com" + "Github": "https://github.com/WeTrustPlatform", + "Homepage": "https://www.wetrust.io" }, - "marketcap_usd": 4241771, - "name": "SpankChain", + "marketcap_usd": 760826.4323094162, + "name": "TRST", "network": "eth", - "shortcut": "SPANK", + "shortcut": "TRST", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -15972,15 +24334,15 @@ } ] }, - "erc20:eth:SPARC": { - "address": "0x58bf7df57d9DA7113c4cCb49d8463D4908C735cb", + "erc20:eth:TSW": { + "address": "0x6B87999bE87358065bBdE41e8a0fe0B7b1cd2514", "links": { - "Homepage": "https://kingsds.network" + "Homepage": "https://www.teslawatt.com" }, "marketcap_usd": 0, - "name": "SPARC", + "name": "TeslaWatt", "network": "eth", - "shortcut": "SPARC", + "shortcut": "TSW", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -15999,16 +24361,17 @@ } ] }, - "erc20:eth:SPARTA": { - "address": "0x24AEF3BF1A47561500f9430D74Ed4097C47F51F2", + "erc20:eth:TTA": { + "address": "0xaaB606817809841E8b1168be8779Eeaf6744Ef64", "links": { - "Homepage": "https://www.spartaico.com" + "Github": "http://github.com/TendTechnologies", + "Homepage": "https://www.tend.swiss" }, "marketcap_usd": 0, - "name": "SPARTA", + "name": "Tend Token", "network": "eth", - "shortcut": "SPARTA", - "t1_enabled": "yes", + "shortcut": "TTA", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -16026,17 +24389,17 @@ } ] }, - "erc20:eth:SPF": { - "address": "0x85089389C14Bd9c77FC2b8F0c3d1dC3363Bf06Ef", + "erc20:eth:TTC": { + "address": "0x9389434852b94bbaD4c8AfEd5B7BDBc5Ff0c2275", "links": { - "Homepage": "https://sportyfi.io" + "Homepage": "http://www.ttc.eco" }, - "marketcap_usd": 0, - "name": "Sportify", + "marketcap_usd": 5364164.928524194, + "name": "TTC Protocol", "network": "eth", - "shortcut": "SPF", - "t1_enabled": "yes", - "t2_enabled": "yes", + "shortcut": "TTC", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20", "wallet": [ { @@ -16053,16 +24416,16 @@ } ] }, - "erc20:eth:SPN": { - "address": "0x20F7A3DdF244dc9299975b4Da1C39F8D5D75f05A", + "erc20:eth:TTU": { + "address": "0x9CDa8A60dd5AfA156c95Bd974428d91a0812e054", "links": { - "Homepage": "https://www.sapien.network/" + "Homepage": "https://tatatutoken.io" }, - "marketcap_usd": 458866, - "name": "Sapien", + "marketcap_usd": 698004.9456183023, + "name": "TaTaTu", "network": "eth", - "shortcut": "SPN", - "t1_enabled": "yes", + "shortcut": "TTU", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -16080,17 +24443,17 @@ } ] }, - "erc20:eth:SRN": { - "address": "0x68d57c9a1C35f63E2c83eE8e49A64e9d70528D25", + "erc20:eth:TUSD": { + "address": "0x0000000000085d4780B73119b644AE5ecd22b376", "links": { - "Github": "https://github.com/sirin-labs/crowdsale-smart-contract", - "Homepage": "https://sirinlabs.com" + "Github": "https://github.com/trusttoken", + "Homepage": "https://www.trusttoken.com" }, - "marketcap_usd": 0, - "name": "Sirin Labs", + "marketcap_usd": 208528618.461705, + "name": "TrueUSD", "network": "eth", - "shortcut": "SRN", - "t1_enabled": "yes", + "shortcut": "TUSD", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -16108,15 +24471,15 @@ } ] }, - "erc20:eth:SSH": { - "address": "0x6e2050CBFB3eD8A4d39b64cC9f47E711a03a5a89", + "erc20:eth:TWN": { + "address": "0x2eF1aB8a26187C58BB8aAeB11B2fC6D25C5c0716", "links": { - "Homepage": "https://www.stream.space" + "Homepage": "https://ico.theworldnews.net" }, "marketcap_usd": 0, - "name": "StreamShares", + "name": "The World News", "network": "eth", - "shortcut": "SSH", + "shortcut": "TWN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -16135,15 +24498,15 @@ } ] }, - "erc20:eth:STABIT": { - "address": "0x4A89cD486fA996ad50c0a63C35c78702f5422a50", + "erc20:eth:TWNKL": { + "address": "0xfbd0d1c77B501796A35D86cF91d65D9778EeE695", "links": { - "Homepage": "https://stabitcoin.com/" + "Homepage": "https://www.rainbowcurrency.com/" }, "marketcap_usd": 0, - "name": "StabitCoin", + "name": "Twinkle", "network": "eth", - "shortcut": "STABIT", + "shortcut": "TWNKL", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -16162,15 +24525,15 @@ } ] }, - "erc20:eth:STAC": { - "address": "0x9a005c9a89BD72a4Bd27721E7a09A3c11D2b03C4", + "erc20:eth:TaaS": { + "address": "0xE7775A6e9Bcf904eb39DA2b68c5efb4F9360e08C", "links": { - "Homepage": "https://coinstarter.com" + "Homepage": "https://taas.fund" }, - "marketcap_usd": 0, - "name": "Starter Coin", + "marketcap_usd": 2257449.7792685404, + "name": "Token-as-a-Service", "network": "eth", - "shortcut": "STAC", + "shortcut": "TaaS", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -16189,16 +24552,16 @@ } ] }, - "erc20:eth:STAR": { - "address": "0xF70a642bD387F94380fFb90451C2c81d4Eb82CBc", + "erc20:eth:UBT": { + "address": "0x8400D94A5cb0fa0D041a3788e395285d61c9ee5e", "links": { - "Homepage": "http://starbase.co" + "Homepage": "https://unibright.io" }, - "marketcap_usd": 0, - "name": "Star Token", + "marketcap_usd": 1638696.5621619327, + "name": "Unibright", "network": "eth", - "shortcut": "STAR", - "t1_enabled": "yes", + "shortcut": "UBT", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -16216,16 +24579,15 @@ } ] }, - "erc20:eth:STB": { - "address": "0x09BcA6eBAb05Ee2ae945BE4edA51393d94Bf7b99", + "erc20:eth:UCASH": { + "address": "0x92e52a1A235d9A103D970901066CE910AAceFD37", "links": { - "Github": "https://github.com/stableproject/", - "Homepage": "https://stable.foundation" + "Homepage": "https://u.cash" }, - "marketcap_usd": 0, - "name": "STABLE Token", + "marketcap_usd": 861133.9949136986, + "name": "U.CASH", "network": "eth", - "shortcut": "STB", + "shortcut": "UCASH", "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", @@ -16244,17 +24606,16 @@ } ] }, - "erc20:eth:STC": { - "address": "0x629aEe55ed49581C33ab27f9403F7992A289ffd5", + "erc20:eth:UCN": { + "address": "0xAAf37055188Feee4869dE63464937e683d61b2a1", "links": { - "Github": "https://github.com/DimensionsNetwork", - "Homepage": "https://dimensions.network" + "Homepage": "https://uchain.world" }, - "marketcap_usd": 0, - "name": "StrikeCoin Token", + "marketcap_usd": 383137.99129379034, + "name": "UChain", "network": "eth", - "shortcut": "STC", - "t1_enabled": "yes", + "shortcut": "UCN", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -16271,17 +24632,17 @@ "url": "https://www.myetherwallet.com" } ] - }, - "erc20:eth:STK": { - "address": "0xaE73B38d1c9A8b274127ec30160a4927C4d71824", + }, + "erc20:eth:UFR": { + "address": "0xEA097A2b1dB00627B2Fa17460Ad260c016016977", "links": { - "Homepage": "https://stktoken.com" + "Homepage": "https://www.upfiring.com" }, - "marketcap_usd": 1228181, - "name": "STK Token", + "marketcap_usd": 1348290.0866668022, + "name": "Upfiring", "network": "eth", - "shortcut": "STK", - "t1_enabled": "yes", + "shortcut": "UFR", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -16299,15 +24660,16 @@ } ] }, - "erc20:eth:STN": { - "address": "0x599346779e90fc3F5F997b5ea715349820F91571", + "erc20:eth:UKG": { + "address": "0x24692791Bc444c5Cd0b81e3CBCaba4b04Acd1F3B", "links": { - "Homepage": "https://saturn.network" + "Github": "https://github.com/unikoingold/UnikoinGold-UKG-Contract", + "Homepage": "https://unikoingold.com" }, - "marketcap_usd": 0, - "name": "Saturn Network", + "marketcap_usd": 3695651.307517913, + "name": "UnikoinGold", "network": "eth", - "shortcut": "STN", + "shortcut": "UKG", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -16326,17 +24688,16 @@ } ] }, - "erc20:eth:STORJ": { - "address": "0xB64ef51C888972c908CFacf59B47C1AfBC0Ab8aC", + "erc20:eth:UP": { + "address": "0x6Ba460AB75Cd2c56343b3517ffeBA60748654D26", "links": { - "Github": "https://github.com/Storj", - "Homepage": "https://storj.io" + "Homepage": "https://uptoken.org" }, - "marketcap_usd": 19690194, - "name": "STORJ", + "marketcap_usd": 3065117.857175293, + "name": "UpToken", "network": "eth", - "shortcut": "STORJ", - "t1_enabled": "yes", + "shortcut": "UP", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -16354,16 +24715,16 @@ } ] }, - "erc20:eth:STORM": { - "address": "0xD0a4b8946Cb52f0661273bfbC6fD0E0C75Fc6433", + "erc20:eth:UPP": { + "address": "0xC86D054809623432210c107af2e3F619DcFbf652", "links": { - "Homepage": "https://www.stormtoken.com" + "Homepage": "https://sentinelprotocol.io" }, - "marketcap_usd": 14067749, - "name": "Storm Token", + "marketcap_usd": 3984243.4134820607, + "name": "Sentinel Protocol", "network": "eth", - "shortcut": "STORM", - "t1_enabled": "yes", + "shortcut": "UPP", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -16381,16 +24742,15 @@ } ] }, - "erc20:eth:STP": { - "address": "0xecd570bBf74761b960Fa04Cc10fe2c4e86FfDA36", + "erc20:eth:UQC": { + "address": "0xD01DB73E047855Efb414e6202098C4Be4Cd2423B", "links": { - "Github": "https://github.com/stashpayio", - "Homepage": "https://stashpay.io" + "Homepage": "https://uquidcoin.com" }, - "marketcap_usd": 0, - "name": "StashPay", + "marketcap_usd": 571278.8246790001, + "name": "Uquid Coin", "network": "eth", - "shortcut": "STP", + "shortcut": "UQC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -16409,16 +24769,16 @@ } ] }, - "erc20:eth:STQ": { - "address": "0x5c3a228510D246b78a3765C20221Cbf3082b44a4", + "erc20:eth:URB": { + "address": "0x931684139f756C24eC0731E9F74FE50e5548dDeF", "links": { - "Github": "https://github.com/Storiqa/", - "Homepage": "https://storiqa.com" + "Github": "https://github.com/urbitdata", + "Homepage": "https://urbitdata.io" }, - "marketcap_usd": 3765121, - "name": "Storiqa", + "marketcap_usd": 0, + "name": "Urbit Data", "network": "eth", - "shortcut": "STQ", + "shortcut": "URB", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -16437,16 +24797,16 @@ } ] }, - "erc20:eth:STRC": { - "address": "0x46492473755e8dF960F8034877F61732D718CE96", + "erc20:eth:USDC": { + "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", "links": { - "Github": "https://github.com/sprux/BackToEarth", - "Homepage": "https://backto.earth" + "Github": "https://github.com/centrehq/centre-tokens", + "Homepage": "https://www.centre.io" }, - "marketcap_usd": 0, - "name": "STRC", + "marketcap_usd": 292036783.8974997, + "name": "USD//Coin", "network": "eth", - "shortcut": "STRC", + "shortcut": "USDC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -16465,18 +24825,17 @@ } ] }, - "erc20:eth:STX": { - "address": "0x006BeA43Baa3f7A6f765F14f10A1a1b08334EF45", + "erc20:eth:USDS": { + "address": "0xA4Bdb11dc0a2bEC88d24A3aa1E6Bb17201112eBe", "links": { - "Github": "https://github.com/stx-technologies/stox-token", - "Homepage": "https://www.stox.com" + "Homepage": "https://stably.io" }, "marketcap_usd": 0, - "name": "StoxToken", + "name": "StableUSD", "network": "eth", - "shortcut": "STX", - "t1_enabled": "yes", - "t2_enabled": "yes", + "shortcut": "USDS", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20", "wallet": [ { @@ -16493,16 +24852,16 @@ } ] }, - "erc20:eth:SUB": { - "address": "0x12480E24eb5bec1a9D4369CaB6a80caD3c0A377A", + "erc20:eth:USDT": { + "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7", "links": { - "Homepage": "https://substratum.net" + "Homepage": "https://tether.to" }, - "marketcap_usd": 17988590, - "name": "Substratum", + "marketcap_usd": 0, + "name": "USD Tether (erc20)", "network": "eth", - "shortcut": "SUB", - "t1_enabled": "yes", + "shortcut": "USDT", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -16520,16 +24879,15 @@ } ] }, - "erc20:eth:SWM": { - "address": "0x9e88613418cF03dCa54D6a2cf6Ad934A78C7A17A", + "erc20:eth:UTK": { + "address": "0x70a72833d6bF7F508C8224CE59ea1Ef3d0Ea3A38", "links": { - "Github": "https://github.com/swarmfund", - "Homepage": "https://swarm.fund" + "Homepage": "https://utrust.io" }, - "marketcap_usd": 0, - "name": "Swarm Fund Token", + "marketcap_usd": 9579332.105145, + "name": "UTK", "network": "eth", - "shortcut": "SWM", + "shortcut": "UTK", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -16548,17 +24906,18 @@ } ] }, - "erc20:eth:SWT": { - "address": "0xB9e7F8568e08d5659f5D29C4997173d84CdF2607", + "erc20:eth:UTNP": { + "address": "0x9e3319636e2126e3c0bc9e3134AEC5e1508A46c7", "links": { - "Homepage": "http://swarm.city" + "Github": "https://github.com/UniversaBlockchain/universa", + "Homepage": "https://www.universa.io" }, - "marketcap_usd": 0, - "name": "Swarm City Token", + "marketcap_usd": 6663632.323995456, + "name": "Universa", "network": "eth", - "shortcut": "SWT", - "t1_enabled": "yes", - "t2_enabled": "yes", + "shortcut": "UTNP", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20", "wallet": [ { @@ -16575,16 +24934,16 @@ } ] }, - "erc20:eth:SXDT": { - "address": "0x12B306fA98F4CbB8d4457FdFf3a0A0a56f07cCdf", + "erc20:eth:UTT": { + "address": "0x16f812Be7FfF02cAF662B85d5d58a5da6572D4Df", "links": { - "Homepage": "http://www.spectre.ai" + "Homepage": "https://uttoken.io" }, - "marketcap_usd": 0, - "name": "Spectre.ai D-Token", + "marketcap_usd": 8016256.604808508, + "name": "United Traders Token", "network": "eth", - "shortcut": "SXDT", - "t1_enabled": "yes", + "shortcut": "UTT", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -16602,15 +24961,15 @@ } ] }, - "erc20:eth:SXUT": { - "address": "0x2C82c73d5B34AA015989462b2948cd616a37641F", + "erc20:eth:UUU": { + "address": "0x3543638eD4a9006E4840B105944271Bcea15605D", "links": { - "Homepage": "http://www.spectre.ai" + "Homepage": "https://u.network/" }, - "marketcap_usd": 0, - "name": "Spectre.ai U-Token", + "marketcap_usd": 1636378.7739491803, + "name": "U Networks", "network": "eth", - "shortcut": "SXUT", + "shortcut": "UUU", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -16629,15 +24988,16 @@ } ] }, - "erc20:eth:SYN": { - "address": "0x10B123FdDde003243199aaD03522065dC05827A0", + "erc20:eth:VDG": { + "address": "0x57C75ECCc8557136D32619a191fBCDc88560d711", "links": { - "Homepage": "https://synapse.ai" + "Github": "https://github.com/VeriDocGlobal", + "Homepage": "https://www.veridocglobal.com/" }, "marketcap_usd": 0, - "name": "Synapse", + "name": "VeriDocGlobal", "network": "eth", - "shortcut": "SYN", + "shortcut": "VDG", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -16656,15 +25016,16 @@ } ] }, - "erc20:eth:SenSatorI": { - "address": "0x4cA74185532DC1789527194e5B9c866dD33F4E82", + "erc20:eth:VDOC": { + "address": "0x82BD526bDB718C6d4DD2291Ed013A5186cAE2DCa", "links": { - "Homepage": "http://theglobalbitcoin.com" + "Github": "https://github.com/BlueBikeSolutions", + "Homepage": "https://www.dutyof.care/token-launch/" }, "marketcap_usd": 0, - "name": "SenSatorI Token", + "name": "Duty of Care Token", "network": "eth", - "shortcut": "SenSatorI", + "shortcut": "VDOC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -16683,16 +25044,16 @@ } ] }, - "erc20:eth:TAU": { - "address": "0xc27A2F05fa577a83BA0fDb4c38443c0718356501", + "erc20:eth:VEE": { + "address": "0x340D2bdE5Eb28c1eed91B2f790723E3B160613B7", "links": { - "Github": "https://github.com/lamden", - "Homepage": "https://www.lamden.io" + "Github": "https://github.com/blockv", + "Homepage": "https://blockv.io" }, - "marketcap_usd": 0, - "name": "Lamden Tau", + "marketcap_usd": 12292658.32665446, + "name": "BLOCKv", "network": "eth", - "shortcut": "TAU", + "shortcut": "VEE", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -16711,16 +25072,16 @@ } ] }, - "erc20:eth:TBC2": { - "address": "0xFACCD5Fc83c3E4C3c1AC1EF35D15adf06bCF209C", + "erc20:eth:VEN": { + "address": "0xD850942eF8811f2A866692A623011bDE52a462C1", "links": { - "Github": "https://github.com/erc20club", - "Homepage": "https://www.tbc.erc20.club" + "Github": "https://github.com/vechain", + "Homepage": "https://www.vechain.com" }, "marketcap_usd": 0, - "name": "TBC2", + "name": "VeChain", "network": "eth", - "shortcut": "TBC2", + "shortcut": "VEN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -16739,16 +25100,15 @@ } ] }, - "erc20:eth:TBT": { - "address": "0xAFe60511341a37488de25Bef351952562E31fCc1", + "erc20:eth:VENUS": { + "address": "0xEbeD4fF9fe34413db8fC8294556BBD1528a4DAca", "links": { - "Github": "https://github.com/tbitbot", - "Homepage": "https://tbitbot.com" + "Homepage": "http://venuscoin.net" }, "marketcap_usd": 0, - "name": "TBitBot", + "name": "VENUS", "network": "eth", - "shortcut": "TBT", + "shortcut": "VENUS", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -16767,16 +25127,15 @@ } ] }, - "erc20:eth:TCA": { - "address": "0xfA0eF5E034CaE1AE752d59bdb8aDcDe37Ed7aB97", + "erc20:eth:VERI": { + "address": "0x8f3470A7388c05eE4e7AF3d01D8C722b0FF52374", "links": { - "Github": "https://github.com/TcandyChain", - "Homepage": "https://www.tcandy.io" + "Homepage": "https://veritas.veritaseum.com" }, - "marketcap_usd": 0, - "name": "TangguoTao Token", + "marketcap_usd": 26751649.331312686, + "name": "Veritaseum", "network": "eth", - "shortcut": "TCA", + "shortcut": "VERI", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -16795,15 +25154,15 @@ } ] }, - "erc20:eth:TDH": { - "address": "0x2a1dbabe65c595B0022e75208C34014139d5d357", + "erc20:eth:VIB": { + "address": "0x2C974B2d0BA1716E644c1FC59982a89DDD2fF724", "links": { - "Homepage": "https://trustedhealth.io" + "Homepage": "https://www.viberate.io" }, - "marketcap_usd": 0, - "name": "TrustedHealth", + "marketcap_usd": 4106380.559954134, + "name": "VIB", "network": "eth", - "shortcut": "TDH", + "shortcut": "VIB", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -16822,16 +25181,16 @@ } ] }, - "erc20:eth:TFL": { - "address": "0xa7f976C360ebBeD4465c2855684D1AAE5271eFa9", + "erc20:eth:VIEW": { + "address": "0xF03f8D65BaFA598611C3495124093c56e8F638f0", "links": { - "Github": "https://github.com/TrueFlip", - "Homepage": "https://trueflip.io" + "Github": "https://github.com/Viewly/", + "Homepage": "https://view.ly/" }, - "marketcap_usd": 1559460, - "name": "TrueFlip", + "marketcap_usd": 217615.7914374232, + "name": "Viewly", "network": "eth", - "shortcut": "TFL", + "shortcut": "VIEW", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -16850,16 +25209,16 @@ } ] }, - "erc20:eth:THETA": { - "address": "0x3883f5e181fccaF8410FA61e12b59BAd963fb645", + "erc20:eth:VIKKY": { + "address": "0xd2946be786F35c3Cc402C29b323647aBda799071", "links": { - "Homepage": "https://www.thetatoken.org/" + "Homepage": "https://ico.vikky.io" }, - "marketcap_usd": 34214008, - "name": "Theta Token", + "marketcap_usd": 34786.65418856813, + "name": "VikkyToken", "network": "eth", - "shortcut": "THETA", - "t1_enabled": "yes", + "shortcut": "VIKKY", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -16877,16 +25236,16 @@ } ] }, - "erc20:eth:THUG": { - "address": "0xfe7B915A0bAA0E79f85c5553266513F7C1c03Ed0", + "erc20:eth:VIT": { + "address": "0x23b75Bc7AaF28e2d6628C3f424B3882F8f072a3c", "links": { - "Github": "https://github.com/THUGCOIN/THUGCoin", - "Homepage": "https://thugcoin.cash" + "Github": "https://github.com/ViceIndustryToken", + "Homepage": "https://vicetoken.com/" }, - "marketcap_usd": 0, - "name": "THUG", + "marketcap_usd": 1239712.836210723, + "name": "Vice Industry Token", "network": "eth", - "shortcut": "THUG", + "shortcut": "VIT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -16905,16 +25264,16 @@ } ] }, - "erc20:eth:TIME": { - "address": "0x6531f133e6DeeBe7F2dcE5A0441aA7ef330B4e53", + "erc20:eth:VITE": { + "address": "0x1b793E49237758dBD8b752AFC9Eb4b329d5Da016", "links": { - "Homepage": "https://chronobank.io" + "Homepage": "https://www.vite.org" }, - "marketcap_usd": 1383409, - "name": "Chronobank", + "marketcap_usd": 6420955.051324905, + "name": "Vite", "network": "eth", - "shortcut": "TIME", - "t1_enabled": "yes", + "shortcut": "VITE", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -16932,15 +25291,16 @@ } ] }, - "erc20:eth:TIO": { - "address": "0x80BC5512561c7f85A3A9508c7df7901b370Fa1DF", + "erc20:eth:VIU": { + "address": "0x519475b31653E46D20cD09F9FdcF3B12BDAcB4f5", "links": { - "Homepage": "https://trade.io" + "Github": "https://github.com/viuly", + "Homepage": "https://viuly.io" }, - "marketcap_usd": 0, - "name": "TIO", + "marketcap_usd": 64921.55930010384, + "name": "VIU", "network": "eth", - "shortcut": "TIO", + "shortcut": "VIU", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -16959,15 +25319,16 @@ } ] }, - "erc20:eth:TIX": { - "address": "0xEa1f346faF023F974Eb5adaf088BbCdf02d761F4", + "erc20:eth:VLD": { + "address": "0x922aC473A3cC241fD3a0049Ed14536452D58D73c", "links": { - "Homepage": "https://www.blocktix.io" + "Github": "https://github.com/vetri-global/", + "Homepage": "https://vetri.global/" }, - "marketcap_usd": 4926571, - "name": "Blocktix", + "marketcap_usd": 712918.0401328357, + "name": "VETRI", "network": "eth", - "shortcut": "TIX", + "shortcut": "VLD", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -16986,15 +25347,16 @@ } ] }, - "erc20:eth:TKN": { - "address": "0xaAAf91D9b90dF800Df4F55c205fd6989c977E73a", + "erc20:eth:VOC": { + "address": "0xc3bC9Eb71f75Ec439A6b6C8E8b746fCF5b62F703", "links": { - "Homepage": "https://etherscan.io/token/TokenCard" + "Github": "https://github.com/vormacoin", + "Homepage": "https://vormacoin.io/" }, - "marketcap_usd": 6791577, - "name": "TokenCard", + "marketcap_usd": 0, + "name": "VORMACOIN", "network": "eth", - "shortcut": "TKN", + "shortcut": "VOC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -17013,15 +25375,15 @@ } ] }, - "erc20:eth:TLX": { - "address": "0xb3616550aBc8AF79c7A5902DEF9Efa3bC9A95200", + "erc20:eth:VOISE": { + "address": "0x83eEA00D838f92dEC4D1475697B9f4D3537b56E3", "links": { - "Homepage": "https://telexai.com" + "Homepage": "https://voise.it" }, - "marketcap_usd": 0, - "name": "Telex", + "marketcap_usd": 377198.6618751497, + "name": "Voise", "network": "eth", - "shortcut": "TLX", + "shortcut": "VOISE", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -17040,16 +25402,15 @@ } ] }, - "erc20:eth:TNT": { - "address": "0x08f5a9235B08173b7569F83645d2c7fB55e8cCD8", + "erc20:eth:VSL": { + "address": "0x5c543e7AE0A1104f78406C340E9C64FD9fCE5170", "links": { - "Github": "https://github.com/tierion", - "Homepage": "https://tierion.com" + "Homepage": "https://www.vdice.io" }, - "marketcap_usd": 0, - "name": "Tierion Network Token", + "marketcap_usd": 72832.34367086462, + "name": "Vdice", "network": "eth", - "shortcut": "TNT", + "shortcut": "VSL", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -17068,17 +25429,17 @@ } ] }, - "erc20:eth:TOOR": { - "address": "0x8eb965ee9cCFBCE76c0a06264492c0afEfc2826d", + "erc20:eth:VUU": { + "address": "0x4b96bf1feF93A216914fc843D81207A027ce52b3", "links": { - "Github": "https://github.com/toorister/toorcoin", - "Homepage": "https://www.toorcoin.com" + "Github": "https://github.com/Vuulr", + "Homepage": "https://www.vuulr.com/" }, "marketcap_usd": 0, - "name": "ToorCoin", + "name": "Vuulr Token", "network": "eth", - "shortcut": "TOOR", - "t1_enabled": "yes", + "shortcut": "VUU", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -17096,16 +25457,16 @@ } ] }, - "erc20:eth:TRCN": { - "address": "0x566Fd7999B1Fc3988022bD38507A48F0bCf22c77", + "erc20:eth:VZT": { + "address": "0x9720b467a710382A232a32F540bDCed7d662a10B", "links": { - "Homepage": "http://www.therealcoinz.com" + "Homepage": "https://vezt.co" }, - "marketcap_usd": 0, - "name": "The Real Coin", + "marketcap_usd": 540619.0348893856, + "name": "Vezt", "network": "eth", - "shortcut": "TRCN", - "t1_enabled": "yes", + "shortcut": "VZT", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -17123,17 +25484,16 @@ } ] }, - "erc20:eth:TRST": { - "address": "0xCb94be6f13A1182E4A4B6140cb7bf2025d28e41B", + "erc20:eth:WAB": { + "address": "0x4BBbC57aF270138Ef2FF2C50DbfAD684e9E0e604", "links": { - "Github": "https://github.com/WeTrustPlatform", - "Homepage": "https://www.wetrust.io" + "Homepage": "https://wab.network" }, - "marketcap_usd": 0, - "name": "TRST", + "marketcap_usd": 693871.7680048338, + "name": "WABnetwork", "network": "eth", - "shortcut": "TRST", - "t1_enabled": "yes", + "shortcut": "WAB", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -17151,15 +25511,16 @@ } ] }, - "erc20:eth:TSW": { - "address": "0x6B87999bE87358065bBdE41e8a0fe0B7b1cd2514", + "erc20:eth:WATT": { + "address": "0x829A4cA1303383F1082B6B1fB937116e4b3b5605", "links": { - "Homepage": "https://www.teslawatt.com" + "Github": "https://github.com/workchainio", + "Homepage": "https://workchain.io/" }, "marketcap_usd": 0, - "name": "TeslaWatt", + "name": "WorkChain App Token", "network": "eth", - "shortcut": "TSW", + "shortcut": "WATT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -17178,17 +25539,17 @@ } ] }, - "erc20:eth:TTA": { - "address": "0xaaB606817809841E8b1168be8779Eeaf6744Ef64", + "erc20:eth:WAX": { + "address": "0x39Bb259F66E1C59d5ABEF88375979b4D20D98022", "links": { - "Github": "http://github.com/TendTechnologies", - "Homepage": "https://www.tend.swiss" + "Github": "https://github.com/waxio", + "Homepage": "https://wax.io" }, - "marketcap_usd": 0, - "name": "Tend Token", + "marketcap_usd": 30037030.36498607, + "name": "WAX", "network": "eth", - "shortcut": "TTA", - "t1_enabled": "soon", + "shortcut": "WAX", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -17206,15 +25567,15 @@ } ] }, - "erc20:eth:TWN": { - "address": "0x2eF1aB8a26187C58BB8aAeB11B2fC6D25C5c0716", + "erc20:eth:WBA": { + "address": "0x74951B677de32D596EE851A233336926e6A2cd09", "links": { - "Homepage": "https://ico.theworldnews.net" + "Homepage": "http://webetcrypto.io/wbc" }, "marketcap_usd": 0, - "name": "The World News", + "name": "WeBetCrypto", "network": "eth", - "shortcut": "TWN", + "shortcut": "WBA", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -17233,17 +25594,18 @@ } ] }, - "erc20:eth:TWNKL": { - "address": "0xfbd0d1c77B501796A35D86cF91d65D9778EeE695", + "erc20:eth:WBTC": { + "address": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", "links": { - "Homepage": "https://www.rainbowcurrency.com/" + "Github": "https://github.com/WrappedBTC", + "Homepage": "https://wbtc.network" }, "marketcap_usd": 0, - "name": "Twinkle", + "name": "Wrapped Bitcoin", "network": "eth", - "shortcut": "TWNKL", - "t1_enabled": "yes", - "t2_enabled": "yes", + "shortcut": "WBTC", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20", "wallet": [ { @@ -17260,15 +25622,16 @@ } ] }, - "erc20:eth:TaaS": { - "address": "0xE7775A6e9Bcf904eb39DA2b68c5efb4F9360e08C", + "erc20:eth:WCN": { + "address": "0x8F936fE0faF0604c9C0Ef2406bde0A65365515d6", "links": { - "Homepage": "https://taas.fund" + "Github": "https://github.com/WorldCoinNetwork", + "Homepage": "https://worldcoin.cash/" }, - "marketcap_usd": 2644991, - "name": "Token-as-a-Service", + "marketcap_usd": 0, + "name": "WorldCoinNetwork", "network": "eth", - "shortcut": "TaaS", + "shortcut": "WCN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -17287,16 +25650,15 @@ } ] }, - "erc20:eth:UKG": { - "address": "0x24692791Bc444c5Cd0b81e3CBCaba4b04Acd1F3B", + "erc20:eth:WCT": { + "address": "0x6a0A97E47d15aAd1D132a1Ac79a480E3F2079063", "links": { - "Github": "https://github.com/unikoingold/UnikoinGold-UKG-Contract", - "Homepage": "https://unikoingold.com" + "Homepage": "https://wepower.network" }, "marketcap_usd": 0, - "name": "UnikoinGold", + "name": "WePower", "network": "eth", - "shortcut": "UKG", + "shortcut": "WCT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -17315,16 +25677,16 @@ } ] }, - "erc20:eth:UQC": { - "address": "0xD01DB73E047855Efb414e6202098C4Be4Cd2423B", + "erc20:eth:WEB": { + "address": "0x840fe75ABfaDc0F2d54037829571B2782e919ce4", "links": { - "Homepage": "https://uquidcoin.com" + "Homepage": "https://webcoin.today" }, - "marketcap_usd": 992987, - "name": "Uquid Coin", + "marketcap_usd": 144951.06900874033, + "name": "Webcoin", "network": "eth", - "shortcut": "UQC", - "t1_enabled": "yes", + "shortcut": "WEB", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -17342,16 +25704,15 @@ } ] }, - "erc20:eth:URB": { - "address": "0x931684139f756C24eC0731E9F74FE50e5548dDeF", + "erc20:eth:WETH": { + "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", "links": { - "Github": "https://github.com/urbitdata", - "Homepage": "https://urbitdata.io" + "Homepage": "https://weth.io" }, "marketcap_usd": 0, - "name": "Urbit Data", + "name": "WETH", "network": "eth", - "shortcut": "URB", + "shortcut": "WETH", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -17370,17 +25731,16 @@ } ] }, - "erc20:eth:USDC": { - "address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", - "coinmarketcap_alias": "usd-coin", + "erc20:eth:WHEN": { + "address": "0xF4FE95603881D0e07954fD7605E0e9a916e42C44", "links": { - "Github": "https://github.com/centrehq/centre-tokens", - "Homepage": "https://www.centre.io" + "Github": "https://github.com/WhenHub", + "Homepage": "https://interface.whenhub.com" }, - "marketcap_usd": 229091285, - "name": "USD//Coin", + "marketcap_usd": 0, + "name": "WHEN Token", "network": "eth", - "shortcut": "USDC", + "shortcut": "WHEN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -17399,16 +25759,17 @@ } ] }, - "erc20:eth:USDT": { - "address": "0xdAC17F958D2ee523a2206206994597C13D831ec7", + "erc20:eth:WILD": { + "address": "0xD3C00772B24D997A812249ca637a921e81357701", "links": { - "Homepage": "https://tether.to" + "Github": "https://github.com/WildCryptoICO/Wild-Crypto-Token", + "Homepage": "http://www.wildcrypto.com" }, "marketcap_usd": 0, - "name": "USD Tether (erc20)", + "name": "WILD Token", "network": "eth", - "shortcut": "USDT", - "t1_enabled": "soon", + "shortcut": "WILD", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -17426,15 +25787,15 @@ } ] }, - "erc20:eth:UTK": { - "address": "0x70a72833d6bF7F508C8224CE59ea1Ef3d0Ea3A38", + "erc20:eth:WINGS": { + "address": "0x667088b212ce3d06a1b553a7221E1fD19000d9aF", "links": { - "Homepage": "https://utrust.io" + "Homepage": "https://wings.ai" }, - "marketcap_usd": 0, - "name": "UTK", + "marketcap_usd": 7658681.045682818, + "name": "WINGS", "network": "eth", - "shortcut": "UTK", + "shortcut": "WINGS", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -17453,17 +25814,16 @@ } ] }, - "erc20:eth:UTN-P": { - "address": "0x9e3319636e2126e3c0bc9e3134AEC5e1508A46c7", + "erc20:eth:WISH": { + "address": "0x1b22C32cD936cB97C28C5690a0695a82Abf688e6", "links": { - "Github": "https://github.com/UniversaBlockchain/universa", - "Homepage": "https://www.universa.io/" + "Homepage": "https://mywish.io" }, - "marketcap_usd": 5558735, - "name": "Universa", + "marketcap_usd": 474081.47792653897, + "name": "MyWish", "network": "eth", - "shortcut": "UTN-P", - "t1_enabled": "yes", + "shortcut": "WISH", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -17481,15 +25841,16 @@ } ] }, - "erc20:eth:UUU": { - "address": "0x3543638eD4a9006E4840B105944271Bcea15605D", + "erc20:eth:WMK": { + "address": "0xBFbe5332f172d77811bC6c272844f3e54A7B23bB", "links": { - "Homepage": "https://u.network/" + "Github": "https://github.com/WemarkSource", + "Homepage": "https://www.wemark.com" }, "marketcap_usd": 0, - "name": "U Networks", + "name": "WemarkToken", "network": "eth", - "shortcut": "UUU", + "shortcut": "WMK", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -17508,18 +25869,18 @@ } ] }, - "erc20:eth:VDG": { - "address": "0x57C75ECCc8557136D32619a191fBCDc88560d711", + "erc20:eth:WOC": { + "address": "0xF9D9702D031407F425a4412682fDc56b07d05262", "links": { - "Github": "https://github.com/VeriDocGlobal", - "Homepage": "https://www.veridocglobal.com/" + "Github": "https://github.com/paneedesign/wallofchain", + "Homepage": "https://wallofchain.com" }, "marketcap_usd": 0, - "name": "VeriDocGlobal", + "name": "WallOfChain", "network": "eth", - "shortcut": "VDG", - "t1_enabled": "yes", - "t2_enabled": "yes", + "shortcut": "WOC", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20", "wallet": [ { @@ -17536,16 +25897,15 @@ } ] }, - "erc20:eth:VDOC": { - "address": "0x82BD526bDB718C6d4DD2291Ed013A5186cAE2DCa", + "erc20:eth:WPC": { + "address": "0x62087245087125d3DB5B9A3D713d78E7BBc31e54", "links": { - "Github": "https://github.com/BlueBikeSolutions", - "Homepage": "https://www.dutyof.care/token-launch/" + "Homepage": "http://www.worldpeacecoin.io" }, "marketcap_usd": 0, - "name": "Duty of Care Token", + "name": "WorldPeaceCoin", "network": "eth", - "shortcut": "VDOC", + "shortcut": "WPC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -17564,16 +25924,15 @@ } ] }, - "erc20:eth:VEE": { - "address": "0x340D2bdE5Eb28c1eed91B2f790723E3B160613B7", - "links": { - "Github": "https://github.com/blockv", - "Homepage": "https://blockv.io" + "erc20:eth:WPR": { + "address": "0x4CF488387F035FF08c371515562CBa712f9015d4", + "links": { + "Homepage": "https://wepower.network" }, - "marketcap_usd": 8609207, - "name": "BLOCKv", + "marketcap_usd": 6833940.666185789, + "name": "WePower Token", "network": "eth", - "shortcut": "VEE", + "shortcut": "WPR", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -17592,17 +25951,16 @@ } ] }, - "erc20:eth:VEN": { - "address": "0xD850942eF8811f2A866692A623011bDE52a462C1", + "erc20:eth:WRC": { + "address": "0x72aDadb447784dd7AB1F472467750fC485e4cb2d", "links": { - "Github": "https://github.com/vechain", - "Homepage": "https://www.vechain.com" + "Homepage": "https://worldcore.eu" }, - "marketcap_usd": 239856374, - "name": "VeChain", + "marketcap_usd": 412949.5552274114, + "name": "Worldcore", "network": "eth", - "shortcut": "VEN", - "t1_enabled": "yes", + "shortcut": "WRC", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -17620,15 +25978,16 @@ } ] }, - "erc20:eth:VENUS": { - "address": "0xEbeD4fF9fe34413db8fC8294556BBD1528a4DAca", + "erc20:eth:WRK": { + "address": "0x71e8d74fF1C923E369D0e70DFb09866629C4DD35", "links": { - "Homepage": "http://venuscoin.net" + "Github": "https://github.com/TMWorkCoin", + "Homepage": "https://workcoin.net/" }, "marketcap_usd": 0, - "name": "VENUS", + "name": "WorkCoin", "network": "eth", - "shortcut": "VENUS", + "shortcut": "WRK", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -17647,15 +26006,15 @@ } ] }, - "erc20:eth:VERI": { - "address": "0x8f3470A7388c05eE4e7AF3d01D8C722b0FF52374", + "erc20:eth:WTC": { + "address": "0xb7cB1C96dB6B22b0D3d9536E0108d062BD488F74", "links": { - "Homepage": "http://veritas.veritaseum.com/index.php" + "Homepage": "http://www.waltonchain.org" }, - "marketcap_usd": 0, - "name": "Veritas", + "marketcap_usd": 40792302.85371911, + "name": "Waltonchain", "network": "eth", - "shortcut": "VERI", + "shortcut": "WTC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -17674,15 +26033,16 @@ } ] }, - "erc20:eth:VIB": { - "address": "0x2C974B2d0BA1716E644c1FC59982a89DDD2fF724", + "erc20:eth:WYS": { + "address": "0xd8950fDeaa10304B7A7Fd03a2FC66BC39f3c711a", "links": { - "Homepage": "https://www.viberate.io" + "Github": "https://github.com/wysker", + "Homepage": "https://www.wystoken.org" }, "marketcap_usd": 0, - "name": "VIB", + "name": "wystoken", "network": "eth", - "shortcut": "VIB", + "shortcut": "WYS", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -17701,16 +26061,16 @@ } ] }, - "erc20:eth:VIEW": { - "address": "0xF03f8D65BaFA598611C3495124093c56e8F638f0", + "erc20:eth:WYV": { + "address": "0x056017c55aE7AE32d12AeF7C679dF83A85ca75Ff", "links": { - "Github": "https://github.com/Viewly/", - "Homepage": "https://view.ly/" + "Github": "https://github.com/ProjectWyvern", + "Homepage": "https://projectwyvern.com" }, "marketcap_usd": 0, - "name": "Viewly", + "name": "WyvernToken", "network": "eth", - "shortcut": "VIEW", + "shortcut": "WYV", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -17729,16 +26089,15 @@ } ] }, - "erc20:eth:VIT": { - "address": "0x23b75Bc7AaF28e2d6628C3f424B3882F8f072a3c", + "erc20:eth:WaBi": { + "address": "0x286BDA1413a2Df81731D4930ce2F862a35A609fE", "links": { - "Github": "https://github.com/ViceIndustryToken", - "Homepage": "https://vicetoken.com/" + "Homepage": "https://www.wacoin.io" }, - "marketcap_usd": 718995, - "name": "Vice Industry Token", + "marketcap_usd": 6433755.362644028, + "name": "WaBi", "network": "eth", - "shortcut": "VIT", + "shortcut": "WaBi", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -17757,16 +26116,15 @@ } ] }, - "erc20:eth:VIU": { - "address": "0x519475b31653E46D20cD09F9FdcF3B12BDAcB4f5", + "erc20:eth:X8X": { + "address": "0x910Dfc18D6EA3D6a7124A6F8B5458F281060fa4c", "links": { - "Github": "https://github.com/viuly", - "Homepage": "https://viuly.io" + "Homepage": "https://x8currency.com" }, - "marketcap_usd": 0, - "name": "VIU", + "marketcap_usd": 824033.0608091867, + "name": "X8X", "network": "eth", - "shortcut": "VIU", + "shortcut": "X8X", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -17785,16 +26143,15 @@ } ] }, - "erc20:eth:VLD": { - "address": "0x922aC473A3cC241fD3a0049Ed14536452D58D73c", + "erc20:eth:XAUR": { + "address": "0x4DF812F6064def1e5e029f1ca858777CC98D2D81", "links": { - "Github": "https://github.com/vetri-global/", - "Homepage": "https://vetri.global/" + "Homepage": "http://www.xaurum.org" }, - "marketcap_usd": 1026874, - "name": "VETRI", + "marketcap_usd": 3651928.5975446017, + "name": "Xaurum", "network": "eth", - "shortcut": "VLD", + "shortcut": "XAUR", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -17813,17 +26170,16 @@ } ] }, - "erc20:eth:VOC": { - "address": "0xc3bC9Eb71f75Ec439A6b6C8E8b746fCF5b62F703", + "erc20:eth:XBL": { + "address": "0x49AeC0752E68D0282Db544C677f6BA407BA17ED7", "links": { - "Github": "https://github.com/vormacoin", - "Homepage": "https://vormacoin.io/" + "Homepage": "https://billionairetoken.com" }, - "marketcap_usd": 0, - "name": "VORMACOIN", + "marketcap_usd": 87348.13228324316, + "name": "Billionaire Token", "network": "eth", - "shortcut": "VOC", - "t1_enabled": "yes", + "shortcut": "XBL", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -17841,15 +26197,16 @@ } ] }, - "erc20:eth:VOISE": { - "address": "0x83eEA00D838f92dEC4D1475697B9f4D3537b56E3", + "erc20:eth:XBP": { + "address": "0x28dee01D53FED0Edf5f6E310BF8Ef9311513Ae40", "links": { - "Homepage": "https://voise.it" + "Github": "https://github.com/blitzpredict", + "Homepage": "https://www.blitzpredict.io" }, - "marketcap_usd": 0, - "name": "Voise", + "marketcap_usd": 298269.40464235866, + "name": "BlitzPredict", "network": "eth", - "shortcut": "VOISE", + "shortcut": "XBP", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -17868,15 +26225,16 @@ } ] }, - "erc20:eth:VSL": { - "address": "0x5c543e7AE0A1104f78406C340E9C64FD9fCE5170", + "erc20:eth:XCC": { + "address": "0x4d829f8C92a6691c56300D020c9e0dB984Cfe2BA", "links": { - "Homepage": "https://www.vdice.io" + "Github": "https://github.com/coincrowd-it", + "Homepage": "https://www.coincrowd.it" }, "marketcap_usd": 0, - "name": "Vdice", + "name": "CoinCrowd", "network": "eth", - "shortcut": "VSL", + "shortcut": "XCC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -17895,18 +26253,17 @@ } ] }, - "erc20:eth:VUU": { - "address": "0x4b96bf1feF93A216914fc843D81207A027ce52b3", + "erc20:eth:XCHF": { + "address": "0xB4272071eCAdd69d933AdcD19cA99fe80664fc08", "links": { - "Github": "https://github.com/Vuulr", - "Homepage": "https://www.vuulr.com/" + "Homepage": "https://www.swisscryptotokens.ch/" }, "marketcap_usd": 0, - "name": "Vuulr Token", + "name": "CryptoFranc", "network": "eth", - "shortcut": "VUU", + "shortcut": "XCHF", "t1_enabled": "soon", - "t2_enabled": "yes", + "t2_enabled": "soon", "type": "erc20", "wallet": [ { @@ -17923,17 +26280,16 @@ } ] }, - "erc20:eth:WATT": { - "address": "0x829A4cA1303383F1082B6B1fB937116e4b3b5605", + "erc20:eth:XCLR": { + "address": "0x1E26b3D07E57F453caE30F7DDd2f945f5bF3EF33", "links": { - "Github": "https://github.com/workchainio", - "Homepage": "https://workchain.io/" + "Homepage": "https://clearcoin.co" }, - "marketcap_usd": 0, - "name": "WorkChain App Token", + "marketcap_usd": 246910.12188812395, + "name": "ClearCoin", "network": "eth", - "shortcut": "WATT", - "t1_enabled": "yes", + "shortcut": "XCLR", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -17951,17 +26307,16 @@ } ] }, - "erc20:eth:WAX": { - "address": "0x39Bb259F66E1C59d5ABEF88375979b4D20D98022", + "erc20:eth:XDCE": { + "address": "0x41AB1b6fcbB2fA9DCEd81aCbdeC13Ea6315F2Bf2", "links": { - "Github": "https://github.com/waxio", - "Homepage": "https://wax.io" + "Homepage": "https://www.xinfin.io" }, - "marketcap_usd": 36362245, - "name": "WAX", + "marketcap_usd": 2141325.314775632, + "name": "XinFin Network", "network": "eth", - "shortcut": "WAX", - "t1_enabled": "yes", + "shortcut": "XDCE", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -17979,16 +26334,16 @@ } ] }, - "erc20:eth:WBA": { - "address": "0x74951B677de32D596EE851A233336926e6A2cd09", + "erc20:eth:XES": { + "address": "0xA017ac5faC5941f95010b12570B812C974469c2C", "links": { - "Homepage": "http://webetcrypto.io/wbc" + "Homepage": "https://proxeus.com" }, - "marketcap_usd": 0, - "name": "WeBetCrypto", + "marketcap_usd": 2989114.9077328504, + "name": "Proxeus", "network": "eth", - "shortcut": "WBA", - "t1_enabled": "yes", + "shortcut": "XES", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -18006,17 +26361,16 @@ } ] }, - "erc20:eth:WCN": { - "address": "0x8F936fE0faF0604c9C0Ef2406bde0A65365515d6", + "erc20:eth:XET": { + "address": "0x054C64741dBafDC19784505494029823D89c3b13", "links": { - "Github": "https://github.com/WorldCoinNetwork", - "Homepage": "https://worldcoin.cash/" + "Homepage": "https://www.atom-solutions.jp/en/xetchange.php" }, "marketcap_usd": 0, - "name": "WorldCoinNetwork", + "name": "ETERNAL TOKEN", "network": "eth", - "shortcut": "WCN", - "t1_enabled": "yes", + "shortcut": "XET", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -18034,15 +26388,15 @@ } ] }, - "erc20:eth:WCT": { - "address": "0x6a0A97E47d15aAd1D132a1Ac79a480E3F2079063", + "erc20:eth:XFS": { + "address": "0x16aF5bfb4Ae7E475b9aDC3Bf5Cb2f1E6a50d7940", "links": { - "Homepage": "https://wepower.network" + "Homepage": "http://fanship.world/" }, - "marketcap_usd": 7160880, - "name": "WePower", + "marketcap_usd": 0, + "name": "Fanship", "network": "eth", - "shortcut": "WCT", + "shortcut": "XFS", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -18061,15 +26415,16 @@ } ] }, - "erc20:eth:WETH": { - "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "erc20:eth:XGG": { + "address": "0xf6b6AA0Ef0f5Edc2C1c5d925477F97eAF66303e7", "links": { - "Homepage": "https://weth.io" + "Github": "https://github.com/GoingGems", + "Homepage": "https://www.going-gems.com" }, "marketcap_usd": 0, - "name": "WETH", + "name": "Going Gems", "network": "eth", - "shortcut": "WETH", + "shortcut": "XGG", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -18088,16 +26443,15 @@ } ] }, - "erc20:eth:WHEN": { - "address": "0xF4FE95603881D0e07954fD7605E0e9a916e42C44", + "erc20:eth:XGM": { + "address": "0x533ef0984b2FAA227AcC620C67cce12aA39CD8CD", "links": { - "Github": "https://github.com/WhenHub", - "Homepage": "https://interface.whenhub.com" + "Homepage": "https://www.xaurum.org/gamma" }, "marketcap_usd": 0, - "name": "WHEN Token", + "name": "XGM", "network": "eth", - "shortcut": "WHEN", + "shortcut": "XGM", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -18116,16 +26470,16 @@ } ] }, - "erc20:eth:WILD": { - "address": "0xD3C00772B24D997A812249ca637a921e81357701", + "erc20:eth:XGT": { + "address": "0x30f4A3e0aB7a76733D8b60b89DD93c3D0b4c9E2f", "links": { - "Github": "https://github.com/WildCryptoICO/Wild-Crypto-Token", - "Homepage": "http://www.wildcrypto.com" + "Github": "https://github.com/CryptogeneProject/CryptogeneToken", + "Homepage": "https://cryptogene.co" }, "marketcap_usd": 0, - "name": "WILD Token", + "name": "XGT", "network": "eth", - "shortcut": "WILD", + "shortcut": "XGT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -18144,15 +26498,15 @@ } ] }, - "erc20:eth:WINGS": { - "address": "0x667088b212ce3d06a1b553a7221E1fD19000d9aF", + "erc20:eth:XID": { + "address": "0xB110eC7B1dcb8FAB8dEDbf28f53Bc63eA5BEdd84", "links": { - "Homepage": "https://wings.ai" + "Homepage": "https://sphereidentity.com" }, - "marketcap_usd": 7831114, - "name": "WINGS", + "marketcap_usd": 0, + "name": "XID", "network": "eth", - "shortcut": "WINGS", + "shortcut": "XID", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -18171,17 +26525,16 @@ } ] }, - "erc20:eth:WMK": { - "address": "0xBFbe5332f172d77811bC6c272844f3e54A7B23bB", + "erc20:eth:XMCT": { + "address": "0x44449Fa4d607F807d1eD4a69ad942971728391C8", "links": { - "Github": "https://github.com/WemarkSource", - "Homepage": "https://www.wemark.com" + "Homepage": "http://xmedchain.com" }, - "marketcap_usd": 0, - "name": "WemarkToken", + "marketcap_usd": 146586.3520971182, + "name": "XMED Chain", "network": "eth", - "shortcut": "WMK", - "t1_enabled": "yes", + "shortcut": "XMCT", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -18199,16 +26552,16 @@ } ] }, - "erc20:eth:WPC": { - "address": "0x62087245087125d3DB5B9A3D713d78E7BBc31e54", + "erc20:eth:XMX": { + "address": "0x0f8c45B896784A1E408526B9300519ef8660209c", "links": { - "Homepage": "http://www.worldpeacecoin.io" + "Homepage": "https://www.xmx.com" }, - "marketcap_usd": 0, - "name": "WorldPeaceCoin", + "marketcap_usd": 1891579.2621537463, + "name": "XMax", "network": "eth", - "shortcut": "WPC", - "t1_enabled": "yes", + "shortcut": "XMX", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -18226,15 +26579,16 @@ } ] }, - "erc20:eth:WPR": { - "address": "0x4CF488387F035FF08c371515562CBa712f9015d4", + "erc20:eth:XNK": { + "address": "0xBC86727E770de68B1060C91f6BB6945c73e10388", "links": { - "Homepage": "https://wepower.network" + "Github": "https://github.com/InkProtocol/", + "Homepage": "https://paywithink.com" }, - "marketcap_usd": 0, - "name": "WePower Token", + "marketcap_usd": 863075.5619001419, + "name": "Ink Protocol", "network": "eth", - "shortcut": "WPR", + "shortcut": "XNK", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -18253,16 +26607,15 @@ } ] }, - "erc20:eth:WRK": { - "address": "0x71e8d74fF1C923E369D0e70DFb09866629C4DD35", + "erc20:eth:XNN": { + "address": "0xab95E915c123fdEd5BDfB6325e35ef5515F1EA69", "links": { - "Github": "https://github.com/TMWorkCoin", - "Homepage": "https://workcoin.net/" + "Homepage": "https://xenon.network" }, - "marketcap_usd": 0, - "name": "WorkCoin", + "marketcap_usd": 323587.91106300004, + "name": "XENON", "network": "eth", - "shortcut": "WRK", + "shortcut": "XNN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -18281,16 +26634,15 @@ } ] }, - "erc20:eth:WYS": { - "address": "0xd8950fDeaa10304B7A7Fd03a2FC66BC39f3c711a", + "erc20:eth:XNT": { + "address": "0x572E6f318056ba0C5d47A422653113843D250691", "links": { - "Github": "https://github.com/wysker", - "Homepage": "https://www.wystoken.org" + "Homepage": "https://exante.eu" }, "marketcap_usd": 0, - "name": "wystoken", + "name": "XNT", "network": "eth", - "shortcut": "WYS", + "shortcut": "XNT", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -18309,17 +26661,16 @@ } ] }, - "erc20:eth:WYV": { - "address": "0x056017c55aE7AE32d12AeF7C679dF83A85ca75Ff", + "erc20:eth:XOV": { + "address": "0x153eD9CC1b792979d2Bde0BBF45CC2A7e436a5F9", "links": { - "Github": "https://github.com/ProjectWyvern", - "Homepage": "https://projectwyvern.com" + "Homepage": "http://www.xov.io" }, - "marketcap_usd": 0, - "name": "WyvernToken", + "marketcap_usd": 205746.38672323833, + "name": "XOVBank", "network": "eth", - "shortcut": "WYV", - "t1_enabled": "yes", + "shortcut": "XOV", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -18337,16 +26688,16 @@ } ] }, - "erc20:eth:WaBi": { - "address": "0x286BDA1413a2Df81731D4930ce2F862a35A609fE", + "erc20:eth:XPA": { + "address": "0x90528aeb3a2B736B780fD1B6C478bB7E1d643170", "links": { - "Homepage": "https://www.wacoin.io" + "Homepage": "https://xpa.io" }, - "marketcap_usd": 6928499, - "name": "WaBi", + "marketcap_usd": 2155906.4562830534, + "name": "XPA", "network": "eth", - "shortcut": "WaBi", - "t1_enabled": "yes", + "shortcut": "XPA", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -18364,17 +26715,18 @@ } ] }, - "erc20:eth:X8X": { - "address": "0x910Dfc18D6EA3D6a7124A6F8B5458F281060fa4c", + "erc20:eth:XPAT": { + "address": "0xBB1fA4FdEB3459733bF67EbC6f893003fA976a82", "links": { - "Homepage": "https://x8currency.com" + "Github": "https://github.com/Bit-Nation/", + "Homepage": "https://bitnation.co" }, - "marketcap_usd": 0, - "name": "X8X", + "marketcap_usd": 77411.08130564021, + "name": "Pangea Arbitration Token", "network": "eth", - "shortcut": "X8X", - "t1_enabled": "yes", - "t2_enabled": "yes", + "shortcut": "XPAT", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20", "wallet": [ { @@ -18391,15 +26743,15 @@ } ] }, - "erc20:eth:XAUR": { - "address": "0x4DF812F6064def1e5e029f1ca858777CC98D2D81", + "erc20:eth:XRL": { + "address": "0xB24754bE79281553dc1adC160ddF5Cd9b74361a4", "links": { - "Homepage": "http://www.xaurum.org" + "Homepage": "https://rialto.ai" }, - "marketcap_usd": 3531514, - "name": "Xaurum", + "marketcap_usd": 0, + "name": "XRL", "network": "eth", - "shortcut": "XAUR", + "shortcut": "XRL", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -18418,16 +26770,15 @@ } ] }, - "erc20:eth:XBP": { - "address": "0x28dee01D53FED0Edf5f6E310BF8Ef9311513Ae40", + "erc20:eth:XSC": { + "address": "0x0F513fFb4926ff82D7F60A05069047AcA295C413", "links": { - "Github": "https://github.com/blitzpredict", - "Homepage": "https://www.blitzpredict.io" + "Homepage": "http://crowdstart.capital" }, - "marketcap_usd": 234482, - "name": "BlitzPredict", + "marketcap_usd": 0, + "name": "XSC", "network": "eth", - "shortcut": "XBP", + "shortcut": "XSC", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -18446,17 +26797,16 @@ } ] }, - "erc20:eth:XCC": { - "address": "0x4d829f8C92a6691c56300D020c9e0dB984Cfe2BA", + "erc20:eth:XYO": { + "address": "0x55296f69f40Ea6d20E478533C15A6B08B654E758", "links": { - "Github": "https://github.com/coincrowd-it", - "Homepage": "https://www.coincrowd.it" + "Homepage": "https://xyo.network" }, - "marketcap_usd": 0, - "name": "CoinCrowd", + "marketcap_usd": 15761240.171350569, + "name": "XYO", "network": "eth", - "shortcut": "XCC", - "t1_enabled": "yes", + "shortcut": "XYO", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -18474,16 +26824,16 @@ } ] }, - "erc20:eth:XFS": { - "address": "0x16aF5bfb4Ae7E475b9aDC3Bf5Cb2f1E6a50d7940", + "erc20:eth:YEE": { + "address": "0x922105fAd8153F516bCfB829f56DC097a0E1D705", "links": { - "Homepage": "http://fanship.world/" + "Homepage": "http://www.yeefoundation.com" }, - "marketcap_usd": 0, - "name": "Fanship", + "marketcap_usd": 1449036.1326269598, + "name": "Yee Token", "network": "eth", - "shortcut": "XFS", - "t1_enabled": "yes", + "shortcut": "YEE", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -18501,16 +26851,16 @@ } ] }, - "erc20:eth:XGG": { - "address": "0xf6b6AA0Ef0f5Edc2C1c5d925477F97eAF66303e7", + "erc20:eth:YUP": { + "address": "0xD9A12Cde03a86E800496469858De8581D3A5353d", "links": { - "Github": "https://github.com/GoingGems", - "Homepage": "https://www.going-gems.com" + "Github": "https://github.com/crowdholding/", + "Homepage": "https://www.crowdholding.com" }, - "marketcap_usd": 0, - "name": "Going Gems", + "marketcap_usd": 79266.12919586457, + "name": "YUP", "network": "eth", - "shortcut": "XGG", + "shortcut": "YUP", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -18529,15 +26879,16 @@ } ] }, - "erc20:eth:XGM": { - "address": "0x533ef0984b2FAA227AcC620C67cce12aA39CD8CD", + "erc20:eth:ZAP": { + "address": "0x6781a0F84c7E9e846DCb84A9a5bd49333067b104", "links": { - "Homepage": "https://www.xaurum.org/gamma" + "Github": "https://github.com/zapproject", + "Homepage": "https://zap.store" }, - "marketcap_usd": 0, - "name": "XGM", + "marketcap_usd": 1321274.8930972393, + "name": "ZAP", "network": "eth", - "shortcut": "XGM", + "shortcut": "ZAP", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -18556,17 +26907,16 @@ } ] }, - "erc20:eth:XGT": { - "address": "0x30f4A3e0aB7a76733D8b60b89DD93c3D0b4c9E2f", + "erc20:eth:ZCN": { + "address": "0xb9EF770B6A5e12E45983C5D80545258aA38F3B78", "links": { - "Github": "https://github.com/CryptogeneProject/CryptogeneToken", - "Homepage": "https://cryptogene.co" + "Homepage": "https://0chain.net" }, - "marketcap_usd": 0, - "name": "XGT", + "marketcap_usd": 3103131.7821686305, + "name": "0chain", "network": "eth", - "shortcut": "XGT", - "t1_enabled": "yes", + "shortcut": "ZCN", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -18584,16 +26934,16 @@ } ] }, - "erc20:eth:XID": { - "address": "0xB110eC7B1dcb8FAB8dEDbf28f53Bc63eA5BEdd84", + "erc20:eth:ZCO": { + "address": "0x2008e3057BD734e10AD13c9EAe45Ff132aBc1722", "links": { - "Homepage": "https://sphereidentity.com" + "Homepage": "https://www.zebi.io" }, - "marketcap_usd": 0, - "name": "XID", + "marketcap_usd": 2322756.287245, + "name": "Zebi", "network": "eth", - "shortcut": "XID", - "t1_enabled": "yes", + "shortcut": "ZCO", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -18611,16 +26961,15 @@ } ] }, - "erc20:eth:XNK": { - "address": "0xBC86727E770de68B1060C91f6BB6945c73e10388", + "erc20:eth:ZCS": { + "address": "0x7A41e0517a5ecA4FdbC7FbebA4D4c47B9fF6DC63", "links": { - "Github": "https://github.com/InkProtocol/", - "Homepage": "https://paywithink.com" + "Homepage": "https://zsc.io/" }, - "marketcap_usd": 993185, - "name": "Ink Protocol", + "marketcap_usd": 1576031.924955769, + "name": "Zeusshield", "network": "eth", - "shortcut": "XNK", + "shortcut": "ZCS", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -18639,17 +26988,18 @@ } ] }, - "erc20:eth:XNN": { - "address": "0xab95E915c123fdEd5BDfB6325e35ef5515F1EA69", + "erc20:eth:ZEUS": { + "address": "0xe7E4279b80D319EDe2889855135A22021baf0907", "links": { - "Homepage": "https://xenon.network" + "Github": "https://github.com/ZEUS-coin", + "Homepage": "https://zeusfundme.com/" }, - "marketcap_usd": 643928, - "name": "XENON", + "marketcap_usd": 32455.143527520002, + "name": "ZeusNetwork", "network": "eth", - "shortcut": "XNN", - "t1_enabled": "yes", - "t2_enabled": "yes", + "shortcut": "ZEUS", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20", "wallet": [ { @@ -18666,15 +27016,16 @@ } ] }, - "erc20:eth:XNT": { - "address": "0x572E6f318056ba0C5d47A422653113843D250691", + "erc20:eth:ZIL": { + "address": "0x05f4a42e251f2d52b8ed15E9FEdAacFcEF1FAD27", "links": { - "Homepage": "https://exante.eu" + "Github": "https://github.com/zilliqa", + "Homepage": "https://www.zilliqa.com/" }, - "marketcap_usd": 0, - "name": "XNT", + "marketcap_usd": 144398955.32783878, + "name": "Zilliqa", "network": "eth", - "shortcut": "XNT", + "shortcut": "ZIL", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -18693,16 +27044,16 @@ } ] }, - "erc20:eth:XRL": { - "address": "0xB24754bE79281553dc1adC160ddF5Cd9b74361a4", + "erc20:eth:ZINC": { + "address": "0x4AaC461C86aBfA71e9d00d9a2cde8d74E4E1aeEa", "links": { - "Homepage": "https://rialto.ai" + "Homepage": "https://zinc.work" }, - "marketcap_usd": 0, - "name": "XRL", + "marketcap_usd": 118133.83924217461, + "name": "ZINC", "network": "eth", - "shortcut": "XRL", - "t1_enabled": "yes", + "shortcut": "ZINC", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -18720,16 +27071,16 @@ } ] }, - "erc20:eth:XSC": { - "address": "0x0F513fFb4926ff82D7F60A05069047AcA295C413", + "erc20:eth:ZIP": { + "address": "0xA9d2927d3a04309E008B6af6E2e282AE2952e7fD", "links": { - "Homepage": "http://crowdstart.capital" + "Homepage": "http://zipper.io" }, - "marketcap_usd": 0, - "name": "XSC", + "marketcap_usd": 6743233.469106191, + "name": "Zipper", "network": "eth", - "shortcut": "XSC", - "t1_enabled": "yes", + "shortcut": "ZIP", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -18747,17 +27098,16 @@ } ] }, - "erc20:eth:YUP": { - "address": "0xD9A12Cde03a86E800496469858De8581D3A5353d", + "erc20:eth:ZIPT": { + "address": "0xEDD7c94FD7B4971b916d15067Bc454b9E1bAD980", "links": { - "Github": "https://github.com/crowdholding/", - "Homepage": "https://www.crowdholding.com" + "Homepage": "https://zippie.org" }, - "marketcap_usd": 0, - "name": "YUP", + "marketcap_usd": 299609.1195438031, + "name": "Zippie", "network": "eth", - "shortcut": "YUP", - "t1_enabled": "yes", + "shortcut": "ZIPT", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -18775,18 +27125,18 @@ } ] }, - "erc20:eth:ZAP": { - "address": "0x6781a0F84c7E9e846DCb84A9a5bd49333067b104", + "erc20:eth:ZIX": { + "address": "0xf3C092cA8CD6D3d4ca004Dc1d0f1fe8CcAB53599", "links": { - "Github": "https://github.com/zapproject", - "Homepage": "https://zap.store" + "Github": "https://github.com/Zeexme", + "Homepage": "https://zeex.me" }, - "marketcap_usd": 1108830, - "name": "ZAP", + "marketcap_usd": 0, + "name": "ZIX", "network": "eth", - "shortcut": "ZAP", - "t1_enabled": "yes", - "t2_enabled": "yes", + "shortcut": "ZIX", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20", "wallet": [ { @@ -18803,16 +27153,16 @@ } ] }, - "erc20:eth:ZCS": { - "address": "0x7A41e0517a5ecA4FdbC7FbebA4D4c47B9fF6DC63", + "erc20:eth:ZLA": { + "address": "0xfd8971d5E8E1740cE2d0A84095fCA4De729d0c16", "links": { - "Homepage": "https://zsc.io/" + "Homepage": "https://zla.io" }, - "marketcap_usd": 1500004, - "name": "Zeusshield", + "marketcap_usd": 347576.61255301617, + "name": "Zilla", "network": "eth", - "shortcut": "ZCS", - "t1_enabled": "yes", + "shortcut": "ZLA", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -18830,16 +27180,15 @@ } ] }, - "erc20:eth:ZIL": { - "address": "0x05f4a42e251f2d52b8ed15E9FEdAacFcEF1FAD27", + "erc20:eth:ZMN": { + "address": "0x554FFc77F4251a9fB3c0E3590a6a205f8d4e067D", "links": { - "Github": "https://github.com/zilliqa", - "Homepage": "https://www.zilliqa.com/" + "Homepage": "https://www.zmine.com" }, - "marketcap_usd": 157666579, - "name": "Zilliqa", + "marketcap_usd": 1059772.1111633803, + "name": "ZMINE", "network": "eth", - "shortcut": "ZIL", + "shortcut": "ZMN", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -18858,16 +27207,16 @@ } ] }, - "erc20:eth:ZMN": { - "address": "0x554FFc77F4251a9fB3c0E3590a6a205f8d4e067D", + "erc20:eth:ZPR": { + "address": "0xb5b8F5616Fe42d5ceCA3e87F3FddbDd8F496d760", "links": { - "Homepage": "https://www.zmine.com" + "Homepage": "https://zper.io" }, - "marketcap_usd": 1594146, - "name": "ZMINE", + "marketcap_usd": 1136507.7051483023, + "name": "ZPER", "network": "eth", - "shortcut": "ZMN", - "t1_enabled": "yes", + "shortcut": "ZPR", + "t1_enabled": "soon", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -18887,12 +27236,11 @@ }, "erc20:eth:ZRX": { "address": "0xE41d2489571d322189246DaFA5ebDe1F4699F498", - "coinmarketcap_alias": "0x", "links": { "Github": "https://github.com/0xProject", "Homepage": "https://0xproject.com" }, - "marketcap_usd": 176341379, + "marketcap_usd": 136369652.50930715, "name": "0x Project", "network": "eth", "shortcut": "ZRX", @@ -18941,13 +27289,40 @@ } ] }, + "erc20:eth:ZXC": { + "address": "0x83e2BE8d114F9661221384B3a50d24B96a5653F5", + "links": { + "Homepage": "https://0xcert.org" + }, + "marketcap_usd": 309338.0622502, + "name": "0xcert Protocol Token", + "network": "eth", + "shortcut": "ZXC", + "t1_enabled": "soon", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, "erc20:eth:cV": { "address": "0xdA6cb58A0D0C01610a29c5A65c303e13e885887C", "links": { "Github": "https://github.com/carVertical", "Homepage": "https://www.carvertical.com" }, - "marketcap_usd": 2679505, + "marketcap_usd": 2129753.3611435737, "name": "carVertical", "network": "eth", "shortcut": "cV", @@ -19002,7 +27377,7 @@ "Github": "https://github.com/eBTCCommunityTrustToken/eBTC", "Homepage": "https://ebitcoin.org" }, - "marketcap_usd": 0, + "marketcap_usd": 319081.6548058621, "name": "eBTC", "network": "eth", "shortcut": "eBTC", @@ -19085,7 +27460,7 @@ "Github": "https://github.com/eosdac", "Homepage": "https://eosdac.io/" }, - "marketcap_usd": 4044050, + "marketcap_usd": 3475215.90534752, "name": "eosDAC", "network": "eth", "shortcut": "eosDAC", @@ -19107,16 +27482,16 @@ } ] }, - "erc20:eth:nUSD": { - "address": "0x57Ab1E02fEE23774580C119740129eAC7081e9D3", + "erc20:eth:onG": { + "address": "0xd341d1680Eeee3255b8C4c75bCCE7EB57f144dAe", "links": { - "Github": "https://github.com/havven/havven", - "Homepage": "https://www.havven.io" + "Github": "https://github.com/onGsocial", + "Homepage": "https://ongcoin.io" }, - "marketcap_usd": 0, - "name": "Havven-Backed USD Nomins (nUSD)", + "marketcap_usd": 208822.60080047097, + "name": "onG", "network": "eth", - "shortcut": "nUSD", + "shortcut": "onG", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -19135,18 +27510,18 @@ } ] }, - "erc20:eth:onG": { - "address": "0xd341d1680Eeee3255b8C4c75bCCE7EB57f144dAe", + "erc20:eth:sUSD": { + "address": "0x57Ab1E02fEE23774580C119740129eAC7081e9D3", "links": { - "Github": "https://github.com/onGsocial", - "Homepage": "https://ongcoin.io" + "Github": "https://github.com/havven/", + "Homepage": "https://www.synthetix.io" }, - "marketcap_usd": 0, - "name": "onG", + "marketcap_usd": 1032370.7116671155, + "name": "USD Synth (sUSD)", "network": "eth", - "shortcut": "onG", - "t1_enabled": "yes", - "t2_enabled": "yes", + "shortcut": "sUSD", + "t1_enabled": "soon", + "t2_enabled": "soon", "type": "erc20", "wallet": [ { @@ -19191,7 +27566,7 @@ "links": { "Homepage": "https://www.qwark.io" }, - "marketcap_usd": 1190111, + "marketcap_usd": 0, "name": "QWARK", "network": "ubq", "shortcut": "QWARK", @@ -19236,7 +27611,7 @@ "links": { "Homepage": "https://akroma.io" }, - "marketcap_usd": 307790, + "marketcap_usd": 198687, "name": "Akroma", "shortcut": "AKA", "t1_enabled": "yes", @@ -19257,7 +27632,7 @@ "links": { "Homepage": "https://atheios.com" }, - "marketcap_usd": 39774, + "marketcap_usd": 27676, "name": "Atheios", "shortcut": "ATH", "t1_enabled": "yes", @@ -19279,7 +27654,7 @@ "links": { "Homepage": "https://callisto.network" }, - "marketcap_usd": 3797371, + "marketcap_usd": 3270659, "name": "Callisto", "shortcut": "CLO", "t1_enabled": "yes", @@ -19300,7 +27675,7 @@ "links": { "Homepage": "https://egem.io" }, - "marketcap_usd": 196355, + "marketcap_usd": 174565, "name": "EtherGem", "shortcut": "EGEM", "t1_enabled": "yes", @@ -19321,7 +27696,7 @@ "links": { "Homepage": "https://ellaism.org" }, - "marketcap_usd": 143114, + "marketcap_usd": 151205, "name": "Ellaism", "shortcut": "ELLA", "t1_enabled": "yes", @@ -19364,7 +27739,7 @@ "links": { "Homepage": "https://ethersocial.org" }, - "marketcap_usd": 979668, + "marketcap_usd": 570878, "name": "Ethersocial Network", "shortcut": "ESN", "t1_enabled": "yes", @@ -19385,7 +27760,7 @@ "links": { "Homepage": "https://ethereumclassic.github.io" }, - "marketcap_usd": 485357014, + "marketcap_usd": 420321396, "name": "Ethereum Classic", "shortcut": "ETC", "t1_enabled": "yes", @@ -19410,7 +27785,7 @@ "links": { "Homepage": "https://www.ethereum.org" }, - "marketcap_usd": 11195741067, + "marketcap_usd": 11266412521, "name": "Ethereum", "shortcut": "ETH", "t1_enabled": "yes", @@ -19435,7 +27810,7 @@ "links": { "Homepage": "https://ether1.org" }, - "marketcap_usd": 258097, + "marketcap_usd": 228349, "name": "Ether-1", "shortcut": "ETHO", "t1_enabled": "yes", @@ -19477,7 +27852,7 @@ "links": { "Homepage": "https://expanse.tech" }, - "marketcap_usd": 1320583, + "marketcap_usd": 978587, "name": "Expanse", "shortcut": "EXP", "t1_enabled": "yes", @@ -19498,7 +27873,7 @@ "links": { "Homepage": "https://gochain.io" }, - "marketcap_usd": 16870390, + "marketcap_usd": 12486120, "name": "GoChain", "shortcut": "GO", "t1_enabled": "yes", @@ -19540,7 +27915,7 @@ "links": { "Homepage": "https://musicoin.org" }, - "marketcap_usd": 1586549, + "marketcap_usd": 1163597, "name": "Musicoin", "shortcut": "MUSIC", "t1_enabled": "yes", @@ -19561,7 +27936,7 @@ "links": { "Homepage": "https://pirl.io" }, - "marketcap_usd": 1076272, + "marketcap_usd": 1025798, "name": "Pirl", "shortcut": "PIRL", "t1_enabled": "yes", @@ -19624,7 +27999,7 @@ "links": { "Homepage": "https://ubiqsmart.com" }, - "marketcap_usd": 10337464, + "marketcap_usd": 7205499, "name": "Ubiq", "shortcut": "UBQ", "t1_enabled": "yes", @@ -19646,7 +28021,7 @@ "Github": "https://github.com/input-output-hk/cardano-sl", "Homepage": "https://www.cardano.org" }, - "marketcap_usd": 1014081104, + "marketcap_usd": 980936909, "name": "Cardano", "shortcut": "ADA", "t1_enabled": "no", @@ -19664,7 +28039,7 @@ "Github": "https://github.com/EOSIO/eos", "Homepage": "https://eos.io" }, - "marketcap_usd": 2303030611, + "marketcap_usd": 2162973422, "name": "EOS", "shortcut": "EOS", "t1_enabled": "no", @@ -19677,7 +28052,7 @@ "Github": "https://github.com/LiskHQ/lisk", "Homepage": "https://lisk.io/" }, - "marketcap_usd": 163969212, + "marketcap_usd": 126933407, "name": "Lisk", "shortcut": "LSK", "t1_enabled": "yes", @@ -19690,7 +28065,7 @@ "Github": "https://github.com/maidsafe", "Homepage": "https://maidsafe.net" }, - "marketcap_usd": 62300073, + "marketcap_usd": 51067928, "name": "MaidSafeCoin", "shortcut": "MAID", "t1_enabled": "yes", @@ -19703,7 +28078,7 @@ "Github": "https://github.com/OmniLayer", "Homepage": "https://www.omnilayer.org" }, - "marketcap_usd": 1433882, + "marketcap_usd": 1150458, "name": "Omni", "shortcut": "OMNI", "t1_enabled": "yes", @@ -19716,7 +28091,7 @@ "Github": "https://github.com/ontio/ontology", "Homepage": "https://ont.io" }, - "marketcap_usd": 205404425, + "marketcap_usd": 172172523, "name": "Ontology", "shortcut": "ONT", "t1_enabled": "no", @@ -19729,7 +28104,7 @@ "Github": "https://github.com/tronprotocol/java-tron", "Homepage": "https://tron.network" }, - "marketcap_usd": 1281612590, + "marketcap_usd": 1784687960, "name": "Tron", "shortcut": "TRX", "t1_enabled": "no", @@ -19741,7 +28116,7 @@ "links": { "Homepage": "https://tether.to" }, - "marketcap_usd": 1889360741, + "marketcap_usd": 2022654617, "name": "Tether", "shortcut": "USDT", "t1_enabled": "yes", @@ -19754,7 +28129,7 @@ "Github": "https://github.com/wanchain/go-wanchain", "Homepage": "https://wanchain.org" }, - "marketcap_usd": 40001099, + "marketcap_usd": 28345740, "name": "Wanchain", "shortcut": "WAN", "t1_enabled": "yes", @@ -19767,7 +28142,7 @@ "Github": "https://github.com/stellar/stellar-core", "Homepage": "https://www.stellar.org" }, - "marketcap_usd": 2248186965, + "marketcap_usd": 1506640521, "name": "Stellar", "shortcut": "XLM", "t1_enabled": "yes", @@ -19785,7 +28160,7 @@ "Github": "https://github.com/monero-project/monero", "Homepage": "https://getmonero.org" }, - "marketcap_usd": 854132663, + "marketcap_usd": 723207349, "name": "Monero", "shortcut": "XMR", "t1_enabled": "no", @@ -19798,7 +28173,7 @@ "Github": "https://github.com/ripple/rippled", "Homepage": "https://ripple.com" }, - "marketcap_usd": 14489648951, + "marketcap_usd": 12280642696, "name": "Ripple", "shortcut": "XRP", "t1_enabled": "no", @@ -19811,7 +28186,7 @@ "Github": "https://github.com/tezos/tezos", "Homepage": "https://tezos.com" }, - "marketcap_usd": 273408365, + "marketcap_usd": 226084466, "name": "Tezos", "shortcut": "XTZ", "t1_enabled": "no", @@ -19845,7 +28220,7 @@ "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 2279614, + "marketcap_usd": 2381610, "name": "DIMCOIN", "shortcut": "DIM", "t1_enabled": "yes", @@ -19863,7 +28238,7 @@ "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 2279614, + "marketcap_usd": 2381610, "name": "DIM TOKEN", "shortcut": "DIMTOK", "t1_enabled": "yes", @@ -19914,7 +28289,7 @@ "links": { "Homepage": "https://nem.io" }, - "marketcap_usd": 647754138, + "marketcap_usd": 342577422, "name": "NEM", "shortcut": "XEM", "t1_enabled": "yes", @@ -19929,12 +28304,12 @@ } }, "info": { - "marketcap_supported": "88.73 %", - "marketcap_usd": 112285954348, - "t1_coins": 702, - "t2_coins": 746, - "total_marketcap_usd": 126550482965, - "updated_at": 1545425454, - "updated_at_readable": "Fri Dec 21 21:50:54 2018" + "marketcap_supported": "90.32 %", + "marketcap_usd": 102605031792.03386, + "t1_coins": 704, + "t2_coins": 1011, + "total_marketcap_usd": 113595418022, + "updated_at": 1549373494, + "updated_at_readable": "Tue Feb 5 14:31:34 2019" } } \ No newline at end of file diff --git a/defs/coins_details.override.json b/defs/coins_details.override.json index c187a102e..9022aef0c 100644 --- a/defs/coins_details.override.json +++ b/defs/coins_details.override.json @@ -2,58 +2,16 @@ "bitcoin:DNR": { "coinmarketcap_alias": "denarius-dnr" }, - "bitcoin:MUE": { - "name": "MonetaryUnit" - }, - "erc20:eth:AOA": { - "links": { - "Homepage": "https://www.aurorachain.io/" - } - }, "erc20:eth:BAT": { "name": "Basic Attention Token" }, - "erc20:eth:BNB": { - "name": "Binance Coin" - }, - "erc20:eth:GNT": { - "coinmarketcap_alias": "golem-network-tokens" - }, "erc20:eth:LINK (Chainlink)": { "name": "Chainlink" }, - "erc20:eth:MKR": { - "coinmarketcap_alias": "maker" - }, - "erc20:eth:NPXS": { - "coinmarketcap_alias": "pundi-x" - }, - "erc20:eth:OMG": { - "name": "OmiseGO" - }, - "erc20:eth:PAX": { - "coinmarketcap_alias": "paxos-standard-token" - }, - "erc20:eth:TUSD": { - "links": { - "Homepage": "https://www.trusttoken.com/" - } - }, - "erc20:eth:USDC": { - "coinmarketcap_alias": "usd-coin" - }, - "erc20:eth:VEN": { - "links": { - "Homepage": "https://www.vechain.com" - } - }, "erc20:eth:YUPIE": { "hidden": 1, "notes": "Replaced by YUP" }, - "erc20:eth:ZRX": { - "coinmarketcap_alias": "0x" - }, "eth:CLO": { "coinmarketcap_alias": "callisto-network" }, From 6fb0c34fab58726f17898fb1198b7a421e0fd82d Mon Sep 17 00:00:00 2001 From: matejcik Date: Tue, 5 Feb 2019 14:40:27 +0100 Subject: [PATCH 714/767] coins_details: round market cap numbers for tokens --- defs/coins_details.json | 1262 +++++++++++++++++++-------------------- tools/coins_details.py | 2 +- 2 files changed, 632 insertions(+), 632 deletions(-) diff --git a/defs/coins_details.json b/defs/coins_details.json index 0045b1838..16d3f6192 100644 --- a/defs/coins_details.json +++ b/defs/coins_details.json @@ -761,7 +761,7 @@ "Github": "https://github.com/HurifyPlatform", "Homepage": "https://hurify.co/" }, - "marketcap_usd": 82031.04494452103, + "marketcap_usd": 82031, "name": "$Hurify Token", "network": "eth", "shortcut": "$HUR", @@ -815,7 +815,7 @@ "links": { "Homepage": "https://0xbitcoin.org/" }, - "marketcap_usd": 514562.21502881806, + "marketcap_usd": 514562, "name": "0xBitcoin", "network": "eth", "shortcut": "0xBTC", @@ -842,7 +842,7 @@ "links": { "Homepage": "https://firstblood.io" }, - "marketcap_usd": 1919392.1776221949, + "marketcap_usd": 1919392, "name": "FirstBlood", "network": "eth", "shortcut": "1ST", @@ -869,7 +869,7 @@ "links": { "Homepage": "https://ico.1worldonline.com" }, - "marketcap_usd": 428346.4658797973, + "marketcap_usd": 428346, "name": "1WO", "network": "eth", "shortcut": "1WO", @@ -896,7 +896,7 @@ "links": { "Homepage": "https://300tokensparta.com" }, - "marketcap_usd": 60817.4714646, + "marketcap_usd": 60817, "name": "300 Token Sparta", "network": "eth", "shortcut": "300", @@ -978,7 +978,7 @@ "links": { "Homepage": "https://www.arcblock.io" }, - "marketcap_usd": 6608438.105302575, + "marketcap_usd": 6608438, "name": "ArcBlock Token", "network": "eth", "shortcut": "ABT", @@ -1006,7 +1006,7 @@ "Github": "https://github.com/theabyssportal", "Homepage": "https://www.theabyss.com" }, - "marketcap_usd": 1173525.8212509586, + "marketcap_usd": 1173525, "name": "ABYSS", "network": "eth", "shortcut": "ABYSS", @@ -1060,7 +1060,7 @@ "links": { "Homepage": "https://tokenstars.com/en/ace" }, - "marketcap_usd": 160706.92859916607, + "marketcap_usd": 160706, "name": "ACE (TokenStars)", "network": "eth", "shortcut": "ACE", @@ -1087,7 +1087,7 @@ "links": { "Homepage": "https://adbank.network" }, - "marketcap_usd": 548705.6589799658, + "marketcap_usd": 548705, "name": "adbank", "network": "eth", "shortcut": "ADB", @@ -1114,7 +1114,7 @@ "links": { "Homepage": "https://adhive.tv" }, - "marketcap_usd": 256400.3328229861, + "marketcap_usd": 256400, "name": "AdHive Token", "network": "eth", "shortcut": "ADH", @@ -1142,7 +1142,7 @@ "Github": "https://github.com/aditus", "Homepage": "https://aditus.net" }, - "marketcap_usd": 161764.00943883182, + "marketcap_usd": 161764, "name": "Aditus", "network": "eth", "shortcut": "ADI", @@ -1170,7 +1170,7 @@ "Github": "https://github.com/adelecosystem", "Homepage": "https://adel.io" }, - "marketcap_usd": 360729.0059094079, + "marketcap_usd": 360729, "name": "Adelphoi", "network": "eth", "shortcut": "ADL", @@ -1197,7 +1197,7 @@ "links": { "Homepage": "https://adshares.net" }, - "marketcap_usd": 962640.5753279638, + "marketcap_usd": 962640, "name": "AdShares", "network": "eth", "shortcut": "ADST", @@ -1225,7 +1225,7 @@ "Github": "https://github.com/adchain", "Homepage": "https://adtoken.com" }, - "marketcap_usd": 3499812.20331, + "marketcap_usd": 3499812, "name": "AdToken", "network": "eth", "shortcut": "ADT", @@ -1253,7 +1253,7 @@ "Github": "https://github.com/AdExBlockchain", "Homepage": "https://www.adex.network" }, - "marketcap_usd": 6668024.590304959, + "marketcap_usd": 6668024, "name": "AdEx Network", "network": "eth", "shortcut": "ADX", @@ -1281,7 +1281,7 @@ "Github": "https://github.com/aeternity", "Homepage": "https://www.aeternity.com/" }, - "marketcap_usd": 85714709.73224911, + "marketcap_usd": 85714709, "name": "aeternity", "network": "eth", "shortcut": "AE", @@ -1337,7 +1337,7 @@ "Github": "https://github.com/singnet/singnet", "Homepage": "https://singularitynet.io" }, - "marketcap_usd": 21390638.330524858, + "marketcap_usd": 21390638, "name": "SingularityNET", "network": "eth", "shortcut": "AGI", @@ -1364,7 +1364,7 @@ "links": { "Homepage": "https://polynetwork.org" }, - "marketcap_usd": 103.26914554290045, + "marketcap_usd": 103, "name": "POLY AI", "network": "eth", "shortcut": "AI", @@ -1391,7 +1391,7 @@ "links": { "Homepage": "https://www.aidcoin.co" }, - "marketcap_usd": 1576502.0408466419, + "marketcap_usd": 1576502, "name": "AidCoin", "network": "eth", "shortcut": "AID", @@ -1474,7 +1474,7 @@ "Github": "https://github.com/AigangNetwork", "Homepage": "https://aigang.network/" }, - "marketcap_usd": 111873.09137861899, + "marketcap_usd": 111873, "name": "Aigang", "network": "eth", "shortcut": "AIX", @@ -1556,7 +1556,7 @@ "links": { "Homepage": "http://ailink.in" }, - "marketcap_usd": 681678.743605896, + "marketcap_usd": 681678, "name": "AiLink Token", "network": "eth", "shortcut": "ALI", @@ -1584,7 +1584,7 @@ "Github": "https://github.com/AlisProject", "Homepage": "https://alismedia.jp" }, - "marketcap_usd": 677872.7415949875, + "marketcap_usd": 677872, "name": "ALIS Token", "network": "eth", "shortcut": "ALIS", @@ -1638,7 +1638,7 @@ "links": { "Homepage": "https://alax.io" }, - "marketcap_usd": 909107.6099334836, + "marketcap_usd": 909107, "name": "ALAX", "network": "eth", "shortcut": "ALX", @@ -1666,7 +1666,7 @@ "Github": "https://github.com/ambrosus", "Homepage": "https://ambrosus.com/index.html" }, - "marketcap_usd": 7167124.35700235, + "marketcap_usd": 7167124, "name": "Amber Token", "network": "eth", "shortcut": "AMB", @@ -1722,7 +1722,7 @@ "Github": "https://github.com/amlt-by-coinfirm", "Homepage": "https://amlt.coinfirm.io/" }, - "marketcap_usd": 1113525.4310252108, + "marketcap_usd": 1113525, "name": "AMLT", "network": "eth", "shortcut": "AMLT", @@ -1750,7 +1750,7 @@ "Github": "https://github.com/amontech", "Homepage": "https://amon.tech" }, - "marketcap_usd": 139671.8376740499, + "marketcap_usd": 139671, "name": "Amon", "network": "eth", "shortcut": "AMN", @@ -1778,7 +1778,7 @@ "Github": "https://github.com/AMO-Project/", "Homepage": "https://amo.foundation" }, - "marketcap_usd": 4910194.761285167, + "marketcap_usd": 4910194, "name": "AMO Coin", "network": "eth", "shortcut": "AMO", @@ -1832,7 +1832,7 @@ "links": { "Homepage": "https://aragon.one/network" }, - "marketcap_usd": 10625686.390244687, + "marketcap_usd": 10625686, "name": "ANT", "network": "eth", "shortcut": "ANT", @@ -1859,7 +1859,7 @@ "links": { "Homepage": "https://www.aurorachain.io" }, - "marketcap_usd": 43597590.18877502, + "marketcap_usd": 43597590, "name": "Aurora", "network": "eth", "shortcut": "AOA", @@ -1887,7 +1887,7 @@ "Github": "https://github.com/Oxchild/crowdsale", "Homepage": "https://apisplatform.io" }, - "marketcap_usd": 7786300.4495246, + "marketcap_usd": 7786300, "name": "APIS", "network": "eth", "shortcut": "APIS", @@ -1915,7 +1915,7 @@ "Github": "https://github.com/Aptoide/AppCoins-ethereumj", "Homepage": "https://appcoins.io" }, - "marketcap_usd": 4149953.550818882, + "marketcap_usd": 4149953, "name": "AppCoins", "network": "eth", "shortcut": "APPC", @@ -1997,7 +1997,7 @@ "links": { "Homepage": "https://www.arbitragect.com" }, - "marketcap_usd": 69685.03099459283, + "marketcap_usd": 69685, "name": "ArbitrageCT", "network": "eth", "shortcut": "ARCT", @@ -2052,7 +2052,7 @@ "links": { "Homepage": "https://aeron.aero" }, - "marketcap_usd": 4711458.824442, + "marketcap_usd": 4711458, "name": "Aeron", "network": "eth", "shortcut": "ARN", @@ -2079,7 +2079,7 @@ "links": { "Homepage": "https://cofound.it/en/projects/maecenas" }, - "marketcap_usd": 815790.4727551684, + "marketcap_usd": 815790, "name": "ART", "network": "eth", "shortcut": "ART", @@ -2162,7 +2162,7 @@ "links": { "Homepage": "https://www.blockarray.com" }, - "marketcap_usd": 842117.05851655, + "marketcap_usd": 842117, "name": "Block Array", "network": "eth", "shortcut": "ARY", @@ -2189,7 +2189,7 @@ "links": { "Homepage": "https://airswap.io" }, - "marketcap_usd": 3684517.8559649996, + "marketcap_usd": 3684517, "name": "Airswap", "network": "eth", "shortcut": "AST", @@ -2216,7 +2216,7 @@ "links": { "Homepage": "https://atlant.io" }, - "marketcap_usd": 643684.7116981795, + "marketcap_usd": 643684, "name": "ATL", "network": "eth", "shortcut": "ATL", @@ -2243,7 +2243,7 @@ "links": { "Homepage": "https://www.atmchain.io" }, - "marketcap_usd": 322566.47722295823, + "marketcap_usd": 322566, "name": "ATMChain", "network": "eth", "shortcut": "ATM", @@ -2271,7 +2271,7 @@ "Github": "https://github.com/atonomi", "Homepage": "https://atonomi.io" }, - "marketcap_usd": 442789.6583272286, + "marketcap_usd": 442789, "name": "Atonomi", "network": "eth", "shortcut": "ATMI", @@ -2353,7 +2353,7 @@ "links": { "Homepage": "https://www.aston.company" }, - "marketcap_usd": 4275923.77203232, + "marketcap_usd": 4275923, "name": "Aston", "network": "eth", "shortcut": "ATX", @@ -2380,7 +2380,7 @@ "links": { "Homepage": "https://auctus.org" }, - "marketcap_usd": 292328.3272692107, + "marketcap_usd": 292328, "name": "Auctus", "network": "eth", "shortcut": "AUC", @@ -2407,7 +2407,7 @@ "links": { "Homepage": "https://auroradao.com" }, - "marketcap_usd": 3060206.452979388, + "marketcap_usd": 3060206, "name": "Aurora DAO", "network": "eth", "shortcut": "AURA", @@ -2434,7 +2434,7 @@ "links": { "Homepage": "https://cubeint.io" }, - "marketcap_usd": 15258453.80129185, + "marketcap_usd": 15258453, "name": "Cube", "network": "eth", "shortcut": "AUTO", @@ -2489,7 +2489,7 @@ "links": { "Homepage": "https://aventus.io" }, - "marketcap_usd": 952213.1989679999, + "marketcap_usd": 952213, "name": "AVT", "network": "eth", "shortcut": "AVT", @@ -2572,7 +2572,7 @@ "Github": "https://www.github.com/axpire", "Homepage": "https://www.axpire.io" }, - "marketcap_usd": 1835362.9182474406, + "marketcap_usd": 1835362, "name": "aXpire", "network": "eth", "shortcut": "AXPR", @@ -2599,7 +2599,7 @@ "links": { "Homepage": "https://www.b2bx.exchange" }, - "marketcap_usd": 3422145.3231067644, + "marketcap_usd": 3422145, "name": "B2BX", "network": "eth", "shortcut": "B2BX", @@ -2626,7 +2626,7 @@ "links": { "Homepage": "https://www.banca.world" }, - "marketcap_usd": 1364999.4317603367, + "marketcap_usd": 1364999, "name": "Banca", "network": "eth", "shortcut": "BANCA", @@ -2680,7 +2680,7 @@ "links": { "Homepage": "https://basicattentiontoken.org" }, - "marketcap_usd": 132068898.73267034, + "marketcap_usd": 132068898, "name": "Basic Attention Token", "network": "eth", "shortcut": "BAT", @@ -2707,7 +2707,7 @@ "links": { "Homepage": "https://getbabb.com" }, - "marketcap_usd": 6921515.455245404, + "marketcap_usd": 6921515, "name": "BABB", "network": "eth", "shortcut": "BAX", @@ -2734,7 +2734,7 @@ "links": { "Homepage": "http://bbcoin.tradove.com" }, - "marketcap_usd": 4776275.78595, + "marketcap_usd": 4776275, "name": "TraDove B2BCoin", "network": "eth", "shortcut": "BBC", @@ -2762,7 +2762,7 @@ "Github": "https://github.com/brickblock-io", "Homepage": "https://www.brickblock.io/" }, - "marketcap_usd": 1656162.1972212282, + "marketcap_usd": 1656162, "name": "BRICKBLOCK TOKEN", "network": "eth", "shortcut": "BBK", @@ -2789,7 +2789,7 @@ "links": { "Homepage": "http://www.banyanbbt.org" }, - "marketcap_usd": 605850.9647453884, + "marketcap_usd": 605850, "name": "Banyan Network", "network": "eth", "shortcut": "BBN", @@ -2816,7 +2816,7 @@ "links": { "Homepage": "https://bigbom.com" }, - "marketcap_usd": 166211.35115558517, + "marketcap_usd": 166211, "name": "Bigbom", "network": "eth", "shortcut": "BBO", @@ -2843,7 +2843,7 @@ "links": { "Homepage": "https://block-chain.com" }, - "marketcap_usd": 44403.42711205552, + "marketcap_usd": 44403, "name": "Block-Chain.com", "network": "eth", "shortcut": "BC", @@ -2927,7 +2927,7 @@ "Github": "https://github.com/VinceBCD/BCDiploma", "Homepage": "https://www.bcdiploma.com" }, - "marketcap_usd": 132502.2091200458, + "marketcap_usd": 132502, "name": "Blockchain Certified Data Token", "network": "eth", "shortcut": "BCDT", @@ -2982,7 +2982,7 @@ "Github": "https://github.com/blockmason", "Homepage": "https://blockmason.io" }, - "marketcap_usd": 3342660.4597807997, + "marketcap_usd": 3342660, "name": "BCPT", "network": "eth", "shortcut": "BCPT", @@ -3010,7 +3010,7 @@ "Github": "https://github.com/bitcv", "Homepage": "https://bitcv.one/" }, - "marketcap_usd": 7239618.36207, + "marketcap_usd": 7239618, "name": "BitCapitalVendor Token", "network": "eth", "shortcut": "BCV", @@ -3038,7 +3038,7 @@ "Github": "https://github.com/bitdegree", "Homepage": "https://bitdegree.org" }, - "marketcap_usd": 856764.3601047774, + "marketcap_usd": 856764, "name": "BitDegree Token", "network": "eth", "shortcut": "BDG", @@ -3066,7 +3066,7 @@ "Github": "https://github.com/thebeetoken", "Homepage": "https://www.beetoken.com" }, - "marketcap_usd": 722937.1448122382, + "marketcap_usd": 722937, "name": "Bee Token", "network": "eth", "shortcut": "BEE", @@ -3094,7 +3094,7 @@ "Github": "https://github.com/Rentberry", "Homepage": "https://rentberry.com" }, - "marketcap_usd": 620086.3643516239, + "marketcap_usd": 620086, "name": "Berry", "network": "eth", "shortcut": "BERRY", @@ -3122,7 +3122,7 @@ "Github": "https://github.com/daocasino", "Homepage": "https://dao.casino" }, - "marketcap_usd": 1459870.9319291087, + "marketcap_usd": 1459870, "name": "DAO.Casino", "network": "eth", "shortcut": "BET", @@ -3150,7 +3150,7 @@ "Github": "https://github.com/bethereumproject", "Homepage": "https://www.bethereum.com/" }, - "marketcap_usd": 386698.5226857671, + "marketcap_usd": 386698, "name": "Bethereum", "network": "eth", "shortcut": "BETHER", @@ -3178,7 +3178,7 @@ "Github": "https://github.com/betterbetting", "Homepage": "https://www.betterbetting.org" }, - "marketcap_usd": 526007.3807241232, + "marketcap_usd": 526007, "name": "BETR", "network": "eth", "shortcut": "BETR", @@ -3205,7 +3205,7 @@ "links": { "Homepage": "https://bezop.io" }, - "marketcap_usd": 1138467.3723765637, + "marketcap_usd": 1138467, "name": "Bezop", "network": "eth", "shortcut": "BEZ", @@ -3232,7 +3232,7 @@ "links": { "Homepage": "https://bhpcash.io/bhpc/index.html" }, - "marketcap_usd": 23318213.51703977, + "marketcap_usd": 23318213, "name": "BHPCash", "network": "eth", "shortcut": "BHPC", @@ -3341,7 +3341,7 @@ "links": { "Homepage": "https://www.bibox.com" }, - "marketcap_usd": 13458028.803837648, + "marketcap_usd": 13458028, "name": "Bibox Token", "network": "eth", "shortcut": "BIX", @@ -3423,7 +3423,7 @@ "Github": "https://github.com/BankEx", "Homepage": "https://bankex.com/" }, - "marketcap_usd": 1204323.1991340118, + "marketcap_usd": 1204323, "name": "BANKEX", "network": "eth", "shortcut": "BKX", @@ -3450,7 +3450,7 @@ "links": { "Homepage": "http://bolenum.com" }, - "marketcap_usd": 44.0383858122, + "marketcap_usd": 44, "name": "Bolenum", "network": "eth", "shortcut": "BLN", @@ -3478,7 +3478,7 @@ "Github": "https://github.com/hellobloom", "Homepage": "https://hellobloom.io" }, - "marketcap_usd": 1387710.8769785995, + "marketcap_usd": 1387710, "name": "Bloom", "network": "eth", "shortcut": "BLT", @@ -3506,7 +3506,7 @@ "Github": "https://github.com/BlueCrypto", "Homepage": "https://blueprotocol.com/" }, - "marketcap_usd": 501442.8856324111, + "marketcap_usd": 501442, "name": "Ethereum Blue", "network": "eth", "shortcut": "BLUE", @@ -3588,7 +3588,7 @@ "links": { "Homepage": "https://bluzelle.com" }, - "marketcap_usd": 7491299.491153803, + "marketcap_usd": 7491299, "name": "Bluzelle", "network": "eth", "shortcut": "BLZ", @@ -3616,7 +3616,7 @@ "Github": "https://github.com/blackmoonfg", "Homepage": "https://blackmooncrypto.com" }, - "marketcap_usd": 2909952.6715368605, + "marketcap_usd": 2909952, "name": "Blackmoon Crypto BMC Token", "network": "eth", "shortcut": "BMC", @@ -3671,7 +3671,7 @@ "links": { "Homepage": "https://www.bitmart.com" }, - "marketcap_usd": 1453900.289170328, + "marketcap_usd": 1453900, "name": "BitMart Token", "network": "eth", "shortcut": "BMX", @@ -3698,7 +3698,7 @@ "links": { "Homepage": "https://www.binance.com" }, - "marketcap_usd": 920950671.8153768, + "marketcap_usd": 920950671, "name": "Binance Coin", "network": "eth", "shortcut": "BNB", @@ -3725,7 +3725,7 @@ "links": { "Homepage": "https://www.brokerneko.com" }, - "marketcap_usd": 16130.223417149824, + "marketcap_usd": 16130, "name": "BrokerNekoNetwork", "network": "eth", "shortcut": "BNN", @@ -3753,7 +3753,7 @@ "Github": "https://github.com/bancorprotocol", "Homepage": "https://www.bancor.network/discover" }, - "marketcap_usd": 29688919.28422186, + "marketcap_usd": 29688919, "name": "Bancor", "network": "eth", "shortcut": "BNT", @@ -3780,7 +3780,7 @@ "links": { "Homepage": "https://bounty0x.io" }, - "marketcap_usd": 645195.5269725319, + "marketcap_usd": 645195, "name": "Bounty0x Token", "network": "eth", "shortcut": "BNTY", @@ -3807,7 +3807,7 @@ "links": { "Homepage": "https://bobsrepair.com" }, - "marketcap_usd": 279919.6285340227, + "marketcap_usd": 279919, "name": "Bob's repair", "network": "eth", "shortcut": "BOB", @@ -3834,7 +3834,7 @@ "links": { "Homepage": "https://bonpay.com" }, - "marketcap_usd": 208652.45341511004, + "marketcap_usd": 208652, "name": "Bonpay", "network": "eth", "shortcut": "BON", @@ -3915,7 +3915,7 @@ "links": { "Homepage": "https://www.bouts.pro" }, - "marketcap_usd": 159575.67294349548, + "marketcap_usd": 159575, "name": "BoutsPro", "network": "eth", "shortcut": "BOUTS", @@ -3942,7 +3942,7 @@ "links": { "Homepage": "https://www.goblockparty.com" }, - "marketcap_usd": 988354.4087748872, + "marketcap_usd": 988354, "name": "BOXX Token [Blockparty]", "network": "eth", "shortcut": "BOXX", @@ -3970,7 +3970,7 @@ "Github": "https://github.com/Blockport/tokensale", "Homepage": "https://blockport.io" }, - "marketcap_usd": 5836835.641333012, + "marketcap_usd": 5836835, "name": "Blockport Token", "network": "eth", "shortcut": "BPT", @@ -3997,7 +3997,7 @@ "links": { "Homepage": "https://www.bitquence.com" }, - "marketcap_usd": 13121863.728156526, + "marketcap_usd": 13121863, "name": "Bitquence", "network": "eth", "shortcut": "BQX", @@ -4024,7 +4024,7 @@ "links": { "Homepage": "http://bro-consortium.io" }, - "marketcap_usd": 17643.9286664, + "marketcap_usd": 17643, "name": "BRAT", "network": "eth", "shortcut": "BRAT", @@ -4052,7 +4052,7 @@ "Github": "https://github.com/breadwallet", "Homepage": "https://token.breadapp.com/en" }, - "marketcap_usd": 16465833.472879272, + "marketcap_usd": 16465833, "name": "Bread", "network": "eth", "shortcut": "BRD", @@ -4215,7 +4215,7 @@ "links": { "Homepage": "https://www.bitcoinone.io" }, - "marketcap_usd": 5543.64046248, + "marketcap_usd": 5543, "name": "BitCoin One", "network": "eth", "shortcut": "BTCONE", @@ -4326,7 +4326,7 @@ "Github": "https://github.com/bitcoin-token", "Homepage": "https://btk.community" }, - "marketcap_usd": 91201.37122135403, + "marketcap_usd": 91201, "name": "Bitcoin Token", "network": "eth", "shortcut": "BTK", @@ -4381,7 +4381,7 @@ "links": { "Homepage": "https://www.bottos.org" }, - "marketcap_usd": 5394576.2577483505, + "marketcap_usd": 5394576, "name": "Bottos", "network": "eth", "shortcut": "BTO", @@ -4435,7 +4435,7 @@ "links": { "Homepage": "https://bitether.org" }, - "marketcap_usd": 59082.47974980482, + "marketcap_usd": 59082, "name": "Bitether", "network": "eth", "shortcut": "BTR", @@ -4462,7 +4462,7 @@ "links": { "Homepage": "https://biotron.io" }, - "marketcap_usd": 272214.34414271085, + "marketcap_usd": 272214, "name": "Biotron", "network": "eth", "shortcut": "BTRN", @@ -4517,7 +4517,7 @@ "links": { "Homepage": "https://blocktrade.com/" }, - "marketcap_usd": 1389006.7327868673, + "marketcap_usd": 1389006, "name": "Blocktrade.com", "network": "eth", "shortcut": "BTTX", @@ -4599,7 +4599,7 @@ "links": { "Homepage": "https://www.bluewhale.foundation" }, - "marketcap_usd": 2771004.9184069186, + "marketcap_usd": 2771004, "name": "Blue Whale Token", "network": "eth", "shortcut": "BWX", @@ -4626,7 +4626,7 @@ "links": { "Homepage": "https://www.bitz.com" }, - "marketcap_usd": 3035017.8581350544, + "marketcap_usd": 3035017, "name": "Bit-Z Token", "network": "eth", "shortcut": "BZ", @@ -4653,7 +4653,7 @@ "links": { "Homepage": "https://bezant.io" }, - "marketcap_usd": 12050684.380868295, + "marketcap_usd": 12050684, "name": "Bezant", "network": "eth", "shortcut": "BZNT", @@ -4681,7 +4681,7 @@ "Github": "https://github.com/cryptotwenty", "Homepage": "https://crypto20.com" }, - "marketcap_usd": 14278554.830531472, + "marketcap_usd": 14278554, "name": "Crypto20's Token", "network": "eth", "shortcut": "C20", @@ -4708,7 +4708,7 @@ "links": { "Homepage": "https://www.carboneum.io" }, - "marketcap_usd": 390948.19348648033, + "marketcap_usd": 390948, "name": "Carboneum", "network": "eth", "shortcut": "C8", @@ -4735,7 +4735,7 @@ "links": { "Homepage": "https://change-bank.com" }, - "marketcap_usd": 2539179.215815956, + "marketcap_usd": 2539179, "name": "Change Bank", "network": "eth", "shortcut": "CAG", @@ -4762,7 +4762,7 @@ "links": { "Homepage": "https://canya.io" }, - "marketcap_usd": 593000.6600401021, + "marketcap_usd": 593000, "name": "CAN", "network": "eth", "shortcut": "CAN", @@ -4789,7 +4789,7 @@ "links": { "Homepage": "https://cappasity.com/tech/" }, - "marketcap_usd": 875537.6711131476, + "marketcap_usd": 875537, "name": "Cappasity", "network": "eth", "shortcut": "CAPP", @@ -4897,7 +4897,7 @@ "links": { "Homepage": "https://cashaa.com" }, - "marketcap_usd": 5691784.546765446, + "marketcap_usd": 5691784, "name": "Cashaa", "network": "eth", "shortcut": "CAS", @@ -4924,7 +4924,7 @@ "links": { "Homepage": "https://www.bitclave.com" }, - "marketcap_usd": 242931.725937579, + "marketcap_usd": 242931, "name": "CAT (BitClave)", "network": "eth", "shortcut": "CAT (BitClave)", @@ -4951,7 +4951,7 @@ "links": { "Homepage": "https://blockcat.io" }, - "marketcap_usd": 650212.1818758751, + "marketcap_usd": 650212, "name": "CAT (Blockcat)", "network": "eth", "shortcut": "CAT (Blockcat)", @@ -5005,7 +5005,7 @@ "links": { "Homepage": "https://coin.cashbet.com" }, - "marketcap_usd": 889978.2409939371, + "marketcap_usd": 889978, "name": "CashBet Coin", "network": "eth", "shortcut": "CBC", @@ -5060,7 +5060,7 @@ "links": { "Homepage": "https://www.commerceblock.com" }, - "marketcap_usd": 2627112.5735166552, + "marketcap_usd": 2627112, "name": "CommerceBlock", "network": "eth", "shortcut": "CBT", @@ -5168,7 +5168,7 @@ "links": { "Homepage": "http://clippercoin.com" }, - "marketcap_usd": 3430577.7547347965, + "marketcap_usd": 3430577, "name": "Clipper Coin", "network": "eth", "shortcut": "CCCX", @@ -5223,7 +5223,7 @@ "links": { "Homepage": "https://ccore.io" }, - "marketcap_usd": 65427.030899098594, + "marketcap_usd": 65427, "name": "Ccore", "network": "eth", "shortcut": "CCO", @@ -5278,7 +5278,7 @@ "links": { "Homepage": "http://crystal-clear.io" }, - "marketcap_usd": 54212.30699051036, + "marketcap_usd": 54212, "name": "Crystal Clear Token", "network": "eth", "shortcut": "CCT", @@ -5333,7 +5333,7 @@ "links": { "Homepage": "https://www.coindash.io" }, - "marketcap_usd": 4843450.883170687, + "marketcap_usd": 4843450, "name": "CoinDash", "network": "eth", "shortcut": "CDT", @@ -5360,7 +5360,7 @@ "links": { "Homepage": "https://www.ceek.com/" }, - "marketcap_usd": 2542674.607204032, + "marketcap_usd": 2542674, "name": "CEEK VR Token", "network": "eth", "shortcut": "CEEK", @@ -5387,7 +5387,7 @@ "links": { "Homepage": "https://www.centrality.ai" }, - "marketcap_usd": 28612165.32777112, + "marketcap_usd": 28612165, "name": "Centrality", "network": "eth", "shortcut": "CENNZ", @@ -5469,7 +5469,7 @@ "links": { "Homepage": "https://cofound.it/" }, - "marketcap_usd": 5214429.88521, + "marketcap_usd": 5214429, "name": "Cofound.it", "network": "eth", "shortcut": "CFI", @@ -5524,7 +5524,7 @@ "links": { "Homepage": "https://coinpoker.com" }, - "marketcap_usd": 616129.2559977383, + "marketcap_usd": 616129, "name": "CoinPoker", "network": "eth", "shortcut": "CHP", @@ -5551,7 +5551,7 @@ "links": { "Homepage": "https://swissborg.com" }, - "marketcap_usd": 3334582.157094668, + "marketcap_usd": 3334582, "name": "CHSB", "network": "eth", "shortcut": "CHSB", @@ -5578,7 +5578,7 @@ "links": { "Homepage": "https://weown.com" }, - "marketcap_usd": 14993769.3357209, + "marketcap_usd": 14993769, "name": "Own", "network": "eth", "shortcut": "CHX", @@ -5633,7 +5633,7 @@ "links": { "Homepage": "https://www.connectjob.io" }, - "marketcap_usd": 24261.569046430595, + "marketcap_usd": 24261, "name": "ConnectJob", "network": "eth", "shortcut": "CJT", @@ -5687,7 +5687,7 @@ "links": { "Homepage": "https://www.coinlancer.io" }, - "marketcap_usd": 227444.249547434, + "marketcap_usd": 227444, "name": "Coinlancer", "network": "eth", "shortcut": "CL", @@ -5771,7 +5771,7 @@ "Github": "https://github.com/colucom/CLN-solidity", "Homepage": "https://cln.network" }, - "marketcap_usd": 562035.3728181673, + "marketcap_usd": 562035, "name": "ColuLocalNetwork", "network": "eth", "shortcut": "CLN", @@ -5879,7 +5879,7 @@ "links": { "Homepage": "https://crowdmachine.com" }, - "marketcap_usd": 1042589.3989987739, + "marketcap_usd": 1042589, "name": "Crowd Machine Compute Token", "network": "eth", "shortcut": "CMCT", @@ -5961,7 +5961,7 @@ "links": { "Homepage": "https://cindicator.com" }, - "marketcap_usd": 14730070.474465415, + "marketcap_usd": 14730070, "name": "Cindicator", "network": "eth", "shortcut": "CND", @@ -5988,7 +5988,7 @@ "links": { "Homepage": "https://cnntoken.io" }, - "marketcap_usd": 4291806.90096272, + "marketcap_usd": 4291806, "name": "Content Neutrality Network", "network": "eth", "shortcut": "CNN", @@ -6071,7 +6071,7 @@ "Github": "https://github.com/cobinhood", "Homepage": "https://cobinhood.com" }, - "marketcap_usd": 3561657.5282208957, + "marketcap_usd": 3561657, "name": "Cobinhood Token", "network": "eth", "shortcut": "COB", @@ -6099,7 +6099,7 @@ "Github": "https://github.com/coinfi", "Homepage": "https://www.coinfi.com" }, - "marketcap_usd": 587894.0555754991, + "marketcap_usd": 587894, "name": "CoinFi Token", "network": "eth", "shortcut": "COFI", @@ -6181,7 +6181,7 @@ "links": { "Homepage": "https://cosmochain.io" }, - "marketcap_usd": 6511143.925036114, + "marketcap_usd": 6511143, "name": "Cosmo Coin", "network": "eth", "shortcut": "COSM", @@ -6208,7 +6208,7 @@ "links": { "Homepage": "https://covesting.io/" }, - "marketcap_usd": 2767254.537258, + "marketcap_usd": 2767254, "name": "Covesting", "network": "eth", "shortcut": "COV", @@ -6235,7 +6235,7 @@ "links": { "Homepage": "https://cryptopay.me" }, - "marketcap_usd": 881088.8734718722, + "marketcap_usd": 881088, "name": "Cryptopay", "network": "eth", "shortcut": "CPAY", @@ -6291,7 +6291,7 @@ "Github": "https://github.com/Cpollo", "Homepage": "https://cpollo.info/" }, - "marketcap_usd": 319331.2394813123, + "marketcap_usd": 319331, "name": "CPOLLO", "network": "eth", "shortcut": "CPLO", @@ -6319,7 +6319,7 @@ "Github": "https://github.com/aditus", "Homepage": "https://copytrack.io" }, - "marketcap_usd": 1316242.9996093481, + "marketcap_usd": 1316242, "name": "COPYTRACK", "network": "eth", "shortcut": "CPY", @@ -6374,7 +6374,7 @@ "links": { "Homepage": "https://www.creditbit.org" }, - "marketcap_usd": 80713.83973191722, + "marketcap_usd": 80713, "name": "Creditbit", "network": "eth", "shortcut": "CRB", @@ -6401,7 +6401,7 @@ "links": { "Homepage": "https://www.cruisebit.com" }, - "marketcap_usd": 224255.61850532927, + "marketcap_usd": 224255, "name": "Cruisebit", "network": "eth", "shortcut": "CRBT", @@ -6428,7 +6428,7 @@ "links": { "Homepage": "https://crycash.io" }, - "marketcap_usd": 401319.25729221746, + "marketcap_usd": 401319, "name": "CryCash", "network": "eth", "shortcut": "CRC", @@ -6456,7 +6456,7 @@ "Github": "https://github.com/verifyas", "Homepage": "https://verify.as" }, - "marketcap_usd": 329065.3664067789, + "marketcap_usd": 329065, "name": "CRED", "network": "eth", "shortcut": "CRED", @@ -6483,7 +6483,7 @@ "links": { "Homepage": "https://bitbounce.io" }, - "marketcap_usd": 22809649.40685733, + "marketcap_usd": 22809649, "name": "Credo / Bitbounce", "network": "eth", "shortcut": "CREDO", @@ -6565,7 +6565,7 @@ "links": { "Homepage": "https://crypterium.io" }, - "marketcap_usd": 10791207.275288494, + "marketcap_usd": 10791207, "name": "CrypteriumToken", "network": "eth", "shortcut": "CRPT", @@ -6619,7 +6619,7 @@ "links": { "Homepage": "https://credits.com/en" }, - "marketcap_usd": 8612333.341517327, + "marketcap_usd": 8612333, "name": "Credits", "network": "eth", "shortcut": "CS", @@ -6646,7 +6646,7 @@ "links": { "Homepage": "https://www.bitdice.me" }, - "marketcap_usd": 2180305.073618, + "marketcap_usd": 2180305, "name": "BitDice", "network": "eth", "shortcut": "CSNO", @@ -6673,7 +6673,7 @@ "links": { "Homepage": "https://cryptosolartech.org" }, - "marketcap_usd": 255898.6940172887, + "marketcap_usd": 255898, "name": "Cryptosolartech", "network": "eth", "shortcut": "CST", @@ -6838,7 +6838,7 @@ "links": { "Homepage": "http://www.cortexlabs.ai" }, - "marketcap_usd": 15301690.986850433, + "marketcap_usd": 15301690, "name": "Cortex", "network": "eth", "shortcut": "CTXC", @@ -6865,7 +6865,7 @@ "links": { "Homepage": "https://www.civic.com" }, - "marketcap_usd": 16000793.938641094, + "marketcap_usd": 16000793, "name": "CVC", "network": "eth", "shortcut": "CVC", @@ -6892,7 +6892,7 @@ "links": { "Homepage": "http://www.cybervein.org" }, - "marketcap_usd": 5714964.933976312, + "marketcap_usd": 5714964, "name": "CyberVein", "network": "eth", "shortcut": "CVT", @@ -6948,7 +6948,7 @@ "Github": "https://github.com/cargoxio", "Homepage": "https://cargox.io" }, - "marketcap_usd": 1803762.4689762709, + "marketcap_usd": 1803762, "name": "CargoX", "network": "eth", "shortcut": "CXO", @@ -6975,7 +6975,7 @@ "links": { "Homepage": "https://cyberfmradio.com" }, - "marketcap_usd": 131639.160142336, + "marketcap_usd": 131639, "name": "CyberFM", "network": "eth", "shortcut": "CYFM", @@ -7002,7 +7002,7 @@ "links": { "Homepage": "https://cybermusic.io" }, - "marketcap_usd": 49477.07922061134, + "marketcap_usd": 49477, "name": "CyberMusic", "network": "eth", "shortcut": "CYMT", @@ -7029,7 +7029,7 @@ "links": { "Homepage": "http://www.canonchain.com" }, - "marketcap_usd": 4019154.2781847822, + "marketcap_usd": 4019154, "name": "CanonChain", "network": "eth", "shortcut": "CZR", @@ -7110,7 +7110,7 @@ "links": { "Homepage": "https://dacsee.io/#" }, - "marketcap_usd": 2343819.0130847, + "marketcap_usd": 2343819, "name": "DACSEE", "network": "eth", "shortcut": "DACS", @@ -7137,7 +7137,7 @@ "links": { "Homepage": "https://dadi.cloud" }, - "marketcap_usd": 2372986.684220939, + "marketcap_usd": 2372986, "name": "DADI", "network": "eth", "shortcut": "DADI", @@ -7165,7 +7165,7 @@ "Github": "https://github.com/makerdao", "Homepage": "https://makerdao.com" }, - "marketcap_usd": 75666922.95984253, + "marketcap_usd": 75666922, "name": "Dai Stablecoin v1.0", "network": "eth", "shortcut": "DAI", @@ -7192,7 +7192,7 @@ "links": { "Homepage": "http://www.dalecoin.org" }, - "marketcap_usd": 8336.239916910572, + "marketcap_usd": 8336, "name": "DaleCoin", "network": "eth", "shortcut": "DALC", @@ -7220,7 +7220,7 @@ "Github": "https://github.com/project-daneel", "Homepage": "https://daneel.io" }, - "marketcap_usd": 264480.5270281596, + "marketcap_usd": 264480, "name": "DaneelToken", "network": "eth", "shortcut": "DAN", @@ -7274,7 +7274,7 @@ "links": { "Homepage": "https://datum.org" }, - "marketcap_usd": 625404.2465045627, + "marketcap_usd": 625404, "name": "Datum Token", "network": "eth", "shortcut": "DAT", @@ -7330,7 +7330,7 @@ "Github": "https://github.com/streamr-dev", "Homepage": "https://www.streamr.com" }, - "marketcap_usd": 12001717.914080625, + "marketcap_usd": 12001717, "name": "DATACoin", "network": "eth", "shortcut": "DATACoin", @@ -7357,7 +7357,7 @@ "links": { "Homepage": "https://www.datx.co" }, - "marketcap_usd": 821408.7617223936, + "marketcap_usd": 821408, "name": "DATx", "network": "eth", "shortcut": "DATX", @@ -7385,7 +7385,7 @@ "Github": "https://github.com/DAVFoundation", "Homepage": "https://dav.network/" }, - "marketcap_usd": 934513.9283264156, + "marketcap_usd": 934513, "name": "DAV Token", "network": "eth", "shortcut": "DAV", @@ -7412,7 +7412,7 @@ "links": { "Homepage": "https://www.daex.io" }, - "marketcap_usd": 1590908.6671961963, + "marketcap_usd": 1590908, "name": "DAEX", "network": "eth", "shortcut": "DAX", @@ -7467,7 +7467,7 @@ "Github": "https://github.com/chronologic", "Homepage": "https://chronologic.network" }, - "marketcap_usd": 115115.75786432411, + "marketcap_usd": 115115, "name": "ChronoLogic DAY", "network": "eth", "shortcut": "DAY", @@ -7494,7 +7494,7 @@ "links": { "Homepage": "https://www.decent.bet" }, - "marketcap_usd": 3838424.612847095, + "marketcap_usd": 3838424, "name": "DecentBet", "network": "eth", "shortcut": "DBET", @@ -7550,7 +7550,7 @@ "Github": "https://github.com/DistributedBanking/DCC", "Homepage": "http://dcc.finance" }, - "marketcap_usd": 3233938.761682423, + "marketcap_usd": 3233938, "name": "Distributed Credit Chain", "network": "eth", "shortcut": "DCC", @@ -7605,7 +7605,7 @@ "Github": "https://github.com/Dentacoin", "Homepage": "https://dentacoin.com" }, - "marketcap_usd": 22444222.401283763, + "marketcap_usd": 22444222, "name": "Dentacoin", "network": "eth", "shortcut": "DCN", @@ -7660,7 +7660,7 @@ "links": { "Homepage": "https://debitum.network/" }, - "marketcap_usd": 636367.9089379003, + "marketcap_usd": 636367, "name": "DEBITUM", "network": "eth", "shortcut": "DEB", @@ -7715,7 +7715,7 @@ "links": { "Homepage": "https://deltachain.tech" }, - "marketcap_usd": 14814.816196723395, + "marketcap_usd": 14814, "name": "DeltaChain", "network": "eth", "shortcut": "DELTA", @@ -7742,7 +7742,7 @@ "links": { "Homepage": "https://www.dentwireless.com" }, - "marketcap_usd": 31855376.82887633, + "marketcap_usd": 31855376, "name": "DENT", "network": "eth", "shortcut": "DENT", @@ -7769,7 +7769,7 @@ "links": { "Homepage": "https://www.dew.one" }, - "marketcap_usd": 6450318.7467823075, + "marketcap_usd": 6450318, "name": "DEW", "network": "eth", "shortcut": "DEW", @@ -7796,7 +7796,7 @@ "links": { "Homepage": "https://www.coinbit.co.kr/" }, - "marketcap_usd": 7396678.265497176, + "marketcap_usd": 7396678, "name": "DEX", "network": "eth", "shortcut": "DEX", @@ -7823,7 +7823,7 @@ "links": { "Homepage": "https://www.dgx.io" }, - "marketcap_usd": 31080758.8882, + "marketcap_usd": 31080758, "name": "Digix DAO", "network": "eth", "shortcut": "DGD", @@ -7879,7 +7879,7 @@ "Github": "https://github.com/dragonglasscom", "Homepage": "https://dragonglass.com/" }, - "marketcap_usd": 34199.284758589856, + "marketcap_usd": 34199, "name": "Dragonglass", "network": "eth", "shortcut": "DGS", @@ -7907,7 +7907,7 @@ "Github": "https://github.com/DigitexFutures", "Homepage": "https://digitexfutures.com/" }, - "marketcap_usd": 24660426.037677497, + "marketcap_usd": 24660426, "name": "DigitexFutures", "network": "eth", "shortcut": "DGTX", @@ -7935,7 +7935,7 @@ "Github": "https://github.com/DigixGlobal", "Homepage": "https://digix.global" }, - "marketcap_usd": 3796802.1150401053, + "marketcap_usd": 3796802, "name": "Digix Gold Token", "network": "eth", "shortcut": "DGX", @@ -7990,7 +7990,7 @@ "links": { "Homepage": "https://etheroll.com" }, - "marketcap_usd": 1630795.3321510488, + "marketcap_usd": 1630795, "name": "Etheroll", "network": "eth", "shortcut": "DICE", @@ -8017,7 +8017,7 @@ "links": { "Homepage": "https://inmediate.io" }, - "marketcap_usd": 181632.79066851293, + "marketcap_usd": 181632, "name": "Digital Insurance Token", "network": "eth", "shortcut": "DIT", @@ -8071,7 +8071,7 @@ "links": { "Homepage": "https://www.agrello.org" }, - "marketcap_usd": 9540744.565179393, + "marketcap_usd": 9540744, "name": "Agrello", "network": "eth", "shortcut": "DLT", @@ -8099,7 +8099,7 @@ "Github": "https://github.com/suntechsoft/dmarket-smartcontract", "Homepage": "https://dmarket.com" }, - "marketcap_usd": 10334708.237814771, + "marketcap_usd": 10334708, "name": "DMarket Token", "network": "eth", "shortcut": "DMT", @@ -8126,7 +8126,7 @@ "links": { "Homepage": "https://www.encrypgen.com" }, - "marketcap_usd": 2820585.8131941226, + "marketcap_usd": 2820585, "name": "EncrypGen", "network": "eth", "shortcut": "DNA", @@ -8154,7 +8154,7 @@ "Github": "https://github.com/district0x", "Homepage": "https://district0x.io" }, - "marketcap_usd": 6276055.94436, + "marketcap_usd": 6276055, "name": "District0x Network Token", "network": "eth", "shortcut": "DNT", @@ -8209,7 +8209,7 @@ "links": { "Homepage": "https://dock.io" }, - "marketcap_usd": 3607936.948100271, + "marketcap_usd": 3607936, "name": "Dock", "network": "eth", "shortcut": "DOCK", @@ -8236,7 +8236,7 @@ "links": { "Homepage": "https://www.dorado.tech" }, - "marketcap_usd": 74530.16062263204, + "marketcap_usd": 74530, "name": "Dorado", "network": "eth", "shortcut": "DOR", @@ -8263,7 +8263,7 @@ "links": { "Homepage": "https://dovu.io" }, - "marketcap_usd": 1414272.2462644312, + "marketcap_usd": 1414272, "name": "Dovu", "network": "eth", "shortcut": "DOV", @@ -8345,7 +8345,7 @@ "Github": "https://github.com/dragonchain/dragonchain", "Homepage": "https://dragonchain.com" }, - "marketcap_usd": 16941222.761417296, + "marketcap_usd": 16941222, "name": "Dragon", "network": "eth", "shortcut": "DRGN", @@ -8372,7 +8372,7 @@ "links": { "Homepage": "https://www.dcorp.it" }, - "marketcap_usd": 220175.06752871978, + "marketcap_usd": 220175, "name": "DCORP Utility", "network": "eth", "shortcut": "DRPU", @@ -8399,7 +8399,7 @@ "links": { "Homepage": "https://token.domraider.com" }, - "marketcap_usd": 1051281.90848044, + "marketcap_usd": 1051281, "name": "DomRaider", "network": "eth", "shortcut": "DRT", @@ -8538,7 +8538,7 @@ "Github": "https://github.com/dethertech", "Homepage": "https://dether.io" }, - "marketcap_usd": 579774.63415905, + "marketcap_usd": 579774, "name": "dether", "network": "eth", "shortcut": "DTH", @@ -8565,7 +8565,7 @@ "links": { "Homepage": "https://www.tokens.net" }, - "marketcap_usd": 12450274.183034208, + "marketcap_usd": 12450274, "name": "DTR", "network": "eth", "shortcut": "DTR", @@ -8592,7 +8592,7 @@ "links": { "Homepage": "https://datarius.io" }, - "marketcap_usd": 65299.17397006626, + "marketcap_usd": 65299, "name": "Datarius Credit", "network": "eth", "shortcut": "DTRC", @@ -8647,7 +8647,7 @@ "links": { "Homepage": "https://datawallet.com" }, - "marketcap_usd": 811710.384343415, + "marketcap_usd": 811710, "name": "Datawallet", "network": "eth", "shortcut": "DXT", @@ -8729,7 +8729,7 @@ "links": { "Homepage": "https://earth-token.com" }, - "marketcap_usd": 42769.107434929036, + "marketcap_usd": 42769, "name": "Earth Token", "network": "eth", "shortcut": "EARTH", @@ -8756,7 +8756,7 @@ "links": { "Homepage": "https://ebcoin.io" }, - "marketcap_usd": 2155363.258075087, + "marketcap_usd": 2155363, "name": "EBCoin", "network": "eth", "shortcut": "EBC", @@ -8837,7 +8837,7 @@ "links": { "Homepage": "https://omnitude.tech" }, - "marketcap_usd": 3980939.7294354667, + "marketcap_usd": 3980939, "name": "Omnitude", "network": "eth", "shortcut": "ECOM", @@ -8891,7 +8891,7 @@ "links": { "Homepage": "https://edgeless.io" }, - "marketcap_usd": 14946802.964308614, + "marketcap_usd": 14946802, "name": "Edgeless", "network": "eth", "shortcut": "EDG", @@ -8918,7 +8918,7 @@ "links": { "Homepage": "https://eidoo.io" }, - "marketcap_usd": 19094369.02521375, + "marketcap_usd": 19094369, "name": "Eidoo", "network": "eth", "shortcut": "EDO", @@ -8946,7 +8946,7 @@ "Github": "https://github.com/EndorCoin", "Homepage": "https://www.endor.com" }, - "marketcap_usd": 20273898.775331568, + "marketcap_usd": 20273898, "name": "Endor Protocol Token", "network": "eth", "shortcut": "EDR", @@ -8974,7 +8974,7 @@ "Github": "https://github.com/egretia", "Homepage": "https://www.egretia.io" }, - "marketcap_usd": 1150596.7436378906, + "marketcap_usd": 1150596, "name": "Egretia Token", "network": "eth", "shortcut": "EGT", @@ -9029,7 +9029,7 @@ "links": { "Homepage": "https://echolink.info" }, - "marketcap_usd": 1200731.4954274925, + "marketcap_usd": 1200731, "name": "EchoLink", "network": "eth", "shortcut": "EKO", @@ -9056,7 +9056,7 @@ "links": { "Homepage": "http://ekt8.io" }, - "marketcap_usd": 3451419.7829505, + "marketcap_usd": 3451419, "name": "EDUCare", "network": "eth", "shortcut": "EKT", @@ -9083,7 +9083,7 @@ "links": { "Homepage": "https://electrify.asia" }, - "marketcap_usd": 1506337.7672980702, + "marketcap_usd": 1506337, "name": "Electrify.Asia", "network": "eth", "shortcut": "ELEC", @@ -9111,7 +9111,7 @@ "Github": "https://github.com/aelfProject", "Homepage": "https://aelf.io/" }, - "marketcap_usd": 27564479.863984, + "marketcap_usd": 27564479, "name": "ELF Token", "network": "eth", "shortcut": "ELF", @@ -9138,7 +9138,7 @@ "links": { "Homepage": "https://elixirtoken.io" }, - "marketcap_usd": 299549.9024516517, + "marketcap_usd": 299549, "name": "Elixir Token", "network": "eth", "shortcut": "ELIX", @@ -9166,7 +9166,7 @@ "Github": "https://github.com/eltcoin", "Homepage": "http://www.eltcoin.tech/" }, - "marketcap_usd": 47322.92563713, + "marketcap_usd": 47322, "name": "ELTCOIN", "network": "eth", "shortcut": "ELTCOIN", @@ -9194,7 +9194,7 @@ "Github": "https://github.com/Elysian-ELY", "Homepage": "https://elycoin.io" }, - "marketcap_usd": 161888.16126236046, + "marketcap_usd": 161888, "name": "ELYCOIN", "network": "eth", "shortcut": "ELY", @@ -9360,7 +9360,7 @@ "Github": "https://github.com/enigmampc", "Homepage": "https://enigma.co/" }, - "marketcap_usd": 19521592.7306533, + "marketcap_usd": 19521592, "name": "Enigma", "network": "eth", "shortcut": "ENG", @@ -9387,7 +9387,7 @@ "links": { "Homepage": "https://engagementtoken.com" }, - "marketcap_usd": 60338.490281806255, + "marketcap_usd": 60338, "name": "Engagement Token", "network": "eth", "shortcut": "ENGT", @@ -9415,7 +9415,7 @@ "Github": "https://github.com/enjin/contracts", "Homepage": "https://enjincoin.io" }, - "marketcap_usd": 21145351.554662187, + "marketcap_usd": 21145351, "name": "ENJIN", "network": "eth", "shortcut": "ENJ", @@ -9498,7 +9498,7 @@ "links": { "Homepage": "https://emphy.io" }, - "marketcap_usd": 90727.96065924762, + "marketcap_usd": 90727, "name": "Emphy", "network": "eth", "shortcut": "EPY", @@ -9525,7 +9525,7 @@ "links": { "Homepage": "http://www.equaltoken.io" }, - "marketcap_usd": 327548.59613907675, + "marketcap_usd": 327548, "name": "Equal", "network": "eth", "shortcut": "EQL", @@ -9552,7 +9552,7 @@ "links": { "Homepage": "https://eroscoin.org" }, - "marketcap_usd": 708648.1751829007, + "marketcap_usd": 708648, "name": "Eroscoin", "network": "eth", "shortcut": "ERO", @@ -9580,7 +9580,7 @@ "Github": "https://github.com/Krishtopa/ContractEristica", "Homepage": "https://eristica.com/" }, - "marketcap_usd": 430244.3323421533, + "marketcap_usd": 430244, "name": "Eristica", "network": "eth", "shortcut": "ERT", @@ -9608,7 +9608,7 @@ "Github": "https://github.com/EtherSportz/ESZCoin", "Homepage": "https://ethersportz.com" }, - "marketcap_usd": 127985.46967809553, + "marketcap_usd": 127985, "name": "ESZCoin", "network": "eth", "shortcut": "ESZ", @@ -9635,7 +9635,7 @@ "links": { "Homepage": "https://www.ethbits.com" }, - "marketcap_usd": 301083.66553227307, + "marketcap_usd": 301083, "name": "Ethbits", "network": "eth", "shortcut": "ETBS", @@ -9689,7 +9689,7 @@ "links": { "Homepage": "https://www.etgproject.org" }, - "marketcap_usd": 40699.02804096, + "marketcap_usd": 40699, "name": "Ethereum Gold", "network": "eth", "shortcut": "ETG", @@ -9743,7 +9743,7 @@ "links": { "Homepage": "https://energitoken.com" }, - "marketcap_usd": 983555.0067028479, + "marketcap_usd": 983555, "name": "EnergiToken", "network": "eth", "shortcut": "ETK", @@ -9798,7 +9798,7 @@ "links": { "Homepage": "https://stasis.net" }, - "marketcap_usd": 34888024.06418034, + "marketcap_usd": 34888024, "name": "STASIS EURS", "network": "eth", "shortcut": "EURS", @@ -9852,7 +9852,7 @@ "links": { "Homepage": "https://eventchain.io" }, - "marketcap_usd": 424670.6283636352, + "marketcap_usd": 424670, "name": "EventChain", "network": "eth", "shortcut": "EVC", @@ -9880,7 +9880,7 @@ "Github": "https://github.com/devery", "Homepage": "https://devery.io" }, - "marketcap_usd": 445506.9910476732, + "marketcap_usd": 445506, "name": "EVE", "network": "eth", "shortcut": "EVE", @@ -9907,7 +9907,7 @@ "links": { "Homepage": "https://everex.io " }, - "marketcap_usd": 5324364.41596023, + "marketcap_usd": 5324364, "name": "EVX Token", "network": "eth", "shortcut": "EVX", @@ -9963,7 +9963,7 @@ "Github": "https://github.com/eXMRcoin/", "Homepage": "https://exmr.io/" }, - "marketcap_usd": 142723.48146162374, + "marketcap_usd": 142723, "name": "eXMRcoin", "network": "eth", "shortcut": "EXMR", @@ -9990,7 +9990,7 @@ "links": { "Homepage": "https://exrnchain.com" }, - "marketcap_usd": 1436442.3278104998, + "marketcap_usd": 1436442, "name": "EXRNchain", "network": "eth", "shortcut": "EXRN", @@ -10017,7 +10017,7 @@ "links": { "Homepage": "https://experty.io/en" }, - "marketcap_usd": 748496.2957125612, + "marketcap_usd": 748496, "name": "Experty", "network": "eth", "shortcut": "EXY", @@ -10044,7 +10044,7 @@ "links": { "Homepage": "https://ico.ezpos.io" }, - "marketcap_usd": 61971.2459821221, + "marketcap_usd": 61971, "name": "EZToken", "network": "eth", "shortcut": "EZT", @@ -10126,7 +10126,7 @@ "links": { "Homepage": "https://tokensale.faceter.io" }, - "marketcap_usd": 590238.4362108753, + "marketcap_usd": 590238, "name": "Faceter", "network": "eth", "shortcut": "FACE", @@ -10208,7 +10208,7 @@ "links": { "Homepage": "https://friendz.io" }, - "marketcap_usd": 1823769.1958733432, + "marketcap_usd": 1823769, "name": "Friendz", "network": "eth", "shortcut": "FDZ", @@ -10263,7 +10263,7 @@ "links": { "Homepage": "http://www.fidelium.io" }, - "marketcap_usd": 264002.41693745996, + "marketcap_usd": 264002, "name": "Fidelium", "network": "eth", "shortcut": "FID", @@ -10319,7 +10319,7 @@ "Github": "https://github.com/FortKnoxster", "Homepage": "https://fortknoxster.com" }, - "marketcap_usd": 222138.09855874497, + "marketcap_usd": 222138, "name": "Knoxstertoken", "network": "eth", "shortcut": "FKX", @@ -10346,7 +10346,7 @@ "links": { "Homepage": "http://flixxo.com" }, - "marketcap_usd": 1052537.2338193122, + "marketcap_usd": 1052537, "name": "FLIXX", "network": "eth", "shortcut": "FLIXX", @@ -10373,7 +10373,7 @@ "links": { "Homepage": "https://firelotto.io" }, - "marketcap_usd": 834145.5884506268, + "marketcap_usd": 834145, "name": "Fire Lotto", "network": "eth", "shortcut": "FLOT", @@ -10401,7 +10401,7 @@ "Github": "https://github.com/gameflip", "Homepage": "https://gameflip.com" }, - "marketcap_usd": 849411.7845503815, + "marketcap_usd": 849411, "name": "FLIP Token", "network": "eth", "shortcut": "FLP", @@ -10455,7 +10455,7 @@ "links": { "Homepage": "https://ico.fluzfluz.com" }, - "marketcap_usd": 3524060.476518228, + "marketcap_usd": 3524060, "name": "Fluz Fluz Global", "network": "eth", "shortcut": "FLUZ", @@ -10510,7 +10510,7 @@ "Github": "https://github.com/FormosaFinancial", "Homepage": "https://www.formosa.financial/" }, - "marketcap_usd": 553348.762226238, + "marketcap_usd": 553348, "name": "Formosa Financial Token", "network": "eth", "shortcut": "FMF", @@ -10538,7 +10538,7 @@ "Github": "https://github.com/FundRequest", "Homepage": "https://fundrequest.io" }, - "marketcap_usd": 142879.25406690908, + "marketcap_usd": 142879, "name": "FundRequest", "network": "eth", "shortcut": "FND", @@ -10565,7 +10565,7 @@ "links": { "Homepage": "https://www.foglink.io" }, - "marketcap_usd": 1458490.8869997722, + "marketcap_usd": 1458490, "name": "FNKOS", "network": "eth", "shortcut": "FNKOS", @@ -10592,7 +10592,7 @@ "links": { "Homepage": "https://fintab.io/ico" }, - "marketcap_usd": 6066.869379669122, + "marketcap_usd": 6066, "name": "Fintab", "network": "eth", "shortcut": "FNTB", @@ -10619,7 +10619,7 @@ "links": { "Homepage": "https://www.foodcoin.io" }, - "marketcap_usd": 773854.0371785497, + "marketcap_usd": 773854, "name": "FoodCoin", "network": "eth", "shortcut": "FOOD", @@ -10646,7 +10646,7 @@ "links": { "Homepage": "https://www.fota.io" }, - "marketcap_usd": 3514022.058687674, + "marketcap_usd": 3514022, "name": "Fortuna", "network": "eth", "shortcut": "FOTA", @@ -10700,7 +10700,7 @@ "links": { "Homepage": "http://www.freyrchain.org" }, - "marketcap_usd": 292185.077576, + "marketcap_usd": 292185, "name": "Freyrchain", "network": "eth", "shortcut": "FREC", @@ -10727,7 +10727,7 @@ "links": { "Homepage": "https://fusion.org" }, - "marketcap_usd": 8923260.453373097, + "marketcap_usd": 8923260, "name": "Fusion", "network": "eth", "shortcut": "FSN", @@ -10754,7 +10754,7 @@ "links": { "Homepage": "https://fabrictoken.io" }, - "marketcap_usd": 79769.69369004668, + "marketcap_usd": 79769, "name": "Fabric Token", "network": "eth", "shortcut": "FT", @@ -10781,7 +10781,7 @@ "links": { "Homepage": "https://fanstime.org" }, - "marketcap_usd": 1464424.32413295, + "marketcap_usd": 1464424, "name": "FansTime", "network": "eth", "shortcut": "FTI", @@ -10836,7 +10836,7 @@ "Github": "https://github.com/farmatrust", "Homepage": "https://www.farmatrust.io" }, - "marketcap_usd": 1751126.81586, + "marketcap_usd": 1751126, "name": "FarmaTrust Token", "network": "eth", "shortcut": "FTT", @@ -10863,7 +10863,7 @@ "links": { "Homepage": "https://www.fintrux.com" }, - "marketcap_usd": 1259441.3467764999, + "marketcap_usd": 1259441, "name": "FintruX Network", "network": "eth", "shortcut": "FTX", @@ -10891,7 +10891,7 @@ "Github": "https://github.com/futuraxproject", "Homepage": "https://futurax.global" }, - "marketcap_usd": 89418.2063797853, + "marketcap_usd": 89418, "name": "FUTURAX", "network": "eth", "shortcut": "FTXT", @@ -10919,7 +10919,7 @@ "Github": "https://github.com/etherparty", "Homepage": "https://etherparty.io" }, - "marketcap_usd": 3928253.67247894, + "marketcap_usd": 3928253, "name": "Etherparty FUEL", "network": "eth", "shortcut": "FUEL", @@ -10946,7 +10946,7 @@ "links": { "Homepage": "https://funfair.io" }, - "marketcap_usd": 21571805.827022515, + "marketcap_usd": 21571805, "name": "Funfair", "network": "eth", "shortcut": "FUN", @@ -11001,7 +11001,7 @@ "links": { "Homepage": "https://fuzex.co" }, - "marketcap_usd": 2102314.177313833, + "marketcap_usd": 2102314, "name": "FuzeX", "network": "eth", "shortcut": "FXT", @@ -11055,7 +11055,7 @@ "links": { "Homepage": "https://flyp.me" }, - "marketcap_usd": 243839.015301415, + "marketcap_usd": 243839, "name": "FlypMe", "network": "eth", "shortcut": "FYP", @@ -11111,7 +11111,7 @@ "Github": "https://github.com/BlockchainLabsNZ/gambit", "Homepage": "http://gambitcrypto.com" }, - "marketcap_usd": 1369964.6612315404, + "marketcap_usd": 1369964, "name": "Gambit", "network": "eth", "shortcut": "GAM", @@ -11138,7 +11138,7 @@ "links": { "Homepage": "https://www.gatcoin.io" }, - "marketcap_usd": 833185.1813366282, + "marketcap_usd": 833185, "name": "Global Awards Token", "network": "eth", "shortcut": "GAT", @@ -11330,7 +11330,7 @@ "links": { "Homepage": "https://gems.org" }, - "marketcap_usd": 1176616.3551722215, + "marketcap_usd": 1176616, "name": "Gems", "network": "eth", "shortcut": "GEM", @@ -11358,7 +11358,7 @@ "Github": "https://github.com/daostack", "Homepage": "https://daostack.io" }, - "marketcap_usd": 3996888.3895106674, + "marketcap_usd": 3996888, "name": "DAOstack", "network": "eth", "shortcut": "GEN", @@ -11385,7 +11385,7 @@ "links": { "Homepage": "https://parkgene.io" }, - "marketcap_usd": 333050.34909678577, + "marketcap_usd": 333050, "name": "Parkgene", "network": "eth", "shortcut": "GENE", @@ -11413,7 +11413,7 @@ "Github": "https://github.com/Getprotocol", "Homepage": "http://www.get-protocol.io" }, - "marketcap_usd": 2502634.6470488724, + "marketcap_usd": 2502634, "name": "GET", "network": "eth", "shortcut": "GET", @@ -11495,7 +11495,7 @@ "links": { "Homepage": "https://gladius.io" }, - "marketcap_usd": 778954.9331684116, + "marketcap_usd": 778954, "name": "Gladius", "network": "eth", "shortcut": "GLA", @@ -11549,7 +11549,7 @@ "links": { "Homepage": "https://gnosis.pm" }, - "marketcap_usd": 12955844.747752007, + "marketcap_usd": 12955844, "name": "Gnosis", "network": "eth", "shortcut": "GNO", @@ -11576,7 +11576,7 @@ "links": { "Homepage": "https://golem.network" }, - "marketcap_usd": 54334824.11710737, + "marketcap_usd": 54334824, "name": "Golem", "network": "eth", "shortcut": "GNT", @@ -11603,7 +11603,7 @@ "links": { "Homepage": "https://genaro.network" }, - "marketcap_usd": 3746717.587822055, + "marketcap_usd": 3746717, "name": "Genaro Network", "network": "eth", "shortcut": "GNX", @@ -11686,7 +11686,7 @@ "links": { "Homepage": "https://gonetwork.co/index.html" }, - "marketcap_usd": 603020.9480312243, + "marketcap_usd": 603020, "name": "GoNetwork", "network": "eth", "shortcut": "GOT", @@ -11713,7 +11713,7 @@ "links": { "Homepage": "https://gridplus.io/token-sale" }, - "marketcap_usd": 3425057.657732727, + "marketcap_usd": 3425057, "name": "GRID", "network": "eth", "shortcut": "GRID", @@ -11740,7 +11740,7 @@ "links": { "Homepage": "https://www.greenmed.io" }, - "marketcap_usd": 56934.72050719716, + "marketcap_usd": 56934, "name": "GreenMed", "network": "eth", "shortcut": "GRMD", @@ -11823,7 +11823,7 @@ "links": { "Homepage": "https://www.gsc.social" }, - "marketcap_usd": 1628545.9236365324, + "marketcap_usd": 1628545, "name": "Global Social Chain", "network": "eth", "shortcut": "GSC", @@ -11878,7 +11878,7 @@ "Github": "https://github.com/GameLeLe", "Homepage": "https://game.com" }, - "marketcap_usd": 10584401.432999784, + "marketcap_usd": 10584401, "name": "GTC Token", "network": "eth", "shortcut": "GTC", @@ -11934,7 +11934,7 @@ "Github": "https://github.com/GIFTO-io", "Homepage": "https://gifto.io/" }, - "marketcap_usd": 12535222.464424279, + "marketcap_usd": 12535222, "name": "Gifto", "network": "eth", "shortcut": "GTO", @@ -11961,7 +11961,7 @@ "links": { "Homepage": "https://peerguess.com" }, - "marketcap_usd": 18824.685813253185, + "marketcap_usd": 18824, "name": "Peerguess", "network": "eth", "shortcut": "GUESS", @@ -12016,7 +12016,7 @@ "links": { "Homepage": "https://matchpool.co" }, - "marketcap_usd": 1235975.6060025, + "marketcap_usd": 1235975, "name": "Matchpool", "network": "eth", "shortcut": "GUP", @@ -12044,7 +12044,7 @@ "Github": "https://github.com/GenesisVision", "Homepage": "https://genesis.vision" }, - "marketcap_usd": 15130370.520677315, + "marketcap_usd": 15130370, "name": "Genesis Vision", "network": "eth", "shortcut": "GVT", @@ -12209,7 +12209,7 @@ "links": { "Homepage": "https://www.showhand.io" }, - "marketcap_usd": 111901.15807910309, + "marketcap_usd": 111901, "name": "ShowHand", "network": "eth", "shortcut": "HAND", @@ -12290,7 +12290,7 @@ "links": { "Homepage": "https://heartbout.com" }, - "marketcap_usd": 310364.91419261205, + "marketcap_usd": 310364, "name": "HeartBout", "network": "eth", "shortcut": "HB", @@ -12317,7 +12317,7 @@ "links": { "Homepage": "https://www.hubii.network" }, - "marketcap_usd": 1957932.253682411, + "marketcap_usd": 1957932, "name": "Hubii Network", "network": "eth", "shortcut": "HBT", @@ -12344,7 +12344,7 @@ "links": { "Homepage": "https://www.hbzcoin.com/#" }, - "marketcap_usd": 366394.8448885944, + "marketcap_usd": 366394, "name": "HBZ coin", "network": "eth", "shortcut": "HBZ", @@ -12398,7 +12398,7 @@ "links": { "Homepage": "https://heronode.io" }, - "marketcap_usd": 382528.6933201237, + "marketcap_usd": 382528, "name": "HeroNode", "network": "eth", "shortcut": "HER", @@ -12426,7 +12426,7 @@ "Github": "https://github.com/myHelloGold/Foundation", "Homepage": "https://www.hellogold.org" }, - "marketcap_usd": 450769.79276849993, + "marketcap_usd": 450769, "name": "HGT", "network": "eth", "shortcut": "HGT", @@ -12535,7 +12535,7 @@ "links": { "Homepage": "https://hacken.io" }, - "marketcap_usd": 1068277.400407102, + "marketcap_usd": 1068277, "name": "Hacken", "network": "eth", "shortcut": "HKN", @@ -12617,7 +12617,7 @@ "links": { "Homepage": "https://humaniq.co" }, - "marketcap_usd": 1369339.139588483, + "marketcap_usd": 1369339, "name": "HMQ", "network": "eth", "shortcut": "HMQ", @@ -12672,7 +12672,7 @@ "Github": "https://github.com/ethorse", "Homepage": "https://ethorse.com" }, - "marketcap_usd": 371344.78017416364, + "marketcap_usd": 371344, "name": "HORSE", "network": "eth", "shortcut": "HORSE", @@ -12700,7 +12700,7 @@ "Github": "https://github.com/Holo-Host", "Homepage": "https://holo.host/" }, - "marketcap_usd": 173061191.74925312, + "marketcap_usd": 173061191, "name": "Holo Token", "network": "eth", "shortcut": "HOT (Holo)", @@ -12727,7 +12727,7 @@ "links": { "Homepage": "https://thehydrofoundation.com/" }, - "marketcap_usd": 1783360.92582648, + "marketcap_usd": 1783360, "name": "Hydro Protocol", "network": "eth", "shortcut": "HOT (Hydro)", @@ -12754,7 +12754,7 @@ "links": { "Homepage": "https://horizonstate.com" }, - "marketcap_usd": 1414552.4060039124, + "marketcap_usd": 1414552, "name": "HST", "network": "eth", "shortcut": "HST", @@ -12781,7 +12781,7 @@ "links": { "Homepage": "https://www.hbg.com" }, - "marketcap_usd": 46680814.67906183, + "marketcap_usd": 46680814, "name": "Huobi Token", "network": "eth", "shortcut": "HT", @@ -12809,7 +12809,7 @@ "Github": "https://github.com/HiveProjectLTD", "Homepage": "https://www.hiveterminal.com" }, - "marketcap_usd": 1165482.5284496143, + "marketcap_usd": 1165482, "name": "Hiveterminal Token", "network": "eth", "shortcut": "HVN", @@ -12837,7 +12837,7 @@ "Github": "https://github.com/hydrogen-dev", "Homepage": "https://www.hydrogenplatform.com/hydro" }, - "marketcap_usd": 6165616.853775192, + "marketcap_usd": 6165616, "name": "Hydro", "network": "eth", "shortcut": "HYDRO", @@ -12919,7 +12919,7 @@ "links": { "Homepage": "https://www.iconomi.net" }, - "marketcap_usd": 8658746.915638594, + "marketcap_usd": 8658746, "name": "ICONOMI", "network": "eth", "shortcut": "ICN", @@ -13054,7 +13054,7 @@ "links": { "Homepage": "https://indahash.com" }, - "marketcap_usd": 985654.65731452, + "marketcap_usd": 985654, "name": "indaHash", "network": "eth", "shortcut": "IDH", @@ -13081,7 +13081,7 @@ "links": { "Homepage": "http://iethereum.trade" }, - "marketcap_usd": 630138.7487229588, + "marketcap_usd": 630138, "name": "iEthereum", "network": "eth", "shortcut": "IETH", @@ -13108,7 +13108,7 @@ "links": { "Homepage": "https://investfeed.com" }, - "marketcap_usd": 311296.3127728498, + "marketcap_usd": 311296, "name": "InvestFeed", "network": "eth", "shortcut": "IFT", @@ -13135,7 +13135,7 @@ "links": { "Homepage": "http://igtoken.net" }, - "marketcap_usd": 40735.57406210995, + "marketcap_usd": 40735, "name": "IGToken", "network": "eth", "shortcut": "IG", @@ -13162,7 +13162,7 @@ "links": { "Homepage": "https://ihtcoin.com" }, - "marketcap_usd": 6452211.56033957, + "marketcap_usd": 6452211, "name": "I HOUSE TOKEN", "network": "eth", "shortcut": "IHT", @@ -13271,7 +13271,7 @@ "links": { "Homepage": "https://indorse.io" }, - "marketcap_usd": 398631.98342640564, + "marketcap_usd": 398631, "name": "Indorse", "network": "eth", "shortcut": "IND", @@ -13298,7 +13298,7 @@ "links": { "Homepage": "https://iungo.network" }, - "marketcap_usd": 177014.19487399998, + "marketcap_usd": 177014, "name": "Iungo", "network": "eth", "shortcut": "ING", @@ -13325,7 +13325,7 @@ "links": { "Homepage": "https://ins.world" }, - "marketcap_usd": 8730100.0756775, + "marketcap_usd": 8730100, "name": "INS", "network": "eth", "shortcut": "INS", @@ -13352,7 +13352,7 @@ "links": { "Homepage": "https://insights.network" }, - "marketcap_usd": 1035483.0993694412, + "marketcap_usd": 1035483, "name": "Insights Network", "network": "eth", "shortcut": "INSTAR", @@ -13379,7 +13379,7 @@ "links": { "Homepage": "https://intchain.io" }, - "marketcap_usd": 4552395.815827534, + "marketcap_usd": 4552395, "name": "Internet Node Token", "network": "eth", "shortcut": "INT", @@ -13406,7 +13406,7 @@ "links": { "Homepage": "https://www.invacio.com" }, - "marketcap_usd": 1230654.5943559888, + "marketcap_usd": 1230654, "name": "Invacio", "network": "eth", "shortcut": "INV", @@ -13434,7 +13434,7 @@ "Github": "https://github.com/Internxt/", "Homepage": "https://internxt.com/" }, - "marketcap_usd": 547245.9652493921, + "marketcap_usd": 547245, "name": "Internxt", "network": "eth", "shortcut": "INXT", @@ -13461,7 +13461,7 @@ "links": { "Homepage": "https://iost.io/" }, - "marketcap_usd": 72804789.40542851, + "marketcap_usd": 72804789, "name": "IOSToken", "network": "eth", "shortcut": "IOST", @@ -13489,7 +13489,7 @@ "Github": "https://github.com/iotexproject/iotex-core", "Homepage": "http://iotex.io/" }, - "marketcap_usd": 17078792.766846806, + "marketcap_usd": 17078792, "name": "IoTeX Network", "network": "eth", "shortcut": "IOTX", @@ -13517,7 +13517,7 @@ "Github": "https://github.com/InsurePal", "Homepage": "https://insurepal.io/" }, - "marketcap_usd": 897193.7822278499, + "marketcap_usd": 897193, "name": "InsurePal token", "network": "eth", "shortcut": "IPL", @@ -13544,7 +13544,7 @@ "links": { "Homepage": "https://ip.sx" }, - "marketcap_usd": 563792.837275282, + "marketcap_usd": 563792, "name": "IPSX", "network": "eth", "shortcut": "IPSX", @@ -13572,7 +13572,7 @@ "Github": "https://github.com/iqeon", "Homepage": "https://iqeon.io/" }, - "marketcap_usd": 634614.6664803243, + "marketcap_usd": 634614, "name": "IQeon", "network": "eth", "shortcut": "IQN", @@ -13628,7 +13628,7 @@ "Github": "https://github.com/IoTChainCode", "Homepage": "https://iotchain.io/" }, - "marketcap_usd": 6809090.211150714, + "marketcap_usd": 6809090, "name": "IoT Chain", "network": "eth", "shortcut": "ITC", @@ -13656,7 +13656,7 @@ "Github": "https://github.com/IntelligentTrading", "Homepage": "http://intelligenttrading.org" }, - "marketcap_usd": 104614.50476370726, + "marketcap_usd": 104614, "name": "ITT Token", "network": "eth", "shortcut": "ITT", @@ -13683,7 +13683,7 @@ "links": { "Homepage": "https://www.ivykoin.com" }, - "marketcap_usd": 2537047.525192771, + "marketcap_usd": 2537047, "name": "IvyKoin Public Network Tokens", "network": "eth", "shortcut": "IVY", @@ -13710,7 +13710,7 @@ "links": { "Homepage": "https://www.insurex.co" }, - "marketcap_usd": 1282137.7439754591, + "marketcap_usd": 1282137, "name": "InsureX", "network": "eth", "shortcut": "IXT", @@ -13765,7 +13765,7 @@ "Github": "https://github.com/jet8", "Homepage": "https://jet8.io" }, - "marketcap_usd": 461688.01741140924, + "marketcap_usd": 461688, "name": "J8T Token", "network": "eth", "shortcut": "J8T", @@ -13792,7 +13792,7 @@ "links": { "Homepage": "https://jesuscoin.network" }, - "marketcap_usd": 73726.71192662609, + "marketcap_usd": 73726, "name": "Jesus Coin", "network": "eth", "shortcut": "JC", @@ -13819,7 +13819,7 @@ "links": { "Homepage": "https://jetcoin.io" }, - "marketcap_usd": 164580.4289335173, + "marketcap_usd": 164580, "name": "JET", "network": "eth", "shortcut": "JET", @@ -13847,7 +13847,7 @@ "Github": "https://github.com/jibrelnetwork", "Homepage": "https://jibrel.network" }, - "marketcap_usd": 5532992.162325281, + "marketcap_usd": 5532992, "name": "JNT", "network": "eth", "shortcut": "JNT", @@ -13874,7 +13874,7 @@ "links": { "Homepage": "https://jury.online" }, - "marketcap_usd": 59391.883295741885, + "marketcap_usd": 59391, "name": "Jury.Online Token", "network": "eth", "shortcut": "JOT", @@ -13928,7 +13928,7 @@ "links": { "Homepage": "http://www.kan.land" }, - "marketcap_usd": 4217103.205016183, + "marketcap_usd": 4217103, "name": "BitKan", "network": "eth", "shortcut": "KAN", @@ -13983,7 +13983,7 @@ "Github": "https://github.com/kickico", "Homepage": "https://www.kickico.com" }, - "marketcap_usd": 2963841.7019184497, + "marketcap_usd": 2963841, "name": "KICK", "network": "eth", "shortcut": "KICK", @@ -14011,7 +14011,7 @@ "Github": "https://github.com/kikinteractive/kin-token", "Homepage": "https://kin.kik.com" }, - "marketcap_usd": 20029135.737566434, + "marketcap_usd": 20029135, "name": "Kin Foundation", "network": "eth", "shortcut": "KIN", @@ -14038,7 +14038,7 @@ "links": { "Homepage": "https://kindads.io" }, - "marketcap_usd": 673059.5108085156, + "marketcap_usd": 673059, "name": "Kind Ads Token", "network": "eth", "shortcut": "KIND", @@ -14066,7 +14066,7 @@ "Github": "https://github.com/KyberNetwork", "Homepage": "https://kyber.network" }, - "marketcap_usd": 18269440.732441016, + "marketcap_usd": 18269440, "name": "Kyber Network", "network": "eth", "shortcut": "KNC", @@ -14093,7 +14093,7 @@ "links": { "Homepage": "https://kanadecoin.com" }, - "marketcap_usd": 88489.49038136305, + "marketcap_usd": 88489, "name": "KanadeCoin", "network": "eth", "shortcut": "KNDC", @@ -14120,7 +14120,7 @@ "links": { "Homepage": "https://kora.network" }, - "marketcap_usd": 216858.9624723, + "marketcap_usd": 216858, "name": "Kora Network Token", "network": "eth", "shortcut": "KNT", @@ -14176,7 +14176,7 @@ "Github": "https://github.com/Cryptense/", "Homepage": "https://kryll.io/" }, - "marketcap_usd": 473589.05703729787, + "marketcap_usd": 473589, "name": "Kryll", "network": "eth", "shortcut": "KRL", @@ -14230,7 +14230,7 @@ "links": { "Homepage": "https://4new.io" }, - "marketcap_usd": 103523.70728662336, + "marketcap_usd": 103523, "name": "4NEW", "network": "eth", "shortcut": "KWATT", @@ -14285,7 +14285,7 @@ "Github": "https://github.com/latoken", "Homepage": "https://latoken.com/" }, - "marketcap_usd": 6040350.978454925, + "marketcap_usd": 6040350, "name": "LATOKEN", "network": "eth", "shortcut": "LA", @@ -14312,7 +14312,7 @@ "links": { "Homepage": "https://lalaworld.io/" }, - "marketcap_usd": 209134.18995898572, + "marketcap_usd": 209134, "name": "LALA World Token", "network": "eth", "shortcut": "LALA", @@ -14339,7 +14339,7 @@ "links": { "Homepage": "https://latium.org" }, - "marketcap_usd": 1051893.2344236625, + "marketcap_usd": 1051893, "name": "LatiumX", "network": "eth", "shortcut": "LATX", @@ -14366,7 +14366,7 @@ "links": { "Homepage": "https://www.mycred.io" }, - "marketcap_usd": 4181871.3432163135, + "marketcap_usd": 4181871, "name": "Cred", "network": "eth", "shortcut": "LBA", @@ -14393,7 +14393,7 @@ "links": { "Homepage": "https://www.localcoinswap.com" }, - "marketcap_usd": 1161828.256897553, + "marketcap_usd": 1161828, "name": "LocalCoinSwap", "network": "eth", "shortcut": "LCS", @@ -14420,7 +14420,7 @@ "links": { "Homepage": "https://www.leadcoin.network/" }, - "marketcap_usd": 115645.94678485894, + "marketcap_usd": 115645, "name": "LEADCOIN", "network": "eth", "shortcut": "LDC", @@ -14448,7 +14448,7 @@ "Github": "https://github.com/ETHLend", "Homepage": "https://ethlend.io/" }, - "marketcap_usd": 8056638.072769597, + "marketcap_usd": 8056638, "name": "EHTLend", "network": "eth", "shortcut": "LEND", @@ -14475,7 +14475,7 @@ "links": { "Homepage": "https://www.leverj.io" }, - "marketcap_usd": 1275009.143533616, + "marketcap_usd": 1275009, "name": "Leverj", "network": "eth", "shortcut": "LEV", @@ -14556,7 +14556,7 @@ "links": { "Homepage": "https://legolas.exchange/" }, - "marketcap_usd": 4402831.158268302, + "marketcap_usd": 4402831, "name": "LGO", "network": "eth", "shortcut": "LGO", @@ -14638,7 +14638,7 @@ "Github": "https://github.com/windingtree", "Homepage": "https://windingtree.com/" }, - "marketcap_usd": 2772510.9103156617, + "marketcap_usd": 2772510, "name": "LIF", "network": "eth", "shortcut": "LIF", @@ -14665,7 +14665,7 @@ "links": { "Homepage": "http://www.lifelabs.io" }, - "marketcap_usd": 914038.0693476206, + "marketcap_usd": 914038, "name": "LIFE", "network": "eth", "shortcut": "LIFE", @@ -14693,7 +14693,7 @@ "Github": "https://github.com/likecoin", "Homepage": "https://like.co" }, - "marketcap_usd": 774896.81342193, + "marketcap_usd": 774896, "name": "LikeCoin", "network": "eth", "shortcut": "LIKE", @@ -14720,7 +14720,7 @@ "links": { "Homepage": "https://link.smartcontract.com" }, - "marketcap_usd": 138809272.89565, + "marketcap_usd": 138809272, "name": "Chainlink", "network": "eth", "shortcut": "LINK (Chainlink)", @@ -14774,7 +14774,7 @@ "links": { "Homepage": "https://www.linkey.info" }, - "marketcap_usd": 39063630.20505, + "marketcap_usd": 39063630, "name": "Linkey", "network": "eth", "shortcut": "LKY", @@ -14802,7 +14802,7 @@ "Github": "https://github.com/GNYIO", "Homepage": "https://www.gny.io/" }, - "marketcap_usd": 10507084.062048, + "marketcap_usd": 10507084, "name": "LML", "network": "eth", "shortcut": "LML", @@ -14830,7 +14830,7 @@ "Github": "https://github.com/lendingblock", "Homepage": "https://lendingblock.com" }, - "marketcap_usd": 2764752.5724721756, + "marketcap_usd": 2764752, "name": "Lendingblock", "network": "eth", "shortcut": "LND", @@ -14857,7 +14857,7 @@ "links": { "Homepage": "https://LockChain.co" }, - "marketcap_usd": 14152222.392254235, + "marketcap_usd": 14152222, "name": "LockChain", "network": "eth", "shortcut": "LOC", @@ -14885,7 +14885,7 @@ "Github": "http://github.com/locipro/loci-coin-sale", "Homepage": "https://locipro.com" }, - "marketcap_usd": 213532.10109130424, + "marketcap_usd": 213532, "name": "LOCIcoin", "network": "eth", "shortcut": "LOCI", @@ -14994,7 +14994,7 @@ "Github": "github.com/loomnetwork/", "Homepage": "https://loomx.io" }, - "marketcap_usd": 26122666.018161274, + "marketcap_usd": 26122666, "name": "LOOM", "network": "eth", "shortcut": "LOOM", @@ -15049,7 +15049,7 @@ "links": { "Homepage": "https://loopring.org" }, - "marketcap_usd": 43241397.77957, + "marketcap_usd": 43241397, "name": "LRC", "network": "eth", "shortcut": "LRC", @@ -15077,7 +15077,7 @@ "Github": "https://github.com/Play2Live/blockchain", "Homepage": "https://play2live.io" }, - "marketcap_usd": 135510.40863941403, + "marketcap_usd": 135510, "name": "LUCToken", "network": "eth", "shortcut": "LUC", @@ -15159,7 +15159,7 @@ "Github": "https://github.com/lunyr", "Homepage": "https://lunyr.com" }, - "marketcap_usd": 3730501.7105859597, + "marketcap_usd": 3730501, "name": "Lunyr", "network": "eth", "shortcut": "LUN", @@ -15186,7 +15186,7 @@ "links": { "Homepage": "https://lympo.io" }, - "marketcap_usd": 4599817.205894216, + "marketcap_usd": 4599817, "name": "Lympo", "network": "eth", "shortcut": "LYM", @@ -15296,7 +15296,7 @@ "Github": "https://github.com/MatrixAINetwork", "Homepage": "https://www.matrix.io" }, - "marketcap_usd": 10086397.818735, + "marketcap_usd": 10086397, "name": "MAN", "network": "eth", "shortcut": "MAN", @@ -15324,7 +15324,7 @@ "Github": "https://github.com/decentraland", "Homepage": "https://decentraland.org" }, - "marketcap_usd": 35393616.303868696, + "marketcap_usd": 35393616, "name": "Decentraland MANA", "network": "eth", "shortcut": "MANA", @@ -15379,7 +15379,7 @@ "Github": "https://github.com/theembermine", "Homepage": "https://embermine.com/" }, - "marketcap_usd": 36918.354711550004, + "marketcap_usd": 36918, "name": "Embers", "network": "eth", "shortcut": "MBRS", @@ -15406,7 +15406,7 @@ "links": { "Homepage": "https://bitcoingrowthfund.com/mcap" }, - "marketcap_usd": 50250.124077760396, + "marketcap_usd": 50250, "name": "MCAP", "network": "eth", "shortcut": "MCAP", @@ -15434,7 +15434,7 @@ "Github": "https://github.com/musiconomi/", "Homepage": "https://musiconomi.com/" }, - "marketcap_usd": 37823.37184971599, + "marketcap_usd": 37823, "name": "Musiconomi", "network": "eth", "shortcut": "MCI", @@ -15461,7 +15461,7 @@ "links": { "Homepage": "https://mona.co" }, - "marketcap_usd": 31215940.899176612, + "marketcap_usd": 31215940, "name": "MCO", "network": "eth", "shortcut": "MCO", @@ -15488,7 +15488,7 @@ "links": { "Homepage": "https://moeda.in" }, - "marketcap_usd": 14154045.504548501, + "marketcap_usd": 14154045, "name": "MDA", "network": "eth", "shortcut": "MDA", @@ -15515,7 +15515,7 @@ "links": { "Homepage": "http://www.medishares.org" }, - "marketcap_usd": 7066169.834097559, + "marketcap_usd": 7066169, "name": "MediShares", "network": "eth", "shortcut": "MDS", @@ -15542,7 +15542,7 @@ "links": { "Homepage": "https://www.mdt.co" }, - "marketcap_usd": 1582848.033404688, + "marketcap_usd": 1582848, "name": "Measurable Data Token", "network": "eth", "shortcut": "MDT", @@ -15569,7 +15569,7 @@ "links": { "Homepage": "https://medibloc.org" }, - "marketcap_usd": 9259514.529259738, + "marketcap_usd": 9259514, "name": "MediBloc [ERC20]", "network": "eth", "shortcut": "MEDX", @@ -15624,7 +15624,7 @@ "links": { "Homepage": "https://www.metronome.io" }, - "marketcap_usd": 5811930.797491133, + "marketcap_usd": 5811930, "name": "Metronome", "network": "eth", "shortcut": "MET", @@ -15651,7 +15651,7 @@ "links": { "Homepage": "https://metamorph.pro" }, - "marketcap_usd": 297973.032300822, + "marketcap_usd": 297973, "name": "MetaMorph", "network": "eth", "shortcut": "METM", @@ -15679,7 +15679,7 @@ "Github": "https://github.com/syncfab", "Homepage": "https://syncfab.com/" }, - "marketcap_usd": 235855.59331496942, + "marketcap_usd": 235855, "name": "SyncFab Smart Manufacturing Blockchain", "network": "eth", "shortcut": "MFG", @@ -15707,7 +15707,7 @@ "Github": "https://github.com/MainframeHQ", "Homepage": "https://mainframe.com" }, - "marketcap_usd": 17625821.664529067, + "marketcap_usd": 17625821, "name": "Mainframe Token", "network": "eth", "shortcut": "MFT", @@ -15734,7 +15734,7 @@ "links": { "Homepage": "https://mftu.net" }, - "marketcap_usd": 17821.817632276, + "marketcap_usd": 17821, "name": "Mainstream For The Underground", "network": "eth", "shortcut": "MFTU", @@ -15761,7 +15761,7 @@ "links": { "Homepage": "https://mobilego.io" }, - "marketcap_usd": 22096838.97096693, + "marketcap_usd": 22096838, "name": "MobileGo", "network": "eth", "shortcut": "MGO", @@ -15788,7 +15788,7 @@ "links": { "Homepage": "https://mindexcoin.com" }, - "marketcap_usd": 674331.8311950575, + "marketcap_usd": 674331, "name": "Mindexcoin", "network": "eth", "shortcut": "MIC", @@ -15815,7 +15815,7 @@ "links": { "Homepage": "https://token.morpheuslabs.io" }, - "marketcap_usd": 1383750.9436519546, + "marketcap_usd": 1383750, "name": "Morpheus Infrastructure Token", "network": "eth", "shortcut": "MITX", @@ -15843,7 +15843,7 @@ "Github": "https://github.com/makerdao", "Homepage": "https://makerdao.com" }, - "marketcap_usd": 295708643.24730027, + "marketcap_usd": 295708643, "name": "MakerDAO", "network": "eth", "shortcut": "MKR", @@ -15925,7 +15925,7 @@ "links": { "Homepage": "https://minereum.com" }, - "marketcap_usd": 28558.474596446948, + "marketcap_usd": 28558, "name": "MNE", "network": "eth", "shortcut": "MNE", @@ -16008,7 +16008,7 @@ "links": { "Homepage": "https://moss.land" }, - "marketcap_usd": 7807891.964279149, + "marketcap_usd": 7807891, "name": "Moss Coin", "network": "eth", "shortcut": "MOC", @@ -16036,7 +16036,7 @@ "Github": "https://github.com/modum-io", "Homepage": "https://modum.io" }, - "marketcap_usd": 6060679.531556751, + "marketcap_usd": 6060679, "name": "Modum", "network": "eth", "shortcut": "MOD", @@ -16063,7 +16063,7 @@ "links": { "Homepage": "https://olympuslabs.io" }, - "marketcap_usd": 1654762.1549843785, + "marketcap_usd": 1654762, "name": "Olympus Labs", "network": "eth", "shortcut": "MOT", @@ -16090,7 +16090,7 @@ "links": { "Homepage": "https://mark.space" }, - "marketcap_usd": 2972208.3227560124, + "marketcap_usd": 2972208, "name": "MARK.SPACE", "network": "eth", "shortcut": "MRK", @@ -16199,7 +16199,7 @@ "links": { "Homepage": "https://mothership.cx" }, - "marketcap_usd": 752946.319755, + "marketcap_usd": 752946, "name": "Mothership", "network": "eth", "shortcut": "MSP", @@ -16226,7 +16226,7 @@ "links": { "Homepage": "http://www.monetha.io" }, - "marketcap_usd": 4717695.493335855, + "marketcap_usd": 4717695, "name": "Monetha", "network": "eth", "shortcut": "MTH", @@ -16253,7 +16253,7 @@ "links": { "Homepage": "https://www.metalpay.com" }, - "marketcap_usd": 10607469.701707141, + "marketcap_usd": 10607469, "name": "Metal", "network": "eth", "shortcut": "MTL", @@ -16280,7 +16280,7 @@ "links": { "Homepage": "https://medicalchain.com" }, - "marketcap_usd": 1218710.8770300818, + "marketcap_usd": 1218710, "name": "MedToken", "network": "eth", "shortcut": "MTN", @@ -16334,7 +16334,7 @@ "links": { "Homepage": "https://modultrade.io" }, - "marketcap_usd": 139213.71990150496, + "marketcap_usd": 139213, "name": "MTRCToken", "network": "eth", "shortcut": "MTRc", @@ -16361,7 +16361,7 @@ "links": { "Homepage": "https://www.matryx.ai" }, - "marketcap_usd": 337725.5776423626, + "marketcap_usd": 337725, "name": "MTX", "network": "eth", "shortcut": "MTX", @@ -16415,7 +16415,7 @@ "links": { "Homepage": "http://mvlchain.io" }, - "marketcap_usd": 1468508.4610582497, + "marketcap_usd": 1468508, "name": "Mass Vehicle Ledger Token", "network": "eth", "shortcut": "MVL", @@ -16443,7 +16443,7 @@ "Github": "https://github.com/Merculet", "Homepage": "https://www.merculet.io" }, - "marketcap_usd": 528643.4643249221, + "marketcap_usd": 528643, "name": "Merculet", "network": "eth", "shortcut": "MVP", @@ -16470,7 +16470,7 @@ "links": { "Homepage": "https://www.restartenergy.io" }, - "marketcap_usd": 7005660.475244125, + "marketcap_usd": 7005660, "name": "RED MWAT", "network": "eth", "shortcut": "MWAT", @@ -16497,7 +16497,7 @@ "links": { "Homepage": "https://mysterium.network" }, - "marketcap_usd": 1523664.9750150698, + "marketcap_usd": 1523664, "name": "Mysterium", "network": "eth", "shortcut": "MYST", @@ -16552,7 +16552,7 @@ "Github": "https://github.com/NANJ-COIN", "Homepage": "https://nanjcoin.com/" }, - "marketcap_usd": 3001498.1854613633, + "marketcap_usd": 3001498, "name": "NANJCOIN", "network": "eth", "shortcut": "NANJ", @@ -16580,7 +16580,7 @@ "Github": "https://github.com/naviworld", "Homepage": "https://naviaddress.com" }, - "marketcap_usd": 251195.90791517746, + "marketcap_usd": 251195, "name": "NaviToken", "network": "eth", "shortcut": "NAVI", @@ -16608,7 +16608,7 @@ "Github": "https://github.com/nebulaai", "Homepage": "https://tokensale.nebula-ai.network" }, - "marketcap_usd": 1090139.1381073168, + "marketcap_usd": 1090139, "name": "NebulaAiToken", "network": "eth", "shortcut": "NBAI", @@ -16635,7 +16635,7 @@ "links": { "Homepage": "https://niobiumcoin.io" }, - "marketcap_usd": 652814.5148882471, + "marketcap_usd": 652814, "name": "Niobium Coin", "network": "eth", "shortcut": "NBC", @@ -16662,7 +16662,7 @@ "links": { "Homepage": "https://nucleus.vision" }, - "marketcap_usd": 10048565.40301621, + "marketcap_usd": 10048565, "name": "Nucleus Vision", "network": "eth", "shortcut": "NCASH", @@ -16690,7 +16690,7 @@ "Github": "https://github.com/polyswarm", "Homepage": "https://polyswarm.io" }, - "marketcap_usd": 2856602.849379442, + "marketcap_usd": 2856602, "name": "Nectar", "network": "eth", "shortcut": "NCT", @@ -16717,7 +16717,7 @@ "links": { "Homepage": "https://neverdie.com" }, - "marketcap_usd": 150528.94679899464, + "marketcap_usd": 150528, "name": "Neverdie", "network": "eth", "shortcut": "NDC", @@ -16745,7 +16745,7 @@ "Github": "https://github.com/ndexnetwork/NDX", "Homepage": "https://ndexnetwork.com" }, - "marketcap_usd": 91697.0882000592, + "marketcap_usd": 91697, "name": "nDEX", "network": "eth", "shortcut": "NDX", @@ -16773,7 +16773,7 @@ "Github": "https://github.com/ethfinex/", "Homepage": "https://nectar.community" }, - "marketcap_usd": 14064873.621576004, + "marketcap_usd": 14064873, "name": "Ethfinex Nectar Token", "network": "eth", "shortcut": "NEC", @@ -16855,7 +16855,7 @@ "Github": "https://github.com/neufund", "Homepage": "https://neufund.org" }, - "marketcap_usd": 8755009.04712989, + "marketcap_usd": 8755009, "name": "NEU Fund", "network": "eth", "shortcut": "NEU", @@ -16882,7 +16882,7 @@ "links": { "Homepage": "http://nexo.io" }, - "marketcap_usd": 31294886.37011297, + "marketcap_usd": 31294886, "name": "Nexo", "network": "eth", "shortcut": "NEXO", @@ -16909,7 +16909,7 @@ "links": { "Homepage": "https://www.nagaico.com" }, - "marketcap_usd": 2650526.545789325, + "marketcap_usd": 2650526, "name": "NAGA Coin", "network": "eth", "shortcut": "NGC", @@ -16964,7 +16964,7 @@ "links": { "Homepage": "https://auton.io" }, - "marketcap_usd": 714628.1074708569, + "marketcap_usd": 714628, "name": "Autonio", "network": "eth", "shortcut": "NIO", @@ -16992,7 +16992,7 @@ "Github": "https://github.com/numerai", "Homepage": "https://numer.ai/homepage" }, - "marketcap_usd": 4565979.449883198, + "marketcap_usd": 4565979, "name": "NMR", "network": "eth", "shortcut": "NMR", @@ -17019,7 +17019,7 @@ "links": { "Homepage": "https://noahcoin.org" }, - "marketcap_usd": 6010809.536823563, + "marketcap_usd": 6010809, "name": "Noah Coin", "network": "eth", "shortcut": "NOAH", @@ -17046,7 +17046,7 @@ "links": { "Homepage": "https://nobscrypto.com" }, - "marketcap_usd": 176484.5842169797, + "marketcap_usd": 176484, "name": "No BS Crypto", "network": "eth", "shortcut": "NOBS", @@ -17074,7 +17074,7 @@ "Github": "https://github.com/nitrotoken/nitro-crowdsale", "Homepage": "https://nitro.live" }, - "marketcap_usd": 46342.53622761556, + "marketcap_usd": 46342, "name": "NOX", "network": "eth", "shortcut": "NOX", @@ -17102,7 +17102,7 @@ "Github": "https://github.com/NperProject", "Homepage": "https://nper.io" }, - "marketcap_usd": 414283.3834728235, + "marketcap_usd": 414283, "name": "NPER", "network": "eth", "shortcut": "NPER", @@ -17129,7 +17129,7 @@ "links": { "Homepage": "https://napoleonx.ai" }, - "marketcap_usd": 4324056.354677183, + "marketcap_usd": 4324056, "name": "NaPoleonX", "network": "eth", "shortcut": "NPX", @@ -17157,7 +17157,7 @@ "Github": "https://github.com/pundix", "Homepage": "https://pundix.com" }, - "marketcap_usd": 116943874.78459245, + "marketcap_usd": 116943874, "name": "Pundi X Token", "network": "eth", "shortcut": "NPXS", @@ -17184,7 +17184,7 @@ "links": { "Homepage": "https://fujinto.io" }, - "marketcap_usd": 1699.7251132176991, + "marketcap_usd": 1699, "name": "Fujinto", "network": "eth", "shortcut": "NTO", @@ -17292,7 +17292,7 @@ "links": { "Homepage": "https://beyond-the-void.net" }, - "marketcap_usd": 342898.67413780274, + "marketcap_usd": 342898, "name": "Nexium", "network": "eth", "shortcut": "NxC", @@ -17346,7 +17346,7 @@ "links": { "Homepage": "https://www.openanx.org/en" }, - "marketcap_usd": 2997473.2580078407, + "marketcap_usd": 2997473, "name": "OAX", "network": "eth", "shortcut": "OAX", @@ -17401,7 +17401,7 @@ "links": { "Homepage": "http://www.ocnex.net" }, - "marketcap_usd": 13239098.569315942, + "marketcap_usd": 13239098, "name": "Odyssey", "network": "eth", "shortcut": "OCN", @@ -17429,7 +17429,7 @@ "Github": "https://github.com/odemio", "Homepage": "https://odem.io/" }, - "marketcap_usd": 47028579.65206613, + "marketcap_usd": 47028579, "name": "ODEM Token", "network": "eth", "shortcut": "ODE", @@ -17512,7 +17512,7 @@ "links": { "Homepage": "http://www.olivecoin.co" }, - "marketcap_usd": 310284.6184532296, + "marketcap_usd": 310284, "name": "Olive", "network": "eth", "shortcut": "OLE", @@ -17540,7 +17540,7 @@ "Github": "https://github.com/Oneledger", "Homepage": "https://oneledger.io" }, - "marketcap_usd": 947965.8952545587, + "marketcap_usd": 947965, "name": "OneLedger Token", "network": "eth", "shortcut": "OLT", @@ -17568,7 +17568,7 @@ "Github": "https://github.com/omisego", "Homepage": "https://omg.omise.co" }, - "marketcap_usd": 153439353.99770877, + "marketcap_usd": 153439353, "name": "OmiseGO", "network": "eth", "shortcut": "OMG", @@ -17623,7 +17623,7 @@ "links": { "Homepage": "https://shivom.io" }, - "marketcap_usd": 624805.4066482248, + "marketcap_usd": 624805, "name": "Shivom", "network": "eth", "shortcut": "OMX", @@ -17651,7 +17651,7 @@ "Github": "https://github.com/MenloOne/", "Homepage": "https://www.menlo.one" }, - "marketcap_usd": 228478.3028364383, + "marketcap_usd": 228478, "name": "Menlo One", "network": "eth", "shortcut": "ONE", @@ -17705,7 +17705,7 @@ "links": { "Homepage": "https://on.live" }, - "marketcap_usd": 1041198.1094474809, + "marketcap_usd": 1041198, "name": "On.Live", "network": "eth", "shortcut": "ONL", @@ -17732,7 +17732,7 @@ "links": { "Homepage": "https://opus-foundation.org" }, - "marketcap_usd": 969582.0046883348, + "marketcap_usd": 969582, "name": "Opus Foundation", "network": "eth", "shortcut": "OPT", @@ -17759,7 +17759,7 @@ "links": { "Homepage": "https://optitoken.io" }, - "marketcap_usd": 629735.3469709583, + "marketcap_usd": 629735, "name": "OptiToken", "network": "eth", "shortcut": "OPTI", @@ -17842,7 +17842,7 @@ "links": { "Homepage": "https://ori.network" }, - "marketcap_usd": 41801.39420097134, + "marketcap_usd": 41801, "name": "Origami", "network": "eth", "shortcut": "ORI", @@ -17869,7 +17869,7 @@ "links": { "Homepage": "https://ormeuscoin.com" }, - "marketcap_usd": 1735946.4492024437, + "marketcap_usd": 1735946, "name": "Ormeus Coin", "network": "eth", "shortcut": "ORME", @@ -17896,7 +17896,7 @@ "links": { "Homepage": "https://www.originsport.io" }, - "marketcap_usd": 195886.87390642238, + "marketcap_usd": 195886, "name": "Origin Sport", "network": "eth", "shortcut": "ORS", @@ -17924,7 +17924,7 @@ "Github": "https://github.com/OpenSTFoundation", "Homepage": "https://simpletoken.org" }, - "marketcap_usd": 9416430.417761868, + "marketcap_usd": 9416430, "name": "Simple Token 'OST'", "network": "eth", "shortcut": "OST", @@ -17951,7 +17951,7 @@ "links": { "Homepage": "https://otn.org" }, - "marketcap_usd": 70064.95691821576, + "marketcap_usd": 70064, "name": "Open Trading Network", "network": "eth", "shortcut": "OTN", @@ -17979,7 +17979,7 @@ "Github": "https://github.com/owndata", "Homepage": "https://owndata.network" }, - "marketcap_usd": 824301.0617196668, + "marketcap_usd": 824301, "name": "OWNDATA", "network": "eth", "shortcut": "OWN", @@ -18034,7 +18034,7 @@ "links": { "Homepage": "https://www.pchain.org" }, - "marketcap_usd": 4277463.804057349, + "marketcap_usd": 4277463, "name": "PCHAIN", "network": "eth", "shortcut": "PAI", @@ -18062,7 +18062,7 @@ "Github": "https://github.com/policypalnet", "Homepage": "https://www.policypal.network" }, - "marketcap_usd": 2235813.6109488867, + "marketcap_usd": 2235813, "name": "PolicyPal Network", "network": "eth", "shortcut": "PAL", @@ -18090,7 +18090,7 @@ "Github": "https://github.com/ParetoNetwork", "Homepage": "https://pareto.network" }, - "marketcap_usd": 357959.0474347371, + "marketcap_usd": 357959, "name": "PARETO", "network": "eth", "shortcut": "PARETO", @@ -18117,7 +18117,7 @@ "links": { "Homepage": "https://patron-influencers.com" }, - "marketcap_usd": 1085303.732619526, + "marketcap_usd": 1085303, "name": "Patron", "network": "eth", "shortcut": "PAT", @@ -18200,7 +18200,7 @@ "Github": "https://github.com/paxosglobal", "Homepage": "https://www.paxos.com/standard" }, - "marketcap_usd": 122990112.18377115, + "marketcap_usd": 122990112, "name": "Paxos Standard (PAX)", "network": "eth", "shortcut": "PAX", @@ -18227,7 +18227,7 @@ "links": { "Homepage": "http://www.tenx.tech" }, - "marketcap_usd": 27551611.421412956, + "marketcap_usd": 27551611, "name": "TenX", "network": "eth", "shortcut": "PAY", @@ -18309,7 +18309,7 @@ "Github": "https://github.com/PeculiumPCL/Peculium", "Homepage": "https://peculium.io" }, - "marketcap_usd": 2538878.2656619675, + "marketcap_usd": 2538878, "name": "Peculium", "network": "eth", "shortcut": "PCL", @@ -18447,7 +18447,7 @@ "links": { "Homepage": "https://payfair.io" }, - "marketcap_usd": 381173.8567802593, + "marketcap_usd": 381173, "name": "Payfair", "network": "eth", "shortcut": "PFR", @@ -18474,7 +18474,7 @@ "links": { "Homepage": "https://www.phitoken.io" }, - "marketcap_usd": 468595.99830765085, + "marketcap_usd": 468595, "name": "PHI Token", "network": "eth", "shortcut": "PHI", @@ -18555,7 +18555,7 @@ "links": { "Homepage": "https://www.lampix.co" }, - "marketcap_usd": 561902.2984974828, + "marketcap_usd": 561902, "name": "Lampix", "network": "eth", "shortcut": "PIX", @@ -18582,7 +18582,7 @@ "links": { "Homepage": "http://pkgtoken.io" }, - "marketcap_usd": 63645.5671202678, + "marketcap_usd": 63645, "name": "PKG Token", "network": "eth", "shortcut": "PKG", @@ -18609,7 +18609,7 @@ "links": { "Homepage": "https://playkey.io" }, - "marketcap_usd": 351802.2172334798, + "marketcap_usd": 351802, "name": "Playkey", "network": "eth", "shortcut": "PKT", @@ -18663,7 +18663,7 @@ "links": { "Homepage": "https://polybius.io" }, - "marketcap_usd": 3607345.6294503585, + "marketcap_usd": 3607345, "name": "Polybius", "network": "eth", "shortcut": "PLBT", @@ -18691,7 +18691,7 @@ "Github": "https://github.com/twentythirty/PillarToken", "Homepage": "https://www.pillarproject.io" }, - "marketcap_usd": 8668812.225489786, + "marketcap_usd": 8668812, "name": "Pillar Project", "network": "eth", "shortcut": "PLR", @@ -18746,7 +18746,7 @@ "links": { "Homepage": "https://plutus.it" }, - "marketcap_usd": 425894.7980387008, + "marketcap_usd": 425894, "name": "Pluton", "network": "eth", "shortcut": "PLU", @@ -18773,7 +18773,7 @@ "links": { "Homepage": "https://pumapay.io" }, - "marketcap_usd": 11598807.948196672, + "marketcap_usd": 11598807, "name": "PumaPay", "network": "eth", "shortcut": "PMA", @@ -18800,7 +18800,7 @@ "links": { "Homepage": "https://paymon.org" }, - "marketcap_usd": 431943.17076677666, + "marketcap_usd": 431943, "name": "Paymon", "network": "eth", "shortcut": "PMNT", @@ -18828,7 +18828,7 @@ "Github": "https://github.com/kleros", "Homepage": "https://kleros.io" }, - "marketcap_usd": 1057074.3783200344, + "marketcap_usd": 1057074, "name": "Pinakion", "network": "eth", "shortcut": "PNK", @@ -18855,7 +18855,7 @@ "links": { "Homepage": "https://po.et" }, - "marketcap_usd": 11574220.164731447, + "marketcap_usd": 11574220, "name": "Po.et Tokens", "network": "eth", "shortcut": "POE", @@ -18909,7 +18909,7 @@ "links": { "Homepage": "https://clearpoll.com" }, - "marketcap_usd": 705731.8513183102, + "marketcap_usd": 705731, "name": "ClearPoll", "network": "eth", "shortcut": "POLL", @@ -18936,7 +18936,7 @@ "links": { "Homepage": "https://polymath.network" }, - "marketcap_usd": 25540862.839835323, + "marketcap_usd": 25540862, "name": "Polymath Network", "network": "eth", "shortcut": "POLY", @@ -19019,7 +19019,7 @@ "Github": "https://github.com/PoSToken", "Homepage": "https://postoken.org" }, - "marketcap_usd": 5936.053333699051, + "marketcap_usd": 5936, "name": "PoSToken", "network": "eth", "shortcut": "POS", @@ -19046,7 +19046,7 @@ "links": { "Homepage": "https://powerledger.io" }, - "marketcap_usd": 31246017.55950815, + "marketcap_usd": 31246017, "name": "PowerLedger", "network": "eth", "shortcut": "POWR", @@ -19073,7 +19073,7 @@ "links": { "Homepage": "https://www.paypie.com" }, - "marketcap_usd": 7991400.47175525, + "marketcap_usd": 7991400, "name": "PayPie", "network": "eth", "shortcut": "PPP", @@ -19100,7 +19100,7 @@ "links": { "Homepage": "https://populous.co" }, - "marketcap_usd": 62738173.45633133, + "marketcap_usd": 62738173, "name": "Populous", "network": "eth", "shortcut": "PPT", @@ -19127,7 +19127,7 @@ "links": { "Homepage": "https://presearch.io" }, - "marketcap_usd": 4345036.5395735, + "marketcap_usd": 4345036, "name": "Presearch", "network": "eth", "shortcut": "PRE", @@ -19155,7 +19155,7 @@ "Github": "https://github.com/paragon-coin/token", "Homepage": "https://paragoncoin.com" }, - "marketcap_usd": 6175051.796778297, + "marketcap_usd": 6175051, "name": "Paragon", "network": "eth", "shortcut": "PRG", @@ -19182,7 +19182,7 @@ "links": { "Homepage": "https://privatix.io" }, - "marketcap_usd": 910882.5100423446, + "marketcap_usd": 910882, "name": "Privatix", "network": "eth", "shortcut": "PRIX", @@ -19319,7 +19319,7 @@ "links": { "Homepage": "https://primas.io" }, - "marketcap_usd": 4008477.014729622, + "marketcap_usd": 4008477, "name": "Primas", "network": "eth", "shortcut": "PST", @@ -19374,7 +19374,7 @@ "links": { "Homepage": "https://patientory.com" }, - "marketcap_usd": 980919.782745, + "marketcap_usd": 980919, "name": "PTOY", "network": "eth", "shortcut": "PTOY", @@ -19401,7 +19401,7 @@ "links": { "Homepage": "https://www.proton.global" }, - "marketcap_usd": 250421.86338980525, + "marketcap_usd": 250421, "name": "Proton Token", "network": "eth", "shortcut": "PTT", @@ -19539,7 +19539,7 @@ "links": { "Homepage": "https://pylon-network.org" }, - "marketcap_usd": 316153.35276769754, + "marketcap_usd": 316153, "name": "Pylon Network", "network": "eth", "shortcut": "PYLNT", @@ -19566,7 +19566,7 @@ "links": { "Homepage": "https://liquid.plus" }, - "marketcap_usd": 22884950.749185003, + "marketcap_usd": 22884950, "name": "QASH", "network": "eth", "shortcut": "QASH", @@ -19648,7 +19648,7 @@ "links": { "Homepage": "https://quarkchain.io" }, - "marketcap_usd": 23375416.35710599, + "marketcap_usd": 23375416, "name": "QuarkChain", "network": "eth", "shortcut": "QKC", @@ -19676,7 +19676,7 @@ "Github": "https://github.com/quantnetwork", "Homepage": "https://www.quant.network/" }, - "marketcap_usd": 22478559.041123416, + "marketcap_usd": 22478559, "name": "Quant", "network": "eth", "shortcut": "QNT", @@ -19759,7 +19759,7 @@ "Github": "https://github.com/quantstamp", "Homepage": "https://quantstamp.com/" }, - "marketcap_usd": 8758537.326160954, + "marketcap_usd": 8758537, "name": "Quantstamp Token", "network": "eth", "shortcut": "QSP", @@ -19842,7 +19842,7 @@ "links": { "Homepage": "https://qunqun.io" }, - "marketcap_usd": 1934789.0625060417, + "marketcap_usd": 1934789, "name": "QunQun", "network": "eth", "shortcut": "QUN", @@ -19869,7 +19869,7 @@ "links": { "Homepage": "https://revain.org" }, - "marketcap_usd": 69793048.3308294, + "marketcap_usd": 69793048, "name": "Revain", "network": "eth", "shortcut": "R", @@ -19924,7 +19924,7 @@ "links": { "Homepage": "http://token.dprating.com" }, - "marketcap_usd": 644790.8716336725, + "marketcap_usd": 644790, "name": "DPRating", "network": "eth", "shortcut": "RATING", @@ -19952,7 +19952,7 @@ "Github": "https://github.com/rublixdev", "Homepage": "https://rublix.io/" }, - "marketcap_usd": 4241816.583243515, + "marketcap_usd": 4241816, "name": "Rublix", "network": "eth", "shortcut": "RBLX", @@ -19980,7 +19980,7 @@ "Github": "https://github.com/ripio/rcn-token", "Homepage": "https://ripiocredit.network" }, - "marketcap_usd": 5340433.616171048, + "marketcap_usd": 5340433, "name": "Ripio Credit Network", "network": "eth", "shortcut": "RCN", @@ -20008,7 +20008,7 @@ "Github": "https://github.com/raiden-network/raiden/", "Homepage": "https://raiden.network" }, - "marketcap_usd": 10341849.512080895, + "marketcap_usd": 10341849, "name": "Raiden Network", "network": "eth", "shortcut": "RDN", @@ -20062,7 +20062,7 @@ "links": { "Homepage": "https://www.real.markets" }, - "marketcap_usd": 938796.9382803963, + "marketcap_usd": 938796, "name": "Real Estate Asset Ledger", "network": "eth", "shortcut": "REAL", @@ -20089,7 +20089,7 @@ "links": { "Homepage": "https://www.rebellious.io" }, - "marketcap_usd": 773445.3948725174, + "marketcap_usd": 773445, "name": "Rebellious", "network": "eth", "shortcut": "REBL", @@ -20117,7 +20117,7 @@ "Github": "https://github.com/red", "Homepage": "https://ico.red-lang.org" }, - "marketcap_usd": 766824.0570367093, + "marketcap_usd": 766824, "name": "Red Community Token", "network": "eth", "shortcut": "RED", @@ -20172,7 +20172,7 @@ "links": { "Homepage": "https://reftoken.io" }, - "marketcap_usd": 400988.8887686271, + "marketcap_usd": 400988, "name": "RefToken", "network": "eth", "shortcut": "REF", @@ -20199,7 +20199,7 @@ "links": { "Homepage": "https://remme.io" }, - "marketcap_usd": 2647466.0262178243, + "marketcap_usd": 2647466, "name": "Remme", "network": "eth", "shortcut": "REM", @@ -20255,7 +20255,7 @@ "Github": "https://github.com/republicprotocol", "Homepage": "https://republicprotocol.com" }, - "marketcap_usd": 10615528.29549307, + "marketcap_usd": 10615528, "name": "Republic Token", "network": "eth", "shortcut": "REN", @@ -20282,7 +20282,7 @@ "links": { "Homepage": "https://augur.net" }, - "marketcap_usd": 151263146.1792, + "marketcap_usd": 151263146, "name": "Augur", "network": "eth", "shortcut": "REP", @@ -20309,7 +20309,7 @@ "links": { "Homepage": "https://request.network" }, - "marketcap_usd": 14146547.532696635, + "marketcap_usd": 14146547, "name": "Request Network", "network": "eth", "shortcut": "REQ", @@ -20337,7 +20337,7 @@ "Github": "https://github.com/rexmls/RexToken", "Homepage": "https://imbrex.io" }, - "marketcap_usd": 189113.06991579288, + "marketcap_usd": 189113, "name": "REX", "network": "eth", "shortcut": "REX", @@ -20364,7 +20364,7 @@ "links": { "Homepage": "https://refereum.com" }, - "marketcap_usd": 5643766.307485999, + "marketcap_usd": 5643766, "name": "Refereum", "network": "eth", "shortcut": "RFR", @@ -20391,7 +20391,7 @@ "links": { "Homepage": "https://www.rchain.coop" }, - "marketcap_usd": 10086385.346874574, + "marketcap_usd": 10086385, "name": "RChain", "network": "eth", "shortcut": "RHOC", @@ -20446,7 +20446,7 @@ "links": { "Homepage": "http://etheriya.com" }, - "marketcap_usd": 130093.19259471267, + "marketcap_usd": 130093, "name": "Etheriya", "network": "eth", "shortcut": "RIYA", @@ -20473,7 +20473,7 @@ "links": { "Homepage": "http://crowdsale.iex.ec" }, - "marketcap_usd": 19358594.27431683, + "marketcap_usd": 19358594, "name": "IEx.ec", "network": "eth", "shortcut": "RLC", @@ -20501,7 +20501,7 @@ "Github": "https://github.com/Smartroulette", "Homepage": "https://smartplay.tech" }, - "marketcap_usd": 49511.98327998259, + "marketcap_usd": 49511, "name": "RLT", "network": "eth", "shortcut": "RLT", @@ -20555,7 +20555,7 @@ "links": { "Homepage": "http://www.relex.io" }, - "marketcap_usd": 252365.132480246, + "marketcap_usd": 252365, "name": "Relex", "network": "eth", "shortcut": "RLX", @@ -20583,7 +20583,7 @@ "Github": "https://github.com/rightmesh", "Homepage": "https://www.rightmesh.io/" }, - "marketcap_usd": 1675346.448667343, + "marketcap_usd": 1675346, "name": "RightMesh Token", "network": "eth", "shortcut": "RMESH", @@ -20637,7 +20637,7 @@ "links": { "Homepage": "https://www.oneroot.io/en" }, - "marketcap_usd": 20182631.60003923, + "marketcap_usd": 20182631, "name": "OneRoot Network", "network": "eth", "shortcut": "RNT", @@ -20664,7 +20664,7 @@ "links": { "Homepage": "https://bitrent.io" }, - "marketcap_usd": 386582.28361933475, + "marketcap_usd": 386582, "name": "BitRent", "network": "eth", "shortcut": "RNTB", @@ -20719,7 +20719,7 @@ "links": { "Homepage": "https://icerockmining.io" }, - "marketcap_usd": 3069919.1846967465, + "marketcap_usd": 3069919, "name": "ICE ROCK MINING", "network": "eth", "shortcut": "ROCK2", @@ -20827,7 +20827,7 @@ "links": { "Homepage": "https://ab-chain.com" }, - "marketcap_usd": 308706.58590665704, + "marketcap_usd": 308706, "name": "AB-Chain RTB", "network": "eth", "shortcut": "RTB", @@ -20854,7 +20854,7 @@ "links": { "Homepage": "https://www.rotharium.io" }, - "marketcap_usd": 4224183.079579117, + "marketcap_usd": 4224183, "name": "Rotharium", "network": "eth", "shortcut": "RTH", @@ -20909,7 +20909,7 @@ "links": { "Homepage": "http://ruffchain.com" }, - "marketcap_usd": 8966750.416736564, + "marketcap_usd": 8966750, "name": "Ruff", "network": "eth", "shortcut": "RUFF", @@ -20991,7 +20991,7 @@ "links": { "Homepage": "https://rivetzintl.com" }, - "marketcap_usd": 1131434.8301450305, + "marketcap_usd": 1131434, "name": "Rivetz", "network": "eth", "shortcut": "RVT", @@ -21099,7 +21099,7 @@ "links": { "Homepage": "https://saltlending.com" }, - "marketcap_usd": 16628654.327731555, + "marketcap_usd": 16628654, "name": "Salt Lending Token", "network": "eth", "shortcut": "SALT", @@ -21126,7 +21126,7 @@ "links": { "Homepage": "https://santiment.net" }, - "marketcap_usd": 25281209.4081768, + "marketcap_usd": 25281209, "name": "Santiment", "network": "eth", "shortcut": "SAN", @@ -21180,7 +21180,7 @@ "links": { "Homepage": "https://ico.nexus.social" }, - "marketcap_usd": 347063.4464261077, + "marketcap_usd": 347063, "name": "SocialCoin", "network": "eth", "shortcut": "SCL", @@ -21207,7 +21207,7 @@ "links": { "Homepage": "https://www.scroll.network" }, - "marketcap_usd": 5916495.454967834, + "marketcap_usd": 5916495, "name": "SCRL", "network": "eth", "shortcut": "SCRL", @@ -21234,7 +21234,7 @@ "links": { "Homepage": "http://seele.pro" }, - "marketcap_usd": 1995853.9255169886, + "marketcap_usd": 1995853, "name": "Seele", "network": "eth", "shortcut": "SEELE", @@ -21261,7 +21261,7 @@ "links": { "Homepage": "https://www.sentinel-chain.org" }, - "marketcap_usd": 802280.9249926882, + "marketcap_usd": 802280, "name": "Sentinel Chain", "network": "eth", "shortcut": "SENC", @@ -21288,7 +21288,7 @@ "links": { "Homepage": "https://sensay.it" }, - "marketcap_usd": 628600.3950814914, + "marketcap_usd": 628600, "name": "Sensay", "network": "eth", "shortcut": "SENSE", @@ -21315,7 +21315,7 @@ "links": { "Homepage": "https://sentinel.co" }, - "marketcap_usd": 2014870.9026914558, + "marketcap_usd": 2014870, "name": "SENTinel", "network": "eth", "shortcut": "SENT", @@ -21424,7 +21424,7 @@ "links": { "Homepage": "https://signals.network" }, - "marketcap_usd": 3007848.219061052, + "marketcap_usd": 3007848, "name": "Signals Network", "network": "eth", "shortcut": "SGN", @@ -21451,7 +21451,7 @@ "links": { "Homepage": "http://sugarexchange.io" }, - "marketcap_usd": 129523.89140688989, + "marketcap_usd": 129523, "name": "Sugar Exchange", "network": "eth", "shortcut": "SGR", @@ -21478,7 +21478,7 @@ "links": { "Homepage": "https://www.shipchain.io" }, - "marketcap_usd": 1129330.3258180718, + "marketcap_usd": 1129330, "name": "ShipChain", "network": "eth", "shortcut": "SHIP", @@ -21532,7 +21532,7 @@ "links": { "Homepage": "https://sharpe.capital" }, - "marketcap_usd": 677113.5347218404, + "marketcap_usd": 677113, "name": "Sharpe Platform Token", "network": "eth", "shortcut": "SHP", @@ -21587,7 +21587,7 @@ "Github": "https://github.com/SpectivOfficial", "Homepage": "https://spectivvr.com" }, - "marketcap_usd": 267484.78434519353, + "marketcap_usd": 267484, "name": "Signal", "network": "eth", "shortcut": "SIG", @@ -21614,7 +21614,7 @@ "links": { "Homepage": "https://www.skb-coin.jp/en" }, - "marketcap_usd": 3306612.818340511, + "marketcap_usd": 3306612, "name": "Sakura Bloom", "network": "eth", "shortcut": "SKB", @@ -21669,7 +21669,7 @@ "Github": "https://github.com/Steamtradenet/smart-contract", "Homepage": "https://skincoin.org" }, - "marketcap_usd": 469892.06272373564, + "marketcap_usd": 469892, "name": "SKIN", "network": "eth", "shortcut": "SKIN", @@ -21696,7 +21696,7 @@ "links": { "Homepage": "https://skrumble.network" }, - "marketcap_usd": 2286657.8883176283, + "marketcap_usd": 2286657, "name": "Skrumble Network", "network": "eth", "shortcut": "SKM", @@ -21860,7 +21860,7 @@ "links": { "Homepage": "https://smscoin.jp/en" }, - "marketcap_usd": 69319.95041989215, + "marketcap_usd": 69319, "name": "Speed Mining Service", "network": "eth", "shortcut": "SMS", @@ -21887,7 +21887,7 @@ "links": { "Homepage": "https://suncontract.org" }, - "marketcap_usd": 1637236.971764509, + "marketcap_usd": 1637236, "name": "SunContract", "network": "eth", "shortcut": "SNC", @@ -21969,7 +21969,7 @@ "links": { "Homepage": "https://singulardtv.com" }, - "marketcap_usd": 6831301.52412, + "marketcap_usd": 6831301, "name": "SingularDTV", "network": "eth", "shortcut": "SNGLS", @@ -22024,7 +22024,7 @@ "Github": "https://github.com/sonm-io", "Homepage": "https://sonm.com" }, - "marketcap_usd": 6508351.263536801, + "marketcap_usd": 6508351, "name": "SNM", "network": "eth", "shortcut": "SNM", @@ -22051,7 +22051,7 @@ "links": { "Homepage": "https://tokensale.snov.io" }, - "marketcap_usd": 935867.3682524911, + "marketcap_usd": 935867, "name": "SNOV", "network": "eth", "shortcut": "SNOV", @@ -22078,7 +22078,7 @@ "links": { "Homepage": "https://status.im" }, - "marketcap_usd": 63360106.218848586, + "marketcap_usd": 63360106, "name": "Status Network Token", "network": "eth", "shortcut": "SNT", @@ -22105,7 +22105,7 @@ "links": { "Homepage": "https://silentnotary.com" }, - "marketcap_usd": 778334.3655575688, + "marketcap_usd": 778334, "name": "Silent Notary", "network": "eth", "shortcut": "SNTR", @@ -22133,7 +22133,7 @@ "Github": "https://github.com/havven/havven", "Homepage": "https://synthetix.io" }, - "marketcap_usd": 2868217.615212391, + "marketcap_usd": 2868217, "name": "Synthetix Network Token", "network": "eth", "shortcut": "SNX", @@ -22160,7 +22160,7 @@ "links": { "Homepage": "http://soarlabs.org" }, - "marketcap_usd": 1645059.3958474377, + "marketcap_usd": 1645059, "name": "Soarcoin", "network": "eth", "shortcut": "SOAR", @@ -22187,7 +22187,7 @@ "links": { "Homepage": "https://www.allsportschain.com" }, - "marketcap_usd": 5289839.720724809, + "marketcap_usd": 5289839, "name": "All Sports", "network": "eth", "shortcut": "SOC", @@ -22214,7 +22214,7 @@ "links": { "Homepage": "https://sola.foundation" }, - "marketcap_usd": 51395.30195731496, + "marketcap_usd": 51395, "name": "Sola Token", "network": "eth", "shortcut": "SOL", @@ -22241,7 +22241,7 @@ "links": { "Homepage": "https://soniqproject.com" }, - "marketcap_usd": 1325276.5480605, + "marketcap_usd": 1325276, "name": "Soniq", "network": "eth", "shortcut": "SONIQ", @@ -22269,7 +22269,7 @@ "Github": "https://github.com/cryptosoulgame", "Homepage": "https://cryptosoul.io/" }, - "marketcap_usd": 43206.541581889935, + "marketcap_usd": 43206, "name": "CryptoSoul", "network": "eth", "shortcut": "SOUL", @@ -22296,7 +22296,7 @@ "links": { "Homepage": "https://spankchain.com" }, - "marketcap_usd": 3459400.389591638, + "marketcap_usd": 3459400, "name": "SpankChain", "network": "eth", "shortcut": "SPANK", @@ -22377,7 +22377,7 @@ "links": { "Homepage": "https://spindle.zone" }, - "marketcap_usd": 2975568.9560201676, + "marketcap_usd": 2975568, "name": "SPINDLE", "network": "eth", "shortcut": "SPD", @@ -22404,7 +22404,7 @@ "links": { "Homepage": "https://sportyfi.io" }, - "marketcap_usd": 107883.3623511865, + "marketcap_usd": 107883, "name": "Sportify", "network": "eth", "shortcut": "SPF", @@ -22431,7 +22431,7 @@ "links": { "Homepage": "https://www.sapien.network/" }, - "marketcap_usd": 309667.93625624676, + "marketcap_usd": 309667, "name": "Sapien", "network": "eth", "shortcut": "SPN", @@ -22458,7 +22458,7 @@ "links": { "Homepage": "https://sp8de.com" }, - "marketcap_usd": 519893.699464796, + "marketcap_usd": 519893, "name": "Sp8de", "network": "eth", "shortcut": "SPX", @@ -22486,7 +22486,7 @@ "Github": "https://github.com/sirin-labs/crowdsale-smart-contract", "Homepage": "https://sirinlabs.com" }, - "marketcap_usd": 13252451.78514952, + "marketcap_usd": 13252451, "name": "Sirin Labs", "network": "eth", "shortcut": "SRN", @@ -22540,7 +22540,7 @@ "links": { "Homepage": "https://smartshare.vip/#" }, - "marketcap_usd": 4699812.087469562, + "marketcap_usd": 4699812, "name": "Smartshare", "network": "eth", "shortcut": "SSP", @@ -22594,7 +22594,7 @@ "links": { "Homepage": "https://coinstarter.com" }, - "marketcap_usd": 158986.3291101041, + "marketcap_usd": 158986, "name": "Starter Coin", "network": "eth", "shortcut": "STAC", @@ -22621,7 +22621,7 @@ "links": { "Homepage": "https://stacs.io" }, - "marketcap_usd": 8983665.826468162, + "marketcap_usd": 8983665, "name": "STACS", "network": "eth", "shortcut": "STACS", @@ -22648,7 +22648,7 @@ "links": { "Homepage": "http://starbase.co" }, - "marketcap_usd": 266676.32275125, + "marketcap_usd": 266676, "name": "Star Token", "network": "eth", "shortcut": "STAR", @@ -22731,7 +22731,7 @@ "links": { "Homepage": "https://stktoken.com" }, - "marketcap_usd": 830820.9948462043, + "marketcap_usd": 830820, "name": "STK Token", "network": "eth", "shortcut": "STK", @@ -22786,7 +22786,7 @@ "Github": "https://github.com/Storj", "Homepage": "https://storj.io" }, - "marketcap_usd": 19053313.62957093, + "marketcap_usd": 19053313, "name": "STORJ", "network": "eth", "shortcut": "STORJ", @@ -22813,7 +22813,7 @@ "links": { "Homepage": "https://www.stormtoken.com" }, - "marketcap_usd": 13791276.795329388, + "marketcap_usd": 13791276, "name": "Storm Token", "network": "eth", "shortcut": "STORM", @@ -22869,7 +22869,7 @@ "Github": "https://github.com/Storiqa/", "Homepage": "https://storiqa.com" }, - "marketcap_usd": 2797979.022906793, + "marketcap_usd": 2797979, "name": "Storiqa", "network": "eth", "shortcut": "STQ", @@ -22896,7 +22896,7 @@ "links": { "Homepage": "https://staker.network" }, - "marketcap_usd": 4442.062555170289, + "marketcap_usd": 4442, "name": "Staker", "network": "eth", "shortcut": "STR", @@ -22951,7 +22951,7 @@ "links": { "Homepage": "https://bitjob.io" }, - "marketcap_usd": 131360.5165751962, + "marketcap_usd": 131360, "name": "bitJob", "network": "eth", "shortcut": "STU", @@ -22979,7 +22979,7 @@ "Github": "https://github.com/stx-technologies/stox-token", "Homepage": "https://www.stox.com" }, - "marketcap_usd": 830080.9470579723, + "marketcap_usd": 830080, "name": "StoxToken", "network": "eth", "shortcut": "STX", @@ -23033,7 +23033,7 @@ "links": { "Homepage": "https://www.suretly.com" }, - "marketcap_usd": 138128.37687532563, + "marketcap_usd": 138128, "name": "Suretly", "network": "eth", "shortcut": "SUR", @@ -23060,7 +23060,7 @@ "links": { "Homepage": "https://ico.savedroid.com" }, - "marketcap_usd": 839456.8831429093, + "marketcap_usd": 839456, "name": "savedroid", "network": "eth", "shortcut": "SVD", @@ -23087,7 +23087,7 @@ "links": { "Homepage": "http://www.swftcoin.com" }, - "marketcap_usd": 3452822.2239462347, + "marketcap_usd": 3452822, "name": "SwftCoin", "network": "eth", "shortcut": "SWFTC", @@ -23115,7 +23115,7 @@ "Github": "https://github.com/swarmfund", "Homepage": "https://swarm.fund" }, - "marketcap_usd": 8791253.672604106, + "marketcap_usd": 8791253, "name": "Swarm Fund Token", "network": "eth", "shortcut": "SWM", @@ -23142,7 +23142,7 @@ "links": { "Homepage": "http://swarm.city" }, - "marketcap_usd": 918198.8185689499, + "marketcap_usd": 918198, "name": "Swarm City Token", "network": "eth", "shortcut": "SWT", @@ -23169,7 +23169,7 @@ "links": { "Homepage": "http://www.spectre.ai" }, - "marketcap_usd": 18748612.950990014, + "marketcap_usd": 18748612, "name": "Spectre.ai D-Token", "network": "eth", "shortcut": "SXDT", @@ -23196,7 +23196,7 @@ "links": { "Homepage": "http://www.spectre.ai" }, - "marketcap_usd": 1472502.2629439272, + "marketcap_usd": 1472502, "name": "Spectre.ai U-Token", "network": "eth", "shortcut": "SXUT", @@ -23277,7 +23277,7 @@ "links": { "Homepage": "https://www.talao.io" }, - "marketcap_usd": 197519.25172725355, + "marketcap_usd": 197519, "name": "Talao", "network": "eth", "shortcut": "TALAO", @@ -23305,7 +23305,7 @@ "Github": "https://github.com/lamden", "Homepage": "https://www.lamden.io" }, - "marketcap_usd": 3580323.440292222, + "marketcap_usd": 3580323, "name": "Lamden Tau", "network": "eth", "shortcut": "TAU", @@ -23388,7 +23388,7 @@ "links": { "Homepage": "https://tokenbox.io" }, - "marketcap_usd": 174109.5589990741, + "marketcap_usd": 174109, "name": "Tokenbox", "network": "eth", "shortcut": "TBX", @@ -23443,7 +23443,7 @@ "links": { "Homepage": "https://www.thorecash.com" }, - "marketcap_usd": 40890.95446855782, + "marketcap_usd": 40890, "name": "Thore Cash", "network": "eth", "shortcut": "TCH", @@ -23497,7 +23497,7 @@ "links": { "Homepage": "https://tokenstars.com/team" }, - "marketcap_usd": 19356.16537537995, + "marketcap_usd": 19356, "name": "TEAM (TokenStars)", "network": "eth", "shortcut": "TEAM", @@ -23524,7 +23524,7 @@ "links": { "Homepage": "https://www.tokenomy.com" }, - "marketcap_usd": 11732660.77114, + "marketcap_usd": 11732660, "name": "Tokenomy", "network": "eth", "shortcut": "TEN", @@ -23551,7 +23551,7 @@ "links": { "Homepage": "https://ico.tefoodint.com" }, - "marketcap_usd": 3632802.3881724575, + "marketcap_usd": 3632802, "name": "TE-FOOD", "network": "eth", "shortcut": "TFD", @@ -23579,7 +23579,7 @@ "Github": "https://github.com/TrueFlip", "Homepage": "https://trueflip.io" }, - "marketcap_usd": 1241672.4239099557, + "marketcap_usd": 1241672, "name": "TrueFlip", "network": "eth", "shortcut": "TFL", @@ -23606,7 +23606,7 @@ "links": { "Homepage": "https://ico.truegame.io" }, - "marketcap_usd": 778972.4337919885, + "marketcap_usd": 778972, "name": "Truegame", "network": "eth", "shortcut": "TGAME", @@ -23633,7 +23633,7 @@ "links": { "Homepage": "https://www.tgtcoins.com" }, - "marketcap_usd": 294965.16272370523, + "marketcap_usd": 294965, "name": "Target Coin", "network": "eth", "shortcut": "TGT", @@ -23660,7 +23660,7 @@ "links": { "Homepage": "https://www.thetatoken.org/" }, - "marketcap_usd": 44270574.58432219, + "marketcap_usd": 44270574, "name": "Theta Token", "network": "eth", "shortcut": "THETA", @@ -23687,7 +23687,7 @@ "links": { "Homepage": "https://www.thorecoin.com" }, - "marketcap_usd": 80326.7467547608, + "marketcap_usd": 80326, "name": "ThoreCoin", "network": "eth", "shortcut": "THR", @@ -23714,7 +23714,7 @@ "links": { "Homepage": "https://ico.thrivelabs.io" }, - "marketcap_usd": 701556.9061326698, + "marketcap_usd": 701556, "name": "Thrive Token", "network": "eth", "shortcut": "THRT", @@ -23769,7 +23769,7 @@ "links": { "Homepage": "https://thingschain.network" }, - "marketcap_usd": 51010.61399112525, + "marketcap_usd": 51010, "name": "Thingschain", "network": "eth", "shortcut": "TIC", @@ -23796,7 +23796,7 @@ "links": { "Homepage": "https://ties.network" }, - "marketcap_usd": 532600.5576246629, + "marketcap_usd": 532600, "name": "Ties.DB", "network": "eth", "shortcut": "TIE", @@ -23823,7 +23823,7 @@ "links": { "Homepage": "https://www.tigereum.io" }, - "marketcap_usd": 233947.50072339625, + "marketcap_usd": 233947, "name": "Tigereum", "network": "eth", "shortcut": "TIG", @@ -23850,7 +23850,7 @@ "links": { "Homepage": "https://chronobank.io" }, - "marketcap_usd": 1350824.4697287933, + "marketcap_usd": 1350824, "name": "Chronobank", "network": "eth", "shortcut": "TIME", @@ -23904,7 +23904,7 @@ "links": { "Homepage": "https://www.blocktix.io" }, - "marketcap_usd": 4153421.9742799997, + "marketcap_usd": 4153421, "name": "Blocktix", "network": "eth", "shortcut": "TIX", @@ -23931,7 +23931,7 @@ "links": { "Homepage": "https://www.tokia.io" }, - "marketcap_usd": 132440.69119547028, + "marketcap_usd": 132440, "name": "Tokia", "network": "eth", "shortcut": "TKA", @@ -23985,7 +23985,7 @@ "links": { "Homepage": "https://etherscan.io/token/TokenCard" }, - "marketcap_usd": 6099151.00377654, + "marketcap_usd": 6099151, "name": "TokenCard", "network": "eth", "shortcut": "TKN", @@ -24039,7 +24039,7 @@ "links": { "Homepage": "http://traxia.co" }, - "marketcap_usd": 1550128.8573761904, + "marketcap_usd": 1550128, "name": "TRAXIA", "network": "eth", "shortcut": "TMT", @@ -24066,7 +24066,7 @@ "links": { "Homepage": "https://transcodium.com" }, - "marketcap_usd": 116166.67813871022, + "marketcap_usd": 116166, "name": "Transcodium", "network": "eth", "shortcut": "TNS", @@ -24094,7 +24094,7 @@ "Github": "https://github.com/tierion", "Homepage": "https://tierion.com" }, - "marketcap_usd": 5872092.115278546, + "marketcap_usd": 5872092, "name": "Tierion Network Token", "network": "eth", "shortcut": "TNT", @@ -24176,7 +24176,7 @@ "links": { "Homepage": "https://origintrail.io" }, - "marketcap_usd": 5303653.612972855, + "marketcap_usd": 5303653, "name": "OriginTrail", "network": "eth", "shortcut": "TRAC", @@ -24203,7 +24203,7 @@ "links": { "Homepage": "http://www.trakinvest.com" }, - "marketcap_usd": 256071.96508907626, + "marketcap_usd": 256071, "name": "TrakInvest", "network": "eth", "shortcut": "TRAK", @@ -24257,7 +24257,7 @@ "links": { "Homepage": "http://www.tracto.org" }, - "marketcap_usd": 196696.50386815143, + "marketcap_usd": 196696, "name": "Tracto", "network": "eth", "shortcut": "TRCT", @@ -24284,7 +24284,7 @@ "links": { "Homepage": "https://www.tridentgroup.io" }, - "marketcap_usd": 17529.479199632515, + "marketcap_usd": 17529, "name": "Trident Group", "network": "eth", "shortcut": "TRDT", @@ -24312,7 +24312,7 @@ "Github": "https://github.com/WeTrustPlatform", "Homepage": "https://www.wetrust.io" }, - "marketcap_usd": 760826.4323094162, + "marketcap_usd": 760826, "name": "TRST", "network": "eth", "shortcut": "TRST", @@ -24394,7 +24394,7 @@ "links": { "Homepage": "http://www.ttc.eco" }, - "marketcap_usd": 5364164.928524194, + "marketcap_usd": 5364164, "name": "TTC Protocol", "network": "eth", "shortcut": "TTC", @@ -24421,7 +24421,7 @@ "links": { "Homepage": "https://tatatutoken.io" }, - "marketcap_usd": 698004.9456183023, + "marketcap_usd": 698004, "name": "TaTaTu", "network": "eth", "shortcut": "TTU", @@ -24449,7 +24449,7 @@ "Github": "https://github.com/trusttoken", "Homepage": "https://www.trusttoken.com" }, - "marketcap_usd": 208528618.461705, + "marketcap_usd": 208528618, "name": "TrueUSD", "network": "eth", "shortcut": "TUSD", @@ -24530,7 +24530,7 @@ "links": { "Homepage": "https://taas.fund" }, - "marketcap_usd": 2257449.7792685404, + "marketcap_usd": 2257449, "name": "Token-as-a-Service", "network": "eth", "shortcut": "TaaS", @@ -24557,7 +24557,7 @@ "links": { "Homepage": "https://unibright.io" }, - "marketcap_usd": 1638696.5621619327, + "marketcap_usd": 1638696, "name": "Unibright", "network": "eth", "shortcut": "UBT", @@ -24584,7 +24584,7 @@ "links": { "Homepage": "https://u.cash" }, - "marketcap_usd": 861133.9949136986, + "marketcap_usd": 861133, "name": "U.CASH", "network": "eth", "shortcut": "UCASH", @@ -24611,7 +24611,7 @@ "links": { "Homepage": "https://uchain.world" }, - "marketcap_usd": 383137.99129379034, + "marketcap_usd": 383137, "name": "UChain", "network": "eth", "shortcut": "UCN", @@ -24638,7 +24638,7 @@ "links": { "Homepage": "https://www.upfiring.com" }, - "marketcap_usd": 1348290.0866668022, + "marketcap_usd": 1348290, "name": "Upfiring", "network": "eth", "shortcut": "UFR", @@ -24666,7 +24666,7 @@ "Github": "https://github.com/unikoingold/UnikoinGold-UKG-Contract", "Homepage": "https://unikoingold.com" }, - "marketcap_usd": 3695651.307517913, + "marketcap_usd": 3695651, "name": "UnikoinGold", "network": "eth", "shortcut": "UKG", @@ -24693,7 +24693,7 @@ "links": { "Homepage": "https://uptoken.org" }, - "marketcap_usd": 3065117.857175293, + "marketcap_usd": 3065117, "name": "UpToken", "network": "eth", "shortcut": "UP", @@ -24720,7 +24720,7 @@ "links": { "Homepage": "https://sentinelprotocol.io" }, - "marketcap_usd": 3984243.4134820607, + "marketcap_usd": 3984243, "name": "Sentinel Protocol", "network": "eth", "shortcut": "UPP", @@ -24747,7 +24747,7 @@ "links": { "Homepage": "https://uquidcoin.com" }, - "marketcap_usd": 571278.8246790001, + "marketcap_usd": 571278, "name": "Uquid Coin", "network": "eth", "shortcut": "UQC", @@ -24803,7 +24803,7 @@ "Github": "https://github.com/centrehq/centre-tokens", "Homepage": "https://www.centre.io" }, - "marketcap_usd": 292036783.8974997, + "marketcap_usd": 292036783, "name": "USD//Coin", "network": "eth", "shortcut": "USDC", @@ -24884,7 +24884,7 @@ "links": { "Homepage": "https://utrust.io" }, - "marketcap_usd": 9579332.105145, + "marketcap_usd": 9579332, "name": "UTK", "network": "eth", "shortcut": "UTK", @@ -24912,7 +24912,7 @@ "Github": "https://github.com/UniversaBlockchain/universa", "Homepage": "https://www.universa.io" }, - "marketcap_usd": 6663632.323995456, + "marketcap_usd": 6663632, "name": "Universa", "network": "eth", "shortcut": "UTNP", @@ -24939,7 +24939,7 @@ "links": { "Homepage": "https://uttoken.io" }, - "marketcap_usd": 8016256.604808508, + "marketcap_usd": 8016256, "name": "United Traders Token", "network": "eth", "shortcut": "UTT", @@ -24966,7 +24966,7 @@ "links": { "Homepage": "https://u.network/" }, - "marketcap_usd": 1636378.7739491803, + "marketcap_usd": 1636378, "name": "U Networks", "network": "eth", "shortcut": "UUU", @@ -25050,7 +25050,7 @@ "Github": "https://github.com/blockv", "Homepage": "https://blockv.io" }, - "marketcap_usd": 12292658.32665446, + "marketcap_usd": 12292658, "name": "BLOCKv", "network": "eth", "shortcut": "VEE", @@ -25132,7 +25132,7 @@ "links": { "Homepage": "https://veritas.veritaseum.com" }, - "marketcap_usd": 26751649.331312686, + "marketcap_usd": 26751649, "name": "Veritaseum", "network": "eth", "shortcut": "VERI", @@ -25159,7 +25159,7 @@ "links": { "Homepage": "https://www.viberate.io" }, - "marketcap_usd": 4106380.559954134, + "marketcap_usd": 4106380, "name": "VIB", "network": "eth", "shortcut": "VIB", @@ -25187,7 +25187,7 @@ "Github": "https://github.com/Viewly/", "Homepage": "https://view.ly/" }, - "marketcap_usd": 217615.7914374232, + "marketcap_usd": 217615, "name": "Viewly", "network": "eth", "shortcut": "VIEW", @@ -25214,7 +25214,7 @@ "links": { "Homepage": "https://ico.vikky.io" }, - "marketcap_usd": 34786.65418856813, + "marketcap_usd": 34786, "name": "VikkyToken", "network": "eth", "shortcut": "VIKKY", @@ -25242,7 +25242,7 @@ "Github": "https://github.com/ViceIndustryToken", "Homepage": "https://vicetoken.com/" }, - "marketcap_usd": 1239712.836210723, + "marketcap_usd": 1239712, "name": "Vice Industry Token", "network": "eth", "shortcut": "VIT", @@ -25269,7 +25269,7 @@ "links": { "Homepage": "https://www.vite.org" }, - "marketcap_usd": 6420955.051324905, + "marketcap_usd": 6420955, "name": "Vite", "network": "eth", "shortcut": "VITE", @@ -25297,7 +25297,7 @@ "Github": "https://github.com/viuly", "Homepage": "https://viuly.io" }, - "marketcap_usd": 64921.55930010384, + "marketcap_usd": 64921, "name": "VIU", "network": "eth", "shortcut": "VIU", @@ -25325,7 +25325,7 @@ "Github": "https://github.com/vetri-global/", "Homepage": "https://vetri.global/" }, - "marketcap_usd": 712918.0401328357, + "marketcap_usd": 712918, "name": "VETRI", "network": "eth", "shortcut": "VLD", @@ -25380,7 +25380,7 @@ "links": { "Homepage": "https://voise.it" }, - "marketcap_usd": 377198.6618751497, + "marketcap_usd": 377198, "name": "Voise", "network": "eth", "shortcut": "VOISE", @@ -25407,7 +25407,7 @@ "links": { "Homepage": "https://www.vdice.io" }, - "marketcap_usd": 72832.34367086462, + "marketcap_usd": 72832, "name": "Vdice", "network": "eth", "shortcut": "VSL", @@ -25462,7 +25462,7 @@ "links": { "Homepage": "https://vezt.co" }, - "marketcap_usd": 540619.0348893856, + "marketcap_usd": 540619, "name": "Vezt", "network": "eth", "shortcut": "VZT", @@ -25489,7 +25489,7 @@ "links": { "Homepage": "https://wab.network" }, - "marketcap_usd": 693871.7680048338, + "marketcap_usd": 693871, "name": "WABnetwork", "network": "eth", "shortcut": "WAB", @@ -25545,7 +25545,7 @@ "Github": "https://github.com/waxio", "Homepage": "https://wax.io" }, - "marketcap_usd": 30037030.36498607, + "marketcap_usd": 30037030, "name": "WAX", "network": "eth", "shortcut": "WAX", @@ -25682,7 +25682,7 @@ "links": { "Homepage": "https://webcoin.today" }, - "marketcap_usd": 144951.06900874033, + "marketcap_usd": 144951, "name": "Webcoin", "network": "eth", "shortcut": "WEB", @@ -25792,7 +25792,7 @@ "links": { "Homepage": "https://wings.ai" }, - "marketcap_usd": 7658681.045682818, + "marketcap_usd": 7658681, "name": "WINGS", "network": "eth", "shortcut": "WINGS", @@ -25819,7 +25819,7 @@ "links": { "Homepage": "https://mywish.io" }, - "marketcap_usd": 474081.47792653897, + "marketcap_usd": 474081, "name": "MyWish", "network": "eth", "shortcut": "WISH", @@ -25929,7 +25929,7 @@ "links": { "Homepage": "https://wepower.network" }, - "marketcap_usd": 6833940.666185789, + "marketcap_usd": 6833940, "name": "WePower Token", "network": "eth", "shortcut": "WPR", @@ -25956,7 +25956,7 @@ "links": { "Homepage": "https://worldcore.eu" }, - "marketcap_usd": 412949.5552274114, + "marketcap_usd": 412949, "name": "Worldcore", "network": "eth", "shortcut": "WRC", @@ -26011,7 +26011,7 @@ "links": { "Homepage": "http://www.waltonchain.org" }, - "marketcap_usd": 40792302.85371911, + "marketcap_usd": 40792302, "name": "Waltonchain", "network": "eth", "shortcut": "WTC", @@ -26094,7 +26094,7 @@ "links": { "Homepage": "https://www.wacoin.io" }, - "marketcap_usd": 6433755.362644028, + "marketcap_usd": 6433755, "name": "WaBi", "network": "eth", "shortcut": "WaBi", @@ -26121,7 +26121,7 @@ "links": { "Homepage": "https://x8currency.com" }, - "marketcap_usd": 824033.0608091867, + "marketcap_usd": 824033, "name": "X8X", "network": "eth", "shortcut": "X8X", @@ -26148,7 +26148,7 @@ "links": { "Homepage": "http://www.xaurum.org" }, - "marketcap_usd": 3651928.5975446017, + "marketcap_usd": 3651928, "name": "Xaurum", "network": "eth", "shortcut": "XAUR", @@ -26175,7 +26175,7 @@ "links": { "Homepage": "https://billionairetoken.com" }, - "marketcap_usd": 87348.13228324316, + "marketcap_usd": 87348, "name": "Billionaire Token", "network": "eth", "shortcut": "XBL", @@ -26203,7 +26203,7 @@ "Github": "https://github.com/blitzpredict", "Homepage": "https://www.blitzpredict.io" }, - "marketcap_usd": 298269.40464235866, + "marketcap_usd": 298269, "name": "BlitzPredict", "network": "eth", "shortcut": "XBP", @@ -26285,7 +26285,7 @@ "links": { "Homepage": "https://clearcoin.co" }, - "marketcap_usd": 246910.12188812395, + "marketcap_usd": 246910, "name": "ClearCoin", "network": "eth", "shortcut": "XCLR", @@ -26312,7 +26312,7 @@ "links": { "Homepage": "https://www.xinfin.io" }, - "marketcap_usd": 2141325.314775632, + "marketcap_usd": 2141325, "name": "XinFin Network", "network": "eth", "shortcut": "XDCE", @@ -26339,7 +26339,7 @@ "links": { "Homepage": "https://proxeus.com" }, - "marketcap_usd": 2989114.9077328504, + "marketcap_usd": 2989114, "name": "Proxeus", "network": "eth", "shortcut": "XES", @@ -26530,7 +26530,7 @@ "links": { "Homepage": "http://xmedchain.com" }, - "marketcap_usd": 146586.3520971182, + "marketcap_usd": 146586, "name": "XMED Chain", "network": "eth", "shortcut": "XMCT", @@ -26557,7 +26557,7 @@ "links": { "Homepage": "https://www.xmx.com" }, - "marketcap_usd": 1891579.2621537463, + "marketcap_usd": 1891579, "name": "XMax", "network": "eth", "shortcut": "XMX", @@ -26585,7 +26585,7 @@ "Github": "https://github.com/InkProtocol/", "Homepage": "https://paywithink.com" }, - "marketcap_usd": 863075.5619001419, + "marketcap_usd": 863075, "name": "Ink Protocol", "network": "eth", "shortcut": "XNK", @@ -26612,7 +26612,7 @@ "links": { "Homepage": "https://xenon.network" }, - "marketcap_usd": 323587.91106300004, + "marketcap_usd": 323587, "name": "XENON", "network": "eth", "shortcut": "XNN", @@ -26666,7 +26666,7 @@ "links": { "Homepage": "http://www.xov.io" }, - "marketcap_usd": 205746.38672323833, + "marketcap_usd": 205746, "name": "XOVBank", "network": "eth", "shortcut": "XOV", @@ -26693,7 +26693,7 @@ "links": { "Homepage": "https://xpa.io" }, - "marketcap_usd": 2155906.4562830534, + "marketcap_usd": 2155906, "name": "XPA", "network": "eth", "shortcut": "XPA", @@ -26721,7 +26721,7 @@ "Github": "https://github.com/Bit-Nation/", "Homepage": "https://bitnation.co" }, - "marketcap_usd": 77411.08130564021, + "marketcap_usd": 77411, "name": "Pangea Arbitration Token", "network": "eth", "shortcut": "XPAT", @@ -26802,7 +26802,7 @@ "links": { "Homepage": "https://xyo.network" }, - "marketcap_usd": 15761240.171350569, + "marketcap_usd": 15761240, "name": "XYO", "network": "eth", "shortcut": "XYO", @@ -26829,7 +26829,7 @@ "links": { "Homepage": "http://www.yeefoundation.com" }, - "marketcap_usd": 1449036.1326269598, + "marketcap_usd": 1449036, "name": "Yee Token", "network": "eth", "shortcut": "YEE", @@ -26857,7 +26857,7 @@ "Github": "https://github.com/crowdholding/", "Homepage": "https://www.crowdholding.com" }, - "marketcap_usd": 79266.12919586457, + "marketcap_usd": 79266, "name": "YUP", "network": "eth", "shortcut": "YUP", @@ -26885,7 +26885,7 @@ "Github": "https://github.com/zapproject", "Homepage": "https://zap.store" }, - "marketcap_usd": 1321274.8930972393, + "marketcap_usd": 1321274, "name": "ZAP", "network": "eth", "shortcut": "ZAP", @@ -26912,7 +26912,7 @@ "links": { "Homepage": "https://0chain.net" }, - "marketcap_usd": 3103131.7821686305, + "marketcap_usd": 3103131, "name": "0chain", "network": "eth", "shortcut": "ZCN", @@ -26939,7 +26939,7 @@ "links": { "Homepage": "https://www.zebi.io" }, - "marketcap_usd": 2322756.287245, + "marketcap_usd": 2322756, "name": "Zebi", "network": "eth", "shortcut": "ZCO", @@ -26966,7 +26966,7 @@ "links": { "Homepage": "https://zsc.io/" }, - "marketcap_usd": 1576031.924955769, + "marketcap_usd": 1576031, "name": "Zeusshield", "network": "eth", "shortcut": "ZCS", @@ -26994,7 +26994,7 @@ "Github": "https://github.com/ZEUS-coin", "Homepage": "https://zeusfundme.com/" }, - "marketcap_usd": 32455.143527520002, + "marketcap_usd": 32455, "name": "ZeusNetwork", "network": "eth", "shortcut": "ZEUS", @@ -27022,7 +27022,7 @@ "Github": "https://github.com/zilliqa", "Homepage": "https://www.zilliqa.com/" }, - "marketcap_usd": 144398955.32783878, + "marketcap_usd": 144398955, "name": "Zilliqa", "network": "eth", "shortcut": "ZIL", @@ -27049,7 +27049,7 @@ "links": { "Homepage": "https://zinc.work" }, - "marketcap_usd": 118133.83924217461, + "marketcap_usd": 118133, "name": "ZINC", "network": "eth", "shortcut": "ZINC", @@ -27076,7 +27076,7 @@ "links": { "Homepage": "http://zipper.io" }, - "marketcap_usd": 6743233.469106191, + "marketcap_usd": 6743233, "name": "Zipper", "network": "eth", "shortcut": "ZIP", @@ -27103,7 +27103,7 @@ "links": { "Homepage": "https://zippie.org" }, - "marketcap_usd": 299609.1195438031, + "marketcap_usd": 299609, "name": "Zippie", "network": "eth", "shortcut": "ZIPT", @@ -27158,7 +27158,7 @@ "links": { "Homepage": "https://zla.io" }, - "marketcap_usd": 347576.61255301617, + "marketcap_usd": 347576, "name": "Zilla", "network": "eth", "shortcut": "ZLA", @@ -27185,7 +27185,7 @@ "links": { "Homepage": "https://www.zmine.com" }, - "marketcap_usd": 1059772.1111633803, + "marketcap_usd": 1059772, "name": "ZMINE", "network": "eth", "shortcut": "ZMN", @@ -27212,7 +27212,7 @@ "links": { "Homepage": "https://zper.io" }, - "marketcap_usd": 1136507.7051483023, + "marketcap_usd": 1136507, "name": "ZPER", "network": "eth", "shortcut": "ZPR", @@ -27240,7 +27240,7 @@ "Github": "https://github.com/0xProject", "Homepage": "https://0xproject.com" }, - "marketcap_usd": 136369652.50930715, + "marketcap_usd": 136369652, "name": "0x Project", "network": "eth", "shortcut": "ZRX", @@ -27294,7 +27294,7 @@ "links": { "Homepage": "https://0xcert.org" }, - "marketcap_usd": 309338.0622502, + "marketcap_usd": 309338, "name": "0xcert Protocol Token", "network": "eth", "shortcut": "ZXC", @@ -27322,7 +27322,7 @@ "Github": "https://github.com/carVertical", "Homepage": "https://www.carvertical.com" }, - "marketcap_usd": 2129753.3611435737, + "marketcap_usd": 2129753, "name": "carVertical", "network": "eth", "shortcut": "cV", @@ -27377,7 +27377,7 @@ "Github": "https://github.com/eBTCCommunityTrustToken/eBTC", "Homepage": "https://ebitcoin.org" }, - "marketcap_usd": 319081.6548058621, + "marketcap_usd": 319081, "name": "eBTC", "network": "eth", "shortcut": "eBTC", @@ -27460,7 +27460,7 @@ "Github": "https://github.com/eosdac", "Homepage": "https://eosdac.io/" }, - "marketcap_usd": 3475215.90534752, + "marketcap_usd": 3475215, "name": "eosDAC", "network": "eth", "shortcut": "eosDAC", @@ -27488,7 +27488,7 @@ "Github": "https://github.com/onGsocial", "Homepage": "https://ongcoin.io" }, - "marketcap_usd": 208822.60080047097, + "marketcap_usd": 208822, "name": "onG", "network": "eth", "shortcut": "onG", @@ -27516,7 +27516,7 @@ "Github": "https://github.com/havven/", "Homepage": "https://www.synthetix.io" }, - "marketcap_usd": 1032370.7116671155, + "marketcap_usd": 1032370, "name": "USD Synth (sUSD)", "network": "eth", "shortcut": "sUSD", @@ -28304,12 +28304,12 @@ } }, "info": { - "marketcap_supported": "90.32 %", - "marketcap_usd": 102605031792.03386, + "marketcap_supported": "90.28 %", + "marketcap_usd": 102605031488, "t1_coins": 704, "t2_coins": 1011, - "total_marketcap_usd": 113595418022, - "updated_at": 1549373494, - "updated_at_readable": "Tue Feb 5 14:31:34 2019" + "total_marketcap_usd": 113653597552, + "updated_at": 1549374014, + "updated_at_readable": "Tue Feb 5 14:40:14 2019" } } \ No newline at end of file diff --git a/tools/coins_details.py b/tools/coins_details.py index 798f1c55a..a637fc2d5 100755 --- a/tools/coins_details.py +++ b/tools/coins_details.py @@ -100,7 +100,7 @@ def coinmarketcap_init(api_key, refresh=None): coin_data[slug] = int(market_cap) if platform is not None and platform["name"] == "Ethereum": address = platform["token_address"].lower() - coin_data[address] = market_cap + coin_data[address] = int(market_cap) MARKET_CAPS = coin_data From 9d887f038812f1bb24a1e89452c503fda9d4150c Mon Sep 17 00:00:00 2001 From: ca333 Date: Tue, 5 Feb 2019 15:19:07 +0100 Subject: [PATCH 715/767] kmd update addr length (#269) --- defs/bitcoin/komodo.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/defs/bitcoin/komodo.json b/defs/bitcoin/komodo.json index be01fb96a..b81d7fee6 100644 --- a/defs/bitcoin/komodo.json +++ b/defs/bitcoin/komodo.json @@ -30,8 +30,8 @@ "dust_limit": 546, "blocktime_seconds": 60, "uri_prefix": "komodo", - "min_address_length": 35, - "max_address_length": 95, + "min_address_length": 27, + "max_address_length": 34, "bitcore": [], "blockbook": [], "cooldown": 100 From 21c540429937a2ae5a5a9575a2022da6167a81ee Mon Sep 17 00:00:00 2001 From: mattt21 Date: Wed, 6 Feb 2019 16:42:20 -0600 Subject: [PATCH 716/767] defs: update NIX (#268) --- defs/bitcoin/nix.json | 6 +++--- defs/coins_details.json | 2 +- defs/wallets.json | 4 ++++ 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/defs/bitcoin/nix.json b/defs/bitcoin/nix.json index e094ab2c1..81baabfe7 100644 --- a/defs/bitcoin/nix.json +++ b/defs/bitcoin/nix.json @@ -1,7 +1,7 @@ { - "coin_name": "Nix", + "coin_name": "NIX", "coin_shortcut": "NIX", - "coin_label": "Nix", + "coin_label": "NIX", "website": "https://nixplatform.io", "github": "https://github.com/nixplatform/nixcore", "maintainer": "mattt21 ", @@ -32,7 +32,7 @@ "uri_prefix": "nix", "min_address_length": 27, "max_address_length": 34, - "bitcore": [], + "bitcore": ["https://blockchain.nixplatform.io"], "blockbook": [], "cooldown": 100 } diff --git a/defs/coins_details.json b/defs/coins_details.json index 16d3f6192..e2d2641e5 100644 --- a/defs/coins_details.json +++ b/defs/coins_details.json @@ -28312,4 +28312,4 @@ "updated_at": 1549374014, "updated_at_readable": "Tue Feb 5 14:40:14 2019" } -} \ No newline at end of file +} diff --git a/defs/wallets.json b/defs/wallets.json index e4733fee1..933eee24b 100644 --- a/defs/wallets.json +++ b/defs/wallets.json @@ -47,5 +47,9 @@ "bitcoin:XZC": { "Electrum-XZC": "https://github.com/zcoinofficial/electrum-xzc", "Znode Tool": "https://github.com/yura-pakhuchiy/znode-tool" + }, + "bitcoin:NIX": { + "NIX-Electrum": "https://github.com/nixplatform/electrum-nix", + "Ghostnode Tool": "https://github.com/nixplatform/ghostnode-tool" } } From ad6d3a1cbdb105570fdea899f6b577e0a7aaab0b Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 7 Feb 2019 16:55:57 +0100 Subject: [PATCH 717/767] defs/wallets: add Actilectrum --- defs/wallets.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/defs/wallets.json b/defs/wallets.json index 933eee24b..8618bfed9 100644 --- a/defs/wallets.json +++ b/defs/wallets.json @@ -1,4 +1,7 @@ { + "bitcoin:ACM": { + "Actilectrum": "https://actilectrum.org" + }, "bitcoin:BCH": { "Electron Cash": "https://electroncash.org" }, From 610722e913efae6b9aed121c9e17817de0330018 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 7 Feb 2019 17:00:44 +0100 Subject: [PATCH 718/767] defs: regenerate coins_details.json --- defs/coins_details.json | 1390 ++++++++++++++++++++------------------- 1 file changed, 702 insertions(+), 688 deletions(-) diff --git a/defs/coins_details.json b/defs/coins_details.json index e2d2641e5..bd1cd581a 100644 --- a/defs/coins_details.json +++ b/defs/coins_details.json @@ -5,13 +5,18 @@ "Github": "https://github.com/Actinium-project/Actinium", "Homepage": "https://actinium.org" }, - "marketcap_usd": 191210, + "marketcap_usd": 182545, "name": "Actinium", "shortcut": "ACM", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": [] + "wallet": [ + { + "name": "Actilectrum", + "url": "https://actilectrum.org" + } + ] }, "bitcoin:AXE": { "links": { @@ -31,7 +36,7 @@ "Github": "https://github.com/Bitcoin-ABC/bitcoin-abc", "Homepage": "https://www.bitcoincash.org" }, - "marketcap_usd": 2091165388, + "marketcap_usd": 2044503226, "name": "Bitcoin Cash", "shortcut": "BCH", "t1_enabled": "yes", @@ -66,7 +71,7 @@ "Github": "https://github.com/LIMXTEC/BitSend", "Homepage": "https://bitsend.info" }, - "marketcap_usd": 985152, + "marketcap_usd": 975972, "name": "Bitsend", "shortcut": "BSD", "t1_enabled": "yes", @@ -79,7 +84,7 @@ "Github": "https://github.com/bitcoin/bitcoin", "Homepage": "https://bitcoin.org" }, - "marketcap_usd": 60720581828, + "marketcap_usd": 59760482835, "name": "Bitcoin", "shortcut": "BTC", "t1_enabled": "yes", @@ -101,7 +106,7 @@ "Github": "https://github.com/BTCPrivate/BitcoinPrivate", "Homepage": "https://btcprivate.org" }, - "marketcap_usd": 19647502, + "marketcap_usd": 23177121, "name": "Bitcoin Private", "shortcut": "BTCP", "t1_enabled": "yes", @@ -119,7 +124,7 @@ "Github": "https://github.com/LIMXTEC/Bitcloud", "Homepage": "https://bit-cloud.info" }, - "marketcap_usd": 89110, + "marketcap_usd": 271936, "name": "Bitcloud", "shortcut": "BTDX", "t1_enabled": "yes", @@ -132,7 +137,7 @@ "Github": "https://github.com/BTCGPU/BTCGPU", "Homepage": "https://bitcoingold.org" }, - "marketcap_usd": 167614408, + "marketcap_usd": 164933554, "name": "Bitcoin Gold", "shortcut": "BTG", "t1_enabled": "yes", @@ -154,7 +159,7 @@ "Github": "https://github.com/LIMXTEC/BitCore", "Homepage": "https://bitcore.cc" }, - "marketcap_usd": 3804914, + "marketcap_usd": 3690530, "name": "Bitcore", "shortcut": "BTX", "t1_enabled": "yes", @@ -172,7 +177,7 @@ "Github": "https://github.com/Capricoinofficial/Capricoin", "Homepage": "https://capricoin.org" }, - "marketcap_usd": 474617, + "marketcap_usd": 468279, "name": "Capricoin", "shortcut": "CPC", "t1_enabled": "soon", @@ -185,7 +190,7 @@ "Github": "https://github.com/dashpay/dash", "Homepage": "https://www.dash.org" }, - "marketcap_usd": 586472432, + "marketcap_usd": 575184093, "name": "Dash", "shortcut": "DASH", "t1_enabled": "yes", @@ -207,7 +212,7 @@ "Github": "https://github.com/decred/dcrd", "Homepage": "https://www.decred.org" }, - "marketcap_usd": 147647416, + "marketcap_usd": 142572413, "name": "Decred", "shortcut": "DCR", "t1_enabled": "yes", @@ -220,7 +225,7 @@ "Github": "https://github.com/digibyte/digibyte", "Homepage": "https://digibyte.io" }, - "marketcap_usd": 100216260, + "marketcap_usd": 97144519, "name": "DigiByte", "shortcut": "DGB", "t1_enabled": "yes", @@ -239,7 +244,7 @@ "Github": "https://github.com/carsenk/denarius", "Homepage": "https://denarius.io" }, - "marketcap_usd": 160000, + "marketcap_usd": 241076, "name": "Denarius", "shortcut": "DNR", "t1_enabled": "yes", @@ -252,7 +257,7 @@ "Github": "https://github.com/dogecoin/dogecoin", "Homepage": "https://dogecoin.com" }, - "marketcap_usd": 224765670, + "marketcap_usd": 218317006, "name": "Dogecoin", "shortcut": "DOGE", "t1_enabled": "yes", @@ -270,7 +275,7 @@ "Github": "https://github.com/fujicoin/fujicoin", "Homepage": "https://fujicoin.org" }, - "marketcap_usd": 129755, + "marketcap_usd": 127959, "name": "Fujicoin", "shortcut": "FJC", "t1_enabled": "yes", @@ -288,7 +293,7 @@ "Github": "https://github.com/flash-coin", "Homepage": "https://www.flashcoin.io" }, - "marketcap_usd": 3130072, + "marketcap_usd": 5784852, "name": "Flashcoin", "shortcut": "FLASH", "t1_enabled": "yes", @@ -301,7 +306,7 @@ "Github": "https://github.com/floblockchain/flo", "Homepage": "https://flo.cash" }, - "marketcap_usd": 10744544, + "marketcap_usd": 8047028, "name": "Flo", "shortcut": "FLO", "t1_enabled": "yes", @@ -314,7 +319,7 @@ "Github": "https://github.com/FeatherCoin/Feathercoin", "Homepage": "https://feathercoin.com" }, - "marketcap_usd": 3003441, + "marketcap_usd": 2831907, "name": "Feathercoin", "shortcut": "FTC", "t1_enabled": "yes", @@ -332,7 +337,7 @@ "Github": "https://github.com/gamecredits-project/gamecredits", "Homepage": "https://gamecredits.org" }, - "marketcap_usd": 5927682, + "marketcap_usd": 5360821, "name": "GameCredits", "shortcut": "GAME", "t1_enabled": "yes", @@ -363,7 +368,7 @@ "Github": "https://github.com/Groestlcoin/groestlcoin", "Homepage": "https://www.groestlcoin.org" }, - "marketcap_usd": 13706007, + "marketcap_usd": 19225882, "name": "Groestlcoin", "shortcut": "GRS", "t1_enabled": "yes", @@ -381,7 +386,7 @@ "Github": "https://github.com/komodoplatform/komodo", "Homepage": "https://komodoplatform.com" }, - "marketcap_usd": 71491727, + "marketcap_usd": 67826169, "name": "Komodo", "shortcut": "KMD", "t1_enabled": "soon", @@ -412,7 +417,7 @@ "Github": "https://github.com/litecoin-project/litecoin", "Homepage": "https://litecoin.org" }, - "marketcap_usd": 2054316003, + "marketcap_usd": 2009255184, "name": "Litecoin", "shortcut": "LTC", "t1_enabled": "yes", @@ -434,7 +439,7 @@ "Github": "https://github.com/LIMXTEC/Megacoin", "Homepage": "https://www.megacoin.eu" }, - "marketcap_usd": 116396, + "marketcap_usd": 100317, "name": "Megacoin", "shortcut": "MEC", "t1_enabled": "yes", @@ -447,7 +452,7 @@ "Github": "https://github.com/monacoinproject/monacoin", "Homepage": "https://monacoin.org" }, - "marketcap_usd": 30764483, + "marketcap_usd": 30357239, "name": "Monacoin", "shortcut": "MONA", "t1_enabled": "yes", @@ -465,7 +470,7 @@ "Github": "https://github.com/muecoin/MUECore", "Homepage": "https://www.monetaryunit.org" }, - "marketcap_usd": 2025089, + "marketcap_usd": 1947466, "name": "MonetaryUnit", "shortcut": "MUE", "t1_enabled": "yes", @@ -478,20 +483,29 @@ "Github": "https://github.com/nixplatform/nixcore", "Homepage": "https://nixplatform.io" }, - "marketcap_usd": 6071683, - "name": "Nix", + "marketcap_usd": 6793822, + "name": "NIX", "shortcut": "NIX", "t1_enabled": "yes", "t2_enabled": "soon", "type": "coin", - "wallet": [] + "wallet": [ + { + "name": "Ghostnode Tool", + "url": "https://github.com/nixplatform/ghostnode-tool" + }, + { + "name": "NIX-Electrum", + "url": "https://github.com/nixplatform/electrum-nix" + } + ] }, "bitcoin:NMC": { "links": { "Github": "https://github.com/namecoin/namecoin-core", "Homepage": "https://namecoin.org" }, - "marketcap_usd": 9673644, + "marketcap_usd": 9186316, "name": "Namecoin", "shortcut": "NMC", "t1_enabled": "yes", @@ -513,7 +527,7 @@ "Github": "https://github.com/FundacionPesetacoin/PesetacoinCore", "Homepage": "https://pesetacoin.info" }, - "marketcap_usd": 276219, + "marketcap_usd": 419788, "name": "Pesetacoin", "shortcut": "PTC", "t1_enabled": "yes", @@ -526,7 +540,7 @@ "Github": "https://github.com/RavenProject/Ravencoin", "Homepage": "https://ravencoin.org" }, - "marketcap_usd": 28850929, + "marketcap_usd": 30475814, "name": "Ravencoin", "shortcut": "RVN", "t1_enabled": "yes", @@ -539,7 +553,7 @@ "Github": "https://github.com/SmartCash/Core-Smart", "Homepage": "https://smarcash.cc" }, - "marketcap_usd": 9582381, + "marketcap_usd": 9526918, "name": "SmartCash", "shortcut": "SMART", "t1_enabled": "yes", @@ -552,7 +566,7 @@ "Github": "https://github.com/viacoin", "Homepage": "https://viacoin.org" }, - "marketcap_usd": 7026718, + "marketcap_usd": 6529458, "name": "Viacoin", "shortcut": "VIA", "t1_enabled": "yes", @@ -570,7 +584,7 @@ "Github": "https://github.com/vertcoin-project/vertcoin-core", "Homepage": "https://vertcoin.org" }, - "marketcap_usd": 13670381, + "marketcap_usd": 17685970, "name": "Vertcoin", "shortcut": "VTC", "t1_enabled": "yes", @@ -588,7 +602,7 @@ "Github": "https://github.com/myriadcoin/myriadcoin", "Homepage": "https://www.myriadcoin.org" }, - "marketcap_usd": 1981220, + "marketcap_usd": 1843609, "name": "Myriad", "shortcut": "XMY", "t1_enabled": "yes", @@ -601,7 +615,7 @@ "Github": "https://github.com/zcoinofficial/zcoin", "Homepage": "https://zcoin.io" }, - "marketcap_usd": 31416993, + "marketcap_usd": 30465005, "name": "Zcoin", "shortcut": "XZC", "t1_enabled": "yes", @@ -623,7 +637,7 @@ "Github": "https://github.com/zcash/zcash", "Homepage": "https://z.cash" }, - "marketcap_usd": 282340204, + "marketcap_usd": 275315374, "name": "Zcash", "shortcut": "ZEC", "t1_enabled": "yes", @@ -641,7 +655,7 @@ "Github": "https://github.com/ZencashOfficial/zen", "Homepage": "https://zencash.com" }, - "marketcap_usd": 22097668, + "marketcap_usd": 22623728, "name": "Zencash", "shortcut": "ZEN", "t1_enabled": "no", @@ -761,7 +775,7 @@ "Github": "https://github.com/HurifyPlatform", "Homepage": "https://hurify.co/" }, - "marketcap_usd": 82031, + "marketcap_usd": 57014, "name": "$Hurify Token", "network": "eth", "shortcut": "$HUR", @@ -815,7 +829,7 @@ "links": { "Homepage": "https://0xbitcoin.org/" }, - "marketcap_usd": 514562, + "marketcap_usd": 529608, "name": "0xBitcoin", "network": "eth", "shortcut": "0xBTC", @@ -842,7 +856,7 @@ "links": { "Homepage": "https://firstblood.io" }, - "marketcap_usd": 1919392, + "marketcap_usd": 2318272, "name": "FirstBlood", "network": "eth", "shortcut": "1ST", @@ -869,7 +883,7 @@ "links": { "Homepage": "https://ico.1worldonline.com" }, - "marketcap_usd": 428346, + "marketcap_usd": 462951, "name": "1WO", "network": "eth", "shortcut": "1WO", @@ -896,7 +910,7 @@ "links": { "Homepage": "https://300tokensparta.com" }, - "marketcap_usd": 60817, + "marketcap_usd": 0, "name": "300 Token Sparta", "network": "eth", "shortcut": "300", @@ -978,7 +992,7 @@ "links": { "Homepage": "https://www.arcblock.io" }, - "marketcap_usd": 6608438, + "marketcap_usd": 6187321, "name": "ArcBlock Token", "network": "eth", "shortcut": "ABT", @@ -1006,7 +1020,7 @@ "Github": "https://github.com/theabyssportal", "Homepage": "https://www.theabyss.com" }, - "marketcap_usd": 1173525, + "marketcap_usd": 1123662, "name": "ABYSS", "network": "eth", "shortcut": "ABYSS", @@ -1060,7 +1074,7 @@ "links": { "Homepage": "https://tokenstars.com/en/ace" }, - "marketcap_usd": 160706, + "marketcap_usd": 158040, "name": "ACE (TokenStars)", "network": "eth", "shortcut": "ACE", @@ -1087,7 +1101,7 @@ "links": { "Homepage": "https://adbank.network" }, - "marketcap_usd": 548705, + "marketcap_usd": 526650, "name": "adbank", "network": "eth", "shortcut": "ADB", @@ -1114,7 +1128,7 @@ "links": { "Homepage": "https://adhive.tv" }, - "marketcap_usd": 256400, + "marketcap_usd": 242089, "name": "AdHive Token", "network": "eth", "shortcut": "ADH", @@ -1142,7 +1156,7 @@ "Github": "https://github.com/aditus", "Homepage": "https://aditus.net" }, - "marketcap_usd": 161764, + "marketcap_usd": 174096, "name": "Aditus", "network": "eth", "shortcut": "ADI", @@ -1170,7 +1184,7 @@ "Github": "https://github.com/adelecosystem", "Homepage": "https://adel.io" }, - "marketcap_usd": 360729, + "marketcap_usd": 330704, "name": "Adelphoi", "network": "eth", "shortcut": "ADL", @@ -1197,7 +1211,7 @@ "links": { "Homepage": "https://adshares.net" }, - "marketcap_usd": 962640, + "marketcap_usd": 950278, "name": "AdShares", "network": "eth", "shortcut": "ADST", @@ -1225,7 +1239,7 @@ "Github": "https://github.com/adchain", "Homepage": "https://adtoken.com" }, - "marketcap_usd": 3499812, + "marketcap_usd": 3584125, "name": "AdToken", "network": "eth", "shortcut": "ADT", @@ -1253,7 +1267,7 @@ "Github": "https://github.com/AdExBlockchain", "Homepage": "https://www.adex.network" }, - "marketcap_usd": 6668024, + "marketcap_usd": 7208111, "name": "AdEx Network", "network": "eth", "shortcut": "ADX", @@ -1281,7 +1295,7 @@ "Github": "https://github.com/aeternity", "Homepage": "https://www.aeternity.com/" }, - "marketcap_usd": 85714709, + "marketcap_usd": 85195516, "name": "aeternity", "network": "eth", "shortcut": "AE", @@ -1337,7 +1351,7 @@ "Github": "https://github.com/singnet/singnet", "Homepage": "https://singularitynet.io" }, - "marketcap_usd": 21390638, + "marketcap_usd": 21418401, "name": "SingularityNET", "network": "eth", "shortcut": "AGI", @@ -1364,7 +1378,7 @@ "links": { "Homepage": "https://polynetwork.org" }, - "marketcap_usd": 103, + "marketcap_usd": 98, "name": "POLY AI", "network": "eth", "shortcut": "AI", @@ -1391,7 +1405,7 @@ "links": { "Homepage": "https://www.aidcoin.co" }, - "marketcap_usd": 1576502, + "marketcap_usd": 1585247, "name": "AidCoin", "network": "eth", "shortcut": "AID", @@ -1474,7 +1488,7 @@ "Github": "https://github.com/AigangNetwork", "Homepage": "https://aigang.network/" }, - "marketcap_usd": 111873, + "marketcap_usd": 111686, "name": "Aigang", "network": "eth", "shortcut": "AIX", @@ -1556,7 +1570,7 @@ "links": { "Homepage": "http://ailink.in" }, - "marketcap_usd": 681678, + "marketcap_usd": 646309, "name": "AiLink Token", "network": "eth", "shortcut": "ALI", @@ -1584,7 +1598,7 @@ "Github": "https://github.com/AlisProject", "Homepage": "https://alismedia.jp" }, - "marketcap_usd": 677872, + "marketcap_usd": 664489, "name": "ALIS Token", "network": "eth", "shortcut": "ALIS", @@ -1638,7 +1652,7 @@ "links": { "Homepage": "https://alax.io" }, - "marketcap_usd": 909107, + "marketcap_usd": 859460, "name": "ALAX", "network": "eth", "shortcut": "ALX", @@ -1666,7 +1680,7 @@ "Github": "https://github.com/ambrosus", "Homepage": "https://ambrosus.com/index.html" }, - "marketcap_usd": 7167124, + "marketcap_usd": 7032936, "name": "Amber Token", "network": "eth", "shortcut": "AMB", @@ -1722,7 +1736,7 @@ "Github": "https://github.com/amlt-by-coinfirm", "Homepage": "https://amlt.coinfirm.io/" }, - "marketcap_usd": 1113525, + "marketcap_usd": 1663336, "name": "AMLT", "network": "eth", "shortcut": "AMLT", @@ -1750,7 +1764,7 @@ "Github": "https://github.com/amontech", "Homepage": "https://amon.tech" }, - "marketcap_usd": 139671, + "marketcap_usd": 145287, "name": "Amon", "network": "eth", "shortcut": "AMN", @@ -1778,7 +1792,7 @@ "Github": "https://github.com/AMO-Project/", "Homepage": "https://amo.foundation" }, - "marketcap_usd": 4910194, + "marketcap_usd": 4982402, "name": "AMO Coin", "network": "eth", "shortcut": "AMO", @@ -1832,7 +1846,7 @@ "links": { "Homepage": "https://aragon.one/network" }, - "marketcap_usd": 10625686, + "marketcap_usd": 10323477, "name": "ANT", "network": "eth", "shortcut": "ANT", @@ -1859,7 +1873,7 @@ "links": { "Homepage": "https://www.aurorachain.io" }, - "marketcap_usd": 43597590, + "marketcap_usd": 45007164, "name": "Aurora", "network": "eth", "shortcut": "AOA", @@ -1887,7 +1901,7 @@ "Github": "https://github.com/Oxchild/crowdsale", "Homepage": "https://apisplatform.io" }, - "marketcap_usd": 7786300, + "marketcap_usd": 7694668, "name": "APIS", "network": "eth", "shortcut": "APIS", @@ -1915,7 +1929,7 @@ "Github": "https://github.com/Aptoide/AppCoins-ethereumj", "Homepage": "https://appcoins.io" }, - "marketcap_usd": 4149953, + "marketcap_usd": 4086303, "name": "AppCoins", "network": "eth", "shortcut": "APPC", @@ -1997,7 +2011,7 @@ "links": { "Homepage": "https://www.arbitragect.com" }, - "marketcap_usd": 69685, + "marketcap_usd": 60189, "name": "ArbitrageCT", "network": "eth", "shortcut": "ARCT", @@ -2052,7 +2066,7 @@ "links": { "Homepage": "https://aeron.aero" }, - "marketcap_usd": 4711458, + "marketcap_usd": 4580649, "name": "Aeron", "network": "eth", "shortcut": "ARN", @@ -2079,7 +2093,7 @@ "links": { "Homepage": "https://cofound.it/en/projects/maecenas" }, - "marketcap_usd": 815790, + "marketcap_usd": 935792, "name": "ART", "network": "eth", "shortcut": "ART", @@ -2162,7 +2176,7 @@ "links": { "Homepage": "https://www.blockarray.com" }, - "marketcap_usd": 842117, + "marketcap_usd": 676614, "name": "Block Array", "network": "eth", "shortcut": "ARY", @@ -2189,7 +2203,7 @@ "links": { "Homepage": "https://airswap.io" }, - "marketcap_usd": 3684517, + "marketcap_usd": 4132804, "name": "Airswap", "network": "eth", "shortcut": "AST", @@ -2216,7 +2230,7 @@ "links": { "Homepage": "https://atlant.io" }, - "marketcap_usd": 643684, + "marketcap_usd": 635358, "name": "ATL", "network": "eth", "shortcut": "ATL", @@ -2243,7 +2257,7 @@ "links": { "Homepage": "https://www.atmchain.io" }, - "marketcap_usd": 322566, + "marketcap_usd": 158578, "name": "ATMChain", "network": "eth", "shortcut": "ATM", @@ -2271,7 +2285,7 @@ "Github": "https://github.com/atonomi", "Homepage": "https://atonomi.io" }, - "marketcap_usd": 442789, + "marketcap_usd": 470565, "name": "Atonomi", "network": "eth", "shortcut": "ATMI", @@ -2353,7 +2367,7 @@ "links": { "Homepage": "https://www.aston.company" }, - "marketcap_usd": 4275923, + "marketcap_usd": 4030952, "name": "Aston", "network": "eth", "shortcut": "ATX", @@ -2380,7 +2394,7 @@ "links": { "Homepage": "https://auctus.org" }, - "marketcap_usd": 292328, + "marketcap_usd": 322319, "name": "Auctus", "network": "eth", "shortcut": "AUC", @@ -2407,7 +2421,7 @@ "links": { "Homepage": "https://auroradao.com" }, - "marketcap_usd": 3060206, + "marketcap_usd": 2912535, "name": "Aurora DAO", "network": "eth", "shortcut": "AURA", @@ -2434,7 +2448,7 @@ "links": { "Homepage": "https://cubeint.io" }, - "marketcap_usd": 15258453, + "marketcap_usd": 15027589, "name": "Cube", "network": "eth", "shortcut": "AUTO", @@ -2489,7 +2503,7 @@ "links": { "Homepage": "https://aventus.io" }, - "marketcap_usd": 952213, + "marketcap_usd": 1006345, "name": "AVT", "network": "eth", "shortcut": "AVT", @@ -2572,7 +2586,7 @@ "Github": "https://www.github.com/axpire", "Homepage": "https://www.axpire.io" }, - "marketcap_usd": 1835362, + "marketcap_usd": 1303503, "name": "aXpire", "network": "eth", "shortcut": "AXPR", @@ -2599,7 +2613,7 @@ "links": { "Homepage": "https://www.b2bx.exchange" }, - "marketcap_usd": 3422145, + "marketcap_usd": 3288736, "name": "B2BX", "network": "eth", "shortcut": "B2BX", @@ -2626,7 +2640,7 @@ "links": { "Homepage": "https://www.banca.world" }, - "marketcap_usd": 1364999, + "marketcap_usd": 1289690, "name": "Banca", "network": "eth", "shortcut": "BANCA", @@ -2680,7 +2694,7 @@ "links": { "Homepage": "https://basicattentiontoken.org" }, - "marketcap_usd": 132068898, + "marketcap_usd": 152454297, "name": "Basic Attention Token", "network": "eth", "shortcut": "BAT", @@ -2707,7 +2721,7 @@ "links": { "Homepage": "https://getbabb.com" }, - "marketcap_usd": 6921515, + "marketcap_usd": 6760436, "name": "BABB", "network": "eth", "shortcut": "BAX", @@ -2734,7 +2748,7 @@ "links": { "Homepage": "http://bbcoin.tradove.com" }, - "marketcap_usd": 4776275, + "marketcap_usd": 4502751, "name": "TraDove B2BCoin", "network": "eth", "shortcut": "BBC", @@ -2762,7 +2776,7 @@ "Github": "https://github.com/brickblock-io", "Homepage": "https://www.brickblock.io/" }, - "marketcap_usd": 1656162, + "marketcap_usd": 1477732, "name": "BRICKBLOCK TOKEN", "network": "eth", "shortcut": "BBK", @@ -2789,7 +2803,7 @@ "links": { "Homepage": "http://www.banyanbbt.org" }, - "marketcap_usd": 605850, + "marketcap_usd": 494240, "name": "Banyan Network", "network": "eth", "shortcut": "BBN", @@ -2816,7 +2830,7 @@ "links": { "Homepage": "https://bigbom.com" }, - "marketcap_usd": 166211, + "marketcap_usd": 226493, "name": "Bigbom", "network": "eth", "shortcut": "BBO", @@ -2843,7 +2857,7 @@ "links": { "Homepage": "https://block-chain.com" }, - "marketcap_usd": 44403, + "marketcap_usd": 30486, "name": "Block-Chain.com", "network": "eth", "shortcut": "BC", @@ -2927,7 +2941,7 @@ "Github": "https://github.com/VinceBCD/BCDiploma", "Homepage": "https://www.bcdiploma.com" }, - "marketcap_usd": 132502, + "marketcap_usd": 130755, "name": "Blockchain Certified Data Token", "network": "eth", "shortcut": "BCDT", @@ -2982,7 +2996,7 @@ "Github": "https://github.com/blockmason", "Homepage": "https://blockmason.io" }, - "marketcap_usd": 3342660, + "marketcap_usd": 3358766, "name": "BCPT", "network": "eth", "shortcut": "BCPT", @@ -3010,7 +3024,7 @@ "Github": "https://github.com/bitcv", "Homepage": "https://bitcv.one/" }, - "marketcap_usd": 7239618, + "marketcap_usd": 6861721, "name": "BitCapitalVendor Token", "network": "eth", "shortcut": "BCV", @@ -3038,7 +3052,7 @@ "Github": "https://github.com/bitdegree", "Homepage": "https://bitdegree.org" }, - "marketcap_usd": 856764, + "marketcap_usd": 851808, "name": "BitDegree Token", "network": "eth", "shortcut": "BDG", @@ -3066,7 +3080,7 @@ "Github": "https://github.com/thebeetoken", "Homepage": "https://www.beetoken.com" }, - "marketcap_usd": 722937, + "marketcap_usd": 710995, "name": "Bee Token", "network": "eth", "shortcut": "BEE", @@ -3094,7 +3108,7 @@ "Github": "https://github.com/Rentberry", "Homepage": "https://rentberry.com" }, - "marketcap_usd": 620086, + "marketcap_usd": 574573, "name": "Berry", "network": "eth", "shortcut": "BERRY", @@ -3122,7 +3136,7 @@ "Github": "https://github.com/daocasino", "Homepage": "https://dao.casino" }, - "marketcap_usd": 1459870, + "marketcap_usd": 1387167, "name": "DAO.Casino", "network": "eth", "shortcut": "BET", @@ -3150,7 +3164,7 @@ "Github": "https://github.com/bethereumproject", "Homepage": "https://www.bethereum.com/" }, - "marketcap_usd": 386698, + "marketcap_usd": 336408, "name": "Bethereum", "network": "eth", "shortcut": "BETHER", @@ -3178,7 +3192,7 @@ "Github": "https://github.com/betterbetting", "Homepage": "https://www.betterbetting.org" }, - "marketcap_usd": 526007, + "marketcap_usd": 505814, "name": "BETR", "network": "eth", "shortcut": "BETR", @@ -3205,7 +3219,7 @@ "links": { "Homepage": "https://bezop.io" }, - "marketcap_usd": 1138467, + "marketcap_usd": 1075029, "name": "Bezop", "network": "eth", "shortcut": "BEZ", @@ -3232,7 +3246,7 @@ "links": { "Homepage": "https://bhpcash.io/bhpc/index.html" }, - "marketcap_usd": 23318213, + "marketcap_usd": 24295517, "name": "BHPCash", "network": "eth", "shortcut": "BHPC", @@ -3341,7 +3355,7 @@ "links": { "Homepage": "https://www.bibox.com" }, - "marketcap_usd": 13458028, + "marketcap_usd": 13292381, "name": "Bibox Token", "network": "eth", "shortcut": "BIX", @@ -3423,7 +3437,7 @@ "Github": "https://github.com/BankEx", "Homepage": "https://bankex.com/" }, - "marketcap_usd": 1204323, + "marketcap_usd": 1131433, "name": "BANKEX", "network": "eth", "shortcut": "BKX", @@ -3450,7 +3464,7 @@ "links": { "Homepage": "http://bolenum.com" }, - "marketcap_usd": 44, + "marketcap_usd": 117, "name": "Bolenum", "network": "eth", "shortcut": "BLN", @@ -3478,7 +3492,7 @@ "Github": "https://github.com/hellobloom", "Homepage": "https://hellobloom.io" }, - "marketcap_usd": 1387710, + "marketcap_usd": 1313038, "name": "Bloom", "network": "eth", "shortcut": "BLT", @@ -3506,7 +3520,7 @@ "Github": "https://github.com/BlueCrypto", "Homepage": "https://blueprotocol.com/" }, - "marketcap_usd": 501442, + "marketcap_usd": 543648, "name": "Ethereum Blue", "network": "eth", "shortcut": "BLUE", @@ -3588,7 +3602,7 @@ "links": { "Homepage": "https://bluzelle.com" }, - "marketcap_usd": 7491299, + "marketcap_usd": 7590312, "name": "Bluzelle", "network": "eth", "shortcut": "BLZ", @@ -3616,7 +3630,7 @@ "Github": "https://github.com/blackmoonfg", "Homepage": "https://blackmooncrypto.com" }, - "marketcap_usd": 2909952, + "marketcap_usd": 2735737, "name": "Blackmoon Crypto BMC Token", "network": "eth", "shortcut": "BMC", @@ -3671,7 +3685,7 @@ "links": { "Homepage": "https://www.bitmart.com" }, - "marketcap_usd": 1453900, + "marketcap_usd": 1406664, "name": "BitMart Token", "network": "eth", "shortcut": "BMX", @@ -3698,7 +3712,7 @@ "links": { "Homepage": "https://www.binance.com" }, - "marketcap_usd": 920950671, + "marketcap_usd": 1126978981, "name": "Binance Coin", "network": "eth", "shortcut": "BNB", @@ -3725,7 +3739,7 @@ "links": { "Homepage": "https://www.brokerneko.com" }, - "marketcap_usd": 16130, + "marketcap_usd": 15556, "name": "BrokerNekoNetwork", "network": "eth", "shortcut": "BNN", @@ -3753,7 +3767,7 @@ "Github": "https://github.com/bancorprotocol", "Homepage": "https://www.bancor.network/discover" }, - "marketcap_usd": 29688919, + "marketcap_usd": 28971966, "name": "Bancor", "network": "eth", "shortcut": "BNT", @@ -3780,7 +3794,7 @@ "links": { "Homepage": "https://bounty0x.io" }, - "marketcap_usd": 645195, + "marketcap_usd": 604555, "name": "Bounty0x Token", "network": "eth", "shortcut": "BNTY", @@ -3807,7 +3821,7 @@ "links": { "Homepage": "https://bobsrepair.com" }, - "marketcap_usd": 279919, + "marketcap_usd": 248054, "name": "Bob's repair", "network": "eth", "shortcut": "BOB", @@ -3834,7 +3848,7 @@ "links": { "Homepage": "https://bonpay.com" }, - "marketcap_usd": 208652, + "marketcap_usd": 190553, "name": "Bonpay", "network": "eth", "shortcut": "BON", @@ -3915,7 +3929,7 @@ "links": { "Homepage": "https://www.bouts.pro" }, - "marketcap_usd": 159575, + "marketcap_usd": 185075, "name": "BoutsPro", "network": "eth", "shortcut": "BOUTS", @@ -3942,7 +3956,7 @@ "links": { "Homepage": "https://www.goblockparty.com" }, - "marketcap_usd": 988354, + "marketcap_usd": 989650, "name": "BOXX Token [Blockparty]", "network": "eth", "shortcut": "BOXX", @@ -3970,7 +3984,7 @@ "Github": "https://github.com/Blockport/tokensale", "Homepage": "https://blockport.io" }, - "marketcap_usd": 5836835, + "marketcap_usd": 5466368, "name": "Blockport Token", "network": "eth", "shortcut": "BPT", @@ -3997,7 +4011,7 @@ "links": { "Homepage": "https://www.bitquence.com" }, - "marketcap_usd": 13121863, + "marketcap_usd": 12809697, "name": "Bitquence", "network": "eth", "shortcut": "BQX", @@ -4024,7 +4038,7 @@ "links": { "Homepage": "http://bro-consortium.io" }, - "marketcap_usd": 17643, + "marketcap_usd": 20408, "name": "BRAT", "network": "eth", "shortcut": "BRAT", @@ -4052,7 +4066,7 @@ "Github": "https://github.com/breadwallet", "Homepage": "https://token.breadapp.com/en" }, - "marketcap_usd": 16465833, + "marketcap_usd": 16501545, "name": "Bread", "network": "eth", "shortcut": "BRD", @@ -4215,7 +4229,7 @@ "links": { "Homepage": "https://www.bitcoinone.io" }, - "marketcap_usd": 5543, + "marketcap_usd": 4423, "name": "BitCoin One", "network": "eth", "shortcut": "BTCONE", @@ -4326,7 +4340,7 @@ "Github": "https://github.com/bitcoin-token", "Homepage": "https://btk.community" }, - "marketcap_usd": 91201, + "marketcap_usd": 128767, "name": "Bitcoin Token", "network": "eth", "shortcut": "BTK", @@ -4381,7 +4395,7 @@ "links": { "Homepage": "https://www.bottos.org" }, - "marketcap_usd": 5394576, + "marketcap_usd": 5894278, "name": "Bottos", "network": "eth", "shortcut": "BTO", @@ -4435,7 +4449,7 @@ "links": { "Homepage": "https://bitether.org" }, - "marketcap_usd": 59082, + "marketcap_usd": 58024, "name": "Bitether", "network": "eth", "shortcut": "BTR", @@ -4462,7 +4476,7 @@ "links": { "Homepage": "https://biotron.io" }, - "marketcap_usd": 272214, + "marketcap_usd": 263947, "name": "Biotron", "network": "eth", "shortcut": "BTRN", @@ -4517,7 +4531,7 @@ "links": { "Homepage": "https://blocktrade.com/" }, - "marketcap_usd": 1389006, + "marketcap_usd": 1202347, "name": "Blocktrade.com", "network": "eth", "shortcut": "BTTX", @@ -4599,7 +4613,7 @@ "links": { "Homepage": "https://www.bluewhale.foundation" }, - "marketcap_usd": 2771004, + "marketcap_usd": 2917565, "name": "Blue Whale Token", "network": "eth", "shortcut": "BWX", @@ -4626,7 +4640,7 @@ "links": { "Homepage": "https://www.bitz.com" }, - "marketcap_usd": 3035017, + "marketcap_usd": 2995511, "name": "Bit-Z Token", "network": "eth", "shortcut": "BZ", @@ -4653,7 +4667,7 @@ "links": { "Homepage": "https://bezant.io" }, - "marketcap_usd": 12050684, + "marketcap_usd": 10297616, "name": "Bezant", "network": "eth", "shortcut": "BZNT", @@ -4681,7 +4695,7 @@ "Github": "https://github.com/cryptotwenty", "Homepage": "https://crypto20.com" }, - "marketcap_usd": 14278554, + "marketcap_usd": 13643745, "name": "Crypto20's Token", "network": "eth", "shortcut": "C20", @@ -4708,7 +4722,7 @@ "links": { "Homepage": "https://www.carboneum.io" }, - "marketcap_usd": 390948, + "marketcap_usd": 408126, "name": "Carboneum", "network": "eth", "shortcut": "C8", @@ -4735,7 +4749,7 @@ "links": { "Homepage": "https://change-bank.com" }, - "marketcap_usd": 2539179, + "marketcap_usd": 2640188, "name": "Change Bank", "network": "eth", "shortcut": "CAG", @@ -4762,7 +4776,7 @@ "links": { "Homepage": "https://canya.io" }, - "marketcap_usd": 593000, + "marketcap_usd": 698024, "name": "CAN", "network": "eth", "shortcut": "CAN", @@ -4789,7 +4803,7 @@ "links": { "Homepage": "https://cappasity.com/tech/" }, - "marketcap_usd": 875537, + "marketcap_usd": 867600, "name": "Cappasity", "network": "eth", "shortcut": "CAPP", @@ -4897,7 +4911,7 @@ "links": { "Homepage": "https://cashaa.com" }, - "marketcap_usd": 5691784, + "marketcap_usd": 4741221, "name": "Cashaa", "network": "eth", "shortcut": "CAS", @@ -4924,7 +4938,7 @@ "links": { "Homepage": "https://www.bitclave.com" }, - "marketcap_usd": 242931, + "marketcap_usd": 221795, "name": "CAT (BitClave)", "network": "eth", "shortcut": "CAT (BitClave)", @@ -4951,7 +4965,7 @@ "links": { "Homepage": "https://blockcat.io" }, - "marketcap_usd": 650212, + "marketcap_usd": 633472, "name": "CAT (Blockcat)", "network": "eth", "shortcut": "CAT (Blockcat)", @@ -5005,7 +5019,7 @@ "links": { "Homepage": "https://coin.cashbet.com" }, - "marketcap_usd": 889978, + "marketcap_usd": 780205, "name": "CashBet Coin", "network": "eth", "shortcut": "CBC", @@ -5060,7 +5074,7 @@ "links": { "Homepage": "https://www.commerceblock.com" }, - "marketcap_usd": 2627112, + "marketcap_usd": 2247499, "name": "CommerceBlock", "network": "eth", "shortcut": "CBT", @@ -5168,7 +5182,7 @@ "links": { "Homepage": "http://clippercoin.com" }, - "marketcap_usd": 3430577, + "marketcap_usd": 3262085, "name": "Clipper Coin", "network": "eth", "shortcut": "CCCX", @@ -5223,7 +5237,7 @@ "links": { "Homepage": "https://ccore.io" }, - "marketcap_usd": 65427, + "marketcap_usd": 43409, "name": "Ccore", "network": "eth", "shortcut": "CCO", @@ -5278,7 +5292,7 @@ "links": { "Homepage": "http://crystal-clear.io" }, - "marketcap_usd": 54212, + "marketcap_usd": 53505, "name": "Crystal Clear Token", "network": "eth", "shortcut": "CCT", @@ -5333,7 +5347,7 @@ "links": { "Homepage": "https://www.coindash.io" }, - "marketcap_usd": 4843450, + "marketcap_usd": 4603939, "name": "CoinDash", "network": "eth", "shortcut": "CDT", @@ -5360,7 +5374,7 @@ "links": { "Homepage": "https://www.ceek.com/" }, - "marketcap_usd": 2542674, + "marketcap_usd": 2330271, "name": "CEEK VR Token", "network": "eth", "shortcut": "CEEK", @@ -5387,7 +5401,7 @@ "links": { "Homepage": "https://www.centrality.ai" }, - "marketcap_usd": 28612165, + "marketcap_usd": 20809094, "name": "Centrality", "network": "eth", "shortcut": "CENNZ", @@ -5524,7 +5538,7 @@ "links": { "Homepage": "https://coinpoker.com" }, - "marketcap_usd": 616129, + "marketcap_usd": 600748, "name": "CoinPoker", "network": "eth", "shortcut": "CHP", @@ -5551,7 +5565,7 @@ "links": { "Homepage": "https://swissborg.com" }, - "marketcap_usd": 3334582, + "marketcap_usd": 3252417, "name": "CHSB", "network": "eth", "shortcut": "CHSB", @@ -5578,7 +5592,7 @@ "links": { "Homepage": "https://weown.com" }, - "marketcap_usd": 14993769, + "marketcap_usd": 13763027, "name": "Own", "network": "eth", "shortcut": "CHX", @@ -5687,7 +5701,7 @@ "links": { "Homepage": "https://www.coinlancer.io" }, - "marketcap_usd": 227444, + "marketcap_usd": 207036, "name": "Coinlancer", "network": "eth", "shortcut": "CL", @@ -5771,7 +5785,7 @@ "Github": "https://github.com/colucom/CLN-solidity", "Homepage": "https://cln.network" }, - "marketcap_usd": 562035, + "marketcap_usd": 442135, "name": "ColuLocalNetwork", "network": "eth", "shortcut": "CLN", @@ -5879,7 +5893,7 @@ "links": { "Homepage": "https://crowdmachine.com" }, - "marketcap_usd": 1042589, + "marketcap_usd": 943902, "name": "Crowd Machine Compute Token", "network": "eth", "shortcut": "CMCT", @@ -5961,7 +5975,7 @@ "links": { "Homepage": "https://cindicator.com" }, - "marketcap_usd": 14730070, + "marketcap_usd": 14324073, "name": "Cindicator", "network": "eth", "shortcut": "CND", @@ -5988,7 +6002,7 @@ "links": { "Homepage": "https://cnntoken.io" }, - "marketcap_usd": 4291806, + "marketcap_usd": 4012033, "name": "Content Neutrality Network", "network": "eth", "shortcut": "CNN", @@ -6071,7 +6085,7 @@ "Github": "https://github.com/cobinhood", "Homepage": "https://cobinhood.com" }, - "marketcap_usd": 3561657, + "marketcap_usd": 3676345, "name": "Cobinhood Token", "network": "eth", "shortcut": "COB", @@ -6099,7 +6113,7 @@ "Github": "https://github.com/coinfi", "Homepage": "https://www.coinfi.com" }, - "marketcap_usd": 587894, + "marketcap_usd": 628299, "name": "CoinFi Token", "network": "eth", "shortcut": "COFI", @@ -6181,7 +6195,7 @@ "links": { "Homepage": "https://cosmochain.io" }, - "marketcap_usd": 6511143, + "marketcap_usd": 6836951, "name": "Cosmo Coin", "network": "eth", "shortcut": "COSM", @@ -6208,7 +6222,7 @@ "links": { "Homepage": "https://covesting.io/" }, - "marketcap_usd": 2767254, + "marketcap_usd": 2244323, "name": "Covesting", "network": "eth", "shortcut": "COV", @@ -6235,7 +6249,7 @@ "links": { "Homepage": "https://cryptopay.me" }, - "marketcap_usd": 881088, + "marketcap_usd": 860745, "name": "Cryptopay", "network": "eth", "shortcut": "CPAY", @@ -6291,7 +6305,7 @@ "Github": "https://github.com/Cpollo", "Homepage": "https://cpollo.info/" }, - "marketcap_usd": 319331, + "marketcap_usd": 304506, "name": "CPOLLO", "network": "eth", "shortcut": "CPLO", @@ -6319,7 +6333,7 @@ "Github": "https://github.com/aditus", "Homepage": "https://copytrack.io" }, - "marketcap_usd": 1316242, + "marketcap_usd": 1254951, "name": "COPYTRACK", "network": "eth", "shortcut": "CPY", @@ -6374,7 +6388,7 @@ "links": { "Homepage": "https://www.creditbit.org" }, - "marketcap_usd": 80713, + "marketcap_usd": 95462, "name": "Creditbit", "network": "eth", "shortcut": "CRB", @@ -6428,7 +6442,7 @@ "links": { "Homepage": "https://crycash.io" }, - "marketcap_usd": 401319, + "marketcap_usd": 351945, "name": "CryCash", "network": "eth", "shortcut": "CRC", @@ -6456,7 +6470,7 @@ "Github": "https://github.com/verifyas", "Homepage": "https://verify.as" }, - "marketcap_usd": 329065, + "marketcap_usd": 327150, "name": "CRED", "network": "eth", "shortcut": "CRED", @@ -6483,7 +6497,7 @@ "links": { "Homepage": "https://bitbounce.io" }, - "marketcap_usd": 22809649, + "marketcap_usd": 21923032, "name": "Credo / Bitbounce", "network": "eth", "shortcut": "CREDO", @@ -6565,7 +6579,7 @@ "links": { "Homepage": "https://crypterium.io" }, - "marketcap_usd": 10791207, + "marketcap_usd": 10002832, "name": "CrypteriumToken", "network": "eth", "shortcut": "CRPT", @@ -6619,7 +6633,7 @@ "links": { "Homepage": "https://credits.com/en" }, - "marketcap_usd": 8612333, + "marketcap_usd": 8530410, "name": "Credits", "network": "eth", "shortcut": "CS", @@ -6646,7 +6660,7 @@ "links": { "Homepage": "https://www.bitdice.me" }, - "marketcap_usd": 2180305, + "marketcap_usd": 2143736, "name": "BitDice", "network": "eth", "shortcut": "CSNO", @@ -6673,7 +6687,7 @@ "links": { "Homepage": "https://cryptosolartech.org" }, - "marketcap_usd": 255898, + "marketcap_usd": 236638, "name": "Cryptosolartech", "network": "eth", "shortcut": "CST", @@ -6838,7 +6852,7 @@ "links": { "Homepage": "http://www.cortexlabs.ai" }, - "marketcap_usd": 15301690, + "marketcap_usd": 15412946, "name": "Cortex", "network": "eth", "shortcut": "CTXC", @@ -6865,7 +6879,7 @@ "links": { "Homepage": "https://www.civic.com" }, - "marketcap_usd": 16000793, + "marketcap_usd": 15817527, "name": "CVC", "network": "eth", "shortcut": "CVC", @@ -6892,7 +6906,7 @@ "links": { "Homepage": "http://www.cybervein.org" }, - "marketcap_usd": 5714964, + "marketcap_usd": 5133656, "name": "CyberVein", "network": "eth", "shortcut": "CVT", @@ -6948,7 +6962,7 @@ "Github": "https://github.com/cargoxio", "Homepage": "https://cargox.io" }, - "marketcap_usd": 1803762, + "marketcap_usd": 1775312, "name": "CargoX", "network": "eth", "shortcut": "CXO", @@ -6975,7 +6989,7 @@ "links": { "Homepage": "https://cyberfmradio.com" }, - "marketcap_usd": 131639, + "marketcap_usd": 112033, "name": "CyberFM", "network": "eth", "shortcut": "CYFM", @@ -7002,7 +7016,7 @@ "links": { "Homepage": "https://cybermusic.io" }, - "marketcap_usd": 49477, + "marketcap_usd": 48547, "name": "CyberMusic", "network": "eth", "shortcut": "CYMT", @@ -7029,7 +7043,7 @@ "links": { "Homepage": "http://www.canonchain.com" }, - "marketcap_usd": 4019154, + "marketcap_usd": 3642653, "name": "CanonChain", "network": "eth", "shortcut": "CZR", @@ -7110,7 +7124,7 @@ "links": { "Homepage": "https://dacsee.io/#" }, - "marketcap_usd": 2343819, + "marketcap_usd": 2318226, "name": "DACSEE", "network": "eth", "shortcut": "DACS", @@ -7137,7 +7151,7 @@ "links": { "Homepage": "https://dadi.cloud" }, - "marketcap_usd": 2372986, + "marketcap_usd": 2240326, "name": "DADI", "network": "eth", "shortcut": "DADI", @@ -7165,7 +7179,7 @@ "Github": "https://github.com/makerdao", "Homepage": "https://makerdao.com" }, - "marketcap_usd": 75666922, + "marketcap_usd": 76915227, "name": "Dai Stablecoin v1.0", "network": "eth", "shortcut": "DAI", @@ -7192,7 +7206,7 @@ "links": { "Homepage": "http://www.dalecoin.org" }, - "marketcap_usd": 8336, + "marketcap_usd": 8948, "name": "DaleCoin", "network": "eth", "shortcut": "DALC", @@ -7220,7 +7234,7 @@ "Github": "https://github.com/project-daneel", "Homepage": "https://daneel.io" }, - "marketcap_usd": 264480, + "marketcap_usd": 259293, "name": "DaneelToken", "network": "eth", "shortcut": "DAN", @@ -7274,7 +7288,7 @@ "links": { "Homepage": "https://datum.org" }, - "marketcap_usd": 625404, + "marketcap_usd": 636561, "name": "Datum Token", "network": "eth", "shortcut": "DAT", @@ -7330,7 +7344,7 @@ "Github": "https://github.com/streamr-dev", "Homepage": "https://www.streamr.com" }, - "marketcap_usd": 12001717, + "marketcap_usd": 11563465, "name": "DATACoin", "network": "eth", "shortcut": "DATACoin", @@ -7357,7 +7371,7 @@ "links": { "Homepage": "https://www.datx.co" }, - "marketcap_usd": 821408, + "marketcap_usd": 770422, "name": "DATx", "network": "eth", "shortcut": "DATX", @@ -7385,7 +7399,7 @@ "Github": "https://github.com/DAVFoundation", "Homepage": "https://dav.network/" }, - "marketcap_usd": 934513, + "marketcap_usd": 922785, "name": "DAV Token", "network": "eth", "shortcut": "DAV", @@ -7412,7 +7426,7 @@ "links": { "Homepage": "https://www.daex.io" }, - "marketcap_usd": 1590908, + "marketcap_usd": 1683930, "name": "DAEX", "network": "eth", "shortcut": "DAX", @@ -7467,7 +7481,7 @@ "Github": "https://github.com/chronologic", "Homepage": "https://chronologic.network" }, - "marketcap_usd": 115115, + "marketcap_usd": 110326, "name": "ChronoLogic DAY", "network": "eth", "shortcut": "DAY", @@ -7494,7 +7508,7 @@ "links": { "Homepage": "https://www.decent.bet" }, - "marketcap_usd": 3838424, + "marketcap_usd": 5263317, "name": "DecentBet", "network": "eth", "shortcut": "DBET", @@ -7550,7 +7564,7 @@ "Github": "https://github.com/DistributedBanking/DCC", "Homepage": "http://dcc.finance" }, - "marketcap_usd": 3233938, + "marketcap_usd": 3004452, "name": "Distributed Credit Chain", "network": "eth", "shortcut": "DCC", @@ -7605,7 +7619,7 @@ "Github": "https://github.com/Dentacoin", "Homepage": "https://dentacoin.com" }, - "marketcap_usd": 22444222, + "marketcap_usd": 20344598, "name": "Dentacoin", "network": "eth", "shortcut": "DCN", @@ -7660,7 +7674,7 @@ "links": { "Homepage": "https://debitum.network/" }, - "marketcap_usd": 636367, + "marketcap_usd": 624887, "name": "DEBITUM", "network": "eth", "shortcut": "DEB", @@ -7715,7 +7729,7 @@ "links": { "Homepage": "https://deltachain.tech" }, - "marketcap_usd": 14814, + "marketcap_usd": 15940, "name": "DeltaChain", "network": "eth", "shortcut": "DELTA", @@ -7742,7 +7756,7 @@ "links": { "Homepage": "https://www.dentwireless.com" }, - "marketcap_usd": 31855376, + "marketcap_usd": 29114554, "name": "DENT", "network": "eth", "shortcut": "DENT", @@ -7769,7 +7783,7 @@ "links": { "Homepage": "https://www.dew.one" }, - "marketcap_usd": 6450318, + "marketcap_usd": 7080603, "name": "DEW", "network": "eth", "shortcut": "DEW", @@ -7796,7 +7810,7 @@ "links": { "Homepage": "https://www.coinbit.co.kr/" }, - "marketcap_usd": 7396678, + "marketcap_usd": 10901160, "name": "DEX", "network": "eth", "shortcut": "DEX", @@ -7823,7 +7837,7 @@ "links": { "Homepage": "https://www.dgx.io" }, - "marketcap_usd": 31080758, + "marketcap_usd": 30566636, "name": "Digix DAO", "network": "eth", "shortcut": "DGD", @@ -7879,7 +7893,7 @@ "Github": "https://github.com/dragonglasscom", "Homepage": "https://dragonglass.com/" }, - "marketcap_usd": 34199, + "marketcap_usd": 34878, "name": "Dragonglass", "network": "eth", "shortcut": "DGS", @@ -7907,7 +7921,7 @@ "Github": "https://github.com/DigitexFutures", "Homepage": "https://digitexfutures.com/" }, - "marketcap_usd": 24660426, + "marketcap_usd": 24517858, "name": "DigitexFutures", "network": "eth", "shortcut": "DGTX", @@ -7935,7 +7949,7 @@ "Github": "https://github.com/DigixGlobal", "Homepage": "https://digix.global" }, - "marketcap_usd": 3796802, + "marketcap_usd": 4302735, "name": "Digix Gold Token", "network": "eth", "shortcut": "DGX", @@ -7990,7 +8004,7 @@ "links": { "Homepage": "https://etheroll.com" }, - "marketcap_usd": 1630795, + "marketcap_usd": 1894146, "name": "Etheroll", "network": "eth", "shortcut": "DICE", @@ -8017,7 +8031,7 @@ "links": { "Homepage": "https://inmediate.io" }, - "marketcap_usd": 181632, + "marketcap_usd": 170896, "name": "Digital Insurance Token", "network": "eth", "shortcut": "DIT", @@ -8071,7 +8085,7 @@ "links": { "Homepage": "https://www.agrello.org" }, - "marketcap_usd": 9540744, + "marketcap_usd": 9209718, "name": "Agrello", "network": "eth", "shortcut": "DLT", @@ -8099,7 +8113,7 @@ "Github": "https://github.com/suntechsoft/dmarket-smartcontract", "Homepage": "https://dmarket.com" }, - "marketcap_usd": 10334708, + "marketcap_usd": 10373950, "name": "DMarket Token", "network": "eth", "shortcut": "DMT", @@ -8126,7 +8140,7 @@ "links": { "Homepage": "https://www.encrypgen.com" }, - "marketcap_usd": 2820585, + "marketcap_usd": 2896051, "name": "EncrypGen", "network": "eth", "shortcut": "DNA", @@ -8154,7 +8168,7 @@ "Github": "https://github.com/district0x", "Homepage": "https://district0x.io" }, - "marketcap_usd": 6276055, + "marketcap_usd": 6269319, "name": "District0x Network Token", "network": "eth", "shortcut": "DNT", @@ -8209,7 +8223,7 @@ "links": { "Homepage": "https://dock.io" }, - "marketcap_usd": 3607936, + "marketcap_usd": 3596255, "name": "Dock", "network": "eth", "shortcut": "DOCK", @@ -8236,7 +8250,7 @@ "links": { "Homepage": "https://www.dorado.tech" }, - "marketcap_usd": 74530, + "marketcap_usd": 70571, "name": "Dorado", "network": "eth", "shortcut": "DOR", @@ -8263,7 +8277,7 @@ "links": { "Homepage": "https://dovu.io" }, - "marketcap_usd": 1414272, + "marketcap_usd": 1354761, "name": "Dovu", "network": "eth", "shortcut": "DOV", @@ -8345,7 +8359,7 @@ "Github": "https://github.com/dragonchain/dragonchain", "Homepage": "https://dragonchain.com" }, - "marketcap_usd": 16941222, + "marketcap_usd": 15766275, "name": "Dragon", "network": "eth", "shortcut": "DRGN", @@ -8372,7 +8386,7 @@ "links": { "Homepage": "https://www.dcorp.it" }, - "marketcap_usd": 220175, + "marketcap_usd": 228462, "name": "DCORP Utility", "network": "eth", "shortcut": "DRPU", @@ -8399,7 +8413,7 @@ "links": { "Homepage": "https://token.domraider.com" }, - "marketcap_usd": 1051281, + "marketcap_usd": 989025, "name": "DomRaider", "network": "eth", "shortcut": "DRT", @@ -8538,7 +8552,7 @@ "Github": "https://github.com/dethertech", "Homepage": "https://dether.io" }, - "marketcap_usd": 579774, + "marketcap_usd": 571669, "name": "dether", "network": "eth", "shortcut": "DTH", @@ -8565,7 +8579,7 @@ "links": { "Homepage": "https://www.tokens.net" }, - "marketcap_usd": 12450274, + "marketcap_usd": 12996431, "name": "DTR", "network": "eth", "shortcut": "DTR", @@ -8592,7 +8606,7 @@ "links": { "Homepage": "https://datarius.io" }, - "marketcap_usd": 65299, + "marketcap_usd": 61228, "name": "Datarius Credit", "network": "eth", "shortcut": "DTRC", @@ -8647,7 +8661,7 @@ "links": { "Homepage": "https://datawallet.com" }, - "marketcap_usd": 811710, + "marketcap_usd": 784845, "name": "Datawallet", "network": "eth", "shortcut": "DXT", @@ -8729,7 +8743,7 @@ "links": { "Homepage": "https://earth-token.com" }, - "marketcap_usd": 42769, + "marketcap_usd": 42871, "name": "Earth Token", "network": "eth", "shortcut": "EARTH", @@ -8756,7 +8770,7 @@ "links": { "Homepage": "https://ebcoin.io" }, - "marketcap_usd": 2155363, + "marketcap_usd": 2024367, "name": "EBCoin", "network": "eth", "shortcut": "EBC", @@ -8837,7 +8851,7 @@ "links": { "Homepage": "https://omnitude.tech" }, - "marketcap_usd": 3980939, + "marketcap_usd": 4139723, "name": "Omnitude", "network": "eth", "shortcut": "ECOM", @@ -8891,7 +8905,7 @@ "links": { "Homepage": "https://edgeless.io" }, - "marketcap_usd": 14946802, + "marketcap_usd": 14992083, "name": "Edgeless", "network": "eth", "shortcut": "EDG", @@ -8918,7 +8932,7 @@ "links": { "Homepage": "https://eidoo.io" }, - "marketcap_usd": 19094369, + "marketcap_usd": 19226853, "name": "Eidoo", "network": "eth", "shortcut": "EDO", @@ -8946,7 +8960,7 @@ "Github": "https://github.com/EndorCoin", "Homepage": "https://www.endor.com" }, - "marketcap_usd": 20273898, + "marketcap_usd": 21253109, "name": "Endor Protocol Token", "network": "eth", "shortcut": "EDR", @@ -8974,7 +8988,7 @@ "Github": "https://github.com/egretia", "Homepage": "https://www.egretia.io" }, - "marketcap_usd": 1150596, + "marketcap_usd": 1307613, "name": "Egretia Token", "network": "eth", "shortcut": "EGT", @@ -9029,7 +9043,7 @@ "links": { "Homepage": "https://echolink.info" }, - "marketcap_usd": 1200731, + "marketcap_usd": 1155590, "name": "EchoLink", "network": "eth", "shortcut": "EKO", @@ -9056,7 +9070,7 @@ "links": { "Homepage": "http://ekt8.io" }, - "marketcap_usd": 3451419, + "marketcap_usd": 3205566, "name": "EDUCare", "network": "eth", "shortcut": "EKT", @@ -9083,7 +9097,7 @@ "links": { "Homepage": "https://electrify.asia" }, - "marketcap_usd": 1506337, + "marketcap_usd": 1442689, "name": "Electrify.Asia", "network": "eth", "shortcut": "ELEC", @@ -9111,7 +9125,7 @@ "Github": "https://github.com/aelfProject", "Homepage": "https://aelf.io/" }, - "marketcap_usd": 27564479, + "marketcap_usd": 30283251, "name": "ELF Token", "network": "eth", "shortcut": "ELF", @@ -9138,7 +9152,7 @@ "links": { "Homepage": "https://elixirtoken.io" }, - "marketcap_usd": 299549, + "marketcap_usd": 255068, "name": "Elixir Token", "network": "eth", "shortcut": "ELIX", @@ -9166,7 +9180,7 @@ "Github": "https://github.com/eltcoin", "Homepage": "http://www.eltcoin.tech/" }, - "marketcap_usd": 47322, + "marketcap_usd": 45159, "name": "ELTCOIN", "network": "eth", "shortcut": "ELTCOIN", @@ -9194,7 +9208,7 @@ "Github": "https://github.com/Elysian-ELY", "Homepage": "https://elycoin.io" }, - "marketcap_usd": 161888, + "marketcap_usd": 120036, "name": "ELYCOIN", "network": "eth", "shortcut": "ELY", @@ -9360,7 +9374,7 @@ "Github": "https://github.com/enigmampc", "Homepage": "https://enigma.co/" }, - "marketcap_usd": 19521592, + "marketcap_usd": 19021856, "name": "Enigma", "network": "eth", "shortcut": "ENG", @@ -9387,7 +9401,7 @@ "links": { "Homepage": "https://engagementtoken.com" }, - "marketcap_usd": 60338, + "marketcap_usd": 59787, "name": "Engagement Token", "network": "eth", "shortcut": "ENGT", @@ -9415,7 +9429,7 @@ "Github": "https://github.com/enjin/contracts", "Homepage": "https://enjincoin.io" }, - "marketcap_usd": 21145351, + "marketcap_usd": 20129363, "name": "ENJIN", "network": "eth", "shortcut": "ENJ", @@ -9498,7 +9512,7 @@ "links": { "Homepage": "https://emphy.io" }, - "marketcap_usd": 90727, + "marketcap_usd": 86733, "name": "Emphy", "network": "eth", "shortcut": "EPY", @@ -9525,7 +9539,7 @@ "links": { "Homepage": "http://www.equaltoken.io" }, - "marketcap_usd": 327548, + "marketcap_usd": 210753, "name": "Equal", "network": "eth", "shortcut": "EQL", @@ -9552,7 +9566,7 @@ "links": { "Homepage": "https://eroscoin.org" }, - "marketcap_usd": 708648, + "marketcap_usd": 710131, "name": "Eroscoin", "network": "eth", "shortcut": "ERO", @@ -9580,7 +9594,7 @@ "Github": "https://github.com/Krishtopa/ContractEristica", "Homepage": "https://eristica.com/" }, - "marketcap_usd": 430244, + "marketcap_usd": 446017, "name": "Eristica", "network": "eth", "shortcut": "ERT", @@ -9608,7 +9622,7 @@ "Github": "https://github.com/EtherSportz/ESZCoin", "Homepage": "https://ethersportz.com" }, - "marketcap_usd": 127985, + "marketcap_usd": 127661, "name": "ESZCoin", "network": "eth", "shortcut": "ESZ", @@ -9635,7 +9649,7 @@ "links": { "Homepage": "https://www.ethbits.com" }, - "marketcap_usd": 301083, + "marketcap_usd": 297492, "name": "Ethbits", "network": "eth", "shortcut": "ETBS", @@ -9689,7 +9703,7 @@ "links": { "Homepage": "https://www.etgproject.org" }, - "marketcap_usd": 40699, + "marketcap_usd": 40109, "name": "Ethereum Gold", "network": "eth", "shortcut": "ETG", @@ -9743,7 +9757,7 @@ "links": { "Homepage": "https://energitoken.com" }, - "marketcap_usd": 983555, + "marketcap_usd": 951521, "name": "EnergiToken", "network": "eth", "shortcut": "ETK", @@ -9798,7 +9812,7 @@ "links": { "Homepage": "https://stasis.net" }, - "marketcap_usd": 34888024, + "marketcap_usd": 34607164, "name": "STASIS EURS", "network": "eth", "shortcut": "EURS", @@ -9852,7 +9866,7 @@ "links": { "Homepage": "https://eventchain.io" }, - "marketcap_usd": 424670, + "marketcap_usd": 435096, "name": "EventChain", "network": "eth", "shortcut": "EVC", @@ -9880,7 +9894,7 @@ "Github": "https://github.com/devery", "Homepage": "https://devery.io" }, - "marketcap_usd": 445506, + "marketcap_usd": 412656, "name": "EVE", "network": "eth", "shortcut": "EVE", @@ -9907,7 +9921,7 @@ "links": { "Homepage": "https://everex.io " }, - "marketcap_usd": 5324364, + "marketcap_usd": 5177248, "name": "EVX Token", "network": "eth", "shortcut": "EVX", @@ -9963,7 +9977,7 @@ "Github": "https://github.com/eXMRcoin/", "Homepage": "https://exmr.io/" }, - "marketcap_usd": 142723, + "marketcap_usd": 215662, "name": "eXMRcoin", "network": "eth", "shortcut": "EXMR", @@ -9990,7 +10004,7 @@ "links": { "Homepage": "https://exrnchain.com" }, - "marketcap_usd": 1436442, + "marketcap_usd": 1516786, "name": "EXRNchain", "network": "eth", "shortcut": "EXRN", @@ -10017,7 +10031,7 @@ "links": { "Homepage": "https://experty.io/en" }, - "marketcap_usd": 748496, + "marketcap_usd": 745316, "name": "Experty", "network": "eth", "shortcut": "EXY", @@ -10044,7 +10058,7 @@ "links": { "Homepage": "https://ico.ezpos.io" }, - "marketcap_usd": 61971, + "marketcap_usd": 61495, "name": "EZToken", "network": "eth", "shortcut": "EZT", @@ -10126,7 +10140,7 @@ "links": { "Homepage": "https://tokensale.faceter.io" }, - "marketcap_usd": 590238, + "marketcap_usd": 499473, "name": "Faceter", "network": "eth", "shortcut": "FACE", @@ -10208,7 +10222,7 @@ "links": { "Homepage": "https://friendz.io" }, - "marketcap_usd": 1823769, + "marketcap_usd": 1727990, "name": "Friendz", "network": "eth", "shortcut": "FDZ", @@ -10319,7 +10333,7 @@ "Github": "https://github.com/FortKnoxster", "Homepage": "https://fortknoxster.com" }, - "marketcap_usd": 222138, + "marketcap_usd": 213907, "name": "Knoxstertoken", "network": "eth", "shortcut": "FKX", @@ -10346,7 +10360,7 @@ "links": { "Homepage": "http://flixxo.com" }, - "marketcap_usd": 1052537, + "marketcap_usd": 1142834, "name": "FLIXX", "network": "eth", "shortcut": "FLIXX", @@ -10373,7 +10387,7 @@ "links": { "Homepage": "https://firelotto.io" }, - "marketcap_usd": 834145, + "marketcap_usd": 887008, "name": "Fire Lotto", "network": "eth", "shortcut": "FLOT", @@ -10401,7 +10415,7 @@ "Github": "https://github.com/gameflip", "Homepage": "https://gameflip.com" }, - "marketcap_usd": 849411, + "marketcap_usd": 869556, "name": "FLIP Token", "network": "eth", "shortcut": "FLP", @@ -10455,7 +10469,7 @@ "links": { "Homepage": "https://ico.fluzfluz.com" }, - "marketcap_usd": 3524060, + "marketcap_usd": 2172784, "name": "Fluz Fluz Global", "network": "eth", "shortcut": "FLUZ", @@ -10510,7 +10524,7 @@ "Github": "https://github.com/FormosaFinancial", "Homepage": "https://www.formosa.financial/" }, - "marketcap_usd": 553348, + "marketcap_usd": 541670, "name": "Formosa Financial Token", "network": "eth", "shortcut": "FMF", @@ -10538,7 +10552,7 @@ "Github": "https://github.com/FundRequest", "Homepage": "https://fundrequest.io" }, - "marketcap_usd": 142879, + "marketcap_usd": 122644, "name": "FundRequest", "network": "eth", "shortcut": "FND", @@ -10565,7 +10579,7 @@ "links": { "Homepage": "https://www.foglink.io" }, - "marketcap_usd": 1458490, + "marketcap_usd": 1407989, "name": "FNKOS", "network": "eth", "shortcut": "FNKOS", @@ -10592,7 +10606,7 @@ "links": { "Homepage": "https://fintab.io/ico" }, - "marketcap_usd": 6066, + "marketcap_usd": 6904, "name": "Fintab", "network": "eth", "shortcut": "FNTB", @@ -10619,7 +10633,7 @@ "links": { "Homepage": "https://www.foodcoin.io" }, - "marketcap_usd": 773854, + "marketcap_usd": 583573, "name": "FoodCoin", "network": "eth", "shortcut": "FOOD", @@ -10646,7 +10660,7 @@ "links": { "Homepage": "https://www.fota.io" }, - "marketcap_usd": 3514022, + "marketcap_usd": 3517706, "name": "Fortuna", "network": "eth", "shortcut": "FOTA", @@ -10700,7 +10714,7 @@ "links": { "Homepage": "http://www.freyrchain.org" }, - "marketcap_usd": 292185, + "marketcap_usd": 319806, "name": "Freyrchain", "network": "eth", "shortcut": "FREC", @@ -10727,7 +10741,7 @@ "links": { "Homepage": "https://fusion.org" }, - "marketcap_usd": 8923260, + "marketcap_usd": 8603041, "name": "Fusion", "network": "eth", "shortcut": "FSN", @@ -10754,7 +10768,7 @@ "links": { "Homepage": "https://fabrictoken.io" }, - "marketcap_usd": 79769, + "marketcap_usd": 54036, "name": "Fabric Token", "network": "eth", "shortcut": "FT", @@ -10781,7 +10795,7 @@ "links": { "Homepage": "https://fanstime.org" }, - "marketcap_usd": 1464424, + "marketcap_usd": 1417293, "name": "FansTime", "network": "eth", "shortcut": "FTI", @@ -10836,7 +10850,7 @@ "Github": "https://github.com/farmatrust", "Homepage": "https://www.farmatrust.io" }, - "marketcap_usd": 1751126, + "marketcap_usd": 1837776, "name": "FarmaTrust Token", "network": "eth", "shortcut": "FTT", @@ -10863,7 +10877,7 @@ "links": { "Homepage": "https://www.fintrux.com" }, - "marketcap_usd": 1259441, + "marketcap_usd": 1480931, "name": "FintruX Network", "network": "eth", "shortcut": "FTX", @@ -10891,7 +10905,7 @@ "Github": "https://github.com/futuraxproject", "Homepage": "https://futurax.global" }, - "marketcap_usd": 89418, + "marketcap_usd": 87313, "name": "FUTURAX", "network": "eth", "shortcut": "FTXT", @@ -10919,7 +10933,7 @@ "Github": "https://github.com/etherparty", "Homepage": "https://etherparty.io" }, - "marketcap_usd": 3928253, + "marketcap_usd": 3774338, "name": "Etherparty FUEL", "network": "eth", "shortcut": "FUEL", @@ -10946,7 +10960,7 @@ "links": { "Homepage": "https://funfair.io" }, - "marketcap_usd": 21571805, + "marketcap_usd": 22513528, "name": "Funfair", "network": "eth", "shortcut": "FUN", @@ -11001,7 +11015,7 @@ "links": { "Homepage": "https://fuzex.co" }, - "marketcap_usd": 2102314, + "marketcap_usd": 1939634, "name": "FuzeX", "network": "eth", "shortcut": "FXT", @@ -11055,7 +11069,7 @@ "links": { "Homepage": "https://flyp.me" }, - "marketcap_usd": 243839, + "marketcap_usd": 240080, "name": "FlypMe", "network": "eth", "shortcut": "FYP", @@ -11111,7 +11125,7 @@ "Github": "https://github.com/BlockchainLabsNZ/gambit", "Homepage": "http://gambitcrypto.com" }, - "marketcap_usd": 1369964, + "marketcap_usd": 1339054, "name": "Gambit", "network": "eth", "shortcut": "GAM", @@ -11138,7 +11152,7 @@ "links": { "Homepage": "https://www.gatcoin.io" }, - "marketcap_usd": 833185, + "marketcap_usd": 922163, "name": "Global Awards Token", "network": "eth", "shortcut": "GAT", @@ -11330,7 +11344,7 @@ "links": { "Homepage": "https://gems.org" }, - "marketcap_usd": 1176616, + "marketcap_usd": 1210221, "name": "Gems", "network": "eth", "shortcut": "GEM", @@ -11358,7 +11372,7 @@ "Github": "https://github.com/daostack", "Homepage": "https://daostack.io" }, - "marketcap_usd": 3996888, + "marketcap_usd": 4111258, "name": "DAOstack", "network": "eth", "shortcut": "GEN", @@ -11385,7 +11399,7 @@ "links": { "Homepage": "https://parkgene.io" }, - "marketcap_usd": 333050, + "marketcap_usd": 268720, "name": "Parkgene", "network": "eth", "shortcut": "GENE", @@ -11413,7 +11427,7 @@ "Github": "https://github.com/Getprotocol", "Homepage": "http://www.get-protocol.io" }, - "marketcap_usd": 2502634, + "marketcap_usd": 2585460, "name": "GET", "network": "eth", "shortcut": "GET", @@ -11495,7 +11509,7 @@ "links": { "Homepage": "https://gladius.io" }, - "marketcap_usd": 778954, + "marketcap_usd": 768532, "name": "Gladius", "network": "eth", "shortcut": "GLA", @@ -11549,7 +11563,7 @@ "links": { "Homepage": "https://gnosis.pm" }, - "marketcap_usd": 12955844, + "marketcap_usd": 12032743, "name": "Gnosis", "network": "eth", "shortcut": "GNO", @@ -11576,7 +11590,7 @@ "links": { "Homepage": "https://golem.network" }, - "marketcap_usd": 54334824, + "marketcap_usd": 54225783, "name": "Golem", "network": "eth", "shortcut": "GNT", @@ -11603,7 +11617,7 @@ "links": { "Homepage": "https://genaro.network" }, - "marketcap_usd": 3746717, + "marketcap_usd": 3864061, "name": "Genaro Network", "network": "eth", "shortcut": "GNX", @@ -11686,7 +11700,7 @@ "links": { "Homepage": "https://gonetwork.co/index.html" }, - "marketcap_usd": 603020, + "marketcap_usd": 533887, "name": "GoNetwork", "network": "eth", "shortcut": "GOT", @@ -11713,7 +11727,7 @@ "links": { "Homepage": "https://gridplus.io/token-sale" }, - "marketcap_usd": 3425057, + "marketcap_usd": 3706930, "name": "GRID", "network": "eth", "shortcut": "GRID", @@ -11740,7 +11754,7 @@ "links": { "Homepage": "https://www.greenmed.io" }, - "marketcap_usd": 56934, + "marketcap_usd": 60841, "name": "GreenMed", "network": "eth", "shortcut": "GRMD", @@ -11823,7 +11837,7 @@ "links": { "Homepage": "https://www.gsc.social" }, - "marketcap_usd": 1628545, + "marketcap_usd": 1573445, "name": "Global Social Chain", "network": "eth", "shortcut": "GSC", @@ -11878,7 +11892,7 @@ "Github": "https://github.com/GameLeLe", "Homepage": "https://game.com" }, - "marketcap_usd": 10584401, + "marketcap_usd": 11407895, "name": "GTC Token", "network": "eth", "shortcut": "GTC", @@ -11934,7 +11948,7 @@ "Github": "https://github.com/GIFTO-io", "Homepage": "https://gifto.io/" }, - "marketcap_usd": 12535222, + "marketcap_usd": 12698498, "name": "Gifto", "network": "eth", "shortcut": "GTO", @@ -11961,7 +11975,7 @@ "links": { "Homepage": "https://peerguess.com" }, - "marketcap_usd": 18824, + "marketcap_usd": 15791, "name": "Peerguess", "network": "eth", "shortcut": "GUESS", @@ -12016,7 +12030,7 @@ "links": { "Homepage": "https://matchpool.co" }, - "marketcap_usd": 1235975, + "marketcap_usd": 1222440, "name": "Matchpool", "network": "eth", "shortcut": "GUP", @@ -12044,7 +12058,7 @@ "Github": "https://github.com/GenesisVision", "Homepage": "https://genesis.vision" }, - "marketcap_usd": 15130370, + "marketcap_usd": 15256274, "name": "Genesis Vision", "network": "eth", "shortcut": "GVT", @@ -12209,7 +12223,7 @@ "links": { "Homepage": "https://www.showhand.io" }, - "marketcap_usd": 111901, + "marketcap_usd": 109975, "name": "ShowHand", "network": "eth", "shortcut": "HAND", @@ -12290,7 +12304,7 @@ "links": { "Homepage": "https://heartbout.com" }, - "marketcap_usd": 310364, + "marketcap_usd": 284437, "name": "HeartBout", "network": "eth", "shortcut": "HB", @@ -12317,7 +12331,7 @@ "links": { "Homepage": "https://www.hubii.network" }, - "marketcap_usd": 1957932, + "marketcap_usd": 1952568, "name": "Hubii Network", "network": "eth", "shortcut": "HBT", @@ -12344,7 +12358,7 @@ "links": { "Homepage": "https://www.hbzcoin.com/#" }, - "marketcap_usd": 366394, + "marketcap_usd": 359590, "name": "HBZ coin", "network": "eth", "shortcut": "HBZ", @@ -12398,7 +12412,7 @@ "links": { "Homepage": "https://heronode.io" }, - "marketcap_usd": 382528, + "marketcap_usd": 379140, "name": "HeroNode", "network": "eth", "shortcut": "HER", @@ -12426,7 +12440,7 @@ "Github": "https://github.com/myHelloGold/Foundation", "Homepage": "https://www.hellogold.org" }, - "marketcap_usd": 450769, + "marketcap_usd": 472930, "name": "HGT", "network": "eth", "shortcut": "HGT", @@ -12535,7 +12549,7 @@ "links": { "Homepage": "https://hacken.io" }, - "marketcap_usd": 1068277, + "marketcap_usd": 993519, "name": "Hacken", "network": "eth", "shortcut": "HKN", @@ -12617,7 +12631,7 @@ "links": { "Homepage": "https://humaniq.co" }, - "marketcap_usd": 1369339, + "marketcap_usd": 1365259, "name": "HMQ", "network": "eth", "shortcut": "HMQ", @@ -12672,7 +12686,7 @@ "Github": "https://github.com/ethorse", "Homepage": "https://ethorse.com" }, - "marketcap_usd": 371344, + "marketcap_usd": 429251, "name": "HORSE", "network": "eth", "shortcut": "HORSE", @@ -12700,7 +12714,7 @@ "Github": "https://github.com/Holo-Host", "Homepage": "https://holo.host/" }, - "marketcap_usd": 173061191, + "marketcap_usd": 150345855, "name": "Holo Token", "network": "eth", "shortcut": "HOT (Holo)", @@ -12727,7 +12741,7 @@ "links": { "Homepage": "https://thehydrofoundation.com/" }, - "marketcap_usd": 1783360, + "marketcap_usd": 1761743, "name": "Hydro Protocol", "network": "eth", "shortcut": "HOT (Hydro)", @@ -12754,7 +12768,7 @@ "links": { "Homepage": "https://horizonstate.com" }, - "marketcap_usd": 1414552, + "marketcap_usd": 1350570, "name": "HST", "network": "eth", "shortcut": "HST", @@ -12781,7 +12795,7 @@ "links": { "Homepage": "https://www.hbg.com" }, - "marketcap_usd": 46680814, + "marketcap_usd": 47290534, "name": "Huobi Token", "network": "eth", "shortcut": "HT", @@ -12809,7 +12823,7 @@ "Github": "https://github.com/HiveProjectLTD", "Homepage": "https://www.hiveterminal.com" }, - "marketcap_usd": 1165482, + "marketcap_usd": 1158314, "name": "Hiveterminal Token", "network": "eth", "shortcut": "HVN", @@ -12837,7 +12851,7 @@ "Github": "https://github.com/hydrogen-dev", "Homepage": "https://www.hydrogenplatform.com/hydro" }, - "marketcap_usd": 6165616, + "marketcap_usd": 5843228, "name": "Hydro", "network": "eth", "shortcut": "HYDRO", @@ -12919,7 +12933,7 @@ "links": { "Homepage": "https://www.iconomi.net" }, - "marketcap_usd": 8658746, + "marketcap_usd": 8314904, "name": "ICONOMI", "network": "eth", "shortcut": "ICN", @@ -13054,7 +13068,7 @@ "links": { "Homepage": "https://indahash.com" }, - "marketcap_usd": 985654, + "marketcap_usd": 1069163, "name": "indaHash", "network": "eth", "shortcut": "IDH", @@ -13081,7 +13095,7 @@ "links": { "Homepage": "http://iethereum.trade" }, - "marketcap_usd": 630138, + "marketcap_usd": 642464, "name": "iEthereum", "network": "eth", "shortcut": "IETH", @@ -13108,7 +13122,7 @@ "links": { "Homepage": "https://investfeed.com" }, - "marketcap_usd": 311296, + "marketcap_usd": 346134, "name": "InvestFeed", "network": "eth", "shortcut": "IFT", @@ -13135,7 +13149,7 @@ "links": { "Homepage": "http://igtoken.net" }, - "marketcap_usd": 40735, + "marketcap_usd": 38751, "name": "IGToken", "network": "eth", "shortcut": "IG", @@ -13162,7 +13176,7 @@ "links": { "Homepage": "https://ihtcoin.com" }, - "marketcap_usd": 6452211, + "marketcap_usd": 7127380, "name": "I HOUSE TOKEN", "network": "eth", "shortcut": "IHT", @@ -13271,7 +13285,7 @@ "links": { "Homepage": "https://indorse.io" }, - "marketcap_usd": 398631, + "marketcap_usd": 656058, "name": "Indorse", "network": "eth", "shortcut": "IND", @@ -13298,7 +13312,7 @@ "links": { "Homepage": "https://iungo.network" }, - "marketcap_usd": 177014, + "marketcap_usd": 197420, "name": "Iungo", "network": "eth", "shortcut": "ING", @@ -13325,7 +13339,7 @@ "links": { "Homepage": "https://ins.world" }, - "marketcap_usd": 8730100, + "marketcap_usd": 8547531, "name": "INS", "network": "eth", "shortcut": "INS", @@ -13352,7 +13366,7 @@ "links": { "Homepage": "https://insights.network" }, - "marketcap_usd": 1035483, + "marketcap_usd": 998461, "name": "Insights Network", "network": "eth", "shortcut": "INSTAR", @@ -13379,7 +13393,7 @@ "links": { "Homepage": "https://intchain.io" }, - "marketcap_usd": 4552395, + "marketcap_usd": 4339374, "name": "Internet Node Token", "network": "eth", "shortcut": "INT", @@ -13406,7 +13420,7 @@ "links": { "Homepage": "https://www.invacio.com" }, - "marketcap_usd": 1230654, + "marketcap_usd": 1180085, "name": "Invacio", "network": "eth", "shortcut": "INV", @@ -13434,7 +13448,7 @@ "Github": "https://github.com/Internxt/", "Homepage": "https://internxt.com/" }, - "marketcap_usd": 547245, + "marketcap_usd": 595277, "name": "Internxt", "network": "eth", "shortcut": "INXT", @@ -13461,7 +13475,7 @@ "links": { "Homepage": "https://iost.io/" }, - "marketcap_usd": 72804789, + "marketcap_usd": 73194890, "name": "IOSToken", "network": "eth", "shortcut": "IOST", @@ -13489,7 +13503,7 @@ "Github": "https://github.com/iotexproject/iotex-core", "Homepage": "http://iotex.io/" }, - "marketcap_usd": 17078792, + "marketcap_usd": 16715573, "name": "IoTeX Network", "network": "eth", "shortcut": "IOTX", @@ -13517,7 +13531,7 @@ "Github": "https://github.com/InsurePal", "Homepage": "https://insurepal.io/" }, - "marketcap_usd": 897193, + "marketcap_usd": 875367, "name": "InsurePal token", "network": "eth", "shortcut": "IPL", @@ -13544,7 +13558,7 @@ "links": { "Homepage": "https://ip.sx" }, - "marketcap_usd": 563792, + "marketcap_usd": 541377, "name": "IPSX", "network": "eth", "shortcut": "IPSX", @@ -13572,7 +13586,7 @@ "Github": "https://github.com/iqeon", "Homepage": "https://iqeon.io/" }, - "marketcap_usd": 634614, + "marketcap_usd": 573228, "name": "IQeon", "network": "eth", "shortcut": "IQN", @@ -13628,7 +13642,7 @@ "Github": "https://github.com/IoTChainCode", "Homepage": "https://iotchain.io/" }, - "marketcap_usd": 6809090, + "marketcap_usd": 6738315, "name": "IoT Chain", "network": "eth", "shortcut": "ITC", @@ -13656,7 +13670,7 @@ "Github": "https://github.com/IntelligentTrading", "Homepage": "http://intelligenttrading.org" }, - "marketcap_usd": 104614, + "marketcap_usd": 84495, "name": "ITT Token", "network": "eth", "shortcut": "ITT", @@ -13683,7 +13697,7 @@ "links": { "Homepage": "https://www.ivykoin.com" }, - "marketcap_usd": 2537047, + "marketcap_usd": 2599452, "name": "IvyKoin Public Network Tokens", "network": "eth", "shortcut": "IVY", @@ -13710,7 +13724,7 @@ "links": { "Homepage": "https://www.insurex.co" }, - "marketcap_usd": 1282137, + "marketcap_usd": 1319519, "name": "InsureX", "network": "eth", "shortcut": "IXT", @@ -13765,7 +13779,7 @@ "Github": "https://github.com/jet8", "Homepage": "https://jet8.io" }, - "marketcap_usd": 461688, + "marketcap_usd": 490954, "name": "J8T Token", "network": "eth", "shortcut": "J8T", @@ -13792,7 +13806,7 @@ "links": { "Homepage": "https://jesuscoin.network" }, - "marketcap_usd": 73726, + "marketcap_usd": 94345, "name": "Jesus Coin", "network": "eth", "shortcut": "JC", @@ -13819,7 +13833,7 @@ "links": { "Homepage": "https://jetcoin.io" }, - "marketcap_usd": 164580, + "marketcap_usd": 166825, "name": "JET", "network": "eth", "shortcut": "JET", @@ -13847,7 +13861,7 @@ "Github": "https://github.com/jibrelnetwork", "Homepage": "https://jibrel.network" }, - "marketcap_usd": 5532992, + "marketcap_usd": 5413651, "name": "JNT", "network": "eth", "shortcut": "JNT", @@ -13874,7 +13888,7 @@ "links": { "Homepage": "https://jury.online" }, - "marketcap_usd": 59391, + "marketcap_usd": 58328, "name": "Jury.Online Token", "network": "eth", "shortcut": "JOT", @@ -13928,7 +13942,7 @@ "links": { "Homepage": "http://www.kan.land" }, - "marketcap_usd": 4217103, + "marketcap_usd": 4108073, "name": "BitKan", "network": "eth", "shortcut": "KAN", @@ -13983,7 +13997,7 @@ "Github": "https://github.com/kickico", "Homepage": "https://www.kickico.com" }, - "marketcap_usd": 2963841, + "marketcap_usd": 2820920, "name": "KICK", "network": "eth", "shortcut": "KICK", @@ -14011,7 +14025,7 @@ "Github": "https://github.com/kikinteractive/kin-token", "Homepage": "https://kin.kik.com" }, - "marketcap_usd": 20029135, + "marketcap_usd": 17970358, "name": "Kin Foundation", "network": "eth", "shortcut": "KIN", @@ -14038,7 +14052,7 @@ "links": { "Homepage": "https://kindads.io" }, - "marketcap_usd": 673059, + "marketcap_usd": 624956, "name": "Kind Ads Token", "network": "eth", "shortcut": "KIND", @@ -14066,7 +14080,7 @@ "Github": "https://github.com/KyberNetwork", "Homepage": "https://kyber.network" }, - "marketcap_usd": 18269440, + "marketcap_usd": 19035156, "name": "Kyber Network", "network": "eth", "shortcut": "KNC", @@ -14093,7 +14107,7 @@ "links": { "Homepage": "https://kanadecoin.com" }, - "marketcap_usd": 88489, + "marketcap_usd": 80404, "name": "KanadeCoin", "network": "eth", "shortcut": "KNDC", @@ -14120,7 +14134,7 @@ "links": { "Homepage": "https://kora.network" }, - "marketcap_usd": 216858, + "marketcap_usd": 159665, "name": "Kora Network Token", "network": "eth", "shortcut": "KNT", @@ -14176,7 +14190,7 @@ "Github": "https://github.com/Cryptense/", "Homepage": "https://kryll.io/" }, - "marketcap_usd": 473589, + "marketcap_usd": 464437, "name": "Kryll", "network": "eth", "shortcut": "KRL", @@ -14230,7 +14244,7 @@ "links": { "Homepage": "https://4new.io" }, - "marketcap_usd": 103523, + "marketcap_usd": 88229, "name": "4NEW", "network": "eth", "shortcut": "KWATT", @@ -14285,7 +14299,7 @@ "Github": "https://github.com/latoken", "Homepage": "https://latoken.com/" }, - "marketcap_usd": 6040350, + "marketcap_usd": 6422123, "name": "LATOKEN", "network": "eth", "shortcut": "LA", @@ -14312,7 +14326,7 @@ "links": { "Homepage": "https://lalaworld.io/" }, - "marketcap_usd": 209134, + "marketcap_usd": 193821, "name": "LALA World Token", "network": "eth", "shortcut": "LALA", @@ -14339,7 +14353,7 @@ "links": { "Homepage": "https://latium.org" }, - "marketcap_usd": 1051893, + "marketcap_usd": 880461, "name": "LatiumX", "network": "eth", "shortcut": "LATX", @@ -14366,7 +14380,7 @@ "links": { "Homepage": "https://www.mycred.io" }, - "marketcap_usd": 4181871, + "marketcap_usd": 4088658, "name": "Cred", "network": "eth", "shortcut": "LBA", @@ -14393,7 +14407,7 @@ "links": { "Homepage": "https://www.localcoinswap.com" }, - "marketcap_usd": 1161828, + "marketcap_usd": 1395980, "name": "LocalCoinSwap", "network": "eth", "shortcut": "LCS", @@ -14420,7 +14434,7 @@ "links": { "Homepage": "https://www.leadcoin.network/" }, - "marketcap_usd": 115645, + "marketcap_usd": 95490, "name": "LEADCOIN", "network": "eth", "shortcut": "LDC", @@ -14448,7 +14462,7 @@ "Github": "https://github.com/ETHLend", "Homepage": "https://ethlend.io/" }, - "marketcap_usd": 8056638, + "marketcap_usd": 7808895, "name": "EHTLend", "network": "eth", "shortcut": "LEND", @@ -14475,7 +14489,7 @@ "links": { "Homepage": "https://www.leverj.io" }, - "marketcap_usd": 1275009, + "marketcap_usd": 1196051, "name": "Leverj", "network": "eth", "shortcut": "LEV", @@ -14556,7 +14570,7 @@ "links": { "Homepage": "https://legolas.exchange/" }, - "marketcap_usd": 4402831, + "marketcap_usd": 4534461, "name": "LGO", "network": "eth", "shortcut": "LGO", @@ -14638,7 +14652,7 @@ "Github": "https://github.com/windingtree", "Homepage": "https://windingtree.com/" }, - "marketcap_usd": 2772510, + "marketcap_usd": 2415672, "name": "LIF", "network": "eth", "shortcut": "LIF", @@ -14665,7 +14679,7 @@ "links": { "Homepage": "http://www.lifelabs.io" }, - "marketcap_usd": 914038, + "marketcap_usd": 797690, "name": "LIFE", "network": "eth", "shortcut": "LIFE", @@ -14693,7 +14707,7 @@ "Github": "https://github.com/likecoin", "Homepage": "https://like.co" }, - "marketcap_usd": 774896, + "marketcap_usd": 805175, "name": "LikeCoin", "network": "eth", "shortcut": "LIKE", @@ -14720,7 +14734,7 @@ "links": { "Homepage": "https://link.smartcontract.com" }, - "marketcap_usd": 138809272, + "marketcap_usd": 140373979, "name": "Chainlink", "network": "eth", "shortcut": "LINK (Chainlink)", @@ -14774,7 +14788,7 @@ "links": { "Homepage": "https://www.linkey.info" }, - "marketcap_usd": 39063630, + "marketcap_usd": 39584137, "name": "Linkey", "network": "eth", "shortcut": "LKY", @@ -14802,7 +14816,7 @@ "Github": "https://github.com/GNYIO", "Homepage": "https://www.gny.io/" }, - "marketcap_usd": 10507084, + "marketcap_usd": 11392800, "name": "LML", "network": "eth", "shortcut": "LML", @@ -14830,7 +14844,7 @@ "Github": "https://github.com/lendingblock", "Homepage": "https://lendingblock.com" }, - "marketcap_usd": 2764752, + "marketcap_usd": 2729968, "name": "Lendingblock", "network": "eth", "shortcut": "LND", @@ -14857,7 +14871,7 @@ "links": { "Homepage": "https://LockChain.co" }, - "marketcap_usd": 14152222, + "marketcap_usd": 13434994, "name": "LockChain", "network": "eth", "shortcut": "LOC", @@ -14885,7 +14899,7 @@ "Github": "http://github.com/locipro/loci-coin-sale", "Homepage": "https://locipro.com" }, - "marketcap_usd": 213532, + "marketcap_usd": 211362, "name": "LOCIcoin", "network": "eth", "shortcut": "LOCI", @@ -14994,7 +15008,7 @@ "Github": "github.com/loomnetwork/", "Homepage": "https://loomx.io" }, - "marketcap_usd": 26122666, + "marketcap_usd": 26268996, "name": "LOOM", "network": "eth", "shortcut": "LOOM", @@ -15049,7 +15063,7 @@ "links": { "Homepage": "https://loopring.org" }, - "marketcap_usd": 43241397, + "marketcap_usd": 41063668, "name": "LRC", "network": "eth", "shortcut": "LRC", @@ -15077,7 +15091,7 @@ "Github": "https://github.com/Play2Live/blockchain", "Homepage": "https://play2live.io" }, - "marketcap_usd": 135510, + "marketcap_usd": 106666, "name": "LUCToken", "network": "eth", "shortcut": "LUC", @@ -15159,7 +15173,7 @@ "Github": "https://github.com/lunyr", "Homepage": "https://lunyr.com" }, - "marketcap_usd": 3730501, + "marketcap_usd": 3756431, "name": "Lunyr", "network": "eth", "shortcut": "LUN", @@ -15186,7 +15200,7 @@ "links": { "Homepage": "https://lympo.io" }, - "marketcap_usd": 4599817, + "marketcap_usd": 4658184, "name": "Lympo", "network": "eth", "shortcut": "LYM", @@ -15296,7 +15310,7 @@ "Github": "https://github.com/MatrixAINetwork", "Homepage": "https://www.matrix.io" }, - "marketcap_usd": 10086397, + "marketcap_usd": 10458563, "name": "MAN", "network": "eth", "shortcut": "MAN", @@ -15324,7 +15338,7 @@ "Github": "https://github.com/decentraland", "Homepage": "https://decentraland.org" }, - "marketcap_usd": 35393616, + "marketcap_usd": 33974337, "name": "Decentraland MANA", "network": "eth", "shortcut": "MANA", @@ -15379,7 +15393,7 @@ "Github": "https://github.com/theembermine", "Homepage": "https://embermine.com/" }, - "marketcap_usd": 36918, + "marketcap_usd": 0, "name": "Embers", "network": "eth", "shortcut": "MBRS", @@ -15406,7 +15420,7 @@ "links": { "Homepage": "https://bitcoingrowthfund.com/mcap" }, - "marketcap_usd": 50250, + "marketcap_usd": 41638, "name": "MCAP", "network": "eth", "shortcut": "MCAP", @@ -15434,7 +15448,7 @@ "Github": "https://github.com/musiconomi/", "Homepage": "https://musiconomi.com/" }, - "marketcap_usd": 37823, + "marketcap_usd": 0, "name": "Musiconomi", "network": "eth", "shortcut": "MCI", @@ -15461,7 +15475,7 @@ "links": { "Homepage": "https://mona.co" }, - "marketcap_usd": 31215940, + "marketcap_usd": 30511240, "name": "MCO", "network": "eth", "shortcut": "MCO", @@ -15488,7 +15502,7 @@ "links": { "Homepage": "https://moeda.in" }, - "marketcap_usd": 14154045, + "marketcap_usd": 13452802, "name": "MDA", "network": "eth", "shortcut": "MDA", @@ -15515,7 +15529,7 @@ "links": { "Homepage": "http://www.medishares.org" }, - "marketcap_usd": 7066169, + "marketcap_usd": 7011192, "name": "MediShares", "network": "eth", "shortcut": "MDS", @@ -15542,7 +15556,7 @@ "links": { "Homepage": "https://www.mdt.co" }, - "marketcap_usd": 1582848, + "marketcap_usd": 1590360, "name": "Measurable Data Token", "network": "eth", "shortcut": "MDT", @@ -15569,7 +15583,7 @@ "links": { "Homepage": "https://medibloc.org" }, - "marketcap_usd": 9259514, + "marketcap_usd": 9387924, "name": "MediBloc [ERC20]", "network": "eth", "shortcut": "MEDX", @@ -15624,7 +15638,7 @@ "links": { "Homepage": "https://www.metronome.io" }, - "marketcap_usd": 5811930, + "marketcap_usd": 5731908, "name": "Metronome", "network": "eth", "shortcut": "MET", @@ -15651,7 +15665,7 @@ "links": { "Homepage": "https://metamorph.pro" }, - "marketcap_usd": 297973, + "marketcap_usd": 330286, "name": "MetaMorph", "network": "eth", "shortcut": "METM", @@ -15679,7 +15693,7 @@ "Github": "https://github.com/syncfab", "Homepage": "https://syncfab.com/" }, - "marketcap_usd": 235855, + "marketcap_usd": 216179, "name": "SyncFab Smart Manufacturing Blockchain", "network": "eth", "shortcut": "MFG", @@ -15707,7 +15721,7 @@ "Github": "https://github.com/MainframeHQ", "Homepage": "https://mainframe.com" }, - "marketcap_usd": 17625821, + "marketcap_usd": 17952843, "name": "Mainframe Token", "network": "eth", "shortcut": "MFT", @@ -15734,7 +15748,7 @@ "links": { "Homepage": "https://mftu.net" }, - "marketcap_usd": 17821, + "marketcap_usd": 15228, "name": "Mainstream For The Underground", "network": "eth", "shortcut": "MFTU", @@ -15761,7 +15775,7 @@ "links": { "Homepage": "https://mobilego.io" }, - "marketcap_usd": 22096838, + "marketcap_usd": 20868284, "name": "MobileGo", "network": "eth", "shortcut": "MGO", @@ -15788,7 +15802,7 @@ "links": { "Homepage": "https://mindexcoin.com" }, - "marketcap_usd": 674331, + "marketcap_usd": 364336, "name": "Mindexcoin", "network": "eth", "shortcut": "MIC", @@ -15815,7 +15829,7 @@ "links": { "Homepage": "https://token.morpheuslabs.io" }, - "marketcap_usd": 1383750, + "marketcap_usd": 823763, "name": "Morpheus Infrastructure Token", "network": "eth", "shortcut": "MITX", @@ -15843,7 +15857,7 @@ "Github": "https://github.com/makerdao", "Homepage": "https://makerdao.com" }, - "marketcap_usd": 295708643, + "marketcap_usd": 292372862, "name": "MakerDAO", "network": "eth", "shortcut": "MKR", @@ -15925,7 +15939,7 @@ "links": { "Homepage": "https://minereum.com" }, - "marketcap_usd": 28558, + "marketcap_usd": 27305, "name": "MNE", "network": "eth", "shortcut": "MNE", @@ -16008,7 +16022,7 @@ "links": { "Homepage": "https://moss.land" }, - "marketcap_usd": 7807891, + "marketcap_usd": 7875829, "name": "Moss Coin", "network": "eth", "shortcut": "MOC", @@ -16036,7 +16050,7 @@ "Github": "https://github.com/modum-io", "Homepage": "https://modum.io" }, - "marketcap_usd": 6060679, + "marketcap_usd": 5948384, "name": "Modum", "network": "eth", "shortcut": "MOD", @@ -16063,7 +16077,7 @@ "links": { "Homepage": "https://olympuslabs.io" }, - "marketcap_usd": 1654762, + "marketcap_usd": 1619634, "name": "Olympus Labs", "network": "eth", "shortcut": "MOT", @@ -16090,7 +16104,7 @@ "links": { "Homepage": "https://mark.space" }, - "marketcap_usd": 2972208, + "marketcap_usd": 2827257, "name": "MARK.SPACE", "network": "eth", "shortcut": "MRK", @@ -16226,7 +16240,7 @@ "links": { "Homepage": "http://www.monetha.io" }, - "marketcap_usd": 4717695, + "marketcap_usd": 4758266, "name": "Monetha", "network": "eth", "shortcut": "MTH", @@ -16253,7 +16267,7 @@ "links": { "Homepage": "https://www.metalpay.com" }, - "marketcap_usd": 10607469, + "marketcap_usd": 10749549, "name": "Metal", "network": "eth", "shortcut": "MTL", @@ -16280,7 +16294,7 @@ "links": { "Homepage": "https://medicalchain.com" }, - "marketcap_usd": 1218710, + "marketcap_usd": 1109365, "name": "MedToken", "network": "eth", "shortcut": "MTN", @@ -16334,7 +16348,7 @@ "links": { "Homepage": "https://modultrade.io" }, - "marketcap_usd": 139213, + "marketcap_usd": 197472, "name": "MTRCToken", "network": "eth", "shortcut": "MTRc", @@ -16361,7 +16375,7 @@ "links": { "Homepage": "https://www.matryx.ai" }, - "marketcap_usd": 337725, + "marketcap_usd": 321785, "name": "MTX", "network": "eth", "shortcut": "MTX", @@ -16415,7 +16429,7 @@ "links": { "Homepage": "http://mvlchain.io" }, - "marketcap_usd": 1468508, + "marketcap_usd": 1392769, "name": "Mass Vehicle Ledger Token", "network": "eth", "shortcut": "MVL", @@ -16443,7 +16457,7 @@ "Github": "https://github.com/Merculet", "Homepage": "https://www.merculet.io" }, - "marketcap_usd": 528643, + "marketcap_usd": 612109, "name": "Merculet", "network": "eth", "shortcut": "MVP", @@ -16470,7 +16484,7 @@ "links": { "Homepage": "https://www.restartenergy.io" }, - "marketcap_usd": 7005660, + "marketcap_usd": 7065003, "name": "RED MWAT", "network": "eth", "shortcut": "MWAT", @@ -16497,7 +16511,7 @@ "links": { "Homepage": "https://mysterium.network" }, - "marketcap_usd": 1523664, + "marketcap_usd": 1054573, "name": "Mysterium", "network": "eth", "shortcut": "MYST", @@ -16552,7 +16566,7 @@ "Github": "https://github.com/NANJ-COIN", "Homepage": "https://nanjcoin.com/" }, - "marketcap_usd": 3001498, + "marketcap_usd": 2648951, "name": "NANJCOIN", "network": "eth", "shortcut": "NANJ", @@ -16580,7 +16594,7 @@ "Github": "https://github.com/naviworld", "Homepage": "https://naviaddress.com" }, - "marketcap_usd": 251195, + "marketcap_usd": 271973, "name": "NaviToken", "network": "eth", "shortcut": "NAVI", @@ -16608,7 +16622,7 @@ "Github": "https://github.com/nebulaai", "Homepage": "https://tokensale.nebula-ai.network" }, - "marketcap_usd": 1090139, + "marketcap_usd": 1115390, "name": "NebulaAiToken", "network": "eth", "shortcut": "NBAI", @@ -16635,7 +16649,7 @@ "links": { "Homepage": "https://niobiumcoin.io" }, - "marketcap_usd": 652814, + "marketcap_usd": 565235, "name": "Niobium Coin", "network": "eth", "shortcut": "NBC", @@ -16662,7 +16676,7 @@ "links": { "Homepage": "https://nucleus.vision" }, - "marketcap_usd": 10048565, + "marketcap_usd": 9313269, "name": "Nucleus Vision", "network": "eth", "shortcut": "NCASH", @@ -16690,7 +16704,7 @@ "Github": "https://github.com/polyswarm", "Homepage": "https://polyswarm.io" }, - "marketcap_usd": 2856602, + "marketcap_usd": 2783733, "name": "Nectar", "network": "eth", "shortcut": "NCT", @@ -16717,7 +16731,7 @@ "links": { "Homepage": "https://neverdie.com" }, - "marketcap_usd": 150528, + "marketcap_usd": 146653, "name": "Neverdie", "network": "eth", "shortcut": "NDC", @@ -16745,7 +16759,7 @@ "Github": "https://github.com/ndexnetwork/NDX", "Homepage": "https://ndexnetwork.com" }, - "marketcap_usd": 91697, + "marketcap_usd": 98638, "name": "nDEX", "network": "eth", "shortcut": "NDX", @@ -16773,7 +16787,7 @@ "Github": "https://github.com/ethfinex/", "Homepage": "https://nectar.community" }, - "marketcap_usd": 14064873, + "marketcap_usd": 13754867, "name": "Ethfinex Nectar Token", "network": "eth", "shortcut": "NEC", @@ -16855,7 +16869,7 @@ "Github": "https://github.com/neufund", "Homepage": "https://neufund.org" }, - "marketcap_usd": 8755009, + "marketcap_usd": 6206205, "name": "NEU Fund", "network": "eth", "shortcut": "NEU", @@ -16882,7 +16896,7 @@ "links": { "Homepage": "http://nexo.io" }, - "marketcap_usd": 31294886, + "marketcap_usd": 30990804, "name": "Nexo", "network": "eth", "shortcut": "NEXO", @@ -16909,7 +16923,7 @@ "links": { "Homepage": "https://www.nagaico.com" }, - "marketcap_usd": 2650526, + "marketcap_usd": 2701178, "name": "NAGA Coin", "network": "eth", "shortcut": "NGC", @@ -16964,7 +16978,7 @@ "links": { "Homepage": "https://auton.io" }, - "marketcap_usd": 714628, + "marketcap_usd": 709494, "name": "Autonio", "network": "eth", "shortcut": "NIO", @@ -16992,7 +17006,7 @@ "Github": "https://github.com/numerai", "Homepage": "https://numer.ai/homepage" }, - "marketcap_usd": 4565979, + "marketcap_usd": 4610683, "name": "NMR", "network": "eth", "shortcut": "NMR", @@ -17019,7 +17033,7 @@ "links": { "Homepage": "https://noahcoin.org" }, - "marketcap_usd": 6010809, + "marketcap_usd": 5770664, "name": "Noah Coin", "network": "eth", "shortcut": "NOAH", @@ -17046,7 +17060,7 @@ "links": { "Homepage": "https://nobscrypto.com" }, - "marketcap_usd": 176484, + "marketcap_usd": 170201, "name": "No BS Crypto", "network": "eth", "shortcut": "NOBS", @@ -17074,7 +17088,7 @@ "Github": "https://github.com/nitrotoken/nitro-crowdsale", "Homepage": "https://nitro.live" }, - "marketcap_usd": 46342, + "marketcap_usd": 45918, "name": "NOX", "network": "eth", "shortcut": "NOX", @@ -17102,7 +17116,7 @@ "Github": "https://github.com/NperProject", "Homepage": "https://nper.io" }, - "marketcap_usd": 414283, + "marketcap_usd": 410691, "name": "NPER", "network": "eth", "shortcut": "NPER", @@ -17129,7 +17143,7 @@ "links": { "Homepage": "https://napoleonx.ai" }, - "marketcap_usd": 4324056, + "marketcap_usd": 4188495, "name": "NaPoleonX", "network": "eth", "shortcut": "NPX", @@ -17157,7 +17171,7 @@ "Github": "https://github.com/pundix", "Homepage": "https://pundix.com" }, - "marketcap_usd": 116943874, + "marketcap_usd": 101872734, "name": "Pundi X Token", "network": "eth", "shortcut": "NPXS", @@ -17184,7 +17198,7 @@ "links": { "Homepage": "https://fujinto.io" }, - "marketcap_usd": 1699, + "marketcap_usd": 4471, "name": "Fujinto", "network": "eth", "shortcut": "NTO", @@ -17292,7 +17306,7 @@ "links": { "Homepage": "https://beyond-the-void.net" }, - "marketcap_usd": 342898, + "marketcap_usd": 332749, "name": "Nexium", "network": "eth", "shortcut": "NxC", @@ -17346,7 +17360,7 @@ "links": { "Homepage": "https://www.openanx.org/en" }, - "marketcap_usd": 2997473, + "marketcap_usd": 3005852, "name": "OAX", "network": "eth", "shortcut": "OAX", @@ -17401,7 +17415,7 @@ "links": { "Homepage": "http://www.ocnex.net" }, - "marketcap_usd": 13239098, + "marketcap_usd": 12738624, "name": "Odyssey", "network": "eth", "shortcut": "OCN", @@ -17429,7 +17443,7 @@ "Github": "https://github.com/odemio", "Homepage": "https://odem.io/" }, - "marketcap_usd": 47028579, + "marketcap_usd": 45772882, "name": "ODEM Token", "network": "eth", "shortcut": "ODE", @@ -17512,7 +17526,7 @@ "links": { "Homepage": "http://www.olivecoin.co" }, - "marketcap_usd": 310284, + "marketcap_usd": 263868, "name": "Olive", "network": "eth", "shortcut": "OLE", @@ -17540,7 +17554,7 @@ "Github": "https://github.com/Oneledger", "Homepage": "https://oneledger.io" }, - "marketcap_usd": 947965, + "marketcap_usd": 947019, "name": "OneLedger Token", "network": "eth", "shortcut": "OLT", @@ -17568,7 +17582,7 @@ "Github": "https://github.com/omisego", "Homepage": "https://omg.omise.co" }, - "marketcap_usd": 153439353, + "marketcap_usd": 147109507, "name": "OmiseGO", "network": "eth", "shortcut": "OMG", @@ -17623,7 +17637,7 @@ "links": { "Homepage": "https://shivom.io" }, - "marketcap_usd": 624805, + "marketcap_usd": 555507, "name": "Shivom", "network": "eth", "shortcut": "OMX", @@ -17651,7 +17665,7 @@ "Github": "https://github.com/MenloOne/", "Homepage": "https://www.menlo.one" }, - "marketcap_usd": 228478, + "marketcap_usd": 245970, "name": "Menlo One", "network": "eth", "shortcut": "ONE", @@ -17705,7 +17719,7 @@ "links": { "Homepage": "https://on.live" }, - "marketcap_usd": 1041198, + "marketcap_usd": 1020698, "name": "On.Live", "network": "eth", "shortcut": "ONL", @@ -17732,7 +17746,7 @@ "links": { "Homepage": "https://opus-foundation.org" }, - "marketcap_usd": 969582, + "marketcap_usd": 927641, "name": "Opus Foundation", "network": "eth", "shortcut": "OPT", @@ -17759,7 +17773,7 @@ "links": { "Homepage": "https://optitoken.io" }, - "marketcap_usd": 629735, + "marketcap_usd": 603996, "name": "OptiToken", "network": "eth", "shortcut": "OPTI", @@ -17842,7 +17856,7 @@ "links": { "Homepage": "https://ori.network" }, - "marketcap_usd": 41801, + "marketcap_usd": 42211, "name": "Origami", "network": "eth", "shortcut": "ORI", @@ -17869,7 +17883,7 @@ "links": { "Homepage": "https://ormeuscoin.com" }, - "marketcap_usd": 1735946, + "marketcap_usd": 1627747, "name": "Ormeus Coin", "network": "eth", "shortcut": "ORME", @@ -17896,7 +17910,7 @@ "links": { "Homepage": "https://www.originsport.io" }, - "marketcap_usd": 195886, + "marketcap_usd": 207587, "name": "Origin Sport", "network": "eth", "shortcut": "ORS", @@ -17924,7 +17938,7 @@ "Github": "https://github.com/OpenSTFoundation", "Homepage": "https://simpletoken.org" }, - "marketcap_usd": 9416430, + "marketcap_usd": 10021420, "name": "Simple Token 'OST'", "network": "eth", "shortcut": "OST", @@ -17951,7 +17965,7 @@ "links": { "Homepage": "https://otn.org" }, - "marketcap_usd": 70064, + "marketcap_usd": 137779, "name": "Open Trading Network", "network": "eth", "shortcut": "OTN", @@ -17979,7 +17993,7 @@ "Github": "https://github.com/owndata", "Homepage": "https://owndata.network" }, - "marketcap_usd": 824301, + "marketcap_usd": 787053, "name": "OWNDATA", "network": "eth", "shortcut": "OWN", @@ -18034,7 +18048,7 @@ "links": { "Homepage": "https://www.pchain.org" }, - "marketcap_usd": 4277463, + "marketcap_usd": 3977700, "name": "PCHAIN", "network": "eth", "shortcut": "PAI", @@ -18062,7 +18076,7 @@ "Github": "https://github.com/policypalnet", "Homepage": "https://www.policypal.network" }, - "marketcap_usd": 2235813, + "marketcap_usd": 2078221, "name": "PolicyPal Network", "network": "eth", "shortcut": "PAL", @@ -18090,7 +18104,7 @@ "Github": "https://github.com/ParetoNetwork", "Homepage": "https://pareto.network" }, - "marketcap_usd": 357959, + "marketcap_usd": 484733, "name": "PARETO", "network": "eth", "shortcut": "PARETO", @@ -18117,7 +18131,7 @@ "links": { "Homepage": "https://patron-influencers.com" }, - "marketcap_usd": 1085303, + "marketcap_usd": 832649, "name": "Patron", "network": "eth", "shortcut": "PAT", @@ -18200,7 +18214,7 @@ "Github": "https://github.com/paxosglobal", "Homepage": "https://www.paxos.com/standard" }, - "marketcap_usd": 122990112, + "marketcap_usd": 123468213, "name": "Paxos Standard (PAX)", "network": "eth", "shortcut": "PAX", @@ -18227,7 +18241,7 @@ "links": { "Homepage": "http://www.tenx.tech" }, - "marketcap_usd": 27551611, + "marketcap_usd": 26668566, "name": "TenX", "network": "eth", "shortcut": "PAY", @@ -18309,7 +18323,7 @@ "Github": "https://github.com/PeculiumPCL/Peculium", "Homepage": "https://peculium.io" }, - "marketcap_usd": 2538878, + "marketcap_usd": 2491098, "name": "Peculium", "network": "eth", "shortcut": "PCL", @@ -18447,7 +18461,7 @@ "links": { "Homepage": "https://payfair.io" }, - "marketcap_usd": 381173, + "marketcap_usd": 449381, "name": "Payfair", "network": "eth", "shortcut": "PFR", @@ -18474,7 +18488,7 @@ "links": { "Homepage": "https://www.phitoken.io" }, - "marketcap_usd": 468595, + "marketcap_usd": 459536, "name": "PHI Token", "network": "eth", "shortcut": "PHI", @@ -18555,7 +18569,7 @@ "links": { "Homepage": "https://www.lampix.co" }, - "marketcap_usd": 561902, + "marketcap_usd": 543352, "name": "Lampix", "network": "eth", "shortcut": "PIX", @@ -18582,7 +18596,7 @@ "links": { "Homepage": "http://pkgtoken.io" }, - "marketcap_usd": 63645, + "marketcap_usd": 55925, "name": "PKG Token", "network": "eth", "shortcut": "PKG", @@ -18609,7 +18623,7 @@ "links": { "Homepage": "https://playkey.io" }, - "marketcap_usd": 351802, + "marketcap_usd": 340815, "name": "Playkey", "network": "eth", "shortcut": "PKT", @@ -18663,7 +18677,7 @@ "links": { "Homepage": "https://polybius.io" }, - "marketcap_usd": 3607345, + "marketcap_usd": 3730563, "name": "Polybius", "network": "eth", "shortcut": "PLBT", @@ -18691,7 +18705,7 @@ "Github": "https://github.com/twentythirty/PillarToken", "Homepage": "https://www.pillarproject.io" }, - "marketcap_usd": 8668812, + "marketcap_usd": 8198372, "name": "Pillar Project", "network": "eth", "shortcut": "PLR", @@ -18746,7 +18760,7 @@ "links": { "Homepage": "https://plutus.it" }, - "marketcap_usd": 425894, + "marketcap_usd": 525628, "name": "Pluton", "network": "eth", "shortcut": "PLU", @@ -18773,7 +18787,7 @@ "links": { "Homepage": "https://pumapay.io" }, - "marketcap_usd": 11598807, + "marketcap_usd": 11372564, "name": "PumaPay", "network": "eth", "shortcut": "PMA", @@ -18800,7 +18814,7 @@ "links": { "Homepage": "https://paymon.org" }, - "marketcap_usd": 431943, + "marketcap_usd": 555286, "name": "Paymon", "network": "eth", "shortcut": "PMNT", @@ -18828,7 +18842,7 @@ "Github": "https://github.com/kleros", "Homepage": "https://kleros.io" }, - "marketcap_usd": 1057074, + "marketcap_usd": 922891, "name": "Pinakion", "network": "eth", "shortcut": "PNK", @@ -18855,7 +18869,7 @@ "links": { "Homepage": "https://po.et" }, - "marketcap_usd": 11574220, + "marketcap_usd": 11292534, "name": "Po.et Tokens", "network": "eth", "shortcut": "POE", @@ -18909,7 +18923,7 @@ "links": { "Homepage": "https://clearpoll.com" }, - "marketcap_usd": 705731, + "marketcap_usd": 548902, "name": "ClearPoll", "network": "eth", "shortcut": "POLL", @@ -18936,7 +18950,7 @@ "links": { "Homepage": "https://polymath.network" }, - "marketcap_usd": 25540862, + "marketcap_usd": 26215202, "name": "Polymath Network", "network": "eth", "shortcut": "POLY", @@ -19046,7 +19060,7 @@ "links": { "Homepage": "https://powerledger.io" }, - "marketcap_usd": 31246017, + "marketcap_usd": 30118949, "name": "PowerLedger", "network": "eth", "shortcut": "POWR", @@ -19073,7 +19087,7 @@ "links": { "Homepage": "https://www.paypie.com" }, - "marketcap_usd": 7991400, + "marketcap_usd": 7659718, "name": "PayPie", "network": "eth", "shortcut": "PPP", @@ -19100,7 +19114,7 @@ "links": { "Homepage": "https://populous.co" }, - "marketcap_usd": 62738173, + "marketcap_usd": 62511100, "name": "Populous", "network": "eth", "shortcut": "PPT", @@ -19127,7 +19141,7 @@ "links": { "Homepage": "https://presearch.io" }, - "marketcap_usd": 4345036, + "marketcap_usd": 4008494, "name": "Presearch", "network": "eth", "shortcut": "PRE", @@ -19155,7 +19169,7 @@ "Github": "https://github.com/paragon-coin/token", "Homepage": "https://paragoncoin.com" }, - "marketcap_usd": 6175051, + "marketcap_usd": 5973962, "name": "Paragon", "network": "eth", "shortcut": "PRG", @@ -19182,7 +19196,7 @@ "links": { "Homepage": "https://privatix.io" }, - "marketcap_usd": 910882, + "marketcap_usd": 742319, "name": "Privatix", "network": "eth", "shortcut": "PRIX", @@ -19319,7 +19333,7 @@ "links": { "Homepage": "https://primas.io" }, - "marketcap_usd": 4008477, + "marketcap_usd": 4226910, "name": "Primas", "network": "eth", "shortcut": "PST", @@ -19374,7 +19388,7 @@ "links": { "Homepage": "https://patientory.com" }, - "marketcap_usd": 980919, + "marketcap_usd": 925514, "name": "PTOY", "network": "eth", "shortcut": "PTOY", @@ -19401,7 +19415,7 @@ "links": { "Homepage": "https://www.proton.global" }, - "marketcap_usd": 250421, + "marketcap_usd": 256535, "name": "Proton Token", "network": "eth", "shortcut": "PTT", @@ -19539,7 +19553,7 @@ "links": { "Homepage": "https://pylon-network.org" }, - "marketcap_usd": 316153, + "marketcap_usd": 310723, "name": "Pylon Network", "network": "eth", "shortcut": "PYLNT", @@ -19566,7 +19580,7 @@ "links": { "Homepage": "https://liquid.plus" }, - "marketcap_usd": 22884950, + "marketcap_usd": 22434952, "name": "QASH", "network": "eth", "shortcut": "QASH", @@ -19648,7 +19662,7 @@ "links": { "Homepage": "https://quarkchain.io" }, - "marketcap_usd": 23375416, + "marketcap_usd": 24047016, "name": "QuarkChain", "network": "eth", "shortcut": "QKC", @@ -19676,7 +19690,7 @@ "Github": "https://github.com/quantnetwork", "Homepage": "https://www.quant.network/" }, - "marketcap_usd": 22478559, + "marketcap_usd": 28166620, "name": "Quant", "network": "eth", "shortcut": "QNT", @@ -19759,7 +19773,7 @@ "Github": "https://github.com/quantstamp", "Homepage": "https://quantstamp.com/" }, - "marketcap_usd": 8758537, + "marketcap_usd": 8649280, "name": "Quantstamp Token", "network": "eth", "shortcut": "QSP", @@ -19842,7 +19856,7 @@ "links": { "Homepage": "https://qunqun.io" }, - "marketcap_usd": 1934789, + "marketcap_usd": 1864517, "name": "QunQun", "network": "eth", "shortcut": "QUN", @@ -19869,7 +19883,7 @@ "links": { "Homepage": "https://revain.org" }, - "marketcap_usd": 69793048, + "marketcap_usd": 68428291, "name": "Revain", "network": "eth", "shortcut": "R", @@ -19924,7 +19938,7 @@ "links": { "Homepage": "http://token.dprating.com" }, - "marketcap_usd": 644790, + "marketcap_usd": 427402, "name": "DPRating", "network": "eth", "shortcut": "RATING", @@ -19952,7 +19966,7 @@ "Github": "https://github.com/rublixdev", "Homepage": "https://rublix.io/" }, - "marketcap_usd": 4241816, + "marketcap_usd": 4119955, "name": "Rublix", "network": "eth", "shortcut": "RBLX", @@ -19980,7 +19994,7 @@ "Github": "https://github.com/ripio/rcn-token", "Homepage": "https://ripiocredit.network" }, - "marketcap_usd": 5340433, + "marketcap_usd": 5192075, "name": "Ripio Credit Network", "network": "eth", "shortcut": "RCN", @@ -20008,7 +20022,7 @@ "Github": "https://github.com/raiden-network/raiden/", "Homepage": "https://raiden.network" }, - "marketcap_usd": 10341849, + "marketcap_usd": 10333660, "name": "Raiden Network", "network": "eth", "shortcut": "RDN", @@ -20062,7 +20076,7 @@ "links": { "Homepage": "https://www.real.markets" }, - "marketcap_usd": 938796, + "marketcap_usd": 913674, "name": "Real Estate Asset Ledger", "network": "eth", "shortcut": "REAL", @@ -20089,7 +20103,7 @@ "links": { "Homepage": "https://www.rebellious.io" }, - "marketcap_usd": 773445, + "marketcap_usd": 419595, "name": "Rebellious", "network": "eth", "shortcut": "REBL", @@ -20117,7 +20131,7 @@ "Github": "https://github.com/red", "Homepage": "https://ico.red-lang.org" }, - "marketcap_usd": 766824, + "marketcap_usd": 814167, "name": "Red Community Token", "network": "eth", "shortcut": "RED", @@ -20172,7 +20186,7 @@ "links": { "Homepage": "https://reftoken.io" }, - "marketcap_usd": 400988, + "marketcap_usd": 406592, "name": "RefToken", "network": "eth", "shortcut": "REF", @@ -20199,7 +20213,7 @@ "links": { "Homepage": "https://remme.io" }, - "marketcap_usd": 2647466, + "marketcap_usd": 2597128, "name": "Remme", "network": "eth", "shortcut": "REM", @@ -20255,7 +20269,7 @@ "Github": "https://github.com/republicprotocol", "Homepage": "https://republicprotocol.com" }, - "marketcap_usd": 10615528, + "marketcap_usd": 10247033, "name": "Republic Token", "network": "eth", "shortcut": "REN", @@ -20282,7 +20296,7 @@ "links": { "Homepage": "https://augur.net" }, - "marketcap_usd": 151263146, + "marketcap_usd": 144459793, "name": "Augur", "network": "eth", "shortcut": "REP", @@ -20309,7 +20323,7 @@ "links": { "Homepage": "https://request.network" }, - "marketcap_usd": 14146547, + "marketcap_usd": 13844169, "name": "Request Network", "network": "eth", "shortcut": "REQ", @@ -20337,7 +20351,7 @@ "Github": "https://github.com/rexmls/RexToken", "Homepage": "https://imbrex.io" }, - "marketcap_usd": 189113, + "marketcap_usd": 170910, "name": "REX", "network": "eth", "shortcut": "REX", @@ -20364,7 +20378,7 @@ "links": { "Homepage": "https://refereum.com" }, - "marketcap_usd": 5643766, + "marketcap_usd": 6704046, "name": "Refereum", "network": "eth", "shortcut": "RFR", @@ -20391,7 +20405,7 @@ "links": { "Homepage": "https://www.rchain.coop" }, - "marketcap_usd": 10086385, + "marketcap_usd": 10038551, "name": "RChain", "network": "eth", "shortcut": "RHOC", @@ -20473,7 +20487,7 @@ "links": { "Homepage": "http://crowdsale.iex.ec" }, - "marketcap_usd": 19358594, + "marketcap_usd": 18244051, "name": "IEx.ec", "network": "eth", "shortcut": "RLC", @@ -20501,7 +20515,7 @@ "Github": "https://github.com/Smartroulette", "Homepage": "https://smartplay.tech" }, - "marketcap_usd": 49511, + "marketcap_usd": 44508, "name": "RLT", "network": "eth", "shortcut": "RLT", @@ -20555,7 +20569,7 @@ "links": { "Homepage": "http://www.relex.io" }, - "marketcap_usd": 252365, + "marketcap_usd": 251412, "name": "Relex", "network": "eth", "shortcut": "RLX", @@ -20583,7 +20597,7 @@ "Github": "https://github.com/rightmesh", "Homepage": "https://www.rightmesh.io/" }, - "marketcap_usd": 1675346, + "marketcap_usd": 1776938, "name": "RightMesh Token", "network": "eth", "shortcut": "RMESH", @@ -20637,7 +20651,7 @@ "links": { "Homepage": "https://www.oneroot.io/en" }, - "marketcap_usd": 20182631, + "marketcap_usd": 19729061, "name": "OneRoot Network", "network": "eth", "shortcut": "RNT", @@ -20664,7 +20678,7 @@ "links": { "Homepage": "https://bitrent.io" }, - "marketcap_usd": 386582, + "marketcap_usd": 355811, "name": "BitRent", "network": "eth", "shortcut": "RNTB", @@ -20719,7 +20733,7 @@ "links": { "Homepage": "https://icerockmining.io" }, - "marketcap_usd": 3069919, + "marketcap_usd": 2665054, "name": "ICE ROCK MINING", "network": "eth", "shortcut": "ROCK2", @@ -20827,7 +20841,7 @@ "links": { "Homepage": "https://ab-chain.com" }, - "marketcap_usd": 308706, + "marketcap_usd": 303399, "name": "AB-Chain RTB", "network": "eth", "shortcut": "RTB", @@ -20854,7 +20868,7 @@ "links": { "Homepage": "https://www.rotharium.io" }, - "marketcap_usd": 4224183, + "marketcap_usd": 3170749, "name": "Rotharium", "network": "eth", "shortcut": "RTH", @@ -20909,7 +20923,7 @@ "links": { "Homepage": "http://ruffchain.com" }, - "marketcap_usd": 8966750, + "marketcap_usd": 8888103, "name": "Ruff", "network": "eth", "shortcut": "RUFF", @@ -20991,7 +21005,7 @@ "links": { "Homepage": "https://rivetzintl.com" }, - "marketcap_usd": 1131434, + "marketcap_usd": 982338, "name": "Rivetz", "network": "eth", "shortcut": "RVT", @@ -21099,7 +21113,7 @@ "links": { "Homepage": "https://saltlending.com" }, - "marketcap_usd": 16628654, + "marketcap_usd": 16220301, "name": "Salt Lending Token", "network": "eth", "shortcut": "SALT", @@ -21126,7 +21140,7 @@ "links": { "Homepage": "https://santiment.net" }, - "marketcap_usd": 25281209, + "marketcap_usd": 24825852, "name": "Santiment", "network": "eth", "shortcut": "SAN", @@ -21180,7 +21194,7 @@ "links": { "Homepage": "https://ico.nexus.social" }, - "marketcap_usd": 347063, + "marketcap_usd": 284805, "name": "SocialCoin", "network": "eth", "shortcut": "SCL", @@ -21207,7 +21221,7 @@ "links": { "Homepage": "https://www.scroll.network" }, - "marketcap_usd": 5916495, + "marketcap_usd": 5975034, "name": "SCRL", "network": "eth", "shortcut": "SCRL", @@ -21234,7 +21248,7 @@ "links": { "Homepage": "http://seele.pro" }, - "marketcap_usd": 1995853, + "marketcap_usd": 1887639, "name": "Seele", "network": "eth", "shortcut": "SEELE", @@ -21261,7 +21275,7 @@ "links": { "Homepage": "https://www.sentinel-chain.org" }, - "marketcap_usd": 802280, + "marketcap_usd": 713997, "name": "Sentinel Chain", "network": "eth", "shortcut": "SENC", @@ -21288,7 +21302,7 @@ "links": { "Homepage": "https://sensay.it" }, - "marketcap_usd": 628600, + "marketcap_usd": 613014, "name": "Sensay", "network": "eth", "shortcut": "SENSE", @@ -21315,7 +21329,7 @@ "links": { "Homepage": "https://sentinel.co" }, - "marketcap_usd": 2014870, + "marketcap_usd": 1911127, "name": "SENTinel", "network": "eth", "shortcut": "SENT", @@ -21424,7 +21438,7 @@ "links": { "Homepage": "https://signals.network" }, - "marketcap_usd": 3007848, + "marketcap_usd": 2958696, "name": "Signals Network", "network": "eth", "shortcut": "SGN", @@ -21451,7 +21465,7 @@ "links": { "Homepage": "http://sugarexchange.io" }, - "marketcap_usd": 129523, + "marketcap_usd": 95147, "name": "Sugar Exchange", "network": "eth", "shortcut": "SGR", @@ -21478,7 +21492,7 @@ "links": { "Homepage": "https://www.shipchain.io" }, - "marketcap_usd": 1129330, + "marketcap_usd": 1070833, "name": "ShipChain", "network": "eth", "shortcut": "SHIP", @@ -21532,7 +21546,7 @@ "links": { "Homepage": "https://sharpe.capital" }, - "marketcap_usd": 677113, + "marketcap_usd": 727155, "name": "Sharpe Platform Token", "network": "eth", "shortcut": "SHP", @@ -21587,7 +21601,7 @@ "Github": "https://github.com/SpectivOfficial", "Homepage": "https://spectivvr.com" }, - "marketcap_usd": 267484, + "marketcap_usd": 285889, "name": "Signal", "network": "eth", "shortcut": "SIG", @@ -21614,7 +21628,7 @@ "links": { "Homepage": "https://www.skb-coin.jp/en" }, - "marketcap_usd": 3306612, + "marketcap_usd": 2710093, "name": "Sakura Bloom", "network": "eth", "shortcut": "SKB", @@ -21669,7 +21683,7 @@ "Github": "https://github.com/Steamtradenet/smart-contract", "Homepage": "https://skincoin.org" }, - "marketcap_usd": 469892, + "marketcap_usd": 462858, "name": "SKIN", "network": "eth", "shortcut": "SKIN", @@ -21696,7 +21710,7 @@ "links": { "Homepage": "https://skrumble.network" }, - "marketcap_usd": 2286657, + "marketcap_usd": 2136997, "name": "Skrumble Network", "network": "eth", "shortcut": "SKM", @@ -21887,7 +21901,7 @@ "links": { "Homepage": "https://suncontract.org" }, - "marketcap_usd": 1637236, + "marketcap_usd": 1617262, "name": "SunContract", "network": "eth", "shortcut": "SNC", @@ -21969,7 +21983,7 @@ "links": { "Homepage": "https://singulardtv.com" }, - "marketcap_usd": 6831301, + "marketcap_usd": 6554382, "name": "SingularDTV", "network": "eth", "shortcut": "SNGLS", @@ -22024,7 +22038,7 @@ "Github": "https://github.com/sonm-io", "Homepage": "https://sonm.com" }, - "marketcap_usd": 6508351, + "marketcap_usd": 6377230, "name": "SNM", "network": "eth", "shortcut": "SNM", @@ -22051,7 +22065,7 @@ "links": { "Homepage": "https://tokensale.snov.io" }, - "marketcap_usd": 935867, + "marketcap_usd": 825146, "name": "SNOV", "network": "eth", "shortcut": "SNOV", @@ -22078,7 +22092,7 @@ "links": { "Homepage": "https://status.im" }, - "marketcap_usd": 63360106, + "marketcap_usd": 64297859, "name": "Status Network Token", "network": "eth", "shortcut": "SNT", @@ -22105,7 +22119,7 @@ "links": { "Homepage": "https://silentnotary.com" }, - "marketcap_usd": 778334, + "marketcap_usd": 772692, "name": "Silent Notary", "network": "eth", "shortcut": "SNTR", @@ -22133,7 +22147,7 @@ "Github": "https://github.com/havven/havven", "Homepage": "https://synthetix.io" }, - "marketcap_usd": 2868217, + "marketcap_usd": 2633498, "name": "Synthetix Network Token", "network": "eth", "shortcut": "SNX", @@ -22160,7 +22174,7 @@ "links": { "Homepage": "http://soarlabs.org" }, - "marketcap_usd": 1645059, + "marketcap_usd": 1801271, "name": "Soarcoin", "network": "eth", "shortcut": "SOAR", @@ -22187,7 +22201,7 @@ "links": { "Homepage": "https://www.allsportschain.com" }, - "marketcap_usd": 5289839, + "marketcap_usd": 5051268, "name": "All Sports", "network": "eth", "shortcut": "SOC", @@ -22214,7 +22228,7 @@ "links": { "Homepage": "https://sola.foundation" }, - "marketcap_usd": 51395, + "marketcap_usd": 52359, "name": "Sola Token", "network": "eth", "shortcut": "SOL", @@ -22241,7 +22255,7 @@ "links": { "Homepage": "https://soniqproject.com" }, - "marketcap_usd": 1325276, + "marketcap_usd": 1281648, "name": "Soniq", "network": "eth", "shortcut": "SONIQ", @@ -22269,7 +22283,7 @@ "Github": "https://github.com/cryptosoulgame", "Homepage": "https://cryptosoul.io/" }, - "marketcap_usd": 43206, + "marketcap_usd": 40977, "name": "CryptoSoul", "network": "eth", "shortcut": "SOUL", @@ -22296,7 +22310,7 @@ "links": { "Homepage": "https://spankchain.com" }, - "marketcap_usd": 3459400, + "marketcap_usd": 3347505, "name": "SpankChain", "network": "eth", "shortcut": "SPANK", @@ -22377,7 +22391,7 @@ "links": { "Homepage": "https://spindle.zone" }, - "marketcap_usd": 2975568, + "marketcap_usd": 1929123, "name": "SPINDLE", "network": "eth", "shortcut": "SPD", @@ -22404,7 +22418,7 @@ "links": { "Homepage": "https://sportyfi.io" }, - "marketcap_usd": 107883, + "marketcap_usd": 100550, "name": "Sportify", "network": "eth", "shortcut": "SPF", @@ -22431,7 +22445,7 @@ "links": { "Homepage": "https://www.sapien.network/" }, - "marketcap_usd": 309667, + "marketcap_usd": 279660, "name": "Sapien", "network": "eth", "shortcut": "SPN", @@ -22458,7 +22472,7 @@ "links": { "Homepage": "https://sp8de.com" }, - "marketcap_usd": 519893, + "marketcap_usd": 547260, "name": "Sp8de", "network": "eth", "shortcut": "SPX", @@ -22486,7 +22500,7 @@ "Github": "https://github.com/sirin-labs/crowdsale-smart-contract", "Homepage": "https://sirinlabs.com" }, - "marketcap_usd": 13252451, + "marketcap_usd": 13902238, "name": "Sirin Labs", "network": "eth", "shortcut": "SRN", @@ -22540,7 +22554,7 @@ "links": { "Homepage": "https://smartshare.vip/#" }, - "marketcap_usd": 4699812, + "marketcap_usd": 4558372, "name": "Smartshare", "network": "eth", "shortcut": "SSP", @@ -22594,7 +22608,7 @@ "links": { "Homepage": "https://coinstarter.com" }, - "marketcap_usd": 158986, + "marketcap_usd": 153395, "name": "Starter Coin", "network": "eth", "shortcut": "STAC", @@ -22621,7 +22635,7 @@ "links": { "Homepage": "https://stacs.io" }, - "marketcap_usd": 8983665, + "marketcap_usd": 9498947, "name": "STACS", "network": "eth", "shortcut": "STACS", @@ -22648,7 +22662,7 @@ "links": { "Homepage": "http://starbase.co" }, - "marketcap_usd": 266676, + "marketcap_usd": 283429, "name": "Star Token", "network": "eth", "shortcut": "STAR", @@ -22731,7 +22745,7 @@ "links": { "Homepage": "https://stktoken.com" }, - "marketcap_usd": 830820, + "marketcap_usd": 809191, "name": "STK Token", "network": "eth", "shortcut": "STK", @@ -22786,7 +22800,7 @@ "Github": "https://github.com/Storj", "Homepage": "https://storj.io" }, - "marketcap_usd": 19053313, + "marketcap_usd": 20505488, "name": "STORJ", "network": "eth", "shortcut": "STORJ", @@ -22813,7 +22827,7 @@ "links": { "Homepage": "https://www.stormtoken.com" }, - "marketcap_usd": 13791276, + "marketcap_usd": 14789424, "name": "Storm Token", "network": "eth", "shortcut": "STORM", @@ -22869,7 +22883,7 @@ "Github": "https://github.com/Storiqa/", "Homepage": "https://storiqa.com" }, - "marketcap_usd": 2797979, + "marketcap_usd": 2779158, "name": "Storiqa", "network": "eth", "shortcut": "STQ", @@ -22896,7 +22910,7 @@ "links": { "Homepage": "https://staker.network" }, - "marketcap_usd": 4442, + "marketcap_usd": 4593, "name": "Staker", "network": "eth", "shortcut": "STR", @@ -22951,7 +22965,7 @@ "links": { "Homepage": "https://bitjob.io" }, - "marketcap_usd": 131360, + "marketcap_usd": 143323, "name": "bitJob", "network": "eth", "shortcut": "STU", @@ -22979,7 +22993,7 @@ "Github": "https://github.com/stx-technologies/stox-token", "Homepage": "https://www.stox.com" }, - "marketcap_usd": 830080, + "marketcap_usd": 796337, "name": "StoxToken", "network": "eth", "shortcut": "STX", @@ -23033,7 +23047,7 @@ "links": { "Homepage": "https://www.suretly.com" }, - "marketcap_usd": 138128, + "marketcap_usd": 138456, "name": "Suretly", "network": "eth", "shortcut": "SUR", @@ -23060,7 +23074,7 @@ "links": { "Homepage": "https://ico.savedroid.com" }, - "marketcap_usd": 839456, + "marketcap_usd": 942742, "name": "savedroid", "network": "eth", "shortcut": "SVD", @@ -23087,7 +23101,7 @@ "links": { "Homepage": "http://www.swftcoin.com" }, - "marketcap_usd": 3452822, + "marketcap_usd": 3422170, "name": "SwftCoin", "network": "eth", "shortcut": "SWFTC", @@ -23115,7 +23129,7 @@ "Github": "https://github.com/swarmfund", "Homepage": "https://swarm.fund" }, - "marketcap_usd": 8791253, + "marketcap_usd": 7475899, "name": "Swarm Fund Token", "network": "eth", "shortcut": "SWM", @@ -23142,7 +23156,7 @@ "links": { "Homepage": "http://swarm.city" }, - "marketcap_usd": 918198, + "marketcap_usd": 943635, "name": "Swarm City Token", "network": "eth", "shortcut": "SWT", @@ -23169,7 +23183,7 @@ "links": { "Homepage": "http://www.spectre.ai" }, - "marketcap_usd": 18748612, + "marketcap_usd": 18767290, "name": "Spectre.ai D-Token", "network": "eth", "shortcut": "SXDT", @@ -23196,7 +23210,7 @@ "links": { "Homepage": "http://www.spectre.ai" }, - "marketcap_usd": 1472502, + "marketcap_usd": 1449133, "name": "Spectre.ai U-Token", "network": "eth", "shortcut": "SXUT", @@ -23277,7 +23291,7 @@ "links": { "Homepage": "https://www.talao.io" }, - "marketcap_usd": 197519, + "marketcap_usd": 196566, "name": "Talao", "network": "eth", "shortcut": "TALAO", @@ -23305,7 +23319,7 @@ "Github": "https://github.com/lamden", "Homepage": "https://www.lamden.io" }, - "marketcap_usd": 3580323, + "marketcap_usd": 3357963, "name": "Lamden Tau", "network": "eth", "shortcut": "TAU", @@ -23388,7 +23402,7 @@ "links": { "Homepage": "https://tokenbox.io" }, - "marketcap_usd": 174109, + "marketcap_usd": 162734, "name": "Tokenbox", "network": "eth", "shortcut": "TBX", @@ -23443,7 +23457,7 @@ "links": { "Homepage": "https://www.thorecash.com" }, - "marketcap_usd": 40890, + "marketcap_usd": 33733, "name": "Thore Cash", "network": "eth", "shortcut": "TCH", @@ -23497,7 +23511,7 @@ "links": { "Homepage": "https://tokenstars.com/team" }, - "marketcap_usd": 19356, + "marketcap_usd": 19082, "name": "TEAM (TokenStars)", "network": "eth", "shortcut": "TEAM", @@ -23524,7 +23538,7 @@ "links": { "Homepage": "https://www.tokenomy.com" }, - "marketcap_usd": 11732660, + "marketcap_usd": 9849505, "name": "Tokenomy", "network": "eth", "shortcut": "TEN", @@ -23551,7 +23565,7 @@ "links": { "Homepage": "https://ico.tefoodint.com" }, - "marketcap_usd": 3632802, + "marketcap_usd": 3446106, "name": "TE-FOOD", "network": "eth", "shortcut": "TFD", @@ -23579,7 +23593,7 @@ "Github": "https://github.com/TrueFlip", "Homepage": "https://trueflip.io" }, - "marketcap_usd": 1241672, + "marketcap_usd": 1157308, "name": "TrueFlip", "network": "eth", "shortcut": "TFL", @@ -23606,7 +23620,7 @@ "links": { "Homepage": "https://ico.truegame.io" }, - "marketcap_usd": 778972, + "marketcap_usd": 712493, "name": "Truegame", "network": "eth", "shortcut": "TGAME", @@ -23660,7 +23674,7 @@ "links": { "Homepage": "https://www.thetatoken.org/" }, - "marketcap_usd": 44270574, + "marketcap_usd": 50110850, "name": "Theta Token", "network": "eth", "shortcut": "THETA", @@ -23687,7 +23701,7 @@ "links": { "Homepage": "https://www.thorecoin.com" }, - "marketcap_usd": 80326, + "marketcap_usd": 26299, "name": "ThoreCoin", "network": "eth", "shortcut": "THR", @@ -23714,7 +23728,7 @@ "links": { "Homepage": "https://ico.thrivelabs.io" }, - "marketcap_usd": 701556, + "marketcap_usd": 708106, "name": "Thrive Token", "network": "eth", "shortcut": "THRT", @@ -23769,7 +23783,7 @@ "links": { "Homepage": "https://thingschain.network" }, - "marketcap_usd": 51010, + "marketcap_usd": 49968, "name": "Thingschain", "network": "eth", "shortcut": "TIC", @@ -23796,7 +23810,7 @@ "links": { "Homepage": "https://ties.network" }, - "marketcap_usd": 532600, + "marketcap_usd": 565276, "name": "Ties.DB", "network": "eth", "shortcut": "TIE", @@ -23823,7 +23837,7 @@ "links": { "Homepage": "https://www.tigereum.io" }, - "marketcap_usd": 233947, + "marketcap_usd": 299555, "name": "Tigereum", "network": "eth", "shortcut": "TIG", @@ -23850,7 +23864,7 @@ "links": { "Homepage": "https://chronobank.io" }, - "marketcap_usd": 1350824, + "marketcap_usd": 1335850, "name": "Chronobank", "network": "eth", "shortcut": "TIME", @@ -23904,7 +23918,7 @@ "links": { "Homepage": "https://www.blocktix.io" }, - "marketcap_usd": 4153421, + "marketcap_usd": 4839837, "name": "Blocktix", "network": "eth", "shortcut": "TIX", @@ -23931,7 +23945,7 @@ "links": { "Homepage": "https://www.tokia.io" }, - "marketcap_usd": 132440, + "marketcap_usd": 126422, "name": "Tokia", "network": "eth", "shortcut": "TKA", @@ -23985,7 +23999,7 @@ "links": { "Homepage": "https://etherscan.io/token/TokenCard" }, - "marketcap_usd": 6099151, + "marketcap_usd": 5938891, "name": "TokenCard", "network": "eth", "shortcut": "TKN", @@ -24039,7 +24053,7 @@ "links": { "Homepage": "http://traxia.co" }, - "marketcap_usd": 1550128, + "marketcap_usd": 1534323, "name": "TRAXIA", "network": "eth", "shortcut": "TMT", @@ -24066,7 +24080,7 @@ "links": { "Homepage": "https://transcodium.com" }, - "marketcap_usd": 116166, + "marketcap_usd": 110870, "name": "Transcodium", "network": "eth", "shortcut": "TNS", @@ -24094,7 +24108,7 @@ "Github": "https://github.com/tierion", "Homepage": "https://tierion.com" }, - "marketcap_usd": 5872092, + "marketcap_usd": 5698668, "name": "Tierion Network Token", "network": "eth", "shortcut": "TNT", @@ -24176,7 +24190,7 @@ "links": { "Homepage": "https://origintrail.io" }, - "marketcap_usd": 5303653, + "marketcap_usd": 4948441, "name": "OriginTrail", "network": "eth", "shortcut": "TRAC", @@ -24203,7 +24217,7 @@ "links": { "Homepage": "http://www.trakinvest.com" }, - "marketcap_usd": 256071, + "marketcap_usd": 254372, "name": "TrakInvest", "network": "eth", "shortcut": "TRAK", @@ -24257,7 +24271,7 @@ "links": { "Homepage": "http://www.tracto.org" }, - "marketcap_usd": 196696, + "marketcap_usd": 218023, "name": "Tracto", "network": "eth", "shortcut": "TRCT", @@ -24312,7 +24326,7 @@ "Github": "https://github.com/WeTrustPlatform", "Homepage": "https://www.wetrust.io" }, - "marketcap_usd": 760826, + "marketcap_usd": 810376, "name": "TRST", "network": "eth", "shortcut": "TRST", @@ -24394,7 +24408,7 @@ "links": { "Homepage": "http://www.ttc.eco" }, - "marketcap_usd": 5364164, + "marketcap_usd": 4833316, "name": "TTC Protocol", "network": "eth", "shortcut": "TTC", @@ -24421,7 +24435,7 @@ "links": { "Homepage": "https://tatatutoken.io" }, - "marketcap_usd": 698004, + "marketcap_usd": 549864, "name": "TaTaTu", "network": "eth", "shortcut": "TTU", @@ -24449,7 +24463,7 @@ "Github": "https://github.com/trusttoken", "Homepage": "https://www.trusttoken.com" }, - "marketcap_usd": 208528618, + "marketcap_usd": 207414058, "name": "TrueUSD", "network": "eth", "shortcut": "TUSD", @@ -24530,7 +24544,7 @@ "links": { "Homepage": "https://taas.fund" }, - "marketcap_usd": 2257449, + "marketcap_usd": 2047320, "name": "Token-as-a-Service", "network": "eth", "shortcut": "TaaS", @@ -24557,7 +24571,7 @@ "links": { "Homepage": "https://unibright.io" }, - "marketcap_usd": 1638696, + "marketcap_usd": 1659233, "name": "Unibright", "network": "eth", "shortcut": "UBT", @@ -24584,7 +24598,7 @@ "links": { "Homepage": "https://u.cash" }, - "marketcap_usd": 861133, + "marketcap_usd": 859171, "name": "U.CASH", "network": "eth", "shortcut": "UCASH", @@ -24611,7 +24625,7 @@ "links": { "Homepage": "https://uchain.world" }, - "marketcap_usd": 383137, + "marketcap_usd": 377314, "name": "UChain", "network": "eth", "shortcut": "UCN", @@ -24638,7 +24652,7 @@ "links": { "Homepage": "https://www.upfiring.com" }, - "marketcap_usd": 1348290, + "marketcap_usd": 2844598, "name": "Upfiring", "network": "eth", "shortcut": "UFR", @@ -24666,7 +24680,7 @@ "Github": "https://github.com/unikoingold/UnikoinGold-UKG-Contract", "Homepage": "https://unikoingold.com" }, - "marketcap_usd": 3695651, + "marketcap_usd": 3600086, "name": "UnikoinGold", "network": "eth", "shortcut": "UKG", @@ -24693,7 +24707,7 @@ "links": { "Homepage": "https://uptoken.org" }, - "marketcap_usd": 3065117, + "marketcap_usd": 2843363, "name": "UpToken", "network": "eth", "shortcut": "UP", @@ -24720,7 +24734,7 @@ "links": { "Homepage": "https://sentinelprotocol.io" }, - "marketcap_usd": 3984243, + "marketcap_usd": 4139733, "name": "Sentinel Protocol", "network": "eth", "shortcut": "UPP", @@ -24747,7 +24761,7 @@ "links": { "Homepage": "https://uquidcoin.com" }, - "marketcap_usd": 571278, + "marketcap_usd": 562147, "name": "Uquid Coin", "network": "eth", "shortcut": "UQC", @@ -24803,7 +24817,7 @@ "Github": "https://github.com/centrehq/centre-tokens", "Homepage": "https://www.centre.io" }, - "marketcap_usd": 292036783, + "marketcap_usd": 291248135, "name": "USD//Coin", "network": "eth", "shortcut": "USDC", @@ -24884,7 +24898,7 @@ "links": { "Homepage": "https://utrust.io" }, - "marketcap_usd": 9579332, + "marketcap_usd": 9505316, "name": "UTK", "network": "eth", "shortcut": "UTK", @@ -24912,7 +24926,7 @@ "Github": "https://github.com/UniversaBlockchain/universa", "Homepage": "https://www.universa.io" }, - "marketcap_usd": 6663632, + "marketcap_usd": 7856330, "name": "Universa", "network": "eth", "shortcut": "UTNP", @@ -24939,7 +24953,7 @@ "links": { "Homepage": "https://uttoken.io" }, - "marketcap_usd": 8016256, + "marketcap_usd": 8031310, "name": "United Traders Token", "network": "eth", "shortcut": "UTT", @@ -24966,7 +24980,7 @@ "links": { "Homepage": "https://u.network/" }, - "marketcap_usd": 1636378, + "marketcap_usd": 1607152, "name": "U Networks", "network": "eth", "shortcut": "UUU", @@ -25050,7 +25064,7 @@ "Github": "https://github.com/blockv", "Homepage": "https://blockv.io" }, - "marketcap_usd": 12292658, + "marketcap_usd": 10725882, "name": "BLOCKv", "network": "eth", "shortcut": "VEE", @@ -25132,7 +25146,7 @@ "links": { "Homepage": "https://veritas.veritaseum.com" }, - "marketcap_usd": 26751649, + "marketcap_usd": 30343905, "name": "Veritaseum", "network": "eth", "shortcut": "VERI", @@ -25159,7 +25173,7 @@ "links": { "Homepage": "https://www.viberate.io" }, - "marketcap_usd": 4106380, + "marketcap_usd": 4012011, "name": "VIB", "network": "eth", "shortcut": "VIB", @@ -25187,7 +25201,7 @@ "Github": "https://github.com/Viewly/", "Homepage": "https://view.ly/" }, - "marketcap_usd": 217615, + "marketcap_usd": 190927, "name": "Viewly", "network": "eth", "shortcut": "VIEW", @@ -25214,7 +25228,7 @@ "links": { "Homepage": "https://ico.vikky.io" }, - "marketcap_usd": 34786, + "marketcap_usd": 35916, "name": "VikkyToken", "network": "eth", "shortcut": "VIKKY", @@ -25269,7 +25283,7 @@ "links": { "Homepage": "https://www.vite.org" }, - "marketcap_usd": 6420955, + "marketcap_usd": 6230627, "name": "Vite", "network": "eth", "shortcut": "VITE", @@ -25297,7 +25311,7 @@ "Github": "https://github.com/viuly", "Homepage": "https://viuly.io" }, - "marketcap_usd": 64921, + "marketcap_usd": 63902, "name": "VIU", "network": "eth", "shortcut": "VIU", @@ -25325,7 +25339,7 @@ "Github": "https://github.com/vetri-global/", "Homepage": "https://vetri.global/" }, - "marketcap_usd": 712918, + "marketcap_usd": 712067, "name": "VETRI", "network": "eth", "shortcut": "VLD", @@ -25380,7 +25394,7 @@ "links": { "Homepage": "https://voise.it" }, - "marketcap_usd": 377198, + "marketcap_usd": 376308, "name": "Voise", "network": "eth", "shortcut": "VOISE", @@ -25462,7 +25476,7 @@ "links": { "Homepage": "https://vezt.co" }, - "marketcap_usd": 540619, + "marketcap_usd": 521260, "name": "Vezt", "network": "eth", "shortcut": "VZT", @@ -25489,7 +25503,7 @@ "links": { "Homepage": "https://wab.network" }, - "marketcap_usd": 693871, + "marketcap_usd": 658740, "name": "WABnetwork", "network": "eth", "shortcut": "WAB", @@ -25545,7 +25559,7 @@ "Github": "https://github.com/waxio", "Homepage": "https://wax.io" }, - "marketcap_usd": 30037030, + "marketcap_usd": 30163787, "name": "WAX", "network": "eth", "shortcut": "WAX", @@ -25682,7 +25696,7 @@ "links": { "Homepage": "https://webcoin.today" }, - "marketcap_usd": 144951, + "marketcap_usd": 148523, "name": "Webcoin", "network": "eth", "shortcut": "WEB", @@ -25792,7 +25806,7 @@ "links": { "Homepage": "https://wings.ai" }, - "marketcap_usd": 7658681, + "marketcap_usd": 7493349, "name": "WINGS", "network": "eth", "shortcut": "WINGS", @@ -25819,7 +25833,7 @@ "links": { "Homepage": "https://mywish.io" }, - "marketcap_usd": 474081, + "marketcap_usd": 369541, "name": "MyWish", "network": "eth", "shortcut": "WISH", @@ -25929,7 +25943,7 @@ "links": { "Homepage": "https://wepower.network" }, - "marketcap_usd": 6833940, + "marketcap_usd": 6600249, "name": "WePower Token", "network": "eth", "shortcut": "WPR", @@ -25956,7 +25970,7 @@ "links": { "Homepage": "https://worldcore.eu" }, - "marketcap_usd": 412949, + "marketcap_usd": 406298, "name": "Worldcore", "network": "eth", "shortcut": "WRC", @@ -26011,7 +26025,7 @@ "links": { "Homepage": "http://www.waltonchain.org" }, - "marketcap_usd": 40792302, + "marketcap_usd": 38475428, "name": "Waltonchain", "network": "eth", "shortcut": "WTC", @@ -26094,7 +26108,7 @@ "links": { "Homepage": "https://www.wacoin.io" }, - "marketcap_usd": 6433755, + "marketcap_usd": 6519264, "name": "WaBi", "network": "eth", "shortcut": "WaBi", @@ -26121,7 +26135,7 @@ "links": { "Homepage": "https://x8currency.com" }, - "marketcap_usd": 824033, + "marketcap_usd": 772831, "name": "X8X", "network": "eth", "shortcut": "X8X", @@ -26148,7 +26162,7 @@ "links": { "Homepage": "http://www.xaurum.org" }, - "marketcap_usd": 3651928, + "marketcap_usd": 3719208, "name": "Xaurum", "network": "eth", "shortcut": "XAUR", @@ -26203,7 +26217,7 @@ "Github": "https://github.com/blitzpredict", "Homepage": "https://www.blitzpredict.io" }, - "marketcap_usd": 298269, + "marketcap_usd": 290921, "name": "BlitzPredict", "network": "eth", "shortcut": "XBP", @@ -26285,7 +26299,7 @@ "links": { "Homepage": "https://clearcoin.co" }, - "marketcap_usd": 246910, + "marketcap_usd": 240694, "name": "ClearCoin", "network": "eth", "shortcut": "XCLR", @@ -26312,7 +26326,7 @@ "links": { "Homepage": "https://www.xinfin.io" }, - "marketcap_usd": 2141325, + "marketcap_usd": 2356926, "name": "XinFin Network", "network": "eth", "shortcut": "XDCE", @@ -26339,7 +26353,7 @@ "links": { "Homepage": "https://proxeus.com" }, - "marketcap_usd": 2989114, + "marketcap_usd": 2040604, "name": "Proxeus", "network": "eth", "shortcut": "XES", @@ -26530,7 +26544,7 @@ "links": { "Homepage": "http://xmedchain.com" }, - "marketcap_usd": 146586, + "marketcap_usd": 148030, "name": "XMED Chain", "network": "eth", "shortcut": "XMCT", @@ -26557,7 +26571,7 @@ "links": { "Homepage": "https://www.xmx.com" }, - "marketcap_usd": 1891579, + "marketcap_usd": 1753838, "name": "XMax", "network": "eth", "shortcut": "XMX", @@ -26585,7 +26599,7 @@ "Github": "https://github.com/InkProtocol/", "Homepage": "https://paywithink.com" }, - "marketcap_usd": 863075, + "marketcap_usd": 781611, "name": "Ink Protocol", "network": "eth", "shortcut": "XNK", @@ -26612,7 +26626,7 @@ "links": { "Homepage": "https://xenon.network" }, - "marketcap_usd": 323587, + "marketcap_usd": 473957, "name": "XENON", "network": "eth", "shortcut": "XNN", @@ -26666,7 +26680,7 @@ "links": { "Homepage": "http://www.xov.io" }, - "marketcap_usd": 205746, + "marketcap_usd": 225520, "name": "XOVBank", "network": "eth", "shortcut": "XOV", @@ -26693,7 +26707,7 @@ "links": { "Homepage": "https://xpa.io" }, - "marketcap_usd": 2155906, + "marketcap_usd": 2094699, "name": "XPA", "network": "eth", "shortcut": "XPA", @@ -26721,7 +26735,7 @@ "Github": "https://github.com/Bit-Nation/", "Homepage": "https://bitnation.co" }, - "marketcap_usd": 77411, + "marketcap_usd": 72722, "name": "Pangea Arbitration Token", "network": "eth", "shortcut": "XPAT", @@ -26802,7 +26816,7 @@ "links": { "Homepage": "https://xyo.network" }, - "marketcap_usd": 15761240, + "marketcap_usd": 14402251, "name": "XYO", "network": "eth", "shortcut": "XYO", @@ -26829,7 +26843,7 @@ "links": { "Homepage": "http://www.yeefoundation.com" }, - "marketcap_usd": 1449036, + "marketcap_usd": 1476360, "name": "Yee Token", "network": "eth", "shortcut": "YEE", @@ -26857,7 +26871,7 @@ "Github": "https://github.com/crowdholding/", "Homepage": "https://www.crowdholding.com" }, - "marketcap_usd": 79266, + "marketcap_usd": 56556, "name": "YUP", "network": "eth", "shortcut": "YUP", @@ -26885,7 +26899,7 @@ "Github": "https://github.com/zapproject", "Homepage": "https://zap.store" }, - "marketcap_usd": 1321274, + "marketcap_usd": 1205926, "name": "ZAP", "network": "eth", "shortcut": "ZAP", @@ -26912,7 +26926,7 @@ "links": { "Homepage": "https://0chain.net" }, - "marketcap_usd": 3103131, + "marketcap_usd": 3032958, "name": "0chain", "network": "eth", "shortcut": "ZCN", @@ -26939,7 +26953,7 @@ "links": { "Homepage": "https://www.zebi.io" }, - "marketcap_usd": 2322756, + "marketcap_usd": 2178633, "name": "Zebi", "network": "eth", "shortcut": "ZCO", @@ -26966,7 +26980,7 @@ "links": { "Homepage": "https://zsc.io/" }, - "marketcap_usd": 1576031, + "marketcap_usd": 1518669, "name": "Zeusshield", "network": "eth", "shortcut": "ZCS", @@ -26994,7 +27008,7 @@ "Github": "https://github.com/ZEUS-coin", "Homepage": "https://zeusfundme.com/" }, - "marketcap_usd": 32455, + "marketcap_usd": 41329, "name": "ZeusNetwork", "network": "eth", "shortcut": "ZEUS", @@ -27022,7 +27036,7 @@ "Github": "https://github.com/zilliqa", "Homepage": "https://www.zilliqa.com/" }, - "marketcap_usd": 144398955, + "marketcap_usd": 139407454, "name": "Zilliqa", "network": "eth", "shortcut": "ZIL", @@ -27049,7 +27063,7 @@ "links": { "Homepage": "https://zinc.work" }, - "marketcap_usd": 118133, + "marketcap_usd": 122023, "name": "ZINC", "network": "eth", "shortcut": "ZINC", @@ -27076,7 +27090,7 @@ "links": { "Homepage": "http://zipper.io" }, - "marketcap_usd": 6743233, + "marketcap_usd": 6132266, "name": "Zipper", "network": "eth", "shortcut": "ZIP", @@ -27103,7 +27117,7 @@ "links": { "Homepage": "https://zippie.org" }, - "marketcap_usd": 299609, + "marketcap_usd": 287145, "name": "Zippie", "network": "eth", "shortcut": "ZIPT", @@ -27158,7 +27172,7 @@ "links": { "Homepage": "https://zla.io" }, - "marketcap_usd": 347576, + "marketcap_usd": 337819, "name": "Zilla", "network": "eth", "shortcut": "ZLA", @@ -27185,7 +27199,7 @@ "links": { "Homepage": "https://www.zmine.com" }, - "marketcap_usd": 1059772, + "marketcap_usd": 966729, "name": "ZMINE", "network": "eth", "shortcut": "ZMN", @@ -27212,7 +27226,7 @@ "links": { "Homepage": "https://zper.io" }, - "marketcap_usd": 1136507, + "marketcap_usd": 1214740, "name": "ZPER", "network": "eth", "shortcut": "ZPR", @@ -27240,7 +27254,7 @@ "Github": "https://github.com/0xProject", "Homepage": "https://0xproject.com" }, - "marketcap_usd": 136369652, + "marketcap_usd": 135336597, "name": "0x Project", "network": "eth", "shortcut": "ZRX", @@ -27294,7 +27308,7 @@ "links": { "Homepage": "https://0xcert.org" }, - "marketcap_usd": 309338, + "marketcap_usd": 851183, "name": "0xcert Protocol Token", "network": "eth", "shortcut": "ZXC", @@ -27322,7 +27336,7 @@ "Github": "https://github.com/carVertical", "Homepage": "https://www.carvertical.com" }, - "marketcap_usd": 2129753, + "marketcap_usd": 2161151, "name": "carVertical", "network": "eth", "shortcut": "cV", @@ -27377,7 +27391,7 @@ "Github": "https://github.com/eBTCCommunityTrustToken/eBTC", "Homepage": "https://ebitcoin.org" }, - "marketcap_usd": 319081, + "marketcap_usd": 280212, "name": "eBTC", "network": "eth", "shortcut": "eBTC", @@ -27460,7 +27474,7 @@ "Github": "https://github.com/eosdac", "Homepage": "https://eosdac.io/" }, - "marketcap_usd": 3475215, + "marketcap_usd": 3461462, "name": "eosDAC", "network": "eth", "shortcut": "eosDAC", @@ -27488,7 +27502,7 @@ "Github": "https://github.com/onGsocial", "Homepage": "https://ongcoin.io" }, - "marketcap_usd": 208822, + "marketcap_usd": 183267, "name": "onG", "network": "eth", "shortcut": "onG", @@ -27516,7 +27530,7 @@ "Github": "https://github.com/havven/", "Homepage": "https://www.synthetix.io" }, - "marketcap_usd": 1032370, + "marketcap_usd": 1048600, "name": "USD Synth (sUSD)", "network": "eth", "shortcut": "sUSD", @@ -27611,7 +27625,7 @@ "links": { "Homepage": "https://akroma.io" }, - "marketcap_usd": 198687, + "marketcap_usd": 169101, "name": "Akroma", "shortcut": "AKA", "t1_enabled": "yes", @@ -27632,7 +27646,7 @@ "links": { "Homepage": "https://atheios.com" }, - "marketcap_usd": 27676, + "marketcap_usd": 25265, "name": "Atheios", "shortcut": "ATH", "t1_enabled": "yes", @@ -27654,7 +27668,7 @@ "links": { "Homepage": "https://callisto.network" }, - "marketcap_usd": 3270659, + "marketcap_usd": 2902604, "name": "Callisto", "shortcut": "CLO", "t1_enabled": "yes", @@ -27675,7 +27689,7 @@ "links": { "Homepage": "https://egem.io" }, - "marketcap_usd": 174565, + "marketcap_usd": 169158, "name": "EtherGem", "shortcut": "EGEM", "t1_enabled": "yes", @@ -27696,7 +27710,7 @@ "links": { "Homepage": "https://ellaism.org" }, - "marketcap_usd": 151205, + "marketcap_usd": 129402, "name": "Ellaism", "shortcut": "ELLA", "t1_enabled": "yes", @@ -27739,7 +27753,7 @@ "links": { "Homepage": "https://ethersocial.org" }, - "marketcap_usd": 570878, + "marketcap_usd": 491758, "name": "Ethersocial Network", "shortcut": "ESN", "t1_enabled": "yes", @@ -27760,7 +27774,7 @@ "links": { "Homepage": "https://ethereumclassic.github.io" }, - "marketcap_usd": 420321396, + "marketcap_usd": 419047498, "name": "Ethereum Classic", "shortcut": "ETC", "t1_enabled": "yes", @@ -27785,7 +27799,7 @@ "links": { "Homepage": "https://www.ethereum.org" }, - "marketcap_usd": 11266412521, + "marketcap_usd": 10991215297, "name": "Ethereum", "shortcut": "ETH", "t1_enabled": "yes", @@ -27810,7 +27824,7 @@ "links": { "Homepage": "https://ether1.org" }, - "marketcap_usd": 228349, + "marketcap_usd": 222350, "name": "Ether-1", "shortcut": "ETHO", "t1_enabled": "yes", @@ -27852,7 +27866,7 @@ "links": { "Homepage": "https://expanse.tech" }, - "marketcap_usd": 978587, + "marketcap_usd": 931528, "name": "Expanse", "shortcut": "EXP", "t1_enabled": "yes", @@ -27873,7 +27887,7 @@ "links": { "Homepage": "https://gochain.io" }, - "marketcap_usd": 12486120, + "marketcap_usd": 12025315, "name": "GoChain", "shortcut": "GO", "t1_enabled": "yes", @@ -27915,7 +27929,7 @@ "links": { "Homepage": "https://musicoin.org" }, - "marketcap_usd": 1163597, + "marketcap_usd": 1055984, "name": "Musicoin", "shortcut": "MUSIC", "t1_enabled": "yes", @@ -27936,7 +27950,7 @@ "links": { "Homepage": "https://pirl.io" }, - "marketcap_usd": 1025798, + "marketcap_usd": 1031094, "name": "Pirl", "shortcut": "PIRL", "t1_enabled": "yes", @@ -27999,7 +28013,7 @@ "links": { "Homepage": "https://ubiqsmart.com" }, - "marketcap_usd": 7205499, + "marketcap_usd": 6769761, "name": "Ubiq", "shortcut": "UBQ", "t1_enabled": "yes", @@ -28021,7 +28035,7 @@ "Github": "https://github.com/input-output-hk/cardano-sl", "Homepage": "https://www.cardano.org" }, - "marketcap_usd": 980936909, + "marketcap_usd": 954467253, "name": "Cardano", "shortcut": "ADA", "t1_enabled": "no", @@ -28039,7 +28053,7 @@ "Github": "https://github.com/EOSIO/eos", "Homepage": "https://eos.io" }, - "marketcap_usd": 2162973422, + "marketcap_usd": 2132150041, "name": "EOS", "shortcut": "EOS", "t1_enabled": "no", @@ -28052,7 +28066,7 @@ "Github": "https://github.com/LiskHQ/lisk", "Homepage": "https://lisk.io/" }, - "marketcap_usd": 126933407, + "marketcap_usd": 123456593, "name": "Lisk", "shortcut": "LSK", "t1_enabled": "yes", @@ -28065,7 +28079,7 @@ "Github": "https://github.com/maidsafe", "Homepage": "https://maidsafe.net" }, - "marketcap_usd": 51067928, + "marketcap_usd": 50172615, "name": "MaidSafeCoin", "shortcut": "MAID", "t1_enabled": "yes", @@ -28078,7 +28092,7 @@ "Github": "https://github.com/OmniLayer", "Homepage": "https://www.omnilayer.org" }, - "marketcap_usd": 1150458, + "marketcap_usd": 1036819, "name": "Omni", "shortcut": "OMNI", "t1_enabled": "yes", @@ -28091,7 +28105,7 @@ "Github": "https://github.com/ontio/ontology", "Homepage": "https://ont.io" }, - "marketcap_usd": 172172523, + "marketcap_usd": 170989496, "name": "Ontology", "shortcut": "ONT", "t1_enabled": "no", @@ -28104,7 +28118,7 @@ "Github": "https://github.com/tronprotocol/java-tron", "Homepage": "https://tron.network" }, - "marketcap_usd": 1784687960, + "marketcap_usd": 1719432749, "name": "Tron", "shortcut": "TRX", "t1_enabled": "no", @@ -28116,7 +28130,7 @@ "links": { "Homepage": "https://tether.to" }, - "marketcap_usd": 2022654617, + "marketcap_usd": 2021045907, "name": "Tether", "shortcut": "USDT", "t1_enabled": "yes", @@ -28129,7 +28143,7 @@ "Github": "https://github.com/wanchain/go-wanchain", "Homepage": "https://wanchain.org" }, - "marketcap_usd": 28345740, + "marketcap_usd": 28941223, "name": "Wanchain", "shortcut": "WAN", "t1_enabled": "yes", @@ -28142,7 +28156,7 @@ "Github": "https://github.com/stellar/stellar-core", "Homepage": "https://www.stellar.org" }, - "marketcap_usd": 1506640521, + "marketcap_usd": 1445664971, "name": "Stellar", "shortcut": "XLM", "t1_enabled": "yes", @@ -28160,7 +28174,7 @@ "Github": "https://github.com/monero-project/monero", "Homepage": "https://getmonero.org" }, - "marketcap_usd": 723207349, + "marketcap_usd": 732073046, "name": "Monero", "shortcut": "XMR", "t1_enabled": "no", @@ -28173,7 +28187,7 @@ "Github": "https://github.com/ripple/rippled", "Homepage": "https://ripple.com" }, - "marketcap_usd": 12280642696, + "marketcap_usd": 12096468792, "name": "Ripple", "shortcut": "XRP", "t1_enabled": "no", @@ -28186,7 +28200,7 @@ "Github": "https://github.com/tezos/tezos", "Homepage": "https://tezos.com" }, - "marketcap_usd": 226084466, + "marketcap_usd": 221622736, "name": "Tezos", "shortcut": "XTZ", "t1_enabled": "no", @@ -28220,7 +28234,7 @@ "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 2381610, + "marketcap_usd": 2163942, "name": "DIMCOIN", "shortcut": "DIM", "t1_enabled": "yes", @@ -28238,7 +28252,7 @@ "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 2381610, + "marketcap_usd": 2163942, "name": "DIM TOKEN", "shortcut": "DIMTOK", "t1_enabled": "yes", @@ -28289,7 +28303,7 @@ "links": { "Homepage": "https://nem.io" }, - "marketcap_usd": 342577422, + "marketcap_usd": 340601115, "name": "NEM", "shortcut": "XEM", "t1_enabled": "yes", @@ -28304,12 +28318,12 @@ } }, "info": { - "marketcap_supported": "90.28 %", - "marketcap_usd": 102605031488, + "marketcap_supported": "90.33 %", + "marketcap_usd": 101132592654, "t1_coins": 704, "t2_coins": 1011, - "total_marketcap_usd": 113653597552, - "updated_at": 1549374014, - "updated_at_readable": "Tue Feb 5 14:40:14 2019" + "total_marketcap_usd": 111965133346, + "updated_at": 1549555210, + "updated_at_readable": "Thu Feb 7 17:00:10 2019" } -} +} \ No newline at end of file From f9bac5ea30a5151660ed51ff561bc4a5970df0b8 Mon Sep 17 00:00:00 2001 From: James Date: Fri, 8 Feb 2019 11:58:38 +0100 Subject: [PATCH 719/767] defs: Add ZClassic (#271) --- defs/bitcoin/zclassic.json | 40 +++++++++++++++++++++++++++++++++++++ defs/bitcoin/zclassic.png | Bin 0 -> 7783 bytes 2 files changed, 40 insertions(+) create mode 100644 defs/bitcoin/zclassic.json create mode 100644 defs/bitcoin/zclassic.png diff --git a/defs/bitcoin/zclassic.json b/defs/bitcoin/zclassic.json new file mode 100644 index 000000000..dc38ea1da --- /dev/null +++ b/defs/bitcoin/zclassic.json @@ -0,0 +1,40 @@ +{ + "coin_name": "ZClassic", + "coin_shortcut": "ZCL", + "coin_label": "ZClassic", + "website": "https://zclassic.org", + "github": "https://github.com/ZclassicCommunity", + "maintainer": "James Skrowvedeht ", + "curve_name": "secp256k1", + "address_type": 7352, + "address_type_p2sh": 7357, + "maxfee_kb": 1000000, + "minfee_kb": 1000, + "signed_message_header": "Zcash Signed Message:\n", + "hash_genesis_block": "0007104ccda289427919efc39dc9e4d499804b7bebc22df55f8b834301260602", + "xprv_magic": 76066276, + "xpub_magic": 76067358, + "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "slip44": 147, + "segwit": false, + "decred": false, + "fork_id": null, + "force_bip143": false, + "bip115": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 546, + "blocktime_seconds": 150, + "uri_prefix": "zclassic", + "min_address_length": 35, + "max_address_length": 95, + "bitcore": [ + "https://explorer.zcl.zeltrez.io" + ], + "blockbook": [], + "cooldown": 100 +} diff --git a/defs/bitcoin/zclassic.png b/defs/bitcoin/zclassic.png new file mode 100644 index 0000000000000000000000000000000000000000..570835e441c8a15031b765e691fe6651b4c63432 GIT binary patch literal 7783 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 literal 0 HcmV?d00001 From ae2b349468adf692747ddbb2fdef0046f4cd9b65 Mon Sep 17 00:00:00 2001 From: "random.zebra" Date: Mon, 11 Feb 2019 12:54:57 +0100 Subject: [PATCH 720/767] defs/coins: Add PIVX (#277) --- defs/bitcoin/pivx.json | 40 +++++++++++++++++++++++++++++++++ defs/bitcoin/pivx.png | Bin 0 -> 4811 bytes defs/bitcoin/pivx_testnet.json | 40 +++++++++++++++++++++++++++++++++ defs/bitcoin/pivx_testnet.png | Bin 0 -> 3852 bytes 4 files changed, 80 insertions(+) create mode 100644 defs/bitcoin/pivx.json create mode 100644 defs/bitcoin/pivx.png create mode 100644 defs/bitcoin/pivx_testnet.json create mode 100644 defs/bitcoin/pivx_testnet.png diff --git a/defs/bitcoin/pivx.json b/defs/bitcoin/pivx.json new file mode 100644 index 000000000..6a7e812a5 --- /dev/null +++ b/defs/bitcoin/pivx.json @@ -0,0 +1,40 @@ +{ + "coin_name": "PIVX", + "coin_shortcut": "PIVX", + "coin_label": "PIVX", + "website": "https://pivx.org", + "github": "https://github.com/PIVX-Project/PIVX", + "maintainer": "Random Zebra ", + "curve_name": "secp256k1", + "address_type": 30, + "address_type_p2sh": 13, + "maxfee_kb": 100000, + "minfee_kb": 100, + "signed_message_header": "DarkNet Signed Message:\n", + "hash_genesis_block": "0000041e482b9b9691d98eefb48473405c0b8ec31b76df3797c74a78680ef818", + "xprv_magic": 35729707, + "xpub_magic": 36513075, + "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "slip44": 119, + "segwit": false, + "decred": false, + "fork_id": null, + "force_bip143": false, + "bip115": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 546, + "blocktime_seconds": 60, + "uri_prefix": "pivx", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [], + "blockbook": [ + "https://blockbook.pivx.link" + ], + "cooldown": 100 +} diff --git a/defs/bitcoin/pivx.png b/defs/bitcoin/pivx.png new file mode 100644 index 0000000000000000000000000000000000000000..252fc8d88ff83fa3de4552a631aba312f5296aaf GIT binary patch literal 4811 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", + "curve_name": "secp256k1", + "address_type": 139, + "address_type_p2sh": 19, + "maxfee_kb": 100000, + "minfee_kb": 100, + "signed_message_header": "DarkNet Signed Message:\n", + "hash_genesis_block": "0000041e482b9b9691d98eefb48473405c0b8ec31b76df3797c74a78680ef818", + "xprv_magic": 981489719, + "xpub_magic": 981492128, + "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "slip44": 1, + "segwit": false, + "decred": false, + "fork_id": null, + "force_bip143": false, + "bip115": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 54600, + "blocktime_seconds": 60, + "uri_prefix": "pivx", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [], + "blockbook": [ + "https://blockbook-testnet.pivx.link" + ], + "cooldown": 100 +} diff --git a/defs/bitcoin/pivx_testnet.png b/defs/bitcoin/pivx_testnet.png new file mode 100644 index 0000000000000000000000000000000000000000..314fc8759ce9fda0a8853c8ea517c9bab792dcfc GIT binary patch literal 3852 zcmV+n5A*PeP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D4xvdzK~#8N?Oh9S zQ&k!+Dyy@sgNO(uDMg?>+9qwmW!4!4@ijWDtSfz_X$yU%Nh>gdtfRZKcGcCT?Cz|t z>l3uJP0|WNaX^$dua=g#h#(+Ed;wy4RSGTAlKlIhlan;}k&?7&Ny7b@Z`yLtz32Sj zckg-J$2n0FBuJ1TL4pJc5+q3Q8&0QlItzaLK@h!{LOcV?V>Y8}`Gr zC#zx5@0Y{SKfX_e_C>b=VpO6jW3y^t+?-m-UA7xGZvP2Roaxq-ACbk#MEr9gD|&bW zgNQ|vM$+L5Pl%3A2N=wU;kWbFz>vq@hmmPzq9S+4?hNq7xI7Dt&#i^*e|!ep4xC}7 z5eJt46#jS?`5P8m=m86cR6|fE=Vlgi~?Igh1HOl@M2UVC*_)9VvZT6Ev(0?ZXY!4I|EMq zCkBkK4Y?KhC;W2=lc4{B1;}+3Nr-c8mtgDu6R`NLMi`~3z^Y^gj7Tj5g+S15s5XE? zQ%Qby$~09?vh<2-d1_g~h};i`u_A~fKEGy?D&O*FYzyqF!p37Ny&a8d0F}-zYJe|J z%&|a>W)s}Acr(25(GfWGLo2;veF60t%8JlGzzi3$yy5%i^YGMLTOe9p?rI>#1nq{3 z3?qtNg})n4<5~UI$jqwAESsQVif-3HmDcu%vcR$)+lG$BqAl2ivWbfCi=<77#r9;{ zll8FTFgmjWWd79McsA2&Lv3^*>ttz$#aIPRz4@`%`}fS@ zAy#je$LHJbNz~W9tkTtgNsLLJw}V|Vq$=}WoyB8YQt(;Ailsn6Wfzlv5ncO(l?wXZH%j(=`!Jo*S-i911e5O&9L3T zHunn2I?HsG)@nqaCugKeSH}t3Unc77sX?j&+cA~4t|UQco5-^072+0sc`G?K$s=S8 zkfoP3vrT?MnOi$1UTa>6jpZjvMGfDo3hWNjSmN2u1oXcr;~&ZKYbLwBK1EhpU!$#sjDwj7THskd6o$eJ+$#g7Lo@cZ2Kz<#w7C`DUULxcf4Tw7 zX%@}Pe}?@PfIT6te!!6^3>Tj=d=UoMKg@n%GZo7l)pg&CrWGc6Fe zd1JKZQ_-|sMu-7~v2#A+1=oL!%ePR$yz%V+c8I3sGJ*^UbW|K{?)~Z~Dw-RgH=Pzu z$7MtrPzDJigEG={ArHQLO8)VD@%guRQqkOKIsc1jIxZv10Bnra23~+x_~O6`?7v^` z5y9!eviLXBet5B!ispvX;qYUG9AO3!CggJk+xJy74W_5?*MPeUx$OYP;v{c4h^6gf z1R4;XVd4bYUk1!vXlHx4Kn=jgSuAZABhUcCg#507Q0B|qLI0mUJ!0Xjd$3*cZ8%JW&0FDMxxYJfK<_J822|}tW^8Iqxr&HY+qqD7Lp+!x~t4${V zN8aRH+i;wm{p7ZHQ0B?-8fZTwt5}7npH76^2dHBvV&hVw))N zvTx)D=|B750AH-Y>Z?4Hg@hM5T$fa|m0lIUo9}vNfjXGk*8T-%Tt*6@{g<5;whTt9 z4Fzm7g*@GKQ5e*f88QZ_O?5033cMP2xvQV;2hY-Sp$@&Ao2VBc1t1ghxvL>Xh6#pe zl@DT@DdcLSQxMn{7zzd`G?h&(1PWzd{eA9sVoIUw^+pu`TekV?01NO2DM)$EAx|AD z&oFhe%@i>+N^f$_2`3EF7vpk_P}8^{dBDYn{cwAVA5)_RiyG4bR(uMj)~0Yz97U$R zY;E&=g*l2Pxq3ho=xnGn7JYBoChEKOffrZ&{G zVpCxM|CZ!=+o|}Z>M8l4i7JnAdwND!6J+Ntzd(cJr$aAhY>rnhQmLxQQ1)4<)cJWdtXX;8tMrCW%jABk7S)Nh(B$*e~ zJMgQ`=&aSCNUKUxB(CI) zPpL>@$vjY~jinqh`jMo^CQGjnOlhB}w>P?lCrr|HebR*SO=rnM7g)#_NMSoKJ0M2G zt7R&Vj|f4b58jnZi>Y3Kt@ z(6d6rtRH!*%jRtYW3N|&SGtuf5GM1$Ws(kBW? zcirhEzl|GYSUhplmmI1;Z3ZXxM_PyG7cG~Hr>mz@L=46 zrW?I`IaGYD6*ld1eM^inkgqugv*h6i41g?2LdWdQE$yEBMjl}@DxC_oX#q>_L0oF_ zukdU&1Ui7@Q<424jM7x*v%_+rDzI-*u^DjPBp>>nX>~1!g5~~^B@KUIFeVxmB6pdU zw{`%zUtiU6+vCPqmYf3|S({yRQgg-ame|0KRG0sq9fE@-tt}&Y9(TSV^6^Ga$!DyD zRQ%;EdE@|t8pq;;b8Q_sUJ$#tV>layqh_{?HwMVm#x2a#Oh25ct8Z5Eo`jL_19%NBxdc29l_DA#>|~^8?Wrk6YdC{9 zml2hOHA82u5WU?yGOcQ|LTxY)OI;c-M{*Q@vJd6r^M=WO&W6ZOrB=cPt2|zs?u$KH+lXJ(GUE{3Q1`%?%*uI zgLxFOEG38m1)}d9xpCJ5vSgLe1j6pt5u5(hX1X|>8+hC@mW6~X0rk2b1*1>f2u`27 z2=_d-4sPeIJ;pbHobhBSLw5s9fXAsu3Kn6I;3rVL2BsyPZ|{J+7q0VEO>P6m&ox8l zE4$$0rLK7(aKA11<9c=&3B3UdIRFJcLX~BB@R{{6I&&kuVmgF>ajKeq_+tRuRYEX< z!VX4qXIx@H;orp{p7%E;^f6HI^~iQ)G5aqG5+q2FAVGoz31NV!sQ&{zTa2cDWh!p~ O0000 Date: Mon, 11 Feb 2019 18:01:02 +0100 Subject: [PATCH 721/767] defs/coins: fix typo --- defs/bitcoin/smartcash.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/defs/bitcoin/smartcash.json b/defs/bitcoin/smartcash.json index 88438dc8c..f82ac9194 100644 --- a/defs/bitcoin/smartcash.json +++ b/defs/bitcoin/smartcash.json @@ -2,7 +2,7 @@ "coin_name": "SmartCash", "coin_shortcut": "SMART", "coin_label": "SmartCash", - "website": "https://smarcash.cc", + "website": "https://smartcash.cc", "github": "https://github.com/SmartCash/Core-Smart", "maintainer": "Leandro Reinaux ", "curve_name": "secp256k1_smart", From aa64119b9668fad8d9da027caf2a0cd40db02be6 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 12 Feb 2019 10:56:34 +0100 Subject: [PATCH 722/767] tools/cointool: add check for segwit fields --- defs/bitcoin/capricoin.json | 4 ++-- tools/cointool.py | 40 +++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/defs/bitcoin/capricoin.json b/defs/bitcoin/capricoin.json index f0b82f694..3b2659277 100644 --- a/defs/bitcoin/capricoin.json +++ b/defs/bitcoin/capricoin.json @@ -14,8 +14,8 @@ "hash_genesis_block": "00000d23fa0fc52c90893adb1181c9ddffb6c797a3e41864b9a23aa2f2981fe3", "xprv_magic": 76066276, "xpub_magic": 76067358, - "xpub_magic_segwit_p2sh": 77429938, - "xpub_magic_segwit_native": 78792518, + "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, "bech32_prefix": null, "cashaddr_prefix": null, "slip44": 289, diff --git a/tools/cointool.py b/tools/cointool.py index 92820cf4f..10adbf587 100755 --- a/tools/cointool.py +++ b/tools/cointool.py @@ -411,6 +411,42 @@ def check_key_uniformity(coins): return False +def check_segwit(coins): + for coin in coins: + segwit = coin["segwit"] + if segwit: + if coin["xpub_magic_segwit_native"] is None: + print_log( + logging.WARNING, + coin["name"], + "segwit is True => xpub_magic_segwit_native should be set", + ) + # return False + if coin["xpub_magic_segwit_p2sh"] is None: + print_log( + logging.WARNING, + coin["name"], + "segwit is True => xpub_magic_segwit_p2sh should be set", + ) + # return False + else: + if coin["xpub_magic_segwit_native"] is not None: + print_log( + logging.ERROR, + coin["name"], + "segwit is False => xpub_magic_segwit_native should NOT be set", + ) + return False + if coin["xpub_magic_segwit_p2sh"] is not None: + print_log( + logging.ERROR, + coin["name"], + "segwit is False => xpub_magic_segwit_p2sh should NOT be set", + ) + return False + return True + + # ====== coindefs generators ====== @@ -564,6 +600,10 @@ def check(backend, icons, show_duplicates): if not check_backends(defs.bitcoin): all_checks_passed = False + print("Checking segwit fields...") + if not check_segwit(defs.bitcoin): + all_checks_passed = False + print("Checking key uniformity...") for cointype, coinlist in defs.items(): if cointype in ("erc20", "nem"): From 9d075ef66fd3ec7fba41f3547ef029464c2b71e1 Mon Sep 17 00:00:00 2001 From: JonSalazar Date: Tue, 12 Feb 2019 09:47:40 -0700 Subject: [PATCH 723/767] defs/coins: add stakenet (#273) --- defs/bitcoin/stakenet.json | 41 +++++++++++++++++++++++++++++++++++++ defs/bitcoin/stakenet.png | Bin 0 -> 3294 bytes 2 files changed, 41 insertions(+) create mode 100644 defs/bitcoin/stakenet.json create mode 100644 defs/bitcoin/stakenet.png diff --git a/defs/bitcoin/stakenet.json b/defs/bitcoin/stakenet.json new file mode 100644 index 000000000..0e618f295 --- /dev/null +++ b/defs/bitcoin/stakenet.json @@ -0,0 +1,41 @@ +{ + "coin_name": "Stakenet", + "coin_shortcut": "XSN", + "coin_label": "Stakenet", + "website": "https://stakenet.io", + "github": "https://github.com/X9Developers/XSN", + "maintainer": "Alexis Hernandez ", + "curve_name": "secp256k1", + "address_type": 76, + "address_type_p2sh": 16, + "maxfee_kb": 2000000, + "minfee_kb": 1000, + "signed_message_header": "DarkCoin Signed Message:\n", + "hash_genesis_block": "00000c822abdbb23e28f79a49d29b41429737c6c7e15df40d1b1f1b35907ae34", + "xprv_magic": 76066276, + "xpub_magic": 76067358, + "xpub_magic_segwit_p2sh": 77429938, + "xpub_magic_segwit_native": 78792518, + "bech32_prefix": "xc", + "cashaddr_prefix": null, + "slip44": 199, + "segwit": true, + "decred": false, + "fork_id": null, + "force_bip143": false, + "bip115": false, + "default_fee_b": { + "Low": 10, + "Economy": 70, + "Normal": 140, + "High": 200 + }, + "dust_limit": 1000, + "blocktime_seconds": 60, + "uri_prefix": "stakenet", + "min_address_length": 27, + "max_address_length": 47, + "bitcore": [], + "blockbook": [], + "cooldown": 100 + } \ No newline at end of file diff --git a/defs/bitcoin/stakenet.png b/defs/bitcoin/stakenet.png new file mode 100644 index 0000000000000000000000000000000000000000..cfe2658c5f0b745443f60cd3fc2b7b2138a3bc4e GIT binary patch literal 3294 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 literal 0 HcmV?d00001 From 11d049968f39909218922485e23467039fdd5a2e Mon Sep 17 00:00:00 2001 From: James Date: Tue, 12 Feb 2019 17:48:26 +0100 Subject: [PATCH 724/767] defs/coins: add Primecoin (#276) --- defs/bitcoin/primecoin.json | 38 ++++++++++++++++++++++++++++++++++++ defs/bitcoin/primecoin.png | Bin 0 -> 2558 bytes 2 files changed, 38 insertions(+) create mode 100644 defs/bitcoin/primecoin.json create mode 100644 defs/bitcoin/primecoin.png diff --git a/defs/bitcoin/primecoin.json b/defs/bitcoin/primecoin.json new file mode 100644 index 000000000..74fb5882b --- /dev/null +++ b/defs/bitcoin/primecoin.json @@ -0,0 +1,38 @@ +{ + "coin_name": "Primecoin", + "coin_shortcut": "XPM", + "coin_label": "Primecoin", + "website": "https://primecoin.io", + "github": "https://github.com/primecoin/primecoin", + "maintainer": "James Skrowvedeht ", + "curve_name": "secp256k1", + "address_type": 23, + "address_type_p2sh": 83, + "maxfee_kb": 1000000, + "minfee_kb": 1000, + "signed_message_header": "Primecoin Signed Message:\n", + "hash_genesis_block": "963d17ba4dc753138078a2f56afb3af9674e2546822badff26837db9a0152106", + "xprv_magic": 76066276, + "xpub_magic": 76067358, + "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "slip44": 24, + "segwit": false, + "decred": false, + "fork_id": null, + "force_bip143": false, + "bip115": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 546, + "blocktime_seconds": 60, + "uri_prefix": "primecoin", + "min_address_length": 26, + "max_address_length": 35, + "bitcore": [], + "blockbook": [], + "cooldown": 100 +} diff --git a/defs/bitcoin/primecoin.png b/defs/bitcoin/primecoin.png new file mode 100644 index 0000000000000000000000000000000000000000..178ee01cfb4bd1e7565d06c649c81353109cc8dd GIT binary patch literal 2558 zcmVAH3s7*70?E>0`0)v_H!rD33LE6fXP6U{aOmR z0$c*l0cU`dz)|2B&<6|v{mSu7ExoU*A>!`>?gQ=t76S8uSyj4yH*nk<T19=Bw-1Brkio3*Ec623RgSl% zCJkUy$`@@~Ig#-?ut7OqPt6#>xXDGpYruol2lfNsQjT{xaswDQxdPY@%%r~14Xjp< zwU)53lZ$Q3pBeL9G&@@1H$~Mx$)5_m8k6q}Gl5qv zXI1NhepE+;tZLvv%UR`Jkge_fD(18-JXx%Eq>7L~7dXtsE3AcuUSP3uywfFjLAIX% zTugpNm;yX!xh%~CjGMd{spnT#>B#o@OSV)qsKzneF$1RG$GsHjwz01>!(fK|q#vNC z%HPVcR5{*13;koP6$o!sZ2xQz%8k2O6@Nl8IRDwD$DVx9xxwR7IPIC z?#~a#`3Be!a}+q9DQEy&Jo<9XPvBUYTd2$RfN#Xygobs646r)pB{V#Kg8_`2TtM|U zL&PYKS(fu_9_&8A zK0=2Bv})TQ#Q`{iKn%2NWDjnPXs{qQK(x49BinFdM1y%6+5R6R8gy#n$(Jb6p%LMW z7|~#cMpQ?lN2nSmHKS3|uDLGx63~lgeO#wOHHFB36E!mH+N1+-Y3cL+u1ib{@3kAI z`||>m3fx;XB6buI{~A)K{9W5P7u2K>TK^}0(~y`Bw{7(Qoq_$J0^NmsP9p+$!6DNJga7bpuUlaD z4oKYUGkYo_$8BhbIbG2334dR?dJNJRgAT$UXhahyK(`-&zQ6h>bkaQNd=r`%%aV1n zU`%NP1!L^jYcA;;eIGI3{1cOaQulxySJOv4#RgcC_=-dtc ze}{pCaP@?AO@8A}^CB@=(;d?1PkyMhY$kgJdUsl*2kHSwm2s1w0^SeS3sNv;C4BPr zGQU40ty;JE>u$0GLbz@&kHAYmgNrYQkrv;f5edf&fsZ_Uy2KO8`hK%d@~y||HhX;; z=R*RJ|lP+=+{2uX?}+Y2AP486M`(-Vd1PbkN8$SZVgLsSn#gp!=QX9x8B2HHOdQ@#o<_emgB zO|o}bHBeSn(xk=P%~i+_Nnx;O2VB`L#vf~6aL?vcR zSwgo#^8%RqHGgA#@l^z-yj9O%*+DurVoZcAj0|J1NnpAo0^qzlivh3Me-}n z5X|m^)(7&2B?f5pIYKpd{vp4$C#1fA_EB494S%QyJf$4(wXr+^pbObbnGD|m#@2Bv zDFrCdqpY;iZSst0!ohjuaEL;qqMV;ECr4}~Mz!%{<#-<#HGnn3Cg4Ogzf+IXdyffM zIo{6;{bQ^d=f|j6u&LDEqd}^rCUtXZs$m*5-{WsAG5D6fN8YOr9SO7Ckc-u0Ju~HbM0hSl zFKCgugZxh^nTu{6*#MXUDrbR0j+#?xadCi;p>%JH@Wn`16Z#%9Z1 zRnmfIkz+fegYvmTO;4rspOaC0Xd$qHqMT&VV!ck zvX=eD$5>T{wC(fvmV1MW@-_S5hi&AqH*^DEtc3iE4PcG12Urg5t0VIF+kjhfGE$Wh zi*mdpz?bSICTzAX|8P~ftNM7!O|AicN_?Dccpi}F4O@XlpE3*+3Cm#mczJ>4-G` zDk58VR1^o1l?z>VaRL*@06B(evt80Nz#}z6{4Qiw;Bn=6{b4>h(gl-tLGW7O39O1B z!3)TyxxO!MJMfEYoew|m43KAxyAV0wC5Wi$e5xm>*^Ml_Jc{fFI;0%$y;^whnlV6* zArzwK+k%KmEkKkV=OOxb9f-=;WUgx+r4Z4POE!R>K{lWtv!6a>Gh)Bpl2tSKKia0n Udzn@SZvX%Q07*qoM6N<$f__D^bN~PV literal 0 HcmV?d00001 From fa4a6dde357f25270798d0b6ea1de19f7dfe3e0b Mon Sep 17 00:00:00 2001 From: Szymon Lesisz Date: Wed, 13 Feb 2019 17:23:06 +0100 Subject: [PATCH 725/767] changes in connect support (#278) --- defs/support.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/defs/support.json b/defs/support.json index 3d5ed2793..21d87a6dd 100644 --- a/defs/support.json +++ b/defs/support.json @@ -1,10 +1,10 @@ { "connect": { "supported": { - "bitcoin:AXE": true, "bitcoin:BCH": true, "bitcoin:BTC": true, "bitcoin:BTG": true, + "bitcoin:CPC": true, "bitcoin:DASH": true, "bitcoin:DOGE": true, "bitcoin:LTC": true, From 04b2981dd58316a58d2fe644f29db250f09469a4 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 14 Feb 2019 23:14:31 +0100 Subject: [PATCH 726/767] defs: add backend for KMD --- defs/bitcoin/komodo.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/defs/bitcoin/komodo.json b/defs/bitcoin/komodo.json index b81d7fee6..768037c60 100644 --- a/defs/bitcoin/komodo.json +++ b/defs/bitcoin/komodo.json @@ -32,7 +32,9 @@ "uri_prefix": "komodo", "min_address_length": 27, "max_address_length": 34, - "bitcore": [], + "bitcore": [ + "https://kmdexplorer.io/" + ], "blockbook": [], "cooldown": 100 } From b80a5ef49712341016907e2b9bb65ca56f97fc1a Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 14 Feb 2019 23:25:16 +0100 Subject: [PATCH 727/767] defs: add new tokens and coins --- defs/bitcoin/komodo.json | 2 +- defs/ethereum/tokens | 2 +- defs/support.json | 516 +++++++++++++++++++++++++++++++++++++-- 3 files changed, 499 insertions(+), 21 deletions(-) diff --git a/defs/bitcoin/komodo.json b/defs/bitcoin/komodo.json index 768037c60..fd67db039 100644 --- a/defs/bitcoin/komodo.json +++ b/defs/bitcoin/komodo.json @@ -33,7 +33,7 @@ "min_address_length": 27, "max_address_length": 34, "bitcore": [ - "https://kmdexplorer.io/" + "https://kmdexplorer.io" ], "blockbook": [], "cooldown": 100 diff --git a/defs/ethereum/tokens b/defs/ethereum/tokens index 6420966b6..a5d185431 160000 --- a/defs/ethereum/tokens +++ b/defs/ethereum/tokens @@ -1 +1 @@ -Subproject commit 6420966b64427d6eb08d965f5b5f70cb78b73490 +Subproject commit a5d1854310d8d557cce993186cf2536503e108e3 diff --git a/defs/support.json b/defs/support.json index 21d87a6dd..955b94ff4 100644 --- a/defs/support.json +++ b/defs/support.json @@ -83,6 +83,7 @@ "bitcoin:MUE": "1.7.1", "bitcoin:NIX": "1.7.2", "bitcoin:NMC": "1.5.2", + "bitcoin:PIVX": "1.8.0", "bitcoin:PTC": "1.7.1", "bitcoin:RVN": "1.7.2", "bitcoin:SMART": "1.7.1", @@ -95,10 +96,14 @@ "bitcoin:VIA": "1.6.2", "bitcoin:VTC": "1.6.1", "bitcoin:XMY": "1.7.1", + "bitcoin:XPM": "1.8.0", + "bitcoin:XSN": "1.8.0", "bitcoin:XZC": "1.6.2", + "bitcoin:ZCL": "1.8.0", "bitcoin:ZEC": "1.7.1", "bitcoin:tDASH": "1.6.2", "bitcoin:tGRS": "1.6.2", + "bitcoin:tPIVX": "1.8.0", "bitcoin:tSMART": "1.7.1", "bitcoin:tXZC": "1.6.2", "erc20:ella:MINING": "1.6.2", @@ -111,14 +116,19 @@ "erc20:eth:$HUR": "1.6.3", "erc20:eth:$TEAK": "1.6.2", "erc20:eth:0xBTC": "1.6.2", + "erc20:eth:1SG": "1.8.0", "erc20:eth:1ST": "1.6.2", "erc20:eth:1WO": "1.6.2", + "erc20:eth:22x": "1.8.0", "erc20:eth:2DC": "1.6.2", "erc20:eth:300": "1.6.2", "erc20:eth:3LT": "1.6.3", + "erc20:eth:ABCH": "1.8.0", "erc20:eth:ABT": "1.6.2", "erc20:eth:ABYSS": "1.6.2", "erc20:eth:ACC": "1.6.2", + "erc20:eth:ACE": "1.8.0", + "erc20:eth:ADB": "1.8.0", "erc20:eth:ADH": "1.6.2", "erc20:eth:ADI": "1.6.2", "erc20:eth:ADL": "1.6.2", @@ -126,14 +136,19 @@ "erc20:eth:ADT": "1.6.2", "erc20:eth:ADX": "1.6.2", "erc20:eth:AE": "1.6.2", + "erc20:eth:AFA": "1.8.0", "erc20:eth:AGI": "1.6.2", + "erc20:eth:AI": "1.8.0", + "erc20:eth:AID": "1.8.0", "erc20:eth:AION": "1.6.2", "erc20:eth:AIR": "1.6.2", "erc20:eth:AIX": "1.6.2", "erc20:eth:AKC": "1.6.3", "erc20:eth:ALCO": "1.6.2", + "erc20:eth:ALI": "1.8.0", "erc20:eth:ALIS": "1.6.2", "erc20:eth:ALTS": "1.6.2", + "erc20:eth:ALX": "1.8.0", "erc20:eth:AMB": "1.6.2", "erc20:eth:AMIS": "1.6.2", "erc20:eth:AMLT": "1.6.3", @@ -141,9 +156,11 @@ "erc20:eth:AMO": "1.6.2", "erc20:eth:AMTC": "1.6.2", "erc20:eth:ANT": "1.6.2", + "erc20:eth:AOA": "1.8.0", "erc20:eth:APIS": "1.6.2", "erc20:eth:APPC": "1.6.2", "erc20:eth:APT": "1.6.2", + "erc20:eth:ARB": "1.8.0", "erc20:eth:ARC": "1.6.2", "erc20:eth:ARCT": "1.6.2", "erc20:eth:ARD": "1.6.2", @@ -151,19 +168,35 @@ "erc20:eth:ART": "1.6.2", "erc20:eth:ARX": "1.6.2", "erc20:eth:ARXT": "1.6.2", + "erc20:eth:ARY": "1.8.0", "erc20:eth:AST": "1.6.2", + "erc20:eth:ASTRO": "1.8.0", "erc20:eth:ATL": "1.6.2", + "erc20:eth:ATM": "1.8.0", "erc20:eth:ATMI": "1.6.2", "erc20:eth:ATT": "1.6.2", "erc20:eth:ATTN": "1.6.2", + "erc20:eth:ATX": "1.8.0", + "erc20:eth:AUC": "1.8.0", + "erc20:eth:AURA": "1.8.0", + "erc20:eth:AUTO": "1.8.0", "erc20:eth:AVA": "1.6.2", "erc20:eth:AVT": "1.6.2", "erc20:eth:AX1": "1.6.2", "erc20:eth:AXP": "1.6.2", "erc20:eth:AXPR": "1.6.3", + "erc20:eth:B2BX": "1.8.0", + "erc20:eth:BANCA": "1.8.0", "erc20:eth:BANX": "1.6.2", + "erc20:eth:BAS": "1.8.0", "erc20:eth:BAT": "1.6.2", + "erc20:eth:BAX": "1.8.0", + "erc20:eth:BBC": "1.8.0", + "erc20:eth:BBI": "1.8.0", "erc20:eth:BBK": "1.6.2", + "erc20:eth:BBN": "1.8.0", + "erc20:eth:BBO": "1.8.0", + "erc20:eth:BC": "1.8.0", "erc20:eth:BCBC": "1.6.2", "erc20:eth:BCDN": "1.6.2", "erc20:eth:BCDT": "1.6.2", @@ -176,9 +209,17 @@ "erc20:eth:BET": "1.6.2", "erc20:eth:BETHER": "1.6.3", "erc20:eth:BETR": "1.6.2", + "erc20:eth:BEZ": "1.8.0", + "erc20:eth:BHPC": "1.8.0", + "erc20:eth:BHR": "1.8.0", + "erc20:eth:BIT": "1.8.0", + "erc20:eth:BITCAR": "1.8.0", + "erc20:eth:BITPARK": "1.8.0", + "erc20:eth:BIX": "1.8.0", "erc20:eth:BKB": "1.6.2", "erc20:eth:BKRx": "1.6.2", "erc20:eth:BKX": "1.6.2", + "erc20:eth:BLN": "1.8.0", "erc20:eth:BLT": "1.6.2", "erc20:eth:BLUE": "1.6.2", "erc20:eth:BLX (Bullion)": "1.6.2", @@ -189,105 +230,152 @@ "erc20:eth:BMX": "1.6.2", "erc20:eth:BNB": "1.6.2", "erc20:eth:BNFT": "1.6.2", + "erc20:eth:BNN": "1.8.0", "erc20:eth:BNT": "1.6.2", "erc20:eth:BNTY": "1.6.2", "erc20:eth:BOB": "1.6.2", "erc20:eth:BON": "1.6.2", "erc20:eth:BOP": "1.6.2", "erc20:eth:BOU": "1.6.2", + "erc20:eth:BOUTS": "1.8.0", + "erc20:eth:BOXX": "1.8.0", "erc20:eth:BPT": "1.6.2", "erc20:eth:BQX": "1.6.2", "erc20:eth:BRAT": "1.6.2", "erc20:eth:BRD": "1.6.2", + "erc20:eth:BRLN": "1.8.0", "erc20:eth:BSDC": "1.6.2", "erc20:eth:BST": "1.6.2", + "erc20:eth:BTCA": "1.8.0", "erc20:eth:BTCE": "1.6.2", "erc20:eth:BTCL": "1.6.2", + "erc20:eth:BTCONE": "1.8.0", + "erc20:eth:BTCR": "1.8.0", "erc20:eth:BTE": "1.6.2", "erc20:eth:BTH": "1.6.2", "erc20:eth:BTHR": "1.6.2", "erc20:eth:BTK": "1.6.2", "erc20:eth:BTM": "1.6.2", + "erc20:eth:BTO": "1.8.0", "erc20:eth:BTQ": "1.6.2", + "erc20:eth:BTR": "1.8.0", + "erc20:eth:BTRN": "1.8.0", "erc20:eth:BTT": "1.6.2", "erc20:eth:BTTX": "1.6.2", + "erc20:eth:BTU": "1.8.0", "erc20:eth:BTZ": "1.6.3", "erc20:eth:BUC": "1.6.2", + "erc20:eth:BWX": "1.8.0", + "erc20:eth:BZ": "1.8.0", + "erc20:eth:BZNT": "1.8.0", "erc20:eth:BeerCoin": "1.6.2", "erc20:eth:C20": "1.6.2", "erc20:eth:C8": "1.6.2", "erc20:eth:CAG": "1.6.2", "erc20:eth:CAN": "1.6.2", + "erc20:eth:CAPP": "1.8.0", "erc20:eth:CARB": "1.6.2", "erc20:eth:CARCO": "1.6.2", "erc20:eth:CARE": "1.6.2", "erc20:eth:CAS": "1.6.2", "erc20:eth:CAT (BitClave)": "1.6.2", - "erc20:eth:CAT (Blockcat)": "1.6.2", + "erc20:eth:CAT (BlockCAT)": "1.8.0", "erc20:eth:CATs (BitClave)_Old": "1.6.2", + "erc20:eth:CBC": "1.8.0", "erc20:eth:CBIX": "1.6.3", + "erc20:eth:CBM": "1.8.0", + "erc20:eth:CBT": "1.8.0", "erc20:eth:CC3": "1.6.2", "erc20:eth:CCC (CryptoCrashCourse)": "1.6.2", "erc20:eth:CCC (ICONOMI)": "1.6.2", + "erc20:eth:CCCX": "1.8.0", "erc20:eth:CCLC": "1.6.2", + "erc20:eth:CCO": "1.8.0", "erc20:eth:CCS": "1.6.2", + "erc20:eth:CCT": "1.8.0", "erc20:eth:CDL": "1.6.2", "erc20:eth:CDT": "1.6.2", "erc20:eth:CEEK": "1.6.2", + "erc20:eth:CENNZ": "1.8.0", "erc20:eth:CET": "1.6.3", "erc20:eth:CFC": "1.6.3", "erc20:eth:CFI": "1.6.2", "erc20:eth:CFTY": "1.6.2", + "erc20:eth:CHP": "1.8.0", "erc20:eth:CHSB": "1.6.2", + "erc20:eth:CHX": "1.8.0", + "erc20:eth:CIYA": "1.8.0", + "erc20:eth:CJT": "1.8.0", "erc20:eth:CK": "1.6.2", + "erc20:eth:CL": "1.8.0", "erc20:eth:CLB": "1.6.2", "erc20:eth:CLL": "1.6.2", "erc20:eth:CLN": "1.6.2", "erc20:eth:CLP": "1.6.2", "erc20:eth:CMBT": "1.6.2", "erc20:eth:CMC": "1.6.2", + "erc20:eth:CMCT": "1.8.0", "erc20:eth:CMT": "1.6.2", "erc20:eth:CNB": "1.6.2", "erc20:eth:CND": "1.6.2", + "erc20:eth:CNN": "1.8.0", "erc20:eth:CO2": "1.6.2", "erc20:eth:CO2Bit": "1.6.2", "erc20:eth:COB": "1.6.2", "erc20:eth:COFI": "1.6.2", "erc20:eth:COIL": "1.6.2", "erc20:eth:CORI": "1.6.3", + "erc20:eth:COSM": "1.8.0", "erc20:eth:COV": "1.6.2", + "erc20:eth:CPAY": "1.8.0", "erc20:eth:CPEX": "1.6.2", + "erc20:eth:CPLO": "1.8.0", "erc20:eth:CPY": "1.6.2", "erc20:eth:CR7": "1.6.2", "erc20:eth:CRB": "1.6.2", + "erc20:eth:CRBT": "1.8.0", + "erc20:eth:CRC": "1.8.0", "erc20:eth:CRED": "1.6.2", "erc20:eth:CREDO": "1.6.2", "erc20:eth:CRGO": "1.6.3", "erc20:eth:CRMT": "1.6.3", "erc20:eth:CRPT": "1.6.2", "erc20:eth:CRT": "1.6.2", + "erc20:eth:CS": "1.8.0", + "erc20:eth:CSNO": "1.8.0", + "erc20:eth:CST": "1.8.0", "erc20:eth:CTF": "1.6.2", "erc20:eth:CTG": "1.6.2", "erc20:eth:CTGC": "1.6.3", "erc20:eth:CTL": "1.6.2", + "erc20:eth:CTR": "1.8.0", "erc20:eth:CTT": "1.6.2", "erc20:eth:CTX": "1.6.2", + "erc20:eth:CTXC": "1.8.0", "erc20:eth:CVC": "1.6.2", + "erc20:eth:CVT": "1.8.0", "erc20:eth:CXC": "1.6.2", "erc20:eth:CXO": "1.6.2", "erc20:eth:CYFM": "1.6.3", + "erc20:eth:CYMT": "1.8.0", + "erc20:eth:CZR": "1.8.0", "erc20:eth:CryptoCarbon": "1.6.2", "erc20:eth:DAB": "1.6.2", + "erc20:eth:DACS": "1.8.0", "erc20:eth:DADI": "1.6.2", + "erc20:eth:DAI": "1.8.0", "erc20:eth:DALC": "1.6.2", "erc20:eth:DAN": "1.6.2", "erc20:eth:DAO": "1.6.2", "erc20:eth:DAT": "1.6.2", + "erc20:eth:DATA": "1.8.0", "erc20:eth:DATABroker": "1.6.2", - "erc20:eth:DATACoin": "1.6.2", + "erc20:eth:DATX": "1.8.0", "erc20:eth:DAV": "1.6.2", + "erc20:eth:DAX": "1.8.0", "erc20:eth:DAXT": "1.6.2", "erc20:eth:DAY": "1.6.2", + "erc20:eth:DBET": "1.8.0", "erc20:eth:DCA": "1.6.2", "erc20:eth:DCC": "1.6.3", "erc20:eth:DCL": "1.6.2", @@ -295,7 +383,11 @@ "erc20:eth:DDF": "1.6.2", "erc20:eth:DEB": "1.6.2", "erc20:eth:DEEZ": "1.6.2", + "erc20:eth:DELTA": "1.8.0", "erc20:eth:DENT": "1.6.2", + "erc20:eth:DEW": "1.8.0", + "erc20:eth:DEX": "1.8.0", + "erc20:eth:DGD": "1.8.0", "erc20:eth:DGPT": "1.6.2", "erc20:eth:DGS": "1.6.3", "erc20:eth:DGTX": "1.6.3", @@ -303,29 +395,50 @@ "erc20:eth:DGX1": "1.6.3", "erc20:eth:DICE": "1.6.2", "erc20:eth:DIP": "1.6.3", + "erc20:eth:DIT": "1.8.0", "erc20:eth:DIVX": "1.6.2", "erc20:eth:DKP": "1.6.2", "erc20:eth:DLT": "1.6.2", "erc20:eth:DMT": "1.6.2", + "erc20:eth:DNA": "1.8.0", "erc20:eth:DNT": "1.6.2", "erc20:eth:DNX": "1.6.2", + "erc20:eth:DOCK": "1.8.0", + "erc20:eth:DOR": "1.8.0", + "erc20:eth:DOV": "1.8.0", "erc20:eth:DPP": "1.6.2", + "erc20:eth:DREAM": "1.8.0", "erc20:eth:DRGN": "1.6.2", + "erc20:eth:DRPU": "1.8.0", + "erc20:eth:DRT": "1.8.0", "erc20:eth:DRVH": "1.6.3", "erc20:eth:DSC": "1.6.2", "erc20:eth:DSCP": "1.7.1", + "erc20:eth:DST": "1.8.0", "erc20:eth:DTH": "1.6.2", "erc20:eth:DTR": "1.6.2", + "erc20:eth:DTRC": "1.8.0", "erc20:eth:DTT": "1.6.2", + "erc20:eth:DXT": "1.8.0", "erc20:eth:Devcon2 Token": "1.6.2", + "erc20:eth:E4ROW": "1.8.0", "erc20:eth:EAGLE": "1.6.2", + "erc20:eth:EARTH": "1.8.0", + "erc20:eth:EBC": "1.8.0", + "erc20:eth:EBTC": "1.8.0", "erc20:eth:ECN": "1.6.2", "erc20:eth:ECO2": "1.6.2", + "erc20:eth:ECOM": "1.8.0", "erc20:eth:EDC": "1.6.2", "erc20:eth:EDG": "1.6.2", "erc20:eth:EDO": "1.6.2", "erc20:eth:EDR": "1.6.3", + "erc20:eth:EDU": "1.8.0", + "erc20:eth:EGT": "1.8.0", "erc20:eth:EHT": "1.6.2", + "erc20:eth:EKO": "1.8.0", + "erc20:eth:EKT": "1.8.0", + "erc20:eth:ELEC": "1.8.0", "erc20:eth:ELF": "1.6.2", "erc20:eth:ELIX": "1.6.2", "erc20:eth:ELTCOIN": "1.6.2", @@ -336,75 +449,139 @@ "erc20:eth:EMV": "1.6.2", "erc20:eth:ENC": "1.6.2", "erc20:eth:ENG": "1.6.2", + "erc20:eth:ENGT": "1.8.0", "erc20:eth:ENJ": "1.6.2", "erc20:eth:ENTRP": "1.6.2", "erc20:eth:EPX": "1.6.2", + "erc20:eth:EPY": "1.8.0", + "erc20:eth:EQL": "1.8.0", + "erc20:eth:ERO": "1.8.0", + "erc20:eth:ERT": "1.8.0", "erc20:eth:ESZ": "1.6.2", "erc20:eth:ETBS": "1.6.2", "erc20:eth:ETCH": "1.6.2", + "erc20:eth:ETG": "1.8.0", "erc20:eth:ETHB": "1.6.2", + "erc20:eth:ETHD": "1.8.0", + "erc20:eth:ETK": "1.8.0", "erc20:eth:ETR": "1.6.2", + "erc20:eth:EURS": "1.8.0", "erc20:eth:EURT": "1.6.2", + "erc20:eth:EVC": "1.8.0", "erc20:eth:EVE": "1.6.2", "erc20:eth:EVX": "1.6.2", + "erc20:eth:EWO": "1.8.0", + "erc20:eth:EXC": "1.8.0", "erc20:eth:EXMR": "1.6.2", + "erc20:eth:EXRN": "1.8.0", "erc20:eth:EXY": "1.6.3", + "erc20:eth:EZT": "1.8.0", "erc20:eth:E\u20b9": "1.7.1", + "erc20:eth:FABA": "1.8.0", + "erc20:eth:FACE": "1.8.0", "erc20:eth:FAM": "1.6.2", "erc20:eth:FAN": "1.6.3", + "erc20:eth:FDZ": "1.8.0", + "erc20:eth:FGP": "1.8.0", + "erc20:eth:FID": "1.8.0", + "erc20:eth:FIH": "1.8.0", "erc20:eth:FKX": "1.6.2", "erc20:eth:FLIXX": "1.6.2", + "erc20:eth:FLOT": "1.8.0", "erc20:eth:FLP": "1.6.2", "erc20:eth:FLR": "1.6.2", "erc20:eth:FLUZ": "1.6.2", "erc20:eth:FLX": "1.6.2", + "erc20:eth:FMF": "1.8.0", "erc20:eth:FND": "1.6.2", + "erc20:eth:FNKOS": "1.8.0", + "erc20:eth:FNTB": "1.8.0", + "erc20:eth:FOOD": "1.8.0", + "erc20:eth:FOTA": "1.8.0", + "erc20:eth:FR8": "1.8.0", "erc20:eth:FRD": "1.6.2", + "erc20:eth:FREC": "1.8.0", + "erc20:eth:FRV": "1.8.0", + "erc20:eth:FSN": "1.8.0", + "erc20:eth:FT": "1.8.0", + "erc20:eth:FTI": "1.8.0", "erc20:eth:FTR": "1.6.2", "erc20:eth:FTT": "1.6.2", + "erc20:eth:FTX": "1.8.0", "erc20:eth:FTXT": "1.6.3", "erc20:eth:FUEL": "1.6.2", "erc20:eth:FUN": "1.6.2", "erc20:eth:FXC": "1.6.3", + "erc20:eth:FXT": "1.8.0", "erc20:eth:FYN": "1.6.2", + "erc20:eth:FYP": "1.8.0", + "erc20:eth:Fzcoin": "1.8.0", "erc20:eth:GAM": "1.6.2", + "erc20:eth:GAT": "1.8.0", "erc20:eth:GAVEL": "1.6.2", "erc20:eth:GBT": "1.6.2", "erc20:eth:GBX": "1.6.2", "erc20:eth:GCP": "1.6.2", "erc20:eth:GEE": "1.6.2", "erc20:eth:GELD": "1.6.2", + "erc20:eth:GEM": "1.8.0", "erc20:eth:GEN": "1.6.2", + "erc20:eth:GENE": "1.8.0", "erc20:eth:GET": "1.6.2", "erc20:eth:GIF": "1.6.2", "erc20:eth:GIM": "1.6.2", + "erc20:eth:GLA": "1.8.0", "erc20:eth:GMT": "1.6.2", "erc20:eth:GNO": "1.6.2", + "erc20:eth:GNT": "1.8.0", + "erc20:eth:GNX": "1.8.0", + "erc20:eth:GNY": "1.8.0", "erc20:eth:GOLDX": "1.6.2", + "erc20:eth:GOT": "1.8.0", "erc20:eth:GRID": "1.6.2", + "erc20:eth:GRMD": "1.8.0", + "erc20:eth:GROO": "1.8.0", "erc20:eth:GROW": "1.6.2", + "erc20:eth:GSC": "1.8.0", "erc20:eth:GSE": "1.6.3", "erc20:eth:GTC": "1.6.2", "erc20:eth:GTKT": "1.6.2", "erc20:eth:GTO": "1.6.2", + "erc20:eth:GUESS": "1.8.0", "erc20:eth:GULD": "1.6.3", + "erc20:eth:GUP": "1.8.0", + "erc20:eth:GUSD": "1.8.0", "erc20:eth:GVT": "1.6.2", "erc20:eth:GXC": "1.6.2", "erc20:eth:GXVC": "1.6.2", + "erc20:eth:GZB": "1.8.0", "erc20:eth:GZE": "1.6.2", "erc20:eth:GZR": "1.6.2", + "erc20:eth:HAND": "1.8.0", "erc20:eth:HAPPY": "1.6.3", "erc20:eth:HAT": "1.6.2", + "erc20:eth:HB": "1.8.0", + "erc20:eth:HBT": "1.8.0", + "erc20:eth:HBZ": "1.8.0", "erc20:eth:HDG": "1.6.2", + "erc20:eth:HDL": "1.8.0", + "erc20:eth:HER": "1.8.0", "erc20:eth:HGT": "1.6.2", "erc20:eth:HIBT": "1.6.3", "erc20:eth:HIG": "1.6.2", "erc20:eth:HKG": "1.6.2", + "erc20:eth:HKN": "1.8.0", "erc20:eth:HKY": "1.6.2", + "erc20:eth:HLX": "1.8.0", + "erc20:eth:HMC": "1.8.0", "erc20:eth:HMQ": "1.6.2", "erc20:eth:HODL": "1.6.2", "erc20:eth:HORSE": "1.6.2", + "erc20:eth:HOT (Holo)": "1.8.0", + "erc20:eth:HOT (Hydro)": "1.8.0", + "erc20:eth:HPB": "1.8.0", "erc20:eth:HST": "1.6.2", + "erc20:eth:HT": "1.8.0", "erc20:eth:HVN": "1.6.2", "erc20:eth:HYDRO": "1.6.2", "erc20:eth:IAD": "1.6.2", @@ -414,14 +591,22 @@ "erc20:eth:ICOS": "1.6.2", "erc20:eth:ICX": "1.6.2", "erc20:eth:IDEA": "1.6.2", + "erc20:eth:IDH": "1.8.0", + "erc20:eth:IDXM": "1.8.0", + "erc20:eth:IETH": "1.8.0", "erc20:eth:IFT": "1.6.2", + "erc20:eth:IG": "1.8.0", + "erc20:eth:IHT": "1.8.0", "erc20:eth:IIC": "1.6.2", "erc20:eth:IKB": "1.6.2", "erc20:eth:IMC": "1.6.2", "erc20:eth:IND": "1.6.2", + "erc20:eth:ING": "1.8.0", "erc20:eth:INRM": "1.6.2", "erc20:eth:INS": "1.6.2", "erc20:eth:INSTAR": "1.6.2", + "erc20:eth:INT": "1.8.0", + "erc20:eth:INV": "1.8.0", "erc20:eth:INXT": "1.6.2", "erc20:eth:IOST": "1.6.2", "erc20:eth:IOTX": "1.6.2", @@ -431,31 +616,51 @@ "erc20:eth:IST34": "1.6.3", "erc20:eth:ITC": "1.6.2", "erc20:eth:ITT": "1.6.2", + "erc20:eth:IVY": "1.8.0", "erc20:eth:IXT": "1.6.2", "erc20:eth:IoT": "1.6.2", "erc20:eth:J8T": "1.6.2", + "erc20:eth:JC": "1.8.0", "erc20:eth:JET": "1.6.2", "erc20:eth:JNT": "1.6.2", + "erc20:eth:JOT": "1.8.0", "erc20:eth:JOY": "1.6.2", "erc20:eth:JetCoins": "1.6.2", + "erc20:eth:KAN": "1.8.0", + "erc20:eth:KC": "1.8.0", "erc20:eth:KEE": "1.6.2", "erc20:eth:KICK": "1.6.2", "erc20:eth:KIN": "1.6.2", + "erc20:eth:KIND": "1.8.0", "erc20:eth:KNC": "1.6.2", + "erc20:eth:KNDC": "1.8.0", + "erc20:eth:KNT": "1.8.0", "erc20:eth:KPR": "1.6.2", "erc20:eth:KRL": "1.6.2", + "erc20:eth:KUE": "1.8.0", + "erc20:eth:KWATT": "1.8.0", "erc20:eth:KZN": "1.6.2", "erc20:eth:LA": "1.6.2", "erc20:eth:LALA": "1.6.2", + "erc20:eth:LATX": "1.8.0", + "erc20:eth:LBA": "1.8.0", + "erc20:eth:LCS": "1.8.0", "erc20:eth:LDC": "1.6.2", + "erc20:eth:LEDU": "1.8.0", "erc20:eth:LEND": "1.6.2", + "erc20:eth:LEV": "1.8.0", "erc20:eth:LFR": "1.6.2", + "erc20:eth:LG": "1.8.0", "erc20:eth:LGO": "1.6.2", "erc20:eth:LGR": "1.6.2", + "erc20:eth:LIBER": "1.8.0", "erc20:eth:LIF": "1.6.2", "erc20:eth:LIFE": "1.6.2", + "erc20:eth:LIKE": "1.8.0", "erc20:eth:LINK (Chainlink)": "1.6.2", "erc20:eth:LIVE": "1.6.2", + "erc20:eth:LKY": "1.8.0", + "erc20:eth:LML": "1.8.0", "erc20:eth:LND": "1.6.2", "erc20:eth:LOC": "1.6.2", "erc20:eth:LOCI": "1.6.2", @@ -470,6 +675,7 @@ "erc20:eth:LUCK": "1.6.2", "erc20:eth:LUM": "1.6.2", "erc20:eth:LUN": "1.6.2", + "erc20:eth:LYM": "1.8.0", "erc20:eth:LYS": "1.6.2", "erc20:eth:M-ETH": "1.6.2", "erc20:eth:MAD": "1.6.2", @@ -481,16 +687,30 @@ "erc20:eth:MCI": "1.6.2", "erc20:eth:MCO": "1.6.2", "erc20:eth:MDA": "1.6.2", + "erc20:eth:MDS": "1.8.0", + "erc20:eth:MDT": "1.8.0", + "erc20:eth:MEDX": "1.8.0", "erc20:eth:MEST": "1.6.2", + "erc20:eth:MET": "1.8.0", + "erc20:eth:METM": "1.8.0", "erc20:eth:MFG": "1.6.2", "erc20:eth:MFT": "1.6.3", "erc20:eth:MFTU": "1.6.3", "erc20:eth:MGO": "1.6.2", + "erc20:eth:MIC": "1.8.0", + "erc20:eth:MITX": "1.8.0", + "erc20:eth:MKR": "1.8.0", "erc20:eth:MKT": "1.6.2", + "erc20:eth:MLN (new)": "1.8.0", + "erc20:eth:MLN (old):deprecated": "1.8.0", "erc20:eth:MNE": "1.6.2", "erc20:eth:MNT": "1.6.2", "erc20:eth:MNTP": "1.6.2", + "erc20:eth:MOC": "1.8.0", "erc20:eth:MOD": "1.6.2", + "erc20:eth:MOT": "1.8.0", + "erc20:eth:MOZO": "1.8.0", + "erc20:eth:MRK": "1.8.0", "erc20:eth:MRL": "1.6.2", "erc20:eth:MRP": "1.6.2", "erc20:eth:MRV": "1.6.2", @@ -502,25 +722,40 @@ "erc20:eth:MTRc": "1.6.2", "erc20:eth:MTX": "1.6.2", "erc20:eth:MUXE": "1.6.2", + "erc20:eth:MVL": "1.8.0", "erc20:eth:MVP": "1.6.2", "erc20:eth:MWAT": "1.6.2", "erc20:eth:MYD": "1.6.2", "erc20:eth:MYST": "1.6.2", "erc20:eth:NAC": "1.6.2", "erc20:eth:NANJ": "1.6.2", + "erc20:eth:NAS": "1.8.0", "erc20:eth:NAVI": "1.6.2", "erc20:eth:NBAI": "1.6.2", + "erc20:eth:NBC": "1.8.0", + "erc20:eth:NCASH": "1.8.0", "erc20:eth:NCT": "1.6.2", "erc20:eth:NDC": "1.6.2", + "erc20:eth:NDX": "1.8.0", "erc20:eth:NEC": "1.6.2", + "erc20:eth:NEEO": "1.8.0", "erc20:eth:NET": "1.6.2", "erc20:eth:NEU": "1.6.2", + "erc20:eth:NEWB": "1.8.0", + "erc20:eth:NEXO": "1.8.0", "erc20:eth:NGC": "1.6.2", "erc20:eth:NIMFA": "1.6.2", + "erc20:eth:NIO": "1.8.0", "erc20:eth:NMR": "1.6.2", + "erc20:eth:NOAH": "1.8.0", + "erc20:eth:NOBS": "1.8.0", + "erc20:eth:NONE": "1.8.0", "erc20:eth:NOX": "1.6.2", "erc20:eth:NPER": "1.6.2", + "erc20:eth:NPX": "1.8.0", "erc20:eth:NPXS": "1.6.2", + "erc20:eth:NTO": "1.8.0", + "erc20:eth:NTWK": "1.8.0", "erc20:eth:NUG": "1.6.3", "erc20:eth:NULS": "1.6.2", "erc20:eth:NXX": "1.6.2", @@ -528,110 +763,186 @@ "erc20:eth:OAK": "1.6.2", "erc20:eth:OAX": "1.6.2", "erc20:eth:OCC": "1.6.2", + "erc20:eth:OCN": "1.8.0", "erc20:eth:ODE": "1.6.3", "erc20:eth:OJX": "1.6.2", "erc20:eth:OLD_MKR": "1.6.2", + "erc20:eth:OLE": "1.8.0", "erc20:eth:OLT": "1.6.3", "erc20:eth:OMG": "1.6.2", "erc20:eth:OMT": "1.6.3", + "erc20:eth:OMX": "1.8.0", + "erc20:eth:ONE": "1.8.0", "erc20:eth:ONEK": "1.6.2", + "erc20:eth:ONG": "1.8.0", + "erc20:eth:ONL": "1.8.0", "erc20:eth:OPT": "1.6.2", + "erc20:eth:OPTI": "1.8.0", "erc20:eth:ORBS": "1.6.2", "erc20:eth:ORCA": "1.6.3", + "erc20:eth:ORI": "1.8.0", + "erc20:eth:ORME": "1.8.0", + "erc20:eth:ORS": "1.8.0", "erc20:eth:OST": "1.6.2", + "erc20:eth:OTN": "1.8.0", "erc20:eth:OWN": "1.6.3", "erc20:eth:Ox Fina": "1.6.2", + "erc20:eth:PAI": "1.8.0", "erc20:eth:PAL": "1.6.2", "erc20:eth:PARETO": "1.6.2", + "erc20:eth:PAT": "1.8.0", "erc20:eth:PATENTS": "1.6.2", "erc20:eth:PATH": "1.6.2", + "erc20:eth:PAX": "1.8.0", "erc20:eth:PAY": "1.6.2", "erc20:eth:PBL": "1.6.2", "erc20:eth:PBT": "1.6.2", "erc20:eth:PCL": "1.6.2", "erc20:eth:PCLOLD": "1.6.2", + "erc20:eth:PDATA": "1.8.0", "erc20:eth:PEG": "1.6.3", "erc20:eth:PET": "1.6.2", "erc20:eth:PETRO": "1.6.2", "erc20:eth:PEXT": "1.6.2", + "erc20:eth:PFR": "1.8.0", + "erc20:eth:PHI": "1.8.0", "erc20:eth:PIPL": "1.6.2", + "erc20:eth:PIT": "1.8.0", "erc20:eth:PIX": "1.6.2", + "erc20:eth:PKG": "1.8.0", + "erc20:eth:PKT": "1.8.0", "erc20:eth:PLASMA": "1.6.2", "erc20:eth:PLBT": "1.6.2", "erc20:eth:PLR": "1.6.2", "erc20:eth:PLS": "1.6.3", "erc20:eth:PLU": "1.6.2", + "erc20:eth:PMA": "1.8.0", + "erc20:eth:PMNT": "1.8.0", + "erc20:eth:PNK": "1.8.0", + "erc20:eth:POA20": "1.8.0", "erc20:eth:POE": "1.6.2", "erc20:eth:POIN": "1.6.2", + "erc20:eth:POLL": "1.8.0", "erc20:eth:POLY": "1.6.2", "erc20:eth:POOL": "1.6.2", + "erc20:eth:POP": "1.8.0", "erc20:eth:POS": "1.6.2", "erc20:eth:POWR": "1.6.2", "erc20:eth:PPP": "1.6.2", "erc20:eth:PPT": "1.6.2", "erc20:eth:PRE": "1.6.2", "erc20:eth:PRG": "1.6.2", + "erc20:eth:PRIX": "1.8.0", "erc20:eth:PRL": "1.6.2", "erc20:eth:PRON": "1.6.2", "erc20:eth:PRS": "1.6.2", "erc20:eth:PRSP": "1.6.2", + "erc20:eth:PST": "1.8.0", "erc20:eth:PT": "1.6.2", + "erc20:eth:PTON": "1.8.0", "erc20:eth:PTOY": "1.6.2", + "erc20:eth:PTT": "1.8.0", "erc20:eth:PTWO": "1.6.2", "erc20:eth:PUC": "1.6.2", "erc20:eth:PURC": "1.6.3", "erc20:eth:PXT": "1.6.2", + "erc20:eth:PYLNT": "1.8.0", "erc20:eth:QASH": "1.6.2", "erc20:eth:QAU": "1.6.2", + "erc20:eth:QBIT": "1.8.0", "erc20:eth:QBX": "1.6.2", + "erc20:eth:QKC": "1.8.0", "erc20:eth:QNT": "1.6.3", "erc20:eth:QRG": "1.6.2", "erc20:eth:QRL": "1.6.2", "erc20:eth:QSP": "1.6.2", "erc20:eth:QTQ": "1.6.2", "erc20:eth:QTUM": "1.6.2", + "erc20:eth:QUN": "1.8.0", + "erc20:eth:QVT": "1.8.0", + "erc20:eth:R": "1.8.0", "erc20:eth:RAO": "1.6.2", + "erc20:eth:RATING": "1.8.0", "erc20:eth:RBLX": "1.6.2", "erc20:eth:RCN": "1.6.2", + "erc20:eth:RDN": "1.8.0", "erc20:eth:REA": "1.6.2", + "erc20:eth:REAL": "1.8.0", "erc20:eth:REBL": "1.6.2", "erc20:eth:RED": "1.6.2", "erc20:eth:REDC": "1.6.3", + "erc20:eth:REF": "1.8.0", + "erc20:eth:REM": "1.8.0", + "erc20:eth:REMI": "1.8.0", "erc20:eth:REN": "1.6.2", + "erc20:eth:REP": "1.8.0", + "erc20:eth:REP:deprecated": "1.8.0", "erc20:eth:REQ": "1.6.2", "erc20:eth:REX": "1.6.2", "erc20:eth:RFR": "1.6.2", + "erc20:eth:RGS": "1.8.0", + "erc20:eth:RHOC": "1.8.0", "erc20:eth:RIPT": "1.6.2", + "erc20:eth:RIYA": "1.8.0", + "erc20:eth:RKT": "1.8.0", "erc20:eth:RLC": "1.6.2", "erc20:eth:RLT": "1.6.2", "erc20:eth:RLTY": "1.6.2", "erc20:eth:RLX": "1.6.2", + "erc20:eth:RMC": "1.8.0", + "erc20:eth:RMESH": "1.8.0", "erc20:eth:RNDR": "1.6.2", + "erc20:eth:RNT": "1.8.0", + "erc20:eth:RNTB": "1.8.0", + "erc20:eth:ROC": "1.8.0", "erc20:eth:ROCK": "1.6.2", + "erc20:eth:ROCK2": "1.8.0", + "erc20:eth:ROCK2PAY": "1.8.0", "erc20:eth:ROK": "1.6.2", "erc20:eth:ROUND": "1.6.2", "erc20:eth:RPL": "1.6.2", + "erc20:eth:RTB": "1.8.0", + "erc20:eth:RTH": "1.8.0", "erc20:eth:RTN": "1.6.2", + "erc20:eth:RUFF": "1.8.0", + "erc20:eth:RUNE": "1.8.0", "erc20:eth:RVL": "1.6.2", "erc20:eth:RVT": "1.6.2", "erc20:eth:S-A-PAT": "1.6.2", "erc20:eth:S-ETH": "1.6.2", + "erc20:eth:SAC": "1.8.0", "erc20:eth:SALT": "1.6.2", "erc20:eth:SAN": "1.6.2", "erc20:eth:SCANDI": "1.6.2", "erc20:eth:SCL": "1.6.2", + "erc20:eth:SCRL": "1.8.0", + "erc20:eth:SEELE": "1.8.0", + "erc20:eth:SENC": "1.8.0", "erc20:eth:SENSE": "1.6.2", + "erc20:eth:SENT": "1.8.0", "erc20:eth:SET": "1.6.2", "erc20:eth:SEXY": "1.6.2", "erc20:eth:SGEL": "1.6.2", + "erc20:eth:SGN": "1.8.0", + "erc20:eth:SGP": "1.8.0", + "erc20:eth:SGR": "1.8.0", + "erc20:eth:SHIP": "1.8.0", "erc20:eth:SHIT": "1.6.2", + "erc20:eth:SHL": "1.8.0", + "erc20:eth:SHP": "1.8.0", "erc20:eth:SIFT": "1.6.2", "erc20:eth:SIG": "1.6.2", + "erc20:eth:SKB": "1.8.0", + "erc20:eth:SKE": "1.8.0", "erc20:eth:SKIN": "1.6.2", + "erc20:eth:SKM": "1.8.0", "erc20:eth:SKO1": "1.6.2", "erc20:eth:SKR": "1.6.2", + "erc20:eth:SKYM": "1.8.0", "erc20:eth:SLT": "1.6.2", "erc20:eth:SLY": "1.6.3", + "erc20:eth:SMS": "1.8.0", + "erc20:eth:SNBL": "1.8.0", "erc20:eth:SNC": "1.6.2", "erc20:eth:SND": "1.6.2", "erc20:eth:SNG": "1.6.2", @@ -640,17 +951,30 @@ "erc20:eth:SNM": "1.6.2", "erc20:eth:SNOV": "1.6.2", "erc20:eth:SNT": "1.6.2", + "erc20:eth:SNTR": "1.8.0", + "erc20:eth:SNX": "1.8.0", + "erc20:eth:SOAR": "1.8.0", + "erc20:eth:SOC": "1.8.0", "erc20:eth:SOL": "1.6.2", + "erc20:eth:SONIQ": "1.8.0", + "erc20:eth:SOUL": "1.8.0", "erc20:eth:SPANK": "1.6.2", "erc20:eth:SPARC": "1.6.2", "erc20:eth:SPARTA": "1.6.2", + "erc20:eth:SPD": "1.8.0", "erc20:eth:SPF": "1.6.2", + "erc20:eth:SPHTX": "1.8.0", + "erc20:eth:SPICE": "1.8.0", "erc20:eth:SPN": "1.6.2", + "erc20:eth:SPX": "1.8.0", "erc20:eth:SRN": "1.6.2", "erc20:eth:SSH": "1.6.2", + "erc20:eth:SSP": "1.8.0", "erc20:eth:STABIT": "1.6.3", "erc20:eth:STAC": "1.6.2", + "erc20:eth:STACS": "1.8.0", "erc20:eth:STAR": "1.6.2", + "erc20:eth:STB": "1.8.0", "erc20:eth:STC": "1.6.2", "erc20:eth:STK": "1.6.2", "erc20:eth:STN": "1.6.2", @@ -658,42 +982,85 @@ "erc20:eth:STORM": "1.6.2", "erc20:eth:STP": "1.6.2", "erc20:eth:STQ": "1.6.2", + "erc20:eth:STR": "1.8.0", "erc20:eth:STRC": "1.6.2", + "erc20:eth:STU": "1.8.0", "erc20:eth:STX": "1.6.2", "erc20:eth:SUB": "1.6.2", + "erc20:eth:SUR": "1.8.0", + "erc20:eth:SVD": "1.8.0", + "erc20:eth:SWFTC": "1.8.0", "erc20:eth:SWM": "1.6.2", "erc20:eth:SWT": "1.6.2", "erc20:eth:SXDT": "1.6.2", "erc20:eth:SXUT": "1.6.2", "erc20:eth:SYN": "1.6.2", "erc20:eth:SenSatorI": "1.6.2", + "erc20:eth:TALAO": "1.8.0", "erc20:eth:TAU": "1.6.2", "erc20:eth:TBC2": "1.6.2", "erc20:eth:TBT": "1.6.2", + "erc20:eth:TBX": "1.8.0", "erc20:eth:TCA": "1.7.1", + "erc20:eth:TCH": "1.8.0", "erc20:eth:TDH": "1.6.2", + "erc20:eth:TEAM": "1.8.0", + "erc20:eth:TEN": "1.8.0", + "erc20:eth:TFD": "1.8.0", "erc20:eth:TFL": "1.6.2", + "erc20:eth:TGAME": "1.8.0", + "erc20:eth:TGT": "1.8.0", "erc20:eth:THETA": "1.6.2", + "erc20:eth:THR": "1.8.0", + "erc20:eth:THRT": "1.8.0", "erc20:eth:THUG": "1.6.2", + "erc20:eth:TIE": "1.8.0", + "erc20:eth:TIG": "1.8.0", "erc20:eth:TIME": "1.6.2", "erc20:eth:TIO": "1.6.2", "erc20:eth:TIX": "1.6.2", + "erc20:eth:TKA": "1.8.0", + "erc20:eth:TKLN": "1.8.0", "erc20:eth:TKN": "1.6.2", + "erc20:eth:TKR": "1.8.0", "erc20:eth:TLX": "1.7.1", + "erc20:eth:TMT": "1.8.0", + "erc20:eth:TNS": "1.8.0", "erc20:eth:TNT": "1.6.2", + "erc20:eth:TOK": "1.8.0", + "erc20:eth:TOMO": "1.8.0", "erc20:eth:TOOR": "1.6.3", + "erc20:eth:TRAC": "1.8.0", + "erc20:eth:TRAK": "1.8.0", "erc20:eth:TRCN": "1.6.2", + "erc20:eth:TRCT": "1.8.0", + "erc20:eth:TRDT": "1.8.0", "erc20:eth:TRST": "1.6.2", "erc20:eth:TSW": "1.6.3", + "erc20:eth:TTA": "1.8.0", + "erc20:eth:TTC": "1.8.0", + "erc20:eth:TTU": "1.8.0", + "erc20:eth:TUSD": "1.8.0", + "erc20:eth:TUSD:deprecated": "1.8.0", "erc20:eth:TWN": "1.6.2", "erc20:eth:TWNKL": "1.6.2", "erc20:eth:TaaS": "1.6.2", + "erc20:eth:UBT": "1.8.0", + "erc20:eth:UCASH": "1.8.0", + "erc20:eth:UCN": "1.8.0", + "erc20:eth:UFR": "1.8.0", "erc20:eth:UKG": "1.6.2", + "erc20:eth:UP": "1.8.0", + "erc20:eth:UPP": "1.8.0", "erc20:eth:UQC": "1.6.2", "erc20:eth:URB": "1.7.1", "erc20:eth:USDC": "1.7.1", "erc20:eth:USDM": "1.6.2", + "erc20:eth:USDS": "1.8.0", + "erc20:eth:USDT": "1.8.0", "erc20:eth:UTK": "1.6.2", + "erc20:eth:UTNP": "1.8.0", + "erc20:eth:UTT": "1.8.0", "erc20:eth:UUU": "1.6.2", "erc20:eth:Unicorn": "1.6.2", "erc20:eth:VDG": "1.6.3", @@ -703,67 +1070,120 @@ "erc20:eth:VENUS": "1.6.2", "erc20:eth:VERI": "1.6.2", "erc20:eth:VIB": "1.6.2", + "erc20:eth:VIBE": "1.8.0", + "erc20:eth:VIBEX": "1.8.0", "erc20:eth:VIEW": "1.6.2", + "erc20:eth:VIKKY": "1.8.0", + "erc20:eth:VIN": "1.8.0", "erc20:eth:VIT": "1.6.2", + "erc20:eth:VITE": "1.8.0", "erc20:eth:VIU": "1.6.2", "erc20:eth:VLD": "1.6.2", "erc20:eth:VOC": "1.6.2", "erc20:eth:VOISE": "1.6.2", "erc20:eth:VSL": "1.6.2", + "erc20:eth:VUU": "1.8.0", + "erc20:eth:VZT": "1.8.0", + "erc20:eth:WAB": "1.8.0", + "erc20:eth:WABI": "1.8.0", "erc20:eth:WATT": "1.7.1", "erc20:eth:WAX": "1.6.2", "erc20:eth:WBA": "1.6.2", + "erc20:eth:WBTC": "1.8.0", "erc20:eth:WCN": "1.6.2", "erc20:eth:WCT": "1.6.2", + "erc20:eth:WEB": "1.8.0", "erc20:eth:WETH": "1.6.2", "erc20:eth:WHEN": "1.6.2", "erc20:eth:WILD": "1.6.2", + "erc20:eth:WIN": "1.8.0", "erc20:eth:WINGS": "1.6.2", + "erc20:eth:WISH": "1.8.0", "erc20:eth:WMK": "1.6.3", "erc20:eth:WNK": "1.6.3", + "erc20:eth:WOC": "1.8.0", "erc20:eth:WPC": "1.6.2", "erc20:eth:WPR": "1.6.2", + "erc20:eth:WRC": "1.8.0", "erc20:eth:WRK": "1.6.2", "erc20:eth:WTC": "1.6.2", + "erc20:eth:WTT": "1.8.0", "erc20:eth:WYS": "1.6.2", "erc20:eth:WYV": "1.6.2", - "erc20:eth:WaBi": "1.6.2", "erc20:eth:X8X": "1.6.2", "erc20:eth:XAUR": "1.6.2", + "erc20:eth:XBL": "1.8.0", "erc20:eth:XBP": "1.6.2", "erc20:eth:XCC": "1.6.2", + "erc20:eth:XCHF": "1.8.0", + "erc20:eth:XCLR": "1.8.0", + "erc20:eth:XDCE": "1.8.0", + "erc20:eth:XES": "1.8.0", + "erc20:eth:XET": "1.8.0", "erc20:eth:XFS": "1.6.2", "erc20:eth:XGG": "1.6.2", "erc20:eth:XGM": "1.6.2", "erc20:eth:XGT": "1.6.2", "erc20:eth:XID": "1.6.2", + "erc20:eth:XMCT": "1.8.0", + "erc20:eth:XMX": "1.8.0", "erc20:eth:XNK": "1.6.2", "erc20:eth:XNN": "1.6.2", "erc20:eth:XNT": "1.6.2", + "erc20:eth:XOV": "1.8.0", + "erc20:eth:XPA": "1.8.0", + "erc20:eth:XPAT": "1.8.0", "erc20:eth:XRL": "1.6.2", "erc20:eth:XSC": "1.6.2", + "erc20:eth:XYO": "1.8.0", + "erc20:eth:YEE": "1.8.0", + "erc20:eth:YOYOW": "1.8.0", "erc20:eth:YUP": "1.6.3", "erc20:eth:YUPIE": "1.6.2", "erc20:eth:ZAP": "1.6.2", + "erc20:eth:ZCN": "1.8.0", + "erc20:eth:ZCO": "1.8.0", "erc20:eth:ZCS": "1.6.2", + "erc20:eth:ZEUS": "1.8.0", "erc20:eth:ZIL": "1.6.2", + "erc20:eth:ZINC": "1.8.0", + "erc20:eth:ZIP": "1.8.0", + "erc20:eth:ZIPT": "1.8.0", + "erc20:eth:ZIX": "1.8.0", + "erc20:eth:ZLA": "1.8.0", "erc20:eth:ZMN": "1.6.2", + "erc20:eth:ZPR": "1.8.0", + "erc20:eth:ZRX": "1.8.0", "erc20:eth:ZST": "1.6.2", + "erc20:eth:ZTX": "1.8.0", + "erc20:eth:ZXC": "1.8.0", "erc20:eth:cV": "1.6.2", "erc20:eth:eBCH": "1.6.2", - "erc20:eth:eBTC": "1.6.2", "erc20:eth:eGAS": "1.6.2", "erc20:eth:eUSD": "1.6.2", "erc20:eth:eosDAC": "1.6.2", - "erc20:eth:onG": "1.6.2", + "erc20:eth:sUSD": "1.8.0", "erc20:kov:Aeternity": "1.6.2", + "erc20:kov:DAI": "1.8.0", + "erc20:kov:DGD": "1.8.0", + "erc20:kov:GNT": "1.8.0", + "erc20:kov:GUP": "1.8.0", + "erc20:kov:MKR": "1.8.0", + "erc20:kov:MLN": "1.8.0", + "erc20:kov:REP": "1.8.0", + "erc20:kov:ZRX": "1.8.0", "erc20:rin:AETH": "1.6.2", "erc20:rin:BHNT": "1.6.2", "erc20:rin:CTGA": "1.6.2", + "erc20:rin:KC": "1.8.0", + "erc20:rin:NONE": "1.8.0", "erc20:rin:PPD": "1.6.2", + "erc20:rin:RDN": "1.8.0", "erc20:rin:WALL": "1.6.2", "erc20:rop:*PLASMA": "1.6.3", "erc20:rop:ILSC": "1.6.2", + "erc20:rop:NONE": "1.8.0", + "erc20:rop:dqr30": "1.8.0", "erc20:ubq:BEER": "1.6.2", "erc20:ubq:CEFS": "1.6.2", "erc20:ubq:DOT": "1.6.2", @@ -771,6 +1191,7 @@ "erc20:ubq:RICKS": "1.6.2", "eth:AKA": "1.6.3", "eth:ATH": "1.6.3", + "eth:ATS": "1.8.0", "eth:CLO": "1.6.2", "eth:EGEM": "1.6.2", "eth:ELLA": "1.6.2", @@ -788,6 +1209,7 @@ "eth:RBTC": "1.6.2", "eth:REOSC": "1.7.2", "eth:UBQ": "1.6.2", + "eth:tATS": "1.8.0", "eth:tETC": "1.6.2", "eth:tKOV": "1.6.2", "eth:tRBTC": "1.6.2", @@ -853,8 +1275,6 @@ "erc20:eth:DUBI:ed7f": "(AUTO) duplicate key", "erc20:eth:ECP:8869": "(AUTO) duplicate key", "erc20:eth:ECP:aea1": "(AUTO) duplicate key", - "erc20:eth:EDU:2a22": "(AUTO) duplicate key", - "erc20:eth:EDU:5b26": "(AUTO) duplicate key", "erc20:eth:EOS": "switched to custom network", "erc20:eth:EVN:6890": "(AUTO) duplicate key", "erc20:eth:EVN:d780": "(AUTO) duplicate key", @@ -928,14 +1348,14 @@ "erc20:eth:SS:bbff": "(AUTO) duplicate key", "erc20:eth:TEL:85e0": "(AUTO) duplicate key", "erc20:eth:TEL:ec32": "(AUTO) duplicate key", + "erc20:eth:TIC:614b": "(AUTO) duplicate key", + "erc20:eth:TIC:7243": "(AUTO) duplicate key", "erc20:eth:TICO:7f4b": "(AUTO) duplicate key", "erc20:eth:TICO:a5db": "(AUTO) duplicate key", "erc20:eth:TRC": "(AUTO) duplicate key", "erc20:eth:TRX": "switched to custom network", "erc20:eth:UMKA:105d": "(AUTO) duplicate key", "erc20:eth:UMKA:8e5a": "(AUTO) duplicate key", - "erc20:eth:VIBEX:8824": "(AUTO) duplicate key", - "erc20:eth:VIBEX:e8ff": "(AUTO) duplicate key", "erc20:eth:VRS:92e7": "(AUTO) duplicate key", "erc20:eth:VRS:edba": "(AUTO) duplicate key", "erc20:eth:WHO:e200": "(AUTO) duplicate key", @@ -990,6 +1410,7 @@ "bitcoin:MUE": "2.0.8", "bitcoin:NIX": "2.0.11", "bitcoin:NMC": "2.0.5", + "bitcoin:PIVX": "2.0.11", "bitcoin:PTC": "2.0.8", "bitcoin:RVN": "2.0.10", "bitcoin:SMART": "2.0.8", @@ -1002,11 +1423,15 @@ "bitcoin:VIA": "2.0.7", "bitcoin:VTC": "2.0.5", "bitcoin:XMY": "2.0.8", + "bitcoin:XPM": "2.0.11", + "bitcoin:XSN": "2.0.11", "bitcoin:XZC": "2.0.7", + "bitcoin:ZCL": "2.0.11", "bitcoin:ZEC": "2.0.8", "bitcoin:ZEN": "2.0.8", "bitcoin:tDASH": "2.0.8", "bitcoin:tGRS": "2.0.8", + "bitcoin:tPIVX": "2.0.11", "bitcoin:tSMART": "2.0.8", "bitcoin:tXZC": "2.0.7", "erc20:ella:MINING": "2.0.7", @@ -1019,6 +1444,7 @@ "erc20:eth:$HUR": "2.0.8", "erc20:eth:$TEAK": "2.0.7", "erc20:eth:0xBTC": "2.0.7", + "erc20:eth:1SG": "2.0.11", "erc20:eth:1ST": "2.0.7", "erc20:eth:1WO": "2.0.7", "erc20:eth:22x": "2.0.10", @@ -1111,8 +1537,10 @@ "erc20:eth:BET": "2.0.7", "erc20:eth:BETHER": "2.0.8", "erc20:eth:BETR": "2.0.7", + "erc20:eth:BEZ": "2.0.11", "erc20:eth:BHPC": "2.0.10", "erc20:eth:BHR": "2.0.10", + "erc20:eth:BIT": "2.0.11", "erc20:eth:BITCAR": "2.0.10", "erc20:eth:BITPARK": "2.0.10", "erc20:eth:BIX": "2.0.10", @@ -1179,10 +1607,11 @@ "erc20:eth:CARE": "2.0.7", "erc20:eth:CAS": "2.0.7", "erc20:eth:CAT (BitClave)": "2.0.7", - "erc20:eth:CAT (Blockcat)": "2.0.7", + "erc20:eth:CAT (BlockCAT)": "2.0.11", "erc20:eth:CATs (BitClave)_Old": "2.0.7", "erc20:eth:CBC": "2.0.10", "erc20:eth:CBIX": "2.0.8", + "erc20:eth:CBM": "2.0.11", "erc20:eth:CBT": "2.0.10", "erc20:eth:CC3": "2.0.7", "erc20:eth:CCC (CryptoCrashCourse)": "2.0.7", @@ -1203,6 +1632,7 @@ "erc20:eth:CHP": "2.0.10", "erc20:eth:CHSB": "2.0.7", "erc20:eth:CHX": "2.0.10", + "erc20:eth:CIYA": "2.0.11", "erc20:eth:CJT": "2.0.10", "erc20:eth:CK": "2.0.7", "erc20:eth:CL": "2.0.10", @@ -1266,8 +1696,9 @@ "erc20:eth:DAN": "2.0.7", "erc20:eth:DAO": "2.0.7", "erc20:eth:DAT": "2.0.7", + "erc20:eth:DATA": "2.0.11", "erc20:eth:DATABroker": "2.0.7", - "erc20:eth:DATACoin": "2.0.7", + "erc20:eth:DATX": "2.0.11", "erc20:eth:DAV": "2.0.7", "erc20:eth:DAX": "2.0.10", "erc20:eth:DAXT": "2.0.7", @@ -1304,12 +1735,14 @@ "erc20:eth:DOR": "2.0.10", "erc20:eth:DOV": "2.0.10", "erc20:eth:DPP": "2.0.7", + "erc20:eth:DREAM": "2.0.11", "erc20:eth:DRGN": "2.0.7", "erc20:eth:DRPU": "2.0.10", "erc20:eth:DRT": "2.0.10", "erc20:eth:DRVH": "2.0.8", "erc20:eth:DSC": "2.0.7", "erc20:eth:DSCP": "2.0.8", + "erc20:eth:DST": "2.0.11", "erc20:eth:DTH": "2.0.7", "erc20:eth:DTR": "2.0.7", "erc20:eth:DTRC": "2.0.10", @@ -1320,6 +1753,7 @@ "erc20:eth:EAGLE": "2.0.7", "erc20:eth:EARTH": "2.0.10", "erc20:eth:EBC": "2.0.10", + "erc20:eth:EBTC": "2.0.11", "erc20:eth:ECN": "2.0.7", "erc20:eth:ECO2": "2.0.7", "erc20:eth:ECOM": "2.0.10", @@ -1327,6 +1761,8 @@ "erc20:eth:EDG": "2.0.7", "erc20:eth:EDO": "2.0.7", "erc20:eth:EDR": "2.0.8", + "erc20:eth:EDU": "2.0.11", + "erc20:eth:EGT": "2.0.11", "erc20:eth:EHT": "2.0.7", "erc20:eth:EKO": "2.0.10", "erc20:eth:EKT": "2.0.10", @@ -1341,6 +1777,7 @@ "erc20:eth:EMV": "2.0.7", "erc20:eth:ENC": "2.0.7", "erc20:eth:ENG": "2.0.7", + "erc20:eth:ENGT": "2.0.11", "erc20:eth:ENJ": "2.0.7", "erc20:eth:ENTRP": "2.0.7", "erc20:eth:EPX": "2.0.7", @@ -1375,6 +1812,7 @@ "erc20:eth:FDZ": "2.0.10", "erc20:eth:FGP": "2.0.10", "erc20:eth:FID": "2.0.10", + "erc20:eth:FIH": "2.0.11", "erc20:eth:FKX": "2.0.7", "erc20:eth:FLIXX": "2.0.7", "erc20:eth:FLOT": "2.0.10", @@ -1382,11 +1820,13 @@ "erc20:eth:FLR": "2.0.7", "erc20:eth:FLUZ": "2.0.7", "erc20:eth:FLX": "2.0.7", + "erc20:eth:FMF": "2.0.11", "erc20:eth:FND": "2.0.7", "erc20:eth:FNKOS": "2.0.10", "erc20:eth:FNTB": "2.0.10", "erc20:eth:FOOD": "2.0.10", "erc20:eth:FOTA": "2.0.10", + "erc20:eth:FR8": "2.0.11", "erc20:eth:FRD": "2.0.7", "erc20:eth:FREC": "2.0.10", "erc20:eth:FRV": "2.0.10", @@ -1414,6 +1854,7 @@ "erc20:eth:GELD": "2.0.7", "erc20:eth:GEM": "2.0.10", "erc20:eth:GEN": "2.0.7", + "erc20:eth:GENE": "2.0.11", "erc20:eth:GET": "2.0.7", "erc20:eth:GIF": "2.0.7", "erc20:eth:GIM": "2.0.7", @@ -1437,9 +1878,11 @@ "erc20:eth:GUESS": "2.0.10", "erc20:eth:GULD": "2.0.8", "erc20:eth:GUP": "2.0.10", + "erc20:eth:GUSD": "2.0.11", "erc20:eth:GVT": "2.0.7", "erc20:eth:GXC": "2.0.7", "erc20:eth:GXVC": "2.0.7", + "erc20:eth:GZB": "2.0.11", "erc20:eth:GZE": "2.0.7", "erc20:eth:GZR": "2.0.7", "erc20:eth:HAND": "2.0.10", @@ -1462,6 +1905,8 @@ "erc20:eth:HMQ": "2.0.7", "erc20:eth:HODL": "2.0.7", "erc20:eth:HORSE": "2.0.7", + "erc20:eth:HOT (Holo)": "2.0.11", + "erc20:eth:HOT (Hydro)": "2.0.11", "erc20:eth:HPB": "2.0.10", "erc20:eth:HST": "2.0.7", "erc20:eth:HT": "2.0.10", @@ -1476,6 +1921,7 @@ "erc20:eth:IDEA": "2.0.7", "erc20:eth:IDH": "2.0.10", "erc20:eth:IDXM": "2.0.10", + "erc20:eth:IETH": "2.0.11", "erc20:eth:IFT": "2.0.7", "erc20:eth:IG": "2.0.10", "erc20:eth:IHT": "2.0.10", @@ -1528,6 +1974,7 @@ "erc20:eth:LBA": "2.0.10", "erc20:eth:LCS": "2.0.10", "erc20:eth:LDC": "2.0.7", + "erc20:eth:LEDU": "2.0.11", "erc20:eth:LEND": "2.0.7", "erc20:eth:LEV": "2.0.10", "erc20:eth:LFR": "2.0.7", @@ -1579,8 +2026,11 @@ "erc20:eth:MFTU": "2.0.8", "erc20:eth:MGO": "2.0.7", "erc20:eth:MIC": "2.0.10", + "erc20:eth:MITX": "2.0.11", "erc20:eth:MKR": "2.0.10", "erc20:eth:MKT": "2.0.7", + "erc20:eth:MLN (new)": "2.0.11", + "erc20:eth:MLN (old):deprecated": "2.0.11", "erc20:eth:MNE": "2.0.7", "erc20:eth:MNT": "2.0.7", "erc20:eth:MNTP": "2.0.7", @@ -1611,8 +2061,10 @@ "erc20:eth:NAVI": "2.0.7", "erc20:eth:NBAI": "2.0.7", "erc20:eth:NBC": "2.0.10", + "erc20:eth:NCASH": "2.0.11", "erc20:eth:NCT": "2.0.7", "erc20:eth:NDC": "2.0.7", + "erc20:eth:NDX": "2.0.11", "erc20:eth:NEC": "2.0.7", "erc20:eth:NEEO": "2.0.10", "erc20:eth:NET": "2.0.7", @@ -1648,7 +2100,9 @@ "erc20:eth:OMG": "2.0.7", "erc20:eth:OMT": "2.0.8", "erc20:eth:OMX": "2.0.10", + "erc20:eth:ONE": "2.0.11", "erc20:eth:ONEK": "2.0.7", + "erc20:eth:ONG": "2.0.11", "erc20:eth:ONL": "2.0.10", "erc20:eth:OPT": "2.0.7", "erc20:eth:OPTI": "2.0.10", @@ -1664,6 +2118,7 @@ "erc20:eth:PAI": "2.0.10", "erc20:eth:PAL": "2.0.7", "erc20:eth:PARETO": "2.0.7", + "erc20:eth:PAT": "2.0.11", "erc20:eth:PATENTS": "2.0.7", "erc20:eth:PATH": "2.0.7", "erc20:eth:PAX": "2.0.10", @@ -1680,6 +2135,7 @@ "erc20:eth:PFR": "2.0.10", "erc20:eth:PHI": "2.0.10", "erc20:eth:PIPL": "2.0.7", + "erc20:eth:PIT": "2.0.11", "erc20:eth:PIX": "2.0.7", "erc20:eth:PKG": "2.0.10", "erc20:eth:PKT": "2.0.10", @@ -1697,6 +2153,7 @@ "erc20:eth:POLL": "2.0.10", "erc20:eth:POLY": "2.0.7", "erc20:eth:POOL": "2.0.7", + "erc20:eth:POP": "2.0.11", "erc20:eth:POS": "2.0.7", "erc20:eth:POWR": "2.0.7", "erc20:eth:PPP": "2.0.7", @@ -1733,6 +2190,7 @@ "erc20:eth:QVT": "2.0.10", "erc20:eth:R": "2.0.10", "erc20:eth:RAO": "2.0.7", + "erc20:eth:RATING": "2.0.11", "erc20:eth:RBLX": "2.0.7", "erc20:eth:RCN": "2.0.7", "erc20:eth:RDN": "2.0.10", @@ -1743,6 +2201,7 @@ "erc20:eth:REDC": "2.0.8", "erc20:eth:REF": "2.0.10", "erc20:eth:REM": "2.0.10", + "erc20:eth:REMI": "2.0.11", "erc20:eth:REN": "2.0.7", "erc20:eth:REP": "2.0.10", "erc20:eth:REP:deprecated": "2.0.10", @@ -1785,6 +2244,7 @@ "erc20:eth:SCANDI": "2.0.7", "erc20:eth:SCL": "2.0.7", "erc20:eth:SCRL": "2.0.10", + "erc20:eth:SEELE": "2.0.11", "erc20:eth:SENC": "2.0.10", "erc20:eth:SENSE": "2.0.7", "erc20:eth:SENT": "2.0.10", @@ -1801,10 +2261,12 @@ "erc20:eth:SIFT": "2.0.7", "erc20:eth:SIG": "2.0.7", "erc20:eth:SKB": "2.0.10", + "erc20:eth:SKE": "2.0.11", "erc20:eth:SKIN": "2.0.7", "erc20:eth:SKM": "2.0.10", "erc20:eth:SKO1": "2.0.7", "erc20:eth:SKR": "2.0.7", + "erc20:eth:SKYM": "2.0.11", "erc20:eth:SLT": "2.0.7", "erc20:eth:SLY": "2.0.8", "erc20:eth:SMS": "2.0.10", @@ -1818,9 +2280,12 @@ "erc20:eth:SNOV": "2.0.7", "erc20:eth:SNT": "2.0.7", "erc20:eth:SNTR": "2.0.10", + "erc20:eth:SNX": "2.0.11", + "erc20:eth:SOAR": "2.0.11", "erc20:eth:SOC": "2.0.10", "erc20:eth:SOL": "2.0.7", "erc20:eth:SONIQ": "2.0.10", + "erc20:eth:SOUL": "2.0.11", "erc20:eth:SPANK": "2.0.7", "erc20:eth:SPARC": "2.0.7", "erc20:eth:SPARTA": "2.0.7", @@ -1835,6 +2300,7 @@ "erc20:eth:SSP": "2.0.10", "erc20:eth:STABIT": "2.0.8", "erc20:eth:STAC": "2.0.7", + "erc20:eth:STACS": "2.0.11", "erc20:eth:STAR": "2.0.7", "erc20:eth:STB": "2.0.10", "erc20:eth:STC": "2.0.7", @@ -1876,19 +2342,20 @@ "erc20:eth:THR": "2.0.10", "erc20:eth:THRT": "2.0.10", "erc20:eth:THUG": "2.0.7", - "erc20:eth:TIC": "2.0.10", "erc20:eth:TIE": "2.0.10", "erc20:eth:TIG": "2.0.10", "erc20:eth:TIME": "2.0.7", "erc20:eth:TIO": "2.0.7", "erc20:eth:TIX": "2.0.7", "erc20:eth:TKA": "2.0.10", + "erc20:eth:TKLN": "2.0.11", "erc20:eth:TKN": "2.0.7", "erc20:eth:TKR": "2.0.10", "erc20:eth:TLX": "2.0.8", "erc20:eth:TMT": "2.0.10", "erc20:eth:TNS": "2.0.10", "erc20:eth:TNT": "2.0.7", + "erc20:eth:TOK": "2.0.11", "erc20:eth:TOMO": "2.0.10", "erc20:eth:TOOR": "2.0.8", "erc20:eth:TRAC": "2.0.10", @@ -1899,8 +2366,10 @@ "erc20:eth:TRST": "2.0.7", "erc20:eth:TSW": "2.0.8", "erc20:eth:TTA": "2.0.10", + "erc20:eth:TTC": "2.0.11", "erc20:eth:TTU": "2.0.10", "erc20:eth:TUSD": "2.0.10", + "erc20:eth:TUSD:deprecated": "2.0.11", "erc20:eth:TWN": "2.0.7", "erc20:eth:TWNKL": "2.0.7", "erc20:eth:TaaS": "2.0.7", @@ -1915,8 +2384,10 @@ "erc20:eth:URB": "2.0.8", "erc20:eth:USDC": "2.0.8", "erc20:eth:USDM": "2.0.7", + "erc20:eth:USDS": "2.0.11", "erc20:eth:USDT": "2.0.10", "erc20:eth:UTK": "2.0.7", + "erc20:eth:UTNP": "2.0.11", "erc20:eth:UTT": "2.0.10", "erc20:eth:UUU": "2.0.7", "erc20:eth:Unicorn": "2.0.7", @@ -1927,6 +2398,8 @@ "erc20:eth:VENUS": "2.0.7", "erc20:eth:VERI": "2.0.7", "erc20:eth:VIB": "2.0.7", + "erc20:eth:VIBE": "2.0.11", + "erc20:eth:VIBEX": "2.0.11", "erc20:eth:VIEW": "2.0.7", "erc20:eth:VIKKY": "2.0.10", "erc20:eth:VIN": "2.0.10", @@ -1940,9 +2413,11 @@ "erc20:eth:VUU": "2.0.10", "erc20:eth:VZT": "2.0.10", "erc20:eth:WAB": "2.0.10", + "erc20:eth:WABI": "2.0.11", "erc20:eth:WATT": "2.0.8", "erc20:eth:WAX": "2.0.7", "erc20:eth:WBA": "2.0.7", + "erc20:eth:WBTC": "2.0.11", "erc20:eth:WCN": "2.0.7", "erc20:eth:WCT": "2.0.7", "erc20:eth:WEB": "2.0.10", @@ -1954,6 +2429,7 @@ "erc20:eth:WISH": "2.0.10", "erc20:eth:WMK": "2.0.8", "erc20:eth:WNK": "2.0.8", + "erc20:eth:WOC": "2.0.11", "erc20:eth:WPC": "2.0.7", "erc20:eth:WPR": "2.0.7", "erc20:eth:WRC": "2.0.10", @@ -1962,12 +2438,12 @@ "erc20:eth:WTT": "2.0.10", "erc20:eth:WYS": "2.0.7", "erc20:eth:WYV": "2.0.7", - "erc20:eth:WaBi": "2.0.7", "erc20:eth:X8X": "2.0.7", "erc20:eth:XAUR": "2.0.7", "erc20:eth:XBL": "2.0.10", "erc20:eth:XBP": "2.0.7", "erc20:eth:XCC": "2.0.7", + "erc20:eth:XCHF": "2.0.11", "erc20:eth:XCLR": "2.0.10", "erc20:eth:XDCE": "2.0.10", "erc20:eth:XES": "2.0.10", @@ -1984,6 +2460,7 @@ "erc20:eth:XNT": "2.0.7", "erc20:eth:XOV": "2.0.10", "erc20:eth:XPA": "2.0.10", + "erc20:eth:XPAT": "2.0.11", "erc20:eth:XRL": "2.0.7", "erc20:eth:XSC": "2.0.7", "erc20:eth:XYO": "2.0.10", @@ -1995,10 +2472,12 @@ "erc20:eth:ZCN": "2.0.10", "erc20:eth:ZCO": "2.0.10", "erc20:eth:ZCS": "2.0.7", + "erc20:eth:ZEUS": "2.0.11", "erc20:eth:ZIL": "2.0.7", "erc20:eth:ZINC": "2.0.10", "erc20:eth:ZIP": "2.0.10", "erc20:eth:ZIPT": "2.0.10", + "erc20:eth:ZIX": "2.0.11", "erc20:eth:ZLA": "2.0.10", "erc20:eth:ZMN": "2.0.7", "erc20:eth:ZPR": "2.0.10", @@ -2008,11 +2487,10 @@ "erc20:eth:ZXC": "2.0.10", "erc20:eth:cV": "2.0.7", "erc20:eth:eBCH": "2.0.7", - "erc20:eth:eBTC": "2.0.7", "erc20:eth:eGAS": "2.0.7", "erc20:eth:eUSD": "2.0.7", "erc20:eth:eosDAC": "2.0.7", - "erc20:eth:onG": "2.0.7", + "erc20:eth:sUSD": "2.0.11", "erc20:kov:Aeternity": "2.0.7", "erc20:kov:DAI": "2.0.10", "erc20:kov:DGD": "2.0.10", @@ -2041,6 +2519,7 @@ "erc20:ubq:RICKS": "2.0.7", "eth:AKA": "2.0.8", "eth:ATH": "2.0.8", + "eth:ATS": "2.0.11", "eth:CLO": "2.0.7", "eth:EGEM": "2.0.7", "eth:ELLA": "2.0.7", @@ -2058,6 +2537,7 @@ "eth:RBTC": "2.0.7", "eth:REOSC": "2.0.11", "eth:UBQ": "2.0.7", + "eth:tATS": "2.0.11", "eth:tETC": "2.0.7", "eth:tKOV": "2.0.7", "eth:tRBTC": "2.0.7", @@ -2129,8 +2609,6 @@ "erc20:eth:DUBI:ed7f": "(AUTO) duplicate key", "erc20:eth:ECP:8869": "(AUTO) duplicate key", "erc20:eth:ECP:aea1": "(AUTO) duplicate key", - "erc20:eth:EDU:2a22": "(AUTO) duplicate key", - "erc20:eth:EDU:5b26": "(AUTO) duplicate key", "erc20:eth:EOS": "switched to custom network", "erc20:eth:EVN:6890": "(AUTO) duplicate key", "erc20:eth:EVN:d780": "(AUTO) duplicate key", @@ -2204,14 +2682,14 @@ "erc20:eth:SS:bbff": "(AUTO) duplicate key", "erc20:eth:TEL:85e0": "(AUTO) duplicate key", "erc20:eth:TEL:ec32": "(AUTO) duplicate key", + "erc20:eth:TIC:614b": "(AUTO) duplicate key", + "erc20:eth:TIC:7243": "(AUTO) duplicate key", "erc20:eth:TICO:7f4b": "(AUTO) duplicate key", "erc20:eth:TICO:a5db": "(AUTO) duplicate key", "erc20:eth:TRC": "(AUTO) duplicate key", "erc20:eth:TRX": "switched to custom network", "erc20:eth:UMKA:105d": "(AUTO) duplicate key", "erc20:eth:UMKA:8e5a": "(AUTO) duplicate key", - "erc20:eth:VIBEX:8824": "(AUTO) duplicate key", - "erc20:eth:VIBEX:e8ff": "(AUTO) duplicate key", "erc20:eth:VRS:92e7": "(AUTO) duplicate key", "erc20:eth:VRS:edba": "(AUTO) duplicate key", "erc20:eth:WHO:e200": "(AUTO) duplicate key", From d59e8caca8af77d998923ee635212281b7338b4d Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 14 Feb 2019 23:36:53 +0100 Subject: [PATCH 728/767] defs: disable komodo backend, they don't have /api endpoint --- defs/bitcoin/komodo.json | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/defs/bitcoin/komodo.json b/defs/bitcoin/komodo.json index fd67db039..b81d7fee6 100644 --- a/defs/bitcoin/komodo.json +++ b/defs/bitcoin/komodo.json @@ -32,9 +32,7 @@ "uri_prefix": "komodo", "min_address_length": 27, "max_address_length": 34, - "bitcore": [ - "https://kmdexplorer.io" - ], + "bitcore": [], "blockbook": [], "cooldown": 100 } From e7e80cdeb75889ee927128819e46aff92c551560 Mon Sep 17 00:00:00 2001 From: Dusan Klinec Date: Fri, 15 Feb 2019 11:58:30 +0100 Subject: [PATCH 729/767] xmr: hf10 upgrades --- protob/messages-monero.proto | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/protob/messages-monero.proto b/protob/messages-monero.proto index 76f069801..e04f4eba4 100644 --- a/protob/messages-monero.proto +++ b/protob/messages-monero.proto @@ -43,6 +43,8 @@ message MoneroTransactionDestinationEntry { optional uint64 amount = 1; optional MoneroAccountPublicAddress addr = 2; optional bool is_subaddress = 3; + optional bytes original = 4; + optional bool is_integrated = 5; /** * Structure representing Monero public address */ @@ -64,6 +66,7 @@ message MoneroTransactionRsigData { optional bytes mask = 4; // mask vector optional bytes rsig = 5; // range sig data, all of it or partial (based on rsig_parts) repeated bytes rsig_parts = 6; + optional uint32 bp_version = 7; // Bulletproof version } /** @@ -134,6 +137,7 @@ message MoneroTransactionInitRequest { repeated uint32 minor_indices = 10; optional MoneroTransactionRsigData rsig_data = 11; repeated uint32 integrated_indices = 12; + optional uint32 client_version = 13; // connected client version } } @@ -226,6 +230,7 @@ message MoneroTransactionSetOutputRequest { optional MoneroTransactionDestinationEntry dst_entr = 1; optional bytes dst_entr_hmac = 2; optional MoneroTransactionRsigData rsig_data = 3; + optional bool is_offloaded_bp = 4; // Extra message, with offloaded BP. } /** @@ -290,6 +295,7 @@ message MoneroTransactionSignInputRequest { */ message MoneroTransactionSignInputAck { optional bytes signature = 1; + optional bytes pseudo_out = 2; // updated pseudo-out after mask correction } /** From 1b12183d25a3e68e679bdba8e82f55f3478dffeb Mon Sep 17 00:00:00 2001 From: Luke Plaster Date: Mon, 25 Feb 2019 21:00:27 +0800 Subject: [PATCH 730/767] Add Binance Chain (#264) --- defs/misc/misc.json | 14 ++++ protob/Makefile | 2 +- protob/messages-binance.proto | 151 ++++++++++++++++++++++++++++++++++ protob/messages.proto | 12 +++ 4 files changed, 178 insertions(+), 1 deletion(-) create mode 100644 protob/messages-binance.proto diff --git a/defs/misc/misc.json b/defs/misc/misc.json index 91bd66b56..7abf2a944 100644 --- a/defs/misc/misc.json +++ b/defs/misc/misc.json @@ -186,6 +186,20 @@ "wallet": {}, "blockchain_link": {} }, + { + "name": "Binance Chain", + "shortcut": "BNB", + "slip44": 714, + "curve": "secp256k1", + "decimals": 8, + "links": { + "Homepage": "https://binance.org" + }, + "wallet": { + "Trust Wallet": "https://trustwallet.com" + }, + "blockchain_link": {} + }, { "name": "Tether", "shortcut": "USDT", diff --git a/protob/Makefile b/protob/Makefile index 623959ce5..97955679c 100644 --- a/protob/Makefile +++ b/protob/Makefile @@ -1,4 +1,4 @@ -check: messages.pb messages-bitcoin.pb messages-bootloader.pb messages-cardano.pb messages-common.pb messages-crypto.pb messages-debug.pb messages-ethereum.pb messages-lisk.pb messages-management.pb messages-monero.pb messages-nem.pb messages-ripple.pb messages-stellar.pb messages-tezos.pb messages-ontology.pb messages-tron.pb messages-eos.pb +check: messages.pb messages-binance.pb messages-bitcoin.pb messages-bootloader.pb messages-cardano.pb messages-common.pb messages-crypto.pb messages-debug.pb messages-ethereum.pb messages-lisk.pb messages-management.pb messages-monero.pb messages-nem.pb messages-ripple.pb messages-stellar.pb messages-tezos.pb messages-ontology.pb messages-tron.pb messages-eos.pb %.pb: %.proto protoc -I/usr/include -I. $< -o $@ diff --git a/protob/messages-binance.proto b/protob/messages-binance.proto new file mode 100644 index 000000000..7afa466a5 --- /dev/null +++ b/protob/messages-binance.proto @@ -0,0 +1,151 @@ +syntax = "proto2"; +package hw.trezor.messages.binance; + +// Sugar for easier handling in Java +option java_package = "com.satoshilabs.trezor.lib.protobuf"; +option java_outer_classname = "TrezorMessageBinance"; + +/** + * Request: Ask the device for a Binance address. + * @start + * @next BinanceAddress + * @next Failure + */ +message BinanceGetAddress { + repeated uint32 address_n = 1; // BIP-32-style path to derive the key from master node + optional bool show_display = 2; // optionally prompt for confirmation on trezor display +} + +/** + * Response: A Binance address. + * @end + */ +message BinanceAddress { + optional string address = 1; // prefixed bech32 Binance address +} + +/** + * Request: Ask device for a public key corresponding to address_n path. + * @start + * @next BinancePublicKey + */ +message BinanceGetPublicKey { + repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node + optional bool show_display = 2; // optionally show on display before sending the result +} + +/** + * Response: A public key corresponding to address_n path. + * @end + */ +message BinancePublicKey { + optional bytes public_key = 1; +} + +/** + * Request: Starts the Binance transaction protocol flow. + * A transaction consists of these common fields and a series of BinanceMsg messages. + * These parts form a JSON structure (a string) in Trezor's memory, which is signed to produce a BinanceSignedTx. + * @start + * @next BinanceTxRequest + * @next Failure +*/ +message BinanceSignTx { + repeated uint32 address_n = 1; // BIP-32-style path to derive the key from master node + optional uint32 msg_count = 2; // count of BinanceMsg to be included in this tx + optional sint64 account_number = 3; + optional string chain_id = 4; + optional string memo = 5; + optional sint64 sequence = 6; + optional sint64 source = 7; +} + +/** + * Response: Trezor requests the next message or signals that it is ready to send a BinanceSignedTx. + * @next BinanceTransferMsg + * @next BinanceOrderMsg + * @next BinanceCancelMsg + */ +message BinanceTxRequest { +} + +/** + * Request: Ask the device to include a Binance transfer msg in the tx. + * @next BinanceTxRequest + * @next BinanceSignedTx + * @next Failure + */ +message BinanceTransferMsg { + repeated InputOutput inputs = 1; + repeated InputOutput outputs = 2; + + message Coin { + optional sint64 amount = 1; + optional string denom = 2; + } + + message InputOutput { + optional string address = 1; + repeated Coin coins = 2; + } +} + +/** + * Request: Ask the device to include a Binance order msg in the tx. + * @next BinanceTxRequest + * @next BinanceSignedTx + * @next Failure + */ +message BinanceOrderMsg { + optional string id = 1; + optional OrderType ordertype = 2; + optional sint64 price = 3; + optional sint64 quantity = 4; + optional string sender = 5; + optional OrderSide side = 6; + optional string symbol = 7; + optional TimeInForce timeinforce = 8; + + enum OrderType { + OT_UNKNOWN = 0; + MARKET = 1; + LIMIT = 2; + OT_RESERVED = 3; + } + + enum OrderSide { + SIDE_UNKNOWN = 0; + BUY = 1; + SELL = 2; + } + + enum TimeInForce { + TIF_UNKNOWN = 0; + GTE = 1; + TIF_RESERVED = 2; + IOC = 3; + } +} + +/** + * Request: Ask the device to include a Binance cancel msg in the tx. + * @next BinanceTxRequest + * @next BinanceSignedTx + * @next Failure + */ +message BinanceCancelMsg { + optional string refid = 1; + optional string sender = 2; + optional string symbol = 3; +} + +/** + * Response: A transaction signature and public key corresponding to the address_n path in BinanceSignTx. + * @end + */ +message BinanceSignedTx { + optional bytes signature = 1; + optional bytes public_key = 2; + optional string json = 3; +} + diff --git a/protob/messages.proto b/protob/messages.proto index bc5010687..63f13e5d8 100644 --- a/protob/messages.proto +++ b/protob/messages.proto @@ -245,4 +245,16 @@ enum MessageType { MessageType_EosTxActionRequest = 603 [(wire_out) = true]; MessageType_EosTxActionAck = 604 [(wire_in) = true]; MessageType_EosSignedTx = 605 [(wire_out) = true]; + + // Binance + MessageType_BinanceGetAddress = 700 [(wire_in) = true]; + MessageType_BinanceAddress = 701 [(wire_out) = true]; + MessageType_BinanceGetPublicKey = 702 [(wire_in) = true]; + MessageType_BinancePublicKey = 703 [(wire_out) = true]; + MessageType_BinanceSignTx = 704 [(wire_in) = true]; + MessageType_BinanceTxRequest = 705 [(wire_out) = true]; + MessageType_BinanceTransferMsg = 706 [(wire_in) = true]; + MessageType_BinanceOrderMsg = 707 [(wire_in) = true]; + MessageType_BinanceCancelMsg = 708 [(wire_in) = true]; + MessageType_BinanceSignedTx = 709 [(wire_out) = true]; } From 77b8545c8b1fb042d9396386c47bb52f82ff2dc7 Mon Sep 17 00:00:00 2001 From: matejcik Date: Mon, 25 Feb 2019 14:04:29 +0100 Subject: [PATCH 731/767] defs: ignore duplicity of Binance token --- defs/duplicity_overrides.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/defs/duplicity_overrides.json b/defs/duplicity_overrides.json index ee40caa1f..94f9a2262 100644 --- a/defs/duplicity_overrides.json +++ b/defs/duplicity_overrides.json @@ -5,5 +5,6 @@ "erc20:eth:NXX": false, "erc20:eth:Hdp": true, "erc20:eth:Hdp.Ñ„": true, - "erc20:eth:USDT": false + "erc20:eth:USDT": false, + "erc20:eth:BNB": false } From f5e5516ed2e819823fa291e8cf37cf40ee101f71 Mon Sep 17 00:00:00 2001 From: leoreinaux Date: Wed, 27 Feb 2019 11:48:02 -0300 Subject: [PATCH 732/767] Adding SmartCash wallet (#282) --- defs/wallets.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/defs/wallets.json b/defs/wallets.json index 8618bfed9..5cf9448fd 100644 --- a/defs/wallets.json +++ b/defs/wallets.json @@ -51,6 +51,9 @@ "Electrum-XZC": "https://github.com/zcoinofficial/electrum-xzc", "Znode Tool": "https://github.com/yura-pakhuchiy/znode-tool" }, + "bitcoin:SMART": { + "Electrum-SMART": "https://github.com/smartcash/electrum-smart" + }, "bitcoin:NIX": { "NIX-Electrum": "https://github.com/nixplatform/electrum-nix", "Ghostnode Tool": "https://github.com/nixplatform/ghostnode-tool" From 84f5a0e39376409863c58a9ede1b61403306894b Mon Sep 17 00:00:00 2001 From: Tomas Susanka Date: Mon, 4 Mar 2019 12:53:39 +0100 Subject: [PATCH 733/767] protob: set PublicKey's node to optional to be consistent with other coins --- protob/messages-bitcoin.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protob/messages-bitcoin.proto b/protob/messages-bitcoin.proto index d44143314..484a0f5b1 100644 --- a/protob/messages-bitcoin.proto +++ b/protob/messages-bitcoin.proto @@ -56,7 +56,7 @@ message GetPublicKey { * @end */ message PublicKey { - required hw.trezor.messages.common.HDNodeType node = 1; // BIP32 public node + optional hw.trezor.messages.common.HDNodeType node = 1; // BIP32 public node optional string xpub = 2; // serialized form of public node } From 1d177ed8314837466316742a2d891e8d453c057c Mon Sep 17 00:00:00 2001 From: matejcik Date: Mon, 4 Mar 2019 14:43:36 +0100 Subject: [PATCH 734/767] defs: update README with wallets.json --- defs/README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/defs/README.md b/defs/README.md index 6c2050e97..5240a7f3a 100644 --- a/defs/README.md +++ b/defs/README.md @@ -105,8 +105,10 @@ If you need to change information in this file, modify the source information in 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 this is not viable for some reason, or if there is no source information (such as -links to third-party wallets), you can also edit [`coins_details.override.json`](coins_details.override.json). +If you want to add a **wallet link**, modify the file [`wallets.json`](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`](coins_details.override.json). External contributors should not touch this file unless asked to. From e8db62a5f599c5219bfac9ee52ada5c36638fcc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=84=B8?= Date: Tue, 5 Mar 2019 19:58:08 +0800 Subject: [PATCH 735/767] Add Qtum support (#287) --- defs/bitcoin/qtum.json | 41 +++++++++++++++++++++++++++++++++ defs/bitcoin/qtum.png | Bin 0 -> 22528 bytes defs/bitcoin/qtum_testnet.json | 41 +++++++++++++++++++++++++++++++++ defs/bitcoin/qtum_testnet.png | Bin 0 -> 22528 bytes defs/duplicity_overrides.json | 3 ++- defs/wallets.json | 3 +++ 6 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 defs/bitcoin/qtum.json create mode 100644 defs/bitcoin/qtum.png create mode 100644 defs/bitcoin/qtum_testnet.json create mode 100644 defs/bitcoin/qtum_testnet.png diff --git a/defs/bitcoin/qtum.json b/defs/bitcoin/qtum.json new file mode 100644 index 000000000..4767a8e00 --- /dev/null +++ b/defs/bitcoin/qtum.json @@ -0,0 +1,41 @@ +{ + "coin_name": "Qtum", + "coin_shortcut": "QTUM", + "coin_label": "Qtum", + "website": "https://qtum.org", + "github": "https://github.com/qtumproject/qtum", + "maintainer": "CodeFace ", + "curve_name": "secp256k1", + "address_type": 58, + "address_type_p2sh": 50, + "maxfee_kb": 40000000, + "minfee_kb": 400000, + "signed_message_header": "Qtum Signed Message:\n", + "hash_genesis_block": "000075aef83cf2853580f8ae8ce6f8c3096cfa21d98334d6e3f95e5582ed986c", + "xprv_magic": 76066276, + "xpub_magic": 76067358, + "xpub_magic_segwit_p2sh": 77429938, + "xpub_magic_segwit_native": 78792518, + "bech32_prefix": "qc", + "cashaddr_prefix": null, + "slip44": 2301, + "segwit": true, + "decred": false, + "fork_id": null, + "force_bip143": false, + "bip115": false, + "default_fee_b": { + "Low": 410, + "Economy": 500, + "Normal": 600, + "High": 2000 + }, + "dust_limit": 218400, + "blocktime_seconds": 128, + "uri_prefix": "qtum", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [], + "blockbook": [], + "cooldown": 100 +} diff --git a/defs/bitcoin/qtum.png b/defs/bitcoin/qtum.png new file mode 100644 index 0000000000000000000000000000000000000000..7d6124c1f05b49cc88befb3e5510afbd2858baec GIT binary patch literal 22528 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 Q|4L0+L0!I7)*|@-1BYABj{pDw literal 0 HcmV?d00001 diff --git a/defs/bitcoin/qtum_testnet.json b/defs/bitcoin/qtum_testnet.json new file mode 100644 index 000000000..3b3553ca4 --- /dev/null +++ b/defs/bitcoin/qtum_testnet.json @@ -0,0 +1,41 @@ +{ + "coin_name": "Qtum Testnet", + "coin_shortcut": "TQTUM", + "coin_label": "Qtum Testnet", + "website": "https://qtum.org", + "github": "https://github.com/qtumproject/qtum", + "maintainer": "CodeFace ", + "curve_name": "secp256k1", + "address_type": 120, + "address_type_p2sh": 110, + "maxfee_kb": 40000000, + "minfee_kb": 400000, + "signed_message_header": "Qtum Signed Message:\n", + "hash_genesis_block": "0000e803ee215c0684ca0d2f9220594d3f828617972aad66feb2ba51f5e14222", + "xprv_magic": 70615956, + "xpub_magic": 70617039, + "xpub_magic_segwit_p2sh": 71979618, + "xpub_magic_segwit_native": 73342198, + "bech32_prefix": "tq", + "cashaddr_prefix": null, + "slip44": 1, + "segwit": true, + "decred": false, + "fork_id": null, + "force_bip143": false, + "bip115": false, + "default_fee_b": { + "Low": 410, + "Economy": 500, + "Normal": 600, + "High": 2000 + }, + "dust_limit": 218400, + "blocktime_seconds": 128, + "uri_prefix": "qtum", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [], + "blockbook": [], + "cooldown": 100 +} diff --git a/defs/bitcoin/qtum_testnet.png b/defs/bitcoin/qtum_testnet.png new file mode 100644 index 0000000000000000000000000000000000000000..7d6124c1f05b49cc88befb3e5510afbd2858baec GIT binary patch literal 22528 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 Q|4L0+L0!I7)*|@-1BYABj{pDw literal 0 HcmV?d00001 diff --git a/defs/duplicity_overrides.json b/defs/duplicity_overrides.json index 94f9a2262..b5e0a1162 100644 --- a/defs/duplicity_overrides.json +++ b/defs/duplicity_overrides.json @@ -6,5 +6,6 @@ "erc20:eth:Hdp": true, "erc20:eth:Hdp.Ñ„": true, "erc20:eth:USDT": false, - "erc20:eth:BNB": false + "erc20:eth:BNB": false, + "erc20:eth:QTUM": false } diff --git a/defs/wallets.json b/defs/wallets.json index 5cf9448fd..c75cc772b 100644 --- a/defs/wallets.json +++ b/defs/wallets.json @@ -57,5 +57,8 @@ "bitcoin:NIX": { "NIX-Electrum": "https://github.com/nixplatform/electrum-nix", "Ghostnode Tool": "https://github.com/nixplatform/ghostnode-tool" + }, + "bitcoin:QTUM": { + "Qtum-Electrum": "https://github.com/qtumproject/qtum-electrum" } } From 3dc66372423163f539b3d471bdce0ba97864827b Mon Sep 17 00:00:00 2001 From: ca333 Date: Tue, 5 Mar 2019 16:25:37 +0100 Subject: [PATCH 736/767] defs: add Komodo backend (#289) --- defs/bitcoin/komodo.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/defs/bitcoin/komodo.json b/defs/bitcoin/komodo.json index b81d7fee6..a7dc0b810 100644 --- a/defs/bitcoin/komodo.json +++ b/defs/bitcoin/komodo.json @@ -32,7 +32,9 @@ "uri_prefix": "komodo", "min_address_length": 27, "max_address_length": 34, - "bitcore": [], + "bitcore": [ + "https://api.kmd.dev" + ], "blockbook": [], "cooldown": 100 } From 21f0d75d139817fbadd43fd10876a66cb6bb303f Mon Sep 17 00:00:00 2001 From: matejcik Date: Wed, 6 Mar 2019 14:07:08 +0100 Subject: [PATCH 737/767] coins_details: regenerate --- defs/coins_details.json | 2791 +++++++++++++++++++++------------------ 1 file changed, 1501 insertions(+), 1290 deletions(-) diff --git a/defs/coins_details.json b/defs/coins_details.json index bd1cd581a..2399ba388 100644 --- a/defs/coins_details.json +++ b/defs/coins_details.json @@ -5,7 +5,7 @@ "Github": "https://github.com/Actinium-project/Actinium", "Homepage": "https://actinium.org" }, - "marketcap_usd": 182545, + "marketcap_usd": 238979, "name": "Actinium", "shortcut": "ACM", "t1_enabled": "yes", @@ -27,7 +27,7 @@ "name": "Axe", "shortcut": "AXE", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "coin", "wallet": [] }, @@ -36,7 +36,7 @@ "Github": "https://github.com/Bitcoin-ABC/bitcoin-abc", "Homepage": "https://www.bitcoincash.org" }, - "marketcap_usd": 2044503226, + "marketcap_usd": 2348442340, "name": "Bitcoin Cash", "shortcut": "BCH", "t1_enabled": "yes", @@ -71,7 +71,7 @@ "Github": "https://github.com/LIMXTEC/BitSend", "Homepage": "https://bitsend.info" }, - "marketcap_usd": 975972, + "marketcap_usd": 1117525, "name": "Bitsend", "shortcut": "BSD", "t1_enabled": "yes", @@ -84,7 +84,7 @@ "Github": "https://github.com/bitcoin/bitcoin", "Homepage": "https://bitcoin.org" }, - "marketcap_usd": 59760482835, + "marketcap_usd": 68530594390, "name": "Bitcoin", "shortcut": "BTC", "t1_enabled": "yes", @@ -106,7 +106,7 @@ "Github": "https://github.com/BTCPrivate/BitcoinPrivate", "Homepage": "https://btcprivate.org" }, - "marketcap_usd": 23177121, + "marketcap_usd": 24309437, "name": "Bitcoin Private", "shortcut": "BTCP", "t1_enabled": "yes", @@ -124,7 +124,7 @@ "Github": "https://github.com/LIMXTEC/Bitcloud", "Homepage": "https://bit-cloud.info" }, - "marketcap_usd": 271936, + "marketcap_usd": 125443, "name": "Bitcloud", "shortcut": "BTDX", "t1_enabled": "yes", @@ -137,7 +137,7 @@ "Github": "https://github.com/BTCGPU/BTCGPU", "Homepage": "https://bitcoingold.org" }, - "marketcap_usd": 164933554, + "marketcap_usd": 221203438, "name": "Bitcoin Gold", "shortcut": "BTG", "t1_enabled": "yes", @@ -159,7 +159,7 @@ "Github": "https://github.com/LIMXTEC/BitCore", "Homepage": "https://bitcore.cc" }, - "marketcap_usd": 3690530, + "marketcap_usd": 4560915, "name": "Bitcore", "shortcut": "BTX", "t1_enabled": "yes", @@ -177,7 +177,7 @@ "Github": "https://github.com/Capricoinofficial/Capricoin", "Homepage": "https://capricoin.org" }, - "marketcap_usd": 468279, + "marketcap_usd": 329758, "name": "Capricoin", "shortcut": "CPC", "t1_enabled": "soon", @@ -190,7 +190,7 @@ "Github": "https://github.com/dashpay/dash", "Homepage": "https://www.dash.org" }, - "marketcap_usd": 575184093, + "marketcap_usd": 721466560, "name": "Dash", "shortcut": "DASH", "t1_enabled": "yes", @@ -212,7 +212,7 @@ "Github": "https://github.com/decred/dcrd", "Homepage": "https://www.decred.org" }, - "marketcap_usd": 142572413, + "marketcap_usd": 158980541, "name": "Decred", "shortcut": "DCR", "t1_enabled": "yes", @@ -225,7 +225,7 @@ "Github": "https://github.com/digibyte/digibyte", "Homepage": "https://digibyte.io" }, - "marketcap_usd": 97144519, + "marketcap_usd": 130488338, "name": "DigiByte", "shortcut": "DGB", "t1_enabled": "yes", @@ -244,7 +244,7 @@ "Github": "https://github.com/carsenk/denarius", "Homepage": "https://denarius.io" }, - "marketcap_usd": 241076, + "marketcap_usd": 158610, "name": "Denarius", "shortcut": "DNR", "t1_enabled": "yes", @@ -257,7 +257,7 @@ "Github": "https://github.com/dogecoin/dogecoin", "Homepage": "https://dogecoin.com" }, - "marketcap_usd": 218317006, + "marketcap_usd": 235085170, "name": "Dogecoin", "shortcut": "DOGE", "t1_enabled": "yes", @@ -275,7 +275,7 @@ "Github": "https://github.com/fujicoin/fujicoin", "Homepage": "https://fujicoin.org" }, - "marketcap_usd": 127959, + "marketcap_usd": 85985, "name": "Fujicoin", "shortcut": "FJC", "t1_enabled": "yes", @@ -293,7 +293,7 @@ "Github": "https://github.com/flash-coin", "Homepage": "https://www.flashcoin.io" }, - "marketcap_usd": 5784852, + "marketcap_usd": 3112202, "name": "Flashcoin", "shortcut": "FLASH", "t1_enabled": "yes", @@ -306,11 +306,11 @@ "Github": "https://github.com/floblockchain/flo", "Homepage": "https://flo.cash" }, - "marketcap_usd": 8047028, + "marketcap_usd": 7672432, "name": "Flo", "shortcut": "FLO", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "coin", "wallet": [] }, @@ -319,7 +319,7 @@ "Github": "https://github.com/FeatherCoin/Feathercoin", "Homepage": "https://feathercoin.com" }, - "marketcap_usd": 2831907, + "marketcap_usd": 3482272, "name": "Feathercoin", "shortcut": "FTC", "t1_enabled": "yes", @@ -337,7 +337,7 @@ "Github": "https://github.com/gamecredits-project/gamecredits", "Homepage": "https://gamecredits.org" }, - "marketcap_usd": 5360821, + "marketcap_usd": 6474011, "name": "GameCredits", "shortcut": "GAME", "t1_enabled": "yes", @@ -359,7 +359,7 @@ "name": "GIN", "shortcut": "GIN", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "coin", "wallet": [] }, @@ -368,7 +368,7 @@ "Github": "https://github.com/Groestlcoin/groestlcoin", "Homepage": "https://www.groestlcoin.org" }, - "marketcap_usd": 19225882, + "marketcap_usd": 17308684, "name": "Groestlcoin", "shortcut": "GRS", "t1_enabled": "yes", @@ -386,11 +386,11 @@ "Github": "https://github.com/komodoplatform/komodo", "Homepage": "https://komodoplatform.com" }, - "marketcap_usd": 67826169, + "marketcap_usd": 105745463, "name": "Komodo", "shortcut": "KMD", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "coin", "wallet": [] }, @@ -417,7 +417,7 @@ "Github": "https://github.com/litecoin-project/litecoin", "Homepage": "https://litecoin.org" }, - "marketcap_usd": 2009255184, + "marketcap_usd": 3375539765, "name": "Litecoin", "shortcut": "LTC", "t1_enabled": "yes", @@ -439,7 +439,7 @@ "Github": "https://github.com/LIMXTEC/Megacoin", "Homepage": "https://www.megacoin.eu" }, - "marketcap_usd": 100317, + "marketcap_usd": 104769, "name": "Megacoin", "shortcut": "MEC", "t1_enabled": "yes", @@ -452,7 +452,7 @@ "Github": "https://github.com/monacoinproject/monacoin", "Homepage": "https://monacoin.org" }, - "marketcap_usd": 30357239, + "marketcap_usd": 31577688, "name": "Monacoin", "shortcut": "MONA", "t1_enabled": "yes", @@ -470,7 +470,7 @@ "Github": "https://github.com/muecoin/MUECore", "Homepage": "https://www.monetaryunit.org" }, - "marketcap_usd": 1947466, + "marketcap_usd": 2461134, "name": "MonetaryUnit", "shortcut": "MUE", "t1_enabled": "yes", @@ -483,11 +483,11 @@ "Github": "https://github.com/nixplatform/nixcore", "Homepage": "https://nixplatform.io" }, - "marketcap_usd": 6793822, + "marketcap_usd": 8340249, "name": "NIX", "shortcut": "NIX", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "coin", "wallet": [ { @@ -505,7 +505,7 @@ "Github": "https://github.com/namecoin/namecoin-core", "Homepage": "https://namecoin.org" }, - "marketcap_usd": 9186316, + "marketcap_usd": 10263253, "name": "Namecoin", "shortcut": "NMC", "t1_enabled": "yes", @@ -522,12 +522,25 @@ } ] }, + "bitcoin:PIVX": { + "links": { + "Github": "https://github.com/PIVX-Project/PIVX", + "Homepage": "https://pivx.org" + }, + "marketcap_usd": 43664266, + "name": "PIVX", + "shortcut": "PIVX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin", + "wallet": [] + }, "bitcoin:PTC": { "links": { "Github": "https://github.com/FundacionPesetacoin/PesetacoinCore", "Homepage": "https://pesetacoin.info" }, - "marketcap_usd": 419788, + "marketcap_usd": 428680, "name": "Pesetacoin", "shortcut": "PTC", "t1_enabled": "yes", @@ -540,7 +553,7 @@ "Github": "https://github.com/RavenProject/Ravencoin", "Homepage": "https://ravencoin.org" }, - "marketcap_usd": 30475814, + "marketcap_usd": 78861883, "name": "Ravencoin", "shortcut": "RVN", "t1_enabled": "yes", @@ -551,22 +564,27 @@ "bitcoin:SMART": { "links": { "Github": "https://github.com/SmartCash/Core-Smart", - "Homepage": "https://smarcash.cc" + "Homepage": "https://smartcash.cc" }, - "marketcap_usd": 9526918, + "marketcap_usd": 16228525, "name": "SmartCash", "shortcut": "SMART", "t1_enabled": "yes", "t2_enabled": "yes", "type": "coin", - "wallet": [] + "wallet": [ + { + "name": "Electrum-SMART", + "url": "https://github.com/smartcash/electrum-smart" + } + ] }, "bitcoin:VIA": { "links": { "Github": "https://github.com/viacoin", "Homepage": "https://viacoin.org" }, - "marketcap_usd": 6529458, + "marketcap_usd": 8364171, "name": "Viacoin", "shortcut": "VIA", "t1_enabled": "yes", @@ -584,7 +602,7 @@ "Github": "https://github.com/vertcoin-project/vertcoin-core", "Homepage": "https://vertcoin.org" }, - "marketcap_usd": 17685970, + "marketcap_usd": 18858598, "name": "Vertcoin", "shortcut": "VTC", "t1_enabled": "yes", @@ -602,7 +620,7 @@ "Github": "https://github.com/myriadcoin/myriadcoin", "Homepage": "https://www.myriadcoin.org" }, - "marketcap_usd": 1843609, + "marketcap_usd": 2118062, "name": "Myriad", "shortcut": "XMY", "t1_enabled": "yes", @@ -610,12 +628,38 @@ "type": "coin", "wallet": [] }, + "bitcoin:XPM": { + "links": { + "Github": "https://github.com/primecoin/primecoin", + "Homepage": "https://primecoin.io" + }, + "marketcap_usd": 3603098, + "name": "Primecoin", + "shortcut": "XPM", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin", + "wallet": [] + }, + "bitcoin:XSN": { + "links": { + "Github": "https://github.com/X9Developers/XSN", + "Homepage": "https://stakenet.io" + }, + "marketcap_usd": 7809141, + "name": "Stakenet", + "shortcut": "XSN", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin", + "wallet": [] + }, "bitcoin:XZC": { "links": { "Github": "https://github.com/zcoinofficial/zcoin", "Homepage": "https://zcoin.io" }, - "marketcap_usd": 30465005, + "marketcap_usd": 39370736, "name": "Zcoin", "shortcut": "XZC", "t1_enabled": "yes", @@ -632,12 +676,25 @@ } ] }, + "bitcoin:ZCL": { + "links": { + "Github": "https://github.com/ZclassicCommunity", + "Homepage": "https://zclassic.org" + }, + "marketcap_usd": 6151644, + "name": "ZClassic", + "shortcut": "ZCL", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin", + "wallet": [] + }, "bitcoin:ZEC": { "links": { "Github": "https://github.com/zcash/zcash", "Homepage": "https://z.cash" }, - "marketcap_usd": 275315374, + "marketcap_usd": 305690660, "name": "Zcash", "shortcut": "ZEC", "t1_enabled": "yes", @@ -655,7 +712,7 @@ "Github": "https://github.com/ZencashOfficial/zen", "Homepage": "https://zencash.com" }, - "marketcap_usd": 22623728, + "marketcap_usd": 32457048, "name": "Zencash", "shortcut": "ZEN", "t1_enabled": "no", @@ -775,7 +832,7 @@ "Github": "https://github.com/HurifyPlatform", "Homepage": "https://hurify.co/" }, - "marketcap_usd": 57014, + "marketcap_usd": 96167, "name": "$Hurify Token", "network": "eth", "shortcut": "$HUR", @@ -829,7 +886,7 @@ "links": { "Homepage": "https://0xbitcoin.org/" }, - "marketcap_usd": 529608, + "marketcap_usd": 892370, "name": "0xBitcoin", "network": "eth", "shortcut": "0xBTC", @@ -851,12 +908,40 @@ } ] }, + "erc20:eth:1SG": { + "address": "0x0F72714B35a366285Df85886A2eE174601292A17", + "links": { + "Github": "https://github.com/MarsBlockchain/1sg-contract", + "Homepage": "https://www.1.sg" + }, + "marketcap_usd": 0, + "name": "1SG", + "network": "eth", + "shortcut": "1SG", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, "erc20:eth:1ST": { "address": "0xAf30D2a7E90d7DC361c8C4585e9BB7D2F6f15bc7", "links": { "Homepage": "https://firstblood.io" }, - "marketcap_usd": 2318272, + "marketcap_usd": 3215152, "name": "FirstBlood", "network": "eth", "shortcut": "1ST", @@ -883,8 +968,8 @@ "links": { "Homepage": "https://ico.1worldonline.com" }, - "marketcap_usd": 462951, - "name": "1WO", + "marketcap_usd": 331047, + "name": "1World", "network": "eth", "shortcut": "1WO", "t1_enabled": "yes", @@ -969,7 +1054,7 @@ "name": "ABBC Cash", "network": "eth", "shortcut": "ABCH", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -992,7 +1077,7 @@ "links": { "Homepage": "https://www.arcblock.io" }, - "marketcap_usd": 6187321, + "marketcap_usd": 11457477, "name": "ArcBlock Token", "network": "eth", "shortcut": "ABT", @@ -1020,8 +1105,8 @@ "Github": "https://github.com/theabyssportal", "Homepage": "https://www.theabyss.com" }, - "marketcap_usd": 1123662, - "name": "ABYSS", + "marketcap_usd": 1481161, + "name": "The Abyss", "network": "eth", "shortcut": "ABYSS", "t1_enabled": "yes", @@ -1074,11 +1159,11 @@ "links": { "Homepage": "https://tokenstars.com/en/ace" }, - "marketcap_usd": 158040, + "marketcap_usd": 138751, "name": "ACE (TokenStars)", "network": "eth", "shortcut": "ACE", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -1101,11 +1186,11 @@ "links": { "Homepage": "https://adbank.network" }, - "marketcap_usd": 526650, + "marketcap_usd": 1278776, "name": "adbank", "network": "eth", "shortcut": "ADB", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -1128,7 +1213,7 @@ "links": { "Homepage": "https://adhive.tv" }, - "marketcap_usd": 242089, + "marketcap_usd": 279672, "name": "AdHive Token", "network": "eth", "shortcut": "ADH", @@ -1156,7 +1241,7 @@ "Github": "https://github.com/aditus", "Homepage": "https://aditus.net" }, - "marketcap_usd": 174096, + "marketcap_usd": 220032, "name": "Aditus", "network": "eth", "shortcut": "ADI", @@ -1184,7 +1269,7 @@ "Github": "https://github.com/adelecosystem", "Homepage": "https://adel.io" }, - "marketcap_usd": 330704, + "marketcap_usd": 243744, "name": "Adelphoi", "network": "eth", "shortcut": "ADL", @@ -1211,7 +1296,7 @@ "links": { "Homepage": "https://adshares.net" }, - "marketcap_usd": 950278, + "marketcap_usd": 528350, "name": "AdShares", "network": "eth", "shortcut": "ADST", @@ -1239,7 +1324,7 @@ "Github": "https://github.com/adchain", "Homepage": "https://adtoken.com" }, - "marketcap_usd": 3584125, + "marketcap_usd": 3742647, "name": "AdToken", "network": "eth", "shortcut": "ADT", @@ -1267,7 +1352,7 @@ "Github": "https://github.com/AdExBlockchain", "Homepage": "https://www.adex.network" }, - "marketcap_usd": 7208111, + "marketcap_usd": 9161905, "name": "AdEx Network", "network": "eth", "shortcut": "ADX", @@ -1295,7 +1380,7 @@ "Github": "https://github.com/aeternity", "Homepage": "https://www.aeternity.com/" }, - "marketcap_usd": 85195516, + "marketcap_usd": 0, "name": "aeternity", "network": "eth", "shortcut": "AE", @@ -1327,7 +1412,7 @@ "name": "Africahead Ipparts", "network": "eth", "shortcut": "AFA", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -1351,7 +1436,7 @@ "Github": "https://github.com/singnet/singnet", "Homepage": "https://singularitynet.io" }, - "marketcap_usd": 21418401, + "marketcap_usd": 24624469, "name": "SingularityNET", "network": "eth", "shortcut": "AGI", @@ -1378,11 +1463,11 @@ "links": { "Homepage": "https://polynetwork.org" }, - "marketcap_usd": 98, + "marketcap_usd": 425, "name": "POLY AI", "network": "eth", "shortcut": "AI", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -1405,11 +1490,11 @@ "links": { "Homepage": "https://www.aidcoin.co" }, - "marketcap_usd": 1585247, + "marketcap_usd": 1971845, "name": "AidCoin", "network": "eth", "shortcut": "AID", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -1488,7 +1573,7 @@ "Github": "https://github.com/AigangNetwork", "Homepage": "https://aigang.network/" }, - "marketcap_usd": 111686, + "marketcap_usd": 142609, "name": "Aigang", "network": "eth", "shortcut": "AIX", @@ -1570,11 +1655,11 @@ "links": { "Homepage": "http://ailink.in" }, - "marketcap_usd": 646309, + "marketcap_usd": 168599, "name": "AiLink Token", "network": "eth", "shortcut": "ALI", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -1598,7 +1683,7 @@ "Github": "https://github.com/AlisProject", "Homepage": "https://alismedia.jp" }, - "marketcap_usd": 664489, + "marketcap_usd": 697613, "name": "ALIS Token", "network": "eth", "shortcut": "ALIS", @@ -1652,11 +1737,11 @@ "links": { "Homepage": "https://alax.io" }, - "marketcap_usd": 859460, + "marketcap_usd": 1656465, "name": "ALAX", "network": "eth", "shortcut": "ALX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -1680,7 +1765,7 @@ "Github": "https://github.com/ambrosus", "Homepage": "https://ambrosus.com/index.html" }, - "marketcap_usd": 7032936, + "marketcap_usd": 7860787, "name": "Amber Token", "network": "eth", "shortcut": "AMB", @@ -1736,7 +1821,7 @@ "Github": "https://github.com/amlt-by-coinfirm", "Homepage": "https://amlt.coinfirm.io/" }, - "marketcap_usd": 1663336, + "marketcap_usd": 3337061, "name": "AMLT", "network": "eth", "shortcut": "AMLT", @@ -1764,7 +1849,7 @@ "Github": "https://github.com/amontech", "Homepage": "https://amon.tech" }, - "marketcap_usd": 145287, + "marketcap_usd": 256975, "name": "Amon", "network": "eth", "shortcut": "AMN", @@ -1792,7 +1877,7 @@ "Github": "https://github.com/AMO-Project/", "Homepage": "https://amo.foundation" }, - "marketcap_usd": 4982402, + "marketcap_usd": 4742374, "name": "AMO Coin", "network": "eth", "shortcut": "AMO", @@ -1844,10 +1929,10 @@ "erc20:eth:ANT": { "address": "0x960b236A07cf122663c4303350609A66A7B288C0", "links": { - "Homepage": "https://aragon.one/network" + "Homepage": "https://aragon.org" }, - "marketcap_usd": 10323477, - "name": "ANT", + "marketcap_usd": 12515149, + "name": "Aragon", "network": "eth", "shortcut": "ANT", "t1_enabled": "yes", @@ -1873,11 +1958,11 @@ "links": { "Homepage": "https://www.aurorachain.io" }, - "marketcap_usd": 45007164, + "marketcap_usd": 63276573, "name": "Aurora", "network": "eth", "shortcut": "AOA", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -1901,7 +1986,7 @@ "Github": "https://github.com/Oxchild/crowdsale", "Homepage": "https://apisplatform.io" }, - "marketcap_usd": 7694668, + "marketcap_usd": 11735031, "name": "APIS", "network": "eth", "shortcut": "APIS", @@ -1929,7 +2014,7 @@ "Github": "https://github.com/Aptoide/AppCoins-ethereumj", "Homepage": "https://appcoins.io" }, - "marketcap_usd": 4086303, + "marketcap_usd": 7123810, "name": "AppCoins", "network": "eth", "shortcut": "APPC", @@ -2011,7 +2096,7 @@ "links": { "Homepage": "https://www.arbitragect.com" }, - "marketcap_usd": 60189, + "marketcap_usd": 70866, "name": "ArbitrageCT", "network": "eth", "shortcut": "ARCT", @@ -2066,7 +2151,7 @@ "links": { "Homepage": "https://aeron.aero" }, - "marketcap_usd": 4580649, + "marketcap_usd": 5617607, "name": "Aeron", "network": "eth", "shortcut": "ARN", @@ -2091,10 +2176,10 @@ "erc20:eth:ART": { "address": "0xfec0cF7fE078a500abf15F1284958F22049c2C7e", "links": { - "Homepage": "https://cofound.it/en/projects/maecenas" + "Homepage": "http://www.maecenas.co" }, - "marketcap_usd": 935792, - "name": "ART", + "marketcap_usd": 780389, + "name": "Maecenas", "network": "eth", "shortcut": "ART", "t1_enabled": "yes", @@ -2176,11 +2261,11 @@ "links": { "Homepage": "https://www.blockarray.com" }, - "marketcap_usd": 676614, + "marketcap_usd": 843558, "name": "Block Array", "network": "eth", "shortcut": "ARY", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -2203,7 +2288,7 @@ "links": { "Homepage": "https://airswap.io" }, - "marketcap_usd": 4132804, + "marketcap_usd": 5392900, "name": "Airswap", "network": "eth", "shortcut": "AST", @@ -2230,8 +2315,8 @@ "links": { "Homepage": "https://atlant.io" }, - "marketcap_usd": 635358, - "name": "ATL", + "marketcap_usd": 1464569, + "name": "ATLANT", "network": "eth", "shortcut": "ATL", "t1_enabled": "yes", @@ -2257,11 +2342,11 @@ "links": { "Homepage": "https://www.atmchain.io" }, - "marketcap_usd": 158578, + "marketcap_usd": 380094, "name": "ATMChain", "network": "eth", "shortcut": "ATM", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -2285,7 +2370,7 @@ "Github": "https://github.com/atonomi", "Homepage": "https://atonomi.io" }, - "marketcap_usd": 470565, + "marketcap_usd": 418344, "name": "Atonomi", "network": "eth", "shortcut": "ATMI", @@ -2367,11 +2452,11 @@ "links": { "Homepage": "https://www.aston.company" }, - "marketcap_usd": 4030952, + "marketcap_usd": 11040185, "name": "Aston", "network": "eth", "shortcut": "ATX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -2394,11 +2479,11 @@ "links": { "Homepage": "https://auctus.org" }, - "marketcap_usd": 322319, + "marketcap_usd": 402817, "name": "Auctus", "network": "eth", "shortcut": "AUC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -2421,11 +2506,11 @@ "links": { "Homepage": "https://auroradao.com" }, - "marketcap_usd": 2912535, + "marketcap_usd": 4250424, "name": "Aurora DAO", "network": "eth", "shortcut": "AURA", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -2448,11 +2533,11 @@ "links": { "Homepage": "https://cubeint.io" }, - "marketcap_usd": 15027589, + "marketcap_usd": 16036034, "name": "Cube", "network": "eth", "shortcut": "AUTO", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -2503,8 +2588,8 @@ "links": { "Homepage": "https://aventus.io" }, - "marketcap_usd": 1006345, - "name": "AVT", + "marketcap_usd": 1103886, + "name": "Aventus", "network": "eth", "shortcut": "AVT", "t1_enabled": "yes", @@ -2586,7 +2671,7 @@ "Github": "https://www.github.com/axpire", "Homepage": "https://www.axpire.io" }, - "marketcap_usd": 1303503, + "marketcap_usd": 1398281, "name": "aXpire", "network": "eth", "shortcut": "AXPR", @@ -2613,11 +2698,11 @@ "links": { "Homepage": "https://www.b2bx.exchange" }, - "marketcap_usd": 3288736, + "marketcap_usd": 3305335, "name": "B2BX", "network": "eth", "shortcut": "B2BX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -2640,11 +2725,11 @@ "links": { "Homepage": "https://www.banca.world" }, - "marketcap_usd": 1289690, + "marketcap_usd": 1374877, "name": "Banca", "network": "eth", "shortcut": "BANCA", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -2694,7 +2779,7 @@ "links": { "Homepage": "https://basicattentiontoken.org" }, - "marketcap_usd": 152454297, + "marketcap_usd": 216210708, "name": "Basic Attention Token", "network": "eth", "shortcut": "BAT", @@ -2721,11 +2806,11 @@ "links": { "Homepage": "https://getbabb.com" }, - "marketcap_usd": 6760436, + "marketcap_usd": 4836148, "name": "BABB", "network": "eth", "shortcut": "BAX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -2748,11 +2833,11 @@ "links": { "Homepage": "http://bbcoin.tradove.com" }, - "marketcap_usd": 4502751, + "marketcap_usd": 1134992, "name": "TraDove B2BCoin", "network": "eth", "shortcut": "BBC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -2776,7 +2861,7 @@ "Github": "https://github.com/brickblock-io", "Homepage": "https://www.brickblock.io/" }, - "marketcap_usd": 1477732, + "marketcap_usd": 1287744, "name": "BRICKBLOCK TOKEN", "network": "eth", "shortcut": "BBK", @@ -2803,11 +2888,11 @@ "links": { "Homepage": "http://www.banyanbbt.org" }, - "marketcap_usd": 494240, + "marketcap_usd": 568776, "name": "Banyan Network", "network": "eth", "shortcut": "BBN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -2830,11 +2915,11 @@ "links": { "Homepage": "https://bigbom.com" }, - "marketcap_usd": 226493, + "marketcap_usd": 312954, "name": "Bigbom", "network": "eth", "shortcut": "BBO", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -2857,11 +2942,11 @@ "links": { "Homepage": "https://block-chain.com" }, - "marketcap_usd": 30486, + "marketcap_usd": 43445, "name": "Block-Chain.com", "network": "eth", "shortcut": "BC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -2941,7 +3026,7 @@ "Github": "https://github.com/VinceBCD/BCDiploma", "Homepage": "https://www.bcdiploma.com" }, - "marketcap_usd": 130755, + "marketcap_usd": 313150, "name": "Blockchain Certified Data Token", "network": "eth", "shortcut": "BCDT", @@ -2996,8 +3081,8 @@ "Github": "https://github.com/blockmason", "Homepage": "https://blockmason.io" }, - "marketcap_usd": 3358766, - "name": "BCPT", + "marketcap_usd": 5412062, + "name": "BlockMason Credit Protocol Token", "network": "eth", "shortcut": "BCPT", "t1_enabled": "yes", @@ -3024,7 +3109,7 @@ "Github": "https://github.com/bitcv", "Homepage": "https://bitcv.one/" }, - "marketcap_usd": 6861721, + "marketcap_usd": 18485335, "name": "BitCapitalVendor Token", "network": "eth", "shortcut": "BCV", @@ -3052,7 +3137,7 @@ "Github": "https://github.com/bitdegree", "Homepage": "https://bitdegree.org" }, - "marketcap_usd": 851808, + "marketcap_usd": 872104, "name": "BitDegree Token", "network": "eth", "shortcut": "BDG", @@ -3080,7 +3165,7 @@ "Github": "https://github.com/thebeetoken", "Homepage": "https://www.beetoken.com" }, - "marketcap_usd": 710995, + "marketcap_usd": 707793, "name": "Bee Token", "network": "eth", "shortcut": "BEE", @@ -3108,7 +3193,7 @@ "Github": "https://github.com/Rentberry", "Homepage": "https://rentberry.com" }, - "marketcap_usd": 574573, + "marketcap_usd": 527695, "name": "Berry", "network": "eth", "shortcut": "BERRY", @@ -3136,7 +3221,7 @@ "Github": "https://github.com/daocasino", "Homepage": "https://dao.casino" }, - "marketcap_usd": 1387167, + "marketcap_usd": 1809498, "name": "DAO.Casino", "network": "eth", "shortcut": "BET", @@ -3164,7 +3249,7 @@ "Github": "https://github.com/bethereumproject", "Homepage": "https://www.bethereum.com/" }, - "marketcap_usd": 336408, + "marketcap_usd": 472881, "name": "Bethereum", "network": "eth", "shortcut": "BETHER", @@ -3192,8 +3277,8 @@ "Github": "https://github.com/betterbetting", "Homepage": "https://www.betterbetting.org" }, - "marketcap_usd": 505814, - "name": "BETR", + "marketcap_usd": 514905, + "name": "BetterBetting", "network": "eth", "shortcut": "BETR", "t1_enabled": "yes", @@ -3219,12 +3304,12 @@ "links": { "Homepage": "https://bezop.io" }, - "marketcap_usd": 1075029, + "marketcap_usd": 903374, "name": "Bezop", "network": "eth", "shortcut": "BEZ", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -3246,11 +3331,11 @@ "links": { "Homepage": "https://bhpcash.io/bhpc/index.html" }, - "marketcap_usd": 24295517, + "marketcap_usd": 26924679, "name": "BHPCash", "network": "eth", "shortcut": "BHPC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -3277,7 +3362,7 @@ "name": "BETHER", "network": "eth", "shortcut": "BHR", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -3304,8 +3389,8 @@ "name": "BlockEstate Investment Token", "network": "eth", "shortcut": "BIT", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -3332,7 +3417,7 @@ "name": "BitCar Token", "network": "eth", "shortcut": "BITCAR", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -3355,11 +3440,11 @@ "links": { "Homepage": "https://www.bibox.com" }, - "marketcap_usd": 13292381, + "marketcap_usd": 20303721, "name": "Bibox Token", "network": "eth", "shortcut": "BIX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -3437,7 +3522,7 @@ "Github": "https://github.com/BankEx", "Homepage": "https://bankex.com/" }, - "marketcap_usd": 1131433, + "marketcap_usd": 1294004, "name": "BANKEX", "network": "eth", "shortcut": "BKX", @@ -3464,11 +3549,11 @@ "links": { "Homepage": "http://bolenum.com" }, - "marketcap_usd": 117, + "marketcap_usd": 0, "name": "Bolenum", "network": "eth", "shortcut": "BLN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -3492,7 +3577,7 @@ "Github": "https://github.com/hellobloom", "Homepage": "https://hellobloom.io" }, - "marketcap_usd": 1313038, + "marketcap_usd": 1694564, "name": "Bloom", "network": "eth", "shortcut": "BLT", @@ -3520,7 +3605,7 @@ "Github": "https://github.com/BlueCrypto", "Homepage": "https://blueprotocol.com/" }, - "marketcap_usd": 543648, + "marketcap_usd": 907537, "name": "Ethereum Blue", "network": "eth", "shortcut": "BLUE", @@ -3602,7 +3687,7 @@ "links": { "Homepage": "https://bluzelle.com" }, - "marketcap_usd": 7590312, + "marketcap_usd": 10988357, "name": "Bluzelle", "network": "eth", "shortcut": "BLZ", @@ -3630,7 +3715,7 @@ "Github": "https://github.com/blackmoonfg", "Homepage": "https://blackmooncrypto.com" }, - "marketcap_usd": 2735737, + "marketcap_usd": 4055796, "name": "Blackmoon Crypto BMC Token", "network": "eth", "shortcut": "BMC", @@ -3685,7 +3770,7 @@ "links": { "Homepage": "https://www.bitmart.com" }, - "marketcap_usd": 1406664, + "marketcap_usd": 1517202, "name": "BitMart Token", "network": "eth", "shortcut": "BMX", @@ -3712,7 +3797,7 @@ "links": { "Homepage": "https://www.binance.com" }, - "marketcap_usd": 1126978981, + "marketcap_usd": 1897632595, "name": "Binance Coin", "network": "eth", "shortcut": "BNB", @@ -3739,11 +3824,11 @@ "links": { "Homepage": "https://www.brokerneko.com" }, - "marketcap_usd": 15556, + "marketcap_usd": 12495, "name": "BrokerNekoNetwork", "network": "eth", "shortcut": "BNN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -3767,7 +3852,7 @@ "Github": "https://github.com/bancorprotocol", "Homepage": "https://www.bancor.network/discover" }, - "marketcap_usd": 28971966, + "marketcap_usd": 33233945, "name": "Bancor", "network": "eth", "shortcut": "BNT", @@ -3794,7 +3879,7 @@ "links": { "Homepage": "https://bounty0x.io" }, - "marketcap_usd": 604555, + "marketcap_usd": 891785, "name": "Bounty0x Token", "network": "eth", "shortcut": "BNTY", @@ -3821,7 +3906,7 @@ "links": { "Homepage": "https://bobsrepair.com" }, - "marketcap_usd": 248054, + "marketcap_usd": 212936, "name": "Bob's repair", "network": "eth", "shortcut": "BOB", @@ -3848,7 +3933,7 @@ "links": { "Homepage": "https://bonpay.com" }, - "marketcap_usd": 190553, + "marketcap_usd": 189528, "name": "Bonpay", "network": "eth", "shortcut": "BON", @@ -3929,11 +4014,11 @@ "links": { "Homepage": "https://www.bouts.pro" }, - "marketcap_usd": 185075, + "marketcap_usd": 222480, "name": "BoutsPro", "network": "eth", "shortcut": "BOUTS", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -3956,11 +4041,11 @@ "links": { "Homepage": "https://www.goblockparty.com" }, - "marketcap_usd": 989650, + "marketcap_usd": 1571042, "name": "BOXX Token [Blockparty]", "network": "eth", "shortcut": "BOXX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -3984,7 +4069,7 @@ "Github": "https://github.com/Blockport/tokensale", "Homepage": "https://blockport.io" }, - "marketcap_usd": 5466368, + "marketcap_usd": 6844083, "name": "Blockport Token", "network": "eth", "shortcut": "BPT", @@ -4011,7 +4096,7 @@ "links": { "Homepage": "https://www.bitquence.com" }, - "marketcap_usd": 12809697, + "marketcap_usd": 14340413, "name": "Bitquence", "network": "eth", "shortcut": "BQX", @@ -4038,8 +4123,8 @@ "links": { "Homepage": "http://bro-consortium.io" }, - "marketcap_usd": 20408, - "name": "BRAT", + "marketcap_usd": 12463, + "name": "BROTHER", "network": "eth", "shortcut": "BRAT", "t1_enabled": "yes", @@ -4066,7 +4151,7 @@ "Github": "https://github.com/breadwallet", "Homepage": "https://token.breadapp.com/en" }, - "marketcap_usd": 16501545, + "marketcap_usd": 19692339, "name": "Bread", "network": "eth", "shortcut": "BRD", @@ -4097,7 +4182,7 @@ "name": "Berlin Coin", "network": "eth", "shortcut": "BRLN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -4202,7 +4287,7 @@ "links": { "Homepage": "http://btclite.org" }, - "marketcap_usd": 0, + "marketcap_usd": 133285, "name": "BTC Lite", "network": "eth", "shortcut": "BTCL", @@ -4229,11 +4314,11 @@ "links": { "Homepage": "https://www.bitcoinone.io" }, - "marketcap_usd": 4423, + "marketcap_usd": 0, "name": "BitCoin One", "network": "eth", "shortcut": "BTCONE", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -4340,7 +4425,7 @@ "Github": "https://github.com/bitcoin-token", "Homepage": "https://btk.community" }, - "marketcap_usd": 128767, + "marketcap_usd": 186192, "name": "Bitcoin Token", "network": "eth", "shortcut": "BTK", @@ -4395,11 +4480,11 @@ "links": { "Homepage": "https://www.bottos.org" }, - "marketcap_usd": 5894278, + "marketcap_usd": 3891477, "name": "Bottos", "network": "eth", "shortcut": "BTO", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -4449,11 +4534,11 @@ "links": { "Homepage": "https://bitether.org" }, - "marketcap_usd": 58024, + "marketcap_usd": 135005, "name": "Bitether", "network": "eth", "shortcut": "BTR", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -4476,11 +4561,11 @@ "links": { "Homepage": "https://biotron.io" }, - "marketcap_usd": 263947, + "marketcap_usd": 125287, "name": "Biotron", "network": "eth", "shortcut": "BTRN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -4531,7 +4616,7 @@ "links": { "Homepage": "https://blocktrade.com/" }, - "marketcap_usd": 1202347, + "marketcap_usd": 1368022, "name": "Blocktrade.com", "network": "eth", "shortcut": "BTTX", @@ -4559,11 +4644,11 @@ "Github": "https://github.com/btuprotocol", "Homepage": "https://btu-protocol.com" }, - "marketcap_usd": 0, + "marketcap_usd": 3175500, "name": "BTU Protocol", "network": "eth", "shortcut": "BTU", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -4613,11 +4698,11 @@ "links": { "Homepage": "https://www.bluewhale.foundation" }, - "marketcap_usd": 2917565, + "marketcap_usd": 2907988, "name": "Blue Whale Token", "network": "eth", "shortcut": "BWX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -4640,11 +4725,11 @@ "links": { "Homepage": "https://www.bitz.com" }, - "marketcap_usd": 2995511, + "marketcap_usd": 3488799, "name": "Bit-Z Token", "network": "eth", "shortcut": "BZ", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -4667,11 +4752,11 @@ "links": { "Homepage": "https://bezant.io" }, - "marketcap_usd": 10297616, + "marketcap_usd": 13503798, "name": "Bezant", "network": "eth", "shortcut": "BZNT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -4695,7 +4780,7 @@ "Github": "https://github.com/cryptotwenty", "Homepage": "https://crypto20.com" }, - "marketcap_usd": 13643745, + "marketcap_usd": 15814372, "name": "Crypto20's Token", "network": "eth", "shortcut": "C20", @@ -4722,7 +4807,7 @@ "links": { "Homepage": "https://www.carboneum.io" }, - "marketcap_usd": 408126, + "marketcap_usd": 449747, "name": "Carboneum", "network": "eth", "shortcut": "C8", @@ -4749,7 +4834,7 @@ "links": { "Homepage": "https://change-bank.com" }, - "marketcap_usd": 2640188, + "marketcap_usd": 3090954, "name": "Change Bank", "network": "eth", "shortcut": "CAG", @@ -4776,8 +4861,8 @@ "links": { "Homepage": "https://canya.io" }, - "marketcap_usd": 698024, - "name": "CAN", + "marketcap_usd": 811696, + "name": "CanYaCoin", "network": "eth", "shortcut": "CAN", "t1_enabled": "yes", @@ -4803,11 +4888,11 @@ "links": { "Homepage": "https://cappasity.com/tech/" }, - "marketcap_usd": 867600, + "marketcap_usd": 1434579, "name": "Cappasity", "network": "eth", "shortcut": "CAPP", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -4911,7 +4996,7 @@ "links": { "Homepage": "https://cashaa.com" }, - "marketcap_usd": 4741221, + "marketcap_usd": 3942723, "name": "Cashaa", "network": "eth", "shortcut": "CAS", @@ -4938,8 +5023,8 @@ "links": { "Homepage": "https://www.bitclave.com" }, - "marketcap_usd": 221795, - "name": "CAT (BitClave)", + "marketcap_usd": 312456, + "name": "BitClave", "network": "eth", "shortcut": "CAT (BitClave)", "t1_enabled": "yes", @@ -4960,15 +5045,15 @@ } ] }, - "erc20:eth:CAT (Blockcat)": { + "erc20:eth:CAT (BlockCAT)": { "address": "0x56ba2Ee7890461f463F7be02aAC3099f6d5811A8", "links": { "Homepage": "https://blockcat.io" }, - "marketcap_usd": 633472, - "name": "CAT (Blockcat)", + "marketcap_usd": 503788, + "name": "BlockCAT", "network": "eth", - "shortcut": "CAT (Blockcat)", + "shortcut": "CAT (BlockCAT)", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -5019,11 +5104,11 @@ "links": { "Homepage": "https://coin.cashbet.com" }, - "marketcap_usd": 780205, + "marketcap_usd": 939550, "name": "CashBet Coin", "network": "eth", "shortcut": "CBC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -5074,11 +5159,11 @@ "links": { "Homepage": "https://www.commerceblock.com" }, - "marketcap_usd": 2247499, + "marketcap_usd": 2786118, "name": "CommerceBlock", "network": "eth", "shortcut": "CBT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -5182,11 +5267,11 @@ "links": { "Homepage": "http://clippercoin.com" }, - "marketcap_usd": 3262085, + "marketcap_usd": 3878981, "name": "Clipper Coin", "network": "eth", "shortcut": "CCCX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -5237,11 +5322,11 @@ "links": { "Homepage": "https://ccore.io" }, - "marketcap_usd": 43409, + "marketcap_usd": 34397, "name": "Ccore", "network": "eth", "shortcut": "CCO", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -5292,11 +5377,11 @@ "links": { "Homepage": "http://crystal-clear.io" }, - "marketcap_usd": 53505, + "marketcap_usd": 32970, "name": "Crystal Clear Token", "network": "eth", "shortcut": "CCT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -5347,7 +5432,7 @@ "links": { "Homepage": "https://www.coindash.io" }, - "marketcap_usd": 4603939, + "marketcap_usd": 5404714, "name": "CoinDash", "network": "eth", "shortcut": "CDT", @@ -5374,7 +5459,7 @@ "links": { "Homepage": "https://www.ceek.com/" }, - "marketcap_usd": 2330271, + "marketcap_usd": 1868929, "name": "CEEK VR Token", "network": "eth", "shortcut": "CEEK", @@ -5401,11 +5486,11 @@ "links": { "Homepage": "https://www.centrality.ai" }, - "marketcap_usd": 20809094, + "marketcap_usd": 19726905, "name": "Centrality", "network": "eth", "shortcut": "CENNZ", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -5538,11 +5623,11 @@ "links": { "Homepage": "https://coinpoker.com" }, - "marketcap_usd": 600748, + "marketcap_usd": 621644, "name": "CoinPoker", "network": "eth", "shortcut": "CHP", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -5565,8 +5650,8 @@ "links": { "Homepage": "https://swissborg.com" }, - "marketcap_usd": 3252417, - "name": "CHSB", + "marketcap_usd": 4895312, + "name": "SwissBorg", "network": "eth", "shortcut": "CHSB", "t1_enabled": "yes", @@ -5592,11 +5677,11 @@ "links": { "Homepage": "https://weown.com" }, - "marketcap_usd": 13763027, + "marketcap_usd": 16626370, "name": "Own", "network": "eth", "shortcut": "CHX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -5624,8 +5709,8 @@ "name": "CRYPTORIYA", "network": "eth", "shortcut": "CIYA", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -5647,11 +5732,11 @@ "links": { "Homepage": "https://www.connectjob.io" }, - "marketcap_usd": 24261, + "marketcap_usd": 17451, "name": "ConnectJob", "network": "eth", "shortcut": "CJT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -5701,11 +5786,11 @@ "links": { "Homepage": "https://www.coinlancer.io" }, - "marketcap_usd": 207036, + "marketcap_usd": 279054, "name": "Coinlancer", "network": "eth", "shortcut": "CL", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -5729,7 +5814,7 @@ "Github": "https://github.com/Cloudbric-Project", "Homepage": "https://www.cloudbric.io/" }, - "marketcap_usd": 0, + "marketcap_usd": 1461517, "name": "Cloudbric", "network": "eth", "shortcut": "CLB", @@ -5785,7 +5870,7 @@ "Github": "https://github.com/colucom/CLN-solidity", "Homepage": "https://cln.network" }, - "marketcap_usd": 442135, + "marketcap_usd": 690504, "name": "ColuLocalNetwork", "network": "eth", "shortcut": "CLN", @@ -5893,11 +5978,11 @@ "links": { "Homepage": "https://crowdmachine.com" }, - "marketcap_usd": 943902, + "marketcap_usd": 842339, "name": "Crowd Machine Compute Token", "network": "eth", "shortcut": "CMCT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -5975,7 +6060,7 @@ "links": { "Homepage": "https://cindicator.com" }, - "marketcap_usd": 14324073, + "marketcap_usd": 18737701, "name": "Cindicator", "network": "eth", "shortcut": "CND", @@ -6002,11 +6087,11 @@ "links": { "Homepage": "https://cnntoken.io" }, - "marketcap_usd": 4012033, + "marketcap_usd": 4912238, "name": "Content Neutrality Network", "network": "eth", "shortcut": "CNN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -6085,7 +6170,7 @@ "Github": "https://github.com/cobinhood", "Homepage": "https://cobinhood.com" }, - "marketcap_usd": 3676345, + "marketcap_usd": 4073790, "name": "Cobinhood Token", "network": "eth", "shortcut": "COB", @@ -6113,7 +6198,7 @@ "Github": "https://github.com/coinfi", "Homepage": "https://www.coinfi.com" }, - "marketcap_usd": 628299, + "marketcap_usd": 547602, "name": "CoinFi Token", "network": "eth", "shortcut": "COFI", @@ -6195,11 +6280,11 @@ "links": { "Homepage": "https://cosmochain.io" }, - "marketcap_usd": 6836951, + "marketcap_usd": 16084075, "name": "Cosmo Coin", "network": "eth", "shortcut": "COSM", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -6222,7 +6307,7 @@ "links": { "Homepage": "https://covesting.io/" }, - "marketcap_usd": 2244323, + "marketcap_usd": 2060464, "name": "Covesting", "network": "eth", "shortcut": "COV", @@ -6249,11 +6334,11 @@ "links": { "Homepage": "https://cryptopay.me" }, - "marketcap_usd": 860745, + "marketcap_usd": 1149306, "name": "Cryptopay", "network": "eth", "shortcut": "CPAY", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -6305,11 +6390,11 @@ "Github": "https://github.com/Cpollo", "Homepage": "https://cpollo.info/" }, - "marketcap_usd": 304506, + "marketcap_usd": 141690, "name": "CPOLLO", "network": "eth", "shortcut": "CPLO", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -6333,7 +6418,7 @@ "Github": "https://github.com/aditus", "Homepage": "https://copytrack.io" }, - "marketcap_usd": 1254951, + "marketcap_usd": 1113181, "name": "COPYTRACK", "network": "eth", "shortcut": "CPY", @@ -6388,7 +6473,7 @@ "links": { "Homepage": "https://www.creditbit.org" }, - "marketcap_usd": 95462, + "marketcap_usd": 139546, "name": "Creditbit", "network": "eth", "shortcut": "CRB", @@ -6419,7 +6504,7 @@ "name": "Cruisebit", "network": "eth", "shortcut": "CRBT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -6442,11 +6527,11 @@ "links": { "Homepage": "https://crycash.io" }, - "marketcap_usd": 351945, + "marketcap_usd": 201085, "name": "CryCash", "network": "eth", "shortcut": "CRC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -6468,10 +6553,10 @@ "address": "0x672a1AD4f667FB18A333Af13667aa0Af1F5b5bDD", "links": { "Github": "https://github.com/verifyas", - "Homepage": "https://verify.as" + "Homepage": "https://token.verify.as" }, - "marketcap_usd": 327150, - "name": "CRED", + "marketcap_usd": 445892, + "name": "Verify", "network": "eth", "shortcut": "CRED", "t1_enabled": "yes", @@ -6497,7 +6582,7 @@ "links": { "Homepage": "https://bitbounce.io" }, - "marketcap_usd": 21923032, + "marketcap_usd": 17553888, "name": "Credo / Bitbounce", "network": "eth", "shortcut": "CREDO", @@ -6579,7 +6664,7 @@ "links": { "Homepage": "https://crypterium.io" }, - "marketcap_usd": 10002832, + "marketcap_usd": 13145671, "name": "CrypteriumToken", "network": "eth", "shortcut": "CRPT", @@ -6633,11 +6718,11 @@ "links": { "Homepage": "https://credits.com/en" }, - "marketcap_usd": 8530410, + "marketcap_usd": 9965689, "name": "Credits", "network": "eth", "shortcut": "CS", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -6660,11 +6745,11 @@ "links": { "Homepage": "https://www.bitdice.me" }, - "marketcap_usd": 2143736, + "marketcap_usd": 1884211, "name": "BitDice", "network": "eth", "shortcut": "CSNO", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -6687,11 +6772,11 @@ "links": { "Homepage": "https://cryptosolartech.org" }, - "marketcap_usd": 236638, + "marketcap_usd": 302796, "name": "Cryptosolartech", "network": "eth", "shortcut": "CST", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -6852,11 +6937,11 @@ "links": { "Homepage": "http://www.cortexlabs.ai" }, - "marketcap_usd": 15412946, + "marketcap_usd": 19107304, "name": "Cortex", "network": "eth", "shortcut": "CTXC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -6879,8 +6964,8 @@ "links": { "Homepage": "https://www.civic.com" }, - "marketcap_usd": 15817527, - "name": "CVC", + "marketcap_usd": 20545405, + "name": "Civic", "network": "eth", "shortcut": "CVC", "t1_enabled": "yes", @@ -6906,11 +6991,11 @@ "links": { "Homepage": "http://www.cybervein.org" }, - "marketcap_usd": 5133656, + "marketcap_usd": 6536741, "name": "CyberVein", "network": "eth", "shortcut": "CVT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -6962,7 +7047,7 @@ "Github": "https://github.com/cargoxio", "Homepage": "https://cargox.io" }, - "marketcap_usd": 1775312, + "marketcap_usd": 1778600, "name": "CargoX", "network": "eth", "shortcut": "CXO", @@ -6989,7 +7074,7 @@ "links": { "Homepage": "https://cyberfmradio.com" }, - "marketcap_usd": 112033, + "marketcap_usd": 93316, "name": "CyberFM", "network": "eth", "shortcut": "CYFM", @@ -7016,11 +7101,11 @@ "links": { "Homepage": "https://cybermusic.io" }, - "marketcap_usd": 48547, + "marketcap_usd": 37120, "name": "CyberMusic", "network": "eth", "shortcut": "CYMT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -7043,11 +7128,11 @@ "links": { "Homepage": "http://www.canonchain.com" }, - "marketcap_usd": 3642653, + "marketcap_usd": 5997082, "name": "CanonChain", "network": "eth", "shortcut": "CZR", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -7124,11 +7209,11 @@ "links": { "Homepage": "https://dacsee.io/#" }, - "marketcap_usd": 2318226, + "marketcap_usd": 2324098, "name": "DACSEE", "network": "eth", "shortcut": "DACS", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -7151,7 +7236,7 @@ "links": { "Homepage": "https://dadi.cloud" }, - "marketcap_usd": 2240326, + "marketcap_usd": 2729895, "name": "DADI", "network": "eth", "shortcut": "DADI", @@ -7179,11 +7264,11 @@ "Github": "https://github.com/makerdao", "Homepage": "https://makerdao.com" }, - "marketcap_usd": 76915227, + "marketcap_usd": 88786666, "name": "Dai Stablecoin v1.0", "network": "eth", "shortcut": "DAI", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -7206,7 +7291,7 @@ "links": { "Homepage": "http://www.dalecoin.org" }, - "marketcap_usd": 8948, + "marketcap_usd": 18517, "name": "DaleCoin", "network": "eth", "shortcut": "DALC", @@ -7234,7 +7319,7 @@ "Github": "https://github.com/project-daneel", "Homepage": "https://daneel.io" }, - "marketcap_usd": 259293, + "marketcap_usd": 322857, "name": "DaneelToken", "network": "eth", "shortcut": "DAN", @@ -7288,7 +7373,7 @@ "links": { "Homepage": "https://datum.org" }, - "marketcap_usd": 636561, + "marketcap_usd": 860201, "name": "Datum Token", "network": "eth", "shortcut": "DAT", @@ -7310,16 +7395,16 @@ } ] }, - "erc20:eth:DATABroker": { - "address": "0x1B5f21ee98eed48d292e8e2d3Ed82b40a9728A22", + "erc20:eth:DATA": { + "address": "0x0Cf0Ee63788A0849fE5297F3407f701E122cC023", "links": { - "Github": "https://github.com/DataBrokerDAO", - "Homepage": "https://databrokerdao.com" + "Github": "https://github.com/streamr-dev", + "Homepage": "https://www.streamr.com" }, - "marketcap_usd": 0, - "name": "DataBrokerDAO Token", + "marketcap_usd": 12651820, + "name": "Streamr DATAcoin", "network": "eth", - "shortcut": "DATABroker", + "shortcut": "DATA", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -7338,16 +7423,16 @@ } ] }, - "erc20:eth:DATACoin": { - "address": "0x0Cf0Ee63788A0849fE5297F3407f701E122cC023", + "erc20:eth:DATABroker": { + "address": "0x1B5f21ee98eed48d292e8e2d3Ed82b40a9728A22", "links": { - "Github": "https://github.com/streamr-dev", - "Homepage": "https://www.streamr.com" + "Github": "https://github.com/DataBrokerDAO", + "Homepage": "https://databrokerdao.com" }, - "marketcap_usd": 11563465, - "name": "DATACoin", + "marketcap_usd": 0, + "name": "DataBrokerDAO Token", "network": "eth", - "shortcut": "DATACoin", + "shortcut": "DATABroker", "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", @@ -7371,12 +7456,12 @@ "links": { "Homepage": "https://www.datx.co" }, - "marketcap_usd": 770422, + "marketcap_usd": 734943, "name": "DATx", "network": "eth", "shortcut": "DATX", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -7399,7 +7484,7 @@ "Github": "https://github.com/DAVFoundation", "Homepage": "https://dav.network/" }, - "marketcap_usd": 922785, + "marketcap_usd": 916031, "name": "DAV Token", "network": "eth", "shortcut": "DAV", @@ -7426,11 +7511,11 @@ "links": { "Homepage": "https://www.daex.io" }, - "marketcap_usd": 1683930, + "marketcap_usd": 1805141, "name": "DAEX", "network": "eth", "shortcut": "DAX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -7481,7 +7566,7 @@ "Github": "https://github.com/chronologic", "Homepage": "https://chronologic.network" }, - "marketcap_usd": 110326, + "marketcap_usd": 111564, "name": "ChronoLogic DAY", "network": "eth", "shortcut": "DAY", @@ -7508,11 +7593,11 @@ "links": { "Homepage": "https://www.decent.bet" }, - "marketcap_usd": 5263317, + "marketcap_usd": 6306450, "name": "DecentBet", "network": "eth", "shortcut": "DBET", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -7564,7 +7649,7 @@ "Github": "https://github.com/DistributedBanking/DCC", "Homepage": "http://dcc.finance" }, - "marketcap_usd": 3004452, + "marketcap_usd": 3276184, "name": "Distributed Credit Chain", "network": "eth", "shortcut": "DCC", @@ -7619,7 +7704,7 @@ "Github": "https://github.com/Dentacoin", "Homepage": "https://dentacoin.com" }, - "marketcap_usd": 20344598, + "marketcap_usd": 12104345, "name": "Dentacoin", "network": "eth", "shortcut": "DCN", @@ -7674,7 +7759,7 @@ "links": { "Homepage": "https://debitum.network/" }, - "marketcap_usd": 624887, + "marketcap_usd": 761643, "name": "DEBITUM", "network": "eth", "shortcut": "DEB", @@ -7729,11 +7814,11 @@ "links": { "Homepage": "https://deltachain.tech" }, - "marketcap_usd": 15940, + "marketcap_usd": 18692, "name": "DeltaChain", "network": "eth", "shortcut": "DELTA", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -7756,7 +7841,7 @@ "links": { "Homepage": "https://www.dentwireless.com" }, - "marketcap_usd": 29114554, + "marketcap_usd": 30829341, "name": "DENT", "network": "eth", "shortcut": "DENT", @@ -7783,11 +7868,11 @@ "links": { "Homepage": "https://www.dew.one" }, - "marketcap_usd": 7080603, + "marketcap_usd": 5467318, "name": "DEW", "network": "eth", "shortcut": "DEW", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -7810,11 +7895,11 @@ "links": { "Homepage": "https://www.coinbit.co.kr/" }, - "marketcap_usd": 10901160, + "marketcap_usd": 4770849, "name": "DEX", "network": "eth", "shortcut": "DEX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -7837,11 +7922,11 @@ "links": { "Homepage": "https://www.dgx.io" }, - "marketcap_usd": 30566636, + "marketcap_usd": 30533547, "name": "Digix DAO", "network": "eth", "shortcut": "DGD", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -7893,7 +7978,7 @@ "Github": "https://github.com/dragonglasscom", "Homepage": "https://dragonglass.com/" }, - "marketcap_usd": 34878, + "marketcap_usd": 95346, "name": "Dragonglass", "network": "eth", "shortcut": "DGS", @@ -7921,7 +8006,7 @@ "Github": "https://github.com/DigitexFutures", "Homepage": "https://digitexfutures.com/" }, - "marketcap_usd": 24517858, + "marketcap_usd": 43626494, "name": "DigitexFutures", "network": "eth", "shortcut": "DGTX", @@ -7949,7 +8034,7 @@ "Github": "https://github.com/DigixGlobal", "Homepage": "https://digix.global" }, - "marketcap_usd": 4302735, + "marketcap_usd": 3929974, "name": "Digix Gold Token", "network": "eth", "shortcut": "DGX", @@ -8004,7 +8089,7 @@ "links": { "Homepage": "https://etheroll.com" }, - "marketcap_usd": 1894146, + "marketcap_usd": 2402370, "name": "Etheroll", "network": "eth", "shortcut": "DICE", @@ -8031,11 +8116,11 @@ "links": { "Homepage": "https://inmediate.io" }, - "marketcap_usd": 170896, + "marketcap_usd": 414796, "name": "Digital Insurance Token", "network": "eth", "shortcut": "DIT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -8085,7 +8170,7 @@ "links": { "Homepage": "https://www.agrello.org" }, - "marketcap_usd": 9209718, + "marketcap_usd": 8607216, "name": "Agrello", "network": "eth", "shortcut": "DLT", @@ -8113,7 +8198,7 @@ "Github": "https://github.com/suntechsoft/dmarket-smartcontract", "Homepage": "https://dmarket.com" }, - "marketcap_usd": 10373950, + "marketcap_usd": 10069211, "name": "DMarket Token", "network": "eth", "shortcut": "DMT", @@ -8140,11 +8225,11 @@ "links": { "Homepage": "https://www.encrypgen.com" }, - "marketcap_usd": 2896051, + "marketcap_usd": 629427, "name": "EncrypGen", "network": "eth", "shortcut": "DNA", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -8168,7 +8253,7 @@ "Github": "https://github.com/district0x", "Homepage": "https://district0x.io" }, - "marketcap_usd": 6269319, + "marketcap_usd": 7815892, "name": "District0x Network Token", "network": "eth", "shortcut": "DNT", @@ -8223,11 +8308,11 @@ "links": { "Homepage": "https://dock.io" }, - "marketcap_usd": 3596255, + "marketcap_usd": 4484993, "name": "Dock", "network": "eth", "shortcut": "DOCK", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -8250,11 +8335,11 @@ "links": { "Homepage": "https://www.dorado.tech" }, - "marketcap_usd": 70571, + "marketcap_usd": 62240, "name": "Dorado", "network": "eth", "shortcut": "DOR", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -8277,11 +8362,11 @@ "links": { "Homepage": "https://dovu.io" }, - "marketcap_usd": 1354761, + "marketcap_usd": 1725841, "name": "Dovu", "network": "eth", "shortcut": "DOV", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -8335,8 +8420,8 @@ "name": "DREAM", "network": "eth", "shortcut": "DREAM", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -8359,7 +8444,7 @@ "Github": "https://github.com/dragonchain/dragonchain", "Homepage": "https://dragonchain.com" }, - "marketcap_usd": 15766275, + "marketcap_usd": 21782613, "name": "Dragon", "network": "eth", "shortcut": "DRGN", @@ -8386,11 +8471,11 @@ "links": { "Homepage": "https://www.dcorp.it" }, - "marketcap_usd": 228462, + "marketcap_usd": 348940, "name": "DCORP Utility", "network": "eth", "shortcut": "DRPU", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -8413,11 +8498,11 @@ "links": { "Homepage": "https://token.domraider.com" }, - "marketcap_usd": 989025, + "marketcap_usd": 1007810, "name": "DomRaider", "network": "eth", "shortcut": "DRT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -8528,8 +8613,8 @@ "name": "Dimensions Strike Token", "network": "eth", "shortcut": "DST", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -8552,7 +8637,7 @@ "Github": "https://github.com/dethertech", "Homepage": "https://dether.io" }, - "marketcap_usd": 571669, + "marketcap_usd": 645494, "name": "dether", "network": "eth", "shortcut": "DTH", @@ -8579,8 +8664,8 @@ "links": { "Homepage": "https://www.tokens.net" }, - "marketcap_usd": 12996431, - "name": "DTR", + "marketcap_usd": 20988202, + "name": "Dynamic Trading Rights", "network": "eth", "shortcut": "DTR", "t1_enabled": "yes", @@ -8606,11 +8691,11 @@ "links": { "Homepage": "https://datarius.io" }, - "marketcap_usd": 61228, + "marketcap_usd": 115871, "name": "Datarius Credit", "network": "eth", "shortcut": "DTRC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -8661,11 +8746,11 @@ "links": { "Homepage": "https://datawallet.com" }, - "marketcap_usd": 784845, + "marketcap_usd": 718134, "name": "Datawallet", "network": "eth", "shortcut": "DXT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -8743,11 +8828,11 @@ "links": { "Homepage": "https://earth-token.com" }, - "marketcap_usd": 42871, + "marketcap_usd": 26271, "name": "Earth Token", "network": "eth", "shortcut": "EARTH", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -8770,11 +8855,39 @@ "links": { "Homepage": "https://ebcoin.io" }, - "marketcap_usd": 2024367, + "marketcap_usd": 2481467, "name": "EBCoin", "network": "eth", "shortcut": "EBC", - "t1_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:EBTC": { + "address": "0xeB7C20027172E5d143fB030d50f91Cece2D1485D", + "links": { + "Github": "https://github.com/eBTCCommunityTrustToken/eBTC", + "Homepage": "https://ebitcoin.org" + }, + "marketcap_usd": 347859, + "name": "eBitcoin", + "network": "eth", + "shortcut": "EBTC", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -8851,11 +8964,11 @@ "links": { "Homepage": "https://omnitude.tech" }, - "marketcap_usd": 4139723, + "marketcap_usd": 3605209, "name": "Omnitude", "network": "eth", "shortcut": "ECOM", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -8905,7 +9018,7 @@ "links": { "Homepage": "https://edgeless.io" }, - "marketcap_usd": 14992083, + "marketcap_usd": 16113503, "name": "Edgeless", "network": "eth", "shortcut": "EDG", @@ -8932,7 +9045,7 @@ "links": { "Homepage": "https://eidoo.io" }, - "marketcap_usd": 19226853, + "marketcap_usd": 22825494, "name": "Eidoo", "network": "eth", "shortcut": "EDO", @@ -8960,7 +9073,7 @@ "Github": "https://github.com/EndorCoin", "Homepage": "https://www.endor.com" }, - "marketcap_usd": 21253109, + "marketcap_usd": 22557785, "name": "Endor Protocol Token", "network": "eth", "shortcut": "EDR", @@ -8988,12 +9101,12 @@ "Github": "https://github.com/egretia", "Homepage": "https://www.egretia.io" }, - "marketcap_usd": 1307613, + "marketcap_usd": 1569719, "name": "Egretia Token", "network": "eth", "shortcut": "EGT", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -9043,11 +9156,11 @@ "links": { "Homepage": "https://echolink.info" }, - "marketcap_usd": 1155590, + "marketcap_usd": 1195987, "name": "EchoLink", "network": "eth", "shortcut": "EKO", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -9070,11 +9183,11 @@ "links": { "Homepage": "http://ekt8.io" }, - "marketcap_usd": 3205566, + "marketcap_usd": 3180409, "name": "EDUCare", "network": "eth", "shortcut": "EKT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -9097,11 +9210,11 @@ "links": { "Homepage": "https://electrify.asia" }, - "marketcap_usd": 1442689, + "marketcap_usd": 1117793, "name": "Electrify.Asia", "network": "eth", "shortcut": "ELEC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -9125,7 +9238,7 @@ "Github": "https://github.com/aelfProject", "Homepage": "https://aelf.io/" }, - "marketcap_usd": 30283251, + "marketcap_usd": 42154472, "name": "ELF Token", "network": "eth", "shortcut": "ELF", @@ -9152,7 +9265,7 @@ "links": { "Homepage": "https://elixirtoken.io" }, - "marketcap_usd": 255068, + "marketcap_usd": 104892, "name": "Elixir Token", "network": "eth", "shortcut": "ELIX", @@ -9180,7 +9293,7 @@ "Github": "https://github.com/eltcoin", "Homepage": "http://www.eltcoin.tech/" }, - "marketcap_usd": 45159, + "marketcap_usd": 48822, "name": "ELTCOIN", "network": "eth", "shortcut": "ELTCOIN", @@ -9208,7 +9321,7 @@ "Github": "https://github.com/Elysian-ELY", "Homepage": "https://elycoin.io" }, - "marketcap_usd": 120036, + "marketcap_usd": 151719, "name": "ELYCOIN", "network": "eth", "shortcut": "ELY", @@ -9374,7 +9487,7 @@ "Github": "https://github.com/enigmampc", "Homepage": "https://enigma.co/" }, - "marketcap_usd": 19021856, + "marketcap_usd": 25591117, "name": "Enigma", "network": "eth", "shortcut": "ENG", @@ -9401,12 +9514,12 @@ "links": { "Homepage": "https://engagementtoken.com" }, - "marketcap_usd": 59787, + "marketcap_usd": 56021, "name": "Engagement Token", "network": "eth", "shortcut": "ENGT", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -9429,7 +9542,7 @@ "Github": "https://github.com/enjin/contracts", "Homepage": "https://enjincoin.io" }, - "marketcap_usd": 20129363, + "marketcap_usd": 73014166, "name": "ENJIN", "network": "eth", "shortcut": "ENJ", @@ -9512,11 +9625,11 @@ "links": { "Homepage": "https://emphy.io" }, - "marketcap_usd": 86733, + "marketcap_usd": 72299, "name": "Emphy", "network": "eth", "shortcut": "EPY", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -9539,11 +9652,11 @@ "links": { "Homepage": "http://www.equaltoken.io" }, - "marketcap_usd": 210753, + "marketcap_usd": 416693, "name": "Equal", "network": "eth", "shortcut": "EQL", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -9566,11 +9679,11 @@ "links": { "Homepage": "https://eroscoin.org" }, - "marketcap_usd": 710131, + "marketcap_usd": 946240, "name": "Eroscoin", "network": "eth", "shortcut": "ERO", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -9594,11 +9707,11 @@ "Github": "https://github.com/Krishtopa/ContractEristica", "Homepage": "https://eristica.com/" }, - "marketcap_usd": 446017, + "marketcap_usd": 779213, "name": "Eristica", "network": "eth", "shortcut": "ERT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -9622,7 +9735,7 @@ "Github": "https://github.com/EtherSportz/ESZCoin", "Homepage": "https://ethersportz.com" }, - "marketcap_usd": 127661, + "marketcap_usd": 243657, "name": "ESZCoin", "network": "eth", "shortcut": "ESZ", @@ -9649,7 +9762,7 @@ "links": { "Homepage": "https://www.ethbits.com" }, - "marketcap_usd": 297492, + "marketcap_usd": 630320, "name": "Ethbits", "network": "eth", "shortcut": "ETBS", @@ -9703,11 +9816,11 @@ "links": { "Homepage": "https://www.etgproject.org" }, - "marketcap_usd": 40109, + "marketcap_usd": 37545, "name": "Ethereum Gold", "network": "eth", "shortcut": "ETG", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -9757,11 +9870,11 @@ "links": { "Homepage": "https://energitoken.com" }, - "marketcap_usd": 951521, + "marketcap_usd": 1045569, "name": "EnergiToken", "network": "eth", "shortcut": "ETK", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -9812,11 +9925,11 @@ "links": { "Homepage": "https://stasis.net" }, - "marketcap_usd": 34607164, + "marketcap_usd": 34746855, "name": "STASIS EURS", "network": "eth", "shortcut": "EURS", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -9866,11 +9979,11 @@ "links": { "Homepage": "https://eventchain.io" }, - "marketcap_usd": 435096, + "marketcap_usd": 456239, "name": "EventChain", "network": "eth", "shortcut": "EVC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -9894,8 +10007,8 @@ "Github": "https://github.com/devery", "Homepage": "https://devery.io" }, - "marketcap_usd": 412656, - "name": "EVE", + "marketcap_usd": 302364, + "name": "Devery", "network": "eth", "shortcut": "EVE", "t1_enabled": "yes", @@ -9921,7 +10034,7 @@ "links": { "Homepage": "https://everex.io " }, - "marketcap_usd": 5177248, + "marketcap_usd": 5605337, "name": "EVX Token", "network": "eth", "shortcut": "EVX", @@ -9953,7 +10066,7 @@ "name": "EWO Token", "network": "eth", "shortcut": "EWO", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -9977,7 +10090,7 @@ "Github": "https://github.com/eXMRcoin/", "Homepage": "https://exmr.io/" }, - "marketcap_usd": 215662, + "marketcap_usd": 150015, "name": "eXMRcoin", "network": "eth", "shortcut": "EXMR", @@ -10004,11 +10117,11 @@ "links": { "Homepage": "https://exrnchain.com" }, - "marketcap_usd": 1516786, + "marketcap_usd": 1828252, "name": "EXRNchain", "network": "eth", "shortcut": "EXRN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -10031,7 +10144,7 @@ "links": { "Homepage": "https://experty.io/en" }, - "marketcap_usd": 745316, + "marketcap_usd": 702192, "name": "Experty", "network": "eth", "shortcut": "EXY", @@ -10058,11 +10171,11 @@ "links": { "Homepage": "https://ico.ezpos.io" }, - "marketcap_usd": 61495, + "marketcap_usd": 89621, "name": "EZToken", "network": "eth", "shortcut": "EZT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -10117,7 +10230,7 @@ "name": "FABA", "network": "eth", "shortcut": "FABA", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -10140,11 +10253,11 @@ "links": { "Homepage": "https://tokensale.faceter.io" }, - "marketcap_usd": 499473, + "marketcap_usd": 627457, "name": "Faceter", "network": "eth", "shortcut": "FACE", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -10222,11 +10335,11 @@ "links": { "Homepage": "https://friendz.io" }, - "marketcap_usd": 1727990, + "marketcap_usd": 1823693, "name": "Friendz", "network": "eth", "shortcut": "FDZ", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -10254,7 +10367,7 @@ "name": "FingerPrint", "network": "eth", "shortcut": "FGP", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -10277,11 +10390,11 @@ "links": { "Homepage": "http://www.fidelium.io" }, - "marketcap_usd": 264002, + "marketcap_usd": 564466, "name": "Fidelium", "network": "eth", "shortcut": "FID", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -10309,8 +10422,8 @@ "name": "FidelityHouse Token", "network": "eth", "shortcut": "FIH", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -10333,7 +10446,7 @@ "Github": "https://github.com/FortKnoxster", "Homepage": "https://fortknoxster.com" }, - "marketcap_usd": 213907, + "marketcap_usd": 417781, "name": "Knoxstertoken", "network": "eth", "shortcut": "FKX", @@ -10358,10 +10471,10 @@ "erc20:eth:FLIXX": { "address": "0xf04a8ac553FceDB5BA99A64799155826C136b0Be", "links": { - "Homepage": "http://flixxo.com" + "Homepage": "https://www.flixxo.com" }, - "marketcap_usd": 1142834, - "name": "FLIXX", + "marketcap_usd": 1213575, + "name": "Flixxo", "network": "eth", "shortcut": "FLIXX", "t1_enabled": "yes", @@ -10387,11 +10500,11 @@ "links": { "Homepage": "https://firelotto.io" }, - "marketcap_usd": 887008, + "marketcap_usd": 560489, "name": "Fire Lotto", "network": "eth", "shortcut": "FLOT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -10415,7 +10528,7 @@ "Github": "https://github.com/gameflip", "Homepage": "https://gameflip.com" }, - "marketcap_usd": 869556, + "marketcap_usd": 783161, "name": "FLIP Token", "network": "eth", "shortcut": "FLP", @@ -10469,7 +10582,7 @@ "links": { "Homepage": "https://ico.fluzfluz.com" }, - "marketcap_usd": 2172784, + "marketcap_usd": 2145924, "name": "Fluz Fluz Global", "network": "eth", "shortcut": "FLUZ", @@ -10524,12 +10637,12 @@ "Github": "https://github.com/FormosaFinancial", "Homepage": "https://www.formosa.financial/" }, - "marketcap_usd": 541670, + "marketcap_usd": 567017, "name": "Formosa Financial Token", "network": "eth", "shortcut": "FMF", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -10552,7 +10665,7 @@ "Github": "https://github.com/FundRequest", "Homepage": "https://fundrequest.io" }, - "marketcap_usd": 122644, + "marketcap_usd": 143007, "name": "FundRequest", "network": "eth", "shortcut": "FND", @@ -10579,11 +10692,11 @@ "links": { "Homepage": "https://www.foglink.io" }, - "marketcap_usd": 1407989, + "marketcap_usd": 1562475, "name": "FNKOS", "network": "eth", "shortcut": "FNKOS", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -10606,11 +10719,11 @@ "links": { "Homepage": "https://fintab.io/ico" }, - "marketcap_usd": 6904, + "marketcap_usd": 10206, "name": "Fintab", "network": "eth", "shortcut": "FNTB", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -10633,11 +10746,11 @@ "links": { "Homepage": "https://www.foodcoin.io" }, - "marketcap_usd": 583573, + "marketcap_usd": 813454, "name": "FoodCoin", "network": "eth", "shortcut": "FOOD", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -10660,11 +10773,39 @@ "links": { "Homepage": "https://www.fota.io" }, - "marketcap_usd": 3517706, + "marketcap_usd": 4861243, "name": "Fortuna", "network": "eth", "shortcut": "FOTA", - "t1_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:FR8": { + "address": "0x8c39afDf7B17F12c553208555E51ab86E69C35aA", + "links": { + "Github": "https://github.com/fr8network", + "Homepage": "https://www.fr8.network" + }, + "marketcap_usd": 0, + "name": "Fr8 Network", + "network": "eth", + "shortcut": "FR8", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -10714,11 +10855,11 @@ "links": { "Homepage": "http://www.freyrchain.org" }, - "marketcap_usd": 319806, + "marketcap_usd": 423291, "name": "Freyrchain", "network": "eth", "shortcut": "FREC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -10741,11 +10882,11 @@ "links": { "Homepage": "https://fusion.org" }, - "marketcap_usd": 8603041, + "marketcap_usd": 15486320, "name": "Fusion", "network": "eth", "shortcut": "FSN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -10768,11 +10909,11 @@ "links": { "Homepage": "https://fabrictoken.io" }, - "marketcap_usd": 54036, + "marketcap_usd": 166479, "name": "Fabric Token", "network": "eth", "shortcut": "FT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -10795,11 +10936,11 @@ "links": { "Homepage": "https://fanstime.org" }, - "marketcap_usd": 1417293, + "marketcap_usd": 1962324, "name": "FansTime", "network": "eth", "shortcut": "FTI", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -10850,7 +10991,7 @@ "Github": "https://github.com/farmatrust", "Homepage": "https://www.farmatrust.io" }, - "marketcap_usd": 1837776, + "marketcap_usd": 1936726, "name": "FarmaTrust Token", "network": "eth", "shortcut": "FTT", @@ -10877,11 +11018,11 @@ "links": { "Homepage": "https://www.fintrux.com" }, - "marketcap_usd": 1480931, + "marketcap_usd": 2766166, "name": "FintruX Network", "network": "eth", "shortcut": "FTX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -10905,7 +11046,7 @@ "Github": "https://github.com/futuraxproject", "Homepage": "https://futurax.global" }, - "marketcap_usd": 87313, + "marketcap_usd": 136705, "name": "FUTURAX", "network": "eth", "shortcut": "FTXT", @@ -10933,7 +11074,7 @@ "Github": "https://github.com/etherparty", "Homepage": "https://etherparty.io" }, - "marketcap_usd": 3774338, + "marketcap_usd": 5253387, "name": "Etherparty FUEL", "network": "eth", "shortcut": "FUEL", @@ -10960,7 +11101,7 @@ "links": { "Homepage": "https://funfair.io" }, - "marketcap_usd": 22513528, + "marketcap_usd": 25040270, "name": "Funfair", "network": "eth", "shortcut": "FUN", @@ -11015,11 +11156,11 @@ "links": { "Homepage": "https://fuzex.co" }, - "marketcap_usd": 1939634, + "marketcap_usd": 1592967, "name": "FuzeX", "network": "eth", "shortcut": "FXT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -11069,11 +11210,11 @@ "links": { "Homepage": "https://flyp.me" }, - "marketcap_usd": 240080, + "marketcap_usd": 449318, "name": "FlypMe", "network": "eth", "shortcut": "FYP", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -11101,7 +11242,7 @@ "name": "Frozencoin Network", "network": "eth", "shortcut": "Fzcoin", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -11125,7 +11266,7 @@ "Github": "https://github.com/BlockchainLabsNZ/gambit", "Homepage": "http://gambitcrypto.com" }, - "marketcap_usd": 1339054, + "marketcap_usd": 1418938, "name": "Gambit", "network": "eth", "shortcut": "GAM", @@ -11152,11 +11293,11 @@ "links": { "Homepage": "https://www.gatcoin.io" }, - "marketcap_usd": 922163, + "marketcap_usd": 1597959, "name": "Global Awards Token", "network": "eth", "shortcut": "GAT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -11344,11 +11485,11 @@ "links": { "Homepage": "https://gems.org" }, - "marketcap_usd": 1210221, + "marketcap_usd": 1005693, "name": "Gems", "network": "eth", "shortcut": "GEM", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -11372,7 +11513,7 @@ "Github": "https://github.com/daostack", "Homepage": "https://daostack.io" }, - "marketcap_usd": 4111258, + "marketcap_usd": 4488476, "name": "DAOstack", "network": "eth", "shortcut": "GEN", @@ -11399,12 +11540,12 @@ "links": { "Homepage": "https://parkgene.io" }, - "marketcap_usd": 268720, + "marketcap_usd": 177373, "name": "Parkgene", "network": "eth", "shortcut": "GENE", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -11427,8 +11568,8 @@ "Github": "https://github.com/Getprotocol", "Homepage": "http://www.get-protocol.io" }, - "marketcap_usd": 2585460, - "name": "GET", + "marketcap_usd": 3525284, + "name": "GET Protocol", "network": "eth", "shortcut": "GET", "t1_enabled": "yes", @@ -11509,11 +11650,11 @@ "links": { "Homepage": "https://gladius.io" }, - "marketcap_usd": 768532, + "marketcap_usd": 460205, "name": "Gladius", "network": "eth", "shortcut": "GLA", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -11563,7 +11704,7 @@ "links": { "Homepage": "https://gnosis.pm" }, - "marketcap_usd": 12032743, + "marketcap_usd": 13929914, "name": "Gnosis", "network": "eth", "shortcut": "GNO", @@ -11590,11 +11731,11 @@ "links": { "Homepage": "https://golem.network" }, - "marketcap_usd": 54225783, + "marketcap_usd": 63019673, "name": "Golem", "network": "eth", "shortcut": "GNT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -11617,11 +11758,11 @@ "links": { "Homepage": "https://genaro.network" }, - "marketcap_usd": 3864061, + "marketcap_usd": 4012186, "name": "Genaro Network", "network": "eth", "shortcut": "GNX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -11649,7 +11790,7 @@ "name": "GNY", "network": "eth", "shortcut": "GNY", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -11700,11 +11841,11 @@ "links": { "Homepage": "https://gonetwork.co/index.html" }, - "marketcap_usd": 533887, + "marketcap_usd": 2014006, "name": "GoNetwork", "network": "eth", "shortcut": "GOT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -11725,10 +11866,10 @@ "erc20:eth:GRID": { "address": "0x12B19D3e2ccc14Da04FAe33e63652ce469b3F2FD", "links": { - "Homepage": "https://gridplus.io/token-sale" + "Homepage": "http://gridplus.io" }, - "marketcap_usd": 3706930, - "name": "GRID", + "marketcap_usd": 3956753, + "name": "Grid+", "network": "eth", "shortcut": "GRID", "t1_enabled": "yes", @@ -11754,11 +11895,11 @@ "links": { "Homepage": "https://www.greenmed.io" }, - "marketcap_usd": 60841, + "marketcap_usd": 52340, "name": "GreenMed", "network": "eth", "shortcut": "GRMD", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -11786,7 +11927,7 @@ "name": "Groocoin", "network": "eth", "shortcut": "GROO", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -11837,11 +11978,11 @@ "links": { "Homepage": "https://www.gsc.social" }, - "marketcap_usd": 1573445, + "marketcap_usd": 1939663, "name": "Global Social Chain", "network": "eth", "shortcut": "GSC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -11892,7 +12033,7 @@ "Github": "https://github.com/GameLeLe", "Homepage": "https://game.com" }, - "marketcap_usd": 11407895, + "marketcap_usd": 6878565, "name": "GTC Token", "network": "eth", "shortcut": "GTC", @@ -11948,7 +12089,7 @@ "Github": "https://github.com/GIFTO-io", "Homepage": "https://gifto.io/" }, - "marketcap_usd": 12698498, + "marketcap_usd": 15970047, "name": "Gifto", "network": "eth", "shortcut": "GTO", @@ -11975,11 +12116,11 @@ "links": { "Homepage": "https://peerguess.com" }, - "marketcap_usd": 15791, + "marketcap_usd": 16504, "name": "Peerguess", "network": "eth", "shortcut": "GUESS", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -12030,11 +12171,11 @@ "links": { "Homepage": "https://matchpool.co" }, - "marketcap_usd": 1222440, + "marketcap_usd": 1462143, "name": "Matchpool", "network": "eth", "shortcut": "GUP", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -12058,7 +12199,7 @@ "Github": "https://github.com/GenesisVision", "Homepage": "https://genesis.vision" }, - "marketcap_usd": 15256274, + "marketcap_usd": 17474263, "name": "Genesis Vision", "network": "eth", "shortcut": "GVT", @@ -12145,8 +12286,8 @@ "name": "GigziBlack", "network": "eth", "shortcut": "GZB", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -12223,11 +12364,11 @@ "links": { "Homepage": "https://www.showhand.io" }, - "marketcap_usd": 109975, + "marketcap_usd": 109191, "name": "ShowHand", "network": "eth", "shortcut": "HAND", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -12304,11 +12445,11 @@ "links": { "Homepage": "https://heartbout.com" }, - "marketcap_usd": 284437, + "marketcap_usd": 789079, "name": "HeartBout", "network": "eth", "shortcut": "HB", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -12331,11 +12472,11 @@ "links": { "Homepage": "https://www.hubii.network" }, - "marketcap_usd": 1952568, + "marketcap_usd": 1494959, "name": "Hubii Network", "network": "eth", "shortcut": "HBT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -12358,11 +12499,11 @@ "links": { "Homepage": "https://www.hbzcoin.com/#" }, - "marketcap_usd": 359590, + "marketcap_usd": 402550, "name": "HBZ coin", "network": "eth", "shortcut": "HBZ", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -12412,11 +12553,11 @@ "links": { "Homepage": "https://heronode.io" }, - "marketcap_usd": 379140, + "marketcap_usd": 417674, "name": "HeroNode", "network": "eth", "shortcut": "HER", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -12440,8 +12581,8 @@ "Github": "https://github.com/myHelloGold/Foundation", "Homepage": "https://www.hellogold.org" }, - "marketcap_usd": 472930, - "name": "HGT", + "marketcap_usd": 402999, + "name": "HelloGold", "network": "eth", "shortcut": "HGT", "t1_enabled": "yes", @@ -12549,11 +12690,11 @@ "links": { "Homepage": "https://hacken.io" }, - "marketcap_usd": 993519, + "marketcap_usd": 821526, "name": "Hacken", "network": "eth", "shortcut": "HKN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -12608,7 +12749,7 @@ "name": "Helex", "network": "eth", "shortcut": "HLX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -12629,10 +12770,10 @@ "erc20:eth:HMQ": { "address": "0xcbCC0F036ED4788F63FC0fEE32873d6A7487b908", "links": { - "Homepage": "https://humaniq.co" + "Homepage": "https://humaniq.com" }, - "marketcap_usd": 1365259, - "name": "HMQ", + "marketcap_usd": 1726204, + "name": "Humaniq", "network": "eth", "shortcut": "HMQ", "t1_enabled": "yes", @@ -12686,8 +12827,8 @@ "Github": "https://github.com/ethorse", "Homepage": "https://ethorse.com" }, - "marketcap_usd": 429251, - "name": "HORSE", + "marketcap_usd": 408424, + "name": "Ethorse", "network": "eth", "shortcut": "HORSE", "t1_enabled": "yes", @@ -12714,12 +12855,12 @@ "Github": "https://github.com/Holo-Host", "Homepage": "https://holo.host/" }, - "marketcap_usd": 150345855, + "marketcap_usd": 139098744, "name": "Holo Token", "network": "eth", "shortcut": "HOT (Holo)", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -12741,12 +12882,12 @@ "links": { "Homepage": "https://thehydrofoundation.com/" }, - "marketcap_usd": 1761743, + "marketcap_usd": 1924678, "name": "Hydro Protocol", "network": "eth", "shortcut": "HOT (Hydro)", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -12768,8 +12909,8 @@ "links": { "Homepage": "https://horizonstate.com" }, - "marketcap_usd": 1350570, - "name": "HST", + "marketcap_usd": 2066867, + "name": "Decision Token", "network": "eth", "shortcut": "HST", "t1_enabled": "yes", @@ -12795,11 +12936,11 @@ "links": { "Homepage": "https://www.hbg.com" }, - "marketcap_usd": 47290534, + "marketcap_usd": 78676187, "name": "Huobi Token", "network": "eth", "shortcut": "HT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -12823,7 +12964,7 @@ "Github": "https://github.com/HiveProjectLTD", "Homepage": "https://www.hiveterminal.com" }, - "marketcap_usd": 1158314, + "marketcap_usd": 1460327, "name": "Hiveterminal Token", "network": "eth", "shortcut": "HVN", @@ -12851,7 +12992,7 @@ "Github": "https://github.com/hydrogen-dev", "Homepage": "https://www.hydrogenplatform.com/hydro" }, - "marketcap_usd": 5843228, + "marketcap_usd": 5739855, "name": "Hydro", "network": "eth", "shortcut": "HYDRO", @@ -12933,7 +13074,7 @@ "links": { "Homepage": "https://www.iconomi.net" }, - "marketcap_usd": 8314904, + "marketcap_usd": 14191291, "name": "ICONOMI", "network": "eth", "shortcut": "ICN", @@ -13068,11 +13209,11 @@ "links": { "Homepage": "https://indahash.com" }, - "marketcap_usd": 1069163, + "marketcap_usd": 1281996, "name": "indaHash", "network": "eth", "shortcut": "IDH", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -13095,12 +13236,12 @@ "links": { "Homepage": "http://iethereum.trade" }, - "marketcap_usd": 642464, + "marketcap_usd": 683087, "name": "iEthereum", "network": "eth", "shortcut": "IETH", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -13122,7 +13263,7 @@ "links": { "Homepage": "https://investfeed.com" }, - "marketcap_usd": 346134, + "marketcap_usd": 47458, "name": "InvestFeed", "network": "eth", "shortcut": "IFT", @@ -13149,11 +13290,11 @@ "links": { "Homepage": "http://igtoken.net" }, - "marketcap_usd": 38751, + "marketcap_usd": 44630, "name": "IGToken", "network": "eth", "shortcut": "IG", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -13176,11 +13317,11 @@ "links": { "Homepage": "https://ihtcoin.com" }, - "marketcap_usd": 7127380, + "marketcap_usd": 5995071, "name": "I HOUSE TOKEN", "network": "eth", "shortcut": "IHT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -13285,7 +13426,7 @@ "links": { "Homepage": "https://indorse.io" }, - "marketcap_usd": 656058, + "marketcap_usd": 6685363, "name": "Indorse", "network": "eth", "shortcut": "IND", @@ -13312,11 +13453,11 @@ "links": { "Homepage": "https://iungo.network" }, - "marketcap_usd": 197420, + "marketcap_usd": 218234, "name": "Iungo", "network": "eth", "shortcut": "ING", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -13337,10 +13478,10 @@ "erc20:eth:INS": { "address": "0x5B2e4a700dfBc560061e957edec8F6EeEb74a320", "links": { - "Homepage": "https://ins.world" + "Homepage": "https://insolar.io" }, - "marketcap_usd": 8547531, - "name": "INS", + "marketcap_usd": 9092851, + "name": "Insolar", "network": "eth", "shortcut": "INS", "t1_enabled": "yes", @@ -13366,7 +13507,7 @@ "links": { "Homepage": "https://insights.network" }, - "marketcap_usd": 998461, + "marketcap_usd": 815430, "name": "Insights Network", "network": "eth", "shortcut": "INSTAR", @@ -13393,11 +13534,11 @@ "links": { "Homepage": "https://intchain.io" }, - "marketcap_usd": 4339374, + "marketcap_usd": 3916053, "name": "Internet Node Token", "network": "eth", "shortcut": "INT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -13420,11 +13561,11 @@ "links": { "Homepage": "https://www.invacio.com" }, - "marketcap_usd": 1180085, + "marketcap_usd": 1151838, "name": "Invacio", "network": "eth", "shortcut": "INV", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -13448,7 +13589,7 @@ "Github": "https://github.com/Internxt/", "Homepage": "https://internxt.com/" }, - "marketcap_usd": 595277, + "marketcap_usd": 1068018, "name": "Internxt", "network": "eth", "shortcut": "INXT", @@ -13475,7 +13616,7 @@ "links": { "Homepage": "https://iost.io/" }, - "marketcap_usd": 73194890, + "marketcap_usd": 91977426, "name": "IOSToken", "network": "eth", "shortcut": "IOST", @@ -13503,7 +13644,7 @@ "Github": "https://github.com/iotexproject/iotex-core", "Homepage": "http://iotex.io/" }, - "marketcap_usd": 16715573, + "marketcap_usd": 21430237, "name": "IoTeX Network", "network": "eth", "shortcut": "IOTX", @@ -13531,7 +13672,7 @@ "Github": "https://github.com/InsurePal", "Homepage": "https://insurepal.io/" }, - "marketcap_usd": 875367, + "marketcap_usd": 996336, "name": "InsurePal token", "network": "eth", "shortcut": "IPL", @@ -13558,8 +13699,8 @@ "links": { "Homepage": "https://ip.sx" }, - "marketcap_usd": 541377, - "name": "IPSX", + "marketcap_usd": 641413, + "name": "IP Exchange", "network": "eth", "shortcut": "IPSX", "t1_enabled": "yes", @@ -13586,7 +13727,7 @@ "Github": "https://github.com/iqeon", "Homepage": "https://iqeon.io/" }, - "marketcap_usd": 573228, + "marketcap_usd": 604974, "name": "IQeon", "network": "eth", "shortcut": "IQN", @@ -13642,7 +13783,7 @@ "Github": "https://github.com/IoTChainCode", "Homepage": "https://iotchain.io/" }, - "marketcap_usd": 6738315, + "marketcap_usd": 7898704, "name": "IoT Chain", "network": "eth", "shortcut": "ITC", @@ -13670,7 +13811,7 @@ "Github": "https://github.com/IntelligentTrading", "Homepage": "http://intelligenttrading.org" }, - "marketcap_usd": 84495, + "marketcap_usd": 94908, "name": "ITT Token", "network": "eth", "shortcut": "ITT", @@ -13697,11 +13838,11 @@ "links": { "Homepage": "https://www.ivykoin.com" }, - "marketcap_usd": 2599452, + "marketcap_usd": 2475609, "name": "IvyKoin Public Network Tokens", "network": "eth", "shortcut": "IVY", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -13724,7 +13865,7 @@ "links": { "Homepage": "https://www.insurex.co" }, - "marketcap_usd": 1319519, + "marketcap_usd": 672534, "name": "InsureX", "network": "eth", "shortcut": "IXT", @@ -13779,7 +13920,7 @@ "Github": "https://github.com/jet8", "Homepage": "https://jet8.io" }, - "marketcap_usd": 490954, + "marketcap_usd": 393915, "name": "J8T Token", "network": "eth", "shortcut": "J8T", @@ -13806,11 +13947,11 @@ "links": { "Homepage": "https://jesuscoin.network" }, - "marketcap_usd": 94345, + "marketcap_usd": 125043, "name": "Jesus Coin", "network": "eth", "shortcut": "JC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -13833,7 +13974,7 @@ "links": { "Homepage": "https://jetcoin.io" }, - "marketcap_usd": 166825, + "marketcap_usd": 170248, "name": "JET", "network": "eth", "shortcut": "JET", @@ -13861,8 +14002,8 @@ "Github": "https://github.com/jibrelnetwork", "Homepage": "https://jibrel.network" }, - "marketcap_usd": 5413651, - "name": "JNT", + "marketcap_usd": 6680979, + "name": "Jibrel Network", "network": "eth", "shortcut": "JNT", "t1_enabled": "yes", @@ -13888,11 +14029,11 @@ "links": { "Homepage": "https://jury.online" }, - "marketcap_usd": 58328, + "marketcap_usd": 47796, "name": "Jury.Online Token", "network": "eth", "shortcut": "JOT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -13942,11 +14083,11 @@ "links": { "Homepage": "http://www.kan.land" }, - "marketcap_usd": 4108073, + "marketcap_usd": 6378287, "name": "BitKan", "network": "eth", "shortcut": "KAN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -13973,7 +14114,7 @@ "name": "KMCC", "network": "eth", "shortcut": "KC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -13997,7 +14138,7 @@ "Github": "https://github.com/kickico", "Homepage": "https://www.kickico.com" }, - "marketcap_usd": 2820920, + "marketcap_usd": 2289961, "name": "KICK", "network": "eth", "shortcut": "KICK", @@ -14025,7 +14166,7 @@ "Github": "https://github.com/kikinteractive/kin-token", "Homepage": "https://kin.kik.com" }, - "marketcap_usd": 17970358, + "marketcap_usd": 17786862, "name": "Kin Foundation", "network": "eth", "shortcut": "KIN", @@ -14052,11 +14193,11 @@ "links": { "Homepage": "https://kindads.io" }, - "marketcap_usd": 624956, + "marketcap_usd": 1375645, "name": "Kind Ads Token", "network": "eth", "shortcut": "KIND", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -14080,7 +14221,7 @@ "Github": "https://github.com/KyberNetwork", "Homepage": "https://kyber.network" }, - "marketcap_usd": 19035156, + "marketcap_usd": 26849490, "name": "Kyber Network", "network": "eth", "shortcut": "KNC", @@ -14107,11 +14248,11 @@ "links": { "Homepage": "https://kanadecoin.com" }, - "marketcap_usd": 80404, + "marketcap_usd": 76099, "name": "KanadeCoin", "network": "eth", "shortcut": "KNDC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -14134,11 +14275,11 @@ "links": { "Homepage": "https://kora.network" }, - "marketcap_usd": 159665, + "marketcap_usd": 116839, "name": "Kora Network Token", "network": "eth", "shortcut": "KNT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -14190,7 +14331,7 @@ "Github": "https://github.com/Cryptense/", "Homepage": "https://kryll.io/" }, - "marketcap_usd": 464437, + "marketcap_usd": 1555494, "name": "Kryll", "network": "eth", "shortcut": "KRL", @@ -14221,7 +14362,7 @@ "name": "Kuende Token", "network": "eth", "shortcut": "KUE", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -14244,11 +14385,11 @@ "links": { "Homepage": "https://4new.io" }, - "marketcap_usd": 88229, + "marketcap_usd": 88182, "name": "4NEW", "network": "eth", "shortcut": "KWATT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -14299,7 +14440,7 @@ "Github": "https://github.com/latoken", "Homepage": "https://latoken.com/" }, - "marketcap_usd": 6422123, + "marketcap_usd": 26381245, "name": "LATOKEN", "network": "eth", "shortcut": "LA", @@ -14326,7 +14467,7 @@ "links": { "Homepage": "https://lalaworld.io/" }, - "marketcap_usd": 193821, + "marketcap_usd": 198893, "name": "LALA World Token", "network": "eth", "shortcut": "LALA", @@ -14353,11 +14494,11 @@ "links": { "Homepage": "https://latium.org" }, - "marketcap_usd": 880461, + "marketcap_usd": 917891, "name": "LatiumX", "network": "eth", "shortcut": "LATX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -14380,11 +14521,11 @@ "links": { "Homepage": "https://www.mycred.io" }, - "marketcap_usd": 4088658, + "marketcap_usd": 5380338, "name": "Cred", "network": "eth", "shortcut": "LBA", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -14407,11 +14548,11 @@ "links": { "Homepage": "https://www.localcoinswap.com" }, - "marketcap_usd": 1395980, + "marketcap_usd": 1534600, "name": "LocalCoinSwap", "network": "eth", "shortcut": "LCS", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -14434,7 +14575,7 @@ "links": { "Homepage": "https://www.leadcoin.network/" }, - "marketcap_usd": 95490, + "marketcap_usd": 109088, "name": "LEADCOIN", "network": "eth", "shortcut": "LDC", @@ -14456,13 +14597,41 @@ } ] }, - "erc20:eth:LEND": { - "address": "0x80fB784B7eD66730e8b1DBd9820aFD29931aab03", + "erc20:eth:LEDU": { + "address": "0x5b26C5D0772E5bbaC8b3182AE9a13f9BB2D03765", "links": { - "Github": "https://github.com/ETHLend", + "Github": "https://github.com/livecodingtvofficial", + "Homepage": "https://ledu.education-ecosystem.com" + }, + "marketcap_usd": 976402, + "name": "Education Ecosystem", + "network": "eth", + "shortcut": "LEDU", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:LEND": { + "address": "0x80fB784B7eD66730e8b1DBd9820aFD29931aab03", + "links": { + "Github": "https://github.com/ETHLend", "Homepage": "https://ethlend.io/" }, - "marketcap_usd": 7808895, + "marketcap_usd": 9693532, "name": "EHTLend", "network": "eth", "shortcut": "LEND", @@ -14489,11 +14658,11 @@ "links": { "Homepage": "https://www.leverj.io" }, - "marketcap_usd": 1196051, + "marketcap_usd": 739652, "name": "Leverj", "network": "eth", "shortcut": "LEV", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -14547,7 +14716,7 @@ "name": "LG", "network": "eth", "shortcut": "LG", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -14568,10 +14737,10 @@ "erc20:eth:LGO": { "address": "0x123aB195DD38B1b40510d467a6a359b201af056f", "links": { - "Homepage": "https://legolas.exchange/" + "Homepage": "https://lgo.exchange" }, - "marketcap_usd": 4534461, - "name": "LGO", + "marketcap_usd": 8341169, + "name": "LGO Exchange", "network": "eth", "shortcut": "LGO", "t1_enabled": "yes", @@ -14628,7 +14797,7 @@ "name": "Libereum", "network": "eth", "shortcut": "LIBER", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -14652,8 +14821,8 @@ "Github": "https://github.com/windingtree", "Homepage": "https://windingtree.com/" }, - "marketcap_usd": 2415672, - "name": "LIF", + "marketcap_usd": 2292316, + "name": "Winding Tree", "network": "eth", "shortcut": "LIF", "t1_enabled": "yes", @@ -14679,7 +14848,7 @@ "links": { "Homepage": "http://www.lifelabs.io" }, - "marketcap_usd": 797690, + "marketcap_usd": 862282, "name": "LIFE", "network": "eth", "shortcut": "LIFE", @@ -14707,11 +14876,11 @@ "Github": "https://github.com/likecoin", "Homepage": "https://like.co" }, - "marketcap_usd": 805175, + "marketcap_usd": 1163804, "name": "LikeCoin", "network": "eth", "shortcut": "LIKE", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -14734,7 +14903,7 @@ "links": { "Homepage": "https://link.smartcontract.com" }, - "marketcap_usd": 140373979, + "marketcap_usd": 150203550, "name": "Chainlink", "network": "eth", "shortcut": "LINK (Chainlink)", @@ -14788,11 +14957,11 @@ "links": { "Homepage": "https://www.linkey.info" }, - "marketcap_usd": 39584137, + "marketcap_usd": 41340608, "name": "Linkey", "network": "eth", "shortcut": "LKY", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -14814,13 +14983,13 @@ "address": "0x25B6325f5BB1c1E03cfbC3e53F470E1F1ca022E3", "links": { "Github": "https://github.com/GNYIO", - "Homepage": "https://www.gny.io/" + "Homepage": "https://www.gny.io/lisk" }, - "marketcap_usd": 11392800, - "name": "LML", + "marketcap_usd": 9777572, + "name": "Lisk Machine Learning", "network": "eth", "shortcut": "LML", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -14844,7 +15013,7 @@ "Github": "https://github.com/lendingblock", "Homepage": "https://lendingblock.com" }, - "marketcap_usd": 2729968, + "marketcap_usd": 2066410, "name": "Lendingblock", "network": "eth", "shortcut": "LND", @@ -14871,7 +15040,7 @@ "links": { "Homepage": "https://LockChain.co" }, - "marketcap_usd": 13434994, + "marketcap_usd": 14407312, "name": "LockChain", "network": "eth", "shortcut": "LOC", @@ -14899,7 +15068,7 @@ "Github": "http://github.com/locipro/loci-coin-sale", "Homepage": "https://locipro.com" }, - "marketcap_usd": 211362, + "marketcap_usd": 132808, "name": "LOCIcoin", "network": "eth", "shortcut": "LOCI", @@ -15008,8 +15177,8 @@ "Github": "github.com/loomnetwork/", "Homepage": "https://loomx.io" }, - "marketcap_usd": 26268996, - "name": "LOOM", + "marketcap_usd": 42891685, + "name": "Loom Network", "network": "eth", "shortcut": "LOOM", "t1_enabled": "yes", @@ -15063,8 +15232,8 @@ "links": { "Homepage": "https://loopring.org" }, - "marketcap_usd": 41063668, - "name": "LRC", + "marketcap_usd": 46759868, + "name": "Loopring", "network": "eth", "shortcut": "LRC", "t1_enabled": "yes", @@ -15091,7 +15260,7 @@ "Github": "https://github.com/Play2Live/blockchain", "Homepage": "https://play2live.io" }, - "marketcap_usd": 106666, + "marketcap_usd": 125026, "name": "LUCToken", "network": "eth", "shortcut": "LUC", @@ -15173,7 +15342,7 @@ "Github": "https://github.com/lunyr", "Homepage": "https://lunyr.com" }, - "marketcap_usd": 3756431, + "marketcap_usd": 4739024, "name": "Lunyr", "network": "eth", "shortcut": "LUN", @@ -15200,11 +15369,11 @@ "links": { "Homepage": "https://lympo.io" }, - "marketcap_usd": 4658184, + "marketcap_usd": 4385887, "name": "Lympo", "network": "eth", "shortcut": "LYM", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -15310,8 +15479,8 @@ "Github": "https://github.com/MatrixAINetwork", "Homepage": "https://www.matrix.io" }, - "marketcap_usd": 10458563, - "name": "MAN", + "marketcap_usd": 13591899, + "name": "Matrix AI Network", "network": "eth", "shortcut": "MAN", "t1_enabled": "yes", @@ -15338,7 +15507,7 @@ "Github": "https://github.com/decentraland", "Homepage": "https://decentraland.org" }, - "marketcap_usd": 33974337, + "marketcap_usd": 44250372, "name": "Decentraland MANA", "network": "eth", "shortcut": "MANA", @@ -15420,7 +15589,7 @@ "links": { "Homepage": "https://bitcoingrowthfund.com/mcap" }, - "marketcap_usd": 41638, + "marketcap_usd": 30726, "name": "MCAP", "network": "eth", "shortcut": "MCAP", @@ -15473,10 +15642,10 @@ "erc20:eth:MCO": { "address": "0xB63B606Ac810a52cCa15e44bB630fd42D8d1d83d", "links": { - "Homepage": "https://mona.co" + "Homepage": "https://crypto.com" }, - "marketcap_usd": 30511240, - "name": "MCO", + "marketcap_usd": 42619634, + "name": "Crypto.com", "network": "eth", "shortcut": "MCO", "t1_enabled": "yes", @@ -15500,10 +15669,10 @@ "erc20:eth:MDA": { "address": "0x51DB5Ad35C671a87207d88fC11d593AC0C8415bd", "links": { - "Homepage": "https://moeda.in" + "Homepage": "https://moedaseeds.com" }, - "marketcap_usd": 13452802, - "name": "MDA", + "marketcap_usd": 16125479, + "name": "Moeda Loyalty Points", "network": "eth", "shortcut": "MDA", "t1_enabled": "yes", @@ -15529,11 +15698,11 @@ "links": { "Homepage": "http://www.medishares.org" }, - "marketcap_usd": 7011192, + "marketcap_usd": 9089855, "name": "MediShares", "network": "eth", "shortcut": "MDS", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -15556,11 +15725,11 @@ "links": { "Homepage": "https://www.mdt.co" }, - "marketcap_usd": 1590360, + "marketcap_usd": 4853987, "name": "Measurable Data Token", "network": "eth", "shortcut": "MDT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -15583,11 +15752,11 @@ "links": { "Homepage": "https://medibloc.org" }, - "marketcap_usd": 9387924, + "marketcap_usd": 10581768, "name": "MediBloc [ERC20]", "network": "eth", "shortcut": "MEDX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -15638,11 +15807,11 @@ "links": { "Homepage": "https://www.metronome.io" }, - "marketcap_usd": 5731908, + "marketcap_usd": 7768498, "name": "Metronome", "network": "eth", "shortcut": "MET", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -15665,11 +15834,11 @@ "links": { "Homepage": "https://metamorph.pro" }, - "marketcap_usd": 330286, + "marketcap_usd": 343677, "name": "MetaMorph", "network": "eth", "shortcut": "METM", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -15693,7 +15862,7 @@ "Github": "https://github.com/syncfab", "Homepage": "https://syncfab.com/" }, - "marketcap_usd": 216179, + "marketcap_usd": 377982, "name": "SyncFab Smart Manufacturing Blockchain", "network": "eth", "shortcut": "MFG", @@ -15721,7 +15890,7 @@ "Github": "https://github.com/MainframeHQ", "Homepage": "https://mainframe.com" }, - "marketcap_usd": 17952843, + "marketcap_usd": 17989005, "name": "Mainframe Token", "network": "eth", "shortcut": "MFT", @@ -15748,7 +15917,7 @@ "links": { "Homepage": "https://mftu.net" }, - "marketcap_usd": 15228, + "marketcap_usd": 18919, "name": "Mainstream For The Underground", "network": "eth", "shortcut": "MFTU", @@ -15775,7 +15944,7 @@ "links": { "Homepage": "https://mobilego.io" }, - "marketcap_usd": 20868284, + "marketcap_usd": 11969031, "name": "MobileGo", "network": "eth", "shortcut": "MGO", @@ -15802,11 +15971,11 @@ "links": { "Homepage": "https://mindexcoin.com" }, - "marketcap_usd": 364336, + "marketcap_usd": 329567, "name": "Mindexcoin", "network": "eth", "shortcut": "MIC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -15829,12 +15998,12 @@ "links": { "Homepage": "https://token.morpheuslabs.io" }, - "marketcap_usd": 823763, + "marketcap_usd": 2287984, "name": "Morpheus Infrastructure Token", "network": "eth", "shortcut": "MITX", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -15857,11 +16026,11 @@ "Github": "https://github.com/makerdao", "Homepage": "https://makerdao.com" }, - "marketcap_usd": 292372862, + "marketcap_usd": 672637048, "name": "MakerDAO", "network": "eth", "shortcut": "MKR", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -15916,8 +16085,8 @@ "name": "Melonport", "network": "eth", "shortcut": "MLN (new)", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -15939,8 +16108,8 @@ "links": { "Homepage": "https://minereum.com" }, - "marketcap_usd": 27305, - "name": "MNE", + "marketcap_usd": 37036, + "name": "Minereum", "network": "eth", "shortcut": "MNE", "t1_enabled": "yes", @@ -16022,11 +16191,11 @@ "links": { "Homepage": "https://moss.land" }, - "marketcap_usd": 7875829, + "marketcap_usd": 14336304, "name": "Moss Coin", "network": "eth", "shortcut": "MOC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -16050,7 +16219,7 @@ "Github": "https://github.com/modum-io", "Homepage": "https://modum.io" }, - "marketcap_usd": 5948384, + "marketcap_usd": 3549620, "name": "Modum", "network": "eth", "shortcut": "MOD", @@ -16077,11 +16246,11 @@ "links": { "Homepage": "https://olympuslabs.io" }, - "marketcap_usd": 1619634, + "marketcap_usd": 1114464, "name": "Olympus Labs", "network": "eth", "shortcut": "MOT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -16104,11 +16273,11 @@ "links": { "Homepage": "https://mark.space" }, - "marketcap_usd": 2827257, + "marketcap_usd": 3240809, "name": "MARK.SPACE", "network": "eth", "shortcut": "MRK", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -16213,7 +16382,7 @@ "links": { "Homepage": "https://mothership.cx" }, - "marketcap_usd": 752946, + "marketcap_usd": 0, "name": "Mothership", "network": "eth", "shortcut": "MSP", @@ -16240,7 +16409,7 @@ "links": { "Homepage": "http://www.monetha.io" }, - "marketcap_usd": 4758266, + "marketcap_usd": 6149547, "name": "Monetha", "network": "eth", "shortcut": "MTH", @@ -16267,7 +16436,7 @@ "links": { "Homepage": "https://www.metalpay.com" }, - "marketcap_usd": 10749549, + "marketcap_usd": 13045448, "name": "Metal", "network": "eth", "shortcut": "MTL", @@ -16294,7 +16463,7 @@ "links": { "Homepage": "https://medicalchain.com" }, - "marketcap_usd": 1109365, + "marketcap_usd": 1256957, "name": "MedToken", "network": "eth", "shortcut": "MTN", @@ -16348,7 +16517,7 @@ "links": { "Homepage": "https://modultrade.io" }, - "marketcap_usd": 197472, + "marketcap_usd": 102920, "name": "MTRCToken", "network": "eth", "shortcut": "MTRc", @@ -16375,8 +16544,8 @@ "links": { "Homepage": "https://www.matryx.ai" }, - "marketcap_usd": 321785, - "name": "MTX", + "marketcap_usd": 476428, + "name": "Matryx", "network": "eth", "shortcut": "MTX", "t1_enabled": "yes", @@ -16429,11 +16598,11 @@ "links": { "Homepage": "http://mvlchain.io" }, - "marketcap_usd": 1392769, + "marketcap_usd": 1880838, "name": "Mass Vehicle Ledger Token", "network": "eth", "shortcut": "MVL", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -16457,7 +16626,7 @@ "Github": "https://github.com/Merculet", "Homepage": "https://www.merculet.io" }, - "marketcap_usd": 612109, + "marketcap_usd": 669290, "name": "Merculet", "network": "eth", "shortcut": "MVP", @@ -16484,7 +16653,7 @@ "links": { "Homepage": "https://www.restartenergy.io" }, - "marketcap_usd": 7065003, + "marketcap_usd": 7530076, "name": "RED MWAT", "network": "eth", "shortcut": "MWAT", @@ -16511,7 +16680,7 @@ "links": { "Homepage": "https://mysterium.network" }, - "marketcap_usd": 1054573, + "marketcap_usd": 1557223, "name": "Mysterium", "network": "eth", "shortcut": "MYST", @@ -16566,7 +16735,7 @@ "Github": "https://github.com/NANJ-COIN", "Homepage": "https://nanjcoin.com/" }, - "marketcap_usd": 2648951, + "marketcap_usd": 2653605, "name": "NANJCOIN", "network": "eth", "shortcut": "NANJ", @@ -16594,7 +16763,7 @@ "Github": "https://github.com/naviworld", "Homepage": "https://naviaddress.com" }, - "marketcap_usd": 271973, + "marketcap_usd": 224217, "name": "NaviToken", "network": "eth", "shortcut": "NAVI", @@ -16622,7 +16791,7 @@ "Github": "https://github.com/nebulaai", "Homepage": "https://tokensale.nebula-ai.network" }, - "marketcap_usd": 1115390, + "marketcap_usd": 1341924, "name": "NebulaAiToken", "network": "eth", "shortcut": "NBAI", @@ -16649,11 +16818,11 @@ "links": { "Homepage": "https://niobiumcoin.io" }, - "marketcap_usd": 565235, + "marketcap_usd": 503229, "name": "Niobium Coin", "network": "eth", "shortcut": "NBC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -16676,12 +16845,12 @@ "links": { "Homepage": "https://nucleus.vision" }, - "marketcap_usd": 9313269, + "marketcap_usd": 9929696, "name": "Nucleus Vision", "network": "eth", "shortcut": "NCASH", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -16704,7 +16873,7 @@ "Github": "https://github.com/polyswarm", "Homepage": "https://polyswarm.io" }, - "marketcap_usd": 2783733, + "marketcap_usd": 3012181, "name": "Nectar", "network": "eth", "shortcut": "NCT", @@ -16731,7 +16900,7 @@ "links": { "Homepage": "https://neverdie.com" }, - "marketcap_usd": 146653, + "marketcap_usd": 107677, "name": "Neverdie", "network": "eth", "shortcut": "NDC", @@ -16759,12 +16928,12 @@ "Github": "https://github.com/ndexnetwork/NDX", "Homepage": "https://ndexnetwork.com" }, - "marketcap_usd": 98638, + "marketcap_usd": 90420, "name": "nDEX", "network": "eth", "shortcut": "NDX", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -16787,7 +16956,7 @@ "Github": "https://github.com/ethfinex/", "Homepage": "https://nectar.community" }, - "marketcap_usd": 13754867, + "marketcap_usd": 25036030, "name": "Ethfinex Nectar Token", "network": "eth", "shortcut": "NEC", @@ -16818,7 +16987,7 @@ "name": "NEEO", "network": "eth", "shortcut": "NEEO", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -16869,7 +17038,7 @@ "Github": "https://github.com/neufund", "Homepage": "https://neufund.org" }, - "marketcap_usd": 6206205, + "marketcap_usd": 6321424, "name": "NEU Fund", "network": "eth", "shortcut": "NEU", @@ -16896,11 +17065,11 @@ "links": { "Homepage": "http://nexo.io" }, - "marketcap_usd": 30990804, + "marketcap_usd": 52981060, "name": "Nexo", "network": "eth", "shortcut": "NEXO", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -16923,7 +17092,7 @@ "links": { "Homepage": "https://www.nagaico.com" }, - "marketcap_usd": 2701178, + "marketcap_usd": 3685815, "name": "NAGA Coin", "network": "eth", "shortcut": "NGC", @@ -16978,11 +17147,11 @@ "links": { "Homepage": "https://auton.io" }, - "marketcap_usd": 709494, + "marketcap_usd": 803048, "name": "Autonio", "network": "eth", "shortcut": "NIO", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -17004,10 +17173,10 @@ "address": "0x1776e1F26f98b1A5dF9cD347953a26dd3Cb46671", "links": { "Github": "https://github.com/numerai", - "Homepage": "https://numer.ai/homepage" + "Homepage": "https://numer.ai" }, - "marketcap_usd": 4610683, - "name": "NMR", + "marketcap_usd": 6134771, + "name": "Numerai", "network": "eth", "shortcut": "NMR", "t1_enabled": "yes", @@ -17033,11 +17202,11 @@ "links": { "Homepage": "https://noahcoin.org" }, - "marketcap_usd": 5770664, + "marketcap_usd": 5489091, "name": "Noah Coin", "network": "eth", "shortcut": "NOAH", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -17060,11 +17229,11 @@ "links": { "Homepage": "https://nobscrypto.com" }, - "marketcap_usd": 170201, + "marketcap_usd": 117190, "name": "No BS Crypto", "network": "eth", "shortcut": "NOBS", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -17088,8 +17257,8 @@ "Github": "https://github.com/nitrotoken/nitro-crowdsale", "Homepage": "https://nitro.live" }, - "marketcap_usd": 45918, - "name": "NOX", + "marketcap_usd": 46179, + "name": "Nitro", "network": "eth", "shortcut": "NOX", "t1_enabled": "yes", @@ -17116,7 +17285,7 @@ "Github": "https://github.com/NperProject", "Homepage": "https://nper.io" }, - "marketcap_usd": 410691, + "marketcap_usd": 368476, "name": "NPER", "network": "eth", "shortcut": "NPER", @@ -17143,11 +17312,11 @@ "links": { "Homepage": "https://napoleonx.ai" }, - "marketcap_usd": 4188495, + "marketcap_usd": 5738525, "name": "NaPoleonX", "network": "eth", "shortcut": "NPX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -17171,7 +17340,7 @@ "Github": "https://github.com/pundix", "Homepage": "https://pundix.com" }, - "marketcap_usd": 101872734, + "marketcap_usd": 115435602, "name": "Pundi X Token", "network": "eth", "shortcut": "NPXS", @@ -17198,11 +17367,11 @@ "links": { "Homepage": "https://fujinto.io" }, - "marketcap_usd": 4471, + "marketcap_usd": 2541, "name": "Fujinto", "network": "eth", "shortcut": "NTO", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -17306,7 +17475,7 @@ "links": { "Homepage": "https://beyond-the-void.net" }, - "marketcap_usd": 332749, + "marketcap_usd": 381333, "name": "Nexium", "network": "eth", "shortcut": "NxC", @@ -17360,7 +17529,7 @@ "links": { "Homepage": "https://www.openanx.org/en" }, - "marketcap_usd": 3005852, + "marketcap_usd": 3233006, "name": "OAX", "network": "eth", "shortcut": "OAX", @@ -17415,11 +17584,11 @@ "links": { "Homepage": "http://www.ocnex.net" }, - "marketcap_usd": 12738624, + "marketcap_usd": 14152176, "name": "Odyssey", "network": "eth", "shortcut": "OCN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -17443,7 +17612,7 @@ "Github": "https://github.com/odemio", "Homepage": "https://odem.io/" }, - "marketcap_usd": 45772882, + "marketcap_usd": 45044409, "name": "ODEM Token", "network": "eth", "shortcut": "ODE", @@ -17526,11 +17695,11 @@ "links": { "Homepage": "http://www.olivecoin.co" }, - "marketcap_usd": 263868, + "marketcap_usd": 350625, "name": "Olive", "network": "eth", "shortcut": "OLE", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -17554,7 +17723,7 @@ "Github": "https://github.com/Oneledger", "Homepage": "https://oneledger.io" }, - "marketcap_usd": 947019, + "marketcap_usd": 1058973, "name": "OneLedger Token", "network": "eth", "shortcut": "OLT", @@ -17582,7 +17751,7 @@ "Github": "https://github.com/omisego", "Homepage": "https://omg.omise.co" }, - "marketcap_usd": 147109507, + "marketcap_usd": 174788057, "name": "OmiseGO", "network": "eth", "shortcut": "OMG", @@ -17637,11 +17806,11 @@ "links": { "Homepage": "https://shivom.io" }, - "marketcap_usd": 555507, + "marketcap_usd": 538565, "name": "Shivom", "network": "eth", "shortcut": "OMX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -17665,12 +17834,12 @@ "Github": "https://github.com/MenloOne/", "Homepage": "https://www.menlo.one" }, - "marketcap_usd": 245970, + "marketcap_usd": 224978, "name": "Menlo One", "network": "eth", "shortcut": "ONE", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -17714,16 +17883,44 @@ } ] }, + "erc20:eth:ONG": { + "address": "0xd341d1680Eeee3255b8C4c75bCCE7EB57f144dAe", + "links": { + "Github": "https://github.com/onGsocial", + "Homepage": "https://somee.social" + }, + "marketcap_usd": 190149, + "name": "SoMee.Social", + "network": "eth", + "shortcut": "ONG", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, "erc20:eth:ONL": { "address": "0x6863bE0e7CF7ce860A574760e9020D519a8bDC47", "links": { "Homepage": "https://on.live" }, - "marketcap_usd": 1020698, + "marketcap_usd": 938639, "name": "On.Live", "network": "eth", "shortcut": "ONL", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -17746,7 +17943,7 @@ "links": { "Homepage": "https://opus-foundation.org" }, - "marketcap_usd": 927641, + "marketcap_usd": 249226, "name": "Opus Foundation", "network": "eth", "shortcut": "OPT", @@ -17773,11 +17970,11 @@ "links": { "Homepage": "https://optitoken.io" }, - "marketcap_usd": 603996, + "marketcap_usd": 444670, "name": "OptiToken", "network": "eth", "shortcut": "OPTI", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -17856,11 +18053,11 @@ "links": { "Homepage": "https://ori.network" }, - "marketcap_usd": 42211, + "marketcap_usd": 67527, "name": "Origami", "network": "eth", "shortcut": "ORI", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -17883,11 +18080,11 @@ "links": { "Homepage": "https://ormeuscoin.com" }, - "marketcap_usd": 1627747, + "marketcap_usd": 1781938, "name": "Ormeus Coin", "network": "eth", "shortcut": "ORME", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -17910,11 +18107,11 @@ "links": { "Homepage": "https://www.originsport.io" }, - "marketcap_usd": 207587, + "marketcap_usd": 276847, "name": "Origin Sport", "network": "eth", "shortcut": "ORS", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -17938,7 +18135,7 @@ "Github": "https://github.com/OpenSTFoundation", "Homepage": "https://simpletoken.org" }, - "marketcap_usd": 10021420, + "marketcap_usd": 12496323, "name": "Simple Token 'OST'", "network": "eth", "shortcut": "OST", @@ -17965,11 +18162,11 @@ "links": { "Homepage": "https://otn.org" }, - "marketcap_usd": 137779, + "marketcap_usd": 135455, "name": "Open Trading Network", "network": "eth", "shortcut": "OTN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -17993,7 +18190,7 @@ "Github": "https://github.com/owndata", "Homepage": "https://owndata.network" }, - "marketcap_usd": 787053, + "marketcap_usd": 770223, "name": "OWNDATA", "network": "eth", "shortcut": "OWN", @@ -18048,11 +18245,11 @@ "links": { "Homepage": "https://www.pchain.org" }, - "marketcap_usd": 3977700, + "marketcap_usd": 6215858, "name": "PCHAIN", "network": "eth", "shortcut": "PAI", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -18076,7 +18273,7 @@ "Github": "https://github.com/policypalnet", "Homepage": "https://www.policypal.network" }, - "marketcap_usd": 2078221, + "marketcap_usd": 2462705, "name": "PolicyPal Network", "network": "eth", "shortcut": "PAL", @@ -18104,7 +18301,7 @@ "Github": "https://github.com/ParetoNetwork", "Homepage": "https://pareto.network" }, - "marketcap_usd": 484733, + "marketcap_usd": 369633, "name": "PARETO", "network": "eth", "shortcut": "PARETO", @@ -18131,12 +18328,12 @@ "links": { "Homepage": "https://patron-influencers.com" }, - "marketcap_usd": 832649, + "marketcap_usd": 746885, "name": "Patron", "network": "eth", "shortcut": "PAT", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -18214,11 +18411,11 @@ "Github": "https://github.com/paxosglobal", "Homepage": "https://www.paxos.com/standard" }, - "marketcap_usd": 123468213, + "marketcap_usd": 113137103, "name": "Paxos Standard (PAX)", "network": "eth", "shortcut": "PAX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -18241,7 +18438,7 @@ "links": { "Homepage": "http://www.tenx.tech" }, - "marketcap_usd": 26668566, + "marketcap_usd": 26059504, "name": "TenX", "network": "eth", "shortcut": "PAY", @@ -18323,7 +18520,7 @@ "Github": "https://github.com/PeculiumPCL/Peculium", "Homepage": "https://peculium.io" }, - "marketcap_usd": 2491098, + "marketcap_usd": 3582683, "name": "Peculium", "network": "eth", "shortcut": "PCL", @@ -18383,7 +18580,7 @@ "name": "PDATA", "network": "eth", "shortcut": "PDATA", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -18461,11 +18658,11 @@ "links": { "Homepage": "https://payfair.io" }, - "marketcap_usd": 449381, + "marketcap_usd": 0, "name": "Payfair", "network": "eth", "shortcut": "PFR", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -18488,11 +18685,11 @@ "links": { "Homepage": "https://www.phitoken.io" }, - "marketcap_usd": 459536, + "marketcap_usd": 904444, "name": "PHI Token", "network": "eth", "shortcut": "PHI", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -18515,7 +18712,7 @@ "links": { "Homepage": "https://piplcoin.com" }, - "marketcap_usd": 0, + "marketcap_usd": 233850, "name": "PIPL Coin", "network": "eth", "shortcut": "PIPL", @@ -18546,8 +18743,8 @@ "name": "Paypite v2", "network": "eth", "shortcut": "PIT", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -18569,7 +18766,7 @@ "links": { "Homepage": "https://www.lampix.co" }, - "marketcap_usd": 543352, + "marketcap_usd": 456334, "name": "Lampix", "network": "eth", "shortcut": "PIX", @@ -18596,11 +18793,11 @@ "links": { "Homepage": "http://pkgtoken.io" }, - "marketcap_usd": 55925, + "marketcap_usd": 66227, "name": "PKG Token", "network": "eth", "shortcut": "PKG", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -18623,11 +18820,11 @@ "links": { "Homepage": "https://playkey.io" }, - "marketcap_usd": 340815, + "marketcap_usd": 778457, "name": "Playkey", "network": "eth", "shortcut": "PKT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -18677,7 +18874,7 @@ "links": { "Homepage": "https://polybius.io" }, - "marketcap_usd": 3730563, + "marketcap_usd": 4715537, "name": "Polybius", "network": "eth", "shortcut": "PLBT", @@ -18705,7 +18902,7 @@ "Github": "https://github.com/twentythirty/PillarToken", "Homepage": "https://www.pillarproject.io" }, - "marketcap_usd": 8198372, + "marketcap_usd": 6916968, "name": "Pillar Project", "network": "eth", "shortcut": "PLR", @@ -18760,7 +18957,7 @@ "links": { "Homepage": "https://plutus.it" }, - "marketcap_usd": 525628, + "marketcap_usd": 1608010, "name": "Pluton", "network": "eth", "shortcut": "PLU", @@ -18787,11 +18984,11 @@ "links": { "Homepage": "https://pumapay.io" }, - "marketcap_usd": 11372564, + "marketcap_usd": 10597751, "name": "PumaPay", "network": "eth", "shortcut": "PMA", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -18814,11 +19011,11 @@ "links": { "Homepage": "https://paymon.org" }, - "marketcap_usd": 555286, + "marketcap_usd": 297683, "name": "Paymon", "network": "eth", "shortcut": "PMNT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -18842,11 +19039,11 @@ "Github": "https://github.com/kleros", "Homepage": "https://kleros.io" }, - "marketcap_usd": 922891, + "marketcap_usd": 1320234, "name": "Pinakion", "network": "eth", "shortcut": "PNK", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -18869,7 +19066,7 @@ "links": { "Homepage": "https://po.et" }, - "marketcap_usd": 11292534, + "marketcap_usd": 14435861, "name": "Po.et Tokens", "network": "eth", "shortcut": "POE", @@ -18923,11 +19120,11 @@ "links": { "Homepage": "https://clearpoll.com" }, - "marketcap_usd": 548902, + "marketcap_usd": 597209, "name": "ClearPoll", "network": "eth", "shortcut": "POLL", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -18950,7 +19147,7 @@ "links": { "Homepage": "https://polymath.network" }, - "marketcap_usd": 26215202, + "marketcap_usd": 31033565, "name": "Polymath Network", "network": "eth", "shortcut": "POLY", @@ -19009,8 +19206,8 @@ "name": "POP Network Token", "network": "eth", "shortcut": "POP", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -19033,7 +19230,7 @@ "Github": "https://github.com/PoSToken", "Homepage": "https://postoken.org" }, - "marketcap_usd": 5936, + "marketcap_usd": 4256, "name": "PoSToken", "network": "eth", "shortcut": "POS", @@ -19060,7 +19257,7 @@ "links": { "Homepage": "https://powerledger.io" }, - "marketcap_usd": 30118949, + "marketcap_usd": 36440872, "name": "PowerLedger", "network": "eth", "shortcut": "POWR", @@ -19087,7 +19284,7 @@ "links": { "Homepage": "https://www.paypie.com" }, - "marketcap_usd": 7659718, + "marketcap_usd": 5340122, "name": "PayPie", "network": "eth", "shortcut": "PPP", @@ -19114,7 +19311,7 @@ "links": { "Homepage": "https://populous.co" }, - "marketcap_usd": 62511100, + "marketcap_usd": 65599204, "name": "Populous", "network": "eth", "shortcut": "PPT", @@ -19141,7 +19338,7 @@ "links": { "Homepage": "https://presearch.io" }, - "marketcap_usd": 4008494, + "marketcap_usd": 6281636, "name": "Presearch", "network": "eth", "shortcut": "PRE", @@ -19169,7 +19366,7 @@ "Github": "https://github.com/paragon-coin/token", "Homepage": "https://paragoncoin.com" }, - "marketcap_usd": 5973962, + "marketcap_usd": 11148223, "name": "Paragon", "network": "eth", "shortcut": "PRG", @@ -19196,11 +19393,11 @@ "links": { "Homepage": "https://privatix.io" }, - "marketcap_usd": 742319, + "marketcap_usd": 1139231, "name": "Privatix", "network": "eth", "shortcut": "PRIX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -19333,11 +19530,11 @@ "links": { "Homepage": "https://primas.io" }, - "marketcap_usd": 4226910, + "marketcap_usd": 4781782, "name": "Primas", "network": "eth", "shortcut": "PST", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -19388,8 +19585,8 @@ "links": { "Homepage": "https://patientory.com" }, - "marketcap_usd": 925514, - "name": "PTOY", + "marketcap_usd": 1098705, + "name": "Patientory", "network": "eth", "shortcut": "PTOY", "t1_enabled": "yes", @@ -19415,11 +19612,11 @@ "links": { "Homepage": "https://www.proton.global" }, - "marketcap_usd": 256535, + "marketcap_usd": 343134, "name": "Proton Token", "network": "eth", "shortcut": "PTT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -19553,11 +19750,11 @@ "links": { "Homepage": "https://pylon-network.org" }, - "marketcap_usd": 310723, + "marketcap_usd": 279201, "name": "Pylon Network", "network": "eth", "shortcut": "PYLNT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -19580,7 +19777,7 @@ "links": { "Homepage": "https://liquid.plus" }, - "marketcap_usd": 22434952, + "marketcap_usd": 40105578, "name": "QASH", "network": "eth", "shortcut": "QASH", @@ -19662,11 +19859,11 @@ "links": { "Homepage": "https://quarkchain.io" }, - "marketcap_usd": 24047016, + "marketcap_usd": 30264460, "name": "QuarkChain", "network": "eth", "shortcut": "QKC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -19690,7 +19887,7 @@ "Github": "https://github.com/quantnetwork", "Homepage": "https://www.quant.network/" }, - "marketcap_usd": 28166620, + "marketcap_usd": 38634487, "name": "Quant", "network": "eth", "shortcut": "QNT", @@ -19773,7 +19970,7 @@ "Github": "https://github.com/quantstamp", "Homepage": "https://quantstamp.com/" }, - "marketcap_usd": 8649280, + "marketcap_usd": 10523094, "name": "Quantstamp Token", "network": "eth", "shortcut": "QSP", @@ -19856,11 +20053,11 @@ "links": { "Homepage": "https://qunqun.io" }, - "marketcap_usd": 1864517, + "marketcap_usd": 2453622, "name": "QunQun", "network": "eth", "shortcut": "QUN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -19883,11 +20080,11 @@ "links": { "Homepage": "https://revain.org" }, - "marketcap_usd": 68428291, + "marketcap_usd": 55261188, "name": "Revain", "network": "eth", "shortcut": "R", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -19938,12 +20135,12 @@ "links": { "Homepage": "http://token.dprating.com" }, - "marketcap_usd": 427402, + "marketcap_usd": 513370, "name": "DPRating", "network": "eth", "shortcut": "RATING", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -19966,7 +20163,7 @@ "Github": "https://github.com/rublixdev", "Homepage": "https://rublix.io/" }, - "marketcap_usd": 4119955, + "marketcap_usd": 3252204, "name": "Rublix", "network": "eth", "shortcut": "RBLX", @@ -19994,7 +20191,7 @@ "Github": "https://github.com/ripio/rcn-token", "Homepage": "https://ripiocredit.network" }, - "marketcap_usd": 5192075, + "marketcap_usd": 10660385, "name": "Ripio Credit Network", "network": "eth", "shortcut": "RCN", @@ -20022,11 +20219,11 @@ "Github": "https://github.com/raiden-network/raiden/", "Homepage": "https://raiden.network" }, - "marketcap_usd": 10333660, + "marketcap_usd": 15150466, "name": "Raiden Network", "network": "eth", "shortcut": "RDN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -20076,11 +20273,11 @@ "links": { "Homepage": "https://www.real.markets" }, - "marketcap_usd": 913674, + "marketcap_usd": 535981, "name": "Real Estate Asset Ledger", "network": "eth", "shortcut": "REAL", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -20103,7 +20300,7 @@ "links": { "Homepage": "https://www.rebellious.io" }, - "marketcap_usd": 419595, + "marketcap_usd": 538184, "name": "Rebellious", "network": "eth", "shortcut": "REBL", @@ -20131,7 +20328,7 @@ "Github": "https://github.com/red", "Homepage": "https://ico.red-lang.org" }, - "marketcap_usd": 814167, + "marketcap_usd": 769036, "name": "Red Community Token", "network": "eth", "shortcut": "RED", @@ -20186,11 +20383,11 @@ "links": { "Homepage": "https://reftoken.io" }, - "marketcap_usd": 406592, + "marketcap_usd": 358257, "name": "RefToken", "network": "eth", "shortcut": "REF", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -20213,11 +20410,11 @@ "links": { "Homepage": "https://remme.io" }, - "marketcap_usd": 2597128, + "marketcap_usd": 3065132, "name": "Remme", "network": "eth", "shortcut": "REM", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -20245,8 +20442,8 @@ "name": "REMI", "network": "eth", "shortcut": "REMI", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -20269,7 +20466,7 @@ "Github": "https://github.com/republicprotocol", "Homepage": "https://republicprotocol.com" }, - "marketcap_usd": 10247033, + "marketcap_usd": 11639488, "name": "Republic Token", "network": "eth", "shortcut": "REN", @@ -20296,11 +20493,11 @@ "links": { "Homepage": "https://augur.net" }, - "marketcap_usd": 144459793, + "marketcap_usd": 138208427, "name": "Augur", "network": "eth", "shortcut": "REP", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -20323,7 +20520,7 @@ "links": { "Homepage": "https://request.network" }, - "marketcap_usd": 13844169, + "marketcap_usd": 15764003, "name": "Request Network", "network": "eth", "shortcut": "REQ", @@ -20351,8 +20548,8 @@ "Github": "https://github.com/rexmls/RexToken", "Homepage": "https://imbrex.io" }, - "marketcap_usd": 170910, - "name": "REX", + "marketcap_usd": 351774, + "name": "imbrex", "network": "eth", "shortcut": "REX", "t1_enabled": "yes", @@ -20378,7 +20575,7 @@ "links": { "Homepage": "https://refereum.com" }, - "marketcap_usd": 6704046, + "marketcap_usd": 6335094, "name": "Refereum", "network": "eth", "shortcut": "RFR", @@ -20405,11 +20602,11 @@ "links": { "Homepage": "https://www.rchain.coop" }, - "marketcap_usd": 10038551, + "marketcap_usd": 6231436, "name": "RChain", "network": "eth", "shortcut": "RHOC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -20460,11 +20657,11 @@ "links": { "Homepage": "http://etheriya.com" }, - "marketcap_usd": 130093, + "marketcap_usd": 129356, "name": "Etheriya", "network": "eth", "shortcut": "RIYA", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -20487,7 +20684,7 @@ "links": { "Homepage": "http://crowdsale.iex.ec" }, - "marketcap_usd": 18244051, + "marketcap_usd": 26852063, "name": "IEx.ec", "network": "eth", "shortcut": "RLC", @@ -20515,8 +20712,8 @@ "Github": "https://github.com/Smartroulette", "Homepage": "https://smartplay.tech" }, - "marketcap_usd": 44508, - "name": "RLT", + "marketcap_usd": 62488, + "name": "RouletteToken", "network": "eth", "shortcut": "RLT", "t1_enabled": "yes", @@ -20569,7 +20766,7 @@ "links": { "Homepage": "http://www.relex.io" }, - "marketcap_usd": 251412, + "marketcap_usd": 291138, "name": "Relex", "network": "eth", "shortcut": "RLX", @@ -20597,11 +20794,11 @@ "Github": "https://github.com/rightmesh", "Homepage": "https://www.rightmesh.io/" }, - "marketcap_usd": 1776938, + "marketcap_usd": 2076519, "name": "RightMesh Token", "network": "eth", "shortcut": "RMESH", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -20651,11 +20848,11 @@ "links": { "Homepage": "https://www.oneroot.io/en" }, - "marketcap_usd": 19729061, + "marketcap_usd": 17805225, "name": "OneRoot Network", "network": "eth", "shortcut": "RNT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -20678,11 +20875,11 @@ "links": { "Homepage": "https://bitrent.io" }, - "marketcap_usd": 355811, + "marketcap_usd": 197535, "name": "BitRent", "network": "eth", "shortcut": "RNTB", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -20733,11 +20930,11 @@ "links": { "Homepage": "https://icerockmining.io" }, - "marketcap_usd": 2665054, + "marketcap_usd": 218854, "name": "ICE ROCK MINING", "network": "eth", "shortcut": "ROCK2", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -20764,7 +20961,7 @@ "name": "ICE ROCK MINING", "network": "eth", "shortcut": "ROCK2PAY", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -20841,11 +21038,11 @@ "links": { "Homepage": "https://ab-chain.com" }, - "marketcap_usd": 303399, + "marketcap_usd": 283722, "name": "AB-Chain RTB", "network": "eth", "shortcut": "RTB", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -20868,11 +21065,11 @@ "links": { "Homepage": "https://www.rotharium.io" }, - "marketcap_usd": 3170749, + "marketcap_usd": 3963534, "name": "Rotharium", "network": "eth", "shortcut": "RTH", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -20923,11 +21120,11 @@ "links": { "Homepage": "http://ruffchain.com" }, - "marketcap_usd": 8888103, + "marketcap_usd": 10206037, "name": "Ruff", "network": "eth", "shortcut": "RUFF", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -20955,7 +21152,7 @@ "name": "Rune", "network": "eth", "shortcut": "RUNE", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -21005,7 +21202,7 @@ "links": { "Homepage": "https://rivetzintl.com" }, - "marketcap_usd": 982338, + "marketcap_usd": 1184769, "name": "Rivetz", "network": "eth", "shortcut": "RVT", @@ -21090,7 +21287,7 @@ "name": "Smart Application Chain", "network": "eth", "shortcut": "SAC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -21113,7 +21310,7 @@ "links": { "Homepage": "https://saltlending.com" }, - "marketcap_usd": 16220301, + "marketcap_usd": 10851200, "name": "Salt Lending Token", "network": "eth", "shortcut": "SALT", @@ -21140,7 +21337,7 @@ "links": { "Homepage": "https://santiment.net" }, - "marketcap_usd": 24825852, + "marketcap_usd": 31903807, "name": "Santiment", "network": "eth", "shortcut": "SAN", @@ -21194,7 +21391,7 @@ "links": { "Homepage": "https://ico.nexus.social" }, - "marketcap_usd": 284805, + "marketcap_usd": 309179, "name": "SocialCoin", "network": "eth", "shortcut": "SCL", @@ -21221,11 +21418,11 @@ "links": { "Homepage": "https://www.scroll.network" }, - "marketcap_usd": 5975034, + "marketcap_usd": 6456511, "name": "SCRL", "network": "eth", "shortcut": "SCRL", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -21248,12 +21445,12 @@ "links": { "Homepage": "http://seele.pro" }, - "marketcap_usd": 1887639, + "marketcap_usd": 2792031, "name": "Seele", "network": "eth", "shortcut": "SEELE", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -21275,11 +21472,11 @@ "links": { "Homepage": "https://www.sentinel-chain.org" }, - "marketcap_usd": 713997, + "marketcap_usd": 605564, "name": "Sentinel Chain", "network": "eth", "shortcut": "SENC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -21302,7 +21499,7 @@ "links": { "Homepage": "https://sensay.it" }, - "marketcap_usd": 613014, + "marketcap_usd": 2412136, "name": "Sensay", "network": "eth", "shortcut": "SENSE", @@ -21329,11 +21526,11 @@ "links": { "Homepage": "https://sentinel.co" }, - "marketcap_usd": 1911127, + "marketcap_usd": 2565874, "name": "SENTinel", "network": "eth", "shortcut": "SENT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -21438,11 +21635,11 @@ "links": { "Homepage": "https://signals.network" }, - "marketcap_usd": 2958696, + "marketcap_usd": 339261, "name": "Signals Network", "network": "eth", "shortcut": "SGN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -21465,11 +21662,11 @@ "links": { "Homepage": "http://sugarexchange.io" }, - "marketcap_usd": 95147, + "marketcap_usd": 66649, "name": "Sugar Exchange", "network": "eth", "shortcut": "SGR", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -21492,11 +21689,11 @@ "links": { "Homepage": "https://www.shipchain.io" }, - "marketcap_usd": 1070833, + "marketcap_usd": 1737853, "name": "ShipChain", "network": "eth", "shortcut": "SHIP", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -21546,11 +21743,11 @@ "links": { "Homepage": "https://sharpe.capital" }, - "marketcap_usd": 727155, + "marketcap_usd": 617429, "name": "Sharpe Platform Token", "network": "eth", "shortcut": "SHP", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -21601,7 +21798,7 @@ "Github": "https://github.com/SpectivOfficial", "Homepage": "https://spectivvr.com" }, - "marketcap_usd": 285889, + "marketcap_usd": 350858, "name": "Signal", "network": "eth", "shortcut": "SIG", @@ -21628,11 +21825,11 @@ "links": { "Homepage": "https://www.skb-coin.jp/en" }, - "marketcap_usd": 2710093, + "marketcap_usd": 3487815, "name": "Sakura Bloom", "network": "eth", "shortcut": "SKB", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -21659,8 +21856,8 @@ "name": "Super Keep Token", "network": "eth", "shortcut": "SKE", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -21683,7 +21880,7 @@ "Github": "https://github.com/Steamtradenet/smart-contract", "Homepage": "https://skincoin.org" }, - "marketcap_usd": 462858, + "marketcap_usd": 277789, "name": "SKIN", "network": "eth", "shortcut": "SKIN", @@ -21710,11 +21907,11 @@ "links": { "Homepage": "https://skrumble.network" }, - "marketcap_usd": 2136997, + "marketcap_usd": 2086873, "name": "Skrumble Network", "network": "eth", "shortcut": "SKM", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -21796,8 +21993,8 @@ "name": "Skymap Token", "network": "eth", "shortcut": "SKYM", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -21874,11 +22071,11 @@ "links": { "Homepage": "https://smscoin.jp/en" }, - "marketcap_usd": 69319, + "marketcap_usd": 463260, "name": "Speed Mining Service", "network": "eth", "shortcut": "SMS", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -21901,7 +22098,7 @@ "links": { "Homepage": "https://suncontract.org" }, - "marketcap_usd": 1617262, + "marketcap_usd": 2045598, "name": "SunContract", "network": "eth", "shortcut": "SNC", @@ -21983,7 +22180,7 @@ "links": { "Homepage": "https://singulardtv.com" }, - "marketcap_usd": 6554382, + "marketcap_usd": 8411615, "name": "SingularDTV", "network": "eth", "shortcut": "SNGLS", @@ -22038,8 +22235,8 @@ "Github": "https://github.com/sonm-io", "Homepage": "https://sonm.com" }, - "marketcap_usd": 6377230, - "name": "SNM", + "marketcap_usd": 7556225, + "name": "SONM", "network": "eth", "shortcut": "SNM", "t1_enabled": "yes", @@ -22063,10 +22260,10 @@ "erc20:eth:SNOV": { "address": "0xBDC5bAC39Dbe132B1E030e898aE3830017D7d969", "links": { - "Homepage": "https://tokensale.snov.io" + "Homepage": "https://snovian.space" }, - "marketcap_usd": 825146, - "name": "SNOV", + "marketcap_usd": 625505, + "name": "Snovian.Space", "network": "eth", "shortcut": "SNOV", "t1_enabled": "yes", @@ -22092,7 +22289,7 @@ "links": { "Homepage": "https://status.im" }, - "marketcap_usd": 64297859, + "marketcap_usd": 69090052, "name": "Status Network Token", "network": "eth", "shortcut": "SNT", @@ -22119,11 +22316,11 @@ "links": { "Homepage": "https://silentnotary.com" }, - "marketcap_usd": 772692, + "marketcap_usd": 1063446, "name": "Silent Notary", "network": "eth", "shortcut": "SNTR", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -22147,12 +22344,12 @@ "Github": "https://github.com/havven/havven", "Homepage": "https://synthetix.io" }, - "marketcap_usd": 2633498, + "marketcap_usd": 3457963, "name": "Synthetix Network Token", "network": "eth", "shortcut": "SNX", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -22174,12 +22371,12 @@ "links": { "Homepage": "http://soarlabs.org" }, - "marketcap_usd": 1801271, + "marketcap_usd": 1051920, "name": "Soarcoin", "network": "eth", "shortcut": "SOAR", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -22201,11 +22398,11 @@ "links": { "Homepage": "https://www.allsportschain.com" }, - "marketcap_usd": 5051268, + "marketcap_usd": 5646240, "name": "All Sports", "network": "eth", "shortcut": "SOC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -22228,7 +22425,7 @@ "links": { "Homepage": "https://sola.foundation" }, - "marketcap_usd": 52359, + "marketcap_usd": 59455, "name": "Sola Token", "network": "eth", "shortcut": "SOL", @@ -22255,11 +22452,11 @@ "links": { "Homepage": "https://soniqproject.com" }, - "marketcap_usd": 1281648, + "marketcap_usd": 133833, "name": "Soniq", "network": "eth", "shortcut": "SONIQ", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -22283,12 +22480,12 @@ "Github": "https://github.com/cryptosoulgame", "Homepage": "https://cryptosoul.io/" }, - "marketcap_usd": 40977, + "marketcap_usd": 26117, "name": "CryptoSoul", "network": "eth", "shortcut": "SOUL", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -22310,7 +22507,7 @@ "links": { "Homepage": "https://spankchain.com" }, - "marketcap_usd": 3347505, + "marketcap_usd": 2878641, "name": "SpankChain", "network": "eth", "shortcut": "SPANK", @@ -22391,11 +22588,11 @@ "links": { "Homepage": "https://spindle.zone" }, - "marketcap_usd": 1929123, + "marketcap_usd": 1604433, "name": "SPINDLE", "network": "eth", "shortcut": "SPD", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -22418,7 +22615,7 @@ "links": { "Homepage": "https://sportyfi.io" }, - "marketcap_usd": 100550, + "marketcap_usd": 139216, "name": "Sportify", "network": "eth", "shortcut": "SPF", @@ -22445,7 +22642,7 @@ "links": { "Homepage": "https://www.sapien.network/" }, - "marketcap_usd": 279660, + "marketcap_usd": 312819, "name": "Sapien", "network": "eth", "shortcut": "SPN", @@ -22472,11 +22669,11 @@ "links": { "Homepage": "https://sp8de.com" }, - "marketcap_usd": 547260, + "marketcap_usd": 368111, "name": "Sp8de", "network": "eth", "shortcut": "SPX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -22500,7 +22697,7 @@ "Github": "https://github.com/sirin-labs/crowdsale-smart-contract", "Homepage": "https://sirinlabs.com" }, - "marketcap_usd": 13902238, + "marketcap_usd": 13870604, "name": "Sirin Labs", "network": "eth", "shortcut": "SRN", @@ -22554,11 +22751,11 @@ "links": { "Homepage": "https://smartshare.vip/#" }, - "marketcap_usd": 4558372, + "marketcap_usd": 3037067, "name": "Smartshare", "network": "eth", "shortcut": "SSP", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -22608,7 +22805,7 @@ "links": { "Homepage": "https://coinstarter.com" }, - "marketcap_usd": 153395, + "marketcap_usd": 244908, "name": "Starter Coin", "network": "eth", "shortcut": "STAC", @@ -22635,12 +22832,12 @@ "links": { "Homepage": "https://stacs.io" }, - "marketcap_usd": 9498947, + "marketcap_usd": 9291056, "name": "STACS", "network": "eth", "shortcut": "STACS", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -22662,7 +22859,7 @@ "links": { "Homepage": "http://starbase.co" }, - "marketcap_usd": 283429, + "marketcap_usd": 326003, "name": "Star Token", "network": "eth", "shortcut": "STAR", @@ -22694,7 +22891,7 @@ "name": "STABLE Token", "network": "eth", "shortcut": "STB", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -22745,7 +22942,7 @@ "links": { "Homepage": "https://stktoken.com" }, - "marketcap_usd": 809191, + "marketcap_usd": 943406, "name": "STK Token", "network": "eth", "shortcut": "STK", @@ -22800,7 +22997,7 @@ "Github": "https://github.com/Storj", "Homepage": "https://storj.io" }, - "marketcap_usd": 20505488, + "marketcap_usd": 29222108, "name": "STORJ", "network": "eth", "shortcut": "STORJ", @@ -22827,7 +23024,7 @@ "links": { "Homepage": "https://www.stormtoken.com" }, - "marketcap_usd": 14789424, + "marketcap_usd": 15486471, "name": "Storm Token", "network": "eth", "shortcut": "STORM", @@ -22883,7 +23080,7 @@ "Github": "https://github.com/Storiqa/", "Homepage": "https://storiqa.com" }, - "marketcap_usd": 2779158, + "marketcap_usd": 3107210, "name": "Storiqa", "network": "eth", "shortcut": "STQ", @@ -22910,11 +23107,11 @@ "links": { "Homepage": "https://staker.network" }, - "marketcap_usd": 4593, + "marketcap_usd": 2994, "name": "Staker", "network": "eth", "shortcut": "STR", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -22965,11 +23162,11 @@ "links": { "Homepage": "https://bitjob.io" }, - "marketcap_usd": 143323, + "marketcap_usd": 169193, "name": "bitJob", "network": "eth", "shortcut": "STU", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -22993,7 +23190,7 @@ "Github": "https://github.com/stx-technologies/stox-token", "Homepage": "https://www.stox.com" }, - "marketcap_usd": 796337, + "marketcap_usd": 806786, "name": "StoxToken", "network": "eth", "shortcut": "STX", @@ -23047,11 +23244,11 @@ "links": { "Homepage": "https://www.suretly.com" }, - "marketcap_usd": 138456, + "marketcap_usd": 166436, "name": "Suretly", "network": "eth", "shortcut": "SUR", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -23074,11 +23271,11 @@ "links": { "Homepage": "https://ico.savedroid.com" }, - "marketcap_usd": 942742, + "marketcap_usd": 740742, "name": "savedroid", "network": "eth", "shortcut": "SVD", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -23101,11 +23298,11 @@ "links": { "Homepage": "http://www.swftcoin.com" }, - "marketcap_usd": 3422170, + "marketcap_usd": 3525517, "name": "SwftCoin", "network": "eth", "shortcut": "SWFTC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -23129,7 +23326,7 @@ "Github": "https://github.com/swarmfund", "Homepage": "https://swarm.fund" }, - "marketcap_usd": 7475899, + "marketcap_usd": 6305535, "name": "Swarm Fund Token", "network": "eth", "shortcut": "SWM", @@ -23156,7 +23353,7 @@ "links": { "Homepage": "http://swarm.city" }, - "marketcap_usd": 943635, + "marketcap_usd": 984057, "name": "Swarm City Token", "network": "eth", "shortcut": "SWT", @@ -23183,7 +23380,7 @@ "links": { "Homepage": "http://www.spectre.ai" }, - "marketcap_usd": 18767290, + "marketcap_usd": 18244526, "name": "Spectre.ai D-Token", "network": "eth", "shortcut": "SXDT", @@ -23210,7 +23407,7 @@ "links": { "Homepage": "http://www.spectre.ai" }, - "marketcap_usd": 1449133, + "marketcap_usd": 1701595, "name": "Spectre.ai U-Token", "network": "eth", "shortcut": "SXUT", @@ -23291,11 +23488,11 @@ "links": { "Homepage": "https://www.talao.io" }, - "marketcap_usd": 196566, + "marketcap_usd": 366722, "name": "Talao", "network": "eth", "shortcut": "TALAO", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -23319,7 +23516,7 @@ "Github": "https://github.com/lamden", "Homepage": "https://www.lamden.io" }, - "marketcap_usd": 3357963, + "marketcap_usd": 3895492, "name": "Lamden Tau", "network": "eth", "shortcut": "TAU", @@ -23402,11 +23599,11 @@ "links": { "Homepage": "https://tokenbox.io" }, - "marketcap_usd": 162734, + "marketcap_usd": 266030, "name": "Tokenbox", "network": "eth", "shortcut": "TBX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -23457,11 +23654,11 @@ "links": { "Homepage": "https://www.thorecash.com" }, - "marketcap_usd": 33733, + "marketcap_usd": 14954, "name": "Thore Cash", "network": "eth", "shortcut": "TCH", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -23511,11 +23708,11 @@ "links": { "Homepage": "https://tokenstars.com/team" }, - "marketcap_usd": 19082, + "marketcap_usd": 52639, "name": "TEAM (TokenStars)", "network": "eth", "shortcut": "TEAM", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -23538,11 +23735,11 @@ "links": { "Homepage": "https://www.tokenomy.com" }, - "marketcap_usd": 9849505, + "marketcap_usd": 10335862, "name": "Tokenomy", "network": "eth", "shortcut": "TEN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -23565,11 +23762,11 @@ "links": { "Homepage": "https://ico.tefoodint.com" }, - "marketcap_usd": 3446106, + "marketcap_usd": 3603816, "name": "TE-FOOD", "network": "eth", "shortcut": "TFD", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -23593,7 +23790,7 @@ "Github": "https://github.com/TrueFlip", "Homepage": "https://trueflip.io" }, - "marketcap_usd": 1157308, + "marketcap_usd": 1415888, "name": "TrueFlip", "network": "eth", "shortcut": "TFL", @@ -23620,11 +23817,11 @@ "links": { "Homepage": "https://ico.truegame.io" }, - "marketcap_usd": 712493, + "marketcap_usd": 860006, "name": "Truegame", "network": "eth", "shortcut": "TGAME", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -23647,11 +23844,11 @@ "links": { "Homepage": "https://www.tgtcoins.com" }, - "marketcap_usd": 294965, + "marketcap_usd": 1029624, "name": "Target Coin", "network": "eth", "shortcut": "TGT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -23674,7 +23871,7 @@ "links": { "Homepage": "https://www.thetatoken.org/" }, - "marketcap_usd": 50110850, + "marketcap_usd": 139266739, "name": "Theta Token", "network": "eth", "shortcut": "THETA", @@ -23701,11 +23898,11 @@ "links": { "Homepage": "https://www.thorecoin.com" }, - "marketcap_usd": 26299, + "marketcap_usd": 26085945, "name": "ThoreCoin", "network": "eth", "shortcut": "THR", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -23728,11 +23925,11 @@ "links": { "Homepage": "https://ico.thrivelabs.io" }, - "marketcap_usd": 708106, + "marketcap_usd": 749485, "name": "Thrive Token", "network": "eth", "shortcut": "THRT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -23778,43 +23975,16 @@ } ] }, - "erc20:eth:TIC": { - "address": "0x72430A612Adc007c50e3b6946dBb1Bb0fd3101D1", - "links": { - "Homepage": "https://thingschain.network" - }, - "marketcap_usd": 49968, - "name": "Thingschain", - "network": "eth", - "shortcut": "TIC", - "t1_enabled": "soon", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Beta", - "url": "https://beta-wallet.trezor.io/next/" - }, - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, "erc20:eth:TIE": { "address": "0x999967E2Ec8A74B7c8E9dB19E039d920B31d39D0", "links": { "Homepage": "https://ties.network" }, - "marketcap_usd": 565276, + "marketcap_usd": 672780, "name": "Ties.DB", "network": "eth", "shortcut": "TIE", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -23837,11 +24007,11 @@ "links": { "Homepage": "https://www.tigereum.io" }, - "marketcap_usd": 299555, + "marketcap_usd": 445341, "name": "Tigereum", "network": "eth", "shortcut": "TIG", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -23864,7 +24034,7 @@ "links": { "Homepage": "https://chronobank.io" }, - "marketcap_usd": 1335850, + "marketcap_usd": 1328966, "name": "Chronobank", "network": "eth", "shortcut": "TIME", @@ -23918,7 +24088,7 @@ "links": { "Homepage": "https://www.blocktix.io" }, - "marketcap_usd": 4839837, + "marketcap_usd": 2449075, "name": "Blocktix", "network": "eth", "shortcut": "TIX", @@ -23945,11 +24115,11 @@ "links": { "Homepage": "https://www.tokia.io" }, - "marketcap_usd": 126422, + "marketcap_usd": 72263, "name": "Tokia", "network": "eth", "shortcut": "TKA", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -23976,8 +24146,8 @@ "name": "Taklimakan Network", "network": "eth", "shortcut": "TKLN", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -23999,7 +24169,7 @@ "links": { "Homepage": "https://etherscan.io/token/TokenCard" }, - "marketcap_usd": 5938891, + "marketcap_usd": 18553961, "name": "TokenCard", "network": "eth", "shortcut": "TKN", @@ -24053,11 +24223,11 @@ "links": { "Homepage": "http://traxia.co" }, - "marketcap_usd": 1534323, + "marketcap_usd": 2390758, "name": "TRAXIA", "network": "eth", "shortcut": "TMT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -24080,11 +24250,11 @@ "links": { "Homepage": "https://transcodium.com" }, - "marketcap_usd": 110870, + "marketcap_usd": 141000, "name": "Transcodium", "network": "eth", "shortcut": "TNS", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -24108,7 +24278,7 @@ "Github": "https://github.com/tierion", "Homepage": "https://tierion.com" }, - "marketcap_usd": 5698668, + "marketcap_usd": 6843578, "name": "Tierion Network Token", "network": "eth", "shortcut": "TNT", @@ -24139,8 +24309,8 @@ "name": "TOKOK", "network": "eth", "shortcut": "TOK", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -24190,11 +24360,11 @@ "links": { "Homepage": "https://origintrail.io" }, - "marketcap_usd": 4948441, + "marketcap_usd": 6603705, "name": "OriginTrail", "network": "eth", "shortcut": "TRAC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -24217,11 +24387,11 @@ "links": { "Homepage": "http://www.trakinvest.com" }, - "marketcap_usd": 254372, + "marketcap_usd": 249993, "name": "TrakInvest", "network": "eth", "shortcut": "TRAK", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -24271,11 +24441,11 @@ "links": { "Homepage": "http://www.tracto.org" }, - "marketcap_usd": 218023, + "marketcap_usd": 209644, "name": "Tracto", "network": "eth", "shortcut": "TRCT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -24298,11 +24468,11 @@ "links": { "Homepage": "https://www.tridentgroup.io" }, - "marketcap_usd": 17529, + "marketcap_usd": 11366, "name": "Trident Group", "network": "eth", "shortcut": "TRDT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -24326,8 +24496,8 @@ "Github": "https://github.com/WeTrustPlatform", "Homepage": "https://www.wetrust.io" }, - "marketcap_usd": 810376, - "name": "TRST", + "marketcap_usd": 1002663, + "name": "WeTrust", "network": "eth", "shortcut": "TRST", "t1_enabled": "yes", @@ -24385,7 +24555,7 @@ "name": "Tend Token", "network": "eth", "shortcut": "TTA", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -24408,12 +24578,12 @@ "links": { "Homepage": "http://www.ttc.eco" }, - "marketcap_usd": 4833316, + "marketcap_usd": 7987356, "name": "TTC Protocol", "network": "eth", "shortcut": "TTC", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -24435,11 +24605,11 @@ "links": { "Homepage": "https://tatatutoken.io" }, - "marketcap_usd": 549864, + "marketcap_usd": 0, "name": "TaTaTu", "network": "eth", "shortcut": "TTU", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -24463,11 +24633,11 @@ "Github": "https://github.com/trusttoken", "Homepage": "https://www.trusttoken.com" }, - "marketcap_usd": 207414058, + "marketcap_usd": 205335902, "name": "TrueUSD", "network": "eth", "shortcut": "TUSD", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -24544,7 +24714,7 @@ "links": { "Homepage": "https://taas.fund" }, - "marketcap_usd": 2047320, + "marketcap_usd": 2354353, "name": "Token-as-a-Service", "network": "eth", "shortcut": "TaaS", @@ -24571,11 +24741,11 @@ "links": { "Homepage": "https://unibright.io" }, - "marketcap_usd": 1659233, + "marketcap_usd": 4060532, "name": "Unibright", "network": "eth", "shortcut": "UBT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -24598,11 +24768,11 @@ "links": { "Homepage": "https://u.cash" }, - "marketcap_usd": 859171, + "marketcap_usd": 1043061, "name": "U.CASH", "network": "eth", "shortcut": "UCASH", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -24625,11 +24795,11 @@ "links": { "Homepage": "https://uchain.world" }, - "marketcap_usd": 377314, + "marketcap_usd": 403669, "name": "UChain", "network": "eth", "shortcut": "UCN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -24652,11 +24822,11 @@ "links": { "Homepage": "https://www.upfiring.com" }, - "marketcap_usd": 2844598, + "marketcap_usd": 1453821, "name": "Upfiring", "network": "eth", "shortcut": "UFR", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -24680,7 +24850,7 @@ "Github": "https://github.com/unikoingold/UnikoinGold-UKG-Contract", "Homepage": "https://unikoingold.com" }, - "marketcap_usd": 3600086, + "marketcap_usd": 4016771, "name": "UnikoinGold", "network": "eth", "shortcut": "UKG", @@ -24707,11 +24877,11 @@ "links": { "Homepage": "https://uptoken.org" }, - "marketcap_usd": 2843363, + "marketcap_usd": 2811285, "name": "UpToken", "network": "eth", "shortcut": "UP", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -24734,11 +24904,11 @@ "links": { "Homepage": "https://sentinelprotocol.io" }, - "marketcap_usd": 4139733, + "marketcap_usd": 3943395, "name": "Sentinel Protocol", "network": "eth", "shortcut": "UPP", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -24761,7 +24931,7 @@ "links": { "Homepage": "https://uquidcoin.com" }, - "marketcap_usd": 562147, + "marketcap_usd": 690476, "name": "Uquid Coin", "network": "eth", "shortcut": "UQC", @@ -24817,7 +24987,7 @@ "Github": "https://github.com/centrehq/centre-tokens", "Homepage": "https://www.centre.io" }, - "marketcap_usd": 291248135, + "marketcap_usd": 239606253, "name": "USD//Coin", "network": "eth", "shortcut": "USDC", @@ -24844,12 +25014,12 @@ "links": { "Homepage": "https://stably.io" }, - "marketcap_usd": 0, + "marketcap_usd": 5926060, "name": "StableUSD", "network": "eth", "shortcut": "USDS", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -24875,7 +25045,7 @@ "name": "USD Tether (erc20)", "network": "eth", "shortcut": "USDT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -24896,10 +25066,10 @@ "erc20:eth:UTK": { "address": "0x70a72833d6bF7F508C8224CE59ea1Ef3d0Ea3A38", "links": { - "Homepage": "https://utrust.io" + "Homepage": "https://utrust.com" }, - "marketcap_usd": 9505316, - "name": "UTK", + "marketcap_usd": 12238084, + "name": "UTRUST", "network": "eth", "shortcut": "UTK", "t1_enabled": "yes", @@ -24926,12 +25096,12 @@ "Github": "https://github.com/UniversaBlockchain/universa", "Homepage": "https://www.universa.io" }, - "marketcap_usd": 7856330, + "marketcap_usd": 8148825, "name": "Universa", "network": "eth", "shortcut": "UTNP", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -24953,11 +25123,11 @@ "links": { "Homepage": "https://uttoken.io" }, - "marketcap_usd": 8031310, + "marketcap_usd": 10718996, "name": "United Traders Token", "network": "eth", "shortcut": "UTT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -24980,7 +25150,7 @@ "links": { "Homepage": "https://u.network/" }, - "marketcap_usd": 1607152, + "marketcap_usd": 1760728, "name": "U Networks", "network": "eth", "shortcut": "UUU", @@ -25064,7 +25234,7 @@ "Github": "https://github.com/blockv", "Homepage": "https://blockv.io" }, - "marketcap_usd": 10725882, + "marketcap_usd": 11322037, "name": "BLOCKv", "network": "eth", "shortcut": "VEE", @@ -25146,7 +25316,7 @@ "links": { "Homepage": "https://veritas.veritaseum.com" }, - "marketcap_usd": 30343905, + "marketcap_usd": 38585084, "name": "Veritaseum", "network": "eth", "shortcut": "VERI", @@ -25171,10 +25341,10 @@ "erc20:eth:VIB": { "address": "0x2C974B2d0BA1716E644c1FC59982a89DDD2fF724", "links": { - "Homepage": "https://www.viberate.io" + "Homepage": "https://www.viberate.com" }, - "marketcap_usd": 4012011, - "name": "VIB", + "marketcap_usd": 4567016, + "name": "Viberate", "network": "eth", "shortcut": "VIB", "t1_enabled": "yes", @@ -25195,13 +25365,68 @@ } ] }, + "erc20:eth:VIBE": { + "address": "0xe8Ff5C9c75dEb346acAc493C463C8950Be03Dfba", + "links": { + "Homepage": "https://www.vibehub.io" + }, + "marketcap_usd": 10833376, + "name": "VIBE Coin", + "network": "eth", + "shortcut": "VIBE", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:VIBEX": { + "address": "0x882448f83d90B2bf477Af2eA79327fDEA1335D93", + "links": { + "Github": "https://github.com/amack2u/VibeHub", + "Homepage": "https://vibehub.io/ico/" + }, + "marketcap_usd": 0, + "name": "VIBEX Exchange Token", + "network": "eth", + "shortcut": "VIBEX", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, "erc20:eth:VIEW": { "address": "0xF03f8D65BaFA598611C3495124093c56e8F638f0", "links": { "Github": "https://github.com/Viewly/", "Homepage": "https://view.ly/" }, - "marketcap_usd": 190927, + "marketcap_usd": 184495, "name": "Viewly", "network": "eth", "shortcut": "VIEW", @@ -25228,11 +25453,11 @@ "links": { "Homepage": "https://ico.vikky.io" }, - "marketcap_usd": 35916, + "marketcap_usd": 38466, "name": "VikkyToken", "network": "eth", "shortcut": "VIKKY", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -25256,7 +25481,7 @@ "Github": "https://github.com/ViceIndustryToken", "Homepage": "https://vicetoken.com/" }, - "marketcap_usd": 1239712, + "marketcap_usd": 2223963, "name": "Vice Industry Token", "network": "eth", "shortcut": "VIT", @@ -25283,11 +25508,11 @@ "links": { "Homepage": "https://www.vite.org" }, - "marketcap_usd": 6230627, + "marketcap_usd": 7104874, "name": "Vite", "network": "eth", "shortcut": "VITE", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -25311,8 +25536,8 @@ "Github": "https://github.com/viuly", "Homepage": "https://viuly.io" }, - "marketcap_usd": 63902, - "name": "VIU", + "marketcap_usd": 0, + "name": "Viuly", "network": "eth", "shortcut": "VIU", "t1_enabled": "yes", @@ -25339,7 +25564,7 @@ "Github": "https://github.com/vetri-global/", "Homepage": "https://vetri.global/" }, - "marketcap_usd": 712067, + "marketcap_usd": 695766, "name": "VETRI", "network": "eth", "shortcut": "VLD", @@ -25394,7 +25619,7 @@ "links": { "Homepage": "https://voise.it" }, - "marketcap_usd": 376308, + "marketcap_usd": 305916, "name": "Voise", "network": "eth", "shortcut": "VOISE", @@ -25421,7 +25646,7 @@ "links": { "Homepage": "https://www.vdice.io" }, - "marketcap_usd": 72832, + "marketcap_usd": 67623, "name": "Vdice", "network": "eth", "shortcut": "VSL", @@ -25453,7 +25678,7 @@ "name": "Vuulr Token", "network": "eth", "shortcut": "VUU", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -25476,11 +25701,11 @@ "links": { "Homepage": "https://vezt.co" }, - "marketcap_usd": 521260, + "marketcap_usd": 1586870, "name": "Vezt", "network": "eth", "shortcut": "VZT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -25503,11 +25728,38 @@ "links": { "Homepage": "https://wab.network" }, - "marketcap_usd": 658740, + "marketcap_usd": 251734, "name": "WABnetwork", "network": "eth", "shortcut": "WAB", - "t1_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "erc20", + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + }, + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, + "erc20:eth:WABI": { + "address": "0x286BDA1413a2Df81731D4930ce2F862a35A609fE", + "links": { + "Homepage": "https://taelpay.com" + }, + "marketcap_usd": 10796506, + "name": "Tael", + "network": "eth", + "shortcut": "WABI", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -25559,7 +25811,7 @@ "Github": "https://github.com/waxio", "Homepage": "https://wax.io" }, - "marketcap_usd": 30163787, + "marketcap_usd": 39364786, "name": "WAX", "network": "eth", "shortcut": "WAX", @@ -25618,8 +25870,8 @@ "name": "Wrapped Bitcoin", "network": "eth", "shortcut": "WBTC", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -25696,11 +25948,11 @@ "links": { "Homepage": "https://webcoin.today" }, - "marketcap_usd": 148523, + "marketcap_usd": 116892, "name": "Webcoin", "network": "eth", "shortcut": "WEB", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -25806,7 +26058,7 @@ "links": { "Homepage": "https://wings.ai" }, - "marketcap_usd": 7493349, + "marketcap_usd": 4286742, "name": "WINGS", "network": "eth", "shortcut": "WINGS", @@ -25833,11 +26085,11 @@ "links": { "Homepage": "https://mywish.io" }, - "marketcap_usd": 369541, + "marketcap_usd": 345545, "name": "MyWish", "network": "eth", "shortcut": "WISH", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -25893,8 +26145,8 @@ "name": "WallOfChain", "network": "eth", "shortcut": "WOC", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -25943,7 +26195,7 @@ "links": { "Homepage": "https://wepower.network" }, - "marketcap_usd": 6600249, + "marketcap_usd": 6846510, "name": "WePower Token", "network": "eth", "shortcut": "WPR", @@ -25970,11 +26222,11 @@ "links": { "Homepage": "https://worldcore.eu" }, - "marketcap_usd": 406298, + "marketcap_usd": 161312, "name": "Worldcore", "network": "eth", "shortcut": "WRC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -26025,7 +26277,7 @@ "links": { "Homepage": "http://www.waltonchain.org" }, - "marketcap_usd": 38475428, + "marketcap_usd": 45521293, "name": "Waltonchain", "network": "eth", "shortcut": "WTC", @@ -26103,39 +26355,12 @@ } ] }, - "erc20:eth:WaBi": { - "address": "0x286BDA1413a2Df81731D4930ce2F862a35A609fE", - "links": { - "Homepage": "https://www.wacoin.io" - }, - "marketcap_usd": 6519264, - "name": "WaBi", - "network": "eth", - "shortcut": "WaBi", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Beta", - "url": "https://beta-wallet.trezor.io/next/" - }, - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, "erc20:eth:X8X": { "address": "0x910Dfc18D6EA3D6a7124A6F8B5458F281060fa4c", "links": { "Homepage": "https://x8currency.com" }, - "marketcap_usd": 772831, + "marketcap_usd": 783930, "name": "X8X", "network": "eth", "shortcut": "X8X", @@ -26162,7 +26387,7 @@ "links": { "Homepage": "http://www.xaurum.org" }, - "marketcap_usd": 3719208, + "marketcap_usd": 3148684, "name": "Xaurum", "network": "eth", "shortcut": "XAUR", @@ -26189,11 +26414,11 @@ "links": { "Homepage": "https://billionairetoken.com" }, - "marketcap_usd": 87348, + "marketcap_usd": 59718, "name": "Billionaire Token", "network": "eth", "shortcut": "XBL", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -26217,7 +26442,7 @@ "Github": "https://github.com/blitzpredict", "Homepage": "https://www.blitzpredict.io" }, - "marketcap_usd": 290921, + "marketcap_usd": 295309, "name": "BlitzPredict", "network": "eth", "shortcut": "XBP", @@ -26276,8 +26501,8 @@ "name": "CryptoFranc", "network": "eth", "shortcut": "XCHF", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -26299,11 +26524,11 @@ "links": { "Homepage": "https://clearcoin.co" }, - "marketcap_usd": 240694, + "marketcap_usd": 257610, "name": "ClearCoin", "network": "eth", "shortcut": "XCLR", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -26326,11 +26551,11 @@ "links": { "Homepage": "https://www.xinfin.io" }, - "marketcap_usd": 2356926, + "marketcap_usd": 2389028, "name": "XinFin Network", "network": "eth", "shortcut": "XDCE", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -26353,11 +26578,11 @@ "links": { "Homepage": "https://proxeus.com" }, - "marketcap_usd": 2040604, + "marketcap_usd": 2788703, "name": "Proxeus", "network": "eth", "shortcut": "XES", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -26384,7 +26609,7 @@ "name": "ETERNAL TOKEN", "network": "eth", "shortcut": "XET", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -26518,7 +26743,7 @@ "Homepage": "https://sphereidentity.com" }, "marketcap_usd": 0, - "name": "XID", + "name": "Sphere Identity", "network": "eth", "shortcut": "XID", "t1_enabled": "yes", @@ -26544,11 +26769,11 @@ "links": { "Homepage": "http://xmedchain.com" }, - "marketcap_usd": 148030, + "marketcap_usd": 156414, "name": "XMED Chain", "network": "eth", "shortcut": "XMCT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -26571,11 +26796,11 @@ "links": { "Homepage": "https://www.xmx.com" }, - "marketcap_usd": 1753838, + "marketcap_usd": 1822756, "name": "XMax", "network": "eth", "shortcut": "XMX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -26599,7 +26824,7 @@ "Github": "https://github.com/InkProtocol/", "Homepage": "https://paywithink.com" }, - "marketcap_usd": 781611, + "marketcap_usd": 1151168, "name": "Ink Protocol", "network": "eth", "shortcut": "XNK", @@ -26626,7 +26851,7 @@ "links": { "Homepage": "https://xenon.network" }, - "marketcap_usd": 473957, + "marketcap_usd": 452336, "name": "XENON", "network": "eth", "shortcut": "XNN", @@ -26680,11 +26905,11 @@ "links": { "Homepage": "http://www.xov.io" }, - "marketcap_usd": 225520, + "marketcap_usd": 328294, "name": "XOVBank", "network": "eth", "shortcut": "XOV", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -26707,11 +26932,11 @@ "links": { "Homepage": "https://xpa.io" }, - "marketcap_usd": 2094699, + "marketcap_usd": 1570742, "name": "XPA", "network": "eth", "shortcut": "XPA", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -26735,12 +26960,12 @@ "Github": "https://github.com/Bit-Nation/", "Homepage": "https://bitnation.co" }, - "marketcap_usd": 72722, + "marketcap_usd": 60176, "name": "Pangea Arbitration Token", "network": "eth", "shortcut": "XPAT", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -26816,11 +27041,11 @@ "links": { "Homepage": "https://xyo.network" }, - "marketcap_usd": 14402251, + "marketcap_usd": 13509750, "name": "XYO", "network": "eth", "shortcut": "XYO", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -26843,11 +27068,11 @@ "links": { "Homepage": "http://www.yeefoundation.com" }, - "marketcap_usd": 1476360, + "marketcap_usd": 1618657, "name": "Yee Token", "network": "eth", "shortcut": "YEE", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -26871,8 +27096,8 @@ "Github": "https://github.com/crowdholding/", "Homepage": "https://www.crowdholding.com" }, - "marketcap_usd": 56556, - "name": "YUP", + "marketcap_usd": 90648, + "name": "Crowdholding", "network": "eth", "shortcut": "YUP", "t1_enabled": "yes", @@ -26899,7 +27124,7 @@ "Github": "https://github.com/zapproject", "Homepage": "https://zap.store" }, - "marketcap_usd": 1205926, + "marketcap_usd": 1088855, "name": "ZAP", "network": "eth", "shortcut": "ZAP", @@ -26926,11 +27151,11 @@ "links": { "Homepage": "https://0chain.net" }, - "marketcap_usd": 3032958, + "marketcap_usd": 3504016, "name": "0chain", "network": "eth", "shortcut": "ZCN", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -26953,11 +27178,11 @@ "links": { "Homepage": "https://www.zebi.io" }, - "marketcap_usd": 2178633, + "marketcap_usd": 2886627, "name": "Zebi", "network": "eth", "shortcut": "ZCO", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -26980,7 +27205,7 @@ "links": { "Homepage": "https://zsc.io/" }, - "marketcap_usd": 1518669, + "marketcap_usd": 1503442, "name": "Zeusshield", "network": "eth", "shortcut": "ZCS", @@ -27008,12 +27233,12 @@ "Github": "https://github.com/ZEUS-coin", "Homepage": "https://zeusfundme.com/" }, - "marketcap_usd": 41329, + "marketcap_usd": 78742, "name": "ZeusNetwork", "network": "eth", "shortcut": "ZEUS", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -27036,7 +27261,7 @@ "Github": "https://github.com/zilliqa", "Homepage": "https://www.zilliqa.com/" }, - "marketcap_usd": 139407454, + "marketcap_usd": 139826050, "name": "Zilliqa", "network": "eth", "shortcut": "ZIL", @@ -27063,11 +27288,11 @@ "links": { "Homepage": "https://zinc.work" }, - "marketcap_usd": 122023, + "marketcap_usd": 194637, "name": "ZINC", "network": "eth", "shortcut": "ZINC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -27090,11 +27315,11 @@ "links": { "Homepage": "http://zipper.io" }, - "marketcap_usd": 6132266, + "marketcap_usd": 6003476, "name": "Zipper", "network": "eth", "shortcut": "ZIP", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -27117,11 +27342,11 @@ "links": { "Homepage": "https://zippie.org" }, - "marketcap_usd": 287145, + "marketcap_usd": 392481, "name": "Zippie", "network": "eth", "shortcut": "ZIPT", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -27149,8 +27374,8 @@ "name": "ZIX", "network": "eth", "shortcut": "ZIX", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -27172,11 +27397,11 @@ "links": { "Homepage": "https://zla.io" }, - "marketcap_usd": 337819, + "marketcap_usd": 654556, "name": "Zilla", "network": "eth", "shortcut": "ZLA", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -27199,7 +27424,7 @@ "links": { "Homepage": "https://www.zmine.com" }, - "marketcap_usd": 966729, + "marketcap_usd": 1189910, "name": "ZMINE", "network": "eth", "shortcut": "ZMN", @@ -27226,11 +27451,11 @@ "links": { "Homepage": "https://zper.io" }, - "marketcap_usd": 1214740, + "marketcap_usd": 1239791, "name": "ZPER", "network": "eth", "shortcut": "ZPR", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -27254,11 +27479,11 @@ "Github": "https://github.com/0xProject", "Homepage": "https://0xproject.com" }, - "marketcap_usd": 135336597, + "marketcap_usd": 139391703, "name": "0x Project", "network": "eth", "shortcut": "ZRX", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -27308,11 +27533,11 @@ "links": { "Homepage": "https://0xcert.org" }, - "marketcap_usd": 851183, + "marketcap_usd": 1090787, "name": "0xcert Protocol Token", "network": "eth", "shortcut": "ZXC", - "t1_enabled": "soon", + "t1_enabled": "yes", "t2_enabled": "yes", "type": "erc20", "wallet": [ @@ -27336,7 +27561,7 @@ "Github": "https://github.com/carVertical", "Homepage": "https://www.carvertical.com" }, - "marketcap_usd": 2161151, + "marketcap_usd": 2263609, "name": "carVertical", "network": "eth", "shortcut": "cV", @@ -27385,34 +27610,6 @@ } ] }, - "erc20:eth:eBTC": { - "address": "0xeB7C20027172E5d143fB030d50f91Cece2D1485D", - "links": { - "Github": "https://github.com/eBTCCommunityTrustToken/eBTC", - "Homepage": "https://ebitcoin.org" - }, - "marketcap_usd": 280212, - "name": "eBTC", - "network": "eth", - "shortcut": "eBTC", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Beta", - "url": "https://beta-wallet.trezor.io/next/" - }, - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, "erc20:eth:eGAS": { "address": "0xb53A96bcBdD9CF78dfF20BAB6C2be7bAec8f00f8", "links": { @@ -27474,7 +27671,7 @@ "Github": "https://github.com/eosdac", "Homepage": "https://eosdac.io/" }, - "marketcap_usd": 3461462, + "marketcap_usd": 4219255, "name": "eosDAC", "network": "eth", "shortcut": "eosDAC", @@ -27496,46 +27693,18 @@ } ] }, - "erc20:eth:onG": { - "address": "0xd341d1680Eeee3255b8C4c75bCCE7EB57f144dAe", - "links": { - "Github": "https://github.com/onGsocial", - "Homepage": "https://ongcoin.io" - }, - "marketcap_usd": 183267, - "name": "onG", - "network": "eth", - "shortcut": "onG", - "t1_enabled": "yes", - "t2_enabled": "yes", - "type": "erc20", - "wallet": [ - { - "name": "Trezor Beta", - "url": "https://beta-wallet.trezor.io/next/" - }, - { - "name": "MyCrypto", - "url": "https://mycrypto.com" - }, - { - "name": "MyEtherWallet", - "url": "https://www.myetherwallet.com" - } - ] - }, "erc20:eth:sUSD": { "address": "0x57Ab1E02fEE23774580C119740129eAC7081e9D3", "links": { "Github": "https://github.com/havven/", "Homepage": "https://www.synthetix.io" }, - "marketcap_usd": 1048600, + "marketcap_usd": 975622, "name": "USD Synth (sUSD)", "network": "eth", "shortcut": "sUSD", - "t1_enabled": "soon", - "t2_enabled": "soon", + "t1_enabled": "yes", + "t2_enabled": "yes", "type": "erc20", "wallet": [ { @@ -27625,7 +27794,7 @@ "links": { "Homepage": "https://akroma.io" }, - "marketcap_usd": 169101, + "marketcap_usd": 136909, "name": "Akroma", "shortcut": "AKA", "t1_enabled": "yes", @@ -27646,7 +27815,7 @@ "links": { "Homepage": "https://atheios.com" }, - "marketcap_usd": 25265, + "marketcap_usd": 33036, "name": "Atheios", "shortcut": "ATH", "t1_enabled": "yes", @@ -27663,12 +27832,33 @@ } ] }, + "eth:ATS": { + "links": { + "Homepage": "https://artis.eco" + }, + "marketcap_usd": 0, + "name": "ARTIS sigma1", + "shortcut": "ATS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin", + "wallet": [ + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, "eth:CLO": { "coinmarketcap_alias": "callisto-network", "links": { "Homepage": "https://callisto.network" }, - "marketcap_usd": 2902604, + "marketcap_usd": 6248512, "name": "Callisto", "shortcut": "CLO", "t1_enabled": "yes", @@ -27689,7 +27879,7 @@ "links": { "Homepage": "https://egem.io" }, - "marketcap_usd": 169158, + "marketcap_usd": 189110, "name": "EtherGem", "shortcut": "EGEM", "t1_enabled": "yes", @@ -27710,7 +27900,7 @@ "links": { "Homepage": "https://ellaism.org" }, - "marketcap_usd": 129402, + "marketcap_usd": 120582, "name": "Ellaism", "shortcut": "ELLA", "t1_enabled": "yes", @@ -27753,7 +27943,7 @@ "links": { "Homepage": "https://ethersocial.org" }, - "marketcap_usd": 491758, + "marketcap_usd": 538333, "name": "Ethersocial Network", "shortcut": "ESN", "t1_enabled": "yes", @@ -27774,7 +27964,7 @@ "links": { "Homepage": "https://ethereumclassic.github.io" }, - "marketcap_usd": 419047498, + "marketcap_usd": 470916564, "name": "Ethereum Classic", "shortcut": "ETC", "t1_enabled": "yes", @@ -27799,7 +27989,7 @@ "links": { "Homepage": "https://www.ethereum.org" }, - "marketcap_usd": 10991215297, + "marketcap_usd": 14618374361, "name": "Ethereum", "shortcut": "ETH", "t1_enabled": "yes", @@ -27824,7 +28014,7 @@ "links": { "Homepage": "https://ether1.org" }, - "marketcap_usd": 222350, + "marketcap_usd": 177637, "name": "Ether-1", "shortcut": "ETHO", "t1_enabled": "yes", @@ -27866,7 +28056,7 @@ "links": { "Homepage": "https://expanse.tech" }, - "marketcap_usd": 931528, + "marketcap_usd": 993732, "name": "Expanse", "shortcut": "EXP", "t1_enabled": "yes", @@ -27887,7 +28077,7 @@ "links": { "Homepage": "https://gochain.io" }, - "marketcap_usd": 12025315, + "marketcap_usd": 14675033, "name": "GoChain", "shortcut": "GO", "t1_enabled": "yes", @@ -27929,7 +28119,7 @@ "links": { "Homepage": "https://musicoin.org" }, - "marketcap_usd": 1055984, + "marketcap_usd": 1039642, "name": "Musicoin", "shortcut": "MUSIC", "t1_enabled": "yes", @@ -27950,7 +28140,7 @@ "links": { "Homepage": "https://pirl.io" }, - "marketcap_usd": 1031094, + "marketcap_usd": 1145598, "name": "Pirl", "shortcut": "PIRL", "t1_enabled": "yes", @@ -27996,7 +28186,7 @@ "name": "REOSC Ecosystem", "shortcut": "REOSC", "t1_enabled": "yes", - "t2_enabled": "soon", + "t2_enabled": "yes", "type": "coin", "wallet": [ { @@ -28013,7 +28203,7 @@ "links": { "Homepage": "https://ubiqsmart.com" }, - "marketcap_usd": 6769761, + "marketcap_usd": 9461687, "name": "Ubiq", "shortcut": "UBQ", "t1_enabled": "yes", @@ -28030,12 +28220,33 @@ } ] }, + "eth:tATS": { + "links": { + "Homepage": "https://artis.eco" + }, + "marketcap_usd": 0, + "name": "ARTIS tau1", + "shortcut": "tATS", + "t1_enabled": "yes", + "t2_enabled": "yes", + "type": "coin", + "wallet": [ + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, "misc:ADA": { "links": { "Github": "https://github.com/input-output-hk/cardano-sl", "Homepage": "https://www.cardano.org" }, - "marketcap_usd": 954467253, + "marketcap_usd": 1116666368, "name": "Cardano", "shortcut": "ADA", "t1_enabled": "no", @@ -28053,7 +28264,7 @@ "Github": "https://github.com/EOSIO/eos", "Homepage": "https://eos.io" }, - "marketcap_usd": 2132150041, + "marketcap_usd": 3405590963, "name": "EOS", "shortcut": "EOS", "t1_enabled": "no", @@ -28066,7 +28277,7 @@ "Github": "https://github.com/LiskHQ/lisk", "Homepage": "https://lisk.io/" }, - "marketcap_usd": 123456593, + "marketcap_usd": 147662614, "name": "Lisk", "shortcut": "LSK", "t1_enabled": "yes", @@ -28079,7 +28290,7 @@ "Github": "https://github.com/maidsafe", "Homepage": "https://maidsafe.net" }, - "marketcap_usd": 50172615, + "marketcap_usd": 55247328, "name": "MaidSafeCoin", "shortcut": "MAID", "t1_enabled": "yes", @@ -28092,7 +28303,7 @@ "Github": "https://github.com/OmniLayer", "Homepage": "https://www.omnilayer.org" }, - "marketcap_usd": 1036819, + "marketcap_usd": 1528282, "name": "Omni", "shortcut": "OMNI", "t1_enabled": "yes", @@ -28105,7 +28316,7 @@ "Github": "https://github.com/ontio/ontology", "Homepage": "https://ont.io" }, - "marketcap_usd": 170989496, + "marketcap_usd": 296755130, "name": "Ontology", "shortcut": "ONT", "t1_enabled": "no", @@ -28118,7 +28329,7 @@ "Github": "https://github.com/tronprotocol/java-tron", "Homepage": "https://tron.network" }, - "marketcap_usd": 1719432749, + "marketcap_usd": 1572983068, "name": "Tron", "shortcut": "TRX", "t1_enabled": "no", @@ -28130,7 +28341,7 @@ "links": { "Homepage": "https://tether.to" }, - "marketcap_usd": 2021045907, + "marketcap_usd": 2044098914, "name": "Tether", "shortcut": "USDT", "t1_enabled": "yes", @@ -28143,7 +28354,7 @@ "Github": "https://github.com/wanchain/go-wanchain", "Homepage": "https://wanchain.org" }, - "marketcap_usd": 28941223, + "marketcap_usd": 32993128, "name": "Wanchain", "shortcut": "WAN", "t1_enabled": "yes", @@ -28156,7 +28367,7 @@ "Github": "https://github.com/stellar/stellar-core", "Homepage": "https://www.stellar.org" }, - "marketcap_usd": 1445664971, + "marketcap_usd": 1637256205, "name": "Stellar", "shortcut": "XLM", "t1_enabled": "yes", @@ -28174,7 +28385,7 @@ "Github": "https://github.com/monero-project/monero", "Homepage": "https://getmonero.org" }, - "marketcap_usd": 732073046, + "marketcap_usd": 851256587, "name": "Monero", "shortcut": "XMR", "t1_enabled": "no", @@ -28187,7 +28398,7 @@ "Github": "https://github.com/ripple/rippled", "Homepage": "https://ripple.com" }, - "marketcap_usd": 12096468792, + "marketcap_usd": 13063618481, "name": "Ripple", "shortcut": "XRP", "t1_enabled": "no", @@ -28200,7 +28411,7 @@ "Github": "https://github.com/tezos/tezos", "Homepage": "https://tezos.com" }, - "marketcap_usd": 221622736, + "marketcap_usd": 257683907, "name": "Tezos", "shortcut": "XTZ", "t1_enabled": "no", @@ -28234,7 +28445,7 @@ "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 2163942, + "marketcap_usd": 3737958, "name": "DIMCOIN", "shortcut": "DIM", "t1_enabled": "yes", @@ -28252,7 +28463,7 @@ "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 2163942, + "marketcap_usd": 3737958, "name": "DIM TOKEN", "shortcut": "DIMTOK", "t1_enabled": "yes", @@ -28303,7 +28514,7 @@ "links": { "Homepage": "https://nem.io" }, - "marketcap_usd": 340601115, + "marketcap_usd": 378925455, "name": "NEM", "shortcut": "XEM", "t1_enabled": "yes", @@ -28318,12 +28529,12 @@ } }, "info": { - "marketcap_supported": "90.33 %", - "marketcap_usd": 101132592654, - "t1_coins": 704, - "t2_coins": 1011, - "total_marketcap_usd": 111965133346, - "updated_at": 1549555210, - "updated_at_readable": "Thu Feb 7 17:00:10 2019" + "marketcap_supported": "89.89 %", + "marketcap_usd": 119446732135, + "t1_coins": 1065, + "t2_coins": 1071, + "total_marketcap_usd": 132880688424, + "updated_at": 1551877570, + "updated_at_readable": "Wed Mar 6 14:06:10 2019" } } \ No newline at end of file From f75a93ceca44ebe8cbc8cf742ec8e9aca057a4e9 Mon Sep 17 00:00:00 2001 From: Dusan Klinec Date: Thu, 7 Mar 2019 11:27:18 +0100 Subject: [PATCH 738/767] xmr: add version fields to check for protocol compatibility - safe check in case hard fork number increases without Trezor being patched to that version. Same for monero software version - if major version update is detected, T may warn to do only in own risk without updating Trezor firmware compatible with new versions --- protob/messages-monero.proto | 2 ++ 1 file changed, 2 insertions(+) diff --git a/protob/messages-monero.proto b/protob/messages-monero.proto index e04f4eba4..0e99eb447 100644 --- a/protob/messages-monero.proto +++ b/protob/messages-monero.proto @@ -138,6 +138,8 @@ message MoneroTransactionInitRequest { optional MoneroTransactionRsigData rsig_data = 11; repeated uint32 integrated_indices = 12; optional uint32 client_version = 13; // connected client version + optional uint32 hard_fork = 14; // transaction hard fork number + optional bytes monero_version = 15; // monero software version } } From d60ac958a2855a04cbb31eb332639a75b86f8df9 Mon Sep 17 00:00:00 2001 From: Hsuan Lee Date: Thu, 7 Mar 2019 21:00:55 +0800 Subject: [PATCH 739/767] defs: add DEXON (#290) --- defs/ethereum/dxn.png | Bin 0 -> 14664 bytes defs/ethereum/networks.json | 10 ++++++++++ 2 files changed, 10 insertions(+) create mode 100644 defs/ethereum/dxn.png diff --git a/defs/ethereum/dxn.png b/defs/ethereum/dxn.png new file mode 100644 index 0000000000000000000000000000000000000000..d546a3d33f7c6b0db779801614a7d69a95b601d4 GIT binary patch literal 14664 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 Rz3Y$!z|?eA>y>Sy{s-oy5r_Z) literal 0 HcmV?d00001 diff --git a/defs/ethereum/networks.json b/defs/ethereum/networks.json index f78ce2c69..1a7b21ecb 100644 --- a/defs/ethereum/networks.json +++ b/defs/ethereum/networks.json @@ -148,6 +148,16 @@ "url": "https://www.mix-blockchain.org", "blockbook": [] }, + { + "chain": "dxn", + "chain_id": 237, + "slip44": 237, + "shortcut": "DXN", + "name": "DEXON", + "rskip60": false, + "url": "https://dexon.org", + "blockbook": [] + }, { "chain": "clo", "chain_id": 820, From 4e2741505a448075178a4fb7a90aa4f9ace880a2 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Sat, 9 Mar 2019 19:00:28 +0100 Subject: [PATCH 740/767] defs/webauthn: initialize with new data --- defs/webauthn/apps/bitbucket.json | 4 ++ defs/webauthn/apps/bitbucket.png | Bin 0 -> 13333 bytes defs/webauthn/apps/bitfinex.json | 4 ++ defs/webauthn/apps/bitfinex.png | Bin 0 -> 25027 bytes defs/webauthn/apps/bitwarden.json | 4 ++ defs/webauthn/apps/dashlane.json | 4 ++ defs/webauthn/apps/dashlane.png | Bin 0 -> 32570 bytes defs/webauthn/apps/dropbox.json | 5 ++ defs/webauthn/apps/dropbox.png | Bin 0 -> 14036 bytes defs/webauthn/apps/duo.json | 4 ++ defs/webauthn/apps/duo.png | Bin 0 -> 7851 bytes defs/webauthn/apps/fastmail.json | 4 ++ defs/webauthn/apps/fastmail.png | Bin 0 -> 7033 bytes defs/webauthn/apps/fedora.json | 4 ++ defs/webauthn/apps/fedora.png | Bin 0 -> 17900 bytes defs/webauthn/apps/gandi.json | 4 ++ defs/webauthn/apps/gandi.png | Bin 0 -> 22165 bytes defs/webauthn/apps/github.json | 4 ++ defs/webauthn/apps/github.png | Bin 0 -> 25895 bytes defs/webauthn/apps/gitlab.json | 4 ++ defs/webauthn/apps/gitlab.png | Bin 0 -> 7258 bytes defs/webauthn/apps/google.json | 4 ++ defs/webauthn/apps/google.png | Bin 0 -> 16613 bytes defs/webauthn/apps/keeper.json | 4 ++ defs/webauthn/apps/keeper.png | Bin 0 -> 27965 bytes defs/webauthn/apps/lastpass.json | 4 ++ defs/webauthn/apps/lastpass.png | Bin 0 -> 9976 bytes defs/webauthn/apps/slushpool.json | 4 ++ defs/webauthn/apps/slushpool.png | Bin 0 -> 30308 bytes defs/webauthn/apps/stripe.json | 4 ++ defs/webauthn/apps/stripe.png | Bin 0 -> 10448 bytes defs/webauthn/apps/u2f.bin.coffee.json | 4 ++ defs/webauthn/apps/webauthn.bin.coffee.json | 4 ++ defs/webauthn/apps/webauthn.io.json | 4 ++ defs/webauthn/apps/webauthn.me.json | 4 ++ defs/webauthn/apps/yubico-demo.json | 4 ++ defs/webauthn/gen.py | 55 ++++++++++++++++++++ 37 files changed, 140 insertions(+) create mode 100644 defs/webauthn/apps/bitbucket.json create mode 100644 defs/webauthn/apps/bitbucket.png create mode 100644 defs/webauthn/apps/bitfinex.json create mode 100644 defs/webauthn/apps/bitfinex.png create mode 100644 defs/webauthn/apps/bitwarden.json create mode 100644 defs/webauthn/apps/dashlane.json create mode 100644 defs/webauthn/apps/dashlane.png create mode 100644 defs/webauthn/apps/dropbox.json create mode 100644 defs/webauthn/apps/dropbox.png create mode 100644 defs/webauthn/apps/duo.json create mode 100644 defs/webauthn/apps/duo.png create mode 100644 defs/webauthn/apps/fastmail.json create mode 100644 defs/webauthn/apps/fastmail.png create mode 100644 defs/webauthn/apps/fedora.json create mode 100644 defs/webauthn/apps/fedora.png create mode 100644 defs/webauthn/apps/gandi.json create mode 100644 defs/webauthn/apps/gandi.png create mode 100644 defs/webauthn/apps/github.json create mode 100644 defs/webauthn/apps/github.png create mode 100644 defs/webauthn/apps/gitlab.json create mode 100644 defs/webauthn/apps/gitlab.png create mode 100644 defs/webauthn/apps/google.json create mode 100644 defs/webauthn/apps/google.png create mode 100644 defs/webauthn/apps/keeper.json create mode 100644 defs/webauthn/apps/keeper.png create mode 100644 defs/webauthn/apps/lastpass.json create mode 100644 defs/webauthn/apps/lastpass.png create mode 100644 defs/webauthn/apps/slushpool.json create mode 100644 defs/webauthn/apps/slushpool.png create mode 100644 defs/webauthn/apps/stripe.json create mode 100644 defs/webauthn/apps/stripe.png create mode 100644 defs/webauthn/apps/u2f.bin.coffee.json create mode 100644 defs/webauthn/apps/webauthn.bin.coffee.json create mode 100644 defs/webauthn/apps/webauthn.io.json create mode 100644 defs/webauthn/apps/webauthn.me.json create mode 100644 defs/webauthn/apps/yubico-demo.json create mode 100755 defs/webauthn/gen.py diff --git a/defs/webauthn/apps/bitbucket.json b/defs/webauthn/apps/bitbucket.json new file mode 100644 index 000000000..e5e7a0bff --- /dev/null +++ b/defs/webauthn/apps/bitbucket.json @@ -0,0 +1,4 @@ +{ + "label": "Bitbucket", + "u2f": "https://bitbucket.org" +} diff --git a/defs/webauthn/apps/bitbucket.png b/defs/webauthn/apps/bitbucket.png new file mode 100644 index 0000000000000000000000000000000000000000..d8307c4df7e823e9befc2bc32b51dfbd970a5f1c GIT binary patch literal 13333 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 literal 0 HcmV?d00001 diff --git a/defs/webauthn/apps/dropbox.json b/defs/webauthn/apps/dropbox.json new file mode 100644 index 000000000..e97f52884 --- /dev/null +++ b/defs/webauthn/apps/dropbox.json @@ -0,0 +1,5 @@ +{ + "label": "Dropbox", + "u2f": "https://www.dropbox.com/u2f-app-id.json", + "webauthn": "www.dropbox.com" +} diff --git a/defs/webauthn/apps/dropbox.png b/defs/webauthn/apps/dropbox.png new file mode 100644 index 0000000000000000000000000000000000000000..c2ef266d57a4e2f74bbfd691b5ae8a0a3574de2c GIT binary patch literal 14036 zcmb8WRa6~Kum-yK#tH7SaSiV7?(PuW-8BJ%yIXK~cXubayL%wG6E6Qb=f2xPba4b)zrEqVk5w_P~4`~?5CF855m zJ-}p7|D4`^HV?1K30Zy=)X&+@X`6BI-I-(TLD_1#HgM2;Ie*=HaZqeb*L^t8d3oOE zuE=i4S-ekM4SAzGYYTpEMPLN~QEBZ-d8U3#eQMu`9hPj`RKUKdpGOiXwwdZMjE%I% zUEXwBrx#G<^cp^CVf_B!`{LN6DSACQZ5a4PndtHfO-Cyany7f2B*-$rPcX9M(eBZA zUj4EY%y=IY$?bbsLv&=&wL?X8EH^>OJ#w~bQ{&0-7Zaw$4&fy=6&1xp-$~XZP*7mY z?{{i1G-=u;hbGp_g(m}Z!t3uUM|9$=_Q7MS9zE@d^d4=rHjh0cJz_|XjyOH{W>166 z$UaTbf|oNN8WH0DQYaiTC%iVA$T_BZ7Di76DfFzn_l972V$A_q{w1f&MXTQ=PZVQnP;0Vt(qJ724iaKcqOZA>i+1Er};(T zvF4Tf&13yN&W0+}b8f68(|hgoZ)sQlOKj|i=)wlA^*;%j8rr|5*WY%+zHG{J?aHbA z4oi!T3Bwlm4|<6BRmC7tGy2uM*{ht?i;(3j$Hc0=9%YadZ%&NQ$R(?@U`&Ql&4>EN zn<@&i|fNXLX;I&$nKLBWESl`67a8E z7e@3gQe9T`JPJ}>zF9HryyN@! zad`P$e!b5mX3n0Mb!d_JQVI*s@^4ZS+LbwPtpbUpU+H#uR%H`IVVz&88|dHPUHJd+Qnz2-?JeQ2e&$c>~_b zb|9ZX&nNNygH)+vyp_d^?|?nHAX%n%t;e6!7h%WiqM>y<*gI~#O)j-fCFl;wCrf)W;f+I;B>_%LTgnhIo5hL4EV^I z{QN*B9w+6MxV&Lhtpn{u>3Fp-A%prQrF;B0H-LUehHqyMfP|7aF&KCxE`JhGQn>kc zR5Xr58un+?Pcg^i0Vh=|M<>@(Bg7Z#Iesw4J7Bl;moT34bfV1M%!WU-Mzs6CqxF7vhmpz|Nw~ z0am3^ABuX7NLN$F&=8+qi>_z*yJ1=A_Z62F4P`2&DG>y)Xt+6ASbJDx=%Lq511&|9 z^8r{8_IbRIYNm_}ZorPf0 zdo4TB&<&erh5);ip{*_%lx1TN(YY?5ht-Dtd&jiJF2hs#3kJ-X&7VZrY;erM7$F7& zJ|og0=Mo$gh<>=5;9OW8eCb}C;Qs_va>QGZn^BXkOgc;f*dqN!+6hRp`S~M^)3yoU z^p?cZkX47~s2Zf0U`fpb`GU^kD(J}l+DmXn)n*_voHa>nx@$pF5EaKnLv4H5dOn?| zC^SxtSq9x3Ju=y3@r6b;;;JUP3dwblPf3fUq0kn6%x{I?n9V#l*Vu)63TtxgU9Z$& z2LnGqMHsyf{RBlUMFz8$cndWggjRs7m}|Y#b&?3dzn=RROA=+vAk9`fjWBGkT>@o9 z+A^c1X@KTRRTxt2sep!zsK$BIp!I}-CJ*}%0;*T-LGTMeJ-myq+n=q7Kuumw`Xw|+ z4gt!59FNEuzt;O=ghcGR0K36R0n$P>EfxBP&|K&JB^=kRV($T1g?T1qS7-HKDF&OO#K7mx2MMayw!3ncf!kpX`8q%E+BX~6l ztsBjXZ^wAaRRI=dbut|K!*mG-pU6IB?~nJK5$&|DCdu9&8(| zN`z$SfdCC4M~Xs8Z*<(GHe#MPH{F%kZijiCh=+U|HOfw^0#I&ZXGw1av5NbI<=jm8 zUC4X$_>mH07rr8Wl&T(8imEtmUBm0ZdFVK;WRzMt7mgMltGQR!cmP3llC;s#lYt4c zzUK7*gD`?&=JgTnMVuIpQiiLp3CcYW&M;2(+=ES1Y`%1WKT6WU4AQgNeYV*gGOl@=nENEhr4OcjcjZQn|`a(R4B~B6N=B|HMfvI-K_E%I5uoOTOi0*#Z9r= zyGgD4hr<|`TJ&fRA11I)?7oMm$bnQ4C?yne%8jo{XX52WXQKc7vF7TX>!Rt2VEt(x z|2HWIIDl^)zpQUR>@Ieg{47P6D{;Q%Y2*Hbw#w0+R_$(%lDo;nP1e8RJB!gK<+0F< z7gk)lu&ZNF(5l$6;*F9gu#{jI3d{U>OWXyiDYryh8J;mB^1Oge+qiLzZ~bs4wA3_~ zLl6B%fL+Y(e$)wGj#?b}C)n5Q-c;JWiNk1X2B)Y9Tp&!hC!9-IX)N4I))ohF8!%In zOqUXeod`8o6&*&uRKGqv!NZ^i^D!Z&Sa8g7Yw@Gbw1*I~!nvV>+PE3Q9mM&wqR``|ALDq)DloP#hvY!O2#W?(ROD6P6*TlITs4@ zNz$_&07NE&!|ffD^b>T056zGk1Bm! zlG7~)I1E*h`>68?AfS*50q`@XCszz^OnF@>h}u-^gDzAmC~5`n-&Zz+8Zm7-^UPn! ziUO;kS^f2ZLYQjx$6V(qD~{2SBa1yOkFxwQ|DLn?6fdb&7QY`%$z@@X1cH{nvJ=D8 zsuMiGCn3+N;BE}pS%wn3r#@}N534$i6AZkw2n9eNx54WCx+gD36lNqKstRQFKjb)J(?^roQ40XL^ zfT$N*PNnp}OJNo}pg8y1h#`DS+{6+s6n6uloSptD%tl%r<9Qp!9GgwAbQ=PTf<O$>)Wj0 zWCaRYu}sJc5G&4iTNGKNwz??KMY)-+&bL;)&prT}KcBN~VV6V<-#ey0m>C4g`CWW( zvc*!;8@6P(#wSst0mLpZ`FA?4cp418#I&%6@(#Qknyj?xEnoxCl*O)^cbCDu^1@a; zO@ZQZVB^>d%~iOH)#MY{>At@v@AU1>wR;@fNU#uwOtrS~GeS?L!D&E|xkP@6-U(lN zyQp;m2rgn`7J`7&<5Qoy_#`^74a6kqRoQK`2%vc%o5^q?o>Vu5mq>YOR#>6Sb|Eu) zNZxrpCtTj*b%(D0fXHqVjiLxs?vOH%l>A=53q(X!ZY;JVK-zKM4*FT1d!kNv1NF4` zg|!UwL%J;fxjRrdz@}Q=B}OT>B!&OzYuiwl#D>au$Ut~_IMi!T7wt*ExvN)J>j24) zF7m3e=oPlX`Du>sbz1AJ4Y;!r1fnEe^b@EQAd7zDa?TCvAa++5LtHm-j=Ix5 z%YS$q2kALeK0oQM2T_)tAieRn$+4q(dY1dK)hg$0IB6?*o4Y9JQflxZIj zF?@X$3rpFB#x6H)lHiO?SHGj2Ly$D^t0C38bDe$O_ibBgrZRG`ctW)rOH*P@Mb^eu zvt>S-KYb0zUnwB19Dfxdkx0$SCO zS{#B$mC(7Ml=)b+?mK&##12^Kh^F(mVnv;e^=ucBNaRW&LRl2YyxTZ$oTgxNVSLu- z{l6VI?R(>>RfSNvCtfkNc-L@_5G(RSm+lhy3tR=)Z2l55cux=}j|oXGOWVH%le)k^ zK8^mvuo9@?$3r5|5O#r&LZwqOB0c|ukze9@ctcEjhLE-%PX?=9p7uv#JdgRo`v3_m zZSDaPv%cB!6H?hTtcFj?FuuE} zJZ2+G8-O&n43~T_#^+CeiYpwBW$7@jAvKZ8DE@AlukUb#Xa(0(MFh&BpJxjFyL5af zpm|A9+HOBDB?RI@cQTL7q|?qpW8+I%c^z!oF)2K;@EMcUh?@VE(APQGzlza!nSEqE zSgWMC4Ydp~ZyB1TykjJY2h9lJ^|n5Q78X}K`nXe z(#S?iS>(lD`nbnYq(Qyb{nltiU|1{c76&C_elD4aFdx6TiAmI3y*jP64e|cM{;tvL zaq+4uO#3o)`}#e~6B*p^rr8qnG6L8|jms)4H{k~Qx}{DhJwtsB{A6229=*8L#F+yr zfI+n z$grY$rI+4{lLuhCs9eqDO~v%KsbS51Me?~z`_$3eA_2BP_O@yS(!65Kv_SMtbt{de zCQs8H&wFe>bG1Njb)HV-MNTTmuE$<5JOy+Fm@pKflh>Domve!soq?g*Dab$tbmV0| zbEw29#kKs=BvxF8Ttz^mm2Oqxm4%^nhhS7uW3{#s*5W|$8J0J(_5w2|n`F#vNeZHyRzC~||}hG?xqAI$D%3Zq}F(%zxkO<5Go?v5^u7+~hWcG#}^ zy)ud3OdB2Y|X6ih5UV~Ica1FvN5A|Ojx*IVyskjTwa@@JG zkr?{3ekRS49iw$MI#y|jj^yn}PpB9bv#yzQc?m({F*+$}G8w{})PZ*oVM~1;5 zv_@8XDV_-`%*rEPr)epD;}E7u62J_P^993axSNY$AZE0(w3+3PW5=T>OcS?4uY%mA zG&^WpqJcZUPl#A=e}lbJK3V8gE>6L`1p@`$65w31;cnkyGPxr&_=AKPAGWNMkq19a zIJ6`Y8uO!c)aOq19(IJG^U7g(2AX(DnsahT7mU_|I8pI4ZIN60S7eoF*jZn%=o5h( ziL@G8zOmy9BEuzhJaz4ODBVwe5(LF`!;_?cdxc2oBoSzYtLq%;dICegLxfOJAby=* zS=zc!+$vtAAJ){*^`;YBbsG?)Fw`@j2vbQ6HcB~1=U&L0ghFPN6`;9>2zN=zk){}p zi}FQ_z~7|MAC%RLN0&R~LX@~2WkpF~o;{UX$M1-;P(R0YhQi3sO7&6^qJ&8H2?Um$ zo3m$zeTghYN5SP;qwugKLr)G*HdM`>&*dN^4Y$3ao|Q5_n<0w=q!u}XpYjs1(q7MI zD0yTCZxWA@>4G-d^KD|HH>BI)+#Rd4kY7q6&)3xXolo|-|QJ=5~F>+%QZlL5Ys<9&?|6OsB zm;)2jbNVK=V0iLk`mr#6!yGWQ`m69OhfLEsKVa64oCKgr8Wz#cvH*%=LWKL00SOR4c*a3+4HT z9t6qmA0cA9581^7_G8Sroif@U2@;uV?9**q1^RI=mUJ~V=P~jr&ytl!YHu1Wu2NKH zkYp$uGm<=CU1J%~3gfDPWNGZLM6C?4;@=n8QH8q*&O{_9a_7stfFvC;0954yBdyfn zT*wC{)hz-7t6?wC-5;rrl08#-kAtnb4c`&nI5!S}o;ydE2g|L+5VAaj08}fmc>WE! zqf7Oz=TYr3h!cy(V=HJ`{PvFv zTfz=NI^1ux4*5$LuB&I8^g2y3`Lvo7tftB7LQp?`6=paTxJtR-s4QvA``F+ zHl1;$H8_e^dD$pRArMISmE%UMG?nJwcJQDCV-K^dCg3gB6su}mFV^Oq#W^Zwc|Y4O zv|fb~sXA6_zPomDOF0ZHfBACnsjG$W0Qyk z>#sD{uSh21v+Ff?L-S=K$-ApIB!+l;GkY%^oRAiKp89hoaz^um#B*`j@vi*ZfyQ9* zaBHtDET)_hDEArg_6N(z$0m+}Xah0X>(EHLK{Q=^{hP6=>N`;GSI+Lr$Z_doO5@(b zhXcWCMSrO`Yhm6cl5zaKo>N#lFupU>>F&9kB8nKh1llPy*tJqvG=SHOi|a(BvuHzZ zY31xUzf8{&7tE<**Fe6!-iZsBhW|WUF!|%c`CLXildf#nY^pd%7_t0<6bT03Rj^Q+ zc66j#H{Yn&CiD|O)jeE)^0xz!5_OH)4@T%5t&{MMzm6UB!zS|0RU_~ zX)$3n&$WvzpSW!GA0vW2oNzcQqyZ^nYQ`i5u$Fz+;zRjep2Fs8qk=pn8S?HfByKZ? z5G?)B@G>ZwN7n-U7B`nZ+{fJ8F4@Pg9sVdHup~kMpD+1hbgKqihcN@KKu^SB7U&D%Z%A-; z3tj0yY>S3jz`!*diH_Evja#SinJ8t&wl*u&`eu=eYBUobqPl66u>aq zdmFxC6>ttzOxE6_n;|c&_N2LwMg=7ZtMwOn0uQVSkd(hZ6WnPHIewxeYc>F(1fD4t z5Is#`eK=#+W|F*?YbX^tJWdUr!04~<8T^AS2o-+qh9ve~%&`rUaMbIMd)KHaQ~C12 z71h*Ble=`(@dtvVAy(13f}aXl3NO3CTiQ^CxR_&^lnr9AhyyZ}EMmUx^#Dv*uizE` zKEcKuBCIcy19mI^Aqpuf^jr`=%ugu1wrObl-?g{>F@qQm=B`SKU!fC?w7fR(uY=sh30}#nw?*flV>;yvj-NZWGG1+d< zgXr$v|EitcLHwnAO8lEU4DY_eNC7aLNpDKUUKP#%rT2BB_G4_Pd#;0|}6KZd<&q3i9AI2E^-m#y4^OAUDW(KK% zC+#OMT^}!!i5VCocg9^y0f;+|KepfCCT2heZ{pfMUUe`dI!8|EKbjRQ+76#TjR5DV zE$-L%Vf-dKnqrg&iqrPN_eU0Y{yM>8YqvW+uma!7n_zHixri^PcAN7F;N3Y zE4zGmz>`+GY8@Dhq#p3|D#Gg0=s7;nR>0!%M3#M6pO`==IT zq5h`i5dq_xRN0KQL%v;hN>qhBr>BcNAr9jar5IU&h;3?Y$D0sFT<$A0Do9dpg+@}0 zG7>3m7>UR05Gryih`vnkwl;6h=Qc54-{OyS-LgFhD@U1esfU^=V{KbuP`+CU{6_@u zzzlczTLlT0PBTIVy1)3P-NI+ol`vOB`tFabmMx+n_W)9uO}GEZeM+aEH6^1Qo%2#n zQlx|EG?QdznYeL2u@)KlKsWGbfzuzNNP$3BEoJi)^be{gbseA+QDiTb0U)pAMr0i!mx5>lhR@G#Ja!4D?xJg{7)hpo!KWL+ z*A$47&fkfiIC&5LeVFe+M#~>e1EVsKzF>`|JJ>@XS%u{v;es_|`C+(LptQ~u3a6sm zv7=JPGF0dsS-Df#xdh;T&p3*Y7%B9|?*kg~2PJIkK3x!T;Z!kKR*^;y=L?e)@r>us z(8XTYXd^Q#Mm(ju59T;=2)xw#fo#6HFU3<(GxkdAZwC;A%Vpe{>Eke#47gGq!uM)^ zJVcM_sHHPk<#A?^Q+w7ND?}yUPB!-d26rmvXvAI^_9@{6hZ^o+xX`JefE@FW+^z_r zHAInum2x2&WaMbN!AEY6W*yAZcOHA|D_r{Nq(P#sf0?2jmJ5Fy&)Mv?YLzfzG`><+wW;Pl^CnOZ}< zDNe$glP{2(>$GZL(BuX=UfJh%f^yW#1anEHerVh8t1vZMuh4dcB|^glHEQKwXpTHg5NPh%cVd?1{bUHBnOwDbyj{5VUwV|M5m! zW9Zz;{*IvfxmHdh&93KGD84ZC?{oILZzwIm#MBGwyb1q`d>9i!$4{k4#|z5j|3ZX% ze_+DlH1oz@iNc1Fac+`!baJgC1z<`Vr=u^-Ue)!c08w^`xq*BqrDtAAf|2VR@mh3)ovn+-rWgASee{}4Lfv<8T9Qxp49G~tr_ohCMEBB zw2VwQ)3l={=LwL#6|e`1nudH(dQ-#@h6)w*EAvA7UQo$(4|7=leC`n1K8phevM z_*nPiGgkVa(nVn+tZFvpmrISr7aqEPO8_Kwg4idwi~|o6{q= zI;`S{6Y}ZkBaCvBJLY+@Q>&m*p^PDq9$rfXG0~U`|j2 z^7C{~9H#YKwT9H7>1=+6zb4_0p!61WF&RL119t%zu*EV~an|b|HG$K(sY9HK*UL(UWLgov!WW+gf0$1QPGg=>tIi2bLPm-4Zr_7?^xB-ew#{CPUVB_K{fn$c* zvWBiBmCSdaC6nd5lV$hjhSq231n<9nH&fCO5-kIYcw6A?1Cn0KC^CP3>XL}|r!^I? z3t=r##|YT4(uH{fqwv_Nk}n4vDGBi2)O)B0?)QTQDI&3w%y0;aoEo?zY{pusrCb-Y z$x!^ItGY4;5@6CKka_5*AF@xj?ISbMFwTzLnKs;Akpi|GCepMEc) zl468vy0pcy^9}f;Vq62UJO+Sa@Z6L&tG3zurugH>Q`P-(qNF38#Y#6N@XDt~)BNJm zy%omf7oDg>NweX&vbTn#nGlkokpOLD$oTl5+g)(Q%L5 zXQ&1=Aq=4U*M5eg0t5}Kz;hWR#(!@c5C%~E-*kC`-7i%N;scLAFpBFYMbTr=GNB>r z5GFAFX|#NvqdVyathIc+P=n00vH@~>>0jCBDy2GCvJepf7F7JN6uKcA{rwKbY^v6U z^NG331fM{tyz~=f72T6lD*@JMCX?`-QuEK8{|>B(+*fsVQg_lSGlOQdt%?`Irde#e zI1R=ztZ|QM0bjLz+6dB&sl}6nK9>i(QcfuXZvI=Y-h_bNrdnEu`GhZT99q%`rWgGH zDam~j5X&{f)yTzA&&il#VCZW_N-G+>?H|CIz-_Dvr3Z+on#;ugFD`+4zDQ|p__VWU zK`~8ehR8n0!!@(}+TVUOf3E!&QHst>_WFm2!3wjLJizE0Z9LQ7IIE2Vt7Cm}p;C9h zuSV@WA+02!pYBtdL+z0I2a#NpiCVW$fPhUJYgkGBo8^!57rc&tvg~)lj)K}2=dZVz z{^iN$GSQv;;~krym0U<=7n5S(u>8WQ$x8MkEnt!1lhi+1<*~I2G-Oo^+?Ey2H&`LQ zqF*ZeNMKstOMNn%ng}*K+%@t?ulk2_#aHBT(~F_rq?BD$NTKU>)VXxCm5Z%NlP~oT z#@xu?fAP@9n&J}D0j&OGTDCu)+PYtMYn7`xkUVTPgE!KZB+FVf9RD9b+2Fry^$33H zaQ-r^MPq4Zt+A_I%^<%DVd)U%sEo3CPJ(?f_?De=Y!jQokdX@X0hy_MEpeUCZoZ=> z8oh6WutpiR3^JH$C2xY*0CZ*;z4A#q;nfnB+E^y+;DS?cXj0ZuFCjRAjPp1}PRO34 zZ#j|7fKG`44Eh$+ z@woT%FCSj@Lb;D@G_6zfC+fa8RChnA3fH@UD|xWJu;$yXi2Ew;D~X~1jt_V{^ZUvb zEQZMH!TyW&p|lgCIG<;fU(N~CB*ArR>woZFJ9ts$hrwZi+ESObDaSTlwRzyXQ$03^ zUu+EzKs~R>wib(R=%g5CB)ZoY(Ipq><7YuC$!pD#e)T3X*4j9X!!P?sXG8QDWXsXO zy-)PQ`X6ZO^6HwgM}e@@46?%49wu?(txX_#RX>LbQ8;mP!8IehBAFEaim@hf#xzWC zLV=t-;NbW@$q3)-Bc^ZK-Vr#gv2&Q7*ng#hxioLr=Y#(YNrR_~kf`G`^hJmgG{W95 ziz$@ESk#n|y~oC7j_U_<3mQ)}FuYSRzepwn?058SD_hVGSFmelt8X)p>I?J*xHm}cH8UAMJhUSu)UuNDeR``p0%Nc;-fBofRx~%ToZlT?N3-6zUI&jah)==(` zzWukHRg_dt8=CdKN3Lq?#kDVzfck>se(CiA2fwHPL$aJhvW7!Fy@ zRb91^hHoIgA}3&Z^2)(e(}VZ_6bw2x%m3Jh@t|=5F4@_LrDaksZcksS7sMbbO0FlqW>)*(>;1yno^-G zt6&&zuIzo7mg+LjaqGIWgRGEhm2dt04FD53^$u9?eTOgit4K|sCFW|`9;oD>nClbc-Z+1U2E#N3afEq+tj9zxfyHjRtUG(?F#y8!N)2WZaqSXX6f98}{ zkI#rQK_>n>_X$u&oGOi1x=$_$useE4X%&flg3pc}^>lUqNz{S>j0nU!h;p%xH@Y^n z?3k0fKF^!oQS}kJ7jV2&T-v6c8zKM^wTj+;6wh(G~aTx43!BipC1i?j{@XWZd zR?!U*k^_=^D47IX*f^kHjrY2@_>|2~8fwfdBt; zwQz6GYL8j#XqH0sMXxRm#|L+^xvV^Zg``RYAgx~6_4d&9nJHs?=msD#O9j4w@t;6Jzecgzky-N`$%t@qukxe#(^=XK{n zRPP-<@be7saI7?3xxC~0$ZKL@{FKTW6i1(+lpXZi^nlgT0($Q~9Sm}qa4h4E=i%Jb z(z>}&a9q;I12J{uXRcG*U$4nj{FB_UjoH)rubypR`)nsX+Tvy_X3=B(jR?~I50LrS z0TS4`s&m8O*@m+gwEJo=ZW_;fh*sn*m-Kx%<}I}kCs^oi*l;?VQnLY3PIW%~^D9W5 zUrQ862i9~oUznT0pF63|-~SV=80ah8APsOPt^tsmK#ou#tUB=9lA0`SP4>bSMtw^8 z#`Yv_7*gVJ`bbg(nG5)?p6kRX6McxV_AUETTd`=0Lk;&d_^AcqJvi|LMN5amMiI1Q zQ8M`-y@?Vpy zG%`w3lcv#Ih>I)$jVzLAJK|+k6ZdnPKUR1NNjR5d+->F@Juob(l48;QGdX%UO|T>Z zz(8%Eue&Xk8IZYqu5FL(*1vNqCrHX@w;ha@BUEHxNKf2G4C&_f6mQyk+ZH@yU6rD; zK+U;;9JN+_NydSPI7p!rZXq5`A2L&|#}73BaHRyrO3ijK08VJW1X%Pu>{3(HXapye zQ92`;tc;Nh**k%i|K0yAkI$d7%nG)6L24xTV$cbCxC$>ecQvps1-DZ=(tyhUyOO-W z(zULD9*CGy3{g;|JwP2%3Z#T){jC15Nc-svN-XsVk&;Wg-q|jtc+juM05h zP!%NshGl%h8JMlIzPKhTpi}}x%I>lM{yZ3@?StmOaO&(*T1Pk%5afIRS&#fV@|Liz zVF1DTpEzS1+LF3Y%s4T!f0iTCfWf@Gc5K#h_CYILf#^DkPrZcXhDaYdtnVOdA`fU1 zKWU@TXG0s;BKSquMF_tJP^y85*L*mbh)nPo>k(LOrdy+g*Q=zH0AVqX5}f>8_K@Z< z|IGYAcTA?+i=EPdpzZa5wy1i-R_b1dN4{ai`Ui3V>BoA&7d(P!1JqH@7mb4Dt!XxH zG=TDND`LnArT;`ol4#{E}#9rss|z5A0?^e5B*=}{7NMpp8}`IkP~33sIARdzut#gDJxHZw8@ zvijdgzdn_D;*At#{`S&&;{k@HrLD0f{ikufAU;=u*^>>}Z@Tt}J_I=s#flG~3*Cfv r7}=lJ>;mrpN00e`8`2mf9}vuhQ_l2p)X1NIs{y3N6~wAV351Sh_*!kY?#_L|QssU;zOoMQSPOln#;3rKQoOS?O4pSl|(M zXBS=T5x7t~wd_PwO^$(06=8` zF*Xk{vAVh2=;MebqaEQI1E}j%CP`H>ww0rH-3JDy9da`dlcc1CWlD?uY^t28sUkOcaIgF0@T6;&51R46ciHMNmU0RmNM=Hzocq%z+nJe= ze&qG_5m)yILhJ+u+e|$2tefZZ+!fMu4-O3rcP_RKr5vviD#OkW73%SCpMN+zRaSZN zV`xU<=qJqIRK`WYOu~z~-{<`u3B)>YGw(iKyO1=n(U(OIpKLbx8w5J-!y&w2^$nalv7%`GA}^ z3_1Ht@*nZ@r+5kYz5g8z-l8KEg7ZoXo=5l1$C}m0@u}4)e}Bn&J!MA=%rjdZ*EvCK z-~PNcUQ)rI(DC2KjV+v^Zi-^*$?(DhCh^HC+|oH(%x@h*Cp$>`qg04O$*Q8Bb`NpC z*r9!f|5Sz9C@GEjQMo;p<0OxX+w5QV>8U{A9|wo{nd>ja=R8%M#o}^gpELZ6!+{cz zcj?A{Jl~%1)SZc1>%3YtbkA@TlK_G;*-TV&0vH8a{%F?dSi1KlGKbg$wHj<72R+IC zQtIGR(q1`9`!9?xIl-A06_euE&o!^#EtHt3=7O2{>YM-Ltr4{FJbwjVYK9_$vuxT9 zTd$d8-^ieLjCAGvR!}b8W=AITFxfk``GFd@Q`7OJG;H;0eVjl**5eqlVK=p5dvasz zTHKcb%{iA({E|$iYO;@0tGH8H6Xu=q6|5`Mg^wvGh>lyX4LTI+bJ-VRHC8ui<5GO9 z_sY8^2$a$42ZI(TjmkFr8Cpx-F#D^E&^9Ur>+)&v>AL)V*Dn~!Z7F^$l@LuhF8{!p zP~p&gglGu3#Pf0;xVnE@m~ma!o01TWV`<(#>I&k% zyq!a5A?4pgAMd^2txH3$N$RB!<6lXwxI#6p8h1J{Xf7vTpU`)o0a8+DkLu?KY@rL< z5&ir&<2VJsxQtrY`O4u|Q=QIF0BjA*Bk<>|k03yg`2BvR&7Ahvg?trx!}SV*4E6Kr zx?BYeepQxSs2r^Qtwk#*RrJ`h#7TF+m!zEiPNVhCbm=-NM7`LdRNzNBk`1DQl4kBd z+VhpKPV4H(HR`C#XiRr@D}lv))}i)ZIEF0le-Qs_LFA?OdusDhIW7=gdR|O*U)@Nvb=u z=Erd|tlF=fq-9xDS-q`t(w`sQ5b+U_Os82(B7D#4A!h=b;}+!wgwnw&`9ht6o$twZV0*V}XeBwh>&qMzGxuT^u)g3~8uh zGzS4?$LB9v#ze|$4iQ}@c_*)4zk0&yi>yEMJm3Of0Rkqrg^#t3j9^0Q+O;<7vjV~) zKBtM7lh%<3dCg@l-YIqbucpj=f;RZyNvdxN)n_y3kaTplp3-yc7Ms1rMNw8Su98o^ z*%rR7aDj|u7LuT{3U^C&Nj*C!@F)-@6WiEp*Ej>6zas=4CfR-Jr4G|LSMPm_(5_~! z@5DvfyG`OFs$MG&wsu6+9$b_rt-XtH{Hvl{QIDsqbvhIJSW?v`k<3v5C$JxzU8#%5 zTX)^I-zY_qUZ{Ca;bV}siDDAWK`y;p)vLs)y2Tubk4;jD7yY~JJ+R3sXmynB;3@kW z*>K)W@ODQ@=tTCtnY%j7?S3~F-OmEk)Rozyj9Le?W;(ktToS@6ZR}MB!u#ZU-LgI& zheuH8DJEXBd3}FO3Yw9l+M)zJDym`%ZlBn1Y1eG8u||ucee4uM6-(ltjJTZZqk5LR zTV}>6Op~_pPb3-NdYIywtVmJXQlu?!7~K!?={+z$}ha?oDCuM3(O9coy|b zAzuS$hTFdzU#be{y*n7$g|}v}0^d8dcHRA)&-yp>TrQz0U@72x%C+*3yOAI0?aup9 z3#?6hxQhiAX>swv0^3_}zaqpWX1D?IkXEkBA8;85gdI~#RUti7sAO~-`#DCrM4HE( z;vzuQ4jhxc!aQODr%#K{%FX{VDlNZe+xevAeK7jP_gT6S_gb!5$@z0x8dw%YEV&JD zP5#b;kbprlX(tHx$2`4E?O|@I(W1>0Ia9%mhK5KlQdZWtZkX36Gc>dd5LqU_tly4T zno*&q1u|YwTW}42(Ol{B#$K>ys%k3jQris_!;rpT-?D5uNDP$h3NI7f zRg6t3ax57gr3zN=BGYYwnXlbKZiO-e6&OnAi zu)DM^U&+R=z;X&pslesFJCN>(S1zi&H{g>_!QAt;@Jg;5O38nRe0dhZH)U6 z9>`iJt8J==(AJ%{Uds5+7%wk4ZUIT(h16wSZAds^TzosYzU%qEXnZ^x&bTn6c*(_& z^)QaZ2QwZX^i5XF7h6<&`(W1iB(dz$2Vb8RoR8BK+^a@FJlyF%QuKYKOh5^YAN%h? z)J!xOb^$wX?!ffMVN3ops(f~xvf>ywrHL}h$h^ou1h0(Da1vrWi&~?n42jDjRopnV zbRS0!50hrQ$yg8gL^DWYgaK8SqJlW{-wj-et{M>EenCCk*&YqPbLOXQhl$D(M5AQP zD47Ri?;xT9hA>qYaIS|GxmsRiEOCmEYezWPhLr3A$oW99cvff zneTXkGq^2xHmfH=mI7ay!1D}DO@if0^LD^2OrtA4c)?I_G*v#QtwQKDZ=~d6nQ-U_VXCZ&$(@uP+c- zgOj<;RXl==^Hz|`49}#CSUE9?;-huU8(%C*p%)P>2|V%}^FhUzT~3L@3hJu6_0-&S9r30G0_@!qB)@b=YX#)UNowM zky&{8Oby2}_Eh92c|<;y2dwmkS0w{YeGxl}aI)7(&b))hMlYBr2j8WyQZ%uZ0w+(k zY{7qwHA6J-sG)V?cKWP0_ze_KYS!0QLlqm?vSnuYyXxrGOqO?D@@_SjIvL-&>lhX= z0>%QoyR&i@@!h0cC2|1&vUcH^U!eE6`ds9adAd&|$Si)(H=FMp45Y%7JcTQkv7=x) zU60o>mu<~fC9lW&$Y8l8BFQBZ!rQbF9KR(VKy>rlgh1rGX0m(7^rI8buq2hXmuI9a zW}0L*HXZ}F&cq{Eqw|*L2rrFK1FDC~J^9Y#27#xJ8u zQ`95!yG{EFm&<-i>UAUNWo7_2*yeN$xd8bJ1D!2@%fL>m2|w)@Pv00q4_|c$IRP_U zMEMo9|7M9L>A`ZbXHn|;zE(s)QmLv=lUy$rkh`b$XZ+niq#P{?`VuQS4;UjN%UF7n2{p7@i6X57aeDLBB_QH zDrezE>VKvl3#bj&N^R8^XGArhu&g=2R;3g0-I;(APO4CgH%;)`>rt*~#9xo7+4N=` zk!R28=!$a{cS|}wslfQgwf@5x>s-(J5?s&H|SZCwc z!ZTfX)WV*aw$EquC$9JQ+1GYo-~DV2%Kex5WTVBgDQ_Pg$+RiatJT56z5X=+hT;41>o-{2@`Il~spUt93Whp}0-C5Sr(fvG*9skK(WTinAI{}A2vDSD zpt?@VCy}Ihjtfx9TQax3bXD^^! zT+W~AJEvcutr#+tSV@$n{Q0Mw(xy`OzBv6xN4ks9<9c7Fk5>acREQtweUJ4eyU9xq z*Gl?kiv$lbykRbmV@rf_W`(KJCkJ^a;V2NV2Qg&O?fu7*`7VY;HdAW@t>*1l}ebh$p$5>tKKH6Qkre%5L@+!wnmG=tWo zxCtx{r@ta35lOGn!cJ&TO(Z}cW>4C8X3E@*tuSHURC^Ir2Xsv0 zKPV345vi2Tpix9?9mg{iuLbxy)Yv}*zq^V}9};g(L1W5fRTLZB5ODp*SHATLB}(fCWXlijC}_aY!W zI;0d&F7Y+SYV8^rR-~DAUihQxdynN4&e_zL**fC0%h2hRvo1VaE)B?WpPBu}VjzV_ zlQ#&W3a^1KXhHg=hA1^;H+rTp`?c6$;~%@&dE-crsyZdtE2Me0J1x zvDLRkh^MqSU}Q7fej;RLuhy6Lb-eO3kPAq9LiRegXd_S(*_)|Fzu0Ku@L1-KaHtHP|?1=MB*DwHWd_YAjK|ssyzNn zDci&Bh$!~omj`3=%J`~1U|$`}8#tf#kY#r(U~}#-q6`4L6cmQe7;Dbs^_SS*s>DOw zbJTuFxp@k<;hY-74l1ns@5QO3SW9B=uM>05LfL#=?)8w#0RO>@p|tGK|0tH2_75vz zkd@QzWDow)fUGjmtAGpX#mNHl|L*9yBZBgrob~X7VcFdK&b8sii+|dz19oMU%B}TJj=y5_UCD+-Vgm2F?}PvGrw42?nCB-5*eQ$#02Q=xhPFFZ zJ}qXWGbeivHLyj>&x2420H3BdOW zLP}OlvmUc3(zfu4OkYc6*H@;^GjX{(>7P^>08S-s%Xg=aX1{Q|>FJ+%LtnzCO+&iN z=ChM_vT0w-?gbGYAIBH(f$y|9Zf)}G?^OQPri@*uJy_%Bz5a;{wX)~v&h0F)rTV^l z26B!gw#pQsi{*~^FS~4^XroYr*5t#^%=PwUv*B%;-&_~U4^2SK%A5ui;E1Vi*l*Cd z;#Ry_5l~!HNPAG_OVNfch;$yZUwBhl77g@`@D&y4@*9p;!x?h$EoYZXWvHIGi4_tR z>r!?Igy#B%h7SDRmREi-)1!Zf6GQqoC1Jmvpwk@jgB18Vi1px&5`dU#|23>`1djKT_Y3@6!GxqiMX&uoBo6A zBlHW)MV>M-D?wUFAT}(DLCsXFLO~Hu3*~0Sr!1{f5&n@k+X3ZFQ9&UNE3yi_ADq+v zC}Yxn3Z%}Yuu1#yCJWa`Dy#?_x55LLawN`2-Fr!U27_)SEY!sa&`73v9ug%i`cXH$ zq-+dm&}#G`QJ&%>cGFf^-BrP{kYI%o;51w1VFOS>sl=aD0od}Vrust3e(?1<+Q>m68f-D59Jmp<0R3d;h=-82vKgLhCBEjxcq7%uv# z($M?xUT5w=T+46BkO~I;Xx^=gGlZnS4sY@{J7xyS#C>D?p!BG5NeO2N{06e27K}AX zmIMh=YTryYXVcm@#^c6$*36A4-<BgMct(e#>)rfiHkyI^87y??bxW$!VYVFYRZrrC63AGSnhFh z(JVo7@UnM79IrDORk~yZbiojC8Wi;X-XkyNqPWZ~u8OU9LbwPx<7l*b@R0giEe1LX zucKwsC}cpMDkhP3uX%6cgQ{9+nP69h`1%DmKNxL}uj&=VRylas>OY&SJ{tUC1poAK zlMS@aJT4@dOLu1s4~(m2W1dqy9_-stzxUt`&3#CBD;~UmB)_cR)3eo#3cqd3L%)cB zfszT5)Wk_20bT70OU!Wr>EZ=H?74Q7wP|eG$O)fx6XENZ*L(0V+Ryd?Vs zIs#4~0H|yav^QNRI%K@(MMFQDR`0RtxEausBgXb%vV7p=JA&<_WqLYVz~a+y&TYP3b&>5y}_WD0(0}2>t^Qzp*r(9g`Be}-wJ8JJ59lm4Sn3Lro0&J&#ZHfSK_)Qwyz;Lat!SJIWJywA6aJJ#OF z67=)mrA=xyLGZa6h%>DjjI$U4V6MNq69P=cnR-Q55}-P<3HknFz@9NY8h4_@l@`zA zb7;XA$N-Sw0xuQSK8s?@^1g&+4pbztTEAY3{Vz%X< znIqXGv<$o44g^*Z`Ll^3;KQ!^bLcClnW#DaisXA|WOLAZ{o2jviLRQfep}z*z{0Zd zsQ{qNWK#pk4eEF}(3svQ4zeBJxdn^e)|FA1o{OyWut){EyBqmxSxZ=Yn50>RSTBJ=EcL?ay`jn-m75j!089G<5p$c-zg7meewnsiQIQOcQ7J z9!UBT2g7;+Gl>j?8w}%n?LsgOTu-DU0p7`{IU!97LLW5K-4_ zI4vlg6Ls5|boA{UdN(UoH}!4so_XxNb{_Yy(R~QYHltY)P693PPer7-^DgY-zpQIY z(7hF6#AsaEa~`v}lq+NeB$dr_8<<02s*sierVI763r(;;*IW zrD5(%>*nEVWA9{5>jibQrnUC7w*dhB7EdzuJ(fjNBiCwUO@O=RAhNd(=F;NJ)3PWB3s(N7Y!1`f{#_Aqt*47d)9Uenv4JPV zQd+>v*+>(*Xm#k^d7J*`k)2;V;`ZSgJ{;KrTAwN<>Una0P7vgLx#?(vmww#zS%BYb zi^Fs34?$1*#t9jG+qUZC93xBC_v`B#8@Z_uoX?8SMyI}8t&1+DaXt(7=xfvbd&V`t zKQzT3oi?A4R8K2g#0Nk1l;2H9Kbhe63yO#1a!LoaZYkQCM^Xf)2S*bWV#2{BzGq9P zFD2#6P>|RmHK}Lz<&x`_D$RZJnP&;3>{zY;-SBI7Xtl6VG0%R8n2f|SbcSOEr8B5A zB!dQv^1InD`zrRDr3)hqhPz3_4FSlyXUtq_r;+}T%ueH1Exz<*q|BkCoD69>9IK>z z7Uy4q-t>2Lj}oXx3c-Zm66mZPG!NdMj)MAE#vixy?#N#sCQIT)E;dZC=)}jsS!$=G zz>&n73ZSoAnu;siiIys$y(E6m_J~)CtSu=TiflR1c>Wn9#mdH+)j;fcD~Fb^I);wz zp5t$nRdeb^^7e!731z74x7B5+ov-DeMuetE>PLi^j{j8GY$~u-*Bv^PyEfS~)^DkZ zoYftiUgiAz$l)?vr8TkT)w$r3g|B&)!58c6Yn_>hYapV1Vs37d zE*7jPYKbdu>j@Q1T5^f#Wje#iU13w?V+xc}6zoHA64^wS% z5_=t&^}D(Fftj;uWsEhxclT%S%cjK!PQd1@$R`<*`U-cOH$!e=d9~RDe|85yKW86Z z1|0UjGzchq$n#~bxG0`Q1<);ePt?<%{wU7U7!#F3-@owonTSlc(iuAW1K!kU$H~;0 zc0Gu2?Gdm?{uw>C)j*u*;+nn;D?BA{5IU* z(!DuYvAiaoPfI!_x`(Gk`}M_Jt5X5tHkLg^jTW8xGI*&9k`Z`etxB+Vx{AX=q_3UT zKe4c08S6evxO9F?6?@EHID6dwy`02veW&R$ny~OfG51?oOc3)SNR?|(|H?P$xlwy$ z?dD>faI87@f=zX7iSx5lfaz72po?VaIkA_3rqAo$eJQ%ntCFXl?DQ6N9O(G6OkI7_ zv^#~P>F*)nG-8aS6K@9EsFal2X**7@@5JrDM4|F>Q)2d;1|^uMoY6KQ-M39*0~hrJ z%kPzr?%O>>@~~sEcCmOQeB0`s9Tm?tW$@Q0$G8j6TIV-J*r+V0TbIL~D%u(|Un|n- z47QC-?n=l&uKF9*SOm&UTU6c~u@fA4)cT4U)K`Y`$3eFkoa0(O-$bDod?Go{2G3Ho zt&k?l$I7Y(kegn8EcK1W5Xr9!!i$~D@&}ky2g#rU9&$K;F5BW@Pgjig-Mr+A-R4%g)hEf%i^~jfDj{)2fmGpp# z24c*Zh~|RifO2RR1)2e8;=#!5Qmj+AW_`=;?5Z6E z`VMJ?r1>#zg_Z_rXKLord6p+R$eeWaPmOWiTA68A)cTZmC9A3@j$UfT*Z~tREIk=H z=HtvQbt2x@HRuQCrxYi==rUa+N>8QA$#m%G79nCa+*{7x&`j&M*$O>lw;Fr)Mf`V8 zW}{kDXy3rf6i<~dMA5fAmSmD{2vOu%Q6e8(ru>kQzH6e3=ttDhL1lhz3~1)a!!%Yi zg>i+F_>Izb=$quGg5L%*m$gv`lHs&OtBm+s94(`{w-z`WWYlUF+1@PQoZw`RXKpi!Jj>%^m(%(GL;X8J`! z$=Q)jbg6qWr+G^*nrjF@@QDC_bt`$bRn26~?dW(6I?Vi@_%8C?VzCwI?`82irOm<`OJ`3uyxM+K!%xE{Nt64kY9 z!MLHqEyAD!JM5gZd?RZA6z%&Bz~u{-?V*I4M_EL#MQw!_F|(at{)SOm3?sH#TW39q zy(;8g=sha0_dPj}<}JZCk_RMUo%?vM23%C)@{8(9%qfiSo(3Xr6<_rZ-;1-RGyXU@ zkhVo!a2ie+&Gx59fH1jA00?gD2-Eoa~GB^?y;o-+V3KT#o8mh7`&7gz}tm{%a_($W4sTKQ#im zj!urI_{0NmWDTOr@u1EOEmM;eWTw1~;F}7a;l=5(w+~+usqM*x#e>?0CRPg!(&LtV z+;HC7u$VcKI1#&hxGdAFIOIwAcBYF=(0VGeu$`Mxgi=dI+%z_CMh%9WkxBJzBrAKO z>VEFMH_eGq&|hha^6w568mC4MPx`dg5%bGcSSvUUCN+$W)5)JLUaQ|!gwI4XA2qP| zbDlf|tHDeeoiE+s*(*Y??MMshygyv9>U~%}r@^*H%06pFl?If{@)SJ@gW`_LV zEF5@|j%2Xvef{rYQQ71zGb93&=p$2D6;r?RP{yOy)7py8L>kn!IFNeR6lVJ~=^|VC zYgUiY4M`DmG;Z|+3>k5{N(mZ>=I=PkANkGroD$J?%s4PZcMM+7ye?4`L7Ms`>y}~6 z^--9~otAlGfN$MQtqp&W0GavYoC8Tx5&A8_XiHK;uw;_@u>q+&*bEdvj@<2K0uf5R z6*lST?gIxa$9laJ1g~Pw-1eHUNQUxJ_y2jNb(CvuL|{5)zwc^_?{&Rgc@er+vqM_N zM}uyn^sp(ff{0?_BIal)3A)K>tk#vPW@t_Pg94lSF2MgdFs@@;pRd~4+^5FRhE?1K zs6C5x!$-EmcPQhNmKN6+-u$ajo0%yT{pC5AUL2<~z7;68I+GOC~?5D_M*8nA?AtioJg^b}%XD3nMvsL_K=b4@bat?vaAN5cj}t8@;C zD<<*q8-c0r0VN@ho;iS1FOZgFUggq|^pt{M^x1vX{w?a)D`SJyLa+JOQW7rI` zXrhtEdYYj&1DTY}u=>beVsa0Q{sqKJIgtEh#^}uR@PmRZeLw;IBud)ZcW!N(y@4eW zpP~{bdqAJkx6BYHG%FwkL6r|fUWNFb+v*!)g{p^_*hiE-Tl0pew?4-N_mt_+W5VUy z>d)ie{UT%p@FbvVT+x=&e8bx?`D?LGYp|&zFe>)smc=eNoDU%gn@-ha4%_-sLns$i z*uCx+=5I*iI5n@5gc4y#Mp@DyZHJ(ykf#jdybHOLGEQw*5<7FEO^zE+PwvI|D-To%gkU}*2!cGi zc)Pfs*cRecx-WlLTJAoDV>jxX$#YfYaFcuqO{`%k`ph0oJTe(v7ow(sueaJaa>PIU znWMEU>61n!UX^RUphB8;^N!##7iv49{P|f0$&Q)ZjcyND1X4#lUQDCIYyi!ovb-jm zja^|t;(kYwv=%eTwtw{mqbHK&RC#IvyIxs4nYQUW1zQy=&Cm=9?0sVQmMmj^WUZoJ zdKo_q)dT=kKr%k@qcCX#U@BJzLN?m>SAGGP8NDUEZ8Y2jm7q*8r#HO-eo!5r@wv)i z`$DgEZs(O3Nx#edKeKtwlP_8S$z?bJnfjZ}+xZN!kM-{r?U?`8p?c}0GmUV!HSy-d z$ow1fKVSO+4A6#HoxVep-j+bcC?_0fnq~w~?F`K|WT=)ROT+%KRf>G1n$I&yIQ5ss zJy3U)eIR&_g<_J!h=r{E@W|3roND871GE{~F4Wam3vVWk@-=%>RpU=lvJU8*yFUX! zmpoCsR2E!g`ETe163AE4h0Y`lo707}17=;+yECR`B@GM``wuqU&QdQ<_U#609Y}Gu zNPidTeY>&OotP7|axtKxp%n zas!0F4yBy8E{}g##-!Tdr7-oJzzIUSp9+vJ!lh$tMe_g@`{^wX*6FxfyOFh-2E6th zRe&y$1E39YD92}g+q`N;6}J>VwBsF)1P)Cr#V0xh6f>~Q01K=SX{V)9RPrG;Yy@vA zEjwO|n40py^U;Dsy2Oy~Wi13<3aMeS9um@WJze~KQyly@&)@Q0+hf=x2 zd2uRTqnqtUMiq=0jB7)tAa)>pZAVjypJ>dJZ)>-~ugHZcNDkr{AV-!4L$CHfC$y|5 z0!6=b(5(w+383ApC)b#UQCEu=^yil*9Qp%T*a`5)6bUMi>G}$cR~QiQSga0w`K**{ z`1KXdmC07mJbl@ycl%Vx2#I>XZ3e3OIpoo){!B!1r~7QinNFak5+;<}#!~4(ns900PP&y)JaOPpY*6ac;e90Vp<~ig(t!KV zUkcwiABFZ0U}M>bDJcw(1Ih=7s4 z-y)Bcs?QF-<}8Dm z>VOZ7};|Np9 z>u?QSch`@4;?~tte>&Vw(U^HLfPPWhQ`eG^T@5r?G8`g_P>QwK3-a1cqrdiUNQlTO z3Dl{J(m|{2qs^oQ86aNO2i7bl48WiLDPJ~AeRmhaT77P;b~ z+pUH4za?&czA;QADtxFN4LS5UIXQ_L=^NhH@0FHEJ!tr3w0=m8tpgQo+}&$8ccTU6 zkXXtH*?^rKw$a96TM5nr4I)I!3g`~PB+e=oLgNB@(q0ojgKR8buUKYLSvGjV0gGQP zCN*uRN-h;AFs)Q7+xW8dB5QAFxtGjo{DK_Q?p+L|)k@gK{02D3w|KYr)TY!h8+kaC zjLbGTJbf{_L+<9;;kGfS(YxEwF&*<+0)93Iyrgd4Fc-6n-s@AN#6Kke6S`kI`22 zmbCtEo>pHB>pNr)a2^rMOtc ztB&E4Xdgn-!>f@K!PpU3^q>2Dk(;;qtitT=sf0t(^x01~#Kx`hX;V+_#;@!cvD`U? zC*mo0INHj)`|sYfQWu8q=u`*^gxChA-5$H!vzv^^Pc~i9$;j+=Y#x5p2?JXa9v~SI zAfQ-N=uvhEoA}+ga$u5D-8>BST27hJV?zv8!1#&8$hdnJ4RWW$r;-__o*v0TfvMj+ z`aNv%?>_2gR!MiNXXW*BzG3`0ix%@#a?yBmlPbK?gS&~jLHK<<57!BN@$~BUEJ;Sk z#6J1Y@!d^Kx9FRj)*1wZJ5A$znuRCp{Z8c-!7{|*Tr{SE3i^-imV7bRMJ+dPmsR2?((A| zNl8I@zN#%?^1*JnZO4f;iJCr$uRiLC-}`KVj&%|@(rr)7re8^i=s%3or8pgDP52k?hXD8zT`tc$gU z4f|FA{;CEGwI|2A8I_|N5?{?e*A@Bt+>L(*>^CVv@RhYH8s>r3XA^tG_$>uE=~4$q z{R$PaI8Qp^sE7bksa%55Y;gjWH60;u=Aeai%i@<;1Lqr=X{A5i@qm!5l|kiFi&lqm9&5= z2lDLaKp}`3BhG%1V}mq2k!Q=ZL99?ff%5Dyvkr4C_sC#%1(+MEkSN_snR9N3-kc;b zf{AyQkiK16iYx0Zg^-pxRY+W}yzJ%utsJhj4XVYmkS5}k@+~9E`KNaSnC%I5wVDt> zXJSuKzU5(-BNhg&g)q0VvEI)nr)*|gSUs@dP4@dv=WG^Qn57LeH7)o~S+fPeiG{K_ zSMK!8OyA}0XTF=(=-S3Y534~0r{7q&VwwKj`b86f3&gnPNWV=0KL#)Vs@B+VI@ttb ztll4xowU&0M#8zNf54baVBXi`vyG}_v2e?lW3mdsQ%gM~s+t0TWK8w~QXdT$U4pdTyAbvg)Pt6Qp&01zg_SAO0%K6zNz z?Ss1Xkvt!rN#C6OG%~D^0ub6vWCnw{IMLV$ArbTSqro6=m)l|O@ZiQt)dRsf@MTb9 zR-?xqQf-rI&d&ao`nE#_6H=hb#E{1APfE}dtM|M83RuYFllKL;_P)-%KGNCsAN?mi z)@#o7imq|Qo?pP50B2wuD-pzKQ9oWc_p)+uT&19tM;0>>JJ0-`DqHtiZz0*D-reHo zcB8v5{ixhr!R@y9Xh@kqP-*%5P6F}XcDbuFzkgIlN3449d1eAtC@n+JKb?U+W*Nv( z-G1O*MZ2;F?0B8)=FQDTG%CUCw;8*+x^BYdSI_Z#i^ns9un-Gz5-uU25%OSLoX(7gniOK+jYq6kj#d*H+ zrmkpt;hk`0!lGdHEJnYFuTShVKGH01sas10H;1%bjypD;v{VLaM315ZqvyHNW|yaho^p7h8L(P_{*>aB?J?8~P_s zRd2h7HHYW^WAge=)4NMb6`Jzv-ZsZ!s-R`{d$!@IaL;~2{2cMydjrVX(Y#E|L`X@a z+~z`Tfv2+WQR@j9y|=}z;S73~T5NV4KSO(9xwdP+&m}(d*l6$6$||r;l-j!|*2J#p z%lU9LmuE{B-ANvTD2q}qd%qC}Ep2ND+@Sy=01N<9E_>I}jT>q%=YJIweBJf_?%v+c ia*Y3raRcCM&!}Z+6rpiXD=Po#^70>4q^l&&!u|t8LZVXu literal 0 HcmV?d00001 diff --git a/defs/webauthn/apps/fedora.json b/defs/webauthn/apps/fedora.json new file mode 100644 index 000000000..b1c921393 --- /dev/null +++ b/defs/webauthn/apps/fedora.json @@ -0,0 +1,4 @@ +{ + "label": "Fedora", + "u2f": "https://id.fedoraproject.org/u2f-origins.json" +} diff --git a/defs/webauthn/apps/fedora.png b/defs/webauthn/apps/fedora.png new file mode 100644 index 0000000000000000000000000000000000000000..d01c272d65a33d3b0c49cca2294adff836835903 GIT binary patch literal 17900 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 KMNUMnLSTZGGCbk{ literal 0 HcmV?d00001 diff --git a/defs/webauthn/apps/gandi.json b/defs/webauthn/apps/gandi.json new file mode 100644 index 000000000..9f27a2668 --- /dev/null +++ b/defs/webauthn/apps/gandi.json @@ -0,0 +1,4 @@ +{ + "label": "Gandi", + "u2f": "https://account.gandi.net/api/u2f/trusted_facets.json" +} diff --git a/defs/webauthn/apps/gandi.png b/defs/webauthn/apps/gandi.png new file mode 100644 index 0000000000000000000000000000000000000000..724e558f0800fc1f50fda52cad0db70e27ccbb26 GIT binary patch literal 22165 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 byd}6Y4sB(Bxp9uY%>tC=)#b`$%)|a4b*$QM literal 0 HcmV?d00001 diff --git a/defs/webauthn/apps/google.json b/defs/webauthn/apps/google.json new file mode 100644 index 000000000..bd86f22a0 --- /dev/null +++ b/defs/webauthn/apps/google.json @@ -0,0 +1,4 @@ +{ + "label": "Google", + "u2f": "https://www.gstatic.com/securitykey/origins.json" +} diff --git a/defs/webauthn/apps/google.png b/defs/webauthn/apps/google.png new file mode 100644 index 0000000000000000000000000000000000000000..de5a29a17a8300f802fade5d6a27dc9135743542 GIT binary patch literal 16613 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 literal 0 HcmV?d00001 diff --git a/defs/webauthn/apps/keeper.json b/defs/webauthn/apps/keeper.json new file mode 100644 index 000000000..97677a061 --- /dev/null +++ b/defs/webauthn/apps/keeper.json @@ -0,0 +1,4 @@ +{ + "label": "Keeper", + "u2f": "https://keepersecurity.com" +} diff --git a/defs/webauthn/apps/keeper.png b/defs/webauthn/apps/keeper.png new file mode 100644 index 0000000000000000000000000000000000000000..ab934e235e0bd53e040d99c5237a2994a67b4a21 GIT binary patch literal 27965 zcmV*pKt{ibP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O3>vb{#j2h5vIEy#x;6v>cA-^bUIY{arrUNjxO! z!A>k$dU{nw0CxaEyYpZFdEI~TtM}NP<=RRw#q-O$^*H#X`9FT0uaBRv1#j=qZ@L(noN{mIJ+NVs2d z%Wr|d{r>*T{VA}C2^Wj=oLE7Yy1#g`?)^aPYw$^$ZJ@!ON z=3aX3t@l0#*Bs_X9{lv+6=Tde)3ljqnRT|==UAlAvXxg^b+y&k*m0+AJMXgVZoBVs z!XcI1v6D|Z^|aH^xa8VR*KWS$*4u8s<9pP;qWaVC|3TEkSJdK*lwMcAM~$!6syBLX z5ri{YF(YEp0uir@00|uxGv9()ROA#h-y>C#BR829n;racp%6klA?6#t$L^2F{p+|n z*7~2~7XMA;oI>~i5V`11`XO$=h}sqst{1US6>3d=qWbv$X(P75V#m)XzyCNg_g4Bi zhwxEK$=azi>avF_t8?2O#hpGA&qYf|Afr-7I}N4{HE-^1b>(>3$I@_n1xtvf8uES`beigc0oHAC5RC2s#z zJt>P2daRcxDkL~0K_QhJMk1y+k$bnCbI$?6*1a)Z;h*QHA;|r*mb$VzNUo?vyL04n zh*%|=&b*XVoIt^zyP*hn=B*C(v&u*}#8+@`Cu;Kq(8F@uk{!!BRjG2FiwLYufObth zP3L~&9w{}-U}(Lj6d=mo0yG$b&l1N{*GdsS*=6xVbN|Dr=4Axzpta z7TN?yZjl@pgcR4A7tJRv5}o-uRlIb?36; z4YL@?-FRXMJ&h%%&fs=*pa}hf<%OVH(sl#m{+p^@hfwq41aC1)P z1Is>kKqbbSiy`pbDxur8qF|CTTIWnOd%G~@fv0$m1g^ph3FP7X+~aCf&zI9u_71=| zyS{2odVflaH@&G)QzXGv&O#`ZA$U2fA_AcS$D?VbsET$^&M3`SHST{^W?vtzdo!g9 za@EBKLXcMo;yOsEm1{khd@8nsLB6*1Grp63YY1fg01Z~Eg_y9yBzY+@xSS$z2#}uz zMqh6Jo{+ckF;x&427?4M>wADzVUq7Vm3`KUg=*q%z~2;H*d4;_mpUVVRM`l7lBIxI z(7wSG{p7vQ%DuHmuL#nC+z(K|Emb_ZnmMcwXx72JrF>pWn{YOFu+R)0@xqPa#CE1s zi4=Dl>!Ipy=Vdz)4?xL=`z1|N2dEcMb!C$1pmQk|N?<{YT%*iT)((rLhv5LHXvKMe z>i}B^PP&v5cZBktna4-8U`BWb)JWO0Rnkl>PQvZzQL_6K7TqUR3i_yTs}sF6ts!@S zeHOB?4wi3kb+E`*k0kdvU=f8*8l5p0u|$x8Aod870C>X6#i*FBAJ{<{Pb!uI4vfqD zZ^WQqJPPa%wfO~KNP#7g6Z(YeraNRd%mQ1k25z@pDvO_cMJyIOcoulAL$#p&`5Oh~ z{#F`&ecTY}sF$mtG_Nx9!)6xqK%On4*c}T#PJv6nn$e6kN2lz0``FwX<6O zKvT`%U&S4CK(kLT2yV9qh19{}(l>t&QvOI|V)`;%ahk-T-px8w0RZ^EfCNynwp^IM z_acwWV@pWSyuc8Ak7fah3j%$`Qwe|QJR#(Ty<0INnQK95ceqZ^%scKzC353!Ec7za z2rjL<#U(sVzZK(}nnmY52)y)gmg5o8({rBxuTgMEevCTdb- zxVXg!!7%H18O|Npl(Ry1H03pwMhcV6z{r6Mf6V5Ct3@u>g*1ufK$+k)Bmh*1cu6EA z=EvQUP!09tN{tzrNI)>NQvo@W$A+xs^(r}PGV->3fA)Gsr5iDVPv&#d@8THBZI1UQ zMzjz!7hdkp%r zs5ajEA;sApGDQiXI&i5#0g!*)HCw$xcxzIrX&V(=H=zh&V`&j009Qse|YQNSAaB^mc zD&b4@?}*g#5T&JnC`W!Fmz3^O4r3_BC^L{@ZtS|DySj%c1f||S_rOYdsEMb$h0KYl z7sMH6mer+FJcxnB#6IwtUCWuAG$Rq-<+q54=3Z*@AT?Mk{O-wP2m;@OuBxRuvJh9o zi+2iFS%^-@CJ6H-5`y86()cGh{}Cb4>0rw!z|ah8jOh2}i%Pz_xN--M4nme(2Os@w zJe($j<aK}HiFHqK0xs*wL^g0MQQbYZFtVD?uhfy_s78ktLpkD1 z*U1+JjL90PwzENkI%e}WcSkXZ3gUjsZ)52;`hr~JWoSA|1-}++9bkHW1WcNiUsChN zA5qC3bi#~K@DrWNw^$FVu;U=%OmTNaqXZmvC3>x*5cXYy{01r^a3%txqB~3&gO|7h z3W`t}j;aKG9X9QdO9qy)n!DhIYA4GDP)+7C!G!$;u7ft-qbzJQiKcD~)v>8l)N|?% zpOPt%fxSx;`-wLZi1P#n^{6gh~QsSffIx+1cW!z{o6ij7;vqJ28tl!B0Z zw|IP(OY^uwV2)?Pr0$YUt2{_;-d3&-gJJ{JgJv9QAzg*jHSXz1dZN_%*hulT_-Pq} z$b+U#^+s@n$_g0am@p6WzS|TvY$%lqt1Ee^XNdsZC2x|D^^cO)NNXJJu3&`(5maU0 zIO;8EN^ry`vlEuMRzvT>(Gswk8t41_>7K1_+^eaA83ooT>qCwcI!qN{sY0Z_Zg=PE zbC5t>HwhG;>(t$mlN%*+u{ad-lw7olC(GB;sq-Neks~e0sL-2>=nf?)Jj+i~t%Z94 zX_udBTue%y;*w-NTb;PMQA9a*tPD0YTv%`L?d#Bh$VsewQ5i}CP=+&;_egAE2@ujA z<9ynLr}fuj!G0oNOemg!>+Aq3LqwJOw@j+LJHz5@f4I}CHO(2sEgEBEg18QEL=m4ub>AY zxI`v95gCR!9`3=Dngk@l`l0oOB#ZAlV`@l4_RueNP<0}q9#|9 ze!cuCJ}Jp8jh2^sZ>Ut>zgyjSKb)l6aOw=GQ9u>$WNVh<`il~m9BMD1tRWmS286l3 zvM!KNh`f77Qf#S!&?2Cl69@nmzPo_Qt4pA4#1;c)7|BaPN~C(MTO8u2s&+>p!k`dF zy;c=1&fI2tlvPVIq~molKp>viqEQ2@9tK50@Gz#p1+{ZvTU#tu1Jbz7*3d?<;8ZLg zj-!Nkbf7_1oH33AUYUfU3s09CE2%ZM}e{!mQ&8iegBw zrP|4!E%%n85?lg752C0XgGb%qrcstC?S`Vyg`&N>MLDHQ^>3~z5s8pOLxP#WcR{Oy zm_!B*pndULd|ikdk`dh4X{x61Sed1TZb0beLP|0gP+NTf=3kFMv6$R5_CO20A3?3s zcUZ*j)g_TUij-;v4~>RQ`B*-@GuDGRwyKH;)}c03(*+80z4dJ+pa7otZ!sl1LAS_=~0}?a`PjGcTs{jEqqNYkga71`A zQuBPmUkojoVn*w-qFzTgUQs4P|gbBU|DG>q5DQHdiV?U)}Nu* zuB|?C&I{b0n-nCl<)l%EUP>Isx!2OAllZ_Rq!cM`z4tA z5Ru?p8wFx7fpBfsJOEn@F8R;TpgJNwAz?j~?MQ>%4j{ zwQKKYV9bk8zQ$Eb#C8ErJTQLFmhKMaf%#weJsNJHA+optHHG7Fcru8(VR%Zz88wK6 z6((QP3Oqi`fOjqrqEVPQ_82`PXN9-FXyFW{LNbQ~0*bZ!0TkmjjYpFkm{fWsjX`%0 zTR@J~)CH=x^w~%j)R{u}MY0u1;xOZd%Bov09;I}$wE$05z8uYIs0y^;`9v%ua2DWO zc?O6Kbx)uGaiA7GF8wtj(t(7GpewS8WlP+2oqg;8nj>W~w-lOw#^iLH9nErRV*ne; z8VxubxkG^koGH@eN~T}6z_2k`%Y$!0a8qNIrwF6=#4k6sVsa#p1M8C18X+;bRwFDC3M7^! z2>A$Wdu{rvae|IEZ9%W(HeN>}W+6w&9@Y?#zqE75x(+qoCs;(@Rke@FR-$iez``!n zo3=A|!Y{aip0@<<;B2TuQcX?A7RhQ%IblO<=uQg^Nuh@pd{weud@+t&o~DhgZF&SG zVmwM_6bd#iqQu30!rUT&fMxAPX$QOyLT=@4Nvk7_6F{6An4ZWZoIOzv+5vSu|4t0tA0e-N+#4bO>9qf(QV0 z7nUwu>9AHOGzOhO0{|9GQ;H!ZtMd;qS$pMARhdjgeJ2Z`5!=U;6H0mQvcMz|+ob9f zX?myTA6VgNIW9*OH10&Oj&^1!B@Eo8-T+Nhn`z0w$JUv5EVlllgaS zvi=2|xNmgwGn?QQr4f(B(EE$kAK4^*W0M{nC4o9EU0xb0hNzNUIS!ocC?E_`#2MlS zabiQGDu~{Kz7XM%|9bC@&eg1+wo&WDBJI*(ASj(Ni?+!N0+SmJsl&%eMo~BAqsb0+ zu30lASy>orhvR{BrbNFeWJuA*nf&Ng9_Of!DO0&-$iU5+mnZ?HIZ6w5`P8Gvjnft> z%Wx*1RMoaq&|-K@=GI0NNyI&)WGm9DP#1^ihcB-W#%6>0xWC2Vwul_O>ppp2k|#sy4OY=%z07 zH?|XqZdfEiX?ahz`T=o-!_*!a%1#@JeSl$|&zH2;l7TU8s1g)_0v@2YDfg>8YJ3KZ zu>=@+uo2mcPL1ZnFz!C9MT96uJo2>QjqI*)09OnYt7A_#%X6Aq&IR{^AOz1zfSI`i7Wfa@xYi~J7={t>_iu^L|9^l z#lko3{ZKGnG?wLzSeZ917crXAL6c9g59tE0^@CC@N{7jbZpu_Lj~`1Xi17+wjUEQy z5*T%~39UwrOI1U@UK>{64#GE+r`kjZHxEmX+CvDOE!YI}lCF1nA*BXhceGp_+U`Ww z93$r1FrYqx0_us3zxZw;G(PIB8i386Yj}nWg)dAe;OMjpe7y$3R7yyqAP)TbbkkA8 zd||3p=Iy5P@j%FywCvZ8#Cn!9Wxz zgrklik6}={W+^p$jc3>J;=6ipB5=MlcFRYD60aK)W-r1f0t+NN@&I?-C{lG))Q>~` zt%$_a2H0bM^biJ$?($&aiDO2zrJ?;{7_gd3hXnjo zW9i0<^w1P8OQL}b1UnfUii$#mcm8JNeph*@vtH3BNLSrGv~Vbd0#+`tm>dOsc&O;( zK~Ec2RHG=PKI631z_ReB)zX`&;;stmX1v+$5z`nBOV8cNqn|W4#zo3;%(uJFv)rW3 zLdl8w$b6k{<=mCQGl*z*_!Ix?KTYy|2@RA-s)4V0HqH78fw_$eGn2Se0Fz3-64sOZ z5%yrT|Aah$1)i7$S0Lxkof%g^C3etRTMJeF)QpG#BVu_?MqV7dxBw#3?Fc3Tg6)%j%6RU$6UsxR zhp_2+vGVy1mBr)$V(pKZwgS0SL=`qQ!;p!VQN{uKGSCCRMc- zvO@Eak%y9`IAbAk)t*7Wmg=$m8XL={pc1!f2lIi(U(JG`g?#GlZCtJE3aeI?7$WqD!iH>@k8WpIh4sDJAdYDH| zEoA;yoJ9XELqkUhT~f1aj0^Ll28s#-DG?HHk|iZ{KnL($;5c-p5u=8~k1V$X_ z1zt2X9baI1s1{aHRs+iuiLH`QS6(U`cZ8DSnP;ZBgSMawQYy4JGZtV9^_zy~{>UC~ zLi0A5Qf;{5EL6dWV=dKiD0v*jp)N^ZRD-6CI{)ivfo~d4;A!RYsF=hPq07lNP5)~B zvN)aWgdp445kxGQds$?h5*bPy5y*20YS6LeP5J-`8u>XZoX?m8`S76;&1<;*8M*(+ z*DvvkoqFmtAFy%AZU$kK_XFVp! zYIUhAuR(X6eA59JF6y+?)}ehx19x)ry@M>@YI;ecV>z?e5Oc@iXyY{_R5cqiW>G}i zRx1X(o+UkACuZrXkzZI)phvqpyqe6Jqu>%u9amNferM(Qi0jtb4c5GYL)-Z-#3md; z^Euk{d&~+`p+GbmkTpa>S!pa}BP5C@KtjytGknHM9Z4LAAgT}rCEW{9b>Z*)nc-hT zYf!Uj>z9 zaK_kWtQtJ2(aS1>uNnFW|DcBPcxsGaM1vX@yt?#|7f;69JJT%wUfQ;7ndHrY*OI_K z)~gO-8rq>1^yl+80@$u?vfc-lH%ks2O*lBY{(&qUD46LryilbOxMvM&nI>KLu~_t= zb9Uc^@wJ&c>sfwltT)j`X5*%BRC~}!Ts7bum0_Prh<4x9CD&KyWkn63=s;Ok7gkO! zy+Ju($8FY-8#y|Zl;KXuPt_tfP~H|-7LtK?4I!b{HkO!DT1_X05L^4r_*8T@`VMG? zJ}@ww@2k=L$T(@-Y9UE{Ubw)Dls63_0@^VG=mNbpAQDzlyP_MEtzE5yssh%v(L!5Y z#GsB8GAZi}ZXlC^Ta=)^NwA~Nuv+ryU?U;r2-U738V${8gjcZ%_0q_)pr}PjpRTwB>G`EKsL9`l8!z)$i>p<8dP1NOH ztNIC1BUMhcX2eO;BvPS8vfqd>3KqqF$~qDIA>F;;|Pwf^eftC1ddnGgjC;~r%Y`9WQ2}zascUL+D zmAeMIFn~=!i%n5r3BDm=ZZGc250=3wKw#rU;8;?>+fT-6rDp>~CSK&`FO}N}% zwC$91V3VTdgV)r6_Tw8|g5vR-Nr*ayhv7UK`ksYUPN*hOfGGcok z{SD{MM|mH@!zv@Ren)u!Q@(S*BfNjfcU?O#Jk)k*tew|qco9<%15&MqmmV-)`rePh z@L#pf4oX``VXB6A1^}PuLTF~SSi5%a3L?@EI`}%gkA^XsrBv08cLGv0(Qww39+}U+B9;_gKA)g!qG_KwSWr6IVA*h0+)`qg46=Hj`LF+nm+*u(*bEE z{MUJzK;i*UAS+g+5`(PP?SPQfS|CSsAiNz5y}^eIyAE;ykKrBk6M$u?odluixMd5o zrgtV8DWZXchI?BxRh=Z$NF(-3BbxDu(Krtw*)=NAUBlFz;_5-J#`Y`E&+|21k%n z3=wEYPX;U_e+{$ zwIlFNtgL(cU7FjA_Pa9^V5mCQYOr0z`mo)be#9#wNUKyGmL_^d z8>5j_PFKAxzuOyU+4{$MbifzFGadPlQFBC~xO)>ovQbFIp}iPvd>3nwqc~s55Tq!g z7^kMa8B(TTcYQ5WyK9NUTRJLEi3sY_!d$4yT6ORS;Vf`avv(knbg$K5mo zM6Hz&r^aX(RvxH}+CqZ%21zItktq}sIHJH?12pkTYIIjkhk;iQ5aF=y-tOffbHx11 zYt%+wR*yuImiJF2B%lar&@5`&T@EaGN)y?D;>3Jw=E7z5_23iKgO0qZ%Zp4a-5)8- zp`(}D*lbzb%IkArM-u;Y;_88p+H%*af$OK*@0w!PA*G6I#r^=FI;+K}L_^218q&1s z3=}2_`r6t#9;#FAIxnYx`9($@JqYP(AXk%%q}?#9UZ)`kMq7Ke_zWaAbxcW9Lns=w zrxGWqP2kGXxzA|tXfxDuqyE(xYo@I^T;$NWX7|CXz2Sq&<5IN#<^?Cmqe^BrDD+D~fwXK~d3 z)yYg^QRDYhBKzAZk*IUiLu$HLuQ}Ry-d!R-Ffv38lH|_oYx+Zd4%nY0zYds;A`AUF z$5(;z59E># ziiz0qby@S-GNua)u0jMfuMcD+l7G@&au@Eu0ZHqF&Jn{KPXGWQ07*naRCwC$ zop+p7)z$vL`+7rG*dC@2=d1{%Au5dljSqba5sW4api<~7wMrW$?Y&zNHLeT}AA zfT08<7Ay!B5G?c#1H%AQZ!c&6{@8cM0j8WY_uQE~GyC~`u7hyyopblu>)Fp*d+oIZ z8hsWsXU-JTvJBHS3$1i|f`pS1;&=f^10#eGgMkvD5byvJNC0suWdl$L?2}UN0CoV| zfpvyyZm`nnkT48u?%cUjk97Zq&_mF7aLtuh3d8R=(#hnow3JhY5a$?%aYkub*@W`) z@?cq6nNe6+X!!kpT3#NH2am^tVHij$ky4UKBuFL_B$7#z$t1}{LdIe-*&GVdP+y;} zudk2CVzI4K%4Jf@H-Hs}VQjFZOjcD@X+qEhpwW}K`s%AaRw{KeaJkp#yL{O2;S+}s zAMUBBsPI)*Rtm4zix2`KvU{8@1OX6@Myao>qoJ`exv#cX?%lh0XCxAt4?J&4xm-X) z)x3F{3^V~~`5n`2C&0-w*<8aHr42GM9#ZrZdd zv}61Bxy?;Y52P$>)icjLW9g@=2|%N(6@SKzfRu8E5aK7JMvp#v;>3yG^73+#t;Dx1 zi)bW5BpRi*ww8Uhwba+w6N|-2r_)%Lg=JZ-#2|#gG)=r-F9ih!l$MoIR#rxNSs8^z zMVO}98c=L`9g0XK!gGrjMeFP97XbH2_;8+%6KDd^I2^NP%`#$<$P@|pRa8`*dd8V& zn!|?=H?lGOL?S^r6k^-~(vRWXPd~1WeP!Nwrt)^b8~a+%HCU$QW6S>iN|7;l$6wYz24snAs(7He}0pG`kDX+ zuH2tK-H<|DDlO}w%F4>oAN$zH#Gt{0yS06nN~PFWTg&RztEs7}A+ze{1uV;APfZQc zXcWURC@wCRWu>KSJs!`OyguLZ*|TTs_<$yWfrYE4PcKeO`4b_;ZDWr;)<0#+6#RaF zw+z2#&mLB+Si%1N`?Hq!IU@lnRW3n&J@I%P(=@59tc(;C6g(>6M++7%tkbhX6TrYQ z{+TmJTbA{NVHjtfcG_v;gb5QcP1CWguB)qK`Lboy)YRmy;kS3+u~>`)b#=t!aSDP# zSy@@R!Q=JLN+*-67yaiyI!LGqpr0E4RaXgVS*KZ+^_0)&8-4x-7cg?t7K^cZ z^=j6xS(BC2@9g*Hnoy*aL?RIm95{d_B^4DFjln?R`-W-$Y2m_!Nj+OM0rW3_f96a> zTGn(a<)ePTzx=|BF5-wIj&STt@7%eQx8Hh;hK2^)MlOWFFbuq2FJ7-#odqyW^|0HJ zfDoe9@THWbQYoU*D9J=3XMx1DWzpEsKx0!AMTLb{S$X;24fw{wMT_e7tkDF}KaBs% zD-BDCSxEVpKp;?X@y9>Tuwla-eMTZ4=k0giVcpubU9Qe8#vTj?@p!#-mMUy#rBA0) zG&MC5kH>R1Mu|j%+I{-~7*tug%IEjbSg>Hh4n2D`0rY9im@&hUQhpXG|KRoc0+(EJ z3B!jEck~$z4Gp~Z>Z|PCySLMo-sksISXkJ)H-D(1x2)=^WRhemMLL~EW)gr7BLX2> zCxeudv}HjXbzsMha0<(^XlQ7lITT`0Wo30B7`!T-PQUZqbI<9xfF^*xhpVr=Qly2r zMoRg(X_~d^LCQY7f`^auOoo2;~6|8#q z-NU505Q1Pq0p(?71cJdy}l=4!q&$nmHm@%ujY}ukGmnML`_xp!hmNgF;Gi1mR&OiTr+b8N$$t25{ zEo04^HHR6nX_}Okl~GhwbkK?)jYMduuO}9b+KJX%KsxiXGOrf*uTzVa8F}87n-Gu3 ziN<1>hLM#bXmM|vLm^)(mAb@Znl(osee|lWS_$YFK)&LWpZugZ5s&{(N_l-S803m+ z(f9*9kZ{B>^zxn-sO3TU)3hu?@ahe(%JIe*IfEYro2UZJM3+x7JfiOZO zq?8_@3^)=gN2BTo9uJHIyqQHov>5l^+FIpK*o5Ejr?jMm?w)OEQ5UuQ_Tlk(!i9x} zpG&9H&%X51OFAZy19!g zr92P#m=L10xTweohr=S3N@2$Wg@p&H zgogV1_E!A_LOd^oc-%CMML>A=oH?$nk~6Nn(lksnn6|95k@9M!oR&I1fkg=Mb3=#~bE~S-x%{3p zX3Q{rUT-j-NL-4PUy@Q@m`Egip>UYEjamaj2nq`eDQ*+Ta7qF-H8m6z6zueRy;EO& z>7{Bt`!oUcDrU@>A+W5kOSm5}&N};SPB`I&F5f4mWX+m2EMKE zLZPTM>kDvdYdF7QJDa3J7$~%GUlBrZ-b8|DXSgcDT@OV6wmzCl3 z`5gb=R4T=uni@)qi{Fsx^yRNEU8?H}xCFfm&<%_mH|{9lNuY4hpg~MM>nvNVTXl6c zufO)%VUhdd;$jMmiViaV=H}+MmxP57_Zp^oYgJX%ruFOB_sV(tbsIKV>({T}cfy1T z^GzZCC4?9p3EAZFQ(7@uwi%A@kUmpwxDK05#HHc6sbg1!f7lv_7 z!0&(J+1axb`7j3S)~%Ck*R88Ne*E~k68>YF=7eA{c!bC670E905n}N;sdO5@-|vV7 zJRT1ML?|4dR8UZ`d)u~cEA?#D1kf9+|74_m0Pu_&HHwK7Cw4iJW3d=7EM81gW8=Y- z+Uupfyu4LCL?RKIn+{U9ZwkY>ysE0|{SViy$-5PA-TL)%{e}(IC!TcD-_w?Lz~}W& zDJUoiv}6o+Ch6nxIDWt1QCz_1^AU^34WvA8?6Jo#+`4sZt)7wD!O%nC!1td%-IP-P z0Pq`z!6_3bb~%A9%i`^~-)8^*{RanMgrKanwDtXoM1rPF+HD3e2qC6bRaNcG_i=gl z*=J*>Y5v|Yj46g;EG;W5ljUV)osLa1nPmTg1Dz7ZVF4>4sH~_U5{;Io)9JsTd+xa< zdRA%$&|^6MxZ|cs_&H#X8aX8J1pqu@pvfA z?Db12X>4d{n{BsJ2yxxKdGq>YfsCrEs*uMtzbfDh9*-wfSy|aibR8+A19f$dlt3U5 zps=t|L}RgU3&Xfj&rVGMIfsN}flmMoA3mHxg9deaeM_caEEYR#1uH2nZB-7jXteD$ z)uw4)S2b_m{=Pg`bE>M+20S5Px?vdm%gf4I39mB}a8mB9thAI^Eatb;=|5a_!3D*7 zhH4ieXSn8?YYfY>egsTynXo%{?2v;74H9kl?%QJhx^;(T`T+zB3Mk5K`L#6M%(w?J zA;hQWR#m;#AI5Cmh7GLWuwmP{@#7Z@nC|!ci(6tH9k~OEM1o+O6OUcF0$#6|#>U2q z!s6oO=+UEJ(T9e#0>}x{$z%~yUeogb;c%E;yLO4iix;U{A5ctg}KJf{!o~@byT*b`k z(>+Le6PdK>=H_Oanwwjzkw z<3<`gsNdf<*FO>tw@mIPg!pOIym5}KQvk8Nsf{ED8nngCqE^y$;R5-tNoDwR4cg6;SDTDPu3p%Cw_Ufu5Jn5Nl! z3QlHv=4J2*FrY%$bE~Q>)8qLG@UqwIrL?rP!)qIxnrt^HDK0K15{ZaZD)qIQGiDU& z*{ca4d-V^+z~mNrf2braEG)!Ir;$>!cJ0~@3uw08+DgRZEjtIzreXZQs;a61cdBj9 zoH-F8#Fv4Zf?$wf2l0Tmu96)UP*z$>b93`i$z<{idiH7pa03^j>gN$V=g)~#LJVH+*eG+TpRQp%R& zz;T3lY|a2&{oBIl_dkgc&v{IflH&H0`Py^6I)Z5!loS^e3WX*hxFt@5o8m9SIV3W`1YgYwWmSx)w0F@UI3WtN~ zWb&(egf#(lQv%3yTKxY*PpR20Y-t$AK^=WEpYytaoqB*j!kjsCng#q&2$3r3Km~*& z5!;{V_xnjE5=fYK`Q?`v=n>Wg;0T}mq^`>p{%VZ*flu`;Io}N3v zgMaP8^m?m+_k3P&yBUJ1RLb^lfDnS>k`lt<@Ck-tjMAg43BVEJ@pu3j-ZJqHt>14~ z0km!3o!KRbBIO%;gb&B;*|TGYVf?ocBH7-FLCdmi697PAK>?9y)J&&R-_)b43BVDA zlzw1Pd;Y&^nzjpBww1D(vRJ$Q!Qe(c!tKN3^)3-Ytn>T*hm{D+xKOs0lh^B2#4W_x zmtK0Qb^|m4ID!u-Z%_W)?fMIcbX`%C@wum-dP+zCJHRu~JQJ5v-fI|!)n0aBB9U;^ z$fl&Ym`FH0&TE=O^yq2=uy43R6aWRlVcSoRy51ff%(4V5)}!0Sgfz|n0M&(sg@*+L zlPPD-kOF}Kv3T5@NG3m{M^+PneY-V`5;8jghZ2CtG@TI1LGxD#u}6uvBm~hJ^(M#N+Yf6NyBH9#~BP_6WeTT6KQg$g>av!vO)bbpfP$>FqxoFs0lq zgjiW{NP*CnDojog3Wg&xUK*+oExs! zTO)+1ZV9{^h9SB$XIosiR4O%7kE$jB8>6CvfYu?hT@ygh;@M}PO$Z@gZ0V=qF}t73 zt{039 z5$F}Ymyu4Vw|KnX5P;9??RF$J^W=&PJL^-f2|xotv?Kx@dj8x20UVaWriZnA6Vx>8 zydF<&ro39W8CVzwmSuTO!_b97H34*Kz3nT2?yWj4ETG4=8}NF)5g_EG4nun|4TE$# z?P+_?Lqiil`!RsbHsE1-=T2P!?J{JIl9Ccj2$A;reA#7T3PIYkJVFS4Do_(Zmn*jl z0_s(}*YVh6k6A*9bYVeuMSTpV08C8)ngHxT%f!6$$VALhA(jplfMr=Gpb0<|KvzD1 z+6I(b0ptq<#9Vo-mSq}-K9Qvfpz8_eZP)l65Q5$^bQQ7eAF05S($I5W6F}E11$f#c z0IdjmiH}_%fXwqV4I%WL*96ezg!5W16M&|U-c zKv+_00?-7|bqt_g0&viqPA@dBBIk-ui z(3P=zJ4)QKbRe+j3BaX9pv<$?%|SE)bO}#KtGFhB-k7C^YcT);C3-+L0d$D#uDebE zhIH8l(CFnDKt=^f&_O^=039RKlitYI1?X-YD~)!gmpcTYe(0*engBXREEemu`%L^hu! zEM0e+FVrPwS8aDTC zh9d}L5+Owz31X@~D$tc^1F{aj7^*O+CV>7<0DBf9kepyy+$JSA0;O%Fd8!NL-g0uB zmY+&}9t1B?fuD*l(#rf&;*|&~B_)O-pFxsBVquX6nt=Us8T%3Jhc++C{){q-01+UJ zAc7!*Nkp7VV!#Lhuw*+Ap_?%Pzc%}RN&rnS0Qp_3nJ9bHQ`i3Mm;4oPHRMD1{LR z;z;6H#N~3Dkn8}q0oxF4!(a#L3|R@#CrcIx}B ze`84zOQy_ZA{iu>EGCgGNHj(~wbci_(XD$61J(PBhcrh${zyWk!*Pft4KtM?2_b}O znx;;H&v$d!vykD^;zL|6;S}^knLZKT?;)j#CQ@c1mJG^Rywu+iDhO_^ft|IXn(Hsz z|Jjnl#9AyO2oe}1@RAghurvYW32GKH+Ok-K%iA`=0F)JJ1JS?&8i6{X4nZA~t-yL< zJq8=Fs7GXWMGTVSjQ&RudFuj5NlwmfYY#x9B_xnhm*v1Qhb3ZJNT4~Bk-3jF`{Z)A z0qc;gL$Dr|$*J-!%1DXveJ`aue}jMm4^rE!Mz5;llFX}Zwr0zJB~TC40DGxtw_MH! zU@fo~!A>Me1W9pb?R0=FEPs1e}J3R@wPW z05V4dr|n;(hoKcfe`HP#js8FY`D|o4aRIaf=u&xsgj5Oys{FuRl}xgXo`0KGt&~%7Q~XUzxm*QU%2ce zg-}rhqlUrJN5J`$;oM2;Y{u|G;OUQ<9}PV)cfdau!@KKX z^=61CdtPnqZ&t4r8{wHHN;Moa0!};zuDKA-oB&4*248=w?G(dRN>k2w;29`O5= z!8_Tjk0&4;gG5r@_vT%&WTo1UT)!RGY|DKsP zrqp==2O%7Vzs`eu9)SZPcRsTu2vbjlvrdMqE`T1WqO1S_AOJ~3K~$j?Dtph3q#VCb zy;^X@U_~maG}JdKrSSZl@X|Z5Vl8Z~alT0-rHT){vJ!szHMsubJd6$GaS$+ns{+sG zYZ4xG`*X`n`sQ}h{zkRxKQuf0=)P&dsmH0k_UkWJd+o)Az4zS`N!VKl?`?wrT>!7X z3$=~TKgVmrcWzW_pr{~!LKhfJ5@(W^;n{r71oY-46Hp-gk`Ry*HtmFO+y~FSmAyZI z!DRT_bueih49=5$e4iIa4ppy@pP`bM{K%x&65nrKJ7dzEN*bN?5TDZutegyRrM96ZFF6Q{m1V;gsW)FW(owd(8ou z`wBe#tjc0^vL2jw3OslxoHVxAze)nZnPLj7@^PH=w;)K4PEmd=T7vHT?Slxc^&l^f3GHe`U2I&Q%+944}^uz@CMO z9M)2keZlx&c^7W}DSWW4d!I3SC_Hp0%>EU8{LDU>J=cZ^jvNBtxDNh(Kiqr;1Z>WX zN13q~HEP4RGd=*rd(k~zc zj2{gTe;59Kk2)t{2P-zf=YOhd9P}aun3@2b7=ZAzH&t$~;~ZJO|@OW@HTz=(>juYY8|%BD>BY@;r%033Vixl;gn zr*^7dgp_Sn9UA}5DzT?1h(=~i&YKL6{Q!=r?EKoA2DtlSRUEa47BsB@x*-Dk zy#isEz-yXM64>`28JFS=9Npi{F7?|4q4H1K9=0%Nvsd z0l7H~K%ThDmV_ssgBRX$Ho?FDIrz?}d&l@K3mQTYib5)-fa`{E3DM-+-P80Ul zv0TG|8Rx0Gh~NBO=gR7_`7rC_FnRpIbpi5|nQ|Ee$P)s1XN@}6>%{N>>eW5J@<-#a z_W-=`wmNsewHmhXg}wFa6kp5j2fQ$>T&3@h9jWB_g{Q%Y!Qk)VaIR^X@c55&oFXl>0&wh?Nbt&BJ&s;Ra~SUVtFt4oSDp<&`XUtfz%f^esyOu0 zJL**4Ypc4x*H{v^)vDLBHSo9pKxHvpHU)0J5~iHkv&7}|!tI|@8GwsBQCSO?!pkdQ z+S$3~Bpm~AI04C3Q$^9c1Ry0m`!XzAZvQ=##wx$IC!+oJP4L$$xbhCT{`>IkE8RPr z4{)Fvo?HxNUp{VM`j-{J&%dJf`E!YQLdpF5o`jd*b@#JV7Cim3QWST53cfL` z^BR7&b#T*N9V%^2ZwyV_c_%eCs(@{Ep5Z@eGL9m1&JJXushHU-~Tgg*a1Jk zO;sXl58G?tB^&h)&pjEgzMzYTE#T8vr~;xdtms&AJopq`a9Yk{0on!Vh7Zv1G6CP) z1o!{L{%NEurl{P0Ge^@WZNcKV;HtY+sj);4w6C-z{O=-l+Hpq*+n+DIZSS*A9IFC; zU7@lR?*2R!c5-Imwbd#oBPV)R=K*vJ{fYpRDYflXXS0}RMG^e?OHf{%oBN3+;Lmg5 zhP&adUZ_^LaG5G|R=w|VQd+;w-e+8Rs(od2<^;Iv{Eq)Ul7NSvQCpo_0pvjxAQzc{ zy_p2`;TCvwf&J_6_!LYYmz#TO3d7GIgRlP%>cTEfq;8CD)$1w|D%_?md0nG&5xPRq zt4fyJMbHnoT&3a)9bx(V%KgZJ2GB78M;?I4X$+uOR{tlSvtI-MA8{q_06if z@b91Lesy6195n>S905bh)%M=d3RU*|)m5-=8?4=~igb2`e=Jt@{O`O`B@%_Aux@+T z?>lmcIt}OqlgGo%bKt3$+yD2iHLzwY96e&-sM-7t0`?;pVAC#mbe{c{^!87|kP7$j zqcH^Ee;6K~)4i%FMSc}1``k2`cwEN#3l82^`N}m=Q>QutJ+=TAy#d>6JC6z6^H-R3 z99%k8DW#@p*Y|S7;Escc9icD)*Id{!0az0LZ=oun>T)KdRsaJv29Qp}KmG&tHl_Ai zC#s4!Zo4btsM_y-c&>BfHw0XIrmDAp+VP!lyBUTu%n^gswHtTBeScSm)lrZ!mV}=^ zs;+<0W@_|tqm*KBii=K%aU(k}x3*%fasyme0bcnwLY$s|wI~Ku5U@8w01YAd=VF_Y zA_KmDo$9;iCQ@nm^IZ7N-<`|;p{4NP?eO=X!Z{P26&E!O)ne?yJKzs@!Qf6L`?3$z z4#{epwfmd|0NbLpNVOX82s`(wTn(2MttVd#(d8uph+LHf>jeg=dc}Tyzlmev(kbq) z{!*&i`ak-!^CB4IN2+q-U%3X#in@OfejnWY3HW0tm3t)c>nC8zY8#*DffJ7IrsOqM zUPXuTnzX7S>~dQ=50)kXMTBTZ;K`;edxm$^(Cq3So-sikT@Bj7qh|`0Mv!;y8Ej$1vcg%he7?HaKc146E$^ z`vX4Z&UA#$J6%5;;K|o|ZFxxm$#iavzbBu8lrVRRy~8g6H(n0I2D$tDAOANje%smm zjvS=?^-0I&X1sh}_|~khOLujKqmMYa>#$Q41k^4@M>x=^Dl}^a&`Yos0rcq_mrY@H zjMmnK^r@{U)5WK;a=of}O*5265W)?#3Q|`d8Rf@9ceF|0K-1IQJQoLZ~jlM|VR7 zcuhFfg$h0=9NqEvOs1hJ+XXE@6@bIpE$?)`$i3gA{UCHj2;d}os9YWo1LkrE*^^B26Q-ybHbQCMZwKs zcx#QlYlA+RdXjq$JsO%+o`1qY5sjb^e((iV&a1~Jo}udT1s!_FM~_f-0NnWfV>)pI z*6+a0CUQCk;FvM{FhWt);L{F{9ISHTT^TkB&%X&P9k#^&^ks1I89hHvM-G9JL!7)d2yF9;!|sy7Ie?&g&A!6RyrXPj45a z?OO_<4+jCmQ58Y9gW-eREB3i!ttz_d1lL~ZT!OoeBZk=Db{u;oRJc_kNp?<_E{jDS z1k4Ks&;w`;LG=N9*AA;xg*3AEm@JiaWVhf5r~@@Oe?lFO=}nl1eFbu)OIv`T0;Y*h zx(4|?u1;vZ4VV|Mi6G~#L6?7E{~*c9W8IM@k+?co?ea^(W#oQGFC2*OQ0$(=8`{C(J5?d&}loaWwY+9Pv9bbf%xDbki| zdDanJ?z*hE0rOxrl(|#^p$OF2^#2R|>SUZ7q%-eTXYcvgDXLa}UOa2; zrQD7i<*rfIH^IJ6j{J@u?y3aUc>oSAwNIV~j3rcCD?2DFbVp{^H>sX`PH@&qP!PY^jXVL$b z$!+Apbd(Y{*=&<`;xX=8(1slyOF=`Zlw(&3Ko<_i1 z(y-NGxvyhJKt&$;|L@z_H92ySyRFe9@y?623@%p+z(wdFpu>sLCli78HQ2w_>&;$b zrqj+FTAp-F?z*jC;7nTcaY!XS4^QY!$5lBrJy0h=83+4H(U zahB{{%C?8m!`=DaZeZ75d%GrMj(}npGXUqk)_LIZinCmuQ)!p=}#3v-rq?v{P(lAKgU79=zQ*cSkOv@E!j;94q` z{qOU6oPQ->9w-3IQh~Twvg>Qd9p%oUCCgIn$~$XSe!?giH#(=PRuh12pD8yb!E#Cg zUI%`?8x>~?1I|~gM6&lE?vA}M`z3qVjvC=k)?&>8c;>~z^ zd2SAyqG$!+Y%%SNF@VYv``5jx z&1F;JxTA8orsZk3YfS(y!by3rrie0zY`@G=!=1e+mT{zZts+8AW0gO=4z;p|IK8-~j5cY-xrRR!VR zKy96~hNUMSlU)k1Wx=yA!?Q~|zi!5Ps#jo+Elm@EU4KpHN&)0}7oeiVewJNxRISEY zEh#2U8t3diE7tXn8<4i((FL$}hyC{)IV8K1<*PTs_aE-OP1?{h)vmk;vLiJC*o&3q z&IQPI5`byIAe(W3lm*rMvMWzy7%+UWv%uBHUFs}+Phm8?FtptM^>2Pi)&>1Yf0k#z17R1*6#UP>VBs=n?>q6B?j4KT zv&A$g;v&aBKv58eIcTxHtJZ!E!H(ef!qw+Hd(V_AStXg811c*ntGI&+XH0M=W2J;g z=jB!fNZ^h4;hXn$9)#-%BL+L$0zA+NcmDw%c&cl%Ic5aheX~1l#vQ}}bRK}sp%V1r z)?iNR?KQ_>^RDdu@pC7sJa#9jS_*St$z3d9%@(-*e)}1Jhb@;5%w^B5__cLnWzsIX0>pTGaMk@Mf9ssBVIwy^_ zfBn1bVQ-dk07Jm#XTcGb&fd3fCw%+hedZUhgxf#WOGl!05U}?ZKu@5w2#z0Z|N5P^@WH0+fA8qw@U0u1bKHO4 zf?I#(ytLS%h{oaZMR4tRVdci`zfbi6`1bGM?KP@)LfTS4H&?4hs26_~?*1b*+AP8{ z{cO1B%RTD%AG-A9B?08!O-Yf{)?m43R0GaF1^!fJ@A{MlRj5`~rP;fd$e+5Q8a zd{>VNzx|q03E%r;&(5doE`;BHBm1$<5@`h2izz&-6@Wcb>a#I`7B}Eyr@*|W_O9Qx zA6{LReK{&2l=0p?&AtL@i#_#l*Z+eD{{?5A3|F16^6@>U`s`#1YU|;-WvV6l#$6Ce zbbU|X`4rr86)aq;9)awkN%Wb^;8$Po^_5?{0NsGM58FRQ1VwcQKB?AQl8UW9+XsN4a+N4Xf$gtHwBA>gZ5!*@Qd>iP|>fS|8y(#U#J z8}PMj;Rjz(2ek6Tx7B$7_9l(YYhtpEYcGUi2gbbYeN`#P4U8NL4}TX%yC8cl3DKl# zKVAgNosg--Yje_V5n7 zrlFM45SI&YjvNgC^DTJt9+ehtx;U$)bftv5jsf(O`*MUU&Vo~pfz_MstAGdo3Fl3A zr**g?;Nmmj*_~HzA(p3$i_V%Cs75wIJ@W;6-_rOgIE>Tr=ZoQ^!zuPq68`r6FXb=2T z#TJ}?pYtZF-Hxj-fDwbbU(0WIEnNFOc)OF73< zz>`d=EWbHRRDFUEx2sg*L*etl_@m&o@o@YYxac%BE(L+?j4~XB+aG{G&+D9Q9{C=8 z?h{!PfCTOkQ@LLgKvxE{01uLFz!7eLc0~y(zprPRIBltFIN$%Xv-jO}iHhVG6}Wpp zQYv{{^(s`o0?#dXzAbms(dt0Wbr-2}TG<5LQfVc%V{w({yT3uH1dj)X4^jnIJf=Dt z?6f{WXV2vK|AIRn>^!6JtO+pxcdqRw+$E;+8|?!0=6#8t@6v7>Y6W?GA#A9&|Gp;| ztAN&R*SZ_j5<&&%K63?JbD@&K^IliSl0V!GyZ5VPpJZCCfW-wcYMAn|#~h*J6Q`d5 zWkt???sgxvsp1_ag)pQC5_Y6i?ZJQcXy?Ws^tzr$pkn~G#ZvBK0KHNXfA}DEQ0J?^ zwSNOr!cYF9%6(lrB{!983Ipm~{2iZCD{&~QdKR_~&I#0N9PmOgK%d8kop9HKU8iY( zZW>&0nyZsf6MzGFb4o8g3`4*Tm#RGdm*2Jjz5^jOS&tf)`?~cWQ?2U#8N2tZItA}_ z(U|1qF>u#svTsV#7i=x>@&F7ocYCJ2r2s(5?*G17Ritr(_qW1rzfxOO8r?_D0r>iF zRPeJilmy_{UsEoR%S(?Y06Xyea?}~Pmtp{IrSt`pRYe-7U+$IF@Wr2Je`bH6V)s6{ z!L@yEmsQv0MUk&G;;{3gf-+`Nc1RHnsUT?p? z1}Wi#&2ZxnVg4IkUw`fS@b&9de}_Kg*7h#~uv8!Q+$exNFr2|<@VjqyFGv5Sl`!l3 zs>_Zhfi4!3G|YJguDVN=LGKFZo&vx9raKv!S^;EZqee~@Kwe0}Y?$_KSoEg7@fb4<{_@|dcuNl;FBi6aOa#j1 zJ>^yEb72tv`*YA7hDR1SH)2ad)$6Lq;7`7+Qghu-9nNqmC&mU7;e0EP5o;X^q z{O3;U7xTIw5rDvxt6-hT!v|1V3O~P1rQZJEqVBEayAHrDzl7N@tGf4RpW=EFOWq-! zRz*pF|1Wi*DD2=o!`UY)pMTQ00d8ygcvF&rqX1ekxJ)IV6a?UpbGmmK7<;6)wYMF0xTG+Dc0n933KFXKePsAcSF65?PGB0U zO7JgkgQ1nZ@-=h}Kr4XGQCbB5^%)pi4tGBc4Ow*WZHOqB;;9$ml(Fjc--V~CmCrQ$ zhSAs7!`9vKuf?in!1|rtQ%5C1RV4H?SM*wEAbl7pAMQ!yZxPg11pRR9)hZYL&fmk@ z9ocH?G^(E;Zh^&bsWj(x+hO;C?2|UVCfqs`?z{;`4$FfFFZ0s{ z$j6F6=OTGA7vwao5-9|I$`fvmsA3{Ndkkvob2JGA3@ug1jzC{li>>lgGlJzNcJ+hn|KvKI{S2Dpd?2S_gaT@^^eHis18C!p&Ezf}x)L4037$ zusP{+k_z01?Y|WT0l483xNIssu}Jk3{9qdc7K2LQvsb_uXR2<--u%va&;(%9Qa$LS zuATbp6(#E2`VE)BlmCH#{0H7zH*m(_#)^8vIA&>cl^)8%m0`LJo1 zQUtH9QtiRheYj@8s3CCn$?Cw)6=y5L3;6o%*U<`~SDCWEGC&&?2H})rRlu;WNs+-b zFT$z~DygP1n%_h=axk1QT9qoFb~cN zOdbbgN2;EGMFq-z5n@0*1|0+F%@}~jN9v%gSiJyFK34s-EJX^TNG6NVf@n;&%s$Yl zT#9g1W%i{lb$!66G6M?&%8-XvKzWJE95hYUGqAv~$j7U7omK$7c~6>AI)`B>BX+SD zo<<)afPCCY@#?vvp$TAs5`Yjnasjji(9i_X2NZzRE`UbAgG7+htYl}T^e%u#e=&N9 z0k0yc!eD_W038F+=-;q_x{T33kHLH__KGQ_^Yw=FuP7*ZWR5;qLn8;Pd0J+jp zQVRf$LySEH>_D&$cpbruSZw~&($W9`0~1L^K~zK#1rlOP|KE?w$BIBdLoyVY>GJ*Q z&BcLj>ICq~Ky{@epuyckkKnBVJL0PZL0&f|c>pn}7xc z>yf+-yo13OB+VFv#2Li&Q1w#+XjKCX86+h?L2@$?)CAD4j64E_GseCX!MjM_Meu%R zm2bwRS)5K%57z)C0D!%VFlCyvB>Y)Q#yPqFfR9*t34Togy@Eu>$fH0ruo3tG!TT7j z$D#pf!lX%@u2*wS0A0BS|EA2c_zse90=D|w`hCPIGy&w&z~h-$3>9tvAY}!r^D)u}lac&UN+!`ol25=-th`tgKsP0Ni-9K)gn>=K1|;hdYy|cp zX~dujL8JD`H39UTTQHwO3%(-Z`#`BC07pn=UdhZW3T#KP8Oat@3T!n{k3l_xdi*qt zQwHXqxh8--MZ@!mXo3k6{s+l-ZZOwq=z380Un<~e*a$!8?o3k>c@1khsCRvY6^qax(H5bVmV)Vnf_r99YLL`qe%5A; zx*;RS8;~>rG2}uDFF(3NpFe)W=Kd=wj zhhQI)eXYhUT8+8^4-KRVV*%nLL)J#Ep$Q-h>|V$qA^C35&lgLJD9LHw}l4_?ivU_xV=blC&=LL65QS0B@k?IhcIDqceh|c2X~jj2?T=xqW+8>|Pe`eepP_`X8SA|(F5}VV=ef~0{!%fS z`@T2(zSlnAw!j%%Z+g-}b@7BJWFAcrydI+51{ z2$cv4*|;Le8!PVlPk==5#WQO)Z9^0AW^*j zI6^M1+K^g2FljmA4i5iJB9Qh~=)1HFx%Y635H!Zusriq8kuI%7reftm8C0s#qpZSX zDv_K#lReL%!C|TsTTgTRhayW$`LUeJN4=`=OKT2wrQb92T3`;2HEna2YR!<}Fh|#( z2k!QxF_)E{^8tLzNx}Kad7B*X*41PE^qGmDx(41Yi_0tS(1Ny$#xs|$EBC>Y^o{XR zRiWR_^E2%WYbpX}U588SE`9qj=OA*H`a=yi$&EpE;ZyQ*!WSrW%;QM z*+}o}CIBdu8NA!l(;7Ki(?Q8z(Xx#86H_=L?dl5V;KQD@fY^U?7YYF^YuMf?^N$RZ)8FRn#zR3}&Af3I-765r*a zuGv{0A&P9<`?q5M*RE*@!Nv`JP}ig;$ubyAOH!21IIKevVRRmPCJA{x57`ZK1rBV&t?9hMH;1XeY{vf zDPbJZt2@G8=`3tT;eu@Tl=T>p?AnkyNFBYKTo{Seudglg6zn0<@;hJ#gXYHCCwNlk z180Is2Fhqq_|J;c1Zu5vQia3lXO&#{G|_BFs7`U$yG&iBl)zT1Gi6{&!%Fwign0|E zZ4KcbSIdoFyz(%1pJVmNhomdg=0gkYl^OTcYXPH(Kp&yy@xdOxMV?@*oJwQXjCiYKHD%a#h^XAl5up=f( zUiI~elFEe@x!GimwO(FN(DrWbM7|#s(oXT)@X`u9Y4QlEuEituEl;zzhbq$h)X?39 zj=D>=%5poyX_jkk+k5uaPw9*s7KinPQ)n9f~{DMEQzC|f}hwgop4z^EjaS}^=UuAXw zWZ>zZ#ttPMv2V7C?VC~kj!K@yb04T7WQiOR{^<~d8&9-6BVLYJy4o8L>DT@QaQqI? zY|^3L1Xg(O9ie{=qe0@fFGD;F%t&L&T@>4ANRE+zU?=b9_nm-5VDRr0UmI}^S6yQi z&E{Y=l$wlFyC>$y8Y}E)n=3Ov>)VSilx&_W$TBb7wG-j7PRkkkrnG=Z>Q!`I3StGh zFRgCOjRwm;u++D{z%haPLR}%2U1OE9q}mh#Aag_2NKsAPRKeMBLK>k&JpC&U{ZdsQ zS4TVl>YhN`#AJg&;kHW9;Lq9kPhx-GYs(Ke0wr7SLu^YIme)KrsUB5{w}cOd4?PjW zm2ATSY)dks+nJ=Y0`kvTxttu022aDn*kU)!V_qA%0@31Z{jGRTu{_^~s~Jyg#H+3F z^LTz;)$OJ&=6F}6k)d^btoYBQ-a}n%Ct^N5hgm^I8`oMUp?1({T(#SEV>`K$TO+9r zze_jVv%ug9wF%B~xBsE*E6b2UN(@5tRbbM2j-S|bbr35Rck&|R4<7qCXUq=2y+BPT-?s*s5xibq=;d-i9_68bkA7E=fG^TOlfDp zfOD;}a}rQ}G38c#E;lM&6TRWTiw^EYdp$pogQRPy_zih6w{k=Rtx(h}-!=0r#iOzk zvUNlS{T^(bwEn;UPD}g>nmCY*(tfMz;~>oX3B|o4QaW6&f46CM`)F&`@Loy&eYwvN zdtNd8S0mjg=;r6OE-*$v&2@N5GMFvme|_flCX4D9z(en;N0bp z@_v{_W@)PCQ{cs==B+&+j z!A{3R_@8hi8U`~G$~B#6AZ?5c%J-Oz{ZC41IU5JnT0AQzz*R*BfNt4ob#;pw9sZ}6 zAVtatg8(eSF`7CN_{}&ME_+n4NpaLkus(Vk#%DayQ*`wIUga2=d5CB8v!!;_!S3v$ zmXV%t04;HOIM8cBZ3+P&H1Ajznd6*p9=<{jKYC3?xl<_Gv^R!qMIq%7NRN1Zc-O3& z6=j57qTG1$F1zt#{MX0`YXp3M`t|exvTXQa$x-w>S!KdOPrIZ3#$=^R;W4@cF=7?5E#L+ z&}5FxMBw{xtl}eU0)bTXfKWYtm5OS#gT1<=EeIjSxuWLE;=^$O-+F*BGU!zw*Pf5? zv^+*5+y7g_T*?5hLS@7ByL~qtKD(N~9n+M?*WU^ejA}GfLgHTb3&V{`-`WG}N`d|}ir)h-6TxmSxxG(eW)k@Z z;__}>RT-%oGqv%F(mKcIB5FC2aq7A8m8(N8mU+FHkEf#eHi2%|H@#uNg|2-q(@B;| zSTG09shEUbh#iW$d%ZSElryw?n;e9{c4|lODjdd?*7u2<#QO~qK2zaO_<1Zm)C&}Q z4oH@c=qyq2To%7`KyM2F@Z*!VJXL>iIark5Em-Y+uof3!bP}~TDIji*yh>KAKN~I3 zA-??s;CXNq^?4UyR*o$bt^{x^H_Fu}z@h@M3dZ1RahH>SQd0Y&rRl{UUYsW_zqE$> zl3JYp@xS$JYm=ZaO@zJ_jL6}w>ld?dE7amn5QFq%gm*Gwqfh}k zA5SYOD)~%ySFtN`nwj#(h71VcwgP>~rI0p6*i~E1&KrAXLyfNLk~A9Z0+1@~&1*<{ zotHGfXW6CsPJ=T^fZHDuHjGW9;#h7xx{HJ-dW{nCfwQVq&K(`iCx~@ObiNo38lO5W z<<)*`<%unm7d2Sk8Y9D6);KGujwiH|Q^_!|ygzPr4k+-3I|yeP>;a_W%;M}GYQE{r zqpOn5qQo;zaMGH*|2~S{MjA9R2V-U=)ZH&Sp_`@ZLVcm5tH(RRz0*jyIMoLtl6&^< zT!~dj%C;mq36uInmC4WcvUskhBdoPg06P{4lhpW;gSIR1f33ylS8r|L8CA?wg- z+4u97Wp_kW+$l={Vm{R6=>}9|W7f$e@)6@&huFw;q-Q6W59kKG^$0uF7;8+Hq z2w!8zLES1IzDiQBea%sBDm$f(!%*0uE*Y2`c{23PrIH-4K>xb1 zKI{~OH)1HV*lpL^>l_1PU(p0fV2G}q_APSDQa_dzy2VXQvPP!nYzcQ`tZvGZ>@hc) zLpf0eqH|34r_(#fsj7GY&R~?<{4(EY5IiOvL8n%TJZP&te8Iz42$bz%B}S+_xIXda ze9ZyB^almAdGURSl6;15x{!%Spq9;#40+U1ZYNBLHuj|`P-o#G1wtzXLr}=#mq&Z# zz&Zx$b|U6I=DiF9oxwe@2T{fF`_>e#6mhO;=l8VyUF`P*LoDYn7%?#jw(D?gs(yyVg>RGD%q*6M~fo0jGH z7hcIMsY2i%;@=LPpf6Y>9`szG?RFfLpg9G+IX}OJ76~Mt6jKOIQ0Y2)G>@O|4ouW% z?gM5XeOgB<;XGP{5i_}i3WRSrx^m3?&wYq4rDUz-8e@W3;`;^!O3oxrWtz&0uafxF zZiBSKKC<+!?Q0rc~UWN%1^pn8{S&G?k1vuc7@dizA1Q`nPe+FrtjSAQG zA$7;ve`3E zb&B!&I$LA^VF>#!3pnn$O%&A%Bb;!d*=yF+RH5`&dXU;WXpvIzU#`y(iE?W24_3_0 z<8(y%NlMw-s*s2OK2)q1eJB5{??p-wW-V15BlAFJ#M)ZgRjzRD>c5cHVV=!&l;DkH zXEM}OqUFWA9(MU9YrB&v_KIF>DOKi|I97!ERTv9nw2$br_2!-Qr`>3Ky3g4qbkd0d z&|hQJ_b;bDl(}EVH)$J^V+3I+)g>ffiUT%)aj3S_%{&v?D|-(ud6~>Wy4dHM>!I`z znJ#>*Hy79dtlYhXWFEakkh}S>D4HJ2a0ajmo+ym*ipWeW4yZzbLIBQM*5TjK0;_f= z!@SMuF5^f@Y1DukS7SqJI|C{Pei!VON;7fT6tO*DRNz&c%?o-hBg`EdGESefW`AvdC)zE^V^xKWl{xPYMo*|%92VuNefK$XT6Flf zqY446)i=RwXq(bQawMi!ZR+fmaF`i+7{fuIu6+fOv8e;h(ar<0nH1mmP_8|zvY(03 zA5LkPw2PLmrg4`xE-_9sL($E+-%sK^p(#6klX}NRYC5djkROIq-nmTy-2ZYSeWHLY zw6=yh!JQ+Bp?O!PI9%nmE-S@^Koxc0N`UDiDIkr``VJu_DDSa4y&54E02)Q8F=318 zzsB$?kR(Qk_p$%EFV=Zg*Vt_Sz!~#*;{Kex%7Z}1Yv~<@Q?bVD2TeCuOnw|IyW-Rx zb|)1HBK%ClHVA-!t*zvhfFaV+i)u(1uT<8T50B=~HPSBi?HXBF(SaB74a*vB2$E>p z?A{Yj6rzH5YB>E=GTmxtcXA0}c)&2$u5|so<5FH37L`8zQaGD~&JZ)%FF+HsS15Dgg*2b>D3w+7R&#reA zpR4@$YLrZs1;W}Q|7hy0Bz{?`e4ktPN-L6356SrEN_)bFnc6EC8=`wvU#(4(9XDfX zzoJZpvvNv3p5mLrrb*kNl+#EAuGu7~_-7I69kq^v(@;JwC!xQGUTEzEIh&26M#UUp zk_j-2fmPLY^Y|WDOV82q{#$J7y^frfCjM#E9sEfDErOonRM$@tb!fvxSR(TGq$`#4 z3T;$$)zc|~Zo%@r`6${h3Qk)X{*)@)PLcd*V>~R(_t*A~;To0jiDrMxNr*A(ohqsk3-)L1;-AgBxL{noCcH!^p!ey_^I+$xv znS(ZO5<^3gcK>BCMYvJrE6hj_X6RR+S^l(?2mt^DQJ_y!+W#`b&A{vrIys{^+c|ES z%VD2V@HoNB2syk+2u+w>^$GQ~gze<$~U;^fY~~~ z01MzlHeh>KQ8QDmPk@i=3wwq8r8>kCwMe1Ch{+R$y!+)mz3dM$QuYUvy=2)Pz` z$|3%XF#ms7zfpe9RK|kdLnr7d$@9_*XReYkh(`*>2dc|@$*=~SX5Mw>RGb-BZ##-;Gw=vV zSRYo+J*^X=cE6YMEsYr9k-chY!@oJ%Yi)y@vx+T))nb4uv4jH-!4L8vw?(VbkCd6! z+?7y*p@WyI{QbxAh7wIssBb2B(mn<$^i8ZHa)eEj{B2<SJ(3abnZqeza`(vPgj0ZhrdO>g zgnS{81fhI=_|wfeBe?bB>IQxtVA81?;%r&uH|3WVCKRP^+b_c;S{1~fU$4=nxh z@K1(q1w~+w42%(MnsFx&s#6Hi*X)Cc6nJJVURd47c-dc%GXY<}L%w+D`CeVYw~E^| zgTEggJd9XwQzXAKg0~ppD4-cofHcgNVe>@h$*ro$b}RkzV`t~aCAb?>!{7{YQeRa9 zll-WQ$Ay>Hj9gy9O-F?u^lm&|DZ8YRCPrk~!OiNL*R;X;7F)Aa;E~a*2Uk8kyChE+ zIaJKIM{rWI@1GKVX88Vehe&Ssj2yU^6K>aXpZ^L1Whn`73bl!jtZBl=8>*UPAp0I6 zSIG?#6Cxo^6br*mK+2RZ7Dx}r(kWC?n9X*cj~e#8FP@?AH_@pALl=kOe&om(Uxk67 z3Qzj%cT=MDa9z+c)=K|*??fpQ_TSd=32+^?ZU^$Y1;`UPjrBdQJi7%72! ztQA(_OcVlIQ-posU2l`xEdtutLT1W;OYsvjyf#5D988}{K}A`2s}X}-psTOzXML(< zBbI?i17~Rtz0}JVlRXTZ)Iq;|RXEFs3hop{k0>&}ikZUX8KzD>Op09ao{>RPFeaV9 z@Sh~^Z+VewIHh9({Q1QFb;5X-9H8awRS{2&w-~TXYO@N(&2xe0V(!MUyl$+eV;K_$ zzq9)7tBDL+Pc0;8fN2v2!2}=u=sk9| zEDAD+6x;{CYE7R(1z28OM~MtQ=$rlF^%cP4zZ`%`$ zxSI@caZvL3T}1v;^5`B7sED1Lw(nqG=)!sVLQ*X{xGUMFoX8c9pX66Pify16Ri6z=czlvSzR2CJsE$pEaYXHh(wvwb? z2xYOj$hp+R$Le~V2qb^#)aeP8Cu!!38H~MK9$?B+6lS!&UFa-on_0E}+`%DHH~h@* z;t{(=ciaN?zz8)xXBz$!E0K&*%$S;{hp@19lST4!$;W%I zT}x@PvQ4B7*jF?bsr{K~PzNfsE?>%9o);^t(=-wPFxuJ&4b1m+G2(sgZ3F*psL>Z+ zT>ueU-$&JH7rF8-*{B9&jZ>XrFJ^7w5KGRX*Y(g#nAWScL8xMRWH8rfq0{7ohfuI(&39-V2hkWmzd_Sybw=)o?$$hr@d-PrK3AuU|O@8v46PzyZFGtT!Ha-cEZrde!#awfnV^HUc z(8DCND}u6SCXMqbdXM?x7fJ4}%Z$W$>~$K$ zs!3u=>Yy(jZ!(IA{AB1WwO4;q3bk*=(|`r#PAK1QoQDhGG68NX8(+9l=k2g0bzs)u z+PL7`#?dl)7*a!vmX)b!vffk5-x8$g(A-9Y>?y+lYNsUvH1Sn6*i5d8Ciwmr?W=W~ zeyrmUsFwehHvg%o%a=Y+D>=m6)!my2A-Ss0+*rrPeU0HFbprM`-4aw`(8=>4-t~}l zZ-h1X>Cd}Y51WoCMM1n&w==B{@nkuTzfLnZ%;ZkUH6%@k)Z|cpznA}- zQGsmpqt_@0|MUKy?0tQXiH*%v<_S4(Jmz0&AmzEt(+~Zh$=)8G>DbwZ)|;Z#FbWIK zJvc$vTMgvr;oZL{R58G0nK%5mu+boiD}z~q7x=p3?ahHD{^-{Z zu*2CE2IhS<5Hat%OwN&GDV472XS2n@OIfW?> zcO-ZY7-v*^!nJM^%v+U)J*r;z?xguyu2eGlbr}SD0oao zHbByUo(&yq61{(*%Djuig?kG5CYodK%fe*Aobgl3 z^p@cqoj+@s;7>bgEaDI@fh3b)DOd-1I&q&m=__%dhKpr4ghEE`LEEf?U-|xChl&zS zyra}gfaW)?iFR{?fOZk4cn+IAl%OGGUax}F*-dnQCylA)mm#jd3q_(ym_3T`8#G-a zG+0L$`6xf{B40#ZQ!TRV{2na+pLET4RpwmI*JzvQz9EyyM{x+$=wAQkKai~N9!G{s zhYN$xHSOzYyXnxJ=C0Ei<-rD%QVfU4WBH`_b0W?NYg2N|bs?J$KsFgcB(>s-)9-a_ zKvqC5!t>IX+uvJjfb+RJiMYSJaNMzSN9f<2`tW6DfdY0Y4$;f2)`KmgbWw^zRx(aC zsbNZ1t)-3V(*8KC1{E7+M+T2qk13|QbW7gg+?Kt+Q?Ylp3>GHLa2R7(!GTP`gF0K- zH++w)%l=0$2lH+|STw^CdVE<^k`W~vfJraCpmj^}_hRacQ%^~!_NrD^H^p?ikHxd% z?~kB2^?Ls*5{>CE=0SyA=|PVAWNu#c1z55(VLZzCej%_$dl9V}BSl zAOptvN5HlM#3u!f`N>J~g(H8nB^nT~@Pu-2_tJQF>R4%Wc{z{otJo&}-#4rvg(9wY z#-($~UVEuXQ5m+P8zyncmqu@(ZyKL|#C_JP!}iy(zM zD(PxWr+!9erLcc{U|cv6H7svU$i&h~_!x}{Pp_gRZItNkjV%YsO(61N% zW?R#`9RFmp2=wMlp8xKo?3?PHE;fQWQ8?7AvFBKkgFXGJOYH~!txe8qR{Xo2?A1@a zBETh|DU8r$h-HS@bDz#Cb6?fuIWq4${fLMAHujWLOyl8D{87Pijg&gyhSyh!(bTz? z%{}SOS+I>yeold<4Jx)C$_|^3*3C-nZKT@7T}vDLqtCVuze~tJ-X;z($)gqlu`%9U zz_nZ}#u5*^s9?@i&xA;|T5NHlZ*!inJ88igV!>m##k2J&Zd&J1r^SJG)ZA6F;|)#T zF1g35-_=m|+kn;_F%2y(-ycWIogCd}uMq`T+V>l8rQXD{Ir=&viJ6WecHSociJ0Q0 zbtyK^ObtgP&`?fTUWJo&egFk?-t4b-h)DX>QQ*hI*qU^)tZfj(yQ1N)w;c&C0};kG zocMLqWZ!P6Wv%V2Ur?(f-mhPs@fO!)b#+c3cW_6Yl`OJ;+gtzabS1h)O|0Gg$$W(U zKX;dB%d5-=#C5Oq^WzKzmF#wj6G175)BrL$Q!~8B|*~QElh^>dEd`J@+EvZp`f13 z#@#Md=D>q`o$jBRlshjmjZB!MBF9vdU-~K_xIYLt2{BzwZT=8jv%RvbXGXmwDpudv z+7PC{K9^QBbad4;LXjv&^GCreu|b~<2A#@0UCa|UlNuV<-6dZr7?-rm>R60If;5y} zHvc*QwE5&-%~iCH0JDE^fNC)b{;`_Lj$BnsJeFQCBs0=)V|^Ad?-+`dQEP0-zfa_d zFtNBSn-l(9(YW}9>o@I%>#vT{(Fva-zuObtoBhFo^FK}?i4PNfRDoS+;yD^=`-Z}- zB%NP>2H@5X^g)ie_lj=6tcV`T8JiqFYEi>Tb;kqmfrN+6*6hkHDBcy2w~V{^9N3oP z)06sk>9()y(Lrlm^x}`fj)lp}p4G4d+OsQo;ZFWKyY2z!)H>j qu&PUDw+Ci~awu@|)0fa9{ckd@SsL7X`_xeyWxJ9PxkMcIEQ` literal 0 HcmV?d00001 diff --git a/defs/webauthn/apps/slushpool.json b/defs/webauthn/apps/slushpool.json new file mode 100644 index 000000000..c821da769 --- /dev/null +++ b/defs/webauthn/apps/slushpool.json @@ -0,0 +1,4 @@ +{ + "label": "Slush Pool", + "u2f": "https://slushpool.com/static/security/u2f.json" +} diff --git a/defs/webauthn/apps/slushpool.png b/defs/webauthn/apps/slushpool.png new file mode 100644 index 0000000000000000000000000000000000000000..2cbd58791cc6a733eecd00f471ecdc9a9685d7f8 GIT binary patch literal 30308 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 literal 0 HcmV?d00001 diff --git a/defs/webauthn/apps/stripe.json b/defs/webauthn/apps/stripe.json new file mode 100644 index 000000000..403696c7f --- /dev/null +++ b/defs/webauthn/apps/stripe.json @@ -0,0 +1,4 @@ +{ + "label": "Stripe", + "u2f": "https://dashboard.stripe.com" +} diff --git a/defs/webauthn/apps/stripe.png b/defs/webauthn/apps/stripe.png new file mode 100644 index 0000000000000000000000000000000000000000..351d677239ba4332b5dbe15946084067a4ba8f6f GIT binary patch literal 10448 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

CCcKP?u&3BbF{PAlb-4?S5Qo_o zxHHi!fQe)mv8qT@w`!QHjA7wVOgvhmgH1V|s9LN1SVTssV!aN5Ihl5*PYT7NFuxfO z?xlay&6U{^`=)}B2-;9%$?DWruC{aoGWTcNV1Z&xhv~(s{k2Lul9M^EIKCYrR_vmg zBq;FxpKWJn#D!~pVzgz?1MZZe%CAl} z=gsB1{JTk0`e!7`V;y|}jaU^)ZT*M&g{=gR!xd$M`^XMXEp(|KRBhaxo(AjyHLce-wo$f@i<-vDx+1Gld!+VGx(yR^aq{Deq&m+ zCo8WUD5uOg#UILc-YLsLnt_{plG&C*k4M-knv9CG?27rF8^zxYs<&Dj04c*MFqe_ZJc@PMx*A~I08AVl}{EFu3uvRrAWx@^0Jce{Tn zdU5sT*0vL2_+M35jkMdc_HkIW?L3D%7m zxWCbfM5jrdmKW3XmivieTtb-*84OmZmYFD8>qhh3)gC#>`{qYoBtCv2vc~q~pSkR4 z6o>Efe?qW=02IK z`6s&OYM9Q|qZsu)7b|DD+<@(su;Bvf*U$BP>Y{yexf{+#uqKAJ6@_^)BKS>?}%F3Pr*o_oCiFT(Z4DUThcGAPlCy3`O>|vbIrJ*28ivz4OmK67LqlGAGk_atxOHT0)=lY z)vyuX#dfF6Jyr{ur{A~a6rTs#QYp3=sr@)7(%a_UyVCKfd2_rSb1m|IS5QeL?SqWh z==W6q@wyV~n%m#@U`qEAcZLLQ(A0A07JpAUh{DO2hrkSyz{L>E7OhUUip;!>oO-EC z#OD%@oPFV>wG^f2t}ib$ka-`*%D^}>vY%UTDL^x-2lW%oDnWcxJam_a+#;SI^#JhG zhFA6rO~2iyisOGMDYS}?BJOA9(UefK7zy|)55FHT;EqNSEpVqYQ>Q#UHA_G18#lOi z3vODKq25nksaXe7$ob>&3`_*rthn?t<2!$V>3sEh;JAqF#*^JQ-eaL->FjU*{z>eX zt+3;kumVTcM11qrUH%f77WMQOZVGXq%i?l$$%Kh}(iA0ZWK}}YzRg)3jxl+p{K2F= z*VWI}BpUjOn}(jPK>8Zl^U{5B@-~n4^1*=JtHL0zt*r$^UC~<8&?Qh+005Y)pQI%; zJ~-Mn-=8F!Ip9lY!5nc+OiW#=x+vsf*07N8qxAXpWo1+attdLAmf62nUH+AQ_rp%< zg|$$~0k#%|LCad9--GBYprjLJq$KNPnyG0i^ry(~o13SMHacq37B{8@0_FMEZtdFc zwOgFlo;%1tB~kzHBy+XI2WgI;?dUhS8vF)^y6j%mw!CwiQn5a~!&Z746@^VlJHcam z4!yK@>Z@5lS>^=TY->LVfOEm_q2Zz7A)xf5Wez~uHRFrHW(xS)tat-wX^x8u2;RLQ z-V9I;f12H6NCW|rKI8_Wxzi~6@0fqn@ z*XjyX`-bZEu;eH<0xnD!!MRAl5Wy9_P0~%jO}kCKO*GAns>?Ziz??2GG#b<*)MCFv zu)C&Jf}b4-a3suRPSef%c2B#xUOw(8%mWAb%1~b+c+u)a5gYyxsA+ZFInD{VsiDF$ z)39s?>HOQ%3=Tk{Cjd}CBK$4tEbBn{MC}dN4BrgH3txi4iB<#D0;&Rn;YeZZHlxbN z7yJn_1^3r3U+w_M<(w<*i1EIx6vfN4W&~NEd^{gvYGGPQd`u{FV)(r+uYHt+pjH4} zA<7{<;2rQQI1eGG`IB{}itVr7b6{s|qP>%`q}B3|MtVOp_6Mq8g-5a`6fSa_Rzz~O zY&8@UpEt1(!i{9jTs5s)ZW~nD09Jf$WcON@cO6iZk77_m7_@??2;-EUlloB1a87_O z^^|3nz&EF{hvzE2k98H$AY3X`K-tOLQPWBr#Vzn2uny?NUIM0zN@tXZ8bfcu2XT{@ z`s~Yy5c&8Dm+WKws|M{`bwcaFyaq5DtfFd9y~wh9xsnT zU$uAaR%o5iDa+An?W`Mi+s>0vZ%ui5d5XiGE3r)GJqP~l#z+B#OZFk%8L$qD!}b?0 zpt3)AP`K3mVmLt6j5o8FY^%z#7{8#8@5W7hjRCd=$H=-AW@75+JAXGu`zP~?vw0o2 zLRJ_Z47jMq@6T$J7>7fRGbV$>-IFnd!s8awsqjx1db@cD9U8K-7Mg%x$M4qKlL;hn zar$^$)ue^jhUQzaA@_gVVp^4AdUmYqDn)P}pj|w|9G#H^5cp}>j=0PO z^!VU#f{i!L!D>-8J6&L3F#L7F8~erWkH%br@{wG;+Y(>3Jk%FdephV9;KB^>ap;#X zVuP{f`asn<X;Y|kl;(=%}Cbpvn1Yk|P(~jpV zMl0aq6DYq5KBTkEn?ecjD1VZOUt{HA@|B;T7w6qFsnHL0GUiEXlZfSp1~e23_ViUF z<3UOZp3=EQmUZr&Fa^i?s&!Wu|2KHtLyfWAM(uC@u=2jr#h8cQC#Wl0yKl~PmZ{pA z?}=rycW>*OyRhyh>3`BPBj;J;fOh)nNdSX!o;yejeM*_~wxL|TCFB9q4O z%?%DVNe6IUsd%^5h>Y*oh$ODFgVUGFu&l!|el=T-fOSkEjG_?>){CligXZN?F|r5L zodzjC-ix@-GCmS^z^=?6f(zHNFxua*A@4TzSE_LnZsc4P&R|?{RD=Z9jKysi z|E6QnIyA8WRQ&ne8>y!s5WMo|Epyk3y;r-&HFuztZuru1X5-RxPv#HNM8Zz0;0V)B z?b?=nU4hx<|Y8FHJ023`Y3{e5(wyx>-|{-+ub~ z;X)dv7u%+;PDZw)Q@@0oERQ~%U}R#ol;ynV$KZ-kxlkdZ0vkM2)*FlnhT2G|tT;7O ze_RT&9{E@q*|jE))^(Nir;c295+DEGfJc?#D}OH2yVX75#ClB4sS2EEW-Ebc4m;Fo zrNr4A7vk);{w=?YgQgX7KO&D`Y3Mo)2*H^PvBaf5@oVl7u77 zS-i3FXpA2!g<9{589V+&Q8CewFKtE#0vCieK1%eNDcvyQWDsk9(1-8k;q$DQc|n5v zRe=%UCGp=i+s%GlI4oe3r;cVO`WAfI_xmL<-q)76%?DV8!XsM82k@ZbPh1yzDbV8k zz^SVbW6DQQ5KLNHlbO<27Y6s6MJhOjobyLFh(1?vW(_CM&}mxU{rEAyTr=vxak0Hb zsbHB$VT4GUx5?FIkg}YjJoiHgQ21x)#O7#_ei%tz7LP-Wiob2|Io~vp6)fm?`6G9yv-Zjw>PFb)goO( z@YbJqc~ioRf4n%+k>#AvThx^=$DxZK7>vxF?dIkmCS-05M2QhgTDUeh;MGxd!XIjn zX1{6O+c~DR&`{pO`Uuwbg7k3($*ZAHRHzk>1HKUh%3t^`Lh`!#dz!!O+Bn>nJQQ@6 zm3m;*kCd>JJXjgcZH&h}5iA(<{3=ErU*br&vsi!mKnpvB&tKpWK~%2FVUEnvRsB|u zuqUfBK0}$K*phyyD^~?w{A@>fA7DP=R;6}BGUG{nzIO5Y4?L^C`melv{7kvlIRVS4 zszqJ<{)lq-Rnd{~*Oz~EV37}COZmVOOzz8~UwTlg0BstG!Om{Rnr&d$dma|a{x^IW zy*hoq3n~-fsXnngyrfw_bn6GEDI!G4IeFXKHI1Mlw%zN`r<-~wz^r5^Se9Fx@iPTE-cFX;eW5O{R7(tweKK!$BkKVbVm5)ID60k?fQ=w8Dr;D=Z zVicKE=xZ2Q@XxLHO6ES{QpFKNpK2q%4XN0w$Op#8Aj?$iA?>zD_RP*TdW}4paaKg0Or# ziYEKrtm}Pj0&vZ!IzH`+urxjA$)fL`h*k#hUBX04)5;o4RxC#~Jxx>#HK9kIuo_!8 zY=Il3rN3sne=tH(3e>jrGS;+mriu-FVl-vF)_M4>)K8Bh7j2Nt^z9+2Kwsn}0HB$% zW|*=(60!B;-1^3tzzMFiCNFQQv9h9uABtrlKSz$RE4Z;wWquTc4(9i$gRZ7kUKC51 zR0v!0zmzeTP6k?wld(%^yGE%3xsb?@v$cJbv(Y6&hT9HB_96CH1)?d5^Y_xdkh{}N zXyLR(?i;hQRybFef>Ul(TD>Hj4rB8G5BfKTPc`;RYBzzK&%SETa`I?*s3t?aCpTMg z0FC`1*Z(iBNf~ z`rG*znknBq9|2>-Q;5q)eW_*XMQRG0UxDf5XWam@MX#Y=OMe|idY7BAAPq7df)5c5 zH6d^Txfu2ag%CI{&Fe1YAO_#(DGc-c=$$DaC$*s;vk%e7ba>YERZECbOEC0R`)_WR zf(Sgb(%Qe6^ybgUkG5B6+Ke|nDcr-naU>Ww1aX0uZE-6i`_am7@W81Vz_R?~WvuUe^* zIqTlsx>u~MFh#X;S)Kdm36yM>ZrI^HbiFXSha;|0BEGki)hbo+QA-nsqwEwqe z3l#>Ek;r+XVd7~t7ZdW4EL-29bQE-k-IP12oF#p58qh8vOItt67q8>LNnW~a$Glrf zvYpa^YeM{YTqmMn9oaTNOIptc50sTRq5_RzRl_vc0vo_xF4mya`Q8 zI(W2MYO@?csSxD{pkTw`0>sz>vGH=D?(h%6X*0efgxu{PdrsTuDip5~d_ZwAm739$ zIw;CZV+4^abuLoi`uwvOHtO_fgVo zg8gaDg2B=VfO{xs;-lqC#s;|qG3$KpgSbM*h8RqTed6BZ4pN}F;8;kSwk7YX=Q=A) zmwmKi1P=!h-hZysHERQ%mFrQW}CI;<4z+n>Wj;QaoHF^Ot5Th?Wjk9R5J#{{qO3%@nRL4CA< zX%Q5iJHJNqfN~!-feSL834y8bBTec(;$D#s97MOvNIPZOU+$`_dxX;mp2G3%cWmIk z2O7nXkslGLx81NIt&|t05j5aQ>Rk~c#{@tgz^iKXWNe}{{%{||^JiS7lhQCddefTX?&zBrJIJ}Mq}0g-Bf99m zoIs&u_)xGNmGevT>u}_S|Tb{&lb`LEK}6JxVnJ#IUiJg zBmnT_1=M?`c#Y`(V;`gBee(N?0aoF;d4y?_Vkph&k%#RSehF56p)eQekQGN+Rs8ci zJ;fqeUGm!!-5)VDAJ!FI0HLV0V(&>u4uUU~6{cWQF5rxA_wwERDEC!OFfwa!2NKFY z(Zct9d*j39lXPLV6}6P+D(3Q$ELo~_9G;kz(*gN6?ZU80P~!g|nc-hNW%!G~EI!=i z0=%%7EJ)YP#r@zNRM98|#+AYI;M>a$w36X>dSJ+4T2lnKW_MJ|tL$cVRQm5B06EI3 w)8>NCat+-sXQKey|BmwcKYA(7_#KVqfeJ}*NATmHMF8NFjEZ!%q)FI+0Nti0TL1t6 literal 0 HcmV?d00001 diff --git a/defs/webauthn/apps/u2f.bin.coffee.json b/defs/webauthn/apps/u2f.bin.coffee.json new file mode 100644 index 000000000..6fecab464 --- /dev/null +++ b/defs/webauthn/apps/u2f.bin.coffee.json @@ -0,0 +1,4 @@ +{ + "label": "u2f.bin.coffee", + "u2f": "https://u2f.bin.coffee" +} diff --git a/defs/webauthn/apps/webauthn.bin.coffee.json b/defs/webauthn/apps/webauthn.bin.coffee.json new file mode 100644 index 000000000..716aa0c8d --- /dev/null +++ b/defs/webauthn/apps/webauthn.bin.coffee.json @@ -0,0 +1,4 @@ +{ + "label": "webauthn.bin.coffee", + "webauthn": "webauthn.bin.coffee" +} diff --git a/defs/webauthn/apps/webauthn.io.json b/defs/webauthn/apps/webauthn.io.json new file mode 100644 index 000000000..71ab05857 --- /dev/null +++ b/defs/webauthn/apps/webauthn.io.json @@ -0,0 +1,4 @@ +{ + "label": "WebAuthn.io", + "webauthn": "webauthn.io" +} diff --git a/defs/webauthn/apps/webauthn.me.json b/defs/webauthn/apps/webauthn.me.json new file mode 100644 index 000000000..3d658d277 --- /dev/null +++ b/defs/webauthn/apps/webauthn.me.json @@ -0,0 +1,4 @@ +{ + "label": "WebAuthn.me", + "webauthn": "webauthn.me" +} diff --git a/defs/webauthn/apps/yubico-demo.json b/defs/webauthn/apps/yubico-demo.json new file mode 100644 index 000000000..bb40392d6 --- /dev/null +++ b/defs/webauthn/apps/yubico-demo.json @@ -0,0 +1,4 @@ +{ + "label": "demo.yubico.com", + "webauthn": "demo.yubico.com" +} diff --git a/defs/webauthn/gen.py b/defs/webauthn/gen.py new file mode 100755 index 000000000..e7b094439 --- /dev/null +++ b/defs/webauthn/gen.py @@ -0,0 +1,55 @@ +#!/usr/bin/env python3 +import sys +from glob import glob +import json +from hashlib import sha256 + + +try: + opt = sys.argv[1] +except: + print("Usage: gen.py [core|mcu|check])") + sys.exit(1) + + +def c_bytes(h): + return "{ " + ", ".join(["0x%02x" % x for x in h]) + " }" + + +def gen_core(data): + print("_knownapps = {") + print(" # U2F") + for d in data: + if "u2f" in d: + url, label = d["u2f"], d["label"] + print(" \"%s\": \"%s\"," % (url, label)) + print(" # WebAuthn") + for d in data: + if "webauthn" in d: + origin, label = d["webauthn"], d["label"] + print(" \"%s\": \"%s\"," % (origin, label)) + print("}") + + +def gen_mcu(data): + for d in data: + if "u2f" in d: + url, label = d["u2f"], d["label"] + h = sha256(url.encode()).digest() + print("\t{\n\t\t// U2F: %s\n\t\t%s,\n\t\t\"%s\"\n\t}," % (url, c_bytes(h), label)) + if "webauthn" in d: + origin, label = d["webauthn"], d["label"] + h = sha256(origin.encode()).digest() + print("\t{\n\t\t// WebAuthn: %s\n\t\t%s,\n\t\t\"%s\"\n\t}," % (origin, c_bytes(h), label)) + + + +data = [] +for fn in sorted(glob("apps/*.json")): + d = json.load(open(fn, "rt")) + data.append(d) + +if opt == "core": + gen_core(data) +elif opt == "mcu": + gen_mcu(data) From 18176441eec6b878bd816fcd551f618d99e1719d Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Sun, 10 Mar 2019 00:32:44 +0100 Subject: [PATCH 741/767] defs: update supported coins; remove "soon" coins, will be added later --- defs/bitcoin/qtum_testnet.json | 2 +- defs/coins_details.json | 1455 ++++++++++++++++---------------- defs/misc/misc.json | 4 +- defs/support.json | 10 +- 4 files changed, 740 insertions(+), 731 deletions(-) diff --git a/defs/bitcoin/qtum_testnet.json b/defs/bitcoin/qtum_testnet.json index 3b3553ca4..937ea4300 100644 --- a/defs/bitcoin/qtum_testnet.json +++ b/defs/bitcoin/qtum_testnet.json @@ -1,6 +1,6 @@ { "coin_name": "Qtum Testnet", - "coin_shortcut": "TQTUM", + "coin_shortcut": "tQTUM", "coin_label": "Qtum Testnet", "website": "https://qtum.org", "github": "https://github.com/qtumproject/qtum", diff --git a/defs/coins_details.json b/defs/coins_details.json index 2399ba388..fc979a789 100644 --- a/defs/coins_details.json +++ b/defs/coins_details.json @@ -5,7 +5,7 @@ "Github": "https://github.com/Actinium-project/Actinium", "Homepage": "https://actinium.org" }, - "marketcap_usd": 238979, + "marketcap_usd": 227400, "name": "Actinium", "shortcut": "ACM", "t1_enabled": "yes", @@ -36,7 +36,7 @@ "Github": "https://github.com/Bitcoin-ABC/bitcoin-abc", "Homepage": "https://www.bitcoincash.org" }, - "marketcap_usd": 2348442340, + "marketcap_usd": 2347089001, "name": "Bitcoin Cash", "shortcut": "BCH", "t1_enabled": "yes", @@ -71,7 +71,7 @@ "Github": "https://github.com/LIMXTEC/BitSend", "Homepage": "https://bitsend.info" }, - "marketcap_usd": 1117525, + "marketcap_usd": 1150914, "name": "Bitsend", "shortcut": "BSD", "t1_enabled": "yes", @@ -84,7 +84,7 @@ "Github": "https://github.com/bitcoin/bitcoin", "Homepage": "https://bitcoin.org" }, - "marketcap_usd": 68530594390, + "marketcap_usd": 69499332314, "name": "Bitcoin", "shortcut": "BTC", "t1_enabled": "yes", @@ -106,7 +106,7 @@ "Github": "https://github.com/BTCPrivate/BitcoinPrivate", "Homepage": "https://btcprivate.org" }, - "marketcap_usd": 24309437, + "marketcap_usd": 16208893, "name": "Bitcoin Private", "shortcut": "BTCP", "t1_enabled": "yes", @@ -124,7 +124,7 @@ "Github": "https://github.com/LIMXTEC/Bitcloud", "Homepage": "https://bit-cloud.info" }, - "marketcap_usd": 125443, + "marketcap_usd": 91120, "name": "Bitcloud", "shortcut": "BTDX", "t1_enabled": "yes", @@ -137,7 +137,7 @@ "Github": "https://github.com/BTCGPU/BTCGPU", "Homepage": "https://bitcoingold.org" }, - "marketcap_usd": 221203438, + "marketcap_usd": 221836416, "name": "Bitcoin Gold", "shortcut": "BTG", "t1_enabled": "yes", @@ -159,7 +159,7 @@ "Github": "https://github.com/LIMXTEC/BitCore", "Homepage": "https://bitcore.cc" }, - "marketcap_usd": 4560915, + "marketcap_usd": 3272366, "name": "Bitcore", "shortcut": "BTX", "t1_enabled": "yes", @@ -177,10 +177,10 @@ "Github": "https://github.com/Capricoinofficial/Capricoin", "Homepage": "https://capricoin.org" }, - "marketcap_usd": 329758, + "marketcap_usd": 332153, "name": "Capricoin", "shortcut": "CPC", - "t1_enabled": "soon", + "t1_enabled": "no", "t2_enabled": "yes", "type": "coin", "wallet": [] @@ -190,7 +190,7 @@ "Github": "https://github.com/dashpay/dash", "Homepage": "https://www.dash.org" }, - "marketcap_usd": 721466560, + "marketcap_usd": 727140656, "name": "Dash", "shortcut": "DASH", "t1_enabled": "yes", @@ -212,7 +212,7 @@ "Github": "https://github.com/decred/dcrd", "Homepage": "https://www.decred.org" }, - "marketcap_usd": 158980541, + "marketcap_usd": 156674100, "name": "Decred", "shortcut": "DCR", "t1_enabled": "yes", @@ -225,7 +225,7 @@ "Github": "https://github.com/digibyte/digibyte", "Homepage": "https://digibyte.io" }, - "marketcap_usd": 130488338, + "marketcap_usd": 148074464, "name": "DigiByte", "shortcut": "DGB", "t1_enabled": "yes", @@ -244,7 +244,7 @@ "Github": "https://github.com/carsenk/denarius", "Homepage": "https://denarius.io" }, - "marketcap_usd": 158610, + "marketcap_usd": 174665, "name": "Denarius", "shortcut": "DNR", "t1_enabled": "yes", @@ -257,7 +257,7 @@ "Github": "https://github.com/dogecoin/dogecoin", "Homepage": "https://dogecoin.com" }, - "marketcap_usd": 235085170, + "marketcap_usd": 237273507, "name": "Dogecoin", "shortcut": "DOGE", "t1_enabled": "yes", @@ -275,7 +275,7 @@ "Github": "https://github.com/fujicoin/fujicoin", "Homepage": "https://fujicoin.org" }, - "marketcap_usd": 85985, + "marketcap_usd": 99486, "name": "Fujicoin", "shortcut": "FJC", "t1_enabled": "yes", @@ -293,7 +293,7 @@ "Github": "https://github.com/flash-coin", "Homepage": "https://www.flashcoin.io" }, - "marketcap_usd": 3112202, + "marketcap_usd": 2814849, "name": "Flashcoin", "shortcut": "FLASH", "t1_enabled": "yes", @@ -306,7 +306,7 @@ "Github": "https://github.com/floblockchain/flo", "Homepage": "https://flo.cash" }, - "marketcap_usd": 7672432, + "marketcap_usd": 11505280, "name": "Flo", "shortcut": "FLO", "t1_enabled": "yes", @@ -319,7 +319,7 @@ "Github": "https://github.com/FeatherCoin/Feathercoin", "Homepage": "https://feathercoin.com" }, - "marketcap_usd": 3482272, + "marketcap_usd": 3186601, "name": "Feathercoin", "shortcut": "FTC", "t1_enabled": "yes", @@ -337,7 +337,7 @@ "Github": "https://github.com/gamecredits-project/gamecredits", "Homepage": "https://gamecredits.org" }, - "marketcap_usd": 6474011, + "marketcap_usd": 6691535, "name": "GameCredits", "shortcut": "GAME", "t1_enabled": "yes", @@ -368,7 +368,7 @@ "Github": "https://github.com/Groestlcoin/groestlcoin", "Homepage": "https://www.groestlcoin.org" }, - "marketcap_usd": 17308684, + "marketcap_usd": 17385498, "name": "Groestlcoin", "shortcut": "GRS", "t1_enabled": "yes", @@ -386,7 +386,7 @@ "Github": "https://github.com/komodoplatform/komodo", "Homepage": "https://komodoplatform.com" }, - "marketcap_usd": 105745463, + "marketcap_usd": 106553130, "name": "Komodo", "shortcut": "KMD", "t1_enabled": "yes", @@ -417,7 +417,7 @@ "Github": "https://github.com/litecoin-project/litecoin", "Homepage": "https://litecoin.org" }, - "marketcap_usd": 3375539765, + "marketcap_usd": 3510753342, "name": "Litecoin", "shortcut": "LTC", "t1_enabled": "yes", @@ -439,7 +439,7 @@ "Github": "https://github.com/LIMXTEC/Megacoin", "Homepage": "https://www.megacoin.eu" }, - "marketcap_usd": 104769, + "marketcap_usd": 149590, "name": "Megacoin", "shortcut": "MEC", "t1_enabled": "yes", @@ -452,7 +452,7 @@ "Github": "https://github.com/monacoinproject/monacoin", "Homepage": "https://monacoin.org" }, - "marketcap_usd": 31577688, + "marketcap_usd": 31862429, "name": "Monacoin", "shortcut": "MONA", "t1_enabled": "yes", @@ -470,7 +470,7 @@ "Github": "https://github.com/muecoin/MUECore", "Homepage": "https://www.monetaryunit.org" }, - "marketcap_usd": 2461134, + "marketcap_usd": 2424991, "name": "MonetaryUnit", "shortcut": "MUE", "t1_enabled": "yes", @@ -483,7 +483,7 @@ "Github": "https://github.com/nixplatform/nixcore", "Homepage": "https://nixplatform.io" }, - "marketcap_usd": 8340249, + "marketcap_usd": 8062101, "name": "NIX", "shortcut": "NIX", "t1_enabled": "yes", @@ -505,7 +505,7 @@ "Github": "https://github.com/namecoin/namecoin-core", "Homepage": "https://namecoin.org" }, - "marketcap_usd": 10263253, + "marketcap_usd": 11410742, "name": "Namecoin", "shortcut": "NMC", "t1_enabled": "yes", @@ -527,7 +527,7 @@ "Github": "https://github.com/PIVX-Project/PIVX", "Homepage": "https://pivx.org" }, - "marketcap_usd": 43664266, + "marketcap_usd": 43812841, "name": "PIVX", "shortcut": "PIVX", "t1_enabled": "yes", @@ -540,7 +540,7 @@ "Github": "https://github.com/FundacionPesetacoin/PesetacoinCore", "Homepage": "https://pesetacoin.info" }, - "marketcap_usd": 428680, + "marketcap_usd": 474257, "name": "Pesetacoin", "shortcut": "PTC", "t1_enabled": "yes", @@ -548,12 +548,30 @@ "type": "coin", "wallet": [] }, + "bitcoin:QTUM": { + "links": { + "Github": "https://github.com/qtumproject/qtum", + "Homepage": "https://qtum.org" + }, + "marketcap_usd": 196331495, + "name": "Qtum", + "shortcut": "QTUM", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "coin", + "wallet": [ + { + "name": "Qtum-Electrum", + "url": "https://github.com/qtumproject/qtum-electrum" + } + ] + }, "bitcoin:RVN": { "links": { "Github": "https://github.com/RavenProject/Ravencoin", "Homepage": "https://ravencoin.org" }, - "marketcap_usd": 78861883, + "marketcap_usd": 91215383, "name": "Ravencoin", "shortcut": "RVN", "t1_enabled": "yes", @@ -566,7 +584,7 @@ "Github": "https://github.com/SmartCash/Core-Smart", "Homepage": "https://smartcash.cc" }, - "marketcap_usd": 16228525, + "marketcap_usd": 15847613, "name": "SmartCash", "shortcut": "SMART", "t1_enabled": "yes", @@ -584,7 +602,7 @@ "Github": "https://github.com/viacoin", "Homepage": "https://viacoin.org" }, - "marketcap_usd": 8364171, + "marketcap_usd": 8667952, "name": "Viacoin", "shortcut": "VIA", "t1_enabled": "yes", @@ -602,7 +620,7 @@ "Github": "https://github.com/vertcoin-project/vertcoin-core", "Homepage": "https://vertcoin.org" }, - "marketcap_usd": 18858598, + "marketcap_usd": 20347974, "name": "Vertcoin", "shortcut": "VTC", "t1_enabled": "yes", @@ -620,7 +638,7 @@ "Github": "https://github.com/myriadcoin/myriadcoin", "Homepage": "https://www.myriadcoin.org" }, - "marketcap_usd": 2118062, + "marketcap_usd": 2153571, "name": "Myriad", "shortcut": "XMY", "t1_enabled": "yes", @@ -633,7 +651,7 @@ "Github": "https://github.com/primecoin/primecoin", "Homepage": "https://primecoin.io" }, - "marketcap_usd": 3603098, + "marketcap_usd": 3854326, "name": "Primecoin", "shortcut": "XPM", "t1_enabled": "yes", @@ -646,7 +664,7 @@ "Github": "https://github.com/X9Developers/XSN", "Homepage": "https://stakenet.io" }, - "marketcap_usd": 7809141, + "marketcap_usd": 8810839, "name": "Stakenet", "shortcut": "XSN", "t1_enabled": "yes", @@ -659,7 +677,7 @@ "Github": "https://github.com/zcoinofficial/zcoin", "Homepage": "https://zcoin.io" }, - "marketcap_usd": 39370736, + "marketcap_usd": 40040213, "name": "Zcoin", "shortcut": "XZC", "t1_enabled": "yes", @@ -681,7 +699,7 @@ "Github": "https://github.com/ZclassicCommunity", "Homepage": "https://zclassic.org" }, - "marketcap_usd": 6151644, + "marketcap_usd": 6365224, "name": "ZClassic", "shortcut": "ZCL", "t1_enabled": "yes", @@ -694,7 +712,7 @@ "Github": "https://github.com/zcash/zcash", "Homepage": "https://z.cash" }, - "marketcap_usd": 305690660, + "marketcap_usd": 311226146, "name": "Zcash", "shortcut": "ZEC", "t1_enabled": "yes", @@ -712,7 +730,7 @@ "Github": "https://github.com/ZencashOfficial/zen", "Homepage": "https://zencash.com" }, - "marketcap_usd": 32457048, + "marketcap_usd": 32674275, "name": "Zencash", "shortcut": "ZEN", "t1_enabled": "no", @@ -832,7 +850,7 @@ "Github": "https://github.com/HurifyPlatform", "Homepage": "https://hurify.co/" }, - "marketcap_usd": 96167, + "marketcap_usd": 107599, "name": "$Hurify Token", "network": "eth", "shortcut": "$HUR", @@ -886,7 +904,7 @@ "links": { "Homepage": "https://0xbitcoin.org/" }, - "marketcap_usd": 892370, + "marketcap_usd": 786708, "name": "0xBitcoin", "network": "eth", "shortcut": "0xBTC", @@ -941,7 +959,7 @@ "links": { "Homepage": "https://firstblood.io" }, - "marketcap_usd": 3215152, + "marketcap_usd": 4321927, "name": "FirstBlood", "network": "eth", "shortcut": "1ST", @@ -968,7 +986,7 @@ "links": { "Homepage": "https://ico.1worldonline.com" }, - "marketcap_usd": 331047, + "marketcap_usd": 301471, "name": "1World", "network": "eth", "shortcut": "1WO", @@ -1077,7 +1095,7 @@ "links": { "Homepage": "https://www.arcblock.io" }, - "marketcap_usd": 11457477, + "marketcap_usd": 10480313, "name": "ArcBlock Token", "network": "eth", "shortcut": "ABT", @@ -1105,7 +1123,7 @@ "Github": "https://github.com/theabyssportal", "Homepage": "https://www.theabyss.com" }, - "marketcap_usd": 1481161, + "marketcap_usd": 2142390, "name": "The Abyss", "network": "eth", "shortcut": "ABYSS", @@ -1159,7 +1177,7 @@ "links": { "Homepage": "https://tokenstars.com/en/ace" }, - "marketcap_usd": 138751, + "marketcap_usd": 149512, "name": "ACE (TokenStars)", "network": "eth", "shortcut": "ACE", @@ -1186,7 +1204,7 @@ "links": { "Homepage": "https://adbank.network" }, - "marketcap_usd": 1278776, + "marketcap_usd": 1867807, "name": "adbank", "network": "eth", "shortcut": "ADB", @@ -1213,7 +1231,7 @@ "links": { "Homepage": "https://adhive.tv" }, - "marketcap_usd": 279672, + "marketcap_usd": 284980, "name": "AdHive Token", "network": "eth", "shortcut": "ADH", @@ -1241,7 +1259,7 @@ "Github": "https://github.com/aditus", "Homepage": "https://aditus.net" }, - "marketcap_usd": 220032, + "marketcap_usd": 220986, "name": "Aditus", "network": "eth", "shortcut": "ADI", @@ -1269,7 +1287,7 @@ "Github": "https://github.com/adelecosystem", "Homepage": "https://adel.io" }, - "marketcap_usd": 243744, + "marketcap_usd": 247107, "name": "Adelphoi", "network": "eth", "shortcut": "ADL", @@ -1296,7 +1314,7 @@ "links": { "Homepage": "https://adshares.net" }, - "marketcap_usd": 528350, + "marketcap_usd": 0, "name": "AdShares", "network": "eth", "shortcut": "ADST", @@ -1324,7 +1342,7 @@ "Github": "https://github.com/adchain", "Homepage": "https://adtoken.com" }, - "marketcap_usd": 3742647, + "marketcap_usd": 3801228, "name": "AdToken", "network": "eth", "shortcut": "ADT", @@ -1352,7 +1370,7 @@ "Github": "https://github.com/AdExBlockchain", "Homepage": "https://www.adex.network" }, - "marketcap_usd": 9161905, + "marketcap_usd": 9761006, "name": "AdEx Network", "network": "eth", "shortcut": "ADX", @@ -1436,7 +1454,7 @@ "Github": "https://github.com/singnet/singnet", "Homepage": "https://singularitynet.io" }, - "marketcap_usd": 24624469, + "marketcap_usd": 24840313, "name": "SingularityNET", "network": "eth", "shortcut": "AGI", @@ -1463,7 +1481,7 @@ "links": { "Homepage": "https://polynetwork.org" }, - "marketcap_usd": 425, + "marketcap_usd": 360, "name": "POLY AI", "network": "eth", "shortcut": "AI", @@ -1490,7 +1508,7 @@ "links": { "Homepage": "https://www.aidcoin.co" }, - "marketcap_usd": 1971845, + "marketcap_usd": 2049203, "name": "AidCoin", "network": "eth", "shortcut": "AID", @@ -1573,7 +1591,7 @@ "Github": "https://github.com/AigangNetwork", "Homepage": "https://aigang.network/" }, - "marketcap_usd": 142609, + "marketcap_usd": 161598, "name": "Aigang", "network": "eth", "shortcut": "AIX", @@ -1655,7 +1673,7 @@ "links": { "Homepage": "http://ailink.in" }, - "marketcap_usd": 168599, + "marketcap_usd": 168768, "name": "AiLink Token", "network": "eth", "shortcut": "ALI", @@ -1683,7 +1701,7 @@ "Github": "https://github.com/AlisProject", "Homepage": "https://alismedia.jp" }, - "marketcap_usd": 697613, + "marketcap_usd": 692193, "name": "ALIS Token", "network": "eth", "shortcut": "ALIS", @@ -1737,7 +1755,7 @@ "links": { "Homepage": "https://alax.io" }, - "marketcap_usd": 1656465, + "marketcap_usd": 1903306, "name": "ALAX", "network": "eth", "shortcut": "ALX", @@ -1765,7 +1783,7 @@ "Github": "https://github.com/ambrosus", "Homepage": "https://ambrosus.com/index.html" }, - "marketcap_usd": 7860787, + "marketcap_usd": 8465970, "name": "Amber Token", "network": "eth", "shortcut": "AMB", @@ -1821,7 +1839,7 @@ "Github": "https://github.com/amlt-by-coinfirm", "Homepage": "https://amlt.coinfirm.io/" }, - "marketcap_usd": 3337061, + "marketcap_usd": 3435071, "name": "AMLT", "network": "eth", "shortcut": "AMLT", @@ -1849,7 +1867,7 @@ "Github": "https://github.com/amontech", "Homepage": "https://amon.tech" }, - "marketcap_usd": 256975, + "marketcap_usd": 226914, "name": "Amon", "network": "eth", "shortcut": "AMN", @@ -1877,7 +1895,7 @@ "Github": "https://github.com/AMO-Project/", "Homepage": "https://amo.foundation" }, - "marketcap_usd": 4742374, + "marketcap_usd": 7409771, "name": "AMO Coin", "network": "eth", "shortcut": "AMO", @@ -1931,7 +1949,7 @@ "links": { "Homepage": "https://aragon.org" }, - "marketcap_usd": 12515149, + "marketcap_usd": 13322497, "name": "Aragon", "network": "eth", "shortcut": "ANT", @@ -1958,7 +1976,7 @@ "links": { "Homepage": "https://www.aurorachain.io" }, - "marketcap_usd": 63276573, + "marketcap_usd": 113336039, "name": "Aurora", "network": "eth", "shortcut": "AOA", @@ -1986,7 +2004,7 @@ "Github": "https://github.com/Oxchild/crowdsale", "Homepage": "https://apisplatform.io" }, - "marketcap_usd": 11735031, + "marketcap_usd": 10181747, "name": "APIS", "network": "eth", "shortcut": "APIS", @@ -2014,7 +2032,7 @@ "Github": "https://github.com/Aptoide/AppCoins-ethereumj", "Homepage": "https://appcoins.io" }, - "marketcap_usd": 7123810, + "marketcap_usd": 9169632, "name": "AppCoins", "network": "eth", "shortcut": "APPC", @@ -2096,7 +2114,7 @@ "links": { "Homepage": "https://www.arbitragect.com" }, - "marketcap_usd": 70866, + "marketcap_usd": 72475, "name": "ArbitrageCT", "network": "eth", "shortcut": "ARCT", @@ -2151,7 +2169,7 @@ "links": { "Homepage": "https://aeron.aero" }, - "marketcap_usd": 5617607, + "marketcap_usd": 5734712, "name": "Aeron", "network": "eth", "shortcut": "ARN", @@ -2178,7 +2196,7 @@ "links": { "Homepage": "http://www.maecenas.co" }, - "marketcap_usd": 780389, + "marketcap_usd": 1003823, "name": "Maecenas", "network": "eth", "shortcut": "ART", @@ -2261,7 +2279,7 @@ "links": { "Homepage": "https://www.blockarray.com" }, - "marketcap_usd": 843558, + "marketcap_usd": 851307, "name": "Block Array", "network": "eth", "shortcut": "ARY", @@ -2288,7 +2306,7 @@ "links": { "Homepage": "https://airswap.io" }, - "marketcap_usd": 5392900, + "marketcap_usd": 6019175, "name": "Airswap", "network": "eth", "shortcut": "AST", @@ -2315,7 +2333,7 @@ "links": { "Homepage": "https://atlant.io" }, - "marketcap_usd": 1464569, + "marketcap_usd": 1273847, "name": "ATLANT", "network": "eth", "shortcut": "ATL", @@ -2342,7 +2360,7 @@ "links": { "Homepage": "https://www.atmchain.io" }, - "marketcap_usd": 380094, + "marketcap_usd": 233307, "name": "ATMChain", "network": "eth", "shortcut": "ATM", @@ -2370,7 +2388,7 @@ "Github": "https://github.com/atonomi", "Homepage": "https://atonomi.io" }, - "marketcap_usd": 418344, + "marketcap_usd": 504114, "name": "Atonomi", "network": "eth", "shortcut": "ATMI", @@ -2452,7 +2470,7 @@ "links": { "Homepage": "https://www.aston.company" }, - "marketcap_usd": 11040185, + "marketcap_usd": 8589626, "name": "Aston", "network": "eth", "shortcut": "ATX", @@ -2479,7 +2497,7 @@ "links": { "Homepage": "https://auctus.org" }, - "marketcap_usd": 402817, + "marketcap_usd": 354485, "name": "Auctus", "network": "eth", "shortcut": "AUC", @@ -2506,7 +2524,7 @@ "links": { "Homepage": "https://auroradao.com" }, - "marketcap_usd": 4250424, + "marketcap_usd": 4480925, "name": "Aurora DAO", "network": "eth", "shortcut": "AURA", @@ -2533,7 +2551,7 @@ "links": { "Homepage": "https://cubeint.io" }, - "marketcap_usd": 16036034, + "marketcap_usd": 17255872, "name": "Cube", "network": "eth", "shortcut": "AUTO", @@ -2588,7 +2606,7 @@ "links": { "Homepage": "https://aventus.io" }, - "marketcap_usd": 1103886, + "marketcap_usd": 966310, "name": "Aventus", "network": "eth", "shortcut": "AVT", @@ -2671,7 +2689,7 @@ "Github": "https://www.github.com/axpire", "Homepage": "https://www.axpire.io" }, - "marketcap_usd": 1398281, + "marketcap_usd": 1627321, "name": "aXpire", "network": "eth", "shortcut": "AXPR", @@ -2698,7 +2716,7 @@ "links": { "Homepage": "https://www.b2bx.exchange" }, - "marketcap_usd": 3305335, + "marketcap_usd": 3333567, "name": "B2BX", "network": "eth", "shortcut": "B2BX", @@ -2725,7 +2743,7 @@ "links": { "Homepage": "https://www.banca.world" }, - "marketcap_usd": 1374877, + "marketcap_usd": 1427465, "name": "Banca", "network": "eth", "shortcut": "BANCA", @@ -2779,7 +2797,7 @@ "links": { "Homepage": "https://basicattentiontoken.org" }, - "marketcap_usd": 216210708, + "marketcap_usd": 262154342, "name": "Basic Attention Token", "network": "eth", "shortcut": "BAT", @@ -2806,7 +2824,7 @@ "links": { "Homepage": "https://getbabb.com" }, - "marketcap_usd": 4836148, + "marketcap_usd": 5188190, "name": "BABB", "network": "eth", "shortcut": "BAX", @@ -2833,7 +2851,7 @@ "links": { "Homepage": "http://bbcoin.tradove.com" }, - "marketcap_usd": 1134992, + "marketcap_usd": 1189186, "name": "TraDove B2BCoin", "network": "eth", "shortcut": "BBC", @@ -2861,7 +2879,7 @@ "Github": "https://github.com/brickblock-io", "Homepage": "https://www.brickblock.io/" }, - "marketcap_usd": 1287744, + "marketcap_usd": 1170479, "name": "BRICKBLOCK TOKEN", "network": "eth", "shortcut": "BBK", @@ -2888,7 +2906,7 @@ "links": { "Homepage": "http://www.banyanbbt.org" }, - "marketcap_usd": 568776, + "marketcap_usd": 880255, "name": "Banyan Network", "network": "eth", "shortcut": "BBN", @@ -2915,7 +2933,7 @@ "links": { "Homepage": "https://bigbom.com" }, - "marketcap_usd": 312954, + "marketcap_usd": 333318, "name": "Bigbom", "network": "eth", "shortcut": "BBO", @@ -2942,7 +2960,7 @@ "links": { "Homepage": "https://block-chain.com" }, - "marketcap_usd": 43445, + "marketcap_usd": 34932, "name": "Block-Chain.com", "network": "eth", "shortcut": "BC", @@ -3026,7 +3044,7 @@ "Github": "https://github.com/VinceBCD/BCDiploma", "Homepage": "https://www.bcdiploma.com" }, - "marketcap_usd": 313150, + "marketcap_usd": 193468, "name": "Blockchain Certified Data Token", "network": "eth", "shortcut": "BCDT", @@ -3081,7 +3099,7 @@ "Github": "https://github.com/blockmason", "Homepage": "https://blockmason.io" }, - "marketcap_usd": 5412062, + "marketcap_usd": 5668155, "name": "BlockMason Credit Protocol Token", "network": "eth", "shortcut": "BCPT", @@ -3109,7 +3127,7 @@ "Github": "https://github.com/bitcv", "Homepage": "https://bitcv.one/" }, - "marketcap_usd": 18485335, + "marketcap_usd": 17337918, "name": "BitCapitalVendor Token", "network": "eth", "shortcut": "BCV", @@ -3137,7 +3155,7 @@ "Github": "https://github.com/bitdegree", "Homepage": "https://bitdegree.org" }, - "marketcap_usd": 872104, + "marketcap_usd": 871516, "name": "BitDegree Token", "network": "eth", "shortcut": "BDG", @@ -3165,7 +3183,7 @@ "Github": "https://github.com/thebeetoken", "Homepage": "https://www.beetoken.com" }, - "marketcap_usd": 707793, + "marketcap_usd": 686824, "name": "Bee Token", "network": "eth", "shortcut": "BEE", @@ -3193,7 +3211,7 @@ "Github": "https://github.com/Rentberry", "Homepage": "https://rentberry.com" }, - "marketcap_usd": 527695, + "marketcap_usd": 597142, "name": "Berry", "network": "eth", "shortcut": "BERRY", @@ -3221,7 +3239,7 @@ "Github": "https://github.com/daocasino", "Homepage": "https://dao.casino" }, - "marketcap_usd": 1809498, + "marketcap_usd": 1451624, "name": "DAO.Casino", "network": "eth", "shortcut": "BET", @@ -3249,7 +3267,7 @@ "Github": "https://github.com/bethereumproject", "Homepage": "https://www.bethereum.com/" }, - "marketcap_usd": 472881, + "marketcap_usd": 482376, "name": "Bethereum", "network": "eth", "shortcut": "BETHER", @@ -3277,7 +3295,7 @@ "Github": "https://github.com/betterbetting", "Homepage": "https://www.betterbetting.org" }, - "marketcap_usd": 514905, + "marketcap_usd": 531595, "name": "BetterBetting", "network": "eth", "shortcut": "BETR", @@ -3304,7 +3322,7 @@ "links": { "Homepage": "https://bezop.io" }, - "marketcap_usd": 903374, + "marketcap_usd": 1410464, "name": "Bezop", "network": "eth", "shortcut": "BEZ", @@ -3331,7 +3349,7 @@ "links": { "Homepage": "https://bhpcash.io/bhpc/index.html" }, - "marketcap_usd": 26924679, + "marketcap_usd": 0, "name": "BHPCash", "network": "eth", "shortcut": "BHPC", @@ -3440,7 +3458,7 @@ "links": { "Homepage": "https://www.bibox.com" }, - "marketcap_usd": 20303721, + "marketcap_usd": 24277299, "name": "Bibox Token", "network": "eth", "shortcut": "BIX", @@ -3522,7 +3540,7 @@ "Github": "https://github.com/BankEx", "Homepage": "https://bankex.com/" }, - "marketcap_usd": 1294004, + "marketcap_usd": 1300444, "name": "BANKEX", "network": "eth", "shortcut": "BKX", @@ -3577,7 +3595,7 @@ "Github": "https://github.com/hellobloom", "Homepage": "https://hellobloom.io" }, - "marketcap_usd": 1694564, + "marketcap_usd": 1833298, "name": "Bloom", "network": "eth", "shortcut": "BLT", @@ -3605,7 +3623,7 @@ "Github": "https://github.com/BlueCrypto", "Homepage": "https://blueprotocol.com/" }, - "marketcap_usd": 907537, + "marketcap_usd": 867547, "name": "Ethereum Blue", "network": "eth", "shortcut": "BLUE", @@ -3687,7 +3705,7 @@ "links": { "Homepage": "https://bluzelle.com" }, - "marketcap_usd": 10988357, + "marketcap_usd": 11175870, "name": "Bluzelle", "network": "eth", "shortcut": "BLZ", @@ -3715,7 +3733,7 @@ "Github": "https://github.com/blackmoonfg", "Homepage": "https://blackmooncrypto.com" }, - "marketcap_usd": 4055796, + "marketcap_usd": 4530673, "name": "Blackmoon Crypto BMC Token", "network": "eth", "shortcut": "BMC", @@ -3770,7 +3788,7 @@ "links": { "Homepage": "https://www.bitmart.com" }, - "marketcap_usd": 1517202, + "marketcap_usd": 1564857, "name": "BitMart Token", "network": "eth", "shortcut": "BMX", @@ -3797,7 +3815,7 @@ "links": { "Homepage": "https://www.binance.com" }, - "marketcap_usd": 1897632595, + "marketcap_usd": 2055629817, "name": "Binance Coin", "network": "eth", "shortcut": "BNB", @@ -3824,7 +3842,7 @@ "links": { "Homepage": "https://www.brokerneko.com" }, - "marketcap_usd": 12495, + "marketcap_usd": 97496, "name": "BrokerNekoNetwork", "network": "eth", "shortcut": "BNN", @@ -3852,7 +3870,7 @@ "Github": "https://github.com/bancorprotocol", "Homepage": "https://www.bancor.network/discover" }, - "marketcap_usd": 33233945, + "marketcap_usd": 46494356, "name": "Bancor", "network": "eth", "shortcut": "BNT", @@ -3879,7 +3897,7 @@ "links": { "Homepage": "https://bounty0x.io" }, - "marketcap_usd": 891785, + "marketcap_usd": 751009, "name": "Bounty0x Token", "network": "eth", "shortcut": "BNTY", @@ -3906,7 +3924,7 @@ "links": { "Homepage": "https://bobsrepair.com" }, - "marketcap_usd": 212936, + "marketcap_usd": 202850, "name": "Bob's repair", "network": "eth", "shortcut": "BOB", @@ -3933,7 +3951,7 @@ "links": { "Homepage": "https://bonpay.com" }, - "marketcap_usd": 189528, + "marketcap_usd": 185456, "name": "Bonpay", "network": "eth", "shortcut": "BON", @@ -4014,7 +4032,7 @@ "links": { "Homepage": "https://www.bouts.pro" }, - "marketcap_usd": 222480, + "marketcap_usd": 249267, "name": "BoutsPro", "network": "eth", "shortcut": "BOUTS", @@ -4041,7 +4059,7 @@ "links": { "Homepage": "https://www.goblockparty.com" }, - "marketcap_usd": 1571042, + "marketcap_usd": 1640918, "name": "BOXX Token [Blockparty]", "network": "eth", "shortcut": "BOXX", @@ -4069,7 +4087,7 @@ "Github": "https://github.com/Blockport/tokensale", "Homepage": "https://blockport.io" }, - "marketcap_usd": 6844083, + "marketcap_usd": 6406812, "name": "Blockport Token", "network": "eth", "shortcut": "BPT", @@ -4096,7 +4114,7 @@ "links": { "Homepage": "https://www.bitquence.com" }, - "marketcap_usd": 14340413, + "marketcap_usd": 16008390, "name": "Bitquence", "network": "eth", "shortcut": "BQX", @@ -4123,7 +4141,7 @@ "links": { "Homepage": "http://bro-consortium.io" }, - "marketcap_usd": 12463, + "marketcap_usd": 12210, "name": "BROTHER", "network": "eth", "shortcut": "BRAT", @@ -4151,7 +4169,7 @@ "Github": "https://github.com/breadwallet", "Homepage": "https://token.breadapp.com/en" }, - "marketcap_usd": 19692339, + "marketcap_usd": 20457112, "name": "Bread", "network": "eth", "shortcut": "BRD", @@ -4287,7 +4305,7 @@ "links": { "Homepage": "http://btclite.org" }, - "marketcap_usd": 133285, + "marketcap_usd": 128479, "name": "BTC Lite", "network": "eth", "shortcut": "BTCL", @@ -4425,7 +4443,7 @@ "Github": "https://github.com/bitcoin-token", "Homepage": "https://btk.community" }, - "marketcap_usd": 186192, + "marketcap_usd": 151645, "name": "Bitcoin Token", "network": "eth", "shortcut": "BTK", @@ -4480,7 +4498,7 @@ "links": { "Homepage": "https://www.bottos.org" }, - "marketcap_usd": 3891477, + "marketcap_usd": 3896343, "name": "Bottos", "network": "eth", "shortcut": "BTO", @@ -4534,7 +4552,7 @@ "links": { "Homepage": "https://bitether.org" }, - "marketcap_usd": 135005, + "marketcap_usd": 98055, "name": "Bitether", "network": "eth", "shortcut": "BTR", @@ -4561,7 +4579,7 @@ "links": { "Homepage": "https://biotron.io" }, - "marketcap_usd": 125287, + "marketcap_usd": 83145, "name": "Biotron", "network": "eth", "shortcut": "BTRN", @@ -4616,7 +4634,7 @@ "links": { "Homepage": "https://blocktrade.com/" }, - "marketcap_usd": 1368022, + "marketcap_usd": 1285192, "name": "Blocktrade.com", "network": "eth", "shortcut": "BTTX", @@ -4644,7 +4662,7 @@ "Github": "https://github.com/btuprotocol", "Homepage": "https://btu-protocol.com" }, - "marketcap_usd": 3175500, + "marketcap_usd": 3181349, "name": "BTU Protocol", "network": "eth", "shortcut": "BTU", @@ -4698,7 +4716,7 @@ "links": { "Homepage": "https://www.bluewhale.foundation" }, - "marketcap_usd": 2907988, + "marketcap_usd": 2661816, "name": "Blue Whale Token", "network": "eth", "shortcut": "BWX", @@ -4725,7 +4743,7 @@ "links": { "Homepage": "https://www.bitz.com" }, - "marketcap_usd": 3488799, + "marketcap_usd": 3482190, "name": "Bit-Z Token", "network": "eth", "shortcut": "BZ", @@ -4752,7 +4770,7 @@ "links": { "Homepage": "https://bezant.io" }, - "marketcap_usd": 13503798, + "marketcap_usd": 15411348, "name": "Bezant", "network": "eth", "shortcut": "BZNT", @@ -4780,7 +4798,7 @@ "Github": "https://github.com/cryptotwenty", "Homepage": "https://crypto20.com" }, - "marketcap_usd": 15814372, + "marketcap_usd": 15864272, "name": "Crypto20's Token", "network": "eth", "shortcut": "C20", @@ -4807,7 +4825,7 @@ "links": { "Homepage": "https://www.carboneum.io" }, - "marketcap_usd": 449747, + "marketcap_usd": 445723, "name": "Carboneum", "network": "eth", "shortcut": "C8", @@ -4834,7 +4852,7 @@ "links": { "Homepage": "https://change-bank.com" }, - "marketcap_usd": 3090954, + "marketcap_usd": 2966277, "name": "Change Bank", "network": "eth", "shortcut": "CAG", @@ -4861,7 +4879,7 @@ "links": { "Homepage": "https://canya.io" }, - "marketcap_usd": 811696, + "marketcap_usd": 811541, "name": "CanYaCoin", "network": "eth", "shortcut": "CAN", @@ -4888,7 +4906,7 @@ "links": { "Homepage": "https://cappasity.com/tech/" }, - "marketcap_usd": 1434579, + "marketcap_usd": 1389713, "name": "Cappasity", "network": "eth", "shortcut": "CAPP", @@ -4996,7 +5014,7 @@ "links": { "Homepage": "https://cashaa.com" }, - "marketcap_usd": 3942723, + "marketcap_usd": 4600835, "name": "Cashaa", "network": "eth", "shortcut": "CAS", @@ -5023,7 +5041,7 @@ "links": { "Homepage": "https://www.bitclave.com" }, - "marketcap_usd": 312456, + "marketcap_usd": 326457, "name": "BitClave", "network": "eth", "shortcut": "CAT (BitClave)", @@ -5050,7 +5068,7 @@ "links": { "Homepage": "https://blockcat.io" }, - "marketcap_usd": 503788, + "marketcap_usd": 329923, "name": "BlockCAT", "network": "eth", "shortcut": "CAT (BlockCAT)", @@ -5104,7 +5122,7 @@ "links": { "Homepage": "https://coin.cashbet.com" }, - "marketcap_usd": 939550, + "marketcap_usd": 946167, "name": "CashBet Coin", "network": "eth", "shortcut": "CBC", @@ -5159,7 +5177,7 @@ "links": { "Homepage": "https://www.commerceblock.com" }, - "marketcap_usd": 2786118, + "marketcap_usd": 2664057, "name": "CommerceBlock", "network": "eth", "shortcut": "CBT", @@ -5267,7 +5285,7 @@ "links": { "Homepage": "http://clippercoin.com" }, - "marketcap_usd": 3878981, + "marketcap_usd": 3661374, "name": "Clipper Coin", "network": "eth", "shortcut": "CCCX", @@ -5322,7 +5340,7 @@ "links": { "Homepage": "https://ccore.io" }, - "marketcap_usd": 34397, + "marketcap_usd": 91897, "name": "Ccore", "network": "eth", "shortcut": "CCO", @@ -5377,7 +5395,7 @@ "links": { "Homepage": "http://crystal-clear.io" }, - "marketcap_usd": 32970, + "marketcap_usd": 31743, "name": "Crystal Clear Token", "network": "eth", "shortcut": "CCT", @@ -5432,7 +5450,7 @@ "links": { "Homepage": "https://www.coindash.io" }, - "marketcap_usd": 5404714, + "marketcap_usd": 5754254, "name": "CoinDash", "network": "eth", "shortcut": "CDT", @@ -5459,7 +5477,7 @@ "links": { "Homepage": "https://www.ceek.com/" }, - "marketcap_usd": 1868929, + "marketcap_usd": 2014031, "name": "CEEK VR Token", "network": "eth", "shortcut": "CEEK", @@ -5486,7 +5504,7 @@ "links": { "Homepage": "https://www.centrality.ai" }, - "marketcap_usd": 19726905, + "marketcap_usd": 16509087, "name": "Centrality", "network": "eth", "shortcut": "CENNZ", @@ -5568,7 +5586,7 @@ "links": { "Homepage": "https://cofound.it/" }, - "marketcap_usd": 5214429, + "marketcap_usd": 0, "name": "Cofound.it", "network": "eth", "shortcut": "CFI", @@ -5623,7 +5641,7 @@ "links": { "Homepage": "https://coinpoker.com" }, - "marketcap_usd": 621644, + "marketcap_usd": 599590, "name": "CoinPoker", "network": "eth", "shortcut": "CHP", @@ -5650,7 +5668,7 @@ "links": { "Homepage": "https://swissborg.com" }, - "marketcap_usd": 4895312, + "marketcap_usd": 5207472, "name": "SwissBorg", "network": "eth", "shortcut": "CHSB", @@ -5677,7 +5695,7 @@ "links": { "Homepage": "https://weown.com" }, - "marketcap_usd": 16626370, + "marketcap_usd": 15454120, "name": "Own", "network": "eth", "shortcut": "CHX", @@ -5732,7 +5750,7 @@ "links": { "Homepage": "https://www.connectjob.io" }, - "marketcap_usd": 17451, + "marketcap_usd": 22277, "name": "ConnectJob", "network": "eth", "shortcut": "CJT", @@ -5786,7 +5804,7 @@ "links": { "Homepage": "https://www.coinlancer.io" }, - "marketcap_usd": 279054, + "marketcap_usd": 279850, "name": "Coinlancer", "network": "eth", "shortcut": "CL", @@ -5814,7 +5832,7 @@ "Github": "https://github.com/Cloudbric-Project", "Homepage": "https://www.cloudbric.io/" }, - "marketcap_usd": 1461517, + "marketcap_usd": 1736199, "name": "Cloudbric", "network": "eth", "shortcut": "CLB", @@ -5870,7 +5888,7 @@ "Github": "https://github.com/colucom/CLN-solidity", "Homepage": "https://cln.network" }, - "marketcap_usd": 690504, + "marketcap_usd": 935135, "name": "ColuLocalNetwork", "network": "eth", "shortcut": "CLN", @@ -5978,7 +5996,7 @@ "links": { "Homepage": "https://crowdmachine.com" }, - "marketcap_usd": 842339, + "marketcap_usd": 724059, "name": "Crowd Machine Compute Token", "network": "eth", "shortcut": "CMCT", @@ -6060,7 +6078,7 @@ "links": { "Homepage": "https://cindicator.com" }, - "marketcap_usd": 18737701, + "marketcap_usd": 19642110, "name": "Cindicator", "network": "eth", "shortcut": "CND", @@ -6087,7 +6105,7 @@ "links": { "Homepage": "https://cnntoken.io" }, - "marketcap_usd": 4912238, + "marketcap_usd": 5115703, "name": "Content Neutrality Network", "network": "eth", "shortcut": "CNN", @@ -6170,7 +6188,7 @@ "Github": "https://github.com/cobinhood", "Homepage": "https://cobinhood.com" }, - "marketcap_usd": 4073790, + "marketcap_usd": 4223519, "name": "Cobinhood Token", "network": "eth", "shortcut": "COB", @@ -6198,7 +6216,7 @@ "Github": "https://github.com/coinfi", "Homepage": "https://www.coinfi.com" }, - "marketcap_usd": 547602, + "marketcap_usd": 581590, "name": "CoinFi Token", "network": "eth", "shortcut": "COFI", @@ -6280,7 +6298,7 @@ "links": { "Homepage": "https://cosmochain.io" }, - "marketcap_usd": 16084075, + "marketcap_usd": 36728600, "name": "Cosmo Coin", "network": "eth", "shortcut": "COSM", @@ -6307,7 +6325,7 @@ "links": { "Homepage": "https://covesting.io/" }, - "marketcap_usd": 2060464, + "marketcap_usd": 1717394, "name": "Covesting", "network": "eth", "shortcut": "COV", @@ -6334,7 +6352,7 @@ "links": { "Homepage": "https://cryptopay.me" }, - "marketcap_usd": 1149306, + "marketcap_usd": 1379519, "name": "Cryptopay", "network": "eth", "shortcut": "CPAY", @@ -6390,7 +6408,7 @@ "Github": "https://github.com/Cpollo", "Homepage": "https://cpollo.info/" }, - "marketcap_usd": 141690, + "marketcap_usd": 143645, "name": "CPOLLO", "network": "eth", "shortcut": "CPLO", @@ -6418,7 +6436,7 @@ "Github": "https://github.com/aditus", "Homepage": "https://copytrack.io" }, - "marketcap_usd": 1113181, + "marketcap_usd": 1160328, "name": "COPYTRACK", "network": "eth", "shortcut": "CPY", @@ -6473,7 +6491,7 @@ "links": { "Homepage": "https://www.creditbit.org" }, - "marketcap_usd": 139546, + "marketcap_usd": 126123, "name": "Creditbit", "network": "eth", "shortcut": "CRB", @@ -6527,7 +6545,7 @@ "links": { "Homepage": "https://crycash.io" }, - "marketcap_usd": 201085, + "marketcap_usd": 176823, "name": "CryCash", "network": "eth", "shortcut": "CRC", @@ -6555,7 +6573,7 @@ "Github": "https://github.com/verifyas", "Homepage": "https://token.verify.as" }, - "marketcap_usd": 445892, + "marketcap_usd": 383146, "name": "Verify", "network": "eth", "shortcut": "CRED", @@ -6582,7 +6600,7 @@ "links": { "Homepage": "https://bitbounce.io" }, - "marketcap_usd": 17553888, + "marketcap_usd": 17300200, "name": "Credo / Bitbounce", "network": "eth", "shortcut": "CREDO", @@ -6664,7 +6682,7 @@ "links": { "Homepage": "https://crypterium.io" }, - "marketcap_usd": 13145671, + "marketcap_usd": 14301333, "name": "CrypteriumToken", "network": "eth", "shortcut": "CRPT", @@ -6718,7 +6736,7 @@ "links": { "Homepage": "https://credits.com/en" }, - "marketcap_usd": 9965689, + "marketcap_usd": 11112383, "name": "Credits", "network": "eth", "shortcut": "CS", @@ -6745,7 +6763,7 @@ "links": { "Homepage": "https://www.bitdice.me" }, - "marketcap_usd": 1884211, + "marketcap_usd": 2350163, "name": "BitDice", "network": "eth", "shortcut": "CSNO", @@ -6772,7 +6790,7 @@ "links": { "Homepage": "https://cryptosolartech.org" }, - "marketcap_usd": 302796, + "marketcap_usd": 279638, "name": "Cryptosolartech", "network": "eth", "shortcut": "CST", @@ -6937,7 +6955,7 @@ "links": { "Homepage": "http://www.cortexlabs.ai" }, - "marketcap_usd": 19107304, + "marketcap_usd": 22038800, "name": "Cortex", "network": "eth", "shortcut": "CTXC", @@ -6964,7 +6982,7 @@ "links": { "Homepage": "https://www.civic.com" }, - "marketcap_usd": 20545405, + "marketcap_usd": 22337812, "name": "Civic", "network": "eth", "shortcut": "CVC", @@ -6991,7 +7009,7 @@ "links": { "Homepage": "http://www.cybervein.org" }, - "marketcap_usd": 6536741, + "marketcap_usd": 6609903, "name": "CyberVein", "network": "eth", "shortcut": "CVT", @@ -7047,7 +7065,7 @@ "Github": "https://github.com/cargoxio", "Homepage": "https://cargox.io" }, - "marketcap_usd": 1778600, + "marketcap_usd": 1466592, "name": "CargoX", "network": "eth", "shortcut": "CXO", @@ -7074,7 +7092,7 @@ "links": { "Homepage": "https://cyberfmradio.com" }, - "marketcap_usd": 93316, + "marketcap_usd": 147659, "name": "CyberFM", "network": "eth", "shortcut": "CYFM", @@ -7101,7 +7119,7 @@ "links": { "Homepage": "https://cybermusic.io" }, - "marketcap_usd": 37120, + "marketcap_usd": 36785, "name": "CyberMusic", "network": "eth", "shortcut": "CYMT", @@ -7128,7 +7146,7 @@ "links": { "Homepage": "http://www.canonchain.com" }, - "marketcap_usd": 5997082, + "marketcap_usd": 5858513, "name": "CanonChain", "network": "eth", "shortcut": "CZR", @@ -7209,7 +7227,7 @@ "links": { "Homepage": "https://dacsee.io/#" }, - "marketcap_usd": 2324098, + "marketcap_usd": 2308283, "name": "DACSEE", "network": "eth", "shortcut": "DACS", @@ -7236,7 +7254,7 @@ "links": { "Homepage": "https://dadi.cloud" }, - "marketcap_usd": 2729895, + "marketcap_usd": 2596795, "name": "DADI", "network": "eth", "shortcut": "DADI", @@ -7264,7 +7282,7 @@ "Github": "https://github.com/makerdao", "Homepage": "https://makerdao.com" }, - "marketcap_usd": 88786666, + "marketcap_usd": 88588820, "name": "Dai Stablecoin v1.0", "network": "eth", "shortcut": "DAI", @@ -7291,7 +7309,7 @@ "links": { "Homepage": "http://www.dalecoin.org" }, - "marketcap_usd": 18517, + "marketcap_usd": 6704, "name": "DaleCoin", "network": "eth", "shortcut": "DALC", @@ -7319,7 +7337,7 @@ "Github": "https://github.com/project-daneel", "Homepage": "https://daneel.io" }, - "marketcap_usd": 322857, + "marketcap_usd": 340084, "name": "DaneelToken", "network": "eth", "shortcut": "DAN", @@ -7373,7 +7391,7 @@ "links": { "Homepage": "https://datum.org" }, - "marketcap_usd": 860201, + "marketcap_usd": 973025, "name": "Datum Token", "network": "eth", "shortcut": "DAT", @@ -7401,7 +7419,7 @@ "Github": "https://github.com/streamr-dev", "Homepage": "https://www.streamr.com" }, - "marketcap_usd": 12651820, + "marketcap_usd": 13001102, "name": "Streamr DATAcoin", "network": "eth", "shortcut": "DATA", @@ -7456,7 +7474,7 @@ "links": { "Homepage": "https://www.datx.co" }, - "marketcap_usd": 734943, + "marketcap_usd": 1227838, "name": "DATx", "network": "eth", "shortcut": "DATX", @@ -7484,7 +7502,7 @@ "Github": "https://github.com/DAVFoundation", "Homepage": "https://dav.network/" }, - "marketcap_usd": 916031, + "marketcap_usd": 918631, "name": "DAV Token", "network": "eth", "shortcut": "DAV", @@ -7511,7 +7529,7 @@ "links": { "Homepage": "https://www.daex.io" }, - "marketcap_usd": 1805141, + "marketcap_usd": 1846210, "name": "DAEX", "network": "eth", "shortcut": "DAX", @@ -7566,7 +7584,7 @@ "Github": "https://github.com/chronologic", "Homepage": "https://chronologic.network" }, - "marketcap_usd": 111564, + "marketcap_usd": 124915, "name": "ChronoLogic DAY", "network": "eth", "shortcut": "DAY", @@ -7593,7 +7611,7 @@ "links": { "Homepage": "https://www.decent.bet" }, - "marketcap_usd": 6306450, + "marketcap_usd": 8900462, "name": "DecentBet", "network": "eth", "shortcut": "DBET", @@ -7649,7 +7667,7 @@ "Github": "https://github.com/DistributedBanking/DCC", "Homepage": "http://dcc.finance" }, - "marketcap_usd": 3276184, + "marketcap_usd": 3658398, "name": "Distributed Credit Chain", "network": "eth", "shortcut": "DCC", @@ -7704,7 +7722,7 @@ "Github": "https://github.com/Dentacoin", "Homepage": "https://dentacoin.com" }, - "marketcap_usd": 12104345, + "marketcap_usd": 11503563, "name": "Dentacoin", "network": "eth", "shortcut": "DCN", @@ -7759,7 +7777,7 @@ "links": { "Homepage": "https://debitum.network/" }, - "marketcap_usd": 761643, + "marketcap_usd": 780409, "name": "DEBITUM", "network": "eth", "shortcut": "DEB", @@ -7814,7 +7832,7 @@ "links": { "Homepage": "https://deltachain.tech" }, - "marketcap_usd": 18692, + "marketcap_usd": 23952, "name": "DeltaChain", "network": "eth", "shortcut": "DELTA", @@ -7841,7 +7859,7 @@ "links": { "Homepage": "https://www.dentwireless.com" }, - "marketcap_usd": 30829341, + "marketcap_usd": 31569282, "name": "DENT", "network": "eth", "shortcut": "DENT", @@ -7868,7 +7886,7 @@ "links": { "Homepage": "https://www.dew.one" }, - "marketcap_usd": 5467318, + "marketcap_usd": 5985344, "name": "DEW", "network": "eth", "shortcut": "DEW", @@ -7895,7 +7913,7 @@ "links": { "Homepage": "https://www.coinbit.co.kr/" }, - "marketcap_usd": 4770849, + "marketcap_usd": 3831106, "name": "DEX", "network": "eth", "shortcut": "DEX", @@ -7922,7 +7940,7 @@ "links": { "Homepage": "https://www.dgx.io" }, - "marketcap_usd": 30533547, + "marketcap_usd": 31687514, "name": "Digix DAO", "network": "eth", "shortcut": "DGD", @@ -7978,7 +7996,7 @@ "Github": "https://github.com/dragonglasscom", "Homepage": "https://dragonglass.com/" }, - "marketcap_usd": 95346, + "marketcap_usd": 77329, "name": "Dragonglass", "network": "eth", "shortcut": "DGS", @@ -8006,7 +8024,7 @@ "Github": "https://github.com/DigitexFutures", "Homepage": "https://digitexfutures.com/" }, - "marketcap_usd": 43626494, + "marketcap_usd": 60748587, "name": "DigitexFutures", "network": "eth", "shortcut": "DGTX", @@ -8034,7 +8052,7 @@ "Github": "https://github.com/DigixGlobal", "Homepage": "https://digix.global" }, - "marketcap_usd": 3929974, + "marketcap_usd": 3934362, "name": "Digix Gold Token", "network": "eth", "shortcut": "DGX", @@ -8089,7 +8107,7 @@ "links": { "Homepage": "https://etheroll.com" }, - "marketcap_usd": 2402370, + "marketcap_usd": 2235185, "name": "Etheroll", "network": "eth", "shortcut": "DICE", @@ -8116,7 +8134,7 @@ "links": { "Homepage": "https://inmediate.io" }, - "marketcap_usd": 414796, + "marketcap_usd": 447687, "name": "Digital Insurance Token", "network": "eth", "shortcut": "DIT", @@ -8170,7 +8188,7 @@ "links": { "Homepage": "https://www.agrello.org" }, - "marketcap_usd": 8607216, + "marketcap_usd": 8708899, "name": "Agrello", "network": "eth", "shortcut": "DLT", @@ -8198,7 +8216,7 @@ "Github": "https://github.com/suntechsoft/dmarket-smartcontract", "Homepage": "https://dmarket.com" }, - "marketcap_usd": 10069211, + "marketcap_usd": 9967255, "name": "DMarket Token", "network": "eth", "shortcut": "DMT", @@ -8225,7 +8243,7 @@ "links": { "Homepage": "https://www.encrypgen.com" }, - "marketcap_usd": 629427, + "marketcap_usd": 633207, "name": "EncrypGen", "network": "eth", "shortcut": "DNA", @@ -8253,7 +8271,7 @@ "Github": "https://github.com/district0x", "Homepage": "https://district0x.io" }, - "marketcap_usd": 7815892, + "marketcap_usd": 7988231, "name": "District0x Network Token", "network": "eth", "shortcut": "DNT", @@ -8308,7 +8326,7 @@ "links": { "Homepage": "https://dock.io" }, - "marketcap_usd": 4484993, + "marketcap_usd": 4462218, "name": "Dock", "network": "eth", "shortcut": "DOCK", @@ -8335,7 +8353,7 @@ "links": { "Homepage": "https://www.dorado.tech" }, - "marketcap_usd": 62240, + "marketcap_usd": 64382, "name": "Dorado", "network": "eth", "shortcut": "DOR", @@ -8362,7 +8380,7 @@ "links": { "Homepage": "https://dovu.io" }, - "marketcap_usd": 1725841, + "marketcap_usd": 1567495, "name": "Dovu", "network": "eth", "shortcut": "DOV", @@ -8444,7 +8462,7 @@ "Github": "https://github.com/dragonchain/dragonchain", "Homepage": "https://dragonchain.com" }, - "marketcap_usd": 21782613, + "marketcap_usd": 22483906, "name": "Dragon", "network": "eth", "shortcut": "DRGN", @@ -8471,7 +8489,7 @@ "links": { "Homepage": "https://www.dcorp.it" }, - "marketcap_usd": 348940, + "marketcap_usd": 154139, "name": "DCORP Utility", "network": "eth", "shortcut": "DRPU", @@ -8498,7 +8516,7 @@ "links": { "Homepage": "https://token.domraider.com" }, - "marketcap_usd": 1007810, + "marketcap_usd": 1087006, "name": "DomRaider", "network": "eth", "shortcut": "DRT", @@ -8637,7 +8655,7 @@ "Github": "https://github.com/dethertech", "Homepage": "https://dether.io" }, - "marketcap_usd": 645494, + "marketcap_usd": 558755, "name": "dether", "network": "eth", "shortcut": "DTH", @@ -8664,7 +8682,7 @@ "links": { "Homepage": "https://www.tokens.net" }, - "marketcap_usd": 20988202, + "marketcap_usd": 20758066, "name": "Dynamic Trading Rights", "network": "eth", "shortcut": "DTR", @@ -8691,7 +8709,7 @@ "links": { "Homepage": "https://datarius.io" }, - "marketcap_usd": 115871, + "marketcap_usd": 121421, "name": "Datarius Credit", "network": "eth", "shortcut": "DTRC", @@ -8746,7 +8764,7 @@ "links": { "Homepage": "https://datawallet.com" }, - "marketcap_usd": 718134, + "marketcap_usd": 677937, "name": "Datawallet", "network": "eth", "shortcut": "DXT", @@ -8828,7 +8846,7 @@ "links": { "Homepage": "https://earth-token.com" }, - "marketcap_usd": 26271, + "marketcap_usd": 24199, "name": "Earth Token", "network": "eth", "shortcut": "EARTH", @@ -8855,7 +8873,7 @@ "links": { "Homepage": "https://ebcoin.io" }, - "marketcap_usd": 2481467, + "marketcap_usd": 2623831, "name": "EBCoin", "network": "eth", "shortcut": "EBC", @@ -8883,7 +8901,7 @@ "Github": "https://github.com/eBTCCommunityTrustToken/eBTC", "Homepage": "https://ebitcoin.org" }, - "marketcap_usd": 347859, + "marketcap_usd": 350358, "name": "eBitcoin", "network": "eth", "shortcut": "EBTC", @@ -8964,7 +8982,7 @@ "links": { "Homepage": "https://omnitude.tech" }, - "marketcap_usd": 3605209, + "marketcap_usd": 3733431, "name": "Omnitude", "network": "eth", "shortcut": "ECOM", @@ -9018,7 +9036,7 @@ "links": { "Homepage": "https://edgeless.io" }, - "marketcap_usd": 16113503, + "marketcap_usd": 14599629, "name": "Edgeless", "network": "eth", "shortcut": "EDG", @@ -9045,7 +9063,7 @@ "links": { "Homepage": "https://eidoo.io" }, - "marketcap_usd": 22825494, + "marketcap_usd": 23700139, "name": "Eidoo", "network": "eth", "shortcut": "EDO", @@ -9073,7 +9091,7 @@ "Github": "https://github.com/EndorCoin", "Homepage": "https://www.endor.com" }, - "marketcap_usd": 22557785, + "marketcap_usd": 20494888, "name": "Endor Protocol Token", "network": "eth", "shortcut": "EDR", @@ -9101,7 +9119,7 @@ "Github": "https://github.com/egretia", "Homepage": "https://www.egretia.io" }, - "marketcap_usd": 1569719, + "marketcap_usd": 1395069, "name": "Egretia Token", "network": "eth", "shortcut": "EGT", @@ -9156,7 +9174,7 @@ "links": { "Homepage": "https://echolink.info" }, - "marketcap_usd": 1195987, + "marketcap_usd": 1327852, "name": "EchoLink", "network": "eth", "shortcut": "EKO", @@ -9183,7 +9201,7 @@ "links": { "Homepage": "http://ekt8.io" }, - "marketcap_usd": 3180409, + "marketcap_usd": 4027539, "name": "EDUCare", "network": "eth", "shortcut": "EKT", @@ -9210,7 +9228,7 @@ "links": { "Homepage": "https://electrify.asia" }, - "marketcap_usd": 1117793, + "marketcap_usd": 1114086, "name": "Electrify.Asia", "network": "eth", "shortcut": "ELEC", @@ -9238,7 +9256,7 @@ "Github": "https://github.com/aelfProject", "Homepage": "https://aelf.io/" }, - "marketcap_usd": 42154472, + "marketcap_usd": 47474900, "name": "ELF Token", "network": "eth", "shortcut": "ELF", @@ -9265,7 +9283,7 @@ "links": { "Homepage": "https://elixirtoken.io" }, - "marketcap_usd": 104892, + "marketcap_usd": 104111, "name": "Elixir Token", "network": "eth", "shortcut": "ELIX", @@ -9293,7 +9311,7 @@ "Github": "https://github.com/eltcoin", "Homepage": "http://www.eltcoin.tech/" }, - "marketcap_usd": 48822, + "marketcap_usd": 50896, "name": "ELTCOIN", "network": "eth", "shortcut": "ELTCOIN", @@ -9321,7 +9339,7 @@ "Github": "https://github.com/Elysian-ELY", "Homepage": "https://elycoin.io" }, - "marketcap_usd": 151719, + "marketcap_usd": 149751, "name": "ELYCOIN", "network": "eth", "shortcut": "ELY", @@ -9487,7 +9505,7 @@ "Github": "https://github.com/enigmampc", "Homepage": "https://enigma.co/" }, - "marketcap_usd": 25591117, + "marketcap_usd": 29401241, "name": "Enigma", "network": "eth", "shortcut": "ENG", @@ -9514,7 +9532,7 @@ "links": { "Homepage": "https://engagementtoken.com" }, - "marketcap_usd": 56021, + "marketcap_usd": 55488, "name": "Engagement Token", "network": "eth", "shortcut": "ENGT", @@ -9542,7 +9560,7 @@ "Github": "https://github.com/enjin/contracts", "Homepage": "https://enjincoin.io" }, - "marketcap_usd": 73014166, + "marketcap_usd": 174642443, "name": "ENJIN", "network": "eth", "shortcut": "ENJ", @@ -9625,7 +9643,7 @@ "links": { "Homepage": "https://emphy.io" }, - "marketcap_usd": 72299, + "marketcap_usd": 78997, "name": "Emphy", "network": "eth", "shortcut": "EPY", @@ -9652,7 +9670,7 @@ "links": { "Homepage": "http://www.equaltoken.io" }, - "marketcap_usd": 416693, + "marketcap_usd": 363367, "name": "Equal", "network": "eth", "shortcut": "EQL", @@ -9679,7 +9697,7 @@ "links": { "Homepage": "https://eroscoin.org" }, - "marketcap_usd": 946240, + "marketcap_usd": 1336200, "name": "Eroscoin", "network": "eth", "shortcut": "ERO", @@ -9707,7 +9725,7 @@ "Github": "https://github.com/Krishtopa/ContractEristica", "Homepage": "https://eristica.com/" }, - "marketcap_usd": 779213, + "marketcap_usd": 898265, "name": "Eristica", "network": "eth", "shortcut": "ERT", @@ -9735,7 +9753,7 @@ "Github": "https://github.com/EtherSportz/ESZCoin", "Homepage": "https://ethersportz.com" }, - "marketcap_usd": 243657, + "marketcap_usd": 232151, "name": "ESZCoin", "network": "eth", "shortcut": "ESZ", @@ -9762,7 +9780,7 @@ "links": { "Homepage": "https://www.ethbits.com" }, - "marketcap_usd": 630320, + "marketcap_usd": 750688, "name": "Ethbits", "network": "eth", "shortcut": "ETBS", @@ -9816,7 +9834,7 @@ "links": { "Homepage": "https://www.etgproject.org" }, - "marketcap_usd": 37545, + "marketcap_usd": 45355, "name": "Ethereum Gold", "network": "eth", "shortcut": "ETG", @@ -9870,7 +9888,7 @@ "links": { "Homepage": "https://energitoken.com" }, - "marketcap_usd": 1045569, + "marketcap_usd": 949390, "name": "EnergiToken", "network": "eth", "shortcut": "ETK", @@ -9925,7 +9943,7 @@ "links": { "Homepage": "https://stasis.net" }, - "marketcap_usd": 34746855, + "marketcap_usd": 33513133, "name": "STASIS EURS", "network": "eth", "shortcut": "EURS", @@ -9979,7 +9997,7 @@ "links": { "Homepage": "https://eventchain.io" }, - "marketcap_usd": 456239, + "marketcap_usd": 450690, "name": "EventChain", "network": "eth", "shortcut": "EVC", @@ -10007,7 +10025,7 @@ "Github": "https://github.com/devery", "Homepage": "https://devery.io" }, - "marketcap_usd": 302364, + "marketcap_usd": 310513, "name": "Devery", "network": "eth", "shortcut": "EVE", @@ -10034,7 +10052,7 @@ "links": { "Homepage": "https://everex.io " }, - "marketcap_usd": 5605337, + "marketcap_usd": 6031337, "name": "EVX Token", "network": "eth", "shortcut": "EVX", @@ -10090,7 +10108,7 @@ "Github": "https://github.com/eXMRcoin/", "Homepage": "https://exmr.io/" }, - "marketcap_usd": 150015, + "marketcap_usd": 163472, "name": "eXMRcoin", "network": "eth", "shortcut": "EXMR", @@ -10117,7 +10135,7 @@ "links": { "Homepage": "https://exrnchain.com" }, - "marketcap_usd": 1828252, + "marketcap_usd": 1973498, "name": "EXRNchain", "network": "eth", "shortcut": "EXRN", @@ -10144,7 +10162,7 @@ "links": { "Homepage": "https://experty.io/en" }, - "marketcap_usd": 702192, + "marketcap_usd": 844609, "name": "Experty", "network": "eth", "shortcut": "EXY", @@ -10253,7 +10271,7 @@ "links": { "Homepage": "https://tokensale.faceter.io" }, - "marketcap_usd": 627457, + "marketcap_usd": 632595, "name": "Faceter", "network": "eth", "shortcut": "FACE", @@ -10335,7 +10353,7 @@ "links": { "Homepage": "https://friendz.io" }, - "marketcap_usd": 1823693, + "marketcap_usd": 1716491, "name": "Friendz", "network": "eth", "shortcut": "FDZ", @@ -10446,7 +10464,7 @@ "Github": "https://github.com/FortKnoxster", "Homepage": "https://fortknoxster.com" }, - "marketcap_usd": 417781, + "marketcap_usd": 505807, "name": "Knoxstertoken", "network": "eth", "shortcut": "FKX", @@ -10473,7 +10491,7 @@ "links": { "Homepage": "https://www.flixxo.com" }, - "marketcap_usd": 1213575, + "marketcap_usd": 1525143, "name": "Flixxo", "network": "eth", "shortcut": "FLIXX", @@ -10500,7 +10518,7 @@ "links": { "Homepage": "https://firelotto.io" }, - "marketcap_usd": 560489, + "marketcap_usd": 500594, "name": "Fire Lotto", "network": "eth", "shortcut": "FLOT", @@ -10528,7 +10546,7 @@ "Github": "https://github.com/gameflip", "Homepage": "https://gameflip.com" }, - "marketcap_usd": 783161, + "marketcap_usd": 818417, "name": "FLIP Token", "network": "eth", "shortcut": "FLP", @@ -10582,7 +10600,7 @@ "links": { "Homepage": "https://ico.fluzfluz.com" }, - "marketcap_usd": 2145924, + "marketcap_usd": 2400319, "name": "Fluz Fluz Global", "network": "eth", "shortcut": "FLUZ", @@ -10637,7 +10655,7 @@ "Github": "https://github.com/FormosaFinancial", "Homepage": "https://www.formosa.financial/" }, - "marketcap_usd": 567017, + "marketcap_usd": 556824, "name": "Formosa Financial Token", "network": "eth", "shortcut": "FMF", @@ -10665,7 +10683,7 @@ "Github": "https://github.com/FundRequest", "Homepage": "https://fundrequest.io" }, - "marketcap_usd": 143007, + "marketcap_usd": 167871, "name": "FundRequest", "network": "eth", "shortcut": "FND", @@ -10692,7 +10710,7 @@ "links": { "Homepage": "https://www.foglink.io" }, - "marketcap_usd": 1562475, + "marketcap_usd": 1639277, "name": "FNKOS", "network": "eth", "shortcut": "FNKOS", @@ -10746,7 +10764,7 @@ "links": { "Homepage": "https://www.foodcoin.io" }, - "marketcap_usd": 813454, + "marketcap_usd": 996188, "name": "FoodCoin", "network": "eth", "shortcut": "FOOD", @@ -10773,7 +10791,7 @@ "links": { "Homepage": "https://www.fota.io" }, - "marketcap_usd": 4861243, + "marketcap_usd": 6775428, "name": "Fortuna", "network": "eth", "shortcut": "FOTA", @@ -10855,7 +10873,7 @@ "links": { "Homepage": "http://www.freyrchain.org" }, - "marketcap_usd": 423291, + "marketcap_usd": 552089, "name": "Freyrchain", "network": "eth", "shortcut": "FREC", @@ -10882,7 +10900,7 @@ "links": { "Homepage": "https://fusion.org" }, - "marketcap_usd": 15486320, + "marketcap_usd": 16563557, "name": "Fusion", "network": "eth", "shortcut": "FSN", @@ -10909,7 +10927,7 @@ "links": { "Homepage": "https://fabrictoken.io" }, - "marketcap_usd": 166479, + "marketcap_usd": 243505, "name": "Fabric Token", "network": "eth", "shortcut": "FT", @@ -10936,7 +10954,7 @@ "links": { "Homepage": "https://fanstime.org" }, - "marketcap_usd": 1962324, + "marketcap_usd": 2586139, "name": "FansTime", "network": "eth", "shortcut": "FTI", @@ -10991,7 +11009,7 @@ "Github": "https://github.com/farmatrust", "Homepage": "https://www.farmatrust.io" }, - "marketcap_usd": 1936726, + "marketcap_usd": 2002386, "name": "FarmaTrust Token", "network": "eth", "shortcut": "FTT", @@ -11018,7 +11036,7 @@ "links": { "Homepage": "https://www.fintrux.com" }, - "marketcap_usd": 2766166, + "marketcap_usd": 2504783, "name": "FintruX Network", "network": "eth", "shortcut": "FTX", @@ -11046,7 +11064,7 @@ "Github": "https://github.com/futuraxproject", "Homepage": "https://futurax.global" }, - "marketcap_usd": 136705, + "marketcap_usd": 118699, "name": "FUTURAX", "network": "eth", "shortcut": "FTXT", @@ -11074,7 +11092,7 @@ "Github": "https://github.com/etherparty", "Homepage": "https://etherparty.io" }, - "marketcap_usd": 5253387, + "marketcap_usd": 5710625, "name": "Etherparty FUEL", "network": "eth", "shortcut": "FUEL", @@ -11101,7 +11119,7 @@ "links": { "Homepage": "https://funfair.io" }, - "marketcap_usd": 25040270, + "marketcap_usd": 24470996, "name": "Funfair", "network": "eth", "shortcut": "FUN", @@ -11156,7 +11174,7 @@ "links": { "Homepage": "https://fuzex.co" }, - "marketcap_usd": 1592967, + "marketcap_usd": 1815972, "name": "FuzeX", "network": "eth", "shortcut": "FXT", @@ -11210,7 +11228,7 @@ "links": { "Homepage": "https://flyp.me" }, - "marketcap_usd": 449318, + "marketcap_usd": 417860, "name": "FlypMe", "network": "eth", "shortcut": "FYP", @@ -11266,7 +11284,7 @@ "Github": "https://github.com/BlockchainLabsNZ/gambit", "Homepage": "http://gambitcrypto.com" }, - "marketcap_usd": 1418938, + "marketcap_usd": 1555632, "name": "Gambit", "network": "eth", "shortcut": "GAM", @@ -11293,7 +11311,7 @@ "links": { "Homepage": "https://www.gatcoin.io" }, - "marketcap_usd": 1597959, + "marketcap_usd": 1641747, "name": "Global Awards Token", "network": "eth", "shortcut": "GAT", @@ -11485,7 +11503,7 @@ "links": { "Homepage": "https://gems.org" }, - "marketcap_usd": 1005693, + "marketcap_usd": 1045299, "name": "Gems", "network": "eth", "shortcut": "GEM", @@ -11513,7 +11531,7 @@ "Github": "https://github.com/daostack", "Homepage": "https://daostack.io" }, - "marketcap_usd": 4488476, + "marketcap_usd": 3833467, "name": "DAOstack", "network": "eth", "shortcut": "GEN", @@ -11540,7 +11558,7 @@ "links": { "Homepage": "https://parkgene.io" }, - "marketcap_usd": 177373, + "marketcap_usd": 180752, "name": "Parkgene", "network": "eth", "shortcut": "GENE", @@ -11568,7 +11586,7 @@ "Github": "https://github.com/Getprotocol", "Homepage": "http://www.get-protocol.io" }, - "marketcap_usd": 3525284, + "marketcap_usd": 2944842, "name": "GET Protocol", "network": "eth", "shortcut": "GET", @@ -11650,7 +11668,7 @@ "links": { "Homepage": "https://gladius.io" }, - "marketcap_usd": 460205, + "marketcap_usd": 0, "name": "Gladius", "network": "eth", "shortcut": "GLA", @@ -11704,7 +11722,7 @@ "links": { "Homepage": "https://gnosis.pm" }, - "marketcap_usd": 13929914, + "marketcap_usd": 15550378, "name": "Gnosis", "network": "eth", "shortcut": "GNO", @@ -11731,7 +11749,7 @@ "links": { "Homepage": "https://golem.network" }, - "marketcap_usd": 63019673, + "marketcap_usd": 67533793, "name": "Golem", "network": "eth", "shortcut": "GNT", @@ -11758,7 +11776,7 @@ "links": { "Homepage": "https://genaro.network" }, - "marketcap_usd": 4012186, + "marketcap_usd": 4754961, "name": "Genaro Network", "network": "eth", "shortcut": "GNX", @@ -11841,7 +11859,7 @@ "links": { "Homepage": "https://gonetwork.co/index.html" }, - "marketcap_usd": 2014006, + "marketcap_usd": 2123465, "name": "GoNetwork", "network": "eth", "shortcut": "GOT", @@ -11868,7 +11886,7 @@ "links": { "Homepage": "http://gridplus.io" }, - "marketcap_usd": 3956753, + "marketcap_usd": 4077813, "name": "Grid+", "network": "eth", "shortcut": "GRID", @@ -11895,7 +11913,7 @@ "links": { "Homepage": "https://www.greenmed.io" }, - "marketcap_usd": 52340, + "marketcap_usd": 61981, "name": "GreenMed", "network": "eth", "shortcut": "GRMD", @@ -11978,7 +11996,7 @@ "links": { "Homepage": "https://www.gsc.social" }, - "marketcap_usd": 1939663, + "marketcap_usd": 2366899, "name": "Global Social Chain", "network": "eth", "shortcut": "GSC", @@ -12033,7 +12051,7 @@ "Github": "https://github.com/GameLeLe", "Homepage": "https://game.com" }, - "marketcap_usd": 6878565, + "marketcap_usd": 7515811, "name": "GTC Token", "network": "eth", "shortcut": "GTC", @@ -12089,7 +12107,7 @@ "Github": "https://github.com/GIFTO-io", "Homepage": "https://gifto.io/" }, - "marketcap_usd": 15970047, + "marketcap_usd": 17964517, "name": "Gifto", "network": "eth", "shortcut": "GTO", @@ -12116,7 +12134,7 @@ "links": { "Homepage": "https://peerguess.com" }, - "marketcap_usd": 16504, + "marketcap_usd": 19123, "name": "Peerguess", "network": "eth", "shortcut": "GUESS", @@ -12171,7 +12189,7 @@ "links": { "Homepage": "https://matchpool.co" }, - "marketcap_usd": 1462143, + "marketcap_usd": 1409650, "name": "Matchpool", "network": "eth", "shortcut": "GUP", @@ -12199,7 +12217,7 @@ "Github": "https://github.com/GenesisVision", "Homepage": "https://genesis.vision" }, - "marketcap_usd": 17474263, + "marketcap_usd": 17247786, "name": "Genesis Vision", "network": "eth", "shortcut": "GVT", @@ -12364,7 +12382,7 @@ "links": { "Homepage": "https://www.showhand.io" }, - "marketcap_usd": 109191, + "marketcap_usd": 99801, "name": "ShowHand", "network": "eth", "shortcut": "HAND", @@ -12445,7 +12463,7 @@ "links": { "Homepage": "https://heartbout.com" }, - "marketcap_usd": 789079, + "marketcap_usd": 732325, "name": "HeartBout", "network": "eth", "shortcut": "HB", @@ -12472,7 +12490,7 @@ "links": { "Homepage": "https://www.hubii.network" }, - "marketcap_usd": 1494959, + "marketcap_usd": 2076413, "name": "Hubii Network", "network": "eth", "shortcut": "HBT", @@ -12499,7 +12517,7 @@ "links": { "Homepage": "https://www.hbzcoin.com/#" }, - "marketcap_usd": 402550, + "marketcap_usd": 413791, "name": "HBZ coin", "network": "eth", "shortcut": "HBZ", @@ -12553,7 +12571,7 @@ "links": { "Homepage": "https://heronode.io" }, - "marketcap_usd": 417674, + "marketcap_usd": 429127, "name": "HeroNode", "network": "eth", "shortcut": "HER", @@ -12581,7 +12599,7 @@ "Github": "https://github.com/myHelloGold/Foundation", "Homepage": "https://www.hellogold.org" }, - "marketcap_usd": 402999, + "marketcap_usd": 356148, "name": "HelloGold", "network": "eth", "shortcut": "HGT", @@ -12690,7 +12708,7 @@ "links": { "Homepage": "https://hacken.io" }, - "marketcap_usd": 821526, + "marketcap_usd": 857985, "name": "Hacken", "network": "eth", "shortcut": "HKN", @@ -12772,7 +12790,7 @@ "links": { "Homepage": "https://humaniq.com" }, - "marketcap_usd": 1726204, + "marketcap_usd": 1765599, "name": "Humaniq", "network": "eth", "shortcut": "HMQ", @@ -12827,7 +12845,7 @@ "Github": "https://github.com/ethorse", "Homepage": "https://ethorse.com" }, - "marketcap_usd": 408424, + "marketcap_usd": 394759, "name": "Ethorse", "network": "eth", "shortcut": "HORSE", @@ -12855,7 +12873,7 @@ "Github": "https://github.com/Holo-Host", "Homepage": "https://holo.host/" }, - "marketcap_usd": 139098744, + "marketcap_usd": 145509145, "name": "Holo Token", "network": "eth", "shortcut": "HOT (Holo)", @@ -12882,7 +12900,7 @@ "links": { "Homepage": "https://thehydrofoundation.com/" }, - "marketcap_usd": 1924678, + "marketcap_usd": 2303782, "name": "Hydro Protocol", "network": "eth", "shortcut": "HOT (Hydro)", @@ -12909,7 +12927,7 @@ "links": { "Homepage": "https://horizonstate.com" }, - "marketcap_usd": 2066867, + "marketcap_usd": 2290540, "name": "Decision Token", "network": "eth", "shortcut": "HST", @@ -12936,7 +12954,7 @@ "links": { "Homepage": "https://www.hbg.com" }, - "marketcap_usd": 78676187, + "marketcap_usd": 92995834, "name": "Huobi Token", "network": "eth", "shortcut": "HT", @@ -12964,7 +12982,7 @@ "Github": "https://github.com/HiveProjectLTD", "Homepage": "https://www.hiveterminal.com" }, - "marketcap_usd": 1460327, + "marketcap_usd": 1398465, "name": "Hiveterminal Token", "network": "eth", "shortcut": "HVN", @@ -12992,7 +13010,7 @@ "Github": "https://github.com/hydrogen-dev", "Homepage": "https://www.hydrogenplatform.com/hydro" }, - "marketcap_usd": 5739855, + "marketcap_usd": 6165934, "name": "Hydro", "network": "eth", "shortcut": "HYDRO", @@ -13074,7 +13092,7 @@ "links": { "Homepage": "https://www.iconomi.net" }, - "marketcap_usd": 14191291, + "marketcap_usd": 10066698, "name": "ICONOMI", "network": "eth", "shortcut": "ICN", @@ -13209,7 +13227,7 @@ "links": { "Homepage": "https://indahash.com" }, - "marketcap_usd": 1281996, + "marketcap_usd": 1233386, "name": "indaHash", "network": "eth", "shortcut": "IDH", @@ -13236,7 +13254,7 @@ "links": { "Homepage": "http://iethereum.trade" }, - "marketcap_usd": 683087, + "marketcap_usd": 730708, "name": "iEthereum", "network": "eth", "shortcut": "IETH", @@ -13263,7 +13281,7 @@ "links": { "Homepage": "https://investfeed.com" }, - "marketcap_usd": 47458, + "marketcap_usd": 60722, "name": "InvestFeed", "network": "eth", "shortcut": "IFT", @@ -13290,7 +13308,7 @@ "links": { "Homepage": "http://igtoken.net" }, - "marketcap_usd": 44630, + "marketcap_usd": 45880, "name": "IGToken", "network": "eth", "shortcut": "IG", @@ -13317,7 +13335,7 @@ "links": { "Homepage": "https://ihtcoin.com" }, - "marketcap_usd": 5995071, + "marketcap_usd": 6233575, "name": "I HOUSE TOKEN", "network": "eth", "shortcut": "IHT", @@ -13453,7 +13471,7 @@ "links": { "Homepage": "https://iungo.network" }, - "marketcap_usd": 218234, + "marketcap_usd": 220757, "name": "Iungo", "network": "eth", "shortcut": "ING", @@ -13480,7 +13498,7 @@ "links": { "Homepage": "https://insolar.io" }, - "marketcap_usd": 9092851, + "marketcap_usd": 9062133, "name": "Insolar", "network": "eth", "shortcut": "INS", @@ -13507,7 +13525,7 @@ "links": { "Homepage": "https://insights.network" }, - "marketcap_usd": 815430, + "marketcap_usd": 947095, "name": "Insights Network", "network": "eth", "shortcut": "INSTAR", @@ -13534,7 +13552,7 @@ "links": { "Homepage": "https://intchain.io" }, - "marketcap_usd": 3916053, + "marketcap_usd": 4417283, "name": "Internet Node Token", "network": "eth", "shortcut": "INT", @@ -13561,7 +13579,7 @@ "links": { "Homepage": "https://www.invacio.com" }, - "marketcap_usd": 1151838, + "marketcap_usd": 1185602, "name": "Invacio", "network": "eth", "shortcut": "INV", @@ -13589,7 +13607,7 @@ "Github": "https://github.com/Internxt/", "Homepage": "https://internxt.com/" }, - "marketcap_usd": 1068018, + "marketcap_usd": 1048444, "name": "Internxt", "network": "eth", "shortcut": "INXT", @@ -13616,7 +13634,7 @@ "links": { "Homepage": "https://iost.io/" }, - "marketcap_usd": 91977426, + "marketcap_usd": 95663972, "name": "IOSToken", "network": "eth", "shortcut": "IOST", @@ -13644,7 +13662,7 @@ "Github": "https://github.com/iotexproject/iotex-core", "Homepage": "http://iotex.io/" }, - "marketcap_usd": 21430237, + "marketcap_usd": 20781767, "name": "IoTeX Network", "network": "eth", "shortcut": "IOTX", @@ -13672,7 +13690,7 @@ "Github": "https://github.com/InsurePal", "Homepage": "https://insurepal.io/" }, - "marketcap_usd": 996336, + "marketcap_usd": 1004015, "name": "InsurePal token", "network": "eth", "shortcut": "IPL", @@ -13699,7 +13717,7 @@ "links": { "Homepage": "https://ip.sx" }, - "marketcap_usd": 641413, + "marketcap_usd": 358382, "name": "IP Exchange", "network": "eth", "shortcut": "IPSX", @@ -13727,7 +13745,7 @@ "Github": "https://github.com/iqeon", "Homepage": "https://iqeon.io/" }, - "marketcap_usd": 604974, + "marketcap_usd": 553215, "name": "IQeon", "network": "eth", "shortcut": "IQN", @@ -13783,7 +13801,7 @@ "Github": "https://github.com/IoTChainCode", "Homepage": "https://iotchain.io/" }, - "marketcap_usd": 7898704, + "marketcap_usd": 8725807, "name": "IoT Chain", "network": "eth", "shortcut": "ITC", @@ -13811,7 +13829,7 @@ "Github": "https://github.com/IntelligentTrading", "Homepage": "http://intelligenttrading.org" }, - "marketcap_usd": 94908, + "marketcap_usd": 93477, "name": "ITT Token", "network": "eth", "shortcut": "ITT", @@ -13838,7 +13856,7 @@ "links": { "Homepage": "https://www.ivykoin.com" }, - "marketcap_usd": 2475609, + "marketcap_usd": 2099990, "name": "IvyKoin Public Network Tokens", "network": "eth", "shortcut": "IVY", @@ -13865,7 +13883,7 @@ "links": { "Homepage": "https://www.insurex.co" }, - "marketcap_usd": 672534, + "marketcap_usd": 770054, "name": "InsureX", "network": "eth", "shortcut": "IXT", @@ -13920,7 +13938,7 @@ "Github": "https://github.com/jet8", "Homepage": "https://jet8.io" }, - "marketcap_usd": 393915, + "marketcap_usd": 449730, "name": "J8T Token", "network": "eth", "shortcut": "J8T", @@ -13947,7 +13965,7 @@ "links": { "Homepage": "https://jesuscoin.network" }, - "marketcap_usd": 125043, + "marketcap_usd": 95966, "name": "Jesus Coin", "network": "eth", "shortcut": "JC", @@ -13974,7 +13992,7 @@ "links": { "Homepage": "https://jetcoin.io" }, - "marketcap_usd": 170248, + "marketcap_usd": 165028, "name": "JET", "network": "eth", "shortcut": "JET", @@ -14002,7 +14020,7 @@ "Github": "https://github.com/jibrelnetwork", "Homepage": "https://jibrel.network" }, - "marketcap_usd": 6680979, + "marketcap_usd": 6802552, "name": "Jibrel Network", "network": "eth", "shortcut": "JNT", @@ -14029,7 +14047,7 @@ "links": { "Homepage": "https://jury.online" }, - "marketcap_usd": 47796, + "marketcap_usd": 53286, "name": "Jury.Online Token", "network": "eth", "shortcut": "JOT", @@ -14083,7 +14101,7 @@ "links": { "Homepage": "http://www.kan.land" }, - "marketcap_usd": 6378287, + "marketcap_usd": 6708042, "name": "BitKan", "network": "eth", "shortcut": "KAN", @@ -14138,7 +14156,7 @@ "Github": "https://github.com/kickico", "Homepage": "https://www.kickico.com" }, - "marketcap_usd": 2289961, + "marketcap_usd": 2370341, "name": "KICK", "network": "eth", "shortcut": "KICK", @@ -14166,7 +14184,7 @@ "Github": "https://github.com/kikinteractive/kin-token", "Homepage": "https://kin.kik.com" }, - "marketcap_usd": 17786862, + "marketcap_usd": 18941752, "name": "Kin Foundation", "network": "eth", "shortcut": "KIN", @@ -14193,7 +14211,7 @@ "links": { "Homepage": "https://kindads.io" }, - "marketcap_usd": 1375645, + "marketcap_usd": 1781816, "name": "Kind Ads Token", "network": "eth", "shortcut": "KIND", @@ -14221,7 +14239,7 @@ "Github": "https://github.com/KyberNetwork", "Homepage": "https://kyber.network" }, - "marketcap_usd": 26849490, + "marketcap_usd": 59785963, "name": "Kyber Network", "network": "eth", "shortcut": "KNC", @@ -14248,7 +14266,7 @@ "links": { "Homepage": "https://kanadecoin.com" }, - "marketcap_usd": 76099, + "marketcap_usd": 75430, "name": "KanadeCoin", "network": "eth", "shortcut": "KNDC", @@ -14275,7 +14293,7 @@ "links": { "Homepage": "https://kora.network" }, - "marketcap_usd": 116839, + "marketcap_usd": 92236, "name": "Kora Network Token", "network": "eth", "shortcut": "KNT", @@ -14331,7 +14349,7 @@ "Github": "https://github.com/Cryptense/", "Homepage": "https://kryll.io/" }, - "marketcap_usd": 1555494, + "marketcap_usd": 1737895, "name": "Kryll", "network": "eth", "shortcut": "KRL", @@ -14385,7 +14403,7 @@ "links": { "Homepage": "https://4new.io" }, - "marketcap_usd": 88182, + "marketcap_usd": 427538, "name": "4NEW", "network": "eth", "shortcut": "KWATT", @@ -14440,7 +14458,7 @@ "Github": "https://github.com/latoken", "Homepage": "https://latoken.com/" }, - "marketcap_usd": 26381245, + "marketcap_usd": 25747311, "name": "LATOKEN", "network": "eth", "shortcut": "LA", @@ -14467,7 +14485,7 @@ "links": { "Homepage": "https://lalaworld.io/" }, - "marketcap_usd": 198893, + "marketcap_usd": 193055, "name": "LALA World Token", "network": "eth", "shortcut": "LALA", @@ -14494,7 +14512,7 @@ "links": { "Homepage": "https://latium.org" }, - "marketcap_usd": 917891, + "marketcap_usd": 902297, "name": "LatiumX", "network": "eth", "shortcut": "LATX", @@ -14521,7 +14539,7 @@ "links": { "Homepage": "https://www.mycred.io" }, - "marketcap_usd": 5380338, + "marketcap_usd": 6997751, "name": "Cred", "network": "eth", "shortcut": "LBA", @@ -14548,7 +14566,7 @@ "links": { "Homepage": "https://www.localcoinswap.com" }, - "marketcap_usd": 1534600, + "marketcap_usd": 1897139, "name": "LocalCoinSwap", "network": "eth", "shortcut": "LCS", @@ -14575,7 +14593,7 @@ "links": { "Homepage": "https://www.leadcoin.network/" }, - "marketcap_usd": 109088, + "marketcap_usd": 159252, "name": "LEADCOIN", "network": "eth", "shortcut": "LDC", @@ -14603,7 +14621,7 @@ "Github": "https://github.com/livecodingtvofficial", "Homepage": "https://ledu.education-ecosystem.com" }, - "marketcap_usd": 976402, + "marketcap_usd": 978821, "name": "Education Ecosystem", "network": "eth", "shortcut": "LEDU", @@ -14631,7 +14649,7 @@ "Github": "https://github.com/ETHLend", "Homepage": "https://ethlend.io/" }, - "marketcap_usd": 9693532, + "marketcap_usd": 9949474, "name": "EHTLend", "network": "eth", "shortcut": "LEND", @@ -14658,7 +14676,7 @@ "links": { "Homepage": "https://www.leverj.io" }, - "marketcap_usd": 739652, + "marketcap_usd": 867838, "name": "Leverj", "network": "eth", "shortcut": "LEV", @@ -14739,7 +14757,7 @@ "links": { "Homepage": "https://lgo.exchange" }, - "marketcap_usd": 8341169, + "marketcap_usd": 9505211, "name": "LGO Exchange", "network": "eth", "shortcut": "LGO", @@ -14821,7 +14839,7 @@ "Github": "https://github.com/windingtree", "Homepage": "https://windingtree.com/" }, - "marketcap_usd": 2292316, + "marketcap_usd": 2377391, "name": "Winding Tree", "network": "eth", "shortcut": "LIF", @@ -14848,7 +14866,7 @@ "links": { "Homepage": "http://www.lifelabs.io" }, - "marketcap_usd": 862282, + "marketcap_usd": 893513, "name": "LIFE", "network": "eth", "shortcut": "LIFE", @@ -14876,7 +14894,7 @@ "Github": "https://github.com/likecoin", "Homepage": "https://like.co" }, - "marketcap_usd": 1163804, + "marketcap_usd": 1118033, "name": "LikeCoin", "network": "eth", "shortcut": "LIKE", @@ -14903,7 +14921,7 @@ "links": { "Homepage": "https://link.smartcontract.com" }, - "marketcap_usd": 150203550, + "marketcap_usd": 168274594, "name": "Chainlink", "network": "eth", "shortcut": "LINK (Chainlink)", @@ -14957,7 +14975,7 @@ "links": { "Homepage": "https://www.linkey.info" }, - "marketcap_usd": 41340608, + "marketcap_usd": 41056964, "name": "Linkey", "network": "eth", "shortcut": "LKY", @@ -14985,7 +15003,7 @@ "Github": "https://github.com/GNYIO", "Homepage": "https://www.gny.io/lisk" }, - "marketcap_usd": 9777572, + "marketcap_usd": 9408655, "name": "Lisk Machine Learning", "network": "eth", "shortcut": "LML", @@ -15013,7 +15031,7 @@ "Github": "https://github.com/lendingblock", "Homepage": "https://lendingblock.com" }, - "marketcap_usd": 2066410, + "marketcap_usd": 2162053, "name": "Lendingblock", "network": "eth", "shortcut": "LND", @@ -15040,7 +15058,7 @@ "links": { "Homepage": "https://LockChain.co" }, - "marketcap_usd": 14407312, + "marketcap_usd": 14870281, "name": "LockChain", "network": "eth", "shortcut": "LOC", @@ -15068,7 +15086,7 @@ "Github": "http://github.com/locipro/loci-coin-sale", "Homepage": "https://locipro.com" }, - "marketcap_usd": 132808, + "marketcap_usd": 140484, "name": "LOCIcoin", "network": "eth", "shortcut": "LOCI", @@ -15177,7 +15195,7 @@ "Github": "github.com/loomnetwork/", "Homepage": "https://loomx.io" }, - "marketcap_usd": 42891685, + "marketcap_usd": 44088635, "name": "Loom Network", "network": "eth", "shortcut": "LOOM", @@ -15232,7 +15250,7 @@ "links": { "Homepage": "https://loopring.org" }, - "marketcap_usd": 46759868, + "marketcap_usd": 52603454, "name": "Loopring", "network": "eth", "shortcut": "LRC", @@ -15260,7 +15278,7 @@ "Github": "https://github.com/Play2Live/blockchain", "Homepage": "https://play2live.io" }, - "marketcap_usd": 125026, + "marketcap_usd": 85727, "name": "LUCToken", "network": "eth", "shortcut": "LUC", @@ -15342,7 +15360,7 @@ "Github": "https://github.com/lunyr", "Homepage": "https://lunyr.com" }, - "marketcap_usd": 4739024, + "marketcap_usd": 5187038, "name": "Lunyr", "network": "eth", "shortcut": "LUN", @@ -15369,7 +15387,7 @@ "links": { "Homepage": "https://lympo.io" }, - "marketcap_usd": 4385887, + "marketcap_usd": 5201744, "name": "Lympo", "network": "eth", "shortcut": "LYM", @@ -15479,7 +15497,7 @@ "Github": "https://github.com/MatrixAINetwork", "Homepage": "https://www.matrix.io" }, - "marketcap_usd": 13591899, + "marketcap_usd": 13697024, "name": "Matrix AI Network", "network": "eth", "shortcut": "MAN", @@ -15507,7 +15525,7 @@ "Github": "https://github.com/decentraland", "Homepage": "https://decentraland.org" }, - "marketcap_usd": 44250372, + "marketcap_usd": 50712625, "name": "Decentraland MANA", "network": "eth", "shortcut": "MANA", @@ -15589,7 +15607,7 @@ "links": { "Homepage": "https://bitcoingrowthfund.com/mcap" }, - "marketcap_usd": 30726, + "marketcap_usd": 48237, "name": "MCAP", "network": "eth", "shortcut": "MCAP", @@ -15644,7 +15662,7 @@ "links": { "Homepage": "https://crypto.com" }, - "marketcap_usd": 42619634, + "marketcap_usd": 44337787, "name": "Crypto.com", "network": "eth", "shortcut": "MCO", @@ -15671,7 +15689,7 @@ "links": { "Homepage": "https://moedaseeds.com" }, - "marketcap_usd": 16125479, + "marketcap_usd": 17883992, "name": "Moeda Loyalty Points", "network": "eth", "shortcut": "MDA", @@ -15698,7 +15716,7 @@ "links": { "Homepage": "http://www.medishares.org" }, - "marketcap_usd": 9089855, + "marketcap_usd": 12811000, "name": "MediShares", "network": "eth", "shortcut": "MDS", @@ -15725,7 +15743,7 @@ "links": { "Homepage": "https://www.mdt.co" }, - "marketcap_usd": 4853987, + "marketcap_usd": 4348919, "name": "Measurable Data Token", "network": "eth", "shortcut": "MDT", @@ -15752,7 +15770,7 @@ "links": { "Homepage": "https://medibloc.org" }, - "marketcap_usd": 10581768, + "marketcap_usd": 10640543, "name": "MediBloc [ERC20]", "network": "eth", "shortcut": "MEDX", @@ -15807,7 +15825,7 @@ "links": { "Homepage": "https://www.metronome.io" }, - "marketcap_usd": 7768498, + "marketcap_usd": 7059944, "name": "Metronome", "network": "eth", "shortcut": "MET", @@ -15834,7 +15852,7 @@ "links": { "Homepage": "https://metamorph.pro" }, - "marketcap_usd": 343677, + "marketcap_usd": 336309, "name": "MetaMorph", "network": "eth", "shortcut": "METM", @@ -15862,7 +15880,7 @@ "Github": "https://github.com/syncfab", "Homepage": "https://syncfab.com/" }, - "marketcap_usd": 377982, + "marketcap_usd": 354010, "name": "SyncFab Smart Manufacturing Blockchain", "network": "eth", "shortcut": "MFG", @@ -15890,7 +15908,7 @@ "Github": "https://github.com/MainframeHQ", "Homepage": "https://mainframe.com" }, - "marketcap_usd": 17989005, + "marketcap_usd": 18640115, "name": "Mainframe Token", "network": "eth", "shortcut": "MFT", @@ -15917,7 +15935,7 @@ "links": { "Homepage": "https://mftu.net" }, - "marketcap_usd": 18919, + "marketcap_usd": 76010, "name": "Mainstream For The Underground", "network": "eth", "shortcut": "MFTU", @@ -15944,7 +15962,7 @@ "links": { "Homepage": "https://mobilego.io" }, - "marketcap_usd": 11969031, + "marketcap_usd": 11670025, "name": "MobileGo", "network": "eth", "shortcut": "MGO", @@ -15971,7 +15989,7 @@ "links": { "Homepage": "https://mindexcoin.com" }, - "marketcap_usd": 329567, + "marketcap_usd": 340349, "name": "Mindexcoin", "network": "eth", "shortcut": "MIC", @@ -15998,7 +16016,7 @@ "links": { "Homepage": "https://token.morpheuslabs.io" }, - "marketcap_usd": 2287984, + "marketcap_usd": 1554384, "name": "Morpheus Infrastructure Token", "network": "eth", "shortcut": "MITX", @@ -16026,7 +16044,7 @@ "Github": "https://github.com/makerdao", "Homepage": "https://makerdao.com" }, - "marketcap_usd": 672637048, + "marketcap_usd": 650152383, "name": "MakerDAO", "network": "eth", "shortcut": "MKR", @@ -16108,7 +16126,7 @@ "links": { "Homepage": "https://minereum.com" }, - "marketcap_usd": 37036, + "marketcap_usd": 36126, "name": "Minereum", "network": "eth", "shortcut": "MNE", @@ -16191,7 +16209,7 @@ "links": { "Homepage": "https://moss.land" }, - "marketcap_usd": 14336304, + "marketcap_usd": 14590014, "name": "Moss Coin", "network": "eth", "shortcut": "MOC", @@ -16219,7 +16237,7 @@ "Github": "https://github.com/modum-io", "Homepage": "https://modum.io" }, - "marketcap_usd": 3549620, + "marketcap_usd": 3587360, "name": "Modum", "network": "eth", "shortcut": "MOD", @@ -16246,7 +16264,7 @@ "links": { "Homepage": "https://olympuslabs.io" }, - "marketcap_usd": 1114464, + "marketcap_usd": 1569920, "name": "Olympus Labs", "network": "eth", "shortcut": "MOT", @@ -16273,7 +16291,7 @@ "links": { "Homepage": "https://mark.space" }, - "marketcap_usd": 3240809, + "marketcap_usd": 3344075, "name": "MARK.SPACE", "network": "eth", "shortcut": "MRK", @@ -16409,7 +16427,7 @@ "links": { "Homepage": "http://www.monetha.io" }, - "marketcap_usd": 6149547, + "marketcap_usd": 5688701, "name": "Monetha", "network": "eth", "shortcut": "MTH", @@ -16436,7 +16454,7 @@ "links": { "Homepage": "https://www.metalpay.com" }, - "marketcap_usd": 13045448, + "marketcap_usd": 13374644, "name": "Metal", "network": "eth", "shortcut": "MTL", @@ -16463,7 +16481,7 @@ "links": { "Homepage": "https://medicalchain.com" }, - "marketcap_usd": 1256957, + "marketcap_usd": 1601159, "name": "MedToken", "network": "eth", "shortcut": "MTN", @@ -16517,7 +16535,7 @@ "links": { "Homepage": "https://modultrade.io" }, - "marketcap_usd": 102920, + "marketcap_usd": 149976, "name": "MTRCToken", "network": "eth", "shortcut": "MTRc", @@ -16544,7 +16562,7 @@ "links": { "Homepage": "https://www.matryx.ai" }, - "marketcap_usd": 476428, + "marketcap_usd": 478074, "name": "Matryx", "network": "eth", "shortcut": "MTX", @@ -16598,7 +16616,7 @@ "links": { "Homepage": "http://mvlchain.io" }, - "marketcap_usd": 1880838, + "marketcap_usd": 1913453, "name": "Mass Vehicle Ledger Token", "network": "eth", "shortcut": "MVL", @@ -16626,7 +16644,7 @@ "Github": "https://github.com/Merculet", "Homepage": "https://www.merculet.io" }, - "marketcap_usd": 669290, + "marketcap_usd": 645981, "name": "Merculet", "network": "eth", "shortcut": "MVP", @@ -16653,7 +16671,7 @@ "links": { "Homepage": "https://www.restartenergy.io" }, - "marketcap_usd": 7530076, + "marketcap_usd": 6931469, "name": "RED MWAT", "network": "eth", "shortcut": "MWAT", @@ -16680,7 +16698,7 @@ "links": { "Homepage": "https://mysterium.network" }, - "marketcap_usd": 1557223, + "marketcap_usd": 1295531, "name": "Mysterium", "network": "eth", "shortcut": "MYST", @@ -16735,7 +16753,7 @@ "Github": "https://github.com/NANJ-COIN", "Homepage": "https://nanjcoin.com/" }, - "marketcap_usd": 2653605, + "marketcap_usd": 2863984, "name": "NANJCOIN", "network": "eth", "shortcut": "NANJ", @@ -16763,7 +16781,7 @@ "Github": "https://github.com/naviworld", "Homepage": "https://naviaddress.com" }, - "marketcap_usd": 224217, + "marketcap_usd": 216338, "name": "NaviToken", "network": "eth", "shortcut": "NAVI", @@ -16791,7 +16809,7 @@ "Github": "https://github.com/nebulaai", "Homepage": "https://tokensale.nebula-ai.network" }, - "marketcap_usd": 1341924, + "marketcap_usd": 1343232, "name": "NebulaAiToken", "network": "eth", "shortcut": "NBAI", @@ -16818,7 +16836,7 @@ "links": { "Homepage": "https://niobiumcoin.io" }, - "marketcap_usd": 503229, + "marketcap_usd": 635606, "name": "Niobium Coin", "network": "eth", "shortcut": "NBC", @@ -16845,7 +16863,7 @@ "links": { "Homepage": "https://nucleus.vision" }, - "marketcap_usd": 9929696, + "marketcap_usd": 10058545, "name": "Nucleus Vision", "network": "eth", "shortcut": "NCASH", @@ -16873,7 +16891,7 @@ "Github": "https://github.com/polyswarm", "Homepage": "https://polyswarm.io" }, - "marketcap_usd": 3012181, + "marketcap_usd": 3090519, "name": "Nectar", "network": "eth", "shortcut": "NCT", @@ -16900,7 +16918,7 @@ "links": { "Homepage": "https://neverdie.com" }, - "marketcap_usd": 107677, + "marketcap_usd": 89828, "name": "Neverdie", "network": "eth", "shortcut": "NDC", @@ -16928,7 +16946,7 @@ "Github": "https://github.com/ndexnetwork/NDX", "Homepage": "https://ndexnetwork.com" }, - "marketcap_usd": 90420, + "marketcap_usd": 61381, "name": "nDEX", "network": "eth", "shortcut": "NDX", @@ -16956,7 +16974,7 @@ "Github": "https://github.com/ethfinex/", "Homepage": "https://nectar.community" }, - "marketcap_usd": 25036030, + "marketcap_usd": 22664042, "name": "Ethfinex Nectar Token", "network": "eth", "shortcut": "NEC", @@ -17038,7 +17056,7 @@ "Github": "https://github.com/neufund", "Homepage": "https://neufund.org" }, - "marketcap_usd": 6321424, + "marketcap_usd": 6623594, "name": "NEU Fund", "network": "eth", "shortcut": "NEU", @@ -17065,7 +17083,7 @@ "links": { "Homepage": "http://nexo.io" }, - "marketcap_usd": 52981060, + "marketcap_usd": 47663734, "name": "Nexo", "network": "eth", "shortcut": "NEXO", @@ -17092,7 +17110,7 @@ "links": { "Homepage": "https://www.nagaico.com" }, - "marketcap_usd": 3685815, + "marketcap_usd": 2917606, "name": "NAGA Coin", "network": "eth", "shortcut": "NGC", @@ -17147,7 +17165,7 @@ "links": { "Homepage": "https://auton.io" }, - "marketcap_usd": 803048, + "marketcap_usd": 748072, "name": "Autonio", "network": "eth", "shortcut": "NIO", @@ -17175,7 +17193,7 @@ "Github": "https://github.com/numerai", "Homepage": "https://numer.ai" }, - "marketcap_usd": 6134771, + "marketcap_usd": 6823231, "name": "Numerai", "network": "eth", "shortcut": "NMR", @@ -17202,7 +17220,7 @@ "links": { "Homepage": "https://noahcoin.org" }, - "marketcap_usd": 5489091, + "marketcap_usd": 5034668, "name": "Noah Coin", "network": "eth", "shortcut": "NOAH", @@ -17229,7 +17247,7 @@ "links": { "Homepage": "https://nobscrypto.com" }, - "marketcap_usd": 117190, + "marketcap_usd": 114021, "name": "No BS Crypto", "network": "eth", "shortcut": "NOBS", @@ -17257,7 +17275,7 @@ "Github": "https://github.com/nitrotoken/nitro-crowdsale", "Homepage": "https://nitro.live" }, - "marketcap_usd": 46179, + "marketcap_usd": 41383, "name": "Nitro", "network": "eth", "shortcut": "NOX", @@ -17285,7 +17303,7 @@ "Github": "https://github.com/NperProject", "Homepage": "https://nper.io" }, - "marketcap_usd": 368476, + "marketcap_usd": 293824, "name": "NPER", "network": "eth", "shortcut": "NPER", @@ -17312,7 +17330,7 @@ "links": { "Homepage": "https://napoleonx.ai" }, - "marketcap_usd": 5738525, + "marketcap_usd": 5603901, "name": "NaPoleonX", "network": "eth", "shortcut": "NPX", @@ -17340,7 +17358,7 @@ "Github": "https://github.com/pundix", "Homepage": "https://pundix.com" }, - "marketcap_usd": 115435602, + "marketcap_usd": 107992935, "name": "Pundi X Token", "network": "eth", "shortcut": "NPXS", @@ -17367,7 +17385,7 @@ "links": { "Homepage": "https://fujinto.io" }, - "marketcap_usd": 2541, + "marketcap_usd": 1868, "name": "Fujinto", "network": "eth", "shortcut": "NTO", @@ -17475,7 +17493,7 @@ "links": { "Homepage": "https://beyond-the-void.net" }, - "marketcap_usd": 381333, + "marketcap_usd": 417577, "name": "Nexium", "network": "eth", "shortcut": "NxC", @@ -17529,7 +17547,7 @@ "links": { "Homepage": "https://www.openanx.org/en" }, - "marketcap_usd": 3233006, + "marketcap_usd": 3445131, "name": "OAX", "network": "eth", "shortcut": "OAX", @@ -17584,7 +17602,7 @@ "links": { "Homepage": "http://www.ocnex.net" }, - "marketcap_usd": 14152176, + "marketcap_usd": 16493075, "name": "Odyssey", "network": "eth", "shortcut": "OCN", @@ -17612,7 +17630,7 @@ "Github": "https://github.com/odemio", "Homepage": "https://odem.io/" }, - "marketcap_usd": 45044409, + "marketcap_usd": 44873079, "name": "ODEM Token", "network": "eth", "shortcut": "ODE", @@ -17695,7 +17713,7 @@ "links": { "Homepage": "http://www.olivecoin.co" }, - "marketcap_usd": 350625, + "marketcap_usd": 534682, "name": "Olive", "network": "eth", "shortcut": "OLE", @@ -17723,7 +17741,7 @@ "Github": "https://github.com/Oneledger", "Homepage": "https://oneledger.io" }, - "marketcap_usd": 1058973, + "marketcap_usd": 986717, "name": "OneLedger Token", "network": "eth", "shortcut": "OLT", @@ -17751,7 +17769,7 @@ "Github": "https://github.com/omisego", "Homepage": "https://omg.omise.co" }, - "marketcap_usd": 174788057, + "marketcap_usd": 189407794, "name": "OmiseGO", "network": "eth", "shortcut": "OMG", @@ -17806,7 +17824,7 @@ "links": { "Homepage": "https://shivom.io" }, - "marketcap_usd": 538565, + "marketcap_usd": 550326, "name": "Shivom", "network": "eth", "shortcut": "OMX", @@ -17834,7 +17852,7 @@ "Github": "https://github.com/MenloOne/", "Homepage": "https://www.menlo.one" }, - "marketcap_usd": 224978, + "marketcap_usd": 225725, "name": "Menlo One", "network": "eth", "shortcut": "ONE", @@ -17889,7 +17907,7 @@ "Github": "https://github.com/onGsocial", "Homepage": "https://somee.social" }, - "marketcap_usd": 190149, + "marketcap_usd": 220453, "name": "SoMee.Social", "network": "eth", "shortcut": "ONG", @@ -17916,7 +17934,7 @@ "links": { "Homepage": "https://on.live" }, - "marketcap_usd": 938639, + "marketcap_usd": 900499, "name": "On.Live", "network": "eth", "shortcut": "ONL", @@ -17943,7 +17961,7 @@ "links": { "Homepage": "https://opus-foundation.org" }, - "marketcap_usd": 249226, + "marketcap_usd": 238174, "name": "Opus Foundation", "network": "eth", "shortcut": "OPT", @@ -17970,7 +17988,7 @@ "links": { "Homepage": "https://optitoken.io" }, - "marketcap_usd": 444670, + "marketcap_usd": 486464, "name": "OptiToken", "network": "eth", "shortcut": "OPTI", @@ -18053,7 +18071,7 @@ "links": { "Homepage": "https://ori.network" }, - "marketcap_usd": 67527, + "marketcap_usd": 68173, "name": "Origami", "network": "eth", "shortcut": "ORI", @@ -18080,7 +18098,7 @@ "links": { "Homepage": "https://ormeuscoin.com" }, - "marketcap_usd": 1781938, + "marketcap_usd": 690647, "name": "Ormeus Coin", "network": "eth", "shortcut": "ORME", @@ -18107,7 +18125,7 @@ "links": { "Homepage": "https://www.originsport.io" }, - "marketcap_usd": 276847, + "marketcap_usd": 271771, "name": "Origin Sport", "network": "eth", "shortcut": "ORS", @@ -18135,7 +18153,7 @@ "Github": "https://github.com/OpenSTFoundation", "Homepage": "https://simpletoken.org" }, - "marketcap_usd": 12496323, + "marketcap_usd": 13700526, "name": "Simple Token 'OST'", "network": "eth", "shortcut": "OST", @@ -18162,7 +18180,7 @@ "links": { "Homepage": "https://otn.org" }, - "marketcap_usd": 135455, + "marketcap_usd": 146051, "name": "Open Trading Network", "network": "eth", "shortcut": "OTN", @@ -18190,7 +18208,7 @@ "Github": "https://github.com/owndata", "Homepage": "https://owndata.network" }, - "marketcap_usd": 770223, + "marketcap_usd": 748439, "name": "OWNDATA", "network": "eth", "shortcut": "OWN", @@ -18245,7 +18263,7 @@ "links": { "Homepage": "https://www.pchain.org" }, - "marketcap_usd": 6215858, + "marketcap_usd": 6340690, "name": "PCHAIN", "network": "eth", "shortcut": "PAI", @@ -18273,7 +18291,7 @@ "Github": "https://github.com/policypalnet", "Homepage": "https://www.policypal.network" }, - "marketcap_usd": 2462705, + "marketcap_usd": 2465818, "name": "PolicyPal Network", "network": "eth", "shortcut": "PAL", @@ -18301,7 +18319,7 @@ "Github": "https://github.com/ParetoNetwork", "Homepage": "https://pareto.network" }, - "marketcap_usd": 369633, + "marketcap_usd": 361944, "name": "PARETO", "network": "eth", "shortcut": "PARETO", @@ -18328,7 +18346,7 @@ "links": { "Homepage": "https://patron-influencers.com" }, - "marketcap_usd": 746885, + "marketcap_usd": 680975, "name": "Patron", "network": "eth", "shortcut": "PAT", @@ -18411,7 +18429,7 @@ "Github": "https://github.com/paxosglobal", "Homepage": "https://www.paxos.com/standard" }, - "marketcap_usd": 113137103, + "marketcap_usd": 112859299, "name": "Paxos Standard (PAX)", "network": "eth", "shortcut": "PAX", @@ -18438,7 +18456,7 @@ "links": { "Homepage": "http://www.tenx.tech" }, - "marketcap_usd": 26059504, + "marketcap_usd": 37230747, "name": "TenX", "network": "eth", "shortcut": "PAY", @@ -18520,7 +18538,7 @@ "Github": "https://github.com/PeculiumPCL/Peculium", "Homepage": "https://peculium.io" }, - "marketcap_usd": 3582683, + "marketcap_usd": 0, "name": "Peculium", "network": "eth", "shortcut": "PCL", @@ -18685,7 +18703,7 @@ "links": { "Homepage": "https://www.phitoken.io" }, - "marketcap_usd": 904444, + "marketcap_usd": 907119, "name": "PHI Token", "network": "eth", "shortcut": "PHI", @@ -18712,7 +18730,7 @@ "links": { "Homepage": "https://piplcoin.com" }, - "marketcap_usd": 233850, + "marketcap_usd": 100287, "name": "PIPL Coin", "network": "eth", "shortcut": "PIPL", @@ -18766,7 +18784,7 @@ "links": { "Homepage": "https://www.lampix.co" }, - "marketcap_usd": 456334, + "marketcap_usd": 446610, "name": "Lampix", "network": "eth", "shortcut": "PIX", @@ -18793,7 +18811,7 @@ "links": { "Homepage": "http://pkgtoken.io" }, - "marketcap_usd": 66227, + "marketcap_usd": 66616, "name": "PKG Token", "network": "eth", "shortcut": "PKG", @@ -18820,7 +18838,7 @@ "links": { "Homepage": "https://playkey.io" }, - "marketcap_usd": 778457, + "marketcap_usd": 627756, "name": "Playkey", "network": "eth", "shortcut": "PKT", @@ -18874,7 +18892,7 @@ "links": { "Homepage": "https://polybius.io" }, - "marketcap_usd": 4715537, + "marketcap_usd": 4300619, "name": "Polybius", "network": "eth", "shortcut": "PLBT", @@ -18902,7 +18920,7 @@ "Github": "https://github.com/twentythirty/PillarToken", "Homepage": "https://www.pillarproject.io" }, - "marketcap_usd": 6916968, + "marketcap_usd": 7369534, "name": "Pillar Project", "network": "eth", "shortcut": "PLR", @@ -18957,7 +18975,7 @@ "links": { "Homepage": "https://plutus.it" }, - "marketcap_usd": 1608010, + "marketcap_usd": 1681267, "name": "Pluton", "network": "eth", "shortcut": "PLU", @@ -18984,7 +19002,7 @@ "links": { "Homepage": "https://pumapay.io" }, - "marketcap_usd": 10597751, + "marketcap_usd": 9933379, "name": "PumaPay", "network": "eth", "shortcut": "PMA", @@ -19011,7 +19029,7 @@ "links": { "Homepage": "https://paymon.org" }, - "marketcap_usd": 297683, + "marketcap_usd": 248153, "name": "Paymon", "network": "eth", "shortcut": "PMNT", @@ -19039,7 +19057,7 @@ "Github": "https://github.com/kleros", "Homepage": "https://kleros.io" }, - "marketcap_usd": 1320234, + "marketcap_usd": 1286986, "name": "Pinakion", "network": "eth", "shortcut": "PNK", @@ -19066,7 +19084,7 @@ "links": { "Homepage": "https://po.et" }, - "marketcap_usd": 14435861, + "marketcap_usd": 14909604, "name": "Po.et Tokens", "network": "eth", "shortcut": "POE", @@ -19120,7 +19138,7 @@ "links": { "Homepage": "https://clearpoll.com" }, - "marketcap_usd": 597209, + "marketcap_usd": 550145, "name": "ClearPoll", "network": "eth", "shortcut": "POLL", @@ -19147,7 +19165,7 @@ "links": { "Homepage": "https://polymath.network" }, - "marketcap_usd": 31033565, + "marketcap_usd": 32374670, "name": "Polymath Network", "network": "eth", "shortcut": "POLY", @@ -19230,7 +19248,7 @@ "Github": "https://github.com/PoSToken", "Homepage": "https://postoken.org" }, - "marketcap_usd": 4256, + "marketcap_usd": 4407, "name": "PoSToken", "network": "eth", "shortcut": "POS", @@ -19257,7 +19275,7 @@ "links": { "Homepage": "https://powerledger.io" }, - "marketcap_usd": 36440872, + "marketcap_usd": 40714627, "name": "PowerLedger", "network": "eth", "shortcut": "POWR", @@ -19284,7 +19302,7 @@ "links": { "Homepage": "https://www.paypie.com" }, - "marketcap_usd": 5340122, + "marketcap_usd": 6030988, "name": "PayPie", "network": "eth", "shortcut": "PPP", @@ -19311,7 +19329,7 @@ "links": { "Homepage": "https://populous.co" }, - "marketcap_usd": 65599204, + "marketcap_usd": 67040364, "name": "Populous", "network": "eth", "shortcut": "PPT", @@ -19338,7 +19356,7 @@ "links": { "Homepage": "https://presearch.io" }, - "marketcap_usd": 6281636, + "marketcap_usd": 14731310, "name": "Presearch", "network": "eth", "shortcut": "PRE", @@ -19366,7 +19384,7 @@ "Github": "https://github.com/paragon-coin/token", "Homepage": "https://paragoncoin.com" }, - "marketcap_usd": 11148223, + "marketcap_usd": 11154655, "name": "Paragon", "network": "eth", "shortcut": "PRG", @@ -19393,7 +19411,7 @@ "links": { "Homepage": "https://privatix.io" }, - "marketcap_usd": 1139231, + "marketcap_usd": 1198149, "name": "Privatix", "network": "eth", "shortcut": "PRIX", @@ -19530,7 +19548,7 @@ "links": { "Homepage": "https://primas.io" }, - "marketcap_usd": 4781782, + "marketcap_usd": 4906456, "name": "Primas", "network": "eth", "shortcut": "PST", @@ -19585,7 +19603,7 @@ "links": { "Homepage": "https://patientory.com" }, - "marketcap_usd": 1098705, + "marketcap_usd": 1065966, "name": "Patientory", "network": "eth", "shortcut": "PTOY", @@ -19612,7 +19630,7 @@ "links": { "Homepage": "https://www.proton.global" }, - "marketcap_usd": 343134, + "marketcap_usd": 302164, "name": "Proton Token", "network": "eth", "shortcut": "PTT", @@ -19750,7 +19768,7 @@ "links": { "Homepage": "https://pylon-network.org" }, - "marketcap_usd": 279201, + "marketcap_usd": 247562, "name": "Pylon Network", "network": "eth", "shortcut": "PYLNT", @@ -19777,7 +19795,7 @@ "links": { "Homepage": "https://liquid.plus" }, - "marketcap_usd": 40105578, + "marketcap_usd": 48096822, "name": "QASH", "network": "eth", "shortcut": "QASH", @@ -19859,7 +19877,7 @@ "links": { "Homepage": "https://quarkchain.io" }, - "marketcap_usd": 30264460, + "marketcap_usd": 31789314, "name": "QuarkChain", "network": "eth", "shortcut": "QKC", @@ -19887,7 +19905,7 @@ "Github": "https://github.com/quantnetwork", "Homepage": "https://www.quant.network/" }, - "marketcap_usd": 38634487, + "marketcap_usd": 32972521, "name": "Quant", "network": "eth", "shortcut": "QNT", @@ -19970,7 +19988,7 @@ "Github": "https://github.com/quantstamp", "Homepage": "https://quantstamp.com/" }, - "marketcap_usd": 10523094, + "marketcap_usd": 12993500, "name": "Quantstamp Token", "network": "eth", "shortcut": "QSP", @@ -20053,7 +20071,7 @@ "links": { "Homepage": "https://qunqun.io" }, - "marketcap_usd": 2453622, + "marketcap_usd": 2573379, "name": "QunQun", "network": "eth", "shortcut": "QUN", @@ -20080,7 +20098,7 @@ "links": { "Homepage": "https://revain.org" }, - "marketcap_usd": 55261188, + "marketcap_usd": 55247746, "name": "Revain", "network": "eth", "shortcut": "R", @@ -20135,7 +20153,7 @@ "links": { "Homepage": "http://token.dprating.com" }, - "marketcap_usd": 513370, + "marketcap_usd": 433455, "name": "DPRating", "network": "eth", "shortcut": "RATING", @@ -20163,7 +20181,7 @@ "Github": "https://github.com/rublixdev", "Homepage": "https://rublix.io/" }, - "marketcap_usd": 3252204, + "marketcap_usd": 4083849, "name": "Rublix", "network": "eth", "shortcut": "RBLX", @@ -20191,7 +20209,7 @@ "Github": "https://github.com/ripio/rcn-token", "Homepage": "https://ripiocredit.network" }, - "marketcap_usd": 10660385, + "marketcap_usd": 12062208, "name": "Ripio Credit Network", "network": "eth", "shortcut": "RCN", @@ -20219,7 +20237,7 @@ "Github": "https://github.com/raiden-network/raiden/", "Homepage": "https://raiden.network" }, - "marketcap_usd": 15150466, + "marketcap_usd": 15576761, "name": "Raiden Network", "network": "eth", "shortcut": "RDN", @@ -20273,7 +20291,7 @@ "links": { "Homepage": "https://www.real.markets" }, - "marketcap_usd": 535981, + "marketcap_usd": 729715, "name": "Real Estate Asset Ledger", "network": "eth", "shortcut": "REAL", @@ -20300,7 +20318,7 @@ "links": { "Homepage": "https://www.rebellious.io" }, - "marketcap_usd": 538184, + "marketcap_usd": 589603, "name": "Rebellious", "network": "eth", "shortcut": "REBL", @@ -20328,7 +20346,7 @@ "Github": "https://github.com/red", "Homepage": "https://ico.red-lang.org" }, - "marketcap_usd": 769036, + "marketcap_usd": 764484, "name": "Red Community Token", "network": "eth", "shortcut": "RED", @@ -20383,7 +20401,7 @@ "links": { "Homepage": "https://reftoken.io" }, - "marketcap_usd": 358257, + "marketcap_usd": 335020, "name": "RefToken", "network": "eth", "shortcut": "REF", @@ -20410,7 +20428,7 @@ "links": { "Homepage": "https://remme.io" }, - "marketcap_usd": 3065132, + "marketcap_usd": 3502653, "name": "Remme", "network": "eth", "shortcut": "REM", @@ -20466,7 +20484,7 @@ "Github": "https://github.com/republicprotocol", "Homepage": "https://republicprotocol.com" }, - "marketcap_usd": 11639488, + "marketcap_usd": 12920784, "name": "Republic Token", "network": "eth", "shortcut": "REN", @@ -20493,7 +20511,7 @@ "links": { "Homepage": "https://augur.net" }, - "marketcap_usd": 138208427, + "marketcap_usd": 143627844, "name": "Augur", "network": "eth", "shortcut": "REP", @@ -20520,7 +20538,7 @@ "links": { "Homepage": "https://request.network" }, - "marketcap_usd": 15764003, + "marketcap_usd": 18016170, "name": "Request Network", "network": "eth", "shortcut": "REQ", @@ -20548,7 +20566,7 @@ "Github": "https://github.com/rexmls/RexToken", "Homepage": "https://imbrex.io" }, - "marketcap_usd": 351774, + "marketcap_usd": 215006, "name": "imbrex", "network": "eth", "shortcut": "REX", @@ -20575,7 +20593,7 @@ "links": { "Homepage": "https://refereum.com" }, - "marketcap_usd": 6335094, + "marketcap_usd": 6388073, "name": "Refereum", "network": "eth", "shortcut": "RFR", @@ -20602,7 +20620,7 @@ "links": { "Homepage": "https://www.rchain.coop" }, - "marketcap_usd": 6231436, + "marketcap_usd": 6870800, "name": "RChain", "network": "eth", "shortcut": "RHOC", @@ -20657,7 +20675,7 @@ "links": { "Homepage": "http://etheriya.com" }, - "marketcap_usd": 129356, + "marketcap_usd": 24979, "name": "Etheriya", "network": "eth", "shortcut": "RIYA", @@ -20684,7 +20702,7 @@ "links": { "Homepage": "http://crowdsale.iex.ec" }, - "marketcap_usd": 26852063, + "marketcap_usd": 26465792, "name": "IEx.ec", "network": "eth", "shortcut": "RLC", @@ -20712,7 +20730,7 @@ "Github": "https://github.com/Smartroulette", "Homepage": "https://smartplay.tech" }, - "marketcap_usd": 62488, + "marketcap_usd": 63350, "name": "RouletteToken", "network": "eth", "shortcut": "RLT", @@ -20766,7 +20784,7 @@ "links": { "Homepage": "http://www.relex.io" }, - "marketcap_usd": 291138, + "marketcap_usd": 261823, "name": "Relex", "network": "eth", "shortcut": "RLX", @@ -20794,7 +20812,7 @@ "Github": "https://github.com/rightmesh", "Homepage": "https://www.rightmesh.io/" }, - "marketcap_usd": 2076519, + "marketcap_usd": 1982782, "name": "RightMesh Token", "network": "eth", "shortcut": "RMESH", @@ -20848,7 +20866,7 @@ "links": { "Homepage": "https://www.oneroot.io/en" }, - "marketcap_usd": 17805225, + "marketcap_usd": 17733405, "name": "OneRoot Network", "network": "eth", "shortcut": "RNT", @@ -20875,7 +20893,7 @@ "links": { "Homepage": "https://bitrent.io" }, - "marketcap_usd": 197535, + "marketcap_usd": 218742, "name": "BitRent", "network": "eth", "shortcut": "RNTB", @@ -20930,7 +20948,7 @@ "links": { "Homepage": "https://icerockmining.io" }, - "marketcap_usd": 218854, + "marketcap_usd": 3401132, "name": "ICE ROCK MINING", "network": "eth", "shortcut": "ROCK2", @@ -21038,7 +21056,7 @@ "links": { "Homepage": "https://ab-chain.com" }, - "marketcap_usd": 283722, + "marketcap_usd": 235132, "name": "AB-Chain RTB", "network": "eth", "shortcut": "RTB", @@ -21065,7 +21083,7 @@ "links": { "Homepage": "https://www.rotharium.io" }, - "marketcap_usd": 3963534, + "marketcap_usd": 3765563, "name": "Rotharium", "network": "eth", "shortcut": "RTH", @@ -21120,7 +21138,7 @@ "links": { "Homepage": "http://ruffchain.com" }, - "marketcap_usd": 10206037, + "marketcap_usd": 11789360, "name": "Ruff", "network": "eth", "shortcut": "RUFF", @@ -21202,7 +21220,7 @@ "links": { "Homepage": "https://rivetzintl.com" }, - "marketcap_usd": 1184769, + "marketcap_usd": 1528042, "name": "Rivetz", "network": "eth", "shortcut": "RVT", @@ -21310,7 +21328,7 @@ "links": { "Homepage": "https://saltlending.com" }, - "marketcap_usd": 10851200, + "marketcap_usd": 11282908, "name": "Salt Lending Token", "network": "eth", "shortcut": "SALT", @@ -21337,7 +21355,7 @@ "links": { "Homepage": "https://santiment.net" }, - "marketcap_usd": 31903807, + "marketcap_usd": 31888813, "name": "Santiment", "network": "eth", "shortcut": "SAN", @@ -21391,7 +21409,7 @@ "links": { "Homepage": "https://ico.nexus.social" }, - "marketcap_usd": 309179, + "marketcap_usd": 341991, "name": "SocialCoin", "network": "eth", "shortcut": "SCL", @@ -21418,7 +21436,7 @@ "links": { "Homepage": "https://www.scroll.network" }, - "marketcap_usd": 6456511, + "marketcap_usd": 6075110, "name": "SCRL", "network": "eth", "shortcut": "SCRL", @@ -21445,7 +21463,7 @@ "links": { "Homepage": "http://seele.pro" }, - "marketcap_usd": 2792031, + "marketcap_usd": 3779239, "name": "Seele", "network": "eth", "shortcut": "SEELE", @@ -21472,7 +21490,7 @@ "links": { "Homepage": "https://www.sentinel-chain.org" }, - "marketcap_usd": 605564, + "marketcap_usd": 706447, "name": "Sentinel Chain", "network": "eth", "shortcut": "SENC", @@ -21499,7 +21517,7 @@ "links": { "Homepage": "https://sensay.it" }, - "marketcap_usd": 2412136, + "marketcap_usd": 2961096, "name": "Sensay", "network": "eth", "shortcut": "SENSE", @@ -21526,7 +21544,7 @@ "links": { "Homepage": "https://sentinel.co" }, - "marketcap_usd": 2565874, + "marketcap_usd": 2583520, "name": "SENTinel", "network": "eth", "shortcut": "SENT", @@ -21635,7 +21653,7 @@ "links": { "Homepage": "https://signals.network" }, - "marketcap_usd": 339261, + "marketcap_usd": 343508, "name": "Signals Network", "network": "eth", "shortcut": "SGN", @@ -21662,7 +21680,7 @@ "links": { "Homepage": "http://sugarexchange.io" }, - "marketcap_usd": 66649, + "marketcap_usd": 75792, "name": "Sugar Exchange", "network": "eth", "shortcut": "SGR", @@ -21689,7 +21707,7 @@ "links": { "Homepage": "https://www.shipchain.io" }, - "marketcap_usd": 1737853, + "marketcap_usd": 1384919, "name": "ShipChain", "network": "eth", "shortcut": "SHIP", @@ -21743,7 +21761,7 @@ "links": { "Homepage": "https://sharpe.capital" }, - "marketcap_usd": 617429, + "marketcap_usd": 645435, "name": "Sharpe Platform Token", "network": "eth", "shortcut": "SHP", @@ -21798,7 +21816,7 @@ "Github": "https://github.com/SpectivOfficial", "Homepage": "https://spectivvr.com" }, - "marketcap_usd": 350858, + "marketcap_usd": 440524, "name": "Signal", "network": "eth", "shortcut": "SIG", @@ -21825,7 +21843,7 @@ "links": { "Homepage": "https://www.skb-coin.jp/en" }, - "marketcap_usd": 3487815, + "marketcap_usd": 3455114, "name": "Sakura Bloom", "network": "eth", "shortcut": "SKB", @@ -21880,7 +21898,7 @@ "Github": "https://github.com/Steamtradenet/smart-contract", "Homepage": "https://skincoin.org" }, - "marketcap_usd": 277789, + "marketcap_usd": 68775, "name": "SKIN", "network": "eth", "shortcut": "SKIN", @@ -21907,7 +21925,7 @@ "links": { "Homepage": "https://skrumble.network" }, - "marketcap_usd": 2086873, + "marketcap_usd": 2538642, "name": "Skrumble Network", "network": "eth", "shortcut": "SKM", @@ -22071,7 +22089,7 @@ "links": { "Homepage": "https://smscoin.jp/en" }, - "marketcap_usd": 463260, + "marketcap_usd": 270826, "name": "Speed Mining Service", "network": "eth", "shortcut": "SMS", @@ -22098,7 +22116,7 @@ "links": { "Homepage": "https://suncontract.org" }, - "marketcap_usd": 2045598, + "marketcap_usd": 2210307, "name": "SunContract", "network": "eth", "shortcut": "SNC", @@ -22180,7 +22198,7 @@ "links": { "Homepage": "https://singulardtv.com" }, - "marketcap_usd": 8411615, + "marketcap_usd": 11353194, "name": "SingularDTV", "network": "eth", "shortcut": "SNGLS", @@ -22235,7 +22253,7 @@ "Github": "https://github.com/sonm-io", "Homepage": "https://sonm.com" }, - "marketcap_usd": 7556225, + "marketcap_usd": 7970275, "name": "SONM", "network": "eth", "shortcut": "SNM", @@ -22262,7 +22280,7 @@ "links": { "Homepage": "https://snovian.space" }, - "marketcap_usd": 625505, + "marketcap_usd": 596997, "name": "Snovian.Space", "network": "eth", "shortcut": "SNOV", @@ -22289,7 +22307,7 @@ "links": { "Homepage": "https://status.im" }, - "marketcap_usd": 69090052, + "marketcap_usd": 74104603, "name": "Status Network Token", "network": "eth", "shortcut": "SNT", @@ -22316,7 +22334,7 @@ "links": { "Homepage": "https://silentnotary.com" }, - "marketcap_usd": 1063446, + "marketcap_usd": 1023259, "name": "Silent Notary", "network": "eth", "shortcut": "SNTR", @@ -22344,7 +22362,7 @@ "Github": "https://github.com/havven/havven", "Homepage": "https://synthetix.io" }, - "marketcap_usd": 3457963, + "marketcap_usd": 3644038, "name": "Synthetix Network Token", "network": "eth", "shortcut": "SNX", @@ -22371,7 +22389,7 @@ "links": { "Homepage": "http://soarlabs.org" }, - "marketcap_usd": 1051920, + "marketcap_usd": 1023779, "name": "Soarcoin", "network": "eth", "shortcut": "SOAR", @@ -22398,7 +22416,7 @@ "links": { "Homepage": "https://www.allsportschain.com" }, - "marketcap_usd": 5646240, + "marketcap_usd": 6966120, "name": "All Sports", "network": "eth", "shortcut": "SOC", @@ -22425,7 +22443,7 @@ "links": { "Homepage": "https://sola.foundation" }, - "marketcap_usd": 59455, + "marketcap_usd": 43060, "name": "Sola Token", "network": "eth", "shortcut": "SOL", @@ -22452,7 +22470,7 @@ "links": { "Homepage": "https://soniqproject.com" }, - "marketcap_usd": 133833, + "marketcap_usd": 47975, "name": "Soniq", "network": "eth", "shortcut": "SONIQ", @@ -22480,7 +22498,7 @@ "Github": "https://github.com/cryptosoulgame", "Homepage": "https://cryptosoul.io/" }, - "marketcap_usd": 26117, + "marketcap_usd": 25580, "name": "CryptoSoul", "network": "eth", "shortcut": "SOUL", @@ -22507,7 +22525,7 @@ "links": { "Homepage": "https://spankchain.com" }, - "marketcap_usd": 2878641, + "marketcap_usd": 2204992, "name": "SpankChain", "network": "eth", "shortcut": "SPANK", @@ -22588,7 +22606,7 @@ "links": { "Homepage": "https://spindle.zone" }, - "marketcap_usd": 1604433, + "marketcap_usd": 1410757, "name": "SPINDLE", "network": "eth", "shortcut": "SPD", @@ -22615,7 +22633,7 @@ "links": { "Homepage": "https://sportyfi.io" }, - "marketcap_usd": 139216, + "marketcap_usd": 153576, "name": "Sportify", "network": "eth", "shortcut": "SPF", @@ -22642,7 +22660,7 @@ "links": { "Homepage": "https://www.sapien.network/" }, - "marketcap_usd": 312819, + "marketcap_usd": 269208, "name": "Sapien", "network": "eth", "shortcut": "SPN", @@ -22669,7 +22687,7 @@ "links": { "Homepage": "https://sp8de.com" }, - "marketcap_usd": 368111, + "marketcap_usd": 289754, "name": "Sp8de", "network": "eth", "shortcut": "SPX", @@ -22697,7 +22715,7 @@ "Github": "https://github.com/sirin-labs/crowdsale-smart-contract", "Homepage": "https://sirinlabs.com" }, - "marketcap_usd": 13870604, + "marketcap_usd": 18014968, "name": "Sirin Labs", "network": "eth", "shortcut": "SRN", @@ -22751,7 +22769,7 @@ "links": { "Homepage": "https://smartshare.vip/#" }, - "marketcap_usd": 3037067, + "marketcap_usd": 3054644, "name": "Smartshare", "network": "eth", "shortcut": "SSP", @@ -22805,7 +22823,7 @@ "links": { "Homepage": "https://coinstarter.com" }, - "marketcap_usd": 244908, + "marketcap_usd": 324560, "name": "Starter Coin", "network": "eth", "shortcut": "STAC", @@ -22832,7 +22850,7 @@ "links": { "Homepage": "https://stacs.io" }, - "marketcap_usd": 9291056, + "marketcap_usd": 8894590, "name": "STACS", "network": "eth", "shortcut": "STACS", @@ -22859,7 +22877,7 @@ "links": { "Homepage": "http://starbase.co" }, - "marketcap_usd": 326003, + "marketcap_usd": 550857, "name": "Star Token", "network": "eth", "shortcut": "STAR", @@ -22942,7 +22960,7 @@ "links": { "Homepage": "https://stktoken.com" }, - "marketcap_usd": 943406, + "marketcap_usd": 1134341, "name": "STK Token", "network": "eth", "shortcut": "STK", @@ -22997,7 +23015,7 @@ "Github": "https://github.com/Storj", "Homepage": "https://storj.io" }, - "marketcap_usd": 29222108, + "marketcap_usd": 30062839, "name": "STORJ", "network": "eth", "shortcut": "STORJ", @@ -23024,7 +23042,7 @@ "links": { "Homepage": "https://www.stormtoken.com" }, - "marketcap_usd": 15486471, + "marketcap_usd": 15878779, "name": "Storm Token", "network": "eth", "shortcut": "STORM", @@ -23080,7 +23098,7 @@ "Github": "https://github.com/Storiqa/", "Homepage": "https://storiqa.com" }, - "marketcap_usd": 3107210, + "marketcap_usd": 2726620, "name": "Storiqa", "network": "eth", "shortcut": "STQ", @@ -23107,7 +23125,7 @@ "links": { "Homepage": "https://staker.network" }, - "marketcap_usd": 2994, + "marketcap_usd": 4653, "name": "Staker", "network": "eth", "shortcut": "STR", @@ -23162,7 +23180,7 @@ "links": { "Homepage": "https://bitjob.io" }, - "marketcap_usd": 169193, + "marketcap_usd": 243149, "name": "bitJob", "network": "eth", "shortcut": "STU", @@ -23190,7 +23208,7 @@ "Github": "https://github.com/stx-technologies/stox-token", "Homepage": "https://www.stox.com" }, - "marketcap_usd": 806786, + "marketcap_usd": 841356, "name": "StoxToken", "network": "eth", "shortcut": "STX", @@ -23244,7 +23262,7 @@ "links": { "Homepage": "https://www.suretly.com" }, - "marketcap_usd": 166436, + "marketcap_usd": 173687, "name": "Suretly", "network": "eth", "shortcut": "SUR", @@ -23271,7 +23289,7 @@ "links": { "Homepage": "https://ico.savedroid.com" }, - "marketcap_usd": 740742, + "marketcap_usd": 844799, "name": "savedroid", "network": "eth", "shortcut": "SVD", @@ -23298,7 +23316,7 @@ "links": { "Homepage": "http://www.swftcoin.com" }, - "marketcap_usd": 3525517, + "marketcap_usd": 3818929, "name": "SwftCoin", "network": "eth", "shortcut": "SWFTC", @@ -23326,7 +23344,7 @@ "Github": "https://github.com/swarmfund", "Homepage": "https://swarm.fund" }, - "marketcap_usd": 6305535, + "marketcap_usd": 5844853, "name": "Swarm Fund Token", "network": "eth", "shortcut": "SWM", @@ -23353,7 +23371,7 @@ "links": { "Homepage": "http://swarm.city" }, - "marketcap_usd": 984057, + "marketcap_usd": 954652, "name": "Swarm City Token", "network": "eth", "shortcut": "SWT", @@ -23380,7 +23398,7 @@ "links": { "Homepage": "http://www.spectre.ai" }, - "marketcap_usd": 18244526, + "marketcap_usd": 15842715, "name": "Spectre.ai D-Token", "network": "eth", "shortcut": "SXDT", @@ -23407,7 +23425,7 @@ "links": { "Homepage": "http://www.spectre.ai" }, - "marketcap_usd": 1701595, + "marketcap_usd": 1746912, "name": "Spectre.ai U-Token", "network": "eth", "shortcut": "SXUT", @@ -23488,7 +23506,7 @@ "links": { "Homepage": "https://www.talao.io" }, - "marketcap_usd": 366722, + "marketcap_usd": 429517, "name": "Talao", "network": "eth", "shortcut": "TALAO", @@ -23516,7 +23534,7 @@ "Github": "https://github.com/lamden", "Homepage": "https://www.lamden.io" }, - "marketcap_usd": 3895492, + "marketcap_usd": 3228790, "name": "Lamden Tau", "network": "eth", "shortcut": "TAU", @@ -23599,7 +23617,7 @@ "links": { "Homepage": "https://tokenbox.io" }, - "marketcap_usd": 266030, + "marketcap_usd": 229254, "name": "Tokenbox", "network": "eth", "shortcut": "TBX", @@ -23654,7 +23672,7 @@ "links": { "Homepage": "https://www.thorecash.com" }, - "marketcap_usd": 14954, + "marketcap_usd": 15404, "name": "Thore Cash", "network": "eth", "shortcut": "TCH", @@ -23708,7 +23726,7 @@ "links": { "Homepage": "https://tokenstars.com/team" }, - "marketcap_usd": 52639, + "marketcap_usd": 44541, "name": "TEAM (TokenStars)", "network": "eth", "shortcut": "TEAM", @@ -23735,7 +23753,7 @@ "links": { "Homepage": "https://www.tokenomy.com" }, - "marketcap_usd": 10335862, + "marketcap_usd": 10221997, "name": "Tokenomy", "network": "eth", "shortcut": "TEN", @@ -23762,7 +23780,7 @@ "links": { "Homepage": "https://ico.tefoodint.com" }, - "marketcap_usd": 3603816, + "marketcap_usd": 3693427, "name": "TE-FOOD", "network": "eth", "shortcut": "TFD", @@ -23790,7 +23808,7 @@ "Github": "https://github.com/TrueFlip", "Homepage": "https://trueflip.io" }, - "marketcap_usd": 1415888, + "marketcap_usd": 1537515, "name": "TrueFlip", "network": "eth", "shortcut": "TFL", @@ -23817,7 +23835,7 @@ "links": { "Homepage": "https://ico.truegame.io" }, - "marketcap_usd": 860006, + "marketcap_usd": 859482, "name": "Truegame", "network": "eth", "shortcut": "TGAME", @@ -23871,7 +23889,7 @@ "links": { "Homepage": "https://www.thetatoken.org/" }, - "marketcap_usd": 139266739, + "marketcap_usd": 132490532, "name": "Theta Token", "network": "eth", "shortcut": "THETA", @@ -23898,7 +23916,7 @@ "links": { "Homepage": "https://www.thorecoin.com" }, - "marketcap_usd": 26085945, + "marketcap_usd": 38448335, "name": "ThoreCoin", "network": "eth", "shortcut": "THR", @@ -23925,7 +23943,7 @@ "links": { "Homepage": "https://ico.thrivelabs.io" }, - "marketcap_usd": 749485, + "marketcap_usd": 660839, "name": "Thrive Token", "network": "eth", "shortcut": "THRT", @@ -23980,7 +23998,7 @@ "links": { "Homepage": "https://ties.network" }, - "marketcap_usd": 672780, + "marketcap_usd": 833330, "name": "Ties.DB", "network": "eth", "shortcut": "TIE", @@ -24007,7 +24025,7 @@ "links": { "Homepage": "https://www.tigereum.io" }, - "marketcap_usd": 445341, + "marketcap_usd": 958522, "name": "Tigereum", "network": "eth", "shortcut": "TIG", @@ -24034,7 +24052,7 @@ "links": { "Homepage": "https://chronobank.io" }, - "marketcap_usd": 1328966, + "marketcap_usd": 1283908, "name": "Chronobank", "network": "eth", "shortcut": "TIME", @@ -24088,7 +24106,7 @@ "links": { "Homepage": "https://www.blocktix.io" }, - "marketcap_usd": 2449075, + "marketcap_usd": 1603221, "name": "Blocktix", "network": "eth", "shortcut": "TIX", @@ -24115,7 +24133,7 @@ "links": { "Homepage": "https://www.tokia.io" }, - "marketcap_usd": 72263, + "marketcap_usd": 63607, "name": "Tokia", "network": "eth", "shortcut": "TKA", @@ -24169,7 +24187,7 @@ "links": { "Homepage": "https://etherscan.io/token/TokenCard" }, - "marketcap_usd": 18553961, + "marketcap_usd": 20189578, "name": "TokenCard", "network": "eth", "shortcut": "TKN", @@ -24223,7 +24241,7 @@ "links": { "Homepage": "http://traxia.co" }, - "marketcap_usd": 2390758, + "marketcap_usd": 1812090, "name": "TRAXIA", "network": "eth", "shortcut": "TMT", @@ -24250,7 +24268,7 @@ "links": { "Homepage": "https://transcodium.com" }, - "marketcap_usd": 141000, + "marketcap_usd": 127317, "name": "Transcodium", "network": "eth", "shortcut": "TNS", @@ -24278,7 +24296,7 @@ "Github": "https://github.com/tierion", "Homepage": "https://tierion.com" }, - "marketcap_usd": 6843578, + "marketcap_usd": 7180145, "name": "Tierion Network Token", "network": "eth", "shortcut": "TNT", @@ -24360,7 +24378,7 @@ "links": { "Homepage": "https://origintrail.io" }, - "marketcap_usd": 6603705, + "marketcap_usd": 7613830, "name": "OriginTrail", "network": "eth", "shortcut": "TRAC", @@ -24441,7 +24459,7 @@ "links": { "Homepage": "http://www.tracto.org" }, - "marketcap_usd": 209644, + "marketcap_usd": 190733, "name": "Tracto", "network": "eth", "shortcut": "TRCT", @@ -24496,7 +24514,7 @@ "Github": "https://github.com/WeTrustPlatform", "Homepage": "https://www.wetrust.io" }, - "marketcap_usd": 1002663, + "marketcap_usd": 1124619, "name": "WeTrust", "network": "eth", "shortcut": "TRST", @@ -24578,7 +24596,7 @@ "links": { "Homepage": "http://www.ttc.eco" }, - "marketcap_usd": 7987356, + "marketcap_usd": 10332561, "name": "TTC Protocol", "network": "eth", "shortcut": "TTC", @@ -24633,7 +24651,7 @@ "Github": "https://github.com/trusttoken", "Homepage": "https://www.trusttoken.com" }, - "marketcap_usd": 205335902, + "marketcap_usd": 205083249, "name": "TrueUSD", "network": "eth", "shortcut": "TUSD", @@ -24714,7 +24732,7 @@ "links": { "Homepage": "https://taas.fund" }, - "marketcap_usd": 2354353, + "marketcap_usd": 2348685, "name": "Token-as-a-Service", "network": "eth", "shortcut": "TaaS", @@ -24741,7 +24759,7 @@ "links": { "Homepage": "https://unibright.io" }, - "marketcap_usd": 4060532, + "marketcap_usd": 3511766, "name": "Unibright", "network": "eth", "shortcut": "UBT", @@ -24768,7 +24786,7 @@ "links": { "Homepage": "https://u.cash" }, - "marketcap_usd": 1043061, + "marketcap_usd": 1044090, "name": "U.CASH", "network": "eth", "shortcut": "UCASH", @@ -24795,7 +24813,7 @@ "links": { "Homepage": "https://uchain.world" }, - "marketcap_usd": 403669, + "marketcap_usd": 447570, "name": "UChain", "network": "eth", "shortcut": "UCN", @@ -24822,7 +24840,7 @@ "links": { "Homepage": "https://www.upfiring.com" }, - "marketcap_usd": 1453821, + "marketcap_usd": 1407247, "name": "Upfiring", "network": "eth", "shortcut": "UFR", @@ -24850,7 +24868,7 @@ "Github": "https://github.com/unikoingold/UnikoinGold-UKG-Contract", "Homepage": "https://unikoingold.com" }, - "marketcap_usd": 4016771, + "marketcap_usd": 4516587, "name": "UnikoinGold", "network": "eth", "shortcut": "UKG", @@ -24877,7 +24895,7 @@ "links": { "Homepage": "https://uptoken.org" }, - "marketcap_usd": 2811285, + "marketcap_usd": 3440201, "name": "UpToken", "network": "eth", "shortcut": "UP", @@ -24904,7 +24922,7 @@ "links": { "Homepage": "https://sentinelprotocol.io" }, - "marketcap_usd": 3943395, + "marketcap_usd": 3999482, "name": "Sentinel Protocol", "network": "eth", "shortcut": "UPP", @@ -24931,7 +24949,7 @@ "links": { "Homepage": "https://uquidcoin.com" }, - "marketcap_usd": 690476, + "marketcap_usd": 551210, "name": "Uquid Coin", "network": "eth", "shortcut": "UQC", @@ -24987,7 +25005,7 @@ "Github": "https://github.com/centrehq/centre-tokens", "Homepage": "https://www.centre.io" }, - "marketcap_usd": 239606253, + "marketcap_usd": 239598774, "name": "USD//Coin", "network": "eth", "shortcut": "USDC", @@ -25014,7 +25032,7 @@ "links": { "Homepage": "https://stably.io" }, - "marketcap_usd": 5926060, + "marketcap_usd": 5927321, "name": "StableUSD", "network": "eth", "shortcut": "USDS", @@ -25068,7 +25086,7 @@ "links": { "Homepage": "https://utrust.com" }, - "marketcap_usd": 12238084, + "marketcap_usd": 13347657, "name": "UTRUST", "network": "eth", "shortcut": "UTK", @@ -25096,7 +25114,7 @@ "Github": "https://github.com/UniversaBlockchain/universa", "Homepage": "https://www.universa.io" }, - "marketcap_usd": 8148825, + "marketcap_usd": 7620697, "name": "Universa", "network": "eth", "shortcut": "UTNP", @@ -25123,7 +25141,7 @@ "links": { "Homepage": "https://uttoken.io" }, - "marketcap_usd": 10718996, + "marketcap_usd": 11632049, "name": "United Traders Token", "network": "eth", "shortcut": "UTT", @@ -25150,7 +25168,7 @@ "links": { "Homepage": "https://u.network/" }, - "marketcap_usd": 1760728, + "marketcap_usd": 1933066, "name": "U Networks", "network": "eth", "shortcut": "UUU", @@ -25234,7 +25252,7 @@ "Github": "https://github.com/blockv", "Homepage": "https://blockv.io" }, - "marketcap_usd": 11322037, + "marketcap_usd": 12220334, "name": "BLOCKv", "network": "eth", "shortcut": "VEE", @@ -25316,7 +25334,7 @@ "links": { "Homepage": "https://veritas.veritaseum.com" }, - "marketcap_usd": 38585084, + "marketcap_usd": 36774696, "name": "Veritaseum", "network": "eth", "shortcut": "VERI", @@ -25343,7 +25361,7 @@ "links": { "Homepage": "https://www.viberate.com" }, - "marketcap_usd": 4567016, + "marketcap_usd": 4834083, "name": "Viberate", "network": "eth", "shortcut": "VIB", @@ -25370,7 +25388,7 @@ "links": { "Homepage": "https://www.vibehub.io" }, - "marketcap_usd": 10833376, + "marketcap_usd": 10582937, "name": "VIBE Coin", "network": "eth", "shortcut": "VIBE", @@ -25426,7 +25444,7 @@ "Github": "https://github.com/Viewly/", "Homepage": "https://view.ly/" }, - "marketcap_usd": 184495, + "marketcap_usd": 181500, "name": "Viewly", "network": "eth", "shortcut": "VIEW", @@ -25453,7 +25471,7 @@ "links": { "Homepage": "https://ico.vikky.io" }, - "marketcap_usd": 38466, + "marketcap_usd": 26310, "name": "VikkyToken", "network": "eth", "shortcut": "VIKKY", @@ -25481,7 +25499,7 @@ "Github": "https://github.com/ViceIndustryToken", "Homepage": "https://vicetoken.com/" }, - "marketcap_usd": 2223963, + "marketcap_usd": 791776, "name": "Vice Industry Token", "network": "eth", "shortcut": "VIT", @@ -25508,7 +25526,7 @@ "links": { "Homepage": "https://www.vite.org" }, - "marketcap_usd": 7104874, + "marketcap_usd": 8279970, "name": "Vite", "network": "eth", "shortcut": "VITE", @@ -25564,7 +25582,7 @@ "Github": "https://github.com/vetri-global/", "Homepage": "https://vetri.global/" }, - "marketcap_usd": 695766, + "marketcap_usd": 653383, "name": "VETRI", "network": "eth", "shortcut": "VLD", @@ -25619,7 +25637,7 @@ "links": { "Homepage": "https://voise.it" }, - "marketcap_usd": 305916, + "marketcap_usd": 310138, "name": "Voise", "network": "eth", "shortcut": "VOISE", @@ -25646,7 +25664,7 @@ "links": { "Homepage": "https://www.vdice.io" }, - "marketcap_usd": 67623, + "marketcap_usd": 36916, "name": "Vdice", "network": "eth", "shortcut": "VSL", @@ -25701,7 +25719,7 @@ "links": { "Homepage": "https://vezt.co" }, - "marketcap_usd": 1586870, + "marketcap_usd": 2607303, "name": "Vezt", "network": "eth", "shortcut": "VZT", @@ -25728,7 +25746,7 @@ "links": { "Homepage": "https://wab.network" }, - "marketcap_usd": 251734, + "marketcap_usd": 263363, "name": "WABnetwork", "network": "eth", "shortcut": "WAB", @@ -25755,7 +25773,7 @@ "links": { "Homepage": "https://taelpay.com" }, - "marketcap_usd": 10796506, + "marketcap_usd": 13379375, "name": "Tael", "network": "eth", "shortcut": "WABI", @@ -25811,7 +25829,7 @@ "Github": "https://github.com/waxio", "Homepage": "https://wax.io" }, - "marketcap_usd": 39364786, + "marketcap_usd": 44436966, "name": "WAX", "network": "eth", "shortcut": "WAX", @@ -25948,7 +25966,7 @@ "links": { "Homepage": "https://webcoin.today" }, - "marketcap_usd": 116892, + "marketcap_usd": 111353, "name": "Webcoin", "network": "eth", "shortcut": "WEB", @@ -26058,7 +26076,7 @@ "links": { "Homepage": "https://wings.ai" }, - "marketcap_usd": 4286742, + "marketcap_usd": 3922165, "name": "WINGS", "network": "eth", "shortcut": "WINGS", @@ -26085,7 +26103,7 @@ "links": { "Homepage": "https://mywish.io" }, - "marketcap_usd": 345545, + "marketcap_usd": 386682, "name": "MyWish", "network": "eth", "shortcut": "WISH", @@ -26195,7 +26213,7 @@ "links": { "Homepage": "https://wepower.network" }, - "marketcap_usd": 6846510, + "marketcap_usd": 6935339, "name": "WePower Token", "network": "eth", "shortcut": "WPR", @@ -26222,7 +26240,7 @@ "links": { "Homepage": "https://worldcore.eu" }, - "marketcap_usd": 161312, + "marketcap_usd": 137793, "name": "Worldcore", "network": "eth", "shortcut": "WRC", @@ -26277,7 +26295,7 @@ "links": { "Homepage": "http://www.waltonchain.org" }, - "marketcap_usd": 45521293, + "marketcap_usd": 48233432, "name": "Waltonchain", "network": "eth", "shortcut": "WTC", @@ -26360,7 +26378,7 @@ "links": { "Homepage": "https://x8currency.com" }, - "marketcap_usd": 783930, + "marketcap_usd": 924400, "name": "X8X", "network": "eth", "shortcut": "X8X", @@ -26387,7 +26405,7 @@ "links": { "Homepage": "http://www.xaurum.org" }, - "marketcap_usd": 3148684, + "marketcap_usd": 2970649, "name": "Xaurum", "network": "eth", "shortcut": "XAUR", @@ -26442,7 +26460,7 @@ "Github": "https://github.com/blitzpredict", "Homepage": "https://www.blitzpredict.io" }, - "marketcap_usd": 295309, + "marketcap_usd": 268734, "name": "BlitzPredict", "network": "eth", "shortcut": "XBP", @@ -26524,7 +26542,7 @@ "links": { "Homepage": "https://clearcoin.co" }, - "marketcap_usd": 257610, + "marketcap_usd": 229217, "name": "ClearCoin", "network": "eth", "shortcut": "XCLR", @@ -26551,7 +26569,7 @@ "links": { "Homepage": "https://www.xinfin.io" }, - "marketcap_usd": 2389028, + "marketcap_usd": 2101972, "name": "XinFin Network", "network": "eth", "shortcut": "XDCE", @@ -26769,7 +26787,7 @@ "links": { "Homepage": "http://xmedchain.com" }, - "marketcap_usd": 156414, + "marketcap_usd": 198798, "name": "XMED Chain", "network": "eth", "shortcut": "XMCT", @@ -26796,7 +26814,7 @@ "links": { "Homepage": "https://www.xmx.com" }, - "marketcap_usd": 1822756, + "marketcap_usd": 1975684, "name": "XMax", "network": "eth", "shortcut": "XMX", @@ -26824,7 +26842,7 @@ "Github": "https://github.com/InkProtocol/", "Homepage": "https://paywithink.com" }, - "marketcap_usd": 1151168, + "marketcap_usd": 1037407, "name": "Ink Protocol", "network": "eth", "shortcut": "XNK", @@ -26851,7 +26869,7 @@ "links": { "Homepage": "https://xenon.network" }, - "marketcap_usd": 452336, + "marketcap_usd": 173377, "name": "XENON", "network": "eth", "shortcut": "XNN", @@ -26905,7 +26923,7 @@ "links": { "Homepage": "http://www.xov.io" }, - "marketcap_usd": 328294, + "marketcap_usd": 317530, "name": "XOVBank", "network": "eth", "shortcut": "XOV", @@ -26932,7 +26950,7 @@ "links": { "Homepage": "https://xpa.io" }, - "marketcap_usd": 1570742, + "marketcap_usd": 1554675, "name": "XPA", "network": "eth", "shortcut": "XPA", @@ -26960,7 +26978,7 @@ "Github": "https://github.com/Bit-Nation/", "Homepage": "https://bitnation.co" }, - "marketcap_usd": 60176, + "marketcap_usd": 73159, "name": "Pangea Arbitration Token", "network": "eth", "shortcut": "XPAT", @@ -27041,7 +27059,7 @@ "links": { "Homepage": "https://xyo.network" }, - "marketcap_usd": 13509750, + "marketcap_usd": 14572952, "name": "XYO", "network": "eth", "shortcut": "XYO", @@ -27068,7 +27086,7 @@ "links": { "Homepage": "http://www.yeefoundation.com" }, - "marketcap_usd": 1618657, + "marketcap_usd": 1787851, "name": "Yee Token", "network": "eth", "shortcut": "YEE", @@ -27096,7 +27114,7 @@ "Github": "https://github.com/crowdholding/", "Homepage": "https://www.crowdholding.com" }, - "marketcap_usd": 90648, + "marketcap_usd": 63117, "name": "Crowdholding", "network": "eth", "shortcut": "YUP", @@ -27124,7 +27142,7 @@ "Github": "https://github.com/zapproject", "Homepage": "https://zap.store" }, - "marketcap_usd": 1088855, + "marketcap_usd": 1940447, "name": "ZAP", "network": "eth", "shortcut": "ZAP", @@ -27151,7 +27169,7 @@ "links": { "Homepage": "https://0chain.net" }, - "marketcap_usd": 3504016, + "marketcap_usd": 4345153, "name": "0chain", "network": "eth", "shortcut": "ZCN", @@ -27178,7 +27196,7 @@ "links": { "Homepage": "https://www.zebi.io" }, - "marketcap_usd": 2886627, + "marketcap_usd": 2859613, "name": "Zebi", "network": "eth", "shortcut": "ZCO", @@ -27205,7 +27223,7 @@ "links": { "Homepage": "https://zsc.io/" }, - "marketcap_usd": 1503442, + "marketcap_usd": 1521184, "name": "Zeusshield", "network": "eth", "shortcut": "ZCS", @@ -27233,7 +27251,7 @@ "Github": "https://github.com/ZEUS-coin", "Homepage": "https://zeusfundme.com/" }, - "marketcap_usd": 78742, + "marketcap_usd": 77576, "name": "ZeusNetwork", "network": "eth", "shortcut": "ZEUS", @@ -27261,7 +27279,7 @@ "Github": "https://github.com/zilliqa", "Homepage": "https://www.zilliqa.com/" }, - "marketcap_usd": 139826050, + "marketcap_usd": 150090845, "name": "Zilliqa", "network": "eth", "shortcut": "ZIL", @@ -27288,7 +27306,7 @@ "links": { "Homepage": "https://zinc.work" }, - "marketcap_usd": 194637, + "marketcap_usd": 243083, "name": "ZINC", "network": "eth", "shortcut": "ZINC", @@ -27315,7 +27333,7 @@ "links": { "Homepage": "http://zipper.io" }, - "marketcap_usd": 6003476, + "marketcap_usd": 6024469, "name": "Zipper", "network": "eth", "shortcut": "ZIP", @@ -27342,7 +27360,7 @@ "links": { "Homepage": "https://zippie.org" }, - "marketcap_usd": 392481, + "marketcap_usd": 460256, "name": "Zippie", "network": "eth", "shortcut": "ZIPT", @@ -27397,7 +27415,7 @@ "links": { "Homepage": "https://zla.io" }, - "marketcap_usd": 654556, + "marketcap_usd": 650387, "name": "Zilla", "network": "eth", "shortcut": "ZLA", @@ -27424,7 +27442,7 @@ "links": { "Homepage": "https://www.zmine.com" }, - "marketcap_usd": 1189910, + "marketcap_usd": 1147057, "name": "ZMINE", "network": "eth", "shortcut": "ZMN", @@ -27451,7 +27469,7 @@ "links": { "Homepage": "https://zper.io" }, - "marketcap_usd": 1239791, + "marketcap_usd": 1153029, "name": "ZPER", "network": "eth", "shortcut": "ZPR", @@ -27479,7 +27497,7 @@ "Github": "https://github.com/0xProject", "Homepage": "https://0xproject.com" }, - "marketcap_usd": 139391703, + "marketcap_usd": 145229516, "name": "0x Project", "network": "eth", "shortcut": "ZRX", @@ -27533,7 +27551,7 @@ "links": { "Homepage": "https://0xcert.org" }, - "marketcap_usd": 1090787, + "marketcap_usd": 941561, "name": "0xcert Protocol Token", "network": "eth", "shortcut": "ZXC", @@ -27561,7 +27579,7 @@ "Github": "https://github.com/carVertical", "Homepage": "https://www.carvertical.com" }, - "marketcap_usd": 2263609, + "marketcap_usd": 2369449, "name": "carVertical", "network": "eth", "shortcut": "cV", @@ -27671,7 +27689,7 @@ "Github": "https://github.com/eosdac", "Homepage": "https://eosdac.io/" }, - "marketcap_usd": 4219255, + "marketcap_usd": 3913266, "name": "eosDAC", "network": "eth", "shortcut": "eosDAC", @@ -27699,7 +27717,7 @@ "Github": "https://github.com/havven/", "Homepage": "https://www.synthetix.io" }, - "marketcap_usd": 975622, + "marketcap_usd": 1027691, "name": "USD Synth (sUSD)", "network": "eth", "shortcut": "sUSD", @@ -27794,7 +27812,7 @@ "links": { "Homepage": "https://akroma.io" }, - "marketcap_usd": 136909, + "marketcap_usd": 143157, "name": "Akroma", "shortcut": "AKA", "t1_enabled": "yes", @@ -27815,7 +27833,7 @@ "links": { "Homepage": "https://atheios.com" }, - "marketcap_usd": 33036, + "marketcap_usd": 38135, "name": "Atheios", "shortcut": "ATH", "t1_enabled": "yes", @@ -27858,7 +27876,7 @@ "links": { "Homepage": "https://callisto.network" }, - "marketcap_usd": 6248512, + "marketcap_usd": 6413273, "name": "Callisto", "shortcut": "CLO", "t1_enabled": "yes", @@ -27875,11 +27893,32 @@ } ] }, + "eth:DXN": { + "links": { + "Homepage": "https://dexon.org" + }, + "marketcap_usd": 0, + "name": "DEXON", + "shortcut": "DXN", + "t1_enabled": "soon", + "t2_enabled": "soon", + "type": "coin", + "wallet": [ + { + "name": "MyCrypto", + "url": "https://mycrypto.com" + }, + { + "name": "MyEtherWallet", + "url": "https://www.myetherwallet.com" + } + ] + }, "eth:EGEM": { "links": { "Homepage": "https://egem.io" }, - "marketcap_usd": 189110, + "marketcap_usd": 171587, "name": "EtherGem", "shortcut": "EGEM", "t1_enabled": "yes", @@ -27900,7 +27939,7 @@ "links": { "Homepage": "https://ellaism.org" }, - "marketcap_usd": 120582, + "marketcap_usd": 132548, "name": "Ellaism", "shortcut": "ELLA", "t1_enabled": "yes", @@ -27943,7 +27982,7 @@ "links": { "Homepage": "https://ethersocial.org" }, - "marketcap_usd": 538333, + "marketcap_usd": 564949, "name": "Ethersocial Network", "shortcut": "ESN", "t1_enabled": "yes", @@ -27964,7 +28003,7 @@ "links": { "Homepage": "https://ethereumclassic.github.io" }, - "marketcap_usd": 470916564, + "marketcap_usd": 470061597, "name": "Ethereum Classic", "shortcut": "ETC", "t1_enabled": "yes", @@ -27989,7 +28028,7 @@ "links": { "Homepage": "https://www.ethereum.org" }, - "marketcap_usd": 14618374361, + "marketcap_usd": 14495006939, "name": "Ethereum", "shortcut": "ETH", "t1_enabled": "yes", @@ -28014,7 +28053,7 @@ "links": { "Homepage": "https://ether1.org" }, - "marketcap_usd": 177637, + "marketcap_usd": 172086, "name": "Ether-1", "shortcut": "ETHO", "t1_enabled": "yes", @@ -28056,7 +28095,7 @@ "links": { "Homepage": "https://expanse.tech" }, - "marketcap_usd": 993732, + "marketcap_usd": 916208, "name": "Expanse", "shortcut": "EXP", "t1_enabled": "yes", @@ -28077,7 +28116,7 @@ "links": { "Homepage": "https://gochain.io" }, - "marketcap_usd": 14675033, + "marketcap_usd": 16463894, "name": "GoChain", "shortcut": "GO", "t1_enabled": "yes", @@ -28119,7 +28158,7 @@ "links": { "Homepage": "https://musicoin.org" }, - "marketcap_usd": 1039642, + "marketcap_usd": 1003559, "name": "Musicoin", "shortcut": "MUSIC", "t1_enabled": "yes", @@ -28140,7 +28179,7 @@ "links": { "Homepage": "https://pirl.io" }, - "marketcap_usd": 1145598, + "marketcap_usd": 1160719, "name": "Pirl", "shortcut": "PIRL", "t1_enabled": "yes", @@ -28203,7 +28242,7 @@ "links": { "Homepage": "https://ubiqsmart.com" }, - "marketcap_usd": 9461687, + "marketcap_usd": 8693248, "name": "Ubiq", "shortcut": "UBQ", "t1_enabled": "yes", @@ -28246,7 +28285,7 @@ "Github": "https://github.com/input-output-hk/cardano-sl", "Homepage": "https://www.cardano.org" }, - "marketcap_usd": 1116666368, + "marketcap_usd": 1206434780, "name": "Cardano", "shortcut": "ADA", "t1_enabled": "no", @@ -28259,25 +28298,12 @@ } ] }, - "misc:EOS": { - "links": { - "Github": "https://github.com/EOSIO/eos", - "Homepage": "https://eos.io" - }, - "marketcap_usd": 3405590963, - "name": "EOS", - "shortcut": "EOS", - "t1_enabled": "no", - "t2_enabled": "soon", - "type": "coin", - "wallet": [] - }, "misc:LSK": { "links": { "Github": "https://github.com/LiskHQ/lisk", "Homepage": "https://lisk.io/" }, - "marketcap_usd": 147662614, + "marketcap_usd": 149144059, "name": "Lisk", "shortcut": "LSK", "t1_enabled": "yes", @@ -28290,7 +28316,7 @@ "Github": "https://github.com/maidsafe", "Homepage": "https://maidsafe.net" }, - "marketcap_usd": 55247328, + "marketcap_usd": 54074042, "name": "MaidSafeCoin", "shortcut": "MAID", "t1_enabled": "yes", @@ -28303,7 +28329,7 @@ "Github": "https://github.com/OmniLayer", "Homepage": "https://www.omnilayer.org" }, - "marketcap_usd": 1528282, + "marketcap_usd": 1508779, "name": "Omni", "shortcut": "OMNI", "t1_enabled": "yes", @@ -28311,37 +28337,11 @@ "type": "coin", "wallet": [] }, - "misc:ONT": { - "links": { - "Github": "https://github.com/ontio/ontology", - "Homepage": "https://ont.io" - }, - "marketcap_usd": 296755130, - "name": "Ontology", - "shortcut": "ONT", - "t1_enabled": "no", - "t2_enabled": "soon", - "type": "coin", - "wallet": [] - }, - "misc:TRX": { - "links": { - "Github": "https://github.com/tronprotocol/java-tron", - "Homepage": "https://tron.network" - }, - "marketcap_usd": 1572983068, - "name": "Tron", - "shortcut": "TRX", - "t1_enabled": "no", - "t2_enabled": "soon", - "type": "coin", - "wallet": [] - }, "misc:USDT": { "links": { "Homepage": "https://tether.to" }, - "marketcap_usd": 2044098914, + "marketcap_usd": 2006477482, "name": "Tether", "shortcut": "USDT", "t1_enabled": "yes", @@ -28354,7 +28354,7 @@ "Github": "https://github.com/wanchain/go-wanchain", "Homepage": "https://wanchain.org" }, - "marketcap_usd": 32993128, + "marketcap_usd": 45864710, "name": "Wanchain", "shortcut": "WAN", "t1_enabled": "yes", @@ -28367,7 +28367,7 @@ "Github": "https://github.com/stellar/stellar-core", "Homepage": "https://www.stellar.org" }, - "marketcap_usd": 1637256205, + "marketcap_usd": 1723099605, "name": "Stellar", "shortcut": "XLM", "t1_enabled": "yes", @@ -28385,7 +28385,7 @@ "Github": "https://github.com/monero-project/monero", "Homepage": "https://getmonero.org" }, - "marketcap_usd": 851256587, + "marketcap_usd": 853333997, "name": "Monero", "shortcut": "XMR", "t1_enabled": "no", @@ -28398,20 +28398,25 @@ "Github": "https://github.com/ripple/rippled", "Homepage": "https://ripple.com" }, - "marketcap_usd": 13063618481, + "marketcap_usd": 12995097542, "name": "Ripple", "shortcut": "XRP", "t1_enabled": "no", "t2_enabled": "yes", "type": "coin", - "wallet": [] + "wallet": [ + { + "name": "Trezor Beta", + "url": "https://beta-wallet.trezor.io/next/" + } + ] }, "misc:XTZ": { "links": { "Github": "https://github.com/tezos/tezos", "Homepage": "https://tezos.com" }, - "marketcap_usd": 257683907, + "marketcap_usd": 253013171, "name": "Tezos", "shortcut": "XTZ", "t1_enabled": "no", @@ -28445,7 +28450,7 @@ "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 3737958, + "marketcap_usd": 3557489, "name": "DIMCOIN", "shortcut": "DIM", "t1_enabled": "yes", @@ -28463,7 +28468,7 @@ "links": { "Homepage": "https://www.dimcoin.io" }, - "marketcap_usd": 3737958, + "marketcap_usd": 3557489, "name": "DIM TOKEN", "shortcut": "DIMTOK", "t1_enabled": "yes", @@ -28514,7 +28519,7 @@ "links": { "Homepage": "https://nem.io" }, - "marketcap_usd": 378925455, + "marketcap_usd": 414545095, "name": "NEM", "shortcut": "XEM", "t1_enabled": "yes", @@ -28529,12 +28534,12 @@ } }, "info": { - "marketcap_supported": "89.89 %", - "marketcap_usd": 119446732135, + "marketcap_supported": "89.84 %", + "marketcap_usd": 121180711248, "t1_coins": 1065, "t2_coins": 1071, - "total_marketcap_usd": 132880688424, - "updated_at": 1551877570, - "updated_at_readable": "Wed Mar 6 14:06:10 2019" + "total_marketcap_usd": 134883264819, + "updated_at": 1552174312, + "updated_at_readable": "Sun Mar 10 00:31:52 2019" } } \ No newline at end of file diff --git a/defs/misc/misc.json b/defs/misc/misc.json index 7abf2a944..c96f840da 100644 --- a/defs/misc/misc.json +++ b/defs/misc/misc.json @@ -50,7 +50,9 @@ "Homepage": "https://ripple.com", "Github": "https://github.com/ripple/rippled" }, - "wallet": {}, + "wallet": { + "Trezor Beta": "https://beta-wallet.trezor.io/next/" + }, "blockchain_link": { "type": "ripple", "url": [ diff --git a/defs/support.json b/defs/support.json index 955b94ff4..3512acfb5 100644 --- a/defs/support.json +++ b/defs/support.json @@ -62,7 +62,6 @@ "bitcoin:BTDX": "1.7.2", "bitcoin:BTG": "1.6.2", "bitcoin:BTX": "1.7.1", - "bitcoin:CPC": "soon", "bitcoin:DASH": "1.5.2", "bitcoin:DCR": "1.6.2", "bitcoin:DGB": "1.6.3", @@ -85,6 +84,7 @@ "bitcoin:NMC": "1.5.2", "bitcoin:PIVX": "1.8.0", "bitcoin:PTC": "1.7.1", + "bitcoin:QTUM": "1.8.1", "bitcoin:RVN": "1.7.2", "bitcoin:SMART": "1.7.1", "bitcoin:TAZ": "1.6.2", @@ -104,6 +104,7 @@ "bitcoin:tDASH": "1.6.2", "bitcoin:tGRS": "1.6.2", "bitcoin:tPIVX": "1.8.0", + "bitcoin:tQTUM": "1.8.1", "bitcoin:tSMART": "1.7.1", "bitcoin:tXZC": "1.6.2", "erc20:ella:MINING": "1.6.2", @@ -1193,6 +1194,7 @@ "eth:ATH": "1.6.3", "eth:ATS": "1.8.0", "eth:CLO": "1.6.2", + "eth:DXN": "1.8.1", "eth:EGEM": "1.6.2", "eth:ELLA": "1.6.2", "eth:EOSC": "1.6.2", @@ -1412,6 +1414,7 @@ "bitcoin:NMC": "2.0.5", "bitcoin:PIVX": "2.0.11", "bitcoin:PTC": "2.0.8", + "bitcoin:QTUM": "2.1.1", "bitcoin:RVN": "2.0.10", "bitcoin:SMART": "2.0.8", "bitcoin:TAZ": "2.0.7", @@ -1432,6 +1435,7 @@ "bitcoin:tDASH": "2.0.8", "bitcoin:tGRS": "2.0.8", "bitcoin:tPIVX": "2.0.11", + "bitcoin:tQTUM": "2.1.1", "bitcoin:tSMART": "2.0.8", "bitcoin:tXZC": "2.0.7", "erc20:ella:MINING": "2.0.7", @@ -2521,6 +2525,7 @@ "eth:ATH": "2.0.8", "eth:ATS": "2.0.11", "eth:CLO": "2.0.7", + "eth:DXN": "2.1.1", "eth:EGEM": "2.0.7", "eth:ELLA": "2.0.7", "eth:EOSC": "2.0.7", @@ -2544,12 +2549,9 @@ "eth:tRIN": "2.0.7", "eth:tROP": "2.0.7", "misc:ADA": "2.0.8", - "misc:EOS": "soon", "misc:LSK": "2.0.7", "misc:MAID": "2.0.10", "misc:OMNI": "2.0.10", - "misc:ONT": "soon", - "misc:TRX": "soon", "misc:USDT": "2.0.10", "misc:WAN": "2.0.7", "misc:XLM": "2.0.8", From c5e54d7535c8772b9a75ff90c506a28526f94267 Mon Sep 17 00:00:00 2001 From: Tomas Susanka Date: Thu, 7 Mar 2019 14:53:08 +0100 Subject: [PATCH 742/767] protob: add mnemonic type to DebugLinkState --- protob/messages-debug.proto | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/protob/messages-debug.proto b/protob/messages-debug.proto index 6c6e415a2..ff1a458c7 100644 --- a/protob/messages-debug.proto +++ b/protob/messages-debug.proto @@ -34,7 +34,7 @@ message DebugLinkState { optional bytes layout = 1; // raw buffer of display optional string pin = 2; // current PIN, blank if PIN is not set/enabled optional string matrix = 3; // current PIN matrix - optional string mnemonic = 4; // current BIP-39 mnemonic + optional bytes mnemonic_secret = 4; // current mnemonic secret optional hw.trezor.messages.common.HDNodeType node = 5; // current BIP-32 node optional bool passphrase_protection = 6; // is node/mnemonic encrypted using passphrase? optional string reset_word = 7; // word on device display during ResetDevice workflow @@ -42,6 +42,7 @@ message DebugLinkState { optional string recovery_fake_word = 9; // (fake) word on display during RecoveryDevice workflow optional uint32 recovery_word_pos = 10; // index of mnemonic word the device is expecting during RecoveryDevice workflow optional uint32 reset_word_pos = 11; // index of mnemonic word the device is expecting during ResetDevice workflow + optional uint32 mnemonic_type = 12; // current mnemonic type (BIP-39/SLIP-39) } /** From d26cff580059cf42562094477aa2d1795027be3f Mon Sep 17 00:00:00 2001 From: Hsuan Lee Date: Wed, 13 Mar 2019 19:34:37 +0800 Subject: [PATCH 743/767] defs: Update DEXON icon (#293) --- defs/ethereum/dxn.png | Bin 14664 -> 1397 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/defs/ethereum/dxn.png b/defs/ethereum/dxn.png index d546a3d33f7c6b0db779801614a7d69a95b601d4..826dc2461ff73940d49f7d7dec4b88099db0615c 100644 GIT binary patch literal 1397 zcmaJ>do$qB?LzK4{k zo1%b!Wm3~BiV+3q+5*QYTaYSNkXwNLz5yR`_qhDaKy0%}p{p@Mu{+JvHc#q0q*^{L@h;~!G)N)Exm7zJ!VC*hQx`^ZtSOmS()z-ve% z6-kAO0e&G(%wvbOYVlEz2eaTMKnI>p>$~98&rkcclG~h<=F?Qfdvyd5=-g26;$`D1 zxn9cLoy-yQBfDUV05!l5HyRcxM=YV7ErgpYlbmIfy7bTCvJ8Wa>L61Xu;`h3G& zVYFPbAcG*&S;Vr)JMVJ`gGh68a@GUt)2Da+20;#tms#e8HaldPz## z{gWHqcSbyA31>9TqFmdfi5a8r^V)3ZUq;L3YyjB}np!i@3D9fTS1aBjEm{7%M;)u$ zG9zCEqeB#%;Y+?4BHoW=+h(U5#kX0vj%xhefL+4M1rT=Xi zJ8nydMxK`rEzO9vpLH9_e!<>9aAB|1MYmEg`2-_7DXAjj71Y?4mkj(+5|S%mxGRZ7 za@!$r%^g*nzPOrSqt#f2_H=v!pK)MyC=orLq~2Xy4Hs6vUW*_WbG0;YV^6|*w~`|G zj5qJ!+UL~}@#IckCQvrJ1?@Q~Vcyp^uZ=eLEW4f3>rRqoGcpJj4|93+ilg6ci_tx; zmQ397P;2;7TLVzW;>r%C1t>S3=jOcvbrvAu<>w((9MS_^r<9mCWTm#)m~Q*s&q6w# zTBf9JOi(+7W96cku9`4KXW8j@GheWm=p9X)qK|MgE^{xY+_Kd0N@gp3U$sa*A4AE< hsv~Gn@V^xJq*_4m2z>Oi(M$P90ar&)2eBQ4{SUE_UjhIC literal 14664 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 Rz3Y$!z|?eA>y>Sy{s-oy5r_Z) From d490121e15ac566a6f9530b12aa73869fb67c03b Mon Sep 17 00:00:00 2001 From: Traysi Hylian <34982844+traysi@users.noreply.github.com> Date: Wed, 13 Mar 2019 10:41:54 -0500 Subject: [PATCH 744/767] Added RVN to wallets.json (#294) --- defs/wallets.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/defs/wallets.json b/defs/wallets.json index c75cc772b..d92f05b8c 100644 --- a/defs/wallets.json +++ b/defs/wallets.json @@ -60,5 +60,8 @@ }, "bitcoin:QTUM": { "Qtum-Electrum": "https://github.com/qtumproject/qtum-electrum" + }, + "bitcoin:RVN": { + "Electrum-RVN": "https://github.com/traysi/electrum-raven" } } From 04bac52951764d5516206f5359cfc5f5c24eb38f Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Wed, 13 Mar 2019 16:59:26 +0100 Subject: [PATCH 745/767] protob: add check for message prefixes; fix binance message names --- .travis.yml | 1 + protob/check.py | 23 +++++++++++++++++++++++ protob/messages-binance.proto | 28 ++++++++++++++-------------- 3 files changed, 38 insertions(+), 14 deletions(-) create mode 100755 protob/check.py diff --git a/.travis.yml b/.travis.yml index 2c2dbd900..ab1b58f1b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -25,6 +25,7 @@ script: - jsonlint defs/*/*.json - python tools/cointool.py check - python tools/support.py check --ignore-missing + - cd protob && python check.py - python protob/graph.py protob/*.proto notifications: diff --git a/protob/check.py b/protob/check.py new file mode 100755 index 000000000..95ed433f9 --- /dev/null +++ b/protob/check.py @@ -0,0 +1,23 @@ +#!/usr/bin/env python3 +from glob import glob +import sys + +error = False + +for fn in sorted(glob("messages-*.proto")): + with open(fn, "rt") as f: + prefix = fn.split(".")[0][9:].capitalize() + if prefix in ["Bitcoin", "Bootloader", "Common", "Crypto", "Management"]: + continue + if prefix == "Nem": + prefix = "NEM" + for line in f: + line = line.strip().split(" ") + if line[0] not in ["enum", "message"]: + continue + if not line[1].startswith(prefix) and not line[1].startswith("Debug" + prefix): + print("ERROR:", fn, line[1]) + error = True + +if error: + sys.exit(1) diff --git a/protob/messages-binance.proto b/protob/messages-binance.proto index 7afa466a5..95c04a383 100644 --- a/protob/messages-binance.proto +++ b/protob/messages-binance.proto @@ -76,17 +76,17 @@ message BinanceTxRequest { * @next Failure */ message BinanceTransferMsg { - repeated InputOutput inputs = 1; - repeated InputOutput outputs = 2; + repeated BinanceInputOutput inputs = 1; + repeated BinanceInputOutput outputs = 2; - message Coin { - optional sint64 amount = 1; - optional string denom = 2; + message BinanceInputOutput { + optional string address = 1; + repeated BinanceCoin coins = 2; } - message InputOutput { - optional string address = 1; - repeated Coin coins = 2; + message BinanceCoin { + optional sint64 amount = 1; + optional string denom = 2; } } @@ -98,28 +98,28 @@ message BinanceTransferMsg { */ message BinanceOrderMsg { optional string id = 1; - optional OrderType ordertype = 2; + optional BinanceOrderType ordertype = 2; optional sint64 price = 3; optional sint64 quantity = 4; optional string sender = 5; - optional OrderSide side = 6; + optional BinanceOrderSide side = 6; optional string symbol = 7; - optional TimeInForce timeinforce = 8; + optional BinanceTimeInForce timeinforce = 8; - enum OrderType { + enum BinanceOrderType { OT_UNKNOWN = 0; MARKET = 1; LIMIT = 2; OT_RESERVED = 3; } - enum OrderSide { + enum BinanceOrderSide { SIDE_UNKNOWN = 0; BUY = 1; SELL = 2; } - enum TimeInForce { + enum BinanceTimeInForce { TIF_UNKNOWN = 0; GTE = 1; TIF_RESERVED = 2; From 4c56cb6ea13c453e8686ee3b473374b30e62d255 Mon Sep 17 00:00:00 2001 From: Smirnov Dmitry Date: Mon, 18 Mar 2019 13:39:35 +0300 Subject: [PATCH 746/767] defs: add Komodo (KMD) to Connect (#297) --- defs/support.json | 1 + 1 file changed, 1 insertion(+) diff --git a/defs/support.json b/defs/support.json index 3512acfb5..c3b48a31f 100644 --- a/defs/support.json +++ b/defs/support.json @@ -7,6 +7,7 @@ "bitcoin:CPC": true, "bitcoin:DASH": true, "bitcoin:DOGE": true, + "bitcoin:KMD": true, "bitcoin:LTC": true, "bitcoin:NMC": true, "bitcoin:TEST": true, From 617f8fee6237811ed090741da92d2ab331908f19 Mon Sep 17 00:00:00 2001 From: matejcik Date: Thu, 21 Mar 2019 12:22:55 +0100 Subject: [PATCH 747/767] travis: run all python scripts from top-level directory --- .travis.yml | 2 +- protob/check.py | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index ab1b58f1b..978c264a1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -25,7 +25,7 @@ script: - jsonlint defs/*/*.json - python tools/cointool.py check - python tools/support.py check --ignore-missing - - cd protob && python check.py + - python protob/check.py - python protob/graph.py protob/*.proto notifications: diff --git a/protob/check.py b/protob/check.py index 95ed433f9..13331deaa 100755 --- a/protob/check.py +++ b/protob/check.py @@ -1,10 +1,13 @@ #!/usr/bin/env python3 from glob import glob +import os import sys error = False -for fn in sorted(glob("messages-*.proto")): +MYDIR = os.path.dirname(__file__) + +for fn in sorted(glob(os.path.join(MYDIR, "messages-*.proto"))): with open(fn, "rt") as f: prefix = fn.split(".")[0][9:].capitalize() if prefix in ["Bitcoin", "Bootloader", "Common", "Crypto", "Management"]: From 86e124e3b214ac7470590a1f31b9fcff6559d9c0 Mon Sep 17 00:00:00 2001 From: matejcik Date: Thu, 21 Mar 2019 12:30:37 +0100 Subject: [PATCH 748/767] protob: fix check.py to match proper prefix --- protob/check.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/protob/check.py b/protob/check.py index 13331deaa..0b612d4e8 100755 --- a/protob/check.py +++ b/protob/check.py @@ -1,15 +1,18 @@ #!/usr/bin/env python3 from glob import glob import os +import re import sys error = False MYDIR = os.path.dirname(__file__) +EXPECTED_PREFIX_RE = re.compile(r"messages-(\w+)\.proto") + for fn in sorted(glob(os.path.join(MYDIR, "messages-*.proto"))): with open(fn, "rt") as f: - prefix = fn.split(".")[0][9:].capitalize() + prefix = EXPECTED_PREFIX_RE.search(fn).group(1).capitalize() if prefix in ["Bitcoin", "Bootloader", "Common", "Crypto", "Management"]: continue if prefix == "Nem": From 893aedf3921b61d09a5dac211eb39c0a4ca0526c Mon Sep 17 00:00:00 2001 From: Hsuan Lee Date: Mon, 25 Mar 2019 22:20:20 +0800 Subject: [PATCH 749/767] defs: replace DEXON icon (#299) --- defs/ethereum/dxn.png | Bin 1397 -> 2858 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/defs/ethereum/dxn.png b/defs/ethereum/dxn.png index 826dc2461ff73940d49f7d7dec4b88099db0615c..30a1f89aefe2ac8a797ff71ca680c35d9c55e4df 100644 GIT binary patch delta 2831 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 AH~;_u From 792a4eddb5afa366181b7b2f8a5d84532b31a6a1 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 26 Mar 2019 12:22:57 +0100 Subject: [PATCH 750/767] defs: fix segwit related fields --- defs/bitcoin/actinium.json | 70 +++++++++++++++--------------- defs/bitcoin/bgold.json | 2 +- defs/bitcoin/bgold_testnet.json | 2 +- defs/bitcoin/bitsend.json | 2 +- defs/bitcoin/digibyte.json | 2 +- defs/bitcoin/feathercoin.json | 2 +- defs/bitcoin/flashcoin.json | 4 +- defs/bitcoin/florincoin.json | 2 +- defs/bitcoin/gamecredits.json | 2 +- defs/bitcoin/litecoin.json | 2 +- defs/bitcoin/litecoin_testnet.json | 4 +- defs/bitcoin/megacoin.json | 2 +- defs/bitcoin/monacoin.json | 4 +- defs/bitcoin/myriad.json | 6 +-- defs/bitcoin/nix.json | 2 +- defs/bitcoin/pesetacoin.json | 4 +- defs/bitcoin/vertcoin.json | 2 +- defs/bitcoin/viacoin.json | 2 +- tools/cointool.py | 49 +++++++++------------ 19 files changed, 79 insertions(+), 86 deletions(-) diff --git a/defs/bitcoin/actinium.json b/defs/bitcoin/actinium.json index ed072ff2c..a30304f3e 100644 --- a/defs/bitcoin/actinium.json +++ b/defs/bitcoin/actinium.json @@ -1,38 +1,38 @@ { - "coin_name": "Actinium", - "coin_shortcut": "ACM", - "coin_label": "Actinium", - "website": "https://actinium.org", - "github": "https://github.com/Actinium-project/Actinium", - "maintainer": "Harris Brakmic ", - "curve_name": "secp256k1", - "address_type": 53, - "address_type_p2sh": 55, - "maxfee_kb": 40000000, - "minfee_kb": 100000, - "signed_message_header": "Actinium Signed Message:\n", - "hash_genesis_block": "28d77872e23714562f49a1be792c276623c1bbe3fdcf21b6035cfde78b00b824", - "xprv_magic": 76066276, - "xpub_magic": 76067358, - "xpub_magic_segwit_p2sh": 77429938, - "xpub_magic_segwit_native": null, - "bech32_prefix": "acm", - "cashaddr_prefix": null, - "slip44": 228, - "segwit": true, - "decred": false, - "fork_id": null, - "force_bip143": false, - "bip115": false, - "default_fee_b": { + "coin_name": "Actinium", + "coin_shortcut": "ACM", + "coin_label": "Actinium", + "website": "https://actinium.org", + "github": "https://github.com/Actinium-project/Actinium", + "maintainer": "Harris Brakmic ", + "curve_name": "secp256k1", + "address_type": 53, + "address_type_p2sh": 55, + "maxfee_kb": 40000000, + "minfee_kb": 100000, + "signed_message_header": "Actinium Signed Message:\n", + "hash_genesis_block": "28d77872e23714562f49a1be792c276623c1bbe3fdcf21b6035cfde78b00b824", + "xprv_magic": 76066276, + "xpub_magic": 76067358, + "xpub_magic_segwit_p2sh": 77429938, + "xpub_magic_segwit_native": 78792518, + "bech32_prefix": "acm", + "cashaddr_prefix": null, + "slip44": 228, + "segwit": true, + "decred": false, + "fork_id": null, + "force_bip143": false, + "bip115": false, + "default_fee_b": { "Normal": 1000 - }, - "dust_limit": 546, - "blocktime_seconds": 150, - "uri_prefix": "actinium", - "min_address_length": 27, - "max_address_length": 34, - "bitcore": [], - "blockbook": [], - "cooldown": 100 + }, + "dust_limit": 546, + "blocktime_seconds": 150, + "uri_prefix": "actinium", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [], + "blockbook": [], + "cooldown": 100 } diff --git a/defs/bitcoin/bgold.json b/defs/bitcoin/bgold.json index 75132f7f6..e3e780335 100644 --- a/defs/bitcoin/bgold.json +++ b/defs/bitcoin/bgold.json @@ -15,7 +15,7 @@ "xprv_magic": 76066276, "xpub_magic": 76067358, "xpub_magic_segwit_p2sh": 77429938, - "xpub_magic_segwit_native": null, + "xpub_magic_segwit_native": 78792518, "bech32_prefix": "btg", "cashaddr_prefix": null, "slip44": 156, diff --git a/defs/bitcoin/bgold_testnet.json b/defs/bitcoin/bgold_testnet.json index e3dae9b2c..8007db7fd 100644 --- a/defs/bitcoin/bgold_testnet.json +++ b/defs/bitcoin/bgold_testnet.json @@ -15,7 +15,7 @@ "xprv_magic": 70615956, "xpub_magic": 70617039, "xpub_magic_segwit_p2sh": 71979618, - "xpub_magic_segwit_native": null, + "xpub_magic_segwit_native": 73342198, "bech32_prefix": "tbtg", "cashaddr_prefix": null, "slip44": 156, diff --git a/defs/bitcoin/bitsend.json b/defs/bitcoin/bitsend.json index 02b5196e1..25a1084f0 100644 --- a/defs/bitcoin/bitsend.json +++ b/defs/bitcoin/bitsend.json @@ -16,7 +16,7 @@ "xpub_magic": 76067358, "xpub_magic_segwit_p2sh": 77429938, "xpub_magic_segwit_native": 78792518, - "bech32_prefix": null, + "bech32_prefix": "bsd", "cashaddr_prefix": null, "slip44": 91, "segwit": true, diff --git a/defs/bitcoin/digibyte.json b/defs/bitcoin/digibyte.json index a7041e970..165c8588e 100644 --- a/defs/bitcoin/digibyte.json +++ b/defs/bitcoin/digibyte.json @@ -15,7 +15,7 @@ "xprv_magic": 76066276, "xpub_magic": 76067358, "xpub_magic_segwit_p2sh": 77429938, - "xpub_magic_segwit_native": null, + "xpub_magic_segwit_native": 78792518, "bech32_prefix": "dgb", "cashaddr_prefix": null, "slip44": 20, diff --git a/defs/bitcoin/feathercoin.json b/defs/bitcoin/feathercoin.json index 06eabb87d..cd750189c 100644 --- a/defs/bitcoin/feathercoin.json +++ b/defs/bitcoin/feathercoin.json @@ -15,7 +15,7 @@ "xprv_magic": 76077806, "xpub_magic": 76069926, "xpub_magic_segwit_p2sh": 77429938, - "xpub_magic_segwit_native": null, + "xpub_magic_segwit_native": 78792518, "bech32_prefix": "fc", "cashaddr_prefix": null, "slip44": 8, diff --git a/defs/bitcoin/flashcoin.json b/defs/bitcoin/flashcoin.json index 71159aa2e..68505ef21 100644 --- a/defs/bitcoin/flashcoin.json +++ b/defs/bitcoin/flashcoin.json @@ -15,8 +15,8 @@ "xprv_magic": 76066276, "xpub_magic": 76067358, "xpub_magic_segwit_p2sh": 77429938, - "xpub_magic_segwit_native": null, - "bech32_prefix": null, + "xpub_magic_segwit_native": 78792518, + "bech32_prefix": "flash", "cashaddr_prefix": null, "slip44": 120, "segwit": true, diff --git a/defs/bitcoin/florincoin.json b/defs/bitcoin/florincoin.json index 6458916e5..d77b6f910 100644 --- a/defs/bitcoin/florincoin.json +++ b/defs/bitcoin/florincoin.json @@ -15,7 +15,7 @@ "xprv_magic": 15264107, "xpub_magic": 1526049, "xpub_magic_segwit_p2sh": 28471030, - "xpub_magic_segwit_native": null, + "xpub_magic_segwit_native": 78792518, "bech32_prefix": "flo", "cashaddr_prefix": null, "slip44": 216, diff --git a/defs/bitcoin/gamecredits.json b/defs/bitcoin/gamecredits.json index 43cc86f26..6d6d46aee 100644 --- a/defs/bitcoin/gamecredits.json +++ b/defs/bitcoin/gamecredits.json @@ -15,7 +15,7 @@ "xpub_magic": 27106558, "xprv_magic": 27108450, "xpub_magic_segwit_p2sh": 28471030, - "xpub_magic_segwit_native": null, + "xpub_magic_segwit_native": 78792518, "bech32_prefix": "game", "cashaddr_prefix": null, "slip44": 101, diff --git a/defs/bitcoin/litecoin.json b/defs/bitcoin/litecoin.json index 920718d95..114af980a 100644 --- a/defs/bitcoin/litecoin.json +++ b/defs/bitcoin/litecoin.json @@ -15,7 +15,7 @@ "xprv_magic": 27106558, "xpub_magic": 27108450, "xpub_magic_segwit_p2sh": 28471030, - "xpub_magic_segwit_native": null, + "xpub_magic_segwit_native": 78792518, "bech32_prefix": "ltc", "cashaddr_prefix": null, "slip44": 2, diff --git a/defs/bitcoin/litecoin_testnet.json b/defs/bitcoin/litecoin_testnet.json index d9cbf3586..b2e80903f 100644 --- a/defs/bitcoin/litecoin_testnet.json +++ b/defs/bitcoin/litecoin_testnet.json @@ -14,8 +14,8 @@ "hash_genesis_block": "4966625a4b2851d9fdee139e56211a0d88575f59ed816ff5e6a63deb4e3e29a0", "xprv_magic": 70615956, "xpub_magic": 70617039, - "xpub_magic_segwit_p2sh": null, - "xpub_magic_segwit_native": null, + "xpub_magic_segwit_p2sh": 71979618, + "xpub_magic_segwit_native": 73342198, "bech32_prefix": "tltc", "cashaddr_prefix": null, "slip44": 1, diff --git a/defs/bitcoin/megacoin.json b/defs/bitcoin/megacoin.json index 077c99b17..4fa60aff1 100644 --- a/defs/bitcoin/megacoin.json +++ b/defs/bitcoin/megacoin.json @@ -16,7 +16,7 @@ "xpub_magic": 76067358, "xpub_magic_segwit_p2sh": 77429938, "xpub_magic_segwit_native": 78792518, - "bech32_prefix": null, + "bech32_prefix": "mec", "cashaddr_prefix": null, "slip44": 217, "segwit": true, diff --git a/defs/bitcoin/monacoin.json b/defs/bitcoin/monacoin.json index 2cd7d6e15..d5da7cef4 100644 --- a/defs/bitcoin/monacoin.json +++ b/defs/bitcoin/monacoin.json @@ -12,10 +12,10 @@ "minfee_kb": 100000, "signed_message_header": "Monacoin Signed Message:\n", "hash_genesis_block": "ff9f1c0116d19de7c9963845e129f9ed1bfc0b376eb54fd7afa42e0d418c8bb6", - "xpub_magic": 76067358, "xprv_magic": 76066276, + "xpub_magic": 76067358, "xpub_magic_segwit_p2sh": 77429938, - "xpub_magic_segwit_native": null, + "xpub_magic_segwit_native": 78792518, "bech32_prefix": "mona", "cashaddr_prefix": null, "slip44": 22, diff --git a/defs/bitcoin/myriad.json b/defs/bitcoin/myriad.json index 0ca576df9..293f30ec0 100644 --- a/defs/bitcoin/myriad.json +++ b/defs/bitcoin/myriad.json @@ -14,9 +14,9 @@ "hash_genesis_block": "00000ffde4c020b5938441a0ea3d314bf619eff0b38f32f78f7583cffa1ea485", "xprv_magic": 76066276, "xpub_magic": 76067358, - "xpub_magic_segwit_p2sh": null, - "xpub_magic_segwit_native": null, - "bech32_prefix": null, + "xpub_magic_segwit_p2sh": 77429938, + "xpub_magic_segwit_native": 78792518, + "bech32_prefix": "xmy", "cashaddr_prefix": null, "slip44": 90, "segwit": true, diff --git a/defs/bitcoin/nix.json b/defs/bitcoin/nix.json index 81baabfe7..479f088de 100644 --- a/defs/bitcoin/nix.json +++ b/defs/bitcoin/nix.json @@ -15,7 +15,7 @@ "xprv_magic": 76066276, "xpub_magic": 76067358, "xpub_magic_segwit_p2sh": 77429938, - "xpub_magic_segwit_native": null, + "xpub_magic_segwit_native": 78792518, "bech32_prefix": "nix", "cashaddr_prefix": null, "slip44": 400, diff --git a/defs/bitcoin/pesetacoin.json b/defs/bitcoin/pesetacoin.json index 812cbb23c..cd38082f2 100644 --- a/defs/bitcoin/pesetacoin.json +++ b/defs/bitcoin/pesetacoin.json @@ -12,11 +12,11 @@ "minfee_kb": 1000, "signed_message_header": "Pesetacoin Signed Message:\n", "hash_genesis_block": "edfe5830b53251bfff733600b1cd5c192e761c011b055f07924634818c906438", - "xpub_magic": 76071982, "xprv_magic": 76079604, + "xpub_magic": 76071982, "xpub_magic_segwit_p2sh": null, "xpub_magic_segwit_native": null, - "bech32_prefix": "null", + "bech32_prefix": null, "cashaddr_prefix": null, "slip44": 109, "segwit": false, diff --git a/defs/bitcoin/vertcoin.json b/defs/bitcoin/vertcoin.json index ac1258821..34e2b65b6 100644 --- a/defs/bitcoin/vertcoin.json +++ b/defs/bitcoin/vertcoin.json @@ -15,7 +15,7 @@ "xprv_magic": 76066276, "xpub_magic": 76067358, "xpub_magic_segwit_p2sh": 77429938, - "xpub_magic_segwit_native": null, + "xpub_magic_segwit_native": 78792518, "bech32_prefix": "vtc", "cashaddr_prefix": null, "slip44": 28, diff --git a/defs/bitcoin/viacoin.json b/defs/bitcoin/viacoin.json index d34ae9a06..f590928fb 100644 --- a/defs/bitcoin/viacoin.json +++ b/defs/bitcoin/viacoin.json @@ -15,7 +15,7 @@ "xprv_magic": 76066276, "xpub_magic": 76067358, "xpub_magic_segwit_p2sh": 77429938, - "xpub_magic_segwit_native": null, + "xpub_magic_segwit_native": 78792518, "bech32_prefix": "via", "cashaddr_prefix": null, "slip44": 14, diff --git a/tools/cointool.py b/tools/cointool.py index 10adbf587..c7b7f0c9b 100755 --- a/tools/cointool.py +++ b/tools/cointool.py @@ -414,36 +414,29 @@ def check_key_uniformity(coins): def check_segwit(coins): for coin in coins: segwit = coin["segwit"] + segwit_fields = [ + "bech32_prefix", + "xpub_magic_segwit_native", + "xpub_magic_segwit_p2sh", + ] if segwit: - if coin["xpub_magic_segwit_native"] is None: - print_log( - logging.WARNING, - coin["name"], - "segwit is True => xpub_magic_segwit_native should be set", - ) - # return False - if coin["xpub_magic_segwit_p2sh"] is None: - print_log( - logging.WARNING, - coin["name"], - "segwit is True => xpub_magic_segwit_p2sh should be set", - ) - # return False + for field in segwit_fields: + if coin[field] is None: + print_log( + logging.ERROR, + coin["name"], + "segwit is True => %s should be set" % field, + ) + return False else: - if coin["xpub_magic_segwit_native"] is not None: - print_log( - logging.ERROR, - coin["name"], - "segwit is False => xpub_magic_segwit_native should NOT be set", - ) - return False - if coin["xpub_magic_segwit_p2sh"] is not None: - print_log( - logging.ERROR, - coin["name"], - "segwit is False => xpub_magic_segwit_p2sh should NOT be set", - ) - return False + for field in segwit_fields: + if coin[field] is not None: + print_log( + logging.ERROR, + coin["name"], + "segwit is True => %s should NOT be set" % field, + ) + return False return True From 2e026a8e403fd24723fdb4882fb7da731bc532cf Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 26 Mar 2019 12:23:34 +0100 Subject: [PATCH 751/767] defs: add login.gov to webauthn --- defs/webauthn/apps/lastpass.png | Bin 9976 -> 9819 bytes defs/webauthn/apps/login.gov.json | 4 ++++ defs/webauthn/apps/login.gov.png | Bin 0 -> 9865 bytes 3 files changed, 4 insertions(+) create mode 100644 defs/webauthn/apps/login.gov.json create mode 100644 defs/webauthn/apps/login.gov.png diff --git a/defs/webauthn/apps/lastpass.png b/defs/webauthn/apps/lastpass.png index cb83d169265c8a4c8554f708729fa8cce62461da..2eb382d5db6abf673f28761dd4b128a76ba6b3ea 100644 GIT binary patch literal 9819 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 diff --git a/defs/webauthn/apps/login.gov.json b/defs/webauthn/apps/login.gov.json new file mode 100644 index 000000000..c892da420 --- /dev/null +++ b/defs/webauthn/apps/login.gov.json @@ -0,0 +1,4 @@ +{ + "label": "login.gov", + "webauthn": "secure.login.gov" +} diff --git a/defs/webauthn/apps/login.gov.png b/defs/webauthn/apps/login.gov.png new file mode 100644 index 0000000000000000000000000000000000000000..a33cb5ace4ca5ef7ba114d3330fcb2271967b3ca GIT binary patch literal 9865 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 HUEu!#^HfE# literal 0 HcmV?d00001 From 14122da3f7ee74e0aa43d5b4fce0294e62ecdad3 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Tue, 26 Mar 2019 15:55:29 +0100 Subject: [PATCH 752/767] defs/ethereum: add check for icons, update icons --- defs/ethereum/aka.png | Bin 9082 -> 34284 bytes defs/ethereum/{artis_sigma1.png => ats.png} | Bin defs/ethereum/clo.png | Bin 5450 -> 23622 bytes defs/ethereum/dxn.png | Bin 2858 -> 8735 bytes defs/ethereum/egem.png | Bin 3317 -> 13396 bytes defs/ethereum/ella.png | Bin 5468 -> 18767 bytes defs/ethereum/etc.png | Bin 3906 -> 13413 bytes defs/ethereum/eth.png | Bin 3465 -> 11711 bytes defs/ethereum/go.png | Bin 4402 -> 15578 bytes defs/ethereum/mix.png | Bin 0 -> 31443 bytes defs/ethereum/music.png | Bin 4812 -> 17577 bytes defs/ethereum/pirl.png | Bin 4238 -> 15420 bytes defs/ethereum/rbtc.png | Bin 0 -> 6621 bytes defs/ethereum/reosc.png | Bin 0 -> 10934 bytes defs/ethereum/rsk.png | Bin 7842 -> 0 bytes defs/ethereum/{artis_tau1.png => tats.png} | Bin defs/ethereum/tkov.png | Bin 3465 -> 11711 bytes defs/ethereum/trbtc.png | Bin 0 -> 10378 bytes defs/ethereum/trin.png | Bin 3465 -> 11711 bytes defs/ethereum/trop.png | Bin 3465 -> 11711 bytes defs/ethereum/trsk.png | Bin 7743 -> 0 bytes defs/ethereum/ubq.png | Bin 2910 -> 9888 bytes tools/cointool.py | 12 ++++++++++++ 23 files changed, 12 insertions(+) rename defs/ethereum/{artis_sigma1.png => ats.png} (100%) create mode 100644 defs/ethereum/mix.png create mode 100644 defs/ethereum/rbtc.png create mode 100644 defs/ethereum/reosc.png delete mode 100644 defs/ethereum/rsk.png rename defs/ethereum/{artis_tau1.png => tats.png} (100%) create mode 100644 defs/ethereum/trbtc.png delete mode 100644 defs/ethereum/trsk.png diff --git a/defs/ethereum/aka.png b/defs/ethereum/aka.png index 842ced7da9a2d217a2a6c1a7a11e9169b5ea03cb..a21f1c64155a952e37762ab4fd4255c2c5f1b07b 100644 GIT binary patch literal 34284 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

QaooPW#PSdRmfB0-rxaBg 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 literal 9082 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 diff --git a/defs/ethereum/artis_sigma1.png b/defs/ethereum/ats.png similarity index 100% rename from defs/ethereum/artis_sigma1.png rename to defs/ethereum/ats.png diff --git a/defs/ethereum/clo.png b/defs/ethereum/clo.png index 679c94897762c6a5e2778f1e5c3cb34280265a76..b711866b2c06a3538ab418ac708b6d2376f730c2 100644 GIT binary patch literal 23622 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 ZF>KlIKO*Pb0e>?Hq@kj#T&ZXi@jty_n@9iv literal 5450 zcmV-Q6}9S#P)C00004XF*Lt006O% z3;baP00001b5ch_0Itp)=>Px&08mU+MNDaN01XEKLjW{1H0J;R0RaJJ$c<8DSYE1@ z0001e|9=1g0JPY{P9j;Ltuut{)_4WMr%k0!0s!%|(Yk0GXh|Qt!`0*&JO^?r|Qm}SIx^qLc zZ^`b`6|hkA`}Km%pBJ%A9j!>g)5o3Mvl^>STDE&Sv1eIXS-!itAgNBH+_rnmnoqNI zY`chdc6Ki>FCifzZ@-L<)23Oueo3x!b;pz&t5vJ!!FIilEiEk_9UW3qQXL%~CMG7C zpPN{^eMPcxPqJ}ev42gna!$2(gwLPA?#*Stg&D3$aJ-3AQ&X+2tvozDI5;?tmXeK) zjjOt>0001#)~sE#eRI8xXT^(SyoIyn!*s`%rP;Mvw}G12uobjRL#%E~OG{~KX(J;e zG&D3rLqjPkDI_E$TCaO~z?5yek9NeBtKzz2!iY<*Zj9EbT)cuwvTt|Cm0GoWS-gN) zwR^G&Dv= zMr34UWo2cZ;^RAFfeCxo#k?PbI8VAFfg!uTld810StbBCJ;w6ci$^QzNWV9I#O#u1+Sa zP#dvRAFov)tyU(hR2{ETBdk;&u2dzfQXH>T9I;Lyty3YdP#d#Q9IsFuuU82P2_mvq z7_n0&tW6-VOdqmOG__?Ys!}DhS{bcUDz#r2vQ9j!WiGX34-XGHwrDc6UpKgG7qnC- zuUjOmS1r9_F0fw<3kw(+7$LS;J-BTfv{*E|WlFVmEx2APsa7SQvd@21Ofd70t5a6Gc)}H{Qdm|{`&|E+x$=c z|NZ;?1rs3s{wYuw{*>GP`zZVnX#D#aM*hG4P!0VveDk(c(EO@c%EG7qJ#Xm#Tl2vz z)$ZhF&+3UW)cu-qG|ROiJ0tmHo_oW`OPVI$I{W&fZ1A0k|K){Ri?k}W+Hm{#!06-h z*tw#Uf`N~*^ZW1MHaIM&tuK63@;{9J*0;3TAx7%xmuQj2czFFnsD|j^&o7COX_Wu~ z5i3bVK~#9!#F<-A6KNL5KT}=lRLWe8Wk^91AS|Q=QIJas$OF2lPYa^x@G@mB>Wm7H z-d()BIpgz;t3GXQ&DK2aL#iv?B;7@-I~UUFq|+g(5Fmh3AY`mUKoD=Wopiz_ToxTJ zCnPU)b^r36|NorxeE~oS2wXeg{(Jk2-2h0y4uljOcywZZd}yNMVh(_J06`_MooIWB z^tJ6Bes~A~7~baROTf8jhCX8yH(T_fxr#CX#LzYaRL_)0oGvy-p{OEUbn5_*u)P4g zJNH<-%!r8(QdU0L*jxZa(j5XYnNZz{*A4k{AeQbBfCVv~h~-`SVf!qZz5)&lYBfyd zwcG|kz7qg0J7x(6oaG;mUfc&@>GlJVY_ALTIdNUqSi|1|*adAn0K+g|*3K}9BAoYA z^)^(6G=L=`Q-(Y1bGKZLYXk5IG){v zm93P*x&WaNZgy0?X}_7XbyZUc6kYl1JPDhKI9uUyqN&sS-WsFDfnO{ z;(b+dz4i3yaJXEf<9kAu$IYQ;KSn1n>C?F1-Z{Bx1Ze;?Gd}bWesciS`8SWx%zYT@ z)%R!mD9p^cZCtWC;jt$ZGlw>7cuxnQhl%xN9R6WdA(PKQZ_3~>sVptIxik<4&KHoPSO=C(gh zNmGj}m#E?>hi}w26iyh-0pSvYMI$A7`Kk5@Z7zV%_38>(QtKdrMt<_nz>tsv+)PpW z!OPi#5g{0;;LQNQk~VaD_si41ln55bA5k|U0GONDL!b+l^xPv;6PNeXUF zmk&3dQUj4>a{$P_9l2n&b_a>n8A$+2GteYJNX@A@NKt{YYLYn~~dtZ^gA_F2m z(_&F|p+T^rcIv8HXoxEC+n@}`oKLvv%O}583d;d>BTcKdx?McNrHN#J(pBaQizEg$ z1Da4Q>N6`96NNt(eB0o<2*8V+RJ^^m@-Fgh0CF#VqLR;_6e<<((1T}tl?3JV&wHb~ zJ;SGK4)Tuqb^yvpIFwWS_oWS<5IC}be``g@Foy&fFX9O3W_C-H3V1xM4_NrXyj}#+ z4ZUtS_6>PR0XVF)_CDp8>**PQ!G%h8vM1rf`WwbZ$nWF9$}v+s6oAvq1*$$?U#!CmdWIwipU>(|3~P^aHr|2~f$G$>CerKmr8aT#H*TUSyS-|* z^Ui^dt8ozkM-(5MQxZ6GWHA>KkYA}G7{VW=rz(UCr0{{G3O{8FA!xEk@`E#qn*5m0 zN9fB3JK|MAx^V#7ZFW*DW&KzqO59&0|LyGUMLCP*mj^S=p>9&sc~X>AK;5v`jN7~@ z9d#=8$|w>bx*5vjM=27=O!}dbj6-T5k!}p2kOv?l6w5q$|5G9ba?!b>sfv9Id6a;Y zMc?^tG5v>@qy<4)o*~g2iC&f)d>1a)QzT2EfrW!69hY~$Y(r8=0U(&yhZJ|5?fK2rU-WQyasw_CMMeeA#uJni+}i}3$y#t6E_%yI8kb>|t?W350X<4GcvN2FN&224V z*R+%w?tUPa@Rz_16>qmk^5a0;MXN?zYiZE5Es7hMvQglMLDLQ0f=klurta|fa zs9Jx;Y^@zh$H*M?aqSPk`qC>)5&)o>laqEcfU+Hl&XOJjiYyU^u|?_T?u6_8sM4~k z<&PHP636~qcVCE9YtWYJ%a@HNi&va?zQNwItWzK)IwS^PCR&6k-FB`8#CbZApHe+;l<_Z9r9jQEA zaYRW$^l$Y+rv->{MXIa_X3VxD!X>k(G)2_ex027@ik^c&{O*;Zo%N1#xc;uuipWWD zw5f0G(JUSSn*J>hy-O^&L4qzAQGf_k4iYqB+r_?;fX|*Ku>Jku$6wDvZ+`q>rKz*C z-oo8^8)}Rlm*VcM@nHebBx*(qL(|SdAL37MY*csFF9mv)s3-G#-HJN?c?=@u|{`aHr+s;J^@J zR}s|x%qk%aY#NSgGB+FR)CPTYbf{jfLGssXYK|j+hTq1*zy37$|T3e7&dZclvD~K<@f@Y zCfOm1@sJhW5pAvgJOG-u+6WWNLwz2$;JG28b4$NS097`^8K?-l3Iwq!;ggy2nhqWS zy*1*s;T7X-nezd-rym^Tq!pox#UTO;ra4?u3f>!t+g0usq?f{n(HuWZ7X|Dg9>9Sr3mQTO2`K<}eHt>@Xv}Lg=&vnHxe}2t$7$T%n zSpX`Tq{2msJzsX{=8Fnb#&MG0l3 zmx%dN*Z0DjP^LTNVgzEG?W=9rlS#TNN|q|YolN!RIxa$9KvX+xVccFE07YSLz7mB( z+LbaOQ}I)uLs*uh!-WJ%fmmc8WsN;_>~Mx|5S^K(C|3YQzj(A&KLD^3Qg-DOqs@CL zrVf$uC>xUzPJo~Q0ifZ&J$cf^CEK$zZAj{frqDvpNRWg1d02o{!0@ucp_BV`=;V-q z9A9@8zs#1g1OR`HcX}YFGH5UVAmxFu(&%+b)og(It<~m{9m{x1cUh=7)s^P~f9ZdW z28E}NMfLuJs7Uc=uhmxo$P}QA-jN&b@A+aM0if+6IkbI)A14{d2Y^w2{!t`-zt1+0 z4S=#&tG2SN7$6Ejo7o2d$n{9&o>>1&-!}kge=4(JeITUo695@O+OktZ{Ofu?17O0w zEh85MNcv*~fRNs|D-n4<2L2BKNcuemg@HW%r~nx0@1F(&r~FX?&}`g|orE7?dIkVd z;5*{qtT!G26ccw31YY`{DtS-x~lKzLU9o zaB^>EX>4U6ba`-PAZ2)IW&i+q+Qpn}awEHrg#U9DvxMTCTn?WRvx8awd?2ezvfGmF z?mIE|=~f>}rdR}!$OKSU-1__a z(&yh=effgn(eh~blhK{8+VlDA{o#IOp)X$0{?iZG`(w=W2gh8^CqQxDyFY`U>WXNHM98qd6|%GRC{XC(9eY_1eVw-FW#&XW%KhY(8 zsCet0_dfXOlh3}WV1o-jgb;(oT!}Wi=wpa6rkG<%Ho4?eNHL|9Q^_Vy$g>t5cCHi&8ONNQ&x-V(2OrLpigR3BIv;DEQ`eYsWx-?2BXR7t&%lc8B*#`~Z!uR4GC}%>% z?f^Y8LF{<#{PoD;ObI4gk+)287EX>v>M%1?;9*gUg4~Th*@Qrj>6cbURXSxVtMv#y?tZCZbyt!pA(^ycZ(Xr14>) z_Pmg;=8uJHEOi{Zu(8=QM;`hdwKkIr*rI3We_N@ZywCHcWsBuYoz6~i3Z)%bHpI+g zb`M1Q*o0UVyNy0<#jw))Mz} zDMybla*fw=R%QHsqymuYp71Z0i>Ux-W1kqOFvus%7h(&uusT0j3g?Y`ccM0ci(WaL z!nQ_C0f*X?OL`$h#>}IVd91j`ifK~IWarHp3~Y=1>i}&H;OgyYiqktn94&{KfeHgV zD@VjB4aREOwaHqXBH)Wb5*J9OawCyS01rM^9H1Cr1n0ozLX#(Q3j%EgF2dH_a)u!KJiV$r+ZN zfrYW-ZAYr&Z1c!zCSXK-cHlXo^)Pz05+%HsPmLHGEkJVXnmpS$tBGS|F4sY6+3Lm| z0Wx)C<4+$KD*x$c>N`jK>}TY%yv_;VPF*6B0O6n%CvCdJ*E4htq$L6;z-?w2WK817 zmXdu3nFt0%MF_AB$OoAK2dloA>}}#8 zVs94YN@ETj+(Bs~r`z1+ITCB0KU#FtP#lmah%IgjWgf5;B4;9xqOFnWsNz}TEkw2N zM@(e0wHEOLfvTg$wVDDOWG91oTdSEF0|=hiYQu8wvYKD3A@zDEu%J$bMG{#qSx?{= zVYQu9Z%Gtpa0rdu9;)^hQFS=f7P-^O&n@dgKv`r{BM&52?-n%zDUv8~Hi4rnPzLN@ z(E~l+(X;YdgClhbo)!t7jxm<42p=nHp7f4k@Rgtw^kb?BwB##(4s10D@Fu=WPSKlj zB`6D)XG!5(&}lA17R55Pk(UZoS#g5n2)zXhx(`qj#~ED4LK+PI(?=zce$3ltk1w3| z2R>V)nyXVF8{CR7X@Qm|#`h?VlK#lV~zyi+zM$%TE98)t-)lCA+okP2L=9r_0$ zZRGz7mnFRYdj0BcF4|ZPNoRf zl^sooZpU%sWfO-qby;iq4HRqQo!SosQxs?e1sYK-xEb!EUDiu6*S5!)VtRhEc9WA7rl|%NBZb1Y^;BD5;hj@ubZ{V82NR>`o z^oku4{m)*OBXNCuSrv>G&t7iEA;w08Z8x*vD+%6_U?apxQV@EAys{2O=Zl6|cp|GT z7NRmF4MUrHkr2HIZ(byXWflp^sC@gLIjc9+`N5o#%irk{C4%HDJp#-v%6*>Ax1?Kr zVBI)r7SerF?kCOlE+4zuTl!qWe@MOWdqeJN3wBowLF^l?akeJKNSHC+)oS zhF(-=&>pQ)M^Kn}CcPyUJOaMd``$qmmbUCg%E}V)oO4yMi(-SIN3y8}GKM3yo}Yh{-|xAvdXQhMtyE%% z(MzyjE`y`a@WEy3Ng+<3(ZZR!`rtGR?azhsEf4yw{I#>loiQPX)3Cb=c8>d-LyA0Raa*c38i0*8OG&4LL(ve+#HC$Rl8kQ9gqLJ-SnAgp_ z)FXm&%y;&yoVnuAclwhvKbFnmH=PI&h=^7o!j&%h0gIAk zgCK+ER0*?)9A1=7wk_C8pyDc1%)Zs7^K>Y6eLX{ ztn(nR0Vh&@!W?JC0mvYQ)P7YQ06A~2ibE23YSmu_hYXSR>EN)F91)wf#(k%ar6g$d zRT9(?$RkJT2jTik5qu6kp;DYnM_`upB;$v5Vi&6Geoj`ht0? z0?4c6OrnVl;fWn`M?`gbPr5eb4d_mZniD?6R!RPV+j0KI~sQoUHH9&s4o0Y zD~9CIA(xw&d`U~x%}c(gB?o*G?;salMPW_8%zoKf?TVl{hz|3t3j^&wNh!m)=}TWs zJQ&-gtmxudO2V+tXXt!Jw3(?YmYqW)nN2Lq25}HjmILX8Pa4~>hEz=ykOekiZpa=N zV5$w-@kGoG*z3B|25jLnp2IUbNfHRJn7#U*#NxYF2-T9IqP_SrIP_6M5zC((S`qDw zAwr`K`pA|tJLFy*f-sg;1Z7x@EcyXFk*$)qPN0d6i@AX?rxulxW~H84?1|q<$t={i zNGt)2LOtn%g-Vsu7gH0q0NT1LnjB=ca|_ zDxb&&4Y$fCh_gJ(bM&-wM)PK=luyUYhL59N!SqBcg7jFWm*&SDsF)rdBOHV_- zGNS!Z^)(*g2=Pn;CDInfmWH5pDbK~QrBT;b1^J}dl9!@A7R3gRj1!72_2)PBH7Ql7 z_qB=xAloH2wj~l(Y#@d`@o3vX%zA?VGQwq7-IfKy2LHwF*M&p}8 zMo;Y^CXjl>G66u11&+!UHk5f33*<5oS%8EmGUuO=qMkA3C8Y2p3r|4HV_>5Pp6s$2 zA*uvWvQ&7(#uJx^OH27dV}DUBQy;2j2f)9i`2qj{>00E@JA08c>70wKq@$87B3Z{t z$KgVv&F%$@*tH}IuHnWaV9cLbWb?AK10lg8+mD4s6@Q(JgSwIH>N2nsNw{#RvI~fQ z*O%}Pe8NQIE2)-E8#T!ypd*_RcBJ!WN2>xKM4$_Z$P#|BBQhXYRcmyqZEb0!HA?1F zmF3|_1b{SV7DM<8y56#S&~-RMmP$~0!8hL14fTO<5cPikOfh~Ij7l23<1CIHn!O3>r;ALpAp3>}sj!Q8Ke)L9yy;ER%Q}MH^4HZ`>7vG?Fa`9c& zJ{A{WRc)xa6ziL@FKLAOVJ*z8{-Q7d=|D)hvKeo^Sqy;xRXF|~u0F%EGpTGO5(MEY zg}k$2_e8_LB;o2U3+M1;cw({IByJGJnvcc-CeUKjV7t<0;2QxKo}e{n1N^Wk2C7H1 zyaaKtJSSO78WKX;o^-Z!%$LrV-qB6ko^`hKpLDi6(rOCtwh_kv(6Z}_{4M(C5ELgJ zgHw-|ofK?_bl6rDfM2L*Te7I62pO_&<&5ct}oxP2%$nxrK7zvsr2?g%^ z70*yVX+CZJeKkkVlKLlcsoto|Ux`cgMqU0&T&g$f@)DP1d7JJ^OUEDXGRJlRDRZdh zmv^D%!P;H;%-Z|ecRyfQyYGIGnn7$5fOo2Au_$}9MjG$ZGaA0MO8XzBc~wuyL%DNBg;{8s*dS8 zGIFOc`u4@;is~1>DD^|&IHuo<9iil}qU zEOt*)Yy7tPrrv9wPm*Uh5dg1MC@)b8Yvr`HccAZm_0{a8@ zy|k5{YcFQW^(WvD zKS#$17iInSk@S76>#KK#eVp$*qP9n%nrrHF zy1E`E^*rbKUCkb6J^id^KhpeJ&)%rI>)AwC7rC^@XO1TZB0|lXn}O^Jnu~y_bAaY# zAZvgo3j@hq29YD9t;wH@-cvc(qEBNv>YmH_W-4bb`UXtYiL*Zd6TuPbdWe_rIvdhK zyxa#=+A8}XdGyvzQfFI|C&87y1Fy4i?^S1$IR(-k{<9nm;U+&WpAVjlAgMm3x>{)xrX|E=$O~3o?7PFm`^Qp@iBr>l*J`dUbO<$i(bH^6(9q* zC_?csKX98DkfNS3?`rSrb@BaowRiQp`2M@vyQ|$bS@6PD=HiGUvoc#Fl`a#uJe5jUvXY6*>J&+# zOSqt@(^cq#Xtt_Xp^F28M+z>t1=H%w2_C7ZbBHI^$2$SzYHIFc1(Hj_qnb=bTS@0L zhpH7vVXM^!4OMZcx+*?U>Jf#ztQyBDJ!3yB98Vl%*EocND6)&Vn^_!0MiYi0q0y^W zn6;Bx%EwF|5pVRK$+Hg(!v`Skg5e2ByIy!U z52Rq27qPMW?}of(Qbk=u-s`@P`MH?$(^`(7ijV%=F)!&i2qlPuMCu=*NM>kOk5VP6 zWd182aW)9QH9v6sR&cw|Rp-1*|1>^iyZ-#Vre;?^sZ;ZdqWD=^kX00jabi@z^&I#k0NOWInmc-3w~* z^(h?*xhrY+7s$>NS+x5L(vGU*kJqXj=g%8 z0e`9h(X%ouDn+_gh;{pxl|3tZm%o#!ql*RXyR6b80kP;+{myC6u3fXl4=%rFi8q%o zGE1yV*<@aZiP!Af=0(3|r^>C{f^yyr^+)ra*W;aZRf0_E;fVjITF9@Q>{oHzfh z+Qn`$uOdUJ}U})2zXZ%WC-|x*$H>u9kO$1 zXVu!(o5GNkgW_>95Mmu{_qv;*SJ1uC-q)DeW{)DR|8h+q~6~SShe|R1TR$dcO!VQL-o`NUIfwX z9@rB>404mLmQX1A^;n|%rgOxb)2`H<_Z(UKbTdec=hRG+Q3fyf98FOx=Y++|ByLSu zNLT1I(*n1%M$@H6<79exbs*4RQJpoK4*LRYIWastr&v=t@3|&N{RCLl7cc0x$^1Rm z@snvCb&uq;9?XI~cr-m$D^L*D}IJ{Jomlia{&*vaxG&Xn}q;Nf=P;RjF{|o#fXgB!FB|T1N z3H|G2?$P_F%ARriVARKMffWWjA1dq`v|3nmn+{&b|Tx&-tn3tiGr@OG)EV@>zoNF8S=_@>KHKEUJhWdCo4JlYZ3u@0__O4$jj2 zo;ZNe)m@q20|zR!voxPTabpiD&DT|$w{Ir0{v60s?=~lPZ3enmOd$(K1#jjVlwH}LKU)@&uB@RoBrd@D2p2^3$=~V9V zI&VAP6^C^Lh}?F(D-Lbnc6{ECp39iy&nZH+#t3(LRg*+@@KMGohVTk9CVWE5t1@#o zE%K5;iydenF=&e`Z@|glUi+j40$?pr>px8+2M0pE%dl8^D5LKW6sS)fk z_vOX-rAJm4pfwQ93S$><0<;FAT4DVAo3TfatUN$#AZkGY5)21iP~B+xyIs0a_D3jnGwWeI}2* zJV3jmD#BGHt9FKHO(xhC2rvp4@vW#*2+$_Ml;(cBa_}_*^j1_cT?LC^38K|);fqC_ zl@{@bs8S5j8i)oZ(faOFTrv2q;sXAm+5rLjgJ1&D8bvU-eL_(chOHkV-Ir;bD^{zB&aiMNF{ zU_LIO@1~$7qF<5U{U^&h0n+vuJpyVg>tn_C!Rq0HKD-zaSO!pkqA)Smd9j zpBo_VB59X{YoV*qbT!bmJBk1>79Y?Maz{0UFn(i;+C8n=z7(M}g#22<<^+K|WoZkM zN;V-t-0yQ1y*2h*Zx(`If&VJl$r592;mF;tvp|5^+PP@#VhCFA6rT)!XH^+1-#i*L z=XQ!Z!2yfV2YDZ!*4@M6138b`v@Jx|w6$Et0oTK=WIgAjgI^lT_jih-iZyp*b&vK) z0wAqWt?4Qbcp`>Fu%5XV_G}@#vlZbgj6D*C?0x9b!H4#?qttJrEv!C0??i&J-cRKA z1QtZ}cjR|}5#OS4CLisuzkc`las2qdU%a^wpx;PezjslNi>T1MKz6Cn#5S+?%xiK~ z;m1TOG_i{)_L53O6zyN^ zRdw^J@FPfIHWjK|5v+4egMj9mlk z1-38t*|+Rc;YX0bQYy4({spnl@*Gp)N7=&Jh%IF0`+?8aqHUk8e?*CHU{HQp{QKk5 z2!fTsqwY=?foxz9X7qNoh%&*rV)q=+#$<3a_-%j`ox{0p-zT>+!Q%~40a7AZYw76x zlptJ;oRuu=q;LmuPFSn+JsxT7z5uHxA-q*oSy?9wBtZJ*78M`?!O;1QA~yom#%$pL zCKx=!nH>zZkEdvj#afLcM*@_nvSxx}??3@!2Z?(nopJ`Eu|eS33qXLl{fXzYeE?Av zBh*r}c0+&s6ld-}ziEmW!lyd{`&7g2jj+ZUPrO4zf< z1yCQJ;>8?c4!f{e0g{4VOWHAzQTgrcv1W$P+rfD{Qfhco}n_y}9L z1W+HI62WGLO6N8HNALl*kX12LN*&k09c-klLqSwkK!S}Cb6=#Q)k%=9+Q-Q8XH@@y zpgMW?$je1l5jl1(brs44TP`d7HWsl&S|=vKxGi3l+rDFMVaoNZG64JV7zCR=(sEJN zB#z&s0>r3vRvu}YYM;Oas|4fsZu@jdFr)s0c2xTS-oXlwu1vKLV1gA2V>hR|-DAiW zs#VP1sP;~A?vvX-`63ob>-3FassVaIu*M@Q6IJRJvu^}z0COKq{-57WZD9i%ze6eW zCxW@{lWwPAf|WVW-QjRJ91e%W;cz${4u`|xa5x+ehr{96#eWSKDzTPGDAND{002ov JPDHLkV1lU1&u{<$ literal 2858 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 literal 3317 zcmcgv_cz>&694WhR|r;(9xX^>#np*k7SUI(D0{U;)aXQ9WwC0s)sqM-q9hSqB1?j( zAw&t55LWNKBv`xqee!;Mf54k_X6Ah6%$zA_&Y3gGmga`cjC_m$05BUH=_AiI`ZqJs zoXev*?CH6pb=NV|0f2uqn8+@4=NJ-%G}HyE2L;vvfCjKMy=`FX82|wwQ0RFOUm$_d~66=`jYE33oAPDn^zomn~(5fxim zUFqrR^|NnUAyMCa+gKP*KSF|9#e~$HT)l!G zM#m>-qa%k*O(JrimbqG#9v`24pPVdzvyqlIpPe+Xr{td$^dkdJl!GG`6l@Zck{*S9 zjznY9vz~W;nbgv99~fOs%g8xAJcNszJS!}0=^V8)%3WOnZ>l+u&uq7}ethKGS6f@_ z`B(Mu#7fP(&tVY>yE_LVj$KIs6M6==^M};@^u_z`?#ZFkNK1_I%}1kC8!yYskXG^0 z(K%ydJ8q6CRfUJP`p*i}XSX&F9tX~*rOre|e3X{f93(8ibmQVWUoVAVq`5UfA)nDe zsSsK!NVmg$;jmue@|vf_z@!tr?IgEpl=qcxgpqCXqPkfe@>x0?R}XI1KQyqW(+L1B zSR3o>+zy-Ses&>(lOWi$x;+>{9F!1=$<$9OWZRpA%`C+?%3q*Gc1VcRU*sv}jO(38 ziYC+gcp5?3Gfmzu&olH@P$^I@rlC=SqY0?9AGT97jD>=XbLZu&CN946VYQ@^qj0K z)M8#tRh$!8Ft~TG+#VfZ!=_^-)0ZVjK+9hc-CI4n*r3gh=r^*0@jic|3fuSR#SUr4 zy^&QHlVy+J?=qnt|49xBm2eiHXX`dp8lS4C4&bIthPq9cuku{5 z@bC>A-^!=_z7cHpmJ0{MMjbq{6?59^wao<#=n;PkchJ}Lz-1N0Q zXX7lGLTX(cm$5NXqUN`<^|OG(lisRnZGAYf#DH(;xdjF^G}9Nm~qif zS@wM?^zb0uo>GY(@n7{_*iR4a=1uOflZ~5gOklIbZ$*Xe-BzxS!Sp~dN}UWN&|4-o z;g*QW(ZA7HivotT?Wtbwm$YMwtruB~H_76z>OOTZ^peUb+A^43J{1_$+*n3)kuKIvd^=7XF^Tq^>RudXYz! zx8MX52af^epX0?2IW`atGuCWI%F?J9^tBC$`*CrIhm~M?q4@ZEoFKx`&mA z&=|s3#bGFi;fRAq{tU_np*)wK$ydTVo2f^rUssth&~M$QuHv%u zg+#uls!*Zy2kjsAURxDE?7i_zG-3I6deCj9g z9Z7e>O;+nxxK)}Zs?mRK@y1*H#>v9>9BH``h7^Gj2Z{VNMwM^eP5_gb<~lsPA0fi| zshJs}KH{L1Z^lq^BD;Vk);0OKGCYxWmE5NUk2=8Ft-c$HYho5Ur6@;ALYUWhyacy% zyw!*Ey5i-$qGL7F6fUE(8(WzXp5^#)lu{s{ih3T1o0db>gYrx5mn$q;t;a3BTjCMKH{BHuOEL4*1H=_jA&#y8Y?*EP3hQmsLE@%$MwW& zW(22CtNG7x)HRo^oQ>Vsbpzbo#^qdAs~A2teL~GlL$G|r*>}%Z{MJ@H zSXQlt@`I;*);gzCKQ2jDMfbe0`yD6?5Z~S>@0oU6r(p_z8gXI-Oj>z#`CdjH3`eG!+~*#Z9(T@ zo{$xfGDp(sQBxW#W8A}RWn`dI}d@`OBeM^g!!YkA}_Ls(0Q%-(zpE++Hq;+ z(q7chF-g;_^um<(1bslb`;%QmPZyiY5=EiX_x^zRRkT8v%sEhbr@P*UZQ-y2Ngx+Xze z^h%pQP97PGyLviSfS&q$b2J2}hY(%1HiIlQJ8@?BD?NllZ$x&NWL1Xs0;@X_`KQb+a^)zOK6|LOl zrBRJSK@X(n&-uHnpy5NDT~_~Ya2BR8$%1lRK^F7~)C{ShVF|8eM7VA4sxI$pCvI5> zwS%e)+Sz-rjAXt{JJcu^Z!CQLXCdK_?2#6yHL!K{^ch8sTl@FJVQgToU#;sL`yVcS BNgx0K diff --git a/defs/ethereum/ella.png b/defs/ethereum/ella.png index 54fed9370d1fc242faf9ee937a3cbc306bd6bcea..3cc159634341e2cb3c1f47351351683a45b52439 100644 GIT binary patch literal 18767 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 literal 5468 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 SSe79G0000 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 diff --git a/defs/ethereum/eth.png b/defs/ethereum/eth.png index 6b454d7451547662438cb120edf22206442f7777..c5d8de4b6a03c3d80c1d4fca6fc9140013cfcbf3 100644 GIT binary patch literal 11711 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 literal 4402 zcmZWtXH-*Lunq~GNV|yil0YC3N+=;AAp}AvbdVq*AiXHPNejV?6se-9RFNVmh>8#p z5KxrjMM0EuFGaXU1f&Qeop-!zz4zzsHD~WVGvCab`Sw2RtaUPNtxZpHi*bWMpi|~% zM)tr;`~7f2fO&hqU=LVW{SB-PK%mEYJcnLvfX)(WZ)yl?8j<)00zp8w6h~u9U^o~| zgh^uIzXb=(0PMfv1gOBq3FM>?(*JLtA}fLWU!*Qf0-Higk(0uoocw@E;HXpw0Hd$3 zuZc3zP%)E}!pTYLqD0VeNnJTfU4#rC@B$%#3X=d-LZHuOWo4|KC~Y6~L<~OH`22b3b{=%>&c2?fIww=62K3T&4lcP)1=5ttZ+Cm>^rv%r>YFGeB;80Kq5<*4~AkB+D42+K zFekgqO5xyAx;PChbtPkfWNmeGBF;`t$wVJxr-QaM(x;*jI0J%{vK$Ej$ckdEEqyG_ z&TF8|m`tXfxwnRj3D6gCWB{2!I9|(&fV07Dt^9R0tubmAI-1r1|Blwa zriSNK6!fE_vZO_{&)SEmC>m<3St`l`=K>V=`-aF%>mj7|01|*bLIxn5022rJ*Oiw7 z>_mVNB%GumqpzZ1BqgG)2qUH=h?c-DKZ&xpb^x&+92^~jSs=#{2@3sjGp?7ZS%Nk<;T%pAsdu;jFW8%vg4w1D8XbAIXpHIkL5l26f1L$J$`?0rvK>8 zslJVIzJ_Pra)PHZzoenX%VUuyw`OW1uBACY5s(^O^Vt4Z1OK<7M}SD{;8nf4V>R+C z-}G9cq6$unPCL4kdPnYY%$DGWK=*}t?|9`>wUK?LqfbJPizQR%G&Bj{iV^~*-@z@o zc3*}se8UgJo?c4G_9IyqxkqZ(r&D#G1Pk5CpELk&Gq+mqwrf?8J=xamTu4N?P6st6 z5q=$i|LElZjpOtGjsY(`wBOvwz%g!m^;~?Ikds)7=7*U_34SpevAHk`B0o)zDU%Nw zNM{w|@+VQrpaRW^Il5qh0}C=!$C5KEBa8EXzwC0;xsDDgM$>~!7r$>_P57ufqphju z6_N3LJ=&icZCLoNob|!Opel&HMqgC~4!^A+20$d&8CQaCz0+W!DBeJR4<0+G8rL&uHIG4gS@Z z(d{?)>wBB__-xWdtH7>WN69irfRTQ=s6&bmed!Ow&X-<23(e_<^rg_y$)Y%-0s_k}0wmHk-r%ECcw(Bdp%d(5a1H?xg`A2F^ zF_fuHis$|ukJ-@?U#-^FfDYF$UgC<7xzdvvDUjg)(f-TU+C9Urp!McdrtxMN8|~;D z>mQ)4ijdEZqaTM6lVAtpAf!C`!y`z)XccK|xnC(GlmLlpuE^&g#G(Rf;#B%@uVlS# zKW|@625}$K(H~FVY_9)f3qe%X4- ztF}鶦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 diff --git a/defs/ethereum/mix.png b/defs/ethereum/mix.png new file mode 100644 index 0000000000000000000000000000000000000000..b09b74351906326c1091944576c76eedd858387f GIT binary patch literal 31443 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

    T$uRoPo;2bFo)l%#LlU25{!gE$M_e$B7 zS7yZIx@G!l#+MNIXuNqvKnsS*vV%7Jr6mrnjzn!8QaC)|uQ+lm^CyA6D3nw|c*`Dp zVT8bErv5dQRj@RCrxI9AJuBN^Fj1eLk?N=3qZC-avd7smtF;q00ydt3S4S z1-m1%`L6gcZbA)~ytRYnb3gpuwH{WVL#yixfA_K=b zyqJ`IKkVq)MOfUAR}OjMY0n4fr&v7SSk)NAS-UJAU8(TN$wn2bBS?hHQ7?J+F9kR1 zm&}e{PakBvDNZ)qWPR0YUyUvYn$XWEaA21*wJf3bGtW^shrkS))PCp`=L#PPdFg)v z;{zQ0Qj3USEn7hl%#899sSv$5t|M38=uH3qpA=E{?PT?gDuKtr`I3mW$%J&vAD8)? zZ~H`Z;}%!?l*6n+7O-L{HkEouR1pziSVxOVbtfePp>UjwE_^6--oO2e3eVVV>Oq*# zIMso*5ibFn8fuj!(#$+7`_kOCndS|VSSD$Oj~r$LCc?=sc? z;zBW8l4VEEP-xyD@xUC;N6DD^oYc0j-<#U|z~xBq6R!1Y8T+_>pql34fILw2=G>#- zHGQS8l)H}MHMC%cWoEzt)_})NEthQ_vORp}7xwxpulzSnXFcLCs%UCl2|4v+Y==_< z4UII8XI?83JO1*MBHHv1J&pCqq`iz9>Nhd;NMakk9ZBFdnm80>UZE>M1VIv(jb)cj zCxle}E3hgxL`z0g`)ucR9G{cI^B4IJallnW;q5 z6%GjoiM}lVqkw=YmkUM%c84IrYz*gGaFExuNU~uB{Xp^L3(AUcN*K<;#8n_ z>K`Ab?=3My5HWk54EiP{Sg=xXq7eyFVYseFPueljiF0hqEm~dtt}p#J1uj{cD^d48 z|AmDT7krV2E73=s1W0y0U2ZquXw|e^CO|m1rd!rfre!USopQ+nPzp%y1~To?nHa3K z=!tt%wYgv7pY(EpDClDZiUJT$39KxKD4Bso>w%_3_uh@g(?0E|(D{vK$Jf3edjC%9 zPxPjST2;Ayg&oe^{*H45S))I~sn=At=?^lqzuvD?`!gameX@Vt)!#kzS}Ak}zS5xX zX?`fZXZfSSiSx85`49pVKCS>~8xg&B*n8xt^oUUc0pQoI^XP{8UlQ()Zxi56 z{y5zAF0=0~<{MxwARMCX;r^f4#%d=&T%zK@3UfNVcB23o?9q_x{olR&0RY}Cptgez z_Gq<>rXCa@Q?2sEj!d}$!3xI~l2{*Iqib}HuF*BRM%U;XU8C!$>;D6Bhi-)Q2P`Q7 O0000C00004XF*Lt006O% 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 literal 4238 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 diff --git a/defs/ethereum/artis_tau1.png b/defs/ethereum/tats.png similarity index 100% rename from defs/ethereum/artis_tau1.png rename to defs/ethereum/tats.png diff --git a/defs/ethereum/tkov.png b/defs/ethereum/tkov.png index 6b454d7451547662438cb120edf22206442f7777..c5d8de4b6a03c3d80c1d4fca6fc9140013cfcbf3 100644 GIT binary patch literal 11711 zcmV;wEkM$VP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O3*tl3clwg#Y6da|CRG=VT{YB(4@t8hO*8KI`^!5C=*O%{)e9%vR5$sQINZ&6L|9Ig#zMhXh{==&+bMpl%ae!^|^%m_A$J0@=@u%t?*s>WBgp-cjvqL;TMAuaKyEFPYv(2(c>u$U6al!#g?&M>q zoO;^nXI!v$)6Lgzx%IZ&@A%%eude>(`!~84zPc7)r}Vn|y=y#Mt3K#`L=exIdPc`$ z4s^V#0{}XzXTF7;qdKRa`5u`Hi!9RAn;racq0mCcKH3f6d-tPrzuY%Rt^clX@mD(M z)Vlvd=b}65PksAI*S45&y^ejRP&M_5>05QgHdI7sA)9#dmmjTfU1^SO<&MM-Vw-Eb z*?LMdB>K4yqhEW>{y;`n#tgL&tGiDtbLGiy>e;(=h^^;+OTBTHy5_p(=m+0to}PWk zWyf>;Jkv7eDRp1|QOhj8aha2#(;8@33Hy|>wx=4^LOaE+Htn)oDmQ1kyPT6I7p_!x zwli0?({1*@+qL_h^8CsNMH-(br3^im=7C|ptTpd2&$6-U*%~*cdUqdrjakkr7A8<# zC8fQbMQ8p>J71+IQz{f*Gc_$6LRaGXK3ZUY|j#RiObdQ=j{E~L!%}gV5NI) z$W|>FOC5@Iv8K|tFMZcJnQHLtfk3NkoyvlXE2p;uzBU{%&WKEq_0Wc-E#&^oHFy6( zvog?5V272L>Ea6P^3JmDChD2ivDDDvd>8u=XEF?Nmt>wXW~@pA>Hf0hP7?=B;s*__ z&xHc{w0Te4mCp;U*u0wk7OCr+Sg={ko{)xJCW39#GX{lGxeK_&b<0e( zcQy6WxZ9VHt0I+YSK72I#Jsw>Zv3N+m~#^+iM0y$<@OS80kd~SPzrWVGX4sEYuA=w zx|u@9mu`8Q(tDHhEBS^#q-p~#@X%SC2!>yG@>bgqJq-E^=>Y!bTE6c}xu#X~VV15& zYsFFKn2SH)pz;7uuEURuSzuhmr_$2Ypi|4x2u=9WW*fOank(Xx#kfLsK|1rJyKoJf zmzZ1AwSY@U9+)+T^j;RSPs@AvKugBuO6yYji9+2Bh&-z3L1!d!E0cEwnj-LCEiFS;!&I(Rq-pA%TGs9Dn z0S$;i9B@rN6#6m}wTlVs0+GOPz;W4kBppT;%TcE0Y}Gykgg58e3xbUzgEbOE*%NA8 z0m25dR2KmXC$&qN5Z!A}Wjjra={k6TOXj8;94Xa5j3=gp0K(*9E_vp`(+7Bab5+Ro z;#DB?bGBoFyPvq*sI{;aR&_pjOol}mwioud3_iV3>=S6)F0f}OT`>3uPH+262g~JL zE*;vyHU(oxR{CIxqo<>b&0|pgW)!+e3q{6;{JHe*-{x7k1=zqGhKb1C!ILDfgzk`G zXwS{?%#{17WyM`3Y+@(~Y11g?>|!PwjDgBEw2Rg1hZ|&uZH1+%{J__ zwhCT1D$Jk|Ikh0eg8pa^uFLLmCotl;tM9Y)EX8NQ@*m!Z0y9yC>d%OkyRdV=Vd8Bh z-aENY?QuL)FRytLB3LwJh^fKQtV05+7c9o(u_w5xI9EIV%BqkYDmVnteY)pN4c6hOlclz-X&o9xZ|}0XAY= zi><_B>V*b;gTQdn1N>iCS7zK0YE%yz%kVW#O;41@a&dNT40NLnc9GO(IID##z*h5&@hW7CU6VPe<3Fnp@kJ zkOL-cV&OSx_!iL1F4hvy%^3_JfLshj9zL`74_G5HC0uvxi_xJk#Cu`Q4kXRuG5GKe zO4SQszGxS-HgmdXKrYBlhs|j@kXM2nvL>v6P(-n24Tq_1Fyfwb+LpaX8DmEWkX2sX z6vfhGz_PQ_cC6SXcNlbx2PpvTKLaeF(4gdLgDtOe%)dwMPgJCg*GHUL3578fo1T(w z3^j^=;kn_#gKuR9F?*~vRwr2q8yKT%SUZz{j?C-Cpqk!Hu}MEGvdl;#Wn!};!<^DnfLGqs5Oa|_?f z78M(0D)IRn5)l-^HGty@d=l_;-^7YQz|wM?LrycFh<8AJ!^9a}JQkKF9$BuvebuSa zuz-mK&X81((Q&B0U{O;wI+^LQeG~;pKWX4Aldg8ve*sU z52=tN)Z9phZP4W$*gHrJ?~`KQ8Mob1A!sXgPwTld-bguSfJ9X_V8bz%G-$D3NHkCe zf8^$X6fb2ax0nq$>=+caF>xi5xcL}{lZbM`{zd{EK9H=F6%_V3%*sjl*NIupVL|Z{ zVE-4(@K<2DzaZ-;^#s1WXVyyARS9NXc1l?|WkQl)h2A)0k_*wF#V3?@9>uTLAhJf< zxDk!Medthi5L>7gmb@*Ah5QY1791}86+;VkmCMGMY%qA4mGI~H;R#IOEjao~&!{kVBhYu8OM@HJgye=?By~zCRs?CJT^t*1UmL=*K9D0S zV$7C-r>`RPV8yYANIdA;h!F}h7{<<-C8!*NSx9n|N28{UD;4Z#3oUrRzMc#w0}^x={f7!pPjn+&qelj)#hh%G=2Nl?>^A=`@` z-fI!PQS5L}yQ4iT))5vR!(sm(47PW8xSJ|2P6wO7^1wMo65E1w9JdC^+~Qddb;%@S zHk3Q&9?K7)78}pn8mq4CH!Daqoq?0xmcW2vr<^!s*-aP(SVFN|-%uw@VWJV4%??;` zaa~*kA7La&^p^s6rr6$)q4PCke?KECPBs z!Gj(*eee>->VWyaIEpS{>#<7%eLOJfBKMyj2F;cT#NIWR#37mHeW4ra0^}wqN5q3? zHu31vKXl9v7U3d;00SC9;x;YXa@n>K1O+xM2;Y8piYEBK*c_K z(lIqS(3yb_Qya~yv<;ALTv&08D-x|NL=&&hBv{um5X7@&OO5!&Vh8I1zl7wm$~vbi zj%UV~K=T1UBA-r$%CN#ShJcmD|IRth=h69y|LDvRO5Cl!*xNIv*)TMHv#bmUV6oB) zp6QI}qLhSew~~P(RFt@1Tu>JDMV>8ron6cpB1Ze|=;>LM$wmhY6`w;qLoVz(@r(#B zQ-f~Sia(Oj3sXJ{T0vKne6Y$tz5TFVEl*zEc zI0=IVWTeu3KHW+*leAM6Bubi*=_?q-bew7BSbCgbrGtlUMaXQ=u9HbdbHqtMdVun% zivkNf5Yiw}M%owr4|3{sHVe}GjD&S?hp@dvTt0UYT@P^@qVzh4sccq9hz&A~>=JH9 zLzPT;3O6!NFNfxKon?|9l$^Vcz`?al>sgqNoOSlUbP%={JnBI-^oJ0TbO1fNCc{~o zZc@Gi2pxp^o=NEH3rTZlL)5(2GezHFXPrfm85mv?2+!1Z5aB3QC9zH>0!(9>S7P zAUKQ(+b$v$U|h#xz)3Q1QY$Pj=!FJwHWXa>4%NK6Q$>8wd@z1Z9C5a?yH42AAX2`Z zL2t;hXu&HJ=>T(hB%39CrNlv9i%yo(*WieuQIds+RQRLCl zihRd>hSb^~=o-c<7M&UCo>9y?*+_V!+2NUAwEaA~pZ=l=(I^5zAj@}%9^~YpI~^Y5 z+m%ihLO6PPk!d&ra1TDgQFwlxBvDPBpM}haAT1b%Z7-CA*?|sZ(;fJZYOm2>%^Q)T zJ4OPH;%b%NlPH7Ak=!+ z7mF0##)<$7ih&jU((y4PT&qR{r+vYD4-L#?*~e(Rx@ZycT=<Z0)5{NRoXrg}B%xyN_{|i5Caj zyRoAGZGj!Z2jL-GG79^=Ka+ac4BRA5E5c#|1Pc{JY&l}L?3j<=rMqB zg+GqOhzEo#Y+0*I|A0Wzh^9N%p~IT0CZ6_2-bC?#KK|~PdE#F@Mjf%LfUR~KtJ56a zyO4_d1$hw`n)(0_b~vs!9p3MB19nIly}CggXHwhDAuD)J^5mYR7Thter@Snk2SFnS z)D|fa5#uS7PHOraZ!*W0frJe*gIJw{L7*DWy}=uL^ifY}Ww_t9S?1S*s%k9N~Q_ zg2B9MxKAa9>NBj40N~7YP8eJp_El;^tN!iIHk~oz#|X3J6(e zcM_IC6h+M@*5`~MTWeS6<3+S-6=6l;&i1>l7X8)#Qro^idm3$qK**sDAVM3S35DSMIctb;6Bl*ysn;pO+31-whO5UUzU!<@e*+_eW^6yZ;AO z={5dk`5k)z02uE{L_t(|+U;F?bXL`s-+P~X?-vpk@HMGmbvYGBQAk3ib~;+HcDjVA zR%;rZ+Nm?GwLZFp3i8O~=1YRDjx(-lYiByP)3IIcNYQcDtm>@6>JY3;3+4$yf$|6; zBryaGdEa}_-t))3H~9z&kPz}c^6j@4ipOel`WiV(QU;v26nYz@J=l=`*d(&Ho4h;D0vt z+<}^kt3Miza(Vgsr9@=!-o0zi%!@9n-MC@H2Lvt&fTS59r9~e=d3pJCL5LcLp#XqT zr2P7M^DgxNYHG2-lmfu|(o&2@qs#&iMVt zGP58eg=3(Ux{#TR3-a^TRB{DV0stZP8m#?{i1vZ8+Y3a*L`0tF)eFGl9rb&U5%gfH zyMmNwfDd-=M1URh6O7+#hVdF+!T2^`; zAS~Bfiv)ULG)5E=0g*>?^YZ4o0NS=~N&_H?tsp;N4HJH+1ppCUsF_O(^7B=BG@53B zWDfi0-Z1YDrPMvH>&h9vFEKL%z#Z@J*>krq2ve5@Fhx;K3|Uf9v38~w*kYOHT-S9u z763#9!$e^0S1=+Hi!?CvEvYOBQxe&JVW&r!;Ze)9=DMz{$M~+qB3cp64FzG^1tb~u zmsdPF&li54h{%}V6Ma`8BJx;nUf#S^bp$&AC;+U8rfKHvMK|C4(sMt4K>#cSaMKKsn5%y!T8MJ({G2ZvO5HIA z;dd$)7!-s6JwnivQo0FK2+1c1KhrSgdY;Fl0pK(u@B~3fM5MLe#Ug*6YJxCj7+_HN z2`-OV)?Cl?^aQ;hX=bgIx`q&+7!ri3Q7lRc0EEJ?tgL(ifIRAX;}d?Tas?tHi1hksQ}`Wt4pXSVZ7(S1Cl4$s)5C-F)+g9XlISLJ%fB z0~F*hAq!E6i~`dz?l_alAMaQ(GZW&HUHkSe1L%>0{3VoTfH;~Xf_LZVONKS=5(fF1 zQtDD>mNOBzV`PBP1QAJ?ub(k}`i9CaRXxeh0!fVEEL>k&iWZ`1?LKaq<|$SGM2(k- zFcHm(WMn)(6c#40AWT{S*!D^s6n==`(ppbix>iI45FbhfK}gBE`T+o*efC*H0Lx6% zoEcF6WV{cFh$x~9Sfp&>!i8oshlP~PtG}zK=U$~~iQ_mj$?p;h!leTP1NSB~3#jCq ze47eOO9gy-0aIQf2s9wXLmC0EJ{iSun@&mwA{3; zIg=p#PVEYmngg!;M6#BQDcM$kjPQFTDE7pYdQodF0`QHzyu45Ot{}O_G-)0-+}u%C zR%QucnPpk$jfeUt8UO$wis%AQ>#{j{c^Szj2$Kc?;pPq?DliPS#Bm%>kmvUWA< z)A}pPCJ2pWS^XBCC&hL&8wHAjSRBV8+|DHv03g`&Z@h6+-L{=={%47=3n*DuKR}OI zhFWP_)*P)hC(`VL-%id%>Z(u>CJPHBJOD!BS5Z-MlK?!J0K#un5CqAn2XpfBKAkLr zFu@-%Yf$)UkuuXX6G8Z$QVJCU3!lS&8ln65dA{iq@E>bycu`KN&Cce zV$ThlC{KWhBqE2DQa4pseQ?rh|Yy8U?Q5%A{lM12VYIJo`Hm6fP(ydwPE8%T~<+k z3j+NQ089&3CZ5g2hpXN5JZNukhsMSO(AwGxuImCb!{Nh+!E;?uO2M?uOvuX2gh)ol zL^6T||N0f;((0O;%_e|y0dyJwF~ZNbSE8Abk)d7h)kq|=XuQ5ZoV0M_2L=Y9wY3!* z8xO#dBS*mVJWxsvg5pq96L_8nhzQIKq!eUCA}}p86EZV1g@|whfWSmVto4>YrM~dT z>S~7}OA^5qB!mbId;GN4UpGy2ku#2rUpPrhDKJeF`uh4{&z?Q-)?07EwryLXt*s3J z08G;yT;0PbmWTjEps%kFj&^jwhiz@x-Q7J1kh35oVrE97Tc(NpT_R-&Rs1L4@A1pb z%)CN-{8Oc9#+h#Ji1qJ=VE_?9cXzk!*|P_C?AQ(m4>m%7f8XGWA07rWGjtt4J}3fX ze}{;mwT8aFKIrf317;rlo^b-f?;#YKf7z^Aue7ur|0ogkK%5!CFO*n_;tsg0BN6M0 zGZlW}>J2BpqoV_AYN}z&mP*{YvjMuhyFn=hhGCrW_hZc!AR>642c4ar@ZpCaLPtjj z^!N3RhY^UGfrw^nt=A;VE@O=M>W@aF94q{SiNZ7S@2=~@kt6NU*w_edZEY|xFfjPL z(@l6dvCW4L4O0AA^hGEbtw>}nI^iTi81I9r;|2gn1lO0A4hlcZiY#*7(S=`_xFMoZ zgp>L$b5VK_U--g6ohfp0O8FYpIyB8o2Fqt;(0CyfW(m! zH-=$AUtb>_IB)>!>+50PzP-@h-95PC$3yR-svOzaJq+i=68F0#|S) zi?p@2wf(^aS8<%Q0LE+eTX-IP@2QfHy94g;m7!+E=KI5m4=48c@#E0c)C7kPH9=Qb z*Pz-zn^^s98DKQ`U|AMSn>GzHv$DW6&CwW%5fMeCnUuP@rmE_IuLUNb1>({a8ua+F zGvKU^L?W}pm_IgS$IQ^t(E$e!Hp1bE`i4}F{Aay(bl@tKTaU5_Q2YPyXAd-;* zS(%xTF>Ts#AP|daL#f%?^9ljrf#BRBNqGhsN%#enh{H2>p|BgPe~$+PoJuFeW*CVG z{Da4QK`0^~5-qK(srg+z1mUCtAXfOXr#Bgf@foePD5cOBb}i7@*m#n#I~OZ`G5~Ob zmLVD`!{{GL%lr;8-xd!+IH@8q6n={qE&jG;Sr3W`^!D~*V`C%K*Vn`T{rjM+t83iC zZZbvScm-pBe?Rp1^@V~FiAad(az<=#ZEbzmw%1W*Wu>GX1BBH7y{DeKLc88uy?uSN z4;(mv6DjNxl>ttb#LCLbg7eNlABgBsCva7@0W~jGlXM0qwaV40PJ{w=l?Y{ zY~RPsWSS-tkpu=)%mjlmVP>PVvvcq9&dxXdU-hJ(3y8J61q)^=qQ?c`n?!VeQ2d$H z=ZU8a2qFMLL}cbpM0`O+o<4f?XmcDAa+4nhR##OuZ`-!*yR7x+nfX;j#84GOYTw-( z)&dax{e-_o#M?VMIvzWE^k{QDI)~#_3&_Ioz-0oUc?%ZYYY?qdN?pgyz|0yERf;iy z1^^X^+y+Ga{?Q{xejScMyy^jQss*?p01~R*)|Qs-=bwN6Mj+}ZqWOklWCohxob3ag zL=h+f+mncN0>CpDUwrYyO-)Vj#*Tq6`m!dyZ9Fdh0O8FWVW?A(pRac9+SOiHQ&Xa~ z{;a3<%K!j@ThK}B76brv*wZK?FA>qAj*gDvUAuO*o5A7>$H1rm6lVb2w&_b>`jT3^ zcCB_q(C-4Sl!l!<#dixXwY0Rfwj4hEn~z;~*>(Y#qm;TV@R#9WVuCY(`11-Btoj-v z`p%IfN20yGy{!a50$IS|4o*REdO7`lNC8#fNN zO2_`3JAeMQqSP8i^i`#lnuxG*f<@q9SQjwWudHd)o<7{v)Bpf5ybV0|=iCJgt`w0d zYkjq082QyzRn3!G8lKcBAojEm7I=pcn^@%U$xuHlTD!J4)CT^U04GKZ00238c}onX zRuj=JA_C0J<8=!Y1c2c{e4Ck{Ja+8ZYazYIs{4@L7=UwbxFM63dH?}d0>Eqm_>215 z+P5dWA~>lUpt7=3Y}+Q=wwo5;dh1auBV!o?+^#*nXz{JL9xS!(y_J=fQjnjo8g@1U zK#znS(M0I7gx4DeGTdVq*7VCKi`>*{`!^5x)gRonJToH1htb#`^X6tS#3 znHjWyv-2;J@X3;*qCG=y;I%=Y8OsK_3l?0-%&QE;_*+FZZLDtLEEpg*i`R#U&u3?6 z|Dd6vVeiSSJ_}9gp+UM2Tp2Tel@Jvof@Xd-!?NyrZ|hbak6b`p5*`*N z=U%}$?hEi;K{Wb|l$EW0&WczM4Gau$D5ed=AZ8Y=^-DymqPS>X{mE|O#AqQbGBLon zPv;iS5CA99eQeR@#ECnR?sIZ;^F(AVBHj}KhhgY8Ql*)HQeV60A>XaVuPr>T8$-g- zaQ*u4U*c(ZlWCecF*}180LZc|a2)3t0RBjk`e9+=n)Z{!#uME_PF~)p4W$YZacMC4 zCjsF!02umve>>N20pQ7wj*fRmqWjoqnSbMr+2T0M0r4T_3%sxZL=f%?V6N57pW9Ji ze>7g*zzG3>*w8R+5=F#mTI+CIxCDcy48wo{$7ukT^|t-}7Xf-C+*cU(8Vq*}8sJ_O zSxrRO4G$Yf0e}qQW2k5|efsnl_wL>64X69zMXej=&%aLq)+wc~3F#jF|AP?h4HS{S zMA;RT5CDh;LA0!Vtz}tH4nGetxU`WC!%%+2z^^HS@}i=mcSmvyu>*U}HP>8{k(v1& z(=Z-YO3l<-LogXQ3;vd_^YT8;%!P!w6aa=#d}!h7 zFRrVttw@B)PZ$7%dO#^<2;y%eR^;=JaXkG@dDL!=1=46f zSsBJULi}>*7PQvbeCQAan^Ho?c^MJcA31WQ_H^n#Z^43DTI7H=p&-y?JK@-i|-z9zzJlrpZ;T7v*+ z967PZ!Cix`1aNCjUETYMvicJW0I_1KtfJy;iqs21I5*l(VL?PuN)Z5nr@hw^p`xUy zcuNSV;rbw)(44%y>4f;O)_P^j;lu2C-m@RS^2+CGtE)SQ17`To^K)}=6OlqfTm%3R z#`LEcOMe>}^Zj*ob-zfY<6#mG0HG@=EG?Dql~?>*BoeuQU|@hxljda+LCdnx^SoYR zdBKdBPlZLM6WzkFB2!-8ytejsJzCKwcBRgpJNHiw!&oB#f1{MLMx*-?sh|1hcinmC zH_M|@NEGT%Pyh^thQ)R?+c4DcOv5s<9)a<}roYC_T5ozWIG|k)Uwry*TcgQzNRyMKBLKNG!sXS`8BEWL3b#Kra zbh?2fW){bBG$3AX7{(9S)0<*@4{X~ezb~OjTmVe~L;wL0!g|9{&HnoN^Y1WBa}yE$ z10v4${MkQ~Q%faC9`z#P^15x?TI1F6lXMJlVwNz-cMGyo{e zvQ8>8h2J0Rmj{bB04s>-LS{adx<8%Y-`r1hdm#f=fDl~s7V{nB zWkU&Ehl4~bs;jD+huXc<0GKe_u<XKBQu3G!1VDCi zv9oyb;yPx|C!)+?TRDz#^@HoWuz&x)@$L%MEBO#)gAN?e|D2VQ~mKgy_#kDmx)dl(aN#pmEm;rpNX=nffpy?M}P}A4fe{CcZx!&`U-vk^umQ&Kp{>Vufc#tW~b->@y5wtXaZw`+fgx zKfRBXTD5oYUN6)r$vBot34mBvuy*z8MqybgB2G*r>AAA-P$x$Vtf;A~I*?2uUrGTW zHZ&|LDSkz3{m-Up;<;o238)_tpW9Ja_ut7D@}(RA0D7c68U=tXBm~=W-73>GRS*@N zvycyoqOm=KX#m7C5C>q}UWvuU#hnE5sO!4jN~wu<1%imEnU5Pvt*EW8?mV$?Fb#mX z>jB%gsi>&vT^24SqH_WO5Q$b-SN|c|{eIGifg@RX6s;n9&tsk!iA1hFRcJVdFfi=x zdnF?hS=G|q40;lea!oV97(>I7k`jjqS9z}6Gy$REV92Lkch%OdTisOf`zZ;4SXWR| zRJ2EHULEuXj@KRdA)kn5fx>w1;ZFl#93Zgm;{VWE|7#E$$~a~}4EcVty{_)XRGj>j z1b`2MX9OS%72&#pfq`1nG{@=+SP>~^uGLx>4^{b6&r%Wq06kKWzl4g4ijE?|W1i>r zj=>cS_Vf$DqdV&BkNWrg_M`!jOtxX;MqQAfuS$xFw=i>sVHjru00{x0l&Yw&t$jO{ zLcWv^14pv3YG_2PD$n(DBN1y(7#fZe21*d}z1oZT-D52+oJt|zlwyF`(6DIj+Fk)~ zmFqaIN~zJdnF%5iYu&0uR_(5??oYPvo-_bX5fzk{ldEt|V+*|NE@pQUYzfgnBkQ`r3Tg3^^E+S(c#8W00JL032K3J0ce5)#yjL`aJ#5cc8t91surqhexN>??Q}#^Z?u z0tCP_7-F(numps$Ih^F=WEP9RWwP0DWU=C4u7QC8pG{vMlE6ZI#^32o2w=1MQkf9U zj%D$)pfDyY4hFTfv=}g%&4!@3xOkYj50>Lc;tUK8;S4*U?KdHx=yydJiG@V)f@;G9KxV57zqoH(8fb!^qrlZ z8NVe(MAD%WXIIzoh)8GxM2d@x!x1)EaPQu|P&p)IFqyGTCJu*#ahM__BcrFM2LZYU z2EVakR0lVZwn_r0X{ECqN=8*uxpp5rlzc{ER-F?h}GJ+ zPgz-+6QAgE$~7VBs+^o0)MR04X?yhOrGP*OM@N&xv@>VVkq;g6^zsf33pX-0mXel+ zm-Y4Yr$_3b)AQ$LaRYlOH9xz^rDMWqY`9wPkv4&HS>pBhG)LWmwR5$P z{|IN=t5lN4r0BM9MmA`^z0Hq$C2qVqdDW2Cyr1WNFQw~eyYbOLEBW-jZ}Zn%e2PAv z8afsqJ=^7~)4jA`?!mpRmYSuq<3s(owIVt?GBP%tuWOy~-}s`sKG9}1!Oq{hJ`+^r zOZk5GQsZgX@CE;0ccy+kJ6rf-t-5km1lPd^V2hn4jp`8gX*z35utWEb7qgKKnZ}_X ziYzJI479~ZRW!!zX*$4ZXMKNSSEl)FcOFtWq_8gJVpVOqqswynhnZhZw@-flDvHuQ zN8CX(O>w#CbiX!wxykT#j8O+9~fsTZ9QF!}dlOE)i>cr9i+ z^Y7v%r({y$0qPLO`-tH6wtKpLIp?<^sZNoNpH=2?RA-m#N@541e0?sZBIA3mwJr&@ zB=}8)ur(=mVlN7)-!8dx@hBddmp?#N>ZmJHQAIJ(LD{$`0wgism1;n33CeGjc*s*b z-hv1R-ke6V>UjEJQuzlcohWi}@BR(iBo_&8E1oOF62@F_dmz683Uj~hRbR=Ww~Tr# zQSNcY$KQk8Uy0kJD0@G9-NJ5hDM06m0p=xg^&L&|h3IFoJ|F`-)+>%~PxxW9N)pu7Y_m^g)l0eb5#S=#uTUMR@qv`qp-4dus6j~A;k~>$0 zC3w3zYcd2GtCjEVw_sf47dfkfK<;Y2J@To(zwQ220iJL6#bG*Tn|0}PJQ5?EIbZe{ zkPoY~XRo3ekLiyb(egX0?NlfPu)<>%YX49s>D=GpCd4&T415?K^y!cez}L3ddcgY= zeL*ln36s8ZBTvdjXbHic*Y9iB;ClR1@Od{P7*T@#Hy4}Z)lxDtw}{|!B-_&&d862( zqo}+)A3Tsua%$I(W-Pp=z$lXRHZlM7tT({uJ7roj9w{dU3t&uhy9K}&gOLA`c8Jv| z-8YVYQ&qo!XkS$3EccfQbxI~KZJgX{wF*RQ?^@=~a&OyBe(bAw;YQlHiDM>^gA0PL zM68>R6q{^DXe$d2hCTSTGH--wu+#0$&QYMb6dVObpW#95fv1epEAu zyzpv}W<*yNp@?5^Dx-?gMOCgfD?YXI@TUUzmGQoc&Eu~shed$qQ@IzpPRb5RSUI<1 zu}N+zeLQkw-Np6QKZW-Yn#h$Z?$&mWpxO{ORznIAQII%)_R(B7NX>uJnLN~L#FDTR zGAi9Z)_8|hF;pmUWBubD8nYt3$#a+|GN0g{hdyZ5|%G89tMbC+fofjNSuUTL*Giie7siM6a$^DJGlmJu1Uh zm}wd@U;K`BKTOEWs_^Vruxzh5pa7P6GrVGd(=v&)U5IzKr?z{^cfJ#nBpgIX0mG8b zpKp}!k`LsR+k1}O^JIaHD9#y~C`3r8j-zaVJV_qAg@bT=RWODl~7BDxz@lWKgl%i87hzh)je zQ8nx>Uq?+iixCE4n~pA*1z)m*-YBa4K<*R4DR8#pk4_|ca}`TV3*&c|pIjpYvRc6$9bho5o`<72SdZ8ZJpJFy4?Pk5H z9+MT`4h;&SXQu?l!CK zcVlE2d;U!ia2&E|Nb0#Q=T}xc`t@DH zh1o7Y7jx|Wo@^Oj(}w}+TElls*IZG@X4+KW-VtSl_{wKweaPQ$ybmeX_S|S{=SeT2 z1S6SRa3ePTatdkUx%VdMIrYh^EoI5T5$6NY0l!XuSeg^-Dl(!vqA>QaE$;Qb%pT`< zFb@Yy0enq)RYQyHdzBjDD1h~quWZQrH?DYgQlU%;>>#yYPdEGYQmkaJ;84_u#W!AC znlfKMLjr{K$Wm}dkcUP29RgMaO3D#hw+ zYgd(j>JUVR2v5$R&Fckj)hGP?ZXw1^ zyh}c_PAo75ff-4CyX3Z@JpL&SaY$fj!lYrV%r*FPc?k^|xVG1U-HCZ8EoUDj_{_Oy z&h!O%b$5NuUu;oWEV1sH&h~2Uc+pdDTi2A|;LlXk7&-s&ykkaE^Sa|7J1XcV-xb5r pX^SIxvyyh1 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 literal 0 HcmV?d00001 diff --git a/defs/ethereum/trin.png b/defs/ethereum/trin.png index 6b454d7451547662438cb120edf22206442f7777..c5d8de4b6a03c3d80c1d4fca6fc9140013cfcbf3 100644 GIT binary patch literal 11711 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 pX^SIxvyyh1 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 pX^SIxvyyh1Ay|=x#v}_|x4bC@GB~ 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 Date: Tue, 26 Mar 2019 23:08:12 +0530 Subject: [PATCH 753/767] defs: add EtherInc (ETI) (#301) --- defs/ethereum/eti.png | Bin 0 -> 9956 bytes defs/ethereum/networks.json | 10 ++++++++++ 2 files changed, 10 insertions(+) create mode 100644 defs/ethereum/eti.png diff --git a/defs/ethereum/eti.png b/defs/ethereum/eti.png new file mode 100644 index 0000000000000000000000000000000000000000..b448cd237106083f2e5895bd7b2eb74be511edfc GIT binary patch literal 9956 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 literal 0 HcmV?d00001 diff --git a/defs/ethereum/networks.json b/defs/ethereum/networks.json index 1a7b21ecb..186893407 100644 --- a/defs/ethereum/networks.json +++ b/defs/ethereum/networks.json @@ -105,6 +105,16 @@ "url": "https://gochain.io", "blockbook": [] }, + { + "chain": "eti", + "chain_id": 101, + "slip44": 464, + "shortcut": "ETI", + "name": "EtherInc", + "rskip60": false, + "url": "https://einc.io", + "blockbook": [] + }, { "chain": "etc", "chain_id": 61, From 7468ae4c7ec0ff8c559aa6e61e66e6ecc12232e3 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 28 Mar 2019 15:17:05 +0100 Subject: [PATCH 754/767] defs: add bitcoin-like coins to connect support --- defs/bitcoin/litecoin_testnet.json | 2 +- defs/support.json | 51 ++++++++++++++++++++++++++++-- 2 files changed, 49 insertions(+), 4 deletions(-) diff --git a/defs/bitcoin/litecoin_testnet.json b/defs/bitcoin/litecoin_testnet.json index b2e80903f..c8985f1d1 100644 --- a/defs/bitcoin/litecoin_testnet.json +++ b/defs/bitcoin/litecoin_testnet.json @@ -1,6 +1,6 @@ { "coin_name": "Litecoin Testnet", - "coin_shortcut": "TLTC", + "coin_shortcut": "tLTC", "coin_label": "Litecoin Testnet", "website": "https://litecoin.org", "github": "https://github.com/litecoin-project/litecoin", diff --git a/defs/support.json b/defs/support.json index c3b48a31f..394a41e8e 100644 --- a/defs/support.json +++ b/defs/support.json @@ -1,18 +1,63 @@ { "connect": { "supported": { + "bitcoin:ACM": true, + "bitcoin:AXE": true, "bitcoin:BCH": true, + "bitcoin:BITC": true, + "bitcoin:BSD": true, "bitcoin:BTC": true, + "bitcoin:BTCP": true, + "bitcoin:BTDX": true, "bitcoin:BTG": true, + "bitcoin:BTX": true, "bitcoin:CPC": true, "bitcoin:DASH": true, + "bitcoin:DCR": true, + "bitcoin:DGB": true, + "bitcoin:DNR": true, "bitcoin:DOGE": true, + "bitcoin:FJC": true, + "bitcoin:FLASH": true, + "bitcoin:FLO": true, + "bitcoin:FTC": true, + "bitcoin:GAME": true, + "bitcoin:GIN": true, + "bitcoin:GRS": true, "bitcoin:KMD": true, + "bitcoin:KOTO": true, "bitcoin:LTC": true, + "bitcoin:MEC": true, + "bitcoin:MONA": true, + "bitcoin:MUE": true, + "bitcoin:NIX": true, "bitcoin:NMC": true, + "bitcoin:PIVX": true, + "bitcoin:PTC": true, + "bitcoin:QTUM": true, + "bitcoin:RVN": true, + "bitcoin:SMART": true, + "bitcoin:TAZ": true, + "bitcoin:TBCH": true, + "bitcoin:TBTG": true, + "bitcoin:TDCR": true, "bitcoin:TEST": true, + "bitcoin:VIA": true, "bitcoin:VTC": true, + "bitcoin:XMY": true, + "bitcoin:XPM": true, + "bitcoin:XSN": true, + "bitcoin:XZC": true, + "bitcoin:ZCL": true, "bitcoin:ZEC": true, + "bitcoin:ZEN": true, + "bitcoin:tDASH": true, + "bitcoin:tGRS": true, + "bitcoin:tLTC": true, + "bitcoin:tPIVX": true, + "bitcoin:tQTUM": true, + "bitcoin:tSMART": true, + "bitcoin:tXZC": true, "eth:AKA": true, "eth:ATH": true, "eth:CLO": true, @@ -93,7 +138,6 @@ "bitcoin:TBTG": "1.7.1", "bitcoin:TDCR": "1.6.2", "bitcoin:TEST": "1.5.2", - "bitcoin:TLTC": "1.6.2", "bitcoin:VIA": "1.6.2", "bitcoin:VTC": "1.6.1", "bitcoin:XMY": "1.7.1", @@ -104,6 +148,7 @@ "bitcoin:ZEC": "1.7.1", "bitcoin:tDASH": "1.6.2", "bitcoin:tGRS": "1.6.2", + "bitcoin:tLTC": "1.6.2", "bitcoin:tPIVX": "1.8.0", "bitcoin:tQTUM": "1.8.1", "bitcoin:tSMART": "1.7.1", @@ -1423,7 +1468,6 @@ "bitcoin:TBTG": "2.0.8", "bitcoin:TDCR": "2.0.8", "bitcoin:TEST": "2.0.5", - "bitcoin:TLTC": "2.0.7", "bitcoin:VIA": "2.0.7", "bitcoin:VTC": "2.0.5", "bitcoin:XMY": "2.0.8", @@ -1435,6 +1479,7 @@ "bitcoin:ZEN": "2.0.8", "bitcoin:tDASH": "2.0.8", "bitcoin:tGRS": "2.0.8", + "bitcoin:tLTC": "2.0.7", "bitcoin:tPIVX": "2.0.11", "bitcoin:tQTUM": "2.1.1", "bitcoin:tSMART": "2.0.8", @@ -2728,12 +2773,12 @@ "bitcoin:TAZ": true, "bitcoin:TDCR": true, "bitcoin:TEST": true, - "bitcoin:TLTC": true, "bitcoin:VIA": true, "bitcoin:VTC": true, "bitcoin:XZC": true, "bitcoin:ZEC": true, "bitcoin:tGRS": true, + "bitcoin:tLTC": true, "eth:ETC": true, "eth:ETH": true }, From a31a3350a9c0c158da9e32e233c5e2741d5eed4a Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 28 Mar 2019 15:50:29 +0100 Subject: [PATCH 755/767] defs: add tXRP to Connect support.json --- defs/support.json | 1 + 1 file changed, 1 insertion(+) diff --git a/defs/support.json b/defs/support.json index 394a41e8e..d276f375c 100644 --- a/defs/support.json +++ b/defs/support.json @@ -87,6 +87,7 @@ "misc:XLM": true, "misc:XRP": true, "misc:XTZ": true, + "misc:tXRP": true, "nem:BREEZE": true, "nem:DIM": true, "nem:DIMTOK": true, From 7fa35c296513cec5318d62efdacc3ee9297ec5c3 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Thu, 28 Mar 2019 15:56:56 +0100 Subject: [PATCH 756/767] defs: add tXRP to T2 --- defs/support.json | 1 + 1 file changed, 1 insertion(+) diff --git a/defs/support.json b/defs/support.json index d276f375c..bd20a7a6f 100644 --- a/defs/support.json +++ b/defs/support.json @@ -2605,6 +2605,7 @@ "misc:XMR": "2.0.8", "misc:XRP": "2.0.8", "misc:XTZ": "2.0.8", + "misc:tXRP": "2.0.8", "nem:BREEZE": "2.0.7", "nem:DIM": "2.0.7", "nem:DIMTOK": "2.0.7", From 6cb2863478dcaf179fc3e0176cc9d511ab7f7e7f Mon Sep 17 00:00:00 2001 From: baff5b <46673846+baff5b@users.noreply.github.com> Date: Sun, 31 Mar 2019 19:48:47 +0200 Subject: [PATCH 757/767] defs: add XRC (#303) --- defs/bitcoin/brhodium.json | 44 +++++++++++++++++++++++++++++++++++++ defs/bitcoin/brhodium.png | Bin 0 -> 9420 bytes 2 files changed, 44 insertions(+) create mode 100644 defs/bitcoin/brhodium.json create mode 100644 defs/bitcoin/brhodium.png diff --git a/defs/bitcoin/brhodium.json b/defs/bitcoin/brhodium.json new file mode 100644 index 000000000..0ca2bb102 --- /dev/null +++ b/defs/bitcoin/brhodium.json @@ -0,0 +1,44 @@ +{ + "coin_name": "Brhodium", + "coin_shortcut": "XRC", + "coin_label": "Bitcoin Rhodium", + "website": "https://www.bitcoinrh.org", + "github": "https://gitlab.com/bitcoinrh/BRhodiumNode", + "maintainer": "baff5b ", + "curve_name": "secp256k1", + "address_type": 61, + "address_type_p2sh": 123, + "maxfee_kb": 2000000, + "minfee_kb": 1000, + "signed_message_header": "BitCoin Rhodium Signed Message:\n", + "hash_genesis_block": "baff5bfd9dc43fb672d003ec20fd21428f9282ca46bfa1730d73e1f2c75f5fdd", + "xprv_magic": 76066276, + "xpub_magic": 76067358, + "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "slip44": 10291, + "segwit": false, + "decred": false, + "fork_id": null, + "force_bip143": false, + "bip115": false, + "default_fee_b": { + "Low": 10, + "Economy": 70, + "Normal": 140, + "High": 200 + }, + "dust_limit": 546, + "blocktime_seconds": 600, + "uri_prefix": "bitcoin-rhodium", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [], + "blockbook": [ + "https://blockbook1.bitcoinrh.org", + "https://blockbook2.bitcoinrh.org" + ], + "cooldown": 100 +} diff --git a/defs/bitcoin/brhodium.png b/defs/bitcoin/brhodium.png new file mode 100644 index 0000000000000000000000000000000000000000..957d7b077ac3a5ab9160d6a4b78f70d55101d951 GIT binary patch literal 9420 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 sMpUylIp%1q)FK3BTn_da0$ Date: Sun, 31 Mar 2019 19:55:58 +0200 Subject: [PATCH 758/767] tools: fix checks in coin_info.py --- tools/coin_info.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/coin_info.py b/tools/coin_info.py index 40fd6489f..9ca8026af 100755 --- a/tools/coin_info.py +++ b/tools/coin_info.py @@ -110,7 +110,7 @@ BTC_CHECKS = [ check_key("coin_shortcut", str, regex=r"^t?[A-Z]{3,}$"), check_key("coin_label", str, regex=r"^[A-Z]"), check_key("website", str, regex=r"^https://.*[^/]$"), - check_key("github", str, regex=r"^https://github.com/.*[^/]$"), + check_key("github", str, regex=r"^https://git(hu|la)b.com/.*[^/]$"), check_key("maintainer", str), check_key( "curve_name", @@ -141,11 +141,11 @@ BTC_CHECKS = [ check_key("dust_limit", int), check_key("blocktime_seconds", int), check_key("signed_message_header", str), - check_key("uri_prefix", str, regex=r"^[a-z]+$"), + check_key("uri_prefix", str, regex=r"^[a-z-\.\+]+$"), check_key("min_address_length", int), check_key("max_address_length", int), - check_key("bech32_prefix", str, regex=r"^[a-z]+$", nullable=True), - check_key("cashaddr_prefix", str, regex=r"^[a-z]+$", nullable=True), + check_key("bech32_prefix", str, regex=r"^[a-z-\.\+]+$", nullable=True), + check_key("cashaddr_prefix", str, regex=r"^[a-z-\.\+]+$", nullable=True), check_key("bitcore", list, empty=True), check_key("blockbook", list, empty=True), ] From 5ccebed9d356c0eeeb12f73389c3d470562c3e79 Mon Sep 17 00:00:00 2001 From: Tomas Susanka Date: Tue, 2 Apr 2019 10:46:03 +0200 Subject: [PATCH 759/767] protobuf: add display rotation to ApplySettings (#304) --- protob/messages-management.proto | 1 + 1 file changed, 1 insertion(+) diff --git a/protob/messages-management.proto b/protob/messages-management.proto index edf78f29b..1e6d6d2ac 100644 --- a/protob/messages-management.proto +++ b/protob/messages-management.proto @@ -80,6 +80,7 @@ message ApplySettings { optional bytes homescreen = 4; optional PassphraseSourceType passphrase_source = 5; optional uint32 auto_lock_delay_ms = 6; + optional uint32 display_rotation = 7; // in degrees from North /** * Structure representing passphrase source */ From 550281adf15cbcd106f486b06b7cdd16e9b23c54 Mon Sep 17 00:00:00 2001 From: Szymon Lesisz Date: Tue, 2 Apr 2019 15:12:45 +0200 Subject: [PATCH 760/767] defs: add consensus_branch_id to bitcoin-like (#305) --- defs/bitcoin/actinium.json | 3 ++- defs/bitcoin/axe.json | 3 ++- defs/bitcoin/bcash.json | 3 ++- defs/bitcoin/bcash_testnet.json | 3 ++- defs/bitcoin/bgold.json | 3 ++- defs/bitcoin/bgold_testnet.json | 3 ++- defs/bitcoin/bitcash.json | 3 ++- defs/bitcoin/bitcloud.json | 3 ++- defs/bitcoin/bitcoin.json | 3 ++- defs/bitcoin/bitcoin_testnet.json | 3 ++- defs/bitcoin/bitcore.json | 3 ++- defs/bitcoin/bitsend.json | 3 ++- defs/bitcoin/bprivate.json | 3 ++- defs/bitcoin/brhodium.json | 3 ++- defs/bitcoin/capricoin.json | 3 ++- defs/bitcoin/crown.json | 3 ++- defs/bitcoin/dash.json | 3 ++- defs/bitcoin/dash_testnet.json | 3 ++- defs/bitcoin/decred.json | 3 ++- defs/bitcoin/decred_testnet.json | 3 ++- defs/bitcoin/denarius.json | 3 ++- defs/bitcoin/digibyte.json | 3 ++- defs/bitcoin/dogecoin.json | 3 ++- defs/bitcoin/feathercoin.json | 3 ++- defs/bitcoin/flashcoin.json | 3 ++- defs/bitcoin/florincoin.json | 3 ++- defs/bitcoin/fujicoin.json | 3 ++- defs/bitcoin/gamecredits.json | 3 ++- defs/bitcoin/gincoin.json | 3 ++- defs/bitcoin/groestlcoin.json | 3 ++- defs/bitcoin/groestlcoin_testnet.json | 3 ++- defs/bitcoin/komodo.json | 8 +++++++- defs/bitcoin/koto.json | 3 ++- defs/bitcoin/litecoin.json | 3 ++- defs/bitcoin/litecoin_testnet.json | 3 ++- defs/bitcoin/megacoin.json | 3 ++- defs/bitcoin/monacoin.json | 3 ++- defs/bitcoin/monetaryunit.json | 3 ++- defs/bitcoin/myriad.json | 3 ++- defs/bitcoin/namecoin.json | 3 ++- defs/bitcoin/nix.json | 3 ++- defs/bitcoin/pesetacoin.json | 3 ++- defs/bitcoin/pivx.json | 3 ++- defs/bitcoin/pivx_testnet.json | 3 ++- defs/bitcoin/primecoin.json | 3 ++- defs/bitcoin/qtum.json | 3 ++- defs/bitcoin/qtum_testnet.json | 3 ++- defs/bitcoin/ravencoin.json | 3 ++- defs/bitcoin/smartcash.json | 3 ++- defs/bitcoin/smartcash_testnet.json | 3 ++- defs/bitcoin/stakenet.json | 3 ++- defs/bitcoin/terracoin.json | 3 ++- defs/bitcoin/vertcoin.json | 3 ++- defs/bitcoin/viacoin.json | 3 ++- defs/bitcoin/zcash.json | 8 +++++++- defs/bitcoin/zcash_testnet.json | 8 +++++++- defs/bitcoin/zclassic.json | 3 ++- defs/bitcoin/zcoin.json | 3 ++- defs/bitcoin/zcoin_testnet.json | 3 ++- defs/bitcoin/zencash.json | 3 ++- 60 files changed, 135 insertions(+), 60 deletions(-) diff --git a/defs/bitcoin/actinium.json b/defs/bitcoin/actinium.json index a30304f3e..764799419 100644 --- a/defs/bitcoin/actinium.json +++ b/defs/bitcoin/actinium.json @@ -34,5 +34,6 @@ "max_address_length": 34, "bitcore": [], "blockbook": [], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/axe.json b/defs/bitcoin/axe.json index e57e3e64b..7804f0375 100644 --- a/defs/bitcoin/axe.json +++ b/defs/bitcoin/axe.json @@ -34,5 +34,6 @@ "max_address_length": 34, "bitcore": [], "blockbook": [], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/bcash.json b/defs/bitcoin/bcash.json index 29a617152..95c496eb8 100644 --- a/defs/bitcoin/bcash.json +++ b/defs/bitcoin/bcash.json @@ -43,5 +43,6 @@ "https://bch4.trezor.io", "https://bch5.trezor.io" ], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/bcash_testnet.json b/defs/bitcoin/bcash_testnet.json index ce59249ee..13b8c9365 100644 --- a/defs/bitcoin/bcash_testnet.json +++ b/defs/bitcoin/bcash_testnet.json @@ -34,5 +34,6 @@ "max_address_length": 34, "bitcore": [], "blockbook": [], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/bgold.json b/defs/bitcoin/bgold.json index e3e780335..8b31d0c10 100644 --- a/defs/bitcoin/bgold.json +++ b/defs/bitcoin/bgold.json @@ -43,5 +43,6 @@ "https://btg4.trezor.io", "https://btg5.trezor.io" ], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/bgold_testnet.json b/defs/bitcoin/bgold_testnet.json index 8007db7fd..b9ce5af09 100644 --- a/defs/bitcoin/bgold_testnet.json +++ b/defs/bitcoin/bgold_testnet.json @@ -37,5 +37,6 @@ "max_address_length": 34, "bitcore": [], "blockbook": [], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/bitcash.json b/defs/bitcoin/bitcash.json index b152c090b..41c0de6b1 100644 --- a/defs/bitcoin/bitcash.json +++ b/defs/bitcoin/bitcash.json @@ -37,5 +37,6 @@ "max_address_length": 53, "bitcore": [], "blockbook": [], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/bitcloud.json b/defs/bitcoin/bitcloud.json index 099d05403..5b9b1674c 100644 --- a/defs/bitcoin/bitcloud.json +++ b/defs/bitcoin/bitcloud.json @@ -34,5 +34,6 @@ "max_address_length": 34, "bitcore": [], "blockbook": [], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/bitcoin.json b/defs/bitcoin/bitcoin.json index 4df6e08af..f0d4ba3be 100644 --- a/defs/bitcoin/bitcoin.json +++ b/defs/bitcoin/bitcoin.json @@ -43,5 +43,6 @@ "https://btc4.trezor.io", "https://btc5.trezor.io" ], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/bitcoin_testnet.json b/defs/bitcoin/bitcoin_testnet.json index 0e4c88c45..1b6c59c6d 100644 --- a/defs/bitcoin/bitcoin_testnet.json +++ b/defs/bitcoin/bitcoin_testnet.json @@ -37,5 +37,6 @@ "https://tbtc1.trezor.io", "https://tbtc2.trezor.io" ], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/bitcore.json b/defs/bitcoin/bitcore.json index 74748dce9..cd226c824 100644 --- a/defs/bitcoin/bitcore.json +++ b/defs/bitcoin/bitcore.json @@ -36,5 +36,6 @@ "https://insight.bitcore.cc" ], "blockbook": [], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/bitsend.json b/defs/bitcoin/bitsend.json index 25a1084f0..c141b9e0b 100644 --- a/defs/bitcoin/bitsend.json +++ b/defs/bitcoin/bitsend.json @@ -34,5 +34,6 @@ "max_address_length": 34, "bitcore": [], "blockbook": [], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/bprivate.json b/defs/bitcoin/bprivate.json index 83ba75bdd..09f97a6fd 100644 --- a/defs/bitcoin/bprivate.json +++ b/defs/bitcoin/bprivate.json @@ -36,5 +36,6 @@ "https://explorer.btcprivate.org" ], "blockbook": [], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/brhodium.json b/defs/bitcoin/brhodium.json index 0ca2bb102..ec353e367 100644 --- a/defs/bitcoin/brhodium.json +++ b/defs/bitcoin/brhodium.json @@ -40,5 +40,6 @@ "https://blockbook1.bitcoinrh.org", "https://blockbook2.bitcoinrh.org" ], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/capricoin.json b/defs/bitcoin/capricoin.json index 3b2659277..8881cfe7d 100644 --- a/defs/bitcoin/capricoin.json +++ b/defs/bitcoin/capricoin.json @@ -42,5 +42,6 @@ "https://blockbook3.capricoin.org", "https://blockbook4.capricoin.org" ], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/crown.json b/defs/bitcoin/crown.json index 07cfbc288..e84776aee 100644 --- a/defs/bitcoin/crown.json +++ b/defs/bitcoin/crown.json @@ -34,5 +34,6 @@ "max_address_length": 34, "bitcore": [], "blockbook": [], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/dash.json b/defs/bitcoin/dash.json index 65651b006..388bf7a27 100644 --- a/defs/bitcoin/dash.json +++ b/defs/bitcoin/dash.json @@ -40,5 +40,6 @@ "https://dash4.trezor.io", "https://dash5.trezor.io" ], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/dash_testnet.json b/defs/bitcoin/dash_testnet.json index ce6ace0f5..1bf8838e0 100644 --- a/defs/bitcoin/dash_testnet.json +++ b/defs/bitcoin/dash_testnet.json @@ -34,5 +34,6 @@ "max_address_length": 34, "bitcore": [], "blockbook": [], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/decred.json b/defs/bitcoin/decred.json index 1d44e67f4..64caf3004 100644 --- a/defs/bitcoin/decred.json +++ b/defs/bitcoin/decred.json @@ -36,5 +36,6 @@ "https://mainnet.decred.org" ], "blockbook": [], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/decred_testnet.json b/defs/bitcoin/decred_testnet.json index d1f31c479..a6f7d1ab2 100644 --- a/defs/bitcoin/decred_testnet.json +++ b/defs/bitcoin/decred_testnet.json @@ -36,5 +36,6 @@ "https://testnet.decred.org" ], "blockbook": [], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/denarius.json b/defs/bitcoin/denarius.json index 8052e4961..e75985d44 100644 --- a/defs/bitcoin/denarius.json +++ b/defs/bitcoin/denarius.json @@ -34,5 +34,6 @@ "max_address_length": 34, "bitcore": [], "blockbook": [], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/digibyte.json b/defs/bitcoin/digibyte.json index 165c8588e..3c81a0a7e 100644 --- a/defs/bitcoin/digibyte.json +++ b/defs/bitcoin/digibyte.json @@ -40,5 +40,6 @@ "https://dgb1.trezor.io", "https://dgb2.trezor.io" ], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/dogecoin.json b/defs/bitcoin/dogecoin.json index 0ff8fdcce..4869603e1 100644 --- a/defs/bitcoin/dogecoin.json +++ b/defs/bitcoin/dogecoin.json @@ -40,5 +40,6 @@ "https://doge4.trezor.io", "https://doge5.trezor.io" ], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/feathercoin.json b/defs/bitcoin/feathercoin.json index cd750189c..504effe99 100644 --- a/defs/bitcoin/feathercoin.json +++ b/defs/bitcoin/feathercoin.json @@ -36,5 +36,6 @@ "https://bitcore.feathercoin.com" ], "blockbook": [], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/flashcoin.json b/defs/bitcoin/flashcoin.json index 68505ef21..e474ad536 100644 --- a/defs/bitcoin/flashcoin.json +++ b/defs/bitcoin/flashcoin.json @@ -36,5 +36,6 @@ "https://explorer.flashcoin.io" ], "blockbook": [], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/florincoin.json b/defs/bitcoin/florincoin.json index d77b6f910..f39306429 100644 --- a/defs/bitcoin/florincoin.json +++ b/defs/bitcoin/florincoin.json @@ -36,5 +36,6 @@ "https://livenet.flocha.in" ], "blockbook": [], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/fujicoin.json b/defs/bitcoin/fujicoin.json index cc6763236..35fe18dc4 100644 --- a/defs/bitcoin/fujicoin.json +++ b/defs/bitcoin/fujicoin.json @@ -39,5 +39,6 @@ "blockbook": [ "https://explorer.fujicoin.org" ], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/gamecredits.json b/defs/bitcoin/gamecredits.json index 6d6d46aee..d3d32b66a 100644 --- a/defs/bitcoin/gamecredits.json +++ b/defs/bitcoin/gamecredits.json @@ -36,5 +36,6 @@ "blockbook": [ "https://blockbook.gamecredits.network" ], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/gincoin.json b/defs/bitcoin/gincoin.json index 01469ea05..a23bd8a61 100644 --- a/defs/bitcoin/gincoin.json +++ b/defs/bitcoin/gincoin.json @@ -36,5 +36,6 @@ "blockbook": [ "https://blockbook.gincoin.io" ], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/groestlcoin.json b/defs/bitcoin/groestlcoin.json index 75e2fc275..e229280b4 100644 --- a/defs/bitcoin/groestlcoin.json +++ b/defs/bitcoin/groestlcoin.json @@ -39,5 +39,6 @@ "blockbook": [ "https://blockbook.groestlcoin.org" ], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/groestlcoin_testnet.json b/defs/bitcoin/groestlcoin_testnet.json index daf8fcb45..530765a96 100644 --- a/defs/bitcoin/groestlcoin_testnet.json +++ b/defs/bitcoin/groestlcoin_testnet.json @@ -38,5 +38,6 @@ "blockbook": [ "https://blockbook-test.groestlcoin.org" ], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/komodo.json b/defs/bitcoin/komodo.json index a7dc0b810..8c0490e41 100644 --- a/defs/bitcoin/komodo.json +++ b/defs/bitcoin/komodo.json @@ -36,5 +36,11 @@ "https://api.kmd.dev" ], "blockbook": [], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": { + "1": 0, + "2": 0, + "3": 1537743641, + "4": 1991772603 + } } diff --git a/defs/bitcoin/koto.json b/defs/bitcoin/koto.json index ed31ab738..0225e1b9d 100644 --- a/defs/bitcoin/koto.json +++ b/defs/bitcoin/koto.json @@ -36,5 +36,6 @@ "https://insight.kotocoin.info" ], "blockbook": [], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/litecoin.json b/defs/bitcoin/litecoin.json index 114af980a..55740e9b0 100644 --- a/defs/bitcoin/litecoin.json +++ b/defs/bitcoin/litecoin.json @@ -40,5 +40,6 @@ "https://ltc4.trezor.io", "https://ltc5.trezor.io" ], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/litecoin_testnet.json b/defs/bitcoin/litecoin_testnet.json index c8985f1d1..cea387b88 100644 --- a/defs/bitcoin/litecoin_testnet.json +++ b/defs/bitcoin/litecoin_testnet.json @@ -36,5 +36,6 @@ "https://testnet.litecore.io" ], "blockbook": [], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/megacoin.json b/defs/bitcoin/megacoin.json index 4fa60aff1..2386e6525 100644 --- a/defs/bitcoin/megacoin.json +++ b/defs/bitcoin/megacoin.json @@ -34,5 +34,6 @@ "max_address_length": 34, "bitcore": [], "blockbook": [], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/monacoin.json b/defs/bitcoin/monacoin.json index d5da7cef4..81d5634f5 100644 --- a/defs/bitcoin/monacoin.json +++ b/defs/bitcoin/monacoin.json @@ -39,5 +39,6 @@ "blockbook": [ "https://blockbook.electrum-mona.org" ], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/monetaryunit.json b/defs/bitcoin/monetaryunit.json index 7245c8235..d9be035c4 100644 --- a/defs/bitcoin/monetaryunit.json +++ b/defs/bitcoin/monetaryunit.json @@ -34,5 +34,6 @@ "max_address_length": 34, "bitcore": [], "blockbook": [], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/myriad.json b/defs/bitcoin/myriad.json index 293f30ec0..ca47fd459 100644 --- a/defs/bitcoin/myriad.json +++ b/defs/bitcoin/myriad.json @@ -37,5 +37,6 @@ "max_address_length": 34, "bitcore": [], "blockbook": [], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/namecoin.json b/defs/bitcoin/namecoin.json index a57622e45..c7a580918 100644 --- a/defs/bitcoin/namecoin.json +++ b/defs/bitcoin/namecoin.json @@ -37,5 +37,6 @@ "https://nmc1.trezor.io", "https://nmc2.trezor.io" ], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/nix.json b/defs/bitcoin/nix.json index 479f088de..031655cf4 100644 --- a/defs/bitcoin/nix.json +++ b/defs/bitcoin/nix.json @@ -34,5 +34,6 @@ "max_address_length": 34, "bitcore": ["https://blockchain.nixplatform.io"], "blockbook": [], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/pesetacoin.json b/defs/bitcoin/pesetacoin.json index cd38082f2..f05244955 100644 --- a/defs/bitcoin/pesetacoin.json +++ b/defs/bitcoin/pesetacoin.json @@ -36,5 +36,6 @@ "https://live.pesetacoin.info" ], "blockbook": [], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/pivx.json b/defs/bitcoin/pivx.json index 6a7e812a5..952167686 100644 --- a/defs/bitcoin/pivx.json +++ b/defs/bitcoin/pivx.json @@ -36,5 +36,6 @@ "blockbook": [ "https://blockbook.pivx.link" ], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/pivx_testnet.json b/defs/bitcoin/pivx_testnet.json index 364700056..43767846c 100644 --- a/defs/bitcoin/pivx_testnet.json +++ b/defs/bitcoin/pivx_testnet.json @@ -36,5 +36,6 @@ "blockbook": [ "https://blockbook-testnet.pivx.link" ], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/primecoin.json b/defs/bitcoin/primecoin.json index 74fb5882b..dab237e2e 100644 --- a/defs/bitcoin/primecoin.json +++ b/defs/bitcoin/primecoin.json @@ -34,5 +34,6 @@ "max_address_length": 35, "bitcore": [], "blockbook": [], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/qtum.json b/defs/bitcoin/qtum.json index 4767a8e00..552d1fee2 100644 --- a/defs/bitcoin/qtum.json +++ b/defs/bitcoin/qtum.json @@ -37,5 +37,6 @@ "max_address_length": 34, "bitcore": [], "blockbook": [], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/qtum_testnet.json b/defs/bitcoin/qtum_testnet.json index 937ea4300..7e897d9fd 100644 --- a/defs/bitcoin/qtum_testnet.json +++ b/defs/bitcoin/qtum_testnet.json @@ -37,5 +37,6 @@ "max_address_length": 34, "bitcore": [], "blockbook": [], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/ravencoin.json b/defs/bitcoin/ravencoin.json index 292b1f3ba..4374d6239 100644 --- a/defs/bitcoin/ravencoin.json +++ b/defs/bitcoin/ravencoin.json @@ -36,5 +36,6 @@ "https://ravencoin.network" ], "blockbook": [], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/smartcash.json b/defs/bitcoin/smartcash.json index f82ac9194..77d5f1716 100644 --- a/defs/bitcoin/smartcash.json +++ b/defs/bitcoin/smartcash.json @@ -39,5 +39,6 @@ "https://insight.smartcash.cc" ], "blockbook": [], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/smartcash_testnet.json b/defs/bitcoin/smartcash_testnet.json index 1be411754..36bbdd78f 100644 --- a/defs/bitcoin/smartcash_testnet.json +++ b/defs/bitcoin/smartcash_testnet.json @@ -37,5 +37,6 @@ "max_address_length": 35, "bitcore": [], "blockbook": [], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/stakenet.json b/defs/bitcoin/stakenet.json index 0e618f295..df1b6e08f 100644 --- a/defs/bitcoin/stakenet.json +++ b/defs/bitcoin/stakenet.json @@ -37,5 +37,6 @@ "max_address_length": 47, "bitcore": [], "blockbook": [], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } \ No newline at end of file diff --git a/defs/bitcoin/terracoin.json b/defs/bitcoin/terracoin.json index 2f845d3b7..76528faa9 100644 --- a/defs/bitcoin/terracoin.json +++ b/defs/bitcoin/terracoin.json @@ -36,5 +36,6 @@ "https://insight.terracoin.io" ], "blockbook": [], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/vertcoin.json b/defs/bitcoin/vertcoin.json index 34e2b65b6..636fb79b1 100644 --- a/defs/bitcoin/vertcoin.json +++ b/defs/bitcoin/vertcoin.json @@ -40,5 +40,6 @@ "https://vtc4.trezor.io", "https://vtc5.trezor.io" ], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/viacoin.json b/defs/bitcoin/viacoin.json index f590928fb..81ad49a8e 100644 --- a/defs/bitcoin/viacoin.json +++ b/defs/bitcoin/viacoin.json @@ -39,5 +39,6 @@ "https://explorer.viacoin.org" ], "blockbook": [], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/zcash.json b/defs/bitcoin/zcash.json index f88a1316a..5e9b5895c 100644 --- a/defs/bitcoin/zcash.json +++ b/defs/bitcoin/zcash.json @@ -40,5 +40,11 @@ "https://zec4.trezor.io", "https://zec5.trezor.io" ], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": { + "1": 0, + "2": 0, + "3": 1537743641, + "4": 1991772603 + } } diff --git a/defs/bitcoin/zcash_testnet.json b/defs/bitcoin/zcash_testnet.json index 42dc56360..ab95d367b 100644 --- a/defs/bitcoin/zcash_testnet.json +++ b/defs/bitcoin/zcash_testnet.json @@ -36,5 +36,11 @@ "https://explorer.testnet.z.cash" ], "blockbook": [], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": { + "1": 0, + "2": 0, + "3": 1537743641, + "4": 1991772603 + } } diff --git a/defs/bitcoin/zclassic.json b/defs/bitcoin/zclassic.json index dc38ea1da..7b4a58445 100644 --- a/defs/bitcoin/zclassic.json +++ b/defs/bitcoin/zclassic.json @@ -36,5 +36,6 @@ "https://explorer.zcl.zeltrez.io" ], "blockbook": [], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/zcoin.json b/defs/bitcoin/zcoin.json index b4de83638..55788a749 100644 --- a/defs/bitcoin/zcoin.json +++ b/defs/bitcoin/zcoin.json @@ -39,5 +39,6 @@ "https://insight.zcoin.io" ], "blockbook": [], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/zcoin_testnet.json b/defs/bitcoin/zcoin_testnet.json index 85d66c158..fe7653466 100644 --- a/defs/bitcoin/zcoin_testnet.json +++ b/defs/bitcoin/zcoin_testnet.json @@ -37,5 +37,6 @@ "max_address_length": 35, "bitcore": [], "blockbook": [], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } diff --git a/defs/bitcoin/zencash.json b/defs/bitcoin/zencash.json index 2f0424865..d6c3c8abd 100644 --- a/defs/bitcoin/zencash.json +++ b/defs/bitcoin/zencash.json @@ -36,5 +36,6 @@ "https://explorer.zensystem.io" ], "blockbook": [], - "cooldown": 100 + "cooldown": 100, + "consensus_branch_id": null } From 74321b80807e097698545242533af9ccf1d1bc87 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 5 Apr 2019 15:01:01 +0200 Subject: [PATCH 761/767] defs: update ethereum/tokens submodule --- defs/ethereum/tokens | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/defs/ethereum/tokens b/defs/ethereum/tokens index a5d185431..08039ae14 160000 --- a/defs/ethereum/tokens +++ b/defs/ethereum/tokens @@ -1 +1 @@ -Subproject commit a5d1854310d8d557cce993186cf2536503e108e3 +Subproject commit 08039ae14a2338374905830585b51ca4871b948b From 8afe6a79d6648a8a5e3b78385ad5f56142769628 Mon Sep 17 00:00:00 2001 From: Pavol Rusnak Date: Fri, 5 Apr 2019 15:05:09 +0200 Subject: [PATCH 762/767] defs: fix ethereum tokens --- defs/support.json | 50 ++++++++++++++++++++++++++++++----------------- 1 file changed, 32 insertions(+), 18 deletions(-) diff --git a/defs/support.json b/defs/support.json index bd20a7a6f..d4c679716 100644 --- a/defs/support.json +++ b/defs/support.json @@ -264,7 +264,6 @@ "erc20:eth:BITCAR": "1.8.0", "erc20:eth:BITPARK": "1.8.0", "erc20:eth:BIX": "1.8.0", - "erc20:eth:BKB": "1.6.2", "erc20:eth:BKRx": "1.6.2", "erc20:eth:BKX": "1.6.2", "erc20:eth:BLN": "1.8.0", @@ -306,7 +305,6 @@ "erc20:eth:BTM": "1.6.2", "erc20:eth:BTO": "1.8.0", "erc20:eth:BTQ": "1.6.2", - "erc20:eth:BTR": "1.8.0", "erc20:eth:BTRN": "1.8.0", "erc20:eth:BTT": "1.6.2", "erc20:eth:BTTX": "1.6.2", @@ -325,10 +323,8 @@ "erc20:eth:CARB": "1.6.2", "erc20:eth:CARCO": "1.6.2", "erc20:eth:CARE": "1.6.2", - "erc20:eth:CAS": "1.6.2", "erc20:eth:CAT (BitClave)": "1.6.2", "erc20:eth:CAT (BlockCAT)": "1.8.0", - "erc20:eth:CATs (BitClave)_Old": "1.6.2", "erc20:eth:CBC": "1.8.0", "erc20:eth:CBIX": "1.6.3", "erc20:eth:CBM": "1.8.0", @@ -519,7 +515,6 @@ "erc20:eth:EVE": "1.6.2", "erc20:eth:EVX": "1.6.2", "erc20:eth:EWO": "1.8.0", - "erc20:eth:EXC": "1.8.0", "erc20:eth:EXMR": "1.6.2", "erc20:eth:EXRN": "1.8.0", "erc20:eth:EXY": "1.6.3", @@ -559,7 +554,6 @@ "erc20:eth:FTXT": "1.6.3", "erc20:eth:FUEL": "1.6.2", "erc20:eth:FUN": "1.6.2", - "erc20:eth:FXC": "1.6.3", "erc20:eth:FXT": "1.8.0", "erc20:eth:FYN": "1.6.2", "erc20:eth:FYP": "1.8.0", @@ -723,7 +717,6 @@ "erc20:eth:LUCK": "1.6.2", "erc20:eth:LUM": "1.6.2", "erc20:eth:LUN": "1.6.2", - "erc20:eth:LYM": "1.8.0", "erc20:eth:LYS": "1.6.2", "erc20:eth:M-ETH": "1.6.2", "erc20:eth:MAD": "1.6.2", @@ -829,7 +822,6 @@ "erc20:eth:ORBS": "1.6.2", "erc20:eth:ORCA": "1.6.3", "erc20:eth:ORI": "1.8.0", - "erc20:eth:ORME": "1.8.0", "erc20:eth:ORS": "1.8.0", "erc20:eth:OST": "1.6.2", "erc20:eth:OTN": "1.8.0", @@ -1089,7 +1081,6 @@ "erc20:eth:TTC": "1.8.0", "erc20:eth:TTU": "1.8.0", "erc20:eth:TUSD": "1.8.0", - "erc20:eth:TUSD:deprecated": "1.8.0", "erc20:eth:TWN": "1.6.2", "erc20:eth:TWNKL": "1.6.2", "erc20:eth:TaaS": "1.6.2", @@ -1289,17 +1280,25 @@ "erc20:eth:ATS": "(AUTO) duplicate key", "erc20:eth:BCAP:1f41": "(AUTO) duplicate key", "erc20:eth:BCAP:ff35": "(AUTO) duplicate key", + "erc20:eth:BKB:5c39": "(AUTO) duplicate key", + "erc20:eth:BKB:b2bf": "(AUTO) duplicate key", "erc20:eth:BNC:dd6b": "(AUTO) duplicate key", "erc20:eth:BNC:ef51": "(AUTO) duplicate key", "erc20:eth:BOX:63f5": "(AUTO) duplicate key", "erc20:eth:BOX:e1a1": "(AUTO) duplicate key", "erc20:eth:BTL (Battle)": "(AUTO) duplicate key", "erc20:eth:BTL (Bitlle)": "(AUTO) duplicate key", + "erc20:eth:BTR:499a": "(AUTO) duplicate key", + "erc20:eth:BTR:cbf1": "(AUTO) duplicate key", "erc20:eth:CAR": "(AUTO) duplicate key", "erc20:eth:CAR (CarBlock)": "(AUTO) duplicate key", "erc20:eth:CARD:1ed2": "(AUTO) duplicate key", "erc20:eth:CARD:954b": "(AUTO) duplicate key", "erc20:eth:CARD:b07e": "(AUTO) duplicate key", + "erc20:eth:CAS:7794": "(AUTO) duplicate key", + "erc20:eth:CAS:e878": "(AUTO) duplicate key", + "erc20:eth:CATS": "(AUTO) duplicate key", + "erc20:eth:CATs (BitClave)_Old": "(AUTO) duplicate key", "erc20:eth:CDX:2cb1": "(AUTO) duplicate key", "erc20:eth:CDX:6fff": "(AUTO) duplicate key", "erc20:eth:COIN:5e8f": "(AUTO) duplicate key", @@ -1327,6 +1326,8 @@ "erc20:eth:EOS": "switched to custom network", "erc20:eth:EVN:6890": "(AUTO) duplicate key", "erc20:eth:EVN:d780": "(AUTO) duplicate key", + "erc20:eth:EXC:00c4": "(AUTO) duplicate key", + "erc20:eth:EXC:9e4c": "(AUTO) duplicate key", "erc20:eth:FANX:7dcb": "(AUTO) duplicate key", "erc20:eth:FANX:7f67": "(AUTO) duplicate key", "erc20:eth:FLMC:04cc": "(AUTO) duplicate key", @@ -1334,6 +1335,8 @@ "erc20:eth:FTC": "(AUTO) duplicate key", "erc20:eth:FUCK:65be": "(AUTO) duplicate key", "erc20:eth:FUCK:ab16": "(AUTO) duplicate key", + "erc20:eth:FXC:4a57": "(AUTO) duplicate key", + "erc20:eth:FXC:c92d": "(AUTO) duplicate key", "erc20:eth:GANA:6754": "(AUTO) duplicate key", "erc20:eth:GANA:c0ea": "(AUTO) duplicate key", "erc20:eth:Hdp": "(AUTO) duplicate key", @@ -1352,6 +1355,8 @@ "erc20:eth:LINK Platform": "(AUTO) duplicate key", "erc20:eth:LNC": "(AUTO) duplicate key", "erc20:eth:LNC (Linker Coin)": "(AUTO) duplicate key", + "erc20:eth:LYM:57ad": "(AUTO) duplicate key", + "erc20:eth:LYM:c690": "(AUTO) duplicate key", "erc20:eth:MESH:01f2": "(AUTO) duplicate key", "erc20:eth:MESH:f030": "(AUTO) duplicate key", "erc20:eth:MIT": "(AUTO) duplicate key", @@ -1369,6 +1374,8 @@ "erc20:eth:OHNI:7f21": "(AUTO) duplicate key", "erc20:eth:OPEN:69c4": "(AUTO) duplicate key", "erc20:eth:OPEN:e9de": "(AUTO) duplicate key", + "erc20:eth:ORME:516e": "(AUTO) duplicate key", + "erc20:eth:ORME:c96d": "(AUTO) duplicate key", "erc20:eth:PASS:7776": "(AUTO) duplicate key", "erc20:eth:PASS:ee44": "(AUTO) duplicate key", "erc20:eth:PCH:e3f4": "(AUTO) duplicate key", @@ -1595,7 +1602,6 @@ "erc20:eth:BITCAR": "2.0.10", "erc20:eth:BITPARK": "2.0.10", "erc20:eth:BIX": "2.0.10", - "erc20:eth:BKB": "2.0.7", "erc20:eth:BKRx": "2.0.7", "erc20:eth:BKX": "2.0.7", "erc20:eth:BLN": "2.0.10", @@ -1637,7 +1643,6 @@ "erc20:eth:BTM": "2.0.7", "erc20:eth:BTO": "2.0.10", "erc20:eth:BTQ": "2.0.7", - "erc20:eth:BTR": "2.0.10", "erc20:eth:BTRN": "2.0.10", "erc20:eth:BTT": "2.0.7", "erc20:eth:BTTX": "2.0.7", @@ -1656,10 +1661,8 @@ "erc20:eth:CARB": "2.0.7", "erc20:eth:CARCO": "2.0.7", "erc20:eth:CARE": "2.0.7", - "erc20:eth:CAS": "2.0.7", "erc20:eth:CAT (BitClave)": "2.0.7", "erc20:eth:CAT (BlockCAT)": "2.0.11", - "erc20:eth:CATs (BitClave)_Old": "2.0.7", "erc20:eth:CBC": "2.0.10", "erc20:eth:CBIX": "2.0.8", "erc20:eth:CBM": "2.0.11", @@ -1850,7 +1853,6 @@ "erc20:eth:EVE": "2.0.7", "erc20:eth:EVX": "2.0.7", "erc20:eth:EWO": "2.0.10", - "erc20:eth:EXC": "2.0.10", "erc20:eth:EXMR": "2.0.7", "erc20:eth:EXRN": "2.0.10", "erc20:eth:EXY": "2.0.8", @@ -1890,7 +1892,6 @@ "erc20:eth:FTXT": "2.0.8", "erc20:eth:FUEL": "2.0.7", "erc20:eth:FUN": "2.0.7", - "erc20:eth:FXC": "2.0.8", "erc20:eth:FXT": "2.0.10", "erc20:eth:FYN": "2.0.7", "erc20:eth:FYP": "2.0.10", @@ -2054,7 +2055,6 @@ "erc20:eth:LUCK": "2.0.7", "erc20:eth:LUM": "2.0.7", "erc20:eth:LUN": "2.0.7", - "erc20:eth:LYM": "2.0.10", "erc20:eth:LYS": "2.0.7", "erc20:eth:M-ETH": "2.0.7", "erc20:eth:MAD": "2.0.7", @@ -2160,7 +2160,6 @@ "erc20:eth:ORBS": "2.0.7", "erc20:eth:ORCA": "2.0.8", "erc20:eth:ORI": "2.0.10", - "erc20:eth:ORME": "2.0.10", "erc20:eth:ORS": "2.0.10", "erc20:eth:OST": "2.0.7", "erc20:eth:OTN": "2.0.10", @@ -2420,7 +2419,6 @@ "erc20:eth:TTC": "2.0.11", "erc20:eth:TTU": "2.0.10", "erc20:eth:TUSD": "2.0.10", - "erc20:eth:TUSD:deprecated": "2.0.11", "erc20:eth:TWN": "2.0.7", "erc20:eth:TWNKL": "2.0.7", "erc20:eth:TaaS": "2.0.7", @@ -2624,17 +2622,25 @@ "erc20:eth:ATS": "(AUTO) duplicate key", "erc20:eth:BCAP:1f41": "(AUTO) duplicate key", "erc20:eth:BCAP:ff35": "(AUTO) duplicate key", + "erc20:eth:BKB:5c39": "(AUTO) duplicate key", + "erc20:eth:BKB:b2bf": "(AUTO) duplicate key", "erc20:eth:BNC:dd6b": "(AUTO) duplicate key", "erc20:eth:BNC:ef51": "(AUTO) duplicate key", "erc20:eth:BOX:63f5": "(AUTO) duplicate key", "erc20:eth:BOX:e1a1": "(AUTO) duplicate key", "erc20:eth:BTL (Battle)": "(AUTO) duplicate key", "erc20:eth:BTL (Bitlle)": "(AUTO) duplicate key", + "erc20:eth:BTR:499a": "(AUTO) duplicate key", + "erc20:eth:BTR:cbf1": "(AUTO) duplicate key", "erc20:eth:CAR": "(AUTO) duplicate key", "erc20:eth:CAR (CarBlock)": "(AUTO) duplicate key", "erc20:eth:CARD:1ed2": "(AUTO) duplicate key", "erc20:eth:CARD:954b": "(AUTO) duplicate key", "erc20:eth:CARD:b07e": "(AUTO) duplicate key", + "erc20:eth:CAS:7794": "(AUTO) duplicate key", + "erc20:eth:CAS:e878": "(AUTO) duplicate key", + "erc20:eth:CATS": "(AUTO) duplicate key", + "erc20:eth:CATs (BitClave)_Old": "(AUTO) duplicate key", "erc20:eth:CDX:2cb1": "(AUTO) duplicate key", "erc20:eth:CDX:6fff": "(AUTO) duplicate key", "erc20:eth:COIN:5e8f": "(AUTO) duplicate key", @@ -2662,6 +2668,8 @@ "erc20:eth:EOS": "switched to custom network", "erc20:eth:EVN:6890": "(AUTO) duplicate key", "erc20:eth:EVN:d780": "(AUTO) duplicate key", + "erc20:eth:EXC:00c4": "(AUTO) duplicate key", + "erc20:eth:EXC:9e4c": "(AUTO) duplicate key", "erc20:eth:FANX:7dcb": "(AUTO) duplicate key", "erc20:eth:FANX:7f67": "(AUTO) duplicate key", "erc20:eth:FLMC:04cc": "(AUTO) duplicate key", @@ -2669,6 +2677,8 @@ "erc20:eth:FTC": "(AUTO) duplicate key", "erc20:eth:FUCK:65be": "(AUTO) duplicate key", "erc20:eth:FUCK:ab16": "(AUTO) duplicate key", + "erc20:eth:FXC:4a57": "(AUTO) duplicate key", + "erc20:eth:FXC:c92d": "(AUTO) duplicate key", "erc20:eth:GANA:6754": "(AUTO) duplicate key", "erc20:eth:GANA:c0ea": "(AUTO) duplicate key", "erc20:eth:Hdp": "(AUTO) duplicate key", @@ -2687,6 +2697,8 @@ "erc20:eth:LINK Platform": "(AUTO) duplicate key", "erc20:eth:LNC": "(AUTO) duplicate key", "erc20:eth:LNC (Linker Coin)": "(AUTO) duplicate key", + "erc20:eth:LYM:57ad": "(AUTO) duplicate key", + "erc20:eth:LYM:c690": "(AUTO) duplicate key", "erc20:eth:MESH:01f2": "(AUTO) duplicate key", "erc20:eth:MESH:f030": "(AUTO) duplicate key", "erc20:eth:MIT": "(AUTO) duplicate key", @@ -2704,6 +2716,8 @@ "erc20:eth:OHNI:7f21": "(AUTO) duplicate key", "erc20:eth:OPEN:69c4": "(AUTO) duplicate key", "erc20:eth:OPEN:e9de": "(AUTO) duplicate key", + "erc20:eth:ORME:516e": "(AUTO) duplicate key", + "erc20:eth:ORME:c96d": "(AUTO) duplicate key", "erc20:eth:PASS:7776": "(AUTO) duplicate key", "erc20:eth:PASS:ee44": "(AUTO) duplicate key", "erc20:eth:PCH:e3f4": "(AUTO) duplicate key", From 6d6b0945d868a854ee8e3d147ab86625e57f26fc Mon Sep 17 00:00:00 2001 From: Cronos <37080958+eabz@users.noreply.github.com> Date: Fri, 5 Apr 2019 14:05:35 -0600 Subject: [PATCH 763/767] defs: add Polis (#308) --- .gitignore | 1 + defs/bitcoin/polis.json | 41 ++++++++++++++++++++++++++++++++++++++++ defs/bitcoin/polis.png | Bin 0 -> 12890 bytes 3 files changed, 42 insertions(+) create mode 100644 defs/bitcoin/polis.json create mode 100644 defs/bitcoin/polis.png diff --git a/.gitignore b/.gitignore index 5ede1f0a2..b13333916 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ tools/coins.json tools/coindefs.json tools/coinmarketcap.json proto.gv* +.idea/* diff --git a/defs/bitcoin/polis.json b/defs/bitcoin/polis.json new file mode 100644 index 000000000..caa886612 --- /dev/null +++ b/defs/bitcoin/polis.json @@ -0,0 +1,41 @@ +{ + "coin_name": "Polis", + "coin_shortcut": "POLIS", + "coin_label": "Polis", + "website": "https://www.polispay.org", + "github": "https://github.com/polispay/polis", + "maintainer": "Cronos ", + "curve_name": "secp256k1", + "address_type": 55, + "address_type_p2sh": 56, + "maxfee_kb": 100000, + "minfee_kb": 1000, + "signed_message_header": "Polis Signed Message:\n", + "hash_genesis_block": "000009701eb781a8113b1af1d814e2f060f6408a2c990db291bc5108a1345c1e", + "xprv_magic": 65166718, + "xpub_magic": 65165637, + "xpub_magic_segwit_p2sh": null, + "xpub_magic_segwit_native": null, + "bech32_prefix": null, + "cashaddr_prefix": null, + "slip44": 1997, + "segwit": false, + "decred": false, + "fork_id": null, + "force_bip143": false, + "bip115": false, + "default_fee_b": { + "Normal": 10 + }, + "dust_limit": 5460, + "blocktime_seconds": 120, + "uri_prefix": "polis", + "min_address_length": 27, + "max_address_length": 34, + "bitcore": [], + "blockbook": [ + "https://blockbook.polispay.org" + ], + "cooldown": 100, + "consensus_branch_id": null +} diff --git a/defs/bitcoin/polis.png b/defs/bitcoin/polis.png new file mode 100644 index 0000000000000000000000000000000000000000..56c8827c8100b89394c5463dac39f5e6e41bcbd4 GIT binary patch literal 12890 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 literal 0 HcmV?d00001 From 01004c7aa09d6dec89d6e1fc5a9c35326cccf72a Mon Sep 17 00:00:00 2001 From: Szymon Lesisz Date: Tue, 9 Apr 2019 13:26:30 +0200 Subject: [PATCH 764/767] remove incompatible coins from connect Decred, Decred Testnet, Groestlcoin, Groestlcoin Testnet, SmartCash, SmartCash Testnet are incompatible with bitcoinjs library --- defs/support.json | 6 ------ 1 file changed, 6 deletions(-) diff --git a/defs/support.json b/defs/support.json index d4c679716..3b0714eca 100644 --- a/defs/support.json +++ b/defs/support.json @@ -13,7 +13,6 @@ "bitcoin:BTX": true, "bitcoin:CPC": true, "bitcoin:DASH": true, - "bitcoin:DCR": true, "bitcoin:DGB": true, "bitcoin:DNR": true, "bitcoin:DOGE": true, @@ -23,7 +22,6 @@ "bitcoin:FTC": true, "bitcoin:GAME": true, "bitcoin:GIN": true, - "bitcoin:GRS": true, "bitcoin:KMD": true, "bitcoin:KOTO": true, "bitcoin:LTC": true, @@ -36,11 +34,9 @@ "bitcoin:PTC": true, "bitcoin:QTUM": true, "bitcoin:RVN": true, - "bitcoin:SMART": true, "bitcoin:TAZ": true, "bitcoin:TBCH": true, "bitcoin:TBTG": true, - "bitcoin:TDCR": true, "bitcoin:TEST": true, "bitcoin:VIA": true, "bitcoin:VTC": true, @@ -52,11 +48,9 @@ "bitcoin:ZEC": true, "bitcoin:ZEN": true, "bitcoin:tDASH": true, - "bitcoin:tGRS": true, "bitcoin:tLTC": true, "bitcoin:tPIVX": true, "bitcoin:tQTUM": true, - "bitcoin:tSMART": true, "bitcoin:tXZC": true, "eth:AKA": true, "eth:ATH": true, From 15922b93b3cce4197de753185dec8297470d40d3 Mon Sep 17 00:00:00 2001 From: Szymon Lesisz Date: Tue, 9 Apr 2019 13:39:53 +0200 Subject: [PATCH 765/767] QTUM (1.8.1, 2.1.1) not available yet --- defs/support.json | 2 -- 1 file changed, 2 deletions(-) diff --git a/defs/support.json b/defs/support.json index 3b0714eca..4bd81189e 100644 --- a/defs/support.json +++ b/defs/support.json @@ -32,7 +32,6 @@ "bitcoin:NMC": true, "bitcoin:PIVX": true, "bitcoin:PTC": true, - "bitcoin:QTUM": true, "bitcoin:RVN": true, "bitcoin:TAZ": true, "bitcoin:TBCH": true, @@ -50,7 +49,6 @@ "bitcoin:tDASH": true, "bitcoin:tLTC": true, "bitcoin:tPIVX": true, - "bitcoin:tQTUM": true, "bitcoin:tXZC": true, "eth:AKA": true, "eth:ATH": true, From a63a4e51124e898225001587f425219774251275 Mon Sep 17 00:00:00 2001 From: Enrique <37080958+eabz@users.noreply.github.com> Date: Fri, 12 Apr 2019 09:59:05 -0500 Subject: [PATCH 766/767] defs: fix Polis xpub and xprv (#312) --- defs/bitcoin/polis.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/defs/bitcoin/polis.json b/defs/bitcoin/polis.json index caa886612..ab1a25a1b 100644 --- a/defs/bitcoin/polis.json +++ b/defs/bitcoin/polis.json @@ -12,8 +12,8 @@ "minfee_kb": 1000, "signed_message_header": "Polis Signed Message:\n", "hash_genesis_block": "000009701eb781a8113b1af1d814e2f060f6408a2c990db291bc5108a1345c1e", - "xprv_magic": 65166718, - "xpub_magic": 65165637, + "xprv_magic": 65165637, + "xpub_magic": 65166718, "xpub_magic_segwit_p2sh": null, "xpub_magic_segwit_native": null, "bech32_prefix": null, From 893fd219d4a01bcffa0cd9cfa631856371ec5aa9 Mon Sep 17 00:00:00 2001 From: Eric Shin Date: Mon, 15 Apr 2019 20:44:57 +0900 Subject: [PATCH 767/767] Add Metadium (META) Support (#313) * add configuration of metadium netwrok * add Metadium(META) Icon --- defs/ethereum/meta.png | Bin 0 -> 713 bytes defs/ethereum/networks.json | 10 ++++++++++ 2 files changed, 10 insertions(+) create mode 100644 defs/ethereum/meta.png diff --git a/defs/ethereum/meta.png b/defs/ethereum/meta.png new file mode 100644 index 0000000000000000000000000000000000000000..ad8f6d0fab7e4d1c67bbeb1164964e300addbe94 GIT binary patch literal 713 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSoCO|{#S9GGLLkg|>2BR01_q{T zPZ!6KiaBrZe)PQ^Ai(~Bo!dmYgvBj^#q9*!S&q95rA$^%){G@gmpBueQ<}rV-qdHY zyVQsu-TQv>ya_#1$_wi%`F?!41T-EQG<26=6|cD6Zy6VzegFKImhiP(OaFfk`MvL6 zZPMKNzpb9XIQP2$jMZ+Y|17=j7Z)FY9rqbnrALWY|Gs>yY;(u0h zBjr2u9p5w3hR?Pg`TIKCsaNxP`PK5HKE6LDeyljQbW3(}wWr0-i(l`nm&7dH*8cZ> zTk4k^tG1uc+WTw4Rcpoi&Zv#++}w-iow-wf&FtZ=`>YQip4grF;>h39Lwhc6&HFVq z#moHq`D?c>A9;T+_W6<%=WgtLdo@_;_31UHn~JSJPcj#(Ei#s}Fcu4CS|u-Yr?CvxflvKu_sZr%T2ip)yUNx@q{a-Ob!F6*2UngC^+ BJGKA- literal 0 HcmV?d00001 diff --git a/defs/ethereum/networks.json b/defs/ethereum/networks.json index 186893407..b7ea8011d 100644 --- a/defs/ethereum/networks.json +++ b/defs/ethereum/networks.json @@ -55,6 +55,16 @@ "url": "https://ubiqsmart.com", "blockbook": [] }, + { + "chain": "meta", + "chain_id": 11, + "slip44": 916, + "shortcut": "META", + "name": "Metadium", + "rskip60": false, + "url": "https://metadium.com", + "blockbook": [] + }, { "chain": "etsc", "chain_id": 28,