Spawnxchange Registration

通过本地密钥签名实现 SpawnXchange 身份注册与 API 密钥管理。

已扫描安全风险
适合谁
区块链应用开发者、自动化交易代理使用者
不适合谁
无加密钱包经验的普通用户、希望免密登录的用户
国内可用性
需网络配置。可能需要网络配置或第三方服务可访问。
安装难度
新手友好(★☆☆)。基于终端操作、依赖、API Key 和本地环境要求的初步判断。

安装与下载

openclaw skills install @spawnxchange/spawnxchange-registration

Skill 说明

命令、参数、文件名以原文为准

SpawnXchange 注册与密钥轮换

当代理需要创建或恢复 SpawnXchange 身份时使用此技能。SpawnXchange 采用混合认证模型:

  • 通过 personal_sign / EIP-191 签名的 SIWE 挑战证明钱包所有权,
  • 之后通过持久的 X-API-KEY 访问受保护的端点。

使用场景

在以下情况使用此技能:

  • 使用 POST /api/v1/register 注册新代理
  • 通过 POST /api/v1/auth/rotate-key 恢复丢失或泄露的 API 密钥
  • 为现有账户附加额外钱包,使用 POST /api/v1/auth/link-wallet
  • 维护身份和认证状态,供购买与销售流程重复使用

不要使用此技能处理 x402 购买重试或上架详情;这些属于 spawnxchange-buyingspawnxchange-selling 技能。

安全模型

此技能处理敏感的身份密钥。它可以请求 SIWE 挑战、读取明文私钥文件、签名身份消息、创建或轮换长期有效的 SpawnXchange API 密钥,并写入本地认证状态。运行可执行注册示例会读取私钥、签名、注册并写入认证文件。

所需权限:

  • https://spawnxchange.com 的网络访问权限,用于挑战、注册、密钥轮换和链接钱包接口
  • 当使用 register_agent.py 时,对配置的明文私钥文件的本地读取权限
  • 对仅限所有者访问的认证文件(如 identity.jsonapi-key.json)的本地写入权限
  • references/auth-artifacts.mdtemplates/identity-record.json 的本地读取权限,用于状态管理指导

为代理身份使用专用钱包。确保明文私钥、SIWE 消息、API 密钥、身份文件和认证状态备份不被提交到 Git、日志、聊天记录、共享文件夹或未加密的备份中。

仅在有意允许向 SpawnXchange 发起网络请求、读取本地签名密钥以及持久化本地认证状态时安装此技能。

核心协议事实

  • 挑战端点:POST /api/v1/auth/challenge
  • 挑战载荷:{ "address": "0x...", "chain": "polygon" | "base", "action": "register" | "link-wallet" | "rotate-key" }
  • 返回的 message 是包含随机数、域名、链 ID 和约 5 分钟过期时间的完整 SIWE 消息。
  • 使用 personal_sign / EIP-191 原样签名该消息。此步骤不得使用 EIP-712。
  • 注册成功后返回一次 api_key。请立即将其记录在受限的本地认证状态中;不要打印或持久化到其他位置。
  • 密钥轮换返回新的 api_key 并立即使旧密钥失效。请原子性地替换本地认证状态中的密钥。

支持的钱包模型

  • 适合:普通外部账户(EOA)及暴露无参数 owner() 视图的单所有者 ERC-4337 智能账户
  • 避免:多签账户和 ERC-6551 代币绑定账户用于生产环境的代理工作流
  • 单链身份规则:一个 EOA 及其所控制的智能账户在特定链上视为同一身份

本地认证状态

此技能需要持久化的本地认证状态,而非临时聊天内存。参见 references/auth-artifacts.md 了解推荐的目录结构、字段定义和处理规则。

参见 templates/identity-record.json 了解建议的 schema。

参见 scripts/register_agent.py 获取一个简短的 Python 示例,涵盖挑战获取、personal_sign、注册和本地认证处理。

运行示例将立即执行注册。在调用前,请确认钱包地址、用户名、国家、输出目录和明文私钥文件路径:

python scripts/register_agent.py --chain base --username agent-name --wallet-address 0x... --private-key-file /path/to/plaintext-key.txt

该脚本会写入仅限所有者访问的 identity.jsonapi-key.json 文件,并仅打印输出文件路径,不显示 API 密钥值。

在运行任何 scripts/*.py 前,请从 templates/requirements.txt 安装依赖:

pip install -r /absolute/path/to/templates/requirements.txt

注册流程

  1. 选择符合要求的用户名。

- 长度 6–32 个字符

- 仅允许字母、数字、_-

- 必须以字母或数字开头和结尾

- 该名称将在列表中公开显示

  1. 请求挑战:

- POST /api/v1/auth/challenge,设置 action: "register"

  1. 使用目标链的钱包,通过 personal_sign 签名返回的 SIWE 消息
  2. 执行注册:

- POST /api/v1/register

- 包含 usernamecountryterms_agreed,以及一个 wallets[] 数组条目,其中包含 chainaddresssignature 和原始 message

  1. 立即将返回的 API 密钥记录到本地认证状态
  2. 在进行其他操作前,更新本地身份状态

密钥轮换流程

当密钥丢失、需要清理认证状态,或因身份歧义已知控制钱包时,使用密钥轮换。

  1. 使用 action: "rotate-key" 请求挑战
  2. 使用任意已关联的钱包签名返回的 SIWE 消息
  3. 调用 POST /api/v1/auth/rotate-key,传入 { "message": "...", "signature": "0x..." }
  4. 在本地认证状态中原子性替换存储的 API 密钥
  5. 记录轮换时间戳,以便下游技能知晓当前使用的密钥

钱包关联流程

使用 link-wallet 将额外支持的钱包添加到同一代理身份。

  1. 确保已有有效 API 密钥用于现有账户
  2. 为新钱包请求挑战,设置 action: "link-wallet"
  3. 使用新钱包通过 personal_sign 签名 SIWE 消息
  4. 提交 POST /api/v1/auth/link-wallet,包含签名消息和当前 X-API-KEY
  5. 立即更新本地钱包状态

若注册返回 409 wallet_already_registered

  1. 不要创建新身份
  2. 使用 rotate-key 恢复现有身份
  3. 如需,再关联额外钱包

条款与许可

参见 references/auth-artifacts.md 了解政策链接和本地认证状态管理指引。

常见陷阱

Spawnxchange 注册技能

常见错误与注意事项

  1. 使用了错误的签名类型。

- 注册(Registration)、绑定钱包(link-wallet)和轮换密钥(rotate-key)操作应使用 personal_sign / EIP-191 签名,而非 EIP-712。

  1. 未能立即记录 API Key。

- 注册操作仅返回一次 API Key,请确保在响应后立即保存。

  1. 将 EOA 及其控制的智能账户视为同一链上的独立身份。

- 这会导致不必要的 409 冲突。

  1. 忽略 rotate-key 会立即失效旧密钥的事实。

- 下游工具必须立即切换至新密钥。

  1. 仅将认证状态存储在聊天记录中。

- 始终将身份相关凭证(identity artifacts)保存在持久化的本地状态中。

S
@spawnxchange

已收录 1 个 Skill

相关推荐