brunch

매거진 개발실습

You can make anything
by writing

C.S.Lewis

by SKKRYPTO Jan 28. 2019

Bitcoin #부록

비트코인 코어 설치 & 실행

비트코인은 오픈소스 프로젝트로 말 그대로 모두가 개발에 참여할 수 있다.

비트 코어를 이용해서 개발에 참여하려면 어떻게 해야 할까?


1. Bitcoin Core란?

Bitcoin Core란 비트코인의 사용자 소프트웨어 구현을 돕는 샘플 프로그램, 즉 비트코인의 참조 구현이다. 비트코인이 갖춰야 할 모든 기능을 구현하고 있으며 transaction과 wallet에 대한 모든 데이터를 저장하고 있다.


2. Bitcoin Core 설치하기

① Bitcoin core 코드 다운로드하기

Git bash에 git clone https://github.com/bitcoin/bitcoin.git 입력


cd 폴더 및 파일명 → 해당 폴더 및 파일로 이동하는 명령어

git clone GitHub주소 → 해당 주소의 파일을 모두 현재 위치에 다운로드하는 명령어


② Bitcoin core 빌드 환경 조성하기

cmd에서 bitcoin / doc / build-windows.md 혹은 build-unix.md파일을 살펴보자

현재 운영체제가 window이므로 cmd bitcoin / doc 폴더에서 more build-windows.md 입력

해당 파일의 요구조건을 모두 갖춰야 bitcoin core를 컴파일할 수 있다.

dir → 현재 위치의 모든 파일, 폴더명을 보여주는 명령어

다음 내용은 build-windows.md의 내용을 정리한 것이다.


WSL 다운로드하기

WSL은 윈도우에서 리눅스 명령을 cmd, powershell에서 사용할 수 있게 해주는 도구이다.

WSL을 다운로드하기 전 다음과 같이 설정을 바꿔 주어야 한다.


먼저 제어판 > 프로그램 > 프로그램 및 기능 > Windows 기능 켜기 / 끄기에 들어가서 Linux용 Windows 하위 시스템에 체크를 해준다.


그리고 설정 > 업데이트 및 보안 > 개발자용에 들어가서 개발자 모드에 체크한다.

위와 같은 설정이 끝나면 https://www.microsoft.com/ko-kr/p/ubuntu-1804/9n9tngvndl3q에서 ubuntu 18.04를 다운로드한다.


빌드 환경 조성하기

어플을 다운로드한 후 실행시켜 위와 같은 창이 뜨면


sudo apt update
sudo apt upgrade
sudo apt install build-essential libtool autotools-dev automake pkg-config bsdmainutils curl git
sudo apt install g++-mingw-w64-x86–64

다음 명령어들을 순서대로 입력한 후

sudo update-alternatives — config x86_64-w64-mingw32-g++ 에서 설정을 1로 변경한다.

③ Bitcoin core 빌드하기

git clone https://github.com/bitcoin/bitcoin.git
cd depends
make HOST=x86_64-w64-mingw32
cd ..
./autogen.sh
./configure

다음과 같은 메시지와 함께 Error가 하나도 뜨지 않아야 한다.

make

여기까지 따라왔다면 비트 코어 빌드는 성공한 것이다.

중간중간 필요한 패키지를 설치하지 않아 발생하는 오류가 잦으므로 주의해야 한다.


④ Bitcoin core 설치하기

sudo make install

Which bitcoind / Which bitcoin-cli 를 입력했을 때 다음과 같은 화면이 뜨면 정상적으로 설치가 끝난 것이다.

bitcoind 명령어로 bitcoind를 실행시켜 보자

이렇게 비트코인 코어를 실행시킬 수 있게 되었다.

※ https://bitcoin.org/ko/download 다음 페이지에서 쉽게 다운로드할 수도 있다.


 Bitcoin Core Node를 운영하는 이유

비트코인 코어는 blockchain dataset을 모두 다운 받기 전까지는 transaction을 처리하거나 계좌의 잔액을 업데이트 할 수 없다. 이 full blockchain dataset을 다운 받으려면 꽤 많은 저장공간과 2GB 이상의 RAM이 필요하다. 그럼에도 많은 사람들이 비트코인 코어 노드를 운영하는 이유는 무엇일까?


① 비트코인 소프트웨어를 개발할 중이고 API가 필요할 때

② 비트코인의 합의 알고리즘에 따라 transaction을 처리하는 어플리케이션을 만들고 싶을 때

③ 노드를 실행시킴으로써 블록체인 네트워크가 더 원활하게 돌아갈 수 있도록 지원 하고 싶을 때

④ 제 3자 (거래소)가 내 transaction을 처리하는 것을 원치 않을 때


대체로 위와 같은 경우에 사람들은 비트코인 코어 노드를 운영한다.


비트코인 코어 실행하기

1. 비트코인 코어 설정하기

홈 디렉토리 내부의 bitcoin 디렉토리에 bitcoin.conf 파일을 생성한 뒤 내용을 입력하면 비트코인 코어의 설정을 변경할 수 있다.


예를 들어 .bitcoin/bitcoin.conf 파일에

rpcuser = skkrypto
rpcpassward = secret

다음 내용을 입력한다면 user name과 패스워드를 설정할 수 있다.

bitcoind -help 입력 시 설정할 수 있는 모든 옵션을 볼 수 있다.


가장 많이 쓰이는 옵션은 아래와 같다.


alertnotify

특정 script나 command를 실행하면 owner에게 알림 (대체로 email)

datadir

blockchain data를 어디 저장할지 설정

default 값은 .bitcoin 디렉토리

prune

오래된 블록을 지워서 저장에 쓰이는 공간을 줄임

txindex

모든 트랜젝션의 인덱스 부여 → 블록체인 내의 모든 트랜젝션을 getrawtransaction 명령어로 검색 가능

maxconnections

connection을 허용할 노드의 maximum 개수 설정

bandwidth 소비를 줄여줌

maxmempool

트랜잭션의 memory pool 용량 설정 → 메모리 사용량 절약 가능

maxreceivebuffer / maxsendbuffer

connection 별로 메모리 버퍼의 크기 제한

minrelaytxfee

relay 할 minimum 트랜잭션 요금 설정 → 이 금액 이하의 incentive는 0원으로 취급


EX)

alertnotify=myemail.sh “Alert : %s”

maxconnections=15

prune=5000

minrelaytxfee=0.0001

maxreceivebuffer=2500

maxsendbuffer=500

rpcuser=skkrypto

rpcpassword=secret


다음과 같이 bitcoin.conf 파일을 만들어 저장하면 설정이 완료된다.


2. 비트코인 코어 API

bitcoin-cli 명령어를 통해 비트코인 클라이언트에 접근할 수 있고,

bitcoin-cli help 명령어를 통해 모든 명령어를 볼 수 있다.

bitcoin-cli help 명령어를 입력하면 해당 명령어의 parameter를 포함한 자세한 정보를 알 수 있다.


① 클라이언트의 정보 보기

bitcoin-cli getinfo

프로그래머가 쉽게 사용할 수 있도록 JSON 형태로 데이터 반환


② 트랜잭션 탐색, 디코딩 하기

bitcoin-cli getrawtransaction 트랜잭션 아이디

트랜잭션을 hexadecimal 형태로 반환 → decoderawtransaction의 파라미터로 사용

bitcoin-cli decoderawtransaction 위 명령어의 반환 값

보내는 사람과 받는 사람의 지갑 주소, 금액, 거스름돈 등 모든 자세한 정보를 보여줌


③ 블록 탐색하기

bitcoin-cli getblockhash 블록 번호

blockhash 값을 반환

bitcoin-cli getblock 위 명령어의 반환 값

블록에 포함되어있는 트랜잭션 아이디, 사이즈, 머클 hash 등 블록의 자세한 정보를 보여줌


참고문헌

Antonopoulos, Andreas M. Mastering Bitcoin: Unlocking Digital Crypto-Currencies

. OReilly, 2016.

김의연 keywi9811key@gmail.com


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari