블록체인과 가상화폐가 화제의 중심이 된 지 오래되었지만 정작 오리지널 논문을 읽어보지 못했습니다. 잠깐 여유가 생겨서 사토시의 비트코인 논문을 리뷰해보고자 합니다. 저는 IT 전공자이긴 하지만 네트워크/보안 분야에는 문외한이기 때문에 심층적인 이해와 전문적인 견해는 부족할 수 있습니다. 비전공자의 관점에서 주요 내용들을 정리해보았습니다. 단순 번역이 아닌 점 참고바랍니다.
목차
논문 구성
서론
본론
출처
논문 구성
- 서론 | Introduction (Section 1)
- 본론 | Main Idea (Section 2-11)
- 거래 | Transactions
- 타임스탬프 서버 | Timestamp Server
- 작업 증명 | Proof-of-Work (PoW)
- 네트워크 | Network
- 인센티브 | Incentive
- 디스크 공간 효율화 | Reclaiming Disk Space
- 지불 검증 간소화 | Simplified Payment Verification (SPV)
- 가치 결합 및 분산 | Combining and Splitting Value
- 프라이버시 | Privacy
- 계산 | Calculations - 결론 | Conclusion (Section 12)
서론 | Introduction
문제 제기
기존 화폐의 경우, 동전이나 지폐 등의 형태로 물리적인 실체가 존재합니다. 전자화폐는 기존의 현금을 대체하는 새로운 수단으로, 물리적인 실체가 없는 대신 컴퓨터에 전자적 방법으로 기록이 되어 있습니다. 전자화폐는 편리성 및 효율성의 측면에서 많은 장점이 있지만, 전자기록에 의존하기 때문에 아무래도 안정성과 보안에 취약한 문제점이 있습니다. 가장 큰 문제점 중 하나는 바로 "더블 스펜딩 (double-spending)", 즉 전자화폐가 복사 등을 통해 이중으로 사용되는 것입니다.
기존의 해결책
더블 스펜딩을 방지하기 위해서 기존 전자화폐 시스템에서는 "TTP"를 매개로 철저한 감독과 인증을 거쳐 화폐 거래가 성사됩니다. TTP는 Trusted Third Party의 약자로, 은행과 같은 신뢰할 수 있는 제 3자 기관을 뜻합니다. 하지만 TTP를 매개로 하는 거래 시스템은 비효율적인 면이 많습니다. 예를 들면, 신뢰도 높은 안전한 거래를 위해 사용자는 어느 정도의 개인 정보를 제공하게 되고, 그 과정에서 범죄 노출의 위험이 커질 수 밖에 없습니다.
저자의 해결책
저자는 TTP를 거치지 않고 더블 스펜딩을 막을 수 있는 해결책으로서, Peer-to-Peer (P2P) 네트워크를 기반으로 한 새로운 전자화폐 거래 시스템을 제시합니다.
본론 | Main Idea
각 챕터에서 저자는 P2P 네트워크를 이해하기 위한 구성 요소들을 하나씩 설명합니다. 주요 개념들을 요약하면 다음과 같습니다.
전자 코인
저자는 "전자 코인"을 디지털 서명 체인(a chain of digital signatures)으로 정의합니다. 이를 실제 코인으로 생각하기 보다는 일종의 "디지털 거래 기록"의 모음으로 생각할 수 있습니다. 예를 들어, A라는 개인이 지갑(wallet)에 보유한 코인의 양을 알기 위해서는, A가 개입된 모든 거래 기록에서, 받은 코인과 보낸 코인의 총 금액을 더하면 됩니다. (그림 1 예시 참조.) 조금 더 구체적으로는, 여러 사용자들간에 거래가 지속됨에 따라 "디지털 서명"들이 연쇄적으로 기록되는데, 저자는 이를 "코인"이라는 개념으로 지칭합니다.
디지털 서명 (Digital signature), 거래 (Transaction)
모든 사용자는 거래를 하기 위해 퍼블릭 키(public key)와 프라이빗 키(private key)가 필요합니다. 쉽게 이해하기 위해서 퍼블릭 키와 프라이빗 키를 각각 아이디와 비밀번호 정도로 생각할 수 있습니다. 즉, 퍼블릭 키(아이디)는 다른 사람들과 공유가 가능하지만, 프라이빗 키(비밀번호)는 본인만 알고있어야합니다. 처음 전자 지갑(wallet)을 만들면 프라이빗 키가 랜덤으로 생성이 되고, 그에 따른 퍼블릭 키와 지갑의 고유 주소가 생성됩니다.
그림 1의 예시를 확장해서, 그림 2에서는 B라는 개인이 C에게 1 BTC의 코인을 전송하는 과정을 살펴보겠습니다. 그림 1에서는 표시하지 않았지만, 코인을 전송하기 위해서는 보내는 사람의 "디지털 서명"이 거래 기록의 일부로 포함되어야 합니다. 디지털 서명은 전송하고자 하는 코인(이전 거래 기록, 거래1)과 코인을 받을 사람의 퍼블릭 키, 그리고 보내는 사람의 프라이빗 키를 이용하여 생성할 수 있습니다. 최종적으로 "거래4"에는 새로운 거래 내역과 B의 디지털 서명이 포함되었습니다.
거래4를 점선으로 표시한 이유는, 최종 승인이 되지 않은 상태이기 때문입니다. 더블 스펜딩의 여부를 검증하는 과정이 필요한데 이를 설명하기 위해서는 타임스탬프 서버, P2P 네트워크에 대한 이해가 필요합니다.
블록 (Block), 타임스탬프 서버 (Timestamp server), 블록체인 (Blockchain)
P2P 네트워크는 수많은 개인(노드, node)들에 의해 공유됩니다. 새로운 거래 내역들이 공용 네트워크에 최종적으로 반영되기 위해서는, 우선 충분한 양의 거래 내역들 이 더 큰 단위의 "블록"으로 모여야 하고, 또한 충분한 검증이 이루어져야 합니다. 각 블록에 암호화(해시, hash) 된 고유 식별 코드가 부여되는데, 타임스탬프 서버의 역할은 블록의 해시코드와 타임스탬프를 기록함으로써 블록들이 시간 순서로 체인의 형태를 이룰 수 있도록 하는 것입니다. "블록체인"이라는 표현은 블록들의 해시코드들이 체인으로 연결되어 있는 것으로 생각할 수 있습니다.
작업 증명 (Proof-of-Work, PoW), 마이닝(Mining), 네트워크 (Network)
앞서 새로운 거래 내역이 기록되는 과정과, 이들이 모여 블록을 형성하고, 블록들이 시간 순서대로 나열되어 블록체인을 형성하는 것을 설명하였습니다. 주의할 점은, 블록들이 공용 네트워크에 최종적으로 추가되기 위해서는 블록 헤더에 주어진 조건을 만족해야 합니다. 이러한 조건을 만족하는 블록을 완성하는 과정이 "작업 증명(PoW)"입니다.
블록에 대해 더 자세한 설명을 덧붙이자면, 각 블록에는 여러 거래 내역과 더불어 타임스탬프를 기반으로 나열된 이전 블록의 해시, 그리고 nonce 값이 기록되어 있습니다. PoW의 목표는 바로 이 nonce값을 찾아 블록을 완성하는 것입니다. PoW를 통과하기 위해서는, nonce를 포함한 블록 데이터의 해시코드가 N개의 0으로 시작해야 한다는 조건을 성립해야 합니다. N의 값에 따라 마이닝의 난이도가 달라지며, 블록이 마이닝되는 속도에 따라 난이도는 조정됩니다.
Nonce를 찾아 새로운 블록을 공용 블록체인에 새로 추가하기 위해 전 세계의 수많은 노드들이 끊임없이 PoW 과정을 실행하고 있습니다. (Trial and error) 이 과정을 마이닝 혹은 채굴이라고도 합니다. 이들 중 한 노드가 조건을 만족시키는 nonce 값을 찾게 되면 그 블록이 최종적으로 공용 네트워크(블록체인)에 추가됩니다.
Nonce 값을 찾아서 블록을 완성시키는 마이닝 과정은 아주 많은 연산이 필요한 과정입니다. 대신에 외부 해커에 의해 블록의 일부 데이터가 아주 조금이라도 손상되었을 경우에는 블록데이터의 해시코드가 N개의 0으로 시작하지 않을 확률이 높기 때문에 데이터 손상 여부를 아주 빠르고 효율적으로 진단할 수 있게 됩니다. 만약 해커가 이전 블록 데이터를 바꾸고 싶다면, 그 블록 이후의 모든 블록에 대해 PoW를 다시 해야하기 때문에, 전체 노드의 과반 이상이 해커가 아닌 이상 블록 체인에 이미 기록된 데이터를 조작하는 것은 불가능합니다.
인센티브 (Incentive)
전 세계의 수많은 사람들이 돈과 시간을 쓰면서 마이닝에 열중하는 이유는 바로 인센티브, 즉 보상이 있기 때문입니다. 첫째로는, 블록의 가장 첫번째 거래는 새로 생성되는 코인들이 특별히 기록되는데, 마이닝에 성공하게 되면 이를 블록 생성자가 소유하게 됩니다. 두번째 방법으로는 거래 수수료를 통해 인센티브를 받을 수 있게 됩니다.
디스크 공간 효율화 | Reclaiming Disk Space
각 거래 내역(transaction)은 최대 한 번만 전송에 사용 가능합니다. 즉, 이미 코인 전송에 사용되어진 거래 내역은 더이상 사용할 수 없기 때문에 블록에 존재할 필요가 없습니다. 이처럼 거래 내역이 사용되어 소진되자마자 해당 블록에서 빠르게 거래 데이터를 지움으로써 메모리 효율을 높일 수 있으며, 저자는 “Merkle Tree”의 데이터구조로 블록 내 거래 내역들을 저장하는 방법을 제시하였습니다.
지불 검증 간소화 | Simplified Payment Verification (SPV)
코인을 받을 때 해당 코인(거래 내역)이 유효한 것인지 효율적으로 검증하는 방법을 제시합니다. 사용자는 가장 긴 PoW 체인의 전체 블록이 아닌 블록 헤더만 다운로드 받은 뒤, 손쉽게 검증할 수 있습니다.
가치 결합 및 분산 | Combining and Splitting Value
지갑에 보유하고 있는 각 코인(거래 내역)의 금액과 송금하고자 하는 코인의 금액이 항상 일치하는 것은 아닙니다. 예를 들어, 10 BTC 단위로 받은 코인만 보유하고 있는데 1 BTC를 송금하고 싶을 수도 있고, 반대로 1 BTC 단위 코인만 보유 중인데 10 BTC를 송금해야 할 수도 있습니다. 이러한 경우에 여러 거래 내역에 흩어져 있는 작은 단위의 코인을 결합(combine)하거나, 큰 단위의 코인을 작은 단위로 분산(split)하여 새로운 송금 거래 내역을 생성할 수 있습니다. 가치 분산(splitting) 후 남은 거스름돈이 있는 경우에 그 금액에 해당하는 만큼의 새로운 거래 내역이 생성됩니다.
프라이버시 (개인정보보호) | Privacy
기존 신뢰 기반의 TTP 매개의 전자 화폐 시스템에서는 개인 정보의 접근을 제한하는 방식으로 프라이버시가 보호되었습니다. P2P 네트워크 기반의 블록체인의 경우, 모든 거래 내역들이 공용 네트워크에 공유되긴 하지만, 공개되는 퍼블릭 키에 익명성을 부여함으로써 프라이버시를 보호할 수 있게 됩니다. 구체적으로, 퍼블릭 키를 이용해서 전자 지갑 주소를 생성할 수 있고, 거래 기록을 생성할 때 전자 지갑 주소를 사용하여 퍼블릭 키를 숨길 수 있습니다.
계산 | Calculations
앞서 잠깐 언급하였듯이, 해커가 공용 네트워크에 이미 기록되어있는 블록 데이터를 바꾸기 위해서는, 공격 타켓 블록 이후의 모든 블록들을 새로 생성해야 합니다. 이러한 해커의 행동이 전체 블록체인을 변이시키기 위해서는, 해커 블록들이 새로 생성되는 속도가 정상 블록들의 생성 속도보다 빨라야 합니다. 저자는 정상 체인(honest chain)과 해커 체인(attacker chain) 사이의 속도 경쟁을 Binomial Random Walk 문제로 접근하여, 해커 노드가 정상 노드를 따라잡을 확률이 매우 낮다는 것을 입증하였습니다.
출처
Satoshi Nakamoto, "Bitcoin: A Peer-to-Peer Electronic Cash System", URL: https://bitcoin.org/bitcoin.pdf (2008).
Investopedia Website, https://www.investopedia.com/news/how-bitcoin-works
'공부하는 삶 > 암호화폐 101' 카테고리의 다른 글
이더리움 논문 리뷰 05 이더리움 디자인 철학 (Ethereum Design Philosophy) (1) | 2021.06.22 |
---|---|
이더리움 논문 리뷰 04 스크립팅, 스마트 계약 (Scripting, Smart Contracts) (0) | 2021.06.19 |
이더리움 논문 리뷰 03 머클 트리 (해시 트리, Merkle Trees) (2) | 2021.06.18 |
이더리움 논문 리뷰 02 채굴 (마이닝, Mining) (1) | 2021.06.15 |
이더리움 논문 리뷰 01 Bitcoin As A State Transition System (3) | 2021.06.14 |