본문 바로가기
Bitcoin

비트코인의 SPV Nodes

by PudgeKim 2021. 3. 16.

SPV를 알아보기전에 비트코인의 Full Nodes부터 알아보겠습니다.

Full nodes는 완전하고 최신의 모든 transactions들을 포함하는 노드들을 뜻합니다. 즉, genesis block이라고 불리는 0번 block부터 현재까지 만들어진 제일 최신의 block까지 가지고 있는 노드들입니다. Full node를 운영하게 되면 어떤 transaction이든 다른 노드들의 도움없이 찾아낼 수 있습니다. 당연한 이야기입니다 자신이 이미 모든 block들의 정보를 알고 있으니까요.

하지만 Full node를 운영하기 위해서는 몇백기가바이트 또는 그 이상의 용량이 필요하고 이 용량도 새로운 block이 추가될때마다 늘어나게 됩니다. 또한, 초기에 full node를 운영하기 위해서 2~3일간의 네트워크 sync도 필요합니다. 아마 많은 사람들은 이런 full node를 운영하는 것에 관심이 없을 것입니다. 그래서 SPV가 나오게 됩니다.

 

SPV는 Simplified Payment Verification의 약자로 SPV node들을 Lightweight node라고도 부릅니다. 그럼 SPV 노드들은 모든 block을 포함하지 않는 노드들인데 어떻게 여러 transaction들을 검증할까요?

우선 SPV 노드는 각 block들의 transactions이 아닌 block headers만 다운받게 됩니다. 이렇게 transactions들을 제외하고 다운을 받으면 Full node를 운영하는 것보다 용량이 1000배정도 작아집니다. 그러나 위에서 말했듯  SPV 노드는 경량 노드이기 때문에 transactions를 검증하기 위해서 다른 peer들(Full node)에게 도움을 요청합니다.

이러한 transaction 검증원리를 알기 위해서는 Merkle Tree에 대한 개념이 있어야합니다. 아래 링크에 Merkle Tree에 대한 개념과 어떻게 transaction을 검증하는지 나타나있습니다.
비트코인의 Merkle Tree: up-to-date-items.tistory.com/96

block header에 대해 궁금하신 분은 아래 링크를 참고하시길 바랍니다.
비트코인의 블록구조와 체이닝: up-to-date-items.tistory.com/95