실전편
Bitcoin Core
1. 비트코인과 Bitcoin Core
Bitcoin Core 란?
- 비트코인 클라이언트는 Bitcoin Core를 바탕으로 개발됐으며 공식 Repository 에서 누구나 받아서 이용할 수 있음
bitcoin-qt
|
비트코인의 GUI 클라이언트, 이른바 지갑(Wallet)에 해당
|
bitcoin-daemon
(bitcoind)
|
백엔드에서 동작하는 것을 목적으로 하는 클라이언트, JSON-RPC를 통해 개발자향 API를 제공
|
bitcoin-cli
|
Bitcoind 에 명령어로 지시를 내리는 경우 사용
|
- 비트 코인을 취급하기 위해 아래 3단계를 거쳐야 함
① 지갑 등 클라이언트 응용프로그램의 준비 및 제작
② 비트코인(BTC) 입수. 거래소를 통해 원이나 달러를 BTC로 환전
③ 채굴을 실행하기 위해 과거의 모든 블록체인을 취득
- 비트 코인의 변동폭이 크기 때문에 BTC로 환전할 때 주의가 필요
- 채굴하기 위해 취득해야 할 블록체인의 모든 데이터양은 수십 기가바이트 급이기 때문에 환경을 준비하는데 수 시간 걸림
Bitcoin Core 작동
- Bitcoin Core 설치부터 기동, 환경구축, 송금까지의 조작을 실시해 비트코인 전체의 동작을 확인하는 것을 목적으로 함
환경
- Ubuntu Server 16.04 LTS
- Bitcoin Core version 0.15.1
하드웨어 사양
- CPU : i3 (2.0 GHz) , Mem : 4GB
순서
① Bitcoin Core 설치
② 테스트넷에서 Bitcoin Core 기동
③ Bitcoin Core 계정 생성
④ Bitcoin Core 송금
⑤ Bitcoin Core에서의 채굴
⑥ 트랜잭션과 블록 내용 확인
2. Bitcoin Core 설치부터 기동
Bitcoin Core 설치
- Bitcoin Core 소스코드 및 라이브러리 다운로드
# mkdir src
# cd src
# git clone https://github.com/bitcoin/bitcoin.git
- 패키지 갱신
# apt-get update
- gcc 설치
# apt-get install build-essential automake pkg-config libevent-dev bsdmainutils
- OpenSSL 설치
# apt-get install libtool autotools-dev autoconf
# apt-get install libssl-dev
- Boost 설치
# apt-get install libboost-all-dev
- libdb4.8 설치
# add-apt-repository ppa:bitcoin/bitcoin
# apt-get update
# apt-get install libdb4.8-dev
# apt-get install libdb4.8++-dev
- 관련 라이브러리 설치
# apt-get install libminiupnpc-dev
# apt-get install libqrencode-dev
- GUI 라이브러리 설치
# apt-get install libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev protobuf-compiler
- Bitcoin Core 빌드
# cd bitcoin
# ./autogen.sh
# ./configure
# make
- Bitcoin Core 설치
# make install
테스트넷에서 기동
- Bitcoin Core 기동 : -regtest 옵션을 붙여 테스트 모드로 실행
# bitcoind –regtest -daemon
3. Bitcoin Core 조작
블록 생성
- 비트코인 보상을 받은 후 100블록이 경과하지 않으면 송금 등에 이용할 수 없음
- 송금을 테스트 하기 위해 101개의 블록을 생성
- 블록생성
# bitcoin-cli –regtest generate 101
- 101행의 무작위 영숫자가 표시됨 , 1행은 1블록을 나타냄
블록 수 확인
- 블록 수 확인
# bitcoin-cli –regtest getblockcount
계좌 생성
- 계좌 생성
# bitcoin-cli –regtest getnewaddress user1
- 블록 생성과 마찬가지로 26~35바이트의 무작위 영숫자로 표시
- 표시된 값은 유저에 대해 유일한 값이기 때문에 저장해야 함
잔고 확인
- 잔고확인
# bitcoin-cli –regtest getbalance
- 위에서 블록을 생성한 보상으로 50BTC를 받았기 때문에 계좌에 50BTC가 존재
- 특정 계좌 잔고확인
# bitcoin-cli –regtest getbalance user1
- 방금 생성한 계좌이기 때문에 잔고는 0
송금
- 송금하기 위해 송금처, 송금액을 지정해 트랜잭션을 발행
- 트랜잭션 발행(송금)
# bitcoin-cli –regtest sendtoaddress [송금할계좌] 10
- 트랜잭션 고유 코드 표시댐
- 트랜잭션 확인
# bitcoin-cli –regtest listunspent
- 채굴이 되지 않아 아직 확정된 트랜잭션에 들어가지 않음
- 미확정 트랜잭션 확인
# bitcoin-cli –regtest listunspent 0
- 위에서 송금했을 때 트랜잭션 고유 코드가 표시된 것과 동일한 코드로 확인할 수 있음
- 잔고 확인
# bitcoin-cli –regtest getbalance
- 아직 확정된 트랜잭션이 아니라 송금액은 전달 되지 않았지만 트랜잭션을 만들었으므로 수수료가 먼저 차감된 것을 볼 수 있음
채굴
- 블록체인에서는 채굴에 의해 트랜잭션이 블록에 저장되고, 트랜잭션이 블록에 저장되어야 송금이 확정
- 블록 생성(채;굴)
# bitcoin-cli –regtest generate 1
송금 확인
- 위에서 블록이 새로 생성됐으니 (채굴 완료) 송금이 확정 됐는지 확인
- 트랜잭션 확인
# bitcoin-cli –regtest listunspent
- user1 잔고 확인 ㅏ
# bitcoin-cli –regtest getbalance user1
- 채굴자가 보낸 10BTC가 들어있는 것을 확인할 수 있음
이더리움
1. 이더리움 개요
이더리움이란?
- 블록체인 기술을 기반으로 스마트 계약 기능을 구현하기 위한 분산 컴퓨팅 플랫폼
- 이더리움이 제공하는 이더(Ether)는 비트코인과 마찬가지로 사이버 공간에서 암호화된 가상화폐의 일종으로 거래되고 있음
- C++, 자바, 파이썬, GO 등 주요 프로그래밍 언어를 지원
- Solidity 등의 튜링완전성을 갖춘 확장용 언어를 갖춰 스마트 계약을 쉽고 간단하게 함
- 스마트 계약의 실행 환경은 EVM(Ethereum Virtual Machine)이라 함, 이더리움 클라이언트 소프트에 포함되어 있음
- 자바 가상 머신과 마찬가지로 운영체제에 종속되지 않음
댓글
댓글 쓰기