Ethers.js:以太坊的 Javascript 库

新手3/20/2024, 12:44:03 PM
以太坊是一种以其工具包、智能合约和代码对齐生态系统而闻名的区块链协议。它严重依赖 ethers.js(一个 Javascript 库)来为其以开发人员为中心的方法提供所需的效力。

转发原文标题:《What Is Ethers.js? A Deep Dive Into Ethereum’s JavaScript Library》

如果您更看重以太坊(ETH)而不是其他加密货币玩家,那么您应该花点时间从更深入的技术角度来了解以太坊。以太坊是一种以其工具包、智能合约和代码对齐生态系统而闻名的区块链协议,严重依赖 ethers.js(一个 Javascript 库)来为其以开发人员为中心的方法提供所需的效力。

虽然 ethers.js 不是唯一的以太坊原生 JavaScript 库,但对于小型 DApp 来说,它是更好的选择。在本文内容中,我们将深入研究 ethers.js 的各个方面,帮助您理解这一技术概念。

大纲内容:

  1. 解析 ethers.js
  2. 为什么 ethers.js 很重要?
  3. 了解所有 Ethers.js 版本
  4. ethers.js 入门
  5. 核心特点
  6. 加密出版物如何利用 Ethers.js
  7. Ethers.js 的实际应用
  8. 安全考虑
  9. Ethers.js:多功能工具
  10. 常见问题

解析 ethers.js

ethers.js 是一个 JavaScript 库——一组可自动执行多个功能的预先编写的代码。使用JavaScript库进行开发可以最大限度地减少代码编写的工作量。这个过程变得更加用户友好,对于 DApp 开发人员来说,这些库有助于以捆绑包的形式提供基本的区块链特定功能。

Ethers.js 和开发周期:BeInCrypto

这是库的 GitHub 存储库

什么是 JavaScript 库?

在深入研究 ethers.js 之前,让我们仔细看看 JavaScript 库。这些库是预先编写的 JavaScript 代码集,可以自动执行特定的常见任务。使用 ethers.js 等库可以加快 DApp 创建过程,甚至加快其他特定于区块链的交互。

为什么我们在以太坊中需要 JavaScript 库?

以太坊已经发展成为一个去中心化的软件开发平台。从智能合约DeFi 应用程序,再到 DApps,编码是以太坊生态系统不可或缺的一部分。这正是以太坊定制的 JavaScript 库(如 ethers.js)存在的原因。使用这些库,开发人员可以连接到网络,部署智能合约并与之交互,并轻松管理区块链数据。

你可知道,Ethers.js 并不是唯一已知的以太坊 Javascript 库。另一个著名的例子是由以太坊基金会创立的 Web3.js。Web3.js 以其全面的文档集合而闻名,适用于更复杂的 DApp。

为什么 ethers.js 很重要?

如前所述,ethers.js 旨在为与以太坊区块链互动的开发人员提供支持。至于重要性,这个由Richard Moore开发的库,以“Ethers”之名推广,对以下工作非常有用:

  1. 简化多个以太坊交易
  2. 提供全面的文档和资源访问
  3. 促进 DApp 的开发

Ethers.js 生态系统及其可以承担的角色:BeInCrypto

Ethers.js生态系统及其可承担的角色:BeInCrypto

以下是用于获取以太坊账户当前余额的代码片段示例。让我们先阅读代码并了解ethers.js如何简化工作:

javascript

Copy code

const { ethers } = require(‘ethers’);

// 连接至以太坊网络

const provider = new ethers.providers.JsonRpcProvider(‘https://mainnet.infura.io/v3/YOUR_INFURA_API_KEY‘);

// 指定账户地址

const accountAddress = ‘0xABC123…’;

// 获取并显示余额

provider.getBalance(accountAddress).then((balance) => {

// 将余额从Wei转换为Ether

const balanceInEther = ethers.utils.formatEther(balance);

console.log(`Balance: ${balanceInEther} ETH`);

});

在这个示例中,您可以清楚地看到命令——ethers.providers.JsonRpcProvider——调用了一个Infura端点,并且getBalance方法获取了余额。您不需要直接处理以太坊的JSON RPC或远程过程调用。在这种情况下,您可以将ethers.js视为一个使以太坊变得更容易和更熟悉的翻译器。

仍然不太了解ethers.js的重要性吗?以下给出了一个简单的类比。

想象一下ethers.js就像一个旧的图书馆借书卡。还记得那些卡上有目录,让您通过定位通道,然后使用书架号码找到正确的书吗?这就是ethers.js的目标。它简化并组织了以太坊的庞大功能,使开发人员能够准确找到他们所需的东西。

了解所有 Ethers.js 版本

多年来,出现了多个 Ethers.js 版本,每个版本都引入了新功能或修复了漏洞。此外,版本控制遵循标准语义,例如 v1.2.3,其中第一个数字表示主要版本,第二个和第三个数字表示次要版本和补丁。我们现在只考虑主要版本升级——可能不向后兼容的更改。

  1. 版本 1.x(旧版):这是最初的版本,随后提供了与交易签名、钱包管理等相关的功能。
  2. 版本 2.x(以太坊钱包):专注于钱包实用程序和功能,包括安全存储私钥
  3. 版本 3.x(以太坊提供商):引入了用于连接以太坊节点的抽象。可以容纳不同类型的玩家,包括 Infura、WebSocket 等。
  4. 版本 4.x(以太坊合约):扩展了智能合约主导的属性,提供了更多用于编码和解码数据、事件过滤器等的实用程序。
  5. 版本 5.x:提供模块化架构,增强了对ENS的支持、全面的错误处理等等。
  6. 版本 6.x:包含 ES6 功能、BigInt 介绍、重载可访问性等。

Ethers.js 架构和组件:BeInCrypto

https://harambetoken.ai/?domain=beincrypto&banner=header-banner-3&cpid=1ce31526-203f-4d6a-bf00-af77d6cf6edd

您可以通过查看 Ethers.js 的原始文件,找到与每个版本相关的更多详细信息。

“Ethers.js 凭借卓越的区块链互操作性、原生 TypeScript 支持和先进的调试工具而大放异彩。这是一个精益、简单的库,可以无缝集成到 React、Vue、Angular 等流行框架中。”

Redbelly 实习生、构建者:X

ethers.js 入门

在您计划利用 ethers.js 的潜力之前,有必要了解它在 DApp 或智能合约开发的哪个阶段被调用。对于那些需要从头开始了解和理解这些元素的人来说,可参阅此处的快速细分内容。

“Web3.js 适合初学者,并且比 ethers.js 更简洁。

另一方面,Ethers.js 提供了更多选项并且是新的;它比 Web3.js 稍微复杂一点。”

degenBRo是一位区块链开发者、Solidity Finance 创始人:正如 BeInCrypto 所说

首先,您需要打开计算机并设置开发环境。这包括 Node.js 和集成开发环境。请注意,JavaScript 通常在浏览器上运行,但使用 Node.js,同样可以在计算机上运行。它是 Node.js 运行时环境,安装了像 ethers.js 这样的 Javascript 库。

至于软件开发人员需要测试的IDE,您可以考虑VS Code、Sublime Text或其他任何东西。

安装 ethers.js 支持

下一步是安装 Ethers,这是托管 ethers.js 的库。

npm 安装以太坊

然后,您需要使用 Ethers 连接到以太坊钱包,因为与区块链的交互将需要此步骤来验证凭证。为此,您可以使用已安装的 Ethers 库。这是示例命令:

相关阅读:

更多文章

以太坊 ETF:它是什么以及如何运作

如何获得比特币 (BTC) 付款:您需要了解的一切

const { ethers } = require(‘ethers’);

// 连接至 MetaMask 钱包

const provider = new ethers.providers.Web3Provider(window.ethereum);

完成后,您可以使用 IDE 编写 Solidity 代码并为 DApps 创建智能合约。Ethers.js 将用于部署相同的智能合约。您甚至可以使用 Truffle 和 Hardhat 等环境在本地测试 DApp 或合约。然后,您可以将合约部署到以太坊网络上,这需要使用 ethers.js。

const contract = new ethers.ContractFactory(abi, bytecode, signer);

const deployedContract = await contract.deploy();

对于不熟悉的人来说,abi、Bytecode、Signer 是无缝智能合约开发的必要术语。Abi 或应用程序二进制接口更像是一个标签,有助于网络识别您的智能合约。Bytecode 是智能合约的编译或者说是网络就绪版本,而 signer 则是生成签名的实体。

前端的 Ethers.js

// 部署智能合约后,您需要构建 DApp 的前端或用户界面。为此,您可以使用 Angular 或 React。您甚至可以在前端中集成 Ethers.js,以确保它可以与以太坊智能合约进行交互。以下是相同的示例代码:

const provider = new ethers.providers.Web3Provider(window.ethereum);

const contract = new ethers.Contract(contractAddress, contractABI, provider.getSigner());

完成后,您需要在测试网络上测试 DApp,比如 Rinkeby 或 Ropsten。一旦满意,您可以在主网络上启动 DApp。请注意,在整个过程中您需要多次与 Ethers 或 ethers.js 进行交互。

核心特点

Ethers.js 是一个综合性的以太坊库。以下是一些可以让开发人员的生活变得轻松的独家产品:

提供商

// Ethers.js 提供商充当您正在开发的 DApp 与以太坊网络之间的桥梁。这涉及简化区块链数据查询,并帮助广播交易。Infura 是 ethers.js 使用的提供商之一。

以下是相同操作的示例代码:

const { ethers } = require(‘ethers’);

// 使用 Infura 进行连接

const provider = new ethers.providers.JsonRpcProvider(‘https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID‘);

// 检查当前区块号

provider.getBlockNumber().then((blockNumber) => {

console.log("Current block number:", blockNumber);

});

钱包

Ethers.js 可让您管理钱包、创建新帐户、导入现有帐户、安全管理用于签署交易的私钥等等。

合约

https://harambetoken.ai/?domain=beincrypto&banner=header-banner-3&cpid=1ce31526-203f-4d6a-bf00-af77d6cf6edd

Ethers.js 的这个组件支持对象实例化。这使得调用特定的合约函数变得更容易,更像原生 Javascript 方法。


Ethers.js 和智能合约交互:BeInCrypto

ENS 集成

// Ethers.js 可以将 ENS 名称解析为其以太坊地址,反之亦然。该功能可降低错误风险。

以下是此操作的示例代码片段:

const { ethers } = require(‘ethers’);

const provider = new ethers.providers.JsonRpcProvider(‘https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID‘);

const ensName = ‘alice.eth’;

provider.resolveName(ensName).then((address) => {

console.log(`${ensName} is resolved to ${address}`);

});

除了上述功能外,Ethers.js 还具有以下方面或功能,可帮助开发人员直接访问以太坊特定内容:

签名者

功能

事件侦听器和过滤器(用于激活对区块链操作的实时响应)

交易

多调用支持

TypeScript 支持(旨在提高代码可靠性和整体开发人员体验)

使用 Ethers.js 的一些额外好处:https://twitter.com/juniorrbn_dev/status/1765370617937736000?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1765370617937736000%7Ctwgr%5Ec1f906e08013316a8e26d4dc67 36b846d7473e55%7Ctwcon%5Es1&ref_url=https%3A%2F%2Fbeincrypto.com%2Flearn%2Fethers- js-解释%2F

加密出版物如何利用 Ethers.js

像 BeInCrypto 这样的媒体出版物可以利用 Ethers.js 从头开始​​创建高级且资源丰富的 web3 工具。这样,就可以使用区块链或更确切地说,以太坊驱动的功能来增强可用性。以下是人们可以考虑的选项:

数据馈送

// Ethers.js 功能可用于集成实际的实时加密数据源,如网络统计信息、gas费用等,以保持文章和资源的时效性。以下是一个示例代码,用于获取最新的区块号,比如比特币,以实时跟踪减半事件。

const { ethers } = require(‘ethers’);

const provider = new ethers.providers.JsonRpcProvider(‘https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID‘);

provider.getBlockNumber().then((blockNumber) => {

console.log("Current block number:", blockNumber);

// 将这些数据集成到您的出版平台中,以获取实时数据源

});

交互式内容

出版物可以创建一些交互式内容,允许用户直接与智能合约互动,参与投票,甚至在需要时玩一些小游戏。

以下是一个示例代码片段,用于从智能合约中检索特定里程碑的问候语:

const { ethers } = require(‘ethers’);

const provider = new ethers.providers.Web3Provider(window.ethereum);

const contractAddress = ‘0x…’;

const contractABI = [

"function getGreeting() view returns (string)"

];

const contract = new ethers.Contract(contractAddress, contractABI, provider);

async function displayGreeting() {

const greeting = await contract.getGreeting();

document.getElementById('greeting').innerText = greeting;

}

在KuCoin上开设账户,立即获得高达700 USDT的保证金。

以KuCoin开始您的加密货币交易旅程,提前占领优势!

在KuCoin上放心交易!我们的平台优先考虑您的安全,为您的数字资产提供一流的保护。

探索KuCoin庞大的加密货币世界!

立即注册

Ethers.js的实际部署示例:

https://twitter.com/ronakpal1/status/1767071343345095092?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1767071343345095092%7Ctwgr%5Ec1f906e08013316a8e26d4dc6736b 846d7473e55%7Ctwcon%5Es1&ref_url=https%3A%2F%2Fbeincrypto.com%2Flearn%2Fethers- js-解释%2F

去中心化出版

媒体出版物还可以考虑去中心化发布,其中文章的一部分被发布到区块链网络上。这有助于抵抗审查和确保内容的完整性。

以下是一个示例代码,其中文章哈希作为发布证明存储在线上:

const { ethers } = require(‘ethers’);

const wallet = new ethers.Wallet(‘YOUR_PRIVATE_KEY’, provider);

const contentHash = ethers.utils.id(“Article content here”);

const tx = await wallet.sendTransaction({

to: '0xSomeStorageContractAddress',

data: contentHash // 假设合约接受并存储此数据

});

console.log(“Transaction hash (proof of publication):”, tx.hash);

这只是媒体出版物的一些用例。但还有其他行业可以利用 ethers.js 的功能。这些包括:

  • 区块链开发人员(预期)

  • 使用 DeFi 指标的金融分析师

  • 游戏开发人员

  • 内容创作者

  • 供应链管理者

  • 等等。

Ethers.js 的实际应用

除了在 DeFi、NFT 和游戏项目中有用之外,还有一些现有的 DApps 支持使用 Ethers.js。其中包括以下内容:

Uniswap:Ether.js 与 Uniswap 的内置智能合约进行交互,用于执行交易、增加流动性,甚至查询流动性池统计数据。在这种情况下,DApp 开发人员计划构建与 Uniswap 交互的工具,如交易机器人、投资组合管理工具等。

Aave:DApp 开发人员和其他感兴趣的人可以、利用 Ether.js 的功能与 Aave 特定的智能合约进行交互。这样,他们可以为借贷资产、存入抵押品等准备好前端。

打破一些关于 Ethers.js 的谬论:

https://twitter.com/imashuttoshh/status/1765558806291894739?refsrc=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1765558806291894739%7Ctwgr%5Ec1f906e08013316a8e26d4dc6736 b846d7473e55%7Ctwcon%5Es1&ref_url=https%3A%2F%2Fbeincrypto.com%2Flearn%2Fethers- js-解释%2F

安全考虑因素

使用 Ethers.js 需要考虑一系列安全性考虑因素。以下是一些需要遵循的要点:

建议不要在应用程序的代码库中硬编码私钥。

每次与智能合约进行交互之前,都应先进行测试并对合约进行广泛审计。

与智能合约进行交互时,使用“call”等安全模式进行只读任务。

为了优化 ethers.js 的使用,可以考虑请求批处理。这是一种可以批量处理读取请求以最小化网络调用次数的方法。毫无疑问,这些优化技术可使应用程序具有高度可扩展性和成本效率。

以下是其工作原理的示例:

// 使用 Ethers.js 批处理合约调用的伪代码(概念示例)

const contract = new ethers.Contract(address, abi, provider);

const [value1, value2, value3] = await Promise.all([

contract.viewFunction1(),

contract.viewFunction2(),

contract.viewFunction3()

]);

Ethers.js:通用工具

https://harambetoken.ai/?domain=beincrypto&banner=header-banner-3&cpid=1ce31526-203f-4d6a-bf00-af77d6cf6edd

正如本指南所展示的,Ethers.js 是一款多功能工具。虽然我们已经简要介绍了它的功能,但要完全理解 Ethers.js 的最佳方式是深入了解智能合约、JavaScript、集成开发环境(IDE)、去中心化应用(DApps)等领域。此外,加入以太坊和 Ethers 社区也会很有帮助。

声明:

  1. 本文转载自[beincrypto],原文标题《What Is Ethers.js? A Deep Dive Into Ethereum’s JavaScript Library》,著作权归属原作者Ananda Banerjee,如对转载有异议,请联系Gate Learn团队,团队会根据相关流程尽速处理。
  2. 免责声明:本文所表达的观点和意见仅代表作者个人观点,不构成任何投资建议。
  3. 文章其他语言版本由Gate Learn团队翻译, 在未提及Gate.io的情况下不得复制、传播或抄袭经翻译文章。

Ethers.js:以太坊的 Javascript 库

新手3/20/2024, 12:44:03 PM
以太坊是一种以其工具包、智能合约和代码对齐生态系统而闻名的区块链协议。它严重依赖 ethers.js(一个 Javascript 库)来为其以开发人员为中心的方法提供所需的效力。

转发原文标题:《What Is Ethers.js? A Deep Dive Into Ethereum’s JavaScript Library》

如果您更看重以太坊(ETH)而不是其他加密货币玩家,那么您应该花点时间从更深入的技术角度来了解以太坊。以太坊是一种以其工具包、智能合约和代码对齐生态系统而闻名的区块链协议,严重依赖 ethers.js(一个 Javascript 库)来为其以开发人员为中心的方法提供所需的效力。

虽然 ethers.js 不是唯一的以太坊原生 JavaScript 库,但对于小型 DApp 来说,它是更好的选择。在本文内容中,我们将深入研究 ethers.js 的各个方面,帮助您理解这一技术概念。

大纲内容:

  1. 解析 ethers.js
  2. 为什么 ethers.js 很重要?
  3. 了解所有 Ethers.js 版本
  4. ethers.js 入门
  5. 核心特点
  6. 加密出版物如何利用 Ethers.js
  7. Ethers.js 的实际应用
  8. 安全考虑
  9. Ethers.js:多功能工具
  10. 常见问题

解析 ethers.js

ethers.js 是一个 JavaScript 库——一组可自动执行多个功能的预先编写的代码。使用JavaScript库进行开发可以最大限度地减少代码编写的工作量。这个过程变得更加用户友好,对于 DApp 开发人员来说,这些库有助于以捆绑包的形式提供基本的区块链特定功能。

Ethers.js 和开发周期:BeInCrypto

这是库的 GitHub 存储库

什么是 JavaScript 库?

在深入研究 ethers.js 之前,让我们仔细看看 JavaScript 库。这些库是预先编写的 JavaScript 代码集,可以自动执行特定的常见任务。使用 ethers.js 等库可以加快 DApp 创建过程,甚至加快其他特定于区块链的交互。

为什么我们在以太坊中需要 JavaScript 库?

以太坊已经发展成为一个去中心化的软件开发平台。从智能合约DeFi 应用程序,再到 DApps,编码是以太坊生态系统不可或缺的一部分。这正是以太坊定制的 JavaScript 库(如 ethers.js)存在的原因。使用这些库,开发人员可以连接到网络,部署智能合约并与之交互,并轻松管理区块链数据。

你可知道,Ethers.js 并不是唯一已知的以太坊 Javascript 库。另一个著名的例子是由以太坊基金会创立的 Web3.js。Web3.js 以其全面的文档集合而闻名,适用于更复杂的 DApp。

为什么 ethers.js 很重要?

如前所述,ethers.js 旨在为与以太坊区块链互动的开发人员提供支持。至于重要性,这个由Richard Moore开发的库,以“Ethers”之名推广,对以下工作非常有用:

  1. 简化多个以太坊交易
  2. 提供全面的文档和资源访问
  3. 促进 DApp 的开发

Ethers.js 生态系统及其可以承担的角色:BeInCrypto

Ethers.js生态系统及其可承担的角色:BeInCrypto

以下是用于获取以太坊账户当前余额的代码片段示例。让我们先阅读代码并了解ethers.js如何简化工作:

javascript

Copy code

const { ethers } = require(‘ethers’);

// 连接至以太坊网络

const provider = new ethers.providers.JsonRpcProvider(‘https://mainnet.infura.io/v3/YOUR_INFURA_API_KEY‘);

// 指定账户地址

const accountAddress = ‘0xABC123…’;

// 获取并显示余额

provider.getBalance(accountAddress).then((balance) => {

// 将余额从Wei转换为Ether

const balanceInEther = ethers.utils.formatEther(balance);

console.log(`Balance: ${balanceInEther} ETH`);

});

在这个示例中,您可以清楚地看到命令——ethers.providers.JsonRpcProvider——调用了一个Infura端点,并且getBalance方法获取了余额。您不需要直接处理以太坊的JSON RPC或远程过程调用。在这种情况下,您可以将ethers.js视为一个使以太坊变得更容易和更熟悉的翻译器。

仍然不太了解ethers.js的重要性吗?以下给出了一个简单的类比。

想象一下ethers.js就像一个旧的图书馆借书卡。还记得那些卡上有目录,让您通过定位通道,然后使用书架号码找到正确的书吗?这就是ethers.js的目标。它简化并组织了以太坊的庞大功能,使开发人员能够准确找到他们所需的东西。

了解所有 Ethers.js 版本

多年来,出现了多个 Ethers.js 版本,每个版本都引入了新功能或修复了漏洞。此外,版本控制遵循标准语义,例如 v1.2.3,其中第一个数字表示主要版本,第二个和第三个数字表示次要版本和补丁。我们现在只考虑主要版本升级——可能不向后兼容的更改。

  1. 版本 1.x(旧版):这是最初的版本,随后提供了与交易签名、钱包管理等相关的功能。
  2. 版本 2.x(以太坊钱包):专注于钱包实用程序和功能,包括安全存储私钥
  3. 版本 3.x(以太坊提供商):引入了用于连接以太坊节点的抽象。可以容纳不同类型的玩家,包括 Infura、WebSocket 等。
  4. 版本 4.x(以太坊合约):扩展了智能合约主导的属性,提供了更多用于编码和解码数据、事件过滤器等的实用程序。
  5. 版本 5.x:提供模块化架构,增强了对ENS的支持、全面的错误处理等等。
  6. 版本 6.x:包含 ES6 功能、BigInt 介绍、重载可访问性等。

Ethers.js 架构和组件:BeInCrypto

https://harambetoken.ai/?domain=beincrypto&banner=header-banner-3&cpid=1ce31526-203f-4d6a-bf00-af77d6cf6edd

您可以通过查看 Ethers.js 的原始文件,找到与每个版本相关的更多详细信息。

“Ethers.js 凭借卓越的区块链互操作性、原生 TypeScript 支持和先进的调试工具而大放异彩。这是一个精益、简单的库,可以无缝集成到 React、Vue、Angular 等流行框架中。”

Redbelly 实习生、构建者:X

ethers.js 入门

在您计划利用 ethers.js 的潜力之前,有必要了解它在 DApp 或智能合约开发的哪个阶段被调用。对于那些需要从头开始了解和理解这些元素的人来说,可参阅此处的快速细分内容。

“Web3.js 适合初学者,并且比 ethers.js 更简洁。

另一方面,Ethers.js 提供了更多选项并且是新的;它比 Web3.js 稍微复杂一点。”

degenBRo是一位区块链开发者、Solidity Finance 创始人:正如 BeInCrypto 所说

首先,您需要打开计算机并设置开发环境。这包括 Node.js 和集成开发环境。请注意,JavaScript 通常在浏览器上运行,但使用 Node.js,同样可以在计算机上运行。它是 Node.js 运行时环境,安装了像 ethers.js 这样的 Javascript 库。

至于软件开发人员需要测试的IDE,您可以考虑VS Code、Sublime Text或其他任何东西。

安装 ethers.js 支持

下一步是安装 Ethers,这是托管 ethers.js 的库。

npm 安装以太坊

然后,您需要使用 Ethers 连接到以太坊钱包,因为与区块链的交互将需要此步骤来验证凭证。为此,您可以使用已安装的 Ethers 库。这是示例命令:

相关阅读:

更多文章

以太坊 ETF:它是什么以及如何运作

如何获得比特币 (BTC) 付款:您需要了解的一切

const { ethers } = require(‘ethers’);

// 连接至 MetaMask 钱包

const provider = new ethers.providers.Web3Provider(window.ethereum);

完成后,您可以使用 IDE 编写 Solidity 代码并为 DApps 创建智能合约。Ethers.js 将用于部署相同的智能合约。您甚至可以使用 Truffle 和 Hardhat 等环境在本地测试 DApp 或合约。然后,您可以将合约部署到以太坊网络上,这需要使用 ethers.js。

const contract = new ethers.ContractFactory(abi, bytecode, signer);

const deployedContract = await contract.deploy();

对于不熟悉的人来说,abi、Bytecode、Signer 是无缝智能合约开发的必要术语。Abi 或应用程序二进制接口更像是一个标签,有助于网络识别您的智能合约。Bytecode 是智能合约的编译或者说是网络就绪版本,而 signer 则是生成签名的实体。

前端的 Ethers.js

// 部署智能合约后,您需要构建 DApp 的前端或用户界面。为此,您可以使用 Angular 或 React。您甚至可以在前端中集成 Ethers.js,以确保它可以与以太坊智能合约进行交互。以下是相同的示例代码:

const provider = new ethers.providers.Web3Provider(window.ethereum);

const contract = new ethers.Contract(contractAddress, contractABI, provider.getSigner());

完成后,您需要在测试网络上测试 DApp,比如 Rinkeby 或 Ropsten。一旦满意,您可以在主网络上启动 DApp。请注意,在整个过程中您需要多次与 Ethers 或 ethers.js 进行交互。

核心特点

Ethers.js 是一个综合性的以太坊库。以下是一些可以让开发人员的生活变得轻松的独家产品:

提供商

// Ethers.js 提供商充当您正在开发的 DApp 与以太坊网络之间的桥梁。这涉及简化区块链数据查询,并帮助广播交易。Infura 是 ethers.js 使用的提供商之一。

以下是相同操作的示例代码:

const { ethers } = require(‘ethers’);

// 使用 Infura 进行连接

const provider = new ethers.providers.JsonRpcProvider(‘https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID‘);

// 检查当前区块号

provider.getBlockNumber().then((blockNumber) => {

console.log("Current block number:", blockNumber);

});

钱包

Ethers.js 可让您管理钱包、创建新帐户、导入现有帐户、安全管理用于签署交易的私钥等等。

合约

https://harambetoken.ai/?domain=beincrypto&banner=header-banner-3&cpid=1ce31526-203f-4d6a-bf00-af77d6cf6edd

Ethers.js 的这个组件支持对象实例化。这使得调用特定的合约函数变得更容易,更像原生 Javascript 方法。


Ethers.js 和智能合约交互:BeInCrypto

ENS 集成

// Ethers.js 可以将 ENS 名称解析为其以太坊地址,反之亦然。该功能可降低错误风险。

以下是此操作的示例代码片段:

const { ethers } = require(‘ethers’);

const provider = new ethers.providers.JsonRpcProvider(‘https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID‘);

const ensName = ‘alice.eth’;

provider.resolveName(ensName).then((address) => {

console.log(`${ensName} is resolved to ${address}`);

});

除了上述功能外,Ethers.js 还具有以下方面或功能,可帮助开发人员直接访问以太坊特定内容:

签名者

功能

事件侦听器和过滤器(用于激活对区块链操作的实时响应)

交易

多调用支持

TypeScript 支持(旨在提高代码可靠性和整体开发人员体验)

使用 Ethers.js 的一些额外好处:https://twitter.com/juniorrbn_dev/status/1765370617937736000?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1765370617937736000%7Ctwgr%5Ec1f906e08013316a8e26d4dc67 36b846d7473e55%7Ctwcon%5Es1&ref_url=https%3A%2F%2Fbeincrypto.com%2Flearn%2Fethers- js-解释%2F

加密出版物如何利用 Ethers.js

像 BeInCrypto 这样的媒体出版物可以利用 Ethers.js 从头开始​​创建高级且资源丰富的 web3 工具。这样,就可以使用区块链或更确切地说,以太坊驱动的功能来增强可用性。以下是人们可以考虑的选项:

数据馈送

// Ethers.js 功能可用于集成实际的实时加密数据源,如网络统计信息、gas费用等,以保持文章和资源的时效性。以下是一个示例代码,用于获取最新的区块号,比如比特币,以实时跟踪减半事件。

const { ethers } = require(‘ethers’);

const provider = new ethers.providers.JsonRpcProvider(‘https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID‘);

provider.getBlockNumber().then((blockNumber) => {

console.log("Current block number:", blockNumber);

// 将这些数据集成到您的出版平台中,以获取实时数据源

});

交互式内容

出版物可以创建一些交互式内容,允许用户直接与智能合约互动,参与投票,甚至在需要时玩一些小游戏。

以下是一个示例代码片段,用于从智能合约中检索特定里程碑的问候语:

const { ethers } = require(‘ethers’);

const provider = new ethers.providers.Web3Provider(window.ethereum);

const contractAddress = ‘0x…’;

const contractABI = [

"function getGreeting() view returns (string)"

];

const contract = new ethers.Contract(contractAddress, contractABI, provider);

async function displayGreeting() {

const greeting = await contract.getGreeting();

document.getElementById('greeting').innerText = greeting;

}

在KuCoin上开设账户,立即获得高达700 USDT的保证金。

以KuCoin开始您的加密货币交易旅程,提前占领优势!

在KuCoin上放心交易!我们的平台优先考虑您的安全,为您的数字资产提供一流的保护。

探索KuCoin庞大的加密货币世界!

立即注册

Ethers.js的实际部署示例:

https://twitter.com/ronakpal1/status/1767071343345095092?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1767071343345095092%7Ctwgr%5Ec1f906e08013316a8e26d4dc6736b 846d7473e55%7Ctwcon%5Es1&ref_url=https%3A%2F%2Fbeincrypto.com%2Flearn%2Fethers- js-解释%2F

去中心化出版

媒体出版物还可以考虑去中心化发布,其中文章的一部分被发布到区块链网络上。这有助于抵抗审查和确保内容的完整性。

以下是一个示例代码,其中文章哈希作为发布证明存储在线上:

const { ethers } = require(‘ethers’);

const wallet = new ethers.Wallet(‘YOUR_PRIVATE_KEY’, provider);

const contentHash = ethers.utils.id(“Article content here”);

const tx = await wallet.sendTransaction({

to: '0xSomeStorageContractAddress',

data: contentHash // 假设合约接受并存储此数据

});

console.log(“Transaction hash (proof of publication):”, tx.hash);

这只是媒体出版物的一些用例。但还有其他行业可以利用 ethers.js 的功能。这些包括:

  • 区块链开发人员(预期)

  • 使用 DeFi 指标的金融分析师

  • 游戏开发人员

  • 内容创作者

  • 供应链管理者

  • 等等。

Ethers.js 的实际应用

除了在 DeFi、NFT 和游戏项目中有用之外,还有一些现有的 DApps 支持使用 Ethers.js。其中包括以下内容:

Uniswap:Ether.js 与 Uniswap 的内置智能合约进行交互,用于执行交易、增加流动性,甚至查询流动性池统计数据。在这种情况下,DApp 开发人员计划构建与 Uniswap 交互的工具,如交易机器人、投资组合管理工具等。

Aave:DApp 开发人员和其他感兴趣的人可以、利用 Ether.js 的功能与 Aave 特定的智能合约进行交互。这样,他们可以为借贷资产、存入抵押品等准备好前端。

打破一些关于 Ethers.js 的谬论:

https://twitter.com/imashuttoshh/status/1765558806291894739?refsrc=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1765558806291894739%7Ctwgr%5Ec1f906e08013316a8e26d4dc6736 b846d7473e55%7Ctwcon%5Es1&ref_url=https%3A%2F%2Fbeincrypto.com%2Flearn%2Fethers- js-解释%2F

安全考虑因素

使用 Ethers.js 需要考虑一系列安全性考虑因素。以下是一些需要遵循的要点:

建议不要在应用程序的代码库中硬编码私钥。

每次与智能合约进行交互之前,都应先进行测试并对合约进行广泛审计。

与智能合约进行交互时,使用“call”等安全模式进行只读任务。

为了优化 ethers.js 的使用,可以考虑请求批处理。这是一种可以批量处理读取请求以最小化网络调用次数的方法。毫无疑问,这些优化技术可使应用程序具有高度可扩展性和成本效率。

以下是其工作原理的示例:

// 使用 Ethers.js 批处理合约调用的伪代码(概念示例)

const contract = new ethers.Contract(address, abi, provider);

const [value1, value2, value3] = await Promise.all([

contract.viewFunction1(),

contract.viewFunction2(),

contract.viewFunction3()

]);

Ethers.js:通用工具

https://harambetoken.ai/?domain=beincrypto&banner=header-banner-3&cpid=1ce31526-203f-4d6a-bf00-af77d6cf6edd

正如本指南所展示的,Ethers.js 是一款多功能工具。虽然我们已经简要介绍了它的功能,但要完全理解 Ethers.js 的最佳方式是深入了解智能合约、JavaScript、集成开发环境(IDE)、去中心化应用(DApps)等领域。此外,加入以太坊和 Ethers 社区也会很有帮助。

声明:

  1. 本文转载自[beincrypto],原文标题《What Is Ethers.js? A Deep Dive Into Ethereum’s JavaScript Library》,著作权归属原作者Ananda Banerjee,如对转载有异议,请联系Gate Learn团队,团队会根据相关流程尽速处理。
  2. 免责声明:本文所表达的观点和意见仅代表作者个人观点,不构成任何投资建议。
  3. 文章其他语言版本由Gate Learn团队翻译, 在未提及Gate.io的情况下不得复制、传播或抄袭经翻译文章。
Lancez-vous
Inscrivez-vous et obtenez un bon de
100$
!