Solidity

如何以程式方式從原始碼中獲取 ABI?

  • September 7, 2022

是否可以在不使用 solc 編譯器的情況下從原始碼中獲取 ABI?就像我可以通過 etherscan API 獲取已驗證合約的原始碼,我想將其轉換為 ABI。

有沒有辦法用 ether.js 或 web3.js 做到這一點?還是有什麼其他方式?

謝謝你。

理論上,您可以創建自己的程式碼,在給定契約的原始碼的情況下創建契約的 ABI,讀取函式的名稱和參數並生成 javascript/JSON 輸出,但您將重新發明輪子,因為您將實施類似於編譯器的東西。

Web3js 和 Ethersjs 不這樣做。

您可以將合約原始碼放入Remix並編譯它並獲取原始碼。但我想這不是你想要的,因為它將使用 solc。

您可以在 nodejs 中創建一個工具,以在給定一些合約程式碼庫的情況下以程式方式處理 abi 生成,在後台使用“solc”,但添加更多功能,例如動態接收合約的原始碼並編譯它,獲取 abi 和返回它,等等。就像後端一樣,像 Etherscan 和 Remix 一樣。

查看這個項目:https ://github.com/smartcontractkit/solc-api

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