Cobo Agentic Wallet · Security Deep Dive
Cobo Agentic Wallet

PACT 机制 —— 给 AI Agent 一把有边界的钥匙

当钱包的主人不再是自己,而是一个会自主执行的 AI Agent,传统的"签名即同意"模型就崩溃了。PACT(Protocol for Agent Constraint & Trust)用机器可读的 PactSpec、三层策略控制和可撤销的域限 API 密钥,把 Agent 的操作权限锁进一个所有者能看、能审、能随时收回的盒子里。

策略引擎前置拦截
滚动时间窗口限额
地址白名单锁定
域限 API Key 可秒撤
01 · The Problem

为什么需要 PACT

AI Agent 代表所有者持有钱包并发起链上交易时,必须解决三个核心问题:操作边界在哪、每一步是否可验证、出了事能不能立刻停。

权限边界

Agent 能做什么?不能做什么?所有者需要一个机器可读的声明,而不是口头承诺。

前置风险控制

风险不是事后告警,而是交易提交前就按策略评估——地址、金额、频率每一项都必须过闸。

信任可追溯

每个 pact 都有状态机记录,所有者随时可查看、暂停、撤销;Agent 的每次操作都可审计。

02 · PactSpec

Agent 提交的四字段声明

PactSpec 是 Agent 向所有者请求授权时提交的结构化声明,四个字段分别回答"做什么 / 怎么做 / 受什么约束 / 何时结束"。

FIELD 01
intent

意图

自然语言描述的任务目标。审批时直接展示给所有者——"我要干什么"的人类可读版本。

FIELD 02
execution_plan

执行计划

Markdown 格式的详细方案:分几步、动用哪些协议、资金如何流动。透明度换信任。

FIELD 03
policies

策略约束集

支出限额、地址白名单、审查阈值的机器可读规则。Policy Engine 每次执行前据此裁决。

FIELD 04
completion_conditions

终止条件

交易笔数上限、累计支出上限、过期时间——任一触发,pact 自动终止,API 密钥立即失效。

配对前 vs 配对后

在所有者与 Agent 首次配对之前,PactSpec 自动处理无需审批;配对完成后,每一个新 pact 都必须经所有者显式批准才能激活。

03 · Lifecycle

Pact 的五种状态

每个 pact 从提交到终结的完整生命周期由一个状态机管理。只有在 ACTIVE 状态下,Agent 的域限 API 密钥才会生效。

01 · pending_approval
待审批

已提交 PactSpec,等待所有者裁决

02 · active
活跃

获批后域限 API Key 生效,可执行操作

03 · terminal
终止态

completed / expired / revoked / withdrawn

completed达到 completion_conditions 自动结束
expired时间窗口到期自动过期
revoked所有者主动撤销
withdrawnAgent 主动取回
密钥离开 ACTIVE 立即失效,无宽限期

pact 一旦进入任何终止态,与之绑定的 API 密钥瞬间作废——已在途的请求也会被拒绝。这是 PACT 与传统 API Key 最大的差异。

04 · Three Layers of Control

策略三件套:引擎 × 限额 × 白名单

Policy Engine 是决策中枢,Spend Limits 管"花多少",Address Allowlists 管"花去哪"。三者协同在每次 Agent 操作前完成评估。

1

Policy Engine

DECISION CORE

Policy Engine 是 PACT 的决策中枢。它在 Agent 每一次发起操作前,都会跑一遍评估管道——检查操作类型、匹配策略规则、核对滚动计数器。规则按全局 → 钱包 → 委托三级作用域从广到细依次评估。

作用域分层Global / Wallet / Delegation 三级,精细程度递增
前置评估交易构造后、广播前拦截,从源头阻止风险
三种结果Allow / Pending Approval / Deny
2

Spend Limits

FINANCIAL GUARDRAIL

即便操作类型合法、地址正确,资金规模也必须落在双方约定的财务边界内。Spend Limits 以三种互补维度锁住金额。

单笔硬上限amount_gt / amount_usd_gt,超即拒
滚动时间窗口1h / 24h / 7d / 30d 滑动累计
审查阈值软触发,超限进入待审批而非拒绝
3

Address Allowlists

DESTINATION LOCK

把资金可能流向的终点收敛到一个有限集合。既可以列地址,也可以锁合约——甚至锁到某个函数选择器,把"只能调 Uniswap 的 swapExactETHForTokens"这种粒度硬编码进策略。

目标地址白名单按链分别配置,同地址跨链需重复列表
合约地址白名单可限定到函数选择器(Solana 用 Program ID)
激活后不可改提交时定义,活跃期内冻结,保证一致性
05 · Evaluation Pipeline

Policy Engine 的三阶段评估

每一次 Agent 发起的操作都会依次走过这三道闸。任一阶段不通过,操作就会被拒绝或挂起。

1

权限检查

操作类型是否落在当前 pact 定义的委托范围之内?不在范围内直接拒绝。

2

策略规则评估

按链、代币、目标地址、合约地址、金额等维度匹配策略规则——白名单是否命中、限额是否超出。

3

计数器检查

核对滚动时间窗口(1h / 24h / 7d / 30d)的累计使用量,是否仍有配额可用。

ALLOW
通过

三阶段全部满足,操作直接执行

PENDING APPROVAL
待审批

触发审查阈值,生成 pending_operation_id,所有者收到通知

DENY
拒绝

操作被阻止,返回错误代码与原因

06 · Spend Limits

三种限额类型一张表

三种限额可单独启用,也可同时生效。一个操作必须通过所有适用的限制才会放行。

类型 参数 作用 触发行为
单笔硬上限 amount_gt / amount_usd_gt 单次操作的硬封顶,超过即拒绝。USD 模式按市场价换算,价格源不可用时跳过评估。 DENY
滚动窗口计数器 1h / 24h / 7d / 30d 滑动窗口 累计 USD 价值、代币数量或交易笔数。多窗口可叠加启用,采用向后滑动而非日历周期。 DENY
审查阈值 soft threshold 软触发——低于阈值自动执行,超过则进入待审批状态,由所有者裁决。 PENDING
示例 · 一个典型的 DeFi Pact

给 DCA Agent 开放 ETH 定投权限

Agent 声明的策略约束:

  • 仅能向 Uniswap V3 Router 合约发送交易(Address Allowlist)
  • 单笔不得超过 0.5 ETH(amount_gt)
  • 24 小时内累计不得超过 2 ETH(24h rolling counter)
  • 7 天内累计交易笔数不得超过 10 笔(7d transaction count)
  • pact 在 30 天后自动过期(completion_conditions)
07 · Address Allowlists

把资金的去向收敛成有限集

白名单作为 ALLOW 策略的匹配条件实现——设置 destination_address_intarget_in,只有匹配的目标才会被放行,其他一律阻断。

DCA / 交易 Agent

只允许与 DEX 路由器合约交互,并限定到 swap 系列函数选择器,禁止 Agent 调用其他方法。

薪酬 / 分润 Agent

把所有收款人地址列入白名单——Agent 只能往这些钱包打款,无法转去任何其他地方。

多步 DeFi 策略 Agent

跨链跨协议配置多个合约地址——Aave、Curve、GMX 等,Agent 只能在这个协议集合里腾挪。

实现要点

同一地址在不同链上需要分别列入白名单(链隔离);EVM 生态用合约地址 + 函数选择器,Solana 生态用 Program ID;地址条件留空则允许所有目标(但仍受其他策略约束)。

08 · End-to-End Flow

从 PactSpec 提交到密钥失效

把前面讲过的所有概念串起来看——一个 pact 从诞生到终结要走过的完整路径。

Agent 构造 PactSpec

声明 intentexecution_planpoliciescompletion_conditions 四字段,提交至 Cobo Agentic Wallet。

进入 pending_approval 状态

所有者在 Cobo App 中看到 Agent 的自然语言意图与执行计划——此时 API 密钥尚未生效

所有者裁决

批准 → pact 进入 active,Agent 获得域限 API Key;拒绝 → pact 终结于 rejected

Agent 发起每次操作

Policy Engine 前置评估:权限检查 → 策略规则 → 滚动计数器,三闸通过才广播交易。

达成 completion_conditions 或被撤销

自动完成 / 过期 / 被所有者撤销 / Agent 主动取回——任一发生,pact 进入终止态。

域限 API Key 立即失效

无宽限期。此后 Agent 即使持有密钥也无法通过任何策略闸口。

Takeaway

PACT 的本质

机器可读的委托合约

PACT 把"我授权 Agent 干什么"从模糊的承诺变成结构化的 PactSpec,让所有者 / Agent / 策略引擎三方对同一份权限边界有相同的理解。

前置 + 多层 + 可撤销

风险不是事后告警,而是交易广播前就在策略引擎里被拦下。三层策略叠加给你纵深防御,API Key 随状态机秒级失效给你应急按钮。