npm 包 @ethersproject/abstract-signer 使用教程

介绍

在以太坊开发中,与智能合约交互需要使用钱包账户进行数字签名,并将签名后的交易发送到以太坊网络中。@ethersproject/abstract-signer 是一个 npm 包,提供了创建数字签名者 (Signer) 并进行签名等操作的功能。

安装

可以使用 npm 或 yarn 安装 @ethersproject/abstract-signer 包,例如:

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

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

创建数字签名者

@ethersproject/abstract-signer 包提供了各种不同类型的数字签名者,例如钱包签名者、JSON 文件签名者等。不同的签名者类型都实现了 Signer 接口,可以使用相同的方式进行数字签名和操作。

使用钱包地址创建钱包签名者

可以使用钱包地址创建钱包签名者。下面是使用以太坊 JSON-RPC 节点连接方式创建钱包签名者的示例代码:

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

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

其中:

  • ethers 是 @ethersproject/providers、@ethersproject/wallet 等 npm 包的入口;
  • Web3Provider 是以太坊 JSON-RPC 连接的提供者。可以使用 window.ethereum 或者 Infura 的提供者节点,例如:
----- ------------ - --- -------------
  --- ------------------------------------------------------------------------
--
  • Wallet 是钱包签名者的实现类;
  • getSigner() 方法用于从 Web3Provider 中获取签名者。

使用私钥创建钱包签名者

可以使用私钥创建钱包签名者。下面是使用私钥创建钱包签名者的示例代码:

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

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

使用 JSON 文件创建签名者

可以使用 JSON 文件创建签名者。下面是使用 JSON 文件创建签名者的示例代码:

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

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

签名和发送交易

使用钱包签名者进行数字签名和交易发送的示例代码:

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

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

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

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

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

其中:

  • InfuraProvider 是 Infura 节点提供者,可以使用 Infura 的节点连接以太坊网络;
  • Contract 是以太坊智能合约的实例;
  • Wallet 通过私钥创建签名者实例;
  • transfer 方法是以太坊代币转账合约中的方法;
  • parseEther 和 parseUnits 方法是将以太金额转换为 Wei 值;
  • sign 方法使用钱包签名者对交易进行数字签名;
  • sendTransaction 方法将签名后的交易发送给以太坊网络。

总结

本文介绍了 @ethersproject/abstract-signer 包的使用方法,包括创建数字签名者和进行签名和交易操作。希望能对以太坊开发者有所帮助。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/5eedc1c3b5cbfe1ea0611eea


猜你喜欢

  • npm 包 @types/shelljs-exec-proxy 使用教程

    npm 包 @types/shelljs-exec-proxy 使用教程 背景 在进行前端开发时,我们会经常使用命令行来执行一些任务,比如编译代码、打包等等。而在命令行中,我们通常采用 shell 脚...

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

    在前端开发中,自动化工具越来越受到关注,特别是在项目部署和发布中的自动化脚本,是提高效率的重要手段之一。而 Shipit 作为基于 SSH 的自动化部署工具,是一个非常不错的选择,该工具支持同步和异步...

    4 年前
  • npm 包 @types/shipit-cli 使用教程

    在前端开发中,我们经常需要使用构建工具来优化我们的开发体验。而 Shipit 是一个流行的自动化部署工具,通过它我们可以将我们的项目快速部署到生产环境中。@types/shipit-cli 则是一个为...

    4 年前
  • npm 包 @types/shipit-utils 使用教程

    前言 在日常的前端开发中,我们通常需要使用很多开源的第三方库,以便更高效、更便捷地完成项目开发。其中,npm 包管理工具则是前端开发中最常用的一种工具。而在使用这些库时,正确地理解和使用相应的 Typ...

    4 年前
  • npm 包 @types/shopify-buy 使用教程

    简介 随着电子商务的飞速发展,Shopify 成为了一个备受瞩目的平台。为了更好的开发和使用 Shopify 的 API,@types/shopify-buy 这个 npm 包应运而生。

    4 年前
  • npm 包 babel-preset-ts-node8 使用教程

    简介 随着 ES6 的逐渐普及,Javascript 的语言特性越来越强大。然而,仍有许多项目需要使用其他的编程语言来实现特定的功能。为了保持代码规范并尽可能地复用代码,我们需要使用一些工具来将不同的...

    4 年前
  • npm 包 @types/should-sinon 使用教程

    在前端开发中,我们会经常使用 Should.js 和 Sinon.js 这两个库来测试我们的代码。然而,在使用这两个库进行测试时,有时候我们需要引入类型,以方便代码的智能提示和可读性。

    4 年前
  • npm包@types/shrink-ray使用教程

    什么是@types/shrink-ray @types/shrink-ray是一种类型定义文件,它的作用是为Shrink-ray这个npm包提供类型声明。Shrink-ray是一个用于压缩Web应用中...

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

    什么是 @types/shuffle-array @types/shuffle-array 是一个 TypeScript 类型定义库,用于使用 shuffle-array 这个 JavaScript ...

    4 年前
  • npm包 @develar/schema-utils使用教程

    在前端开发中,我们经常需要对数据进行验证和规范化处理。这时,使用npm包 @develar/schema-utils可以很方便地完成这些任务。 简介 @develar/schema-utils是一个基...

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

    在前端开发中,我们经常会使用到轮播图这一核心组件。Siema 是一个十分受欢迎的轻量级轮播图插件,采用原生 JavaScript 编写,可以用于横向和纵向的轮播图。

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

    在前端开发中,测试是至关重要的一环。Siesta 是一个流行的 JavaScript 测试框架,它提供了丰富的 API 和易于编写的测试用例。在使用 Siesta 进行开发时,@types/siest...

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

    前言 在进行前端开发时,我们常常需要使用到一些第三方库。一般情况下,我们都需要安装库本身的 npm 包,并且如果需要使用该库提供的类型定义文件,则需要安装对应的 @types 包。

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

    Sigmund 是一个 JavaScript 库,可以用来生成字符串的哈希值。它非常有用,因为它可以帮助我们在需要处理大量字符串数据时快速地进行比较和查找。但是,如果你想在 TypeScript 中使...

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

    前言 SignalR 是一个开源的实时网络库,可以使用它在 Web 应用程序中添加实时 web 功能,而 @types/signalr 是 typescript 的声明文件,它定义了 SignalR ...

    4 年前
  • npm 包 @types/signalr-no-jquery 使用教程

    SignalR 是 Microsoft 推出的一种实时通信框架,其官方提供了多种语言的支持,其中包括前端的 JavaScript。@types/signalr-no-jquery 是 SignalR ...

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

    在前端开发中,我们经常需要处理异步事件和回调函数,而在处理这些事件和函数时,多个事件之间可能存在依赖或者相互影响的情况,这时候就需要使用到信号处理机制。在 JavaScript 中,可以使用 npm ...

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

    在前端开发中,手写签名的功能是很常见的。而在 TypeScript 项目中,为了让编译器能够识别手写签名相关的类型,我们需要使用一个名为 @types/signature_pad 的 npm 包。

    4 年前
  • npm 包 @types/simple-assign 使用教程

    介绍 在前端开发中,我们经常会使用 TypeScript 来编写代码,它是一个强类型的 JavaScript 超集。但是 TypeScript 并没有内置的对象和函数类型定义。

    4 年前
  • npm 包 @types/simple-cw-node 使用教程

    如果你是一名前端工程师,你可能会用到很多的开源库和框架来简化你的工作。而这些库和框架通常是使用 JavaScript 编写的。在 JavaScript 中,类型是在运行时动态推导出来的,这会给开发带来...

    4 年前

相关推荐

    暂无文章