Skip to content

⛓ JavaScript library containing aggregated information and abstractions for Web3 blockchains.

License

Notifications You must be signed in to change notification settings

DePayFi/web3-blockchains

Repository files navigation

Quickstart

yarn add @depay/web3-blockchains

or

npm install --save @depay/web3-blockchains
import Blockchains from '@depay/web3-blockchains'

Blockchains.all
// [
//   { name: 'ethereum', id: '0x1', label: 'Ethereum', logo: '...' },
//   { name: 'bsc', id: '0x38', label: 'Binance Smart Chain', logo: '...' },
//   ...
// ]

Blockchains.findByName('ethereum')
// { name: 'ethereum', id: '0x1', label: 'Ethereum', logo: '...' }

Blockchains.findById('0x1')
// { name: 'ethereum', id: '0x1', label: 'Ethereum', logo: '...' }

Blockchains.findByNetworkId(1)
// { name: 'ethereum', id: '0x1', label: 'Ethereum', logo: '...' }

or

import { all, findByName, findById, findByNetworkId } from '@depay/web3-blockchains'

all
// [
//   { name: 'ethereum', id: '0x1', label: 'Ethereum', logo: '...' },
//   { name: 'bsc', id: '0x38', label: 'Binance Smart Chain', logo: '...' },
//   ...
// ]

findByName('ethereum')
// { name: 'ethereum', id: '0x1', label: 'Ethereum', logo: '...' }

findById('0x1')
// { name: 'ethereum', id: '0x1', label: 'Ethereum', logo: '...' }

findByNetworkId(1)
// { name: 'ethereum', id: '0x1', label: 'Ethereum', logo: '...' }

or

import Blockchains from '@depay/web3-blockchains'

Blockchains['ethereums']
// { name: 'ethereum', id: '0x1', label: 'Ethereum', logo: '...' }

Support

This library supports the following blockchains:

Data Structure

Blockchain data is provided in the following structure:

{
  name: String, // e.g. ethereum, bsc ...
  id: String, // e.g. 0x1, 0x38, ...
  networkId: String, // 1, 56, ...
  namespace: String, // eip155, solana, ...
  label: String, // Ethereum, Binance Smart Chain ...
  fullName: String, // Ethereum Mainnet, Binance Smart Chain Mainnet ...
  logo: String, // base64 data or URL (logo for colored or dark background)
  logoBackgroundColor: String // hex color
  logoWhiteBackground: String // base64 data or url (logos for white background)
  currency: { Object
    name: String, // Ether, Binance Coin, ...
    symbol: String, // ETH, BNB, ...
    decimals: String, // 18
    address: String, // address or placeholder address
    logo: String, // base64 data or URL,
  },
  wrapped: { Object
    address: String, // address of the wrapped native scurrency
    decimals: Integer, // 18 
    logo: String, // base64 data or URL
  },
  stables: { Object
    usd: [ Array
      { Object
        address: String, // 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
        decimals: Integer, // 18
      }, ...
    ]
  },
  explorer: String (URL), // https://etherscan.io, https://bncscan.com, ...
  explorerUrlFor: Function ({ transaction || token }) returns String, // https://etherscan.io/tx/..., https://etherscan.io/token/...
  endpoints: [ Array
    String (URL), // https://rpc.ankr.com/eth
  ],
  sockets: [ // Array || undefined
    String (URL), // wss://mainnet-beta.solflare.network
  ],
  tokens: [ Array
    { Object
      address: String, // 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
      symbol: String, // USDC
      name: String, // USD Coin
      decimals: Integer, // 6
      logo: String(URL|Data URL), // https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0x853d955aCEf822Db058eb8505911ED77F175b99e/logo.png 
      type: String, // 20
    }, 
  ],
  zero: String, // 0x0000000000000000000000000000000000000000
  maxInt: String, // 115792089237316195423570985008687907853269984665640564039457584007913129639935
  permit2: String, // 0x000000000022D473030F116dDEE9F6B43aC78BA3 (Permit2 contract address)
  blockTime: Integer, // in ms e.g. ethereum 12000 (12s)
}

explorerUrlFor

Transaction

blockchain.explorerUrlFor({ transaction: '0x51ae8875028b7ed004253f679076851abbd3a49e26faf8d7dac6bb283ca10536' })
// https://etherscan.io/tx/0x51ae8875028b7ed004253f679076851abbd3a49e26faf8d7dac6bb283ca10536

Token

blockchain.explorerUrlFor({ token: '0xa0bEd124a09ac2Bd941b10349d8d224fe3c955eb' })
// https://etherscan.io/token/0xa0bEd124a09ac2Bd941b10349d8d224fe3c955eb

Address

blockchain.explorerUrlFor({ address: '0x08B277154218CCF3380CAE48d630DA13462E3950' })
// https://etherscan.io/address/0x08B277154218CCF3380CAE48d630DA13462E3950

Functionalities

all: Retreive all information for all blockchains

import Blockchains from '@depay/web3-blockchains'

Blockchains.all
// [
//   { name: 'ethereum', id: '0x1', networkId: '1', label: 'Ethereum', logo: '...' },
//   { name: 'bsc', id: '0x38', networkId: '56', label: 'Binance Smart Chain', logo: '...' },
//   ...
// ]

findById: Get blockchain by blockchain id

import Blockchains from '@depay/web3-blockchains'

Blockchains.findById('0x1')
// { name: 'ethereum', id: '0x1', networkId: '1', label: 'Ethereum', logo: '...' }

Blockchains.findById('0x38')
// { name: 'bsc', id: '0x38', networkId: '56', label: 'Binance Smart Chain', logo: '...' }

findByName: Get blockchain by blockchain name

import Blockchains from '@depay/web3-blockchains'

Blockchains.findByName('ethereum')
// { name: 'ethereum', id: '0x1', networkId: '1', label: 'Ethereum', logo: '...' }

Blockchains.findByName('bsc')
// { name: 'bsc', id: '0x38', networkId: '56', label: 'Binance Smart Chain', logo: '...' }

findByNetworkId: Get blockchain by network id

import Blockchains from '@depay/web3-blockchains'

Blockchains.findByNetworkId(1)
// { name: 'ethereum', id: '0x1', networkId: '1', label: 'Ethereum', logo: '...' }

Blockchains.findByNetworkId('56')
// { name: 'bsc', id: '0x38', networkId: '56', label: 'Binance Smart Chain', logo: '...' }

Development

Get started

yarn install
yarn dev