区块链-前端交互第四篇:认识 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
参考文章:
- 【解决SyntaxError: Cannot use import statement outside a module问题】
- SyntaxError: Cannot use import statement outside a module报错原因和解决方法
Node.js已经实现了99%的ES6新特性,采用的却是CommonJS规范,使用require引入模块,使用module.exports导出接口,所以使用 require()
导入模块:
let ethers = require('ethers');
疑惑
NodeJS脚本运行后不会自动退出-暂不解决
但使用 process.exit(0)
后虽然进程会退出,但 console.log() 函数并没有打印信息到控制台。
临时方案:先手工中止脚本把。
以上是关于区块链-前端交互第四篇:认识 ethers.js并运行测试代码的主要内容,如果未能解决你的问题,请参考以下文章
在视图/只读区块链函数上调用 ethers web3js 时出现气体限制错误
区块链-前端交互第二篇:NodeJS 认知和 JS 基础语法