Go-Ethereum
如何使用來自 etherscan API 的 ABI 動態載入合約數據?
我想從我通過 ABI 的使用者地址和 etherscan API 載入的智能合約中提取數據。
但是我將如何以程式方式將 ABI 中的所有功能添加到我的前端?
基本上,假設我想查找加密貓合約並通過 etherscan API 獲取 ABI。
但是我怎麼知道要呼叫或列出哪些函式呢?
假設我想做 etherscan 做的事情,讓你從 abi 呼叫不同的函式?
基本上工作流程:
使用者輸入地址。從 etherscan 中提取 ABI 使用 ABI 載入契約???如何使用 JS 通過 ABI 將所有功能添加到我的前端。???
如何在不知道函式名稱的情況下呼叫函式,例如 getKittyData
您可以通過 get 查詢
axios
,它可以ABI
直接獲取:rpcEndpoint = `...`; addressURL = `...`; const axios = require("axios"); const Web3 = require("web3"); var web3 = new Web3(new Web3.providers.HttpProvider(rpcEndpoint)); async function main() { url = `http://api-kovan.etherscan.io/api?module=contract&action=getabi&address=` + addressURL + `&format=raw`; console.log("Get request at: ", url); res = await axios.get(url); console.log(res.data); } main();
成功輸出:
[{ inputs: [ [Object], [Object] ], name: 'withdraw', outputs: [], stateMutability: 'nonpayable', type: 'function' }, ... { inputs: [], name: 'withdrawable', outputs: [ [Object] ], stateMutability: 'view', type: 'function' } ]
輸出失敗:
Contract source code not verified
您可以使用 Etherscan API 來獲取任何經過驗證的合約的 ABI。有關使用範例,請參閱:https ://etherscan.io/apis#contracts 。
為了在您自己的應用程序中顯示可用的方法,您可以遍歷範例中的“MyContract.methods”。
希望這可以幫助。