기본 콘텐츠로 건너뛰기

blockchain 실전

실전편


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)이라 함이더리움 클라이언트 소프트에 포함되어 있음
자바 가상 머신과 마찬가지로 운영체제에 종속되지 않음

댓글

이 블로그의 인기 게시물

블록체인 거래소 모니터링시스템 구축이야기(2/?) - 서버 아키텍처

  코인 거래소 모니터링시스템 구축이야기(2/?) 코인 거래소 모니터링 시스템 구축 (가칭 : 김프멈춰) 서버 구성 사용자가 확인할 서비스 페이지, 데이터 저장소에 대한 서버는 NAS 서버로 운영 일일 Data 크롤링 서버는 Cloud 서버 이용하여 운영 - 서비스페이지 및 데이터 저장소 (Nas 서버) : Docker container ubuntu 20.04 - 일일 크롤링 서버 (Cloud at Cost Cloud 서버) : CentOS 7 서버 아키텍처 서버 아키텍처 레퍼런스 빗썸 : https://apidocs.bithumb.com/ 업비트 : https://docs.upbit.com/ 홍콩 Bitfinex : https://docs.bitfinex.com/docs 몽고 DB 설치 : https://coterie.tistory.com/20 1. 개요 :  https://limdh3325.blogspot.com/2021/04/1.html 2. 서버 아키텍처 :  https://limdh3325.blogspot.com/2021/04/2.html 3. MongoDB 설치 :  https://limdh3325.blogspot.com/2021/04/3.html 4. 데이터 모델링 :  https://limdh3325.blogspot.com/2021/05/4.html 5. MongoDB 저장 :  https://limdh3325.blogspot.com/2021/06/5.html