如何使用 Etherscan 的 API

如何使用 Etherscan 的 API

雖然以太坊提供了 Web3Json Rpc 這 2 種 API,geth 也額外提供了一些 API,但是對于開發(fā)以太坊應(yīng)用來說還是顯得有些不足,比如說獲取交易記錄的時間,需要先通過交易的 hash 找到該交易對應(yīng)的區(qū)塊 id,然后才能找到對應(yīng)的時間,查詢起來相當(dāng)不方便。

好在Etherscan對外提供了一些公共的 API,給我們提供了額外的能力來處理更多的業(yè)務(wù)場景。

Etherscan api

為了方便開發(fā)人員更好地使用ethersacn.io,網(wǎng)站提供了一系列 API 供開發(fā)人員使用。

使用方法

API 的使用非常簡單,基本上都是 get 方法,通過 http 請求就可以直接調(diào)用,在每個 Api 的說明文檔都有對應(yīng)的例子可以查看。

模塊介紹

API 主要包含以下模塊:賬號、智能合約、交易、區(qū)塊、事件日志、代幣及工具等。

賬號 API

賬號相關(guān)的 API,有獲取賬號金額,獲取交易記錄等,該模塊提供的 API 最多。

獲取單個賬號金額

API 示例

https://api.etherscan.io/api?module)=account&action=balance&address=0xddbd2b932c763ba5b1b7ae3b362eac3e8d40121a&tag=latest&apikey=YourApiKeyToken

參數(shù)說明

  • module:對應(yīng)的模塊名稱,這里是賬戶模塊,所以是moudle=account
  • action:對應(yīng)的操作,這里是balance,即獲取金額。
  • address:要查詢金額的賬號地址。
  • tag:之前在介紹 geth 的 API 時講過獲取賬號金額需要 2 個參數(shù),一個是賬號地址,另外一個就是 tag,一般寫latest就可以了。
  • apikey:你在Etherscan上創(chuàng)建的 apikey,帶上沒有請求的限制,也可以不帶,下面會介紹 API 的請求限制。

其中module、action、apikey是每個 API 都有的參數(shù),其他的參數(shù)則因不同 API 而不同。

返回結(jié)果

{"status":"1","message":"OK","result":"670456215218885498951364"}

獲取多個賬號金額

API 示例

https://api.etherscan.io/api?module=account&action=balancemulti&address=0xddbd2b932c763ba5b1b7ae3b362eac3e8d40121a,0x63a9975ba31b0b9626b34300f7f627147df1f526,0x198ef1ec325a96cc354c7266a038be8b5c558f67&tag=latest&apikey=YourApiKeyToken

參數(shù)說明

(前面有講過的參數(shù)就不講了,下同)

與單個賬號金額 API 相比,參數(shù)address,號分隔多個賬號,最多可支持 20 個賬號的金額查詢。

返回結(jié)果

{
    "message": "OK",
    "result": [
        {
            "account": "0xddbd2b932c763ba5b1b7ae3b362eac3e8d40121a",
            "balance": "40807168564070000000000"
        },
        {
            "account": "0x63a9975ba31b0b9626b34300f7f627147df1f526",
            "balance": "332567136222827062478"
        },
        {
            "account": "0x198ef1ec325a96cc354c7266a038be8b5c558f67",
            "balance": "0"
        }
    ],
    "status": "1"
}

獲取”正?!苯灰子涗?/h4>

API 示例

https://api.etherscan.io/api?module=account&action=txlist&address=0xddbd2b932c763ba5b1b7ae3b362eac3e8d40121a&startblock=0&endblock=99999999&page=1&offset=10&sort=asc&apikey=YourApiKeyToken

參數(shù)說明

  • action:為txlist,表示列出交易記錄。
  • address:要查詢交易記錄的賬號地址。
  • startblock:起始查詢塊 id,可選,默認(rèn)值為 0。
  • endblock:結(jié)束查詢塊 id,可選,默認(rèn)值為最后一個區(qū)塊。
  • page: 頁數(shù)(沒錯,這個 API 還支持分頁),可選。
  • offset: 查詢到記錄數(shù),可選,默認(rèn)是查詢 10000 條記錄。
  • sort: 排序規(guī)則,可以正序asc和倒序desc。

返回結(jié)果

{
    "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"
}

獲取”內(nèi)部”交易記錄

API 示例

https://api.etherscan.io/api?module=account&action=txlistinternal&address=0x2c1ba59d6f58433fb1eaee7d20b26ed83bda51a3&startblock=0&endblock=2702578&page=1&offset=10&sort=asc&apikey=YourApiKeyToken

參數(shù)說明

參數(shù)與上一個 API 基本相同,只有actiontxlistinternal這一點不同,這 2 種交易的區(qū)別是什么呢?簡單的理解就是“正?!钡慕灰资菚涗浀絽^(qū)塊鏈上的,而“內(nèi)部”交易是指不會記錄到區(qū)塊鏈上的記錄,比如交易失敗的記錄。

另外這個 API 還可以通過交易 hash 查看交易的詳情。

https://api.etherscan.io/api?module=account&action=txlistinternal&txhash=0x40eb908387324f2b575b4879cd9d7188f69c8fc9d87c901b9e2daaea4b442170&apikey=YourApiKeyToken

返回結(jié)果

{
    "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

參數(shù)說明

  • action: 值為tokentx,表示查詢代幣交易記錄。
  • contractaddress: 代幣的智能合約地址。
  • address: 只查詢和該賬戶地址相關(guān)的記錄,可選。

返回結(jié)果

{
    "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"
}

獲取已開采的區(qū)塊列表

API 示例

https://api.etherscan.io/api?module=account&action=getminedblocks&address=0x9dd134d14d1e65f84b706d6f205cd5b1cd03a46b&blocktype=blocks&page=1&offset=10&apikey=YourApiKeyToken

參數(shù)說明

  • action: 值為getminedblocks。
  • blocktype:區(qū)塊類型,可以選區(qū)塊blocks和叔塊uncles,不了解叔塊的可以查看這里。

返回結(jié)果

{
    "message": "OK",
    "result": [
        {
            "blockNumber": "3462296",
            "blockReward": "5194770940000000000",
            "timeStamp": "1491118514"
        },
    ],
    "status": "1"
}

合同 API

智能合約相關(guān)的 API,其實只有一個獲取智能合約接口的 API,但是這個 API 非常有用。

獲取智能合約接口

API 示例

https://api.etherscan.io/api?module=contract&action=getabi&address=0xBB9bc244D798123fDe783fCc1C72d3Bb8C189413&apikey=YourApiKeyToken

參數(shù)說明

  • module: 值為contract
  • action: 值為getabi。
  • address: 智能合約地址。

智能合約的 abi 就是一個 json 對象,通過這個對象我們可以調(diào)用其接口方法,后面會寫一篇文章介紹如何操作 abi 對象,敬請期待。

返回結(jié)果

返回結(jié)果內(nèi)容比較長,這里省略,就是一個 json 對象,感興趣的可以自行調(diào)用該 API 看結(jié)果。

使用限制

賬號和智能合約的 API 已經(jīng)能滿足大部分的業(yè)務(wù)需求了,其他模塊的 API 感覺沒什么太大的作用,這里就不介紹了,感興趣的讀者可以自行查閱。

這里再說下 API 的使用限制,剛才提到每個 API 都有一個apikey參數(shù),如果 API 沒加上這個參數(shù)的話,每個 API 的請求次數(shù)不能超過 5 次每秒。

總結(jié)

Etherscan提供的這些 API 有些是和以太坊提供的 API 有重復(fù)的,比如說獲取賬號金額,獲取事件日志記錄等,但有一些 API 給我們帶來了很大的便利性,比如獲取賬號交易記錄,有了這個 API 就不用使用幾個原生 API 進(jìn)行各種數(shù)據(jù)拼接了。

另外Etherscan的這套 API 在 Rinkeby 測試網(wǎng)絡(luò)也有一套一模一樣的,區(qū)別只是前面的 url 不同,Rinkeby 的是:api-rinkeby.etherscan.io,感興趣的同學(xué)可以去試試。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,502評論 19 139
  • 業(yè)務(wù)架構(gòu) 客戶體系設(shè)計 客戶索引層:以全行統(tǒng)一客戶編號作為唯一鍵建立全行客戶索引,記錄全部客戶的編號及其對應(yīng)的客戶...
    JC1265閱讀 26,928評論 0 28
  • 一 前期工作 手機打橫拍攝!手機打橫拍攝!手機打橫拍攝! 二 “祝鄭老師生日快樂” 對鏡頭喊出固定暗號:“祝鄭老師...
    我也是個難搞的人呢閱讀 663評論 0 0
  • 冬天下了一場雨, 你期待陽光快點來。 冬天下了一場雪, 你期待春天快點來。 最終,冬天給了你當(dāng)下, 未來才給了你期待……
    小劇在成長閱讀 394評論 0 5
  • 2016年3月,就聘你公司技術(shù)人員開始組合,研究全新的招聘平臺,移動互聯(lián)網(wǎng)招聘,就聘你招聘平臺,經(jīng)過長達(dá)8個月的技...
    就聘你閱讀 223評論 0 0

友情鏈接更多精彩內(nèi)容