跳转到主要内容

概述

AgentWallex 中的每个代理钱包都由多方计算(MPC)保护。完整的私钥永远不会被重建 — 不在内存中,不在磁盘上,不在任何地方。密码学密钥分片分布在三个独立方之间,其中任意两方可以合作签署交易。

MPC 工作原理

传统钱包存储单一私钥。如果该密钥被盗,所有资金都会丢失。MPC 消除了这一单点故障。

2-of-3 阈值签名

AgentWallex 使用 Paratro 的 2-of-3 阈值 MPC 协议。生成三个密钥分片,其中任意两个即可产生有效签名:
分片持有者角色
分片 1AgentWallex 签名服务主动签名参与方
分片 2独立托管节点主动签名参与方
分片 3冷存储恢复和灾难恢复
在正常操作期间,分片 1 和分片 2 协作签署交易。分片 3 保持离线状态,仅用于恢复场景。

安全属性

  • 无单点泄露 — 攻击者必须同时入侵两个独立系统。
  • 无密钥重建 — 完整的私钥永远不会在任何单一位置组装。
  • 前向保密 — 定期分片轮换(主动密钥共享)使旧分片失效。
  • 钱包地址不变 — 分片轮换不会更改钱包的链上地址。

密钥生成

密钥使用分布式密钥生成(DKG)创建:
1

随机分片生成

3 个 MPC 节点中的每一个独立生成一个随机分片。
2

公钥推导

分片通过密码学方式组合以生成公钥(以及对应的钱包地址)。
3

分片分发

每个节点仅保留自己的分片。完整的私钥从未存在过。
// When you create an agent, DKG happens automatically
const agent = await aw.agents.create({
  name: "my-agent",
  chain: "eip155:8453",
});

// The wallet address is derived from the distributed public key
console.log(agent.wallet.address); // 0x...

密钥轮换

密钥分片使用一种称为主动密钥共享的技术进行定期轮换。此过程:
  1. 生成与同一公钥对应的新分片。
  2. 将新分片分发给所有三方。
  3. 销毁旧分片。
轮换后,即使攻击者之前已经窃取了一个分片,该分片也变得密码学上无用。
密钥轮换是自动的,开发者无需采取任何操作。钱包地址保持不变。

紧急冻结

任何授权方都可以立即冻结代理的钱包,阻止所有交易:
// Freeze — immediate, no transactions can be signed
await aw.agents.freeze("agent_abc123");

// Unfreeze — subject to mandatory cool-down period
await aw.agents.unfreeze("agent_abc123");
冻结钱包后,有强制 10 分钟的冷却期才能解冻。这可以防止攻击者在冻结和解冻钱包后立即重新启用。

基础设施安全网

除了开发者配置的策略之外,Paratro 还在 MPC 签名层执行硬限制,这些限制无法通过 API 调用覆盖:
控制项默认值
绝对每日上限$50,000
异常检测基于 ML,始终启用
紧急冻结始终可用
冷却期冻结后 10 分钟
即使您的 API 密钥被泄露或业务层策略配置有误,这些限制也能作为最后一道防线。