비트코인 개인간 전자화폐시스템 요약 설명

59
© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted ( 요약과 해제 ) Bitcoin: A Peer-to-Peer Electronic Cash System - Satoshi Nakamoto HP ES Korea 이성복

Upload: seong-bok-lee

Post on 15-Aug-2015

141 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted

(요약과 해제)

Bitcoin: A Peer-to-Peer Electronic Cash System - Satoshi Nakamoto

HP ES Korea

이성복

Page 2: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 2

Cryptocurrency

Payment System

Mining

Open Source

Peer-to-Peer

Decentralized

Distributed

Blockchain

Public Ledger

Mining Pool

Digital Wallet

비트코인?

비트코인은 왜…

Page 3: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 3

내용

1. 서론

2. 거래(Transaction)

3. 타임스탬프 서버

4. 작업 증명(Proof-of-Work)

5. 네트워크

6. 보상

7. 저장 공간 재확보

8. 지불 입증 간소화

9. 금액의 결합과 분할

10. 개인정보 보호

11. 계산

12. 결론

[보충설명1] 비트코인으로 거래하기

[보충설명2] 암호화와 디지털 서명

[보충설명3] 채굴의 원리

[보충설명4] 이중거래를 막아라

Page 4: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 4

1. 서론

배경

비트코인의 목적

제시한 해법 거래들의 시간 순서를 전산적으로 입증하게 만들도록 하는 P2P 분산 네트워크 기반 타임스탬프 서버를 이용하여 이중지불 문제를 방지

이 시스템은 악의적으로 협력하는 노드 그룹보다 정직한 노드들이 더 많은 컴퓨팅 파워를 총체적으로 제어하는 한 안전

신용보다는 암호화 기술에 기반한 전자지불 시스템을 이용하여 자발적인 두 거래자가 제 3자인 신용기관 없이도 직접적인 거래를 가능하게 함

전산적으로 번복이 불가능한 거래 가짜 지불로부터 판매자 보호, 애스크로 방식으로 구매자 보호

현재의 전자상거래는 인터넷 상거래에서 금융기관을 제3자 신용기관으로 하는 전자지불 방식(신용기반 모델)

거래의 완전 취소 불가능 : 금융기관은 거래상의 분쟁을 중재해야 하고, 이 중재는 거래 수수료를 올리고, 최소 거래액을 제한하고, 회수 불가능한 서비스에도 번복 가능하게 만들어 더 많은 비용 발생 지불 번복을 위해 더 많은 신용을 요구하는 현상 발생

* 에스크로(escrow) : 상거래 시에, 판매자와 구매자의 사이에 신뢰할 수 있는 중립적인 제삼자가 중개하여 금전 또는 물품을 거래를 하도록 하는 것

Page 5: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 5

[참고] 특징

디지털 서명이 고리로 연결된 젂자 화폐 (코인) an electronic coin as a chain of digital signatures

- Satoshi Nakamoto의 논문

Bitcoin is a decentralized digital currency that enables instant payments to anyone, anywhere in the world. Bitcoin uses peer-to-peer technology to operate with no central authority: transaction management and money issuance are carried out collectively by the network. - Wikipedia

정의

특징 1. 공개키 암호화 기술 채용 – 거래관련 기록 전체의 암호화로 익명성 제공

2. 개인*간의 자발적 참여를 전제로 하는 P2P 분산 네트워크로 거래를 확증(verification)하는 시스템 – 신용를 제공하는 집중화된 관리 기구 대체(신용기관 또는 중앙은행 등)

3. 통화 공급량 고정 – 통화 공급 측면의 안정성 제공

4. 오픈 소스 – 시스템 운영 소스 코드가 공개되어 누구나 수정 가능

※ 다만 새로운 룰이 적용되기 위해서는 80% 이상의 수용 필요 (CPU 수 기준)

* 개인 = 네트워크 상의 노드(CPU)

Page 6: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 6

[참고] 비트코인 등장 배경과 성향

비트코인의 등장 배경

2008년글로벌 금융위기에 따른 미국과 세계 경제의 침체 : 리먼브라더스의 파산 , AIG의 미국정부에 의한 국유화 작업 , 월스트리트의 아이콘 메릴린치는 뱅크오브아메리카에 인수 등

월가는 위기에서 쉽게 헤어났지만 사실상 아무 책임도 없고 누구도 책임지는 주체가 없었다.

2008.10.31 사토시 나카모토의 논문

비트코인의 정치적 성향

자유주의(libertarian)

정부 권한은 최소화, 개인의 정치적 자유는 극대화

정책적으로는 규제가 완화된 자유방임 시장, 자유 무역주의, 이민 규제 완화 등을 추구

은행이 신용 공급을 마구 확대할 수 있게 만드는 부분 지급준비제도 등에 반대

“국가 화페시스템과 정부 및 관련기관에 의한 시장개입이 경기 순환을 악화시키고 막대한

인풀레이션으로 귀결된다는 오스트리아학파의 비판적 입장이 비트코인의 이론적 근간이 되고 있다”

- 유럽 중앙은행

오스트리아학파의 주장.

자유주의적인 관점을 옹호해 시장에 대한 정부의 역할을 비판

정부가 발행하고 관리하는 통화체계에 대한 비판적인 입장

금 본위제 주장

카를맹거(Carl Menger), 뵘바베르크(Eugen vonbohm-bawerk), 루트비히 폰 미제스(Ludwig von Mises),프리드리히 하이에크(Friedrich Hayek)

그러나 정작 오스트리아 학파는 비트코인을

화폐로 보는 데 부정적

Page 7: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 7

[참고] 비트코인의 발행

2009년부터 10분마다 50개의 비트코인을 발행하는 것으로 시작

21만개가 만들어질 때마다(=4년마다) 50개 25개 12,5개로 반감되어 0으로 수렴

2015년 현재 매 10분마다 25개의 비트코인이 발행되고 있음

최대 2100만개가 되면 발행이 정지.

Page 8: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 8

2. 거래(Transactions) 전자화폐 = 디지털 서명의 연속

각 암호키 소유자들은 그 전까지의 거래 내역에 다음 소유자의 공개키를 덧붙인 뒤에 자신의 비밀키로 암호화하는 디지털 서명을 하고 넘긴다.

돈을 받는 사람은 서명 소유자들의 체인과, 서명들을 검증

그러러면,

1) 모든 거래가 공개적으로 알려져야 하고

2) 참여자들이 시간 순서에 따라 단일 거래내역으로 수용하는 시스템이 필요

돈을 받는 사람은 거래할 때마다 과반수 이상의 노드들이 이 거래가 처음의 거래라고 인정해 주는 시스템간 증명이 필요

따라서 거래 과정의 사기(이중지불 등)을 방지하려면 모든 거래 내역을 확인해야 함. 즉, 돈을 받는 사람이 이전 소유자가 받은 돈이 그 전의 거래에 서명이 되었는지 여부를 확인하기 위해 모든 거래 내역을 일일이 확인

거래 내역과 소유자 2의 공개키를 가져와서 해싱하고, 서명된 결과를 소유자 2에게 보냄.

소유자2는 자신의 개인키를 사용해서 암호를 품

Page 9: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 9

3. 타임스탬프 서버(Timestamp Server) 타임스탬프 서버의 역할

1. 시간 내역이 기록된 항목들의 블록 해시를 취합(과거 거래기록의 누적)

2. 신문이나 유즈넷 포스트처럼 그 해시를 널리 발행(공개)

타임스탬프 내역은 해시에 포함될 수 있도록 그 시간에 데이터가 명백히 존재했다는 것을 입증한다.

각 타임스탬프 내역은 이전 타임스탬프로부터 받은 해시 내역을 포함시킴으로써 보강하는 체인을 형성한다.(블록 체인)

Page 10: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 10

블록과 블록체인

블록(block) :

비트코인 거래를 약 10분 단위로 모은 것으로 채굴이 일어나는 단위

JSON 형태로 기록

블록체인(block chain) :

현재까지의 블록이 모두 이어진 것으로, 현재까지 일어난 모든 비트코인 거래가 시간순으로 기록된 장부.

네트워크상의 모두에게 나누어 지는 공개된 공공원장

Blockchain

거래 2

Block 1

거래 4

거래 5

거래 6

거래 7

거래 …

거래 1

거래 3

Block 2

Block …

모든 거래의 통합 원장

10분

10분

10분

Page 11: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 11

블록의 구조

현재 블록의 해쉬(hash), 바로 전의 블록의 해쉬(prev_hash), 블록이 생성된 시간(time), 난이도와 관련이 있는 비츠(bits), 블록 생성시의 난스(nonce, 32bit), 거래횟수(n_tx), 블록사이즈(size)로 이루어짐

블록 몸체는 각각의 거래내역(tx)과 머클트리(merkle tree)로 이루어짐

※ 머클트리 : 거래 내역의 변조를 막기 위해 거래내역을 해시로 만든 후 다시 이것을 트리 형태로 만든 것

블록 헤더(Block Header)

(Version, hashPrevBlock, hashMerkleRoot, Time, Bits, Nonce, n_tx, size)

[블록의 구조]

블록 바디(Block Body)

(transaction, merkle tree)

Page 12: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 12

4. 작업 증명(Proof-of-Work)

1. SHA-256 암호화 알고리즘으로 다수의 0비트들로 시작되는 암호화 해시값을 찾는 과정

평균 작업시간 : 연속되는 0비트의 요구 개수에 따라 지수적으로 증가

작업 증명 방법

① 블록 해시 결과가 0비트들을 갖도록 하는 해시값을 찾을 때까지 블록에 임시값(nonce)을 증가시킴

② 한번 작업 증명 조건에 도달하게 되면, 그 블록은 다시 과정을 번복하지 않는 한 고정됨

③ 그 다음 블록들이 체인을 형성함으로써, 하나의 블록을 변경하기 위해서는 그 블록을 포함한 다음 모든 블록들에 대해 작업증명 과정을 다시 수행해야 함

2. 증명을 위한 다수결에 의한 의사결정 과정에서 대표자 결정

한 개의 CPU당 한 번의 투표만 가능 다수의 결정 = 가장 긴 노드 = 가장 많은 노력이 이 노드에 투입된 것

컴퓨팅 파워의 과반수가 정직한 노드들에 의해 제어되고 있다면, 정직한 체인이 가장 빠르게 늘어남.

시간이 흐름에 따라 하드웨어 속도 증가와 노드들의 참여도 증가율을 보상하기 위해서, 작업증명의 난이도는 시간당 평균 블록 생성 수를 기준으로 하는 이동평균을 타깃으로 결정( 블록이 너무 빠르게 생성되면 난이도는 급증)

타임스탬프를 가지고 거래의 정당성(=최초 거래임을 입증)을 검증하는 과정

Page 13: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 13

[참고] 해시

3116d82e9c97e92296111a85610a1c3d891ad4390df17550d0b0a3cd95294db3

45ed14b888d4f582a67fba92370412c26030530a528e460908a8e844fd0851c7

해시는 '이전 해시 + 거래 내역'을 또 다시 새로운 해시로 암호화하는 과정을 계속 되풀이

결과적으로 최종 해시는 최초의 거래 내역부터 모든 거래 내역을 반복화되는 암호화를 통해 보관

해시는 불가역 암호 함수여서 C가 B와의 거래로 얻은 해시 값에서는 B와 A간의 거래내용을 볼 수 없음

0은 1에게서 공개키를 받음

0은 1의 공개키를 0의 비밀키와 결합

SW는 ‘기존 Hash’ + ‘1의 공개 키’ + ‘0의 디지털서명’ 3개 정보를 결합하여 Hash 1 값을 만듦

1만이 암호화된 그 해시값을 풀수 잇는 비밀키를 보유하고 잇음

1과 2의 거래 시 1의 비밀키는 디지털서명으로 작동

Hash 0

0의 디지털서명

2차 암호화 3차 암호화 1차 암호화

Hash 1 Hash 2

예) 0과 1의 거래

+ 1의 공개키

1의 비밀키

+ 1의 디지털서명

+ 2의 공개키

2의 비밀키

+ 2의 디지털서명

+ 3의 공개키

3의 비밀키

+

Page 14: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 14

[참고] 해시

암호화된 계좌로 송금한 내용이 다시 암호화된 값, 즉 해시(Hash)로 기록됨

해시의 형태는 ‘디지털 서명의 연결(a chain of digital signature)’의 핵심

해시는 해시 함수에 의해 알파벳과 아라비아 숫자(alphanumerical)로 표시된 값을 만들어 냄

ex) 3116d82e9c97e92296111a85610a1c3d891ad4390df17550d0b0a3cd95294db3

해시 함수는 불가역 함수로서 결과값을 만드는 처음 조건 값을 알아내기 어려움

ex) 500,000이라는 결과 값을 만들어 내는 두 정수의 조합은 너무나 많은 것과 같은 이치

해시 함수는 오리지널 값의 조합이 어떻게 표현될지를 예측하는 것도 매우 어려움 부정행위 방지 시스템에서 널리 활용됨

이렇게 풀기 어려운 암호화 과정을 통해 거래 내역이 노출되지 않음

거래 시 돈을 받는 사람에게 돈을 보내는 사람의 개인 정보가 전혀 제공되지 않음

Hash 0

암호의 재 암호화 암호화

Hash 1

거래정보 거래정보

Hash 0 Hash 1

거래정보 거래정보

. . .

Page 15: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 15

[참고] 거래기록의 보호

이는 모든 거래기록이 공유되는 상황에서 해커들이 쉽게 이 기록을 조작하는 것을 방지하기 위하여 거래기록의 보호가 필요

만약 해커가 자신이 쓴 돈을 다른 곳에 다시 쓰려고 한다고 가정하자. 그러기 위해서는 장부(블록체인)를 조작해야 한다. 비트코인 시스템에서는 블록체인이 진짜인지 가짜인지를 민주주의의 원칙에 의하여 결정한다. 블록체인의 복사본은 모든 노드들이 가지고 있는 데 여러 가지 이유로 서로 다른 복사본을 가지고 있을 수 있다(이를 분기되었다(forked)고 한다). 이때 가장 많은 노드들이 가지고 있는 복사본을 진짜로 여기는 것이다. 만약 블록을 쉽게 공식화할 수 있다면 해커가 많은 숫자의 컴퓨터(정확하게는 IP)만 가지고도 기록의 조작이 가능해지는 것이다.

하지만 해를 찾기가 매우 어렵게 만듦으로써 블록체인을 조작하려면 해커는 선의의 채굴자가 가진 CPU파워보다 더 큰 파워를 가져야 한다(51% 공격). 특히 해커가 조작하고자 하는 블록 이후에 여러 개의 블록이 이어진 경우에는 조작은 현실적으로 불가능하다고 하겠다.

비트코인의 방식은 누구나 기록을 볼 수 있도록 하지만 이를 조작하는 것은 한 가지 방법밖에 없고 이것이 현실적으로는 불가능하도록 하는 것이다.

Page 16: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 16

5. 네트워크(Network) 개별 노드들이 작업증명을 하는 절차

1) 새로운 거래 내역이 모든 노드에 알려진다.

2) 각 노드들은 새로운 거래 내역을 블록에 취합한다.

3) 각 노드들은 그 블록에 대한 작업증명을 찾는 과정을 수행한다.

4) 어떤 노드가 작업증명을 성공적으로 수행했을 때, 모든 노드에게 그 블록을 전송한다.

5) 노드들은 그 블록이 모든 거래가 이전에 쓰이지 않고 유효한 경우에만 승인한다.

6) 노드들은 자신이 승인한 블록의 해시를 이전 해시로 사용하여 다음 블록을 생성하는 과정을 통해 그 블록이 승인되었다는 의사를 나타낸다.

노드들은 항상 가장 긴 체인을 옳은 것으로 간주하며, 그 체인이 계속 확장하도록 작업을 수행한다.

두 개의 노드가 서로 다른 버전의 다음 블록을 동시에 알리게 될 경우, 각 노드들은 자신이 먼저 받은 블록에 대해 작업을 수행하지만, 체인의 다른 갈래도 저장 체인의 어느 한쪽 갈래가 더 길게 생성되는 작업증명이 알려지면 체인 갈래의 길이는 더 이상 대등하지 않게 되고, 각 노드들은 (저장해 두었던 다른 갈래의) 체인으로 작업을 전환.

새로운 거래 내역 알림이 꼭 모든 노드에까지 전달될 필요는 없으며, 많은 노드에 전달될수록 더 빨리 블록에 포함됨. 만약 한 노드가 블록을 받지 못했을 경우, 다음 블록을 받고 하나가 빠졌음을 알아차려 다시 요청해 받음.

Page 17: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 17

[참고] 노드들의 분산 합의제도

대기중인 거래를 블록 체인에 포함시킴으로써 거래를 승인하는 분산 합의 제도 채택

블록 체인에 시간적 나열을 강제하고,

네트워크의 중립성을 보호하며,

서로 다른 컴퓨터들이 시스템의 상태에 대해 동의하도록 함

따라서 채굴(mining) 과정은,

① 비트코인 거래 시스템을 유지하는 핵심 메커니즘에 자발적으로 참여할 유인(동기)을 제공하며,

② 비트코인 통화 공급 역할을 하는 매우 중요한 과정임

P2P 네트워크

비트코인으로 일어나는 모든 거래는 10분단위로 하나의 블록(Block)에 기록되고 이 블록을 이전의 블록에 이어감으로써 블록체인(Block Chain)을 형성한다. 이때 비트코인 시스템에 참여하는 모든 노드들이 블록체인에 서명하고 이를 공유함으로써 같은 돈을 복사해 여러 군데 사용하는 등의 사기가 불가능한 것이다

Page 18: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 18

6. 보상(Incentive) 1. 블록의 첫 번째 거래 내역(채굴)

• 최초의 블록 생성자에게 새로운 돈을 소유할 수 있게 하는 특별한 거래

• 컴퓨팅 자원과 전력을 소비한 대가

2. 거래 수수료

• 출력되는 돈과 입력되는 돈의 차액

• 해당 거래 내역을 포함하는 블록 생성의 보상 가치로 추가됨

정해진 총량의 돈이 유통된 다음부터는, 보상은 거래 수수료만으로 이뤄지며 인플레이션으로부터 완전히 자유롭게 된다.

Page 19: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 19

7. 저장공간 재확보(Reclaiming Disk Space) 최근 거래 내역에 있던 돈이 충분히 많은 블록에 의해 묻히게 되면, 지난 거래 내역은 제거

거래 내역은 머클트리(Merkle Tree) 구조로 해시됨 : 루트 부분만 블록 해시에 포함. 오래된 블록은 트리 구조에서 가지를 쳐냄으로써 더 작아지게 되며, 하위 해시는 저장할 필요 없음

• 최초의 블록 헤더 = 약 80 바이트

• 10분마다 블록 생성

80 * 6 * 24 * 365

매년 4.2MB 필요

채굴 결과로 얻어진 새 블록의 해시값에는 직전의 해시값뿐만 아니라 이전 거래의 해시값들이 모두 들어 있으므로 최초의 비트코인 거래부터 현재의 거래까지 모든 거래 내역이 담겨 있음

시간이 흘러 거래가 많아질수록 블록의 크기는 커짐

2009년 첫 화폐 발행부터 지금까지 이뤄진 모든 거래가 기록된 ‘블록 체인’은 현재 8GB

Page 20: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 20

[참고] 비트코인은 비트코인의 연결

비트코인은 디지털서명의 연결이다. 즉, 과거의 거래기록을 온전히 포함하는 거래의 네트워크

내가 받은 비트코인은 이전 사람(그림에서는 내 친구)이 받은 비트코인에 이전 사람의 디지털서명이 더해진 덩어리이다.

친구가 준(즉 from 친구 to 나) 액면 1 비트코인(BTC) 코인을 10개 가지고 있다고 가정하면 이 10개의 비트코인은 전부 각자의 이력을 기록으로 가지고 있는 것이다.

모든 비트코인이 과거의 거래를 포함한 네트워크가 됨에 따라 거래는 투명해지고 끝까지 추적하는 것도 가능해진다.

이렇게 모든 거래기록이 누적됨으로써 블록 파일의 크기가 점점 커지는 구조

Page 21: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 21

[참고] 거래(transaction)의 저장

과거의 모든 transaction을 저장하지 않고 사용이 완료된 transaction에 대한 기록은 폐기

“unspent transaction” 리스트만 관리

Merkle Tree 축약

Page 22: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 22

8. 지불 입증 간소화(Simplified Payment Verification) 전체 거래내역을 확인하는 대신, 체인에 연결해서 네트워크 노드들이 승인했는지 여부만 확인

가장 긴 작업증명 체인의 블록 헤더의 사본만 갖고 있으면, 자신이 가장 긴 체인이라 확인할 때까지 네트워크 노드들에게 요청하고, 그 거래 내역이 기록된 블록에 연결된 머클트리 일부만 받아오면 된다.

공격자에 의해 과점된 네트워크로 거래를 조작하고 유지할 위험

사용자의 소프트웨어에서 블록 전체를 다운로드 받고 모순임이 확증된 유효하지 않은 블록을 발견했을 때 네트워크 노드들이 경고 알림을 받음

Page 23: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 23

9. 금액의 결합과 분할(Combining and Splitting Value) 거래 내역은 복수의 입력과 출력으로 이루어짐(fan-out)

1) 입력 : 큰 금액의 단일 입력, 소액 모금을 위한 여러 입력 등

2) 출력 : 한 출력은 지불 다른 출력은 거스름돈 등

여러 거래로 하나의 거래가 이루어지고, 여러 거래의 각각이 또 다시 여러 거래로 이루어질 수도 있음

Page 24: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 24

10. 개인정보보호(Privacy)

당사자와 제3자 신용기관에만 정보 접근 권한을 제한

신원 제3자

신용기관 거래 거래자

일반인 (Public)

신원 일반인 (Public)

거래

기존 개인정보보호 모델

새로운 개인정보보호 모델

공개키를 익명으로 소유하도록 함으로써 정보의 흐름 차단

외부에서는 누가 다른 누군가에게 얼마를 보냈단 사실을 알 수는 있으나, 그 거래 당사자들이 누군지에 대한 정보가 연결되어 있지 않으면 누군지는 알 수가 없음

개별 거래마다 새로운 공개키-비밀키 쌍을 사용하여 한 사람의 소유자에게 연결되는 것을 막음

Page 25: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 25

11. 계산(Calculations)

※ 자세한 내용은 ‘[보충설명4] 이중거래 방지’ 참조

정당하지 못한 방법으로 비트코인을 얻으려는 공격

1. 공격자가 다른 체인의 갈래를 빠르게 생성하려고 시도하여 정직한 노드들의 체인을 앞질러 가장 긴 체인을 생성하는 경우

정직한 노드들과 공격자의 체인간의 경쟁

노드들은 유효하지 않은 거래를 지불로 승인하지 않을 것이며, 정직한 노드들은 그러한 거래 내역을 포함하는 블록을 절대 받아들이지 않을 것

공격자가 정직한 체인을 따라잡을 수 있는 가능성은 블록 수에 지수적으로 감소

2. 송금자가 받는 사람이 일시적으로 돈을 받았다 믿게 만들고 일정 시간 뒤에 다시 돈을 자기 자신에게 되돌리게 시도하려는 경우

돈을 받는 사람은 거래가 블록에 포함되고 추가 블록들이 연결될 때까지 기다림

수신자 는 공격자가 얼마나 많은 작업을 진척시켰는지 정확히 모르지만, 정직한 블록들이 매 평균 시간 간격마다 생성될 것이고, 공격자가 그 시점에 블록체인 생성을 따라잡을 확률은 지수적으로 감소

Page 26: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 26

12. 결론 비트코인 = 디지털 서명으로 이루어진 전자 화폐

이중지불 방지 방법

과반수의 컴퓨팅 파워를 정직한 노드들이 제어한다면 계산상으로 공격자가 빠르게 조작할 수 없이 공개적으로 거래를 기록할 수 있도록 작업증명을 수행하는 P2P 네트워크

노드들은 조직화할 필요도 없이 약간의 협력만으로도 즉시 작업 수행

어떤 노드인지 알 필요 없음 : 특정 위치에 메시지가 전달되지 않더라도 시장원리를 기반으로 전달되기만 하면 됨

노드들의 네트워크 종속성 없음 : 다시 합류하게 되면 작업증명 체인을 그 동안에 벌어졌던 사실에 대한 증명으로 받아들이기만 하면 됨

컴퓨팅 파워를 통해 의사결정을 하고, 유효한 블록에 대해서만 작업을 수행함으로써 유효하지 않은 블록들은 거부함으로써 거래를 승인

이러한 합의 메커니즘을 위해 규칙이나 보상 제공

Page 27: 비트코인 개인간 전자화폐시스템 요약 설명

[보충설명1] 비트코인으로 거래하기 - 거래 절차와 방법

Page 28: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 28

[보충설명] 비트코인 거래가 이루어지는 방식

거래내역을 암호화하고 네트워크상에 뿌린다.

지불내역 데이터(블록) 검증작업이 시작된다.

비트코인 지갑을 만든다. 타 비트코인 소유자와

거래한다.

거래내역이 채굴자들에게

전달된다.

지불내역(=블록)이 정상적임을 확인한다.

최초 성공자에게 보상금(25BTC)가

지급된다. 거래가 종료된다.

A와 B는 각각 1개 이상의 비트코인 지갑을 갖고 있다.

• A의 주소는 A111, B의 주소는 B222

• 지갑의 비트코인 주소마다 개인키가 있다.

A는 100CTC를 주고 B에게서 물건을 산다.

• A는 비트코인 지갑을 열여 ‘발신자: A111, 수신자: B222, 지불금액: 100BTC’라고 입력하고 지갑에 저장한다

A의 지갑이 있는 업체는 송금하려는 비트코인 주소의 개인키를 이용해 거래를 승인하고 지불내역 데이터를 공개된 자물쇠와 키를 붙여 암호화하고 네트웍상에 뿌린다.

뿌려진 지불내역은 임의의 비트코인 채굴자들의 소프트웨어(이하 채굴노드)로 전달된다.

채굴노드들의 검증작업대에 A의 지불내역 데이터(=블록)이 등록되고 검증을 위한 복잡한 계산과정이 가동된다

• 채굴자(=채굴노드) X, Y, Z는 지난 10분간의 거래를 새로운 거래 블록으로 통합한다.

• 채굴노드들은 암호 해시 함수 연산을 시작한다.

채굴노드 X가 처음으로 A가 뿌린 지불내역(=블록)이 정상적인 것인지를 확인한다.

가장 먼저 검증에 성공한 X에게는 보상으로 25BTC를 지급한다. 즉, 새로 채굴된 잔액 25BTC가 추가된 새 주소가 X의 지갑에 만들어진다.

• 채굴 보상은 4년마다 ½ 로 줄어든다.

• A의 지갑 프로그램은 지불을 완료하고 A111 주소에서 1000BTC를 뺀다.

• B의 지갑 프로그램은 지불완료된 내역에 따라 자신의 B22 주소에 100BTC를 적립

Page 29: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 29

[보충설명] 거래 과정

거래 시작하기(송금)

거래내역 배포하기

거래내역 받기

지갑 만들기

검증(채굴)하기

비트코인 사이트에서 개인 지갑 만들기

• 지갑에는 여러 개의 계정(비트코인 주소)를 만들 수 있음

• 각각의 계정에는 일정 액수의 Bitcoin이 함께 연동되어 있고 입출금에 따라 금액은 증감

• 계정을 만들 때 공개키와 함께 만들어진 나머지 비밀키(Private Key)는 지갑 속에 저장되어 있으며, 계정에 접속할 때나 송금할 때 사용하게 됨 (현금 인출에 필요한 비밀번호 기능)

• 비트코인은 지갑 파일의 형태로 저장되며, 이 지갑에는 각각의 고유 주소가 부여되며, 그 주소를 기반으로 비트코인의 거래가 이루어진다.

지불내역 확인하기

보상금 지급하기

거래 종료

계정을 만들면 계정은 한 쌍의 암호키(공개키 & 비밀키)를 생성

계정정보가 바로 공개키(Public Key)이면서 돈이 송금될 주소(address)

개인키(Private Key)는 전자지갑(Wallet)안에 암호화된 형태로 존재

※ 자세한 설명을 ‘[보충설명2] 암호화와 디지털 서명’ 참조

Page 30: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 30

[보충설명] 거래 과정

거래 시작하기(송금)

거래내역 배포하기

거래내역 받기

지갑 만들기

검증(채굴)하기

타 비트코인 소유자와 거래(송금, 구매 등)을 시작한다

• 송금시에는 여러 개의 계정(비트코인 주소) 중의 하나를 선택하여 송금함

• 결제검토(=승인) 요청을 하면 클라이언트 소프트웨어는,

지갑 속에 있는 비밀키(Private key)로 서명을 하고(=해시 암호화),

거래 내역을 비트코인 네트워크에 공표한다.

지불내역 확인하기

보상금 지급하기

거래 종료

돈 받을 사람의 공개키(비트코인 주소)를 알아야 함(QR코드로도 인식 가능)

거래내역 검증에 성공(=채굴)한 채굴자에게 지급되는 25BTC 외로 지급되는 추가 수수료 더 빨리 검증작업이 이루어지게 하는 유인

Page 31: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 31

[보충설명] 거래 과정

거래 시작하기(송금)

거래내역 배포하기

거래내역 받기

지갑 만들기

검증(채굴)하기

채굴은 블록 단위로 이루어진다

비트코인 거래가 일어나면 이 거래는 비트코인 네트워크에 참여하는 노드에게 알려진다. 이렇게 알려진 거래를 기록하고 공식화하는 과정이 비트코인 채굴(mining)이다. 이 과정은 블록 단위로 일어난다.

채굴은 다음과 같은 과정으로 이루어진다

1. 사용자가 송금 버튼을 누르면 거래내역이 네트워크를 통해 주변 노드로 전파된다.

2. 각 채굴 노드는 거래 내역을 검증한 후, 이들을 모아 하나의 블록으로 만든다.

3. 채굴 노드는 블록에 무작위로 숫자를 더한 후 SHA-256 암호화 함수를 계산한다.

4. 암호화 결과가 일정 난이도를 통과하면 블록 생성이 성공되며, 이 결과가 주변 노드에 전파된다. 이때 블록마다 주어지는 보상금과 각 거래에 포함된 수수료가 블록 생성에 성공한 채굴 노드에 주어진다.

5. 새 블록이 생성되면 각 노드는 올바른 블록인지 검증한 후, 블록에 포함된 정보가 모두 올바른 정보일 경우 승인한다.

이 과정에서 가장 먼저 블록 생성에 성공하는 노드에게만 현상금이 주어지므로, 각 채굴 노드는 현상금을 먼저 받기 위해 경쟁하게 되고, 동시에 다른 채굴 노드가 잘못된 거래가 담긴 블록을 생성할 경우 자신의 이득을 위해 거절하게 된다.

지불내역 확인하기

보상금 지급하기

거래 종료

블록(block) : 비트코인 거래를 약 10분 단위로 모은 것. 채굴이 일어나는 단위 블록체인(block chain) : 현재까지의 블록이 모두 이어진 것으로 현재까지 일어난 모든 비트코인 거래가 시간순으로 기록된 장부. 모두에게 나누어 지는 공개된 공공원장으로, 비트코인 네트워크는 이 원장을 토대로 합니다.

※ 자세한 설명은 ‘[보충설명3] 채굴’ 참조

Page 32: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 32

[보충설명] 거래 과정

거래 시작하기(송금)

거래내역 배포하기

거래내역 받기

지갑 만들기

검증(채굴)하기

채굴의 원리

주머니 안에 1부터 21,000,000까지 숫자가 적힌 공이 들어있다고 가정하자.

눈을 감고 공 하나를 꺼내서 번호를 확인한다. 이 때 꺼낸 공에 적힌 숫자가 50보다 크면 다시 하고, 50보다 작으면 비트코인 하나를 받게 된다. 공을 꺼내고, 확인하고, 다시 넣는 작업을 빠르게 반복할 수록 50보다 작은 수가 적힌 공을 꺼낼 가능성이, 즉 비트코인을 획득하게 될 가능성이 더 높아진다. 그래서 점점 더 비트코인 채굴작업에 최적화된 하드웨어와 소프트웨어가 필요해진다.

너무 많은 사람들이 작업에 참여하거나 성능이 좋은 하드웨어가 등장해서 비트코인이 당첨되는 속도가 빨라지면 '50보다 작은 수'라는 규칙에 의해서 50을 25로 낮추면 당첨자가 나오는 속도를 조절할 수 있다. 비트코인이 인플레이션을 조절하는 방법은 이러한 규칙의 조절에 기반을 두고 있다.

실제 비트코인 채굴과정에서는 SHA-256이라는 해시함수가 사용된다.

<설명>

• 공 21,000,000 개 = 비트코인 발행 개수

• 숫자 50 또는 25 = 10분마다 발행되는 비트코인 수(현재는 25 BTC)

• 눈을 감고 = 특정 법칙이나 공식이 아니라 임의의 수(nonce)를 해시함수에 무작위로 대입하여 무작위로 숫자를 찾아야 함

• 비트코인 획득 가능성 = 무작위적인 과정이기 때문에 다수의 CPU가 필요 장비구입비용, 전기비

• 당첨속도 = 10분만에 풀 수 있도록 거래량에 따라 난이도 조절 알고리즘 내재

지불내역 확인하기

보상금 지급하기

거래 종료

※ 자세한 설명은 ‘[보충설명3] 채굴’ 참조

Page 33: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 33

[보충설명] 거래 과정

거래 시작하기(송금)

거래내역 배포하기

거래내역 받기

지갑 만들기

검증(채굴)하기

‘거래’ = 블록체인에 기록되는 비트코인 지갑들간의 가치의 이동

보내는 주소의 잔액이 송금한 금액보다 큰 경우, 거스름돈을 돌려주는 방식을 취하기 때문에 받는 주소는 2개가 된다. (주소 하나는 보내는 주소와 같다)

지불내역 확인하기

보상금 지급하기

거래 종료

실제 송금한 주소(지갑ID)와 나머지 거스름 돈을 받을 내 주소(지갑 ID)로 분기

비트코인 지갑에서 보내는 주소를 선택하고 받는 주소와 금액을 입력 • 받는이 지갑 ID : xxxxxx • 송금액 : 0.05BTC • 내 잔액 : 0.0996 BTC

실제 송금한 돈 (0.05 BTC)

다시 내가 받는 거스름돈 (0.0496 BTC)

주소가 같음

Page 34: 비트코인 개인간 전자화폐시스템 요약 설명

[보충설명2] 암호화와 디지털 서명

Page 35: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 35

디지털 서명 : 공개키 암호화(Public Key Encryption)

햄히ㅣ향ㅋㅍㅍ이ㅏ햐ㅣㅋㄷㅋ ㅜㄷ잫

개인키 : suZ38&Id

공개키 : myAddr

핳ㅂ킇 wbig ㅣㅛ롷캬ㅌㄱ듙

ㄴㅇㅈ

암호화된 원본

1. 받는 사람의 공개키로 암호화

원본

나의 개인공간 공개된 공간

내가 친구에게만 알려주고 싶은 비밀

복원된 원본 원본

복원된 원본

친구의 개인공간

공개키 : yourAddr

개인키 : dt538&Id

[공개키 암호화]

친구가 자신의 개인키를 이용하여 원본 복원

내가 친구에게 하는 약속

암호화된 원본

내 공개키를 이용하여 누구든지 원문 복원

내가 친구에게만 알려주고 싶은 비밀

내가 친구에게 하는 약속

친구의 공개키를 이용하여 암호화

내 개인키를 이용하여 암호화

2. 보내는 사람의 개인키로 암호화

키가 공개키(Public Key)와 개인키(Private Key)의 쌍으로 이루어져 있는 암호화.

① 개인 키(private key) : 비밀로 유지되는 "키"로서 양쪽에 공유되지 않고 한 쪽만 보유

② 공개 키(public key) : 비밀이 아니며 널리 공유

공개키로 잠근 문서는 개인키로만 열수 있고, 개인키로 잠근 문서는 공개키로만 열수 있다.

각 개별 키의 작업은 단방향 작업으로서 키를 사용하여 자체 작업을 되돌릴 수 없다.

양쪽 키에 사용되는 알고리즘은 한 키를 사용하여 쌍의 반대편 키를 판별할 수 없도록 설계 공개 키를 통해 개인 키를 판별할 수 없다.

Page 36: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 36

디지털 서명 : 해시함수와 해시값

해시 또는 해시값(hash value)은 원본의 고정된 길이의 요약본(fixed length value)

해시는 해시함수(hash function)를 이용하여 만드는데 일반적으로 원본으로 해시를 만드는 것은 쉽지만 반대로 해시로부터 원본을 만들어 내는 것은 불가능하다. 따라서 특정한 해시값을 만들어내는 원본을 찾기위 해서는 모든 경우의 수를 확인해 보는 수 밖에 없다.

비트코인에서는 채굴시 작업의 증거(proof of works)를 제시하거나, 크기가 큰 문서(예를 들어 블록체인)가 변경되었는지 쉽게 확인하는 용도로 주로 사용

비트코인의 채굴은 블록의 요약본(hash)의 값이 주어진 숫자보다 작게 만드는 임의의 숫자(nonce) X를 찾는 것(‘채굴’ 설명 참조)

Nonce : 비트코인은 같은 데이터로도 서로 다른 해시값을 생성하기 위해 Nonce를 사용. Nonce는 해시 작업에 앞서 데이터에 무작위로 추가되는 숫자. Nonce를 바꾸면 해시값도 바뀐다.

• 보내는사람 : 나

• 받는사람 : 친구

• 금액 : 10,000

원본

원본의 해시값

[해시함수와 해시 값]

006a 해시함수로 해시

• 보내는사람 : 나

• 받는사람 : 친구

• 금액 : 50,000

수정된 문서

수정된 문서의 해시값

ed8b 해시함수로 해시

위 그림과 같이 원본이 조금만 변형되어도 완전히 다른 요약본이 나오도록 되어 있어서 두 문서의 원본을 대조하지 않고 해시만 대조하여도 두 문서가 같은지 확인할 수 있다.

Page 37: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 37

디지털 서명

보내는사람 : 나 받는사람 : 친구 금액 : 10,000

006a

보내는사람 : 나 받는사람 : 친구 금액 : 10,000

개인키 : suZ38&Id

공개키 : myAddr

핳ㅂ킇 쥬ㅑㅎ 해시함수로

해시 서명 (암호화된 해시)

원본

해시

원본

나의 개인공간 공개된 공간

내 개인키(zuZ38&Id)를 이용하여 해시를 암호화

보내는사람 : 나 받는사람 : 친구 금액 : 10,000

006a

해시 함수로 해시

원본

원문에서 생성한 해시

친구의 개인공간

공개키 : yourAddr

개인키 : dt538&Id

006a

내 공개키(myAddr)를 이용하여 서명 복원

복원한 해시

= ?

[디지털 서명] 메시지를 보낸 사람을 수학적으로 확인하는 방법

메시지를 보낼 때 내 개인키로 메시지를 암호화하고 이를 메시지에 덧붙여 보내는 것이다(실제로는 원본의 해시를 이용하여 서명).

이 메시지를 받은 사람은 암호화된 메시지 부분을 보낸 사람의 공개키로 열어서 이를 원본 메시지와 비교해 본다. 두 메시지가 같다면 이 메시지는 내가 보낸 것으로 확신할 수 있다.

보내는 문서가 매우 클 때는 전체 문서의 해시를 만들어 이를 개인키로 잠그고 잠근 해시(서명 부분)를 원본 문서에 덧붙여 보내면 효율적으로 서명이 가능하다.

받은 사람은 자신이 직접 계산한 원본 문서의 해시값과 서명 부분을 보낸 사람의 공개키로 열어서 복원한 해시값이 같은지 확인하면 된다.

비트코인 지갑들은 개인 키 또는 씨드라고 하는 비밀정보를 가지고 있으며, 거래를 승인하는데 사용

지갑의 소유주가 거래에 서명했다는 수학적인 증거

비트코인 거래가 승인된 이후에 거래가 타인에 의해 변질되지 않도록 방지하는 역할

Page 38: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 38

디지털 서명/메시지 암호화에서 공개 키 암호화

디지털 서명과 암호화 과정 디지털 서명과 복호화와 해석 과정

Page 39: 비트코인 개인간 전자화폐시스템 요약 설명

[보충설명3] 채굴(Mining)의 원리

Page 40: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 40

채굴 메커니즘

채굴이란 비트코인 거래를 확증(verification)하기 위해 네트워크에 있는 노드(node)들이 자발적으로 참여하여 “특정 조건을 충족시키는 해시(암호값)을 찾아 내는 것”

블록의 요약본(hash)의 값이 주어진 숫자보다 작게 만드는 임의의 숫자(nonce) X를 찾는 것

조건을 만족하는 X를 찾기 위해서는 모든 경우의 수를 대입해야만 한다.(brute force)

비트코인에의 적용

해시함수

해시값

입력값(텍스트)

Ed8b ….

해시함수 (SHA-256)

이전블록 해시값

거래내역 Nonce (32bit)

해시값

Target값과 비교

검증완료

해시값 첫 부분의 ‘0’의 개수보다 많은 ‘0’을

가진 해시값

No (못찾음)

Yes(찾음) • 같은 입력값 같은 해시값 출력 • 해시값에서 입력값 역추적은 불가능

Page 41: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 41

채굴 메커니즘

누군가 컴퓨터를 실행해서 비트코인 채굴작업을 시작하면, 비트코인 공식사이트는 일정한 텍스트, 즉 SHA-256 해시함수에 입력될 내용을 전달해준다.

채굴작업을 수행하는 컴퓨터는 전달된 내용을 해시함수에 넣고 실행한다. 이때 출력된 값이 공식적으로 정해져 있는 값보다 작으면 비트코인을 획득한 것이다.

채굴작업을 수행하는 컴퓨터에서는 해시함수를 실행하기 전에 공식사이트에서 보내준 텍스트에 임의의 텍스트(nonce)를 추가한다. 출력되는 값을 다르게 만들기 위해서 함수에 입력되는 값을 바꾸어 보는 것이다.

결국 비트코인 채굴작업은 이러한 임의의 텍스트, 즉 nonce의 값을 이리저리 바꾸어보면서(즉, 모든 경우의 수를 대입해 보면서) 정해진 값보다 작은 해시 값을 얻을 때까지 함수를 실행하는 과정을 의미한다. 이런 과정은 어려운 수학문제를 풀기 위해서 공식이나 원리를 사용하는 것이 아니라 1부터 1,000,000까지의 수를 일일이 대입해 보는 것과 비슷하다.

이렇게 조건을 만족하는 임의의 수를 찾아 만든 현재 블록의 요약본을 이웃 채굴자에게 알리고 이를 다른 채굴자들이 맞는 것으로 받아들이게 되면 이를 블록의 해를 구했다고 하거나 블록을 찾았다고 한다.

비트코인의 경우 요약본의 크기가 256비트이고, 경우의 수가 10의 77승을 넘는다. 이때 주어진 요약본의 값이 작으면 작을 수록(앞자리의 0의 수가 많을 수록) 조건을 만족하는 X를 찾는 것이 기하급수적으로 어려워진다.

비트코인 채굴과정에서 사용되는 해시 함수

• SHA-256

• 어떤 숫자나 텍스트를 입력하면 256비트로 이루어진 2진수 값을 출력하는 함수(즉, 텍스트를 2진수의 숫자 또는 문자열로 요약하는것)

• 비밀번호나 중요한 내용을 암호화하기 위해서 사용되는 함수로 현존하는 방법 중에서 가장 강력한 것의 하나

• 비가역적 : 입력에서 출력으로 가는 과정은 순식간이지만, 출력된 내용으로부터 입력된 내용을 거꾸로 유추하는 것은 거의 불가능 (예를 들어, 문서 A 를 해싱해서 문서 B 를 만들 수 있지만, 문서 B 를 이용해서 문서 A 를 복원하는 것은 불가능)

• 동일한 입력에 대해서는 언제나 동일한 값을 출력

Page 42: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 42

[참고] 0의 자릿수에 따른 난이도

주어진 요약본의 값이 작으면 작을 수록(앞자리의 0의 수가 많을 수록) 조건을 만족하는 X를 찾는 것이 기하급수적으로 어려워진다.

컴퓨팅 환경 및 사용자 변화와 무관하게 각 block 생성에 걸리는 시간을 일정하게 유지

결국 난이도는 거래(즉, 채굴시 네트워크상의 노드들이 수행하는 연산)의 양에 따라 해시값의 앞에 붙는 0의 개수를 조절하는 것

이 문자열(실제로 해싱되는 값)의 크기가 줄어든다는 것은,

같은 입력값에 대해 요약수준(=추상화 수준)이 더 높아진다는 것을 의미

※ 입력값 : 이전블록해시, 머클트리루트 해시, 시간, bits, version 등

0의 개수가 늘어날 수록 뒤의 문자열의 값의 크기는 줄어들고,

0의 개수가 줄어들 수록 뒤의 문자열의 값의 크기는 늘어난다.

난이도 조정 :

•매 2016 block 마다 조정 (1block/10분 = 2016blocks/2주)

• new Target = old Target × 최근 2016 block 생성에 걸린 시간 (초)

2주 (초)

Page 43: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 43

채굴 메커니즘

채굴자(miner)는 ①현 블록의 해시값, ②현재 거래내역 해시값, ③Nonce의 세 정보를 결합하여 특정조건, 즉 target이라고 불리는 해시 첫 부분의 “0”의 개수보다 많은 0을 가진 해시값을 찾아야 함

채굴자는 임의의 거래내역 일부분(chunk)과 비트코인 사이트에서 제공하는 임의의 수(nonce)를 조합하여 다음 해시값을 계산함

000000000000000135c058d5e52a6cd73b834b4e7395897527e8dd55b3236686

00000000000000057784f105ff6177e6272f2fdca72e358fbad0bec7aa0faee4

블록 Hash 0101 블록 Hash 0102 블록 Hash 0103

+ 현재 블록의 거래내역

(Transaction)

Nonce

+

+

Nonce

+

+

Nonce

+

현 블록의 해시값

다음 블록의 해시값

현재 블록의 거래내역 (Transaction)

현재 블록의 거래내역 (Transaction)

특정조건을 충족시키는, 즉 leading zero 수가 target보다 많은 해시값을 찾게 되면 현블록에 있는거래가 “정상거래”로 확증되고 다음 블록이 열리며 거래정보가 새 블록에 쌓이기 시작함

Page 44: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 44

채굴 메커니즘

거래된 비트코읶 총액

포함된 거래 수

해시값을 푸는데 사용된 nonce 값

현 블록의 해시값

이전 블록의 해시값

피닉스에 있는 채굴자가 3가지 정보를 사용하여 풀어낸 다 음 블록의 해시값 (채굴 성공 100개의 거래가 정상임을 확정)

https://blockchain.info를 방문하면 최신까지 채굴된 블록 정보를 볼 수 있음

Page 45: 비트코인 개인간 전자화폐시스템 요약 설명

[보충설명4] 이중거래를 막아라

Page 46: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 46

이중거래 방지

가정

기존 block에서 사용되고 확인된 output을 새로운 transaction에 input으로 사용하는 것은 불가능

모든 transaction은 block에 추가되어야 거래가 완료.

즉, 이중 사용을 위해서는 동일 output을 포함한 transaction이 서로 다른 branch에 나뉘어 있어야 함

Branch 통합 후

사라진 branch에 포함된 transaction 중 기존 block chain에 포함되지 않은 transaction은 새로운 block에서 흡수

이중 사용 transaction은 새로운 block에서 제외됨

Page 47: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 47

이중거래 방지 메커니즘1

정당하지 못한 수단으로 비트코인을 획득하는방법 ;

1. 근거없이 허위로 만들어내는것(creating value out of thin air)

2. 자기 것이 아닌 것을 훔치는 것(taking money that never belonged to the attacker)

3. 자신의 거래내역을 조작하여 재사용하는 것(double-spending, 중복사용)

비트코인은 채굴을 통해 통화량이 공급되기 때문에 현재 거래내역이 쌓이는 블록번호에 따라 총통화량이 자동 계산됨. 따라서 임의로 새로운 통화를 만들면 바로 들통이 남

거래에서 수신자의 공개키와 송신자의 비밀키가 결합되기 때문에 수신자의 비밀키가 없는 사람은 거래에서 전송된 비트코인 자체를 열어볼 수 없음(즉 전달되지않음, 거래되지 못함)

이 문제를 풀기 위해 도입한 것이 바로 proof-of-work 시스템. 0

10

20

30

현재

50

0

7백만

14백만

21백만

2009 2024 2040

2056 2072 2088 2104 2120 2136

누적 통화량 (좌측 축 기준)

채굴당 지급되는 보상금 (우측 축 기준)

40

Page 48: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 48

The longest chain wins

한 사람이 비트코인을 중복 사용하면 그 거래 내역이 각각의 노드로 전파될 때, 각 노드는 “충돌”하는 내역을 가진 두 거래 중 하나 만을 접수(먼저 도착하는 거래 내역)

노드들 중 일부는 거래A를 가지고, 나머지 일부는 거래B를 가지고 작업을 수행(채굴)

채굴자 진영은 둘로 나뉘어 서로 다른 거래 내역을 담은 데이터를 바탕으로 채굴 경쟁

그러다 한 진영이 먼저 다음 블록을 만들어 내는 순간, 즉 한 진영이 만들어 내는 블록체인의 길이가 다른 한 쪽의 블록체인보다 길어지는 순간 경쟁은 종료!

가장 긴 블록체인의 블록이 전체 네트워크로 전파되고, 모든 노드들은 그 가장 긴 체인의 끝에 있는 블록을 가지고 다음 채굴 작업을 시작하게 됨

따라서 한 사람이 비트코인을 중복 사용할 경우, 두 거래 중 가장 긴 블록체인을 만들어 내는 쪽에 접수된 거래만 “정상”적인 것으로 처리되며, 긴 블록체인 만들기 경쟁에서 실패한 블록에 포함된 거래는 “비정상” 거래로 간주되어 자동으로 폐기됨

. . .

거래B를 포함하여 찿 굴에 성공했을 때 만들어지는 블록

경쟁에서 진 블록체인이 다룬 거래B도 비정상 거래로 간주되어 폐기됨

거래A을 포함하여 채굴에 성공했을 때 만들어지는 블록

블록 n 블록 1 블록 2 블록 n+1 블록 n+2 블록 n+3 블록 n+4

블록 n+1 블록 n+2 블록 n+3

중복 사용

모듞 P2P 네트워크으로 운영되는 시스템은 “합의(consensus) 도출”이라는 커다란 문제에 직면

널리 퍼져 잇고 중앙통제 시스템이 없는 관계로 의사 결정에 어려움이 발생

Page 49: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 49

채굴 난이도의 조정

비트코인은 "Byzantine Generals" 문제 해결을 위해 세 가지 아이디어를 결합함

① 채굴에 따른 인센티브 제공 : 25 BTC) 지급

② 게임 (혹은 도박) 요소 추가 : 승자 한 사람에게만 지급

③ proof-of-work : 약 10분 마다 문제를 풀어 현 블록에 담긴 거래 내역을 암호화하고 그 해시값을 다음 블록으로 전달하는 과정을 계속적으로 반복

평균적으로 약 10분마다 채굴(mining)이 성공하도록 만들어주는 메커니즘

블록 해시값 첫 부분의 ‘zero’ 수가 많을 수록 풀기 어려운 문제

난이도(difficulty) 조작 : 이 첫 부분의 ‘zero’수를 약 2주마다 업데이트 함.

10 분마다 채굴이 성공하면 2주 동안 2,016개의 블록이 만들어 짐

2,016개의 블록이 2주일이 되기도 전에 만들어지면 난이도가 올라가고, 2주일보다 늦어지면 난이도가 내려가도록 프로그램 되어 있음

채굴 시간은 채굴 참여자 수와 컴퓨팅 파워에 따라 변동됨

2주동안 계산되는 해시 수

이동 평균 (컴퓨팅 파워)

• 매 2016 block 마다 조정 (1block/10분 = 2016blocks/2주)

• new Target = old Target × 최근 2016 block 생성에 걸린 시간 (초)

2주 (초)

Page 50: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 50

과반수 이상의 협업

The longest chain wins 즉, Winning block chain은 “충성스럽고 정직한” 채굴자들의 “작업증명(Proof-of-Work)”이며 과반수 이상의 채굴자들이 정직하게 협업하게 되면 “공격자”들이 유포하는 거짓 정보는 자연스럽게 소멸됨

다수의 정직한 참여자들이 협업하면 “부정직한” 네트워크 공격자보다 훨씬 빠르게 일을 해 나갈 수 있으며 그 결과 가장 긴 블록 체인(the longest block chain)을 만들어 내고 이를 활용하여 공격자들의 거짓 정보를 무력화시킴

Page 51: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 51

이중거래 방지 메커니즘2

정당하지 못한 수단으로 비트코인을 획득하는방법 ;

1. 근거없이 허위로 만들어내는것(creating value out of thin air)

2. 자기 것이 아닌 것을 훔치는 것(taking money that never belonged to the attacker)

3. 자신의 거래내역을 조작하여 재사용하는 것(double-spending, 중복사용)

해킹을 하기 위해서는,

① 정상블록의 해시를 역으로 계산하여 거래 정보를 얻고

② 이 거래 정보를 다시 해킹하여 자신이 거래한 내역을 다른 곳에 사용하는 내역을 만들고

③ 이 해시값을 가지고 다시 다음 블록을 만든 후 다른 거래 기록들을 더하여 계속 블록 체인을 만들어

④ 결국에는 그 블록 체인 길이를 “정상 블록 체인”보다 빠르게 증가시켜야 하는데 이는 거의 불가능함

• 한 기사에 따르면 2011년 중반 새로운 블록를 만들기 위해 채굴자들이 해야 하는 해시값 계산 횟수는 7,500조 이상이었다고 함 (정확히는 7,539,609,386,691,347번, http://goo.gl/1nqJAX 참조)

• 약 10분에 한 번씩 채굴 경쟁을 지속해야 하는데 특정 집단이 나머지 전체가 작업하는 컴퓨팅 파워를 지속적으로 압도하지 않을 경우 결국 블록 체인 만들기 경쟁에서 지게 되어 있으므로 해킹은 경제적으로 매우 “비경제적인” 행위가 됨

Page 52: 비트코인 개인간 전자화폐시스템 요약 설명

기타 알아두면 좋을 것들…

Page 53: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 53

비트코인의 단점과 한계

1. 정부의 통제를 받지 않는다. 지금은 정부가 통화량을 관리하고 돈을 찍어낼 수 있으므로 경기가 과열되거나 침체가 올 때 통제를 할 수가 있지만, 만약 세계 경제가 비트코인으로만 움직인다고 하면 그런 통제가 어려워지므로 경기 파동이 지나치게 커질 수 있다.

2. 트랜잭션에 시간이 많이 걸린다. 한 사람이 동시에 두 곳 이상으로 비트코인을 보내는 것을 방지하기 위해 전 세계에서 발생하는 비트코인 트랜잭션을 검사하고, 거래의 유효성을 확인하기까지 10~20분 걸림. 일상적인 거래에서는 너무 긴 시간

3. 분실 시 재발급 또는 거래 취소할 수 없다. 신용카드는 잃어버려도 분실 신고 후 재발급 받으면 그만이지만, 비트코인은 현금과 같아서 잃어버리면 끝이다. 비트코인을 보내고 나면 되돌려받을 길이 없다.

4. 당분간은 비트코인의 가치가 주식과 같이 급상승하거나 급락할 가능성이 크다. 화폐로써의 안정성 문제 비트코인으로 거래를 해 놓고 누군가는 후회할 가능성이 크다는 뜻이다. 앞으로도, 비트코인이 시장에 퍼진 후에, ‘큰 손’이 비트코인을 모두 털고 나가기로 결정하면 비트코인 가격이 폭락할 위험도 있다. 특히 가장 거래규모가 큰 중국시장에 대한 중국정부의 규제가 어떻게 나올 지도 위험 요소이다.

5. 비트코인을 이용한 서비스에 대한 보안이 취약하다. 비트코인 거래소나 개인 지갑을 해킹할 수 있다. 2014년 2월 비트코인 거래소 마운트곡스가 해킹당하여 4억 7천만 달러가 사라짐.

6. 일반인은 비트코인을 얻기가 매우 어렵다. 컴퓨터의 연산 속도가 빠르지 않고, 대규모로 투자하지 않고는 일반인이 채굴을 통해 비트코인을 얻기 위해서는 비싼 돈 주고 거래소에서 사는 수밖에

Page 54: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 54

가격 추이

Page 55: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 55

시장 가격 추이(USD)

2013.3 키프러스 사태

2013.11.19 미국 상원 의원 공청회

2013.11.18 버냉키 의장 발언 미국의회 청문회

2013.10. 중국 바이두, 비트코인을 결제수단으로 허용

2014.2.26 비트코인거래소 마운트곡스 파산

2014.2.7 러시아 - 비트코인 사용 금지 인도네시아 - 비트코인 화폐 아니다 마운트곡스 – 비트코인 환전 일시 중지

2015.1. 독일 주요 은행, 비트코인 관련 입출금 전면 차단 2013.12

중국인민은행, 금융기관의 비트코인 거래를 금지

2008.8.18 누군가가 bitcoin.org 등록

2009.1.3 최초 블록(Genesis block) 생성 2009.1.12 최초의 비트코인 송금(10BTC)

2011.2.9 마운트곡스, 1BTC = 1USD

Page 56: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 56

어떻게 가치를 갖는가? 실체도 없는 컴퓨터 코드가 어떻게 해서 ‘가치’를 갖게 되는가?

화폐 자체의 ‘희소성’과 채굴에 드는 ‘시간과 노력’.

2,100만개로 한정되어 있으며, 시간이 지날수록 더 비트코인을 얻기 힘들고, 더 고가의 장비가 필요하도록 설계되어 있기 때문에 가치가 상승할 내재적 가능성이 있다.

사람 대신 ‘기계(CPU)가 노가다를 해서’ 코인을 획득해야 한다. 몇 천 달러를 주고 사야 하고, 전기도 많이 든다. 이렇게 ‘투자’를 해야만 비트코인을 얻을 수 있기 때문에 그 결과물은 일정이상의 가치를 지닌다.

Page 57: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 57

The Blockchain Application Stack

오버레이 네트워크(Overlay network) • 물리 네트워크 위에 성립되는 가상의 컴퓨터 네트워크 • 오버레이 네트워크 안의 노드는 가상, 논리 링크로 연결될 수 있으며, 각 링크는 네트워크 안에서 많은 물리적 링크를 통하지만 물리적 링크를 고려하지는 않는다.

• P2P 네트워크

분권화된 프로토콜(Decentralized protocol) • 인터넷이라는 신뢰할 수 없는 공간에서 서로 모르는 사용자들이 ‘협업’과 ‘협조’를 할 수 있는 프로토콜

• 그 누구도 그걸 소유하지 않기 때문에 분권화된(decentralized) 프로토콜이라 부름

Page 58: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted 58

관련 사이트

비트코인 공식 사이트 https://bitcoin.org/ko/ : 비트코인 소개와 관련 자료 제공 https://en.bitcoin.it/wiki/Main_Page : 비트코인 위키

지갑만들기

https://blockchain.info/ko/ : 비트코인 지갑을 만들고 비트코인과 관련된 정보들을 조회 거래소

· BTCChina - 중국에 있는 세계 최대 거래소. 중국 위안화만으로 거래되는 거의 중국 국내 전용. · Bitstamp - 슬로베니아. · 코빗 - 원화로 거래 가능한 한국 비트코인 거래소.

비트코인 시세 추이

· bitcoincharts - 비트코인의 거래소별 시세 추이 등을 확인할 수 있는 사이트. 비트코인 거래 사업장 위치

coinmap.org : 지도상에서 비트코인을 거래할 수 있는 곳을 알려줌

Page 59: 비트코인 개인간 전자화폐시스템 요약 설명

© Copyright 2014 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice. HP Restricted

C03934969, January 2014

Thank you