【区块链-前端交互】第四篇:认识 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

安装命令部分回显:
+ [email protected]
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() 函数并没有打印信息到控制台。

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

猜你喜欢

转载自blog.csdn.net/soldi_er/article/details/127653678