当前位置:主页 > bitpie钱包 >

比特派官网app下载最新版本|以太坊网络:ABI 和智能合约

以太坊网络 ABI

应用程序接口 (API)是一种软件中介,它允许两个应用程序使用一组特定的协议和定义相互通信。发送请求的应用程序是客户端,而发送响应的应用程序称为服务器。这些服务器充当中心化信息源,根据请求将数据提供给应用程序。然而,在区块链网络中,数据中心化并不存在。区块链之外的应用程序需要一种与区块链网络上的 DApp 和智能合约进行通信的方式。本文旨在打破通过使用 ABI 完成的任务。

关键点

  • 什么是 ABI
  • ABI 元素
  • ABI 生成
  • ABI 执行
  • ABI 编码
推荐阅读 1

什么是节点提供商?

2

Ethers.js 和 Web3.js 的区别

什么是 ABI?

为了全面了解 ABI 及其功能,用户需要对 EVM 和智能合约有基本的了解。

以太坊虚拟机 (EVM)充当具有数百万个可执行项目的去中心化计算机。EVM 是允许开发人员用来创建去中心化应用程序 (dApp) 以及所有以太坊账户和智能合约所在的平台。

智能合约字节码(二进制数据)的形式存储在区块链中的特定地址(称为合约地址)下。智能合约的目的是在满足合约中定义的某些条件时执行交易。这些条件可以是链上或链下的事件。

应用程序二进制接口 (ABI)与其特定区块链之外的合约交互,并允许合约到合约交互。它连接两个程序模块,例如操作系统和用户程序。

需要 ABI 来访问存储为的字节码智能合约。ABI 定义了你可以调用哪些函数,同时确保函数以预期格式返回数据。应用程序需要 ABI 和合约地址才能与区块链网络上的智能合约进行交互。

ABI 元素

各种函数和事件描述给出了合约 ABI 的JSON 格式。以下是函数的 ABI 描述中存在的元素:

  • 输入:指定义参数的对象数组。每个对象都有以下内容:
  • name:指参数的名称。
  • type:指参数的规范类型。
  • components:定义元组类型。如果达到元组类型,则表示为 type = tuple。
  • name:定义函数的名称。
  • 输出:指与输入类似的输出对象数组。
  • stateMutability:指函数的可变性。可变性值包括pure、view、 nonpayable 和paid 。
  • type:指函数类型。函数类型包括函数、构造函数、接收和回退。

ABI 生成

Ethereum REMIX IDE中,你可以在编译智能合约后使用 compile 标签下的 ABI 按钮复制 ABI。你也可以使用终端手动创建 ABI。以下是手动安装选项:

  • solc — 为 Solidity Compiler提供 JavaScript 绑定。要安装 solc,你需要安装 node.js 和 npm。安装后,你需要输入“ npm install solc ”。安装软件包后,你应该在终端中运行“ solcjs contractname.sol — abi”,如果执行成功,将生成一个 .abi 文件。

ABI 执行

由于 ABI 作为网站 EVM 字节码和 Javascript 之间的解释器运行,因此当你想要执行智能合约的任何功能时都需要它。除了 ABI,还需要区块链上的合约地址。如果你有兴趣查找已部署合约的 ABI,你可以通过使用合约地址在 Etherscan 上搜索来找到它。

ABI 编码

智能合约通过字节码进行通信,使区块链开发人员难以对消息进行编码。但是,创建了编码设计标准来解决这个问题。ABI 编码旨在具有以下属性:

  1. 访问一个值所需的读取次数最多是参数数组结构内的值的深度。
  2. 属于一个元素的数据不与其他数据一起排列,但它是可重定位的。

像 Remix 这样的流行编译器也可以为你处理编码。这些编码遵循特定的模式,因此可以通过查看ABI 规范更好地了解正在发生的事情。

前四个字节是函数签名,指示智能合约正在执行的函数类型。一个流行的函数标识符是 a9059cbb,它表明这是一个 ERC20 传输。这里有一个函数签名的数据库目录,你可以在其中探索更多信息。

结论

ABI 在智能合约的可用性中起着至关重要的作用。如果你想深入了解 ABI 的技术方面,我建议你阅读Contract ABI Specification for Solidity 记住,朋友,做或不做;没有尝试。快乐学习

  • 关注微信

猜你喜欢