npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

crypto-db

v1.2.2

Published

Cryptocurrencies Database

Downloads

8

Readme

crypto-db

This is a database of all cryptocurrencies. It consists of a file which lists all cryptocurrencies with unique identifiers, together with symbol mapping tables in various namespaces such as cryptocurrency projects and exchanges.

Goal and difference from related works

The goal of crypto-db is to build a comprehensive database of cryptocurrencies and their appearance in namespaces, as well as their evolutions over time. This will help any cryptocurrency holders to identify a cryptocurrency among various namespaces, and any developers to provide interoperability between cryptocurrency-related projects without ambiguity.

Although we already see thorough works such as ones by price aggregators today, the crypto-db aims to identify cryptocurrencies by their underlying artifacts; typical difference is what we call Crypto Action, which keeps track of changes in each cryptocurrency for this purpose.

How to contribute

Please make PRs, and join the group of Crypto Numismatists.

How to check consistency before PR

With Python (>=3.6), your changes can be checked if they are consistent in the following way.

$ cd src/python
$ pip install pytest
$ pytest

File structure

  • ids.json - where cryptocurrencies are defined

    • id - CryptoID, a unique identifier for each cryptocurrency.
    • symbol - widely-used ticker symbol of this cryptocurrency. Unique in this file. Can be changed later. If different cryptocurrencies claim a same symbol in different namespaces, the symbol in this file might be different from those in the namespaces to avoid ambiguity. Also, if the currency saw a branding change while keeping the underlying blockchain or token intact, this symbol might reflect the new brand.
    • name - name of the cryptocurrency. Can be changed later.
  • crypto-actions.json - records cryptocurrency events related to its brand, blockchain or token. Crypto Action is analogous to Corporate Action in traditional assets.

    • action_id - unique identifier of this Crypto Action, starting with "CA" followed by 10 random characters as in CryptoID.
    • ids - related CryptoIDs.
    • type - currently "Symbol Change", "Token Swap" and "Mainnet Launch" are identified.
    • description - description of this Crypto Action.
    • reported - (optional) time in ISO8601 when this action was first announced or reported.
    • executed - (optional) time in ISO8601 when this action is executed or planned to execute.
  • map-for-<accuracy|coverage>/<namespace>.json - defines a map between a symbol in a namespace to id. See 'About map-for-accuracy and map-for-coverage' below for detail.

    • ns_id - identifier in the namespace.
    • id - corresponding CryptoID.
    • from - (optional) UTC in ISO8601 specifying when this mapping is enabled. Inclusive.
    • to - (optional) UTC in ISO8601 specifying when this mapping is disabled. Exclusive.
    • ns_[key] - (varies) additional, arbitrary information about ns_id, such as the name of the cryptocurrency in the namespace.
  • composite/<namespace>.json - define a mapping from one ns_id to multiple CryptoIDs when the namespace consider multiple CryptoIDs as one cryptocurrency. This is often used to chart prices continuously before and after crypto-actions.

    • composite_id - unique identifier for this composite, starting with "CC" followed by 10 random characters as in CryptoID.
    • ns_id - id in the namespace.
    • ids - CryptoIDs which compose this composite.

About CryptoID

CryptoID is used to uniquely identify a cryptocurrency and represents one blockchain or one token contract on a blockchain such as ERC20 Token on Ethereum. The following construction method is designed to make CryptoIDs language-safe in English while enabling concurrent multiple PRs without conflicting each other.

CryptoID consists of twelve characters starting with "C", followed by eleven characters each of which is randomly picked from "TNLDPHGFYWKVXZJQ" without repetition. They are alphabet characters, excluding the five frequently-used characters and all vowels in English, as well as three characters commonly used in cryptocurrency symbols.

CryptoID will be issued for a coin or a token which is (was) listed at least one crypto exchange.

About map-for-accuracy and map-for-coverage

Both files define a map from cryptocurrency identifiers in a certain namespace to CryptoIDs.

If your priority is to have an accurate mapping, use map-for-accuracy. If your priority is to map as many symbols as possible, use map-for-coverage.

map-for-accuracy tries to define all identifiers in the namespace. If a namespace comes up with a new symbol, and if the symbol isn't in this map, you can assume the CryptoID of the symbol is not defined yet. Because new currencies would appear and be listed any time, this map tends to follow behind to reflect the latest status.

map-for-coverage also defines a map from a namespace's identifier to CryptoID, as difference from symbols defined in ids.json. In other words, this can used as a list of the overwritten to ids.json. If a namespace comes up with a new symbol, and if the symbol is not in this coverage map but found in ids.json instead, then you might assume the namespace's symbol is the same as the one in ids.json and find its CryptoID.

TODO

Archive contents of sources in crypto-actions.json so that they can be reviewed in future even if the original sources cease to exist.