您好,欢迎来到尔游网。
搜索
您的当前位置:首页【区块链-前端交互】第四篇:认识 ethers.js并运行测试代码

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

来源:尔游网

参考:

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

环境和测试代码

安装 ethers.js 库:

npm install --save ethers

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

使用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脚本运行后不会自动退出-暂不解决

参考文章:

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

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

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- axer.cn 版权所有 湘ICP备2023022495号-12

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务