블록체인/레벨 II · 작동 원리/2.3 블록과 체인/수업 3
해시 체인
끊을 수 없는 연결고리와 역사를 다시 쓰는 대가
준비물상세한 헤더 정보를 제공하는 블록 탐색기SHA-256 해시를 확인하는 계산기 또는 스크립트해시 값을 기록할 공책
호기심
- 일련의 디지털 기록은 어떻게 물리적 장부보다 더 효과적으로 변조에 저항할까요?
- 새 블록 하나가 추가되면 왜 이전의 모든 트랜잭션을 변경하기가 더 어려워질까요?
- 과거의 항목을 변경하려는 공격자에게 필요한 연산 비용은 얼마인가요?
탐구
- 1991년, 스튜어트 하버와 W. 스콧 스토르네타는 ‘디지털 문서에 타임스탬프를 찍는 방법(How to Time-Stamp a Digital Document)’이라는 논문을 발표했습니다. 이들은 새 기록마다 이전 기록의 암호학적 해시를 담도록 문서들을 체인 형태로 연결하는 방식을 제안했습니다. 이 구조는 변경 불가능한 이력을 만들어냈습니다. 과거 문서를 하나라도 수정하면 그 해시가 바뀌어 이후 모든 기록과의 연결이 끊어지기 때문입니다. 사토시 나카모토는 비트코인 백서에서 블록체인의 구조적 무결성에 근본적인 영감을 준 자료로 이 1991년 논문을 인용했습니다.
- 모든 비트코인 블록 헤더에는 ‘이전 블록 해시’라는 32바이트 필드가 있습니다. 이 값은 직전 블록 헤더 전체의 이중 SHA-256 해시입니다. 이 해시는 해싱 대상 데이터의 일부이므로, 채굴자는 채굴을 시작하기 전에 이를 새 헤더에 넣습니다. 그 결과 모든 블록이 암호학적으로 부모 블록에 커밋하는 체인이 만들어집니다. 이 연결이 없다면 블록들은 서로 고립된 섬에 불과하겠지만, 이 연결 덕분에 2009년 1월 3일의 제네시스 블록에 고정된 하나의 연속된 순서를 이룹니다.
- 헤더의 머클 루트는 해당 블록의 모든 트랜잭션을 해시에 묶어 둡니다. 공격자가 과거 블록의 트랜잭션을 단 하나만 수정해도 머클 루트가 바뀝니다. 그 결과 그 블록 자체의 해시도 바뀝니다. 다음 블록은 수정된 블록의 기존 해시를 ‘이전 블록 해시’로 저장하고 있으므로 연결이 끊어집니다. 이제 체인은 그 지점부터 무효가 됩니다. 이를 복구하려면 공격자는 해당 블록의 작업증명을 다시 채굴해야 합니다.
- 블록 하나만 다시 채굴하는 것으로는 충분하지 않습니다. 이후의 모든 블록에도 더 이상 일치하지 않는 해시가 들어 있기 때문입니다. 공격자는 유효한 체인을 만들기 위해 수정한 블록 이후의 모든 블록에 대해 작업증명을 다시 수행해야 합니다. 여기에는 막대한 연산 능력이 필요합니다. 정직한 네트워크가 계속 새 블록을 추가하는 동안 공격자는 이들과 경쟁해야 합니다. 공격자의 해시레이트가 나머지 네트워크 전체를 합친 것보다 높다면, 공격자는 체인을 추월해 이력을 바꿔 놓을 수 있습니다.
- 노드는 블록 수 기준으로 가장 긴 체인을 따르지 않습니다. 대신 ‘체인워크(chainwork)’라고 불리는, 누적 작업증명이 가장 많은 체인을 따릅니다. 이 지표에는 나중 블록일수록 채굴하기 어렵게 만드는 난이도 조정이 반영됩니다. 블록 수는 더 많지만 총 작업량이 적은 분기는, 그 블록들이 유효하더라도 따르지 않습니다. 트랜잭션이 체인 깊숙이 묻힐수록 공격자가 이를 변경하기 위해 재현해야 하는 작업량도 늘어납니다. 확인(컨펌)이 하나 늘 때마다 이력을 되돌리는 데 필요한 연산 노력이 한 겹씩 더해집니다.
- 아무 블록 탐색기나 열고 최근 블록을 하나 선택하세요. 그 블록의 ‘이전 해시’ 필드를 확인하세요. 그 해시를 클릭해 부모 블록으로 이동하세요. 부모 블록의 헤더 해시가 자식 블록에 저장된 값과 일치하는지 확인하세요. 이 과정을 세 번 반복하며 연결고리를 따라 체인을 거슬러 올라가세요. 이렇게 직접 검증해 보면 각 블록이 암호학적으로 이전 블록에 커밋하며, 작업으로 검증된 기록이 제네시스까지 끊김 없이 이어진다는 것을 확인할 수 있습니다.
핵심 사실
- 스튜어트 하버와 W. 스콧 스토르네타가 1991년에 제안한 연결형 타임스탬프 방식은 비트코인 백서에 인용되어 있습니다.
- 각 블록 헤더에는 이전 블록의 헤더에 대한 32바이트짜리 해시가 포함되어 있어, 블록들을 순차적으로 연결해 줍니다.
- 과거 트랜잭션을 수정하면 해당 블록의 머클 루트와 해시가 바뀌어 이후의 모든 연결이 끊어집니다.
- 노드는 단순히 블록 수가 가장 많은 체인이 아니라, 누적 작업증명(‘체인워크’)이 가장 많은 체인을 따릅니다.
- 공격자가 정직한 네트워크를 앞지르려면 수정한 블록 이후의 모든 블록에 대해 작업증명을 다시 수행해야 합니다.
- 2009년 1월 3일에 채굴된 제네시스 블록은 체인의 변하지 않는 기준점 역할을 합니다.
연습 아홉, 여섯, 셋, 하나
9모으기디지털 원장이나 기록 관리 시스템 9가지를 나열하세요. 각 시스템이 과거 기록의 변조를 어떻게 막는지 적어 두세요.
6묶기9가지를 불변성을 보장하는 메커니즘에 따라 6개 범주로 묶으세요: 암호학적 연결, 합의 투표, 중앙 기관의 감사, 물리적 중복, 법적 계약, 기타.
3추리기6개 그룹을, 신뢰할 수 있는 제3자 없이는 대부분의 시스템이 변조를 탐지할 수 있는 이력을 제공하지 못하는 3가지 근본 이유로 줄이세요.
1결정화작업증명이 해시의 연결 리스트를 경제적으로 보호되는 소유권 체인으로 어떻게 바꾸는지 설명하는 문장을 하나 쓰세요.
팩트 체크
날짜, 수치 및 주장은 아래에 명시된 출처들을 통해 확인되었습니다.