본 글은 비트코인의 작동 원리를 이해하기 쉽게 설명해 놓은 해외 사이트 Learn me a bitcoin 내에 있는 Blocks 페이지를 번역한 글입니다. 읽은 것을 개인적으로 이해하기 쉽게 정리하여 작성한 글이다 보니, 어색한 부분이 있을 수도 있습니다. 원문을 읽고자 하시는 분은 위의 링크를 참조해 주세요. 😀
What is a block?
- 블록은 블록체인에 추가된 트랜잭션의 묶음입니다.
블록은 어떻게 형성되나요?
블록은 채굴자(miner)에 의해 형성됩니다.
당신이 비트코인 트랜잭션을 보내면, 트랜잭션은 블록체인에 곧바로 추가되지 않고 대신 트랜잭션 풀(메모리 풀)에 저장됩니다.
채굴자들은 트랜잭션 풀에서 트랜잭션을 후보 블록(Candidate block)으로 트랜잭션을 모으고, 이 후보 블록을 블록체인에 추가하려고 시도합니다. 성공한다면 채굴자는 보상으로 신규 발행되는 비트코인을 받고, 후보 블록은 비로소 블록체인에 추가되어 정식 블록이 됩니다.
블록 헤더(Block header)
각 후보 블록에 기본적으로 블록에 대한 메타데이터(metadata) 집합인 블록 헤더를 지정할 수도 있습니다.
채굴자는 블록체인에 블록을 추가하려고 시도할 때 메타데이터를 사용합니다.
메타데이터(metadata) - 기타 부가적인 데이터로써, 정보 레이블 역할을 합니다.
블록 헤더에 들어가는 데이터
- Version
블록 내부의 데이터 구조를 설명합니다. 이것은 컴퓨터가 각 블록의 내용을 올바르게 읽을 수 있도록 사용됩니다. - Last Block
이전 블록의 식별 번호입니다. - Merkle Root
블록 내부의 모든 트랜잭션을 해시해서 만든 단 하나의 해시값입니다. 블록 헤더의 가장 중요한 부분이라고 할 수 있습니다. - Time
블록 헤더가 해시된 시간 - Target
채굴자가 블록체인에 후보 블록을 블록체인에 추가하기 위해서는 해시 함수의 결과가 이 목표값보다 낮아야 합니다. 비트코인 네트워크에 의해 설정됩니다. (아래 내용에서 설명합니다.)
블록은 어떻게 블록체인에 추가되나요?
블록체인에 후보 블록을 추가하려면 블록 헤더의 데이터 전체를 해시하고 그 결과값이 특정 목표값(위에서의 Target) 이하여야 합니다.
채굴 과정 중 목표값(Target)은 블록체인에 블록을 추가할 때 난이도(Difficulty)에 따라 달라지는데, 이 값은 비트코인 네트워크(Bitcoin network)가 설정한 값에 따라 결정됩니다.
목표값(Target)을 림보 게임에서의 가로 막대라고 생각해 보세요. 가로 막대가 낮으면 낮을수록 림보 게임은 더 어렵죠? 목표값(Target)도 마찬가지입니다. 목표값이 낮아지면 낮아질수록, 난이도가 높아집니다. 이 목표값 이하의 값을 갖는 블록 해시를 구해야 하는데, 낮으면 낮을수록 더 많은 시도를 해야 그 값을 찾을 수 있을 테니까요.
난이도(Difficulty) : 이것은 비트코인 네트워크에서 블록이 채굴되는 속도를 조정하기 위한 값입니다. 난이도는 블록이 쌓이는 평균 시간을 10분으로 유지하기 위해서, 매 2,016 블록마다 조정됩니다.
넌스 (Nonce)
위의 설명에서 블록 헤더를 해시하여 나온 결과가 목표값(Target)보다 낮아야 한다고 했는데요. 사실 블록 헤더만 딱 해시하여 결과를얻지 않습니다. 실제로는 하나의 추가적인 숫자를 함께 넣어서 해시합니다.
그 하나의 숫자를 바로 넌스(Nonce)라고 부릅니다. 이 값은 단지 채굴자가 얻은 블록 해시가 목표값(Target)보다 낮아지기를 도와주는 역할만 할 뿐, 의미 없는 데이터입니다.
nonce – 암호화 통신에서 한 번만 사용되는 임의의 숫자입니다.
초기 넌스(0에서 시작)가 목표값 아래로 떨어지는 블록 해시를 생성하지 않으면 넌스를 계속 증가시키고 블록 헤더를 해시합니다. 이렇게 하다보면 결국에는 목표값보다 낮은 블록 해시를 생성하는 넌스가 발견될 것입니다.
결론
목표값 미만의 해시를 생성하는 넌스가 발견되면 블록이 채굴된 것으로 처리되고, 해당 블록이 블록체인에 추가됩니다.
블록이 성공적으로 추가된 후 모든 채굴자는 트랜잭션 풀로 돌아가 다음 후보 블록 작업을 시작합니다. 그들은 당신의 성공적인 블록 해시를 다음 블록 헤더에 통합할 것이며, 블록체인에 새로운 블록을 추가하기 위한 경쟁이 다시 시작됩니다!
'블록체인 > 비트코인' 카테고리의 다른 글
머클 루트 (Merkle Root) (0) | 2023.04.07 |
---|---|
블록 헤더(Block header) (0) | 2023.04.07 |
후보 블록(Candidate Block) (0) | 2023.04.07 |
메모리 풀 (Memory pool) (0) | 2023.04.07 |
노드 (Nodes) (0) | 2023.04.07 |