SDK 연동
1. SDK 방식 개요
SDK 방식은 옥텟이 제공하는 MPC SDK를 엔드유저의 앱(iOS/Android) 또는 웹(Web) 환경에 직접 통합하는 통합 방식입니다. 고객사 서버를 거치지 않고 엔드유저 디바이스에서 직접 보안 연산이 수행되며, User Share는 디바이스 내 보안 저장소에 보관됩니다.
시스템 아키텍처
- 엔드유저(App/Web - SDK): 옥텟 MPC SDK가 탑재된 클라이언트입니다. 키 조각을 생성 및 보관하며, 서명 요청 시 디바이스 내에서 직접 MPC 연산에 참여합니다.
- 고객사 서버(Client): 엔드유저와 옥텟 사이에서 API 통신을 중계하며, 비즈니스 로직(출금 승인 등)을 관리합니다.
- 옥텟: MPC 키 생성 및 서명 요청에 필요한 인증 정보 및 데이터를 생성하며 SDK 키 관련 프로세스 시작 시 옥텟 측 MPC 연산을 시작합니다.
SDK 제공
해당 가이드를 진행하기 위해 필요한 SDK 제공 안내는 아래 연락처로 문의해 주세요.
- 이메일 문의: [email protected]
2. MPC 키 생성 가이드
MPC 키는 고객사(Company) 단위로 생성되며, 생성된 키는 지갑의 자식 주소를 생성할 때 연결하여 사용할 수 있습니다.
키 생성 흐름
- MPC 키 생성 신청: 고객사는 옥텟 API를 호출하여 키 생성 작업을 요청하고 인증 토큰을 받습니다.
- SDK 키 생성 요청: 엔드유저 앱 내의 옥텟 SDK가 발급받은 토큰과 UUID를 사용하여 옥텟 서버와 직접 통신하며 실제 키 생성 연산을 시작합니다.
- User Share 보관: 연산 완료 후 생성된 User Share는 SDK를 통해 엔드유저의 로컬 보안 영역(Secure Enclave 등)에 안전하게 저장됩니다.
- 상세 단계 확인: 키 생성 연산의 진행 상황이나 최종 결과는 옥텟 API를 통해 확인할 수 있습니다.
상세 단계
1단계: 옥텟에 키 생성 신청
MPC 키 생성 신청 API를 호출합니다.
- 응답값:
uuid(작업 고유 ID),token(SDK 인증용 JWT)
2단계: SDK 작업 요청
1단계에서 받은 정보를 엔드유저 앱의 SDK에 전달하여 작업을 시작합니다.
- 작업: SDK와 옥텟간의 직접적인 통신을 통해 Key Share들이 분산 생성됩니다.
3단계: User Share 관리
- 생성된 User Share는 SDK 내부 로직에 의해 기기 내 안전한 저장소에 보관됩니다.
4단계: 상태 확인
키 생성 연산의 진행 상황이나 최종 결과는 옥텟 API로 확인할 수 있습니다.
- 생성 상태 조회: MPC 키 생성 신청 정보 조회
- 최종 키 정보 조회: MPC 키 조회 (공개키 정보 등 포함)
자식 주소 생성 시 MPC 키 연결
MPC 키 생성이 완료되면, 지갑 내에서 해당 키를 사용하는 주소를 만들 수 있습니다.
- 방법: 자식 주소 생성 API 호출 시
mpcKeyUuid필드에 위에서 생성한 키의uuid를 입력합니다. - 이 주소로 발생하는 모든 출금은 해당 MPC 키의 서명이 필요하게 됩니다.
3. MPC 키 서명 가이드 (출금)
MPC 지갑에서의 출금은 엔드유저 디바이스가 보유한 User Share와 옥텟이 보유한 Octet Share가 결합하여 서명을 생성하는 과정을 거칩니다.
서명 및 출금 흐름
- 트랜잭션 생성: 고객사가 서명되지 않은 트랜잭션 데이터를 직접 생성합니다.
- 옥텟 출금 신청: 옥텟 API에 출금을 신청하고 서명 작업 정보를 받습니다.
- SDK 서명 실행: 엔드유저 앱의 SDK가 기기에 보관된 User Share와 옥텟의 작업 정보를 사용하여 서명 연산을 수행합니다.
- 트랜잭션 전파: 서명이 완료되면 옥텟이 자동으로 최종 트랜잭션을 구성하여 블록체인에 전파합니다.
상세 단계
1단계: 출금 신청 준비
MPC 주소로부터 출금할 때는 아래 두 가지 설정을 반드시 포함해야 합니다.
autoSigning:false(옥텟이 단독으로 서명할 수 없으므로 필수)serializedUnsignedTransaction: 고객사가 직접 생성한 서명 전 트랜잭션 데이터 (Hex String)
2단계: 옥텟에 출금 신청
출금 신청 API를 호출합니다.
- 응답값: 성공 시 응답 객체 내에
mpc필드가 포함됩니다.
{
"uuid": "...",
"mpc": {
"unsignedTransactionHash": "2c745b3cd5af47515df7bded000d1906147e27c275a3029cc6d4a585aa1c47b0",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
}3단계: SDK 서명 요청
엔드유저로부터 받은 User Share와 2단계에서 받은 mpc 정보를 사용하여 SDK에 서명을 요청합니다.
- 필수 입력: User Share,
unsignedTransactionHash,token - 동작: SDK가 옥텟과 연동하여 2-of-3 서명을 생성합니다.
4단계: 출금 완료
- SDK에서 서명 연산이 성공적으로 완료되면, 옥텟 시스템은 이를 감지하여 미리 전달받았던
serializedUnsignedTransaction과 생성된 서명값을 결합합니다. - 최종적으로 서명된 트랜잭션(
serializedSignedTransaction)이 만들어지며, 옥텟이 이를 블록체인 네트워크에 전파합니다.
Updated 11 days ago
