SlideShare a Scribd company logo
2. 채굴과 채굴 과정
비트코인
2017.11
1
비트코인과 채굴(mining)
비트코인의 구성원(members of bitcoins)
• 자신의 컴퓨팅 파워를 사용하여
블록을 생성
• 생성된 블록 검증비트코인 재단
(Bitcoin Foundation)
비트코인 사용자
(Bitcoin User)
채굴자
(Miner)
채굴 풀
(Mining Pool)
비트코인 커뮤니티
(Bitcoin Community)
• 채굴난이도 증가에 따라 결성된
채굴자들의 협력시스템
• 단체(채굴 풀)을 형성하여 Block
생성 작업 수행
• 비트코인으로 물건을 구매하거나
판매하는 사람
• 비트코인을 전송
• 비트코인의 기술, 비즈니스에
관심있는 사람들
• 비트코인과 관련 산업의 방향성,
기술 등에 대해 토론하고 합의
• 비트코인 프로그램 제작, 전파
• 비트코인을 교육하고 생태계를
구성하는 여건 마련을 위한
비영리기관
비트코인 거래가 이루어지는 절차
<출처: 피넥터, 2017>
비트코인의 획득 방법
5
비트코인을 획득하는 방법에는 다음과 같은 2가지가 있다.
1) 채굴 보상금(reward)
• 블록을 만든 채굴자에게 지급되는 보상금
• 채굴보상금을 받기 위해서는 Block body의 맨 처음에 coinbase transaction을 생성
• 새로 만들어지는 비트코인(조폐, Mintage)
2) 채굴 수수료(transaction fee)
• 블록을 만든 채굴자(miner)에게 지급될 수수료(bitcoin)로 거래자가 수수료를 제시한다
• 수수료 = 해당 블록 내의 Input 금액 – output 금액
• 채굴 수수료는 0이 될 수도 있다.
3) 비트코인 거래소에서 매매
• 비트코인 거래소에서 (보상금과 수수료의 형태로) 기존에 발행된 비트코인을 현금을 주고 삼
 비트코인을 신규로 생성하는 방법은 채굴 보상금뿐!
 수수료와 거래소에서의 매매는 기존에 발행된 비트코인을 사용하는 것
채굴 과정에서
채굴자(miner)
가 얻을 수 있는
비트코인
어떻게 화폐(비트코인)을 발행하는가?
6
화폐의 발행 = 조폐 = Mintage
 채굴 행위를 통해서만 발행
누가 누구에게?
• Bitcoin Core(비트코인 프로그램)이 채굴자에게
어떻게?
• 블록을 발행할 때마다 비트코인 프로그램 자체(coinbase)에서 ‘블록발행 보상금’(Reward)을 채굴자에게
지급하는 방식으로 신규 화폐를 발행(조폐)
• 채굴자가 자신이 만드려는 블록안에(=body의 맨 처음), 보상으로 받을 새로운 비트코인이 “생성”되는 거래를
하나의 거래로써 포함(=coinbase transaction)
✓ ‘블록발행 보상금’(Reward)은 2016년 기준으로 25 bitcoin
✓ 매 ‘21만 블록(약 4년)’을 기준으로 보상금이 반감 : 2009.1 50 btc  2013말 25 btc  2016.7.10 12.5 btc
✓ 발행되는 비트코인의 총량이 2,100만개에 이르면 비트코인의 신규발행은 종료(약 2040년 쯤 마무리)
✓ 더 정확하게는 20,999,999.9769개인데, 블록 당 최소 보상량이 0.00000001비트코인(=1사토시)보다 작을 수 없기 때문
채굴(mining)이란?
7
채굴 = 10분간의 거래내역을 가지고 새로운 Block을 생성하는 것
• 비트코인이 제시하는 목표 난이도(difficulty)에 부합하는 해시값을
찾아내면 새로운 블록이 생성
• 블록을 생성(찾아냄)할 때 마다 보상금(신규 비트코인)과 거래 수수료가
함께 생성됨
• 거래가 확정되려면 작업증명(proof of work) 절차를 거쳐야 하는데, 이
작업은 초당 수십억 번의 연산을 수행해야 하는 고된 작업 (작업증명 =
채굴 = 새로운 블록 생성/확정 = 새 비트코인 발행)
“Mining is the process of spending computing power to
process transactions, secure the network, and keep everyone
in the system synchronized together.”
왜 채굴(mining)하는가?
8
채굴은 아래 2가지 목적을 위해 수행되는 분산 컴퓨팅 프로세스(decentralized computational process)
Confirms transactions in a
trustful manner when enough
computational power(effort)
is devoted to a block.
Creates (issues) new
bitcoins in each block.
채굴, 즉 작업 증명은 어떻게 하는가?
9
• 채굴과정은? 
1.모든 노드가 각 거래마다 독립된 검증 실시
2.어떤 채굴자가 작업증명에 성공하면 다른 채굴자들이
검증하여 검증된 거래들을 새로운 블록에 독립적으로 추가
3.모든 노드들이 새 블록을 독립적으로 검증한 다음 체인에
블록을 연결
4.모든 노드가 작업증명을 통해 나온 최고 누적 연산 체인을
독립적으로 선택
• 그럼 어떻게 채굴 검증을 하는가?
✓ 모두가 같은 장부(=블록체인)을 갖고 있기 때문에 가능
✓ 이 장부를 갖고 있는 사람들(=채굴자)이 서로 맞는지 검증.
즉, 합의 도출(emergent consensus)
✓ 정답을 찾은 채굴자에게 받은 난스를 가지고 자기도
해싱을 한 뒤, 그 결과값이 이전 블록의 난이도 목표보다
작다는 사실 확인
(자세한 내용은 ‘어떻게 채굴하는가’ 참조)
<출처: weusecoins>
채굴의 기술적 목표
10
• 블록 헤더 안에 있는 난이도 목표(target value) 보다 낮은 블록
해시값 이 나올 수 있게 하는 임의값(nonce)을 찾는 것
• 정해진 데이터(거래내역 + 이전 블록의 해시값)와
임의값(nonce)을 합친 해시값이 일정한 수 이하인 nonce 찾기
• 사용하는 해시 알고리즘 : SHA-256 해시함수
다시 말하면,
• 채굴은 블록 헤더를 반복적으로 해싱해서, 해시 결과값이 특정
목표치와 일치할 때까지(=목표보다 낮아질 때까지) 임의값, 즉
nonce 값을 하나씩 하나씩 바꿔가는 과정
해시함수
(SHA-256)
이전블록
해시값
거래내역
Nonce
(32bit)
해시값
Target값
과 비교
검증완료
해시값 첫 부분의
‘0’의 개수보다 많은
‘0’을 가진 해시값
No
(못찾음)
Yes(찾음)
무작위로 대입
[참고] 해시값을 찾는다고?
11
예)해쉬값이 0000으로 시작하는 nonce 찾기
"Hello, world!+(nonce)"  해시값
"Hello, world!0" => 1312af178c253f84028d480a6adc1e25e81caa44c749ec81976192e2ec934c64
"Hello, world!1" => e9afc424b79e4f6ab42d99c81156d3a17228d6e1eef4139be78e948a9332a7d8
...
"Hello, world!4249" => c004190b822f1669cac8dc37e761cb73652e7832fb814565702245cf26ebb9e6
"Hello, world!4250" => 0000c3af42fc31103f1fdc0151fa747ff87349a4714df7cc52ea464e12dcd4e9
 찾아진 nonce(해답) = 4250
해시란(hash)?
• 해싱은 임의의 데이터를 무작위의 고정된 길이의 데이터로 치환하는 것
• SHA256 암호 함수를 사용해서 어떤 텍스트도 16진수의 64자리 문자(32비트)로 치환
• 특정 입력에 대한 해시 결과는 늘 동일하지만, 해싱의 결과값으로 입력값을 찾아내는 것은 불가능
• 목표하는 해시값을 찾기 위해선 입력값을 하나씩 바꿔가며(즉, nonce를 1씩 증가시키며) 반복해서 테스트. 즉,
특정한 값을 얻기 위해 가능한 모든 값을 대입( 이걸 Brute Force라고 함. 일명 단순무식 계산법)
채굴 속도(10분)는 어떻게 통제하는가?
12
• 최초 블록의 생성주기는 네트워크 전파 속도와 보안성 등을 이유로 ’10분’으로 채택
• 그러나 빵빵한 컴퓨팅 파워라면 목표한 해시값을 10분 이내에도 찾아서 블록 생성 가능
• 그래서 ‘난이도(difficulty)’를 도입 : 네트워크의 해시능력의 최근 2주간의 통계를 기준으로 평균 10분에
하나씩 블록이 생성될 수 있도록 설계
• 난이도 조정 Hashcash 방식을 채택하여 구현
: Hashcash 방식의 4가지 요소
① 목표 : 2016개의 블록을 생성하는데에 2주(2016블록*10분=2주)가 소요돼야 함
② 작업방식 : 해싱을 통한 목표값 찾기
③ 난이도 조정방법 : 목표치를 초과/미달하는 부분만큼 목표값(target value)의 난이도가 변경됨
④ 난이도 조정시점 : 매 2016번째 블록마다
예) 만일 2016개의 블록을 생성하는데 2주가 아닌 1주일이 걸렸다면, 목표에 도달하기 위한 필요작업의 50%만으로 이루어진
것이므로, 목표에 도달치 못한 것이다. 따라서 난이도를 2배로 증가시켜서, 기존 1주일의 두 배인 2주가 걸리게 조정하고 목표를
충족시킨다.(또는 이 반대 과정)
목표 난이도는 어디에?
13
• 블록의 header 안에 …
4 bytes
32 bytes
32 bytes
4 bytes (nBits)
4 bytes
4 bytes
요거!
‘목표 난이도’ = ‘이전 블록의 해시값’ ※ 난이도 계산 방법은 https://en.bitcoin.it/wiki/Difficulty 참조
합의, 채굴의 완성
14
• 채굴자(=노드)들이 합의한다는 것은 해당 블록을 새로운 블록으로 인정하고 블록체인에 추가시킨다는 것
• 합의를 하려면 모든 채굴자들이 동일한 규칙에 따라 블록을 생성하고 검증해야 함(예, 블록의 데이터 구조의 문법,
블록의 크기 -10M, merkle tree의 해시값, 개별 거래의 유효성 등등)
• 이게 다 충족되면 채굴을 완성하는 마지막 단계로 체인을 선택
• 왜?
• 합의는 다수결 원칙에 따름. 즉, 각 노드(채굴자)들이 가지고 있는 블록체인의 복사본들이 항상 같은 상태를
유지하는 것이 아니므로 여러 노드 중에서 작업증명을 가장 많이 시행한 노드의 블록체인을 선택해서 거기에
새로운 블록을 추가 ( Greatest cumulative difficulty chain)
채굴자는 어떻게 보상을 받는가?
15
거래
(transaction)
00 BTC
거래 금액
거래 수수료
(Transaction fee)
거래 상대방
(Wallet)
채굴자
(Miner)
채굴
채굴 보상
(Reward)
10분간의
거래 블록 확정
0 BTC
12.5 BTC
블록을 조작하면? – Block Security
16
• 비트코인은 분산, 공개 장부에 저장되니까
누군가가 블록을 조작하여 블록체인에 추가한다면?
즉, 변조된 블록을 생성하여 전파시키는 것에
성공한다면?
• The longest chain wins
- 길이가 가장 긴 블록체인이 무조건 원본
- 자신의 거래 내역을 조작(중복사용)하거나 남의
비트코인을 훔치려면 현재 채굴에 참여하고 있는
컴퓨팅 파워의 과반을 확보해서 빠르게 전파해야 함
- 그러려면 최소 네트워크 상의 절반 이상의
컴퓨팅파워(hashrate) 필요.
2016.7.10 기준 총 해시파워는 19,583,587.6
PetaFLOPS. 그런데 2016년 기준, 세계 최고의
슈퍼컴퓨터인 중국의 Tianhe-2가 33.8 PetaFLOPS
시간이 흘러 블록이 많아질수록 거래의 신뢰도가 높아지고,
거래를 철회하거나 조작하기가 기하급수적으로 어려워짐
<출처: weusecoins>
[참고] 채굴하는 동안 쌓이는 거래는 어떻게 보관할까?
17
• 거래가 발생하면 채굴자가 거래내역을 자신의 Transaction pool(이체 풀)에 보관
• 네트워크로 전송된 거래는 블록체인에 올라가기 전까지는 검증되지 않는다.
• 블록에 넣을 이체 신청내역(transaction)을 ‘우선순위’부터 차례로 정하고 이를 기준으로 목표값 해싱
진행(Proof of Work)
: 거래가 발생한지 얼마나 오래됐는지(거래의 age), 거래 수수료는 얼마인지 등
• 목표값 해싱에 성공하면 블록을 발행
• 블록을 P2P Network를 통해 다른 채굴자들에게 전파
[요약]
18
• 채굴은 10분간의 거래 내역을 모아 새로운 블록을 만드는 것
• 채굴자가 새로운 블록을 만드는데 성공하면 보상금과 거래 수수료를 받음
• 신규 비트코인은 채굴을 통해서 생성됨(채굴 보상금)
• 채굴은 목표 난이도가 제시하는 임의의 해시값을 얻기 위해 nonce를 무작위로 대입하는 과정
• 채굴에 성공했다는 의미는 ‘난이도 목표보다 낮은 해시값을 찾는데 성공‘했다는 것, 즉 작업증명에 성공했다는 것
• 다른 노드(=채굴자)들은 해당 블록에 채굴에 성공한 채굴자가 찾았다는 nonce값을 대입하여 같은 결과가
나오는지를 검증하여 맞으면 그 블록을 거래장부(블록체인)에 추가
어떻게 채굴하는가?(mining)
19
나도 채굴을..?
20
채굴자(miner)의 자격?
• 채굴용 하드웨어를 갖추고 채굴 소프트웨어를 실행할 수 있으면 누구나 비트코인 채굴자
• 채굴 소프트웨어는 P2P 네트워크를 통해 전파되는 거래(transaction)를 받아서 필요한 처리 절차(=작업
증명)을 수행한 후에 거래가 정상적임을 확정
• 혼자 채굴작업을 하든 채굴 풀에 들어서 하든 채굴하기 전에 반드시 보상금과 수수료를 받을 지갑(Wallet)을
먼저 만드는 센스!
채굴을 하려면 이 정도는… Software
21
Bitcoin Mining Software가 왜 중요하냐 하면,
• 채굴 소프트웨어는 P2P 네트워크 상에서 송/수신되는 거래 데이터를 받고/전달하여 처리
• 채굴 장비의 입출 상황을 모니터링
소프트웨어 설명 Window Linux MaC OS
Bitcoin Miner • 사용 편리한 화면, pool mining 지원, 절전 모드, very fast in share submission.
• profit reports 기능 : 기간별 수익 현황 모니터링
• 최신 버전 : Bitcoin Miner 1.27.0.
●
BTCMiner • ZTEX USB-FGPA modules 1.5용 Open Source
• 주요 기능 : flexibility on chosing the highest rate of frequency in valid hashes,
integrated with Bitstream example - Xilinx software or required with license.
• FPGA board 지원 기능이 있어 프로그래밍과 통신할 때 USB를 사용 가능
●
CGMiner • 가장 많이, 보편적으로 사용하는 비트코인 채굴 프로그램으로 원래 코드는 CPU Miner
• 주요 기능 : fan speed 제어, 원격 연결, 작은 데이터베이스를 사용하여 새 블록을 쉽게
파악, multi GPU 지원, CPU Mining 지원
● ●
BFGMiner • CGMiner와 기능이 거의 비슷하나 GPU에 초점을 맞춘 게 아니라는 게 차이
• 주요 기능 : LLVM OpenCL/mesa mining, PCI bus ID reorderring ADL device
● ●
EasyMiner • BFGMiner와 CGMiner의 wrapper 역할을 하는 GUI기반의 채굴 소프트웨어
• 지원 프로토콜 : stratum mining, getwork mining.
• 특징 : 단독 채굴과 연합 채굴 가능, 그래픽 기능과 쉬운 설정
● ●
RPCMiner • 특징 : Mac OS systems과 APIs 결합 ●
채굴을 하려면 이 정도는… Hardware
22
CPU - 1세대
• 초기에는 CPU만을 사용해서 채굴
• 네트워크 안전성과 더 많은 비트코인을 벌기 위해서는 이제 CPU 방식은 한물 간 방식
GPU - 2세대
• 비트코인 출현 1년 반쯤 지나서 그래픽 카드가 비트코인 채굴에 아주 효과적이라는 사실 발견
• 대량의 병렬 처리가 가능한 GPU 덕분에 작업당 더 적을 전력을 사용하고도 채굴능력을 50배에서 100배까지 향상
• nVidia 아키텍처보다는 AMD 아키텍처가 훨씬 우수한 것으로 판명났고, ATI Radeon HD 5870는 최고의 가성비 제품
FPGA(Field Programmable Gate Array) - 3세대
• CPU에서 GPU로 바뀌면서 Field Programmable Gate Array 방식 개발  비트코인 채굴에 특화된 하드웨어들이 출현
• GPU만큼의 성능은 못내지만 전력을 효율적으로 사용할 수 있고 사용하기 쉬운 장점
• 600 MH/s 그래픽 카드가 400w 이상의 전력을 사용하는 반면, FPGA는 826 MH/s에 대해 at 80w의 전력으로 hashrate
• 비트코인 채굴 산업이 탄생하는 기점
ASIC(Application Specific Integrated Circuit) - 4세대
• ASIC은 오직 한 가지 작업만, 비트코인 채굴 작업만 하도록 특화된 칩. 다른 작업을 하도록 변경 불가
• 다른 기술들에 비해 전력 소비를 줄이고도(7배 이하) 해싱 파워를 100배 이상 증가  ASIC 제품의 가장 큰 장점
• 이전 하드웨어들과는 차원이 다른 비트코인 채굴 장비의 ‘끝판 왕‘- 당분간은 따라 올 기술이 없어 보임
채굴(Mining) 유형
23
채굴은 블록체인에 새로운 블록을 추가하는 것으로써,
비트코인이 제시하는 목표 난이도에 맞는 해시값을 찾아내어 동료 채굴자(peer)들의 검증/동의를 받는 과정이다.
채굴 형태는 다음과 같은 2가지가 있다.
1) 단독 채굴(Solo mining)
• 개별 채굴자가 혼자의 힘으로 새로운 블록을 생성하는 것
• 보상(25 bitcoin)을 혼자서 독차지
2) 연합 채굴(Pooled mining)
• 채굴자들이 다른 채굴자들과 자원 Pool을 구성하여 블록 생성을 더 빠르고 자주 할 수 있도록 하는 채굴 방식
• 개별 채굴자의 보상금은 낮지만 블록을 생성할 확률은 높아짐
• 각 채굴자가 기여한 hashing power에 따라서 보상금 배분
단독 채굴(Solo mining)
24
P2P
Network
Block
Broadcasting
Voting
(검증)
bitcoind
Mining
software
Mining
hardware
(ASIC)
새로운 Transactions polling(‘getblocktemplate’)
• Transaction 목록
• Coinbase trx를
보낼 public key
• Block template을
사용하여 block과
block header 생성
• Block header (80
byte)
• 목표 난이도(target
thredhold)
• 목표 난이도에 맞는
Block header
nonce를 찾기 작업
수행  해시값 생성
해시값 발견
해시값 못 발견
새 block header와
merkle root 요청
• block header
• nonceHeader와
block 조합
Blocks
Blocks
Block chain
• RPC를 사용할 수 있는 bitcoin
프로토콜을 구현하는 프로그램
• Headless demon
• JSON-RPC 인터페이스 제공
Block과 Block
header 생성
1 2
4
5
56
3
7
8
10 3
채굴자(Miner)
거래
(transaction)
Wallet9
채굴 보상(reward 또는 transaction fee
Blocks 이전 블록 hash값
연합 채굴(Pooled mining)
25
P2P
Network
Block
Broadcasting
Voting
(검증)
Mining
Pool
Mining
software
Mining
hardware
(ASIC)
새로운 Transactions
Block header
구성할 정보 요청
• Block header 구성
정보 전달
• 목표 난이도(target
threshold)
• Block template을
사용하여 block과
block header 생성
• Block header
(80 byte)
• 목표 난이도(target
threshold)
• 목표 난이도에 맞는
Block header
nonce를 찾기 작업
수행  해시값 생성
해시값 발견
해시값 못 발견
새 block header와
merkle root 요청
• block header
• nonceHeader와
block 조합
Blocks
Shares(검증 요청)
- Header
- Merkle tree root
Block chain
• Pool은 목표 threshold를 bitcoin
난이도 보다 높게 설정
Block과 Block
header 생성
1 2
4
5
56
3
7
8
10 3
채굴자(Miner)
거래
(transaction)
bitcoind
Target
threshold 검증
채굴 보상금
배분
9
채굴 보상
(reward 또는
transaction fee
WalletBlocks
블록 배포(Block Broadcasting)
26
• 블록을 생성한 채굴자가 직접 모든
peer에게 ‘block’ 메시지를 전달
• 어느 peer도 이 새로운 블록을
모른다는 전제
채굴자가 새로운 블록을 완성하면 그것을 다른 채굴자(peer)들에게 전달하는 방법
Unsolicited Block Push Standard Block Relay Direct Headers Announcement
• 채굴자가 Standard relay node
역할을 해서 ‘inv’ 메시지와
inventory를 peer에게 전달
• 메시지를 받은 peer들은,
✓ Blocks-first(BF) peer는 ‘getdata’
메시지를 보내 블록 요청
✓ Header-first(HF) peer는 ‘getheaders’
메시지를 보내 헤더 체인의 최상위
헤더의 해시값을 요청
✓ Simplified Payment Verification(SPV)
client는 ‘getdata’ 메시지를 보내 merkle
block을 요청
• 채굴자는 위의 peer들에게 ‘block’,
‘headers’, ‘merkleblock’ 메시지로
응답
• 중계 노드가 새로운 블록의 전체 헤더
정보를 포함하는 ‘header’ 메시지를
즉시 전송함으로써 ‘getheaders’
메시지와 ‘inv’ 메시지가 오가는 왕복
오버헤드를 피함
• HF peer는 ‘header’ 메시지를 받아서
block header를 검증한 후 전체 block
내용을 요청(‘getdata’)
• HF 노드는 접속 중에 ‘sendheaders’
메시지를 전송하여 ‘inv’ 공지 대신에
‘headers’ 메시지를 달라고 신호를
보낼 수 있음
• Bitcoin Core는 ‘sendheaders’
메시지를 보내는 peer에게는
‘headers’를 보내고, 그렇지 않은
peer에게는 Standard Block Relay를
사용
[참고] 주요 용어
27
Coinbase Transaction
• Miner가 생성하는 블록의 첫 번째 transaction (필수)
• 성공적으로 Block을 생성했을 때 보상을 받을 수 있게 하는 transaction
Target threshold
• Block header의 해시값이 검증되어 block에 정상적으로 포함될 수 있는 기준값
• 채굴 소프트웨어 또는 Pool 소프트웨어가 설정
• nBit로 표현 – 256 bit의 unasigned integer
Share
• 채굴 pool에 속한 채굴자가 block 생성에 기여한 기여도.
• 채굴 하드웨어(ASIC)로부터 많은 유효한 block header를 받기 위해 가능한 해시값의 비율을 검사했음을 증명
Target difficulties (목표 난이도)
• 비트코인에서 설정하는 채굴에 걸리는 시간을 조절하는 난이도 – 해시값의 앞의 ‘0’의 자리수 조정
• 매 2016 블록(약 2주)마다 변경됨 : 2주/10분(블록생성 목표시간) = 14*24*60/10 = 2016
• 새 목표 난이도 = 이전 목표 난이도 * 2016 블록 생성에 걸린 평균 시간 / 2주
P2P 네트워크 또는 네트워크 노드(node)
• 비트코인 시스템의 기능과 요소들을 포함하고 있는 클라이언트 : bitcoin.org의 기본 클라이언트인 BitcoinCore 클라이언트가 설치된 PC
• 기능 : 지갑, 거래장부 복사본, 검증엔진, P2P네트워크 전송 기능 등
참고 자료
28
Bitcoin Developer Guide Documentation
https://bitcoin.org/en/developer-guide#block-chain
비트코인 블록체인 개론
http://www.mobiinside.com/kr/2017/11/07/bitcoinblockchain101/
알기 쉽게 이해하는 비트코인
http://www.leejungmin.org/post/2017/05/30/mastering-bitcoin/
비트코인 기술이론 정리
http://codens.info/m/562
We use coins
https://www.weusecoins.com/

More Related Content

What's hot

Bitcoin
BitcoinBitcoin
Bitcoin
Fayoke banjo
 
인터넷전문은행 Fi-ntechkorea.com
인터넷전문은행  Fi-ntechkorea.com인터넷전문은행  Fi-ntechkorea.com
인터넷전문은행 Fi-ntechkorea.com
Yong Joon Moon
 
[IGC2015] 엔씨소프트 김주용-내가 사랑한 MMO들
[IGC2015] 엔씨소프트 김주용-내가 사랑한 MMO들[IGC2015] 엔씨소프트 김주용-내가 사랑한 MMO들
[IGC2015] 엔씨소프트 김주용-내가 사랑한 MMO들
강 민우
 
딥러닝을 이용한 자연어처리의 연구동향
딥러닝을 이용한 자연어처리의 연구동향딥러닝을 이용한 자연어처리의 연구동향
딥러닝을 이용한 자연어처리의 연구동향
홍배 김
 
[0410 박민근] 기술 면접시 자주 나오는 문제들
[0410 박민근] 기술 면접시 자주 나오는 문제들[0410 박민근] 기술 면접시 자주 나오는 문제들
[0410 박민근] 기술 면접시 자주 나오는 문제들MinGeun Park
 
하이퍼레저 패브릭 데이터 구조
하이퍼레저 패브릭 데이터 구조하이퍼레저 패브릭 데이터 구조
하이퍼레저 패브릭 데이터 구조
Logpresso
 
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012devCAT Studio, NEXON
 
컴퓨터개론04
컴퓨터개론04컴퓨터개론04
컴퓨터개론04
Edward Hwang
 
比特币与区块链
比特币与区块链比特币与区块链
比特币与区块链
haipome
 
Python과 Tensorflow를 활용한 AI Chatbot 개발 및 실무 적용
Python과 Tensorflow를 활용한  AI Chatbot 개발 및 실무 적용Python과 Tensorflow를 활용한  AI Chatbot 개발 및 실무 적용
Python과 Tensorflow를 활용한 AI Chatbot 개발 및 실무 적용
Susang Kim
 
C++20 Coroutine
C++20 CoroutineC++20 Coroutine
C++20 Coroutine
진화 손
 
Blockchain
BlockchainBlockchain
Blockchain
Frank Schwab
 
Introduction to bitcoin
Introduction to bitcoinIntroduction to bitcoin
Introduction to bitcoinWolf McNally
 
NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀
승명 양
 
이승재, 마비노기 듀얼: 분산 데이터베이스 트랜잭션 설계와 구현, NDC2015
이승재, 마비노기 듀얼: 분산 데이터베이스 트랜잭션 설계와 구현, NDC2015이승재, 마비노기 듀얼: 분산 데이터베이스 트랜잭션 설계와 구현, NDC2015
이승재, 마비노기 듀얼: 분산 데이터베이스 트랜잭션 설계와 구현, NDC2015devCAT Studio, NEXON
 
ビットコイン~原理からソースまで~
ビットコイン~原理からソースまで~ビットコイン~原理からソースまで~
ビットコイン~原理からソースまで~
bitbank, Inc. Tokyo, Japan
 
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이  왜 이리 힘드나요?  (Lock-free에서 Transactional Memory까지)Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이  왜 이리 힘드나요?  (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
내훈 정
 
블록체인의 본질과 동작 원리
블록체인의 본질과 동작 원리블록체인의 본질과 동작 원리
블록체인의 본질과 동작 원리
Seungjoo Kim
 
옥트리의 구축
옥트리의 구축옥트리의 구축
옥트리의 구축sj k
 
ブロックチェーンの基本構造
ブロックチェーンの基本構造ブロックチェーンの基本構造
ブロックチェーンの基本構造
Soichiro Takagi
 

What's hot (20)

Bitcoin
BitcoinBitcoin
Bitcoin
 
인터넷전문은행 Fi-ntechkorea.com
인터넷전문은행  Fi-ntechkorea.com인터넷전문은행  Fi-ntechkorea.com
인터넷전문은행 Fi-ntechkorea.com
 
[IGC2015] 엔씨소프트 김주용-내가 사랑한 MMO들
[IGC2015] 엔씨소프트 김주용-내가 사랑한 MMO들[IGC2015] 엔씨소프트 김주용-내가 사랑한 MMO들
[IGC2015] 엔씨소프트 김주용-내가 사랑한 MMO들
 
딥러닝을 이용한 자연어처리의 연구동향
딥러닝을 이용한 자연어처리의 연구동향딥러닝을 이용한 자연어처리의 연구동향
딥러닝을 이용한 자연어처리의 연구동향
 
[0410 박민근] 기술 면접시 자주 나오는 문제들
[0410 박민근] 기술 면접시 자주 나오는 문제들[0410 박민근] 기술 면접시 자주 나오는 문제들
[0410 박민근] 기술 면접시 자주 나오는 문제들
 
하이퍼레저 패브릭 데이터 구조
하이퍼레저 패브릭 데이터 구조하이퍼레저 패브릭 데이터 구조
하이퍼레저 패브릭 데이터 구조
 
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
 
컴퓨터개론04
컴퓨터개론04컴퓨터개론04
컴퓨터개론04
 
比特币与区块链
比特币与区块链比特币与区块链
比特币与区块链
 
Python과 Tensorflow를 활용한 AI Chatbot 개발 및 실무 적용
Python과 Tensorflow를 활용한  AI Chatbot 개발 및 실무 적용Python과 Tensorflow를 활용한  AI Chatbot 개발 및 실무 적용
Python과 Tensorflow를 활용한 AI Chatbot 개발 및 실무 적용
 
C++20 Coroutine
C++20 CoroutineC++20 Coroutine
C++20 Coroutine
 
Blockchain
BlockchainBlockchain
Blockchain
 
Introduction to bitcoin
Introduction to bitcoinIntroduction to bitcoin
Introduction to bitcoin
 
NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀
 
이승재, 마비노기 듀얼: 분산 데이터베이스 트랜잭션 설계와 구현, NDC2015
이승재, 마비노기 듀얼: 분산 데이터베이스 트랜잭션 설계와 구현, NDC2015이승재, 마비노기 듀얼: 분산 데이터베이스 트랜잭션 설계와 구현, NDC2015
이승재, 마비노기 듀얼: 분산 데이터베이스 트랜잭션 설계와 구현, NDC2015
 
ビットコイン~原理からソースまで~
ビットコイン~原理からソースまで~ビットコイン~原理からソースまで~
ビットコイン~原理からソースまで~
 
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이  왜 이리 힘드나요?  (Lock-free에서 Transactional Memory까지)Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이  왜 이리 힘드나요?  (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
 
블록체인의 본질과 동작 원리
블록체인의 본질과 동작 원리블록체인의 본질과 동작 원리
블록체인의 본질과 동작 원리
 
옥트리의 구축
옥트리의 구축옥트리의 구축
옥트리의 구축
 
ブロックチェーンの基本構造
ブロックチェーンの基本構造ブロックチェーンの基本構造
ブロックチェーンの基本構造
 

Similar to 비트코인 채굴과정

비트코인으로 이해하는 블록체인 기술
비트코인으로 이해하는 블록체인 기술비트코인으로 이해하는 블록체인 기술
비트코인으로 이해하는 블록체인 기술
Seong-Bok Lee
 
가상화폐 개념 및 거래 기초개발
가상화폐 개념 및 거래 기초개발가상화폐 개념 및 거래 기초개발
가상화폐 개념 및 거래 기초개발
상욱 송
 
비트코인에 관한 교육자료 입니다.
비트코인에 관한 교육자료 입니다.비트코인에 관한 교육자료 입니다.
비트코인에 관한 교육자료 입니다.
Sung Wan Yoon
 
Blockchain Basic Concept Theory (Beginner Version) / 초보자를 위한 블록체인 기초 개념 이론
Blockchain Basic Concept Theory (Beginner Version) / 초보자를 위한 블록체인 기초 개념 이론Blockchain Basic Concept Theory (Beginner Version) / 초보자를 위한 블록체인 기초 개념 이론
Blockchain Basic Concept Theory (Beginner Version) / 초보자를 위한 블록체인 기초 개념 이론
Minwoo Kim
 
Introblockchaininfra 180806105137
Introblockchaininfra 180806105137Introblockchaininfra 180806105137
Introblockchaininfra 180806105137
Jong-Ki Lee
 
가상화폐와 블록체인 기술 Cryptocurrency & Blockchain Technology (KOR ver.)
가상화폐와 블록체인 기술 Cryptocurrency & Blockchain Technology (KOR ver.)가상화폐와 블록체인 기술 Cryptocurrency & Blockchain Technology (KOR ver.)
가상화폐와 블록체인 기술 Cryptocurrency & Blockchain Technology (KOR ver.)
경록 박
 
About the Blockchain_imcloud
About the Blockchain_imcloudAbout the Blockchain_imcloud
About the Blockchain_imcloud
imcloud
 
블록체인 개요
블록체인 개요블록체인 개요
블록체인 개요
Jongseok Choi
 
Bitcoin presantation add part2
Bitcoin presantation add part2Bitcoin presantation add part2
Bitcoin presantation add part2
헌진 김
 
비트코인 개인간 전자화폐시스템 요약 설명
비트코인 개인간 전자화폐시스템 요약 설명비트코인 개인간 전자화폐시스템 요약 설명
비트코인 개인간 전자화폐시스템 요약 설명
Seong-Bok Lee
 
블록체인과 암호화폐 그리고 악성코드
블록체인과 암호화폐 그리고 악성코드블록체인과 암호화폐 그리고 악성코드
블록체인과 암호화폐 그리고 악성코드
Jeong-woo Park
 
Blockchain 1st bitcoin_core
Blockchain 1st bitcoin_coreBlockchain 1st bitcoin_core
Blockchain 1st bitcoin_core
ihpark92
 
블록체인 이슈와 전망 New db
블록체인 이슈와 전망 New db블록체인 이슈와 전망 New db
블록체인 이슈와 전망 New db
HongSuk Seo
 
블록 체인 기술 원리, 이용 현황, 전망과 활용 분야.
블록 체인 기술 원리,  이용 현황, 전망과 활용 분야. 블록 체인 기술 원리,  이용 현황, 전망과 활용 분야.
블록 체인 기술 원리, 이용 현황, 전망과 활용 분야.
JaeGon Lim
 
Bitcoin 2.0(blockchain technology 2)
Bitcoin 2.0(blockchain technology 2)Bitcoin 2.0(blockchain technology 2)
Bitcoin 2.0(blockchain technology 2)
Wooseung Kim
 
코어 이더리움
코어 이더리움 코어 이더리움
코어 이더리움
Jay JH Park
 
비트코인과 블록체인 핵심개념정리
비트코인과 블록체인 핵심개념정리비트코인과 블록체인 핵심개념정리
비트코인과 블록체인 핵심개념정리
HANSUK KIM
 
Bitcoin Basics Part4
Bitcoin Basics Part4Bitcoin Basics Part4
Bitcoin Basics Part4
Soobok Jin
 
블록체인 한 번에 이해하기
블록체인 한 번에 이해하기블록체인 한 번에 이해하기
블록체인 한 번에 이해하기
Myung Woon Oh
 

Similar to 비트코인 채굴과정 (20)

비트코인으로 이해하는 블록체인 기술
비트코인으로 이해하는 블록체인 기술비트코인으로 이해하는 블록체인 기술
비트코인으로 이해하는 블록체인 기술
 
가상화폐 개념 및 거래 기초개발
가상화폐 개념 및 거래 기초개발가상화폐 개념 및 거래 기초개발
가상화폐 개념 및 거래 기초개발
 
비트코인에 관한 교육자료 입니다.
비트코인에 관한 교육자료 입니다.비트코인에 관한 교육자료 입니다.
비트코인에 관한 교육자료 입니다.
 
Blockchain Basic Concept Theory (Beginner Version) / 초보자를 위한 블록체인 기초 개념 이론
Blockchain Basic Concept Theory (Beginner Version) / 초보자를 위한 블록체인 기초 개념 이론Blockchain Basic Concept Theory (Beginner Version) / 초보자를 위한 블록체인 기초 개념 이론
Blockchain Basic Concept Theory (Beginner Version) / 초보자를 위한 블록체인 기초 개념 이론
 
Introblockchaininfra 180806105137
Introblockchaininfra 180806105137Introblockchaininfra 180806105137
Introblockchaininfra 180806105137
 
가상화폐와 블록체인 기술 Cryptocurrency & Blockchain Technology (KOR ver.)
가상화폐와 블록체인 기술 Cryptocurrency & Blockchain Technology (KOR ver.)가상화폐와 블록체인 기술 Cryptocurrency & Blockchain Technology (KOR ver.)
가상화폐와 블록체인 기술 Cryptocurrency & Blockchain Technology (KOR ver.)
 
About the Blockchain_imcloud
About the Blockchain_imcloudAbout the Blockchain_imcloud
About the Blockchain_imcloud
 
블록체인 개요
블록체인 개요블록체인 개요
블록체인 개요
 
Bitcoin presantation add part2
Bitcoin presantation add part2Bitcoin presantation add part2
Bitcoin presantation add part2
 
비트코인 개인간 전자화폐시스템 요약 설명
비트코인 개인간 전자화폐시스템 요약 설명비트코인 개인간 전자화폐시스템 요약 설명
비트코인 개인간 전자화폐시스템 요약 설명
 
블록체인과 암호화폐 그리고 악성코드
블록체인과 암호화폐 그리고 악성코드블록체인과 암호화폐 그리고 악성코드
블록체인과 암호화폐 그리고 악성코드
 
Blockchain 1st bitcoin_core
Blockchain 1st bitcoin_coreBlockchain 1st bitcoin_core
Blockchain 1st bitcoin_core
 
블록체인 이슈와 전망 New db
블록체인 이슈와 전망 New db블록체인 이슈와 전망 New db
블록체인 이슈와 전망 New db
 
블록 체인 기술 원리, 이용 현황, 전망과 활용 분야.
블록 체인 기술 원리,  이용 현황, 전망과 활용 분야. 블록 체인 기술 원리,  이용 현황, 전망과 활용 분야.
블록 체인 기술 원리, 이용 현황, 전망과 활용 분야.
 
Bitcoin 2.0(blockchain technology 2)
Bitcoin 2.0(blockchain technology 2)Bitcoin 2.0(blockchain technology 2)
Bitcoin 2.0(blockchain technology 2)
 
코어 이더리움
코어 이더리움 코어 이더리움
코어 이더리움
 
비트코인과 블록체인 핵심개념정리
비트코인과 블록체인 핵심개념정리비트코인과 블록체인 핵심개념정리
비트코인과 블록체인 핵심개념정리
 
Bitcoin Basics Part4
Bitcoin Basics Part4Bitcoin Basics Part4
Bitcoin Basics Part4
 
블록체인 한 번에 이해하기
블록체인 한 번에 이해하기블록체인 한 번에 이해하기
블록체인 한 번에 이해하기
 
Bitcoin
BitcoinBitcoin
Bitcoin
 

More from Seong-Bok Lee

소화설비_수원과 소화약제량.pdf
소화설비_수원과 소화약제량.pdf소화설비_수원과 소화약제량.pdf
소화설비_수원과 소화약제량.pdf
Seong-Bok Lee
 
소화설비_작동순서.pdf
소화설비_작동순서.pdf소화설비_작동순서.pdf
소화설비_작동순서.pdf
Seong-Bok Lee
 
소화설비_계통도.pdf
소화설비_계통도.pdf소화설비_계통도.pdf
소화설비_계통도.pdf
Seong-Bok Lee
 
정보공학(IE) 방법론.pptx
정보공학(IE) 방법론.pptx정보공학(IE) 방법론.pptx
정보공학(IE) 방법론.pptx
Seong-Bok Lee
 
CBD 개발방법론.pptx
CBD 개발방법론.pptxCBD 개발방법론.pptx
CBD 개발방법론.pptx
Seong-Bok Lee
 
Mapping 절차와 방법.pptx
Mapping 절차와 방법.pptxMapping 절차와 방법.pptx
Mapping 절차와 방법.pptx
Seong-Bok Lee
 
To-Be 설계 절차와 방법.pptx
To-Be 설계 절차와 방법.pptxTo-Be 설계 절차와 방법.pptx
To-Be 설계 절차와 방법.pptx
Seong-Bok Lee
 
As-Is 분석 절차와 방법.pptx
As-Is 분석 절차와 방법.pptxAs-Is 분석 절차와 방법.pptx
As-Is 분석 절차와 방법.pptx
Seong-Bok Lee
 
ERP프로젝트 중요산출물 ERD.pptx
ERP프로젝트 중요산출물 ERD.pptxERP프로젝트 중요산출물 ERD.pptx
ERP프로젝트 중요산출물 ERD.pptx
Seong-Bok Lee
 
ERP 프로젝트 수행방법론-SAP_v1.2.pptx
ERP 프로젝트 수행방법론-SAP_v1.2.pptxERP 프로젝트 수행방법론-SAP_v1.2.pptx
ERP 프로젝트 수행방법론-SAP_v1.2.pptx
Seong-Bok Lee
 
금융It시스템의 이해 2편
금융It시스템의 이해 2편금융It시스템의 이해 2편
금융It시스템의 이해 2편
Seong-Bok Lee
 
금융It시스템의 이해 1편 202201
금융It시스템의 이해 1편 202201금융It시스템의 이해 1편 202201
금융It시스템의 이해 1편 202201
Seong-Bok Lee
 
블록체인적용사례-해운물류
블록체인적용사례-해운물류블록체인적용사례-해운물류
블록체인적용사례-해운물류
Seong-Bok Lee
 
HR Analytics - 퇴직가능성예측모델
HR Analytics - 퇴직가능성예측모델HR Analytics - 퇴직가능성예측모델
HR Analytics - 퇴직가능성예측모델
Seong-Bok Lee
 
통계 기초 용어1
통계 기초 용어1통계 기초 용어1
통계 기초 용어1
Seong-Bok Lee
 
Intro to hpe helion stackato_paa_s
Intro to hpe helion stackato_paa_sIntro to hpe helion stackato_paa_s
Intro to hpe helion stackato_paa_s
Seong-Bok Lee
 
Cloud migration pattern[한글]
Cloud migration pattern[한글]Cloud migration pattern[한글]
Cloud migration pattern[한글]
Seong-Bok Lee
 
Cloud migration pattern using microservices
Cloud migration pattern using microservicesCloud migration pattern using microservices
Cloud migration pattern using microservices
Seong-Bok Lee
 

More from Seong-Bok Lee (18)

소화설비_수원과 소화약제량.pdf
소화설비_수원과 소화약제량.pdf소화설비_수원과 소화약제량.pdf
소화설비_수원과 소화약제량.pdf
 
소화설비_작동순서.pdf
소화설비_작동순서.pdf소화설비_작동순서.pdf
소화설비_작동순서.pdf
 
소화설비_계통도.pdf
소화설비_계통도.pdf소화설비_계통도.pdf
소화설비_계통도.pdf
 
정보공학(IE) 방법론.pptx
정보공학(IE) 방법론.pptx정보공학(IE) 방법론.pptx
정보공학(IE) 방법론.pptx
 
CBD 개발방법론.pptx
CBD 개발방법론.pptxCBD 개발방법론.pptx
CBD 개발방법론.pptx
 
Mapping 절차와 방법.pptx
Mapping 절차와 방법.pptxMapping 절차와 방법.pptx
Mapping 절차와 방법.pptx
 
To-Be 설계 절차와 방법.pptx
To-Be 설계 절차와 방법.pptxTo-Be 설계 절차와 방법.pptx
To-Be 설계 절차와 방법.pptx
 
As-Is 분석 절차와 방법.pptx
As-Is 분석 절차와 방법.pptxAs-Is 분석 절차와 방법.pptx
As-Is 분석 절차와 방법.pptx
 
ERP프로젝트 중요산출물 ERD.pptx
ERP프로젝트 중요산출물 ERD.pptxERP프로젝트 중요산출물 ERD.pptx
ERP프로젝트 중요산출물 ERD.pptx
 
ERP 프로젝트 수행방법론-SAP_v1.2.pptx
ERP 프로젝트 수행방법론-SAP_v1.2.pptxERP 프로젝트 수행방법론-SAP_v1.2.pptx
ERP 프로젝트 수행방법론-SAP_v1.2.pptx
 
금융It시스템의 이해 2편
금융It시스템의 이해 2편금융It시스템의 이해 2편
금융It시스템의 이해 2편
 
금융It시스템의 이해 1편 202201
금융It시스템의 이해 1편 202201금융It시스템의 이해 1편 202201
금융It시스템의 이해 1편 202201
 
블록체인적용사례-해운물류
블록체인적용사례-해운물류블록체인적용사례-해운물류
블록체인적용사례-해운물류
 
HR Analytics - 퇴직가능성예측모델
HR Analytics - 퇴직가능성예측모델HR Analytics - 퇴직가능성예측모델
HR Analytics - 퇴직가능성예측모델
 
통계 기초 용어1
통계 기초 용어1통계 기초 용어1
통계 기초 용어1
 
Intro to hpe helion stackato_paa_s
Intro to hpe helion stackato_paa_sIntro to hpe helion stackato_paa_s
Intro to hpe helion stackato_paa_s
 
Cloud migration pattern[한글]
Cloud migration pattern[한글]Cloud migration pattern[한글]
Cloud migration pattern[한글]
 
Cloud migration pattern using microservices
Cloud migration pattern using microservicesCloud migration pattern using microservices
Cloud migration pattern using microservices
 

비트코인 채굴과정

  • 1. 2. 채굴과 채굴 과정 비트코인 2017.11 1
  • 3. 비트코인의 구성원(members of bitcoins) • 자신의 컴퓨팅 파워를 사용하여 블록을 생성 • 생성된 블록 검증비트코인 재단 (Bitcoin Foundation) 비트코인 사용자 (Bitcoin User) 채굴자 (Miner) 채굴 풀 (Mining Pool) 비트코인 커뮤니티 (Bitcoin Community) • 채굴난이도 증가에 따라 결성된 채굴자들의 협력시스템 • 단체(채굴 풀)을 형성하여 Block 생성 작업 수행 • 비트코인으로 물건을 구매하거나 판매하는 사람 • 비트코인을 전송 • 비트코인의 기술, 비즈니스에 관심있는 사람들 • 비트코인과 관련 산업의 방향성, 기술 등에 대해 토론하고 합의 • 비트코인 프로그램 제작, 전파 • 비트코인을 교육하고 생태계를 구성하는 여건 마련을 위한 비영리기관
  • 4. 비트코인 거래가 이루어지는 절차 <출처: 피넥터, 2017>
  • 5. 비트코인의 획득 방법 5 비트코인을 획득하는 방법에는 다음과 같은 2가지가 있다. 1) 채굴 보상금(reward) • 블록을 만든 채굴자에게 지급되는 보상금 • 채굴보상금을 받기 위해서는 Block body의 맨 처음에 coinbase transaction을 생성 • 새로 만들어지는 비트코인(조폐, Mintage) 2) 채굴 수수료(transaction fee) • 블록을 만든 채굴자(miner)에게 지급될 수수료(bitcoin)로 거래자가 수수료를 제시한다 • 수수료 = 해당 블록 내의 Input 금액 – output 금액 • 채굴 수수료는 0이 될 수도 있다. 3) 비트코인 거래소에서 매매 • 비트코인 거래소에서 (보상금과 수수료의 형태로) 기존에 발행된 비트코인을 현금을 주고 삼  비트코인을 신규로 생성하는 방법은 채굴 보상금뿐!  수수료와 거래소에서의 매매는 기존에 발행된 비트코인을 사용하는 것 채굴 과정에서 채굴자(miner) 가 얻을 수 있는 비트코인
  • 6. 어떻게 화폐(비트코인)을 발행하는가? 6 화폐의 발행 = 조폐 = Mintage  채굴 행위를 통해서만 발행 누가 누구에게? • Bitcoin Core(비트코인 프로그램)이 채굴자에게 어떻게? • 블록을 발행할 때마다 비트코인 프로그램 자체(coinbase)에서 ‘블록발행 보상금’(Reward)을 채굴자에게 지급하는 방식으로 신규 화폐를 발행(조폐) • 채굴자가 자신이 만드려는 블록안에(=body의 맨 처음), 보상으로 받을 새로운 비트코인이 “생성”되는 거래를 하나의 거래로써 포함(=coinbase transaction) ✓ ‘블록발행 보상금’(Reward)은 2016년 기준으로 25 bitcoin ✓ 매 ‘21만 블록(약 4년)’을 기준으로 보상금이 반감 : 2009.1 50 btc  2013말 25 btc  2016.7.10 12.5 btc ✓ 발행되는 비트코인의 총량이 2,100만개에 이르면 비트코인의 신규발행은 종료(약 2040년 쯤 마무리) ✓ 더 정확하게는 20,999,999.9769개인데, 블록 당 최소 보상량이 0.00000001비트코인(=1사토시)보다 작을 수 없기 때문
  • 7. 채굴(mining)이란? 7 채굴 = 10분간의 거래내역을 가지고 새로운 Block을 생성하는 것 • 비트코인이 제시하는 목표 난이도(difficulty)에 부합하는 해시값을 찾아내면 새로운 블록이 생성 • 블록을 생성(찾아냄)할 때 마다 보상금(신규 비트코인)과 거래 수수료가 함께 생성됨 • 거래가 확정되려면 작업증명(proof of work) 절차를 거쳐야 하는데, 이 작업은 초당 수십억 번의 연산을 수행해야 하는 고된 작업 (작업증명 = 채굴 = 새로운 블록 생성/확정 = 새 비트코인 발행) “Mining is the process of spending computing power to process transactions, secure the network, and keep everyone in the system synchronized together.”
  • 8. 왜 채굴(mining)하는가? 8 채굴은 아래 2가지 목적을 위해 수행되는 분산 컴퓨팅 프로세스(decentralized computational process) Confirms transactions in a trustful manner when enough computational power(effort) is devoted to a block. Creates (issues) new bitcoins in each block.
  • 9. 채굴, 즉 작업 증명은 어떻게 하는가? 9 • 채굴과정은?  1.모든 노드가 각 거래마다 독립된 검증 실시 2.어떤 채굴자가 작업증명에 성공하면 다른 채굴자들이 검증하여 검증된 거래들을 새로운 블록에 독립적으로 추가 3.모든 노드들이 새 블록을 독립적으로 검증한 다음 체인에 블록을 연결 4.모든 노드가 작업증명을 통해 나온 최고 누적 연산 체인을 독립적으로 선택 • 그럼 어떻게 채굴 검증을 하는가? ✓ 모두가 같은 장부(=블록체인)을 갖고 있기 때문에 가능 ✓ 이 장부를 갖고 있는 사람들(=채굴자)이 서로 맞는지 검증. 즉, 합의 도출(emergent consensus) ✓ 정답을 찾은 채굴자에게 받은 난스를 가지고 자기도 해싱을 한 뒤, 그 결과값이 이전 블록의 난이도 목표보다 작다는 사실 확인 (자세한 내용은 ‘어떻게 채굴하는가’ 참조) <출처: weusecoins>
  • 10. 채굴의 기술적 목표 10 • 블록 헤더 안에 있는 난이도 목표(target value) 보다 낮은 블록 해시값 이 나올 수 있게 하는 임의값(nonce)을 찾는 것 • 정해진 데이터(거래내역 + 이전 블록의 해시값)와 임의값(nonce)을 합친 해시값이 일정한 수 이하인 nonce 찾기 • 사용하는 해시 알고리즘 : SHA-256 해시함수 다시 말하면, • 채굴은 블록 헤더를 반복적으로 해싱해서, 해시 결과값이 특정 목표치와 일치할 때까지(=목표보다 낮아질 때까지) 임의값, 즉 nonce 값을 하나씩 하나씩 바꿔가는 과정 해시함수 (SHA-256) 이전블록 해시값 거래내역 Nonce (32bit) 해시값 Target값 과 비교 검증완료 해시값 첫 부분의 ‘0’의 개수보다 많은 ‘0’을 가진 해시값 No (못찾음) Yes(찾음) 무작위로 대입
  • 11. [참고] 해시값을 찾는다고? 11 예)해쉬값이 0000으로 시작하는 nonce 찾기 "Hello, world!+(nonce)"  해시값 "Hello, world!0" => 1312af178c253f84028d480a6adc1e25e81caa44c749ec81976192e2ec934c64 "Hello, world!1" => e9afc424b79e4f6ab42d99c81156d3a17228d6e1eef4139be78e948a9332a7d8 ... "Hello, world!4249" => c004190b822f1669cac8dc37e761cb73652e7832fb814565702245cf26ebb9e6 "Hello, world!4250" => 0000c3af42fc31103f1fdc0151fa747ff87349a4714df7cc52ea464e12dcd4e9  찾아진 nonce(해답) = 4250 해시란(hash)? • 해싱은 임의의 데이터를 무작위의 고정된 길이의 데이터로 치환하는 것 • SHA256 암호 함수를 사용해서 어떤 텍스트도 16진수의 64자리 문자(32비트)로 치환 • 특정 입력에 대한 해시 결과는 늘 동일하지만, 해싱의 결과값으로 입력값을 찾아내는 것은 불가능 • 목표하는 해시값을 찾기 위해선 입력값을 하나씩 바꿔가며(즉, nonce를 1씩 증가시키며) 반복해서 테스트. 즉, 특정한 값을 얻기 위해 가능한 모든 값을 대입( 이걸 Brute Force라고 함. 일명 단순무식 계산법)
  • 12. 채굴 속도(10분)는 어떻게 통제하는가? 12 • 최초 블록의 생성주기는 네트워크 전파 속도와 보안성 등을 이유로 ’10분’으로 채택 • 그러나 빵빵한 컴퓨팅 파워라면 목표한 해시값을 10분 이내에도 찾아서 블록 생성 가능 • 그래서 ‘난이도(difficulty)’를 도입 : 네트워크의 해시능력의 최근 2주간의 통계를 기준으로 평균 10분에 하나씩 블록이 생성될 수 있도록 설계 • 난이도 조정 Hashcash 방식을 채택하여 구현 : Hashcash 방식의 4가지 요소 ① 목표 : 2016개의 블록을 생성하는데에 2주(2016블록*10분=2주)가 소요돼야 함 ② 작업방식 : 해싱을 통한 목표값 찾기 ③ 난이도 조정방법 : 목표치를 초과/미달하는 부분만큼 목표값(target value)의 난이도가 변경됨 ④ 난이도 조정시점 : 매 2016번째 블록마다 예) 만일 2016개의 블록을 생성하는데 2주가 아닌 1주일이 걸렸다면, 목표에 도달하기 위한 필요작업의 50%만으로 이루어진 것이므로, 목표에 도달치 못한 것이다. 따라서 난이도를 2배로 증가시켜서, 기존 1주일의 두 배인 2주가 걸리게 조정하고 목표를 충족시킨다.(또는 이 반대 과정)
  • 13. 목표 난이도는 어디에? 13 • 블록의 header 안에 … 4 bytes 32 bytes 32 bytes 4 bytes (nBits) 4 bytes 4 bytes 요거! ‘목표 난이도’ = ‘이전 블록의 해시값’ ※ 난이도 계산 방법은 https://en.bitcoin.it/wiki/Difficulty 참조
  • 14. 합의, 채굴의 완성 14 • 채굴자(=노드)들이 합의한다는 것은 해당 블록을 새로운 블록으로 인정하고 블록체인에 추가시킨다는 것 • 합의를 하려면 모든 채굴자들이 동일한 규칙에 따라 블록을 생성하고 검증해야 함(예, 블록의 데이터 구조의 문법, 블록의 크기 -10M, merkle tree의 해시값, 개별 거래의 유효성 등등) • 이게 다 충족되면 채굴을 완성하는 마지막 단계로 체인을 선택 • 왜? • 합의는 다수결 원칙에 따름. 즉, 각 노드(채굴자)들이 가지고 있는 블록체인의 복사본들이 항상 같은 상태를 유지하는 것이 아니므로 여러 노드 중에서 작업증명을 가장 많이 시행한 노드의 블록체인을 선택해서 거기에 새로운 블록을 추가 ( Greatest cumulative difficulty chain)
  • 15. 채굴자는 어떻게 보상을 받는가? 15 거래 (transaction) 00 BTC 거래 금액 거래 수수료 (Transaction fee) 거래 상대방 (Wallet) 채굴자 (Miner) 채굴 채굴 보상 (Reward) 10분간의 거래 블록 확정 0 BTC 12.5 BTC
  • 16. 블록을 조작하면? – Block Security 16 • 비트코인은 분산, 공개 장부에 저장되니까 누군가가 블록을 조작하여 블록체인에 추가한다면? 즉, 변조된 블록을 생성하여 전파시키는 것에 성공한다면? • The longest chain wins - 길이가 가장 긴 블록체인이 무조건 원본 - 자신의 거래 내역을 조작(중복사용)하거나 남의 비트코인을 훔치려면 현재 채굴에 참여하고 있는 컴퓨팅 파워의 과반을 확보해서 빠르게 전파해야 함 - 그러려면 최소 네트워크 상의 절반 이상의 컴퓨팅파워(hashrate) 필요. 2016.7.10 기준 총 해시파워는 19,583,587.6 PetaFLOPS. 그런데 2016년 기준, 세계 최고의 슈퍼컴퓨터인 중국의 Tianhe-2가 33.8 PetaFLOPS 시간이 흘러 블록이 많아질수록 거래의 신뢰도가 높아지고, 거래를 철회하거나 조작하기가 기하급수적으로 어려워짐 <출처: weusecoins>
  • 17. [참고] 채굴하는 동안 쌓이는 거래는 어떻게 보관할까? 17 • 거래가 발생하면 채굴자가 거래내역을 자신의 Transaction pool(이체 풀)에 보관 • 네트워크로 전송된 거래는 블록체인에 올라가기 전까지는 검증되지 않는다. • 블록에 넣을 이체 신청내역(transaction)을 ‘우선순위’부터 차례로 정하고 이를 기준으로 목표값 해싱 진행(Proof of Work) : 거래가 발생한지 얼마나 오래됐는지(거래의 age), 거래 수수료는 얼마인지 등 • 목표값 해싱에 성공하면 블록을 발행 • 블록을 P2P Network를 통해 다른 채굴자들에게 전파
  • 18. [요약] 18 • 채굴은 10분간의 거래 내역을 모아 새로운 블록을 만드는 것 • 채굴자가 새로운 블록을 만드는데 성공하면 보상금과 거래 수수료를 받음 • 신규 비트코인은 채굴을 통해서 생성됨(채굴 보상금) • 채굴은 목표 난이도가 제시하는 임의의 해시값을 얻기 위해 nonce를 무작위로 대입하는 과정 • 채굴에 성공했다는 의미는 ‘난이도 목표보다 낮은 해시값을 찾는데 성공‘했다는 것, 즉 작업증명에 성공했다는 것 • 다른 노드(=채굴자)들은 해당 블록에 채굴에 성공한 채굴자가 찾았다는 nonce값을 대입하여 같은 결과가 나오는지를 검증하여 맞으면 그 블록을 거래장부(블록체인)에 추가
  • 20. 나도 채굴을..? 20 채굴자(miner)의 자격? • 채굴용 하드웨어를 갖추고 채굴 소프트웨어를 실행할 수 있으면 누구나 비트코인 채굴자 • 채굴 소프트웨어는 P2P 네트워크를 통해 전파되는 거래(transaction)를 받아서 필요한 처리 절차(=작업 증명)을 수행한 후에 거래가 정상적임을 확정 • 혼자 채굴작업을 하든 채굴 풀에 들어서 하든 채굴하기 전에 반드시 보상금과 수수료를 받을 지갑(Wallet)을 먼저 만드는 센스!
  • 21. 채굴을 하려면 이 정도는… Software 21 Bitcoin Mining Software가 왜 중요하냐 하면, • 채굴 소프트웨어는 P2P 네트워크 상에서 송/수신되는 거래 데이터를 받고/전달하여 처리 • 채굴 장비의 입출 상황을 모니터링 소프트웨어 설명 Window Linux MaC OS Bitcoin Miner • 사용 편리한 화면, pool mining 지원, 절전 모드, very fast in share submission. • profit reports 기능 : 기간별 수익 현황 모니터링 • 최신 버전 : Bitcoin Miner 1.27.0. ● BTCMiner • ZTEX USB-FGPA modules 1.5용 Open Source • 주요 기능 : flexibility on chosing the highest rate of frequency in valid hashes, integrated with Bitstream example - Xilinx software or required with license. • FPGA board 지원 기능이 있어 프로그래밍과 통신할 때 USB를 사용 가능 ● CGMiner • 가장 많이, 보편적으로 사용하는 비트코인 채굴 프로그램으로 원래 코드는 CPU Miner • 주요 기능 : fan speed 제어, 원격 연결, 작은 데이터베이스를 사용하여 새 블록을 쉽게 파악, multi GPU 지원, CPU Mining 지원 ● ● BFGMiner • CGMiner와 기능이 거의 비슷하나 GPU에 초점을 맞춘 게 아니라는 게 차이 • 주요 기능 : LLVM OpenCL/mesa mining, PCI bus ID reorderring ADL device ● ● EasyMiner • BFGMiner와 CGMiner의 wrapper 역할을 하는 GUI기반의 채굴 소프트웨어 • 지원 프로토콜 : stratum mining, getwork mining. • 특징 : 단독 채굴과 연합 채굴 가능, 그래픽 기능과 쉬운 설정 ● ● RPCMiner • 특징 : Mac OS systems과 APIs 결합 ●
  • 22. 채굴을 하려면 이 정도는… Hardware 22 CPU - 1세대 • 초기에는 CPU만을 사용해서 채굴 • 네트워크 안전성과 더 많은 비트코인을 벌기 위해서는 이제 CPU 방식은 한물 간 방식 GPU - 2세대 • 비트코인 출현 1년 반쯤 지나서 그래픽 카드가 비트코인 채굴에 아주 효과적이라는 사실 발견 • 대량의 병렬 처리가 가능한 GPU 덕분에 작업당 더 적을 전력을 사용하고도 채굴능력을 50배에서 100배까지 향상 • nVidia 아키텍처보다는 AMD 아키텍처가 훨씬 우수한 것으로 판명났고, ATI Radeon HD 5870는 최고의 가성비 제품 FPGA(Field Programmable Gate Array) - 3세대 • CPU에서 GPU로 바뀌면서 Field Programmable Gate Array 방식 개발  비트코인 채굴에 특화된 하드웨어들이 출현 • GPU만큼의 성능은 못내지만 전력을 효율적으로 사용할 수 있고 사용하기 쉬운 장점 • 600 MH/s 그래픽 카드가 400w 이상의 전력을 사용하는 반면, FPGA는 826 MH/s에 대해 at 80w의 전력으로 hashrate • 비트코인 채굴 산업이 탄생하는 기점 ASIC(Application Specific Integrated Circuit) - 4세대 • ASIC은 오직 한 가지 작업만, 비트코인 채굴 작업만 하도록 특화된 칩. 다른 작업을 하도록 변경 불가 • 다른 기술들에 비해 전력 소비를 줄이고도(7배 이하) 해싱 파워를 100배 이상 증가  ASIC 제품의 가장 큰 장점 • 이전 하드웨어들과는 차원이 다른 비트코인 채굴 장비의 ‘끝판 왕‘- 당분간은 따라 올 기술이 없어 보임
  • 23. 채굴(Mining) 유형 23 채굴은 블록체인에 새로운 블록을 추가하는 것으로써, 비트코인이 제시하는 목표 난이도에 맞는 해시값을 찾아내어 동료 채굴자(peer)들의 검증/동의를 받는 과정이다. 채굴 형태는 다음과 같은 2가지가 있다. 1) 단독 채굴(Solo mining) • 개별 채굴자가 혼자의 힘으로 새로운 블록을 생성하는 것 • 보상(25 bitcoin)을 혼자서 독차지 2) 연합 채굴(Pooled mining) • 채굴자들이 다른 채굴자들과 자원 Pool을 구성하여 블록 생성을 더 빠르고 자주 할 수 있도록 하는 채굴 방식 • 개별 채굴자의 보상금은 낮지만 블록을 생성할 확률은 높아짐 • 각 채굴자가 기여한 hashing power에 따라서 보상금 배분
  • 24. 단독 채굴(Solo mining) 24 P2P Network Block Broadcasting Voting (검증) bitcoind Mining software Mining hardware (ASIC) 새로운 Transactions polling(‘getblocktemplate’) • Transaction 목록 • Coinbase trx를 보낼 public key • Block template을 사용하여 block과 block header 생성 • Block header (80 byte) • 목표 난이도(target thredhold) • 목표 난이도에 맞는 Block header nonce를 찾기 작업 수행  해시값 생성 해시값 발견 해시값 못 발견 새 block header와 merkle root 요청 • block header • nonceHeader와 block 조합 Blocks Blocks Block chain • RPC를 사용할 수 있는 bitcoin 프로토콜을 구현하는 프로그램 • Headless demon • JSON-RPC 인터페이스 제공 Block과 Block header 생성 1 2 4 5 56 3 7 8 10 3 채굴자(Miner) 거래 (transaction) Wallet9 채굴 보상(reward 또는 transaction fee Blocks 이전 블록 hash값
  • 25. 연합 채굴(Pooled mining) 25 P2P Network Block Broadcasting Voting (검증) Mining Pool Mining software Mining hardware (ASIC) 새로운 Transactions Block header 구성할 정보 요청 • Block header 구성 정보 전달 • 목표 난이도(target threshold) • Block template을 사용하여 block과 block header 생성 • Block header (80 byte) • 목표 난이도(target threshold) • 목표 난이도에 맞는 Block header nonce를 찾기 작업 수행  해시값 생성 해시값 발견 해시값 못 발견 새 block header와 merkle root 요청 • block header • nonceHeader와 block 조합 Blocks Shares(검증 요청) - Header - Merkle tree root Block chain • Pool은 목표 threshold를 bitcoin 난이도 보다 높게 설정 Block과 Block header 생성 1 2 4 5 56 3 7 8 10 3 채굴자(Miner) 거래 (transaction) bitcoind Target threshold 검증 채굴 보상금 배분 9 채굴 보상 (reward 또는 transaction fee WalletBlocks
  • 26. 블록 배포(Block Broadcasting) 26 • 블록을 생성한 채굴자가 직접 모든 peer에게 ‘block’ 메시지를 전달 • 어느 peer도 이 새로운 블록을 모른다는 전제 채굴자가 새로운 블록을 완성하면 그것을 다른 채굴자(peer)들에게 전달하는 방법 Unsolicited Block Push Standard Block Relay Direct Headers Announcement • 채굴자가 Standard relay node 역할을 해서 ‘inv’ 메시지와 inventory를 peer에게 전달 • 메시지를 받은 peer들은, ✓ Blocks-first(BF) peer는 ‘getdata’ 메시지를 보내 블록 요청 ✓ Header-first(HF) peer는 ‘getheaders’ 메시지를 보내 헤더 체인의 최상위 헤더의 해시값을 요청 ✓ Simplified Payment Verification(SPV) client는 ‘getdata’ 메시지를 보내 merkle block을 요청 • 채굴자는 위의 peer들에게 ‘block’, ‘headers’, ‘merkleblock’ 메시지로 응답 • 중계 노드가 새로운 블록의 전체 헤더 정보를 포함하는 ‘header’ 메시지를 즉시 전송함으로써 ‘getheaders’ 메시지와 ‘inv’ 메시지가 오가는 왕복 오버헤드를 피함 • HF peer는 ‘header’ 메시지를 받아서 block header를 검증한 후 전체 block 내용을 요청(‘getdata’) • HF 노드는 접속 중에 ‘sendheaders’ 메시지를 전송하여 ‘inv’ 공지 대신에 ‘headers’ 메시지를 달라고 신호를 보낼 수 있음 • Bitcoin Core는 ‘sendheaders’ 메시지를 보내는 peer에게는 ‘headers’를 보내고, 그렇지 않은 peer에게는 Standard Block Relay를 사용
  • 27. [참고] 주요 용어 27 Coinbase Transaction • Miner가 생성하는 블록의 첫 번째 transaction (필수) • 성공적으로 Block을 생성했을 때 보상을 받을 수 있게 하는 transaction Target threshold • Block header의 해시값이 검증되어 block에 정상적으로 포함될 수 있는 기준값 • 채굴 소프트웨어 또는 Pool 소프트웨어가 설정 • nBit로 표현 – 256 bit의 unasigned integer Share • 채굴 pool에 속한 채굴자가 block 생성에 기여한 기여도. • 채굴 하드웨어(ASIC)로부터 많은 유효한 block header를 받기 위해 가능한 해시값의 비율을 검사했음을 증명 Target difficulties (목표 난이도) • 비트코인에서 설정하는 채굴에 걸리는 시간을 조절하는 난이도 – 해시값의 앞의 ‘0’의 자리수 조정 • 매 2016 블록(약 2주)마다 변경됨 : 2주/10분(블록생성 목표시간) = 14*24*60/10 = 2016 • 새 목표 난이도 = 이전 목표 난이도 * 2016 블록 생성에 걸린 평균 시간 / 2주 P2P 네트워크 또는 네트워크 노드(node) • 비트코인 시스템의 기능과 요소들을 포함하고 있는 클라이언트 : bitcoin.org의 기본 클라이언트인 BitcoinCore 클라이언트가 설치된 PC • 기능 : 지갑, 거래장부 복사본, 검증엔진, P2P네트워크 전송 기능 등
  • 28. 참고 자료 28 Bitcoin Developer Guide Documentation https://bitcoin.org/en/developer-guide#block-chain 비트코인 블록체인 개론 http://www.mobiinside.com/kr/2017/11/07/bitcoinblockchain101/ 알기 쉽게 이해하는 비트코인 http://www.leejungmin.org/post/2017/05/30/mastering-bitcoin/ 비트코인 기술이론 정리 http://codens.info/m/562 We use coins https://www.weusecoins.com/