0.1.0-beta.2 • Published 2 years ago

@web3-systems/chainscan-client v0.1.0-beta.2

Weekly downloads
-
License
MIT
Repository
-
Last release
2 years ago

Chainscan Client

Build GPLv3 license

A multichain Etherscan/Clone API client library.

The @web3-systems/chainscan-client was designed to interface with multiple chainId explorer endpoints. That means support for Etherscan, Polygonscan and Snowtrace mainnet/testnet API service providers.

Current Supported Explorers

  • Etherscan (Ethereum)
    • Mainnet
    • Ropsten
    • Rinkeby
    • Goerli
    • Kovan
  • Polygonscan (Polygon)
    • Mainnet
    • Mumbai
  • Snowtrace (Avalanche)
    • Mainnet
    • Fuji

Installation

Install NPM package:

npm install @web3-systems/chainscan-client
yarn add @web3-systems/chainscan-client

Clone from Github:

git clone https://github.com/web3-systems/chainscan-client

Getting Started

The chainscan-client library is built to support multiple Etherscan/Clonescan service API providers.

A Chainscan client will handle keys and multiple clients, so developers can access Etherscan, Polygonscan and Avalanche with a single instance.

A new ChainscanClient is initialized with defaultChainId and apikey. All chains supported by that provider (e.x. 1,3,4,5) are now available using the single API key passed as the default for Etherscan.

To connect to a new service API provider a new API key must be supplied to the client instance - along with a chainId or provider name.

Initialize

Chain IDs are mapped to service provider(s).

If chainId 1,2,3,4,5,42 is passed Etherscan is the default client.

If chainId 137,8001 is passed Polygonscan is the default client.

If chainId 43114,43114 is passed Snowtrace is the default client.

import { ChainscanClient } from '@web3-systems/chainscan-client';

const client = new ChainscanClient(1, 'etherscan-apikey');

Multiple Connections

import { ChainscanClient } from '@web3-systems/chainscan-client';

let client: ChainscanClient;

// Set API key and default client for all Etherscan API endpoints: 1,2,3,3,5
client = new ChainscanClient(1, 'etherscan-apikey');

// Sets API key for all Polygoncanscan API endpoints: 137, 80001
client.setApiKey(137, 'polygonscan-apikey');

// Get Account Balance from default ChainscanClient
const balanceEthereum = await client.getAccountBalance('0x000...000');

// Get Account Balance using optional chainId parameter
const balancePolygon = await client.getAccountBalance('0x000...000', 137);
const balanceMumbai = await client.getAccountBalance('0x000...000', 80001);

Class: ChainscanClient

Table of contents

Constructors

Properties

Methods

Constructors

constructor

new ChainscanClient(chainId, apiKey)

Parameters

NameType
chainIdnumber
apiKeystring

Defined in

ChainscanClient.ts:48

Properties

chainIdDefault

chainIdDefault: number = 1

Defined in

ChainscanClient.ts:44


clients

Readonly clients: Clients = {}

Defined in

ChainscanClient.ts:46


keys

Readonly keys: ApiKeys = {}

Defined in

ChainscanClient.ts:45

Methods

client

client(chainId, apiKey): AxiosInstance

Parameters

NameType
chainIdnumber
apiKeystring

Returns

AxiosInstance

Defined in

ChainscanClient.ts:60


connect

connect(chainId, apiKey?): AxiosInstance

Parameters

NameType
chainIdnumber
apiKey?string

Returns

AxiosInstance

Defined in

ChainscanClient.ts:65


getAccountBalance

getAccountBalance(address, chainId?): Promise<any>

Parameters

NameType
addressstring
chainId?number

Returns

Promise<any>

Defined in

ChainscanClient.ts:96


getAccountBalanceMulti

getAccountBalanceMulti(addressList, chainId?): Promise<any>

Parameters

NameType
addressListstring[]
chainId?number

Returns

Promise<any>

Defined in

ChainscanClient.ts:101


getAccountERC20TransferEvents

getAccountERC20TransferEvents(contract, address, config, chainId?): Promise<any>

Parameters

NameType
contractstring
addressstring
configBlockPagination
chainId?number

Returns

Promise<any>

Defined in

ChainscanClient.ts:144


getAccountERC721TransferEvents

getAccountERC721TransferEvents(contract, address, config, chainId?): Promise<any>

Parameters

NameType
contractstring
addressstring
configBlockPagination
chainId?number

Returns

Promise<any>

Defined in

ChainscanClient.ts:154


getAccountMinedBlocks

getAccountMinedBlocks(address, config, chainId?): Promise<any>

Parameters

NameType
addressstring
configAccountMinedBlocksConfig
chainId?number

Returns

Promise<any>

Defined in

ChainscanClient.ts:164


getAccountTransactions

getAccountTransactions(address, config, chainId?): Promise<void>

Parameters

NameType
addressstring
configBlockPagination
chainId?number

Returns

Promise<void>

Defined in

ChainscanClient.ts:106


getAccountTransactionsInternal

getAccountTransactionsInternal(address, config, chainId?): Promise<any>

Parameters

NameType
addressstring
configBlockPagination
chainId?number

Returns

Promise<any>

Defined in

ChainscanClient.ts:115


getAccountTransactionsInternalByBlockRange

getAccountTransactionsInternalByBlockRange(startblock, endblock, config, chainId?): Promise<any>

Parameters

NameType
startblockstring
endblockstring
configBlockPagination
chainId?number

Returns

Promise<any>

Defined in

ChainscanClient.ts:129


getAccountTransactionsInternalByHash

getAccountTransactionsInternalByHash(txhash, chainId?): Promise<any>

Parameters

NameType
txhashstring
chainId?number

Returns

Promise<any>

Defined in

ChainscanClient.ts:124


getBlockCountdown

getBlockCountdown(blockno, chainId?): Promise<any>

Parameters

NameType
blocknostring
chainId?number

Returns

Promise<any>

Defined in

ChainscanClient.ts:177


getBlockDailyAvgBlockSize

getBlockDailyAvgBlockSize(startdate, enddate, sort?, chainId?): Promise<any>

Parameters

NameTypeDefault value
startdatestringundefined
enddatestringundefined
sort"asc" | "desc"'asc'
chainId?numberundefined

Returns

Promise<any>

Defined in

ChainscanClient.ts:182


getBlockFromTimestamp

getBlockFromTimestamp(timestamp, closest, chainId?): Promise<any>

Parameters

NameType
timestampstring
closest"before" | "after"
chainId?number

Returns

Promise<any>

Defined in

ChainscanClient.ts:192


getBlockReward

getBlockReward(blockno, chainId?): Promise<any>

Parameters

NameType
blocknostring
chainId?number

Returns

Promise<any>

Defined in

ChainscanClient.ts:201


getContractAbi

getContractAbi(address, chainId?): Promise<any>

Parameters

NameType
addressstring
chainId?number

Returns

Promise<any>

Defined in

ChainscanClient.ts:210


getContractSourceCode

getContractSourceCode(address, chainId?): Promise<any>

Parameters

NameType
addressstring
chainId?number

Returns

Promise<any>

Defined in

ChainscanClient.ts:215


getLogs

getLogs(address, config, chainId?): Promise<any>

Parameters

NameType
addressstring
configLogsGetConfig
chainId?number

Returns

Promise<any>

Defined in

ChainscanClient.ts:224


getStatsTokenSupply

getStatsTokenSupply(contractaddress, chainId?): Promise<any>

Parameters

NameType
contractaddressstring
chainId?number

Returns

Promise<any>

Defined in

ChainscanClient.ts:233


getTransactionReceiptStatus

getTransactionReceiptStatus(address, chainId?): Promise<any>

Parameters

NameType
addressstring
chainId?number

Returns

Promise<any>

Defined in

ChainscanClient.ts:242


getTransactionStatus

getTransactionStatus(address, chainId?): Promise<any>

Parameters

NameType
addressstring
chainId?number

Returns

Promise<any>

Defined in

ChainscanClient.ts:247


setApiKey

setApiKey(chainId, apiKey): void

Parameters

NameType
chainIdnumber
apiKeystring

Returns

void

Defined in

ChainscanClient.ts:77


setApiKeyByServiceProvider

setApiKeyByServiceProvider(serviceProvider, apiKey): void

Parameters

NameType
serviceProviderstring
apiKeystring

Returns

void

Defined in

ChainscanClient.ts:82


setChainId

setChainId(chainId): void

Parameters

NameType
chainIdnumber

Returns

void

Defined in

ChainscanClient.ts:88