如何使用 Etherscan 的 API

如何使用 Etherscan 的 API

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

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

Etherscan api

為了方便開發人員更好地使用ethersacn.io,網站提供了一系列 API 供開發人員使用。

使用方法

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

模塊介紹

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

賬號 API

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

獲取單個賬號金額

API 示例

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

參數說明

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

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

返回結果

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

獲取多個賬號金額

API 示例

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

參數說明

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

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

返回結果

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

獲取”正常”交易記錄

API 示例

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

參數說明

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

返回結果

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

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

參數說明

參數與上一個 API 基本相同,只有actiontxlistinternal這一點不同,這 2 種交易的區別是什么呢?簡單的理解就是“正常”的交易是會記錄到區塊鏈上的,而“內部”交易是指不會記錄到區塊鏈上的記錄,比如交易失敗的記錄。

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

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

返回結果

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

參數說明

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

返回結果

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

參數說明

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

返回結果

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

參數說明

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

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

返回結果

返回結果內容比較長,這里省略,就是一個 json 對象,感興趣的可以自行調用該 API 看結果。

使用限制

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

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

總結

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

另外Etherscan的這套 API 在 Rinkeby 測試網絡也有一套一模一樣的,區別只是前面的 url 不同,Rinkeby 的是:api-rinkeby.etherscan.io,感興趣的同學可以去試試。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,156評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,401評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,069評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,873評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,635評論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,128評論 1 323
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,203評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,365評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,881評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,733評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,935評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,475評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,172評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,582評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,821評論 1 282
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,595評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,908評論 2 372

推薦閱讀更多精彩內容

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