钱包(Wallet)
约 1835 字大约 6 分钟
2026-05-12
钱包不是 Web3 的“登录按钮”。它是用户管理账户、签名授权、发送交易、切换网络和确认风险的入口。产品设计得好不好,很多时候首先体现在钱包交互是否清楚。
为什么要学这个
Web3 应用离不开钱包。用户连接钱包、读取地址、签名消息、发送交易、批准 token、切换网络,这些动作都发生在钱包边界上。只把钱包当成 SDK 接入,会很容易忽视安全和体验问题。
钱包连接成功不代表用户理解了后续动作。真正关键的是:用户是否知道自己在哪条链、和哪个合约交互、授权了什么资产、要付多少 gas、失败后能不能恢复。
钱包是用户意图进入链上执行之前的最后一道确认界面。
在产品里,钱包交互至少要分清三类动作:
- 连接钱包:应用读取地址和网络,不等于可以动用资产。
- 签名消息:用户证明自己控制某个地址,可能用于登录、授权或创建订单。
- 发送交易:用户请求改变链上状态,可能转账、授权 token、调用合约或支付 gas。
这三类动作的风险完全不同。页面文案、按钮状态和确认提示也应该不同。
第一性原理
钱包管理的不是“账号资料”,而是链上控制权。
传统登录系统里,平台可以重置密码、封禁账号、恢复状态。钱包体系里,控制权来自私钥或智能账户规则。应用可以请求连接和签名,但不应该假设自己拥有用户账户。
- 连接不是授权资产:读取地址和发起交易是两层完全不同的权限。
- 签名必须可解释:用户需要知道签名目的,而不是只看到十六进制数据。
- 网络是上下文:同一个地址在不同链上可能有不同资产和状态。
知识节点
EOA
难度:初级。 先理解最常见的钱包账户是由私钥控制的外部账户。
EOA(Externally Owned Account)是由私钥控制的账户。它可以签名消息、发起交易、支付 gas、调用合约。大多数浏览器钱包和移动钱包默认给用户创建的都是这类账户。
EOA 简单、通用、生态兼容性好,但也有明显限制:私钥丢失难恢复,权限很难细分,自动化能力弱,用户体验经常被 gas、网络切换和签名弹窗打断。
相关 topic
- 账户抽象(Account Abstraction):继续看 Smart Account 如何把账户控制逻辑从私钥扩展到可编程规则。
Mnemonic
难度:初级。 助记词是恢复钱包的高风险秘密,不是普通验证码,也不应该被任何应用索要。
Mnemonic 通常是一组单词,用来恢复钱包里的私钥。它的存在是为了让用户更容易备份,但也让钓鱼攻击更容易伪装成“输入助记词恢复账户”。
任何网页、客服、AI Agent、表单或脚本要求你输入助记词,都应该默认视为危险。真实产品也不应该让用户把助记词交给应用。
产品里也不要写“输入助记词连接钱包”这种流程。正确做法是让用户在钱包应用内部恢复账户,然后由 dApp 请求连接钱包。
Transaction
难度:中级。 交易是对链上状态的正式请求,一旦成功上链,结果通常不能像数据库记录一样随便撤回。
Transaction 可以是转账,也可以是调用合约方法。钱包会让用户确认交易内容、链、合约地址、gas 和可能的资产变化。应用侧要尽量把这些信息解释清楚。
一个常见误区是把“点击按钮”当成交易本身。实际上按钮只是发起请求;交易还要经过钱包确认、签名、广播、打包和执行。每一步都可能失败。
前端至少要展示或处理这些状态:
- 等待用户在钱包里确认。
- 用户拒绝签名。
- 交易已广播,等待区块确认。
- 交易成功。
- 交易失败或 revert。
- 交易长时间 pending,需要重试或提示用户查看 explorer。
Gas
难度:初级。 Gas 是链上执行成本,既影响用户付费,也影响交易是否能被及时处理。
Gas 用来支付网络执行和存储资源。用户发交易时通常需要支付 gas fee;如果 gas 估算不准、网络拥堵或余额不足,交易可能失败或卡住。
产品不能只显示“确认交易”。至少要让用户知道:大概费用是多少,费用用什么资产支付,失败时是否仍可能消耗费用,是否可以重试。
Explorer
难度:初级。 区块浏览器是用户和开发者查看链上事实的窗口,但它不是链本身。
Explorer 可以查看地址、交易、合约、事件、token 转移和执行状态。对用户来说,它是确认交易是否成功的工具;对开发者来说,它是排查失败、核对合约和追踪状态的入口。
AI 产品如果引用链上信息,最好能给出 explorer 链接或交易哈希,让用户可以自己验证,而不是只相信模型总结。
看一笔交易时,至少检查:
- Status:成功还是失败。
- From / To:谁发起,调用了哪个地址。
- Method:调用了哪个合约方法。
- Value:是否直接转了原生资产。
- Token Transfers:是否发生 token 转移。
- Logs:合约发出了哪些 event。
- Gas Used:实际消耗了多少 gas。
在 AI x Web3 中的位置
AI Agent 想要进入链上执行,最终会碰到钱包边界。它可以帮助解释交易、准备参数、检查风险、生成操作计划,但签名和权限不能被随意交给模型。
更合理的设计是:AI 做理解和辅助,钱包负责确认和授权,策略合约或智能账户负责执行约束。这样用户既能得到 AI 的效率,也保留对资产和权限的控制。
最小实践
做一个钱包交互地图:
- 用测试钱包连接一个测试网 dApp。
- 记录连接钱包、切换网络、签名消息、发送交易、查看 explorer 的完整流程。
- 标出哪些动作只是读取信息,哪些动作会改变链上状态。
- 写出每一步用户应该看到的关键信息。
- 思考如果这些动作由 AI Agent 辅助,哪些必须保留人工确认。
扩展阅读
- MetaMask Wallet Docs:了解钱包连接、账户、签名和交易请求的开发接口。
- Ethereum Accounts:理解 EOA 和合约账户的基础区别。
- Ethereum Transactions:学习交易结构、签名和执行流程。
- WalletConnect Docs:了解跨钱包连接和会话管理的基础。
- EIP-1193:钱包 Provider API 的重要接口规范。