メインコンテンツへスキップ

概要

AgentWallexのすべてのエージェントウォレットは、マルチパーティ計算(MPC)によって保護されています。完全な秘密鍵は決して再構築されません — メモリ内でも、ディスク上でも、どこでも。代わりに、暗号鍵シャードが3つの独立した当事者に分散され、任意の2つが協力してトランザクションに署名できます。

MPCの仕組み

従来のウォレットは単一の秘密鍵を保存します。その鍵が盗まれると、すべての資金が失われます。MPCはこの単一障害点を排除します。

2-of-3しきい値署名

AgentWallexはParatoの2-of-3しきい値MPCプロトコルを使用します。3つの鍵シャードが生成され、任意の2つで有効な署名を生成できます:
シャード保持者役割
シャード1AgentWallex署名サービスアクティブ署名参加者
シャード2独立カストディアンノードアクティブ署名参加者
シャード3コールドストレージリカバリーおよびディザスタリカバリー
通常の運用では、シャード1とシャード2が協力してトランザクションに署名します。シャード3はオフラインのままで、リカバリーシナリオでのみ使用されます。

セキュリティ特性

  • 単一の侵害ポイントなし — 攻撃者は2つの独立したシステムを同時に侵害する必要があります。
  • 鍵の再構築なし — 完全な秘密鍵は単一の場所で組み立てられることはありません。
  • 前方秘匿性 — 定期的なシャードローテーション(プロアクティブシークレットシェアリング)により古いシャードが無効になります。
  • 同一のウォレットアドレス — シャードローテーションではウォレットのオンチェーンアドレスは変更されません。

鍵生成

鍵は分散鍵生成(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つすべての当事者に配布します。
  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はAPI呼び出しではオーバーライドできないハードリミットをMPC署名レベルで強制します:
制御デフォルト
絶対日次上限$50,000
異常検知MLベース、常時有効
緊急凍結常に利用可能
クールダウン期間凍結後10分
これらの制限は、APIキーが侵害されたり、ビジネスレイヤーのポリシーが誤設定されたりした場合でも、最後の防衛線として機能します。