Bitcoin Core

 

1. 개요
2. 사용 방법
3. 관련 문서


1. 개요


비트코인의 공식 지갑 클라이언트 소프트웨어.[1] 처음에는 사토시 나카모토가 개발하였고, 현재는 다른 개발자들이 개발한다. 이름이 Bitcoin에서 Bitcoin-Qt로 변경되었다가 현재의 Bitcoin Core라는 이름으로 변경되었다. 다만 비트코인 캐시가 생긴 뒤 비트코인 캐시 진영에서 비트코인 캐시가 진짜 비트코인이라는 주장을 펴며 기존 비트코인을 비트코인 코어라고 부르기도 하니 용어 해석에 주의가 필요하다. 로저 버가 기존 비트코인을 꼬박꼬박 비트코인 코어라고 부르는 대표적인 인물이다.
사토시 나카모토는 2008년 10월 "Bitcoin: A Peer-to-Peer Electronic Cash System"이라는 제목의 9쪽짜리 논문https://bitcoin.org/bitcoin.pdf에 올린다. 2009년도에 Bitcoin Core 프로그램이 공개되며 비트코인이 처음 발행된다.
https://bitcoin.org/ko/download에서 다운로드 받을 수 있다. (#1, #2, #3)
비트코인 코어는 풀노드를 돌리는 것을 전제로 한 소프트웨어이므로 100GB가 넘는 블록체인 데이터를 다운로드 받아야 제대로 사용 가능하다.[2] 그래서 많은 경우 블록체인을 다운로드 받지 않아도 되는 SPV 노드 클라이언트, 예를 들어 Electrum 혹은 Mycelium 등을 많이 쓴다.

2. 사용 방법


윈도우 10, 0.16.3 버전 기준으로 작성한다.
비트코인 코어 소프트웨어를 깔고 실행시키면 블럭체인을 다운로드받는다. 프루닝[3]을 사용하더라도 한 번 체인을 전부 다운로드 받아서 검증해야 하니 시간이 걸린다. (밤새 켜놓고 자는 것을 추천한다)
2018년 12월 현재 코어 개발진의 권장사양은 100MB/s 이상의 입출력이 가능한 200기가 이상의 하드디스크 여유공간, 2기가 이상의 램, 50킬로바이트/s 이상 속도를 내며 월 200기가 업로드/20기가 다운로드를 수행할 수 있는 인터넷 연결, 그리고 하루 6시간 이상 동작할 수 있는 환경이다. 다만 이는 권장일 뿐이며 설정파일을 조정하면 이보다 훨씬 낮은 사양에서도 코어를 돌릴 수 있다.[4]
다운로드가 완료되면 가장 먼저 할 일은 지갑 암호화 및 wallet.dat 파일 백업이다. '''지갑을 암호화하지 않을 경우 내 컴퓨터 사용 권한이 있는[5] 사람은 누구나 내 비트코인을 사용할 수 있게 된다.''' 설정-지갑 암호화에서 지갑을 암호화할 수 있다. '''여기에 사용된 암호를 기억하지 못하면 영원히 잔고를 잃어버리게 되므로 꼭 기억해두자.''' 비트코인 코어에서는 wallet.dat에 개인키를 저장한다. 그러므로 '''wallet.dat 파일을 잃어버리면 개인키를 분실하는 것이며, 이는 영원히 잔고를 잃어버리게 된다는 말이다. 그러니 wallet.dat 파일은 꼭 백업해두자.'''[6][7] 요약하자면, 안전한 비트코인 잔고 보관을 위해서는 wallet.dat(개인키)의 백업, 그리고 지갑 암호화에 쓰인 비밀번호 기억, 두 가지를 꼭 해야 한다.
비트코인 코어를 실행하면 개요, 보내기, 받기, 거래(거래내역)를 볼 수 있다.
개요에서는 현재 잔고를 볼 수 있다.
  • 사용 가능은 n컨펌 이상이 이루어져 확실하게 블록체인에 포함된 금액을 의미한다. (보통 n=6)
  • 미확정은 n컨펌 미만의 거래내역을 의미한다.
  • 총액은 말 그대로 총액(사용 가능 + 미확정.)
보내기에서는 여러 옵션이 있지만 송금할 대상, 라벨, 금액을 지정하는 것이 중요하다.
  • 송금할 대상: 내가 보내려는 상대의 비트코인 지갑 주소.
  • 라벨: 상대의 주소를 내 주소록에 포함시키고자 할 때 입력하면 된다. 블록체인상에 기록되는 것이 아니라 비트코인 코어 소프트웨어 내부에서만 쓰이는 기능. 참고로 wallet.dat을 백업하면 같이 백업된다.
  • 금액: 말 그대로 얼마를 보낼지를 뜻한다.
참고로 어떤 버튼이나 입력창 등이 뭘 의미하는지 잘 모르겠으면 마우스 포인터를 해당 기능 위에 가만히 올려놓아 보자. 설명 툴팁이 뜰 수 있다.
받기에서는 내가 받을 비트코인 주소를 생성할 수 있다.
참고로 '''여기에 나오는 입력창은 전부 필수가 아닌 선택사항이다.''' 하나도 입력하지 않고 '지불 요청'만 눌러도 된다는 이야기다.
가능하면 거래마다 새로운 주소를 만드는 것이 좋다. 이미 생성해둔 주소에 보내면 되는데 거래마다 새로운 주소를 생성하는 것을 권장하는 이유는 블럭체인의 내용을 누구나 확인할 수 있기 때문이다. 간단히 설명하자면, 만약 당신이 단 하나의 주소를 통해 모든 비트코인 거래를 수행한다면, 사기꾼, 악플러, 경쟁업체, 도박쟁이 친척, 국세청, 그 외 불특정 다수의 사람들이 당신의 비트코인 재무상황을 언제 어디에서라도 인터넷만 연결되어 있으면 완벽하게 파악할 수 있다.
  • 라벨: 보내기와 마찬가지로 코어 소프트웨어 안에서만 사용되는 메모. 재활용 생각이 있을 경우 (예를 들어 특정 물품에 대한 가격) 적어두면 나중에 편하다.
  • 거래액: 이 주소에서 몇 비트코인을 받을 것인지 미리 정할 수 있다.
  • 메시지: 해당 지불주소를 클릭하거나 관련 QR코드를 스캔하면 상대가 볼 수 있는 메시지. 상대가 누구한테 뭐 때문에 지불하는지 확인할 수 있도록 메세지를 적어주는 것이 좋다.
거래에서는 그동안의 거래내역을 볼 수 있다.
비트코인 코어의 설정을 변경하려면 윈도우창(GUI)이 아니라 비트코인 데이터 폴더 내의 bitcoin.conf 파일을 메모장 등으로 수정해줘야 한다. GUI에서도 수정 가능하나 GUI보다는 bitcoin.conf의 설정이 우선한다.
설정파일을 만들어주는 사이트
웬만하면 설정파일 수정 없이 그냥 써도 큰 문제는 없다. 하드디스크 용량이 부족할 경우 pruning, 메모리 용량이 부족할 경우 dbcache, 네트워크 용량이 문제일 경우 maxuploadtarget이나 listen, maxconnection, blocksonly 등의 옵션을 조절할 수 있다.
하드/메모리 용량이 부족한 저사양 PC에서 코어를 돌리는 방법에 대한 간단한 설명

3. 관련 문서


  • Electrum: 비트코인 지갑 소프트웨어

[1] 공식이라지만 비트코인 프로토콜의 구현을 충실히 따르는 것일 뿐 공적으로 인증받거나 한 것은 아니다. 비트코인 qt에서 비트코인 코어로 개명할 때 반발하는 사람들이 있었는데 이런 이유로 그랬던 것이다. 대부분의 노드가 코어를 채용하나 그 외에도 여러 비트코인 노드/지갑 소프트웨어가 존재한다.[2] 예전 버전에서는 송금 등을 하기 위해서 필요하다고 했었지만(#) 이는 사실이 아니다. 정확히 말하면 코어 소프트웨어가 동기화되지 않더라도 내 주소의 개인키와 암호를 알고 있다면 임포트를 통해 내 주소에서 다른 주소로 송금이 가능하며, 동기화가 완료되지 않은 상태에서도 내 주소로 송금을 받는 것이 가능하다. 그러나 코어가 블럭체인과 동기화되지 않은 상태라면 코어 소프트웨어는 현재 지갑(주소)에 잔액이 얼마나 있는지 알 수 없다. 그래서 코어 프로그램 내에서 송금이 불가능하고, 또 다른 사람이 돈을 보내더라도 해당 거래가 기록된 블럭을 반영하기 전까지는 잔액이 정확히 나오지 않는다.[3] 오래된 블럭체인 데이터를 자동으로 삭제하는 기능이다.[4] 하드디스크는 550메가, 램은 약 350메가, 데이터 사용량은 일 150메가(월 4.5기가) 정도.[5] 정확히는 내 개인키에 접근 가능한 사람이다. 개인키는 비트코인 데이터 폴더의 wallet.dat에 저장되며, 만약 암호화를 하지 않았다면 이 파일을 복사해가는 것만으로 누구나 내 지갑을 마음대로 사용 가능하다.[6] 다른 지갑 소프트웨어는 12개 이상의 단어로 된 seed phrase만 기억하면 복원이 가능한 경우도 있으나 비트코인 코어는 그렇지 않다. 코어는 seed phrase를 무작위로 생성하며, 시드 문구를 추출/백업하는 기능을 제공하지 않기 때문이다. 참고1참고2 [7] 예전에는 JBOK(just bunch of different keys) 방식이어서 약 100번의 거래마다 백업하는 것이 추천되었으나 현재는 BIP32로 인해 HD(Hierarchical Deterministic)월렛이 도입되어 그럴 필요는 딱히 없다.