前言在去中心化应用(DApp)中,钱包是用户与区块链交互的入口。用户的钱包地址相当于他们的“账号”,而签名交易则是他们在链上的“操作凭证”。因此,连接钱包是DApp中最重要的功能之一。没有钱包连接,用户就无法进行转账、签名、参与合约调用,也就失去了DApp的核心价值。本节课程将带你逐步
在去中心化应用(DApp)中,钱包是用户与区块链交互的入口。用户的钱包地址相当于他们的“账号”,而签名交易则是他们在链上的“操作凭证”。因此,连接钱包 是 DApp 中最重要的功能之一。没有钱包连接,用户就无法进行转账、签名、参与合约调用,也就失去了 DApp 的核心价值。
本节课程将带你逐步实现 DApp 钱包连接功能。我们将使用 wagmi
和 Ant Design Web3
这两个强大且现代化的工具库,帮助你快速构建一个支持钱包交互的前端应用。
在以太坊生态中,常见的钱包连接方式主要有三种:
浏览器插件钱包
window.ethereum
,DApp 可直接调用接口与钱包交互。钱包 App 内置浏览器
WalletConnect 协议
前两种方式依赖“钱包注入接口”,而钱包注入主要遵循两种协议:
- EIP-1193:早期标准,接口较为简单,目前应用广泛。
- EIP-6963:更新协议,正在逐步推广,提供更丰富的多钱包支持能力。
在本教程中,我们将以 EIP-1193 为例,先实现与钱包的连接。
在项目目录下安装所需依赖:
npm install wagmi @ant-design/web3 @ant-design/web3-wagmi
wagmi
:React Hooks 封装的 Web3 工具库。
@ant-design/web3
:Ant Design Web3 UI 组件库。
@ant-design/web3-wagmi
:提供 wagmi 与 Ant Design Web3 的集成支持。
下面我们一步一步实现钱包连接功能。
在 React 项目中创建一个组件 Web3.tsx
:
import { http } from "wagmi";
import { Mainnet, WagmiWeb3ConfigProvider, MetaMask } from '@ant-design/web3-wagmi';
import { Address, NFTCard, Connector, ConnectButton } from "@ant-design/web3";
export default function Web3() {
return (
<WagmiWeb3ConfigProvider
chains={[Mainnet]}
transports={{
[Mainnet.id]: http(),
}}
wallets={[MetaMask()]}
>
<Address format address="0xEcd0D12E21805803f70de03B72B1C162dB0898d9" />
<NFTCard
address="0xEcd0D12E21805803f70de03B72B1C162dB0898d9"
tokenId={641}
/>
<Connector>
<ConnectButton />
</Connector>
</WagmiWeb3ConfigProvider>
);
};
MetaMask()
:代表小狐狸钱包。Ant Design Web3 支持多款钱包(如 TokenPocket、imToken、WalletConnect 等),你可以根据需要在 wallets
数组中自由添加。MetaMask()
会自动帮你与 wagmi 配置对接,简化集成步骤。Connector
:连接器组件,提供上下文和逻辑管理,负责处理连接、断开、状态监听等一系列交互逻辑。它不仅仅是 UI 容器,更是钱包交互的核心“控制器”。ConnectButton
:配合 Connector
使用的按钮,点击后会调用钱包连接逻辑。如果已连接,它会自动显示用户状态(如钱包地址缩写),如果未连接则显示“Connect Wallet”。Address
:展示指定地址的组件,可以将链上地址以多种格式显示(完整地址、缩写、中间省略等),提高用户体验。NFTCard
:一个展示 NFT 资产的 UI 组件,传入合约地址和 tokenId
后,它会自动获取链上数据并渲染出卡片式展示,非常适合快速搭建展示页面。Ant Design Web3 内置了多种钱包支持,如 TokenPocket、imToken 等。只需在 wallets
配置中添加即可:
wallets={[MetaMask(), TokenPocket(), ImToken()]}
如果需要支持手机钱包,可以引入 WalletConnect:
import { WalletConnect } from '@ant-design/web3-wagmi';
wallets={[MetaMask(), WalletConnect()]}
disconnect
事件,自动重试或提示用户重新连接。在本节中,我们学习了如何在 DApp 中实现钱包连接功能:
wagmi
与 Ant Design Web3
快速实现了钱包连接功能。连接钱包是 DApp 的第一步。有了它,我们才能进一步实现 链上交互,比如代币转账、合约调用、消息签名等。在下一节,我们将继续探索 如何与智能合约进行交互,让 DApp 真正具备业务功能。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!