본문 바로가기
Hack/Cryptocurrency

BlockChain의 채굴 난이도(Bits)

by Becoming a Hacker 2022. 7. 13.
반응형

BlockChain의 PoW(Proof of Work) 증명 방식에서 채굴 과정은 nonce에 임의의 값을 입력하여 나오는 해시 값이 특정 목표 값보다 낮은 값을 찾기 위한 과정입니다.

 

만약 최대로 나올 수 있는 해시 값이 1억이라고 가정한다면, 목표 값이 1000만인 것과 100만인 것 중 어느 것이 더 빨리 찾을 수 있을까요? 이는 수학적으로 매우 쉽게 답변할 수 있습니다.

1. 목표 값이 1000만인 경우 목표 값보다 낮은 값을 찾을 확률은 10%(1000만/1억*100) 입니다.

2. 목표 값이 100만인  경우 목표 값보다 낮은 값을 찾을 확률은 1%(100만/1억*100) 입니다.

3. 따라서 목표 값이 1000만인 경우가 더 빨리 찾을 수 있습니다.

 

PoW 증명 방식의 채굴 과정에서도 이렇게 특정 목표 값을 변경함으로써 채굴의 난이도를 설정하고 있습니다. 그리고 이 특정 목표 값이 바로 Bits 입니다.

 

아래의 사진은 https://www.blockchain.com/에서 12552 블록을 검색한 화면 입니다. 여기서 Bits는 440711666인 것을 알 수 있습니다.

 

Bits 값은 지수(첫 1Byte)와 계수(이후 3Byte)로 이뤄져있으며, 계수와 지수를 공식에 맞춰 대입할 경우 목표 값을 알 수 있습니다.

공식 : 목표 값 = 계수 * 2 ^ ( 8 * (지수-3) )

Bits = 440711666 (0x1A44B9F2)

지수=0x1A

계수=0x44B9F2

공식 : 0x44B9F2*2^(8*(0x1A-3)) = 0x00000000000044b9f20000000000000000000000000000000000000000000000

 

해당 블록의 해시 값과 공식을 통해 나온 목표 값을 비교해봤을 때 해시 값이 더 작은 것을 알 수 있습니다. (채굴 성공)

해시 값 : 0x00000000000000001e8d6829a8a21adc5d38d0a473b144b6765798e61f98bd1d

목표 값 : 0x00000000000044b9f20000000000000000000000000000000000000000000000

 

지금까지 본 내용과 같이 채굴자들은 채굴 되기 전의 블록을 전달받으면 Nonce 값을 바꿔가면서 목표 값보다 낮은 해시 값이 나오는 값을 찾습니다. 만약 목표 값보다 낮은 해시 값이 나오는 Nonce 값을 찾았을 경우 해당 블록에 대한 보상을 받아가게 됩니다.

※ Bitcoin의 채굴 최초 보상은 50BTC였지만 21만개의 블록이 추가될 때마다 절반씩 줄어들어 최종적으론 발행량이 0이 되도록 설계되어 있습니다.

 

Bits 값에 따라 목표 값이 달라지면서 채굴의 난이도를 설정할 수 있기 때문에 Bitcoin에서는 2016개의 블록을 주기로 블록이 형성된 시간을 체크하여 10분에 블록이 1개 생성될 수 있도록 난이도를 조절하고 있습니다.

 

댓글