[비트코인 기본 구조] 1. 이중 지불 문제
익명의 비트코인 개발자 사토시 나카모토는 2008년 논문과 함께 비트코인 코어를 처음 공개했습니다. 이렇게 공개된 비트코인은 처음으로 분산화된 네트워크를 통해 제3자가 필요 없는 P2P 거
kwjdnjs.tistory.com
이중 지불 문제를 해결하기 위한 첫 단계는 거래들을 모아 타임스탬프를 찍는 것입니다. 타임스탬프를 한국어로 직역하면 시간 도장입니다. 즉 타임스탬프를 찍는다는 것은 어떤 데이터가 발생한 시각을 기록하는 것입니다. P2P 거래에는 여러 사람들이 참여하기 때문에 컴퓨터 간의 시간 차이가 존재할 수 있습니다. 또한 어떤 사람은 악의적으로 컴퓨터 시간을 변경해 거래가 발생한 시각을 조작할 수 있습니다. 예를 들어 다음과 같이 블록이 1, 2, 3 순서로 생성되었다고 가정했을 때 C에서 D로의 거래가 개인 컴퓨터 오류로 블록 2보다 더 전에 거래가 된 것으로 처리되었다고 해보겠습니다.
거래를 저장할 때 이렇게 정확한 시간에만 의존하게 되면 수많은 거래가 일어날 경우 심각한 문제가 발생할 수 있습니다. 따라서 다음과 같이 블록들을 하나의 체인으로 연결하여 거래 시각이 올바른지에 대한 여부와 상관없이 거래의 순서를 확실히 할 수 있도록 만들었습니다.
결론적으로 블록체인에서의 타임스탬프는 실제 거래가 발생한 정확한 시각을 저장하는 것이 아닌 거래의 순서를 저장하는 것입니다. 즉, 블록들을 서로 연결함으로써 거래가 발생한 시각을 저장할 필요 없이 거래들이 어떤 순서로 발생했는지 알 수 있습니다.
지금부터는 거래들의 순서를 저장하는 방법을 살펴보겠습니다. 먼저 타임스탬프를 찍을 여러 거래들을 하나의 블록으로 만들겠습니다.
그다음 이전 타임스탬프를 포함해 해시값으로 만듭니다.
여기에서 해시값이란 원본 데이터를 어떤 함수를 사용해 변환한 값을 말합니다. 다음과 같이 어떠한 값을 해시함수를 통해 변환하면 해시값이 나옵니다.
이 과정을 거치면 하나의 타임스탬프가 완성됩니다. 우리는 체인을 만들어 블록을 연결해 블록들의 순서 즉, 거래 순서를 저장할 수 있습니다. 이 체인은 이전 타임스탬프를 포함하고 있기 때문에, 체인이 길어질수록 이전 거래 내역을 변경하는 것은 점점 어려워집니다. 예를 들어 누군가가 거래를 변경해 어떤 블록을 수정하게 된다면 이후의 해시값들을 연쇄적으로 변경해야 합니다.
즉, 블록의 수가 늘어날수록 변경해야 할 해시의 수가 증가해 블록 수정이 점점 더 어려워집니다.
타임스탬프를 통해 거래 순서를 저장하는 것은 성공했습니다. 하지만 여전히 이중 지불 문제를 해결하지는 못했습니다. 해당 방식은 소유자 0과 소유자 1과의 거래, 그리고 그 이후 소유자 2로 이어지는 거래 순서는 증명할 수 있습니다. 하지만 만약 소유자 0이 소유자 1이 아닌 다른 소유자와 거래를 했다면 이 방식으로는 우리가 해당 사항을 알아낼 수 없습니다. 예를 들어 소유자 0이 소유자 1과 소유자 A와 동시에 거래했다면 다음과 같이 두 개의 체인이 생기게 됩니다.
이 경우 거래 순서는 증명할 수 있지만, 어떤 거래 체인이 진짜 체인인지 알 수 없습니다. 이 문제를 해결하기 위해 비트코인이 도입한 방법이 바로 '작업증명'입니다. 이 부분은 다음 글에서 알아보겠습니다.
[비트코인 기본 구조] 3. 작업증명(Proof-of-Work)
작업증명을 설명하기 위해 먼저 해시에 대해 다시 한번 생각해 보겠습니다. 어떠한 값에서 해시를 구한다는 것은 다음과 같았습니다. 이전에 알아봤던 것처럼 어떤 값을 SHA-256함수와 같은 해
kwjdnjs.tistory.com
'비트코인 > 비트코인 기본 구조' 카테고리의 다른 글
[비트코인 기본 구조] 6. 머클 트리와 SPV(Merkle Tree & SPV) (0) | 2022.06.29 |
---|---|
[비트코인 기본 구조] 5. 채굴(Mining) (0) | 2022.06.29 |
[비트코인 기본 구조] 4. 분산원장기술(Distributed Ledger Technology) (0) | 2022.06.28 |
[비트코인 기본 구조] 3. 작업증명(Proof-of-Work) (0) | 2022.06.27 |
[비트코인 기본 구조] 1. 이중 지불 문제(Double spending problem) (0) | 2022.06.27 |