아발란체(AVAX)

✳️

옥텟은 아발란체 C-chain을 사용합니다.


아발란체 지갑 구조

아발란체의 자식주소 출금 지갑은 다음과 같이 구성되어 있습니다.

  • 대표주소
  • 수수료주소
  • 자식주소

TIP
수수료주소는 필요에 따라 수수료(ETH)를 자식주소에 충전할 때 사용합니다.






자식주소

자식주소 생성 API를 호출하여 자식주소를 생성합니다. 일반적으로 자식주소는 엔드 유저 당 1개씩 부여합니다. 생성한 자식주소는 콘솔의 [자식주소 정보]에서 확인하거나 자식주소 목록 조회 API를 호출하여 확인할 수 있습니다.

Response 예시

[
  {
    "address": "0x236c41418f0320DC7233C8c9dC99EEa5930341D9",
    "name": "테스트용 자식주소"
  }
]





입금

입금 상태

외부에서 보낸 자산이 대표주소나 자식주소에 도착하면 옥텟은 이를 입금으로 인식합니다. 단, 입금 트랜잭션이 블록에 포함되었더라도 입금을 완료로 처리하지 않습니다. 트랜잭션의 완결성을 보장하기 위해 추가로 블록이 생성되어야 해당 트랜잭션을 완료(FINALIZED)로 처리합니다. 외부에서 자산을 보냈으나 대표주소나 자식주소에 도착하지 않았다면 해당 트랜잭션은 인식되지 않습니다. 따라서 입금 트랜잭션에는 실패(FAILED) 상태가 없습니다.

상태명내용
UNFINALIZED입금 트랜잭션이 블록에 포함된 상태
FINALIZED입금 트랜잭션이 블록에 포함된 뒤 다음 블록이 생성된 상태

입금을 완료 처리하기 위해 필요한 블록의 개수는 네트워크에 따라 다릅니다. 아발란체는 테스트넷과 메인넷 모두 20개의 블록이 추가로 생성되어야 해당 트랜잭션을 입금 완료로 처리합니다.

테스트넷메인넷
20 block (약 40초)20 block (약 40초)


입금 확인

1. 콘솔에서 확인하기

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


2. 웹훅으로 확인하기

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






출금

출금 과정

자식주소 출금 지갑에서는 대표주소와 자식주소에서 외부로 자산을 출금합니다. 이때 출금 수수료는 출금할 주소에서 차감됩니다. 예를 들어 '자식주소 A'에서 출금 시 '자식주소 A'에서 수수료가 차감됩니다. 따라서 출금할 주소에 수수료로 지불할 자산(AVAX)을 보유하고 있어야 합니다. 출금 수수료가 부족하면 출금이 진행되지 않습니다.

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


출금 상태

하나의 주소에서 다른 주소로 자산이 이동하면 옥텟은 이를 출금으로 인식합니다. 단, 출금 트랜잭션이 블록에 포함되었더라도 출금을 완료로 처리하지 않습니다. 트랜잭션의 완결성을 보장하기 위해 추가로 블록이 생성되어야 해당 트랜잭션을 완료(FINALIZED)로 처리합니다.

상태명내용
PENDING출금 트랜잭션이 생성된 상태
UNFINALIZED출금 트랜잭션이 블록에 포함된 상태
FINALIZED출금 트랜잭션이 블록에 포함된 뒤 다음 블록이 생성된 상태
FAILED출금 트랜잭션이 실패한 상태

출금을 완료 처리하기 위해 필요한 블록의 개수는 네트워크에 따라 다릅니다. 아발란체는 테스트넷과 메인넷 모두 20개의 블록이 추가로 생성되어야 해당 트랜잭션을 입금 완료로 처리합니다.

테스트넷메인넷
20 block (약 40초)20 block (약 40초)


출금하기

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

Response 예시

{
  "uuid": "8ab66b30-ca0e-4956-b420-1ee5f266a777"
}


출금 확인

1. 콘솔에서 확인하기

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


2. API로 확인하기

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

Response 예시

{
  "idx": 2289459,
  "coin": {
    "idx": 167,
    "symbol": "AVAX",
    "nameKo": "아발란체",
    "nameEn": "Avalanche",
    "status": "ACTIVATED",
    "type": "DEFAULT",
    "contractAddress": null,
    "decimals": 18,
    "createdDate": "2023-10-13T10:08:39.171Z",
    "modifiedDate": "2023-11-09T06:25:03.000Z"
  },
  "uuid": "8ab66b30-ca0e-4956-b420-1ee5f266a777",
  "fromAddress": "0x297ABf7d988a76CE551d203fAb9458B85948FC32",
  "toAddress": "0x4c7C44CEc9ae0767969ae150eC4aC2BF372aD433",
  "amount": "0.10000000000000000000",
  "memo": null,
  "requestId": "20231109T152400",
  "type": "API",
  "description": "",
  "requiredApprovalCount": 2,
  "useApiAutoApproval": true,
  "useFeeDelegation": false,
  "feePayerAddress": null,
  "status": "SENT",
  "createdDate": "2023-11-09T06:24:46.174Z",
  "modifiedDate": "2023-11-09T06:24:55.000Z",
  "rejectedDate": null,
  "transaction": {
    "idx": 314375,
    "uuid": "8ab66b30-ca0e-4956-b420-1ee5f266a777",
    "type": "WITHDRAWAL",
    "txid": "0xbe8e37571ae5b05aaf094664c1db280ca85a8a5c3d4e7c6a222344cbaf6d8ee2",
    "fromAddress": "0x297ABf7d988a76CE551d203fAb9458B85948FC32",
    "toAddress": "0x4c7C44CEc9ae0767969ae150eC4aC2BF372aD433",
    "amount": "0.10000000000000000000",
    "usedFee": "0.00055650000000000000",
    "nonce": 0,
    "blockHeight": "27558879",
    "serialized": "0x02f87582a869808459682f008506c088e200825208944c7c44cec9ae0767969ae150ec4ac2bf372ad43388016345785d8a000080c001a07e80ace087f469764cdc5cd8b116c72f13d7544ee6f8c75dd3a4e4940f8164fca076056e43edfc88cfa19b03be4cac4f945aab70e6bf3a5772bdbc9fc9aa89a76e",
    "memo": null,
    "status": "UNFINALIZED",
    "outputIndex": 0,
    "createdDate": "2023-11-09T06:24:55.668Z",
    "modifiedDate": "2023-11-09T06:25:01.330Z",
    "unfinalizedDate": "2023-11-09T06:25:01.000Z",
    "finalizedDate": null,
    "failedDate": null
  },
  "errorCode": null,
  "errorMessage": null
}

3. 웹훅으로 확인하기

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






잔액 조회 기준

주소 잔액 조회 API를 호출하면 특정 주소에 보관된 자산의 잔액을 확인할 수 있습니다. 이때 조회되는 잔액은 총 잔액(Total Balance)과 사용 가능 잔액(Liquid Balance)으로 나누어집니다.

  • 총 잔액은 confirmation이 1 이상인 모든 자산을 의미합니다.
  • 사용 가능 잔액은 각 주소에서 출금 가능한 자산을 의미합니다.





수수료

예상 수수료

예상 수수료는 가스 단가와 가스 한도를 곱하여 계산합니다.

예상 수수료 = 가스 한도(Gas Limit) x {가스 단가(Max Fee Per Gas) + 채굴자 팁(Max Priority Fee Per Gas)}
  • Gas Limit은 가스 사용량의 최댓값입니다. 옥텟은 위믹스 가스 한도를 21,000으로 고정하여 사용하며, 토큰은 구현 방법에 따라 가스 한도가 상이하기 때문에 가스 한도를 100,000으로 고정하여 사용합니다. 실제 가스 사용량은 이보다 더 적을 수 있으며, 수수료는 실제 가스 사용량만큼만 부과됩니다.
  • Max Fee Per Gas는 가스 당 수수료의 최댓값입니다. 수수료 조회 API를 호출하여 이 값을 조회할 수 있습니다. 실제 가스 당 수수료는 이보다 작을 수 있습니다.
  • Max Priority Fee Per Gas는 채굴자에게 제공할 의사가 있는 최대 팁입니다. 옥텟에서는 해당 값을 1.5 Gwei로 고정하여 사용합니다.


트랜잭션 수수료

트랜잭션에 사용된 수수료는 가스 단가와 사용한 가스의 양을 곱하여 계산합니다.

트랜잭션 수수료 = 총 가스 사용량(Usage by Txn) x 가스 단가(Gas Price)
  • Gas Price에는 채굴자에게 제공하는 수수료인 Priority Fee Per Gas가 포함됩니다.





Faucet

테스트넷일 경우 Faucet 사이트에서 테스트용 AVAX를 얻은 뒤 입금해야 합니다. 테스트넷에 실제 AVAX를 입금하면 입금이 인식되지 않습니다 만약 Faucet 잔고가 부족하다면 아발란체 공식 디스코드 채널에 문의해 주세요.