본문으로 건너뛰기

채굴

비트코인에서 채굴은 새 거래를 검사하고 블록을 구성해 전체장부에 기록하는 일입니다. 그 대가로 채굴자는 새로 발행되는 비트코인과 거래 수수료를 받을 수 있습니다.

이름은 금을 캐는 일에서 왔지만, 실제 작업의 중심은 땅을 파는 것이 아니라 거래를 검사하고 장부를 지키는 것입니다.

왜 채굴이 필요할까요

은행에서는 은행원이 장부를 기록하고 은행이 그 기록을 책임집니다. 하지만 비트코인의 전체장부에는 본사나 담당 직원 같은 중앙 책임자가 없습니다.

그렇다고 아무나 마음대로 기록하게 두면 가짜 거래가 섞이고 장부의 기준이 무너질 수 있습니다. 반대로 아무도 기록하지 않으면 거래가 장부에 들어가지 못해 돈의 이동도 멈춥니다.

채굴은 중앙의 책임자 없이도 누가 다음 기록을 작성할지 정하고, 그 기록이 규칙에 맞는지 네트워크가 확인하도록 하는 절차입니다.

첫째, 거래를 검사합니다

채굴자는 네트워크로 전파되어 대기 중인 거래를 모읍니다. 거래를 블록에 담기 전에 다음과 같은 내용을 확인합니다.

  • 입력이 참조하는 이전 출력의 금액이 새 출력의 금액을 충당하는지 확인합니다.
  • 서명을 비롯해 이전 출력을 사용할 조건이 충족되는지 확인합니다.
  • 이미 사용한 돈을 다시 쓰려는 거래인지 확인합니다.
  • 비트코인 규칙에 맞지 않는 거래는 제외합니다.

검사를 통과한 거래만 다음 단계로 넘어갑니다. 채굴자가 거래를 골라 담는다고 해서 규칙에 맞지 않는 거래까지 장부에 넣을 권리를 얻는 것은 아닙니다.

입력과 출력, 사용 조건의 관계는 Bitcoin Developer Guide: Transactions에서 확인할 수 있습니다.

둘째, 후보 블록을 구성합니다

채굴자는 검사를 통과한 거래들을 모아 장부의 새 페이지에 해당하는 블록을 구성합니다. 블록에는 거래뿐 아니라 이전 기록과 이어지는 정보, 그리고 작업증명에 필요한 정보가 포함됩니다.

이제 채굴자는 이 블록을 유효한 체인에 붙일 기회를 두고 경쟁합니다. 조건에 맞는 결과가 나올 때까지 블록 헤더의 값을 바꿔 가며 계산을 반복하는 과정이 작업증명입니다. 비트코인 작업증명은 80바이트 블록 헤더를 해시하는 방식으로 이루어집니다(Bitcoin Developer Guide).

관련 개념은 목푯값과 논스에서 자세히 설명합니다.

셋째, 작업증명을 수행합니다

채굴자는 블록 헤더의 논스 등을 바꿔 가며 해시를 계산합니다. 결과가 네트워크가 정한 목푯값 이하이어야 조건을 만족합니다.

이 과정에는 지름길이 없으므로 기계로 수많은 시도를 반복해야 합니다. 조건에 맞는 결과를 먼저 찾은 채굴자가 자신의 블록을 네트워크에 알립니다.

채굴은 어려운 수학 문제의 답을 머리로 풀어내는 일이라기보다, 같은 규칙에 따라 값을 바꿔 가며 조건에 맞는 결과를 찾는 경쟁에 가깝습니다.

넷째, 블록을 알리고 다시 검사받습니다

당첨된 채굴자가 새 블록을 네트워크에 알리면 다른 참가자들은 그 블록을 그대로 믿지 않고 다시 검사합니다. 거래가 규칙에 맞는지, 보상이 정해진 범위를 넘지 않았는지, 작업증명 조건을 만족하는지 확인합니다.

유효한 블록이 거의 동시에 여러 개 발견되면 잠시 서로 다른 가지가 생길 수 있습니다. 노드는 유효성뿐 아니라 누적 작업량이 가장 큰 유효한 체인을 기준으로 따라가며, 경쟁에서 선택되지 않은 블록은 최종적으로 채택된 체인에 남지 않을 수 있습니다(Bitcoin Developer Guide).

이 과정을 거쳐 네트워크는 평균적으로 약 10분마다 새 블록을 하나씩 추가해 장부를 이어 갑니다.

채굴자는 장부의 주인이 아닙니다

채굴자가 블록을 기록한다고 해서 장부의 주인이 되거나 규칙을 마음대로 바꿀 수 있는 것은 아닙니다. 채굴자가 얻는 권리는 조건을 만족했을 때 다음 페이지를 제안할 기회입니다.

없는 돈을 보내는 거래를 넣거나 정해진 것보다 많은 보상을 적은 블록은 다른 참가자들의 재검사에서 거부됩니다. 그런 블록은 장부에 붙지 않고, 채굴자가 경쟁에 사용한 전기와 계산 비용만 남을 수 있습니다.

따라서 채굴은 규칙을 무시하고 기록하는 권력이 아니라, 규칙 안에서 기록할 기회를 얻기 위한 경쟁입니다.

금을 캐는 일과 닮은 점, 다른 점

채굴이라는 이름이 금을 캐는 일에서 나온 데에는 닮은 점이 있습니다. 금은 아무나 마음대로 찍어 낼 수 없고, 손에 넣으려면 시간과 수고가 필요합니다. 비트코인도 정해진 규칙에 따라 기록 작업을 수행해야 새 비트코인이 발행됩니다.

하지만 목적은 다릅니다. 금광부의 목적은 땅속에 이미 있는 금을 찾아내는 것입니다. 반면 채굴자의 핵심 작업은 거래를 검사하고 장부에 기록하는 일입니다. 새 비트코인은 그 기록 작업의 대가로 따라옵니다.

금광이 문을 닫아도 이미 캐낸 금은 그대로 남습니다. 그러나 장부를 지키는 작업이 모두 멈추면 새 블록이 붙지 않아 거래 기록도 그 자리에서 멈춥니다. 그래서 채굴은 금을 캐는 일보다는 장부를 지키고 기록하는 일에 더 가깝습니다.

정리

채굴은 다음 순서로 진행됩니다.

  1. 대기 중인 거래를 모아 입력·출력 금액과 사용 조건, 이중지불 여부 등을 검사합니다.
  2. 검사를 통과한 거래로 후보 블록을 구성합니다.
  3. 블록 헤더에 대한 작업증명을 수행하며 기록할 기회를 두고 경쟁합니다.
  4. 조건을 만족한 블록을 네트워크에 알리고 다른 참가자들의 재검사를 받습니다.
  5. 유효한 블록들 사이에서는 누적 작업량이 가장 큰 유효한 체인이 선택되며, 선택된 체인에 포함된 블록이 장부의 기준이 됩니다.

채굴이라는 이름은 금에서 왔지만, 실제로 채굴자가 하는 일은 거래를 검사하고 기록하며 장부를 지키는 것입니다.

함께 읽기

링크 복사하기X에 공유페이스북에 공유쓰레드에 공유