# 비트코인과 블록체인에 대한 백과사전식 개요 본 문서는 비트코인(Bitcoin)과 블록체인(Blockchain)의 원리, 구성 요소, 동작 방식 및 보안 이슈를 백과사전 스타일로 정리한 것이다. 용어는 필요에 따라 영어 용어를 함께 병기하며, 수식은 옵시디언 형식의 inline 표기인 $...$ 로 감싼다. ## 1. 서론 - 비트코인(Bitcoin)은 분산 원장(distributed ledger) 기술의 대표적인 구현으로, 중앙 기관 없이도 화폐의 발행, 거래, 기록 보존을 가능하게 한다. - 블록체인은 연속적으로 연결된 블록(block)의 사슬이며, 각 블록은 일정한 시간 간격으로 생성되어 원장에 추가된다. 이 구조는 데이터의 불변성, 투명성, 탈중앙화를 제공한다. - 핵심 아이디어는 탈중앙화된 P2P 네트워크와 합의(consensus) 알고리즘을 통해 신뢰를 확보하고, 거래의 유효성을 검증하는 것이다. ## 2. 역사적 배경과 의의 - 비트코인은 2008년 사토시 나카모토(Satoshi Nakamoto)라는 익명의 인물이 제시한 비트코인 백서에 기초하여 등장했고, 2009년 첫 블록(제네시스 블록)이 생성되었다. - 전통적인 신뢰 구조가 필요한 중앙 관리 주체를 제거하고, 공개적이고 검증 가능한 원장을 공용 네트워크에 저장하는 접근 방식이 확산되었다. - 이후 블록체인 기술은 암호자산뿐 아니라 공급망 관리, 자산 토큰화, 스마트 계약 등 다양한 응용으로 확장되고 있다. ## 3. 주요 용어(용어는 영어를 병기) - Bitcoin (비트코인): 블록체인 기반의 암호자산 및 네트워크 프로토콜. - Blockchain (블록체인): 연속된 블록의 불변 원장. - Block (블록): 트랜잭션의 묶음으로, 블록 헤더와 바디로 구성된다. - Block header (블록 헤더): 블록의 메타데이터를 담은 부분으로, 버전(version), 이전 블록 해시(previous_hash), 머클 루트(merkle_root), 타임스탬프(timestamp), 비트(bits, 난이도 표현), 넌스(nonce) 등을 포함한다. - Transaction (트랜잭션): 자산의 이동을 나타내는 데이터 단위. - Merkle tree / Merkle root (머클 트리 / 머클 루트): 다수의 트랜잭션 해시를 계층적으로 결합해 최상단의 루트 해시를 얻는 데이터 구조. - UTXO (Unspent Transaction Output): 아직 사용되지 않은 트랜잭션 출력으로, 새로운 트랜잭션의 입력으로 소모될 수 있다. - Proof of Work (PoW, 작업 증명): 합의 알고리즘의 한 형태로, 해시 계산으로 특정 조건을 만족하는 해시를 찾는 과정. - Hash function (해시 함수): 임의 길이 입력을 고정된 길이의 출력으로 매핑하는 암호학적 함수. 예: $H(x)$. - SHA-256: 비트코인에서 사용되는 기본 해시 함수의 하나(두 번 연속 적용하는 경우가 많다). - ECDSA (elliptic-curve digital signature algorithm): 공개키 암호화 방식으로 비트코인 트랜잭션의 서명을 수행한다. - Mempool: 아직 블록에 포함되지 않은 거래들이 모여 있는 대기 공간. - Halving (반감기): 일정 주기마다 채굴 보상이 절반으로 줄어드는 현상. - Lightning Network (레이어2): 트랜잭션을 체인 밖에서 처리해 확장성을 높이는 오프체인 솔루션. ## 4. 데이터 구조의 기본 원리 - 블록(Block): 블록은 일반적으로 블록 헤더(block header)와 블록 바디(block body)로 구성된다. - 블록 헤더의 주요 필드: version, previous_hash, merkle_root, timestamp, bits, nonce. - 블록 바디에는 트랜잭션 목록이 포함된다. - 블록 해시(Block hash): 블록 헤더의 해시는 $hash = SHA256(SHA256(header))$ 와 같이 두 단계의 해시를 거쳐 계산된다. 이 해시는 PoW의 기준이 된다. - 이전 블록 해시(previous_hash): 체인의 연결 고리로, 각 블록은 이전 블록의 해시 값을 참조한다. - Merkle 루트(merkle_root): 블록 바디의 트랜잭션 해시를 Merkle 트리로 구성해 얻는 루트 해시로, 블록 헤더에 저장된다. - Merkle 트리의 간단한 설명: 트랜잭션 해시 $H(t_i)$ 들을 이진 트리로 결합해 상단의 루트를 얻는다. 루트는 블록의 트랜잭션 구성을 요약하는 지표로 사용된다. - 수식적 표현: $merkle\_root = MerkleRoot(\{H(t_i)\})$, 여기서 $H(t_i)$ 는 트랜잭션 $t_i$ 의 해시이다. - 트랜잭션의 구성: 입력(inputs)과 출력(outputs)으로 표현되며, 입력은 이미 사용된 트랜잭션의 출력(UTXO)을 가리키고, 출력은 새로운 UTXO를 생성한다. ## 5. 트랜잭션과 UTXO 모형 - 기본 아이디어: 비트코인 트랜잭션은 하나의 자산을 다른 사람에게 넘기는 방식으로 구성된다. 입출력 모델은 UTXO를 기반으로 하며, 거래는 사용되지 않은 출력만을 소비할 수 있다. - 입력(Input): 이전 트랜잭션의 출력(UTXO)을 참조하는 구성 요소. 서명에 의해 해석되며, 자산의 소유권 증명이 필요하다. - 출력(Output): 새로운 UTXO를 생성한다. 각 출력은 금액과 잠금 스크립트(locking script)를 포함한다. - 금액 합계 보존: 각 트랜잭션의 입력 합계는 출력 합계와 같거나 이를 초과한다(수수료는 차액으로 처리될 수 있다). - 트랜잭션 확정: 트랜잭션은 블록에 의해 확정되며, 이후 네트워크의 다른 노드에 의해 재확인된다. ## 6. 암호 기술과 데이터 무결성 - 해시 함수: $H(x)$는 입력에 의존하는 고정 길이의 출력으로, 충실성, 충돌저항성 및 단일방향성 특성을 갖춘 암호학적 도구다. 비트코인은 SHA-256 계열 해시를 주로 사용한다. - 서명: 거래의 위변조를 방지하기 위해, 트랜잭션의 입력에 대한 서명을 생성하고 검증한다. ECDSA with secp256k1 곡선을 사용한다. - 공개키 암호화와 잠금 스크립트: 트랜잭션의 출력은 잠금 스크립트를 통해 특정 공개키의 소유자만 이를 사용할 수 있도록 제약된다(일반적으로 P2PKH 방식의 잠금 스크립트가 사용된다). ## 7. 합의 알고리즘과 네트워크 운영 - 합의 알고리즘(PoW): 작업 증명은 네트워크의 모든 노드가 동일한 규칙 하에 해시 퍼즐을 풀도록 요구한다. 특정 조건의 해시 값을 만족하는 해시를 찾는 것이 목표이며, 이로써 새로운 블록이 블록체인에 추가된다. - 조건식: $hash(header) \le target$. - 난이도 표현: 네트워크의 현재 난이도(target)는 실제로 필요한 해시를 조정하기 위한 파라미터이다. - 난이도 조정(Difficulty adjustment): 비트코인은 일정 주기(- 대략 2016 블록)마다 난이도를 조정한다. - 공식적 표현: $target_{new} = target_{old} \cdot \frac{actual\_timespan}{604800}$. - 여기서 $actual\_timespan$은 지난 2016블록의 실제 생성 시간의 합이며, 604800초(7일)로 정규화한다. 또한 난이도 조정의 상한/하한은 보수적으로 적용된다(예: 4배까지 상한 등). - 채굴 보상(Halving): 블록이 일정 간격으로 생성될 때마다 채굴 보상이 절반으로 떨어진다. 초기 보상은 $50$ BTC였고, 이후 210,000블록마다 반감되며 현재 보상은 관련 시점에 따라 달라진다. 반감은 네트워크의 공급 속도를 제어하는 중요한 메커니즘이다. - 블록 생성 간격과 수수료: 평균적으로 약 $T \approx 600$초(10분)마다 하나의 새로운 블록이 생성되도록 설계되어 있다. 트랜잭션 수수료는 채굴자에 의해 인센티브로 제공되며, 채굴 보상 외의 추가 수익원이다. - 네트워크 운영: P2P 네트워크는 노드 간에 블록과 트랜잭션 정보를 교환하는 방식으로 작동한다. 메모풀(Mempool)에서 대기 중인 트랜잭션은 채굴자에 의해 블록에 포함될 때까지 보관된다. - 블록 검증과 전파: 각 노드는 받은 블록과 트랜잭션의 무결성을 검증하고, 합의 규칙에 부합하는지 확인한 뒤 다른 노드로 전파한다. 이 과정을 통해 전체 네트워크의 일관성을 유지한다. - 확장성 도전과 해결책: 온체인(On-chain) 확장과 오프체인(Off-chain) 확장 사이에서 균형을 찾으려는 노력이 지속 중이다. 예를 들어, 세그윗(Segregated Witness, SegWit)과 레이어2 솔루션(예: Lightning Network) 등이 제시되었다. ## 8. 보안 이슈와 위험 요소 - 51% 공격: 네트워크의 연산력의 다수를 특정 주체가 독점하면 트랜잭션의 이중지급(double-spend)을 포함한 불공정한 거래 처리 가능성이 커진다. 다수의 해시 파워를 장악한 공격자는 체인을 조작할 수 있다. - 이중 지불(Dual spending) 및 타임스테핑 공격: 거래의 재구성이나 타임스탬프의 조작으로 발생할 수 있는 위험. - 피싱, 지갑 보안: 사용자의 개인 키를 보호하지 못하면 자산 손실 위험이 크다. 안전한 키 관리와 지갑 아키텍처가 중요하다. - 소스 코드 취약점: 소프트웨어 업데이트의 버그나 취약점은 시스템 전반에 영향을 미칠 수 있다. - 합의 지연과 네트워크 분리: 네트워크 장애나 피어 간의 연결 문제는 거래 전파의 지연과 체인 분리로 이어질 수 있다. ## 9. 확장성, 실용화 및 생태계 현황 - 확장성 트리렘: 블록체인은 기본적으로 보안성과 탈중앙화를 지키면서 확장성을 높이는 것이 큰 도전이다. - 오프체인 해결책: Lightning Network 등의 레이어2 솔루션은 소액의 다수 거래를 오프체인으로 처리해 체인의 부하를 감소시키는 방향으로 연구되고 있다. - 샤딩(Sharding), 사이드체인, UTXO 셋의 관리 등도 연구 주제다. 비트코인은 정책적으로 보안과 분산성을 우선시하며, 확장성에 대한 개선은 점진적이고 신중하게 진행된다. ## 10. 간단한 수식 예시 - 블록 해시 계산: $hash = SHA256(SHA256(header))$. - 합의 조건: $hash(header) \le target$. - 난이도 조정의 일반식: $target_{new} = target_{old} \cdot \frac{actual\_timespan}{604800}$. - 머클 루트의 개념적 표현: $merkle\_root = MerkleRoot(\{H(t_i)\})$, $H(t_i) = SHA256(SHA256(serialized(t_i)))$. - 블록 보상(초기 시점의 예시): 초기 보상은 $50$ BTC였고, 210,000 블록마다 반감된다. ## 11. 요약 - 비트코인과 블록체인은 탈중앙화된 거래 기록 시스템으로, 신뢰를 중앙 권한 없이 분산 네트워크 구성원들 간의 합의로 확보한다. - 블록 헤더, Merkle 루트, 트랜잭션의 UTXO 모델, PoW 합의 알고리즘, 난이도 조정, 반감기 등의 구성 요소가 결합되어 원장에 대한 불변성과 거래의 진입/확인을 가능하게 한다. - 확장성 이슈를 해결하기 위한 다양한 접근이 연구·도입되고 있으며, 레이어2 솔루션과 온체인 개선이 병행된다. --- 관련 문서: [[비트코인 기술 개요]], [[블록체인 데이터 구조와 프로토콜]]