전체 글 목록

비트코인 채굴이란? 거래가 블록에 포함되는 과정과 노드·채굴자의 역할

비트코인 채굴이라는 표현은 금 채굴에서 가져왔습니다. 금을 캐려면 장비와 에너지를 들여 오랫동안 작업해야 하며, 많은 노력을 해도 언제 금을 발견할지는 미리 알기 어렵습니다. 비트코인 채굴도 전용 장비와 전력을 사용해 수많은 계산을 반복한다는 점에서 금 채굴과 비슷합니다.

하지만 비트코인 채굴자가 인터넷 어딘가에 숨겨진 비트코인을 찾아내는 것은 아닙니다. 채굴 장비는 거래를 모아 만든 후보 블록을 바탕으로 수많은 계산을 반복하고, 그중 비트코인의 규칙에 맞는 결과를 찾습니다.

이 글에서는 지갑이 거래를 만들고, 노드가 거래를 검증해 전달하는 과정부터 살펴봅니다. 이어서 채굴자나 채굴 풀이 후보 블록을 준비하고, 채굴 장비가 계산한 뒤 풀노드(Full Node)가 블록을 다시 검증하는 과정을 순서대로 설명합니다.

비트코인 채굴을 한 문장으로 설명하면

비트코인 채굴은 여러 거래를 하나의 새 블록 후보로 묶고, 수많은 계산을 반복해 비트코인의 규칙에 맞는 결과를 찾아 새 블록을 제안하는 과정입니다.

먼저 채굴자나 채굴 풀은 블록에 넣을 거래를 선택하고 후보 블록을 준비합니다. 채굴 장비는 이 정보를 바탕으로 계산을 반복합니다. 조건에 맞는 결과를 찾지 못하면 일부 값을 바꾸고 다시 계산합니다.

조건에 맞는 결과를 찾으면 해당 블록을 네트워크의 다른 노드에 전달합니다. 하지만 계산에 성공했다고 해서 그 블록이 무조건 받아들여지는 것은 아닙니다. 각 풀노드는 블록과 그 안의 거래가 비트코인의 규칙에 맞는지 직접 확인합니다.

따라서 채굴은 단순히 새 비트코인을 캐내는 일도, 채굴자가 거래를 최종 승인하는 일도 아닙니다. 채굴자는 계산 조건을 만족한 블록을 제안하고, 풀노드는 그 블록을 각자 검증합니다. 유효한 블록을 만든 쪽은 비트코인의 규칙에 따라 보상을 청구할 수 있습니다.

사용자·지갑·노드·채굴자는 같은 일을 하지 않는다

비트코인 전송 버튼을 누른 뒤 거래가 블록에 포함되기까지 하나의 프로그램이나 장비가 모든 일을 처리하는 것은 아닙니다. 사용자는 전송을 요청하고, 지갑은 거래를 만들며, 풀노드는 거래를 확인합니다. 채굴자나 채굴 풀은 거래를 모아 후보 블록을 준비하고, 채굴 장비는 필요한 계산을 반복합니다.

풀노드는 자신이 받은 거래와 블록이 비트코인의 규칙에 맞는지 직접 확인하는 컴퓨터 또는 프로그램을 말합니다.

주체맡은 일하지 않는 일
사용자받을 주소와 금액을 확인하고 전송을 요청한다사용자가 직접 거래를 계산하거나 블록을 만들지는 않는다
지갑거래를 만들고 개인키를 이용해 필요한 서명을 한다네트워크 전체를 대신해 거래를 최종 승인하지는 않는다
풀노드받은 거래와 블록이 규칙에 맞는지 확인하고 문제가 없는 정보를 다른 노드에 전달한다채굴 장비처럼 빠른 계산을 반복하는 역할은 아니다
채굴자·채굴 풀블록에 넣을 거래를 선택하고 후보 블록을 준비한다규칙에 맞지 않는 거래나 블록을 유효하게 만들 수는 없다
채굴 장비후보 블록을 바탕으로 조건에 맞는 결과를 찾을 때까지 계산한다비트코인의 규칙이나 거래의 최종 유효성을 결정하지 않는다

채굴 장비와 풀노드는 특히 혼동하기 쉽지만 역할이 다릅니다. 채굴 장비는 조건에 맞는 계산 결과를 찾는 데 집중하고, 풀노드는 완성된 블록이 비트코인의 규칙을 지켰는지 확인합니다. 한 사람이 풀노드와 채굴 장비를 함께 운영할 수는 있어도 두 역할이 같아지는 것은 아닙니다.

지갑이 거래를 전달하는 방법은 지갑 종류와 설정에 따라 달라질 수 있습니다. 자신의 풀노드에 연결할 수도 있고, 지갑 서비스에서 제공하는 노드를 이용할 수도 있습니다. 어느 방식을 사용하더라도 지갑이 거래를 만들고 서명하는 역할과 풀노드가 거래를 검증하는 역할은 구분됩니다.

지갑, 풀노드와 채굴 장비의 차이를 더 자세히 알고 싶다면 비트코인 노드란? 풀노드·지갑·채굴기 차이 쉽게 이해하기에서 각 역할을 별도로 확인할 수 있습니다.

거래가 새 블록에 포함되는 6단계

지갑에서 전송 버튼을 눌렀다고 해서 거래가 곧바로 블록체인에 기록되는 것은 아닙니다. 거래를 만들고 전달한 뒤 여러 노드가 각자 검증하며, 채굴자나 채굴 풀은 노드가 받아들인 미확인 거래 중 일부를 선택해 새 블록 후보를 준비합니다. 이후 채굴 장비의 계산과 풀노드의 블록 검증을 거쳐야 거래가 블록에 포함됩니다.

전체 흐름은 다음과 같습니다.

거래 만들기와 서명 → 노드 전달과 검증 → 메모리풀 대기 → 후보 블록 만들기 → 작업증명 계산 → 풀노드 검증

비트코인 거래가 서명과 노드 검증, 각 노드의 메모리풀, 후보 블록과 작업증명 계산, 풀노드 검증을 거쳐 블록에 포함되는 6단계 흐름

1. 지갑이 거래를 만들고 서명한다

비트코인은 은행 계좌처럼 중앙 서버에 기록된 잔액 숫자 하나를 직접 줄이는 방식이 아닙니다. 대신 이전 거래에서 받은 기록 중 아직 사용하지 않은 것을 새로운 거래에 사용합니다. 이렇게 아직 사용되지 않은 거래의 출력을 UTXO라고 합니다.

지갑은 보낼 금액에 맞게 사용할 UTXO를 선택하고, 받는 사람에게 전달할 금액을 새로운 출력으로 만듭니다. 선택한 금액이 보낼 금액과 수수료보다 많으면 남은 금액을 다시 자신의 지갑으로 돌려받는 거스름돈 출력도 함께 만듭니다.

일반적인 개인 지갑 거래에서는 해당 비트코인을 사용할 권한이 있다는 것을 증명하기 위해 개인키로 디지털 서명을 만듭니다. 개인키 자체를 거래에 넣거나 공개하는 것은 아닙니다. 다른 노드는 거래와 디지털 서명을 이용해 서명이 올바른지 확인할 수 있습니다.

2. 거래가 노드에 전달되고 검증된다

서명된 거래는 지갑이 연결된 노드로 전달됩니다. 거래를 받은 노드는 비트코인의 기본 규칙과 해당 노드의 중계 기준에 맞는지 확인합니다. 두 기준을 통과한 거래는 연결된 다른 노드에 전달될 수 있습니다. 이런 방식으로 거래가 여러 노드로 퍼져 나갑니다.

노드는 주로 다음과 같은 내용을 확인합니다.

  • 거래의 형식이 올바른가
  • 필요한 서명이 유효한가
  • 거래에 사용한 UTXO가 실제로 존재하고 아직 사용되지 않았는가
  • 같은 UTXO를 두 번 사용하려는 거래는 아닌가
  • 입력과 출력 금액이 비트코인의 규칙에 맞는가

여기서 거래가 노드의 검증을 통과했다는 것은 노드가 해당 거래를 받아들이고 다른 노드에 전달할 수 있다는 뜻입니다. 아직 블록에 포함되거나 최종 확정됐다는 뜻은 아닙니다.

3. 노드가 받아들인 거래가 메모리풀에 보관된다

노드가 받아들였지만 아직 블록에 포함되지 않은 거래는 메모리풀에 보관될 수 있습니다. 메모리풀은 쉽게 말해 각 노드가 관리하는 미확인 거래의 대기 목록입니다.

비트코인 네트워크 전체가 하나의 메모리풀을 공동으로 사용하는 것은 아닙니다. 노드마다 거래를 받은 시점과 운영 설정이 다르기 때문에 보관하고 있는 거래 목록도 서로 다를 수 있습니다.

따라서 어떤 거래가 한 노드의 메모리풀에 들어갔다고 해서 모든 노드가 그 거래를 가지고 있거나, 다음 블록에 반드시 포함된다는 뜻은 아닙니다.

4. 채굴자나 채굴 풀이 후보 블록을 준비한다

채굴자나 채굴 풀은 자신이 알고 있는 미확인 거래 중에서 새 블록에 넣을 거래를 선택합니다. 블록에 넣을 수 있는 공간에는 제한이 있기 때문에 모든 대기 거래를 한 번에 넣을 수는 없습니다.

일반적으로는 사용한 데이터 크기에 비해 높은 수수료를 제시한 거래가 먼저 선택될 가능성이 큽니다. 하지만 모든 채굴자나 채굴 풀이 항상 같은 거래를 같은 순서로 선택하는 것은 아닙니다.

선택한 거래에는 채굴 보상을 청구하기 위한 특별한 거래가 추가됩니다. 이를 코인베이스 거래라고 합니다. 여기서 코인베이스는 같은 이름의 거래소가 아니라, 새 블록을 만들 때 포함되는 특별한 첫 번째 거래를 뜻합니다.

이렇게 선택한 거래와 이전 블록의 정보 등을 모아 만든 것이 후보 블록입니다. 이 단계에서는 아직 네트워크가 받아들인 정식 블록이 아닙니다.

5. 채굴 장비가 작업증명을 찾는다

후보 블록이 준비되면 채굴 장비는 블록의 요약 정보가 담긴 블록 헤더를 이용해 계산을 시작합니다. 계산할 때마다 해시라는 고정된 길이의 결과가 나옵니다.

논스는 블록 헤더 안에서 채굴 장비가 값을 바꾸어 보는 숫자 항목입니다. 채굴 장비는 논스 등을 바꾸면서 해시를 계속 계산합니다. 계산한 해시를 숫자로 보았을 때 비트코인의 규칙에 따라 정해진 목표값 이하이면 조건을 통과합니다. 목표값보다 크면 값을 다시 바꾸고 계산을 반복합니다.

목표값은 특정 운영자가 임의로 정하는 값이 아닙니다. 비트코인의 규칙과 현재 채굴 난이도에 따라 결정되며, 풀노드도 같은 기준으로 결과를 확인합니다. 목표값이 낮을수록 조건을 만족하는 해시를 찾기 어려워집니다.

어떤 값을 넣었을 때 조건에 맞는 결과가 나올지는 미리 알 수 없습니다. 그래서 채굴 장비는 매우 많은 계산을 반복해야 합니다. 반면 조건에 맞는 결과를 찾은 뒤에는 다른 노드가 그 결과를 빠르게 확인할 수 있습니다. 이렇게 찾기는 어렵지만 확인은 쉬운 계산 결과를 작업증명이라고 합니다.

실제 채굴에서는 논스 하나만 바꾸는 것이 아니라 코인베이스 거래의 추가 값, 거래 목록의 요약값과 시간 등도 달라질 수 있습니다. 블록 헤더, 해시, 목표값과 난이도의 자세한 관계는 비트코인 작업증명이란? 블록 해시·목표값과 채굴 난이도 원리에서 이어서 설명합니다.

6. 풀노드가 새 블록을 다시 검증한다

조건에 맞는 작업증명을 찾은 채굴자나 채굴 풀은 완성된 블록을 네트워크의 다른 노드에 전달합니다. 각 풀노드는 전달받은 블록을 그대로 믿지 않고 직접 검증합니다.

풀노드는 주로 다음 내용을 확인합니다.

  • 작업증명이 현재 목표값을 만족하는가
  • 이전 블록과 올바르게 연결되는가
  • 블록의 형식과 크기·무게 제한을 지켰는가
  • 블록 안의 모든 거래가 유효한가
  • 같은 UTXO를 두 번 사용한 거래가 없는가
  • 코인베이스 거래가 허용된 금액을 넘지 않았는가

작업증명이 조건을 만족하더라도 블록이나 거래가 다른 규칙을 위반하면 풀노드는 그 블록을 받아들이지 않습니다.

풀노드는 검증을 통과한 블록만 유효한 블록으로 인정합니다. 여러 유효한 체인 후보가 생기면 작업증명이 가장 많이 누적된 체인을 현재 기준으로 선택합니다. 거래가 선택된 체인의 블록에 포함되면 첫 번째 확인이 생깁니다. 이후 그 위에 새로운 블록이 추가될 때마다 확인 수가 하나씩 늘어납니다.

채굴이 하는 일과 하지 않는 일

앞에서 살펴본 것처럼 채굴자는 후보 블록을 준비하고 작업증명을 찾지만, 거래와 블록의 최종 유효성을 마음대로 결정하지는 못합니다. 채굴이 할 수 있는 일과 할 수 없는 일을 구분하면 채굴자가 비트코인 네트워크를 마음대로 통제한다는 오해를 줄일 수 있습니다.

채굴이 하는 일채굴만으로 할 수 없는 일
채굴자나 채굴 풀이 후보 블록에 넣을 거래와 순서를 정한다특정 거래가 반드시 다음 블록에 포함된다고 보장한다
채굴 장비가 목표값을 만족하는 작업증명을 찾는다다른 사람의 개인키나 디지털 서명을 만들어 낸다
조건을 만족한 새 블록을 네트워크에 전달하고 제안한다규칙을 위반한 블록을 풀노드가 받아들이도록 강제한다
유효한 블록 위에 작업증명을 쌓아 과거 기록을 다시 바꾸기 어렵게 한다합의 규칙을 무시하고 원하는 만큼 비트코인을 발행한다

채굴자나 채굴 풀은 자신의 후보 블록에 어떤 거래를 넣거나 제외할지 선택할 수 있습니다. 따라서 거래가 포함되는 순서에도 영향을 줄 수 있습니다. 하지만 다른 채굴자나 채굴 풀은 별도의 후보 블록을 만들 수 있으며, 특정 거래가 반드시 다음 블록에 포함된다고 한 주체가 보장할 수는 없습니다.

더 많은 계산 능력을 가진 주체는 블록을 찾을 가능성이 커지기 때문에 거래 선택과 순서에 더 큰 영향을 줄 수 있습니다. 그렇더라도 합의 규칙을 위반한 거래나 블록은 풀노드가 독립적으로 거부할 수 있습니다. 많은 계산 능력으로 가능한 공격과 불가능한 공격은 비트코인 51% 공격이란? 이중 지불·거래 검열과 풀노드 검증에서 따로 다룹니다.

채굴·검증·보상을 구분하면 쉬워진다

채굴, 검증과 보상은 하나의 흐름 안에서 이어지지만 같은 뜻은 아닙니다.

  • 채굴은 채굴자나 채굴 풀이 후보 블록을 준비하고, 목표값을 만족하는 작업증명을 찾아 새 블록을 제안하는 과정입니다.
  • 검증은 풀노드가 거래와 블록이 비트코인의 합의 규칙에 맞는지 독립적으로 확인하는 과정입니다.
  • 보상은 선택된 유효한 체인에 포함된 블록을 만든 주체가 코인베이스 거래를 통해 규칙에 맞게 청구하는 금액입니다. 블록 보조금과 그 블록에 포함된 거래 수수료로 구성됩니다.

새로 발행되는 비트코인은 블록 보조금입니다. 거래 수수료는 새로 발행되는 금액이 아니라 해당 블록에 포함된 거래에서 나온 금액입니다. 따라서 블록 보조금과 채굴자가 청구할 수 있는 전체 보상을 같은 뜻으로 사용하지 않는 편이 정확합니다.

블록 보조금이 줄어드는 반감기와 거래 수수료의 관계는 비트코인 채굴 보상과 반감기: 블록 보조금과 거래 수수료 구조에서 자세히 살펴봅니다.

비트코인 채굴 관련 글 더 알아보기

이 글에서는 비트코인 채굴의 기본 개념과 거래가 블록에 포함되는 전체 흐름을 살펴봤습니다. 더 알고 싶은 주제는 다음 관련 글에서 이어서 확인할 수 있습니다.

비트코인 채굴의 핵심 정리

비트코인 채굴은 단순히 새 비트코인을 얻기 위한 계산만을 뜻하지 않습니다. 채굴자나 채굴 풀은 거래를 선택해 후보 블록을 준비하고, 채굴 장비는 목표값을 만족하는 작업증명을 찾습니다. 조건을 만족한 블록은 네트워크에 제안되지만 자동으로 받아들여지는 것은 아닙니다.

지갑은 거래를 만들고 서명하며, 채굴자는 작업증명을 갖춘 블록을 제안합니다. 풀노드는 전달받은 거래와 블록이 합의 규칙에 맞는지 직접 검증합니다. 이 세 역할을 구분하면 비트코인 거래가 블록에 포함되는 과정과 채굴의 의미를 더 정확하게 이해할 수 있습니다.

참고한 기술 자료

댓글 남기기