区块链-前端交互第四篇:认识 ethers.js并运行测试代码

Posted 区块链市场观察家

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区块链-前端交互第四篇:认识 ethers.js并运行测试代码相关的知识,希望对你有一定的参考价值。

文章目录

参考:Ethers极简入门: 1. HelloVitalik (6行代码)

ethers.js 开源库

ethers.js是一个完整而紧凑的开源库,用于与以太坊区块链及其生态系统进行交互。如果你要写Dapp的前端,你就需要用到ethers.js。

与更早出现的web3.js相比,它有以下优点:

  • 代码更加紧凑:ethers.js大小为116.5 kB,而web3.js为590.6 kB。
  • 更加安全:
    • Web3.js认为用户会在本地部署以太坊节点,私钥和网络连接状态由这个节点管理(实际并不是这样);
    • ethers.js中,Provider提供器类管理网络连接状态,Wallet钱包类管理密钥,安全且灵活。
  • 原生支持ENS。

HelloETH

环境和测试代码

安装 NodeJs,然后把 NodeJs 安装目录添加到系统变量,以便使用包管理工具 npm

安装 ethers.js 库:

npm install --save ethers

安装命令部分回显:
+ ethers@5.7.2
added 45 packages from 4 contributors and audited 45 packages in 11.32s

IDEA 创建 NodeJS 项目,在项目根目录创建 JS 目录,在该目录下新建 HelloETH.js 文件。

使用WTF的测试代码:(未找到ethers库则使用IDEA安装一下)

let ethers = require('ethers');

const provider = ethers.getDefaultProvider();
const main = async () => 
    const balance = await provider.getBalance(`vitalik.eth`);
    console.log(`ETH Balance of vitalik: $ethers.utils.formatEther(balance) ETH`);


main()

在 IDEA 的 NodeJS 项目中直接运行 HelloETH.js 文件,效果如下:

涉及的重点代码

在ethers中,Provider类是一个为以太坊网络连接提供抽象的类,它提供对区块链及其状态的 只读 访问。

由于和区块链交互不是实时的我们需要用到js的async/await语法糖。每次和链交互的调用需要用到await,再把这些这些用async函数包裹起来,最后再调用这个函数。

报错

node下无法使用import:SyntaxError: Cannot use import statement outside a module

参考文章:

Node.js已经实现了99%的ES6新特性,采用的却是CommonJS规范,使用require引入模块,使用module.exports导出接口,所以使用 require() 导入模块:

let ethers = require('ethers');

疑惑

NodeJS脚本运行后不会自动退出-暂不解决

参考文章:成功执行后,我的nodejs脚本没有自行退出

但使用 process.exit(0) 后虽然进程会退出,但 console.log() 函数并没有打印信息到控制台。

临时方案:先手工中止脚本把。

以上是关于区块链-前端交互第四篇:认识 ethers.js并运行测试代码的主要内容,如果未能解决你的问题,请参考以下文章

使用Rust模拟ethers.js中的parseUnits

使用Rust模拟ethers.js中的parseUnits

在视图/只读区块链函数上调用 ethers web3js 时出现气体限制错误

区块链-前端交互第二篇:NodeJS 认知和 JS 基础语法

区块链-智能合约工程师第四篇:Truffle框架安装和介绍(Windows)

区块链-智能合约工程师第四篇:Truffle框架安装和介绍(Windows)