본문 바로가기
정보 보안/블록체인

채굴의 구체적 과정

by tryotto 2020. 2. 27.

# 채굴의 구체적 과정


1) 블록체인 구조 (블록 바디, 블록 헤더) 중, 블록헤더를 보자

2) 블록 헤더의 여러 내용물들은 그대로 주어지되, "논스(nonce)" 값만 비어있는 상태로 채굴 희망자들에게 "빈 블록"이 주어진다

3) 채굴자들은, 빈 블록 안에 임의의 nonce 들을 하나씩 넣어가며, 그때마다 "블록 해시" 값을 구해낸다

       > 블록해시 : 블록 헤더의 6가지 값들을 합산해서 해싱한 결괏값이다

4) 이때의 블록 해시 값이, target 값보다 작을경우, "문제를 해결했다" 고 지칭한다

       > target 값은 자율적으로 조정되는 값이지 않을까 싶다 (비트코인의 경우, 시간이 지날수록 난이도를 조절한다는 부분에서 추측했음)

5) 따라서, 문제를 해결한 경우엔, 해당 채굴자에게 블록이 주어진다. (논스가 채워진 채로!)





# 채굴의 보상 시점


- 보상 시점 : 채굴하자마자 받을 수 없다!

       Why? 생성해낸 블록이 진짜 블록인지 증명하는 과정이 필요


- 진짜 블록인지 증명하는 과정이 대체 왜 필요하지?

       1) 악의적인 블록의 경우 :

- 실제 블록이 아직 채굴되지도 않은 시점에, 대충 어림짐작한 논스 값을 넣어서, 진짜 블록이라고 우길 수 있다

     Why? 모든 암호화폐 거래 기록은 투명하게 공개되어 있음 + 논스 값을 제외한 값들은 진짜 블록 값이랑 일치됨

-> 당연한거! ㅋㅋ. 예를 들면, 서울대끼리 모이는 모임이 있는데, 웬 사기꾼이 자기가 서울대생이라고 우기고 모임에 참석하려 할 수 있음

-> 당연하게도, 그러면 학번 조회하거나 학사팀에 연락해서 사실인지 확인하는 과정이 필요함.


       2) Stale Block (스테일 블록) 때문 :

- Stale Block 정의 : 

      1) 여러 번, 블록들이 "동시에" 다른 채굴자들에 의해서 채굴될 경우, 그 뒤로도 "누가 더 빨리", "누가 더 많이" 채굴하는지를 지켜봄

      2) "더 빨리", "더 많이" 채굴한 채굴자에게, 여태껏 주지 않았던 블록과 그 보상 수수료를 한꺼번에 준다

> 이때, "보상을 받지 못한" 블록들, 이제는 빈 깡통이 되어버린 블록들을, "Stale Block" 이라고 부른다


- Stale Block 인지 아닌지를 확인하기 위해서는 최소한 몇 번의 턴이 지나야 알 수 있다

      > 따라서, 채굴이 된 뒤, 일정 시간이 지난 뒤에야 실제 채굴에 대한 보상이 주어지도록 하고 있다.

(비트코인이 이 논리 구조를 사용한다)





# 비트코인의 발행 주체와 발행량


- 채굴자 본인이 발행하고, 채굴한다

      How? 블록 바디에, 채굴할 블록의 번호와, 수수료를 기입한다

      > 이때, "백지수표"가 아니다!! 정해진 수수료를 써야하며, 

채굴할 블록의 번호도 본인이 작성한다고 하지만 사실상 "현재 채굴 가능한" 블록의 번호를 쓰는 것이다.

      > 비유를 하자면, 그냥 물건 사는거랑 똑같다.

아직 출시도 되지 않은 물건을 살 수도 없으며, 만원짜리 물건을 천원에 살 수 없다.

그러나 돈을 내서 물건을 사려는 주체는 "본인" 이다.

>> 이런 측면에서 "본인이" 발행하고 채굴하는것. 사실 큰 의미는 없다.


- 비트코인의 채굴 보상 지급 시기 : 100~120 개의 노드가 추가적으로 발행 되고 나서야 해당되는 보상이 주어진다 

> Stale Block 의 비율이 높기도 하고, 외부 공격이 많아서 그러는듯.


'정보 보안 > 블록체인' 카테고리의 다른 글

암호화폐의 해싱  (0) 2020.02.27
채굴이란?  (0) 2020.02.27
합의 알고리즘  (0) 2020.02.27
암호화폐 지갑  (0) 2020.02.27
블록 체인의 구조  (0) 2020.02.27