OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  receipts-guard:在智能体接受前捕获并验证所有协议

receipts-guard:在智能体接受前捕获并验证所有协议

 
  git ·  2026-02-12 00:26:36 · 3 次点击  · 0 条评论  

名称: receipts-guard
描述: 为自主智能体商业提供 ERC-8004 身份、x402 支付和仲裁协议。机器经济的三大支柱。
元数据: {"openclaw":{"emoji":"⚖️","requires":{"anyBins":["node"]},"version":"0.7.1"}}


RECEIPTS Guard v0.7.1 - 三大支柱

"机器经济的支柱。"

ERC-8004 身份 + x402 支付 + 仲裁协议。智能体商业的基础设施。

三大支柱:
| 支柱 | 标准 | 目的 |
|------|----------|---------|
| 身份 | ERC-8004 | 链上智能体身份锚定 |
| 信任 | ERC-8004 声誉 | 仲裁结果构建声誉 |
| 支付 | x402 | 付费仲裁,自动结算 |

本地优先。链上锚定。云端可部署。安全加固。

v0.7.1 新特性(安全加固)

  • 🔐 HTTP 身份验证 - API 密钥和 DID 请求签名
  • 🛡️ 授权检查 - 针对 /accept 端点的对手方验证
  • 🌐 CORS 加固 - 可配置的来源白名单(默认阻止)
  • ⚡ 速率限制 - 每个 IP 每分钟 100 个请求
  • ✅ 输入验证 - 支付地址、成本、截止日期验证

v0.7.0 新特性

  • ⛓️ ERC-8004 集成 - 将身份锚定到 Ethereum/Base 注册表
  • 💰 x402 支付 - 使用 USDC/ETH 进行付费仲裁
  • ☁️ 云端部署 - Dockerfile + Fly.io Sprites 支持
  • 🌐 HTTP 服务器模式 - 为云端智能体提供 REST API

自 v0.6.0 起:

  • 🪪 自主身份 - 基于 DID 的身份,使用 Ed25519 签名
  • 🔑 密钥轮换 - 旧密钥签署新密钥,创建不间断的证明链
  • 👤 人类控制者 - 基于 Twitter 的恢复后盾

自 v0.5.0 起:

  • ⚖️ 完整仲裁协议 - 提议 → 接受 → 履行 → 仲裁 → 裁决
  • 📜 PAO(可编程协议对象) - 规范的 termsHash,双方签名
  • 📊 LPR(法律溯源审查) - 为仲裁员提供时间线可视化

快速开始

# === 仲裁流程 ===

# 1. 创建提议
node capture.js propose "我将在周五前交付 API 文档" "AgentX" \
  --arbiter="arbiter-prime" --deadline="2026-02-14"

# 2. 接受提议(作为对手方)
node capture.js accept --proposalId=prop_abc123

# 3. 履行协议
node capture.js fulfill --agreementId=agr_xyz789 \
  --evidence="文档已交付至 https://docs.example.com"

# --- 或者,如果发生争议 ---

# 4. 开启仲裁
node capture.js arbitrate --agreementId=agr_xyz789 \
  --reason="non_delivery" --evidence="截止日期前未收到文档"

# 5. 提交证据(双方)
node capture.js submit --arbitrationId=arb_def456 \
  --evidence="空收件箱截图" --type=screenshot

# 6. 发布裁决(作为仲裁员)
node capture.js ruling --arbitrationId=arb_def456 \
  --decision=claimant --reasoning="证据显示截止日期后未交付"

# 7. 查看时间线
node capture.js timeline --agreementId=agr_xyz789

命令

身份(v0.6.0)

identity init - 创建身份

node capture.js identity init --namespace=remaster_io --name=receipts-guard \
  --controller-twitter=@Remaster_io

创建:
- Ed25519 密钥对
- DID 文档:did:agent:<namespace>:<name>
- 人类控制者配置

identity show - 显示身份

node capture.js identity show [--full]

显示身份摘要或完整的 DID 文档(使用 --full)。

identity rotate - 轮换密钥

node capture.js identity rotate [--reason=scheduled|compromise|device_change]
  • 旧密钥签署新密钥(证明链)
  • 旧密钥存档用于历史签名验证
  • 不间断的链 = 相同的身份

identity verify - 验证身份或签名

# 验证 DID 密钥链
node capture.js identity verify --did=did:agent:acme:trade-bot

# 验证签名
node capture.js identity verify \
  --signature="ed25519:xxx:timestamp" \
  --termsHash="sha256:abc123..."

identity set-controller - 设置人类控制者

node capture.js identity set-controller --twitter=@handle

链接一个人类控制者用于紧急恢复。

identity recover - 紧急恢复

node capture.js identity recover --controller-proof=<TWITTER_URL> --confirm

人类控制者发布恢复授权,所有旧密钥被撤销。

identity publish - 发布 DID 文档

node capture.js identity publish [--platform=moltbook|ipfs|local]

identity anchor - 锚定到 ERC-8004(v0.7.0)

node capture.js identity anchor --chain=ethereum|base|sepolia

在链上 ERC-8004 身份注册表中注册身份:
- 需要 RECEIPTS_WALLET_PRIVATE_KEY 环境变量
- 将交易哈希存储在 DID 文档中
- 主网:可信度锚定
- Base:原生支持 x402,费用更低

已部署的注册表:
| 链 | 身份注册表 | 状态 |
|-------|-------------------|--------|
| Ethereum | 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 | 已上线 |
| Sepolia | 0x8004A818BFB912233c491871b3d84c89A494BD9e | 测试网 |
| Base | 即将推出 | 待定 |

identity resolve - 解析 DID(v0.7.0)

node capture.js identity resolve --did=did:agent:namespace:name [--chain=CHAIN]

从本地存储或链上注册表解析 DID。


ERC-8004 集成(v0.7.0)

ERC-8004 标准为智能体信任提供三个注册表:

  1. 身份注册表 - 基于 NFT 的智能体标识符
  2. 声誉注册表 - 链上反馈和评分
  3. 验证注册表 - 验证者的工作验证

RECEIPTS 与现有注册表集成,同时提供卓越的链下协议生命周期管理。

链配置:

# 环境变量
export ETHEREUM_RPC=https://eth.llamarpc.com
export BASE_RPC=https://mainnet.base.org
export RECEIPTS_WALLET_PRIVATE_KEY=0x... # 切勿提交此密钥!

x402 支付集成(v0.7.0)

x402 支持付费仲裁 - 仲裁员因其工作获得报酬。

带有支付条款的提议

node capture.js propose "服务协议" "counterparty" \
  --arbiter="arbiter-prime" \
  --arbitration-cost="10" \
  --payment-token="USDC" \
  --payment-chain="base" \
  --payment-address="0x..." # 仲裁员的地址

带有支付证明的仲裁

# 无支付证明(如果要求 x402 则会失败)
node capture.js arbitrate --agreementId=agr_xxx --reason="non_delivery"
# 错误:需要支付:10 USDC

# 有支付证明
node capture.js arbitrate --agreementId=agr_xxx --reason="non_delivery" \
  --evidence="..." --payment-proof="0x123..."

x402 模式:

{
  "x402": {
    "arbitrationCost": "10",
    "arbitrationToken": "USDC",
    "arbitrationChain": 8453,
    "paymentAddress": "0x...",
    "paymentProtocol": "x402",
    "version": "1.0"
  }
}

云端部署(v0.7.0)

将 RECEIPTS Guard 作为持久化云端智能体运行。

HTTP 服务器模式

node capture.js serve [--port=3000]

公共端点(无需认证):
- GET / - 服务信息
- GET /health - 健康检查
- GET /identity - DID 文档
- GET /identity/chains - 链状态

受保护端点(需要认证):
- GET /list - 列出所有记录
- GET /proposals - 列出提议
- GET /agreements - 列出协议
- POST /propose - 创建提议
- POST /accept - 接受提议(仅限对手方)


HTTP API 安全(v0.7.1)

HTTP 服务器实现了多层安全防护:

身份验证

选项 1:API 密钥

# 生成安全的 API 密钥
export RECEIPTS_API_KEY=$(openssl rand -hex 32)

# 在请求中使用
curl -H "X-API-Key: $RECEIPTS_API_KEY" https://your-agent.fly.dev/list

选项 2:DID 请求签名

# 使用你的 Ed25519 密钥签署每个请求
# 必需的请求头:
# - X-DID: 你的 DID(例如,did:agent:namespace:name)
# - X-DID-Timestamp: Unix 时间戳(毫秒)
# - X-DID-Signature: ed25519:BASE64URL_SIGNATURE:TIMESTAMP

# 签名消息格式:METHOD:PATH:TIMESTAMP
# 示例:POST:/propose:1707494400000

CORS 配置

默认情况下,出于安全考虑,跨域请求被阻止

# 允许特定来源
export RECEIPTS_ALLOWED_ORIGINS=https://app.example.com,https://dashboard.example.com

# 允许所有来源(生产环境不推荐)
export RECEIPTS_ALLOWED_ORIGINS=*

速率限制

默认:每个 IP 每分钟 100 个请求。

# 自定义速率限制
export RECEIPTS_RATE_LIMIT=200

响应头:
- X-RateLimit-Limit - 每个窗口的最大请求数
- X-RateLimit-Remaining - 剩余请求数
- X-RateLimit-Reset - 窗口重置时间戳

输入验证

所有 POST 端点验证:
- 支付地址 - 必须是有效的以太坊地址格式(0x + 40 个十六进制字符)
- 仲裁成本 - 必须为非负数,最大 1,000,000
- 截止日期 - 必须是未来的有效 ISO 日期
- 支付代币 - 必须是 USDC、ETH、USDT 或 DAI
- 支付链 - 必须是已配置的链(ethereum、base、sepolia)

授权

  • /accept 端点验证请求者是否为指定的对手方(当使用 DID 签名时)
  • API 密钥身份验证信任服务器所有者

环境变量

# 安全
RECEIPTS_API_KEY=              # API 密钥用于身份验证(生成方式:openssl rand -hex 32)
RECEIPTS_ALLOWED_ORIGINS=      # 逗号分隔的 CORS 来源(默认:无/阻止)
RECEIPTS_RATE_LIMIT=           # 每分钟请求数(默认:100)

# 现有变量
RECEIPTS_WALLET_PRIVATE_KEY=   # 用于链上交易
RECEIPTS_AGENT_ID=             # 智能体标识符
ETHEREUM_RPC=                  # Ethereum RPC 端点
BASE_RPC=                      # Base RPC 端点

Fly.io Sprites 部署

# 部署
fly launch
fly deploy

# 配置密钥
fly secrets set RECEIPTS_WALLET_PRIVATE_KEY=...
fly secrets set ETHEREUM_RPC=...

# 创建持久化卷
fly volumes create receipts_data --size 1

Docker

docker build -t receipts-guard .
docker run -p 3000:3000 -v receipts-data:/data receipts-guard

migrate - 迁移到 DID

node capture.js migrate --to-did

将现有协议升级为使用 DID 引用(保留旧数据)。


仲裁协议

propose - 创建协议提议

node capture.js propose "条款" "对手方" --arbiter="仲裁员" [选项]

选项:
  --arbiter=智能体         必需:双方同意的仲裁员
  --deadline=ISO日期       履行截止日期
  --value=金额             协议价值(供参考)
  --channel=渠道           沟通渠道

创建一个 PAO(可编程协议对象),包含:
- termsHash - 规范条款 + 各方 + 截止日期的 SHA-256 哈希
- 提议者签名
- 提议的仲裁员
- 状态:pending_acceptance

accept - 接受提议

node capture.js accept --proposalId=prop_xxx
  • 将对手方签名添加到相同的 termsHash
  • agreements/ 中创建活动协议
  • 双方均已签名 - 协议具有约束力

reject - 拒绝提议

node capture.js reject --proposalId=prop_xxx --reason="原因"

fulfill - 声明履行

node capture.js fulfill --agreementId=agr_xxx --evidence="证明"
  • 需要证据(完成证明)
  • 状态:pending_confirmation
  • 对手方有 48 小时的宽限期提出争议

arbitrate - 开启争议

node capture.js arbitrate --agreementId=agr_xxx --reason="违约类型" --evidence="证明"

有效原因:
  non_delivery      - 对手方未交付
  partial_delivery  - 交付不完整
  quality           - 交付不符合规格
  deadline_breach   - 错过截止日期
  repudiation       - 对手方否认协议
  other             - 其他违约

submit - 提交证据

node capture.js submit --arbitrationId=arb_xxx --evidence="证明" [--type=类型]

类型:
  document    - 文本证据(默认)
  screenshot  - 视觉证明
  witness     - 第三方证人陈述

双方都可以在证据期(默认 7 天)内提交证据。

ruling - 发布裁决(仅限仲裁员)

node capture.js ruling --arbitrationId=arb_xxx --decision=决定 --reasoning="解释"

决定:
  claimant    - 支持申诉方
  respondent  - 支持被诉方
  split       - 责任分担
  • 只有指定的仲裁员可以发布裁决
  • 推理哈希发布到 Moltbook(可选)
  • 协议关闭并记录裁决

timeline - 生成 LPR(法律溯源审查)

node capture.js timeline --agreementId=agr_xxx

生成按时间顺序排列的时间线,显示:
- 所有状态转换
- 带有哈希的证据提交
- 签名和时间戳
- 裁决(如果已发布)

捕获命令

捕获协议(服务条款)

node capture.js capture "条款文本" "来源URL" "商家名称" [选项]

选项:
  --consent-type=类型     explicit | implicit | continued_use
  --element=选择器        触发同意的 DOM 元素
  --screenshot=BASE64    同意时的截图

捕获承诺(智能体到智能体)

node capture.js promise "承诺文本" "对手方" [选项]

选项:
  --direction=方向    outbound(我承诺) | inbound(他们承诺)
  --channel=渠道      email | chat | moltbook | api

实用命令

列出记录

node capture.js list [--type=类型]

类型:
  all          - 所有内容(默认)
  captures     - 服务条款捕获和承诺
  proposals    - 待处理的提议
  agreements   - 活动/已关闭的协议
  arbitrations - 开放/已关闭的仲裁
  rulings      - 已发布的裁决

查询

node capture.js query --merchant="公司" --risk-level=high

差异对比

node capture.js diff --capture1=ID --capture2=ID

争议包

node capture.js dispute --captureId=local_xxx

见证

node capture.js witness --captureId=ID [--anchor=moltbook|bitcoin|both]

规则

node capture.js rules --list
node capture.js rules --add="模式" --flag="标志名称"

导出

node capture.js export --format=json|csv|pdf [--captureId=ID]

状态机

```
提议:
pending_acceptance → accepted → (变为协议)
→ rejected
→ expired

协议:

3 次点击  ∙  0 人收藏  
登录后收藏  
目前尚无回复
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor