MPC 키 서명하기

MPC 지갑에서의 출금은 엔드유저가 보유한 User Key Share와 옥텟이 보유한 Octet Key Share가 결합하여 서명을 생성하는 과정을 거칩니다.

그림 1 : 키 서명 아키텍처

서명 및 출금 흐름

  1. 트랜잭션 생성: 고객사가 서명되지 않은 트랜잭션 데이터를 직접 생성합니다.
  2. 옥텟 출금 신청: 옥텟 API에 출금을 신청하고 서명 작업 정보를 받습니다.
  3. MPC 에이전트 서명: 엔드유저의 User Key Share와 옥텟의 작업 정보를 사용하여 MPC 에이전트에서 서명을 생성합니다.
  4. 트랜잭션 전파: 서명이 완료되면 옥텟이 자동으로 최종 트랜잭션을 구성하여 블록체인에 전파합니다.

상세 단계

1단계: 출금 신청 준비

MPC 주소로부터 출금할 때는 아래 두 가지 설정을 반드시 포함해야 합니다.

  • autoSigning: false (옥텟이 단독으로 서명할 수 없으므로 필수)
  • serializedUnsignedTransaction: 고객사가 직접 생성한 서명 전 트랜잭션 데이터 (Hex String)

2단계: 옥텟에 출금 신청

출금 신청 API를 호출합니다.

  • 응답값: 성공 시 응답 객체 내에 mpc 필드가 포함됩니다.
{
  "uuid": "...",
  "mpc": {
    "unsignedTransactionHash": "2c745b3cd5af47515df7bded000d1906147e27c275a3029cc6d4a585aa1c47b0",
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
  }
}

3단계: MPC 에이전트 서명 요청

엔드유저로부터 받은 User Key Share와 2단계에서 받은 mpc 정보를 사용하여 에이전트에 서명을 요청합니다.

  • 필수 입력: User Key Share, unsignedTransactionHash, token
  • 동작: 에이전트가 옥텟 MPC Worker와 연동하여 2-of-3 서명을 생성합니다.

4단계: 출금 완료

  • MPC 에이전트에서 서명 연산이 성공적으로 완료되면, 옥텟 시스템은 이를 감지하여 미리 전달받았던 serializedUnsignedTransaction과 생성된 서명값을 결합합니다.
  • 최종적으로 서명된 트랜잭션(serializedSignedTransaction)이 만들어지며, 옥텟이 이를 블록체인 네트워크에 전파합니다.