以前一直用web3.js,听说ethers好用,但官方文档难以理解,参考了别的文章后发现确实很好用,于是打算写一篇中文入门教程(更新中)
本文参考了
https://dev.to/hideckies/ethers-js-cheat-sheet-1h5j
// ES Modules
import { ethers } from 'ethers';
// CommonJS
const { ethers } = require('ethers');
要与区块链交互,需要Provider,可以使用你的节点rpc,也可以使用用户钱包的节点
const provider = new ethers.provider.JsonRpcProvider(`url`);
url填写你的节点rpc url即可,如果是websocket则需要换成WebSocketProvider
const provider = new ethers.provider.Web3Provider(window.ethereum);
发出交易前需要用signer进行签名,signer需拥有私钥
用私钥初始化Wallet对象
const wallet = new ethers.Wallet(privateKey)
const signer = wallet.connect(provider)
当provider是钱包时,可直接获得signer
const signer = provider.getSigner();
读取合约只需要provider,不发交易改变链上状态
const contract = new ethers.Contract(`address`, `abi`, `provider`);
其中abi如果是etherscan上已开源的可以通过api获取
写合约需要signer,因此第三个参数改为signer即可以对应钱包去发交易
const contract = new ethers.Contract(`address`, `abi`, `signer`);
然后用contract.METHOD_NAME可以调用合约相应的方法
provider.on("pending", (tx) => {
console.log(tx)
});
filter = {
address: "vitalik.eth",
topics: []
}
provider.on(filter, (log, event) => {
console.log(log)
})
const wei = ethers.utils.parseEther(`ETH`);
const ether = ethers.utils.formatEther(`wei`);
