什么是Web3.js或Ethers.js?它们的作用是什么?

直子 真綾
直子 真綾
Computer science student passionate about Ethereum's future; 热爱以太坊未来的计算机科学学生。

好的,没问题。我们来聊聊 Web3.js 和 Ethers.js 这两个东西。


什么是 Web3.js 或 Ethers.js?

你可以把 Web3.js 和 Ethers.js 想象成一座“桥梁”或者一个“翻译官”。

  • 桥梁的一头:是你正在使用的网站或App(比如一个去中心化交易所、一个NFT市场)。
  • 桥梁的另一头:是以太坊区块链网络。

这个“翻译官”的工作,就是把你(通过网站)的意图,翻译成以太坊区块链能听懂的语言,然后把区块链返回的结果,再翻译成网站能看懂的样子展示给你。

它们俩本质上都是 JavaScript 库,也就是说,是程序员用来开发 Web3 应用的工具包。

为什么我们需要它们?

想象一下,以太坊区块链就像一个说“外星语”的超级计算机。它有自己的一套沟通规则(专业点叫 JSON-RPC 协议),非常底层和复杂。

而我们平时上网用的浏览器,只懂 JavaScript、HTML 这些“地球语”。

如果你想让一个网站直接和以太坊沟通,那简直是对牛弹琴。这时候,Web3.js 或 Ethers.js 就站了出来,说:“别急,我来当翻译!”

它们把那些复杂的“外星语”指令封装成了简单易懂的 JavaScript 函数。程序员只需要调用这些简单的函数,就能和以太坊网络互动了,大大降低了开发门槛。

它们具体能做什么?(它们的作用)

有了这座“桥”,我们就可以做很多酷炫的事情了。基本上,所有和以太坊区块链打交道的操作,都可以通过它们来完成:

  1. 连接到以太坊网络

    • 就像把网线插到电脑上一样,这是第一步。它可以连接到公共的以太坊节点,也可以连接到你自己的钱包(比如 MetaMask)。
  2. 查询区块链上的信息(只读操作)

    • 查余额:看看某个钱包地址里有多少以太币(ETH)或其他代币。
    • 查交易:获取某一笔交易的详细信息,比如谁转给了谁,转了多少。
    • 查区块信息:获取当前最新的区块号是多少,或者某个区块里包含了哪些交易。
  3. 发起交易(写入操作)

    • 转账:从你的账户给别人发送 ETH。
    • 与智能合约互动:这是最核心的功能。比如在一个 NFT 市场点击“购买”按钮,背后就是通过 Web3.js/Ethers.js 调用了 NFT 合约的 buy 函数。
  4. 与智能合约深度交互

    • 你可以把它想象成遥控一个部署在区块链上的小程序。你可以读取这个小程序的状态(比如一个游戏里你角色的等级),也可以调用它的功能来改变状态(比如执行“升级”操作)。
  5. 钱包功能

    • 创建新的以太坊钱包地址。
    • 对消息进行签名,以证明这个操作确实是你本人发起的(这在登录很多DApp时会用到)。

Web3.js vs. Ethers.js:有什么区别?

这是个很经典的问题,就像问“肯德基和麦当劳哪个好?”一样。它们都能帮你点餐(与以太坊交互),但风格和体验上有些不同。

  • Web3.js元老级选手,像个老大哥

    • 它是最早出现的,也是以太坊官方曾经主推的库。
    • 很多老的项目和教程都是基于它来写的,生态非常庞大。
    • 缺点是库的体积比较大,有些设计在现在看来稍微有点过时和复杂。
  • Ethers.js后起之秀,更现代、更轻便

    • 它是由一位知名的以太坊开发者从头开始设计的,目标就是更小、更简单、更符合现代 JavaScript 的开发习惯。
    • 它的文档非常清晰,API 设计得更直观(比如它明确区分了 Provider - 只读连接 和 Signer - 可签名/写操作的对象,让开发者思路更清晰)。
    • 体积小,对现代前端开发工具更友好。
    • 目前在新的项目中,Ethers.js 的使用率越来越高,社区也非常活跃。

一个简单的比喻总结

如果把整个以太坊生态比作一个超级银行系统

  • 以太坊区块链:就是银行的总金库,记录了所有人的账本,绝对安全。
  • 智能合约:是金库里的一个个保险箱,每个保险箱都有自己独特的存取规则。
  • 你的钱包(MetaMask):是你的银行卡 + 密码,代表了你的身份和授权。
  • Web3.js 或 Ethers.js:就是你面前的那个ATM机或者银行柜员

你不会直接跑到金库里去操作账本,而是通过 ATM机/柜员(Web3.js/Ethers.js)来查询余额、转账、或者操作你的保险箱(智能合约)。

我应该学哪个?

如果你是刚入门的新手,我个人更推荐从 Ethers.js 开始。

理由很简单:它的设计更现代化,文档对新手更友好,体积也更小。学会它之后,你会对如何与区块链交互有一个非常清晰的认识。

当然,Web3.js 作为一个“老大哥”,保有量依然很大,很多公司的老项目还在用。所以,当你熟悉了 Ethers.js 之后,有空再去了解一下 Web3.js 的用法也是很有好处的,这样你就能“两手抓,两手都硬”了。