관리 메뉴

Leo's Garage

Mastering Bitcoin 2nd - Programming The Open BlockChain Ch.3-1 본문

BlockChain/Mastering Bitcoin

Mastering Bitcoin 2nd - Programming The Open BlockChain Ch.3-1

LeoBehindK 2018. 8. 7. 19:14
728x90
반응형


Mastering Bitcoin 2nd 세번째 포스팅을 시작하겠다.




Ch.3 Bitcoin Core: The Reference Implementation




Bitcoin은 Open Source Project이다. (MIT License)




MIT License란?




첫째, 이 소프트웨어를 누구라도 무상으로 제한없이 취급해도 좋다.
(단, 저작권 표시 및 이 허가 표시를 소프트웨어의 모든 복제물 또는 중요한부분에 표시해야 한다.)

둘째, 저자 또는 저작권자는 소프트웨어에 관해 책임을 지지 않는다.

즉 수정, 배포가 자유로우며 상업적으로 이용해도 되지만 문제가 생겼을 경우에 원작자에게는 아무런 잘못이 없다라고 보면 된다. 




따라서 누구나 내려받을 수 있고, Bitcoin Core Source Code에 기여할 수 있다.

제목에서도 알 수 있다시피, Bitcoin Core는 말 그대로 Bitcoin의 각 각 요소들을 잘 구현한 Reference이다. 정확히 말하면 사토시 나카모토가 백서를 쓰기 전에 실제로 Bitcoin이 잘 동작하는지 확인하고 싶었던 용도로 개발한 'Bitcoin' 또는 'Satoshi Client'로 불리던 것이 'Bitcoin Core'로 발전하였다. 

실제로 Bitcoin Core는 지갑 시스템, 거래, 블록 증명 방식 그리고 P2P로 구성된 Bitcoin Network까지 포함하여 구현하였다.



Eric Lombrozo라는 분이 Bitcoin Core Architecture를 위와 같이 도식화하였다.



자, 이제 우리는 실제로 이 Bitcoin Core를 내려받아서 이론적으로 혹은 머릿속으로만 이해하던 Bitcoin의 각 요소들 (지갑, 거래, 합의, 채굴 등등...)이 어떻게 동작하는지 보려고 한다. (앞으로의 챕터에서..)



그러기 위해서는 Bitcoin Core를 내려받고 동작시킬 환경을 만들어 주어야 한다.



제가 MAC OS를 쓰고 있는 관계로 MAC 기준으로 설명하겠다.
(Windows 사용자 분도 우분투와 같은 환경을 이용하여 충분히 개발환경을 만드실 수 있다.)





Bitcoin Core는 어떻게 구성되어 있을까?

Bitcoin Core 구


 bitcoin-qt 

 Bitcoin의 GUI, Bitcoin Wallet에 해당

 bitcoin-deamon

 (bitcoind)

 Back-end Client, JSON-RPC를 통해 개발자를 위한 API 제공

 bitcoin-cli

 Command line interface로 bitcoind를 동작시키기 위한 명령어입력




더 자세한 정보는 아래 주소를 통해 알아보길 바란다.


https://github.com/bitcoin/bitcoin






우리는 목표를 하나 세우고 가야한다. 
Bitcoin Core를 설치해서 다음과 같은 과정을 테스트 해 볼 것이다.

1. Bitcoin Core 설치
2. 테스트넷에서 Bitcoin Core 가동
3. Bitcoin Core 계정생성
4. Bitcoin Core 송금

하나씩 해보도록 하자.

우선 한 가지 확인하고 가야 할 부분이 있다. 우리는 앞으로 Bitcoin Core를 동작시키기 위해서 MAC OS 내에 Terminal이라는 Utility를 사용할 것이다. 

Terminal Utility를 통해 흔히 우리가 "Shell"이라 부르는 OS's command-line interface를 이용할 것이다.

이 부분에 대해 어려운 분들도 일단 Step by Step으로 설치를 해보자

(몰라도 동작시킬 수 있다. 다만 알면 더 좋을 뿐 ^^)



위에서 우리는 Bitcoin-cli라는 것을 통해 명령어를 입력할 수 있다고 했다. 따라서 우리는 우리의 개발 환경에 Command line tool을 설치해야한다.



1. OS Command line tool 설치



xcode-select --install



Terminal에 위와 같이 입력하면, 팝업이 나타나면서 설치 여부를 묻는다. 
install을 선택하면 Command Line tool 설치가 진행된다.

그 다음은 Homebrew를 설치해야한다.



2. Homebrew 설치



Homebrew는 여러가지 기능이 있지만 우리가 필요한 기능은 MAC OS에서 App Store에 없는 패키지를 설치할 수 있게 해주는 기능을 지원해준다.


/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"



위의 내용을 복사해서 Terminal 입력창에 넣으면 엔터를 치면 설치를 하고,그 외에 다른 키를 누르면 설치하지 않는다는 메세지가 나온다. 잘 보고 엔터를 입력하여 Homebrew의 설치를 마치도록 한다.



3. Dependencies 설치

Bitcoin Core를 빌드하려면 많은 Dependencies(의존성 라이브러리)가 필요하다. 따라서 이를 모두 설치해야한다.

brew 명령어를 통해 이들을 설치하도록 하자.


brew install automake berkeley-db4 libtool boost miniupnpc openssl pkg-config protobuf python qt libevent





4. Bitcoin Core Source Download

자 드디어 Bitcoin Core Source를 다운받도록하자.


git clone https://github.com/bitcoin/bitcoin

cd bitcoin




5. Bitcoin core Build

Autoconf : 자동 Configure(설정) 프로그램
Configure : make File 생성
make : Compile


./autogen.sh

./configure

make




6. Bitcoin Core 설치


sudo make install



위와 같이하면 Bitcoin Core 설치가 완료된다.

자 이제 우리는 Bitcoin Core를 통해서 계정을 만들고 송금을 하는 일련의 과정을 테스트해보자 한다.

실제로 우리가 Bitcoin Network 내에서 Transaction을 하려면 지금까지의 모든 Transaction이 담긴 Block을 내려받아 동기화를 해야 한다. 물론 실제 네트워크 상에서 여러가지를 해보고 싶다면 그래도 좋다. 하지만 용량이 만만치 않다. (필자는 86GB를 다운받았을 때, 동기화 50%를 간신히 넘겼고 포기했다.)

그래서 Bitcoin Core에서는 아래와 같은 대안 네트워크에 접속하여 테스트할 수 있게 해준다.

Bitcoin Test Mode

1, TestNet : 인터넷 상에서 동작하는 테스트 네트워크, 테스트 용  BTC를 사용하지만, 마찬가지로 TestNet에 있는 모든 블럭을 동기화해야한다.

2. Regtest : local 내에 동작하는 테스트 네트워크, 개인 PC 내에서만 계쩡을 만들거나 채굴을 할 수 있고 블록체인 초기화도 쉬워 테스트용으로 적합하다.

우리는 Regtest를 해볼 것이다.


728x90
반응형
Comments