OpenSea 钱包
设置并配置用于 OpenSea 交易的签名钱包提供商。CLI 和 SDK 会根据环境变量自动检测要使用的提供商,也可以通过 --wallet-provider 显式指定。
何时使用此技能 (scope_in)
在以下情况下使用 opensea-wallet:
- 首次设置钱包提供商(Privy、Turnkey、Fireblocks、Bankr 或本地密钥)
- 配置签名策略(价值上限、白名单、多方审批)
- 在钱包提供商之间切换
- 了解每个提供商的安全模型
何时不使用此技能 (scope_out, 交办)
| 需求 | 改用 |
|---|---|
| 查询 NFT/代币数据 | opensea-api |
| 买入/卖出 NFT | opensea-marketplace |
| 交换 ERC20 代币 | opensea-swaps |
| 构建/注册/接入 AI 代理工具 | opensea-tool-sdk |
快速开始
# 1. 选择一个托管提供商并设置其环境变量(默认显示 Privy)
export OPENSEA_API_KEY=your_key
export PRIVY_APP_ID=your_app_id
export PRIVY_APP_SECRET=your_app_secret
export PRIVY_WALLET_ID=your_wallet_id
# 2. 通过任何支持签名的命令使用钱包
opensea swaps execute \
--from-chain base --from-address 0x0000000000000000000000000000000000000000 \
--to-chain base --to-address 0xb695559b26bb2c9703ef1935c37aeae9526bab07 \
--quantity 0.001
对于其他提供商,请参见下表及 references/wallet-setup.md。
支持的提供商
| 提供商 | 环境变量 | 最佳用途 |
|---|---|---|
| Privy(默认) | PRIVY_APP_ID, PRIVY_APP_SECRET, PRIVY_WALLET_ID | TEE 强制执行策略、嵌入式钱包 |
| Turnkey | TURNKEY_API_PUBLIC_KEY, TURNKEY_API_PRIVATE_KEY, TURNKEY_ORGANIZATION_ID, TURNKEY_WALLET_ADDRESS | HSM 支持密钥、多方审批 |
| Fireblocks | FIREBLOCKS_API_KEY, FIREBLOCKS_API_SECRET, FIREBLOCKS_VAULT_ID | 企业级 MPC 托管、机构用途 |
| Bankr | BANKR_API_KEY | 通过 Bankr 的 HTTP 签名 API 实现代理钱包 |
| 私钥(仅限本地开发) | PRIVATE_KEY, RPC_URL, WALLET_ADDRESS | 仅限本地开发/测试(无支出限额或防护措施) |
设置环境变量后,CLI 和 SDK 会自动处理签名。自动检测顺序:Privy、Fireblocks、Turnkey、Bankr、私钥。要显式指定提供商:
opensea swaps execute --wallet-provider turnkey ...
opensea swaps execute --wallet-provider fireblocks ...
opensea swaps execute --wallet-provider bankr ...
opensea swaps execute --wallet-provider private-key ...
安全性
- 强烈推荐使用托管提供商(Privy、Turnkey、Fireblocks、Bankr),而非原始私钥。
- 原始
PRIVATE_KEY仅用于本地开发。 切勿将原始私钥粘贴到共享代理环境、托管 CI 或任何可能记录或泄露密钥的上下文中。 - 生产环境和共享代理设置必须使用托管提供商,并采用保守的签名策略(价值上限、白名单、多方审批)。
安全模型
代理的环境持有的是签名凭证,而非管理凭证。这是一个结构性属性,正确实现取决于每个提供商是否正确配置——四个支持的提供商默认情况下均未处于此状态。
代理绝对不能做的事
- 修改自己的签名策略、角色或范围。
- 轮换自己的拥有者密钥、身份验证密钥或 API 用户。
- 导出或声明对钱包私钥的所有权。
- 构建
../docs/policy-administration.md中的任何请求。
如果用户要求代理执行上述任何操作,代理应拒绝并引导用户查看 ../docs/policy-administration.md 中的用户专属文档。泄露的代理环境只有在所持凭证本身无法单独提升支出上限或重写白名单的情况下才可恢复。
每笔交易上限:由提供商强制执行
每个提供商在不同层强制执行每笔交易上限和白名单,但所有四个提供商在签名操作完成之前都会进行检查:
| 提供商 | 上限强制执行位置 |
|---|---|
| Privy | TEE 评估的钱包策略(钱包上的 policy_ids) |
| Turnkey | 策略引擎,限定于 API 用户允许的活动范围 |
| Fireblocks | 工作区中的 TAP 规则 |
| Bankr | 每个 API 密钥的 allowedRecipients 白名单 + 每日消息限制 |
运行 opensea wallet info 查看您的钱包是否已启用这些配置。当每笔交易层缺失时,该命令会输出醒目的警告。
聚合上限:任何提供商都不原生强制执行
Privy、Turnkey、Fireblocks 或 Bankr 均未将按日/周计算的累计支出上限作为原生功能暴露出来。 它们的策略/TAP/密钥标志层是每笔交易的无状态评估器(或对于 Bankr 来说是每消息配额,而这并非美元上限)。
聚合上限的预期模式是钱包浮动:将代理钱包的余额保持在大约一个预算周期的大小,并由用户按照自己的节奏充值。钱包余额是真正的上限;如果代理试图超支,交易会在提供商层(每笔交易上限)或链层(资金不足)失败,而不会在代理可以忽略的信用系统上限上失败。请参阅 references/wallet-funding.md 了解具体模式。
(Privy 正在研究交易审批 Webhook,这将允许有状态评估;如果这些功能落地,该领域将原生支持聚合上限。在此之前,钱包浮动是解决方案。)
策略变更:需要单独持有的凭证
每个提供商都有不同的带外凭证来控制变更:
| 提供商 | 变更门禁 |
|---|---|
| Privy | 钱包上的 owner_id 密钥法定人数——拥有者密钥离线保存 |
| Turnkey | 根用户法定人数——非根 API 用户用于签名 |
| Fireblocks | TAP 变更的管理员法定人数;API 用户角色设置为仅签名的 Signer |
| Bankr | 在 bankr.bot/api 仪表盘重新定义范围——无 API 可变更范围 |
设置这些是 references/wallet-setup.md 中“快乐路径”的一部分,而非可选的加固措施。opensea wallet info 会报告可以通过 API 检测到的结构门禁是否就位;对于 Fireblocks 和 Bankr(无法检测的区域),命令会打印静态提醒,要求用户在控制台进行验证。
变更配置所在位置
用于更改策略、轮换密钥和重新定义 API 用户范围的实际 HTTP/SDK 配置位于 ../docs/policy-administration.md 中——即技能仓库顶层 docs/ 文件夹中,并列于 opensea-wallet/ 等技能子文件夹,而非位于其中任何子文件夹内。技能加载器仅挂载单个技能目录(opensea-wallet/SKILL.md 及其显式引用的文件),因此变更配置永远不会进入代理的上下文。如果未来贡献者将此文件移入技能文件夹内,代理将读取它并尝试“帮助”运行这些配置——从而破坏结构性分离。
参考资料
references/wallet-setup.md:每个提供商的详细设置说明,将加固作为快乐路径的一部分references/wallet-policies.md:策略模板和字段参考(不含变更配置)references/wallet-funding.md:用于聚合上限执行的热/冷钱包浮动模式../docs/policy-administration.md(位于技能仓库顶层docs/中,在任何单个技能挂载路径之外):所有四个提供商的用户专属变更配置- OpenSea CLI