Go bindings to the Etherscan.io API, with nearly Full implementation(accounts, transactions, tokens, contracts, blocks, stats), full network support(Mainnet, Ropsten, Kovan, Rinkby, Tobalaba), and only depending on standard library. 😉
Create a API instance and off you go. 🚀
import ( "github.com/nanmu42/etherscan-api" "fmt" ) func main() { // create a API client for specified ethereum net // there are many pre-defined network in package client := etherscan.New(etherscan.Mainnet, "[your API key]") // (optional) add hooks, e.g. for rate limit client.BeforeRequest = func(module, action string, param map[string]interface{}) error { // ... } client.AfterRequest = func(module, action string, param map[string]interface{}, outcome interface{}, requestErr error) { // ... } // check account balance balance, err := client.AccountBalance("0x281055afc982d96fab65b3a49cac8b878184cb16") if err != nil { panic(err) } // balance in wei, in *big.Int type fmt.Println(balance.Int()) // check token balance tokenBalance, err := client.TokenBalance("contractAddress", "holderAddress") // check ERC20 transactions from/to a specified address transfers, err := client.ERC20Transfers("contractAddress", "address","asc", startBlock, endBlock, page, offset) }You may find full method list at GoDoc.
You may apply for an API key on etherscan.
The Etherscan Ethereum Developer APIs are provided as a community service and without warranty, so please just use what you need and no more. They support both GET/POST requests and a rate limit of 5 requests/sec (exceed and you will be blocked).
I am not from Etherscan and I just find their service really useful, so I implement this. 😄
Use of this work is governed by a MIT License.
You may find a license copy in project root.