본문 바로가기
공부

블록체인 캠퍼스 190703

by yeaseul912 2019. 7. 4.
728x90

판교 경기도경제과학진흥원에서 진행하는 2019 블록체인 캠퍼스 참여.

>> 교육 포스터

*전문가 과정1 : *

블록체인 플랫폼 분석 - 1


 

▶ 블록체인 동향

 

- 나카코토 사토시 논문이 시초

요약 : 전자 화폐의 순수한 P2P 버전은 금융기관을 거치지 않고도 한쪽에서 다른 쪽으로 직접 보내는 온라인 지불을 가능하게 한다.

=> 중개인 없는 금융거래 플랫폼 개발, P2P상 사기 및 이중지불 문제 해결!

플랫폼 코인(토큰) 비고
아이콘 ICX 한국대표 코인 홈페이지
클레이튼(Klaytn)   카카오톡
리브라(Libra)   페이스북, 자체발행 암호화폐
칼리브라(Calibra)   암호화폐 지갑
컨센시스   유명한 블록체인 회사
모네로 XMR 이용자 프라이버시 보호라는 특징을 악용하여 다크웹에서 주로 쓰임
비트코인 BTC 블록체인 개념, 전송
이더리움   private network, p2p 연결, Dapp 운영, 가스비
EOS   권한관리(키 관리), Dapp 이용자 수수료 무료 C++
스팀잇   커뮤니티 형, 댓글 보상
하이퍼레저   채굴 없음, MSP 관리

그 외 유명한 코인으로 Ripple(XRP), Stellar(XLM) 등..


▶ 비트코인 플랫폼 

 

BitcoinCore란? Github 바로가기

- 비트코인 네트워크를 이용하기 위한 클라이언트 프로그램

- 비트코인 네트워크 접속 및 비트코인 교환, 잔액확인 등의 기능 제공

 

BitCoinCore 프로그램

- bitcoin-qt(GUI) : 일반 사용자 용, full-node와 wallet 기능 제공

- bitcoind(bitcoind-deamon, CLI) : 개발자 용, RPC를 통해 원격 제어할수 있는 full-node기능 제공

- bitcoin-cli(CLI) : 실행중인 bitcoind로 RPC명령어를 보낼 수 있는 프로그램

 

BitcoinCore 및 실습환경 구축

* CLI환경으로 진행 예정

1. os 환경 (클라우드 서버 사용)

root@iottest:/# cat /etc/issue
Ubuntu 16.04.6 LTS \n \l

 

2. 실습 파일 만들기 & bitcoincore 설치

root@iottest:~# cd /
root@iottest:/# sudo mkdir bitcoincore
root@iottest:/# cd bitcoincore
root@iottest:/bitcoincore# sudo mkdir src
root@iottest:/bitcoincore# cd src
root@iottest:/bitcoincore/src# sudo git clone https://github.com/bitcoin/bitcoin.git
Cloning into 'bitcoin'...
remote: Enumerating objects: 2, done.
remote: Counting objects: 100% (2/2), done.
remote: Total 142993 (delta 1), reused 1 (delta 1), pack-reused 142991
Receiving objects: 100% (142993/142993), 127.72 MiB | 20.26 MiB/s, done.
Resolving deltas: 100% (99673/99673), done.
Checking connectivity... done.

 

3. 버전 내리기 (0.17.0 버전으로)

root@iottest:/bitcoincore/src# cd bitcoin
root@iottest:/bitcoincore/src/bitcoin# git reset --hard e1ed37edaedc85b8c3468bd9a726046344036243
HEAD is now at e1ed37e Merge #14157: [0.17] doc: merge upstream release-notes from bitcoin-core/bitcoin-devwiki
root@iottest:/bitcoincore/src/bitcoin# git log -n1
.... Merge #14157: [0.17] doc: merge upstream release-notes from bitcoin-core/bitcoin-devwiki ...

 

4. 필요한 라이브러리&툴 설치

root@iottest:/bitcoincore/src/bitcoin# sudo apt-get update
root@iottest:/bitcoincore/src/bitcoin# sudo apt-get install build-essential automake pkg-config libevent-dev bsdmainutils   //gcc 설치(컴파일러)
root@iottest:/bitcoincore/src/bitcoin# sudo apt-get install libtool autotools-dev autoconf                           //openssh 설치
root@iottest:/bitcoincore/src/bitcoin# sudo apt-get install libssl-dev
root@iottest:/bitcoincore/src/bitcoin# sudo apt-get install libboost-all-dev                                              //Boost 설치
root@iottest:/bitcoincore/src/bitcoin# sudo add-apt-repository ppa:bitcoin/bitcoin                                   //libdb4.8 설치
root@iottest:/bitcoincore/src/bitcoin# sudo apt-get update
root@iottest:/bitcoincore/src/bitcoin# sudo apt-get install libdb4.8-dev
root@iottest:/bitcoincore/src/bitcoin# sudo apt-get install libdb4.8++-dev
root@iottest:/bitcoincore/src/bitcoin# sudo apt-get install libminiupnpc-dev                                          //관련 라이브러리
root@iottest:/bitcoincore/src/bitcoin# sudo apt-get install libqrencode-dev 
root@iottest:/bitcoincore/src/bitcoin# sudo apt-get install libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev protobuf-compiler                                                                                       //GUI 라이브러리 설치

*참고 :  [Linux]gcc란?

 

5. 빌드

root@iottest:/bitcoincore/src/bitcoin# sudo ./autogen.sh
root@iottest:/bitcoincore/src/bitcoin# sudo ./configure                                          // 소스파일에 대한 환경설정
root@iottest:/bitcoincore/src/bitcoin# sudo make                                                 // bitcoincore 빌드 (컴파일) - 오래걸림..
root@iottest:/bitcoincore/src/bitcoin# sudo make install                                        // make를 통해 만들어진 bitcoincore 설치

*참고 : 리눅스 - configure, make, make install 개념

 

BitcoinCore 테스트넷 실습

- testnet: 인터넷상에서 동작하는 테스트 네트워크, 테스트용 BTC사용,

             대량의 블록체인이 존재하기 때문에 처음 시작할 때 모든 데이터 취득

- regtest: 로컬PC내에서의 테스트 네트워크, 계정 생성 및 채굴, 블록체인 초기화도 쉽게 하기 위한 실험용

 

*실행결과로 나오는 해시결과값은 개인마다 다 다릅니다!!*

 

(비트코인 데몬 실행중일 시)

0. 비트코인 데몬 종료

root@iottest:/bitcoincore/src/bitcoin#  ps -aux | grep bitcoind
root      6206  0.0  0.0  14224   964 pts/0    R+   15:37   0:00 grep --color=auto bitcoind
root      9693  0.0  1.8 1016488 73436 ?       Ssl  11:47   0:11 bitcoind -regtest -daemon -deprecatedrpc=generate
root@iottest:/bitcoincore/src/bitcoin# kill -9 9693  //본인의 프로세스 번호 입력 

 

1. 비트코인 테스트 모드로 실행

root@iottest:/bitcoincore/src/bitcoin# bitcoind -regtest -daemon -deprecatedrpc=generate 
Bitcoin server starting

 

2. (새로운 터미널에서) 101개 블록 생성 - 블록이 100개 이상 생기지 않으면 송금 등에 이용할 수 없기 때문

root@iottest:/bitcoincore/src/bitcoin# bitcoin-cli -regtest generate 101
[
  .....
]

 

3. 블록 수 확인

root@iottest:/bitcoincore/src/bitcoin# bitcoin-cli -regtest getblockcount
101

 

4. 계좌 생성

root@iottest:/bitcoincore/src/bitcoin# bitcoin-cli -regtest getnewaddress testuser1
2MvAvSWciBtryEkkWe3LysKxN2TSjzrmQ6G                 // 랜덤한 지갑  값
root@iottest:/bitcoincore/src/bitcoin# bitcoin-cli -regtest getnewaddress testuser2
2MwjgFQENaSAW2C9aVctePe31SwzcWFFWSG            // 랜덤한 지갑 값

 

5. 잔고 확인 - 채굴자가 소유한 BTC

root@iottest:/bitcoincore/src/bitcoin# bitcoin-cli -regtest getbalance  "*" 0
50.00000000

 

6. 송금 - testuser1 에게 송금 (결과 : txid 트랜잭션식별번호)

root@iottest:~/bitcoin# bitcoin-cli -regtest sendtoaddress 2Mu6Kwq6wDrfHgVhNKPcxpA22GEv12L4Gwc 10
a57b88f1b9de3d2752e770af2c9833a75b134da07c818ac6501e8a540c368283
root@iottest:~/bitcoin# bitcoin-cli -regtest sendtoaddress 2Mu6Kwq6wDrfHgVhNKPcxpA22GEv12L4Gwc 20
b5d4734f2398eb48e2764743b173443bbc72d7ac80d8cd77025cbdaa4f9d133f

 

7. 출력결과 (블록생성 전)

root@iottest:~/bitcoin# bitcoin-cli -regtest listunspent
[
]

- 출력 결과는 빈 상태, listunspent는 확정된 트랜잭션을 확인하는 명령.
인수에 0 을 추가해 실행하면 미확정 트랜잭션을 확인 가능

 

root@iottest:~/bitcoin# bitcoin-cli -regtest listunspent 0
[ 
    "txid":..., "vout":..., "address":...., "label":testuser1, "account":testuser1,
] 

 

8. 채굴 - 미확정 트랜잭션을 확정하기 위해 채굴 실행

root@iottest:~/bitcoin# bitcoin-cli -regtest generate 1
[
  "09928e88803e783268e6494fdb7c439a5adb77796c55793fbf3c2112ea9d0d51"
]

 

9. 송금 확인 - 채굴 진행전에는 송금 안됌

root@iottest:~/bitcoin# bitcoin-cli -regtest listunspent
[    
      "txid":..., "vout":..., "address":...., "label":testuser1, "account":testuser1,........
] 
root@iottest:~/bitcoin# bitcoin-cli -regtest getbalance testuser1
30.00000000

 

10. 블록해시 구하기

root@iottest:~/bitcoin# bitcoin-cli -regtest  getblockhash 102
0d75efdca222c2e5483e10d6f1eaf1d9ab20c1f19fabfd723e5a0812012e285a

 

11. 블록 확인

root@iottest:~/bitcoin#
bitcoin-cli -regtest getblock 0d75efdca222c2e5483e10d6f1eaf1d9ab20c1f19fabfd723e5a0812012e285a 
[
    "hash":..., "confirmations":..., "strippedsize":...., "size":...., "weight":....,
    "height":..., "version":..., "versionHex":...., "merkleroot":...., "tx":....,
    "time":..., "mediantime":..., "nonce":...., "bits":...., "difficulty":...., "chainwork":...., "previousblockhash":....,
] 

 

12. 검증해보기

101번째 블록해시를 구하여 블록 확인 후, 101번째 블록의 hash값과 102번째 블록의 previousblockhash 가 일치하면 제대로된 블록인것.. 이렇게 이전해시값을 체인삼아 계속 블록이 늘어난다.

 

참고자료- 본 포스팅은 철저히 실습위주로 작성하였으며 더 자세한 이론 내용은 아래 참조

 - 수업자료

 - 비트코인 코어 실습을 통해 트랜잭션을 이해하고 UTXO를 이해해보자

 - [Dev] Bitcoin core 설치부터 조작까지 

 - bitcoin-cli

 

이상 *^^*

반응형

'공부' 카테고리의 다른 글

MYSQL 명령어 정리(DML)  (0) 2022.07.02
MYSQL 비밀번호 재설정  (0) 2021.09.27
IT 정보  (0) 2021.09.23
[오늘의 issue] 오늘도 버튼이 먹지 않는다!  (0) 2018.02.23
[정리] 개념이 명확하지 않은 단어 개념 정리!  (0) 2018.02.23

댓글