Block
블록은 블록체인의 데이터 단위로, 타임스탬프(시간 기록)를 포함한 트랜잭션 목록 등의 정보를 담고 있습니다. 이러한 트랜잭션은 암호화되며, 일반적으로 채굴자(miner)로 알려진 네트워크 참여자들에 의해 검증되어야 블록체인에 추가될 수 있습니다. 블록이 블록체인에 추가되면 영구적인 기록이 되며, 암호화 보안 조치로 인해 변경이 불가능해집니다. 이후 트랜잭션은 새로운 블록에 기록되면서 사이클이 다시 시작됩니다.[4][9]
개요
모든 암호화폐에는 매일 수많은 트랜잭션이 발생합니다. 이러한 트랜잭션은 "블록"이라는 단위로 기록됩니다. 블록은 최근 데이터를 포함하며, 블록이 완성될 때마다 블록체인에 새로운 블록을 위한 공간이 마련됩니다. 완성된 블록은 이전 트랜잭션의 영구적인 기록이며, 새로운 트랜잭션은 현재 블록에 기록됩니다. 결과적으로 전체 시스템은 모든 데이터를 영구적으로 저장하는 루프에 들어갑니다.
트랜잭션 기록을 보존하기 위해 블록은 엄격하게 순서대로 배열되며, 새로 생성된 각 블록에는 상위 블록에 대한 참조가 포함되고, 블록 내의 트랜잭션도 엄격하게 순서대로 배열됩니다. [7]
드문 경우를 제외하고, 네트워크 참여자들은 블록의 정확한 수와 이력에 대해 합의합니다. 참여자들은 협력하여 실시간 트랜잭션 요청을 다음 블록으로 그룹화합니다. 이러한 협업 방식은 각 블록이 헤더에 이전 블록의 해시를 포함하여 블록을 서로 연결하는 메커니즘을 통해 가능합니다. 이 방법은 블록 순서를 보존하고 블록에 포함된 데이터의 불변성을 보장합니다. [2]
구성 요소
블록은 채굴자 또는 블록 검증자가 블록 헤더의 암호화된 정보를 성공적으로 검증할 때 생성되며, 이는 새로운 블록 생성을 유발합니다. [5] 블록은 헤더와 본문이라는 두 가지 주요 부분으로 구성됩니다.
헤더
블록의 헤더에는 블록과 채굴자에 대한 정보가 포함되어 있습니다. 다음과 같이 세분화됩니다.
이전 블록의 해시
이것은 이전 블록의 해시입니다. 블록을 서로 연결하고 이전 블록의 데이터를 변경할 수 없도록 합니다. 이전 블록의 데이터가 변경되면 해당 블록의 해시가 변경되어 블록체인의 연결이 끊어집니다.
기타 블록 헤더 필드
이러한 필드는 서로 다른 블록체인의 요구 사항에 따라 다를 수 있습니다. 일반적인 필드는 다음과 같습니다.
- 난수(Nonce): 채굴자가 블록의 해시를 변경하여 네트워크의 난이도를 달성하기 위해 변경하는 정수입니다. 임의의 문자열입니다.
- 타임스탬프: 블록이 채굴된 시간입니다. 일반적으로 유닉스 시간(Unix time)을 사용합니다.
- 난이도: 네트워크의 현재 난이도 수준입니다. 모든 블록체인에서 다른 형식으로 저장됩니다.
- 머클 루트 해시(Merkel root hash): 트랜잭션을 쌍으로 해싱하여 하나의 해시(루트 해시 또는 머클 루트 해시)만 남도록 합니다.
- 블록 높이: 생성 블록(genesis block)과 현재 블록 사이에 채굴된 블록의 수입니다.
- 블록 크기: 블록의 크기를 포함하는 4바이트 또는 32비트 필드입니다. 바이트 단위로 크기를 추가합니다. 예: 블록 크기: 216바이트.
- 블록 보상: 트랜잭션 블록을 추가한 채굴자에게 지급되는 보상 금액이 포함된 필드입니다.
- Tx Count: 트랜잭션 카운터는 블록에 포함된 트랜잭션 수를 나타냅니다. 이 필드의 최대 크기는 9바이트입니다.
[6] - 블록 시간: 블록 시간은 네트워크 내의 채굴자 또는 검증자가 하나의 블록 내의 트랜잭션을 검증하고 해당 블록체인에 새로운 블록을 생성하는 데 걸리는 시간을 측정한 것입니다. 암호화폐는 다양한 합의 메커니즘을 사용할 수 있으며, 이는 다른 요소들과 함께 트랜잭션을 검증하고 새로운 블록을 생성하는 데 걸리는 시간에 영향을 미칩니다. 각 암호화폐는 서로 다른 블록 시간을 갖습니다. 예를 들어, 비트코인은 약 10분이 걸리는 반면, 이더리움은 약 14초가 걸립니다. [10]
본문
블록 본문의 대부분은 특정 시간대에 발생한 개별 트랜잭션 목록으로 구성됩니다. [3] 각 트랜잭션은 가치 전송(예: 암호화폐 전송, 스마트 계약 작업)을 기록하며, 다음과 같은 다양한 세부 정보를 포함합니다.
- 트랜잭션 ID: 각 트랜잭션의 고유 식별자입니다.
- 입력: 이전 트랜잭션의 세부 정보를 포함한 트랜잭션의 입력입니다.
- 출력: 일반적으로 수신자 주소와 트랜잭션 금액을 포함한 트랜잭션의 출력입니다. [3]