Leo's Garage

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

BlockChain/Mastering Bitcoin

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

LeoBehindK 2018. 8. 12. 22:18
728x90
반응형

Ch.3-2 이어서 이야기하도록 하자.

지난 시간에 우리는 Bitcoin Core를 설치했고 테스트 서버에 접속했다.







지난 번 포스팅에서도 말했지만 우리는 Bitcoin 네트워크를 3가지로 접속할 수 있다. (메인넷, 테스트넷, 로컬)

그 중에서 우리가 접속한 곳은 로컬 네트워크이다. 말 그대로 나의 PC 만을 네트워크 노드로 설정하는 것이다.

*단, 로컬 네트워크에서 테스트 하는 것은 실제 메인넷과 테스트넷에서 돌리는 것과는 차이가 있다. (네트워크 속도 문제)

논외로 이야기하면, DAPP같은 것을 개발할 때에 처음에는 로컬 넷에서 테스트를 진행하면서 코드 상에 문제가 없는지를 판단한다. 그 다음에는 테스트넷에 올린 다음에 네트웍 상에서 잘 돌아가는지 확인을 한다. 마지막으로실제 네트웍 상에 띄운 다음 서비스가 동작을 제대로 하는지 확인한다.

자 이제 우리는 로컬 상의 네트워크에서 Bitcoin Core를 통해 송금을 해보도록 하자.





Creating Blocks


자 처음 서버를 생성하면 기본적으로 마이너 계정으로 접속되게 된다.
따라서 블록을 생성할 수 있는데 명령어는 다음과 같다.



./bitcoin-cli -regtest generate 101



블록을 생성하면 BTC를 보상 받게 된다. 다만 비트코인은 100 블록이 경과하지 않으면 송금을 이용할 수 없기 때문에 101개의 블록을 생성하도록 하자.





명령어가 입력되면, 위와 같이 101행의 해시값이 표시된다. 각 행은 블록 1개를 의미한다. 비트코인 블록은 32바이트의 16진수로 표현된다.






Checking Current Block Number


현재 블록 수를 확인할 수 있다. 정말  101개 인지 확인해보자



./bitcoin-cli -regtest getblockcount





필자의 화면의 경우 202개가 나왔는데 이유는 블로그에 올리기 전에 사전 테스트를 진행할 때, 이미 101개를 생성했기 때문이다. 

이 글을 읽고 따라하시는 분들의 경우에는 101개가 생성되는게 맞다. 







Creating New Account

계좌를 생성한다. 이 계좌는 우리가  BTC를 보낼 계좌이다.




./bitcoin-cli -regtest getnewaddress testuser2






계좌가 생성되었다.



2NEzLaT4Qzao5Ct1k1uaJ9Vi1YgHAPgUD8n 



위 계좌는 송금에 쓰일 계좌이므로 기억하고 있자







Check Balance

현재 잔고를 확인하자




./bitcoin-cli -regtest getbalance




위와 같이 검색하면 마이너 본인의 계좌의 잔고를 확인할 수 있다.





필자의 경우에는 이전에 생성을 자주해서 위와 같이 나오지만 처음 잔고를 확인하는 분들께서는 50 BTC를 확인할 수 있을 것이다.






Transaction

전송을 하기 위해서는 전송 받을 계좌, 금액을 입력해야 한다. 따라서 마이너가 가지고 있는 BTC 중 10 BTC를 위에서 생성한 계좌로 전송하겠다.



./bitcoin-cli -regtest sendtoaddress 2NEzLaT4Qzao5Ct1k1uaJ9Vi1YgHAPgUD8n 10



위와 같이 입력하면 아래와 같은 결과가 나온다.




Transaction을 확인하기 위한 식별번호(txid)가 표시된다.


3a055f25b473f349b5f31bf416e54bea371d443199f90822ca1823af7c97875b 









Check Transaction

미확정 Transaction을 확인하는 방법은 아래와 같다.



./bitcoin-cli -regtest listunspent 0





위와 같이 txid(Transaction ID)가 동일한 값을 확인할 수 있습니다. 내용을보면 10 BTC를 송금하였다는 내용이다. 

하지만 상기 거래는 미확정된 거래이다. 다음을 보면 확인할 수있다,

위에서 우리는 마이너의 계좌 잔고를 확인한 적이 있다. 해당 명령을 입력하면 아래와 같이 나오게 된다.




결과만 보면 수수료만 차감된 것을 확인할 수 있다. 블록체인에서는 거래를발행한 것으로는 송금이 확정되지 않는다. 이후에 채굴을 통해서 이를 확정할 수 있다.









Mining

미확정 거래를 확정 짓기 위해 채굴을 하자.

앞서 한 것과 같이 블록을 생성한다.



./bitcoin-cli -regtest generate 1





실행을 하면 위와 같이 1개 블록이 생성된 것을 확인할 수 있다.










Check Transaction

블록이 생성되었으니 송금이 확정되었는지 확인해보자



./bitcoin-cli -regtest listunspent





위와 같이 컨펌이 1개로 표시된 것을 볼 수 있다. 실제로 메인넷에서는 5개의 블록이 뒤에 더 붙어서 6개의 컨펌이 되어야 검증이 되었다고 판단한다.

마이너의 계좌를 확인해보자




나의 거래 내역의 경우 포스팅 하면서 미확정한 10BTC 이외에도 미확정되었던 거래가 있었던 것 같다

아마 여러분들은 확인하시면 10BTC에 조금의 수수료가 빠진 금액이 남은 것을 확인할 수 있을 것이다. 

우리는 Bitcoin Core를 설치하고 빌드하여 로컬 네트워크 상에서 비트코인 요소인 계좌 생성, 송금, 채굴을 통한 거래확정 등을 시도해보았다. 

Bitcoin-cli를 통해서 다양한 명령어를 구사할 수 있다.

오늘 포스팅은 여기서 마치도록 하겠다.


* Block Chain Core or DAPP 개발관련 모임


https://open.kakao.com/o/gLYr7PU


같이 공부하실 분 모십니다 :) 

개발자가 아니어도 좋습니다. 같이 공부해요!


728x90
반응형
Comments