의견.png

SPV

위키원
hangyuwon95 (토론 | 기여)님의 2019년 7월 31일 (수) 17:14 판 (특징)
이동: 둘러보기, 검색

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를 넘긴 풀 노드에 비해 매우 가볍다고 할 수 있다.

활용

  • Simplified Payment Verification (SPV) 및 SPV Wallet

SPV는 개발자 나 브랜드 이름이 아니라 기술이다. SPV는 간단한 결제 확인을 의미한다. 그리고 그것은 새로운 것이 아니다 - spv는 Satoshi Nakamoto (섹션 8)의 독창적 인 Bitcoin 백서 에서 언급되었다 . 간단히 말해서 SPV를 사용하면 다른 사람의 거래에 대해 걱정할 필요없이 거래의 유효성을 확인할 수 있다. spv는 거래가 블록 내에 있음을 보장하며 추가 블록이 체인에 추가된다는 확인 (작업 증명)을 제공한다. 따라서 SPV 지갑 정의는«핫 지갑»또는«콜드 지갑»과 동일합니다 - 비트 코인 지갑 유형으로 보안 및 데이터를 활성 체인에 보장한다.

  • Bitcoin SPV 지갑 클라이언트

GitHub에는 Bitcoin SPV 지갑 클라이언트라고하는 지갑이 있다. Native Bitcoin SPV 클라이언트 이지만 아직 실험적이며 GitHub에서 작성된 개발자처럼 현재 프로덕션 환경에서는 사용하고 싶지 않다. BitcoinSPV는 여전히 진행 중이며 결국에는 엄청난 수정이 이루어질 것이다. 몇 가지 기본적인 것들이 남아 있다. Lightning Network , OpenBazaar 및 btcd 개발을 사용하여 Bitcoin 용 SPV Wallet 클라이언트 수정 . API wallet 대 SPV 지갑 Bitrated의 창시자 인 Nadav Ivgi에 따르면 2017 년 말에 가장 인기있는 지갑은 중앙 집중식 API 서버를 사용하여 블록 체인 데이터를 가져 왔다. SPV를 사용하는 제품은 예외입니다 -  Bread Wallet 및 Android Bitcoin Wallet이 유일하게 인기있는 SPV 지갑이다.

문제점

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

중요성

SPV가 필요한 이유는 용량이 큰 데스크탑의 경우에는 모든 데이터를 저장하고 있어도 상관이 없지만, 용량이 작은 모바일의 경우에는 모든 데이터를 저장하기에 무리가 있다. 그리고 블록체인은 참여자가 많을 수록 네트워크가 견고해짐 이때 라이트 노드가 SPV 수행함으로써 블록체인 네트워크를 크게 만들어 더 안전하게 한다. 따라서 SPV는 트랜잭션을 검증하며 풀노드보다는 간단한 작업을 하지만 필수불가결적인 요소가 된다.


각주

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

참고자료

같이 보기


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