ethers.js

187 阅读2分钟

ethers.js库旨在为以太坊区块链及其生态系统提供一个小而完整的 JavaScript API 库

包含功能

    • 将私钥保存在客户端,安全 可信赖
    • 可支持导入和导出的 JSON钱包文件 (Geth, Parity and crowdsale)
    • 导入和导出 BIP39 助记词 (需备份的12个词或短语) 和 HD(分层确定性)钱包(英语,意大利语,日语,韩语,简体中文,繁体中文; 即将推出更多语言)
    • 从任何合约ABI创建 JavaScript 元类对象,包括 ABIv2 和 可读的ABI
    • ENS 名称 是"一等公民"; 它们可以在任何可以使用以太坊地址的地方使用
    • 非常小 (压缩~88kb; 未压缩~284kb)
    • 功能完整 满足所有的以太坊相关需求
    • 维护和新增的大量测试用例
    • 已经支持 TypeScript ,附带定义文件和完整的TypeScript源文件 
    • 宽松的 MIT 协议许可 (包括所有依赖); 完全开源可以随意使用

步骤 1: 安装 Ethers.js

首先,在你的前端项目中安装 Ethers.js。如果你使用 npm 或 yarn,可以这样做:

npm install ethers

如果你不使用模块打包器,可以在 HTML 中通过 CDN 引入:

<script src="https://cdn.ethers.io/lib/ethers-5.0.umd.min.js"></script>

步骤 2: 导入 Ethers.js

在你的JavaScript文件中导入Ethers.js:

import { ethers } from 'ethers';

步骤 3: 连接到以太坊钱包

大多数现代 DApps 使用 MetaMask 或其他以太坊钱包扩展来与区块链交互。首先,检查用户的浏览器是否安装了 MetaMask,并请求连接:

let provider;
 
if (typeof window.ethereum !== 'undefined') {
    provider = new ethers.providers.Web3Provider(window.ethereum);
 
    try {
        // 请求用户授权
        await provider.send("eth_requestAccounts", []);
    } catch (error) {
        console.error("用户拒绝了访问");
    }
} else {
    console.log('请安装MetaMask!');
}

步骤 4: 与智能合约交互

要与智能合约交互,你需要合约的 ABI 和地址。创建合约实例:

const contractABI = [/* ... */];
const contractAddress = "0x...";
const contract = new ethers.Contract(contractAddress, contractABI, provider.getSigner());

调用合约方法:

// 调用只读方法
const value = await contract.readOnlyFunction();
 
// 发送交易
const tx = await contract.stateChangingFunction(arg1, arg2);
await tx.wait();

步骤 5: 监听事件

如果你的合约产生了事件,可以这样监听这些事件: contract.on("EventName", (arg1, arg2, event) => { console.log(arg1, arg2, event); });