블록체인의 타임스탬프 서버_2

김정민·2024년 3월 25일

블록체인

목록 보기
7/7
post-thumbnail

[처음 배우는 블록체인] 이라는 책을 참고하여 개인공부와 복습의 용도로 게시글을 작성했습니다.

타임스탬프 서버_2

해시 체인과 해시 트리 타임스탬프

P2P 시스템에서 해시 체인을 활용하려면 해결해야 할 문제가 두 가지 있다.

  1. P2P 네트워크의 모든 노드가 항상 최신 타임스탬프를 확인할 수 있어야 한다.
  2. 어떤 노드에서 과거 데이터를 조작했음을 확인하거나 데이터 조작 자체를 막을 수 있어야 한다.

앞 문제는 해시 체인 타임스탬프로 해결할 수 없다. 블록체인은 모든 데이터를 연결한 '블록'으로 노드 전체와 데이터를 공유해 이 문제를 해결한다. 블록은 '해시 트리'를 해시 체인으로 구성해 만든다.

해시 트리

해시 트리는 1979년 랠프 머클이 제안한 트리 구조의 해시 체인이다. 제안한 사람의 이름에 따라 머클 트리라고도 한다. 보통 이진 트리 구조이다.

해시 트리는 어떤 데이터를 여러 조각으로 나눈 후 조각 2개를 묶어 해시값을 계산한다. 이 때 조각이 홀수면 같은 조각을 복사해 2개로 묶은 후 해시값을 계산한다. 그리고 계산한 해시값끼리 다시 2개로 묶는 방식으로 해시값이 하나만 남을 때까지 반복 계산한다. 마지막에 남은 하나의 해시값을 해시 루트 혹은 최상위 해시라고 한다.

처음 해시 트리를 사용한 사례는 암호화에 사용하는 키 하나로 일회용 패스워드 여러 개를 생성하는 자료구조 구현이었다. 이후 P2P 네트워크에서 대용량 파일을 받을 때 파일이 손상 및 조작되었는지 확인하는 데 사용했다. 대용량 파일을 원 파일과 같은 방식으로 나눠 해시 루트 값을 계산하고 원 파일이 있는 곳의 해시 루트 값과 비교하는 것이다. 해시 루트 값이 다르면 해시 루트를 계산하는 데 사용한 두 해시값을 원 파일의 해시값과 비교해 파일 손상 및 조작을 계속 확인한다.

이 작업을 반복하면 해시값이 다른 파일 조각을 효율적으로 파악할 수 있다. 받은 파일이 손상 및 조작되었을 때 해당 파일 조각만 다시 받아 다운로드 시간을 줄일 수 있다.

해시 트리와 해시 체인으로 블록 만들기

해시 트리 구조를 활용하면 해시 체인 타임스탬프를 블록 단위로 만들 수 있다. 이때는 모든 데이터를 대상으로 해시 트리를 만든 후 해시 체인으로 묶는다.

해시 체인은 새 데이터를 넣을 때마다 해시 체인의 데이터 개수가 늘지만, 해시 트리를 해시체인으로 구성하기 위해 여러 데이터를 블록으로 묶었으므로 블록 단위로 해시 체인의 데이터 개수가 는다.

단순한 해시 체인에 새 데이터를 넣을 때는 데이터가 늘어날 때마다 타임스탬프가 증가했다. 하지만 해시 트리 기반의 해시 체인은 같은 타임스탬프 숫자에 데이터가 여러 개 속해있다. 이는 '동시'에 생성한 데이터로 다룬다는 뜻이다. 유닉스 같은 운영체제에서 생성 시간이 같은 타임스탬프가 있는 것과 마찬가지이다.

해시 체인 타임스탬프는 블록 단위로 해시 체인을 생성할 때 새 데이터가 없어도 타임스탬프 숫자가 증가할 수 있다. 이는 시각을 저장하는 타임스탬프의 원래 사용 의도에도 부합하다.

0개의 댓글