Web3js

如何使用 web3.js 從 Etherscan 按地址下載合約

  • December 1, 2019

我想使用 Web3js 從 etherscan.io 下載所有合約(開原始碼)。Etherscan 僅提供此類經過驗證的開源合約的列表,其中包含 txHash、名稱及其地址。有沒有辦法編寫一個獲取地址的程序(來自提到的列表),然後下載它的原始碼並保存到本地文件夾。如果是,那麼有沒有辦法只下載版本 ^0.5 的合約原始碼。?

我正在嘗試遵循EtherScan中的此程式碼,並打算動態提供****地址欄位數據執行時/ ,但我不確定如何在 web3.js、node.js 或其他 API 中繼續。另外,我不知道如何打電話?它是在哪裡定義的?$.getJSON

   var Web3 = require('web3');
   var web3 = new Web3(new Web3.providers.HttpProvider());
   var version = web3.version.api;

   $.getJSON('http://api.etherscan.io/api?module=contract&action=getabi&address=0xfb6916095ca1df60bb79ce92ce3ea74c37c5d359', function (data) {
       var contractABI = "";
       contractABI = JSON.parse(data.result);
       if (contractABI != ''){
           var MyContract = web3.eth.contract(contractABI);
           var myContractInstance = MyContract.at("0xfb6916095ca1df60bb79ce92ce3ea74c37c5d359");
           var result = myContractInstance.memberId("0xfe8ad7dd2f564a877cc23feea6c0a9cc2e783715");
           console.log("result1 : " + result);            
           var result = myContractInstance.members(1);
           console.log("result2 : " + result);
       } else {
           console.log("Error" );
       }            
   });

**注意:**我已閱讀此論壇上有關此主題的所有問題,但沒有人提供解決方案。

$指的是 jQuery,您共享的 Etherscan 連結也指出了這一點。在這裡查看他們的文件

我建議下載他們的地址列表,然後像這樣迭代它:

var Web3 = require('web3');
var web3 = new Web3(new Web3.providers.HttpProvider());
var version = web3.version.api;

let addresses = [];
// TODO: Read in CSV data

for (let i = 0; i < addresses.length; i += 1)
 $.getJSON('http://api.etherscan.io/api?module=contract&action=getabi&address=' + addresses[i], function (data) {
       // function body from etherscan
       });

要閱讀 CSV 數據,請查看這個問題

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