> ## 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)으로 보호됩니다. 전체 개인 키는 **절대 재구성되지 않습니다** — 메모리에서도, 디스크에서도, 어디에서도. 대신 암호학적 키 샤드가 세 개의 독립적인 당사자에게 분배되며, 두 당사자가 협력하여 거래에 서명할 수 있습니다.

## MPC 작동 방식

기존 지갑은 단일 개인 키를 저장합니다. 해당 키가 도난되면 모든 자금이 손실됩니다. MPC는 이러한 단일 장애점을 제거합니다.

### 2-of-3 임계값 서명

AgentWallex는 Paratro의 2-of-3 임계값 MPC 프로토콜을 사용합니다. 세 개의 키 샤드가 생성되며 두 개면 유효한 서명을 생성할 수 있습니다:

| 샤드   | 보유자                | 역할         |
| ---- | ------------------ | ---------- |
| 샤드 1 | AgentWallex 서명 서비스 | 활성 서명 참여자  |
| 샤드 2 | 독립 커스터디 노드         | 활성 서명 참여자  |
| 샤드 3 | 콜드 스토리지            | 복구 및 재해 복구 |

<Note>
  정상 운영 시 샤드 1과 샤드 2가 협력하여 거래에 서명합니다. 샤드 3은 오프라인으로 유지되며 복구 시나리오에서만 사용됩니다.
</Note>

### 보안 속성

* **단일 유출 지점 없음** — 공격자는 두 개의 독립적인 시스템을 동시에 침해해야 합니다.
* **키 재구성 없음** — 전체 개인 키는 단일 위치에서 조립되지 않습니다.
* **전방 비밀성** — 정기적인 샤드 교체(사전 비밀 공유)가 이전 샤드를 무효화합니다.
* **동일한 지갑 주소** — 샤드 교체는 지갑의 온체인 주소를 변경하지 않습니다.

## 키 생성

키는 분산 키 생성(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. 이전 샤드를 파기합니다.

교체 후에는 공격자가 이전에 샤드를 탈취했더라도 암호학적으로 무용지물이 됩니다.

<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 키가 유출되거나 비즈니스 레이어 정책이 잘못 구성된 경우에도 최후의 방어선 역할을 합니다.
