介绍 Viem 这款新一代以太坊开发库的主要特性和使用方法
在以太坊生态系统蓬勃发展的今天,开发者们正在寻求更高效、更安全的开发工具来满足日益增长的需求。本文将为大家简要介绍 Viem 这款新一代以太坊开发库的主要特性和使用方法。
为方便中文开发者深入学习 Viem,我们登链社区已完成了 Viem 官方文档的完整中文翻译。如果你在阅读本文后想深入了解 Viem 的更多技术细节,欢迎访问 Viem 中文文档,那里提供了从入门到进阶的详细指南。
Viem 的设计理念围绕着几个关键特性展开:
Viem 支持开箱即用的功能:
根据官方数据显示,Viem 在多个关键指标上都展现出了显著优势:
npm install viem
# 或
yarn add viem
import { createPublicClient, createWalletClient, http } from 'viem'
import { privateKeyToAccount } from 'viem/accounts'
import { mainnet } from 'viem/chains'
// 初始化公共客户端
const publicClient = createPublicClient({
chain: mainnet,
transport: http(), // 支持自定义 RPC 节点
})
// 账户配置
const account = window.ethereum || privateKeyToAccount('0x...');
// 初始化钱包客户端
const walletClient = createWalletClient({
account,
chain: mainnet,
transport: http(),
})
区块查询
const block = await publicClient.getBlock()
console.log('当前区块高度:', block.number)
发送交易
import { parseEther } from 'viem'
const hash = await walletClient.sendTransaction({ to: '0xC27018ca6c6DfF213583eB504df4a039Cc7d8043', value: parseEther('0.001') }) console.log('交易哈希:', hash)
3. **合约调用**
```typescript
const balance = await publicClient.readContract({
address: '0xdac17f958d2ee523a2206206994597c13d831ec7', //usdt合约地址
abi: contractABI, // eg: erc20 abi
functionName: 'balanceOf',
args: [accountAddress]
})
console.log('代币余额:', balance)
// Ethers 写法
const provider = getDefaultProvider()
// Viem 写法
const client = createPublicClient({
chain: mainnet,
transport: http()
})
// Ethers 写法
const signer = provider.getSigner(address)
// Viem 写法
const client = createWalletClient({
account,
chain: mainnet,
transport: custom(window.ethereum)
})
new Contract(address, abi, provider).method()
client.readContract({ address, abi, functionName })
new Contract(address, abi, signer).method()
client.writeContract({ address, abi, functionName, account })
// Ethers 写法
const contract = new Contract(address, abi, provider)
contract.on('EventName', listener)
contract.off('EventName', listener)
// viem 写法
const unwatch = client.watchContractEvent({
...contractConfig,
eventName: 'EventName',
onLogs: logs => {
// 处理事件
}
})
unwatch() // 取消监听
完整的迁移指南可以参考 Ethers v5 → viem 迁移指南。
Viem 作为新一代以太坊开发工具库,通过其现代化的设计理念和优异的性能表现,正在重新定义区块链开发体验。其核心优势包括:
对于现代化区块链应用开发者而言,Viem 不仅是一个工具库,更代表了以太坊生态技术演进的新方向。它的出现标志着区块链开发工具正在向更高效、更专业的方向发展。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!