bscscan 0.5.0

BSC (Binance Smart Chain) non-async API in Rust
Documentation
# bscscan
bscscan.com non-async API in Rust

**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 BNB balance for a single address
- [x] Get BNB balance for multiple addresses in a single cal
- [ ] `PRO API` Get historical BNB 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 'BEP-20' token transfer events from an EOA address (specify `address`)
- [ ] Get a list of 'BEP-20' token transfer events from a contract address (specify `contractaddress`)
- [ ] Get a list of 'BEP-20' token transfer events from an EOA address filtered by a token contract (specify `address` and `contractaddress`)
- [ ] Get a list of 'BEP-721' token transfer events from an EOA address (specify `address`)
- [ ] Get a list of 'BEP-721' token transfer events from a contract address (specify `contractaddress`)
- [ ] Get a list of '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 BNB Smart Chain

## 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 BNB 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 'BEP-20' token total supply by contract address
- [ ] Get 'BEP-20' token circulating supply by contract address
- [ ] Get 'BEP-20' token account balance by contract address
- [ ] `PRO API` Get token holder list by contract address
- [ ] `PRO API` Get historical 'BEP-20' token total supply by contract address & block number
- [ ] `PRO API` Get historical 'BEP-20' token account balance by contract address & block number
- [ ] `PRO API` Get token info by contract address
- [ ] `PRO API` Get address '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 BNB Smart Chain Daily total gas used
- [ ] `PRO API` Get daily average gas price

## Stats

- [ ] Get total supply of BNB on the BNB Smart Chain
- [ ] Get validators list on the BNB Smart Chain
- [x] Get BNB last price
- [ ] `PRO API` Get BNB 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

* Define your bscscan.com's api key via environment variable namely `BSCSCAN_TEST_APIKEY` (this is used for cargo testing only, you don't have to define it to use this library).
* Execute `cargo test`.

# License
MIT, Wasin Thonkaew