"비츠"의 두 판 사이의 차이
15번째 줄: | 15번째 줄: | ||
현재 그림의 블럭의 해쉬(hash)값은 000000000000000041cbd5ba9607416285167b4b6ff65bda651ac0f55e03bbd6 이고, 이전 블럭의 해쉬값은 000000000000000005fca80796201fe3fbdf2b695b64feb84e60b5d0c4ba2a99이다. 하지만 블록의 해쉬값을 간단히 나타내기 위해서, 위 해쉬값 중에서 앞의 0인 부분을 없애고 1cbd5ba9607416285167b4b6ff65bda651ac0f55e03bbd6 만을 표시하며, 이것이 지갑에는 트랜액션 아이디([[Transaction id]]) , 텍시드([[Txid]]) 라고 표시된다. 그리고 이것이 현재 블록을 구분하는 이름과 같은 역할을 하며, 따라서 거래는 이 블럭 해쉬값인 Txid에 의해서 구별되고, blockexplerer에서 블록 해쉬값을 입력하면 거래 내역을 바로 알 수 있다. 블록체인은 그림과 같이 json 데이터에서 현 블록에 이전 블럭의 해쉬값(prev_block)이 포함되는 것을 말한다. 비트코인의 난이도는 블럭헤더의 비츠“bits” 값과 직접적인 관계가 있다는 것만 지금 이해하면 된다.<ref>하나로움-〈[http://hanaloum.blogspot.com/2014/06/block-1_9584.html 비트코인의 블러에 대한 이해 1]〉, 《투게더》2014-06-18</ref> | 현재 그림의 블럭의 해쉬(hash)값은 000000000000000041cbd5ba9607416285167b4b6ff65bda651ac0f55e03bbd6 이고, 이전 블럭의 해쉬값은 000000000000000005fca80796201fe3fbdf2b695b64feb84e60b5d0c4ba2a99이다. 하지만 블록의 해쉬값을 간단히 나타내기 위해서, 위 해쉬값 중에서 앞의 0인 부분을 없애고 1cbd5ba9607416285167b4b6ff65bda651ac0f55e03bbd6 만을 표시하며, 이것이 지갑에는 트랜액션 아이디([[Transaction id]]) , 텍시드([[Txid]]) 라고 표시된다. 그리고 이것이 현재 블록을 구분하는 이름과 같은 역할을 하며, 따라서 거래는 이 블럭 해쉬값인 Txid에 의해서 구별되고, blockexplerer에서 블록 해쉬값을 입력하면 거래 내역을 바로 알 수 있다. 블록체인은 그림과 같이 json 데이터에서 현 블록에 이전 블럭의 해쉬값(prev_block)이 포함되는 것을 말한다. 비트코인의 난이도는 블럭헤더의 비츠“bits” 값과 직접적인 관계가 있다는 것만 지금 이해하면 된다.<ref>하나로움-〈[http://hanaloum.blogspot.com/2014/06/block-1_9584.html 비트코인의 블러에 대한 이해 1]〉, 《투게더》2014-06-18</ref> | ||
+ | {{각주}} | ||
==참고자료== | ==참고자료== |
2019년 8월 1일 (목) 10:46 판
비츠(bits)는 블록의 작업증명 합의 알고리즘에 대한 난이도 목표값이다. 논스값을 계산하는데 기준이 되는 특정 숫자를 나타내며 블록체인 전체에 걸쳐 일률적으로 적용된다.
작업증명 방식에서 블록해시가 특정 숫자보다 낮게 나왔을 때 논스값을 찾아내는데, 작업 난이도는 이 논스값의 어려운 정도를 나타낸다. 작업 난이도는 블록헤더 정보 중에서 비츠값으로 조절된다.
개요
블록 해쉬가 특정 숫자보다 낮게 나올 때의 논스(nonce) 값을 찾아내는 것이 작업 증명이라고 했다. 작업 난이도는 논스(nonce) 값 계산의 어려운 정도를 나타낸다. 작업 난이도는 블록 헤더 정보에서 비츠(bits)라는 값으로 조절된다. 블록 해쉬는 32바이트의 숫자라고 했을때, 이해를 쉽게 하기 위해 블록 해쉬를 부호 없는 1바이트의 숫자라고 해보자. 그럼 1바이트의 숫자값을 블록 해쉬값으로 산출하는 해쉬 함수는 0 ~ 255 사이의 값을 결과로 산출한다. 블록 해쉬가 128보다 작아야 한다고 하면, 0 ~ 255 사이의 값을 산출하는 해쉬 함수를 적용해서 128보다 작은 블록 해쉬값이 나올 확률은 128보다 작은 수(0~127)의 개수 = 128/해쉬 함수가 산출할 수 있는 모든 값(0~255)의 개수 = 256, 즉, 128/256이므로, 50%의 확률이다. 블록 해쉬가 64보다 작아야 한다면 64/256, 즉 25%의 확률로 논스(nonce) 값을 구할 수 있다. 블록 해쉬가 32보다 작아야 한다면 확률은 12.5%로 줄어든다. 여기서 128, 64, 32라는 특정 숫자가 바로 블록 헤더 정보의 비츠(bits)이다. 실제로 비츠(bits)의 값이 128, 256 이런 식으로 저장되지는 않고, 지수와 계수를 사용하는 별도의 표현 방식이 있다. 난이도는 2,160개의 블록이 생성되는데 소요되는 시간이 평균 시간인 21,600분(10분/블록 * 2,160블록)보다 오래 걸리면 낮아지고, 적게 걸리면 높아지는 방식으로, 대략 21,600분을 주기로 전체적으로 평균 10분이 소요되는 하나의 난이도가 전체에 적용된다. 블록 헤더의 비츠(bits)는 논스(nonce) 값을 계산하는데 기준이 되는 특정 숫자를 나타내며, 블록체인 전체에 걸쳐 일률적으로 적용되는 숫자다.[1]
사용사례
비트코인의 작업증명(proof-of-work, POW)은 블록체인에 추가할 현 블럭을 누가 만들 것인가를 정하기 위해서 모든 노드(컴퓨터)들이 참여하여 특정 값(난이도, 즉 difficulty와 직접 관계있음)보다 작은 해쉬값을 누가 빨리 찾는지를 겨루는 게임이다. 따라서 성능 좋은 그래픽카드, 즉 해쉬값을 빨리 계산할 수 있는 컴퓨터가 확률적으로 더 많이 찾는다. 즉 해쉬값을 찾을 확률은 그래픽 카드의 성능에 비례하는 것이다. 이때 먼저 특정 숫자보다 작은 해쉬값을 찾은 컴퓨터(노드)가 블럭을 생성할 권한을 가지고 그 보상으로 코인을 받게 되는 것이다.
현재 그림의 블럭의 해쉬(hash)값은 000000000000000041cbd5ba9607416285167b4b6ff65bda651ac0f55e03bbd6 이고, 이전 블럭의 해쉬값은 000000000000000005fca80796201fe3fbdf2b695b64feb84e60b5d0c4ba2a99이다. 하지만 블록의 해쉬값을 간단히 나타내기 위해서, 위 해쉬값 중에서 앞의 0인 부분을 없애고 1cbd5ba9607416285167b4b6ff65bda651ac0f55e03bbd6 만을 표시하며, 이것이 지갑에는 트랜액션 아이디(Transaction id) , 텍시드(Txid) 라고 표시된다. 그리고 이것이 현재 블록을 구분하는 이름과 같은 역할을 하며, 따라서 거래는 이 블럭 해쉬값인 Txid에 의해서 구별되고, blockexplerer에서 블록 해쉬값을 입력하면 거래 내역을 바로 알 수 있다. 블록체인은 그림과 같이 json 데이터에서 현 블록에 이전 블럭의 해쉬값(prev_block)이 포함되는 것을 말한다. 비트코인의 난이도는 블럭헤더의 비츠“bits” 값과 직접적인 관계가 있다는 것만 지금 이해하면 된다.[2]
각주
- ↑ 〈블록체인 기초 개념〉, 《호모에피시오》2016-01-23
- ↑ 하나로움-〈비트코인의 블러에 대한 이해 1〉, 《투게더》2014-06-18
참고자료
- hanmomhanda, 〈BlockChain 기초 개념 - 블록, 채굴, 작업증명, 난이도, 보상〉, 《스팀잇》
- 호모에피시오, 〈블록체인-기초 개념〉2016-01-23
- hanmomhanda, 〈비트코인의 블럭에 대한 이해〉,《투게더》2014-06-18
같이 보기