최신판 |
당신의 편집 |
1번째 줄: |
1번째 줄: |
− | '''SPV'''<!--Simple Payment Verification, SimplePaymentVerification, spv-->(Simple Payment Verification)란 거래에 대한 모든 [[블록체인]]을 저장하지 않고도 [[트랜잭션]]을 검증하는 방법이다. '''라이트 웨이트 노드'''(lightweight node) 또는 '''경량노드'''<!--경량 노드-->라고도 불린다. | + | '''SPV'''<!--Simple Payment Verification, SimplePaymentVerification, spv-->(Simple Payment Verification)란 거래에 대한 모든 [[블록체인]]을 저장하지 않고도 [[트랜잭션]]을 검증하는 방법이다. '''라이트 웨이트 노드'''(lightweight node)라고도 불린다. |
| | | |
| == 개요 == | | == 개요 == |
14번째 줄: |
14번째 줄: |
| ** 비츠 : 4바이트 | | ** 비츠 : 4바이트 |
| ** 논스값 : 4바이트로 구성되어있으며, 총 80바이트로, 1년 동안 발생하는 52,560개의 블록 헤더 용량이 4MB 정도이니 현재 150GB를 넘긴 풀 노드에 비해 매우 가볍다고 할 수 있다. | | ** 논스값 : 4바이트로 구성되어있으며, 총 80바이트로, 1년 동안 발생하는 52,560개의 블록 헤더 용량이 4MB 정도이니 현재 150GB를 넘긴 풀 노드에 비해 매우 가볍다고 할 수 있다. |
− |
| |
− | == 활용 ==
| |
− | *Simplified Payment Verification (SPV) 및 SPV Wallet
| |
− | SPV는 개발자 나 브랜드 이름이 아니라 기술이다. SPV는 간단한 결제 확인을 의미한다. 그리고 그것은 새로운 것이 아니다. 간단히 말해서 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 지갑이다.<ref>〈[https://en.bitcoinwiki.org/wiki/Simplified_Payment_Verification spv]〉, 《비트코인위키》</ref>
| |
− |
| |
− | ==장점==
| |
− | * 간소화
| |
− | SPV는 새로운 것이 아니다. 그것은 사토시 나카모토의 원래 백서인 Bitcoin : [[Peer]]-to-Peer Electronic Cash System 의 8절에서 설명되었다 . [[Electrum]] 과 같은 [[Bitcoin]] 지갑은 아무런 문제없이 SPV를 수년간 성공적으로 사용 해왔고 사용자가 전체 네트워크 노드를 유지 관리해야하는 번거로움을 덜어준다.
| |
− | *SPV 작동방식
| |
− | SPV를 사용하면 다른 사람의 거래에 대해 걱정할 필요없이 거래를 확인할 수 있다.
| |
− | SPV는 2 가지 중요한 요소를 제공한다
| |
− | a) 거래가 블록 내에 있음을 보장합니다.
| |
− | b) 추가 블록이 체인에 추가된다는 확인 (작업 증명)을 제공합니다. 실제로 거래가 유효한지 알아야 된다 .
| |
− | *SPV 보안제한
| |
− | SPV지갑은 블록의 다른 트랜잭션을 확인하지 않기 때문에 이론적으로 블록이 유효하지 않을 수 있다. 99.99 %의 시간이지만 많은 다른 노드에 연결할 수 있고 모든 사람들이 동일한 블록체인에 동의할 수 있기 때문에 이것은 문제가 되지 않는다.
| |
− | 때로는 비정상적인 상황이 발생할 수 있다. 예를 들어, 새로운 컨센서스 규칙이 채택되고 비교적 큰 그룹의 노드는 업그레이드를 잊어 버리기 때문에 새로운 규칙을 사용하지 않는다.
| |
− | 이러한 비준수 노드가 네트워크에서 분리되기까지 오래 걸리지는 않지만 그 동안 SPV 클라이언트는 업그레이드되지 않은 노드가 올바른 최장 체인을 가지고 있다고 생각하도록 일시적으로 속일 수 있다. (블록을 몇 개 더 추가하면 가장 긴 유효한 체인이 다시 명확해진다.)
| |
− | 따라서 전체 노드를 실행하면 '빠른'보안이 제공된다. 모든 거래를 직접 확인할 수 있다면 이런 종류의 드문 경우를 해결하는 추가 확인을 기다릴 필요가 없다. 또한 SPV 클라이언트가 전체 노드와 통신하고 특정 주소와 트랜잭션에 대한 정보를 요청해야하기 때문에 전체 노드를 이론적으로 실행하면 더 높은 프라이버시를 제공한다.
| |
− | 보안성
| |
− | 이론적으로 공격자는 많은 수의 불량 노드를 설정해야 하며 '실제' Bitcoin 네트워크에서 정직한 노드를 찾지 못하게 해야 된다.
| |
− | SPV 지갑이 단 하나의 정직한 노드를 찾으면 정직한 노드에 작업 체인의 가장 긴 증거가 포함되어 있는지 확인할 수 있기 때문에 공격을 할 수 없다.
| |
− | 또한 공격을 지속하기 위해 침입자는 체인을 계속 연장하기 위해 현재의 난이도 수준에서 광산 블록을 유지해야 한다. 이것은 엄청난 양의 해싱 파워를 필요로 할 것이고, 이는 매우 비싸고 따라서 경제적으로 실행 불가능하다.<ref>Jonald Fyookball, 〈[https://medium.com/@jonaldfyookball/why-every-bitcoin-user-should-understand-spv-security-520d1d45e0b9 모든 Bitcoin 사용자가 "SPV 보안"을 이해해야하는 이유]〉, 《미디움》, 2017-05-21</ref>
| |
| | | |
| == 문제점 == | | == 문제점 == |
| SPV는 풀 노드들에 정보를 요청해야만 거래를 진행할 수 있기 때문에 풀 노드에 대한 [[정보]]의 의존도가 높다. 풀 노드의 경우 처음부터 블록체인을 저장해왔고 최종적으로 돈이 들어 있는 계좌(UTXO)를 블록체인이 아닌 [[데이터베이스]]에 저장하기 때문에 더 빠른 속도로 처음부터 자신의 잔고를 확인할 수 있지만, SPV의 경우 다른 풀 노드에 의지하기 때문에 처음부터 제대로 된 정보를 주느냐가 문제이다. 악의적 노드가 끼어들게 되면 SPV로써는 구분할 수 없기 때문에 큰 문제로 이어질 수 있으며 다른 노드들이 거래를 취소를 시켜버림으로써 거래지연이 발생하게 된다.<ref name="라이트노드"></ref> | | SPV는 풀 노드들에 정보를 요청해야만 거래를 진행할 수 있기 때문에 풀 노드에 대한 [[정보]]의 의존도가 높다. 풀 노드의 경우 처음부터 블록체인을 저장해왔고 최종적으로 돈이 들어 있는 계좌(UTXO)를 블록체인이 아닌 [[데이터베이스]]에 저장하기 때문에 더 빠른 속도로 처음부터 자신의 잔고를 확인할 수 있지만, SPV의 경우 다른 풀 노드에 의지하기 때문에 처음부터 제대로 된 정보를 주느냐가 문제이다. 악의적 노드가 끼어들게 되면 SPV로써는 구분할 수 없기 때문에 큰 문제로 이어질 수 있으며 다른 노드들이 거래를 취소를 시켜버림으로써 거래지연이 발생하게 된다.<ref name="라이트노드"></ref> |
− |
| |
− | == 중요성 ==
| |
− | SPV가 필요한 이유는 용량이 큰 데스크탑의 경우에는 모든 데이터를 저장하고 있어도 상관이 없지만, 용량이 작은 모바일의 경우에는 모든 데이터를 저장하기에 무리가 있다.
| |
− | 그리고 블록체인은 참여자가 많을 수록 네트워크가 견고해짐 이때 라이트 노드가 SPV 수행함으로써 블록체인 네트워크를 크게 만들어 더 안전하게 한다.
| |
− | 따라서 SPV는 트랜잭션을 검증하며 풀노드보다는 간단한 작업을 하지만 필수불가결적인 요소가 된다.
| |
| | | |
| {{각주}} | | {{각주}} |
58번째 줄: |
25번째 줄: |
| *바이낸스 아카데미, 〈[https://www.binance.vision/ko/blockchain/what-are-nodes 노드란 무엇인가요?]〉, 《바이낸스 아카데미》, 2017-11-03 | | *바이낸스 아카데미, 〈[https://www.binance.vision/ko/blockchain/what-are-nodes 노드란 무엇인가요?]〉, 《바이낸스 아카데미》, 2017-11-03 |
| *Soori, 〈[https://wikidocs.net/14577 SPV의 잠재적 약점]〉, 《위키독스》, 2018-02-24 | | *Soori, 〈[https://wikidocs.net/14577 SPV의 잠재적 약점]〉, 《위키독스》, 2018-02-24 |
− | *〈[https://en.bitcoinwiki.org/wiki/Simplified_Payment_Verification spv ]〉, 《비트코인위키》
| |
| | | |
| == 같이 보기 == | | == 같이 보기 == |
65번째 줄: |
31번째 줄: |
| * [[머클트리]] | | * [[머클트리]] |
| | | |
− | {{블록체인 기술|검토 필요}} | + | {{블록체인 기술|토막글}} |