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

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.xdnf.cn/news/724501.html

相关文章:

  • 包管理工具
  • RocketMQ 死信队列(DLQ)实战:原理 + 开发 + 运维 + 架构应用指南
  • 云原生 Cloud Native Build (CNB)使用初体验
  • 相机--RGBD相机
  • 移动安全Android——客户端数据安全
  • 英语中最难学的部分是时态‌
  • 深入解析 Redis Cluster 架构与实现(一)
  • Spring Web高保真Axure动态交互元件库
  • Axure疑难杂症:中继器图片替换功能优化(支持修改已有记录-玩转中继器)
  • 直播预告 | 聚焦芯必达|打造可靠高效的国产 MCU 与智能 SBC 汽车解决方案
  • AI生态警报:MCP协议风险与应对指南(下)——MCP Host安全
  • 鸿蒙OSUniApp导航栏组件开发:打造清新简约的用户界面#三方框架 #Uniapp
  • Pyenv 使用指南:多版本 Python 环境管理
  • 视频加密技术和防翻录技术有哪些?
  • linux、docker、git相关操作
  • 当 Python 遇上 Go:Sponge 如何成为替代 Django/Flask 的理想选择
  • 论文略读:Surge Phenomenon in Optimal Learning Rate and Batch Size Scaling
  • 实验分享|基于sCMOS相机科学成像技术的耐高温航空涂层材料损伤检测实验
  • 相机--RGB相机
  • 大厂前端研发岗位PWA面试题及解析
  • 【仿生机器人软件架构】通过整合认知系统实现自主精神性——认知系统非常具有可执行性
  • 同元软控、核动力研究院与华北电力大学产学研联合实训室正式揭牌
  • 设备远程调试新利器:御控网关开启PLC高效运维新时代
  • 【JavaWeb】Maven、Servlet、cookie/session
  • Hive的GROUP BY操作如何优化?
  • 每个路由器接口,都必须分配所属网络内的 IP 地址,用于转发数据包
  • 历年四川大学计算机保研上机真题
  • 【动手学深度学习】2.5. 自动微分
  • VUE中created() 和 mounted()俩种生命周期钩子函数的区别
  • 【Doris基础】Doris中的Tablet详解:核心存储单元的设计与实现