共计 1582 个字符,预计需要花费 4 分钟才能阅读完成。
快速了解以太坊开发,快速 get 复杂的技术概念!
Second State 推出以太坊开发 A2Z 系列,结合区块链开发的实际情况,带你了解以太坊开发的点点面面。
这篇文章是该系列的第一篇,为大家讲述智能合约 ABI。
简短版 :区块链智能合约 ABI 是智能合约与区块链应用程序之间的接口。智能合约被像 BUIDL 这样的编译器编译成二进制文件后,会自动生成 ABI。ABI 是 JSON 文本文件,记录了智能合约的 function 和参数。在用户使用区块链应用程序时,需要通过 ABI 来调用智能合约。
什么是 ABI
ABI 是 Application Binary Interface 的缩写,是其他应用程序调用二进制应用程序文件的接口。ABI 是一种约定俗成的规范。
举例来说,夏天打开空调降温,通常需要一个遥控器。我们通过调节遥控器的按钮,来让空调执行制冷,降低 / 调高温度等操作。遥控器就相当于一个 ABI,上面记录了与之相匹配的空调能够实现的功能与参数:制热 / 制热,空调能够达到的最高与最低温度是多少。随着空调本身功能的增多,比如增加了睡眠模式,通风等,遥控器(ABI)上的按钮也会随之丰富起来。
ABI 实现了用户与程序的互动。
以太坊开发中的 ABI
在以太坊 / 区块链开发中,智能合约 ABI 非常常见。智能合约编译后,编译器自动生成 ABI 来记录智能合约的 function 与参数。当区块链应用被使用时,人们通过 ABI 来调用智能合约,实现相关功能。
以区块链基础软件技术公司 Second State 开发的 BUIDL IDE 内置的默认代码为例,合约代码如下:
经过 BUIDL 编译后,我们获得了如下的 ABI。智能合约生成的 ABI 是 JSON 格式的数组,包含两组参数,一个是参数名称,一个是参数值。在调用智能合约时,通过 ABI 了解该智能合约实现了哪些功能,参数又是什么。
[{"constant": false,"inputs": [{"name": "x","type": "uint256"}],"name": "set","outputs": [],"payable": false,"stateMutability": "nonpayable","type": "function"},{"constant": true,"inputs": [],"name": "get","outputs": [{"name": "","type":"uint256"}],"payable": false,"stateMutability":"view","type":"function"}]
注意:ABI 并不是唯一的。如果智能合约实现的功能一样,那么编译出的 ABI 也是一样的。
当我们使用 BUIDL 进行下一步 DApp 开发工作时,会发现 JavaScript 版块记录了当前智能合约的 ABI,使应用程序能够调用智能合约,与之互动。
关于 BUIDL IDE —— 一站式区块链开发工具
BUIDL IDE 是完全基于浏览器的集成开发工具,开发者可以用 BUIDL 轻松地创建和部署区块链应用(DApp),无需安装任何软件和区块链钱包,从而节省大量时间。
BUIDL 功能介绍:
- 内置账户管理系统,不需钱包软件;
- 编写,编译和部署智能合约;
- 开发包含 HTML5 和 JavaScript 的 DApp;
- 一键把 DApp 发布到 Github Pages;
- 可以部署在以太坊和任何与以太坊兼容的区块链;
- 访问内置 Web3 库;
- 支持基于规则的智能合约;
- 内置基于 ElasticSearch 的实时智能合约搜索引擎;
更多资料:
- BUIDL 介绍页
https://www.secondstate.io/bu… - BUIDL IDE
https://buidl.secondstate.io/ - BUIDL 文档
https://docs.secondstate.io/b… - BUIDL GitHub 代码
https://github.com/second-state