如何使用 Foundry/forge 在本地生成智能合约的 ABI?

Ana*_*ova 5 abi solidity smartcontracts foundry-forge

我在本地有一个包含多个智能合约的项目,我想生成我的sc.sol智能合约的 ABI。我确实希望使用forge或在本地执行此操作foundry。我知道可以在 Remix 上做到这一点或使用 solc,但我没有这些并且希望仅使用 Foundry/forge。

Pet*_*jda 4

forge build在文件夹中生成合同工件out(默认情况下)。

您可以解析 JSON 工件并阅读该abi部分。

例如使用jqbash 命令:

forge build --silent && jq '.abi' ./out/MyContract.sol/MyContract.json
Run Code Online (Sandbox Code Playgroud)

src/MyContract.sol

pragma solidity ^0.8.21;

contract MyContract {
    function foo() external {}
}
Run Code Online (Sandbox Code Playgroud)

上述命令的输出:

[
  {
    "inputs": [],
    "name": "foo",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  }
]
Run Code Online (Sandbox Code Playgroud)