使用 Wagmi 2.0 和 Viem 的教程

Wagmi 2.0 是一个全新的版本,采用了 Viem 作为底层库,使得以太坊应用程序开发变得更加高效和便捷。Viem 是一个用于与以太坊区块链交互的库,提供了更快、更可靠的操作,并且更好地支持 TypeScript。下面的教程将带你一步步了解如何在你的项目中使用 Wagmi 2.0 和 Viem。

  1. 安装依赖 首先,安装最新版的 wagmi 和 viem。
1npm install wagmi viem@2.x @tanstack/react-query
  1. 配置config
1import { http, createConfig } from 'wagmi' 2import { mainnet, sepolia } from 'wagmi/chains' 3 4export const config = createConfig({ 5 chains: [mainnet, sepolia], 6 transports: { 7 [mainnet.id]: http(), 8 [sepolia.id]: http(), 9 }, 10})
  1. 添加 providers
1import { QueryClient, QueryClientProvider } from '@tanstack/react-query' 2import { WagmiProvider } from 'wagmi' 3import { config } from './config' 4 5const queryClient = new QueryClient() 6 7function App() { 8 return ( 9 <WagmiProvider config={config}> 10 <QueryClientProvider client={queryClient}> 11 {/** ... */} 12 </QueryClientProvider> 13 </WagmiProvider> 14 ) 15}
  1. 连接钱包 Wagmi 2.0 提供了便捷的方式来连接用户的加密钱包,比如 MetaMask。下面是一个简单的连接钱包的示例:
1import { useAccount, useConnect, useDisconnect } from 'wagmi'; 2import { InjectedConnector } from 'wagmi/connectors/injected'; 3 4const ConnectWallet = () => { 5 const { address, isConnected } = useAccount(); 6 const { connect } = useConnect({ 7 connector: new InjectedConnector(), 8 }); 9 const { disconnect } = useDisconnect(); 10 11 if (isConnected) { 12 return ( 13 <div> 14 <p>Connected to {address}</p> 15 <button onClick={() => disconnect()}>Disconnect</button> 16 </div> 17 ); 18 } 19 20 return <button onClick={() => connect()}>Connect Wallet</button>; 21};
  1. 与智能合约交互 使用 Wagmi 和 Viem,你可以轻松地调用智能合约的方法。假设你有一个简单的 ERC-20 合约,你可以如下调用它的 balanceOf 方法:
1import { useContractRead } from 'wagmi'; 2 3const contractConfig = { 4 address: '0xYourContractAddress', 5 abi: [ 6 // 你的合约 ABI 7 { 8 constant: true, 9 inputs: [{ name: '_owner', type: 'address' }], 10 name: 'balanceOf', 11 outputs: [{ name: '', type: 'uint256' }], 12 type: 'function', 13 }, 14 ], 15}; 16 17const GetBalance = () => { 18 const { data, isError, isLoading } = useContractRead({ 19 ...contractConfig, 20 functionName: 'balanceOf', 21 args: ['0xYourWalletAddress'], 22 }); 23 24 if (isLoading) return <div>Loading...</div>; 25 if (isError) return <div>Error</div>; 26 27 return <div>Balance: {data?.toString()}</div>; 28};
  1. 监听事件 Wagmi 2.0 还支持监听区块链上的事件。例如,监听某个事件的触发:
1import { useContractEvent } from 'wagmi'; 2 3const ListenToEvent = () => { 4 useContractEvent({ 5 ...contractConfig, 6 eventName: 'Transfer', 7 listener: (event) => { 8 console.log('Event received:', event); 9 }, 10 }); 11 12 return <div>Listening to Transfer events...</div>; 13};
  1. 使用 Viem 的其他功能 Viem 提供了许多强大的功能,可以直接与 Wagmi 配合使用,例如更高效的数据处理、更详细的错误处理等。你可以在官方文档中了解更多关于 Viem 的内容,并结合 Wagmi 来开发更复杂的以太坊应用。

结语

通过 Wagmi 2.0 和 Viem,你可以显著简化以太坊应用的开发过程。无论是连接钱包、调用合约方法还是监听区块链事件,Wagmi 2.0 都为你提供了便捷而强大的工具。希望这个教程能帮助你快速上手并开发出功能丰富的区块链应用。

点赞
收藏

评论区

加载中...

相关推荐

10个开源的Python区块链项目

Python不是主流的区块链底层平台开发语言,但是在DApp开发、区块链仿真与数据分析、智能合约安全分析等领域,Python依然是不错的选择。本文介绍了10个最流行的Python区块链项并提供了相应的源代码下载地址。<!more区块链开发教程链接:以太坊(https://www.oschina.net/action/GoToLink

Defi数据引擎The Graph调用方法【含源码】

当你尝试访问以太坊智能合约以及DApp产生的区块链数据时,可能会发现很难将数据转换为一种可读的格式。TheGraph提供了一种用于查询以太坊和IPFS网络数据的索引协议,任何人都可以基于其提供的开放API创建并发布索引数据,即subgraph,这使得区块链数据更容易访问。在这个教程中,我们将学习如何使用TheGraph来查询Aave协议数据,使用的技术

ERC20接入Uniswap教程【DeFi】

Uniswap是基于以太坊的去中心化数字加密货币交易协议,它为代币持有者提供了简洁的接口来将一种ERC20代币兑换为另一种,并且交易所需的gas成本很低。区块链开发者可以自己的ERC20代币接入Uniswap以增强其流动性。在这个教程中,我们将学习如何将一个ERC20代币接入Uniswap协议,并且在教程的最后提供完整的实现源代码。用自己熟悉的语言学

Fabtoken

HyperledgerFabric2.0(alpha)中有一个新特性:Fabtoken,可以原生支持数字加密货币的发行与管理。我们都知道以太坊的ERC20标准可以用来在以太坊区块链上创建数字加密代币,现在有了Fabtoken,开发者使用HyperledgerFabric也可以轻松实现数字加密货币的发行、转账等功能了!HyperledgerF

EthSnarks以太坊混币器【零知识证明】

Miximus是一个用于以太坊区块链的去中心化混币器和匿名转账应用,由EthSnarks作者开发,用于展示零知识证明在以太坊上的实用性。本文介绍Miximus以太坊混币应用的安装使用方法、工作原理和实现细节。用自己熟悉的语言学习以太坊DApp开发:Java(https://www.oschina.net/action/GoToLink?urlh

DeFi Compound开发REST API

在这个教程中,我们将学习如何为DeFi协议Compound的智能合约创建一个可以通过HTTP访问的API开发接口,并学习如何使用Infura作为以太坊网络和应用之间的桥梁。Compound是一个基于以太坊的数字资产借贷利率协议。Infura(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%