怎么获得ABI?
在编译完合约后,可以在左边下面点击复制ABI

ABI(Application Binary Interface ,应用二进制接口)是用来让前端或服务端 JavaScript 代码与智能合约进行交互的桥梁 ,它描述了合约的函数、事件和结构信息。
🔍 简单理解 ABI 的作用:
你可以把 ABI 想成"说明书"或"函数清单",它告诉你:
-
合约有哪些方法(比如
mint
,ownerOf
,balanceOf
); -
每个方法需要哪些参数,返回什么;
-
哪些是
view
函数(不花费 gas),哪些是transaction
函数(会消耗 gas); -
有没有事件(event),事件结构是怎样的。
📦 示例 ABI(JSON 格式):
[
{
"inputs": [
{
"internalType": "string",
"name": "tokenURI",
"type": "string"
}
],
"name": "mint",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "tokensOfOwner",
"outputs": [
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
}
]
🛠 ABI 的用途
你在 NestJS 或前端项目中这样使用:
import { ethers } from 'ethers';
import SimpleNFTABI from './SimpleNFT.abi.json';
const contract = new ethers.Contract(contractAddress, SimpleNFTABI, signerOrProvider);
你能用 contract.mint(...)
、contract.tokensOfOwner(...)
就是因为 ABI
里定义了这些函数。
✅ 怎么获取 ABI?
在你用 Hardhat / Foundry / Remix / Truffle 编译完合约后,可以在这些路径找到 ABI:
🔹 Hardhat:
artifacts/contracts/SimpleNFT.sol/SimpleNFT.json
打开里面,你会看到一段很长的 JSON,其中包含:
-
abi
-
bytecode
-
metadata
你只需要复制 abi
部分即可。
📝 总结一句话:
ABI 是连接你写的智能合约和外部应用(前端 / 后端)的"函数说明书" ,编译合约后拷贝
abi
部分,就能让程序识别你合约有哪些功能,怎么调用。
如果你想,我可以帮你提取你合约对应的 ABI JSON,并打包成一个 SimpleNFT.abi.json
文件。需要的话请告诉我。