以太坊网络 ABI
应用程序接口 (API)是一种软件中介,它允许两个应用程序使用一组特定的协议和定义相互通信。发送请求的应用程序是客户端,而发送响应的应用程序称为服务器。这些服务器充当中心化信息源,根据请求将数据提供给应用程序。然而,在区块链网络中,数据中心化并不存在。区块链之外的应用程序需要一种与区块链网络上的 DApp 和智能合约进行通信的方式。本文旨在打破通过使用 ABI 完成的任务。
什么是节点提供商?
2Ethers.js 和 Web3.js 的区别
为了全面了解 ABI 及其功能,用户需要对 EVM 和智能合约有基本的了解。
以太坊虚拟机 (EVM)充当具有数百万个可执行项目的去中心化计算机。EVM 是允许开发人员用来创建去中心化应用程序 (dApp) 以及所有以太坊账户和智能合约所在的平台。
智能合约以字节码(二进制数据)的形式存储在区块链中的特定地址(称为合约地址)下。智能合约的目的是在满足合约中定义的某些条件时执行交易。这些条件可以是链上或链下的事件。
应用程序二进制接口 (ABI)与其特定区块链之外的合约交互,并允许合约到合约交互。它连接两个程序模块,例如操作系统和用户程序。
需要 ABI 来访问存储为的字节码智能合约。ABI 定义了你可以调用哪些函数,同时确保函数以预期格式返回数据。应用程序需要 ABI 和合约地址才能与区块链网络上的智能合约进行交互。
各种函数和事件描述给出了合约 ABI 的JSON 格式。以下是函数的 ABI 描述中存在的元素:
在Ethereum REMIX IDE中,你可以在编译智能合约后使用 compile 标签下的 ABI 按钮复制 ABI。你也可以使用终端手动创建 ABI。以下是手动安装选项:
由于 ABI 作为网站 EVM 字节码和 Javascript 之间的解释器运行,因此当你想要执行智能合约的任何功能时都需要它。除了 ABI,还需要区块链上的合约地址。如果你有兴趣查找已部署合约的 ABI,你可以通过使用合约地址在 Etherscan 上搜索来找到它。
智能合约通过字节码进行通信,使区块链开发人员难以对消息进行编码。但是,创建了编码设计标准来解决这个问题。ABI 编码旨在具有以下属性:
像 Remix 这样的流行编译器也可以为你处理编码。这些编码遵循特定的模式,因此可以通过查看ABI 规范更好地了解正在发生的事情。
前四个字节是函数签名,指示智能合约正在执行的函数类型。一个流行的函数标识符是 a9059cbb,它表明这是一个 ERC20 传输。这里有一个函数签名的数据库目录,你可以在其中探索更多信息。
ABI 在智能合约的可用性中起着至关重要的作用。如果你想深入了解 ABI 的技术方面,我建议你阅读Contract ABI Specification for Solidity。 记住,朋友,做或不做;没有尝试。快乐学习