Skip to content

Latest commit

 

History

History
83 lines (61 loc) · 2.78 KB

README_ZH.md

File metadata and controls

83 lines (61 loc) · 2.78 KB

English | 中文

etherscan-api

GoDoc CI status codecov Go Report Card

Etherscan API的Golang客户端, 支持几乎所有功能(accounts, transactions, tokens, contracts, blocks, stats), 所有公共网络(Mainnet, Ropsten, Kovan, Rinkby, Goerli, Tobalaba)。 本项目只依赖于官方库。 😉

使用方法

go get github.com/nanmu42/etherscan-api

填入网络选项和API Key即可开始使用。 🚀

import (
	"github.com/nanmu42/etherscan-api"
	"fmt"
)

func main() {
	// 创建连接指定网络的客户端
	client := etherscan.New(etherscan.Mainnet, "[your API key]")
	
	// 或者,如果你要调用的是EtherScan家族的BscScan:
	//
	// client := etherscan.NewCustomized(etherscan.Customization{
	// Timeout:       15 * time.Second,
	// Key:           "You key here",
	// BaseURL:       "https://api.bscscan.com/api?",
	// Verbose:       false,
	// })	
	
	// (可选)按需注册钩子函数,例如用于速率控制
	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) {
		// ...
	}

	// 查询账户以太坊余额
	balance, err := client.AccountBalance("0x281055afc982d96fab65b3a49cac8b878184cb16")
	if err != nil {
		panic(err)
	}
	// 余额以 *big.Int 的类型呈现,单位为 wei
	fmt.Println(balance.Int())

	// 查询token余额
	tokenBalance, err := client.TokenBalance("contractAddress", "holderAddress")

	// 查询出入指定地址的ERC20转账列表
	transfers, err := client.ERC20Transfers("contractAddress", "address", startBlock, endBlock, page, offset)
}

客户端方法列表可在GoDoc查询。

Etherscan API Key

API Key可以在etherscan申请。

Etherscan的API服务是一个公开的社区无偿服务,请避免滥用。 API的调用速率不能高于5次/秒,否则会遭到封禁。

利益声明

我和Etherscan没有任何联系。我仅仅是觉得他们的服务很棒,而自己又恰好需要这样一个库。 😄

许可证

MIT

请自由享受开源,欢迎贡献开源。