읽는데도 머리아픈 정보글(펌) [1]

이병 안택쓰 | 23-01-17 17:25:58 | 조회 : 206 | 추천 : +3


최근에 FTX 사건으로 비롯된 준비금 증명, 제가 설명드린 글이 있었습니다.

오늘 제가 쓸 글은 준비금 증명에 앞서 준비금 증명에 쓰인 개념, 원시론적으로 돌아가 블록체인이란 무엇인가에 대해서 쓰려고 합니다. 공부하며 작성에 참고한 곳은 이곳입니다. CertiK 공식 블로그, Steem it

쓸모없다고 생각하지 마시고, 한번 확인해보시고 준비금 증명과 비교해보시면 무엇이 비슷한지 확인하실 수 있을겁니다!

 

  1. 블록체인 기술 정의
  2. 머클 트리

 

1. 블록체인 기술 정의

블록과 블록을 체인으로 이어준 형태로써, 바로 앞의 블록에 대해 링크를 가진 링크드 리스트인 자료구조입니다. 블록체인에서 사용하는 블록은 일정 시간마다 생성이 됩니다. 예를 들어, 비트코인의 경우 10분에 한 번씩 생성됩니다.

여러 건의 거래내역을 하나의 블록으로 묶고, 기존에 생성된 체인처럼 계속해서 구조를 연결하면 그것이 블록체인이 되는 것입니다. 블록의 집합체인 블록체인은 여러 노드에 걸쳐 분산되어 저장 및 관리가 되고, 모든 거래 정보를 포함하는 거대한 분산 장부 또는 공통 장부 관리 기술이라고 할 수 있습니다.

 

블록

블록은 보통 Height라고 불립니다. 블록체인을 길게 이어진 수평선이 아니라 탑의 형태로 구성된다고 생각하여 쓴다고 합니다. 허나 잘못된 말입니다. 블록은 여러분들도 알다시피, 일종의 ‘해시값’이 블록의 이름이 됩니다. 여러분들이 거래 내역을 볼 때 찾아보는 TXID, 이게 바로 해시값입니다. 블록의 해시값은 블록의 헤더 정보를 모두 합산한 후 SHA256으로 변환된 값입니다.

 

블록 구조

블록 구조는 다음과 같습니다.

블록은 헤더와 바디로 구분됩니다. 여기서 거래 정보, 기타 정보는 블록 바디에 저장된다고 볼 수 있습니다. 거래 정보는 입출금과 관련한 여러가지 정보를 가지고 있고, 기타 정보는 블록 내에 있는 정보 중에서 블록 헤더와 거래 정보에 해당하지 않는 정보를 말합니다.

이제 해시값에 대해서 말해봅시다. 해시값은 아까 말씀 드렸다시피 블록의 이름입니다. 당연히 블록의 식별자 역할을 하며, 블록 해시는 블록 헤더 정보인 버전, 이전 블록 해시, 머클 루트, 타임, bits, 논스 정보를 모두 더한 후 SHA256으로 2번 변환한 결과 값입니다. 그러니까 한마디로 설명하자면, 블록 해시라고 해서 블록 전체의 해시값이 아닌 블록 헤더를 해시한 값입니다.

 

블록 헤더

블록 헤더는 version, previousblockchash, merklehash, time, bits, nonce 6개 정보로 구성되어 있습니다.

version: 소프트웨어/프로토콜 버전

previousblockchash: 블록 체인에서 바로 앞에 위치하는 블록의 블록 해쉬

merklehash: 개별 거래 정보의 거래 해시를 2진 트리 형태로 구성할 때, 트리 루트에 위치하는 해시값

time: 블록이 생성된 시간

bits: 난이도 조절용 수치

nonce: 최초 0에서 시작하여 조건을 만족하는 해시값을 찾아낼 때까지의 1씩 증가하는 계산 횟수

 

여기서, 제가 두 번째로 설명 드릴 예정의 개념과 비슷한 이름을 찾아보셨을 겁니다. 머클해쉬, 이 부분도 매우 비슷하니 한번 나중에 확인해보세요.

 

version

해당 블록의 버전입니다. 현재 이 블록 헤더를 만든 비트코인 프로그램의 버전 정보입니다.

 

previousblockchash

이전 블록 해시 정보는 이전 블록의 주소 값을 가리키는 요소입니다. 각 블록의 헤더 정보에는 이전 블록의 해시값을 갖고 있기 때문에 블록끼리 연결될 수 있습니다.

 

merkle hash

머클 해시는 블록의 바디 부분에 저장된 트랜잭션들의 해시 트리입니다. 각 트랜잭션과 가까운 노드끼리 쌍을 지어 해시 값을 구하고 최종적으로 구해진 해시 값이 머클해시 값입니다. 머클해시 값을 통해 단일 블록 내에 존재하는 트랜잭션의 무결성을 검증할 수 있으며, 머클해시 값을 이용하여 블록의 해시 값을 생성하였기 때문에 블록해시의 무결성도 함께 검증할 수가 있습니다. 

time

해당 블록의 대략적인 생성 시간을 의미합니다.

 

bits

난이도 해시 목표 값을 의미합니다.

 

nonce

블록을 만드는 과정에서 해시 값을 구할 때 필요한 재료 역할을 수행합니다.

 

쓰다보니까 매우 힘드네요. 머클 트리에 대해서는 내일 올려도 됩니까 ㅎㅎ?

SNS로 공유하기
< 1 2 3 4 5 >