블록헤더
- 이전 블록 해시 : 32바이트 크기의 이전 블록 헤더의 해시값(SHA-256를 두 번 적용한 값)으로 이것을 이용하여 블록을 묶음
- 머클루트 : 32바이트 크기의 거래가 발생할때마다 업데이트 되는 값으로, 트랜잭션의 내용을 입력으로 해시값을 구하고 이를 트리구조로 저장한 머클트리의 루트 값
- 난이도 비트 : 4바이트 크기의 해시 퍼즐의 난이도 조절 수치
- 타임스탬프 : 4바이트 크기의 블록이 생성되는 시간
- Nonce : 4바이트 크기의 다음 블록을 생성하기 위한 값으로, 이 값을 조정하여 다음 블록의 이전 블록 해시값(현재 블록 해시값)을 계산
각 블록들은 '이전 블록 해시' 값을 이용하여 서로 연결되는데, 이것을 체인이라고 합니다.
새로운 블록을 현재 블록체인에 연결하는 것은 마이닝(mining) 과정을 통해 이루어집니다.
여기서 마이닝이란 마지막 블록 헤더의 해시값이 난이도에 따른 특정 목표값과 같거나 작도록 하는 블록 헤더 값을 찾고 보상을 받는 과정입니다.
비트코인은 현재 해시 함수로 SHA-256을 사용하고 있습니다. 그렇기 때문에 SHA256(SHA256(현재 블록 헤더))의 입력값을 찾는 것과 같습니다. 해시값을 구할 때 SHA256을 두 번 사용하고 있습니다.
블록 헤더에서 Nonce를 제외한 나머지 값은 이미 정해져있습니다.
그래서 마이너는 단순히 Nonce값을 0부터 1씩 증가하면서 블록 헤더의 해시값을 계산합니다.
그리고 이것을 목표값과 같거나 작은지 비교합니다.
해시값에 대한 입력 값을 찾는 것은 오랜 시간을 요구합니다.
따라서 난이도를 조정하게 되는데, 해시값 256 비트 중 상위 m자리 비트 값이 0인 값과 같거나 작은 입력 값을 찾도록 하는 것입니다.
부호가 없다고 가정할 때 2^256 비트로 표현할 수 있는 숫자의 범위는 약 0~10^77입니다.
10^77은 115792089237316195423570985008687907853269984665640564039457584007913129639936 으로 굉장히 큰 숫자입니다.
m의 값이 커진다는 것은 난이도가 높아졌다는 이야기입니다.
예를 들어 m = 253 이고 해시값 256 비트 중 하위 4비트 값이 1111일 때, 상위 253 비트 값이 0인 값과 같거나 낮은 값은
0000, 0001, 0010, ... 1110 총 14가지 입니다. (상위 253비트는 제외했습니다.)
반면에 m = 254 일 때, 상위 254 비트 값이 0인 값과 같거나 낮은 값은
000, 001, 010, ... 110 총 7가지로, m = 253일 때보다 확률이 줄게 됩니다.
블록바디
- Coinbase 트랜잭션 : 블록생성 시 만들어지는 최초거래로서, 마이너에게 비트코인을 지급한다는 트랜잭션
- 트랜잭션 : 실제 비트코인의 트랜잭션
트랜잭션
- 값 : 비트코인
- TXID : 트랜잭션 ID
- to : 수신자
- from : 송신자
'Blockchain > Bitcoin' 카테고리의 다른 글
[Bitcoin] 비트코인 작업 증명 (PoW) (0) | 2021.03.23 |
---|---|
[Bitcoin] 비트코인 머클루트 (Merkel root) (0) | 2021.03.23 |
[Bitcoin] 비트코인 거래 과정 (0) | 2021.03.19 |
[Bitcoin] 비트코인 블록체인 특징 (0) | 2021.03.19 |
[Bitcoin] 비트코인과 블록체인 (0) | 2021.03.17 |