Go-Ethereum

如何從 etherscan api 獲取合約創建程式碼(字節碼)?

  • March 11, 2019

我嘗試了 etherscan api 來獲取合約創建程式碼(用於分解合約的字節碼)。我嘗試了 getContractABI 和 getSourceCode,但返回值不是我所期望的。

我需要契約創建程式碼,如下所示:https ://etherscan.io/address/0xd26114cd6EE289AccF82350c8d8487fedB8A0C07#code

對於我有地址的任何契約

(假設你不只是想打電話web3.eth.getCode(),而且你想要一些基於網路的東西……)

正如您所發現的,API 似乎不支持。

一些可怕的scrape-y Python:

#!/usr/bin/env python

import requests
from bs4 import BeautifulSoup

BASE_URL = "https://etherscan.io/address/"

def main():
   address = str(input("Please input an address: ").strip())

   url = BASE_URL + address
   page = requests.get(url)
   soup = BeautifulSoup(page.text, 'html.parser')

   print(soup.find("div", { "id": "verifiedbytecode2" }).text)

if __name__ == "__main__":
   main()

輸出:

請輸入地址:0xd26114cd6EE289AccF82350c8d8487fedB8A0C07

6003805460a060020a61ffff0219169055600060045560a0604052600860608190527f4f4d47546f6b656e000000000000000000000000000000000000000000000000608090815261005491600591906100c1565b506040805180820190915260038082527f4f4d4700000000000000000000000000000000000000000000000000000000006020909201918252610099916006916100c1565b5060126007555b60038054600160a060020a03191633600160a060020a03161790555b610161565b828054600181600116156101000203166002900490600052602060002090601f0160209 …

請注意,必須驗證契約才能獲得此數據。

我想用 Cheerio/Axios 在 Node 中做類似的事情不會太困難。

引用自:https://ethereum.stackexchange.com/questions/68179