본문 바로가기

이론/보안

[컴퓨터보안] 비트코인 및 작업증명, Timestamp Server

인트로

 

1) Timestamp Server 

 

2) 작업증명, Nonce의 의미

 

- 작업증명, Nonce, 채굴자가 얻는 Incentive

 

3) 머클 트리

 

- 머클트리의 구조도

 

4) 비트코인의 안전성

 


 

1) Timestamp Server 

 

10분 단위로 P2P(Peer to Peer)에 broadcasting된 

 

모든 거래내역(거래내역 A,거래내역 B,거래내역 C, 거래내역 D, 거래내역 E...)을 모아서 하나의 블럭(block)을 생성한다. 

 

현재까지 생성된 모든 block들에 대한 chained-timestamp를 생성한다. 

 

(이전 거래내역에 대한 증명서를 모두 포함한다) 

 

블록체인(Block-Chain)  

 

timestamp = Hash(이전 블락의 해쉬값 + 현재 블락의 내용)  

 

이전 모든 거래 정보가 chained-hash값으로 저장되고, 모든 사용자에게 공유된다. 

 

(P2P네트워크이기때문에 모든 사용자에게 공유 된다.)  

 

이전 모든 거래 내역에 대한 증명을 포함하고 있기 때문에,

 

거래 내역에 대해 위조 불가하다(변경이 불가하다). 

 

누구나 timestamp를 생성하되, 위변조가 쉽지 않다. 

 

이중 지불 방지 기능을 제공한다. 

 



2) 작업 증명 - 분산 환경에서의 Timestamp 구현 , Nonce 의 의미 


제 3의 신뢰기관인 은행이 없어서, chained-timestamp를 사용자가 수행한다.

 

chained-timestamp란, 

현재까지 생성된 모든 블록들에 대해 

Chain형태로 모아 하나의 block으로 생성한 형태를 말한다.

 

작업 증명이란, 새로운 block에 대한 해시값을 찾아내는 작업이다. 

 

즉,  Nonce 를 찾아내는 작업이다.


채굴이란, 작업증명을 수행하는 과정을 뜻한다. 


작업 증명을 끝낸 최초의 사용자에게 인센티브(incentive)를 지급하는데, 

 

이때 새로운 비트코인이 발행되면서 채굴자가 화폐를 제조한다.

 

즉 채굴자가 새로운 비트코인을 갖게 되는것이다.

 
이는 화폐 제조 권한이 은행이아니라 채굴자에게 분산되는 것을 의미한다.

블록 해시의 조건 : 블록의 앞자리 18자리가 모두 0이어야한다.

 

Hash(이전 블록의 Hash값+현재블록의 거래내역들 + Nonce) 의 앞자리 18비트가 모두 0으로 채워져야한다.

 

Nonce란, 

Hash결과값의 18비트가 0으로 되게 만들어주는 random number이다. 

 

 



이 Nonce 값을 먼저 찾는 사람이 성공이고, 

 

Nonce가 가질 수 있는 모든 경우의 수를 찾아봐야하기 때문에 시간이 오래걸린다.

한 블록에 대한 작업 증명이 완료되어야, 실제 블록 내에 포함된 모든 거래의 이체가 완료된다. 


채굴자가 얻는 Incentive

작업 증명 완료시(Nonce값을 찾아낼 경우), 해당 사용자에게 인센티브를 지급한다.

Incentive 액수가 4년마다 반감기를 가지기 때문에, 비트코인 발행량이 점점 감소되는 것을 뜻한다.

최초에 채굴자가 작업증명을 완료할 경우, 50코인을 발행하였지만,  현재12.5코인을 발행한다.

전체 비트코인은 약 2100만 코인으로 한정되어있다. 

 

전체 코인은 한정되어있는데 채굴량이 많아지다 보니 점점 채굴하기 어려워지고 있다.  

 




3) Merkle Tree (머클트리) 

Block header에는 해당 모든 거래내역을 요약해서

 

작은 사이즈의 용량으로 필요한 정보(이전 Hash값, Nonce, Root Hash) 만을 담는다. 

여기저기 분산되어 저장되어있는 각 transaction(거래 내역)들의 Hash값들을 2개씩 묶어 Hash하여, 

 

최종 root hash값을 block header에 담는 방식이다.

이때 root Hash는 N개의 transaction에 대한 최종 Hash 값으로, 

root Hash 만 찾으면 거래 내역들을 모두 찾을 수 있다. 

 

(하나의 transaction을 찾기 위해 모두 검색하지 않아도 된다.) 

 

머클트리 구조

 



4) Bitcoin의 안전성

비트코인을 채굴하는 구조가 비트코인의 안전성을 보장한다.


즉, 거래내역에 대한 작업 증명 생성 과정의 안정성이 비트코인의 안전성을 보장한다.


정직한 채굴자가 악의적인 채굴자(공격자)보다 많으면 안전성이 보장된다.


정직한 채굴자가 많으면 올바른 블록체인을 먼저 생성할 확률이 높다.


가장 긴 블록체인이 가장 정확하다.


P2P (Peer to Peer) 구조이다보니 모든 사용자에게 모든 블럭이 공유된다. 


그러다 보니 사용자들은 가장 긴 블록체인을 기준으로 새로운 블록체인을 생성한다.


해커(공격자)가 과거 거래 내역을 위조하는 것이 불가능하다.


해커가 현재 블록을 위조하고 싶을 경우, 

 

위조하고 싶은 시점의 과거 거래내역의 블록부터 현재 블록을 포함한 모든 블록의 증명을 위조해야 한다.


즉, 현재 블럭에 대한 증명 위변조와 이미 증명이 끝난 거래에 대한 위변조가 일어나야하는데,

 

이의 과정이 10분안에 이루어져야한다. (10분에 1~2개의 블록 생성)==> 현재 기술로써는 불가능하다.