Web3.js入门指南:如何使用Web3.js与以太坊交互

发布于 2025-02-07 05:16:16 · 阅读量: 177640

Web3.js如何入门?新手小白的极简指南

1. Web3.js是啥?

Web3.js 就是通往区块链世界的钥匙,让你的前端能和以太坊链直接对话。不管你是想撸NFT、搞DeFi,还是写个DApp,Web3.js 都是绕不过去的那一环。

简单来说,它是一个 JavaScript 库,可以让你和以太坊节点进行交互,比如查询账户余额、发送交易、读取智能合约等。

2. 环境准备

在开始之前,确保你已经安装了 Node.js(建议 LTS 版本),然后直接开干:

bash npm install web3

装完 Web3.js,我们需要一个以太坊节点来测试。有两种方式:

  1. 自己搭节点(太麻烦,不推荐新手搞)
  2. 用 Infura 或 Alchemy(白嫖云服务,省事省力)

InfuraAlchemy 注册个账号,创建一个项目,就能拿到免费的 API Key,用它来连以太坊节点。

3. 连接以太坊

有了 Web3.js,我们先试试连接以太坊主网:

javascript const Web3 = require('web3'); const web3 = new Web3('https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID');

web3.eth.getBlockNumber().then(console.log);

这样,我们就能获取最新的区块号,证明我们的 Web3.js 连接成功了!

4. 查询账户余额

我们可以用 Web3.js 查某个地址的 ETH 余额,比如:

javascript async function getBalance(address) { const balance = await web3.eth.getBalance(address); console.log(web3.utils.fromWei(balance, 'ether') + ' ETH'); }

getBalance('0x742d35Cc6634C0532925a3b844Bc454e4438f44e'); // 这是某个大户的钱包

5. 发送交易

如果你想转账,得用私钥签名交易。为了安全起见,我们用 Metamask 来签名,而不是把私钥直接写在代码里。

先让用户连接 Metamask:

javascript async function connectWallet() { if (window.ethereum) { await window.ethereum.request({ method: 'eth_requestAccounts' }); const web3 = new Web3(window.ethereum); const accounts = await web3.eth.getAccounts(); console.log('Connected account:', accounts[0]); } else { console.log('请安装 Metamask!'); } }

然后执行交易:

javascript async function sendTransaction() { const accounts = await web3.eth.getAccounts(); const tx = { from: accounts[0], to: '0xRecipientAddress', // 收款地址 value: web3.utils.toWei('0.01', 'ether'), gas: 21000, gasPrice: await web3.eth.getGasPrice() };

const receipt = await web3.eth.sendTransaction(tx);
console.log('交易成功:', receipt.transactionHash);

}

6. 读取智能合约

智能合约的交互主要靠 ABI(合约接口)合约地址。假设我们要读取某个 ERC-20 代币(比如 USDT)的余额:

javascript const contract = new web3.eth.Contract(ERC20_ABI, '0xdAC17F958D2ee523a2206206994597C13D831ec7');

async function getTokenBalance(walletAddress) { const balance = await contract.methods.balanceOf(walletAddress).call(); console.log('USDT 余额:', web3.utils.fromWei(balance, 'mwei')); }

7. 监听事件

DApp 经常需要监听链上的变化,比如某个合约有没有触发事件:

javascript contract.events.Transfer() .on('data', event => { console.log('发现交易:', event.returnValues); }) .on('error', console.error);

8. 小结

  • Web3.js 让你能直接和以太坊交互
  • 通过 Infura/Alchemy 连接以太坊
  • 能查余额、发交易、读合约、监听事件
  • DApp 开发绕不开 Web3.js,快去实战撸代码!



Gate.io Logo 加入 Gate.io,注册赢取最高$6666迎新任务奖励!