go

go

    암호화폐 트레이딩 봇을 만들었다 (feat. 업비트)

    암호화폐 트레이딩 봇 최근 블로그 포스팅이 한 동안 뜸했던 이유는, 어느 날 트레이딩 봇을 만들고 싶은 욕구가 생겨서 여기에 지속적으로 힘을 쓰고 있었기 때문이다. 개발자라면 누구나 한 번쯤은 만들어본다는 이것을, 아직 나는 만들어본 적이 없으니 괜찮은 기회라 여겨 해보기로 했다. 설계를 여러번 수정하다가 이제서야 어느정도 완성도를 보이고 있어 블로그에 적기로 했다. 참고로 개발 언어는 파이썬이 아닌 Go 다. 그 이유는 아래에서하자. 봇 같은 경우 주식 트레이딩은 봇은 아니고, 암호화폐 거래소 중 하나인 업비트에 암호화폐를 주문하고, 조건에 맞는 코인을 감지, 이후 감지된 마켓을 대상으로 전략을 실행할 수 있는 봇을 개발했다. 이미 서문만으로도 봇의 구조가 이미 노출되었지만, 이는 그저 프레임워크를 만..

    Go 언어로 블록체인 메인넷 만들기 - 디지털 서명(Signature)

    Go 언어로 블록체인 메인넷 만들기 - 프로토타입 Go 언어로 블록체인 메인넷 만들기 - 작업증명(PoW) Go 언어로 블록체인 메인넷 만들기 - 영속성 Go 언어로 블록체인 메인넷 만들기 - CLI(Command Line Interface) Go 언어로 블록체인 메인넷 만들기 - 트랜잭션(Transaction) Go 언어로 블록체인 메인넷 만들기 - 거래#1 Go 언어로 블록체인 메인넷 만들기 - 키와 주소, ―지갑 Go 언어로 블록체인 메인넷 만들기 - 거래#2 Go 언어로 블록체인 메인넷 만들기 - 디지털 서명(Signature) 서명 이전 포스트인 Go 언어로 블록체인 메인넷 만들기 - 거래#2 에서 서명 구현을 미룬 바 있는데, 이제 서명을 구현해보도록 하자. 일단 서명이 무엇인지부터 고민해야 ..

    Go 언어로 블록체인 메인넷 만들기 - 키와 주소, ―지갑

    이번에는 키와 지갑에 대해 이야기해보자. 일반적으로 우리가 암호화폐 지갑으로 부르는 것들은 유저 인터페이스상에 주소로 표현되며, 잔액을 표시할 수 있어 지갑이 코인을 가지고 있는 것으로 보인다. 하지만 지갑은 알고보면 그냥 공개키(Public Key)와 개인키(Private Key)를 가지고 있는 것 뿐이다. 그렇다면 주소는 어디있으며 잔액은 어디에 있는가에 대한 질문이 생기게되는데 잔액의 경우 이전 포스트에서 UTXO(Unspent Transaction Output)의 총합으로 처리할 수 있다고 했다. 공캐키와 개인키 공캐키(Public Key)와 개인키(Private Key)는 암호학에서 나오는 개념이며 암호화의 본질은 다른 사람이 메시지를 읽지 못하도록 하고 허락된 당사자만이 처리할 수 있도록 하는..

    Go 언어로 블록체인 메인넷 만들기 - 거래#1

    이번 포스트에서는 거래를 다룬다. 이전 포스트에서 트랜잭션을 이야기하면서 유일한 거래를 만든 것이 바로 코인베이스 트랜잭션인데, 코인베이스 트랜잭션은 입력 값이 없기 때문에 일반적인 거래라고 보기는 어렵다. 따라서 이번 포스트에서는 실제 거래처럼 두 주체가 대금을 지불하고, 잔액을 돌려주는 것을 해볼 것이다. UTXO(Unspent Transaction Output) UTXO, 즉 소비되지 않은 거래 출력 값은 거래에서 반드시 이해해야 하는 개념이다. 처음 이 개념을 접한다면 이해하기 어려울 수도 있다. 나의 경우는 이 개념을 이해하기 위해 다소 오랜 시간이 걸렸다. 먼저 소비(Spent)에 대해 생각해보자. 소비라는 것은 내가 가지고 있는 자금을 다른 주체에게 지불하는 행위를 말한다. 소비를 하려면 먼..

    Go 언어로 블록체인 메인넷 만들기 - 트랜잭션(Transaction)

    이번에는 블록체인의 구성요소 중 또 하나의 요소인 트랜잭션을 만들어보자. 트랜잭션을 이해하기 제법 시간이 걸렸는데, 포스트를 적어가면서 하나씩 풀어나갈 생각이다. 현재 이 포스트는 트랜잭션의 초입부분이며 이후에 거래, 공개키와 개인키 등 다뤄야 할 내용이 또 있다. type Transaction 트랜잭션은 기본적으로 Block 에 포함된다. 우리가 Data 라는 필드를 블록에 포함시켰었는데 그것 대신에 거래들이 포함될 예정이다. 트랜잭션은 하나의 거래다. 현실세계에서 일어나는 거래를 어떻게 표현할 수 있을까? 비트코인에서 제시하는 거래의 아이디어는 제법 흥미롭다. 먼저 거래는 입력 값(Input Transaction)과 출력 값(Output Transaction)이 있다. 하나의 트랜잭션은 다수의 입력과..