안녕하세요, 모두의 연구소 블록체인 연구실입니다.
11월 2일 5회차 스터디에서 박인수님이 발표하신 비트코인 노드 자료를 공유합니다.
비트코인 노드란?
- 비트코인 네트워크에 연결된 모든 컴퓨터를 노드라고 정의
- 노드들은 지갑, 블록체인 복사본, 검증엔진, 채굴, P2P 네트워크 전송 기능 등을 가지고 있으며, 좀 더 Light한 기능들로만 구성된 클라이언트도 많이 개발되어 있음 / 참고 : https://en.bitcoin.it/wiki/Clients
- 현재 풀노드 10825개 (11/02 기준) / 참고 : https://coin.dance/nodes
비트코인 노드 종류
- Full Node: 풀 노드는 비트코인 거래 정보(블록체인)를 전부 저장하고 비트코인 사용자들의 지갑을 관리하며 비트코인 네트워크상으로 직접 거래를 만들어 낼 수 있다.
- Lightweight Client: 사용자의 지갑을 저장하긴 하지만 비트코인 거래나 네트워크에 접근하기 위해서는 제 3자가 소유한 서버에 의존한다. 일반적으로 블록체인의 헤더정보만 저장한다.
- Web Client: 웹 브라우저를 통해 접속하며 제3자가 소유한 서버상에서 사용자의 지갑을 저장한다. (ex: 거래소)
- 모바일 비트코인: 스마트폰에서도 풀/라이트웨이트/웹 클라이언트 사용 가능 (풀???)
Full Node?
- 지갑, 블록체인 복사본, 검증엔진, 채굴, P2P 네트워크 전송 기능 등을 가지고 있는 노드
- 풀노드는 블록에 포함된 트랜잭션들과 블록 전체의 정합성을 검증
- 검증을 통과한 블럭만 정당한 블록으로 인정하고, 로컬 데이타베이스를 업데이트하고 다른 노드로 전파
- 블록체인 동기화 과정에 대략 3일의 시간과 130기가의 용량 필요
bitcoin-cli
- RPC(Remote Procedure Call)의 약자로 Bitcoin Core 의 Procedure를 Http Protocol을 이용하여 호출
- API Reference : https://bitcoin.org/en/developer-reference#rpcs
실습(1)
BitcoinCore 설치: https://bitcoin.org/en/bitcoin-core/
Regtest 에서 기동
Testnet : 실제 인터넷상에서 동작하는 테스트 네트워크
Regtest : 로컬 PC 내에서의 테스트 네트워크. 자유롭게 계정을 만들거나 채굴이 가능./bitcoind –regtest (linux)
./Bitcoin-Qt –regtest (mac)비트코인은 보상을 받은후 100블록이 경과하지 않으면 송금 등에 이용할 수 없기 때문에 101개의 블록을 만든다.
./bitcoin-cli –regtest generate 101
실습(2)
- 계좌 생성 ./bitcoin-cli –regtest getnewaddress a
- 잔고 확인 ./bitcoin-cli –regtest getbalance
- 생성한 계좌에 송금하기 ./bitcoin-cli –regtest sendtoaddress 계좌 10
- 트랜잭션 확인 ./bitcoin-cli –regtest listunspent
- 확정된 트랜잭션이 없기 때문에 출력결과는 빈 상태 ./bitcoin-cli –regtest listunspent 0
- 미확정 트랜잭션을 확정하기 위해 채굴 실행 ./bitcoin-cli –regtest generate 1
- 송금 확인 ./bitcoin-cli –regtest getbalance a
PPT 링크는 아래와 같습니다.
https://drive.google.com/drive/u/3/folders/0BycGB_asZKAEZFhaMUpabFJpVG8
감사합니다.