Giter Club home page Giter Club logo

coins's Introduction

What is the coins repository for?

This repository is the coins database which is used to define parameters for coins compatible with the Komodo DeFi Framework, and listed within the apps below:

Komodo Wallet Mobile Komodo Wallet Web Komodo Wallet Desktop

Refer to the coin listing guide on the Komodo Developer Documentation website for details about the information required for a successful listing. To avoid SSL certificate validation issues, it is highly recommended to use EFF's Certbot to generate SSL certificates for ElectrumX servers.

The status of currently listed ElectrumX servers is monitored via a public API and Dashboard. Discord status alerts are available in the AtomicDEX Electrum Status channel (please contact smk to register and recieve pings when your servers have an issue).

Note: Where ElectrumX or other infrastructure servers are maintained by third party service providers, contact details for service alerts must be provided. It is also recommended to set up monitoring via Zabbix and/or https://1209k.com/bitcoin-eye/ele.php

Currently supported coins & protocols

AtomicDEX is a true non-custodial, cross-chain, cross-protocol Decentralized Exchange (DEX), allowing for trades between coins and tokens across many platforms and ecosystems, including:

Future coins & protocols

coins's People

Contributors

alamshafil avatar artemii235 avatar bitry avatar bloodynora avatar btclinux avatar ca333 avatar chmex avatar cipig avatar damascene avatar diabasecoin avatar fujicoin avatar gcharang avatar github-actions[bot] avatar himu007 avatar jl777 avatar milerius avatar mraksoll4 avatar nftx-sergei avatar pungotoken avatar rtbcoin avatar satindergrewal avatar seopub avatar shorelinecrypto avatar siulynot avatar smk762 avatar stc788 avatar sumcoinlabs avatar tonymorony avatar yurii-khi avatar zachchan105 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

coins's Issues

prices.komodo.live

Hi cipig,
This is concerning Whive coin listing on atomicdex, which has been okay , but the prices.komodo.live api does not seem to pick prices from coinpaprika despite the fact it is properly configured.Please advice on what to do.
Thanks

[sec] add checksum

lets add checksums for all files / assets in this repo and host checksum independently for cross-validation possibilities

Coin naming standards and delisting process

Going through the coins file, there are a few inconsistencies which could be fixed to help with future maintenance.
e.g.

  • BEP-20 (and other platform/protocols) tokens should have a -BEP20 suffix (or *-ERC20; *-SLP etc)
  • There is no consistent tagging of testnet coins. Suggest using a (test) suffix in fname.
  • Not all coins have an fname value, and there might be other entries missing standard values.
  • Due to the way the price service operates, any chars after the first - in the coin value will return the same price. For this reason, no coin should use a - in their name except to indicate it's platform/protocol. Instead, use an _. For example, a test coin named NAME on the BNB testnet would be NAME_TEST-BEP20

Changing the coin name value will be a breaking change for DEX apps which use a supplementary coins file for activation, so this update needs to be done in a carefully coordinated manner at a time where it wont impact any imminent deadlines for releases / demonstrations etc.

We're also lacking a clear delisting process / cycle. Something similar to KomodoPlatform/komodo-wallet-desktop#1993 should also be applied here.

cc: @ologunB @yurii-khi @artemii235

[QA] Electrum status monitoring

As seen in the past, occasionally electrum servers operated by third parties may fail, and resolving the issue takes longer than is ideal.
To mitigate this, the following actions should be taken:

  • Enforce contact details be included in all pull requests which involve resources not maintained by the Komodo team.
  • Setup & maintain real-time monitoring of listed electrum servers. Status should be available via API for dashboard / app display and automated alerts.
  • Setup a daily cron run of the CI to keep the electrums listed in coins_config.json up to date.

Set average block times in seconds for all coins.

During KomodoPlatform/komodo-defi-framework#1526 (comment) discussion, I have discovered that block times are set in minutes, which seems confusing to me. E.g. IRIS testnet block time is ~5 seconds, which is 1/12 minute - this can't be simply written as finite decimal, so we have to round it, losing some precision. It may even lead to incorrect block count based swap lock times, which is a serious problem.

So I propose to change all block times in the config to seconds. cc @smk762 @tonymorony

Optimise filesize of assets used in guis

  • Images already optimised in CI/CD flow, need to confirm this is what all repos use.
  • Vector file formats like svg would be good where possible
  • coins_config.json could be trimmed, some fields are not required for guis. Some field names could be shortened.
  • We should also serve a minified version for the guis to reduce the file size.

Add more HT nodes

Currently we have https://github.com/KomodoPlatform/coins/blob/master/ethereum/HT only single Heco node.
Quite often it's unavailable -> all GUIs can not activate/use HT and it's tokens.

Thus we should at least add mroe public nodes here.

Minu coin listing request

App coin config CI/CD

Alongside the config generation PR (#502) we need to implement the following:

When there is a merge to master:

  • Run utils/scan_electrums.py which will identify current working / failed electrums.
  • Run utils/generate_app_configs.py which will output json files for each app (web, mobile, desktop). It will reference the electrums_scan_report.json to exclude any entries which are failing.
  • Push the generated app config json files to master branch, so they are available for apps to grab during build. Also push the electrum_scan_report .json file to master - we can use this to inform electrum maintainers if their servers need attention.
  • Create exclusion in the CI flow so that updating the json files in master does not trigger the CI workflow, so we can avoid an infinite loop which melts down githubs servers.

Once a day:

  • Run utils/scan_electrums.py which will identify current working / failed electrums.
  • Push the electrum_scan_report .json file to master - we can use this to inform electrum maintainers if their servers need attention.

missing icons for some assets listed in the coins_config.json file

Among the assets listed in https://github.com/KomodoPlatform/coins/blob/master/utils/coins_config.json

the following coins/assets didn't have icons in https://github.com/KomodoPlatform/coins/tree/master/icons

image not found- ADEX BSC: ADEXBSC
image not found- ADEX BSC Testnet: ADEXBSCT
image not found- AtomicSLP: ASLP
image not found- aware token: AWR
image not found- baer chain: BRC
image not found- Bitcoin Cash Testnet: tBCH
image not found- bodhi token: BOT
image not found- cfun token: CFUN
image not found- entertainment cash: ENT
image not found- epc: EPC
image not found- Fake USD: USDF
image not found- fenix.cash: FENIX
image not found- Honk Honk: HONK
image not found- Ilien Swap: ILNSW-PLG20
image not found- PlayCoin: PLY
image not found- sTST: sTST
image not found- winechain: WID
image not found- Zombie: ZOMBIE

maybe the new workflow can keep track of this info too?

cc: @cipig @smk762

[Feature Request]: Smart chain launch parameters

I'm not sure if we have a clear canonical place where smart chain launch parameters are stored, beyond the assetchains.old and assetchains.json files in https://github.com/KomodoPlatform/komodo which are only targeting chains being notarised. As a result, params for other coins like SOULJA, Dragon Fairy etc don't appear to be listed anywhere beyond perhaps Discord.

Would this repo be a suitable place to store this info? I'd propose a folder "smart chains" with a structure similar to the below:

    "MESH": "-ac_name=MESH -ac_supply=1000007 -ac_ccactivate=320000",
    "MGW": "-ac_name=MGW -ac_supply=999999",
    "MSHARK": "-ac_name=MSHARK -ac_supply=1400000",
    "NINJA": "-ac_name=NINJA -ac_supply=100000000",
    "PANGEA": "-ac_name=PANGEA -ac_supply=999999",
    "REVS": "-ac_name=REVS -ac_supply=1300000",
    "RICK": "-ac_name=RICK -ac_supply=90000000000 -ac_reward=100000000 -ac_cc=3 -ac_staked=10 -addnode=138.201.136.145 -addnode=95.217.44.58"

alternatively, to include ecosystem chains using custom daemons, or no longer in use (for historical value):

    "MGW": {
           "launch": "-ac_name=MGW -ac_supply=999999",
           "status": "active dpow",
           "repo": "https://github.com/KomodoPlatform/komodo/tree/master"
    },
    "TOKEL": {
           "launch": "-ac_name=TOKEL -ac_supply=100000000 -ac_eras=2 -ac_cbmaturity=1 -ac_reward=100000000,4250000000 -ac_end=80640,0 -ac_decay=0,77700000 -ac_halving=0,525600 -ac_cc=555 -ac_ccenable=236,245,246,247 -ac_adaptivepow=6 -addnode=135.125.204.169 -addnode=192.99.71.125 -addnode=144.76.140.197 -addnode=135.181.92.123",
           "status": "active dpow",
           "repo": "https://github.com/KomodoPlatform/komodo/tree/tokel"
    },
    "MCL": {
           "launch": "-ac_name=MCL -ac_supply=2000000 -ac_cc=2 -addnode=37.148.210.158 -addnode=37.148.212.36 -addressindex=1 -spentindex=1 -ac_marmara=1 -ac_staked=75 -ac_reward=3000000000 -daemon",
           "status": "active dpow",
           "repo": "https://github.com/marmarachain/marmara/tree/master"
    },
    "OOT": {
           "launch": "-ac_name=OOT -ac_supply=216000000 -ac_sapling=5000000",
           "status": "abandoned",
           "repo": "N/A"
    }

If you think this might be of value, I'll collect the data and draft a PR.

Change structure for nodes field

Right now we have our nodes and another nodes. For our node request to enable the ethereum looks like this:

'{
	"userpass": "'$userpass'",
	"mmrpc": "2.0",
	"method": "enable_eth_with_tokens",
	"params": {
		"ticker": "ETH",
		"nodes": [
			{"url": "https://auth.defimania.live/ethereum", "gui_auth": true }
		],
		"swap_contract_address": "0x24ABE4c71FC658C91313b6552cd40cD808b3Ea80",
		"erc20_tokens_requests": []
	},
	"id": 0
}'

nodes is array and element has property gui_auth.
gui_auth should be true only for our nodes and should not be for another one. Other nodes work, but this flag brings overhead.

I think that node should have the same structure.
nodes: [{"url": "https://auth.defimania.live/ethereum", "gui_auth": true }]

Cleaner electrum validity tracking / alerts and coins config delivery

As discussed with @tonymorony using a put to push code is not an ideal situation. Conflicts have been plaguing us with the electrum scan report which will no longer be pushed once #549 is merged. Removing this file also removes the "grace period" functionality implemented in #539 as it no longer has a prior reference timestamp to determine the last time a connection was made, so in order to implement automated alerts / dashboard for electrum status, we need to find a home for this file. If completely removing bot generated PRs, the same would apply to the coins_config.json

Below are few options to overcome this:

  • Schedule periodic manual updates to these files to be pushed manually (without bot) to coins repo
  • Do not include in coins repo at all, and just have gui repos generate them as needed and pushed to the gui repo
  • Store these files elsewhere, for example in their own repo which would include API for guis to be aware of update to the canonical version commit hash and alert / dashboard code which will display electrum status and, if contacts are listed in the electrum entry, alert the maintainer to resolve the issue.

Please add comments to this thread if you have an idea for an alternative proposal, and I'll add them to the list above.

cc: @tonymorony @yurii-khi @SirSevenG

[BUG]: GRMS coin electrum servers

Replace electrum servers for the GRMS coin with new ones for release in the next release
"electrum": [
{
"url": "electrum.grms.pw:17485"
},
{
"url": "electrum1.grms.pw:17485"
},
{
"url": "electrum2.grms.pw:17485"
},
{
"url": "electrum3.grms.pw:17485"
}

missing icons for some assets listed in the coins json and atomicdex desktop

Among all the coins listed in atomicdex-desktop, based on: https://raw.githubusercontent.com/KomodoPlatform/atomicDEX-Desktop/master/assets/config/0.5.6-coins.json

the following coins/assets didn't have icons in https://github.com/KomodoPlatform/coins/tree/master/icons

Avalanche Testnet: AVAXT
Binance Coin (Testnet): BNBT
EthKovan Optimism (Testnet): ETHK-OPT20
Fantom Testnet: FTMT
Matic Testnet: MATICTEST
Moonbeam: GLMR
Pegaxy Stone: PGX-PLG20
Ropsten test ERC20: JSTR
RSK Smart Bitcoin: RBTC
SmartBCH: SBCH

cc: @cipig @smk762

smart chain delisting before S7

This is a list of smart chains that we could delist before S7.

  • MESH (not notarized)
  • ZILLA (not notarized)
  • RICK & MORTY (replaced by DOC & MARTY)
  • DEX, BOTS, JUMBLR, MGW, REVS (converted to vDEX)
  • BET & PANGEA (converted to CHIPS)
  • CRYPTO - done, already delisted
  • MSHARK (buyback/convert to KMD/VRSC)
  • HODL (buyback)

Any comments appreciated.

Minor :: Possible wrong key in MATICTEST

./ethereum/MATICTEST has probably a wrong key with 'fallback_contract_address'. Assuming that this should be a 'fallback_swap_contract' key like the others?!

{
  "swap_contract_address": "0x73c1Dd989218c3A154C71Fc08Eb55A24Bd2B3A10",
  "fallback_contract_address": "0x73c1Dd989218c3A154C71Fc08Eb55A24Bd2B3A10", # <--------
  "rpc_nodes": [
    {
      "url": "https://rpc-mumbai.matic.today"
    },
    {
      "url": "https://matic-mumbai.chainstacklabs.com"
    },
    {
      "url": "https://rpc-mumbai.maticvigil.com"
    }
  ]
}

Improve electrum scan report format

The current json output is not as pretty as it could be, and a different format would make it easier to integrate into monitoring / alerts systems.

e.g.

{
    "DEX": {
        "electrums_total": 3,
        "electrums_working": 2,
        "stats": {
            "electrum1.cipig.net:10006": [true, "passed"],
            "electrum2.cipig.net:10006": [false, "[Errno 111] Connection refused"],
        }
    }
}

Change required_confirmations for coins to take into account block reorganizations

e.g. polygon had a 157-depth reorg in the last month https://polygonscan.com/block/39599624/f?hash=0x0b7e6c5e9fbae3e2dbd114e4836b52ffb1211820bf62bbbd3ddf859dd07c0fe1

We can check reorg data here https://polygonscan.com/blocks_forked, we need to find this info for coins supported and update required_confirmations to a good value (e.g. for polygon if we used 20 confirmations it will be a good value that avoids these problems for almost all blocks but if we want a complete safe value, we will need to make it 200 confirmations)

We need to check this data periodically and also check chain updates that solve these problems so we can reduce these values when these problems are solved to have faster swap times.

inconsistent naming scheme of assets types

all the asset types in the current coins file:

  'AVX-20',
  'Matic',
  'BEP-20',
  'ERC-20',
  'KRC-20',
  'FTM-20',
  'HecoChain',
  'UTXO',
  'ZHTLC',
  'SLP',
  'Smart Chain',
  'RSK Smart Bitcoin',
  'Moonriver',
  'Arbitrum',
  'QRC-20',
  'Ethereum Classic',
  'Moonbeam',
  'HRC-20',
  'SmartBCH',
  'Ubiq',
  'TENDERMINT',
  'TENDERMINTTOKEN'

observations + my opinions:

  1. every name starts with an upper case letter (good)
  2. format of ERC-20 type tokens xxx-20 is good as it is
  3. acronyms are all uppercase like UTXO, SLP, ZHTLC (good)
  4. single word full names like Matic, Ubiq, Moonriver are also good
  5. multi word names: 'Ethereum Classic', 'RSK Smart Bitcoin', 'Smart Chain', are two words, but 'HecoChain', is one word in Pascal case. this is inconsistent. if there is existing code that depends on the current name 'HecoChain' (I assume there definitely is), we should make it an exception, and all future multi-word names should be two words
    or consider 'Ethereum Classic', 'RSK Smart Bitcoin', 'Smart Chain' as exceptions and make all future multiword names Pascal case. just have to pick one style and stick to it
  6. 'TENDERMINT' should be 'Tendermint'
  7. 'TENDERMINTTOKEN' should be 'TendermintToken' or 'Tendermint Token' based on the decision for multiword names from the 5th point

I'm making a webpage that displays all these names in a single spot, so found this inconsistency.

it is also ok to decide that changing any of the existing names will cause too much unnecessary work in the API/GUI codebases. then I will write some exceptions for the webpage I'm creating and normalize the naming scheme just over there

Screenshot 2023-01-11 165014

cc: @smk762 @cipig @tonymorony

segwit derivation paths

Currently all entries in coins file (including segwit) have a 44 value for the purpose part of derivation path.

image

Need to test using different values with mm2 for generating addresses and transacting and confirm it works.

[BUG]: Can't send KMD on P2SH addresses in Desktop / Mobile versions of AtomicDEX

Describe the bug
When user tries to send funds on valid P2SH address in KMD network he receive the error message that entered address is incorrect. The issue affects Desktop and Mobile versions of AtomicDEX as well.

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'Wallet'
  2. Click on 'KMD'
  3. Choose Send, enter any valid P2SH address as a recipient address.
  4. See error

Expected behavior
Funds should be sent.

Screenshots
image
image

As you can see Ledger Live app allows to send on this P2SH address and count it as valid.

[FR] Improved electrum scan results

Currently the electrum scan report rejects coins with no working electrums at the time of the CI run which has the potential to omit coins where an electrum is down for a brief period for maintenance. To accommodate situations like this, we could implement a "offline_since" value, which resets when a connection is made in subsequent CI runs. Thenwe can filter out with an "offline_since" value greater than "x" (3 days?).

Keeping alignment with API development

Recently we ended up in a position where the master branch of the coins repo contained information which breaks the functionality of some methods in the current API release version. To avoid repeating this problem, the following suggestions have been made

  • master branch should at all times be compatible with the latest API release binaries (mm2.1 branch)
  • dev branch will be created, and should at all times be compatible with the API dev branch
  • Additional branches can be created with the same branch name used in API repo for specific feature testing, before merging into dev and eventually master.
  • Upon release of a new version of the API, a git tag with the same version number / short hash as the API release will be created to offer a static fallback reference. new coin additions for existing protocols can be added to master (and should still function with the API release), with the option to add incremental tags if required or on a schedule once a week/month).
  • GUIs which reference the coin_config.json generated by this repo's CI should use tags / short hashes to source the data, so we can avoid builds failing due to potentially introduced errors.

Please add any more suggestions or pros/cons below.
cc: @yurii-khi @artemii235 @ozkanonur @tonymorony @cipig

VAL activation fails in trezor mode

Request:

{
    "method": "task::enable_utxo::init",
    "userpass": "***",
    "mmrpc": "2.0",
    "params": {
        "ticker": "VAL",
        "activation_params": {
            "tx_history": true,
            "mode": {
                "rpc": "Electrum",
                "rpc_data": {
                    "servers": [
                        {
                            "url": "e1.validitytech.com:11004",
                            "protocol": "WSS",
                            "disable_cert_verification": true
                        },
                        {
                            "url": "e2.validitytech.com:11004",
                            "protocol": "WSS",
                            "disable_cert_verification": true
                        },
                        {
                            "url": "e3.validitytech.com:11004",
                            "protocol": "WSS",
                            "disable_cert_verification": true
                        }
                    ]
                }
            },
            "scan_policy": "scan_if_new_wallet",
            "priv_key_policy": "Trezor"
        }
    }
}

Status response:

{
    "mmrpc": "2.0",
    "result": {
        "status": "Error",
        "details": {
            "error": "Error on platform coin VAL creation: Operation failed due to unknown reason: Failure { code: Some(FailureDataError), message: Some(\"Invalid coin name\") }",
            "error_path": "lib.common_impl.coin_balance.utxo_common.hd_pubkey.client",
            "error_trace": "lib:103] common_impl:52] coin_balance:408] utxo_common:234] hd_pubkey:170] client:90]",
            "error_type": "CoinCreationError",
            "error_data": {
                "ticker": "VAL",
                "error": "Operation failed due to unknown reason: Failure { code: Some(FailureDataError), message: Some(\"Invalid coin name\") }"
            }
        }
    },
    "id": null
}

VAL config, from coins.json

  {
    "coin": "VAL",
    "name": "validity",
    "fname": "Validity",
    "confpath": "USERHOME/.Validity/validity.conf",
    "isPoS": 1,
    "rpcport": 27914,
    "pubtype": 76,
    "p2shtype": 58,
    "wiftype": 121,
    "txfee": 100000,
    "dust": 300000,
    "mm2": 1,
    "required_confirmations": 5,
    "avg_blocktime": 1,
    "mature_confirmations": 60,
    "protocol": {
      "type": "UTXO"
    },
    "derivation_path": "m/44'/634'",
    "trezor_coin": "Valorbit",
    "links": {
      "homepage": "https://valorbit.com"
    }
  }

3rd Party Electrums with errors

In future, all PRs for electrums must contain a point of contact for resolving issues.
Electrum status summary: https://stats.kmd.io/atomicdex/electrum_status/
Currently, the following coins have issues on some or all servers:

  • ABY (2/4 failing, no contact details)
  • ACTN (1/4 failing, email sent)
  • AUR (2/3 failing, no contact details)
  • AYA (2/4 failing, email sent)
  • BSTY (2/3 failing, no contact details)
  • BTX (1/1 failing, contacted via discord)
  • CDN (4/8 failing, no contact details)
  • DGC (1/2 failing, no contact details)
  • DIMI (2/2 failing, email sent)
  • EFL (4/6 failing, no contact details)
  • FLUX (1/2 failing, no contact details)
  • GRS (1/5 failing, email sent)
  • IL8P (2/2 failing, email sent)
  • LNC (2/2 failing, email sent)
  • LYNX (1/5 failing, no contact details)
  • MONA (1/4 failing, no contact details)
  • NATURE (3/3 failing, no contact details)
  • NMC (4/5 failing, reported at namecoin/electrum-nmc#336)
  • NVC (2/2 failing, email sent)
  • NYAN (4/4 failing, no contact details)
  • RUNES (3/6 failing, email sent)
  • SCA (3/3 failing, email sent)
  • SIX (3/3 failing, email sent)
  • SMART (5/6 failing, no contact details. Not present in coins file?)
  • tBCH (2/4 failing, no contact details)
  • TRC (1/3 failing, no contact details)
  • UIS (1/2 failing, no contact details)
  • UNO (2/2 failing, no contact details)
  • VRM (1/1 failing, email sent)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.