지갑 구축하기

🚧

입출금 API를 연동하기 전, 아래 과정을 먼저 진행해 주세요.

  1. 회원가입
  2. 지갑 생성
  3. API 토큰 발급
  4. API 호출 IP 등록

1. 중앙화 지갑 구축하기

일반적으로 중앙화 지갑은 다음과 같이 구축합니다. 이 외 기능은 서비스 형태에 따라 다양하게 구현할 수 있습니다.




자식주소 시스템 구축하기

자식주소 생성하기

엔드 유저에게 발급할 주소를 생성합니다. 일반적으로 자식주소는 엔드 유저 당 1개씩 발급합니다. 자식주소는 API를 호출하여 생성하며, 콘솔에서 발급된 자식주소 목록을 확인할 수 있습니다.


자식주소 잔액 관리하기

자식주소에 입금된 자산은 최종적으로 대표주소로 집금되며, 이때 자식주소의 잔액은 0이 됩니다. 따라서 각 자식주소 별 잔액을 고객사 측에서 별도로 DB 처리한 뒤, 엔드 유저가 확인할 수 있도록 표기하는 것을 권장드립니다.


👀

대부분의 플랫폼은 동일한 자식주소 구조를 가지지만, 플랫폼에 따라 자식주소 구조가 다를 수 있으니 플랫폼 별 상세 가이드를 참고해 주시기 바랍니다.



입금 시스템 구축하기

토큰 추가하기

옥텟에서는 등록된 토큰만 입금 처리합니다. 따라서 토큰을 입금하기 전 해당 토큰을 지갑에 추가해야 합니다.

  • [지갑 설정] - [토큰 관리]에서 토큰을 추가할 수 있습니다.
  • 원하는 토큰이 목록에 없다면, 우측 상단의 [신규 토큰 등록 신청] 페이지에서 신규 토큰을 신청할 수 있습니다.

입금 발생 확인하기

1. 콘솔에서 확인하기

콘솔의 [입출금 내역]에서 입금 내역을 확인할 수 있습니다. UNFINALIZED 상태인 입금은 '진행'으로 표시되며, FINALIZED 상태인 입금은 '완료'로 표시됩니다.

2. 웹훅으로 확인하기

대표주소나 자식주소에 입금이 완료되면 입금 웹훅이 전송됩니다. 전송된 웹훅으로 입금 여부를 확인할 수 있습니다. 웹훅 이용 방법과 전송되는 데이터 형태는 웹훅 페이지를 참고하세요.


집금 시스템 구축하기

집금하기

자식주소에 보관된 자산을 대표지갑으로 이동합니다. 다음과 같이 2가지 방법으로 집금을 진행할 수 있습니다.

1. 콘솔에서 집금하기

콘솔 - 지갑 선택 - [집금 내역]에서 집금을 진행할 수 있습니다. [집금하기] 버튼을 클릭하고 집금할 자산과 수량을 확인한 뒤 집금을 진행하세요.

2. API로 집금하기

집금 신청 API를 호출하면 집금이 진행됩니다.

Response 예시

[
  {
    "success": true,
    "uuid": "97410344-a48b-4f7e-a1ee-2feff91bebaa",
    "childAddresses": [
      "0x42d0aAE9A2305D66d20bE4361535FdB44670F933"
    ]
  },
  {
    "success": false,
    "childAddresses": [
      "0x94c1e678705cA8FB2d5929B37d01aAb14ffA9D7d"
    ],
    "errorCode": "ERR_0420002",
    "errorMessage": "The amount to be gathered is less than the minimum amount to be gathered."
  }
]

집금 수수료 관리하기

코인 집금 시 집금할 자산에서 수수료가 차감됩니다. 반면 토큰 집금 시 수수료로 지불할 코인을 충전하는 과정이 필요합니다. 이때 수수료주소에서 수수료만큼의 코인을 충전해줍니다. 따라서 집금을 진행하기 전 수수료주소의 잔액을 확인해야 합니다.


👀

플랫폼에 따라 집금 방식이 다를 수 있으니 플랫폼 별 상세 가이드를 참고해 주시기 바랍니다.


집금 확인

1. 콘솔에서 확인하기

지갑 선택 - [집금 내역] - [집금 내역]에서 집금 내역을 확인할 수 있습니다.

2. API로 확인하기

집금 신청 정보 조회 API를 호출하면 특정 집금 트랜잭션의 진행 상태를 확인할 수 있습니다.

Response 예시

{
  "idx": 75,
  "status": "COMPLETED",
  "uuid": "061c3807-704a-477e-8a69-21bbfb71b16f",
  "createdDate": "2022-01-03T09:50:40.371Z",
  "modifiedDate": "2022-01-03T09:52:00.000Z",
  "coin": {
    "idx": 2,
    "symbol": "KAIA",
    "nameKo": "카이아",
    "nameEn": "Kaia",
    "status": "ACTIVATED",
    "type": "DEFAULT",
    "contractAddress": null,
    "decimals": 18,
    "createdDate": "2021-09-20T07:41:22.042Z",
    "modifiedDate": "2021-12-23T07:07:48.272Z"
  },
  "feeInjectionTransaction": null,
  "feeInjectionFee": null,
  "gatheringTransaction": {
    "idx": 9013,
    "uuid": "78ac42ae-1624-48e1-a22e-b9f74a627934",
    "type": "GATHERING",
    "txid": "0xf51f75ca0276877d851af598d92e8bdab4d99d034b8c11ee967eaf38aad5f179",
    "fromAddress": "0x61Cb7bbc6Ca8FF2502ad7163059E57e962a1776B",
    "toAddress": "0x71b5De2970A32eEf6362AE7Bc3B73103b4392bB0",
    "amount": "0.00003700000000000000",
    "usedFee": "0.00002100000014700000",
    "nonce": 0,
    "blockHeight": "6135121",
    "serialized": null,
    "memo": null,
    "status": "FINALIZED",
    "outputIndex": null,
    "createdDate": "2022-01-03T09:51:00.797Z",
    "modifiedDate": "2022-01-03T09:52:00.000Z",
    "unfinalizedDate": "2022-01-03T09:52:00.000Z",
    "finalizedDate": "2022-01-03T09:52:00.000Z",
    "failedDate": null,
    "coin": {
      "idx": 2,
      "symbol": "KAIA",
      "nameKo": "카이아",
      "nameEn": "Kaia",
      "status": "ACTIVATED",
      "type": "DEFAULT",
      "contractAddress": null,
      "decimals": 18,
      "createdDate": "2021-09-20T07:41:22.042Z",
      "modifiedDate": "2021-12-23T07:07:48.272Z"
    }
  },
  "gatheringFee": {
    "idx": 184,
    "gasLimit": "21000.00000000000000000000",
    "gasPrice": "2.00000000000000000000",
    "unit": "gwei",
    "createdDate": "2022-01-03T09:50:40.369Z",
    "modifiedDate": "2022-01-03T09:50:40.369Z"
  }
}

3. 웹훅으로 확인하기

대표주소로 집금이 완료되면 집금 웹훅이 전송됩니다. 전송된 웹훅으로 집금 여부를 확인할 수 있습니다. 웹훅 이용 방법과 전송되는 데이터 형태는 웹훅 페이지를 참고하세요.


출금 시스템 구축하기

출금하기

중앙화 지갑에서 외부로 자산을 보내려면 반드시 대표주소에서 출금해야 합니다. 자식주소에서는 외부로 자산을 출금할 수 없습니다. 출금은 출금 API를 호출하거나, 콘솔에서 출금을 신청할 수 있습니다. 필요 시 관리자의 승인을 거친 뒤 출금하도록 설정할 수 있습니다.

  1. 출금을 요청합니다.
  2. 트랜잭션을 생성합니다.
  3. 최적 수수료를 계산한 뒤 트랜잭션을 전파합니다.
  4. 트랜잭션이 블록에 반영되면 출금이 완료됩니다.

1. 콘솔에서 출금하기

콘솔에서 출금 시 대표주소에서만 출금할 수 있습니다. 키 관리 유형이 공동 관리일 경우 콘솔 출금 신청을 위한 일회용 유저키 생성이 필요합니다. 자세한 콘솔 출금 방법은 콘솔 출금 가이드를 참고해 주세요.


2. API로 출금하기

출금 신청 API를 호출하면 대표주소에서 외부로 출금을 요청할 수 있습니다. 출금 요청에 성공하면 uuid 값이 반환됩니다. 해당 값으로 출금 진행 상태를 조회할 수 있습니다.

Response 예시

{
  "uuid": "18012e3f-07f3-45ec-862b-f020c0ca935a"
}

출금 승인 설정하기

기본적으로 모든 출금은 관리자의 승인을 받은 뒤 진행됩니다. 단, API 출금 시 해당 설정을 비활성화 할 수 있으며, 이 경우 출금 신청 즉시 출금이 진행됩니다.

  • API 출금 - [지갑 설정] - [API 출금 승인]에서 관리자 승인을 비활성화 할 수 있습니다.
  • 콘솔 출금 - 관리자 승인이 필수입니다.

출금 확인

1. 콘솔에서 확인하기

콘솔의 [입출금 내역]에서 출금 내역을 확인할 수 있습니다. AWAITING_WITHDRAWAL와 PENDING 상태인 출금은 '진행'으로 표시되며, FINALIZED 상태인 출금은 '완료'로 표시됩니다.

2. API로 확인하기

출금 트랜잭션 정보 조회 API를 호출하면 특정 출금 트랜잭션의 진행 상태를 확인할 수 있습니다.

Response 예시

{
  "idx": 490,
  "uuid": "07efdcb2-b3fd-4fe7-bf47-c0b460b289e3",
  "fromAddress": "0x71b5De2970A32eEf6362AE7Bc3B73103b4392bB0",
  "toAddress": "0x295909dC67B76f936BD4119aDd877088602cCaD3",
  "amount": "2.00000000000000000000",
  "memo": null,
  "requestId": "25",
  "type": "API",
  "description": "",
  "requiredApprovalCount": 1,
  "useApiAutoApproval": true,
  "status": "SENT",
  "createdDate": "2022-01-25T09:25:02.383Z",
  "modifiedDate": "2022-01-25T09:25:10.000Z",
  "rejectedDate": null
}

3. 웹훅으로 확인하기

대표주소에서 외부로 출금이 완료되면 출금 웹훅이 전송됩니다. 전송된 웹훅으로 출금 여부를 확인할 수 있습니다. 웹훅 이용 방법과 전송되는 데이터 형태는 웹훅 페이지를 참고하세요.



2. 자식주소 출금 지갑 구축하기


일반적으로 자식주소 출금 지갑은 다음과 같이 구축합니다. 이 외 기능은 서비스 형태에 따라 다양하게 구현할 수 있습니다.


자식주소 시스템 구축하기

자식주소 생성하기

엔드 유저에게 발급할 주소를 생성합니다. 일반적으로 자식주소는 엔드 유저 당 1개씩 발급합니다. 자식주소는 API를 호출하여 생성하며, 콘솔에서 발급된 자식주소 목록을 확인할 수 있습니다.

자식주소 잔액 관리하기

자식주소 별 잔액은 주소 잔액 조회 API를 호출하여 조회할 수 있습니다.

👀

대부분의 플랫폼은 동일한 자식주소 구조를 가지지만, 플랫폼에 따라 자식주소 구조가 다를 수 있으니 플랫폼 별 상세 가이드를 참고해 주시기 바랍니다.


입금 시스템 구축하기

토큰 추가하기

옥텟에서는 등록된 토큰만 입금 처리합니다. 따라서 토큰을 입금하기 전 해당 토큰을 지갑에 추가해야 합니다.

  • [지갑 설정] - [토큰 관리]에서 토큰을 추가할 수 있습니다.
  • 원하는 토큰이 목록에 없다면, 우측 상단의 [신규 토큰 등록 신청] 페이지에서 신규 토큰을 신청할 수 있습니다.

입금 발생 확인하기

1. 콘솔에서 확인하기

콘솔의 [입출금 내역]에서 입금 내역을 확인할 수 있습니다. UNFINALIZED 상태인 입금은 '진행'으로 표시되며, FINALIZED 상태인 입금은 '완료'로 표시됩니다.

2. 웹훅으로 확인하기

대표주소나 자식주소에 입금이 완료되면 입금 웹훅이 전송됩니다. 전송된 웹훅으로 입금 여부를 확인할 수 있습니다. 웹훅 이용 방법과 전송되는 데이터 형태는 웹훅 페이지를 참고하세요.


출금 시스템 구축하기

자식주소에서 출금하기

자식주소에 보관된 자산을 외부로 출금합니다. 자식주소 출금 신청 API를 호출하여 출금을 신청할 수 있습니다.

대표주소에서 출금하기

대표주소에 보관된 자산을 외부로 출금합니다. 출금 신청 API를 호출하거나, 콘솔에서 출금을 신청할 수 있습니다.

출금 승인 설정하기

기본적으로 모든 출금은 관리자의 승인을 받은 뒤 진행됩니다. 단, API 출금 시 해당 설정을 비활성화 할 수 있으며, 이 경우 출금 신청 즉시 출금이 진행됩니다.

  • API 출금 - 관리자 승인을 비활성화 할 수 있습니다.
  • 콘솔 출금 - 관리자 승인이 필수입니다.

출금하기

출금 신청 API를 호출하면 대표주소에서 외부로 출금을 요청할 수 있습니다. 출금 요청에 성공하면 uuid 값이 반환됩니다. 해당 값으로 출금 진행 상태를 조회할 수 있습니다.

Response 예시

{
  "uuid": "18012e3f-07f3-45ec-862b-f020c0ca935a"
}

출금 완료 확인하기

1. 콘솔에서 확인하기

콘솔의 [입출금 내역]에서 출금 내역을 확인할 수 있습니다. AWAITING_WITHDRAWAL와 PENDING 상태인 출금은 '진행'으로 표시되며, FINALIZED 상태인 출금은 '완료'로 표시됩니다.

2. API로 확인하기

출금 트랜잭션 정보 조회 API를 호출하면 특정 출금 트랜잭션의 진행 상태를 확인할 수 있습니다.

Response 예시

{
  "idx": 490,
  "uuid": "07efdcb2-b3fd-4fe7-bf47-c0b460b289e3",
  "fromAddress": "0x71b5De2970A32eEf6362AE7Bc3B73103b4392bB0",
  "toAddress": "0x295909dC67B76f936BD4119aDd877088602cCaD3",
  "amount": "2.00000000000000000000",
  "memo": null,
  "requestId": "25",
  "type": "API",
  "description": "",
  "requiredApprovalCount": 1,
  "useApiAutoApproval": true,
  "status": "SENT",
  "createdDate": "2022-01-25T09:25:02.383Z",
  "modifiedDate": "2022-01-25T09:25:10.000Z",
  "rejectedDate": null
}

3. 웹훅으로 확인하기

대표주소에서 외부로 출금이 완료되면 출금 웹훅이 전송됩니다. 전송된 웹훅으로 출금 여부를 확인할 수 있습니다. 웹훅 이용 방법과 전송되는 데이터 형태는 웹훅 페이지를 참고하세요.