An open API service indexing awesome lists of open source software.

https://github.com/haxpor/evmscan

Rust binding of non-async API for EVM-based chains working with API platforms of bscscan.com, etherscan.io, and polygonscan.com
https://github.com/haxpor/evmscan

api binance bsc bscscan rust

Last synced: 6 months ago
JSON representation

Rust binding of non-async API for EVM-based chains working with API platforms of bscscan.com, etherscan.io, and polygonscan.com

Awesome Lists containing this project

README

          

# evmscan
evmscan is a non-async API in Rust that supports working with bscscan.com, etherscan.io,
and polygonscan.com.

Native token associated with each platform API is as follows

* bscscan - BNB
* etherscan - ETH
* polygonscan - MATIC

**WIP** and will be gradually filled with APIs as provided on bscscan.com side.

# API supports

See which APIs this project supports as seen in checking mark below.

## Accounts
- [x] Get native token balance for a single address
- [x] Get native token balance for multiple addresses in a single cal
- [ ] `PRO API` Get historical native token balance for a single address by block number
- [x] Get a list of normal transactions by address (limited by API to only maximum of 10,000 records)
- [x] Get a list of internal transactions by address (limited by API to only maximum of 10,000 records)
- [ ] Get 'internal transactions' by transaction hash
- [ ] Get 'internal transactions' by block range
- [x] Get a list of ERC-20/BEP-20 token transfer events from an EOA address (specify `address`)
- [ ] Get a list of ERC-20/BEP-20 token transfer events from a contract address (specify `contractaddress`)
- [ ] Get a list of ERC-20/BEP-20 token transfer events from an EOA address filtered by a token contract (specify `address` and `contractaddress`)
- [ ] Get a list of BEP-721/BEP-20 token transfer events from an EOA address (specify `address`)
- [ ] Get a list of BEP-721/BEP-721 token transfer events from a contract address (specify `contractaddress`)
- [ ] Get a list of BEP-721/BEP-721 token transfer events from an EOA address filtered by a token contract (specify `address` and `contractaddress`)
- [ ] Get a list of blocks validated by address

## Contracts

- [x] Get contract ABI for verified contract source code
- [x] Get contract source code for verified contract source codes
- [ ] Verify source code
- [ ] Verify proxy contract

## Transactions

- [ ] Check transaction receipt status

## Blocks

- [ ] Get block rewards by block number
- [ ] Get estimated block countdown time by block number
- [ ] Get block number by timestamp
- [ ] `PRO API` Get daily average block size
- [ ] `PRO API` Get daily block count and rewards
- [ ] `PRO API` Get daily block rewards
- [ ] `PRO API` Get daily average time for a block to be included in the native token blockchain

## Logs

- [ ] Get logs using filter parameters

## Geth Proxy

- [ ] `eth_blockNumber` - returns the number of most recent block
- [ ] `eth_getBlockByNumber` - returns information about a block by block number
- [ ] `eth_getBlockTransactionCountByNumber` - returns the number of transactions in a block
- [ ] `eth_getTransactionByHash` - returns information about a transaction requested by transaction hash
- [ ] `eth_getTransactionByBlockNumberAndIndex` - returns information about a transaction by block number and transaction index position
- [ ] `eth_getTransactionCount` - returns the number of transactions performed by an address
- [ ] `eth_sendRawTransaction` - submits a pre-signed transaction for broadcast to the native token Smart Chain network
- [ ] `eth_getTransactionReceipt` - returns the receipt of a transaction that has been validated
- [ ] `eth_call` - executes a new message call (read function) immediately without creating a transaction on the blockchain
- [ ] `eth_getCode` - returns code a given address
- [ ] `eth_getStorageAt` (`experimental`) - returns the value from a storage position at a given address
- [ ] `eth_gasPrice` - returns the current price per gas in wei
- [ ] `eth_estimateGas` - makes a call or transaction, which won't be added to the blockchain and returns the gas used

## Tokens

- [ ] Get ERC-20/BEP-20 token total supply by contract address
- [ ] Get ERC-20/BEP-20 token circulating supply by contract address
- [ ] Get ERC-20/BEP-20 token account balance by contract address
- [ ] `PRO API` Get token holder list by contract address
- [ ] `PRO API` Get historical ERC-20/BEP-20 token total supply by contract address & block number
- [ ] `PRO API` Get historical ERC-20/BEP-20 token account balance by contract address & block number
- [ ] `PRO API` Get token info by contract address
- [ ] `PRO API` Get address ERC-20/BEP-20 token holding
- [ ] `PRO API` Get address 'BEP-721' token holding
- [ ] `PRO API` Get address 'BEP-721' token inventory by contract address

## Gas Tracker

- [ ] Get gas oracle
- [ ] `PRO API` Get daily average gas limit
- [ ] `PRO API` Get native token Smart Chain Daily total gas used
- [ ] `PRO API` Get daily average gas price

## Stats

- [ ] Get total supply of native token on the blockchain
- [ ] Get validators list on the blockchain
- [x] Get native token last price
- [ ] `PRO API` Get native token historical price
- [ ] `PRO API` Get daily network transaction fee
- [ ] `PRO API` Get daily new address count
- [ ] `PRO API` Get daily network utilization
- [ ] `PRO API` Get daily transaction count

# Test

As this library manages accessing to 3 different API platforms, thus in order to
test all of them, users need to define api key for those platforms before running
the test.

* Grab api keys for all 3 API platforms (bscscan.com, etherscan.io, polygonscan.com)
* Define `EVMSCAN_TEST_BSCSCAN_APIKEY`, `EVMSCAN_TEST_ETHERSCAN_APIKEY`, and `EVMSCAN_TEST_POLYGONSCAN_APIKEY`.
* `cargo test`

# License
MIT, Wasin Thonkaew