如果你想开发一个区块链应用,或者只是想写段代码和以太坊交互,那 ethers.js 绝对是你绕不开的工具。这东西到底能干啥?今天用大白话给你讲明白。

先搞懂:ethers.js 是个啥?

简单说,ethers.js 就是一个 JavaScript 库(可以理解为一堆写好的工具函数),专门用来帮你和以太坊(以及类似的区块链,比如 BSC、Polygon 这些)打交道。

没有它的时候,你要直接和区块链对话,得自己处理各种复杂的加密、编码、网络请求,想想都头大。有了它,这些脏活累活都帮你包了,你只管调用现成的功能就行。

ethers.js 能帮你干这些事

1. 连接区块链,查数据

区块链就像一个巨大的公开数据库,里面存着所有的交易记录、账户余额、合约代码。ethers.js 能帮你轻松连上这个数据库,查你想知道的任何信息。

比如:

  • 查某个账户里有多少 ETH
  • 查最新的区块是多少号
  • 查一笔交易到底成功没
  • 查某个智能合约的当前状态

代码大概长这样(不用看懂,感受下就行):

// 连到以太坊网络
const provider = new ethers.providers.JsonRpcProvider("节点地址");

// 查账户余额
const 余额 = await provider.getBalance("某个人的钱包地址");
// 查最新区块
const 最新区块 = await provider.getBlock("latest");

2. 管理钱包和账户

玩区块链离不开钱包,ethers.js 能帮你创建新钱包、导入旧钱包,还能给交易签名(证明这笔交易是你发起的)。

比如:

  • 生成一个全新的钱包(带私钥和地址)
  • 用私钥导入你以前的钱包
  • 给消息签名(比如登录某个 DApp 时证明「你是你」)

举个例子:

// 生成新钱包
const 新钱包 = ethers.Wallet.createRandom();
console.log("地址:", 新钱包.address);
console.log("私钥:", 新钱包.privateKey); // 记得藏好!

// 用私钥导入旧钱包
const 我的钱包 = new ethers.Wallet("我的私钥...", provider);

3. 发交易、转钱

这应该是最常用的功能之一。不管是转 ETH 给朋友,还是给某个合约打钱,都能用 ethers.js 搞定。

比如转 0.1 个 ETH 给别人:

// 发起转账
const 交易 = await 我的钱包.sendTransaction({
  to: "对方的地址",
  value: ethers.utils.parseEther("0.1") // 转 0.1 ETH
});

// 等交易上链(确认)
await 交易.wait();
console.log("转账成功!交易哈希:", 交易.hash);

4. 和智能合约聊天

智能合约是区块链上的「自动程序」(比如各种代币、NFT、DeFi 应用)。ethers.js 能帮你调用这些合约的功能,比如转账代币、 mint NFT 之类的。

比如调用一个 ERC20 代币的转账功能:

// 告诉 ethers.js 这个合约有哪些功能(ABI)
const 合约功能 = ["function transfer(address 对方, uint 数量) returns (bool)"];
// 连接到合约
const 代币合约 = new ethers.Contract("合约地址", 合约功能, 我的钱包);

// 转 100 个代币给对方
const 交易 = await 代币合约.transfer("对方地址", 100);
await 交易.wait();
console.log("代币转账成功!");

5. 各种小工具,帮你省事儿

区块链里有很多特殊的格式和计算,ethers.js 内置了一堆工具帮你处理:

  • 单位转换:比如把「0.1 ETH」转换成区块链能认的「wei」(就像把「1 元」转换成「100 分」)
  • 哈希计算:比如给一段文字生成区块链常用的 keccak256 哈希
  • 编码解码:把普通数据转换成合约能认的格式,或者把合约返回的乱码转成人类能懂的内容

哪些场景会用到它?

  • 开发 DApp 前端:比如你在网页上做一个去中心化交易所,用户在页面上点「交易」按钮,背后就是 ethers.js 在和区块链交互。
  • 写脚本工具:比如批量给 100 个地址发代币,用 ethers.js 写个脚本跑一下就搞定。
  • 做钱包应用:不管是手机钱包还是网页钱包,核心的转账、签名功能都能靠它实现。
  • 智能合约测试:写好合约后,用 ethers.js 写测试用例,自动验证合约功能对不对。

最后说句大实话

ethers.js 就像区块链开发的「瑞士军刀」—— 功能多、体积小、用起来顺手。如果你想入门区块链开发,先把它摸熟了,绝对不亏。

而且它不光能连以太坊,像 BSC、Polygon 这些和以太坊类似的链,换个「节点地址」就能直接用,兼容性拉满。

下次再有人问你「怎么和区块链打交道」,直接甩给他一句:「学 ethers.js 就对了!」

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐