블로그를 옮기며 글을 재작성하게 되었습니다.
작년 블록체인플랫폼 강의를 수강하게 되며 비트코인 풀 노드가 되어보는 과제를 해봤었다. 윈도우에 설치하는 글은 꽤 있었지만 리눅스에 설치하는 글은 있어도 중간 설치 과정에서 오류가 발생하는 경우가 많았다. 수십 개의 블로그를 들락날락거리고 열심히 삽질해서 그나마(?) 오류 없이 설치하는 방법을 찾을 수 있었다. 중간에 DB 관련 오류가 발생하지만 이 부분도 따로 찾아서 해결할 수 있었다.
✨ 참고 블로그
A Complete Beginners Guide to Installing a Bitcoin Full Node on Linux (2018 Edition)
How to compile a Bitcoin Full Node on a fresh installation of Kubuntu 18.04 without any Linux experience whatsoever.
medium.com
영어를 잘하신다면 위 블로그를 바로 참고해서 설치하시는 게 좋습니다!
🔨 환경
Ubuntu 20.04
비트코인과 DB 모두 작년 버전 기준이므로 바뀐 게 있을 수도 있습니다. 이 점 참고해주시길 바랍니다.
초반 설치 시에는 RAM 용량을 3GB만 주었는데 4GB 준 것과 비교하여 속도 차이가 생각보다 났습니다. 따라서 전체 블록을 빨리 다운로드하기 위해서는 최소 4GB 이상 할당하는 게 좋습니다.
하드 디스크 용량은 460GB를 주었습니다. 작년 설치 당시 350GB로는 풀 노드가 되기에 절대적으로 부족했었습니다. 현재 블록 수가 증가되었을 것이므로 하드 디스크 용량은 최대한 넉넉하게 주는 게 좋습니다.
비트코인 코어 다운로드는 우분투 설치 후 아무런 설정도 하지 않은 순백 상태에서 시작했습니다. 중간 오류 해결을 위해 파일을 하나 수정해야 하는데, 이 때문에 vimrc 설정 정도는 해주어야 편합니다.
설치 과정은 코드 블록 내에 있는 명령어만 복붙 하면 됩니다.
📺 설치 과정
순백 상태로 시작했기 때문에 우선 기본 업데이트와 깃 설치를 했습니다.




$ sudo apt-get update
$ sudo apt-get install git
$ mkdir -p bitcoin-source && cd bitcoin-source
$ git clone https://github.com/bitcoin/bitcoin.git
참고 블로그에서 bitcoin-source 폴더를 따로 만들어주어서 만든 것입니다. 해당 폴더는 만들지 않은 채로 진행해도 무방합니다.
필요한 라이브러리를 설치해주어야 합니다.
$ sudo apt-get install build-essential libtool autotools-dev automake pkg-config libssl-dev libevent-dev bsdmainutils python3
$ sudo apt-get install libboost-all-dev
라이브러리 설치가 제대로 되지 않아서 발생하는 오류가 굉장히 많기 때문에 설치하지 않고 그냥 넘어가면 안 됩니다. 하나라도 빠지면 어느 부분에서 정확히 오류가 발생하는지 알기가 힘듭니다.

$ wget http://download.oracle.com/berkeley-db/db-4.8.30.NC.tar.gz
$ echo '12edc0df75bf9abd7f82f821795bcee50f42cb2e5f76a6a281b85732798364ef db-4.8.30.NC.tar.gz' | sha256sum -c
echo에 관한 출력으로db-4.8.30.NC.tar.gz: OK이라는 문자열이 출력되면 berkeley DB 설치가 완료된 것입니다.
다음 단계로 진행해보겠습니다.
이 단계에서는 무조건 오류가 발생합니다. 중간에 오류가 나는 부분을 수정한 뒤 계속 진행해주시면 됩니다.
(파일 수정을 해주면 되는데, 파일 수정을 한 뒤 sudo make install을 해본 적은 없는 관계로 안전하게 제가 성공한 예시로 들었습니다.)
$ tar -xvf db-4.8.30.NC.tar.gz
$ cd db-4.8.30.NC/build_unix
$ mkdir -p build
$ BDB_PREFIX=$(pwd)/build
$ ../dist/configure --disable-shared --enable-cxx --with-pic --prefix=$BDB_PREFIX
$ sudo make install
$ cd ../..
berkeley DB 오류 해결
sudo make install을 하고 나면 오류가 발생할 것입니다.
현재까지 설치 과정을 똑같이 따라 하셨다면 현재 폴더 경로가 bitcoin-source/db-4.8.30.NC/build_unix 로 되어 있을 것입니다.
이전 폴더로 이동한 뒤 그곳에서dbinc 폴더로 들어가atomic.h 파일을 수정하시면 오류를 쉽게 해결할 수 있습니다. 해당 파일을 수정하기 위해서는 관리자 권한으로 실행해야 합니다.
$ cd ..
$ ls
$ cd dbinc
$ sudo su
$ vi atomic.h
위 명령어 입력을 통해 파일에 들어간 뒤 코드 번호가 보이게(:set nu) 설정해주세요.


147, 179번째 줄을 수정해주시면 됩니다.
원래는 __atomic_compare_exchange로 되어 있는데, exchange 뒤에 _db 만 추가 입력해주시면 됩니다.
__atomic_compare_exchange -> __atomic_compare_exchange_db
현재까지 sudo make install을 하다가 오류가 발생한 것이니 make가 제대로 되지 않은 상태입니다. 따라서 작업하던 폴더로 다시 이동해 sudo make install을 계속해주어야 합니다.
$ cd ..
$ cd build_unix
$ sudo make install
$ cd ../..
이후 필요 라이브러리를 더 설치합니다.
$ sudo apt-get install libminiupnpc-dev
$ sudo apt-get install libzmq3-dev
$ sudo apt-get install libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev protobuf-compiler
$ sudo apt-get install libqrencode-dev
당시 비트코인 최신 버전은 v0.20.0 이어서 해당 버전으로 진행하였습니다.
$ cd bitcoin
$ git checkout v.0.20.0
$ ./autogen.sh
$ ./configure CPPFLAGS="-I${BDB_PREFIX}/include/ -O2" LDFLAGS="-L${BDB_PREFIX}/lib/" --with-gui
$ make
$ sudo make install
5번째 줄 make 입력 후, make가 다 될 때까지 시간이 좀 걸립니다.
make install까지 완료되면 비트코인 설치가 모두 끝난 것입니다.
설정 파일
명령어를 모두 실행시켜준 후 비트코인 코어 실행 전 설정 파일을 먼저 설정해주었습니다.
$ mkdir ~/.bitcoin
$ cd ~/.bitcoin
$ vi bitcoin.conf
bitcoin.conf 설정이라고 검색하시면 관련 내용이 담긴 많은 자료들이 나옵니다.
설치 당시 완벽히 이해를 못한 상태여서 필수적으로 해야 할 것 같은 설정만 했습니다.
server의 디폴트 값은 0입니다. 1로 설정해주어야 rpc 서버로 접속할 수 있습니다.
txindex는 모든 블록을 index 값이 꼬이지 않게 다운로드하기 위해 꼭 필요로 하는 것이라고 합니다.
저는 mainnet에 접속하려는 것이었기 때문에 testnet 관련 설정은 하지 않았습니다.
이 외 설정 중 rpcuser, rpcpassword도 설정이 가능합니다. 따로 설정하지 않은 상태로 비트코인을 실행시키면 rpc 연결 시 사용할 수 있는 cookie 값이 자동으로 생성된다고 합니다. 해당 cookie 값은 .bitcoin 폴더에서 more .cookie 명령어를 입력하여 확인할 수 있다고 합니다.
📺 실행

$ bitcoin-qt
설정 파일 설정도 모두 끝낸 뒤 실행하면 됩니다.
저때 당시 풀 노드가 되는 시간이 컴퓨터를 한 번도 끄지 않고 잘 돌아가면 2~4일 정도 걸리는 것 같았습니다.
컴퓨터를 껐다가 켜야 할 때는 Bitcoin Core를 종료하면 됩니다. 터미널 창에서도 아래와 같이 뜨면 제대로 종료된 것입니다. 종료가 제대로 되지 않은 상태로 우분투를 재시작하면 블록에 문제가 발생할 확률이 높습니다.

bitcoin-qt 말고 bitcoind를 이용해서 블록을 다운로드하여도 됩니다. 그러나 bitcoind로 하는 경우 블록 다운이 어느 정도 되었는지 육안으로 확인하기 힘들기 때문에 블록 다운은 bitcoin-qt로 진행하는 게 좋습니다.
실행 예시
모든 블록을 다운로드한 뒤 bitcoin-cli을 사용하려고 할 때는 bitcoind를 통해 진행하시면 됩니다.
bitcoin-qt를 종료한 뒤 아래 명령어를 통해 bitcoind를 실행해주면 됩니다.
$ bitcoind -daemon -txindex
Bitcoin Core stating
이라는 문구가 뜨면 백그라운드에서 실행되고 있는 것입니다.


bitcoin-cli을 사용해 어느 블록에 관한 해시 값과 계정 정보를 확인할 수 있습니다.
위 계정은 공부할 때 자주 예시로 나오는 Alice의 계정입니다.
블로그를 옮기며 글을 재작성하게 되었습니다.
작년 블록체인플랫폼 강의를 수강하게 되며 비트코인 풀 노드가 되어보는 과제를 해봤었다. 윈도우에 설치하는 글은 꽤 있었지만 리눅스에 설치하는 글은 있어도 중간 설치 과정에서 오류가 발생하는 경우가 많았다. 수십 개의 블로그를 들락날락거리고 열심히 삽질해서 그나마(?) 오류 없이 설치하는 방법을 찾을 수 있었다. 중간에 DB 관련 오류가 발생하지만 이 부분도 따로 찾아서 해결할 수 있었다.
✨ 참고 블로그
A Complete Beginners Guide to Installing a Bitcoin Full Node on Linux (2018 Edition)
How to compile a Bitcoin Full Node on a fresh installation of Kubuntu 18.04 without any Linux experience whatsoever.
medium.com
영어를 잘하신다면 위 블로그를 바로 참고해서 설치하시는 게 좋습니다!
🔨 환경
Ubuntu 20.04
비트코인과 DB 모두 작년 버전 기준이므로 바뀐 게 있을 수도 있습니다. 이 점 참고해주시길 바랍니다.
초반 설치 시에는 RAM 용량을 3GB만 주었는데 4GB 준 것과 비교하여 속도 차이가 생각보다 났습니다. 따라서 전체 블록을 빨리 다운로드하기 위해서는 최소 4GB 이상 할당하는 게 좋습니다.
하드 디스크 용량은 460GB를 주었습니다. 작년 설치 당시 350GB로는 풀 노드가 되기에 절대적으로 부족했었습니다. 현재 블록 수가 증가되었을 것이므로 하드 디스크 용량은 최대한 넉넉하게 주는 게 좋습니다.
비트코인 코어 다운로드는 우분투 설치 후 아무런 설정도 하지 않은 순백 상태에서 시작했습니다. 중간 오류 해결을 위해 파일을 하나 수정해야 하는데, 이 때문에 vimrc 설정 정도는 해주어야 편합니다.
설치 과정은 코드 블록 내에 있는 명령어만 복붙 하면 됩니다.
📺 설치 과정
순백 상태로 시작했기 때문에 우선 기본 업데이트와 깃 설치를 했습니다.




$ sudo apt-get update
$ sudo apt-get install git
$ mkdir -p bitcoin-source && cd bitcoin-source
$ git clone https://github.com/bitcoin/bitcoin.git
참고 블로그에서 bitcoin-source 폴더를 따로 만들어주어서 만든 것입니다. 해당 폴더는 만들지 않은 채로 진행해도 무방합니다.
필요한 라이브러리를 설치해주어야 합니다.
$ sudo apt-get install build-essential libtool autotools-dev automake pkg-config libssl-dev libevent-dev bsdmainutils python3
$ sudo apt-get install libboost-all-dev
라이브러리 설치가 제대로 되지 않아서 발생하는 오류가 굉장히 많기 때문에 설치하지 않고 그냥 넘어가면 안 됩니다. 하나라도 빠지면 어느 부분에서 정확히 오류가 발생하는지 알기가 힘듭니다.

$ wget http://download.oracle.com/berkeley-db/db-4.8.30.NC.tar.gz
$ echo '12edc0df75bf9abd7f82f821795bcee50f42cb2e5f76a6a281b85732798364ef db-4.8.30.NC.tar.gz' | sha256sum -c
echo에 관한 출력으로db-4.8.30.NC.tar.gz: OK이라는 문자열이 출력되면 berkeley DB 설치가 완료된 것입니다.
다음 단계로 진행해보겠습니다.
이 단계에서는 무조건 오류가 발생합니다. 중간에 오류가 나는 부분을 수정한 뒤 계속 진행해주시면 됩니다.
(파일 수정을 해주면 되는데, 파일 수정을 한 뒤 sudo make install을 해본 적은 없는 관계로 안전하게 제가 성공한 예시로 들었습니다.)
$ tar -xvf db-4.8.30.NC.tar.gz
$ cd db-4.8.30.NC/build_unix
$ mkdir -p build
$ BDB_PREFIX=$(pwd)/build
$ ../dist/configure --disable-shared --enable-cxx --with-pic --prefix=$BDB_PREFIX
$ sudo make install
$ cd ../..
berkeley DB 오류 해결
sudo make install을 하고 나면 오류가 발생할 것입니다.
현재까지 설치 과정을 똑같이 따라 하셨다면 현재 폴더 경로가 bitcoin-source/db-4.8.30.NC/build_unix 로 되어 있을 것입니다.
이전 폴더로 이동한 뒤 그곳에서dbinc 폴더로 들어가atomic.h 파일을 수정하시면 오류를 쉽게 해결할 수 있습니다. 해당 파일을 수정하기 위해서는 관리자 권한으로 실행해야 합니다.
$ cd ..
$ ls
$ cd dbinc
$ sudo su
$ vi atomic.h
위 명령어 입력을 통해 파일에 들어간 뒤 코드 번호가 보이게(:set nu) 설정해주세요.


147, 179번째 줄을 수정해주시면 됩니다.
원래는 __atomic_compare_exchange로 되어 있는데, exchange 뒤에 _db 만 추가 입력해주시면 됩니다.
__atomic_compare_exchange -> __atomic_compare_exchange_db
현재까지 sudo make install을 하다가 오류가 발생한 것이니 make가 제대로 되지 않은 상태입니다. 따라서 작업하던 폴더로 다시 이동해 sudo make install을 계속해주어야 합니다.
$ cd ..
$ cd build_unix
$ sudo make install
$ cd ../..
이후 필요 라이브러리를 더 설치합니다.
$ sudo apt-get install libminiupnpc-dev
$ sudo apt-get install libzmq3-dev
$ sudo apt-get install libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev protobuf-compiler
$ sudo apt-get install libqrencode-dev
당시 비트코인 최신 버전은 v0.20.0 이어서 해당 버전으로 진행하였습니다.
$ cd bitcoin
$ git checkout v.0.20.0
$ ./autogen.sh
$ ./configure CPPFLAGS="-I${BDB_PREFIX}/include/ -O2" LDFLAGS="-L${BDB_PREFIX}/lib/" --with-gui
$ make
$ sudo make install
5번째 줄 make 입력 후, make가 다 될 때까지 시간이 좀 걸립니다.
make install까지 완료되면 비트코인 설치가 모두 끝난 것입니다.
설정 파일
명령어를 모두 실행시켜준 후 비트코인 코어 실행 전 설정 파일을 먼저 설정해주었습니다.
$ mkdir ~/.bitcoin
$ cd ~/.bitcoin
$ vi bitcoin.conf
bitcoin.conf 설정이라고 검색하시면 관련 내용이 담긴 많은 자료들이 나옵니다.
설치 당시 완벽히 이해를 못한 상태여서 필수적으로 해야 할 것 같은 설정만 했습니다.
server의 디폴트 값은 0입니다. 1로 설정해주어야 rpc 서버로 접속할 수 있습니다.
txindex는 모든 블록을 index 값이 꼬이지 않게 다운로드하기 위해 꼭 필요로 하는 것이라고 합니다.
저는 mainnet에 접속하려는 것이었기 때문에 testnet 관련 설정은 하지 않았습니다.
이 외 설정 중 rpcuser, rpcpassword도 설정이 가능합니다. 따로 설정하지 않은 상태로 비트코인을 실행시키면 rpc 연결 시 사용할 수 있는 cookie 값이 자동으로 생성된다고 합니다. 해당 cookie 값은 .bitcoin 폴더에서 more .cookie 명령어를 입력하여 확인할 수 있다고 합니다.
📺 실행

$ bitcoin-qt
설정 파일 설정도 모두 끝낸 뒤 실행하면 됩니다.
저때 당시 풀 노드가 되는 시간이 컴퓨터를 한 번도 끄지 않고 잘 돌아가면 2~4일 정도 걸리는 것 같았습니다.
컴퓨터를 껐다가 켜야 할 때는 Bitcoin Core를 종료하면 됩니다. 터미널 창에서도 아래와 같이 뜨면 제대로 종료된 것입니다. 종료가 제대로 되지 않은 상태로 우분투를 재시작하면 블록에 문제가 발생할 확률이 높습니다.

bitcoin-qt 말고 bitcoind를 이용해서 블록을 다운로드하여도 됩니다. 그러나 bitcoind로 하는 경우 블록 다운이 어느 정도 되었는지 육안으로 확인하기 힘들기 때문에 블록 다운은 bitcoin-qt로 진행하는 게 좋습니다.
실행 예시
모든 블록을 다운로드한 뒤 bitcoin-cli을 사용하려고 할 때는 bitcoind를 통해 진행하시면 됩니다.
bitcoin-qt를 종료한 뒤 아래 명령어를 통해 bitcoind를 실행해주면 됩니다.
$ bitcoind -daemon -txindex
Bitcoin Core stating
이라는 문구가 뜨면 백그라운드에서 실행되고 있는 것입니다.


bitcoin-cli을 사용해 어느 블록에 관한 해시 값과 계정 정보를 확인할 수 있습니다.
위 계정은 공부할 때 자주 예시로 나오는 Alice의 계정입니다.