> ## Documentation Index
> Fetch the complete documentation index at: https://docs.agentwallex.com/llms.txt
> Use this file to discover all available pages before exploring further.

# MPCウォレット

> AgentWallexがParatro経由の2-of-3しきい値MPC署名を使用してエージェントウォレットを保護する方法。

## 概要

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

## MPCの仕組み

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

### 2-of-3しきい値署名

AgentWallexはParatoの2-of-3しきい値MPCプロトコルを使用します。3つの鍵シャードが生成され、任意の2つで有効な署名を生成できます：

| シャード  | 保持者               | 役割                 |
| ----- | ----------------- | ------------------ |
| シャード1 | AgentWallex署名サービス | アクティブ署名参加者         |
| シャード2 | 独立カストディアンノード      | アクティブ署名参加者         |
| シャード3 | コールドストレージ         | リカバリーおよびディザスタリカバリー |

<Note>
  通常の運用では、シャード1とシャード2が協力してトランザクションに署名します。シャード3はオフラインのままで、リカバリーシナリオでのみ使用されます。
</Note>

### セキュリティ特性

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

## 鍵生成

鍵は分散鍵生成（DKG）を使用して生成されます：

<Steps>
  <Step title="ランダムシェアの生成">
    3つのMPCノードのそれぞれが独立してランダムなシェアを生成します。
  </Step>

  <Step title="公開鍵の導出">
    シェアが暗号的に結合されて、公開鍵（および対応するウォレットアドレス）が生成されます。
  </Step>

  <Step title="シャードの分配">
    各ノードは自分のシャードのみを保持します。完全な秘密鍵は存在しません。
  </Step>
</Steps>

```typescript theme={null}
// 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. 古いシャードを破棄します。

ローテーション後、攻撃者が以前にシャードを盗んでいたとしても、それは暗号的に無効になります。

<Info>
  鍵ローテーションは自動的に行われ、開発者による操作は不要です。ウォレットアドレスはそのまま維持されます。
</Info>

## 緊急凍結

権限のある当事者は、エージェントのウォレットを即座に凍結し、すべてのトランザクションを防止できます：

<CodeGroup>
  ```typescript SDK theme={null}
  // 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");
  ```

  ```bash API theme={null}
  # Freeze
  curl -X PUT https://api.agentwallex.com/api/v1/agents/agent_abc123/status \
    -H "X-API-Key: awx_your_api_key" \
    -H "Content-Type: application/json" \
    -d '{"status": "inactive"}'

  # Unfreeze
  curl -X PUT https://api.agentwallex.com/api/v1/agents/agent_abc123/status \
    -H "X-API-Key: awx_your_api_key" \
    -H "Content-Type: application/json" \
    -d '{"status": "active"}'
  ```
</CodeGroup>

<Warning>
  ウォレットを凍結した後、凍結解除するまでに10分間の必須クールダウン期間があります。これにより、攻撃者が凍結・凍結解除したウォレットを即座に再有効化することを防ぎます。
</Warning>

## インフラストラクチャセーフティネット

開発者設定のポリシーを超えて、ParatroはAPI呼び出しでは**オーバーライドできない**ハードリミットをMPC署名レベルで強制します：

| 制御       | デフォルト      |
| -------- | ---------- |
| 絶対日次上限   | \$50,000   |
| 異常検知     | MLベース、常時有効 |
| 緊急凍結     | 常に利用可能     |
| クールダウン期間 | 凍結後10分     |

これらの制限は、APIキーが侵害されたり、ビジネスレイヤーのポリシーが誤設定されたりした場合でも、最後の防衛線として機能します。
