의견.png

SPV

위키원
Asadal (토론 | 기여)님의 2019년 7월 4일 (목) 12:44 판
이동: 둘러보기, 검색

SPV(Simple Payment Verification)란 전체 블록체인의 풀 노드를 저장하고 있지 않고도 트랜잭션을 검증할 수 있는 방법이다. 또한 다른 말로는 라이트웨이트 노드(lightweight node)라고도 불린다.

개요

2018년 1월 기준으로 비트코인 블록체인 데이터는 150GB를 넘어서 시간이 경과함에 따라 점점 커지고 있다. 스마트폰에 저장하기엔 너무 크기 때문에 스마트폰에서 풀노드를 구동하기 어려워, 비트코인을 받았다는 사실을 전체 블록체인을 다운로드하지 않고도 머클트리를 통하여 검증하는 방법이며, 사토시 나카모토의 백서에도 소개되고 있다.[1]

특징

SPV(Simplified Payment Verification)는 풀 노드로부터 머클 증명과 일부 블록의 헤더만 받아와서 트랜잭션의 유효성을 검증할 수 있는 방법이다. 따라서 SPV는 비트코인 네트워크를 사용하지만 실제로는 풀 노드로써의 기능을 하지않아 풀 노드와 다르게 가볍다는 특징을 갖게 되는것이다. 블록체인 사본을 보관하지도 않고, 트랜잭션 검증, 검증 과정에 참여하지 않기 때문에 네트워크 보안에도 기여를 하지 않는다. 즉 SPV는 전체 블록 데이터를 다운로드 하거나 소유하지 않으며, 일부 트랜잭션의 블록 안에 포함되어있는지 여부만을 확인하는 방법이기 때문에 다른 풀 노드의 정보에 의존하여 거래를 진행한다.[2][3]

  • 블록 헤더 구성
    • 버전 (4바이트)
    • 이전 블록해시 (32바이트)
    • 머클루트 해시 (32바이트)
    • 블록 시간 (4바이트)
    • nBits (4바이트)
    • nonce (4바이트)로 구성되어있으며, 총 80바이트로, 1년 동안 발생하는 52560개의 블록 헤더 용량이 4MB 정도이니 현재 150GB를 넘긴 풀 노드에 비해 매우 가볍다고 할 수 있다.

단점

SPV(Simplified Payment Verification)는 풀 노드에 의한 정보의 의존도가 높다는 것이다. 즉, 다른 풀 노드들에게 정보를 요청해야만 거래를 진행할 수 있다. 또한 풀 노드의 경우 처음부터 블록체인을 저장해왔고 최종적으로 돈이 들어있는계좌(UTXO)들을 블록체인이 아닌 데이터베이스에 저장하기 때문에 더 빠른 속도로 처음부터 자신의 잔고를 확인할 수 있지만, SPV(Simplified Payment Verification)는 다른 풀 노드를 의지하기 때문에 처음부터 제대로된 정보를 주느냐가 문제인 것이다. 악의적 노드가 끼어들게 되면 SPV(Simplified Payment Verification)로써는 구분할 수 없기 때문에 큰 문제로는 이어지지는 않지만 다른 노드들이 거래를 취소를 시켜버림으로써 거래지연이 발생하게 된다.[2]

각주

  1. GitHub, 〈비트코인 SPV〉, 《티스토리》, 2018-01-17
  2. 2.0 2.1 twinbraid, 〈풀노드와 라이트노드를 알아보자〉, 《스팀잇》, 2017-11-03
  3. 바이낸스 아카데미, 〈노드란 무엇인가요?〉, 《바이낸스 아카데미》, 2017-11-03

참고자료

같이 보기


  의견.png 이 SPV 문서는 블록체인 기술에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.