Web3js
如何使用 web3.js 從 Etherscan 按地址下載合約
我想使用 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 數據,請查看這個問題。