티스토리 뷰

비트코인 공부

Mining & Difficulty

bitlog 2022. 9. 13. 17:15

채굴 난이도

2016 블록마다 채굴난이도가 조절된다.

 

하나의 블록이 정확히 10분마다 생성된다고 할 때 14일이면 2016 블록이 생성되게 된다.

 

난이도 조절은 아래와 같이 20160 분을 이전 2016 블록이 생성되는 데 소요된 실제 시간(분)으로 나눈 값을 구한 뒤

expected / actual
20160 / 소요된시간(분)

 

해당 계산 값으로 이전 difficulty 값에 곱해주면 다음 difficulty 값이 된다.

difficulty x (20160 / actual ) = new difficulty

 

난이도는 한번에 최대 0.25 ~ 4 배까지만 조정될 수 있다. difficulty 는 최초 비트코인이 채굴되던 당시에 비해서 난이도가 몇배나 더  어려워졌는지를 의미한다.

 

갑자기 1초에 1채굴하는 머신이 등장한다면?

https://twitter.com/silentgeforce65/status/1571998581313380353

 

트위터에서 즐기는 아빠⚡️우리집은 왜 비트코인 없어?

“1초만에 1블록을 채굴할 수 있는 컴퓨팅파워 양자컴퓨터가 나온다면, 2016초만에 2016블록(난이도조정)을 채굴, 33분만에 난이도 4배상승, 4초1블록, 2.2시간만에 난이도 상승,16초1블록, 9시간만에

twitter.com

 

 

target

채굴작업은 블록 안에 포함되어 있는 Nonce 값을 조절하여 Difficulty 에 의해 정해진 target 보다 낮은 해시값을 찾아 내는 일이다.

target 값은 아래와 같이 계산된다.

targetmax = 0x00000000ffff0000000000000000000000000000000000000000000000000000
target = targetmax / difficulty

 

그러므로 difficulty 값이 증가한다는 것은 target 값이 작아짐을 의미하며 target 이 작아진다는 의미는 그만큼 target 값보다 작은 hash 값을 얻을 수 있을 확률이 작아진다는 것이다.

 

결국 채굴자에게는 더 많은 해시 연산이 요구되어게 된다.이는 곧 채굴비용의 증가를 의미한다.

 

 

블록헤더에 채굴난이도(target)는 Bits 값만 저장된다.

https://github.com/bitcoin/bitcoin/blob/master/src/primitives/block.h#L24-L30

difficulty 값은 bits 로부터 계산되어질 수 있다.

 

 

 

Bits

Bits 는 블록헤더에 채굴난이도를 표시(저장)하는 방법으로 4바이트를 사용한다.

https://learnmeabitcoin.com/technical/bits

 

 

 

 

보상

채굴에 성공하면 채굴자는 비트코인을 보상으로 받게된다. 현재는 6.25개의 비트코인을 보상으로 받는다. 이 보상이라는 것은 다른 누군가가 나에게 코인을 보내주는 방식이 아니고 채굴한 블록의 가장 위쪽에 COINBASE 트랜잭션을 채굴자가 스스로 추가하는 것이다. 그리고 그 내용이 문제가 없다면 비트코인 노드들은 이를 자동으로 승인한다. 해당 트랜잭션은 해당 블록에 포함된 모든 수수료와 채굴된 비트코인을 모두 더한 값을 전송금액으로 하는 input 이 없는 새로운 UTXO 이다. 물론 수신 주소는 채굴자 자신의 비트코인 주소가 될 것이다.

 

 

 

Ref.

https://twitter.com/kcalvinalvinn/status/1635197663955271683

 

728x90
반응형
댓글
250x250
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함