API를 활용한 봇 만들기 준비 코인원

티스토리 블로그 메뉴

가상화폐 거래소 API를 활용한 봇 만들기 준비 ‘코인원’

가상화폐 거래소 API를 활용한 봇 만들기 준비 ‘코인원’

가상화폐 거래소에서는 대부분 API를 제공하고 있습니다. API는 운영체제와 응용프로그램 사이의 통신에 사용되는 언어나 메시지 형식을 말합니다. 이 방식을 통하면, 원하는 서비스를 만들 수도 있고, 나만의 프로그램을 제할 수도 있습니다.

이번 시간에는 코인원에서 제공하고 있는 API에 대해서 간략하게 알아보겠습니다. 자동 거래봇을 만드는데 초점을 둬서 포스팅 하도록 하겠습니다.

코인원 API Documentation

Related movie:


제가 주로 사용하는 거래소이기도 하며 국내에서 두 번째로 많은 우량한 거래소입니다. 수수료도 합리적이고, 깔끔한 UI로 구성돼 있어서 홈페이지에서도 쉽게 사용할 수 있습니다. 무엇보다 국내에서 생긴 가상화폐 초창기 거래소이기 때문에 코인원을 이용하는 것 같습니다.

위 링크는 코인원 API 사용방법이 담겨있는 페이지입니다. 나중에 구체적으로 다루겠지만, 저처럼 프로그래밍 지식이 전무하거나 이제 막 프로그래밍을 시작한 사람들은 대충 눈으로 익히고, 저와 함께 천천히 봇을 만들어 보도록 하겠습니다.

코인원의 Public API호출 방식

코인원의 Public API호출 방식

코인원 API documentation에 들어가면 가장 먼저 볼 수 있는 화면 입니다. 영문으로 돼 있어서 알아보기 쉽지 않아서 어려움이 있었습니다. 정작 우리나라 회사인데도 불구하고 한글로 된 설명이 없어서 아쉬운 점이 있습니다.

위 캡처 화면에 적혀있는 내용은 코인원의 API호출 방식을 말합니다. 간단하게 정리하면 아래와 같습니다.

– 기본 베이스 URL: https://api.coinone.co.kr

– HTTP Method는 GET 방식으로 호출할 수 있다.

– 1분에 90번의 호출을 할 수 있다.

– 요청 횟수가 90번을 초과할 경우 10분 동안 요청할 수 없으며, 아래와 같은 메시지가 출력.

갑자기 API호출 방식에서 HTTP는 무엇이며 Method는 뭔지 모르겠고, 이해 안 가는 부분이 많을 겁니다. 작은 것 하나도 놓치지 않고, 열심히 가르쳐 드리겠습니다.

Related movie:


HTTP Method GET, Postbode 방식

HTTP Method에서 이야기하는 GET방식을 간단하게 설명해드리도록 하겠습니다. 보통 서버와 클라이언트가 정보를 주고 받을 때 대표적으로 POST와 GET방식을 사용하게 되는데요. GET방식은 데이터가 암호화되지 않은 채로 서버 측으로 요청이 가기 때문에 보안이 취약하게 됩니다.

따라서 노출돼도 괜찮은 정보는 GET방식인 Method를 서버 측에 요청합니다. 반대로 개인정보와 같은 보안이 필요한 데이터는 POST방식으로 서버 측에 요청합니다.

코인원의 Private API호출 방식

개인정보가 담긴 내용을 서버 측에 호출할 때 POST방식을 이용해서 호출하게 됩니다. Private API를 호출하는 방식은 내용은 아래와 같습니다.

Account, Order, Transaction과 같은 개인정보가 담긴 내용이기 때문에 노출되면 안되겠죠. 따라서 POST방식을 이용하게 되고 Private API는 1초에 6번의 호출이 가능하며, Public API처럼 호출 횟수를 초과하게 되면 10분 동안 서버에 호출할 수 없게 됩니다.

요청 횟수가 6번을 초과할 경우 10분 동안 요청할 수 없으며, 아래와 같은 메시지가 출력 됩니다.

V1 버전은 보안이 상대적으로 취약하며, 지원 중단된 기능들이 많기 때문에 V2 버전을 사용하는 것을 권장하고 있습니다. 지금부터 설명하는 내용은 Python 언어를 기반으로 설명하겠습니다.

Nonce : replay attack(동시접속 혹은 중복주문 과 같은 공격)을 방지하기 위해서 unix timestamp를 사용합니다. unix timestamp는 밀리세컨드까지 포함해야 합니다. 즉, Timestamp * 1000의 값을 필요로 합니다.

HTTP Method : 위에서 설명한 POST방식의 메소드가 필요하다는 내용입니다.

HTTP Content-Type : application/json 형태로 이루어진 헤더 정보가 필요합니다.

HTTP Header : X-COINONE-PAYLOAD, X-COINONE-SIGNATURE로 이루어진 헤더가 필요합니다.

Related movie:


Generate X-COINONE-PAYLOAD : PAYLOAD는 BASE64로 인코딩된 정보가 필요합니다. BASE64는 인코딩 방식을 말합니다.

여기에서도 모르는 단어가 많이 등장합니다. HTTP의 Content-Type이 application/json 형태로 이루어지는 말은 어떤 내용인지 궁금할 것입니다. 이것을 이해하기 위해서는 JSON이 무엇인지 알아야겠죠.

JSON은 JavaScript Object Notation의 약자로써 속성-값 쌍으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷입니다. 주로 인터넷에서 자료를 주고 받을 때 그 자료를 표현하는 방법으로 알려져 있는데요. 무엇보다도 JSON을 사용하는 이유는 가벼운 데이터로 빠르게 클라이언트와 서버가 정보를 주고 받을 수 있는 점입니다. 조금 더 구체적으로 들어가면 JSON(JavaScript Object Notation)의 공식 인터넷 미디어 타입은 application/json 으로 사용되며 확장자는 .json으로 사용됩니다.

1. 매개 변수 객체에서 JSON 문자열을 생성합니다. (넌스 값 포함)

2 comments

  1. If it is known that you have bitcoin and it is raised then would need to share it, if she doesn’t know then why should you.

  2. I guess you could always keuze to not have access to the private keys but merienda you make a transfer from your address then the charade is up.

Leave a Reply

Your email address will not be published. Required fields are marked *