老胡茶室
老胡茶室
Beta

Ethers.js 非权威开发指南(上)

胡键

我曾经不止一次在以前的文章中鼓励大家在开发 dapp 时使用 Ethers.js,但时至今日却还没有一篇专门的文章来介绍它,这多少有些说不过去。于是,我决定用两篇文章的篇幅来谈谈它的开发使用。

这两篇文章以当前最新的 v5 版本为基础,采用问题驱动形式,涵盖了 dapp 开发中面临的主要开发主题。

在本篇中,你可以了解到:

  • 安装过程可能面临的问题
  • 如何与 Web3Modal 搭配使用
  • human readable abi 和只读合约方法调用
  • 读写合约调用以及 gas 相关问题
  • 如何确定交易的状态
  • 如何调用使用了 struct 的合约方法
  • 常见的 UNPREDICTABLE_GAS_LIMIT 错误如何解决

下篇则重点关注合约事件、历史、签名等相关内容。

作为开发者的你,假如在寻找让你能快速上手 Ethers.js 的使用,同时又能看到不那么小儿科的例子,那么本系列应该成为你的选择。

那么,让我们进入正题吧!

安装

通常,这里没什么好说的,按照文档上面的指示来就好了:

npm install --save ethers

但是,在极个别的情况下,尤其是采用某些前端框架时,按照以上方式安装可能会导致无法正确初始化 provider。此时,可以求助于另一种很容易被我们这些经过现代前端框架“洗脑”后的开发者所忽视的方法:最原始的 <script> 引入方式。

<script
  src="https://cdn.jsdelivr.net/npm/ethers@5.1.4/dist/ethers.umd.min.js"
  type="application/javascript"
></script>

然后,通过下面的代码引用 ethers 对象而非常见的 import

const ethers = window.ethers;

这种方式有一个副作用:在一些现代编辑器中,如 vscode ,无法利用其代码联想功能。因此,第一种方式应该成为你的首选,除非没得办法。

最后请注意:<script> 引入方式仅限于前端。对于后端代码(假如仍然使用 js / ts 的话),采用 npm i 方式即可。

连接钱包

严格来讲,本节的标题采用另一种说法更合适:“连接以太坊”。但由于“连接钱包”通俗易懂,故采用之。

...
付费内容

本文是付费文章

以上是此文章的预览内容

数字产品一经出售,概不退款