강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

이강민님의 프로필 이미지
이강민

작성한 질문수

GPT + Bitget API로 만드는 실전 자동매매: 나만의 선물거래 봇 완전히 구현

MVP 만들기 4: GPT의 판단 결과에 따라 실제 매매 주문 실행하기

비트겟 api 서명

작성

·

10

·

수정됨

0

강사님의 코드와 비트겟 api 공식 문서를 보곤 궁금한 점이 생겨 질문남깁니다.

공식문서에는 시간을 int(time.time() *1000)을 사용하는 것으로 되어있는데, 강사님 코드는 아래와 같이 비트겟 서버 시간을 사용하는 부분도 있고, int(time.time() * 1000) 을 사용하는 부분도 있더라구요.

server_time_res = requests.get("https://api.bitget.com/api/v2/public/time")
timestamp = str(server_time_res.json()['data']['serverTime'])

body = json.dumps(body_dict)

sign_data = timestamp + method + path + body
signature = hmac.new(secret_key.encode(), sign_data.encode(), hashlib.sha256).digest()
access_sign = base64.b64encode(signature).decode()
timestamp = str(int(time.time() * 1000))
pre_hash = timestamp + method + endpoint + "?" + params
sign = base64.b64encode(
    hmac.new(secret_key.encode(), pre_hash.encode(), hashlib.sha256).digest()
).decode()

비트겟 서버 시간을 이용하는 걸로 통일해도되는지 궁금합니다.

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. 이강민님.

비트겟 API 서명 관련하여 문의해주신 내용에 대해 설명드리겠습니다. 비트겟 API의 서명(Signature) 과정은 일반적으로 클라이언트의 시간과 서버의 시간 간의 싱크를 맞추는 것이 중요합니다. 이를 위해 서버 시간을 사용할 수도 있으며, 이는 대부분의 API에서 권장되는 방법입니다.

비트겟 서버 시간을 사용하는 이유

  • 서버 시간과의 차이 최소화: 클라이언트와 서버 간의 시간 차이로 인해 서명이 실패할 수 있습니다. 이를 방지하기 위해 서버 시간을 사용하는 것이 보다 안전합니다.
  • 일관된 시간 기준: 여러 API 호출 간에 동일한 시간 기준을 사용하면 트랜잭션의 일관성을 유지할 수 있습니다.

time.time()을 이용한 경우

  • 로컬 시간 사용: 특정 용도로는 로컬 시간도 사용할 수 있지만, 이는 API 서버와의 시간 차이가 있는 경우 문제가 발생할 수 있습니다.

결론

비트겟 서버 시간을 사용하여 서명을 생성하는 것이 보다 안정적이며, 공식 문서에서도 이를 권장하는 경우가 많습니다. 따라서, 서버 시간을 이용하는 방식으로 통일하는 것이 좋습니다. 다만, 강사님의 코드에서는 특정 상황에 따라 time.time()을 사용하는 부분이 있을 수 있으며, 이는 특정 목적에 맞게 구성된 부분이니 강의 내용과 함께 숙지하시기 바랍니다.

관련하여 질문 내용에 도움을 줄 수 있는 비트겟 API 참고 게시물도 살펴보시면 좋습니다. 이 링크에서는 API 설정 및 사용에 대한 추가 정보를 확인할 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

이강민님의 프로필 이미지
이강민

작성한 질문수

질문하기