核心用法
use-user-controlled-wallets 是 Circle 官方提供的用户自控钱包(User-Controlled Wallets)开发工具,专为构建真正的非托管钱包场景设计。与开发者自控钱包不同,该方案通过 MPC(多方计算)技术让用户完全掌控私钥,应用方无法访问用户资金。
技术架构
采用前后端分离设计:
- 后端:使用
@circle-fin/user-controlled-wallets处理 API 调用,保管 Circle API Key - 前端:使用
@circle-fin/w3s-pw-web-sdk处理用户交互、认证流程和挑战执行
账户类型选择
- EOA(外部拥有账户):无创建费用,TPS 更高,支持 EVM、Solana、Aptos 多链,但需用户支付 gas
- SCA(智能合约账户):支持 ERC-4337 账户抽象,可批量操作、gas 代付,但仅限 EVM L2(避免 Ethereum 主网高昂部署费)
认证方式
| 方式 | 配置复杂度 | 适用场景 |
|------|----------|---------|
| PIN 码 | 最低,无需控制台配置 | 快速原型、内部工具 |
| 社交登录(Google/Apple/Facebook) | 中等,需配置 OAuth | 消费级应用 |
| 邮箱 OTP | 较高,需配置 SMTP | 传统用户群体 |
安全挑战模型
所有敏感操作(创建钱包、转账、签名)均通过「挑战-响应」模式执行:后端创建操作获取 challengeId → 前端调用 sdk.execute() → 用户在 Circle 托管 UI 中确认 → 回调返回结果。
显著优点
1. 真正的非托管:私钥由用户通过 MPC 分片控制,应用方零知识,符合「Not your keys, not your coins」原则
2. 企业级安全:Circle 作为美国持牌金融机构,提供 SOC 2、ISO 27001 等合规保障
3. 多链原生支持:EVM、Solana、Aptos 一站式覆盖,无需切换 SDK
4. 用户体验友好:社交登录降低 Web3 入门门槛,PIN/OTP 提供备选方案
5. 灵活的 gas 策略:SCA 支持 Gas Station 代付,适合补贴用户场景
潜在缺点与局限性
1. 必须双端开发:无法纯前端实现,需维护 Node.js 后端,增加架构复杂度
2. 依赖 Circle 托管 UI:挑战执行环节必须跳转到 Circle 的确认界面,自定义程度受限
3. SDK 浏览器兼容性:依赖 Node.js 内置模块(buffer、crypto),必须配置 vite-plugin-node-polyfills
4. SCA 主网成本:Ethereum 主网部署 SCA 费用极高,官方明确建议仅用于 L2
5. 学习曲线陡峭:需理解 MPC、挑战-响应、userToken/deviceToken 等概念
适合人群
- 金融科技公司:需要合规非托管方案,满足监管对资产控制权的严格要求
- 消费级 Web3 应用:希望通过社交登录降低用户门槛,同时保持去中心化特性
- 多链钱包产品:需要统一接口支持 EVM、Solana、Aptos,避免多 SDK 维护成本
- 企业级 DApp:对安全审计、SLA、技术支持有较高要求,愿意牺牲部分去中心化换取可靠性
常规风险
- 供应商锁定:深度依赖 Circle 基础设施,若服务中断或政策变化将影响业务连续性
- 前端安全风险:示例代码使用
localStorage存储 token,生产环境必须使用 httpOnly Cookie 防 XSS - 误操作风险:
getWalletTokenBalance返回人类可读金额,直接用于转账可能导致精度错误 - 主网资金风险:必须显式确认网络类型,避免测试网代码意外调用主网造成损失
- MPC 单点疑虑:虽然用户控制密钥,但 Circle 参与 MPC 计算,极端情况下存在理论协作风险(尽管密码学上不可行)
---
决策建议:若你的产品需要「用户真正拥有资产」+「企业级可靠性」+「社交登录体验」,且能接受必须维护后端的架构成本,这是当前最成熟的方案之一。若追求完全去中心化或纯前端实现,应考虑其他替代方案。