主页 > imtoken官网下载2.0苹果版 > 以太坊api 如何使用 Etherscan API
以太坊api 如何使用 Etherscan API
如何使用 Etherscan API
虽然以太坊提供了两个API以太坊api,Json Rpc,geth也提供了一些额外的API,但是对于以太坊应用的开发还是有些不足。 比如获取交易记录的时间,需要先找到交易哈希。 交易对应的block id,然后可以查到对应的时间,查询起来比较不方便。
幸运的是,Etherscan 提供了一些公共 API,这些 API 为我们提供了额外的能力来处理更多的业务场景。
Etherscan API
为了方便开发者更好的使用ethersacn.io,网站提供了一系列API供开发者使用。
指示
API的使用很简单,基本都是get方法,通过http请求直接调用即可,每个Api的文档中都有相应的例子可以查看。
模块介绍
API主要包括以下模块:账户、智能合约、交易、区块、事件日志、代币和工具等。
账户接口
账户相关API包括获取账户金额、获取交易记录等,该模块提供的API最多。
获取单个账户的金额
API范例
)=account&action=balance&address=0xddbd2b932c763ba5b1b7ae3b362eac3e8d40121a&tag=latest&apikey=YourApiKeyToken
参数说明
其中,module、action、apikey是每个API的参数,其他参数对于不同的API是不同的。
返回结果
{"status":"1","message":"OK","result":"670456215218885498951364"}
获取多个账户的金额
API范例
,0x63a9975ba31b0b9626b34300f7f627147df1f526,0x198ef1ec325a96cc354c7266a038be8b5c558f67&tag=latest&apikey=YourApiKeyToken
参数说明
(前面提到的参数不再赘述,下同)
与单一账户金额API相比,参数地址使用一个,数字分隔多个账户,最多支持20个账户的金额查询。
返回结果
{
"message": "OK",
"result": [
{
"account": "0xddbd2b932c763ba5b1b7ae3b362eac3e8d40121a",
"balance": "40807168564070000000000"
},
{
"account": "0x63a9975ba31b0b9626b34300f7f627147df1f526",
"balance": "332567136222827062478"
},
{
"account": "0x198ef1ec325a96cc354c7266a038be8b5c558f67",
"balance": "0"
}
],
"status": "1"
}
获取“正常”的交易记录
API范例
参数说明
返回结果
{
"message": "OK",
"result": [
{
"blockHash": "0x2d0a9228f22fe85596d246040d4fd7dc6b1a55920bae02b68e731d55a890b315",
"blockNumber": "47894",
"confirmations": "5435815",
"contractAddress": "",
"cumulativeGasUsed": "21612",
"from": "0xddbd2b932c763ba5b1b7ae3b362eac3e8d40121a",
"gas": "23000",
"gasPrice": "400000000000",
"gasUsed": "21612",
"hash": "0x7e1503d2001cab2f432b56a62a3ee874782c8e33cbd79a664d155a758c1784a2",
"input": "0x454e34354139455138",
"isError": "0",
"nonce": "1",
"timeStamp": "1438948043",
"to": "0x2910543af39aba0cd09dbb2d50200b3e800a63d2",
"transactionIndex": "0",
"txreceipt_status": "",
"value": "9001000000000000000000"
},
],
"status": "1"
}
获取“内部”交易记录
API范例
参数说明
参数和前面的API基本一样,只是action是txlistinternal。 这两种交易有什么区别? 简单理解就是,“正常”交易会被记录在区块链上,而“内部”交易是指不会被记录在区块链上的记录,比如交易失败的记录。
此外,该API还可以通过交易哈希查看交易明细。
返回结果
{
"message": "OK",
"result": [
{
"blockNumber": "2547619",
"contractAddress": "",
"errCode": "Bad jump destination",
"from": "0x2c1ba59d6f58433fb1eaee7d20b26ed83bda51a3",
"gas": "346878",
"gasUsed": "0",
"hash": "0x2896441f9d1f167b4a3f987d82233e7d238e6a50a227c4b612dbc82f34bb533d",
"input": "",
"isError": "1",
"timeStamp": "1478013203",
"to": "0x20d42f2e99a421147acf198d775395cac2e8b03d",
"traceId": "0",
"type": "call",
"value": "71000000000000000000"
},
],
"status": "1"
}
获取ERC20代币交易事件记录
API范例
https://api.etherscan.io/api?module=account&action=tokentx&contractaddress=0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2&address=0x4e83362442b8d1bec281594cea3050c8eb01311c&page=1&offset=100&sort=asc&apikey=YourApiKeyToken
参数说明
返回结果
{
"message": "OK",
"result": [
{
"blockHash": "0xb3ff25909ae9ae5b65baecab1114dff885fbd5a1607081229ea50b6a2db13ae8",
"blockNumber": "5278009",
"confirmations": "205861",
"contractAddress": "0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2",
"cumulativeGasUsed": "1050219",
"from": "0x4e83362442b8d1bec281594cea3050c8eb01311c",
"gas": "191157",
"gasPrice": "4000000000",
"gasUsed": "97646",
"hash": "0x497f15095877bc06b9e0f422673c1e0f13a2b4224b615ef29ce8c46e249364d1",
"input": "0x73b38101000000000000000000000000000000000000000000000000000000000000003d0000000000000000000000000000000000000000000046aefaa28844d7d839d7",
"nonce": "730",
"timeStamp": "1521386734",
"to": "0x69076e44a9c70a67d5b79d95795aba299083c275",
"tokenDecimal": "18",
"tokenName": "Maker",
"tokenSymbol": "MKR",
"transactionIndex": "28",
"value": "553365126770755906"
},
],
"status": "1"
}
获取已开采区块列表
API范例
https://api.etherscan.io/api?module=account&action=getminedblocks&address=0x9dd134d14d1e65f84b706d6f205cd5b1cd03a46b&blocktype=blocks&page=1&offset=10&apikey=YourApiKeyToken
参数说明
返回结果
{
"message": "OK",
"result": [
{
"blockNumber": "3462296",
"blockReward": "5194770940000000000",
"timeStamp": "1491118514"
},
],
"status": "1"
}
合约API
智能合约相关的API其实只有一个获取智能合约接口的API,但是这个API非常好用。
获取智能合约接口
API范例
https://api.etherscan.io/api?module=contract&action=getabi&address=0xBB9bc244D798123fDe783fCc1C72d3Bb8C189413&apikey=YourApiKeyToken
参数说明
智能合约的abi是一个json对象,我们可以通过它调用它的接口方法,后面会写一篇文章介绍如何操作abi对象,敬请期待。
返回结果
返回结果内容比较长,这里省略,是一个json对象,有兴趣的可以调用这个接口查看结果。
使用限制
账户和智能合约API已经可以满足大部分业务需求。 其他模块的API好像用处不大,这里就不介绍了。 感兴趣的读者可以自行查阅。
这里先说说API的使用限制。 如前所述,每个 API 都有一个 apikey 参数。 如果API不加这个参数,每个API的请求次数不能超过每秒5次。
总结
Etherscan提供的这些API有一些和以太坊提供的API是重复的,比如获取账户金额,获取事件日志记录等,但是有些API给我们带来了很大的方便,比如获取账户交易记录,有了这个API,就有了各种数据拼接无需使用多个原生API。
另外,Etherscan API在Rinkeby测试网中也有相同的一套以太坊api,唯一不同的是之前的url不同。 Rinkeby的是:api-rinkeby.etherscan.io,有兴趣的同学可以试试。