npm 包 @ethersproject/transactions 使用教程

阅读时长 5 分钟读完

简介

@ethersproject/transactions 是 Ethereum 以太坊区块链上交易编码和解码的 JavaScript 库,用于构成、发送、签名和读取交易。该库的目标是使开发者容易构建 Ethers.js 和 Web3.js 应用程序,从而实现最终用户体验的增强和安全性。

安装

可以使用以下命令安装 @ethersproject/transactions:

或者使用 yarn:

快速开始

在你的 JavaScript 代码中,需要引入 @ethersproject/transactions:

接下来,我们可以构造一个简单的交易,这个交易从 A 地址向 B 地址转移 0.1 个以太币。我们可以使用以下代码来构造此交易:

-- -------------------- ---- -------
----- -- - -
  --- --------
  ------ ------------------------------
--

----- -------- - ----- ---------------------------

----- ----------- - --- ----------------------
---------------- ---- --- - - ------------------

上面代码中,我们首先构建一个简单的交易,然后使用钱包来签署该交易,最后构建了一个 @ethersproject/transactions 中的 Transaction 对象,并输出交易的哈希。

详细介绍

交易是 Ethereum 区块链上的最基本操作之一。交易包含一些元数据,如发送方地址、接收方地址、转移金额等。发送方为了验证转账交易的有效性,需要对交易进行数字签名,确保交易未被篡改。在 Ethereum 区块链上完成转账通常需要以下步骤:

  1. 构造一笔交易(填写交易元数据,例如:发送地址、接收地址、转账金额等)
  2. 对交易进行数字签名(使用发送方的私钥对交易进行签名)
  3. 广播交易(将交易发送到全网进行验证和确认)

使用 @ethersproject/transactions 很容易地实现这些流程。下面我们来看每一步的详细使用方法。

构造交易

构造交易时,我们需要填写交易的元数据,例如发送地址、接收地址、转账量等:

在这里我们使用了 Ethers.js 中的 ethers.utils.parseEther 函数将转账金额从以太转换为 wei(以太坊中的最小货币单位)。这里 value 应该是一个自然数字符串或 BigNumber 对象。

签名交易

签名交易时,我们需要使用发送方的私钥对交易进行签名:

在代码中,wallet 是一个钱包对象,我们可以使用以下代码创建:

在这里我们假设 privateKey 变量包含了一个有效的私钥字符串。

构造 Transaction 对象

在处理交易之前,我们需要从已签名的交易计算交易哈希值。可以使用以下代码计算交易哈希:

这里的哈希值是十六进制字符串,你可以使用 Ethers.js 库提供的其他方法来处理这个哈希值。

广播交易

我们可以使用 Ethers.js 库提供的几种不同的方法来发送交易,例如 sendTransaction()、send() 或 wait()。具体使用哪种方法取决于您想要的交互度和信息反馈。下面我们介绍其中一个方法:使用 sendTransaction() 发送交易。

在这里我们首先获取默认的区块链节点信息,然后将签名过的交易发送到该节点,最后输出交易的哈希值。sendTransaction() 函数返回的是一个 Promise 对象,当节点正确处理交易后,该 Promise 对象将被解决。

总结

本文介绍了如何使用 @ethersproject/transactions 来编码和解码 Ethereum 区块链上的交易。我们首先快速地介绍了如何安装该库,并提供了一个简单的示例程序。然后我们深入剖析了构建、签名和广播交易的过程。

由于 Ethereum 区块链是动态和复杂的,因此我们强烈建议您在使用该库之前了解一些 Ethereum 和区块链基础知识。但是,如果您已经了解了这些知识,那么使用 @ethersproject/transactions 库可以大大提高您的工作效率。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5eedc1c5b5cbfe1ea0611ef6

纠错
反馈