Solidity
如何以程式方式從原始碼中獲取 ABI?
是否可以在不使用 solc 編譯器的情況下從原始碼中獲取 ABI?就像我可以通過 etherscan API 獲取已驗證合約的原始碼,我想將其轉換為 ABI。
有沒有辦法用 ether.js 或 web3.js 做到這一點?還是有什麼其他方式?
謝謝你。
理論上,您可以創建自己的程式碼,在給定契約的原始碼的情況下創建契約的 ABI,讀取函式的名稱和參數並生成 javascript/JSON 輸出,但您將重新發明輪子,因為您將實施類似於編譯器的東西。
Web3js 和 Ethersjs 不這樣做。
您可以將合約原始碼放入Remix並編譯它並獲取原始碼。但我想這不是你想要的,因為它將使用 solc。
您可以在 nodejs 中創建一個工具,以在給定一些合約程式碼庫的情況下以程式方式處理 abi 生成,在後台使用“solc”,但添加更多功能,例如動態接收合約的原始碼並編譯它,獲取 abi 和返回它,等等。就像後端一樣,像 Etherscan 和 Remix 一樣。