diff --git a/android/app/build.gradle b/android/app/build.gradle index 1c4606391..43fa59080 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -37,7 +37,7 @@ android { defaultConfig { applicationId "com.komodoplatform.atomicdex" - minSdkVersion 27 + minSdkVersion 28 targetSdkVersion 31 versionCode flutterVersionCode.toInteger() versionName flutterVersionName diff --git a/android/build.gradle b/android/build.gradle index 41a1da82c..61b87689b 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -21,7 +21,7 @@ allprojects { rootProject.buildDir = '../build' subprojects { - project.buildDir = "${rootProject.buildDir}/${project.name}" +project.buildDir = "${rootProject.buildDir}/${project.name}" } subprojects { project.evaluationDependsOn(':app') diff --git a/assets/coin-icons/blocx.png b/assets/coin-icons/blocx.png new file mode 100644 index 000000000..f7c9bf280 Binary files /dev/null and b/assets/coin-icons/blocx.png differ diff --git a/assets/coin-icons/borg.png b/assets/coin-icons/borg.png new file mode 100644 index 000000000..1e0381913 Binary files /dev/null and b/assets/coin-icons/borg.png differ diff --git a/assets/coin-icons/bsty.png b/assets/coin-icons/bsty.png index 9b6f676e5..1be6492c1 100644 Binary files a/assets/coin-icons/bsty.png and b/assets/coin-icons/bsty.png differ diff --git a/assets/coin-icons/diac.png b/assets/coin-icons/diac.png new file mode 100644 index 000000000..54bb370c9 Binary files /dev/null and b/assets/coin-icons/diac.png differ diff --git a/assets/coin-icons/eure.png b/assets/coin-icons/eure.png new file mode 100644 index 000000000..47be62aed Binary files /dev/null and b/assets/coin-icons/eure.png differ diff --git a/assets/coin-icons/glc.png b/assets/coin-icons/glc.png new file mode 100644 index 000000000..d3ab212c9 Binary files /dev/null and b/assets/coin-icons/glc.png differ diff --git a/assets/coin-icons/kiiro.png b/assets/coin-icons/kiiro.png new file mode 100644 index 000000000..19240a27c Binary files /dev/null and b/assets/coin-icons/kiiro.png differ diff --git a/assets/coin-icons/sum.png b/assets/coin-icons/sum.png new file mode 100644 index 000000000..910a754bd Binary files /dev/null and b/assets/coin-icons/sum.png differ diff --git a/assets/coins.json b/assets/coins.json index 2778be9e4..31eac9020 100644 --- a/assets/coins.json +++ b/assets/coins.json @@ -1712,6 +1712,28 @@ "type": "UTXO" } }, + { + "coin": "BLOCX", + "name": "blocx", + "fname": "BLOCX.", + "rpcport": 12973, + "pubtype": 25, + "p2shtype": 26, + "wiftype": 153, + "segwit": false, + "txfee": 1000, + "mm2": 1, + "sign_message_prefix": "DarkCoin Signed Message:\n", + "required_confirmations": 3, + "avg_blocktime": 180, + "protocol": { + "type": "UTXO" + }, + "links": { + "github": "https://github.com/BLOCXTECH/BLOCX", + "homepage": "https://blocx.tech" + } + }, { "coin": "BNB", "name": "binancesmartchain", @@ -1868,6 +1890,29 @@ }, "derivation_path": "m/44'/966'" }, + { + "coin": "BORG-ERC20", + "name": "borg_erc20", + "fname": "SwissBorg", + "rpcport": 80, + "mm2": 1, + "chain_id": 1, + "decimals": 18, + "avg_blocktime": 15, + "required_confirmations": 3, + "protocol": { + "type": "ERC20", + "protocol_data": { + "platform": "ETH", + "contract_address": "0x64d0f55Cd8C7133a9D7102b13987235F486F2224" + } + }, + "derivation_path": "m/44'/60'", + "trezor_coin": "SwissBorg", + "links": { + "homepage": "https://swissborg.com" + } + }, { "coin": "BRZ-BEP20", "name": "brz_bep20", @@ -2000,28 +2045,6 @@ "type": "UTXO" } }, - { - "coin": "BSTY-segwit", - "name": "globalboost", - "fname": "GlobalBoost-Y", - "rpcport": 8225, - "pubtype": 77, - "p2shtype": 139, - "wiftype": 208, - "txfee": 200000, - "segwit": true, - "bech32_hrp": "gb", - "address_format": { - "format": "segwit" - }, - "orderbook_ticker": "BSTY", - "mm2": 1, - "required_confirmations": 1, - "avg_blocktime": 600, - "protocol": { - "type": "UTXO" - } - }, { "coin": "BTC", "name": "bitcoin", @@ -2035,6 +2058,7 @@ "txfee": 0, "estimate_fee_mode": "ECONOMICAL", "mm2": 1, + "wallet_only": true, "sign_message_prefix": "Bitcoin Signed Message:\n", "required_confirmations": 1, "avg_blocktime": 600, @@ -2148,6 +2172,7 @@ "bech32_hrp": "web", "txfee": 20000, "mm2": 1, + "wallet_only": true, "required_confirmations": 3, "avg_blocktime": 60, "protocol": { @@ -2268,6 +2293,7 @@ "bech32_hrp": "btx", "txfee": 20000, "mm2": 1, + "wallet_only": true, "required_confirmations": 3, "avg_blocktime": 150, "protocol": { @@ -2551,6 +2577,7 @@ "segwit": true, "bech32_hrp": "cdn", "mm2": 1, + "wallet_only": true, "required_confirmations": 2, "avg_blocktime": 300, "protocol": { @@ -2738,9 +2765,9 @@ } }, { - "coin": "CHSB-ERC20", - "name": "chsb_erc20", - "fname": "SwissBorg", + "coin": "CHSB-ERC20_OLD", + "name": "chsb_erc20_old", + "fname": "SwissBorg (OLD)", "rpcport": 80, "mm2": 1, "chain_id": 1, @@ -3170,6 +3197,7 @@ "segwit": true, "bech32_hrp": "cy", "mm2": 1, + "wallet_only": true, "required_confirmations": 2, "avg_blocktime": 60, "protocol": { @@ -3428,6 +3456,25 @@ }, "derivation_path": "m/44'/60'" }, + { + "coin": "DFX-PLG20_OLD", + "name": "dfx_plg20_old", + "fname": "DFX Finance (OLD)", + "rpcport": 80, + "mm2": 1, + "chain_id": 137, + "decimals": 18, + "avg_blocktime": 1.8, + "required_confirmations": 20, + "protocol": { + "type": "ERC20", + "protocol_data": { + "platform": "MATIC", + "contract_address": "0xE7804D91dfCDE7F776c90043E03eAa6Df87E6395" + } + }, + "derivation_path": "m/44'/966'" + }, { "coin": "DFX-PLG20", "name": "dfx_plg20", @@ -3442,7 +3489,7 @@ "type": "ERC20", "protocol_data": { "platform": "MATIC", - "contract_address": "0xE7804D91dfCDE7F776c90043E03eAa6Df87E6395" + "contract_address": "0x27f485b62C4A7E635F561A87560Adf5090239E93" } }, "derivation_path": "m/44'/966'" @@ -3460,6 +3507,7 @@ "segwit": true, "bech32_hrp": "dgb", "mm2": 1, + "wallet_only": true, "required_confirmations": 7, "avg_blocktime": 15, "protocol": { @@ -3556,6 +3604,29 @@ } }, "derivation_path": "m/44'/714'" + }, + { + "coin": "DIAC", + "name": "diabasecore", + "fname": "Diabase", + "confpath": "USERHOME/.diabasecore/diabase.conf", + "rpcport": 7676, + "pubtype": 76, + "p2shtype": 16, + "wiftype": 204, + "txfee": 1000, + "force_min_relay_fee": true, + "mm2": 1, + "required_confirmations": 2, + "avg_blocktime": 90, + "protocol": { + "type": "UTXO" + }, + "derivation_path": "m/44'/5'", + "links": { + "github": "https://github.com/diabasecoin/diabase", + "homepage": "https://www.diabasecoin.com" + } }, { "coin": "DIMI", @@ -3683,9 +3754,9 @@ "pubtype": 30, "p2shtype": 22, "wiftype": 158, - "txfee": 1000000, + "txfee": 0, "force_min_relay_fee": true, - "dust": 1000000, + "dust": 100000000, "mm2": 1, "required_confirmations": 2, "avg_blocktime": 60, @@ -3876,7 +3947,7 @@ "pubtype": 33, "p2shtype": 40, "wiftype": 161, - "txfee": 0, + "txfee": 10000, "dust": 5460, "txversion": 7, "mm2": 1, @@ -4263,6 +4334,44 @@ }, "derivation_path": "m/44'/966'" }, + { + "coin": "EURE-ERC20", + "name": "eure_erc20", + "fname": "Monerium EUR", + "rpcport": 80, + "mm2": 1, + "chain_id": 1, + "decimals": 18, + "avg_blocktime": 15, + "required_confirmations": 3, + "protocol": { + "type": "ERC20", + "protocol_data": { + "platform": "ETH", + "contract_address": "0x3231Cb76718CDeF2155FC47b5286d82e6eDA273f" + } + }, + "derivation_path": "m/44'/60'" + }, + { + "coin": "EURE-PLG20", + "name": "eure_plg20", + "fname": "Monerium EUR", + "rpcport": 80, + "mm2": 1, + "chain_id": 137, + "decimals": 18, + "avg_blocktime": 1.8, + "required_confirmations": 20, + "protocol": { + "type": "ERC20", + "protocol_data": { + "platform": "MATIC", + "contract_address": "0x18ec0A6E18E5bc3784fDd3a3634b31245ab704F6" + } + }, + "derivation_path": "m/44'/966'" + }, { "coin": "EUROE-ERC20", "name": "euroe_erc20", @@ -4566,6 +4675,7 @@ "bech32_hrp": "fc", "txfee": 0, "mm2": 1, + "wallet_only": true, "required_confirmations": 3, "avg_blocktime": 60, "protocol": { @@ -4732,6 +4842,7 @@ "segwit": true, "bech32_hrp": "fc", "mm2": 1, + "wallet_only": true, "required_confirmations": 5, "avg_blocktime": 60, "protocol": { @@ -5099,6 +5210,28 @@ }, "derivation_path": "m/44'/714'" }, + { + "coin": "GLC", + "name": "goldcoin", + "fname": "Goldcoin", + "rpcport": 8122, + "pubtype": 32, + "p2shtype": 5, + "wiftype": 160, + "segwit": false, + "txfee": 100000, + "mm2": 1, + "sign_message_prefix": "Goldcoin (GLC) Signed Message:\n", + "required_confirmations": 3, + "avg_blocktime": 120, + "protocol": { + "type": "UTXO" + }, + "links": { + "github": "https://github.com/goldcoin/goldcoin", + "homepage": "https://www.goldcoinproject.org" + } + }, { "coin": "GLEEC", "sign_message_prefix": "Komodo Signed Message:\n", @@ -5192,6 +5325,25 @@ }, "derivation_path": "m/44'/714'" }, + { + "coin": "GMT-PLG20", + "name": "gmt_plg20", + "fname": "STEPN", + "rpcport": 80, + "mm2": 1, + "chain_id": 137, + "decimals": 8, + "avg_blocktime": 1.8, + "required_confirmations": 20, + "protocol": { + "type": "ERC20", + "protocol_data": { + "platform": "MATIC", + "contract_address": "0x714DB550b574b3E927af3D93E26127D15721D4C2" + } + }, + "derivation_path": "m/44'/966'" + }, { "coin": "GMX-AVX20", "name": "gmx_avx20", @@ -5357,37 +5509,6 @@ "homepage": "https://www.groestlcoin.org" } }, - { - "coin": "GRS-segwit", - "name": "groestlcoin", - "fname": "Groestlcoin", - "sign_message_prefix": "GroestCoin Signed Message:\n", - "rpcport": 1441, - "pubtype": 36, - "p2shtype": 5, - "wiftype": 128, - "txfee": 10000, - "dust": 10000, - "segwit": true, - "bech32_hrp": "grs", - "address_format": { - "format": "segwit" - }, - "orderbook_ticker": "GRS", - "mm2": 1, - "wallet_only": true, - "required_confirmations": 5, - "avg_blocktime": 60, - "protocol": { - "type": "UTXO" - }, - "derivation_path": "m/44'/17'", - "trezor_coin": "Groestlcoin", - "links": { - "github": "https://github.com/Groestlcoin/groestlcoin", - "homepage": "https://www.groestlcoin.org" - } - }, { "coin": "GRT-AVX20", "name": "grt_avx20", @@ -5723,24 +5844,6 @@ }, "derivation_path": "m/44'/966'" }, - { - "coin": "IC", - "name": "ignition", - "fname": "Ignition", - "rpcport": 44155, - "pubtype": 103, - "p2shtype": 39, - "wiftype": 138, - "txfee": 1000, - "dust": 1000, - "isPoS": 1, - "mm2": 1, - "required_confirmations": 2, - "avg_blocktime": 240, - "protocol": { - "type": "UTXO" - } - }, { "coin": "IL8P", "name": "infiniloop", @@ -6819,6 +6922,7 @@ "segwit": true, "bech32_hrp": "lbc", "mm2": 1, + "wallet_only": true, "required_confirmations": 3, "avg_blocktime": 150, "protocol": { @@ -6866,6 +6970,7 @@ "segwit": true, "bech32_hrp": "lcc", "mm2": 1, + "wallet_only": true, "required_confirmations": 4, "avg_blocktime": 150, "protocol": { @@ -7224,6 +7329,7 @@ "segwit": true, "bech32_hrp": "wc", "mm2": 1, + "wallet_only": true, "required_confirmations": 2, "avg_blocktime": 30, "protocol": { @@ -7348,6 +7454,7 @@ "segwit": true, "bech32_hrp": "ltc", "mm2": 1, + "wallet_only": true, "required_confirmations": 2, "avg_blocktime": 150, "protocol": { @@ -7390,50 +7497,6 @@ "homepage": "https://litecoin.org" } }, - { - "coin": "LTFN", - "name": "litecoinfinance", - "fname": "Litecoin Finance", - "rpcport": 39327, - "txversion": 2, - "pubtype": 28, - "p2shtype": 53, - "wiftype": 176, - "fork_id": "0x2A40", - "txfee": 20000, - "segwit": true, - "bech32_hrp": "ltfn", - "mm2": 1, - "required_confirmations": 3, - "avg_blocktime": 150, - "protocol": { - "type": "UTXO" - } - }, - { - "coin": "LTFN-segwit", - "name": "litecoinfinance", - "fname": "Litecoin Finance", - "rpcport": 39327, - "txversion": 2, - "pubtype": 28, - "p2shtype": 53, - "wiftype": 176, - "fork_id": "0x2A40", - "txfee": 20000, - "segwit": true, - "bech32_hrp": "ltfn", - "address_format": { - "format": "segwit" - }, - "orderbook_ticker": "LTFN", - "mm2": 1, - "required_confirmations": 3, - "avg_blocktime": 150, - "protocol": { - "type": "UTXO" - } - }, { "coin": "LYNX", "name": "lynx", @@ -7443,7 +7506,7 @@ "pubtype": 45, "p2shtype": 22, "wiftype": 173, - "txfee": 0, + "txfee": 100000, "dust": 54600, "segwit": false, "mm2": 1, @@ -8050,6 +8113,7 @@ "segwit": true, "bech32_hrp": "mona", "mm2": 1, + "wallet_only": true, "required_confirmations": 5, "avg_blocktime": 90, "protocol": { @@ -8294,6 +8358,7 @@ "segwit": true, "bech32_hrp": "nc", "mm2": 1, + "wallet_only": true, "required_confirmations": 2, "avg_blocktime": 600, "protocol": { @@ -8731,46 +8796,6 @@ }, "derivation_path": "m/44'/966'" }, - { - "coin": "PIC", - "name": "picacoin", - "fname": "Picacoin", - "rpcport": 4332, - "pubtype": 0, - "p2shtype": 5, - "wiftype": 128, - "segwit": true, - "bech32_hrp": "bc", - "txfee": 0, - "mm2": 1, - "required_confirmations": 1, - "avg_blocktime": 600, - "protocol": { - "type": "UTXO" - } - }, - { - "coin": "PIC-segwit", - "name": "picacoin", - "fname": "Picacoin", - "rpcport": 4332, - "pubtype": 0, - "p2shtype": 5, - "wiftype": 128, - "segwit": true, - "bech32_hrp": "bc", - "address_format": { - "format": "segwit" - }, - "orderbook_ticker": "PIC", - "txfee": 0, - "mm2": 1, - "required_confirmations": 1, - "avg_blocktime": 600, - "protocol": { - "type": "UTXO" - } - }, { "coin": "PINK", "name": "pink", @@ -9413,38 +9438,6 @@ "homepage": "https://qtum.org" } }, - { - "coin": "QTUM-segwit", - "name": "qtum", - "fname": "Qtum", - "sign_message_prefix": "Qtum Signed Message:\n", - "rpcport": 3889, - "pubtype": 58, - "p2shtype": 50, - "wiftype": 128, - "segwit": true, - "bech32_hrp": "qc", - "address_format": { - "format": "segwit" - }, - "orderbook_ticker": "QTUM", - "txfee": 0, - "dust": 72800, - "mm2": 1, - "force_min_relay_fee": true, - "required_confirmations": 3, - "mature_confirmations": 2000, - "avg_blocktime": 32, - "protocol": { - "type": "QTUM" - }, - "derivation_path": "m/44'/2301'", - "trezor_coin": "Qtum", - "links": { - "github": "https://github.com/qtumproject/qtum", - "homepage": "https://qtum.org" - } - }, { "coin": "QTUM-ERC20", "name": "qtum_erc20", @@ -9488,30 +9481,6 @@ "type": "QTUM" } }, - { - "coin": "tQTUM-segwit", - "name": "qtumtest", - "fname": "QTUM Testnet", - "rpcport": 13889, - "pubtype": 120, - "p2shtype": 110, - "wiftype": 239, - "segwit": true, - "bech32_hrp": "tq", - "address_format": { - "format": "segwit" - }, - "orderbook_ticker": "tQTUM", - "txfee": 400000, - "mm2": 1, - "is_testnet": true, - "required_confirmations": 1, - "mature_confirmations": 2000, - "avg_blocktime": 32, - "protocol": { - "type": "QTUM" - } - }, { "coin": "RDD", "name": "reddcoin", @@ -9655,6 +9624,7 @@ "bech32_hrp": "ric", "txfee": 0, "mm2": 1, + "wallet_only": true, "required_confirmations": 4, "avg_blocktime": 150, "protocol": { @@ -9685,24 +9655,6 @@ }, "derivation_path": "m/44'/143'" }, - { - "coin": "NFTX", - "asset": "NFTX", - "fname": "NFTX", - "rpcport": 53959, - "txversion": 4, - "overwintered": 1, - "mm2": 1, - "sign_message_prefix": "Komodo Signed Message:\n", - "required_confirmations": 4, - "requires_notarization": false, - "avg_blocktime": 60, - "protocol": { - "type": "UTXO" - }, - "derivation_path": "m/44'/141'", - "trezor_coin": "Komodo" - }, { "coin": "DOC", "asset": "DOC", @@ -10251,6 +10203,34 @@ }, "derivation_path": "m/44'/966'" }, + { + "coin": "SUM", + "name": "sumcoin", + "fname": "Sumcoin", + "isPoS": 1, + "sign_message_prefix": "Sumcoin Signed Message:\n", + "rpcport": 3332, + "pubtype": 63, + "p2shtype": 125, + "wiftype": 187, + "decimals": 6, + "txfee": 0, + "dust": 10000, + "segwit": false, + "bech32_hrp": "sum", + "mm2": 1, + "required_confirmations": 2, + "avg_blocktime": 60, + "protocol": { + "type": "UTXO" + }, + "derivation_path": "m/44'/552'", + "trezor_coin": "Sumcoin", + "links": { + "github": "https://github.com/sumcoinlabs/sumcoin", + "homepage": "https://www.sumcoin.org" + } + }, { "coin": "SUPERNET", "sign_message_prefix": "Komodo Signed Message:\n", @@ -10493,6 +10473,7 @@ "required_confirmations": 5, "avg_blocktime": 60, "mm2": 1, + "wallet_only": true, "protocol": { "type": "UTXO" }, @@ -10582,6 +10563,7 @@ "txfee": 0, "estimate_fee_mode": "ECONOMICAL", "mm2": 1, + "wallet_only": true, "is_testnet": true, "required_confirmations": 0, "protocol": { @@ -11504,6 +11486,25 @@ "decimals": 6, "avg_blocktime": 1.8, "required_confirmations": 20, + "protocol": { + "type": "ERC20", + "protocol_data": { + "platform": "MATIC", + "contract_address": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359" + } + }, + "derivation_path": "m/44'/966'" + }, + { + "coin": "USDC-PLG20_OLD", + "name": "usdc_plg20_old", + "fname": "USD Coin (OLD)", + "rpcport": 80, + "mm2": 1, + "chain_id": 137, + "decimals": 6, + "avg_blocktime": 1.8, + "required_confirmations": 20, "protocol": { "type": "ERC20", "protocol_data": { @@ -11883,37 +11884,6 @@ "homepage": "https://viacoin.org" } }, - { - "coin": "VIA-segwit", - "name": "viacoin", - "fname": "Viacoin", - "sign_message_prefix": "Viacoin Signed Message:\n", - "rpcport": 5222, - "pubtype": 71, - "p2shtype": 33, - "wiftype": 199, - "txfee": 100000, - "dust": 54600, - "required_confirmations": 7, - "mature_confirmations": 3600, - "avg_blocktime": 24, - "segwit": true, - "bech32_hrp": "via", - "address_format": { - "format": "segwit" - }, - "orderbook_ticker": "VIA", - "mm2": 1, - "protocol": { - "type": "UTXO" - }, - "derivation_path": "m/44'/14'", - "trezor_coin": "Viacoin", - "links": { - "github": "https://github.com/viacoin", - "homepage": "https://viacoin.org" - } - }, { "coin": "VITE-BEP20", "name": "vite_bep20", @@ -11984,7 +11954,7 @@ "derivation_path": "m/44'/141'", "trezor_coin": "Komodo" }, - { + { "coin": "VPRM", "sign_message_prefix": "Komodo Signed Message:\n", "asset": "VPRM", @@ -12015,6 +11985,7 @@ "segwit": true, "bech32_hrp": "vtc", "mm2": 1, + "wallet_only": true, "required_confirmations": 4, "avg_blocktime": 150, "protocol": { @@ -12383,6 +12354,7 @@ "segwit": true, "bech32_hrp": "my", "mm2": 1, + "wallet_only": true, "required_confirmations": 3, "avg_blocktime": 240, "protocol": { @@ -13054,7 +13026,7 @@ "txfee": 10000, "mm2": 1, "required_confirmations": 2, - "avg_blocktime": 60, + "avg_blocktime": 120, "protocol": { "type": "UTXO" }, @@ -13833,34 +13805,6 @@ "homepage": "https://ufobject.com" } }, - { - "coin": "UFO-segwit", - "name": "ufo", - "fname": "Uniform Fiscal Object", - "sign_message_prefix": "UFO Signed Message:\n", - "rpcport": 8087, - "pubtype": 27, - "p2shtype": 68, - "wiftype": 155, - "txfee": 100000, - "segwit": true, - "bech32_hrp": "uf", - "address_format": { - "format": "segwit" - }, - "orderbook_ticker": "UFO", - "mm2": 1, - "required_confirmations": 6, - "avg_blocktime": 1.5, - "protocol": { - "type": "UTXO" - }, - "derivation_path": "m/44'/202'", - "links": { - "github": "https://github.com/fiscalobject/ufo", - "homepage": "https://ufobject.com" - } - }, { "coin": "USBL", "name": "bitdollar", @@ -13907,6 +13851,7 @@ "segwit": true, "bech32_hrp": "wv", "mm2": 1, + "wallet_only": true, "required_confirmations": 1, "mature_confirmations": 100, "avg_blocktime": 600, @@ -14278,5 +14223,44 @@ "github": "https://github.com/bunkercoin/bunkercoin", "homepage": "https://bunkercoin.org" } + }, + { + "coin": "KIIRO", + "name": "kiiro", + "fname": "Kiiro", + "sign_message_prefix": "Zcoin Signed Message:\n", + "rpcport": 8999, + "pubtype": 45, + "p2shtype": 7, + "wiftype": 210, + "txfee": 1000, + "mm2": 1, + "required_confirmations": 3, + "avg_blocktime": 150, + "protocol": { + "type": "UTXO" + }, + "links": { + "github": "https://github.com/kiirocoin/kiiro", + "homepage": "https://kiirocoin.org" + } + }, + { + "coin": "KIIRO-BEP20", + "name": "kiiro_bep20", + "fname": "Kiiro", + "rpcport": 80, + "mm2": 1, + "chain_id": 56, + "avg_blocktime": 3, + "required_confirmations": 3, + "protocol": { + "type": "ERC20", + "protocol_data": { + "platform": "BNB", + "contract_address": "0x347862372f7C8f83D69025234367Ac11c5241Db3" + } + }, + "derivation_path": "m/44'/714'" } ] diff --git a/assets/coins_config.json b/assets/coins_config.json index 77e514b2e..d6382ace9 100644 --- a/assets/coins_config.json +++ b/assets/coins_config.json @@ -798,8 +798,12 @@ { "url": "elec-seeder-two.artbytecoin.org:50012", "protocol": "SSL", - "disable_cert_verification": true, "ws_url": "elec-seeder-two.artbytecoin.org:50013" + }, + { + "url": "electrumx-three.artbyte.live:50012", + "protocol": "SSL", + "ws_url": "electrumx-three.artbyte.live:50013" } ], "explorer_block_url": "block.dws?" @@ -975,7 +979,7 @@ "type": "AVX-20", "name": "agEUR", "coinpaprika_id": "", - "coingecko_id": "", + "coingecko_id": "ageur", "livecoinwatch_id": "EUR", "explorer_url": "https://snowtrace.io/", "explorer_tx_url": "tx/", @@ -1083,7 +1087,7 @@ "type": "Matic", "name": "agEUR", "coinpaprika_id": "", - "coingecko_id": "", + "coingecko_id": "ageur", "livecoinwatch_id": "EUR", "explorer_url": "https://polygonscan.com/", "explorer_tx_url": "tx/", @@ -1727,7 +1731,7 @@ "type": "Matic", "name": "ARPA Chain", "coinpaprika_id": "", - "coingecko_id": "", + "coingecko_id": "arpa", "livecoinwatch_id": "ARPA", "explorer_url": "https://polygonscan.com/", "explorer_tx_url": "tx/", @@ -2016,7 +2020,8 @@ } ], "token_address_url": "tokentxns?a=", - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "ATOM" }, "ATOM-PLG20": { "coin": "ATOM-PLG20", @@ -2067,7 +2072,8 @@ "url": "https://polygon.llamarpc.com" } ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "ATOM" }, "AUR": { "coin": "AUR", @@ -2112,11 +2118,6 @@ "protocol": "SSL", "disable_cert_verification": true, "ws_url": "failover.aur.ewmcx.biz:50003" - }, - { - "url": "lenoir.ecoincore.com:12343", - "protocol": "SSL", - "disable_cert_verification": false } ], "explorer_block_url": "block.dws?" @@ -2308,7 +2309,8 @@ "url": "https://avalanche.blockpi.network/v1/rpc/public" } ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "AVAX" }, "AVAX-BEP20": { "coin": "AVAX-BEP20", @@ -2359,7 +2361,8 @@ } ], "token_address_url": "tokentxns?a=", - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "AVAX" }, "AVN": { "coin": "AVN", @@ -2829,7 +2832,7 @@ "type": "BEP-20", "name": "Aryacoin", "coinpaprika_id": "", - "coingecko_id": "", + "coingecko_id": "aryacoin", "livecoinwatch_id": "AYA", "explorer_url": "https://bscscan.com/", "explorer_tx_url": "tx/", @@ -3781,7 +3784,8 @@ "ws_url": "electrum3.cipig.net:30055" } ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "BCH" }, "USDT-SLP": { "coin": "USDT-SLP", @@ -4371,7 +4375,8 @@ } } ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "BCH" }, "BCH-BEP20": { "coin": "BCH-BEP20", @@ -4423,7 +4428,8 @@ } ], "token_address_url": "tokentxns?a=", - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "BCH" }, "BCH-HCO20": { "coin": "BCH-HCO20", @@ -4467,7 +4473,8 @@ "url": "https://http-mainnet-node.huobichain.com" } ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "BCH" }, "BIDR-BEP20": { "coin": "BIDR-BEP20", @@ -4525,7 +4532,7 @@ "type": "UTXO", "name": "Bitnet", "coinpaprika_id": "bit-bitnet", - "coingecko_id": "", + "coingecko_id": "bitnet-io", "livecoinwatch_id": "________BIT", "explorer_url": "https://bitexplorer.io/", "explorer_tx_url": "tx/", @@ -4551,6 +4558,16 @@ "type": "UTXO" }, "electrum": [ + { + "url": "bitchair.io:50001", + "protocol": "TCP", + "ws_url": "bitchair.io:50004", + "contact": [ + { + "discord": "c4pt#7855" + } + ] + }, { "url": "bitexplorer.io:50001", "protocol": "TCP", @@ -4801,6 +4818,70 @@ ], "explorer_block_url": "block/" }, + "BLOCX": { + "coin": "BLOCX", + "type": "UTXO", + "name": "BLOCX.", + "coinpaprika_id": "blocx-blocx", + "coingecko_id": "blocx-2", + "livecoinwatch_id": "BLOCX", + "explorer_url": "https://explorer.blocx.space/", + "explorer_tx_url": "", + "explorer_address_url": "", + "supported": [], + "active": false, + "is_testnet": false, + "currently_enabled": false, + "wallet_only": false, + "sign_message_prefix": "DarkCoin Signed Message:\n", + "fname": "BLOCX.", + "rpcport": 12973, + "pubtype": 25, + "p2shtype": 26, + "wiftype": 153, + "segwit": false, + "txfee": 1000, + "mm2": 1, + "required_confirmations": 3, + "avg_blocktime": 180, + "protocol": { + "type": "UTXO" + }, + "links": { + "github": "https://github.com/BLOCXTECH/BLOCX", + "homepage": "https://blocx.tech" + }, + "electrum": [ + { + "url": "electrum1.blocx.space:50001", + "protocol": "TCP" + }, + { + "url": "electrum2.blocx.space:50001", + "protocol": "TCP" + }, + { + "url": "electrum3.blocx.space:50001", + "protocol": "TCP" + }, + { + "url": "electrum1.blocx.space:50002", + "protocol": "SSL", + "ws_url": "electrum1.blocx.space:50004" + }, + { + "url": "electrum2.blocx.space:50002", + "protocol": "SSL", + "ws_url": "electrum2.blocx.space:50004" + }, + { + "url": "electrum3.blocx.space:50002", + "protocol": "SSL", + "ws_url": "electrum3.blocx.space:50004" + } + ], + "explorer_block_url": "block/" + }, "BNB": { "coin": "BNB", "type": "BEP-20", @@ -4848,7 +4929,8 @@ } ], "token_address_url": "tokentxns?a=", - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "BNB" }, "BOLI": { "coin": "BOLI", @@ -5194,6 +5276,70 @@ ], "explorer_block_url": "block/" }, + "BORG-ERC20": { + "coin": "BORG-ERC20", + "type": "ERC-20", + "name": "SwissBorg", + "coinpaprika_id": "chsb-swissborg", + "coingecko_id": "swissborg", + "livecoinwatch_id": "CHSB", + "explorer_url": "https://etherscan.io/", + "explorer_tx_url": "tx/", + "explorer_address_url": "address/", + "supported": [], + "active": false, + "is_testnet": false, + "currently_enabled": false, + "wallet_only": false, + "fname": "SwissBorg", + "rpcport": 80, + "mm2": 1, + "chain_id": 1, + "decimals": 18, + "avg_blocktime": 15, + "required_confirmations": 3, + "protocol": { + "type": "ERC20", + "protocol_data": { + "platform": "ETH", + "contract_address": "0x64d0f55Cd8C7133a9D7102b13987235F486F2224" + } + }, + "derivation_path": "m/44'/60'", + "trezor_coin": "SwissBorg", + "links": { + "homepage": "https://swissborg.com" + }, + "contract_address": "0x64d0f55Cd8C7133a9D7102b13987235F486F2224", + "parent_coin": "ETH", + "swap_contract_address": "0x24ABE4c71FC658C91313b6552cd40cD808b3Ea80", + "fallback_swap_contract": "0x8500AFc0bc5214728082163326C2FF0C73f4a871", + "nodes": [ + { + "url": "https://node.komodo.earth:8080/ethereum", + "gui_auth": true + }, + { + "url": "https://eth1.cipig.net:18555", + "contact": { + "email": "cipi@komodoplatform.com" + } + }, + { + "url": "https://eth2.cipig.net:18555", + "contact": { + "email": "cipi@komodoplatform.com" + } + }, + { + "url": "https://eth3.cipig.net:18555", + "contact": { + "email": "cipi@komodoplatform.com" + } + } + ], + "explorer_block_url": "block/" + }, "BRZ-BEP20": { "coin": "BRZ-BEP20", "type": "BEP-20", @@ -5551,168 +5697,134 @@ }, "electrum": [ { - "url": "66.172.33.56:50001", - "protocol": "TCP" + "url": "electrumserver01.globalboost.info:50014", + "protocol": "SSL", + "ws_url": "electrumserver01.globalboost.info:50013" + }, + { + "url": "electrumserver02.globalboost.info:50014", + "protocol": "SSL", + "ws_url": "electrumserver02.globalboost.info:50013" } ], "explorer_block_url": "block/" }, - "BSTY-segwit": { - "coin": "BSTY-segwit", + "BTC": { + "coin": "BTC", "type": "UTXO", - "name": "GlobalBoost-Y", - "coinpaprika_id": "bsty-globalboost-y", - "coingecko_id": "globalboost", - "livecoinwatch_id": "", - "explorer_url": "https://insight.globalboost.info/", - "explorer_tx_url": "tx/", + "name": "Bitcoin", + "coinpaprika_id": "btc-bitcoin", + "coingecko_id": "bitcoin", + "livecoinwatch_id": "BTC", + "explorer_url": "https://blockchair.com/bitcoin/", + "explorer_tx_url": "transaction/", "explorer_address_url": "address/", "supported": [], "active": false, "is_testnet": false, "currently_enabled": false, - "wallet_only": false, - "fname": "GlobalBoost-Y", - "rpcport": 8225, - "pubtype": 77, - "p2shtype": 139, - "wiftype": 208, - "txfee": 200000, + "wallet_only": true, + "sign_message_prefix": "Bitcoin Signed Message:\n", + "fname": "Bitcoin", + "rpcport": 8332, + "pubtype": 0, + "p2shtype": 5, + "wiftype": 128, "segwit": true, - "bech32_hrp": "gb", - "address_format": { - "format": "segwit" - }, - "orderbook_ticker": "BSTY", + "bech32_hrp": "bc", + "txfee": 0, + "estimate_fee_mode": "ECONOMICAL", "mm2": 1, "required_confirmations": 1, "avg_blocktime": 600, "protocol": { "type": "UTXO" }, + "derivation_path": "m/44'/0'", + "trezor_coin": "Bitcoin", + "links": { + "github": "https://github.com/bitcoin/bitcoin", + "homepage": "https://bitcoin.org" + }, "electrum": [ { - "url": "66.172.33.56:50001", - "protocol": "TCP" + "url": "electrum1.cipig.net:10000", + "contact": [ + { + "email": "cipi@komodoplatform.com" + }, + { + "discord": "cipi#4502" + } + ] + }, + { + "url": "electrum2.cipig.net:10000", + "contact": [ + { + "email": "cipi@komodoplatform.com" + }, + { + "discord": "cipi#4502" + } + ] + }, + { + "url": "electrum3.cipig.net:10000", + "contact": [ + { + "email": "cipi@komodoplatform.com" + }, + { + "discord": "cipi#4502" + } + ] + }, + { + "url": "electrum1.cipig.net:20000", + "protocol": "SSL", + "contact": [ + { + "email": "cipi@komodoplatform.com" + }, + { + "discord": "cipi#4502" + } + ], + "ws_url": "electrum1.cipig.net:30000" + }, + { + "url": "electrum2.cipig.net:20000", + "protocol": "SSL", + "contact": [ + { + "email": "cipi@komodoplatform.com" + }, + { + "discord": "cipi#4502" + } + ], + "ws_url": "electrum2.cipig.net:30000" + }, + { + "url": "electrum3.cipig.net:20000", + "protocol": "SSL", + "contact": [ + { + "email": "cipi@komodoplatform.com" + }, + { + "discord": "cipi#4502" + } + ], + "ws_url": "electrum3.cipig.net:30000" } ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "BTC" }, - "BTC": { - "coin": "BTC", - "type": "UTXO", - "name": "Bitcoin", - "coinpaprika_id": "btc-bitcoin", - "coingecko_id": "bitcoin", - "livecoinwatch_id": "BTC", - "explorer_url": "https://blockchair.com/bitcoin/", - "explorer_tx_url": "transaction/", - "explorer_address_url": "address/", - "supported": [], - "active": false, - "is_testnet": false, - "currently_enabled": false, - "wallet_only": false, - "sign_message_prefix": "Bitcoin Signed Message:\n", - "fname": "Bitcoin", - "rpcport": 8332, - "pubtype": 0, - "p2shtype": 5, - "wiftype": 128, - "segwit": true, - "bech32_hrp": "bc", - "txfee": 0, - "estimate_fee_mode": "ECONOMICAL", - "mm2": 1, - "required_confirmations": 1, - "avg_blocktime": 600, - "protocol": { - "type": "UTXO" - }, - "derivation_path": "m/44'/0'", - "trezor_coin": "Bitcoin", - "links": { - "github": "https://github.com/bitcoin/bitcoin", - "homepage": "https://bitcoin.org" - }, - "electrum": [ - { - "url": "electrum1.cipig.net:10000", - "contact": [ - { - "email": "cipi@komodoplatform.com" - }, - { - "discord": "cipi#4502" - } - ] - }, - { - "url": "electrum2.cipig.net:10000", - "contact": [ - { - "email": "cipi@komodoplatform.com" - }, - { - "discord": "cipi#4502" - } - ] - }, - { - "url": "electrum3.cipig.net:10000", - "contact": [ - { - "email": "cipi@komodoplatform.com" - }, - { - "discord": "cipi#4502" - } - ] - }, - { - "url": "electrum1.cipig.net:20000", - "protocol": "SSL", - "contact": [ - { - "email": "cipi@komodoplatform.com" - }, - { - "discord": "cipi#4502" - } - ], - "ws_url": "electrum1.cipig.net:30000" - }, - { - "url": "electrum2.cipig.net:20000", - "protocol": "SSL", - "contact": [ - { - "email": "cipi@komodoplatform.com" - }, - { - "discord": "cipi#4502" - } - ], - "ws_url": "electrum2.cipig.net:30000" - }, - { - "url": "electrum3.cipig.net:20000", - "protocol": "SSL", - "contact": [ - { - "email": "cipi@komodoplatform.com" - }, - { - "discord": "cipi#4502" - } - ], - "ws_url": "electrum3.cipig.net:30000" - } - ], - "explorer_block_url": "block/" - }, - "BTC-segwit": { - "coin": "BTC-segwit", + "BTC-segwit": { + "coin": "BTC-segwit", "type": "UTXO", "name": "Bitcoin", "coinpaprika_id": "btc-bitcoin", @@ -5826,7 +5938,8 @@ "ws_url": "electrum3.cipig.net:30000" } ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "BTC" }, "BTC-BEP20": { "coin": "BTC-BEP20", @@ -5877,7 +5990,8 @@ } ], "token_address_url": "tokentxns?a=", - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "BTC" }, "BTCZ": { "coin": "BTCZ", @@ -5912,6 +6026,15 @@ }, "derivation_path": "m/44'/177'", "electrum": [ + { + "url": "electrum1.btcz.rocks:50001", + "contact": [ + { + "discord": "VandarGR#6065" + } + ], + "ws_url": "electrum1.btcz.rocks:50004" + }, { "url": "electrum2.btcz.rocks:50001", "contact": [ @@ -5976,6 +6099,172 @@ "token_address_url": "tokentxns?a=", "explorer_block_url": "block/" }, + "BTE": { + "coin": "BTE", + "type": "UTXO", + "name": "Bitweb", + "coinpaprika_id": "bte-bitweb", + "coingecko_id": "bitweb", + "livecoinwatch_id": "_BTE", + "explorer_url": "https://explorer.bitwebcore.net/", + "explorer_tx_url": "", + "explorer_address_url": "", + "supported": [], + "active": false, + "is_testnet": false, + "currently_enabled": false, + "wallet_only": true, + "fname": "Bitweb", + "rpcport": 1605, + "pubtype": 33, + "p2shtype": 30, + "wiftype": 128, + "segwit": true, + "bech32_hrp": "web", + "txfee": 20000, + "mm2": 1, + "required_confirmations": 3, + "avg_blocktime": 60, + "protocol": { + "type": "UTXO" + }, + "electrum": [ + { + "url": "electrumx.bitwebcore.net:20002", + "protocol": "SSL", + "contact": [ + { + "email": "mraksoll@gmail.com" + }, + { + "discord": "mraksoll#0596" + }, + { + "github": "https://github.com/bitweb-project/electrumx/issues" + } + ], + "ws_url": "electrumx.bitwebcore.net:20003" + }, + { + "url": "electrumx6.scalaris.info:20002", + "protocol": "SSL", + "contact": [ + { + "email": "mraksoll@gmail.com" + }, + { + "discord": "mraksoll#0596" + }, + { + "github": "https://github.com/bitweb-project/electrumx/issues" + } + ], + "ws_url": "electrumx6.scalaris.info:20003" + }, + { + "url": "electrumx7.scalaris.info:20002", + "protocol": "SSL", + "contact": [ + { + "email": "mraksoll@gmail.com" + }, + { + "discord": "mraksoll#0596" + }, + { + "github": "https://github.com/bitweb-project/electrumx/issues" + } + ], + "ws_url": "electrumx7.scalaris.info:20003" + } + ], + "explorer_block_url": "block/" + }, + "BTE-segwit": { + "coin": "BTE-segwit", + "type": "UTXO", + "name": "Bitweb", + "coinpaprika_id": "bte-bitweb", + "coingecko_id": "bitweb", + "livecoinwatch_id": "_BTE", + "explorer_url": "https://explorer.bitwebcore.net/", + "explorer_tx_url": "", + "explorer_address_url": "", + "supported": [], + "active": false, + "is_testnet": false, + "currently_enabled": false, + "wallet_only": false, + "fname": "Bitweb", + "rpcport": 1605, + "pubtype": 33, + "p2shtype": 30, + "wiftype": 128, + "segwit": true, + "bech32_hrp": "web", + "address_format": { + "format": "segwit" + }, + "orderbook_ticker": "BTE", + "txfee": 20000, + "mm2": 1, + "required_confirmations": 3, + "avg_blocktime": 60, + "protocol": { + "type": "UTXO" + }, + "electrum": [ + { + "url": "electrumx.bitwebcore.net:20002", + "protocol": "SSL", + "contact": [ + { + "email": "mraksoll@gmail.com" + }, + { + "discord": "mraksoll#0596" + }, + { + "github": "https://github.com/bitweb-project/electrumx/issues" + } + ], + "ws_url": "electrumx.bitwebcore.net:20003" + }, + { + "url": "electrumx6.scalaris.info:20002", + "protocol": "SSL", + "contact": [ + { + "email": "mraksoll@gmail.com" + }, + { + "discord": "mraksoll#0596" + }, + { + "github": "https://github.com/bitweb-project/electrumx/issues" + } + ], + "ws_url": "electrumx6.scalaris.info:20003" + }, + { + "url": "electrumx7.scalaris.info:20002", + "protocol": "SSL", + "contact": [ + { + "email": "mraksoll@gmail.com" + }, + { + "discord": "mraksoll#0596" + }, + { + "github": "https://github.com/bitweb-project/electrumx/issues" + } + ], + "ws_url": "electrumx7.scalaris.info:20003" + } + ], + "explorer_block_url": "block/" + }, "BTT-BEP20": { "coin": "BTT-BEP20", "type": "BEP-20", @@ -6209,7 +6498,7 @@ "active": false, "is_testnet": false, "currently_enabled": false, - "wallet_only": false, + "wallet_only": true, "fname": "BitCore", "rpcport": 9469, "pubtype": 3, @@ -6984,7 +7273,7 @@ "type": "UTXO", "name": "Canada eCoin", "coinpaprika_id": "cdn-canada-ecoin", - "coingecko_id": "", + "coingecko_id": "canada-ecoin", "livecoinwatch_id": "CDN", "explorer_url": "https://chainz.cryptoid.info/cdn/", "explorer_tx_url": "tx.dws?", @@ -6993,7 +7282,7 @@ "active": false, "is_testnet": false, "currently_enabled": false, - "wallet_only": false, + "wallet_only": true, "sign_message_prefix": "Canada eCoin Signed Message:\n", "fname": "Canada eCoin", "rpcport": 34330, @@ -7017,6 +7306,12 @@ "protocol": "SSL", "disable_cert_verification": true }, + { + "url": "holland.ecoincore.com:34333", + "protocol": "SSL", + "disable_cert_verification": true, + "ws_url": "holland.ecoincore.com:34335" + }, { "url": "lenoir.ecoincore.com:34333", "protocol": "SSL", @@ -7029,6 +7324,12 @@ "disable_cert_verification": true, "ws_url": "miami.ecoincore.com:34335" }, + { + "url": "mumbai.ecoincore.com:34333", + "protocol": "SSL", + "disable_cert_verification": true, + "ws_url": "mumbai.ecoincore.com:34335" + }, { "url": "oakland.ecoincore.com:34333", "protocol": "SSL", @@ -7053,7 +7354,7 @@ "type": "UTXO", "name": "Canada eCoin", "coinpaprika_id": "cdn-canada-ecoin", - "coingecko_id": "", + "coingecko_id": "canada-ecoin", "livecoinwatch_id": "CDN", "explorer_url": "https://chainz.cryptoid.info/cdn/", "explorer_tx_url": "tx.dws?", @@ -7090,6 +7391,12 @@ "protocol": "SSL", "disable_cert_verification": true }, + { + "url": "holland.ecoincore.com:34333", + "protocol": "SSL", + "disable_cert_verification": true, + "ws_url": "holland.ecoincore.com:34335" + }, { "url": "lenoir.ecoincore.com:34333", "protocol": "SSL", @@ -7102,6 +7409,12 @@ "disable_cert_verification": true, "ws_url": "miami.ecoincore.com:34335" }, + { + "url": "mumbai.ecoincore.com:34333", + "protocol": "SSL", + "disable_cert_verification": true, + "ws_url": "mumbai.ecoincore.com:34335" + }, { "url": "oakland.ecoincore.com:34333", "protocol": "SSL", @@ -7515,7 +7828,7 @@ "type": "UTXO", "name": "Chips", "coinpaprika_id": "chips-chips", - "coingecko_id": "", + "coingecko_id": "chips", "livecoinwatch_id": "__CHIPS", "explorer_url": "https://explorer.chips.cash/", "explorer_tx_url": "", @@ -7615,12 +7928,12 @@ ], "explorer_block_url": "block/" }, - "CHSB-ERC20": { - "coin": "CHSB-ERC20", + "CHSB-ERC20_OLD": { + "coin": "CHSB-ERC20_OLD", "type": "ERC-20", - "name": "SwissBorg", - "coinpaprika_id": "chsb-swissborg", - "coingecko_id": "swissborg", + "name": "SwissBorg (OLD)", + "coinpaprika_id": "", + "coingecko_id": "", "livecoinwatch_id": "CHSB", "explorer_url": "https://etherscan.io/", "explorer_tx_url": "tx/", @@ -7630,7 +7943,7 @@ "is_testnet": false, "currently_enabled": false, "wallet_only": false, - "fname": "SwissBorg", + "fname": "SwissBorg (OLD)", "rpcport": 80, "mm2": 1, "chain_id": 1, @@ -7885,51 +8198,6 @@ ], "explorer_block_url": "block/" }, - "CLC": { - "coin": "CLC", - "type": "Smart Chain", - "name": "Collider Coin", - "coinpaprika_id": "clc-collider-coin", - "coingecko_id": "", - "livecoinwatch_id": "", - "explorer_url": "https://clc.explorer.dexstats.info/", - "explorer_tx_url": "", - "explorer_address_url": "", - "supported": [], - "active": false, - "is_testnet": false, - "currently_enabled": false, - "wallet_only": false, - "sign_message_prefix": "Komodo Signed Message:\n", - "asset": "CLC", - "fname": "Collider Coin", - "rpcport": 31034, - "txversion": 4, - "overwintered": 1, - "mm2": 1, - "required_confirmations": 5, - "requires_notarization": false, - "avg_blocktime": 60, - "protocol": { - "type": "UTXO" - }, - "derivation_path": "m/44'/141'", - "trezor_coin": "Komodo", - "electrum": [ - { - "url": "electrumx.cryptocollider.com:10001", - "contact": [ - { - "email": "electrumx@cryptocollider.com" - }, - { - "discord": "collider#6160" - } - ] - } - ], - "explorer_block_url": "block/" - }, "COMP-AVX20": { "coin": "COMP-AVX20", "type": "AVX-20", @@ -8720,7 +8988,7 @@ "active": false, "is_testnet": false, "currently_enabled": false, - "wallet_only": false, + "wallet_only": true, "sign_message_prefix": "Cyberyen Signed Message:\n", "fname": "Cyberyen", "rpcport": 58382, @@ -9299,7 +9567,8 @@ "ws_url": "electrum3.cipig.net:30061" } ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "DASH" }, "DDD-ERC20": { "coin": "DDD-ERC20", @@ -9483,12 +9752,63 @@ ], "explorer_block_url": "block/" }, + "DFX-PLG20_OLD": { + "coin": "DFX-PLG20_OLD", + "type": "Matic", + "name": "DFX Finance (OLD)", + "coinpaprika_id": "", + "coingecko_id": "", + "livecoinwatch_id": "__DFX", + "explorer_url": "https://polygonscan.com/", + "explorer_tx_url": "tx/", + "explorer_address_url": "address/", + "supported": [], + "active": false, + "is_testnet": false, + "currently_enabled": false, + "wallet_only": false, + "fname": "DFX Finance (OLD)", + "rpcport": 80, + "mm2": 1, + "chain_id": 137, + "decimals": 18, + "avg_blocktime": 1.8, + "required_confirmations": 20, + "protocol": { + "type": "ERC20", + "protocol_data": { + "platform": "MATIC", + "contract_address": "0xE7804D91dfCDE7F776c90043E03eAa6Df87E6395" + } + }, + "derivation_path": "m/44'/966'", + "contract_address": "0xE7804D91dfCDE7F776c90043E03eAa6Df87E6395", + "parent_coin": "MATIC", + "swap_contract_address": "0x9130b257D37A52E52F21054c4DA3450c72f595CE", + "fallback_swap_contract": "0x9130b257D37A52E52F21054c4DA3450c72f595CE", + "nodes": [ + { + "url": "https://node.komodo.earth:8080/polygon", + "gui_auth": true + }, + { + "url": "https://polygon-rpc.com" + }, + { + "url": "https://polygon.blockpi.network/v1/rpc/public" + }, + { + "url": "https://polygon.llamarpc.com" + } + ], + "explorer_block_url": "block/" + }, "DFX-PLG20": { "coin": "DFX-PLG20", "type": "Matic", "name": "DFX Finance", "coinpaprika_id": "", - "coingecko_id": "", + "coingecko_id": "dfx-finance", "livecoinwatch_id": "__DFX", "explorer_url": "https://polygonscan.com/", "explorer_tx_url": "tx/", @@ -9509,11 +9829,11 @@ "type": "ERC20", "protocol_data": { "platform": "MATIC", - "contract_address": "0xE7804D91dfCDE7F776c90043E03eAa6Df87E6395" + "contract_address": "0x27f485b62C4A7E635F561A87560Adf5090239E93" } }, "derivation_path": "m/44'/966'", - "contract_address": "0xE7804D91dfCDE7F776c90043E03eAa6Df87E6395", + "contract_address": "0x27f485b62C4A7E635F561A87560Adf5090239E93", "parent_coin": "MATIC", "swap_contract_address": "0x9130b257D37A52E52F21054c4DA3450c72f595CE", "fallback_swap_contract": "0x9130b257D37A52E52F21054c4DA3450c72f595CE", @@ -9548,7 +9868,7 @@ "active": false, "is_testnet": false, "currently_enabled": false, - "wallet_only": false, + "wallet_only": true, "sign_message_prefix": "DigiByte Signed Message:\n", "fname": "DigiByte", "rpcport": 14022, @@ -9644,7 +9964,8 @@ "ws_url": "electrum3.cipig.net:30059" } ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "DGB" }, "DGB-segwit": { "coin": "DGB-segwit", @@ -9760,7 +10081,8 @@ "ws_url": "electrum3.cipig.net:30059" } ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "DGB" }, "DGC": { "coin": "DGC", @@ -9918,6 +10240,60 @@ "token_address_url": "tokentxns?a=", "explorer_block_url": "block/" }, + "DIAC": { + "coin": "DIAC", + "type": "UTXO", + "name": "Diabase", + "coinpaprika_id": "diac-diabase", + "coingecko_id": "diabase", + "livecoinwatch_id": "DIAC", + "explorer_url": "http://explorer.diabasecoin.com/", + "explorer_tx_url": "", + "explorer_address_url": "", + "supported": [], + "active": false, + "is_testnet": false, + "currently_enabled": false, + "wallet_only": false, + "fname": "Diabase", + "confpath": "USERHOME/.diabasecore/diabase.conf", + "rpcport": 7676, + "pubtype": 76, + "p2shtype": 16, + "wiftype": 204, + "txfee": 1000, + "force_min_relay_fee": true, + "mm2": 1, + "required_confirmations": 2, + "avg_blocktime": 90, + "protocol": { + "type": "UTXO" + }, + "derivation_path": "m/44'/5'", + "links": { + "github": "https://github.com/diabasecoin/diabase", + "homepage": "https://www.diabasecoin.com" + }, + "electrum": [ + { + "url": "electrumx1.diabasecoin.com:10002", + "contact": [ + { + "github": "diabasecoin" + } + ] + }, + { + "url": "electrumx2.diabasecoin.com:10002", + "contact": [ + { + "github": "diabasecoin" + } + ] + } + ], + "explorer_block_url": "block/" + }, "DIMI": { "coin": "DIMI", "type": "UTXO", @@ -10328,9 +10704,9 @@ "pubtype": 30, "p2shtype": 22, "wiftype": 158, - "txfee": 1000000, + "txfee": 0, "force_min_relay_fee": true, - "dust": 1000000, + "dust": 100000000, "mm2": 1, "required_confirmations": 2, "avg_blocktime": 60, @@ -10417,7 +10793,8 @@ "ws_url": "electrum3.cipig.net:30060" } ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "DOGE" }, "DOGE-BEP20": { "coin": "DOGE-BEP20", @@ -10468,6 +10845,50 @@ } ], "token_address_url": "tokentxns?a=", + "explorer_block_url": "block/", + "binance_id": "DOGE" + }, + "DOGEC": { + "coin": "DOGEC", + "type": "UTXO", + "name": "DogeCash", + "coinpaprika_id": "dogec-dogecash", + "coingecko_id": "dogecash", + "livecoinwatch_id": "DOGEC", + "explorer_url": "https://explorer.dogecash.org/", + "explorer_tx_url": "", + "explorer_address_url": "", + "supported": [], + "active": false, + "is_testnet": false, + "currently_enabled": false, + "wallet_only": false, + "sign_message_prefix": "DarkNet Signed Message:\n", + "fname": "DogeCash", + "rpcport": 56750, + "pubtype": 30, + "p2shtype": 19, + "wiftype": 122, + "txfee": 10000, + "dust": 5460, + "mm2": 1, + "required_confirmations": 5, + "avg_blocktime": 60, + "protocol": { + "type": "UTXO" + }, + "derivation_path": "m/44'/385'", + "links": { + "github": "https://github.com/dogecash/dogecash", + "homepage": "https://dogecash.net" + }, + "electrum": [ + { + "url": "dogec-one.ewm-cx.com:50006", + "protocol": "TCP", + "ws_url": "dogec-one.ewm-cx.com:50008" + } + ], "explorer_block_url": "block/" }, "DOGEDASH-BEP20": { @@ -10740,6 +11161,16 @@ "type": "UTXO" }, "electrum": [ + { + "url": "pink-deer-69.doi.works:50001", + "protocol": "TCP", + "contact": [ + { + "github": "https://github.com/namecoin/electrum-nmc/issues", + "twitter": "example_username" + } + ] + }, { "url": "big-parrot-60.doi.works:50002", "protocol": "SSL", @@ -10762,6 +11193,17 @@ ], "ws-url": "itchy-jellyfish-89.doi.works:50004" }, + { + "url": "pink-deer-69.doi.works:50002", + "protocol": "SSL", + "contact": [ + { + "github": "https://github.com/namecoin/electrum-nmc/issues", + "twitter": "example_username" + } + ], + "ws-url": "pink-deer-69.doi.works:50004" + }, { "url": "ugly-bird-70.doi.works:50002", "protocol": "SSL", @@ -10796,7 +11238,7 @@ "pubtype": 33, "p2shtype": 40, "wiftype": 161, - "txfee": 0, + "txfee": 10000, "dust": 5460, "txversion": 7, "mm2": 1, @@ -10914,6 +11356,12 @@ }, "derivation_path": "m/44'/78'", "electrum": [ + { + "url": "electrum1.egulden.org:50002", + "protocol": "SSL", + "disable_cert_verification": true, + "ws_url": "electrum1.egulden.org:50004" + }, { "url": "electrum3.egulden.org:50002", "protocol": "SSL", @@ -11525,7 +11973,8 @@ "url": "https://besu-at.etc-network.info" } ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "ETC" }, "ETC-BEP20": { "coin": "ETC-BEP20", @@ -11576,7 +12025,8 @@ } ], "token_address_url": "tokentxns?a=", - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "ETC" }, "ETH": { "coin": "ETH", @@ -11630,7 +12080,8 @@ } } ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "ETH" }, "ETH-AVX20": { "coin": "ETH-AVX20", @@ -11678,7 +12129,8 @@ "url": "https://avalanche.blockpi.network/v1/rpc/public" } ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "ETH" }, "ETH-ARB20": { "coin": "ETH-ARB20", @@ -11715,7 +12167,8 @@ "url": "https://arb1.arbitrum.io/rpc" } ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "ETH" }, "ETH-BEP20": { "coin": "ETH-BEP20", @@ -11766,7 +12219,8 @@ } ], "token_address_url": "tokentxns?a=", - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "ETH" }, "ETH-FTM20": { "coin": "ETH-FTM20", @@ -11814,7 +12268,8 @@ "url": "https://rpc2.fantom.network" } ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "ETH" }, "ETH-HCO20": { "coin": "ETH-HCO20", @@ -11858,7 +12313,8 @@ "url": "https://http-mainnet-node.huobichain.com" } ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "ETH" }, "ETH-KRC20": { "coin": "ETH-KRC20", @@ -11902,7 +12358,8 @@ "url": "https://kcc-rpc.com" } ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "ETH" }, "ETH-PLG20": { "coin": "ETH-PLG20", @@ -11953,15 +12410,16 @@ "url": "https://polygon.llamarpc.com" } ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "ETH" }, - "EUROE-ERC20": { - "coin": "EUROE-ERC20", + "EURE-ERC20": { + "coin": "EURE-ERC20", "type": "ERC-20", - "name": "EUROe Stablecoin", - "coinpaprika_id": "euroe-euroe-stablecoin", - "coingecko_id": "euroe-stablecoin", - "livecoinwatch_id": "EUROE", + "name": "Monerium EUR", + "coinpaprika_id": "eure-monerium-eur-emoney", + "coingecko_id": "monerium-eur-money", + "livecoinwatch_id": "EUR", "explorer_url": "https://etherscan.io/", "explorer_tx_url": "tx/", "explorer_address_url": "address/", @@ -11970,22 +12428,22 @@ "is_testnet": false, "currently_enabled": false, "wallet_only": false, - "fname": "EUROe Stablecoin", + "fname": "Monerium EUR", "rpcport": 80, "mm2": 1, "chain_id": 1, - "decimals": 6, + "decimals": 18, "avg_blocktime": 15, "required_confirmations": 3, "protocol": { "type": "ERC20", "protocol_data": { "platform": "ETH", - "contract_address": "0x820802Fa8a99901F52e39acD21177b0BE6EE2974" + "contract_address": "0x3231Cb76718CDeF2155FC47b5286d82e6eDA273f" } }, "derivation_path": "m/44'/60'", - "contract_address": "0x820802Fa8a99901F52e39acD21177b0BE6EE2974", + "contract_address": "0x3231Cb76718CDeF2155FC47b5286d82e6eDA273f", "parent_coin": "ETH", "swap_contract_address": "0x24ABE4c71FC658C91313b6552cd40cD808b3Ea80", "fallback_swap_contract": "0x8500AFc0bc5214728082163326C2FF0C73f4a871", @@ -12013,16 +12471,15 @@ } } ], - "explorer_block_url": "block/", - "forex_id": "EUR" + "explorer_block_url": "block/" }, - "EUROE-PLG20": { - "coin": "EUROE-PLG20", + "EURE-PLG20": { + "coin": "EURE-PLG20", "type": "Matic", - "name": "EUROe Stablecoin", + "name": "Monerium EUR", "coinpaprika_id": "", - "coingecko_id": "", - "livecoinwatch_id": "EUROE", + "coingecko_id": "monerium-eur-money", + "livecoinwatch_id": "EUR", "explorer_url": "https://polygonscan.com/", "explorer_tx_url": "tx/", "explorer_address_url": "address/", @@ -12031,22 +12488,22 @@ "is_testnet": false, "currently_enabled": false, "wallet_only": false, - "fname": "EUROe Stablecoin", + "fname": "Monerium EUR", "rpcport": 80, "mm2": 1, "chain_id": 137, - "decimals": 6, + "decimals": 18, "avg_blocktime": 1.8, "required_confirmations": 20, "protocol": { "type": "ERC20", "protocol_data": { "platform": "MATIC", - "contract_address": "0x820802Fa8a99901F52e39acD21177b0BE6EE2974" + "contract_address": "0x18ec0A6E18E5bc3784fDd3a3634b31245ab704F6" } }, "derivation_path": "m/44'/966'", - "contract_address": "0x820802Fa8a99901F52e39acD21177b0BE6EE2974", + "contract_address": "0x18ec0A6E18E5bc3784fDd3a3634b31245ab704F6", "parent_coin": "MATIC", "swap_contract_address": "0x9130b257D37A52E52F21054c4DA3450c72f595CE", "fallback_swap_contract": "0x9130b257D37A52E52F21054c4DA3450c72f595CE", @@ -12067,13 +12524,13 @@ ], "explorer_block_url": "block/" }, - "EURS-ERC20": { - "coin": "EURS-ERC20", + "EUROE-ERC20": { + "coin": "EUROE-ERC20", "type": "ERC-20", - "name": "STASIS EURO", - "coinpaprika_id": "eurs-stasis-eurs", - "coingecko_id": "stasis-eurs", - "livecoinwatch_id": "EURS", + "name": "EUROe Stablecoin", + "coinpaprika_id": "euroe-euroe-stablecoin", + "coingecko_id": "euroe-stablecoin", + "livecoinwatch_id": "EUROE", "explorer_url": "https://etherscan.io/", "explorer_tx_url": "tx/", "explorer_address_url": "address/", @@ -12082,27 +12539,139 @@ "is_testnet": false, "currently_enabled": false, "wallet_only": false, - "fname": "STASIS EURO", + "fname": "EUROe Stablecoin", "rpcport": 80, "mm2": 1, "chain_id": 1, - "decimals": 2, + "decimals": 6, "avg_blocktime": 15, "required_confirmations": 3, "protocol": { "type": "ERC20", "protocol_data": { "platform": "ETH", - "contract_address": "0xdB25f211AB05b1c97D595516F45794528a807ad8" + "contract_address": "0x820802Fa8a99901F52e39acD21177b0BE6EE2974" } }, "derivation_path": "m/44'/60'", - "trezor_coin": "STASIS EURS", - "links": { - "github": "https://github.com/stasisnet", - "homepage": "https://stasis.net" - }, - "contract_address": "0xdB25f211AB05b1c97D595516F45794528a807ad8", + "contract_address": "0x820802Fa8a99901F52e39acD21177b0BE6EE2974", + "parent_coin": "ETH", + "swap_contract_address": "0x24ABE4c71FC658C91313b6552cd40cD808b3Ea80", + "fallback_swap_contract": "0x8500AFc0bc5214728082163326C2FF0C73f4a871", + "nodes": [ + { + "url": "https://node.komodo.earth:8080/ethereum", + "gui_auth": true + }, + { + "url": "https://eth1.cipig.net:18555", + "contact": { + "email": "cipi@komodoplatform.com" + } + }, + { + "url": "https://eth2.cipig.net:18555", + "contact": { + "email": "cipi@komodoplatform.com" + } + }, + { + "url": "https://eth3.cipig.net:18555", + "contact": { + "email": "cipi@komodoplatform.com" + } + } + ], + "explorer_block_url": "block/", + "forex_id": "EUR" + }, + "EUROE-PLG20": { + "coin": "EUROE-PLG20", + "type": "Matic", + "name": "EUROe Stablecoin", + "coinpaprika_id": "", + "coingecko_id": "euroe-stablecoin", + "livecoinwatch_id": "EUROE", + "explorer_url": "https://polygonscan.com/", + "explorer_tx_url": "tx/", + "explorer_address_url": "address/", + "supported": [], + "active": false, + "is_testnet": false, + "currently_enabled": false, + "wallet_only": false, + "fname": "EUROe Stablecoin", + "rpcport": 80, + "mm2": 1, + "chain_id": 137, + "decimals": 6, + "avg_blocktime": 1.8, + "required_confirmations": 20, + "protocol": { + "type": "ERC20", + "protocol_data": { + "platform": "MATIC", + "contract_address": "0x820802Fa8a99901F52e39acD21177b0BE6EE2974" + } + }, + "derivation_path": "m/44'/966'", + "contract_address": "0x820802Fa8a99901F52e39acD21177b0BE6EE2974", + "parent_coin": "MATIC", + "swap_contract_address": "0x9130b257D37A52E52F21054c4DA3450c72f595CE", + "fallback_swap_contract": "0x9130b257D37A52E52F21054c4DA3450c72f595CE", + "nodes": [ + { + "url": "https://node.komodo.earth:8080/polygon", + "gui_auth": true + }, + { + "url": "https://polygon-rpc.com" + }, + { + "url": "https://polygon.blockpi.network/v1/rpc/public" + }, + { + "url": "https://polygon.llamarpc.com" + } + ], + "explorer_block_url": "block/" + }, + "EURS-ERC20": { + "coin": "EURS-ERC20", + "type": "ERC-20", + "name": "STASIS EURO", + "coinpaprika_id": "eurs-stasis-eurs", + "coingecko_id": "stasis-eurs", + "livecoinwatch_id": "EURS", + "explorer_url": "https://etherscan.io/", + "explorer_tx_url": "tx/", + "explorer_address_url": "address/", + "supported": [], + "active": false, + "is_testnet": false, + "currently_enabled": false, + "wallet_only": false, + "fname": "STASIS EURO", + "rpcport": 80, + "mm2": 1, + "chain_id": 1, + "decimals": 2, + "avg_blocktime": 15, + "required_confirmations": 3, + "protocol": { + "type": "ERC20", + "protocol_data": { + "platform": "ETH", + "contract_address": "0xdB25f211AB05b1c97D595516F45794528a807ad8" + } + }, + "derivation_path": "m/44'/60'", + "trezor_coin": "STASIS EURS", + "links": { + "github": "https://github.com/stasisnet", + "homepage": "https://stasis.net" + }, + "contract_address": "0xdB25f211AB05b1c97D595516F45794528a807ad8", "parent_coin": "ETH", "swap_contract_address": "0x24ABE4c71FC658C91313b6552cd40cD808b3Ea80", "fallback_swap_contract": "0x8500AFc0bc5214728082163326C2FF0C73f4a871", @@ -12554,7 +13123,7 @@ "type": "ERC-20", "name": "Filecoin", "coinpaprika_id": "", - "coingecko_id": "", + "coingecko_id": "filecoin", "livecoinwatch_id": "FIL", "explorer_url": "https://etherscan.io/", "explorer_tx_url": "tx/", @@ -12733,7 +13302,8 @@ ] } ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "FIRO" }, "FIRO-BEP20": { "coin": "FIRO-BEP20", @@ -12784,7 +13354,8 @@ } ], "token_address_url": "tokentxns?a=", - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "FIRO" }, "FJC": { "coin": "FJC", @@ -12800,7 +13371,7 @@ "active": false, "is_testnet": false, "currently_enabled": false, - "wallet_only": false, + "wallet_only": true, "sign_message_prefix": "FujiCoin Signed Message:\n", "fname": "Fujicoin", "rpcport": 3776, @@ -13225,7 +13796,7 @@ "active": false, "is_testnet": false, "currently_enabled": false, - "wallet_only": false, + "wallet_only": true, "sign_message_prefix": "Feathercoin Signed Message:\n", "fname": "Feathercoin", "rpcport": 9337, @@ -13515,7 +14086,8 @@ "url": "https://rpc2.fantom.network" } ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "FTM" }, "FTM-BEP20": { "coin": "FTM-BEP20", @@ -13566,7 +14138,8 @@ } ], "token_address_url": "tokentxns?a=", - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "FTM" }, "FTM-ERC20": { "coin": "FTM-ERC20", @@ -13630,7 +14203,8 @@ } } ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "FTM" }, "FXS-BEP20": { "coin": "FXS-BEP20", @@ -13689,7 +14263,7 @@ "type": "ERC-20", "name": "Frax Share", "coinpaprika_id": "", - "coingecko_id": "", + "coingecko_id": "frax-share", "livecoinwatch_id": "FXS", "explorer_url": "https://etherscan.io/", "explorer_tx_url": "tx/", @@ -13749,7 +14323,7 @@ "type": "Matic", "name": "Frax Share", "coinpaprika_id": "", - "coingecko_id": "", + "coingecko_id": "frax-share", "livecoinwatch_id": "FXS", "explorer_url": "https://polygonscan.com/", "explorer_tx_url": "tx/", @@ -13800,7 +14374,7 @@ "type": "AVX-20", "name": "Frax Share", "coinpaprika_id": "", - "coingecko_id": "", + "coingecko_id": "frax-share", "livecoinwatch_id": "FXS", "explorer_url": "https://snowtrace.io/", "explorer_tx_url": "tx/", @@ -13848,7 +14422,7 @@ "type": "Moonriver", "name": "Frax Share", "coinpaprika_id": "", - "coingecko_id": "", + "coingecko_id": "frax-share", "livecoinwatch_id": "FXS", "explorer_url": "https://moonriver.moonscan.io/", "explorer_tx_url": "", @@ -13892,7 +14466,7 @@ "type": "FTM-20", "name": "Frax Share", "coinpaprika_id": "", - "coingecko_id": "", + "coingecko_id": "frax-share", "livecoinwatch_id": "FXS", "explorer_url": "https://ftmscan.com/", "explorer_tx_url": "", @@ -14112,7 +14686,7 @@ "type": "Matic", "name": "GameCredits", "coinpaprika_id": "", - "coingecko_id": "", + "coingecko_id": "gamecredits", "livecoinwatch_id": "GAME", "explorer_url": "https://polygonscan.com/", "explorer_tx_url": "tx/", @@ -14205,7 +14779,7 @@ "type": "BEP-20", "name": "GoByte", "coinpaprika_id": "", - "coingecko_id": "", + "coingecko_id": "gobyte", "livecoinwatch_id": "GBX", "explorer_url": "https://bscscan.com/", "explorer_tx_url": "tx/", @@ -14304,6 +14878,61 @@ "token_address_url": "tokentxns?a=", "explorer_block_url": "block/" }, + "GLC": { + "coin": "GLC", + "type": "UTXO", + "name": "Goldcoin", + "coinpaprika_id": "glc-goldcoin", + "coingecko_id": "goldcoin", + "livecoinwatch_id": "GLC", + "explorer_url": "https://chainz.cryptoid.info/glc/", + "explorer_tx_url": "tx.dws?", + "explorer_address_url": "address.dws?", + "supported": [], + "active": false, + "is_testnet": false, + "currently_enabled": false, + "wallet_only": false, + "sign_message_prefix": "Goldcoin (GLC) Signed Message:\n", + "fname": "Goldcoin", + "rpcport": 8122, + "pubtype": 32, + "p2shtype": 5, + "wiftype": 160, + "segwit": false, + "txfee": 100000, + "mm2": 1, + "required_confirmations": 3, + "avg_blocktime": 120, + "protocol": { + "type": "UTXO" + }, + "links": { + "github": "https://github.com/goldcoin/goldcoin", + "homepage": "https://www.goldcoinproject.org" + }, + "electrum": [ + { + "url": "electrum1.netseed.net:50001", + "protocol": "TCP" + }, + { + "url": "electrum2.netseed.net:50001", + "protocol": "TCP" + }, + { + "url": "electrum1.netseed.net:50002", + "protocol": "SSL", + "ws_url": "electrum1.netseed.net:50003" + }, + { + "url": "electrum2.netseed.net:50002", + "protocol": "SSL", + "ws_url": "electrum2.netseed.net:50003" + } + ], + "explorer_block_url": "block.dws?" + }, "GLEEC": { "coin": "GLEEC", "type": "Smart Chain", @@ -14579,7 +15208,7 @@ "coin": "GMT-BEP20", "type": "BEP-20", "name": "STEPN", - "coinpaprika_id": "", + "coinpaprika_id": "gmt-stepn", "coingecko_id": "stepn", "livecoinwatch_id": "____GMT", "explorer_url": "https://bscscan.com/", @@ -14627,6 +15256,57 @@ "token_address_url": "tokentxns?a=", "explorer_block_url": "block/" }, + "GMT-PLG20": { + "coin": "GMT-PLG20", + "type": "Matic", + "name": "STEPN", + "coinpaprika_id": "gmt-stepn", + "coingecko_id": "stepn", + "livecoinwatch_id": "____GMT", + "explorer_url": "https://polygonscan.com/", + "explorer_tx_url": "tx/", + "explorer_address_url": "address/", + "supported": [], + "active": false, + "is_testnet": false, + "currently_enabled": false, + "wallet_only": false, + "fname": "STEPN", + "rpcport": 80, + "mm2": 1, + "chain_id": 137, + "decimals": 8, + "avg_blocktime": 1.8, + "required_confirmations": 20, + "protocol": { + "type": "ERC20", + "protocol_data": { + "platform": "MATIC", + "contract_address": "0x714DB550b574b3E927af3D93E26127D15721D4C2" + } + }, + "derivation_path": "m/44'/966'", + "contract_address": "0x714DB550b574b3E927af3D93E26127D15721D4C2", + "parent_coin": "MATIC", + "swap_contract_address": "0x9130b257D37A52E52F21054c4DA3450c72f595CE", + "fallback_swap_contract": "0x9130b257D37A52E52F21054c4DA3450c72f595CE", + "nodes": [ + { + "url": "https://node.komodo.earth:8080/polygon", + "gui_auth": true + }, + { + "url": "https://polygon-rpc.com" + }, + { + "url": "https://polygon.blockpi.network/v1/rpc/public" + }, + { + "url": "https://polygon.llamarpc.com" + } + ], + "explorer_block_url": "block/" + }, "GMX-AVX20": { "coin": "GMX-AVX20", "type": "AVX-20", @@ -14883,16 +15563,6 @@ } ] }, - { - "url": "au.garlium.crapules.org:50002", - "protocol": "SSL", - "disable_cert_verification": true, - "contact": [ - { - "discord": "orpheas#1503" - } - ] - }, { "url": "electrum.maxpuig.com:50002", "protocol": "SSL", @@ -14902,36 +15572,6 @@ } ], "ws_url": "electrum.maxpuig.com:50004" - }, - { - "url": "fr.garlium.crapules.org:50002", - "protocol": "SSL", - "disable_cert_verification": true, - "contact": [ - { - "discord": "orpheas#1503" - } - ] - }, - { - "url": "pl.garlium.crapules.org:50002", - "protocol": "SSL", - "disable_cert_verification": true, - "contact": [ - { - "discord": "orpheas#1503" - } - ] - }, - { - "url": "uk.garlium.crapules.org:50002", - "protocol": "SSL", - "disable_cert_verification": true, - "contact": [ - { - "discord": "orpheas#1503" - } - ] } ], "explorer_block_url": "block/" @@ -14941,7 +15581,7 @@ "type": "ERC-20", "name": "Garlicoin", "coinpaprika_id": "", - "coingecko_id": "", + "coingecko_id": "garlicoin", "livecoinwatch_id": "GRLC", "explorer_url": "https://etherscan.io/", "explorer_tx_url": "tx/", @@ -15001,7 +15641,7 @@ "type": "BEP-20", "name": "Garlicoin", "coinpaprika_id": "", - "coingecko_id": "", + "coingecko_id": "garlicoin", "livecoinwatch_id": "GRLC", "explorer_url": "https://bscscan.com/", "explorer_tx_url": "tx/", @@ -15110,18 +15750,6 @@ } ] }, - { - "url": "electrum13.groestlcoin.org:50001", - "ws_url": "electrum13.groestlcoin.org:50004", - "contact": [ - { - "email": "jackielove4u@hotmail.com" - }, - { - "discord": "jackielove4u#0412" - } - ] - }, { "url": "electrum14.groestlcoin.org:50001", "ws_url": "electrum14.groestlcoin.org:50004", @@ -15266,18 +15894,6 @@ } ] }, - { - "url": "electrum26.groestlcoin.org:50001", - "ws_url": "electrum26.groestlcoin.org:50004", - "contact": [ - { - "email": "jackielove4u@hotmail.com" - }, - { - "discord": "jackielove4u#0412" - } - ] - }, { "url": "electrum27.groestlcoin.org:50001", "ws_url": "electrum27.groestlcoin.org:50004", @@ -15302,54 +15918,6 @@ } ] }, - { - "url": "electrum29.groestlcoin.org:50001", - "ws_url": "electrum29.groestlcoin.org:50004", - "contact": [ - { - "email": "jackielove4u@hotmail.com" - }, - { - "discord": "jackielove4u#0412" - } - ] - }, - { - "url": "electrum3.groestlcoin.org:50001", - "ws_url": "electrum3.groestlcoin.org:50004", - "contact": [ - { - "email": "jackielove4u@hotmail.com" - }, - { - "discord": "jackielove4u#0412" - } - ] - }, - { - "url": "electrum30.groestlcoin.org:50001", - "ws_url": "electrum30.groestlcoin.org:50004", - "contact": [ - { - "email": "jackielove4u@hotmail.com" - }, - { - "discord": "jackielove4u#0412" - } - ] - }, - { - "url": "electrum34.groestlcoin.org:50001", - "ws_url": "electrum34.groestlcoin.org:50004", - "contact": [ - { - "email": "jackielove4u@hotmail.com" - }, - { - "discord": "jackielove4u#0412" - } - ] - }, { "url": "electrum35.groestlcoin.org:50001", "ws_url": "electrum35.groestlcoin.org:50004", @@ -15422,461 +15990,6 @@ } ] }, - { - "url": "electrum7.groestlcoin.org:50001", - "ws_url": "electrum7.groestlcoin.org:50004", - "contact": [ - { - "email": "jackielove4u@hotmail.com" - }, - { - "discord": "jackielove4u#0412" - } - ] - }, - { - "url": "electrum8.groestlcoin.org:50001", - "ws_url": "electrum8.groestlcoin.org:50004", - "contact": [ - { - "email": "jackielove4u@hotmail.com" - }, - { - "discord": "jackielove4u#0412" - } - ] - }, - { - "url": "electrum9.groestlcoin.org:50001", - "ws_url": "electrum9.groestlcoin.org:50004", - "contact": [ - { - "email": "jackielove4u@hotmail.com" - }, - { - "discord": "jackielove4u#0412" - } - ] - }, - { - "url": "electrum11.groestlcoin.org:50002", - "protocol": "SSL", - "disable_cert_verification": false, - "ws_url": "electrum11.groestlcoin.org:50004", - "contact": [ - { - "email": "jackielove4u@hotmail.com" - }, - { - "discord": "jackielove4u#0412" - } - ] - } - ], - "explorer_block_url": "block/" - }, - "GRS-segwit": { - "coin": "GRS-segwit", - "type": "UTXO", - "name": "Groestlcoin", - "coinpaprika_id": "grs-groestlcoin", - "coingecko_id": "groestlcoin", - "livecoinwatch_id": "GRS", - "explorer_url": "https://groestlsight.groestlcoin.org/", - "explorer_tx_url": "", - "explorer_address_url": "", - "supported": [], - "active": false, - "is_testnet": false, - "currently_enabled": false, - "wallet_only": true, - "sign_message_prefix": "GroestCoin Signed Message:\n", - "fname": "Groestlcoin", - "rpcport": 1441, - "pubtype": 36, - "p2shtype": 5, - "wiftype": 128, - "txfee": 10000, - "dust": 10000, - "segwit": true, - "bech32_hrp": "grs", - "address_format": { - "format": "segwit" - }, - "orderbook_ticker": "GRS", - "mm2": 1, - "required_confirmations": 5, - "avg_blocktime": 60, - "protocol": { - "type": "UTXO" - }, - "derivation_path": "m/44'/17'", - "trezor_coin": "Groestlcoin", - "links": { - "github": "https://github.com/Groestlcoin/groestlcoin", - "homepage": "https://www.groestlcoin.org" - }, - "electrum": [ - { - "url": "electrum1.groestlcoin.org:50001", - "ws_url": "electrum1.groestlcoin.org:50004", - "contact": [ - { - "email": "jackielove4u@hotmail.com" - }, - { - "discord": "jackielove4u#0412" - } - ] - }, - { - "url": "electrum12.groestlcoin.org:50001", - "ws_url": "electrum12.groestlcoin.org:50004", - "contact": [ - { - "email": "jackielove4u@hotmail.com" - }, - { - "discord": "jackielove4u#0412" - } - ] - }, - { - "url": "electrum13.groestlcoin.org:50001", - "ws_url": "electrum13.groestlcoin.org:50004", - "contact": [ - { - "email": "jackielove4u@hotmail.com" - }, - { - "discord": "jackielove4u#0412" - } - ] - }, - { - "url": "electrum14.groestlcoin.org:50001", - "ws_url": "electrum14.groestlcoin.org:50004", - "contact": [ - { - "email": "jackielove4u@hotmail.com" - }, - { - "discord": "jackielove4u#0412" - } - ] - }, - { - "url": "electrum15.groestlcoin.org:50001", - "ws_url": "electrum15.groestlcoin.org:50004", - "contact": [ - { - "email": "jackielove4u@hotmail.com" - }, - { - "discord": "jackielove4u#0412" - } - ] - }, - { - "url": "electrum16.groestlcoin.org:50001", - "ws_url": "electrum16.groestlcoin.org:50004", - "contact": [ - { - "email": "jackielove4u@hotmail.com" - }, - { - "discord": "jackielove4u#0412" - } - ] - }, - { - "url": "electrum17.groestlcoin.org:50001", - "ws_url": "electrum17.groestlcoin.org:50004", - "contact": [ - { - "email": "jackielove4u@hotmail.com" - }, - { - "discord": "jackielove4u#0412" - } - ] - }, - { - "url": "electrum19.groestlcoin.org:50001", - "ws_url": "electrum19.groestlcoin.org:50004", - "contact": [ - { - "email": "jackielove4u@hotmail.com" - }, - { - "discord": "jackielove4u#0412" - } - ] - }, - { - "url": "electrum2.groestlcoin.org:50001", - "ws_url": "electrum2.groestlcoin.org:50004", - "contact": [ - { - "email": "jackielove4u@hotmail.com" - }, - { - "discord": "jackielove4u#0412" - } - ] - }, - { - "url": "electrum20.groestlcoin.org:50001", - "ws_url": "electrum20.groestlcoin.org:50004", - "contact": [ - { - "email": "jackielove4u@hotmail.com" - }, - { - "discord": "jackielove4u#0412" - } - ] - }, - { - "url": "electrum21.groestlcoin.org:50001", - "ws_url": "electrum21.groestlcoin.org:50004", - "contact": [ - { - "email": "jackielove4u@hotmail.com" - }, - { - "discord": "jackielove4u#0412" - } - ] - }, - { - "url": "electrum22.groestlcoin.org:50001", - "ws_url": "electrum22.groestlcoin.org:50004", - "contact": [ - { - "email": "jackielove4u@hotmail.com" - }, - { - "discord": "jackielove4u#0412" - } - ] - }, - { - "url": "electrum23.groestlcoin.org:50001", - "ws_url": "electrum23.groestlcoin.org:50004", - "contact": [ - { - "email": "jackielove4u@hotmail.com" - }, - { - "discord": "jackielove4u#0412" - } - ] - }, - { - "url": "electrum24.groestlcoin.org:50001", - "ws_url": "electrum24.groestlcoin.org:50004", - "contact": [ - { - "email": "jackielove4u@hotmail.com" - }, - { - "discord": "jackielove4u#0412" - } - ] - }, - { - "url": "electrum25.groestlcoin.org:50001", - "ws_url": "electrum25.groestlcoin.org:50004", - "contact": [ - { - "email": "jackielove4u@hotmail.com" - }, - { - "discord": "jackielove4u#0412" - } - ] - }, - { - "url": "electrum26.groestlcoin.org:50001", - "ws_url": "electrum26.groestlcoin.org:50004", - "contact": [ - { - "email": "jackielove4u@hotmail.com" - }, - { - "discord": "jackielove4u#0412" - } - ] - }, - { - "url": "electrum27.groestlcoin.org:50001", - "ws_url": "electrum27.groestlcoin.org:50004", - "contact": [ - { - "email": "jackielove4u@hotmail.com" - }, - { - "discord": "jackielove4u#0412" - } - ] - }, - { - "url": "electrum28.groestlcoin.org:50001", - "ws_url": "electrum28.groestlcoin.org:50004", - "contact": [ - { - "email": "jackielove4u@hotmail.com" - }, - { - "discord": "jackielove4u#0412" - } - ] - }, - { - "url": "electrum29.groestlcoin.org:50001", - "ws_url": "electrum29.groestlcoin.org:50004", - "contact": [ - { - "email": "jackielove4u@hotmail.com" - }, - { - "discord": "jackielove4u#0412" - } - ] - }, - { - "url": "electrum3.groestlcoin.org:50001", - "ws_url": "electrum3.groestlcoin.org:50004", - "contact": [ - { - "email": "jackielove4u@hotmail.com" - }, - { - "discord": "jackielove4u#0412" - } - ] - }, - { - "url": "electrum30.groestlcoin.org:50001", - "ws_url": "electrum30.groestlcoin.org:50004", - "contact": [ - { - "email": "jackielove4u@hotmail.com" - }, - { - "discord": "jackielove4u#0412" - } - ] - }, - { - "url": "electrum34.groestlcoin.org:50001", - "ws_url": "electrum34.groestlcoin.org:50004", - "contact": [ - { - "email": "jackielove4u@hotmail.com" - }, - { - "discord": "jackielove4u#0412" - } - ] - }, - { - "url": "electrum35.groestlcoin.org:50001", - "ws_url": "electrum35.groestlcoin.org:50004", - "contact": [ - { - "email": "jackielove4u@hotmail.com" - }, - { - "discord": "jackielove4u#0412" - } - ] - }, - { - "url": "electrum36.groestlcoin.org:50001", - "ws_url": "electrum36.groestlcoin.org:50004", - "contact": [ - { - "email": "jackielove4u@hotmail.com" - }, - { - "discord": "jackielove4u#0412" - } - ] - }, - { - "url": "electrum37.groestlcoin.org:50001", - "ws_url": "electrum37.groestlcoin.org:50004", - "contact": [ - { - "email": "jackielove4u@hotmail.com" - }, - { - "discord": "jackielove4u#0412" - } - ] - }, - { - "url": "electrum38.groestlcoin.org:50001", - "ws_url": "electrum38.groestlcoin.org:50004", - "contact": [ - { - "email": "jackielove4u@hotmail.com" - }, - { - "discord": "jackielove4u#0412" - } - ] - }, - { - "url": "electrum39.groestlcoin.org:50001", - "ws_url": "electrum39.groestlcoin.org:50004", - "contact": [ - { - "email": "jackielove4u@hotmail.com" - }, - { - "discord": "jackielove4u#0412" - } - ] - }, - { - "url": "electrum40.groestlcoin.org:50001", - "ws_url": "electrum40.groestlcoin.org:50004", - "contact": [ - { - "email": "jackielove4u@hotmail.com" - }, - { - "discord": "jackielove4u#0412" - } - ] - }, - { - "url": "electrum7.groestlcoin.org:50001", - "ws_url": "electrum7.groestlcoin.org:50004", - "contact": [ - { - "email": "jackielove4u@hotmail.com" - }, - { - "discord": "jackielove4u#0412" - } - ] - }, - { - "url": "electrum8.groestlcoin.org:50001", - "ws_url": "electrum8.groestlcoin.org:50004", - "contact": [ - { - "email": "jackielove4u@hotmail.com" - }, - { - "discord": "jackielove4u#0412" - } - ] - }, { "url": "electrum9.groestlcoin.org:50001", "ws_url": "electrum9.groestlcoin.org:50004", @@ -17176,7 +17289,7 @@ "type": "BEP-20", "name": "Illuvium", "coinpaprika_id": "", - "coingecko_id": "", + "coingecko_id": "illuvium", "livecoinwatch_id": "ILV", "explorer_url": "https://bscscan.com/", "explorer_tx_url": "tx/", @@ -17654,7 +17767,7 @@ "type": "BEP-20", "name": "Jarvis Brazilian Real", "coinpaprika_id": "", - "coingecko_id": "", + "coingecko_id": "jarvis-brazilian-real", "livecoinwatch_id": "BRL", "explorer_url": "https://bscscan.com/", "explorer_tx_url": "tx/", @@ -18076,7 +18189,7 @@ "type": "AVX-20", "name": "Jarvis Euro", "coinpaprika_id": "", - "coingecko_id": "", + "coingecko_id": "jarvis-synthetic-euro", "livecoinwatch_id": "JEUR", "explorer_url": "https://snowtrace.io/", "explorer_tx_url": "tx/", @@ -18124,7 +18237,7 @@ "type": "BEP-20", "name": "Jarvis Euro", "coinpaprika_id": "", - "coingecko_id": "", + "coingecko_id": "jarvis-synthetic-euro", "livecoinwatch_id": "JEUR", "explorer_url": "https://bscscan.com/", "explorer_tx_url": "tx/", @@ -18289,7 +18402,7 @@ "type": "BEP-20", "name": "Jarvis British Pound", "coinpaprika_id": "", - "coingecko_id": "", + "coingecko_id": "jarvis-synthetic-british-pound", "livecoinwatch_id": "GBP", "explorer_url": "https://bscscan.com/", "explorer_tx_url": "tx/", @@ -19438,7 +19551,8 @@ ], "explorer_block_url": "block/", "is_claimable": true, - "minimal_claim_amount": "10" + "minimal_claim_amount": "10", + "binance_id": "KMD" }, "KMD-BEP20": { "coin": "KMD-BEP20", @@ -19489,7 +19603,8 @@ } ], "token_address_url": "tokentxns?a=", - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "KMD" }, "KNC-BEP20": { "coin": "KNC-BEP20", @@ -19982,7 +20097,7 @@ "active": false, "is_testnet": false, "currently_enabled": false, - "wallet_only": false, + "wallet_only": true, "sign_message_prefix": "LBRYcrd Signed Message:\n", "fname": "LBRY Credits", "rpcport": 9245, @@ -20110,7 +20225,7 @@ "active": false, "is_testnet": false, "currently_enabled": false, - "wallet_only": false, + "wallet_only": true, "sign_message_prefix": "Litecoin Signed Message:\n", "fname": "Litecoin Cash", "rpcport": 62457, @@ -20131,10 +20246,6 @@ }, "derivation_path": "m/44'/192'", "electrum": [ - { - "url": "188.166.117.139:50001", - "protocol": "TCP" - }, { "url": "88.99.26.209:5140", "protocol": "TCP" @@ -20181,10 +20292,6 @@ }, "derivation_path": "m/44'/192'", "electrum": [ - { - "url": "188.166.117.139:50001", - "protocol": "TCP" - }, { "url": "88.99.26.209:5140", "protocol": "TCP" @@ -20997,7 +21104,7 @@ "active": false, "is_testnet": false, "currently_enabled": false, - "wallet_only": false, + "wallet_only": true, "fname": "Widecoin", "rpcport": 8552, "pubtype": 73, @@ -21313,7 +21420,7 @@ "active": false, "is_testnet": false, "currently_enabled": false, - "wallet_only": false, + "wallet_only": true, "sign_message_prefix": "Litecoin Signed Message:\n", "fname": "Litecoin", "rpcport": 9332, @@ -21410,7 +21517,8 @@ "ws_url": "electrum3.cipig.net:30063" } ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "LTC" }, "LTC-segwit": { "coin": "LTC-segwit", @@ -21527,7 +21635,8 @@ "ws_url": "electrum3.cipig.net:30063" } ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "LTC" }, "LYNX": { "coin": "LYNX", @@ -21550,7 +21659,7 @@ "pubtype": 45, "p2shtype": 22, "wiftype": 173, - "txfee": 0, + "txfee": 100000, "dust": 54600, "segwit": false, "mm2": 1, @@ -21576,11 +21685,6 @@ "protocol": "SSL", "ws_url": "electrum7.getlynx.io:50004" }, - { - "url": "electrum8.getlynx.io:50002", - "protocol": "SSL", - "ws_url": "electrum8.getlynx.io:50004" - }, { "url": "electrum9.getlynx.io:50002", "protocol": "SSL", @@ -21806,7 +21910,7 @@ "type": "BEP-20", "name": "Mask Network", "coinpaprika_id": "", - "coingecko_id": "", + "coingecko_id": "mask-network", "livecoinwatch_id": "_MASK", "explorer_url": "https://bscscan.com/", "explorer_tx_url": "tx/", @@ -21918,7 +22022,7 @@ "type": "Matic", "name": "Mask Network", "coinpaprika_id": "", - "coingecko_id": "", + "coingecko_id": "mask-network", "livecoinwatch_id": "_MASK", "explorer_url": "https://polygonscan.com/", "explorer_tx_url": "tx/", @@ -22048,7 +22152,8 @@ "url": "https://polygon.llamarpc.com" } ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "MATIC" }, "MATIC-BEP20": { "coin": "MATIC-BEP20", @@ -22099,7 +22204,8 @@ } ], "token_address_url": "tokentxns?a=", - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "MATIC" }, "MATIC-ERC20": { "coin": "MATIC-ERC20", @@ -22163,7 +22269,8 @@ } } ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "MATIC" }, "MATIC-HCO20": { "coin": "MATIC-HCO20", @@ -22207,7 +22314,8 @@ "url": "https://http-mainnet-node.huobichain.com" } ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "MATIC" }, "MATIC-KRC20": { "coin": "MATIC-KRC20", @@ -22251,7 +22359,8 @@ "url": "https://kcc-rpc.com" } ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "MATIC" }, "MC-ERC20": { "coin": "MC-ERC20", @@ -22370,7 +22479,7 @@ "type": "Smart Chain", "name": "Marmara Credit Loops", "coinpaprika_id": "mcl-marmara-credit-loops", - "coingecko_id": "", + "coingecko_id": "marmara-credit-loops", "livecoinwatch_id": "_MCL", "explorer_url": "https://explorer.marmara.io/", "explorer_tx_url": "", @@ -22966,7 +23075,7 @@ "type": "Matic", "name": "Maker", "coinpaprika_id": "", - "coingecko_id": "", + "coingecko_id": "maker", "livecoinwatch_id": "MKR", "explorer_url": "https://polygonscan.com/", "explorer_tx_url": "tx/", @@ -23284,7 +23393,7 @@ "active": false, "is_testnet": false, "currently_enabled": false, - "wallet_only": false, + "wallet_only": true, "sign_message_prefix": "Monacoin Signed Message:\n", "fname": "MonaCoin", "rpcport": 9402, @@ -23413,7 +23522,8 @@ "url": "https://rpc.api.moonriver.moonbeam.network" } ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "MOVR" }, "GLMR": { "coin": "GLMR", @@ -23454,7 +23564,8 @@ "url": "https://moonbeam.public.blastapi.io" } ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "GLMR" }, "NAV": { "coin": "NAV", @@ -23610,7 +23721,7 @@ "type": "UTXO", "name": "Nengcoin", "coinpaprika_id": "neng-nengcoin", - "coingecko_id": "", + "coingecko_id": "nengcoin", "livecoinwatch_id": "NENG", "explorer_url": "http://nengexplorer.mooo.com:3001/", "explorer_tx_url": "", @@ -23946,7 +24057,7 @@ "active": false, "is_testnet": false, "currently_enabled": false, - "wallet_only": false, + "wallet_only": true, "fname": "Namecoin", "rpcport": 8336, "pubtype": 52, @@ -24711,7 +24822,8 @@ "url": "https://api.s0.t.hmny.io" } ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "ONE" }, "ONT-BEP20": { "coin": "ONT-BEP20", @@ -25176,6 +25288,10 @@ "homepage": "https://getstarted.with.pink" }, "electrum": [ + { + "url": "pink-one.ewm-cx.net:50001", + "protocol": "TCP" + }, { "url": "pink-two.ewm-cx.net:50001", "protocol": "TCP" @@ -25231,7 +25347,8 @@ ] } ], - "explorer_block_url": "block.dws?" + "explorer_block_url": "block.dws?", + "binance_id": "PIVX" }, "PND": { "coin": "PND", @@ -25308,15 +25425,15 @@ }, "derivation_path": "m/44'/81'", "electrum": [ - { - "url": "62.171.189.243:50001", - "protocol": "TCP" - }, { "url": "pot-duo.ewmcx.net:50012", "protocol": "SSL", - "disable_cert_verification": false, "ws_url": "pot-duo.ewmcx.net:50013" + }, + { + "url": "pot-uno.ewmcx.net:50002", + "protocol": "SSL", + "ws_url": "pot-uno.ewmcx.net:50003" } ], "explorer_block_url": "block.dws?" @@ -25326,7 +25443,7 @@ "type": "ERC-20", "name": "PotCoin", "coinpaprika_id": "", - "coingecko_id": "", + "coingecko_id": "potcoin", "livecoinwatch_id": "_POT", "explorer_url": "https://etherscan.io/", "explorer_tx_url": "tx/", @@ -25386,7 +25503,7 @@ "type": "Matic", "name": "PotCoin", "coinpaprika_id": "", - "coingecko_id": "", + "coingecko_id": "potcoin", "livecoinwatch_id": "_POT", "explorer_url": "https://polygonscan.com/", "explorer_tx_url": "tx/", @@ -25879,7 +25996,7 @@ "type": "UTXO", "name": "PRUX", "coinpaprika_id": "prux-prux-coin", - "coingecko_id": "", + "coingecko_id": "prux-coin", "livecoinwatch_id": "", "explorer_url": "https://explorer.prux.info/", "explorer_tx_url": "", @@ -26010,7 +26127,7 @@ "type": "Matic", "name": "Vulcan Forged", "coinpaprika_id": "", - "coingecko_id": "", + "coingecko_id": "vulcan-forged", "livecoinwatch_id": "PYR", "explorer_url": "https://polygonscan.com/", "explorer_tx_url": "tx/", @@ -26219,7 +26336,7 @@ "type": "Matic", "name": "Shiba Inu", "coinpaprika_id": "", - "coingecko_id": "", + "coingecko_id": "shiba-inu", "livecoinwatch_id": "SHIB", "explorer_url": "https://polygonscan.com/", "explorer_tx_url": "tx/", @@ -26945,417 +27062,192 @@ ], "explorer_block_url": "block/" }, - "QTUM": { - "coin": "QTUM", - "type": "QRC-20", - "name": "Qtum", - "coinpaprika_id": "qtum-qtum", - "coingecko_id": "qtum", - "livecoinwatch_id": "QTUM", - "explorer_url": "https://explorer.qtum.org/", - "explorer_tx_url": "", - "explorer_address_url": "", - "supported": [], - "active": false, - "is_testnet": false, - "currently_enabled": false, - "wallet_only": false, - "sign_message_prefix": "Qtum Signed Message:\n", - "fname": "Qtum", - "rpcport": 3889, - "pubtype": 58, - "p2shtype": 50, - "wiftype": 128, - "segwit": true, - "bech32_hrp": "qc", - "txfee": 0, - "dust": 72800, - "mm2": 1, - "force_min_relay_fee": true, - "required_confirmations": 3, - "mature_confirmations": 2000, - "avg_blocktime": 32, - "protocol": { - "type": "QTUM" - }, - "derivation_path": "m/44'/2301'", - "trezor_coin": "Qtum", - "links": { - "github": "https://github.com/qtumproject/qtum", - "homepage": "https://qtum.org" - }, - "swap_contract_address": "0x2f754733acd6d753731c00fee32cb484551cc15d", - "fallback_swap_contract": "0x2f754733acd6d753731c00fee32cb484551cc15d", - "electrum": [ - { - "url": "electrum1.cipig.net:10050", - "contact": [ - { - "email": "cipi@komodoplatform.com" - }, - { - "discord": "cipi#4502" - } - ] - }, - { - "url": "electrum2.cipig.net:10050", - "contact": [ - { - "email": "cipi@komodoplatform.com" - }, - { - "discord": "cipi#4502" - } - ] - }, - { - "url": "electrum3.cipig.net:10050", - "contact": [ - { - "email": "cipi@komodoplatform.com" - }, - { - "discord": "cipi#4502" - } - ] - }, - { - "url": "electrum1.cipig.net:20050", - "protocol": "SSL", - "contact": [ - { - "email": "cipi@komodoplatform.com" - }, - { - "discord": "cipi#4502" - } - ], - "ws_url": "electrum1.cipig.net:30050" - }, - { - "url": "electrum2.cipig.net:20050", - "protocol": "SSL", - "contact": [ - { - "email": "cipi@komodoplatform.com" - }, - { - "discord": "cipi#4502" - } - ], - "ws_url": "electrum2.cipig.net:30050" - }, - { - "url": "electrum3.cipig.net:20050", - "protocol": "SSL", - "contact": [ - { - "email": "cipi@komodoplatform.com" - }, - { - "discord": "cipi#4502" - } - ], - "ws_url": "electrum3.cipig.net:30050" - } - ], - "explorer_block_url": "block/" - }, - "QTUM-segwit": { - "coin": "QTUM-segwit", - "type": "QTUM", - "name": "Qtum", - "coinpaprika_id": "qtum-qtum", - "coingecko_id": "qtum", - "livecoinwatch_id": "QTUM", - "explorer_url": "https://explorer.qtum.org/", - "explorer_tx_url": "", - "explorer_address_url": "", - "supported": [], - "active": false, - "is_testnet": false, - "currently_enabled": false, - "wallet_only": false, - "sign_message_prefix": "Qtum Signed Message:\n", - "fname": "Qtum", - "rpcport": 3889, - "pubtype": 58, - "p2shtype": 50, - "wiftype": 128, - "segwit": true, - "bech32_hrp": "qc", - "address_format": { - "format": "segwit" - }, - "orderbook_ticker": "QTUM", - "txfee": 0, - "dust": 72800, - "mm2": 1, - "force_min_relay_fee": true, - "required_confirmations": 3, - "mature_confirmations": 2000, - "avg_blocktime": 32, - "protocol": { - "type": "QTUM" - }, - "derivation_path": "m/44'/2301'", - "trezor_coin": "Qtum", - "links": { - "github": "https://github.com/qtumproject/qtum", - "homepage": "https://qtum.org" - }, - "electrum": [ - { - "url": "electrum1.cipig.net:10050", - "contact": [ - { - "email": "cipi@komodoplatform.com" - }, - { - "discord": "cipi#4502" - } - ] - }, - { - "url": "electrum2.cipig.net:10050", - "contact": [ - { - "email": "cipi@komodoplatform.com" - }, - { - "discord": "cipi#4502" - } - ] - }, - { - "url": "electrum3.cipig.net:10050", - "contact": [ - { - "email": "cipi@komodoplatform.com" - }, - { - "discord": "cipi#4502" - } - ] - }, - { - "url": "electrum1.cipig.net:20050", - "protocol": "SSL", - "contact": [ - { - "email": "cipi@komodoplatform.com" - }, - { - "discord": "cipi#4502" - } - ], - "ws_url": "electrum1.cipig.net:30050" - }, - { - "url": "electrum2.cipig.net:20050", - "protocol": "SSL", - "contact": [ - { - "email": "cipi@komodoplatform.com" - }, - { - "discord": "cipi#4502" - } - ], - "ws_url": "electrum2.cipig.net:30050" - }, - { - "url": "electrum3.cipig.net:20050", - "protocol": "SSL", - "contact": [ - { - "email": "cipi@komodoplatform.com" - }, - { - "discord": "cipi#4502" - } - ], - "ws_url": "electrum3.cipig.net:30050" - } - ], - "explorer_block_url": "block/" - }, - "QTUM-ERC20": { - "coin": "QTUM-ERC20", - "type": "ERC-20", - "name": "Qtum", - "coinpaprika_id": "qtum-qtum", - "coingecko_id": "qtum", - "livecoinwatch_id": "QTUM", - "explorer_url": "https://etherscan.io/", - "explorer_tx_url": "tx/", - "explorer_address_url": "address/", - "supported": [], - "active": false, - "is_testnet": false, - "currently_enabled": false, - "wallet_only": false, - "fname": "Qtum", - "rpcport": 80, - "mm2": 1, - "chain_id": 1, - "avg_blocktime": 15, - "required_confirmations": 3, - "protocol": { - "type": "ERC20", - "protocol_data": { - "platform": "ETH", - "contract_address": "0x3103dF8F05c4D8aF16fD22AE63E406b97FeC6938" - } - }, - "derivation_path": "m/44'/60'", - "trezor_coin": "Qtum", - "links": { - "github": "https://github.com/qtumproject", - "homepage": "https://qtum.org/" - }, - "contract_address": "0x3103dF8F05c4D8aF16fD22AE63E406b97FeC6938", - "parent_coin": "ETH", - "swap_contract_address": "0x24ABE4c71FC658C91313b6552cd40cD808b3Ea80", - "fallback_swap_contract": "0x8500AFc0bc5214728082163326C2FF0C73f4a871", - "nodes": [ - { - "url": "https://node.komodo.earth:8080/ethereum", - "gui_auth": true - }, - { - "url": "https://eth1.cipig.net:18555", - "contact": { - "email": "cipi@komodoplatform.com" - } - }, - { - "url": "https://eth2.cipig.net:18555", - "contact": { - "email": "cipi@komodoplatform.com" - } - }, - { - "url": "https://eth3.cipig.net:18555", - "contact": { - "email": "cipi@komodoplatform.com" - } - } - ], - "explorer_block_url": "block/" - }, - "tQTUM": { - "coin": "tQTUM", - "type": "QRC-20", - "name": "QTUM Testnet", - "coinpaprika_id": "", - "coingecko_id": "", - "livecoinwatch_id": "", - "explorer_url": "https://testnet.qtum.info/", - "explorer_tx_url": "", - "explorer_address_url": "", - "supported": [], - "active": false, - "is_testnet": true, - "currently_enabled": false, - "wallet_only": false, - "fname": "QTUM Testnet", - "rpcport": 13889, - "pubtype": 120, - "p2shtype": 110, - "wiftype": 239, - "segwit": true, - "bech32_hrp": "tq", - "txfee": 400000, - "mm2": 1, - "required_confirmations": 1, - "mature_confirmations": 2000, - "avg_blocktime": 32, - "protocol": { - "type": "QTUM" - }, - "swap_contract_address": "0xba8b71f3544b93e2f681f996da519a98ace0107a", - "fallback_swap_contract": "0xba8b71f3544b93e2f681f996da519a98ace0107a", - "electrum": [ - { - "url": "electrum1.cipig.net:10071", - "contact": [ - { - "email": "cipi@komodoplatform.com" - }, - { - "discord": "cipi#4502" - } - ] - }, - { - "url": "electrum2.cipig.net:10071", - "contact": [ - { - "email": "cipi@komodoplatform.com" - }, - { - "discord": "cipi#4502" - } - ] - }, - { - "url": "electrum3.cipig.net:10071", - "contact": [ - { - "email": "cipi@komodoplatform.com" - }, - { - "discord": "cipi#4502" - } - ] - }, - { - "url": "electrum1.cipig.net:20071", - "protocol": "SSL", - "contact": [ - { - "email": "cipi@komodoplatform.com" - }, - { - "discord": "cipi#4502" - } - ], - "ws_url": "electrum1.cipig.net:30071" - }, - { - "url": "electrum2.cipig.net:20071", - "protocol": "SSL", - "contact": [ - { - "email": "cipi@komodoplatform.com" - }, - { - "discord": "cipi#4502" - } - ], - "ws_url": "electrum2.cipig.net:30071" - }, - { - "url": "electrum3.cipig.net:20071", - "protocol": "SSL", - "contact": [ - { - "email": "cipi@komodoplatform.com" - }, - { - "discord": "cipi#4502" - } - ], - "ws_url": "electrum3.cipig.net:30071" - } - ], - "explorer_block_url": "block/" - }, - "tQTUM-segwit": { - "coin": "tQTUM-segwit", - "type": "QTUM", + "QTUM": { + "coin": "QTUM", + "type": "QRC-20", + "name": "Qtum", + "coinpaprika_id": "qtum-qtum", + "coingecko_id": "qtum", + "livecoinwatch_id": "QTUM", + "explorer_url": "https://explorer.qtum.org/", + "explorer_tx_url": "", + "explorer_address_url": "", + "supported": [], + "active": false, + "is_testnet": false, + "currently_enabled": false, + "wallet_only": false, + "sign_message_prefix": "Qtum Signed Message:\n", + "fname": "Qtum", + "rpcport": 3889, + "pubtype": 58, + "p2shtype": 50, + "wiftype": 128, + "segwit": true, + "bech32_hrp": "qc", + "txfee": 0, + "dust": 72800, + "mm2": 1, + "force_min_relay_fee": true, + "required_confirmations": 3, + "mature_confirmations": 2000, + "avg_blocktime": 32, + "protocol": { + "type": "QTUM" + }, + "derivation_path": "m/44'/2301'", + "trezor_coin": "Qtum", + "links": { + "github": "https://github.com/qtumproject/qtum", + "homepage": "https://qtum.org" + }, + "swap_contract_address": "0x2f754733acd6d753731c00fee32cb484551cc15d", + "fallback_swap_contract": "0x2f754733acd6d753731c00fee32cb484551cc15d", + "electrum": [ + { + "url": "electrum1.cipig.net:10050", + "contact": [ + { + "email": "cipi@komodoplatform.com" + }, + { + "discord": "cipi#4502" + } + ] + }, + { + "url": "electrum2.cipig.net:10050", + "contact": [ + { + "email": "cipi@komodoplatform.com" + }, + { + "discord": "cipi#4502" + } + ] + }, + { + "url": "electrum3.cipig.net:10050", + "contact": [ + { + "email": "cipi@komodoplatform.com" + }, + { + "discord": "cipi#4502" + } + ] + }, + { + "url": "electrum1.cipig.net:20050", + "protocol": "SSL", + "contact": [ + { + "email": "cipi@komodoplatform.com" + }, + { + "discord": "cipi#4502" + } + ], + "ws_url": "electrum1.cipig.net:30050" + }, + { + "url": "electrum2.cipig.net:20050", + "protocol": "SSL", + "contact": [ + { + "email": "cipi@komodoplatform.com" + }, + { + "discord": "cipi#4502" + } + ], + "ws_url": "electrum2.cipig.net:30050" + }, + { + "url": "electrum3.cipig.net:20050", + "protocol": "SSL", + "contact": [ + { + "email": "cipi@komodoplatform.com" + }, + { + "discord": "cipi#4502" + } + ], + "ws_url": "electrum3.cipig.net:30050" + } + ], + "explorer_block_url": "block/", + "binance_id": "QTUM" + }, + "QTUM-ERC20": { + "coin": "QTUM-ERC20", + "type": "ERC-20", + "name": "Qtum", + "coinpaprika_id": "qtum-qtum", + "coingecko_id": "qtum", + "livecoinwatch_id": "QTUM", + "explorer_url": "https://etherscan.io/", + "explorer_tx_url": "tx/", + "explorer_address_url": "address/", + "supported": [], + "active": false, + "is_testnet": false, + "currently_enabled": false, + "wallet_only": false, + "fname": "Qtum", + "rpcport": 80, + "mm2": 1, + "chain_id": 1, + "avg_blocktime": 15, + "required_confirmations": 3, + "protocol": { + "type": "ERC20", + "protocol_data": { + "platform": "ETH", + "contract_address": "0x3103dF8F05c4D8aF16fD22AE63E406b97FeC6938" + } + }, + "derivation_path": "m/44'/60'", + "trezor_coin": "Qtum", + "links": { + "github": "https://github.com/qtumproject", + "homepage": "https://qtum.org/" + }, + "contract_address": "0x3103dF8F05c4D8aF16fD22AE63E406b97FeC6938", + "parent_coin": "ETH", + "swap_contract_address": "0x24ABE4c71FC658C91313b6552cd40cD808b3Ea80", + "fallback_swap_contract": "0x8500AFc0bc5214728082163326C2FF0C73f4a871", + "nodes": [ + { + "url": "https://node.komodo.earth:8080/ethereum", + "gui_auth": true + }, + { + "url": "https://eth1.cipig.net:18555", + "contact": { + "email": "cipi@komodoplatform.com" + } + }, + { + "url": "https://eth2.cipig.net:18555", + "contact": { + "email": "cipi@komodoplatform.com" + } + }, + { + "url": "https://eth3.cipig.net:18555", + "contact": { + "email": "cipi@komodoplatform.com" + } + } + ], + "explorer_block_url": "block/", + "binance_id": "QTUM" + }, + "tQTUM": { + "coin": "tQTUM", + "type": "QRC-20", "name": "QTUM Testnet", "coinpaprika_id": "", "coingecko_id": "", @@ -27375,10 +27267,6 @@ "wiftype": 239, "segwit": true, "bech32_hrp": "tq", - "address_format": { - "format": "segwit" - }, - "orderbook_ticker": "tQTUM", "txfee": 400000, "mm2": 1, "required_confirmations": 1, @@ -27387,6 +27275,8 @@ "protocol": { "type": "QTUM" }, + "swap_contract_address": "0xba8b71f3544b93e2f681f996da519a98ace0107a", + "fallback_swap_contract": "0xba8b71f3544b93e2f681f996da519a98ace0107a", "electrum": [ { "url": "electrum1.cipig.net:10071", @@ -27502,6 +27392,11 @@ "homepage": "https://reddcoin.com" }, "electrum": [ + { + "url": "electrum01.reddcoin.com:50002", + "protocol": "SSL", + "ws_url": "electrum01.reddcoin.com:50004" + }, { "url": "electrum02.reddcoin.com:50002", "protocol": "SSL", @@ -27752,7 +27647,7 @@ "type": "Matic", "name": "Request", "coinpaprika_id": "", - "coingecko_id": "", + "coingecko_id": "request-network", "livecoinwatch_id": "REQ", "explorer_url": "https://polygonscan.com/", "explorer_tx_url": "tx/", @@ -28564,7 +28459,8 @@ "ws_url": "electrum3.cipig.net:30051" } ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "RVN" }, "SAND-ERC20": { "coin": "SAND-ERC20", @@ -29519,12 +29415,67 @@ ], "explorer_block_url": "block/" }, + "SUM": { + "coin": "SUM", + "type": "UTXO", + "name": "Sumcoin", + "coinpaprika_id": "sum-sumcoin", + "coingecko_id": "sumcoin", + "livecoinwatch_id": "SUM", + "explorer_url": "https://sumcoinexplorer.com/", + "explorer_tx_url": "", + "explorer_address_url": "", + "supported": [], + "active": false, + "is_testnet": false, + "currently_enabled": false, + "wallet_only": false, + "sign_message_prefix": "Sumcoin Signed Message:\n", + "fname": "Sumcoin", + "isPoS": 1, + "rpcport": 3332, + "pubtype": 63, + "p2shtype": 125, + "wiftype": 187, + "decimals": 6, + "txfee": 0, + "dust": 10000, + "segwit": false, + "bech32_hrp": "sum", + "mm2": 1, + "required_confirmations": 2, + "avg_blocktime": 60, + "protocol": { + "type": "UTXO" + }, + "derivation_path": "m/44'/552'", + "trezor_coin": "Sumcoin", + "links": { + "github": "https://github.com/sumcoinlabs/sumcoin", + "homepage": "https://www.sumcoin.org" + }, + "electrum": [ + { + "url": "sumpos.electrum-sum.org:50002", + "protocol": "SSL", + "disable_cert_verification": false, + "ws_url": "sumpos.electrum-sum.org:50004" + }, + { + "url": "sumpos2.electrum-sum.org:50002", + "protocol": "SSL", + "disable_cert_verification": false, + "ws_url": "sumpos2.electrum-sum.org:50004" + } + ], + "explorer_block_url": "block/" + }, "SUPERNET": { "coin": "SUPERNET", "type": "Smart Chain", "name": "Supernet", "coinpaprika_id": "unity-supernet", - "coingecko_id": "", + "coingecko_id": "supernet", "livecoinwatch_id": "", "explorer_url": "https://supernet.kmdexplorer.io/", "explorer_tx_url": "", @@ -30195,7 +30146,7 @@ "active": false, "is_testnet": false, "currently_enabled": false, - "wallet_only": false, + "wallet_only": true, "sign_message_prefix": "Syscoin Signed Message:\n", "fname": "Syscoin", "rpcport": 8370, @@ -30292,7 +30243,8 @@ "ws_url": "electrum3.cipig.net:30064" } ], - "explorer_block_url": "block.dws?" + "explorer_block_url": "block.dws?", + "binance_id": "SYS" }, "SYS-segwit": { "coin": "SYS-segwit", @@ -30409,14 +30361,15 @@ "ws_url": "electrum3.cipig.net:30064" } ], - "explorer_block_url": "block.dws?" + "explorer_block_url": "block.dws?", + "binance_id": "SYS" }, "TAMA-ERC20": { "coin": "TAMA-ERC20", "type": "ERC-20", "name": "Tamadoge", "coinpaprika_id": "", - "coingecko_id": "", + "coingecko_id": "tamadoge", "livecoinwatch_id": "__TAMA", "explorer_url": "https://etherscan.io/", "explorer_tx_url": "tx/", @@ -30485,7 +30438,7 @@ "active": false, "is_testnet": true, "currently_enabled": false, - "wallet_only": false, + "wallet_only": true, "fname": "BTC Testnet", "rpcport": 18332, "pubtype": 111, @@ -30931,14 +30884,6 @@ "derivation_path": "m/44'/141'", "trezor_coin": "Komodo", "electrum": [ - { - "url": "1.eu.thc.electrum.dexstats.info:10020", - "contact": [ - { - "discord": "CHMEX#0686" - } - ] - }, { "url": "2.eu.thc.electrum.dexstats.info:10020", "contact": [ @@ -31044,17 +30989,6 @@ } ] }, - { - "url": "2.eu.tokel.electrum.dexstats.info:10077", - "contact": [ - { - "email": "chmex@dexstats.info" - }, - { - "discord": "chmex#0686" - } - ] - }, { "url": "1.eu.tokel.electrum.dexstats.info:11077", "protocol": "SSL", @@ -31067,19 +31001,6 @@ } ], "ws_url": "1.eu.tokel.electrum.dexstats.info:9077" - }, - { - "url": "2.eu.tokel.electrum.dexstats.info:11077", - "protocol": "SSL", - "contact": [ - { - "email": "chmex@dexstats.info" - }, - { - "discord": "chmex#0686" - } - ], - "ws_url": "2.eu.tokel.electrum.dexstats.info:9077" } ], "explorer_block_url": "block/" @@ -31724,7 +31645,7 @@ "type": "AVX-20", "name": "TrueUSD", "coinpaprika_id": "", - "coingecko_id": "", + "coingecko_id": "true-usd", "livecoinwatch_id": "TUSD", "explorer_url": "https://snowtrace.io/", "explorer_tx_url": "tx/", @@ -31772,7 +31693,7 @@ "type": "FTM-20", "name": "TrueUSD", "coinpaprika_id": "", - "coingecko_id": "", + "coingecko_id": "true-usd", "livecoinwatch_id": "TUSD", "explorer_url": "https://ftmscan.com/", "explorer_tx_url": "", @@ -32155,6 +32076,12 @@ "protocol": "SSL", "disable_cert_verification": false, "ws_url": "failover.trc-uis.ewmcx.biz:50003" + }, + { + "url": "uis-uno.ewmcx.net:50002", + "protocol": "SSL", + "disable_cert_verification": false, + "ws_url": "uis-uno.ewmcx.net:50003" } ], "explorer_block_url": "block/" @@ -33082,6 +33009,57 @@ "decimals": 6, "avg_blocktime": 1.8, "required_confirmations": 20, + "protocol": { + "type": "ERC20", + "protocol_data": { + "platform": "MATIC", + "contract_address": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359" + } + }, + "derivation_path": "m/44'/966'", + "contract_address": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", + "parent_coin": "MATIC", + "swap_contract_address": "0x9130b257D37A52E52F21054c4DA3450c72f595CE", + "fallback_swap_contract": "0x9130b257D37A52E52F21054c4DA3450c72f595CE", + "nodes": [ + { + "url": "https://node.komodo.earth:8080/polygon", + "gui_auth": true + }, + { + "url": "https://polygon-rpc.com" + }, + { + "url": "https://polygon.blockpi.network/v1/rpc/public" + }, + { + "url": "https://polygon.llamarpc.com" + } + ], + "explorer_block_url": "block/" + }, + "USDC-PLG20_OLD": { + "coin": "USDC-PLG20_OLD", + "type": "Matic", + "name": "USD Coin (OLD)", + "coinpaprika_id": "", + "coingecko_id": "", + "livecoinwatch_id": "USDC", + "explorer_url": "https://polygonscan.com/", + "explorer_tx_url": "tx/", + "explorer_address_url": "address/", + "supported": [], + "active": false, + "is_testnet": false, + "currently_enabled": false, + "wallet_only": false, + "fname": "USD Coin (OLD)", + "rpcport": 80, + "mm2": 1, + "chain_id": 137, + "decimals": 6, + "avg_blocktime": 1.8, + "required_confirmations": 20, "protocol": { "type": "ERC20", "protocol_data": { @@ -33116,7 +33094,7 @@ "type": "BEP-20", "name": "USDD", "coinpaprika_id": "", - "coingecko_id": "", + "coingecko_id": "usdd", "livecoinwatch_id": "USDD", "explorer_url": "https://bscscan.com/", "explorer_tx_url": "tx/", @@ -34123,56 +34101,8 @@ "url": "88.99.26.209:5102" } ], - "explorer_block_url": "block/" - }, - "VIA-segwit": { - "coin": "VIA-segwit", - "type": "UTXO", - "name": "Viacoin", - "coinpaprika_id": "via-viacoin", - "coingecko_id": "viacoin", - "livecoinwatch_id": "VIA", - "explorer_url": "https://explorer.viacoin.org/", - "explorer_tx_url": "", - "explorer_address_url": "", - "supported": [], - "active": false, - "is_testnet": false, - "currently_enabled": false, - "wallet_only": false, - "sign_message_prefix": "Viacoin Signed Message:\n", - "fname": "Viacoin", - "rpcport": 5222, - "pubtype": 71, - "p2shtype": 33, - "wiftype": 199, - "txfee": 100000, - "dust": 54600, - "required_confirmations": 7, - "mature_confirmations": 3600, - "avg_blocktime": 24, - "segwit": true, - "bech32_hrp": "via", - "address_format": { - "format": "segwit" - }, - "orderbook_ticker": "VIA", - "mm2": 1, - "protocol": { - "type": "UTXO" - }, - "derivation_path": "m/44'/14'", - "trezor_coin": "Viacoin", - "links": { - "github": "https://github.com/viacoin", - "homepage": "https://viacoin.org" - }, - "electrum": [ - { - "url": "88.99.26.209:5102" - } - ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "VIA" }, "VITE-BEP20": { "coin": "VITE-BEP20", @@ -34225,53 +34155,6 @@ "token_address_url": "tokentxns?a=", "explorer_block_url": "block/" }, - "VRM": { - "coin": "VRM", - "type": "UTXO", - "name": "Verium Reserve", - "coinpaprika_id": "vrm-veriumreserve", - "coingecko_id": "", - "livecoinwatch_id": "VRM", - "explorer_url": "https://explorer-vrm.vericonomy.com/", - "explorer_tx_url": "", - "explorer_address_url": "", - "supported": [], - "active": false, - "is_testnet": false, - "currently_enabled": false, - "wallet_only": false, - "fname": "Verium Reserve", - "rpcport": 33987, - "pubtype": 70, - "p2shtype": 132, - "wiftype": 198, - "txfee": 100000, - "force_min_relay_fee": true, - "isPoS": 1, - "mm2": 1, - "required_confirmations": 2, - "avg_blocktime": 240, - "protocol": { - "type": "UTXO" - }, - "electrum": [ - { - "url": "electrum01-vrm.vericonomy.com:50001", - "contact": [ - { - "email": "dev@vericoin.info" - }, - { - "twitter": "vericonomy" - }, - { - "github": "VeriConomy" - } - ] - } - ], - "explorer_block_url": "block/" - }, "VRSC": { "coin": "VRSC", "type": "Smart Chain", @@ -34442,6 +34325,20 @@ } ] }, + { + "url": "electrum3.grms.pw:17485", + "contact": [ + { + "email": "contact@grms.pw" + }, + { + "discord": "miner113#7864" + }, + { + "github": "Miner113" + } + ] + }, { "url": "electrum1.grms.pw:50002", "protocol": "SSL", @@ -34457,6 +34354,71 @@ } ], "ws_url": "electrum1.grms.pw:50004" + }, + { + "url": "electrum3.grms.pw:50002", + "protocol": "SSL", + "contact": [ + { + "email": "contact@grms.pw" + }, + { + "discord": "miner113#7864" + }, + { + "github": "Miner113" + } + ], + "ws_url": "electrum3.grms.pw:50004" + } + ], + "explorer_block_url": "block/" + }, + "VPRM": { + "coin": "VPRM", + "type": "Smart Chain", + "name": "Vaporum", + "coinpaprika_id": "vprm-vaporum-coin", + "coingecko_id": "vaporum-coin", + "livecoinwatch_id": "VPRM", + "explorer_url": "http://explorer.vaporumcoin.us/", + "explorer_tx_url": "", + "explorer_address_url": "", + "supported": [], + "active": false, + "is_testnet": false, + "currently_enabled": false, + "wallet_only": false, + "sign_message_prefix": "Komodo Signed Message:\n", + "asset": "VPRM", + "fname": "Vaporum", + "rpcport": 51609, + "txversion": 4, + "overwintered": 1, + "mm2": 1, + "required_confirmations": 5, + "avg_blocktime": 30, + "protocol": { + "type": "UTXO" + }, + "derivation_path": "m/44'/141'", + "trezor_coin": "Komodo", + "electrum": [ + { + "url": "electrumx1.vaporumcoin.us:50001", + "contact": [ + { + "github": "VaporumCoin" + } + ] + }, + { + "url": "electrumx2.vaporumcoin.us:50001", + "contact": [ + { + "github": "VaporumCoin" + } + ] } ], "explorer_block_url": "block/" @@ -34475,7 +34437,7 @@ "active": false, "is_testnet": false, "currently_enabled": false, - "wallet_only": false, + "wallet_only": true, "sign_message_prefix": "Vertcoin Signed Message:\n", "fname": "Vertcoin", "rpcport": 5888, @@ -34502,9 +34464,6 @@ { "url": "88.99.26.209:5028" }, - { - "url": "electrumx-brn.webhop.me:55001" - }, { "url": "electrumx.javerity.com:5885", "ws_url": "electrumx.javerity.com:5887", @@ -34562,9 +34521,6 @@ { "url": "88.99.26.209:5028" }, - { - "url": "electrumx-brn.webhop.me:55001" - }, { "url": "electrumx.javerity.com:5885", "ws_url": "electrumx.javerity.com:5887", @@ -34699,7 +34655,7 @@ "type": "Matic", "name": "Wrapped Bitcoin", "coinpaprika_id": "", - "coingecko_id": "", + "coingecko_id": "wrapped-bitcoin", "livecoinwatch_id": "WBTC", "explorer_url": "https://polygonscan.com/", "explorer_tx_url": "tx/", @@ -35129,7 +35085,7 @@ "type": "BEP-20", "name": "Onyxcoin", "coinpaprika_id": "", - "coingecko_id": "", + "coingecko_id": "chain-2", "livecoinwatch_id": "XCN", "explorer_url": "https://bscscan.com/", "explorer_tx_url": "tx/", @@ -35361,7 +35317,7 @@ "type": "Matic", "name": "StraitsX Indonesian Rupiah", "coinpaprika_id": "", - "coingecko_id": "", + "coingecko_id": "straitsx-indonesia-rupiah", "livecoinwatch_id": "XIDR", "explorer_url": "https://polygonscan.com/", "explorer_tx_url": "tx/", @@ -35472,7 +35428,7 @@ "active": false, "is_testnet": false, "currently_enabled": false, - "wallet_only": false, + "wallet_only": true, "fname": "Myriad", "rpcport": 8332, "pubtype": 50, @@ -35707,12 +35663,25 @@ { "url": "fulcrum.ergon.network:52138", "protocol": "SSL", - "disable_cert_verification": true + "ws_url": "fulcrum.ergon.network:52140", + "contact": [ + { + "email": "licho@ergon.moe" + }, + { + "telegram": "licho92karol" + } + ] }, { "url": "la.ask.systems:52138", "protocol": "SSL", - "disable_cert_verification": true + "ws_url": "la.ask.systems:52140", + "contact": [ + { + "telegram": "@fsmv0" + } + ] }, { "url": "xrg_ful.googol.cash:52138", @@ -35778,7 +35747,7 @@ "type": "ERC-20", "name": "XRP", "coinpaprika_id": "", - "coingecko_id": "", + "coingecko_id": "ripple", "livecoinwatch_id": "XRP", "explorer_url": "https://etherscan.io/", "explorer_tx_url": "tx/", @@ -36035,6 +36004,10 @@ { "url": "electrumx1.vanillacash.info:50011", "ws_url": "electrumx1.vanillacash.info:50013" + }, + { + "url": "electrumx2.vanillacash.info:50011", + "ws_url": "electrumx2.vanillacash.info:50013" } ], "explorer_block_url": "block.dws?" @@ -36243,9 +36216,19 @@ "electrum": [ { "url": "88.99.26.209:5036" + }, + { + "url": "electrumx-verge.cloud:50001", + "protocol": "TCP" + }, + { + "url": "electrumx-verge.cloud:50002", + "protocol": "SSL", + "ws_url": "electrumx-verge.cloud:50004" } ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "XVG" }, "XVS-BEP20": { "coin": "XVS-BEP20", @@ -36835,7 +36818,8 @@ "ws_url": "electrum3.cipig.net:30058" } ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "ZEC" }, "ZER": { "coin": "ZER", @@ -37035,9 +37019,9 @@ "protocol": "TCP" }, { - "url": "zeta-seed-c.zetacoin.tech:50012", + "url": "zeta-seed-d.zetacoin.network:50012", "protocol": "SSL", - "disable_cert_verification": false + "ws_url": "zeta-seed-d.zetacoin.network:50013" } ], "explorer_block_url": "block.dws?" @@ -37401,7 +37385,7 @@ "txfee": 10000, "mm2": 1, "required_confirmations": 2, - "avg_blocktime": 60, + "avg_blocktime": 120, "protocol": { "type": "UTXO" }, @@ -37414,7 +37398,8 @@ "ws_url": "electrumx.runonflux.io:50004" } ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "FLUX" }, "FLUX-ERC20": { "coin": "FLUX-ERC20", @@ -37474,7 +37459,8 @@ } } ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "FLUX" }, "FLUX-BEP20": { "coin": "FLUX-BEP20", @@ -37525,7 +37511,8 @@ } ], "token_address_url": "tokentxns?a=", - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "FLUX" }, "HPY-QRC20": { "coin": "HPY-QRC20", @@ -39969,7 +39956,7 @@ "active": false, "is_testnet": false, "currently_enabled": false, - "wallet_only": false, + "wallet_only": true, "fname": "Whive", "rpcport": 1867, "pubtype": 73, @@ -40214,7 +40201,8 @@ ] } ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "XEC" }, "SIBM-BEP20": { "coin": "SIBM-BEP20", @@ -40389,7 +40377,8 @@ "currently_enabled": false, "wallet_only": false, "light_wallet_d_servers": [ - "https://zombie.dragonhound.info:443" + "https://zombie.dragonhound.info:443", + "https://zombie.dragonhound.info:1443" ], "asset": "ZOMBIE", "fname": "Zombie", @@ -40752,7 +40741,8 @@ "url": "https://cosmos.komodo.earth/" } ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "ATOM" }, "IRIS": { "coin": "IRIS", @@ -40791,7 +40781,8 @@ "url": "https://rpc.irishub-1.irisnet.org" } ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "IRIS" }, "OSMO": { "coin": "OSMO", @@ -40829,7 +40820,8 @@ "url": "https://osmosis-mainnet-rpc.allthatnode.com:26657/" } ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "OSMO" }, "ATOM-IBC_IRIS": { "coin": "ATOM-IBC_IRIS", @@ -40868,7 +40860,8 @@ "url": "https://rpc.irishub-1.irisnet.org" } ], - "explorer_block_url": "block/" + "explorer_block_url": "block/", + "binance_id": "ATOM" }, "MAZA": { "coin": "MAZA", @@ -41146,14 +41139,14 @@ ], "explorer_block_url": "block/" }, - "BKC": { - "coin": "BKC", + "KIIRO": { + "coin": "KIIRO", "type": "UTXO", - "name": "Bunkercoin", - "coinpaprika_id": "bkc-bunkercoin", - "coingecko_id": "", - "livecoinwatch_id": "", - "explorer_url": "https://bkcexplorer.bunker.mt/", + "name": "Kiiro", + "coinpaprika_id": "kiiro-kiirocoin", + "coingecko_id": "kiirocoin", + "livecoinwatch_id": "KIIRO", + "explorer_url": "https://explorer.kiirocoin.org/", "explorer_tx_url": "", "explorer_address_url": "", "supported": [], @@ -41161,37 +41154,96 @@ "is_testnet": false, "currently_enabled": false, "wallet_only": false, - "sign_message_prefix": "Bunkercoin Signed Message:\n", - "fname": "Bunkercoin", - "rpcport": 22555, - "pubtype": 25, - "p2shtype": 22, - "wiftype": 158, - "txfee": 1000000, - "force_min_relay_fee": true, - "dust": 1000000, + "sign_message_prefix": "Zcoin Signed Message:\n", + "fname": "Kiiro", + "rpcport": 8999, + "pubtype": 45, + "p2shtype": 7, + "wiftype": 210, + "txfee": 1000, "mm2": 1, - "required_confirmations": 10, - "avg_blocktime": 60, + "required_confirmations": 3, + "avg_blocktime": 150, "protocol": { "type": "UTXO" }, - "derivation_path": "m/44'/3'", "links": { - "github": "https://github.com/bunkercoin/bunkercoin", - "homepage": "https://bunkercoin.org" + "github": "https://github.com/kiirocoin/kiiro", + "homepage": "https://kiirocoin.org" }, "electrum": [ { - "url": "bunkerelectrum.bunker.mt:50001", - "protocol": "TCP", + "url": "electrum1.kiirocoin.org:50002", + "protocol": "SSL", "contact": [ { - "discord": "bunkermatty#5308" + "github": "https://github.com/kiirocoin/electrum-kiiro/issues" } - ] + ], + "ws_url": "electrum1.kiirocoin.org:50004" + }, + { + "url": "electrum3.kiirocoin.org:50002", + "protocol": "SSL", + "contact": [ + { + "github": "https://github.com/kiirocoin/electrum-kiiro/issues" + } + ], + "ws_url": "electrum3.kiirocoin.org:50004" + } + ], + "explorer_block_url": "block/" + }, + "KIIRO-BEP20": { + "coin": "KIIRO-BEP20", + "type": "BEP-20", + "name": "Kiiro", + "coinpaprika_id": "kiiro-kiirocoin", + "coingecko_id": "kiirocoin", + "livecoinwatch_id": "KIIRO", + "explorer_url": "https://bscscan.com/", + "explorer_tx_url": "tx/", + "explorer_address_url": "address/", + "supported": [], + "active": false, + "is_testnet": false, + "currently_enabled": false, + "wallet_only": false, + "fname": "Kiiro", + "rpcport": 80, + "mm2": 1, + "chain_id": 56, + "avg_blocktime": 3, + "required_confirmations": 3, + "protocol": { + "type": "ERC20", + "protocol_data": { + "platform": "BNB", + "contract_address": "0x347862372f7C8f83D69025234367Ac11c5241Db3" + } + }, + "derivation_path": "m/44'/714'", + "contract_address": "0x347862372f7C8f83D69025234367Ac11c5241Db3", + "parent_coin": "BNB", + "swap_contract_address": "0xeDc5b89Fe1f0382F9E4316069971D90a0951DB31", + "fallback_swap_contract": "0xeDc5b89Fe1f0382F9E4316069971D90a0951DB31", + "nodes": [ + { + "url": "https://node.komodo.earth:8080/binance", + "gui_auth": true + }, + { + "url": "https://bsc1.cipig.net:18655" + }, + { + "url": "https://bsc2.cipig.net:18655" + }, + { + "url": "https://bsc3.cipig.net:18655" } ], + "token_address_url": "tokentxns?a=", "explorer_block_url": "block/" } } \ No newline at end of file diff --git a/coins_ci.json b/coins_ci.json index 8868624db..e91aea8ad 100644 --- a/coins_ci.json +++ b/coins_ci.json @@ -1,3 +1,3 @@ { - "coins_repo_commit": "8cb5983ab858dde915e8de3175c15cd0f5572356" + "coins_repo_commit": "26641cc1fef362063aa4e394dba8b82e7ebaf2cf" } \ No newline at end of file diff --git a/ios/Podfile.lock b/ios/Podfile.lock index f660c0d86..8361e1424 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -122,7 +122,7 @@ PODS: - SDWebImage (5.18.3): - SDWebImage/Core (= 5.18.3) - SDWebImage/Core (5.18.3) - - share (0.0.1): + - share_plus (0.0.1): - Flutter - shared_preferences_ios (0.0.1): - Flutter @@ -147,7 +147,7 @@ DEPENDENCIES: - mobile_scanner (from `.symlinks/plugins/mobile_scanner/ios`) - package_info_plus (from `.symlinks/plugins/package_info_plus/ios`) - path_provider_ios (from `.symlinks/plugins/path_provider_ios/ios`) - - share (from `.symlinks/plugins/share/ios`) + - share_plus (from `.symlinks/plugins/share_plus/ios`) - shared_preferences_ios (from `.symlinks/plugins/shared_preferences_ios/ios`) - sqflite (from `.symlinks/plugins/sqflite/ios`) - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) @@ -201,8 +201,8 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/package_info_plus/ios" path_provider_ios: :path: ".symlinks/plugins/path_provider_ios/ios" - share: - :path: ".symlinks/plugins/share/ios" + share_plus: + :path: ".symlinks/plugins/share_plus/ios" shared_preferences_ios: :path: ".symlinks/plugins/shared_preferences_ios/ios" sqflite: @@ -242,7 +242,7 @@ SPEC CHECKSUMS: Protobuf: 351e9022fe13a6e2af00e9aefc22077cb88520f8 ReachabilitySwift: 985039c6f7b23a1da463388634119492ff86c825 SDWebImage: 96e0c18ef14010b7485210e92fac888587ebb958 - share: 0b2c3e82132f5888bccca3351c504d0003b3b410 + share_plus: 056a1e8ac890df3e33cb503afffaf1e9b4fbae68 shared_preferences_ios: 548a61f8053b9b8a49ac19c1ffbc8b92c50d68ad sqflite: 6d358c025f5b867b29ed92fc697fd34924e11904 SwiftyGif: 93a1cc87bf3a51916001cf8f3d63835fb64c819f diff --git a/lib/app_config/coins_updater.dart b/lib/app_config/coins_updater.dart index ecf8fbb3a..7b2f4bccc 100644 --- a/lib/app_config/coins_updater.dart +++ b/lib/app_config/coins_updater.dart @@ -1,10 +1,11 @@ import 'dart:async'; +import 'dart:convert'; import 'dart:io'; -import 'dart:isolate'; +import 'package:flutter/foundation.dart'; import 'package:flutter/services.dart'; import 'package:http/http.dart' as http; import 'package:komodo_dex/utils/log.dart'; -import 'package:path_provider/path_provider.dart'; +import 'package:komodo_dex/utils/utils.dart'; /// Provides methods for fetching coin data either from local assets or a remote Git repository. /// @@ -49,109 +50,152 @@ class CoinUpdater { String _cachedConfig; String _cachedCoins; - Future _fetchAsset(String path) async { - return await rootBundle.loadString(path); - } + Future _fetchAsset(String path) => + rootBundle.loadString(path, cache: false); Future _getLocalFile(String filename) async { - final directory = await getApplicationDocumentsDirectory(); - return File('${directory.path}/$filename'); + final directory = await applicationDocumentsDirectory; + return File('${directory.path}/config_updates/$filename'); } - Future _fetchOrCache( - String localPath, - String remoteUrl, - String cacheName, - String cacheProperty, - ) async { - try { - if (cacheProperty != null) { - return cacheProperty; - } + Future _fetchCoinFileOrAsset(UpdateCacheParams params) async { + File cacheFile; + String property; - File cacheFile = await _getLocalFile(cacheName); + try { + try { + cacheFile = await _getLocalFile(params.cacheFileName); - final cacheFileExists = await cacheFile.exists(); + final maybeCacheValue = await compute( + _tryReadValidJsonFile, + cacheFile.path, + ); - if (isUpdateEnabled) { - scheduleMicrotask( - () => _updateCacheInBackground(remoteUrl, cacheFile), + property = maybeCacheValue ?? property; + } catch (e) { + Log( + 'CoinUpdater', + 'Error reading coin config cache file: ${e.toString()}', ); } - if (cacheFileExists) { - cacheProperty = await cacheFile.readAsString(); + property ??= await _fetchAsset(params.localPath); - return cacheProperty; - } else { - String localData = await _fetchAsset(localPath); - cacheProperty = localData; - return localData; - } + return property; } catch (e) { - // If there's an error, first try to return the cached value, - // if that's null too, then fall back to the local asset. - if (cacheProperty != null) { - return cacheProperty; - } else { - return await _fetchAsset(localPath); + Log('CoinUpdater', 'Error fetching or caching ${params.cacheKey}: $e'); + rethrow; + } finally { + if (isUpdateEnabled) { + _startUpdateCacheInBackground(params.remoteUrl, cacheFile); } } } - void _updateCacheInBackground(String remoteUrl, File cacheFile) async { - final ReceivePort receivePort = ReceivePort(); - + void _startUpdateCacheInBackground(String remoteUrl, File cacheFile) async { try { - await Isolate.spawn( - _isolateEntry, - [remoteUrl, cacheFile.path], - onExit: receivePort.sendPort, - errorsAreFatal: false, + Log('CoinUpdater', 'Updating coins in background...'); + await compute, void>( + _updateFileFromServer, + { + 'remoteUrl': remoteUrl, + 'filePath': cacheFile.path, + }, ); - receivePort.listen((data) { - // Close the receive port when the isolate is done - receivePort.close(); - Log( - 'CoinUpdater', - 'Coin updater updated coins to latest commit on branch ' - '$coinsRepoBranch from $coinsRepoUrl. \n $remoteUrl', - ); - }); + Log( + 'CoinUpdater', + 'Coin updater updated coins to latest commit on branch $coinsRepoBranch' + ' from $coinsRepoUrl. Changes will take effect on next app launch.', + ); } catch (e) { - Log('CoinUpdater', 'Error updating coins: $e'); - } - } - - static void _isolateEntry(List data) async { - final String remoteUrl = data[0]; - final String filePath = data[1]; - - final response = await http.get(Uri.parse(remoteUrl)); - if (response.statusCode == 200) { - final file = File(filePath); - file.writeAsString(response.body); + Log('CoinUpdater', 'Error updating coins in background: $e'); } } Future getConfig() async { - _cachedConfig = await _fetchOrCache( - localAssetPathConfig, - remotePathConfig, - 'coins_config_cache.json', - _cachedConfig, + return _cachedConfig ??= await _fetchCoinFileOrAsset( + UpdateCacheParams( + localPath: localAssetPathConfig, + remoteUrl: remotePathConfig, + cacheFileName: 'coins_config_cache.json', + cacheKey: 'config', + ), ); - return _cachedConfig; } Future getCoins() async { - _cachedCoins = await _fetchOrCache( - localAssetPathCoins, - remotePathCoins, - 'coins_cache.json', - _cachedCoins, + return _cachedCoins ??= await _fetchCoinFileOrAsset( + UpdateCacheParams( + localPath: localAssetPathCoins, + remoteUrl: remotePathCoins, + cacheFileName: 'coins_cache.json', + cacheKey: 'coins', + ), ); - return _cachedCoins; + } +} + +class UpdateCacheParams { + final String localPath; + final String remoteUrl; + final String cacheFileName; + final String cacheKey; + + UpdateCacheParams({ + @required this.localPath, + @required this.remoteUrl, + @required this.cacheFileName, + @required this.cacheKey, + }); +} + +/// Isolate-safe method for returning the contents of a JSON file if it is valid +Future _tryReadValidJsonFile(String path) async { + try { + final contents = await File(path).readAsString(); + + if (!_isJsonValid(contents)) return null; + + return contents; + } catch (e) { + return null; + } +} + +/// An isolate-safe method for checking if a string is valid JSON. +bool _isJsonValid(String json) { + try { + if (json?.isEmpty ?? true) return false; + + jsonDecode(json); + return true; + } catch (e) { + return false; + } +} + +/// Isolate-safe method for fetching and updating a JSON file from a +/// remote server. +Future _updateFileFromServer(Map params) async { + final String remoteUrl = params['remoteUrl']; + final String filePath = params['filePath']; + + try { + final response = await http.get(Uri.parse(remoteUrl)); + + if (response.statusCode != 200 || !_isJsonValid(response.body)) return; + + final file = File(filePath); + + if (!file.existsSync()) { + file.createSync(recursive: true); + } + + file.writeAsStringSync(response.body, flush: true); + } catch (e) { + print('Error in isolate: $e'); + + rethrow; } } diff --git a/lib/screens/authentification/authenticate_page.dart b/lib/screens/authentification/authenticate_page.dart index 8f77e0034..b85443b00 100644 --- a/lib/screens/authentification/authenticate_page.dart +++ b/lib/screens/authentification/authenticate_page.dart @@ -1,5 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_svg/svg.dart'; +import 'package:komodo_dex/utils/log.dart'; +import 'package:komodo_dex/widgets/repeated_tap_detector.dart'; import '../../blocs/authenticate_bloc.dart'; import '../../blocs/wallet_bloc.dart'; import '../../localizations.dart'; @@ -119,8 +121,9 @@ class BuildScreenAuthMultiWallets extends StatelessWidget { ), ), Align( - alignment: Alignment.centerRight, - child: const SelectLanguageButton()), + alignment: Alignment.centerRight, + child: const SelectLanguageButton(), + ), SizedBox(height: 16), IntrinsicHeight( child: Row( @@ -251,13 +254,7 @@ class _BuildScreenAuthState extends State { Column( mainAxisAlignment: MainAxisAlignment.center, children: [ - SizedBox( - height: 240, - width: 240, - child: Image.asset(Theme.of(context).brightness == - Brightness.light - ? 'assets/branding/mark_and_text_vertical_dark.png' - : 'assets/branding/mark_and_text_vertical_light.png')), + _FullAppLogo(), ], ), Padding( @@ -295,6 +292,45 @@ class _BuildScreenAuthState extends State { } } +class _FullAppLogo extends StatelessWidget { + const _FullAppLogo({ + Key key, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return RepeatedTapDetector( + onRepeatedTap: () => _downloadLogs(context), + tapTriggerCount: 7, + child: SizedBox( + height: 240, + width: 240, + child: Image.asset(Theme.of(context).brightness == Brightness.light + ? 'assets/branding/mark_and_text_vertical_dark.png' + : 'assets/branding/mark_and_text_vertical_light.png')), + ); + } + + /// If the user taps the branding logo 7 times in a row, the app will + /// download the logs and share them via the system share sheet. This is so + /// that users can download logs even if they can't access the settings page. + /// E.g. if the app crashes on login. + void _downloadLogs(BuildContext context) { + Log.downloadLogs().catchError((e) { + _showSnackbar(context, e.toString()); + }); + } + + void _showSnackbar(BuildContext context, String message) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text(message), + duration: const Duration(seconds: 3), + ), + ); + } +} + class CreateWalletButton extends StatelessWidget { const CreateWalletButton({Key key}) : super(key: key); diff --git a/lib/screens/dex/orders/swap/final_trade_success.dart b/lib/screens/dex/orders/swap/final_trade_success.dart index 8fc3b089a..eb48cb30e 100644 --- a/lib/screens/dex/orders/swap/final_trade_success.dart +++ b/lib/screens/dex/orders/swap/final_trade_success.dart @@ -1,18 +1,20 @@ import 'dart:io'; import 'dart:ui' as ui; +import 'package:cross_file/cross_file.dart'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:share_plus/share_plus.dart'; + import '../../../../app_config/app_config.dart'; import '../../../../blocs/dialog_bloc.dart'; import '../../../../localizations.dart'; import '../../../../model/swap.dart'; -import 'package:flutter_svg/flutter_svg.dart'; -import '../../../dex/orders/swap/detail_swap.dart'; -import '../../../dex/orders/swap/share_preview_overlay.dart'; import '../../../../utils/utils.dart'; import '../../../../widgets/swap_share_card.dart'; -import 'package:share/share.dart'; +import '../../../dex/orders/swap/detail_swap.dart'; +import '../../../dex/orders/swap/share_preview_overlay.dart'; class FinalTradeSuccess extends StatefulWidget { const FinalTradeSuccess({@required this.swap}); @@ -167,10 +169,9 @@ class _FinalTradeSuccessState extends State ' on my phone! You can try it too: https://komodoplatform.com\n' '#blockchain #dex #atomicdex #komodoplatform #atomicswap'; - await Share.shareFiles( - [imgFile.path], + await Share.shareXFiles( + [XFile(imgFile.path, mimeType: 'image/png')], text: shareText, - mimeTypes: ['image/png'], ); if (Platform.isIOS) { diff --git a/lib/screens/import-export/export_page.dart b/lib/screens/import-export/export_page.dart index fca8a60d6..ae1e90bcf 100644 --- a/lib/screens/import-export/export_page.dart +++ b/lib/screens/import-export/export_page.dart @@ -1,26 +1,28 @@ import 'dart:convert'; import 'dart:io'; -import 'package:intl/intl.dart'; +import 'package:cross_file/cross_file.dart'; import 'package:flutter/material.dart'; +import 'package:intl/intl.dart'; +import 'package:path_provider/path_provider.dart'; +import 'package:provider/provider.dart'; +import 'package:share_plus/share_plus.dart'; + +import '../../localizations.dart'; import '../../model/addressbook_provider.dart'; import '../../model/backup.dart'; +import '../../model/export_import_list_item.dart'; import '../../model/recent_swaps.dart'; import '../../model/swap.dart'; import '../../model/swap_provider.dart'; -import '../authentification/lock_screen.dart'; -import '../import-export/export_import_success.dart'; +import '../../services/db/database.dart'; import '../../utils/encryption_tool.dart'; import '../../utils/utils.dart'; import '../../widgets/password_visibility_control.dart'; import '../../widgets/primary_button.dart'; -import 'package:path_provider/path_provider.dart'; -import 'package:provider/provider.dart'; -import 'package:share/share.dart'; -import '../../model/export_import_list_item.dart'; -import '../../services/db/database.dart'; -import '../../localizations.dart'; +import '../authentification/lock_screen.dart'; import '../import-export/export_import_list.dart'; +import '../import-export/export_import_success.dart'; class ExportPage extends StatefulWidget { @override @@ -355,8 +357,10 @@ class _ExportPageState extends State { final encrypted = EncryptionTool().encryptData(_ctrlPass1.text, encoded); await tempFile.writeAsString(encrypted); - await Share.shareFiles([tempFile.path], - mimeTypes: ['application/octet-stream'], subject: 'atomicDEX_backup'); + await Share.shareXFiles( + [XFile(tempFile.path, mimeType: 'application/octet-stream')], + subject: 'atomicDEX_backup', + ); setState(() { _done = true; }); diff --git a/lib/screens/markets/order_book_chart.dart b/lib/screens/markets/order_book_chart.dart index 6030ece94..53aa08241 100644 --- a/lib/screens/markets/order_book_chart.dart +++ b/lib/screens/markets/order_book_chart.dart @@ -16,7 +16,6 @@ class OrderBookChart extends StatelessWidget { Widget build(BuildContext context) { final List _askTotals = []; final List _bidTotals = []; - double _maxAmount; for (int i = 0; i < sortedAsks.length; i++) { final double prevTotal = i > 0 ? _askTotals[_askTotals.length - 1] : 0; @@ -26,11 +25,10 @@ class OrderBookChart extends StatelessWidget { for (int i = 0; i < sortedBids.length; i++) { final double prevTotal = i > 0 ? _bidTotals[_bidTotals.length - 1] : 0; final Ask bid = sortedBids[i]; - _bidTotals.add( - prevTotal + (bid.maxvolume.toDouble() * double.parse(bid.price))); + _bidTotals.add(prevTotal + (bid.maxvolume.toDouble())); } - _maxAmount = max( + double _maxAmount = max( _askTotals.isNotEmpty ? _askTotals[_askTotals.length - 1] : 0, _bidTotals.isNotEmpty ? _bidTotals[_bidTotals.length - 1] : 0, ); diff --git a/lib/screens/markets/order_book_table.dart b/lib/screens/markets/order_book_table.dart index b947b2802..c2abbe09d 100644 --- a/lib/screens/markets/order_book_table.dart +++ b/lib/screens/markets/order_book_table.dart @@ -99,7 +99,7 @@ class _OrderBookTableState extends State { alignment: Alignment.centerRight, child: Text( AppLocalizations.of(context) - .ordersTableTotal(orderBookProvider.activePair.sell.abbr), + .ordersTableAmount(orderBookProvider.activePair.buy.abbr), maxLines: 1, style: const TextStyle(fontSize: 14), ), @@ -111,13 +111,13 @@ class _OrderBookTableState extends State { List _buildBidsList() { final List _sortedBids = List.from(widget.sortedBids); final List _bidsList = []; - double _bidTotal = 0; for (int i = 0; i < _sortedBids.length; i++) { final Ask bid = _sortedBids[i]; - final double _bidVolume = - bid.maxvolume.toDouble() * double.parse(bid.price); - _bidTotal += _bidVolume; + + final double _bidVolume = bid.maxvolume.toDouble(); + + final double convertedVolume = _bidVolume / bid.priceRat.toDouble(); _bidsList.add(TableRow( children: [ @@ -185,7 +185,7 @@ class _OrderBookTableState extends State { alignment: Alignment.centerRight, padding: const EdgeInsets.only(right: 4), child: Text( - formatPrice(_bidTotal.toString()), + formatPrice(convertedVolume.toString()), maxLines: 1, style: TextStyle( color: Theme.of(context) @@ -225,11 +225,11 @@ class _OrderBookTableState extends State { List _buildAsksList() { final List _sortedAsks = widget.sortedAsks; List _asksList = []; - double _askTotal = 0; for (int i = 0; i < _sortedAsks.length; i++) { final Ask ask = _sortedAsks[i]; - _askTotal += ask.maxvolume.toDouble(); + final convertedVolume = + ask.maxvolume.toDouble() * ask.priceRat.toDouble(); _asksList.add(TableRow( children: [ @@ -297,7 +297,7 @@ class _OrderBookTableState extends State { alignment: Alignment.centerRight, padding: const EdgeInsets.only(right: 4), child: Text( - formatPrice(_askTotal.toString()), + formatPrice(convertedVolume.toString()), maxLines: 1, style: TextStyle( color: Theme.of(context) diff --git a/lib/screens/portfolio/coin_detail/coin_detail.dart b/lib/screens/portfolio/coin_detail/coin_detail.dart index 8424134ee..e8622b49c 100644 --- a/lib/screens/portfolio/coin_detail/coin_detail.dart +++ b/lib/screens/portfolio/coin_detail/coin_detail.dart @@ -3,7 +3,7 @@ import 'dart:async'; import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; import 'package:provider/provider.dart'; -import 'package:share/share.dart'; +import 'package:share_plus/share_plus.dart'; import '../../../../app_config/app_config.dart'; import '../../../../blocs/coin_detail_bloc.dart'; diff --git a/lib/screens/portfolio/transaction_detail.dart b/lib/screens/portfolio/transaction_detail.dart index ea3e42bab..cba184c41 100644 --- a/lib/screens/portfolio/transaction_detail.dart +++ b/lib/screens/portfolio/transaction_detail.dart @@ -2,7 +2,7 @@ import 'package:auto_size_text/auto_size_text.dart'; import 'package:flutter/material.dart'; import 'package:komodo_dex/model/coin_type.dart'; import 'package:provider/provider.dart'; -import 'package:share/share.dart'; +import 'package:share_plus/share_plus.dart'; import '../../blocs/coins_bloc.dart'; import '../../blocs/main_bloc.dart'; diff --git a/lib/screens/settings/setting_page.dart b/lib/screens/settings/setting_page.dart index 4543899c5..b9638a24b 100644 --- a/lib/screens/settings/setting_page.dart +++ b/lib/screens/settings/setting_page.dart @@ -7,7 +7,7 @@ import 'package:komodo_dex/packages/z_coin_activation/widgets/z_coin_status_list import 'package:komodo_dex/utils/log_storage.dart'; import 'package:package_info_plus/package_info_plus.dart'; import 'package:provider/provider.dart'; -import 'package:share/share.dart'; +import 'package:share_plus/share_plus.dart'; import '../../app_config/app_config.dart'; import '../../blocs/authenticate_bloc.dart'; @@ -556,44 +556,20 @@ class _SettingPageState extends State { Future _shareLogs() async { Navigator.of(context).pop(); - final PackageInfo packageInfo = await PackageInfo.fromPlatform(); - final String os = Platform.isAndroid ? 'Android' : 'iOS'; - - final now = DateTime.now(); - // final log = FileAndSink(_logStorage.getLogFilePath(now)); - if (swapMonitor.swaps.isEmpty) await swapMonitor.update(); - try { - await Log.appendRawLog('\n\n--- my recent swaps ---\n\n'); - for (Swap swap in swapMonitor.swaps) { - final started = swap.started; - if (started == null) continue; - final tim = DateTime.fromMillisecondsSinceEpoch(started.timestamp); - final delta = now.difference(tim); - if (delta.inDays > 7) continue; // Skip old swaps. - await Log.appendRawLog(json.encode(swap.toJson) + '\n\n'); - } - await Log.appendRawLog('\n\n--- / my recent swaps ---\n\n'); - // TBD: Replace these with a pretty-printed metrics JSON - await Log.appendRawLog('Komodo Wallet ${packageInfo.version} $os\n'); - await Log.appendRawLog( - 'mm_version ${mmSe.mmVersion} mm_date ${mmSe.mmDate}\n'); - await Log.appendRawLog('netid ${mmSe.netid}\n'); - } catch (ex) { - Log('setting_page:723', ex); - await Log.appendRawLog('Error saving swaps for log export: $ex'); - } - - // Discord attachment size limit is about 25 MiB - final exportedLogFiles = await LogStorage().exportLogs(); - - final paths = exportedLogFiles.map((f) => f.path).toList(); - - mainBloc.isUrlLaucherIsOpen = true; - - await Share.shareFiles( - paths, - // mimeTypes: ['application/octet-stream'], - subject: 'Komodo Wallet at ${DateTime.now().toIso8601String()}', + + Log.downloadLogs().catchError((dynamic e) { + _showSnackbar(e.toString()); + }); + } + + void _showSnackbar(String message) { + if (context == null) return; + + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text(message), + duration: const Duration(seconds: 3), + ), ); } diff --git a/lib/services/mm_service.dart b/lib/services/mm_service.dart index c5718a877..c8f4748e5 100644 --- a/lib/services/mm_service.dart +++ b/lib/services/mm_service.dart @@ -64,9 +64,9 @@ class MMService { /// Our name and version String gui; - /// We're using the netid of 7777 currently - /// But it's possible in theory to connect the UI to MM running on a different netid - int netid = 7777; + /// We're using the netid of 8762 as part of the bracking changes in MM2 + /// warrenting a new netid. + int netid = 8762; /// Effective memory used by the application, MiB /// As of now it is specific to iOS @@ -319,19 +319,6 @@ class MMService { _directorySizeCache['$dirPath**$endsWith'] = size; } - List removeZhtlcCheckPointBlock(List coinsJson) { - return coinsJson.map((dynamic coinDynamic) { - Map coin = coinDynamic as Map; - if (coin.containsKey('protocol') && - coin['protocol'].containsKey('type') && - coin['protocol']['type'] == 'ZHTLC' && - coin['protocol']['protocol_data'].containsKey('check_point_block')) { - coin['protocol']['protocol_data'].remove('check_point_block'); - } - return coin; - }).toList(); - } - /// returns directory size in MB static double dirStatSync(String dirPath, {String endsWith = 'log'}) { int totalSize = 0; @@ -374,7 +361,7 @@ class MMService { userhome: filesPath, passphrase: passphrase, rpcPassword: rpcPass, - coins: removeZhtlcCheckPointBlock(await readJsonCoinInit()), + coins: await readJsonCoinInit(), dbdir: filesPath, allowWeakPassword: false, rpcPort: appConfig.rpcPort, @@ -457,18 +444,46 @@ class MMService { } Future> readJsonCoinInit() async { + List coinsJson; + try { - return jsonDecode(await CoinUpdater().getCoins()); + coinsJson = await jsonDecode(await CoinUpdater().getCoins()); + + coinsJson = coinsJson.map((dynamic coinDynamic) { + try { + if (coinDynamic is Map) { + coinDynamic = coinModifier(coinDynamic); + } + } catch (e) { + // Coin modification failed. This is not a critical error, so we can, + // but developers should be aware of it. + Log('mm_service', 'Coin modification failed. ${e.toString()}'); + } + return coinDynamic; + }).toList(); } catch (e) { - if (kDebugMode) { - Log('mm_service', 'readJsonCoinInit] $e'); - printError('$e'); - printError('Try to run `\$sh fetch_coins.sh`.' - ' See README.md for details.'); - SystemChannels.platform.invokeMethod('SystemNavigator.pop'); - } + Log('mm_service', 'Error loading coin config: ${e.toString()}'); + return []; } + + return coinsJson; + } + + /// A function to modify each loaded coin in the list of coins before it is + /// passed to MM. + Map coinModifier(Map coin) { + // Remove the check_point_block from ZHTLC coins because this is required + // if we want to activate ZHTLC coins and only sync from the current date. + // The check_point_block will be removed from the coin config repo in the + // future, so this is a temporary workaround. + if (coin.containsKey('protocol') && + coin['protocol'].containsKey('type') && + coin['protocol']['type'] == 'ZHTLC' && + coin['protocol']['protocol_data'].containsKey('check_point_block')) { + coin['protocol']['protocol_data'].remove('check_point_block'); + } + return coin; } Future initCoinsAndLoad() async { diff --git a/lib/utils/log.dart b/lib/utils/log.dart index 9be6d2e0a..a7747a10f 100644 --- a/lib/utils/log.dart +++ b/lib/utils/log.dart @@ -2,10 +2,15 @@ import 'dart:async'; import 'dart:io'; import 'dart:math'; +import 'package:cross_file/cross_file.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; import 'package:intl/intl.dart'; +import 'package:komodo_dex/blocs/main_bloc.dart'; +import 'package:komodo_dex/model/swap_provider.dart'; import 'package:komodo_dex/utils/log_storage.dart'; +import 'package:package_info_plus/package_info_plus.dart'; +import 'package:share_plus/share_plus.dart'; import '../services/mm_service.dart'; import '../utils/utils.dart'; @@ -110,6 +115,56 @@ class Log { await _updateLastClearedDate(); } + + static Future downloadLogs() async { + final PackageInfo packageInfo = await PackageInfo.fromPlatform(); + final String os = Platform.operatingSystem; + + final now = DateTime.now(); + + try { + if (swapMonitor.swaps.isEmpty) await swapMonitor.update(); + + await Log.appendRawLog('\n\n--- my recent swaps ---\n\n'); + + final recentSwaps = swapMonitor.swaps.where((swap) => + swap.started != null && + DateTime.fromMillisecondsSinceEpoch(swap.started.timestamp) + .difference(now) + .inDays + .abs() < + 7); + + for (final swap in recentSwaps) { + await Log.appendRawLog('${swap.toJson}\n'); + } + + await Log.appendRawLog('\n\n--- / my recent swaps ---\n\n'); + // TBD: Replace these with a pretty-printed metrics JSON + await Log.appendRawLog('Komodo Wallet ${packageInfo.version} $os\n'); + await Log.appendRawLog( + 'mm_version ${mmSe.mmVersion} mm_date ${mmSe.mmDate}\n'); + await Log.appendRawLog('netid ${mmSe.netid}\n'); + } catch (ex) { + Log('setting_page:723', ex); + await Log.appendRawLog('Error saving swaps for log export: $ex'); + } + + // Discord attachment size limit is about 25 MiB + final exportedLogFiles = + (await LogStorage().exportLogs()).map((f) => XFile(f.path)).toList(); + if (exportedLogFiles.isEmpty) { + throw Exception('No logs to download'); + } + + mainBloc.isUrlLaucherIsOpen = true; + + await Share.shareXFiles( + exportedLogFiles, + // mimeTypes: ['application/octet-stream'], + subject: 'Komodo Wallet Logs at ${DateTime.now().toIso8601String()}', + ); + } } Future _doMaintainInSeparateIsolate(Map params) async { diff --git a/lib/utils/log_storage.dart b/lib/utils/log_storage.dart index 3ae829b12..7e5ef4b93 100644 --- a/lib/utils/log_storage.dart +++ b/lib/utils/log_storage.dart @@ -155,11 +155,7 @@ class LogStorage { Future> exportLogs() async { await deleteExportedArchives(); - final logFiles = Directory(logFolderPath()) - .listSync(followLinks: false, recursive: true) - .whereType() - .where((f) => f.path.endsWith('.log')) - .toList(); + final logFiles = await getLogFiles(); final compressedFiles = []; final compressedSizes = []; @@ -168,7 +164,7 @@ class LogStorage { const compressionLevel = Deflate.DEFAULT_COMPRESSION; const maxSizeBytes = 24 * 1000 * 1000; // 24MB. Discord limit is 25MB. - for (var logFile in logFiles) { + for (final logFile in logFiles.values) { List fileBytes = logFile.readAsBytesSync(); final fileName = p.basename(logFile.path); @@ -191,11 +187,11 @@ class LogStorage { compressedSizes.add(compressedBytes.length); - final isLastFile = logFile == logFiles.last; + final isLastFile = logFile == logFiles.values.last; if (wouldBeOverLimit || isLastFile) { final archiveFile = File( - '${logFolderPath()}/komodo_wallet_logs_archive_${compressedFiles.length}.g.zip', + '${logFolderPath()}/komodo_wallet_logs_archive_${compressedFiles.length}.gz', ); final archiveBytes = @@ -218,7 +214,7 @@ class LogStorage { final archives = Directory(logFolderPath()) .listSync(followLinks: false, recursive: true) .whereType() - .where((f) => f.path.endsWith('.g.zip')) + .where((f) => f.path.endsWith('.gz')) .toList(); for (var archive in archives) { diff --git a/lib/utils/utils.dart b/lib/utils/utils.dart index 7534a9a54..8103a013e 100644 --- a/lib/utils/utils.dart +++ b/lib/utils/utils.dart @@ -12,7 +12,7 @@ import 'package:local_auth/local_auth.dart'; import 'package:path_provider/path_provider.dart'; import 'package:provider/provider.dart'; import 'package:rational/rational.dart'; -import 'package:share/share.dart'; +import 'package:share_plus/share_plus.dart'; import 'package:url_launcher/url_launcher.dart'; import '../app_config/app_config.dart'; diff --git a/lib/widgets/repeated_tap_detector.dart b/lib/widgets/repeated_tap_detector.dart new file mode 100644 index 000000000..3a480d24f --- /dev/null +++ b/lib/widgets/repeated_tap_detector.dart @@ -0,0 +1,61 @@ +import 'package:flutter/material.dart'; + +/// A widget which detects if a user repeatedly taps on a widget. +/// +/// +/// [child] The widget to be wrapped by the repeated tap detector. +/// [tapTriggerCount] The number of taps required to trigger the [onRepeatedTap] callback. +/// [onRepeatedTap] The callback to be triggered when the user taps on the widget [tapTriggerCount] times. +/// [cooldown] The maximum time in milliseconds between taps to be considered a repeated tap. +class RepeatedTapDetector extends StatefulWidget { + const RepeatedTapDetector({ + Key key, + @required this.child, + @required this.tapTriggerCount, + @required this.onRepeatedTap, + this.cooldown = const Duration(seconds: 1), + }) : super(key: key); + + final Widget child; + final int tapTriggerCount; + final VoidCallback onRepeatedTap; + final Duration cooldown; + + @override + _RepeatedTapDetectorState createState() => _RepeatedTapDetectorState(); +} + +class _RepeatedTapDetectorState extends State { + int _tapCount = 0; + DateTime _lastTapTime; + + bool get _isCooldownExpired => + _lastTapTime != null && + DateTime.now().difference(_lastTapTime) > widget.cooldown; + + @override + Widget build(BuildContext context) { + return GestureDetector( + onTap: () { + print( + 'RepeatedTapDetector: onTap. _tapCount: $_tapCount, _isCooldownExpired: $_isCooldownExpired'); + if (_tapCount == 0 || _isCooldownExpired) { + _resetLastTap(); + } + _tapCount++; + if (_tapCount == widget.tapTriggerCount) { + widget.onRepeatedTap?.call(); + _tapCount = 0; + } + + _lastTapTime = DateTime.now(); + }, + child: widget.child, + ); + } + + void _resetLastTap() { + _lastTapTime = DateTime.now(); + _tapCount = 0; + } +} diff --git a/pubspec.lock b/pubspec.lock index e5dea6c62..0fb987b6e 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -35,7 +35,7 @@ packages: name: asn1lib url: "https://pub.dartlang.org" source: hosted - version: "1.4.0" + version: "1.4.1" async: dependency: transitive description: @@ -170,6 +170,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "3.1.0" + cross_file: + dependency: transitive + description: + name: cross_file + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.3+2" crypto: dependency: "direct main" description: @@ -358,7 +365,7 @@ packages: name: flutter_secure_storage_linux url: "https://pub.dartlang.org" source: hosted - version: "1.1.3" + version: "1.2.0" flutter_secure_storage_macos: dependency: transitive description: @@ -372,14 +379,14 @@ packages: name: flutter_secure_storage_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "1.0.1" + version: "1.0.2" flutter_secure_storage_web: dependency: transitive description: name: flutter_secure_storage_web url: "https://pub.dartlang.org" source: hosted - version: "1.1.1" + version: "1.1.2" flutter_secure_storage_windows: dependency: transitive description: @@ -705,7 +712,7 @@ packages: name: provider url: "https://pub.dartlang.org" source: hosted - version: "6.0.5" + version: "6.1.1" pub_semver: dependency: transitive description: @@ -736,13 +743,48 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.2.1" - share: + share_plus: dependency: "direct main" description: - name: share + name: share_plus url: "https://pub.dartlang.org" source: hosted - version: "2.0.4" + version: "4.5.3" + share_plus_linux: + dependency: transitive + description: + name: share_plus_linux + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.1" + share_plus_macos: + dependency: transitive + description: + name: share_plus_macos + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.1" + share_plus_platform_interface: + dependency: transitive + description: + name: share_plus_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.1" + share_plus_web: + dependency: transitive + description: + name: share_plus_web + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.0" + share_plus_windows: + dependency: transitive + description: + name: share_plus_windows + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.1" shared_preferences: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index cb8243851..cbfc2f819 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -7,7 +7,7 @@ description: Multicoin Wallet with DEX gateway # Both the version and the builder number may be overridden in flutter # build by specifying --build-name and --build-number, respectively. # Read more about versioning at semver.org. -version: 0.8.0+0 +version: 0.9.0+0 publish_to: none @@ -36,8 +36,6 @@ dependencies: url_launcher: 6.1.5 # flutter.dev (Note: Supports null safety) - share: 2.0.4 # flutter.dev (Note: Supports null safety) - local_auth: 1.1.11 # flutter.dev (Note: Supports null safety) http: 0.13.4 # dart.dev (Note: Supports null safety) @@ -61,6 +59,9 @@ dependencies: path: packages/package_info_plus/package_info_plus/ ref: 08a7a35502d2498ea3dd1473445b4511dea35518 #1.4.2 + share_plus: ^4.5.3 + + #------------3rd party-------------