블록체인

비트코인 백서 정리

Goniii 2025. 10. 12. 00:14

참고 자료

bitcoin.org

비트코인 지식저장소 비트코인 백서 함께 읽기 - 통합본

 

 

목차

  • 비트코인과 블록체인
  • 탄생 배경 + 기존 화폐 시스템의 문제점
  • 비트코인 등장
  • 트랜잭션 방법
  • 타임스탬프 서버
  • 작업 증명
  • 네트워크 실행 단계
  • 보상(인센티브), 채굴
  • 디스크 공간 재확보
  • 거래 금액의 결합과 분할 (UTXO 개념)
  • 거래자 비밀 보호
  • 결론

 

비트코인이란 신뢰할 수 있는 제3자 없이 암호화적 증명과 작업증명으로 유지되는 탈중앙 디지털 화폐이다

이 비트코인을 구현하기 위해 만들어진 핵심 기술이 바로 블록체인(Blockchain)이다.

블록체인은 비트코인의 거래 기록을 안전하게 저장하고 검증하기 위한 분산 원장 기술이다

 

블록체인을 이해하고 싶다면 비트코인에 대해 먼저 알아야 된다

비트코인을 구현하기 위해 나온 개념이 블록체인이기 때문이다

 

먼저 비트코인이 등장한 배경부터 살펴보자

 


1. 탄생 배경

  • 2008년 리먼브라더스 사태를 계기로 전 세계 금융 시스템에 대한 신뢰가 무너짐
  • 정부는 위기를 막기 위해 시중 통화량을 확대하는 양적완화 정책을 시행했지만, 그 결과 화폐가치가 떨어지고 인플레이션이 장기화됨
  • 사람들은 더 이상 중앙은행과 금융기관을 완전히 신뢰할 수 없게 됨
💡 리먼브라더스 사태
- 미국 투자은행 리먼브라더스가 서브프라임 모기지 부실로 파산하며 세계 금융위기가 발생
        - 신용이 낮은 사람들에게 과하게 대출해주고, 이를 복잡한 파생상품으로 포장하여 전 세계에 판매함
        - 집 값 하락에 이러한 구조가 붕괴됨
        - 전 세계 금융시장 마비와 경기 침체라는 금융 위기 발생
- 리먼브라더스의 파산으로 중앙화된 금융 시스템의 취약성이 드러나면서, 금융 기관에 대한 신뢰도가 떨어짐
- 이후 “중앙기관 없는 신뢰 시스템”인 비트코인의 탄생 배경이 됨

기존의 화폐 시스템의 문제점

  1. 중앙화 구조: 정부(중앙은행)에서 화폐를 발행, 민간은행에서 관리 → 중앙기관에 대한 신뢰가 필수
  2. 중재 비용 발생: 제3자의 개입으로 거래 수수료, 최소 거래 단위 등 비용이 증가
  3. 개인정보 의존: 거래를 위해 은행에 개인 신상정보, 계좌정보를 제공해야 함
  4. 인플레이션 위험: 발행량에 제한이 없어 화폐가치 하락 가능성 존재

이러한 금융 시스템에 대한 신뢰 하락과 기존 화폐 시스템의 문제점을 보완하기 위해 사토시 나카모토라는 익명의 인물이 비트코인이라는 개념을 세상에 발표한다

 


2. 비트코인의 등장

💡 Bitcoin vs bitcoin
- Bitcoin: 비트코인 네트워크
- bitcoin: 코인

 

제3자 없이 거래를 진행하게 된다면, 거짓된 거래가 성사될 가능성이 있다

 

예를 들면,

A가 B에게 100만원을 보내야 되는데, A는 보내지 않고 B에게 이미 보냈다고 했다고 해보자

개인 간의 거래에서는 B가 진실을 확인할 방법이 없다

기존 화폐 시스템은 신뢰할 수 있는 제3자(은행)가 거래 내역을 확인하고 실제로 송금을 했는지 확인할 수 있다

따라서, 기존 시스템은 신뢰를 기반으로 거래를 진행하지만,

사토시 나카모토는 이 문제를 신뢰가 아닌 암호화 증명을 기반으로 해결하고자 했다

 

즉, 거래 기록이 되돌려지지 않고(불변), 모든 참여자가 거래 내역을 공유하면 송금 여부를 검증할 수 있다는 아이디어이다

이제 이 거래가 신뢰가 아닌 암호화로 검증할 수 있는지 살펴보자

 


3. 트랜잭션(거래)

디지털 코인의 소유권 이전은 전자서명과 해시를 이용해 이루어진다

기본 원리는 다음과 같다

  • 각 거래는 이전 거래(어떤 코인이 어디서 왔는지)와 수신자의 공개키를 함께 해시한 뒤, 송금자가 자신의 개인키로 서명해 전송한다
  • 수신자는 송금자의 서명을 송신자의 공개키로 검증해 해당 거래가 진짜임을 확인한다

예) 소유자1이 소유자2에게 100코인을 보낼 때

  • 이 거래를 위해서는 이전 트랜잭션과 소유자2의 공개키를 같이 해시화해야 한다
  • 즉, 소유자1이 소유자0으로부터 받은 100개의 코인을 사용하기 위해, 이 소유자0과 소유자1 사이의 거래 내역과 소유자2의 공개키를 함께 해시화하고 소유자1의 개인키로 서명한다
  • 다른 노드들은 이 서명을 검증하여 거래의 정당성을 확인한다

 

전자 서명 원리

  1. 문서를 SHA256으로 해시화 (문서:이전 트랜잭션의 출력 정보 + 수신자의 공개키(주소) + 전송 금액 등 거래 내역)
  2. 보내는 이의 비밀키로 해시를 암호화(서명)
  3. 해당 암호를 전자서명으로 사용 (문서에 첨부)
  4. 전자서명을 보내는 이의 공개키로 복호화 (검증 가능)
  5. 복호화가 진행된다면, 누가 보낸 건지 확인이 가능함 (해당 인물의 공개키로만 복호화되기 때문)
  6. 복호화 내용을 원본을 해시한 것과 비교 - 같으면 내용 증명
💡 해시 알고리즘(Hash)
- 입력 (문자열, 숫자 등)을 고정된 길이의 값으로 변환하는 함수
- 빠른 검색을 위한 인덱스 용도, 데이터 무결성 검사, 암호화, 서명 등에 사용

특징
- 고정된 길이의 출력: 입력 길이와 상관 없이 항상 같은 길이의 결과를 생성
- 결정적: 같은 입력은 항상 같은 해시값을 출력
- 빠른 계산 속도: 해시값 계산이 빠름
- 역산 불가: 해시값으로는 원래 입력값을 알 수 없음 → 블록체인에서 중요한 이유
- 충돌 방지성: 서로 다른 두 입력이 같은 해시값을 가지는 확률이 매우 낮음
- 작은 변화에 큰 차이(Snowball Effect, Avalanche Effect): 입력값이 1비트만 바뀌어도 완전히 다른 해시값이 출력됨.

 

💡개인키(비밀키, Private Key) vs 공개키(Public Key)

비밀키(개인키)

  • 자신만 알고 있어야 하는 키
  • 역할: 데이터를 복호화(해독)하거나 전자 서명을 생성하는 데 사용
  • 특징: 생성한 사용자만이 소유하며, 절대로 다른 사람과 공유해서는 안 되는 비밀 정보
  • 보안: 비밀 키를 통해 자신임을 증명하는 데 사용되므로, 비밀 키의 유출은 심각한 보안 위협이 됨
  • ex) 계좌 비밀번호

공개키

  • 다른 사람과 공유할 수 있는 키
  • 역할: 다른 사람에게 보내는 데이터를 암호화하거나, 상대방의 전자 서명을 검증하는 데 사용
  • 특징: 누구나 알 수 있도록 공개되며, 키를 생성한 개인의 공개 키 주소와 같음
  • 보안: 공개 키 자체로는 비밀 키를 유추할 수 없도록 설계되어 있어 안전하게 공유할 수 있음
  • ex) 계좌 번호

둘의 관계 (키 페어)

  • 공개 키와 비밀 키는 한 쌍으로 만들어지며, 서로 수학적으로 연결되어 있음
  • 전자 서명: 서명 생성자는 자신의 비밀 키로 데이터의 해시 값을 암호화(서명)하고, 수신자는 서명자의 공개 키로 이를 복호화하여 원본 데이터와 비교하여 진위 여부를 확인


중복 사용(이중 지불) 문제

서명만으로는 같은 코인을 두 번 쓰지 않았는지 판단할 수 없다

중복 사용 문제를 확인하려면 매 거래 후, 그 코인은 반드시 새로운 코인으로 발행되게끔 발행처로 회수되어야 하고, 직접 발행한 새 코인들만 중복 사용된 것이 아니라는 신뢰가 부여될 수 있다

일반적으로 발행처라는 중앙관한자가 확인하지만, 이는 중앙화되어 있다

 

중앙 발행처가 아닌 분산 환경에서 중복 사용을 막으려면 모든 거래의 순서를 네트워크가 합의해야 한다

사토시의 해법은 아래와 같다

  1. 모든 거래를 공개적으로 브로드캐스트한다
  2. 채굴자가 거래들을 모아 블록에 넣고, 블록을 타임스탬프와 함께 체인에 연결된다
  3. 네트워크는 ‘가장 많은 작업(작업증명 누적)의 체인’을 정당한 기록으로 인정한다
  4. 따라서 수취인은 자신의 거래가 포함된 블록이 네트워크의 과반 이상(가장 긴 체인)에 수용되었음을 확인하면 안전하다고 볼 수 있다

즉, 가장 먼저 유효하게 된 거래만 인정하고 뒤에 나오는 중복 시도는 무시하는 구조가 이중지불을 방지한다


거래를 모아 블록에 넣고, 블록을 타임스탬프와 함께 체인에 연결한다고 했다

타임스탬프에 대해 알아보자

4. 타임스탬프 서버

  • 타임 스탬프 서버는 블록에 들어갈 항목들의 해시를 계산하고 그 해시를 다른 노드들에 널리 공표하는 방식으로 작동함
  • 타임스탬프는 “해당 데이터가 특정 시점에 존재했음”을 증명하는 역할을 함
  • 각 타임스탬프(블록)는 이전 블록의 해시를 포함해 연결(chain) 되며, 이렇게 연결된 체인은 시간이 지남에 따라 앞쪽 블록들의 무결성을 점점 더 강하게 보장함

→ 즉, 한 블록의 내용을 바꾸려면 그 뒤에 연결된 모든 블록을 다시 생성해야 하고, 그 과정에는 엄청난 시간과 계산 비용(작업증명)이 들어감

따라서, 블록을 위변조하는 것은 사실상 불가능에 가까움

 


 

비트코인은 올바른 네트워크를 확인하는 방법으로 ‘가장 많은 작업의 체인’을 올바른 네트워크라고 본다

가장 많은 작업의 체인이란 무엇인가

“가장 많은 작업의 체인” = 누적 작업량(cumulative work)이 가장 큰 체인이고, 작업증명(PoW)은 그것을 만들고 보호하는 방법이다

 

5. 작업기반의 증명(Proof-of-Work)

5-1. “가장 많은 작업의 체인”이란?

비트코인은 여러 분산 노드가 경쟁적으로 블록을 만들며 체인이 갈라질 수 있는 상황에서, 네트워크가 어느 체인을 ‘정당한’ 기록으로 볼지를 판단해야 한다

여기서 정답은 단순히 블록 수가 많은 체인이 아니라 “누적 작업량(cumulative work)이 가장 큰 체인”이다.

흔히 ‘가장 긴 체인’이라고 줄여 말하지만, 정확하게는 가장 많은 계산(작업증명)이 들어간 체인을 의미한다.

이 기준을 쓰면, 네트워크는 계산 자원을 많이 투입한 쪽(=많은 노드의 연산 비용이 쌓인 쪽)을 신뢰하는 셈이 된다.

 

5-2. 작업증명(Proof-of-Work)의 동작 원리

  • 작업증명은 블록 헤더를 해시했을 때 해시값이 특정 목표값(목표 비트 수로 표현된 난이도) 보다 작은 값을 찾는 과정이다
  • 이 과정은 본질적으로 ‘무작위 추측’이므로 많은 반복(해시 계산)이 필요하다. 반복을 빠르게 많이 할수록 해당 블록을 먼저 찾을 확률이 커진다.
  • 블록에 포함된 거래들, 이전 블록 해시, 타임스탬프, 그리고 nonce(임시값) 를 바꿔가며 해시를 계산해 목표를 만족하는 값을 찾는다.
  • 검증은 매우 빠르다: 누군가 찾은 nonce와 블록을 가져오면, 다른 노드는 해시를 한 번 계산해 목표값과 비교하면 되므로 검증 비용은 작다.

5-3. 난이도와 블록 생성 속도 조절

  • 네트워크는 목표한 평균 블록 생성 시간(예: 비트코인은 약 10분)을 유지하기 위해 난이도를 주기적으로 조정한다.
  • 채굴자들이 많아져 해시파워가 늘어나면 난이도가 올라가고, 부족하면 난이도가 내려가 평균 생성 시간이 유지된다.

 

5-4. 왜 조작이 어려운가

  • 한 블록을 바꾸려면 그 블록 이후에 연결된 모든 블록의 작업증명을 다시 수행해야 한다
  • 정직한 노드들이 계속 블록을 추가하는 동안 공격자는 뒤에서 따라잡아야 하므로, 공격자가 네트워크 전체 해시파워의 과반(>50%)을 가지지 않는 한 성공 가능성은 급격히 감소한다.
  • 따라서 공격 비용(전력·장비·시간)이 매우 크고, 실질적 이득이 없으면 공격은 현실적으로 불가능하거나 비경제적이다.

 

5-5. PoW가 해결하는 문제들

  • 분산 합의: 누가 ‘먼저’ 기록을 만들었는지에 대해 객관적(계산량 기반) 기준을 제공한다
  • 비잔틴 장애 허용: 악의적인 소수 노드가 있어도, 정직한 노드의 누적 작업량이 더 크면 네트워크는 올바른 체인을 선택한다.
  • 스팸/리플레이 방어: 블록 생성에 비용(연산·전력)을 부과함으로써 악의적 트랜잭션 생성의 진입 장벽을 만든다.

 

5-6. 51% 공격

  • 공격자가 전체 해시파워의 과반을 장악하면, 상대적으로 자신이 만든 체인을 더 빨리 늘릴 수 있어 블록 재작성(과거 거래 되돌리기)이나 일부 공격을 시도할 수 있다
  • 현실적으로는 과반 해시파워를 확보하는 데 드는 비용이 매우 크고, 성공해도 네트워크 신뢰가 깨져 코인의 가치가 하락하므로 경제적 유인이 줄어든다.

6. 네트워크

앞서 살펴본 작업증명(Proof-of-Work)은 블록의 무결성과 신뢰를 보장하는 핵심 원리였다

그렇다면, 이렇게 만들어진 블록들이 실제 네트워크에서는 어떻게 전파되고 합의에 이르는지 살펴보자.

비트코인 네트워크는 중앙 서버 없이도, 전 세계 노드가 같은 장부를 공유하도록 설계되어 있다

이 네트워크가 작동하는 순서는 다음과 같다.

  1. 새로운 트랜잭션(거래) 이 발생하면, 해당 거래가 네트워크의 모든 노드에 브로드캐스트된다.
  2. 각 노드는 자신이 수신한 유효한 거래들을 메모리풀(Mempool) 에 저장한다
  3. 각 노드는 메모리풀에 있는 거래들을 모아 블록 후보(candidate block) 를 만든다
  4. 노드는 블록을 확정하기 위해 작업증명(Proof-of-Work) 을 수행한다.
  5. 한 노드가 유효한 작업증명을 찾으면, 그 블록을 모든 노드에 전파한다
  6. 다른 노드들은 다음 조건을 만족할 때 그 블록을 체인에 추가한다.
    • 블록의 작업증명이 유효할 것
    • 블록에 포함된 거래가 중복 사용(이중지불) 되지 않았을 것
    • 이전 블록 해시가 자신이 가진 체인과 일치할 것
💡 거래 유효성 검증은 어떻게 이루어질까?
- 각 노드는 자신이 유지하고 있는 UTXO(미사용 거래 출력) 집합을 기준으로 거래를 검증함
- 즉, 입력으로 사용된 코인이 이미 소비된 내역이 있으면 그 거래는 무효 처리
- 이렇게 모든 노드가 독립적으로 검증하기 때문에, 중앙기관 없이도 동일한 무결성이 유지됨


가장 긴 체인 규칙 (Longest Chain Rule)

  • 모든 노드는 항상 가장 많은 작업증명이 누적된 체인(가장 긴 체인) 을 올바른 체인으로 간주한다
  • 동시에 두 노드가 서로 다른 블록을 거의 동시에 전파하면, 일시적으로 체인 분기(fork)가 발생할 수 있다.
    • 일부 노드는 A 블록을, 다른 노드는 B 블록을 기준으로 채굴을 계속한다
    • 이후 어느 쪽이든 한 블록이라도 더 추가되면, 그 체인이 더 길어지고 다른 노드들이 그쪽으로 전환한다.
    • 이 과정을 통해 자연스럽게 네트워크는 하나의 체인으로 합의하게 된다.
💡 고아 블록(Orphan Block)
간혹 “자식 블록이 부모 블록보다 먼저 도착하는 경우”가 발생함
이런 블록은 일시적으로 보관되었다가 부모 블록이 도착하면 체인에 연결됨
부모 블록이 끈태 도착하지 않으면 해당 블록은 고아 블록으로 버려짐

 

네트워크 전파 특성

  • 새로운 거래나 블록은 반드시 모든 노드에 도달할 필요는 없다
  • 블록 전파 중 일부 메시지가 누락되어도 문제가 되지 않는다
  • 이렇게 네트워크는 일시적 손실을 허용하면서도 결국 일관된 상태로 수렴한다.

정리하자면 비트코인 네트워크는 신뢰할 중앙 서버 없이, “가장 많은 계산이 누적된 체인을 모두가 공유한다”는 단순한 규칙으로 전 세계 수많은 노드가 합의된 단일 장부(블록체인)를 유지한다

 


7. 보상(인센티브)과 채굴의 경제학

비트코인 네트워크가 유지되려면, 거래에 대한 블록을 생성하는 작업증명을 지속적으로 해야되는데

노드들의 참여를 유지할 원동력이 필요하다

이를 보상이라는 제도를 통해 네트워크 보안과 참여 동기를 만들어냈다

코인베이스 트랜잭션(블록 보상)

  • 각 블록의 첫 번째 트랜잭션(코인베이스 트랜잭션) 은 그 블록을 성공적으로 만든 채굴자에게 새로 발행되는 코인을 지급하는 특별한 거래다.
  • 이 보상은 새 코인 발행(블록 보상) + 블록에 포함된 거래들의 수수료로 구성된다.
  • 즉, 채굴자는 블록 보상과 그 블록에 들어간 거래 수수료를 합쳐 인센티브를 얻는다

채굴 참여의 비용과 보상

  • 채굴은 전력 비용과 하드웨어 비용(CPU/GPU/ASIC) 을 소모하는 작업이다
  • 보상은 이 비용을 정당화하고, 네트워크를 운영·보호하는 경제적 동기를 제공한다
  • 사토시는 보상을 통해 “정직하게 체인을 확장하는 쪽이 경제적으로 유리”하도록 설계했다

반감기와 인플레이션 통제

  • 비트코인은 총 발행량을 한정(21,000,000 BTC)하고, 일정 주기마다 블록 보상을 절반으로 줄이는 반감기(halving) 를 둔다
  • 시간이 지나 새로 발행되는 코인이 줄어들면 인플레이션 압력은 낮아지고, 장기적으로는 보상 구조가 거의 거래 수수료 중심으로 전환된다.

거래 수수료의 역할

  • 채굴 보상이 점차 줄어들면, 채굴자들의 주된 수입원은 거래 수수료가 된다.
  • 결과적으로 네트워크 보안은 ‘새 코인 발행’에서 ‘거래 수수료로 지불되는 경제적 보상’으로 천천히 이동하게 된다.

공격(51% 공격)과 경제적 억제

  • 이론적으로 공격자가 네트워크 해시파워의 과반(>50%)을 장악하면 과거 블록을 재작성해 일부 거래를 되돌리는 등 악의적 행동을 할 수 있다(51% 공격)
  • 그러나 현실적으로는 다음과 같은 이유로 공격 유인이 낮다
    1. 막대한 비용: 필요한 연산 장비와 전력비용이 엄청나다
    2. 가치 하락: 성공적으로 네트워크를 훼손하면 비트코인 가치가 급락해 공격자의 보유 자산 가치도 떨어진다
    3. 대체로 채굴하는 편이 더 이득: 같은 자원을 정상적으로 채굴하는 편이 공격을 감행해 얻는 이득보다 크다.
  • 따라서 경제적 관점에서 보면, 채굴자가 규칙을 지키는 것이 장기적으로 합리적이다

8. 디스크 공간 재확보

앞서 설명했듯, 비트코인은 채굴자에게 보상을 주며 정직한 네트워크 참여를 유도한다

하지만 네트워크가 지속 가능하려면 정직한 참여자만 많은 것이 아니라, 누구나 가볍게 참여할 수 있는 구조여야 한다

즉, 노드(참여자)가 늘어날수록 탈중앙화가 강화되고, 이를 위해서는 노드를 운영하는 데 필요한 자원(저장공간, 전력, 장비 등)을 최소화해야 한다.

블록 크기와 저장공간 문제

  • 하나의 블록 크기는 약 1MB 정도로, 새로운 블록은 평균적으로 10분마다 추가된다.
  • 시간이 지나면 블록체인의 전체 크기는 기하급수적으로 증가한다.
  • 따라서 오래된 거래 데이터를 그대로 모두 저장하면, 개인이 노드를 운영하기 점점 어려워진다

머클 트리(Merkle Tree)를 활용한 공간 절약

  • 비트코인은 블록 내부의 모든 거래를 직접 저장하지 않고, 거래들을 머클 트리(Merkle Tree) 구조로 해시해 그 루트 해시(Merkle Root) 만 블록 헤더에 포함시킨다.
  • 각 블록의 핵심 정보만 남기고, 오래된 거래 내역의 세부 데이터는 가지치기(pruning) 를 통해 삭제할 수 있다.
  • 이렇게 해도 루트 해시가 블록 헤더에 남아 있으므로, 블록의 무결성은 검증 가능하다.
  • 실제로 오래된 블록은 트리의 하위 해시(leaf nodes) 를 제거해 압축할 수 있고, 검증에 필요한 최소 정보만 유지된다.
💡 블록헤더(Block Header)
거래 데이터가 없는 블록헤더는 약 80바이트 정도로 매우 작음
따라서 전체 트랜잭션을 모두 저장하지 않아도 블록헤더 체인만으로도 해당 체인이 유효하게 이어졌는지 검증할 수 있음
이러한 방식을 SPV(Simple Payment Verification, 간편 결제 검증)라고 부름

9. 간소화된 지급 확인 (Simplified Payment Verification, SPV)

앞서 살펴본 것처럼, 모든 노드가 전체 거래 데이터를 보관할 필요는 없다.

비트코인은 저장공간을 줄이기 위해 머클 트리(Merkle Tree) 구조를 활용하고,

이를 기반으로 간소화된 지급 확인(SPV, Simplified Payment Verification) 방식을 제안했다.

SPV의 핵심 아이디어

  • SPV 사용자는 풀노드 전체를 구동하지 않아도 결제(거래)의 유효성을 확인할 수 있음
  • 사용자는 블록 헤더만 저장하고, 네트워크 노드로부터 자신이 받은 거래가 어떤 블록에 포함되어 있는지에 대한 머클 경로(Merkle Path) 를 요청
  • 블록 헤더의 체인(가장 긴 작업증명 체인)을 유지하면서, 해당 거래가 그 체인 내 특정 블록에 포함되어 있다는 것을 확인함으로써 거래가 유효하다는 간접적인 증명을 얻는 것

즉, “이 거래가 정당하다고 풀노드들이 인정한 블록에 포함되어 있다면, 나도 이 거래를 신뢰할 수 있다.”는 구조

머클트리를 사용한다면, 나의 주소에서 보낸 이전 내역들을 확인하고 싶다면 어떻게 되는 걸까

블록헤더에 어떤 주소로 얼만큼 보냈는지 저장이 되어 있을까?

그렇지 않다

블록 헤더에 포함되는 정보는 아래와 같다

항목
설명
Version
블록 구조나 검증 규칙의 버전
Previous Block Hash
이전 블록의 헤더 해시값 (→ 체인 연결 유지)
Merkle Root
이 블록 안의 모든 트랜잭션을 해시 트리(Merkle Tree)로 요약한 루트 해시
Timestamp
블록이 생성된 시간
Difficulty Target (nBits)
작업증명의 난이도 목표값
Nonce
작업증명(PoW)에서 찾은 난수 값

즉, 블록헤더에는 거래 내용이 포함되지 않고, ‘거래들이 존재함’만 증명하는 구조이다

 

그렇다면

 

따라서, 머클경로를 요청하려면 반드시 일부 노드는 ‘풀노드(full node)’ 형태로 전체 데이터를 유지하고 있어야 한다.

그렇지 없으면 네트워크의 신뢰와 검증 구조가 유지되지 않는다.

SPV 노드는 풀노드에 데이터를 복원 요청을 하므로써 거래를 확인할 수 있다

SPV의 한계와 보안 취약점

  • SPV 노드는 거래를 직접 검증하지 않음
  • 따라서 정직한 풀노드가 다수일 때만 신뢰할 수 있게 됨
  • 만약 공격자가 네트워크의 다수를 장악하면, SPV 노드는 잘못된 체인(가짜 블록)을 받아 속을 수 있음

보안 강화 방법

  • SPV 지갑이 정직한 풀노드로부터 경고(Alert) 를 받으면 의심되는 블록과 거래를 전체 다운로드해 직접 비교 검증한다
  • 유효하지 않은 블록이나 불일치가 발견되면 해당 체인을 버리고, 다른 노드의 체인을 신뢰하도록 한다

즉, SPV 노드도 완전히 ‘맹신’하는 구조가 아니라, 풀노드들의 감시와 교차검증을 통해 간접적인 보안을 확보할 수 있다.

 


10. 거래 금액의 결합과 분할 (UTXO 모델)

디지털 화폐를 다룰 때 매번 “정확한 액수만큼의 코인”을 새로 발행하거나 쪼개서 전송하면 번거롭다

그래서 비트코인은 UTXO(Unspent Transaction Output) 라는 개념으로 금액의 결합과 분할을 다룸

  • UTXO는 아직 사용되지 않은 ‘코인의 출력’
  • 각 트랜잭션은 이전 트랜잭션의 UTXO들을 입력(input)으로 사용하고, 새로운 UTXO들을 출력(output)으로 생성한다.
  • 트랜잭션 하나는 여러 개의 입력을 합쳐(예: 0.3BTC + 0.7BTC) 하나 이상의 출력을 만들 수 있다
    • 예: 받는사람 0.5BTC, 잔돈 0.4999BTC
  • 일반적으로는 지급용 출력 하나잔돈(change) 출력 하나가 생성되는 경우가 많다.
  • 잔돈은 보낸 이가 소유한 다른 주소(대체로 지갑의 내부 주소)로 돌아온다.
  • 트랜잭션은 이전 트랜잭션의 여러 출력을 참조할 수 있고, 그런 이전 트랜잭션들도 또 다른 이전 출력을 참조하는 식으로 이어진다.
    • → 이런 트랜잭션 정보가 널리 퍼지는 것(fan-out)은 문제되지 않는다. 모든 유효성 검증은 각 노드가 UTXO 세트를 기준으로 독립적으로 수행한다.
  • 따라서 “어떤 주소의 완전하고 유일한 거래 내역들”을 한곳에 추출해 둘 필요가 없다
  • 잔액은 그 주소(또는 지갑)가 보유한 현재의 UTXO 합계로 계산된다.

11. 거래자 비밀 보호

  • 전통적 은행 시스템은 거래 정보 접근을 관계 당사자와 신뢰된 제3자(은행)로 제한함으로써 프라이버시를 어느 정도 보장한다
  • 이 방식은 모든 트랜잭션을 공개하는 이 모델에는 맞지 않다
  • 이 모델에서는 공개키의 해시를 통해 익명화하는 방식으로 프라이버시를 유지할 수 있다
  • 네트워크에 참여하는 대중들은 누군가 어떤 금액을 누군가에게 전송하고 있다는 것을 볼 수 있지만, 특정인으로 결부시킬 수는 없다
  • 추가 보호 수단으로 거래마다 그것이 어떤 공통된 소유자에게 연결되지 않도록 새로운 키 쌍을 사용해야 한다 (권장됨)
  • 복수로 입력되는 트랜잭션인 경우, 필연적으로 입력된 트랜잭션이 동일한 소유자가 소유하고 있었다는 사실은 알 수 있다.
  • 어떤 키의 소유자가 드러나면 이 연결 때문에 동일 소유자의 다른 거래까지 드러날 위험도 존재한다

 


12. 계산

공격자는 자신만의 대체 체인을 만들어 정직한 체인보다 더 길게 만들어(=누적 작업량을 더 크게 만들어) 과거 거래를 되돌리려 할 수 있다

  • 이런 시도가 성공한다고 하더라도, 이 시스템은 허공에서 가치를 만들어 내거나 공격자가 소유한 적도 없는 돈을 얻게 하는 무단 변경을 허용하지 않는다.
  • 노드는 유효하지 않은 거래를 결제로 받아들이지 않으며, 정직한 노드는 그것을 포함하는 블록을 절대 받아들이지 않는다.
  • 공격자가 할 수 있는 시도는 최근 쓴 돈을 회수하기 위해 자신의 거래 중 하나만을 바꾸는 것이다

모델과 가정

  • p = 정직한 노드(집단)가 다음 블록을 찾을 확률 (예: 전체 해시파워 중 정직한 쪽의 비율)
  • q = 공격자가 다음 블록을 찾을 확률 (공격자의 해시파워 비율)
  • 따라서 p + q = 1 (단순화된 2주체 모델)
  • 공격자는 이미 z 블록 뒤처진 상태(=정직한 체인이 공격자보다 z개 더 길다)에서 따라잡으려 한다고 가정

정직한 체인과 공격자 체인 간 경주는 이항 임의보행(Binomial Random Walk)으로 특징지을 수 있다.

정직한 체인이 한 블록 더 늘어나면 ‘우위(lead)’가 +1, 공격자가 한 블록 늘리면 우위가 −1이 된다.

기본 결과 — 도박꾼의 파산(Gambler’s Ruin) 관점

  • 만약 공격자의 해시 비중이 정직한 쪽보다 작다면(q < p, 정직한 쪽이 더 자주 블록을 찾는다면)
  • 공격자가 z 블록의 열세를 언젠가 따라잡을 확률기하급수적으로 작아짐

13. 결론

  • 비트코인은 신뢰할 제3자 없이 개인 간 전자 거래가 가능한 시스템이다
  • 이중지불 문제를 작업증명(Proof-of-Work)P2P 네트워크로 해결했다
  • 이 구조는 정직한 노드가 다수의 연산력을 보유할 경우 거래 조작은 사실상 불가능하다
  • 노드들은 중앙 조정 없이 자율적으로 동작
  • CPU 파워를 이용한 투표로 합의(consensus)를 이룸
  • 노드는 자유롭게 이탈/재합류 가능하며, 복귀 시 작업증명 체인을 내려받아 그동안의 기록을 증명으로 신뢰한다.
  • 결국 비트코인은 신뢰 대신 암호학적 증명과 인센티브로 유지되는 탈중앙 시스템이다.
728x90