npm 包 @ethersproject/transactions 使用教程

简介

@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


猜你喜欢

  • npm 包 @vue/shared 使用教程

    前言 @vue/shared 是一款 Vue.js 使用的共享逻辑的库。不同于 Vue.js 核心库的功能实现,@vue/shared 主要包括 Vue.js runtime-core 和 Vue.j...

    4 年前
  • npm 包 @types/consolidate 使用教程

    Consolidate 是一个 Node.js 模版引擎的统一接口,类似于 jQuery 对 DOM 操作的封装,Consolidate 对模版引擎的使用方式做了一定程度的封装,使得我们可以轻松地在不...

    4 年前
  • npm 包 @vue/compiler-sfc 使用教程

    随着Vue.js的日益流行,其编译器也越来越受欢迎。 @vue/compiler-sfc是Vue.js的一个官方npm包,专门用于将Vue单文件组件解析为JavaScript对象。

    4 年前
  • npm 包 @types/socketio-wildcard 使用教程

    前言 随着现代化的 Web 应用程序的发展和复杂度的增加,越来越多的项目需要使用实时数据推送,并且这种需求是纵贯于前端、后端和数据库的。其中的关键技术之一是 Websocket,它提供了浏览器和服务器...

    4 年前
  • npm 包 @types/socketty 使用教程

    如果你正在进行 Node.js Socket.io 应用程序的开发,并且想要使用 TypeScript 构建你的应用程序,那么这篇文章将会对你非常有帮助。本文将介绍如何使用 npm 包 @types/...

    4 年前
  • npm 包 @types/solr-client 使用教程

    在前端开发中,使用 Solr 进行搜索是非常常见的操作。为了让 TypeScript 开发者更方便地使用 Solr 客户端库,社区开发了 npm 包 @types/solr-client,它为 sol...

    4 年前
  • npm 包 @types/solution-center-communicator 使用教程

    简介 @types/solution-center-communicator 是一个 npm 包,它提供了解决方案中心通信器(Solution Center Communicator)的 TypeSc...

    4 年前
  • npm 包 @types/sort-array 使用教程

    1. npm 包介绍 npm 包 @types/sort-array 是 TypeScript 语言下的数组排序工具包,可以帮助开发者快速地对数组进行排序操作,并提供丰富的 API 供开发者使用。

    4 年前
  • npm 包 @types/fibjs 使用教程

    前言 @types/fibjs 是一个 npm 包,它提供了 FibJS 框架的 TypeScript 类型定义。FibJS 是一款基于 V8 引擎的服务器端 JavaScript 运行环境,拥有高性...

    4 年前
  • npm 包 @types/createjs-lib 使用教程

    CreateJS 是一个开源的 JavaScript 框架,用于创建富交互性的 HTML5 应用程序。其中包括了多个模块,如 EaselJS、SoundJS、PreloadJS 和 TweenJS。

    4 年前
  • npm 包 @types/preloadjs 使用教程

    随着现代 Web 应用的发展,前端网页所要承载的信息和交互越来越复杂。图片、音频、视频等静态资源的处理和优化也显得越来越重要。作为前端工程师,我们需要探索各种解决方案,使得我们的网页在资源载入方面更加...

    4 年前
  • npm 包 @types/soundjs 使用教程

    简介 SoundJS 是一款 Web Audio 库,提供了一种简单易用的方式来处理声音。对于需要在网站或者应用中集成音频的前端开发者来说,这个库是非常有用的。 @types/soundjs 为 So...

    4 年前
  • npm 包 @types/soundmanager2 使用教程

    在前端开发过程中,经常需要处理音频播放的问题,而 SoundManager2 是一款优秀的音频播放插件,它能够在浏览器上播放多种格式的音频文件,包括 MP3、AAC、WMA、WAV 等格式。

    4 年前
  • npm 包 @types/soupbintcp 使用教程

    什么是 @types/soupbintcp @types/soupbintcp 是一个 npm 包,用于提供 TypeScript 对 SoupBinTCP 协议的支持。

    4 年前
  • npm 包 @types/space-pen 使用教程

    在前端开发中,我们常常使用各种第三方库和插件来帮助我们更高效地完成开发任务。其中,npm 包是前端开发者最常用的一种工具。它为我们提供了许多有用的功能和工具,让我们可以方便地管理项目依赖。

    4 年前
  • npm 包 sparkly 使用教程

    npm 包是前端开发不可或缺的工具,其丰富多彩的功能极大提高了开发效率。在这篇文章中,我们将介绍一个名为 sparkly 的 npm 包,它可以用来将数组转化为漂亮的彩色字符图表。

    4 年前
  • npm 包 @types/sparkly 使用教程

    在前端开发中,我们经常使用的一些库和框架都是通过 npm 安装的,而 npm 包数量如此之多,让我们很难找到合适的包来满足我们的需求。而 @types/sparkly 就是一个非常实用的 npm 包,...

    4 年前
  • npm 包 @types/sparkpost 使用教程

    在 Web 开发中,使用类库和框架是提高开发效率和质量的关键。而在 JavaScript 中,我们常常使用 npm 包来管理和引用这些类库。在使用这些 npm 包时,对于类型定义的支持就显得尤其重要。

    4 年前
  • npm 包 @types/sparqljs 使用教程

    简介 SPARQL 是一种查询 RDF 数据的语言,该语言基于 RDF 的三元组结构,并支持类似于 SQL 的查询功能。@types/sparqljs 是一个 TypeScript 类型定义包,能够提...

    4 年前
  • npm包@types/react-input-autosize使用教程

    前言 随着前端技术的发展,开发者们能够通过npm包来快速获取到需要的模块,方便了开发流程,提高了开发效率。而@types/react-input-autosize就是一款非常实用的npm包,它可以帮助...

    4 年前

相关推荐

    暂无文章