티스토리 뷰
채굴 난이도
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
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
'비트코인 공부' 카테고리의 다른 글
제네시스 블록에 숨겨진 메세지 (0) | 2022.10.04 |
---|---|
주소 채굴 함수 `buildaddr` (3) | 2022.09.13 |
지구를 구하는 것은 그린피스가 아니고 비트코인이다 (4) | 2022.09.11 |
니모닉(Mnemonic), 조금 더 깊게 들어가 보자 (0) | 2022.09.08 |
나만의 특별한 의미있는 비트코인 주소 사용하기 (2) | 2022.09.07 |