使用 Wagmi 2.0 和 Viem 的教程

冯紫英
• 阅读 499

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

  1. 安装依赖 首先,安装最新版的 wagmi 和 viem。
    npm install wagmi viem@2.x @tanstack/react-query
  2. 配置config
    import { http, createConfig } from 'wagmi'
    import { mainnet, sepolia } from 'wagmi/chains'
    

export const config = createConfig({ chains: [mainnet, sepolia], transports: { [mainnet.id]: http(), [sepolia.id]: http(), }, })

3. 添加 providers
```js
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
import { WagmiProvider } from 'wagmi'
import { config } from './config'

const queryClient = new QueryClient()

function App() {
  return (
    <WagmiProvider config={config}>
      <QueryClientProvider client={queryClient}>
        {/** ... */}
      </QueryClientProvider>
    </WagmiProvider>
  )
}
  1. 连接钱包 Wagmi 2.0 提供了便捷的方式来连接用户的加密钱包,比如 MetaMask。下面是一个简单的连接钱包的示例:
    import { useAccount, useConnect, useDisconnect } from 'wagmi';
    import { InjectedConnector } from 'wagmi/connectors/injected';
    

const ConnectWallet = () => { const { address, isConnected } = useAccount(); const { connect } = useConnect({ connector: new InjectedConnector(), }); const { disconnect } = useDisconnect();

if (isConnected) { return (

Connected to {address}

<button onClick={() => disconnect()}>Disconnect
); }

return <button onClick={() => connect()}>Connect Wallet; };

5. 与智能合约交互
使用 Wagmi 和 Viem,你可以轻松地调用智能合约的方法。假设你有一个简单的 ERC-20 合约,你可以如下调用它的 balanceOf 方法:
```js
import { useContractRead } from 'wagmi';

const contractConfig = {
  address: '0xYourContractAddress',
  abi: [
    // 你的合约 ABI
    {
      constant: true,
      inputs: [{ name: '_owner', type: 'address' }],
      name: 'balanceOf',
      outputs: [{ name: '', type: 'uint256' }],
      type: 'function',
    },
  ],
};

const GetBalance = () => {
  const { data, isError, isLoading } = useContractRead({
    ...contractConfig,
    functionName: 'balanceOf',
    args: ['0xYourWalletAddress'],
  });

  if (isLoading) return <div>Loading...</div>;
  if (isError) return <div>Error</div>;

  return <div>Balance: {data?.toString()}</div>;
};
  1. 监听事件 Wagmi 2.0 还支持监听区块链上的事件。例如,监听某个事件的触发:
    import { useContractEvent } from 'wagmi';
    

const ListenToEvent = () => { useContractEvent({ ...contractConfig, eventName: 'Transfer', listener: (event) => { console.log('Event received:', event); }, });

return

Listening to Transfer events...
; };

7. 使用 Viem 的其他功能
Viem 提供了许多强大的功能,可以直接与 Wagmi 配合使用,例如更高效的数据处理、更详细的错误处理等。你可以在官方文档中了解更多关于 Viem 的内容,并结合 Wagmi 来开发更复杂的以太坊应用。

### 结语
通过 Wagmi 2.0 和 Viem,你可以显著简化以太坊应用的开发过程。无论是连接钱包、调用合约方法还是监听区块链事件,Wagmi 2.0 都为你提供了便捷而强大的工具。希望这个教程能帮助你快速上手并开发出功能丰富的区块链应用。
点赞
收藏
评论区
推荐文章
可莉 可莉
3年前
10个开源的Python区块链项目
Python不是主流的区块链底层平台开发语言,但是在DApp开发、区块链仿真与数据分析、智能合约安全分析等领域,Python依然是不错的选择。本文介绍了10个最流行的Python区块链项并提供了相应的源代码下载地址。<!more区块链开发教程链接:以太坊(https://www.oschina.net/action/GoToLink
Stella981 Stella981
3年前
Defi数据引擎The Graph调用方法【含源码】
当你尝试访问以太坊智能合约以及DApp产生的区块链数据时,可能会发现很难将数据转换为一种可读的格式。TheGraph提供了一种用于查询以太坊和IPFS网络数据的索引协议,任何人都可以基于其提供的开放API创建并发布索引数据,即subgraph,这使得区块链数据更容易访问。在这个教程中,我们将学习如何使用TheGraph来查询Aave协议数据,使用的技术
Stella981 Stella981
3年前
ERC20接入Uniswap教程【DeFi】
Uniswap是基于以太坊的去中心化数字加密货币交易协议,它为代币持有者提供了简洁的接口来将一种ERC20代币兑换为另一种,并且交易所需的gas成本很低。区块链开发者可以自己的ERC20代币接入Uniswap以增强其流动性。在这个教程中,我们将学习如何将一个ERC20代币接入Uniswap协议,并且在教程的最后提供完整的实现源代码。用自己熟悉的语言学
Stella981 Stella981
3年前
Fabtoken
HyperledgerFabric2.0(alpha)中有一个新特性:Fabtoken,可以原生支持数字加密货币的发行与管理。我们都知道以太坊的ERC20标准可以用来在以太坊区块链上创建数字加密代币,现在有了Fabtoken,开发者使用HyperledgerFabric也可以轻松实现数字加密货币的发行、转账等功能了!HyperledgerF
Stella981 Stella981
3年前
EthSnarks以太坊混币器【零知识证明】
Miximus是一个用于以太坊区块链的去中心化混币器和匿名转账应用,由EthSnarks作者开发,用于展示零知识证明在以太坊上的实用性。本文介绍Miximus以太坊混币应用的安装使用方法、工作原理和实现细节。用自己熟悉的语言学习以太坊DApp开发:Java(https://www.oschina.net/action/GoToLink?urlh
Stella981 Stella981
3年前
DeFi Compound开发REST API
在这个教程中,我们将学习如何为DeFi协议Compound的智能合约创建一个可以通过HTTP访问的API开发接口,并学习如何使用Infura作为以太坊网络和应用之间的桥梁。Compound是一个基于以太坊的数字资产借贷利率协议。Infura(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%
Stella981 Stella981
3年前
Solidity内联汇编简明指南
在用Solidity开发以太坊智能合约时,使用汇编可以直接与EVM交互,降低gas开销成本,更精细的控制智能合约的行为,因此值得Solidity开发者学习并加以利用。本文是Solidity汇编开发的简明教程,旨在帮助你快速熟悉如何在Solidity智能合约代码中嵌入汇编代码。以太坊教程链接:Dapp入门(https://www.oschina.n
Wesley13 Wesley13
3年前
11个默克尔树开源项目
Merkle树是一种可以有效验证部分数据存在于指定数据集并且未被篡改的高效的哈希树结构,作为一种底层技术广泛应用在各种区块链的实现当中,对于商品溯源、知识产权确认、区块链公证等区块链应用起着重要的作用。本文介绍11个主流的merkle树开源实现,你可以在自己的项目中应用。区块链开发教程链接:以太坊(https://www.oschina.net/
Stella981 Stella981
3年前
Chainlink区块链Oracle网络使用指南
Chainlink是一个去中心化的预言机网络,它可以让区块链中的智能合约安全地访问外部世界的数据。在这个教程中,我们将探索chainlink预言机网络的搭建,并学习如何使用预置或自定义的适配器实现智能合约与外部世界数据的桥接。以太坊教程链接:Dapp入门(https://www.oschina.net/action/GoToLink?urlh
Stella981 Stella981
3年前
Optimsim Rollup详解
OptimismRollup是目前最流行的以太坊L2解决方案。本文将解释OptimismRollup每个设计决策背后的动机,剖析Optimism的系统实现,并提供指向每个分析组件的相应代码的链接,适用于希望了解Optimism解决方案的工作原理并评估所提议系统的性能和安全性的开发人员。区块链开发教程链接:以太坊(https://www.osc
冯紫英
冯紫英
Lv1
待到重阳日,还来就菊花。
文章
1
粉丝
0
获赞
0
热门文章

暂无数据