만약 블록체인이 모든 거래들을 계속해서 저장한다면 저장 공간이 지나치게 많이 필요할 것입니다. 따라서 비트코인 개발자인 사토시는 디스크 공간을 절약하기 위해 비트코인이 머클트리를 사용하도록 만들었습니다.
지금까지 봐왔던 블록의 구조는 다음과 같았습니다.
블록이 이런 모습일 경우 더 이상 저장할 필요가 없는 거래를 제거하게 되면 블록의 해시가 변화하게 되어 작업증명을 다시 해야 하는 상황이 발생합니다. 이 문제를 해결하기 위해 블록을 다음과 같이 머클트리 형태로 만듭니다.
머클 트리는 부모노드가 자식노드의 해시값을 가지는 트리구조입니다. 이러한 상황에서 기존의 1~3의 거래를 더 이상 저장할 필요가 없다고 가정해보겠습니다.
거래 1~3이 제거되었지만 블록은 새로운 작업증명을 하지 않고 유지되었습니다. 비트코인에서는 이러한 방식을 통해 블록을 유지하면서 필요 없는 거래들의 기록을 지워 공간을 확보할 수 있습니다.
만약 계속해서 거래를 지워나가 모든 거래를 지우게 되면 루트 해시와 함께 블록의 헤더만 남게 됩니다. 이를 SPV(Simplified Payment Verification)라고 합니다.
해당 체인은 블록 헤더만을 연결한 체인입니다. 이 체인에 있는 블록 헤더는 거래 정보를 모두 저장하고 있지 않습니다. 하지만 SPV도 블록 내의 필요한 해시만을 풀노드에게 요청해서 루트 해시와 일치하는지 확인하여 거래가 유효한지 알 수 있습니다.
SPV는 저장공간을 줄여 쉽게 사용할 수 있는 장점이 있는 반면 공격에 취약하다는 단점이 있습니다. 따라서 일반적인 경우에는 모든 거래정보를 저장하고 있는 풀노드(Full Node)를 사용할 것을 권장하고 있습니다.
지금까지 비트코인의 기본 구조를 모두 살펴봤습니다. 다음 글에서는 지금까지의 내용을 모두 정리해보겠습니다.
'비트코인 > 비트코인 기본 구조' 카테고리의 다른 글
[비트코인 기본 구조] 7. 정리 (0) | 2022.06.30 |
---|---|
[비트코인 기본 구조] 5. 채굴(Mining) (0) | 2022.06.29 |
[비트코인 기본 구조] 4. 분산원장기술(Distributed Ledger Technology) (0) | 2022.06.28 |
[비트코인 기본 구조] 3. 작업증명(Proof-of-Work) (0) | 2022.06.27 |
[비트코인 기본 구조] 2. 타임스탬프(Timestamp) (0) | 2022.06.27 |