블록체인/레벨 II · 작동 원리/2.2 트랜잭션/수업 7
트랜잭션의 일생
서명에서 최종 확정까지: 트랜잭션이 네트워크를 거쳐 가는 과정
준비물mempool.space 웹사이트확인 깊이를 추적하는 블록 탐색기
호기심
- 노드는 해당 트랜잭션이 채굴될지조차 알기 전에 왜 반드시 그 트랜잭션을 검증해야 할까요?
- 두 블록이 동시에 나타날 때, 무엇이 한 블록을 다른 블록보다 더 ‘진짜’로 만들까요?
- 6번의 확인은 왜 관례가 되었으며, 언제 그것이 너무 많거나 너무 적을까요?
탐구
- 여정은 지갑 소프트웨어에서 시작됩니다. 사용자는 지불 금액과 수수료를 충당할 특정 미사용 트랜잭션 출력(UTXO)을 선택합니다. 지갑은 새 트랜잭션 객체를 구성하면서, 트랜잭션 ID와 인덱스로 이전 출력을 참조하는 입력과, 수신자 주소나 거스름돈 주소에 금액을 할당하는 출력을 정의합니다. 각 입력은 해당 잠금 스크립트에 대응하는 개인 키로 서명되며, 이렇게 생성된 디지털 서명은 키 자체를 공개하지 않고도 소유권을 증명합니다.
- 완전히 서명된 트랜잭션은 바이너리 형식으로 직렬화되어 P2P 네트워크를 통해 연결된 피어들에게 브로드캐스트됩니다. 트랜잭션을 받은 각 노드는 합의 규칙에 따라 독립적으로 검증합니다. 입력이 출력을 충당하는지 확인하고, 암호학적 서명을 검증하고, 기존 UTXO의 이중 지불이 없는지 확인하고, 스크립트 로직을 검증합니다. 정책상으로도 유효하면 노드는 트랜잭션을 로컬 멤풀에 추가하고 ‘inv’(인벤토리) 메시지로 피어들에게 알립니다. 그 트랜잭션이 없는 피어는 ‘getdata’로 전체 트랜잭션을 요청합니다.
- 채굴자는 수익성 있는 트랜잭션을 찾아 자신의 멤풀을 계속 모니터링합니다. 수수료율이 높은 트랜잭션들을 골라 후보 블록 템플릿에 넣으며, 이 템플릿에는 현재 블록 보조금과 걷은 수수료를 지급하는 코인베이스 트랜잭션도 들어 있습니다. 그런 다음 채굴자는 네트워크의 현재 난이도 목표를 충족하는 해시를 찾을 때까지 블록 헤더를 반복해서 해싱하는 작업증명(PoW)을 수행합니다. 이 작업 덕분에 블록은 생산하기에는 비용이 많이 들고 검증하기에는 비용이 적게 듭니다. 해시를 찾으면 블록이 네트워크 전체로 브로드캐스트됩니다.
- 새 블록을 받은 노드는 그 블록의 작업증명과 트랜잭션 유효성을 검증한 뒤 자신의 로컬 체인 사본에 추가합니다. 이제 이 블록의 트랜잭션들은 확인 깊이 1로 확인된 것으로 간주됩니다. 그 입력은 UTXO 집합에서 사용된 것으로 표시되고, 출력은 필요한 잠금 시간이나 성숙 기간이 지나면 이후 사용할 수 있게 됩니다. 같은 높이에서 경쟁 블록이 나타나면 노드는 가장 많은 작업이 누적된 브랜치를 따릅니다. 짧은 재구성(reorg)으로 블록이 대체되면, 그 블록의 트랜잭션은 새 브랜치에 이미 포함되지 않은 한 멤풀로 돌아갑니다.
- 확인 블록 위에 블록이 하나씩 쌓일 때마다 보안성은 높아집니다. 백서의 표에 따르면 해시 파워의 10%를 가진 공격자가 5블록 뒤처진 상태에서 따라잡을 확률은 0.1% 미만입니다. 이런 분석을 바탕으로 6번의 확인, 즉 약 1시간이 일반적인 관례가 되었지만, 실제 위험은 공격자의 점유율과 걸린 금액에 따라 달라집니다. 일부 판매자는 소액 결제에 대해 0컨펌(무확인) 결제를 받기도 하지만, 큰 금액의 송금은 체인 재구성을 통한 이중 지불 공격 위험을 줄이기 위해 보통 여러 번의 확인을 기다립니다.
- 채굴 보상과 수수료로 새로운 비트코인을 만들어 내는 코인베이스 트랜잭션에는 특별한 제한이 있습니다. 그 출력은 100번 확인될 때까지 사용할 수 없습니다. 이 규칙이 있는 이유는 블록이 재구성으로 대체되면 그 블록의 코인베이스 출력이 사라지기 때문입니다. 이 지연은 그런 코인이 이후 트랜잭션으로 퍼져 나가 그 트랜잭션들까지 무효가 되는 것을 막아 줍니다. 일반적인 사용자 간 송금에는 이런 지연이 없습니다. 한 번 확인되면 출력은 기술적으로 사용할 수 있지만, 추가 확인을 기다릴지는 걸린 금액과 신뢰 가정에 따른 위험 관리상의 결정입니다.
핵심 사실
- 노드들은 트랜잭션을 멤풀에 추가하기 전에 합의 규칙에 따라 그 유효성을 검증합니다.
- 블록의 유효성은 그 작업증명이 현재 난이도 목표를 충족하는지에 달려 있습니다.
- 6회 확인(약 1시간)은 프로토콜 규칙이 아닌 일반적인 관례입니다.
- 코인베이스 출력은 100블록의 성숙 기간이 지나야 사용할 수 있습니다.
- 체인 재구성 시, 대체된 블록의 일반 트랜잭션은 새 브랜치와 충돌하지 않는 한 멤풀로 돌아가며, 그 블록의 코인베이스는 사라집니다.
- 노드는 ‘inv’ 메시지로 새 트랜잭션을 알리고, 요청이 오면(‘getdata’) 이를 전송합니다.
연습 아홉, 여섯, 셋, 하나
9모으기트랜잭션이 생성되어 최종 확정되기까지의 수명 주기에서 서로 다른 단계나 이벤트 9가지를 나열하세요.
6묶기이 9개 단계를 6개 국면으로 분류하세요: 구성, 검증, 전파, 채굴, 확인, 확인 이후 상태.
3추리기6개 국면을, 네트워크가 보안이나 합의를 강제하는 3개의 핵심 체크포인트로 압축하세요.
1결정화가장 많은 작업이 누적된 체인을 따르는 것이 왜 경쟁 블록 간의 충돌을 해결하는지 한 문장으로 설명하세요.
팩트 체크
날짜, 수치 및 주장은 아래에 명시된 출처들을 통해 확인되었습니다.