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的情况下不得复制、传播或抄袭经翻译文章。
ابدأ التداول الآن
اشترك وتداول لتحصل على جوائز ذهبية بقيمة
100 دولار أمريكي
و
5500 دولارًا أمريكيًا
لتجربة الإدارة المالية الذهبية!
It seems that you are attempting to access our services from a Restricted Location where Gate.io is unable to provide services. We apologize for any inconvenience this may cause. Currently, the Restricted Locations include but not limited to: the United States of America, Canada, Cambodia, Thailand, Cuba, Iran, North Korea and so on. For more information regarding the Restricted Locations, please refer to the User Agreement. Should you have any other questions, please contact our Customer Support Team.