블록체인 작동 원리: 단계별 설명
블록체인의 작동 원리를 이해하려면 거래가 생성되는 순간부터 최종 확인에 이르기까지의 과정을 추적해야 합니다. 기반 기술은 정교한 암호화와 분산 시스템 엔지니어링을 수반하지만, 핵심 프로세스는 그 단순함이 우아합니다: 거래가 생성되고, 브로드캐스트되며, 검증되고, 블록으로 그룹화된 후, 공유 원장에 영구적으로 기록됩니다.
이 가이드는 비트코인을 주요 예시로 사용하면서 블록체인 프로세스의 각 단계를 안내하며, 이더리움 같은 다른 블록체인과의 차이점도 설명합니다. 이 가이드를 끝까지 읽으면 "전송" 버튼을 누른 순간부터 거래가 블록체인의 되돌릴 수 없는 일부가 되는 순간까지 정확히 무슨 일이 일어나는지 이해하게 될 것입니다.
1단계: 거래 생성
모든 블록체인 상호작용은 거래(Transaction)를 생성하는 것으로 시작됩니다. 암호화폐를 보내기로 결정하면, 지갑 소프트웨어가 여러 정보를 포함하는 거래 메시지를 구성합니다.
거래 입력과 출력
비트코인은 미사용 거래 출력(UTXO, Unspent Transaction Output) 모델을 사용합니다. UTXO를 지갑 속 디지털 지폐라고 생각하세요. 두 번의 개별 거래로 0.5 BTC와 0.3 BTC를 받았다면, 총 0.8 BTC에 해당하는 두 개의 UTXO가 있습니다. 0.6 BTC를 보내려면, 지갑이:
- 금액을 충당하는 UTXO를 선택합니다 (0.5 + 0.3 = 0.8 BTC).
- 수신자 주소를 하나의 출력으로 하는 거래를 생성합니다 (0.6 BTC).
- 잔돈 출력을 자신의 주소로 생성합니다 (0.2 BTC에서 거래 수수료를 뺀 금액).
- 선택된 UTXO는 "사용됨"이 되고 새로운 출력이 새 UTXO가 됩니다.
이더리움은 전통적인 은행 계좌와 더 유사한 **계정 기반 모델(Account-based model)**을 사용합니다. 각 주소에 잔액이 있으며, 거래는 단순히 발신자에서 차감하고 수신자에게 입금합니다.
디지털 서명
거래가 브로드캐스트되기 전에 발신자의 **개인 키(Private Key)**로 서명해야 합니다. 여기서 시드 구문의 보안이 중요해집니다 -- 개인 키는 시드 구문에서 파생되며, 이를 소유한 사람은 누구든 귀하를 대신하여 거래에 서명할 수 있습니다.
서명 프로세스는 다음과 같이 작동합니다:
- 거래 데이터가 SHA-256(비트코인) 또는 Keccak-256(이더리움)을 사용하여 해시됩니다.
- 해시가 ECDSA 알고리즘을 통해 발신자의 개인 키로 서명됩니다.
- 결과 디지털 서명이 거래에 첨부됩니다.
- 누구나 발신자의 공개 키를 사용하여 서명을 검증할 수 있으며, 이를 통해 개인 키 자체를 볼 필요 없이 키 소유자가 거래를 승인했음을 확인합니다.
이것이 근본적인 원리입니다: 서명은 소유권을 증명합니다. 이 과정에서 개인 키가 장치를 떠나지 않습니다. 네트워크와 공유되는 것은 서명뿐이며, 이 서명으로는 개인 키를 역산할 수 없습니다.
2단계: 거래 브로드캐스팅
서명이 완료되면, 거래가 블록체인 네트워크에 브로드캐스트됩니다. 지갑이 하나 이상의 노드(블록체인 소프트웨어를 실행하는 컴퓨터)에 연결하여 거래 데이터를 전송합니다.
P2P 전파
블록체인 네트워크는 P2P(Peer-to-Peer) 토폴로지로 운영됩니다. 중앙 서버가 없습니다. 노드가 거래를 수신하면 초기 검증을 수행하고, 유효하면 연결된 피어에게 전달합니다. 그 피어들이 다시 검증하고 전달합니다. 몇 초 안에 거래가 전체 네트워크에 전파됩니다 -- 일반적으로 2~15초 이내에 대부분의 노드에 도달합니다.
멤풀
전파 후, 거래는 멤풀(Mempool, Memory Pool) -- 각 노드가 유지하는 미확인 거래 대기 영역 -- 에 들어갑니다. 멤풀은 단일 공유 풀이 아니며, 각 노드가 네트워크 지연 시간과 개별 노드 정책에 따라 약간씩 다를 수 있는 자체 버전을 유지합니다.
멤풀의 거래는 주로 수수료율(비트코인에서는 바이트당 사토시, 이더리움에서는 가스 가격)에 의해 순위가 매겨집니다. 채굴자와 검증자는 수익을 극대화하기 위해 수수료가 가장 높은 거래를 먼저 선택합니다. 네트워크 수요가 높은 기간에는 멤풀이 크게 늘어날 수 있으며, 수수료가 낮은 거래는 확인까지 수 시간 또는 수 일을 기다릴 수 있습니다.
거래 수수료
거래 수수료는 두 가지 목적을 수행합니다:
- 채굴자/검증자 인센티브: 거래를 블록에 포함하도록 동기를 부여합니다.
- 스팸 방지: 무의미한 거래로 네트워크를 범람시키는 것을 비용적으로 어렵게 만듭니다.
비트코인에서 수수료는 거래의 바이트 크기(보내는 금액이 아닌)에 기반하여 계산됩니다. 10 BTC를 보내는 거래와 0.001 BTC를 보내는 거래의 바이트 크기가 같다면 수수료도 같을 수 있습니다.
이더리움에서 수수료는 EIP-1559 모델을 따르며, 기본 수수료(Base fee)(소각됨)와 우선 팁(Priority tip)(검증자에게 지급)으로 구성됩니다. 기본 수수료는 네트워크 혼잡도에 따라 동적으로 조정됩니다.
3단계: 거래 검증
거래가 블록에 포함되기 전에, 노드들이 프로토콜 규칙에 따라 독립적으로 검증합니다. 이 검증은 블록체인의 무결성을 유지하는 데 매우 중요합니다.
검증 확인
각 노드는 수신한 모든 거래에 대해 여러 가지 확인을 수행합니다:
- 구문 유효성: 거래가 프로토콜 명세에 맞게 올바르게 형식화되었는가?
- 서명 검증: 디지털 서명이 발신자의 공개 키와 일치하는가? 이를 통해 개인 키 소유자가 거래를 승인했음을 확인합니다.
- 이중 지불 확인: 참조된 UTXO(비트코인)가 아직 미사용 상태인가, 또는 계정(이더리움)에 충분한 잔액이 있는가?
- 스크립트 검증: 잠금 및 해제 스크립트가 올바르게 실행되는가? (비트코인은 Script라는 스크립팅 언어를 사용하여 지출 조건을 정의합니다.)
- 수수료 적정성: 거래에 노드의 최소 릴레이 임계값을 충족하는 충분한 수수료가 포함되어 있는가?
- 크기 제한: 거래가 프로토콜의 크기 제약 내에 있는가?
이러한 확인 중 하나라도 실패하면, 거래는 거부되고 다른 노드에 전달되지 않습니다. 이 탈중앙화된 검증이 블록체인을 사기 거래에 대해 저항력 있게 만드는 것입니다 -- 모든 노드가 독립적으로 동일한 규칙에 따라 모든 거래를 검증합니다.
4단계: 블록 구성
채굴자(작업증명 시스템) 또는 검증자(지분증명 시스템)가 멤풀에서 검증된 거래를 수집하여 후보 블록으로 조합합니다.
블록 구조
일반적인 블록에는 다음이 포함됩니다:
블록 헤더:
- 버전(Version): 프로토콜 버전.
- 이전 블록 해시(Previous block hash): 이전 블록 헤더의 SHA-256 해시. 이것이 블록체인의 "체인"을 형성합니다.
- 머클 루트(Merkle root): 블록 내 모든 거래를 요약하는 단일 해시.
- 타임스탬프(Timestamp): 블록이 생성된 대략적인 시간.
- 난이도 목표(Difficulty target) (PoW): 블록이 유효하려면 블록 해시가 이 임계값 미만이어야 합니다.
- 논스(Nonce) (PoW): 유효한 해시를 찾기 위해 채굴자가 증가시키는 카운터.
블록 본문:
- 거래 수(Transaction count): 포함된 거래의 수.
- 거래 목록(Transaction list): 실제 거래 데이터.
- 코인베이스 거래(Coinbase transaction): 블록 보상으로 새로운 코인을 생성하고 모든 거래 수수료를 수집하는 특별한 첫 번째 거래. 이는 블록에서 입력이 없는 유일한 거래이며 -- 프로토콜의 발행 일정에 따라 무에서 새로운 화폐를 생성합니다.
거래 선택
채굴자는 일반적으로 수익을 극대화하기 위해 수수료율이 가장 높은 거래를 우선 선택합니다. 하지만 블록 크기 제한(비트코인의 경우 4MB 블록 가중치) 또는 블록 가스 한도(이더리움의 경우 약 3,000만 가스)도 준수해야 합니다. 이는 블록 공간에 대한 자연스러운 시장을 형성합니다 -- 수요가 높을 때 사용자들은 더 높은 수수료를 제시하며 경쟁합니다.
일부 채굴자는 수수료에 관계없이 특정 유형의 거래를 포함하거나, 제재 대상 주소와 상호작용하는 거래를 제외하는 등의 추가 정책을 가질 수 있습니다.
머클 트리 구성
머클 트리는 거래 해시 쌍을 반복적으로 해싱하여 구축됩니다:
- 각 거래가 개별적으로 해시됩니다.
- 인접한 해시가 쌍으로 묶여 함께 해시됩니다.
- 단일 해시만 남을 때까지 이 과정을 반복합니다: 머클 루트(Merkle Root).
머클 루트는 모든 거래에 대한 간결한 요약을 제공합니다. 어떤 거래라도 변경되면 머클 루트가 변경되어 즉시 위변조가 드러납니다. 이 구조는 또한 **간이 결제 검증(SPV, Simplified Payment Verification)**을 가능하게 하여, 경량 클라이언트가 전체 블록을 다운로드하지 않고도 거래 포함 여부를 검증할 수 있습니다.
5단계: 합의와 블록 생성
후보 블록은 네트워크에 의해 수락되기 위해 네트워크의 **합의 메커니즘(Consensus Mechanism)**을 거쳐야 합니다. 이 지점에서 블록체인들이 크게 달라집니다.
작업증명 (비트코인)
작업증명(Proof of Work)에서, 채굴자들은 블록 헤더 데이터와 결합하여 해시했을 때 네트워크의 난이도 목표 미만의 해시를 생성하는 논스(Nonce) 값을 찾기 위해 경쟁합니다. 이는 본질적으로 무차별 대입 탐색입니다:
- 채굴자가 필요한 모든 필드를 포함한 블록 헤더를 구성합니다.
- 채굴자가 SHA-256을 사용하여 헤더를 해시합니다 (비트코인은 SHA-256을 두 번 적용).
- 결과 해시가 난이도 목표 미만이면 블록이 유효합니다.
- 그렇지 않으면 논스를 증가시키고 다시 시도합니다.
- 이 과정이 모든 채굴자에 걸쳐 초당 수십억 번 반복됩니다.
난이도 목표는 네트워크의 총 채굴 파워에 관계없이 평균 블록 시간 10분을 유지하기 위해 2,016블록(약 2주)마다 조정됩니다.
채굴자가 유효한 해시를 찾으면 "퍼즐"을 풀었으며 블록을 네트워크에 브로드캐스트할 수 있습니다. 유효한 해답을 가장 먼저 찾은 채굴자가 블록 보상(2024년 4월 반감기 이후 현재 3.125 BTC)과 블록 내 모든 거래 수수료를 받습니다.
지분증명 (이더리움)
이더리움은 지분증명(Proof of Stake)을 사용하며, 검증자가 스테이킹한(담보로 잠근) ETH 양에 기반하여 블록을 제안하도록 무작위로 선택됩니다. 프로세스는 근본적으로 다릅니다:
- 각 12초 슬롯마다 한 명의 검증자가 유사 무작위로 블록을 제안하도록 선택됩니다.
- 제안자가 블록을 생성하고 브로드캐스트합니다.
- 검증자 위원회가 블록이 유효함을 증명(attest) (투표)합니다.
- 충분한 증명이 수집되면 블록은 정당화(justified)된 것으로 간주되고 최종적으로 확정(finalized)됩니다.
지분증명은 작업증명의 에너지 집약적 해시 연산을 제거하면서도 경제적 인센티브를 통해 보안을 유지합니다 -- 악의적으로 행동하는 검증자는 스테이킹한 ETH를 잃을 위험(슬래싱)이 있습니다.
더 자세한 비교는 합의 메커니즘 가이드를 참조하세요.
6단계: 블록 전파
유효한 블록이 생성되면, 네트워크 전체에 배포되어야 합니다.
네트워크 전파
성공한 채굴자 또는 검증자가 새 블록을 피어에게 브로드캐스트하며, 피어는 블록을 검증하고 추가로 전달합니다. 블록 전파는 블록 크기와 네트워크 상태에 따라 일반적으로 네트워크 대부분에 도달하는 데 1~10초가 소요됩니다.
컴팩트 블록 릴레이 (BIP 152)
비트코인은 전파 속도를 높이기 위해 **컴팩트 블록 릴레이(Compact Block Relay)**를 사용합니다. 대부분의 노드가 이미 멤풀에 거래를 가지고 있으므로, 새 블록은 전체 거래 데이터가 아닌 간결한 요약(짧은 거래 ID)만 전송하면 됩니다. 노드가 멤풀에서 전체 블록을 재구성할 수 있어 대역폭 요구량이 약 90% 감소합니다.
고아 블록
가끔 두 채굴자가 거의 동시에 유효한 블록을 찾아 일시적 포크(Fork)가 발생합니다. 네트워크는 이를 자연스럽게 해결합니다: 다음 블록을 먼저 수신한 체인이 가장 긴 체인이 되고, 다른 블록은 고아 블록(Orphan Block)(또는 부실 블록)이 됩니다. 고아 블록의 거래는 멤풀로 돌아가며 일반적으로 승리한 체인의 다음 블록에 포함됩니다.
7단계: 블록 검증 및 체인 확장
노드가 새 블록을 수신하면, 수락하기 전에 전체 블록을 독립적으로 검증합니다.
전체 검증
노드가 검증하는 항목:
- 블록 헤더 유효성: 올바른 형식, 유효한 이전 블록 해시, 작업증명이 난이도 목표를 충족하는지(또는 PoS에서 유효한 검증자 서명인지).
- 거래 유효성: 블록 내 모든 거래가 3단계에서 설명한 것과 동일한 검증을 통과하는지.
- 머클 루트 일관성: 계산된 머클 루트가 블록 헤더의 것과 일치하는지.
- 블록 크기/가중치: 블록이 프로토콜 제한을 초과하지 않는지.
- 코인베이스 유효성: 블록 보상과 수수료 수집이 현재 프로토콜 규칙에 따라 올바른지.
- 타임스탬프 범위: 블록 타임스탬프가 허용 가능한 범위 내에 있는지.
모든 확인을 통과하면, 노드가 블록을 자신의 로컬 블록체인 복사본에 추가하고 UTXO 세트(또는 이더리움의 상태 트라이)를 업데이트합니다. 그런 다음 노드가 블록을 피어에게 전달합니다.
8단계: 거래 확인
거래가 유효한 블록에 포함되면 **첫 번째 확인(First Confirmation)**을 받은 것입니다. 거래 블록 위에 추가되는 각 후속 블록이 확인을 하나씩 더합니다.
왜 다중 확인이 중요한가
단일 확인은 거래가 블록체인에 있다는 뜻이지만, 경쟁 체인이 이를 추월하면 해당 블록이 이론적으로 고아화될 수 있습니다. 각 추가 확인은 재조직의 가능성을 기하급수적으로 줄입니다:
| 확인 수 | 비트코인 대기 시간 | 보안 수준 |
|---|---|---|
| 0 (미확인) | — | 이중 지불에 취약 |
| 1 | ~10분 | 소액에 적합 |
| 3 | ~30분 | 합리적 보안 |
| 6 | ~60분 | 상당한 금액에 대한 표준 |
| 12+ | ~2시간 | 매우 높은 보안 |
흔히 인용되는 비트코인의 6확인 표준은, 성공적인 체인 재조직(이중 지불) 확률이 천문학적으로 낮다는 것을 의미합니다 -- 공격자가 네트워크 해시 파워의 50% 이상을 통제하고 1시간 이상 유지해야 합니다.
이더리움은 더 빠른 확정성(Finality)을 제공합니다. 정상 조건에서 거래는 약 12~15분 이내에 확정성에 도달합니다(전체 스테이킹된 ETH의 최소 1/3을 소각하지 않으면 되돌릴 수 없음).
확정성 유형
- 확률적 확정성(Probabilistic finality) (비트코인): 각 확인마다 거래 되돌리기가 점점 더 어려워지지만, 절대적 비가역성 지점은 없습니다. 6확인이 널리 수용되는 실질적 임계값입니다.
- 경제적 확정성(Economic finality) (이더리움 PoS): 확정 후 거래를 되돌리려면 수십억 달러 상당의 스테이킹된 ETH를 소각해야 합니다 -- 어떤 공격자에게도 경제적으로 비합리적입니다.
- 절대적 확정성(Absolute finality) (일부 BFT 기반 체인): 블록 확인 즉시 거래가 되돌릴 수 없습니다. Tendermint 기반 네트워크와 같은 체인이 이 특성을 제공합니다.
전체 그림: 거래의 여정
전체 라이프사이클을 요약하면:
- 지갑에서 전송을 시작합니다.
- 지갑이 거래를 구성하여, 입력과 출력을 선택(UTXO)하거나 전송 금액을 지정(계정 모델)합니다.
- 개인 키가 거래에 서명하여 승인을 증명합니다.
- 서명된 거래가 P2P 네트워크에 브로드캐스트됩니다.
- 노드가 거래를 검증하고 멤풀에 추가합니다.
- 채굴자/검증자가 멤풀에서 거래를 선택하여 후보 블록에 포함합니다.
- 작업증명 또는 지분증명을 통해 블록이 생성됩니다.
- 새 블록이 네트워크에 전파됩니다.
- 노드가 블록을 검증하고 수락하여 체인을 확장합니다.
- 거래 위에 새 블록이 쌓이면서 확인 수가 증가합니다.
생성에서 첫 번째 확인까지의 전체 과정은 비트코인의 경우 약 10분, 이더리움의 경우 12초가 소요되지만, 거래가 선택되기를 기다리며 멤풀에서 추가 시간을 보낼 수 있습니다.
거래의 보안은 키에서 시작됩니다. SafeSeed 시드 구문 생성기를 사용하여 암호학적으로 안전한 BIP-39 시드 구문을 생성하세요. 거래 서명부터 소유권 증명까지 블록체인 프로세스의 모든 단계가 시드 구문에서 파생되는 개인 키의 보안에 달려 있습니다.
고급 개념
거래 가변성
초기 비트코인 버전에서는 거래를 무효화하지 않으면서 거래 ID(txid)를 수정할 수 있었는데, 이를 **거래 가변성(Transaction Malleability)**이라 합니다. 이는 2017년 세그윗(SegWit) 업그레이드로 대부분 해결되었으며, 서명 데이터를 거래 데이터에서 분리하여 서명 후 txid가 변경될 수 없도록 보장합니다.
수수료 대체 (RBF)
비트코인은 **수수료 대체(Replace-By-Fee, RBF)**를 지원하여, 발신자가 확인 속도를 높이기 위해 더 높은 수수료로 거래를 재제출할 수 있습니다. 새 거래가 멤풀에서 원래 거래를 대체합니다. 이는 네트워크가 혼잡하고 원래 수수료가 너무 낮았을 때 유용합니다. RBF를 지원하는 지갑은 거래를 대체 가능으로 표시하며, 수수료가 더 높은 버전이 우선됩니다.
거래 배칭
거래소와 대량 발신자는 종종 여러 결제를 다중 출력이 있는 단일 거래로 **배칭(Batching)**합니다. 이는 개별 거래를 보내는 것보다 공간 효율적이어서, 전체 수수료와 블록 공간 사용량을 줄입니다.
FAQ
블록체인 거래에 얼마나 걸리나요?
거래 시간은 블록체인에 따라 다릅니다. 비트코인은 평균적으로 10분마다 한 블록을 생성하지만, 거래가 포함되기 전에 멤풀에서 대기할 수 있습니다. 이더리움은 12초마다 블록을 생성합니다. 라이트닝 네트워크 같은 레이어 2 솔루션은 밀리초 단위로 결제를 정산할 수 있습니다. 제출에서 첫 번째 확인까지의 총 시간은 네트워크 혼잡도와 지불하는 수수료에 따라 달라집니다.
잘못된 주소로 보내면 어떻게 되나요?
블록체인 거래는 되돌릴 수 없습니다. 잘못된 주소로 암호화폐를 보내면, 거래를 되돌릴 수 있는 중앙 기관이 없습니다. 주소가 다른 사람의 것이라면 직접 연락하여 반환을 요청할 수밖에 없습니다. 유효하지 않은 주소이거나 소유자가 없는 주소라면 자금은 사실상 영원히 잃게 됩니다. 전송 전에 항상 주소를 다시 확인하세요.
블록체인 거래가 실패할 수 있나요?
비트코인에서는 올바르게 구성되고 서명된 거래가 결국 확인됩니다(수수료가 매우 낮으면 오래 걸릴 수 있음). 이더리움에서는 스마트 컨트랙트 실행 중 오류가 발생하거나 가스가 부족하면 거래가 실패(revert)할 수 있습니다. 두 경우 모두 거래 수수료는 여전히 소비됩니다. 일부 지갑은 제출 전에 거래 성공 여부를 예측하는 거래 시뮬레이션 기능을 제공합니다.
거래 해시(txid)란 무엇인가요?
거래 해시(txid 또는 거래 ID)는 모든 거래에 할당되는 고유 식별자입니다. 거래 데이터를 해싱하여 생성됩니다. txid를 사용하여 블록 탐색기(비트코인의 mempool.space 또는 이더리움의 etherscan.io)에서 거래를 추적할 수 있습니다. txid는 거래가 생성되는 즉시 할당되며, 확인된 후에는 변경되지 않습니다.
거래 수수료가 왜 변동하나요?
거래 수수료는 블록 공간의 수요와 공급에 의해 결정됩니다. 많은 사용자가 동시에 거래하면 제한된 블록 공간을 놓고 더 높은 수수료를 제시하며 경쟁합니다. 조용한 기간에는 수수료가 낮아집니다. 비트코인 블록 공간은 고정되어 있으므로(10분마다 4MB 가중치) 높은 수요 시 수수료가 급격히 치솟을 수 있습니다. 이더리움의 EIP-1559는 네트워크 이용률에 따라 알고리즘적으로 조정되는 더 예측 가능한 기본 수수료를 제공합니다.
확인된 거래와 미확인 거래의 차이는 무엇인가요?
미확인 거래는 멤풀에 존재하지만 아직 블록에 포함되지 않은 상태입니다. 보류 중이며 이론적으로 대체되거나 삭제될 수 있습니다. 확인된 거래는 블록에 포함되어 블록체인에 추가된 상태입니다. 그 위에 쌓이는 각 추가 블록마다 확인 수가 증가하고 거래를 되돌리기가 점점 더 어려워집니다.
채굴자가 제 거래를 포함하지 않을 수 있나요?
네. 채굴자와 검증자는 블록에 어떤 거래를 포함할지 선택할 수 있습니다. 특정 거래를 포함할 의무가 없습니다. 하지만 경제적 인센티브가 수수료를 지불하는 거래를 가능한 한 많이 포함하도록 강하게 동기부여합니다. 실제로 적절한 수수료가 있는 유효한 거래는 몇몇이 이를 무시하더라도 결국 어떤 채굴자에 의해 포함됩니다.