web3.js 是用于与以太坊区块链交互的 JavaScript 库,专为开发者构建去中心化应用(DApp)而设计。以下是其核心要点:

核心功能
1. 区块链交互:
读取区块、交易、账户余额等数据(如 `web3.eth.getBlockNumber`)。
发送交易(如 `web3.eth.sendTransaction`)。
2. 智能合作:
通过ABI和合约地址创建合约实例(`new web3.eth.Contract(abi, address)`)。
调用合约方法(如 `myContract.methods.myFunction.call`)。
3. 账户管理:
生成和管理账户(`web3.eth.accounts.create`)。
交易签名(需结合钱包如 MetaMask 使用)。
关键特性
Provider 连接:支持连接本地节点(如 Geth)或远程服务(如 Infura)。
异步处理:基于 Promise 的 API(例如 `async/await`)。
事件监听:监听新区块、交易确认等事件(如 `web3.eth.subscribe('newBlockHeaders')`)。
使用场景
DApp 开发:前端与以太坊节点交互(如查询余额、发起交易)。
钱包集成:与 MetaMask 等钱包配合,管理用户账户。
DeFi 协议:操作借贷、交易等智能合约。
安装与初始化
bash
npm install web3
javascript
import Web3 from 'web3';
// 连接 MetaMask 提供的 Provider
const web3 = new Web3(window.ethereum);
对比其他库
ethers.js:更轻量,模块化设计,TypeScript 友好。
web3.js:功能全面,由以太坊基金会维护,适合复杂场景。
注意事项
安全性:避免在前端暴露私钥,依赖用户钱包处理签名。
版本兼容:v1.x+ 使用 Promise,旧版(0.x)依赖回调函数。
节点配置:生产环境建议使用 Infura 或自建节点。
文档资源:
官方文档:[web3.js Documentation]
GitHub 仓库:[web3.js GitHub]
通过实践(如连接测试网、调用合约),可更深入掌握其用法。