ethers.js 教程
![](https://miro.medium.com/v2/resize:fit:960/1*z7_kWKf-M-b_qSYTM_9b-g.png)
ethers.js
是一个完整而紧凑的开源库,用于与以太坊区块链及其生态系统进行交互。
它通常可用于创建去中心化应用程序 (dapps)、钱包(如 MetaMask 和 Tally)以及其他需要读取和写入区块链的工具和简单脚本。
与更早出现的web3.js
相比,它有以下优点:
- 代码更加紧凑:
ethers.js
大小为116.5 kB,而web3.js
为590.6 kB。 - 更加安全:
Web3.js
认为用户会在本地部署以太坊节点,私钥和网络连接状态由这个节点管理(实际并不是这样);ethers.js
中,Provider
提供器类管理网络连接状态,Wallet
钱包类管理密钥,安全且灵活。 - 原生支持
ENS
。
![](https://www.wtf.academy/assets/images/1-1-62c0e785174f467af55b783aa4b549d8.png)
1. ethers.js 用途
Ethers.js库是一个强大的工具,用于与以太坊区块链进行交互。例如它可以执行以下任务:
- 代币转账
- 创建智能合约
- 与智能合约进行交互,读取合约信息
- ...
2. 学习基础
阅读本教程,需要你有拥有一定的 web 前端开发背景,对 Javascript 语法和 Ajax 运行机制有所了解。
如果你对 Ajax 与 web 服务器进行通信的机制很熟悉,那么使用 ethers.js 完全没有问题。ethers.js 与 Ajax 类似,可以使用 ethers.js 读写以太坊区块链。
3. ethers.js工作流程
ethers.js
是一个用于以太坊区块链的JavaScript和TypeScript库,它提供了丰富的API来处理以太坊的各种功能,比如钱包管理、与智能合约交互、发送交易等。ethers.js
的工作原理主要涉及以下几个方面:
1.钱包管理:
ethers.js
支持多种类型的钱包,包括随机钱包、助记词钱包、私钥钱包等。- 钱包用于管理用户的私钥和公钥,以及进行签名操作。
2.与以太坊节点交互:
ethers.js
通过JSON-RPC与以太坊节点(如Geth、Parity、Infura等)进行通信。- 它发送请求到节点,并处理节点的响应,以执行各种操作,如查询账户余额、读取智能合约状态、发送交易等。
3.智能合约交互:
ethers.js
提供了与智能合约交互的API,允许用户读取和写入智能合约的状态。- 它支持通过ABI(应用程序二进制接口)与智能合约进行交互,ABI定义了如何调用智能合约的函数以及这些函数的参数和返回值。
4.交易发送:
ethers.js
允许用户构建和发送交易到以太坊网络。- 它处理交易的签名、序列化、发送到节点等步骤。
5.监听和事件:
ethers.js
提供了监听以太坊网络上事件的能力,如监听新的区块、交易、日志等。- 这使得应用程序可以实时响应区块链上的变化。
6.工具和实用程序:
ethers.js
还提供了一些工具和实用程序,如单位转换、地址处理、交易和区块解析等。
总的来说,ethers.js
的工作原理是基于与以太坊节点的通信,通过提供丰富的API来简化与以太坊区块链交互的复杂性。这使得开发人员可以更容易地构建与以太坊交互的应用程序。