什么是 Ethers.js?
Ethers.js 是一个 Web3 JavaScript (JS) 库,于 2016 年发布,由 Richard Moore 创建。它是当今最受欢迎的开源以太坊 JS 库之一,下载量达数百万次。与传统编程库非常相似,ethers.js 由一组预先编写的代码片段组成,可以重复使用以执行基本日常功能。然而,与其他传统库不同,ethers.js 是基于 Web3 的。此外,开发人员可以使用此库轻松地与以太坊区块链进行通信和交互。
Ethers.js 最初是为“ ethers.io ”设计的。然而,它已经扩展为一个更通用的库。此外,ethers.js 的包大小小,文档详尽且简单明了,API 结构用户友好,并且是用 TypeScript 编写的。因此,对于许多 Web3 开发人员来说,它是一个非常有吸引力的库,因为它直观且易于使用。
此外,为了更好地理解 ethers.js 的实用性,让我们仔细看看该库的一些主要功能:
大小——Ethers.js 很小,压缩后只有 88 KB,解压缩后只有 284 KB。
ENS – 以太坊名称服务 (ENS) 名称是一等公民。因此,它们可以在任何可以使用以太坊地址的地方使用。
测试用例- Ethers.js 具有大量积极维护和更新的测试用例。
MIT 许可证– 该库完全开源,包括所有依赖项。
安全性——使用 ethers.js,您可以保证您的私钥安全无虞。
上述功能只是五个突出的例子,ethers.js 还有很多功能。因此,还有更多功能需要您自己去发现。但是,我们需要在本指南中进一步探索 ethers.js 的一些基本组件,即其各种模块。反过来,我们将了解该库的工作原理。
库模块
在探索 ethers.js 模块之前,让我们先简单回顾一下 JS 模块是什么。模块是一个函数或一组类似的函数,旨在更好地构建/组织代码库。此外,模块通常是独立的、特定的和可重复使用的。现在,简要概述一下模块是什么,让我们直接进入 ethers.js!
Ethers.js 具有四个核心模块:“ ethers.contract ”,“ ethers.utils ”,“ ethers.wallets ”和“ ethers.provider ”。这些模块是 ethers.js 应用程序编程接口 (API) 的核心。因此,让我们分别分解每个模块以快速了解它们的用途:
“ ethers.contract ” – “ ethers.contract ”模块的主要目的是提供无缝部署以太坊智能合约的能力。然而,尽管这是该模块的主要功能,但它还能提供更多功能。例如,您可以使用“ ethers.contract ”来监听智能合约事件、调用函数、查询有关合约的信息等。
“ ethers.utils ” – 您可以使用“ ethers.utils ”来处理用户输入和格式化数据。这是两个至关重要的 Web3 开发任务,这意味着该模块使区块链开发更加容易。
“ ethers.wallet ” – 使用“ ethers.wallet ”模块,您可以轻松连接到现有的钱包(以太坊地址),创建新的钱包并签署交易。
“ ethers.provider ” – 使用“ ethers.provide ”模块,您可以无缝地与以太坊网络建立连接。此外,您还可以利用此模块查询链上数据并发送签名交易。因此,通过此模块,您可以使用 ethers.js 更改以太坊区块链的状态!
这涵盖了 ethers.js 的基本知识!在下一节中,我们将仔细研究 web3.js,了解这些库的不同之处,并探索 ethers.js 的独特之处!
什么是 Web3.js?
Web3.js 和 ethers.js 一样,是一个开源 JS 库,可促进与以太坊区块链的无缝交互。此外,以太坊基金会创建了 Web3.js。因此,它得到了一个相当广泛的社区的支持,这为这个库增添了价值。此外,Web3.js 自 2015 年以来一直存在,这意味着这是一个久经考验的库,已在许多著名项目中使用。
Web3.js 通过 JSON-RPC(“JavaScript 对象表示法 - 远程过程调用”)协议与以太坊节点建立通信。此外,与 ethers.js 非常相似,该库也具有模块。具体来说,它总共有五个模块:
“ web3.eth “ – 这是与以太坊网络交互的模块。此外,它还提供其他子模块,如“ web3.eth.contract “ 、 “ web3.eth.subscribe “ 、 “ web3.eth.accounts “ 等。
“ web3.net “ – 您可以使用“ web3.net “与网络属性进行交互。
“ web3.shh ” ——使用“ web3.shh ”模块,您可以与 Whisper 协议进行交互。
“ web3.utils “ – “ web3.utils “ 模块为以太坊 dapps 和其他软件包提供实用功能。
“ web3.bzz “ – 您使用“ web3.bzz “与 Swarm 网络进行交互。
根据对 ethers.js 和 web3.js 的概述,您可能已经注意到这些库非常相似并且用途相似。因此,以下部分将对两者进行比较,重点介绍它们之间的差异!
Ethers.js 与 Web3.js
如果您已经阅读到这里,那么您现在应该熟悉 ethers.js 和 Web3.js。反过来,您现在熟悉了库的各种模块、主要功能以及开发人员如何使用它们。您还了解到,像这样的 Web3 库对于区块链开发至关重要,因为它们可以让开发人员节省大量的时间和资源。
但是,您可能还注意到它们的用途相似,并且非常相似。因此,本节将比较 ethers.js 和 Web3.js,以突出一些显着差异。通过这样做,希望您能够更轻松地选择在开发工作中使用哪一个。
有多种方法可以比较这两个库;但是,对于本指南,我们将重点关注社区、文档和受欢迎程度:
底层社区——如前所述,Web3.js 是一个以太坊基金会项目。因此,这意味着 Web3.js 由该组织直接支持并由 ChainSafe 维护。相反,ethers.js 是由一个名叫 Richard Moore 的个人构建的,而一个规模小得多的开发人员团队维护着这个库。
文档– Ethers.js 和 Web3.js 均有详尽的文档。不过,在这方面,ethers.js 似乎略占优势,因为它有详尽且适合初学者的“入门”指南。
受欢迎程度——Web3.js 目前是两个以太坊 JS 库中最大的。然而,根据每周下载量来看,ethers.js 目前正在快速增长。然而,就 GitHub 星星而言,Web3.js 比 ethers.js 多 10,000 多颗。
尽管如此,ethers.js 和 Web3.js 都有其优点和缺点。因此,您可以根据开发人员的需求在它们之间进行选择!
探索 Ethers.js 替代方案
除了上述库之外,还有其他方法可以与以太坊区块链交互,一个很好的例子就是 Moralis 的 Web3 Streams API !借助 API,您可以通过Moralis webhook将链上数据无缝地传输到应用程序的后端。此外,由于 Moralis 的跨链功能,您不必局限于以太坊网络。事实上,您可以为多个领先的可编程区块链设置流。这包括 Polygon、Avalanche、BNB Chain、Cronos、Fantom 等等!因此,您可以为所有区块链项目提供面向未来的保障!
从传统角度来看,查询区块链网络的数据一直是一项繁琐的任务。然而,多亏了 Moralis,情况已不再如此!使用 Streams API,您可以避免诸如连接和维护 RPC 节点、浪费时间构建复杂的数据管道、设置不必要的抽象等任务。相反,您可以节省时间并专注于为客户创造更多价值。
因此,您可以轻松设置流以在以下情况下在多个网络和第二层 (L2) 平台上接收 Web3 webhook:
有人参与代币销售
特定资产被发送、交换、接收或质押
某个地址发送或接收资产
在线 Web3 游戏中展开战斗
或者其他智能合约事件根据您的过滤器触发
此外,得益于 Streams API 的可访问性,您只需五个简单的步骤即可设置流:
提供地址
应用过滤器来指定何时接收 webhook
指定您要监控的链
添加你的 webhook URL
接收 webhook
下一步
如果您想了解有关如何使用 Moralis 设置 Web3 流的更多信息,请查看我们关于 以太坊 webhook 和 Polygon webhook 的指南。这些文章提供了有关为各种链设置 Web3 webhook 的全面教程!此外,如果您想了解 Moralis(终极 Web3 提供商 )如何使开发人员能够 从地址获取钱包余额(包括原生代币和 ERC20 代币) ,请务必阅读我们探索最佳 ERC20 代币余额 API 的文章!此外,如果您想为您的项目添加 可扩展的 Web3 基础设施 ,Moralis 是您的首选。事实上,Moralis 深受行业领导者的信赖,包括 MetaMask、1inch、SuperFarm 等!平均而言,项目节省了 8640 万美元的工程成本,并将上市时间缩短了 87%!