외부 요인을 시작으로 변경되는 해시레이트에 따라서 블록 생성 시간, 난이도, 타겟값 같은 변수들이 길항관계를 이루며 순차적으로 변경됩니다.
비트코인은 아래의 과정을 2016블록마다 반복함으로써 블록 생성 시간을 10분에 맞춥니다.
코인 가격이 내려가서 채굴자들이 침을 뱉고 나가면, 해시레이트가 줄어든다.
해시레이트가 줄어들면 블록 생성 시간이 10분보다 오래 걸리고 비트코인은 난이도를 낮춘다.
난이도가 내려가면 타겟값이 커진다.
타겟값이 커지면 채굴자들이 논스값을 빨리 맞추게 되서 블럭 생성 시간이 줄어든다.
반대로,
코인 가격이 올라가서 채굴자들이 침을 삼키고 들어오면, 혹은 그래픽카드가 발달하면, 해시레이트가 증가한다.
해시레이트가 증가하면 블록 생성 시간이 10분 보다 적게 걸리고 비트코인은 난이도를 높인다.
난이도가 높아지면 타겟값이 내려간다.
타겟값이 내려가면 블럭 생성 시간이 늘어난다.
실습) 실제 트렌젝션의 타겟값을 구하고, 해시값이 타겟값보다 낮은지 확인해보기
위 사이트에 가면 특정 트렌젝션에 대한 정보를 볼 수 있는데, 여기서 사용할 정보는 Hash와 Difficulty입니다.
1. 제네시스 블록의 타겟값 구하기
첫번째 블록의 난이도는 0x1d00ffff로 정의되어 있습니다
0x00ffff * 2^(8*(0x1d - 3)) = 0x00000000FFFF0000000000000000000000000000000000000000000000000000
A * 2^(8*(B - 3)), A는 난이도의 뒷 6자리, B는 난이도의 앞 두자리
라는 식으로 제네시스 블록의 타겟값을 구할 수 있습니다. (여튼 그럼...)
2. 현재 블록의 타겟값 구하기
현재 블럭의 난이도 = 제네시스 블록의 타겟값 / 현재 타겟값 이라는 공식이 또 있습니다.
여기서 알고있는 두 값을 통해 현재블록의 타겟값을 구할 수 있습니다.
제네시스 블록의 타겟값을 10진수로 변환하면 2.695953529101131e+67 (대충 겁나 큰 숫자)
현재 난이도는 32,045,359,565,303
제네시스 블록의 타겟값 / 난이도 = 현재 타겟값 이므로
2.695953529101131e+67 / 32,045,359,565,303 = 8.412929565066154e+53
현재 타겟값은 8.412929565066154e+53이 되겠습니다.
3.현재 타겟값과 해시값 비교하기
현재 보고있는 #754,283번째의 해쉬값과 16진수로 변환한 #754,283번째의 타겟값을 비교해보겠습니다.
754284번째의 타겟값 : 0000 0000 0000 0000 0008 c894 0000 000b 0000 0000 0000 0000 0000 0000 0000 0000
754284번째의 해시값 : 0000 0000 0000 0000 0007 fcca 7a8c 980f 8493 8ca7 cc05 1f7b 2831 2567 f96a 2aab
해시값 < 타겟값
이렇게 해시값이 타겟값보다 낮은 값이 나왔기 때문에 블록이 생성되었습니다.
'BlockChain' 카테고리의 다른 글
tx.wait()으로 트랜젝션 마이닝 기다려주기 (0) | 2023.08.22 |
---|---|
Byzantine Failure란? ( 비잔틴 장군 문제 ) (0) | 2022.11.13 |
비트코인 채굴, POW는 낭비인가 (0) | 2022.09.17 |