의견.png

"SPV"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
(문제점)
(특징)
5번째 줄: 5번째 줄:
  
 
== 특징 ==
 
== 특징 ==
SPV는 풀 노드로부터 머클 증명과 일부 [[블록헤더]]만 받아와서 트랜잭션의 유효성을 검증하는 방법이다. 따라서 SPV는 [[비트코인]] [[네트워크]]를 사용하지만 실제로는 풀 노드로써의 기능을 하지 않아 풀 노드] 다르게 가볍다는 특징을 가진다. 블록체인 사본을 보관하지도 않고 트랜잭션 검증 과정에 참여하지 않기 때문에 네트워크 [[보안]]에도 기여를 하지 않는다. 즉 SPV는 전체 블록 데이터를 다운로드하거나 소유하지 않으며, 일부 블록 안에 트랜잭션이 포함되어있는지 여부만을 확인하는 방법이기 때문에 다른 풀 노드의 정보에 의존하여 거래를 진행한다.<ref name="라이트노드">twinbraid, 〈[https://steemit.com/kr/@twinbraid/3ncb5r 풀노드와 라이트노드를 알아보자]〉, 《스팀잇》, 2017-11-03</ref><ref name="노드란">바이낸스 아카데미, 〈[https://www.binance.vision/ko/blockchain/what-are-nodes 노드란 무엇인가요?]〉, 《바이낸스 아카데미》, 2017-11-03</ref>
+
SPV는 풀 노드로부터 머클 증명과 일부 [[블록헤더]]만 받아와서 트랜잭션의 유효성을 검증하는 방법이다. 따라서 SPV는 [[비트코인]] [[네트워크]]를 사용하지만 실제로는 풀 노드로써의 기능을 하지 않아 풀 노드와 다르게 가볍다는 특징을 가진다. 블록체인 사본을 보관하지도 않고 트랜잭션 검증 과정에 참여하지 않기 때문에 네트워크 [[보안]]에도 기여를 하지 않는다. 즉 SPV는 전체 블록 데이터를 다운로드하거나 소유하지 않으며, 일부 블록 안에 트랜잭션이 포함되어있는지 여부만을 확인하는 방법이기 때문에 다른 풀 노드의 정보에 의존하여 거래를 진행한다.<ref name="라이트노드">twinbraid, 〈[https://steemit.com/kr/@twinbraid/3ncb5r 풀노드와 라이트노드를 알아보자]〉, 《스팀잇》, 2017-11-03</ref><ref name="노드란">바이낸스 아카데미, 〈[https://www.binance.vision/ko/blockchain/what-are-nodes 노드란 무엇인가요?]〉, 《바이낸스 아카데미》, 2017-11-03</ref>
  
 
* 블록 헤더 구성
 
* 블록 헤더 구성

2019년 7월 4일 (목) 17:33 판

SPV(Simple Payment Verification)란 거래에 대한 모든 블록체인을 저장하지 않고도 트랜잭션을 검증하는 방법이다. 라이트 웨이트 노드(lightweight node)라고도 불린다.

개요

SPV는 비트코인을 받았다는 거래에 대해 모든 블록체인을 다운로드 하지 않고 검증하는 간이 결제 확인 방법이다. 이는 사토시 나카모토의 비트코인 백서에서도 소개되고 있는 부분이다. 라이트 노드(light node)는 모든 블록 정보를 가지고 있지 않기 때문에 새로운 거래 정보를 수신받았을 경우 이 거래가 정상적인지 검증할 수 없다. 게다가 2018년 1월 기준 비트코인 블록체인 데이터는 150GB를 넘어서 시간이 지남에 따라 점점 증가하고 있어 이 많은 양의 데이터를 스마트폰에 저장하기에는 어려움이 따른다. 반면 풀 노드(full node)는 모든 데이터를 가지고 있기 때문에 로컬에 있는 블록 정보를 조회하여 검증을 할 수 있다. 라이트 노드에서 거래를 검증하기 위해 풀 노드에게 블록 정보를 요청하여 머클트리를 통해 이 거래가 검증된 거래인지를 확인하는 방법이 바로 SPV이다.[1]

특징

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

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

문제점

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

각주

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

참고자료

같이 보기


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