코인 거래소 API 레퍼런스 비교

황석범·2025년 1월 18일
0

내일배움캠프_iOS_5기

목록 보기
64/76

최종 프로젝트에서 각 코인 거래소 API 데이터를 받아와야하기 때문에 우선 국내 대표 거래소 업비트, 빗썸, 코인원 거래소 API 레퍼런스를 찾아보고 비교해보았다.

1. 요청 방식

  • 업비트와 빗썸의 API 레퍼런스는 비교적 유사한 구조를 가진다.

업비트 & 빗썸

  • RESTful API를 기본으로 사용하며, JSON 형식의 응답을 제공
  • query string 파라미터를 많이 사용함

코인원

  • RESTful API 사용하지만, 몇몇 경우 POST 요청에 JSON 본문을 보내야함
  • URL 구성 및 파라미터 전달 방식이 상대적으로 다름

2. 보안 방식

업비트

  • HMAC-SHA512 알고리즘을 사용한 JWT 토큰 기반 인증
  • 인증 키 발급 및 관리가 명확하게 정의되어 있음

JWT 간단 설명 참고자료


인증 방식

  • JWT(JSON Web Token) 기반 인증을 사용합니다.
  • JWT는 세 가지 구성 요소(헤더, 페이로드, 서명)를 포함하며, HMAC-SHA256으로 서명합니다.

구성

  1. 헤더(Header)
  • alg: 서명 알고리즘(HMAC-SHA256 사용)
  • type: JWT 타입
{
    "alg": "HS256",
    "typ": "JWT"
}
  1. 페이로드(Payload)
  • accessKey: API 키
  • nonce: 고유 요청 식별자(UUID)
  • (선택)쿼리 문자열 해시 및 알고리즘 정보
{
    "access_key": "your_access_key",
    "nonce": "unique-uuid-string",
    "query_hash": "optional-query-hash",
    "query_hash_alg": "SHA512"
}
  1. 서명(Signature)
  • header와 payload를 Base64로 인코딩한 후, 비밀 키를 사용하여 HMAC-SHA256으로 서명합니다.
  • 결과: <Base64(header)>.<Base64(payload)>.<signature>

요청 헤더

  • Authorization: Bearer 형식으로 JWT 토큰을 전달합니다.

빗썸

  • 업비트와 비슷하게 HMAC-SHA512 방식 사용
  • 요청시 api_key와 함께 signature를 포함


인증 방식

  • JWT 기반 인증을 사용하며, 업비트와 유사합니다.
  • 하지만 요청 파라미터(쿼리 문자열)에 대해 SHA512 해시를 추가로 생성해야 합니다.

1. 헤더(Header)

  • alg: HMAC-SHA256 알고리즘
  • tpy: JWT 타입
{
    "alg": "HS256",
    "typ": "JWT"
}

2. 페이로드(Payload):

  • access_key: API 키
  • nonce: 고유 요청 식별자(UUID 또는 밀리초 기반 타임스탬프)
  • timestamp: 현재 시간(밀리초 단위)
  • (선택) 쿼리 해시 정보
 {
    "access_key": "your_access_key",
    "nonce": "unique-uuid-string",
    "timestamp": 1673701000123,
    "query_hash": "hashed-query-parameters",
    "query_hash_alg": "SHA512"
} 

3. 서명(Signature):

  • JWT의 서명 부분은 업비트와 동일하게 생성됩니다.

4. 쿼리 해시(Query Hash):

  • 요청 파라미터가 있을 경우, JSON 형태의 쿼리 문자열을 SHA512로 해싱하여 query_hash 필드에 추가합니다.
  • 예: { "currency": "BTC" } → SHA512로 해시.

요청 헤더

  • Authorization: Bearer 형식으로 JWT 토큰을 전달합니다.

코인원

  • API 키와 함께 X-COINONE-PAYLOAD 헤더를 추가로 요구
  • payloads는 Base64 인코딩을 통해 전달, 업비트/빗썸과 다름


인증 방식

  • HMAC-SHA512 기반의 커스텀 인증 방식을 사용합니다.
  • 요청 본문을 Base64로 인코딩하여 X-COINONE-PAYLOAD 헤더로 전달합니다.
  • 인코딩된 Payload를 사용해 HMAC-SHA512 서명을 생성한 후, 이를 X-COINONE-SIGNATURE 헤더에 포함합니다.

1. Payload:

  • 요청 본문(JSON 데이터)에 고유 nonce와 access_token을 포함합니다.

2. 서명(Signature):

  • X-COINONE-PAYLOAD를 생성한 후, 비밀 키를 사용하여 HMAC-SHA512로 서명합니다.
  • 생성된 서명은 X-COINONE-SIGNATURE로 전달됩니다.

요청 헤더

  • X-COINONE-PAYLOAD: Base64로 인코딩된 JSON 본문.
  • X-COINONE-SIGNATURE: HMAC-SHA512 서명 값.

3. 데이터 구조 및 응답

업비트

  • 통일된 JSON 형식의 응답 구조를 제공하며, market 기준 데이터가 잘 정리되어 있음

1. 업비트 KRW 마켓 모든 종목 리스트


2. 업비트 특정 종목(비트코인)에 대한 원화 시세


3. 마켓 단위 모든 시세 정보


4. 업비트 KRW-BTC 마켓에 가장 최근 1분봉 1개를 요청


빗썸

  • 시장별 응답 형식이 다소 단순하며, 가독성이 좋음

1. 빗썸 KRW 마켓 모든 종목 리스트


2. 빗썸 특정 종목(비트코인)에 대한 원화 시세


3. 빗썸 KRW-BTC 마켓에 가장 최근 1분봉 1개를 요청


코인원

  • 응답 데이터에서 errorCode를 통해 에러를 관리하며, 상태 코드와 별도로 에러 정보를 제공
  • 응답 형식이 조금 더 세분화되어 있으나, 직관성은 떨어짐

1. 코인원 KRW 마켓 모든 종목 리스트


2. 코인원 특정 종목(비트코인)에 대한 원화 시세


3. 마켓 단위 모든 시세 정보

4. 코인원 KRW-BTC 마켓에 가장 최근 1분봉 1개를 요청


코인원은 간단하게 업비트와 빗썸과 다르게 KRW 마켓의 종목의 한국이름, 영어이름으로 제공하지 않음, 빗썸은 마켓 단위 모든 종목 가격정보를 제공하고 있지 않음, 개별로 다 요청해야함, 코인원 특정 종목에 대한 원화 시세, 캔들 조회가 업비트, 빗썸이랑 조금 다름

profile
iOS 공부중...

0개의 댓글

관련 채용 정보