当前位置: 首页 > article >正文

WEB3——什么是ABI

怎么获得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 文件。需要的话请告诉我。

http://www.lryc.cn/news/2396580.html

相关文章:

  • 嵌入式软件--stm32 DAY 8.5 基础复习总结
  • MMRL: Multi-Modal Representation Learning for Vision-Language Models(多模态表示学习)
  • 贪心算法求解汽车加油问题
  • JVM Full GC 频繁问题排查、优化及解决方案
  • rsync服务的搭建
  • JDK21深度解密 Day 8:Spring Boot 3与虚拟线程整合
  • vscode 配置 QtCreat Cmake项目
  • 排序算法-归并排序与快速排序
  • HTML实现端午节主题网站:龙舟争渡,凭吊祭江诵君赋。
  • uniapp uni-id 如果是正式项目,需自行实现发送邮件的相关功能
  • Spring boot 策略模式
  • websocket在vue中的使用步骤,以及实现聊天
  • C++学习-入门到精通【12】文件处理
  • 第十一篇:MySQL 在分布式系统中的一致性保障与中间件实践
  • Java中如何枚举正则表达式捕获组的名字
  • matlab实现图像压缩编码
  • 如何排查Redis单个Key命中率骤降?
  • 记一次 Starrocks be 内存异常宕机
  • Spring Boot 读取.env文件获取配置
  • LangChain-结合GLM+SQL+函数调用实现数据库查询(一)
  • python训练营打卡第41天
  • 1.3HarmonyOS NEXT统一开发范式与跨端适配:开启高效跨设备应用开发新时代
  • 麒麟v10,arm64架构,编译安装Qt5.12.8
  • ArcGIS Pro 3.4 二次开发 - 布局
  • 基于随机函数链接神经网络(RVFL)的锂电池健康状态(SOH)预测
  • 爱其实很简单
  • 2025年渗透测试面试题总结-匿名[校招]安全工程师(甲方)(题目+回答)
  • PySide6 GUI 学习笔记——常用类及控件使用方法(地址类QUrl)
  • 任务23:创建天气信息大屏Django项目
  • 数学分析——一致性(均匀性)和收敛