WEB3——什么是ABI

article/2025/7/30 5:00:02

怎么获得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.hkcw.cn/article/FaYINBcHDW.shtml

相关文章

本地部署Ollama DeepSeek-R1:8B,接入Cherry Studio

本地部署Ollama DeepSeek-R1:8B,接入Cherry Studio 本教程为本地部署ollama 环境,运行deepseek-r1:8B 模型,并完成cherry studio接入调用。 实现无网环境也可提问模型 一、ollama 环境安装 通过网盘分享的文件:OllamaSetup.ex…

彻底解决Win11文件资源管理器预览窗格无法预览问题

国内某几个流氓软件(W*S、*狗PDF...),耗子尾之!!! (转载)Windows中PDF TXT Excel Word PPT等Office文件在预览窗格无法预览的终级解决方法大全 https://zhuanlan.zhihu.com/p/4542…

竞争加剧,美团的战略升维:反内卷、科技与全球化

5月26日,美团发布2025年第一季度业绩报告,交出了一份兼具韧性与创新性的成绩单。 报告显示,公司一季度总营收866亿元,同比增长18%;核心本地商业收入643亿元,同比增长18%;季度研发投入58亿元&a…

【unity游戏开发——编辑器扩展】AssetPostprocessor和AssetImporter对导入的资源进行统一的预处理

注意:考虑到编辑器扩展的内容比较多,我将编辑器扩展的内容分开,并全部整合放在【unity游戏开发——编辑器扩展】专栏里,感兴趣的小伙伴可以前往逐一查看学习。 文章目录 前言一、AssetPostprocessor1、主要特点2、常用回调方法3、…

代码随想录算法训练营 Day61 图论ⅩⅠ Floyd A※ 最短路径算法

图论 题目 97. 小明逛公园 本题是经典的多源最短路问题。 在这之前我们讲解过,dijkstra朴素版、dijkstra堆优化、Bellman算法、Bellman队列优化(SPFA) 都是单源最短路,即只能有一个起点。 而本题是多源最短路,即求多…

CATIA高效工作指南——测量分析篇(一)

一、精准重心分析与实时更新技术 1.1 材料属性与几何体重心关联 在复杂零件设计中,重心控制直接影响产品性能。通过CATIA的材料属性系统可实现动态重心跟踪: ​​密度赋值​​:应用材料 → 选择单个几何体 /依次选择多个几何体→ 指定材质…

【PCB工艺】PCB设计中的基本概念

此文结合实例讲解PCB的设计流程和一些基本概念。 🧱 PCB 是什么? PCB(Printed Circuit Board)(即印制线路板) 是电子元器件的载体,是没有焊接任何器件的“裸板”。 PCB只是板子,没有焊接元件,而PCBA可以理解为焊接好元件的完成板子。 简单点说,PCB 只包含:铜线、电源…

深度学习|pytorch基本运算

【1】引言 pytorch是深度学习常用的包,顾名思义,就是python适用的torch包,在python里面使用时直接import torch就可以调用。 需要注意的是,pytorch包与电脑配置、python版本有很大关系,一定要仔细阅读安装要求、找到…

[Windows] 千库/六图素材下载工具

下载链接 夸克网盘分享(点击蓝色自己自行保存下载) 由吾爱大神分享一块下载工具 核心功能:无水印下载,圈网站素材覆盖,下载速度飞起,还能同时下载100个素材 使用方法: 双击运行 千库六图下…

SolidWorks 文件打开时电脑卡顿问题分析与解决

最近遇到一个问题就是我点击solid work的文件的时候会将电脑卡住然后电脑开始飞速的加载内存,鼠标移动很卡顿 解决办法: 1.找到资源管理器 当遇到这种情况时,可以尝试通过资源管理器来解决问题。首先,找到任务管理器&#xff08…

CppCon 2014 学习:Hourglass Interfaces for C++ APIs

共享库(Shared Libraries) 的基本结构和机制。 什么是 Shared Library? 共享库是在多个程序之间共享的一组可执行代码和数据,可以在运行时动态加载。 在 Windows 中通常是 .dll在 Linux 中是 .so(Shared Object&…

<3>, 常用控件

目录 一、控件概述 二、QWidget 核心属性 1, 核心属性列表 2,enabled 3,geometry 4,windowTitle 5,windowIcon 6,windowOpacity 7,font 8,toolTip 9,focusPol…

基于微服务架构的社交学习平台WEB系统的设计与实现

设计(论文)题目 基于微服务架构的社交学习平台WEB系统的设计与实现 摘 要 社交学习平台 web 系统要为学习者打造一个开放、互动且社交性强的在线教育环境,打算采用微服务架构来设计并实现一个社交学习平台 web 系统,以此适应学…

uboot启动流程分析之uboot启动阶段

uboot启动可分为汇编语言执行和C语言执行两个阶段,两个阶段以_main函数为分界。 uboot第一阶段由_start (arch/arm/lib/vectors.S)进入,然后跳转到reset(arch/arm/cpu/armv7/start.S)函数, reset函数进行设置CPU运行模式,关闭中断等一系列CP…

QT学习教程(十一)

​​​​​​实现文件菜单(Implementing the File Menu) 我们实现与文件菜单有关的槽函数和相关的私有函数,以使文件菜单可以工作,同时管理最近打开文件列表。 void MainWindow::newFile(){if (okToContinue()) { spreadsheet-…

【MATLAB代码】制导方法——平行接近法引导,二维环境,动态目标|附代码的下载链接

平行接近法是一种导引方法,其目标是保持目标瞄准线在空间中的平行移动。 本文所述的代码实现了二维平行接近法导引的动态仿真,模拟导弹追踪移动目标的过程。通过实时调整导弹速度方向,确保其逐渐逼近目标,最终在设定距离内完成拦截…

解决win自动重启(自用,留链接)

2025-05-30修改,如果再出现重启回来修改。没动静就是没事了 1、依据系统事件查看器确认错误代码 事件查看器步骤 (上图没啥用) 下图错误代码,如果原因一致 2、禁用“用户体验改善计划”点击此处步骤

AI入门示例

市面上有很多AI大模型,这里以 智谱的大模型 为示例 1.先要注册智谱AI开放平台 2.注册成功后,会赠送3个月的免费额度,如下 3.然后去控制台,创建一个API KEY 4.接着就可以开始写代码了 提前导入包: openai 示例1&…

仿真每日一练 | 静力学分析与动力学分析的区别

很多有限元初学者都在纠结一个问题,就是静力学分析和动力学分析有什么区别,今天以一个时变载荷的例子,带大家领悟其中奥妙。 首先来了解一下二者的物理方程: 静力学所解决的问题:KxF 动力学所解决的问题&#xff1…

Python数据处理中的查找和排序使用详解

概要 在编程中,查找和排序是两个常见且重要的操作,几乎所有数据处理任务都会涉及到这两个内容。Python 作为一门功能强大的编程语言,为我们提供了多种查找和排序的方式,不仅包括内置函数,还支持通过算法来自定义操作。本文将详细介绍 Python 中常用的查找与排序方法,包括…