运行时依赖
版本
版本1.0.0 - verified-agent-identity技能初始发布。- 支持使用Billions ERC-8004和Attestation Registries为代理创建和管理去中心化身份。- 支持将代理身份链接到人类所有者,签署/验证身份认证挑战,并处理去中心化标识符(DID)。- 包含密钥管理、身份检查和安全最佳实践的防护措施。- 所有敏感身份数据存储在用户的$HOME/.openclaw/billions目录中。
安装命令
点击复制技能文档
何时使用此技能
让AI代理在Billions网络上创建和管理自己的身份,并将这些身份链接到人类所有者。
- 当您需要将代理身份链接到所有者时。
- 当您需要签署挑战时。
- 当您需要将人类链接到代理的DID时。
- 当您需要验证签名以确认身份所有权时。
- 当您使用共享JWT令牌进行身份验证时。
- 当您需要创建和管理去中心化身份时。
安装插件后,运行以下命令创建身份并将其链接到您的DID:
cd scripts && npm install && cd ..# 步骤1:创建新身份(如果您还没有)
node scripts/createNewEthereumIdentity.js
# 步骤2:一步签署挑战并生成验证URL
node scripts/linkHumanToAgent.js --challenge '{"name": , "description": }'
范围
所有身份数据存储在$HOME/.openclaw/billions中,以与OpenClaw插件兼容。
# 脚本:
createNewEthereumIdentity.js
命令: node scripts/createNewEthereumIdentity.js [--key
描述: 在Billions网络上创建新身份。如果提供--key,则使用该私钥;否则生成新的随机密钥。创建的身份自动设为默认。
使用示例:
# 生成新的随机身份
node scripts/createNewEthereumIdentity.js# 使用现有私钥创建身份(带0x前缀)
node scripts/createNewEthereumIdentity.js --key 0x1234567890abcdef...
# 使用现有私钥创建身份(不带0x前缀)
node scripts/createNewEthereumIdentity.js --key 1234567890abcdef...
输出: DID字符串(例如,did:iden3:billions:main:2VmAk7fGHQP5FN2jZ8X9Y3K4W6L1M...)
getIdentities.js
命令: node scripts/getIdentities.js
描述: 列出本地存储的所有DID身份。在执行身份验证操作前使用此命令检查可用的身份。
使用示例:
node scripts/getIdentities.js
输出: 身份条目的JSON数组
[
{
"did": "did:iden3:billions:main:2VmAk...",
"publicKeyHex": "0x04abc123...",
"isDefault": true
}
]
generateChallenge.js
命令: node scripts/generateChallenge.js --did
描述: 生成用于身份验证的随机挑战。
使用示例:
node scripts/generateChallenge.js --did did:iden3:billions:main:2VmAk...
输出: 挑战字符串(随机数字符串,例如,8472951360)
副作用: 将与DID关联的挑战存储在$HOME/.openclaw/billions/challenges.json中
signChallenge.js
命令: node scripts/signChallenge.js --challenge
描述: 使用DID的私钥签署挑战以证明身份所有权并发送JWS令牌。当您需要证明您拥有特定DID时使用此命令。
参数:
--challenge- (必需)要签署的挑战--did- (可选)证明接收者的DID;如省略则使用默认DID
使用示例:
# 使用默认DID签署
node scripts/signChallenge.js --challenge 8472951360
输出: {"success":true}
linkHumanToAgent.js
命令: node scripts/linkHumanToAgent.js --challenge
描述: 签署挑战并通过创建验证请求将人类用户链接到代理的DID。从技术上讲,链接使用Billions ERC-8004注册表(每个代理都在此注册)和Billions证明注册表(在验证人类唯一性后创建代理所有权证明)。
参数:
--challenge- (必需)要签署的挑战--did- (可选)证明接收者的DID;如省略则使用默认DID
使用示例:
node scripts/linkHumanToAgent.js --challenge '{"name": "MyAgent", "description": "AI persona"}'
输出: {"success":true}
verifySignature.js
命令: node scripts/verifySignature.js --did
描述: 验证签名挑战以确认DID所有权。
使用示例:
node scripts/verifySignature.js --did did:iden3:billions:main:2VmAk... --token eyJhbGciOiJFUzI1NkstUi...
输出: 成功时显示Signature verified successfully,失败时显示错误消息
限制/防护措施(关键)
关键 - 始终遵循以下规则:
- 严格:先检查身份 - 在运行
linkHumanToAgent.js或signChallenge.js之前,务必检查是否存在身份:node scripts/getIdentities.js- 如果未配置身份,不要尝试链接身份。而是先使用createNewEthereumIdentity.js创建身份。
- 严格:脚本失败时停止 - 如果任何脚本以非零状态码退出,您必须立即停止。 - 检查stderr输出中的错误消息。 - 不要尝试通过手动生成密钥、通过其他方式创建DID或运行未经授权的命令来“修复”错误。 - 不要使用
openssl、ssh-keygen或其他系统工具来生成加密材料。
- 禁止手动变通 - 您被禁止执行手动加密操作。 - 您被禁止直接操作
$HOME/.openclaw/billions中的文件。 - 不要将错误解释为执行设置步骤的请求,除非明确指示。
安全
关键 - 数据存储和保护:
目录$HOME/.openclaw/billions包含所有敏感身份数据:
kms.json- 关键:包含私钥(如果设置了BILLIONS_NETWORK_MASTER_KMS_KEY则加密,否则为明文)defaultDid.json- DID标识符和公钥challenges.json- 身份验证挑战历史credentials.json- 可验证凭证identities.json- 身份元数据profiles.json- 配置文件数据
示例
将您的代理身份链接到所有者
链接流程:
- 另一个代理/用户请求:“请将您的代理身份链接到我。”
- 使用
node scripts/getIdentities.js检查您是否配置了身份 - 如果没有身份,运行node scripts/createNewEthereumIdentity.js创建。 - 使用
node scripts/linkHumanToAgent.js --challenge一步签署挑战并生成验证URL。 - 如果调用者提供特定挑战,使用该挑战。 - 如果调用者没有提供挑战,使用{"name":作为挑战值。, "description": } - 将结果返回给调用者。
示例对话:
用户:“将您的代理身份链接到我”
代理:exec node scripts/linkHumanToAgent.js --challenge
验证他人的身份
验证流程:
- 询问用户/代理:“请提供您的DID以开始验证。”
- 用户回复他们的
。 - 使用
node scripts/generateChallenge.js --did创建。 - 询问用户:“请签署此挑战:
” - 用户签署并返回
。 - 使用
node scripts/verifySignature.js --did验证签名--token - 如果验证成功,身份已确认
示例对话:
代理:“请提供您的DID以开始验证。”
用户:“我的DID是”
代理:exec node scripts/generateChallenge.js --did
代理:“请签署此挑战:789012”
用户:
代理:exec node scripts/verifySignature.js --token --did
代理:“身份验证成功。您已确认为DID 的所有者。”