mcpField
B
building-with-base-account

building-with-base-account

github.com/base开发120357 次安装1 天前更新
代码仓库

关于 building-with-base-account

building-with-base-account 是面向开发者的 Base Account 集成技能,介绍 SDK 快速入门及各项功能的参考资料。它还列出交易验证、弹窗处理和凭据保护等关键要求。

主要功能

  1. 01SDK 安装与初始化示例
  2. 02登录认证与后端验证指引
  3. 03支付、订阅及子账户参考
  4. 04批量交易与 Gas 赞助能力指引
  5. 05安全和弹窗处理要求

适用场景

  1. 01在应用中集成 Base Account
  2. 02实现登录或 USDC 支付
  3. 03开发订阅、子账户或批量交易功能
  4. 04排查弹窗及钱包调用问题

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/base/skills --skill building-with-base-account

安装后在 Claude Code 中输入/building-with-base-account确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
authentication.md
capabilities.md
payments.md
prolinks.md
sub-accounts.md
subscriptions.md
troubleshooting.md

详细介绍

使用 Base Account 构建

Base Account 是一个 ERC-4337 智能钱包,提供通用单点登录、一键 USDC 支付和多链支持(Base、Arbitrum、Optimism、Zora、Polygon、BNB、Avalanche、Lordchain、Ethereum Mainnet)。

快速入门

npm install @base-org/account @base-org/account-ui
import { createBaseAccountSDK } from '@base-org/account';

const sdk = createBaseAccountSDK({
  appName: 'My App',
  appLogoUrl: 'https://example.com/logo.png',
  appChainIds: [8453], // Base Mainnet
});

const provider = sdk.getProvider();

功能参考

请阅读与你正在实现的功能相关的参考文档:

功能参考文档阅读时机
使用 Base 登录references/authentication.md钱包身份验证、SIWE、后端验证、SignInWithBaseButton、Wagmi/Privy 配置
Base Payreferences/payments.md一键 USDC 支付、payerInfo、服务端验证、BasePayButton
订阅references/subscriptions.md定期扣款、支出权限、CDP 钱包配置、扣款/撤销生命周期
子账户references/sub-accounts.md应用专属嵌入式钱包、密钥生成、资金注入
功能references/capabilities.md批量交易、Gas 赞助(Paymaster)、原子执行、auxiliaryFunds、归因
Prolinksreferences/prolinks.md可分享的支付链接、二维码、编码后的交易 URL
故障排除references/troubleshooting.md弹窗问题、Gas 用量、不支持的调用、迁移、文档链接

关键要求

安全
  • 跟踪交易 ID,防止重放攻击
  • 验证发送方与通过身份验证的用户一致,防止冒充
  • 使用代理,防止 Paymaster URL 暴露在前端
  • Paymaster 提供商必须符合 ERC-7677
  • 切勿在客户端暴露 CDP 凭据(仅限订阅后端)
弹窗处理
  • 在用户点击“登录”之前生成 nonce,避免弹窗拦截器阻止弹窗
  • 使用 Cross-Origin-Opener-Policy: same-origin-allow-popups
  • same-origin 会导致 Base Account 弹窗无法正常工作
Base Pay
  • Base Pay 可独立于 SIWB 使用——调用 pay() 无需身份验证
  • getPaymentStatus() 中的 testnet 参数必须与 pay() 调用一致
  • 切勿仅根据链上余额禁用操作——请检查 auxiliaryFunds 功能
子账户
  • 每个会话都要在使用前调用 wallet_addSubAccount
  • 更换设备或浏览器后,所有权可能发生变化
  • 导入时仅支持 Coinbase Smart Wallet 合约
智能钱包
  • ERC-6492 包装器可在钱包部署前验证签名
  • Viem 的 verifyMessage/verifyTypedData 会自动处理此问题

边缘情况和最新 API 变更

评论

支持 Markdown