작업 증명(PoW): 채굴자는 어떻게 블록체인을 지키는가

작업 증명(PoW): 채굴자는 어떻게 블록체인을 지키는가

작업 증명(Proof of Work, PoW)은 여러 컴퓨터가 중앙 기관 없이 하나의 공유 기록에 합의할 수 있게 하는 규칙, 즉 합의 메커니즘입니다. 이 방식에서 참여자는 누구나 빠르게 검증할 수 있는 비용이 많이 드는 연산 작업을 수행했음을 보여줍니다. 비트코인에서 이 작업이란 정해진 목표값 이하의 블록 해시를 찾는 것을 말합니다.

작업 증명은 스팸 메일 방어 수단에서 시작되었다

작업 증명의 개념은 비트코인이 등장하기 훨씬 이전, 스팸 메일에 대응하기 위해 제안되었습니다. 1992년에 발표되고 1993년에 출판된 논문 “Pricing via Processing or Combatting Junk Mail”에서 Cynthia Dwork와 Moni Naor는 사용자가 공유 자원에 접근하려면 어느 정도 어려운 연산을 수행하도록 해야 한다고 제안했습니다. 이러한 비용은 무분별한 사용을 억제하기 위한 것이었으며, 저자들은 특히 스팸 메일을 겨냥했습니다.

일반적으로 작업 증명이란 생성하는 데는 비용과 시간이 많이 들지만 다른 사람이 검증하기는 쉬운 데이터를 말합니다. Adam Back이 만든 시스템인 Hashcash는 이러한 해시 기반 증명을 각 이메일에 첨부하여 스팸과 서비스 거부 공격을 막는 데 사용했습니다. 서비스 거부란 요청을 쏟아부어 다른 사용자가 서비스를 이용할 수 없게 만드는 것을 뜻합니다.

2008년 10월 31일자로 작성되어 사토시 나카모토(Satoshi Nakamoto)라는 이름으로 발표된 비트코인 백서는 Hashcash와 유사한 작업 증명 설계를 설명합니다. 비트코인은 이를 활용해 중앙 기관 없이도 컴퓨터 네트워크가 하나의 블록 체인에 합의할 수 있도록 합니다.

비트코인에서 작업 증명은 어떻게 작동하는가?

비트코인 채굴이란 유효한 블록을 생성하는 과정이며, 유효한 블록을 만들려면 작업 증명을 제시해야 합니다. 채굴자는 유효한 블록을 찾으려 시도하는 참여자입니다. 채굴자는 먼저 대기 중인 거래들을 모아 후보 블록, 즉 체인에 제안될 거래 묶음을 만듭니다. 그런 다음 해당 블록의 80바이트 요약 정보인 블록 헤더를 채웁니다.

비트코인은 헤더를 SHA-256으로 두 번 해싱하는데, 이를 더블 SHA-256이라고 부릅니다. SHA-256은 암호학적 해시 함수입니다. 해시 함수는 임의 크기의 데이터를 해시라고 불리는 고정 길이의 지문으로 바꿉니다. 작업 증명이 요구하는 조건은 하나입니다: 숫자로 읽었을 때 헤더의 해시값이 목표값 이하여야 한다는 것입니다.

목표값이란 유효한 블록의 해시가 넘어서는 안 되는 임계값입니다. 네트워크 난이도는 현재 목표값이 규칙상 가장 쉬운 목표값보다 얼마나 더 달성하기 어려운지를 나타냅니다. 목표값이 낮아지면 네트워크 난이도는 올라가고, 목표값이 낮을수록 조건을 만족하는 해시의 수가 줄어들어 탐색에 더 오랜 시간이 걸립니다.

다른 해시값을 얻기 위해 채굴자는 헤더에 저장된 32비트 숫자인 논스(nonce)를 바꿉니다. 그런 다음 헤더를 해싱하고 그 결과를 목표값과 비교하는 과정을 반복합니다. 이 탐색 과정은 흔히 ‘해시 퍼즐’이라 불리지만, 영리함으로 풀리는 문제는 전혀 아닙니다: 평균적으로 목표값 이하의 해시는 그에 상응하는 양의 무차별 대입, 즉 값을 하나씩 계속 시도하는 작업을 통해서만 찾을 수 있습니다.

아래 표는 같은 탐색 과정을 작은 규모로 보여주는 예시입니다. 이 규칙은 임의로 만든 것으로 비트코인의 실제 규칙이 아니며, SHA-256을 두 번이 아니라 한 번만 적용합니다. 텍스트 “hello” 뒤에 논스를 붙인 값의 SHA-256 다이제스트가 정해진 개수의 0으로 시작해야 한다는 규칙입니다. 다이제스트는 숫자 0-9와 문자 a-f를 사용하는 16진수 표기법인 16진법으로 표기됩니다. 0으로 시작하는 다이제스트는 작은 숫자이므로, 이러한 규칙 각각이 목표값 역할을 합니다.

규칙

입력값(텍스트와 논스)

SHA-256 다이제스트

결과

다이제스트가 000으로 시작

hello0

5a936ee19a0cf3c70d8cb0006111b7a52f45ec01703e0af8cdc8c6d81ac5850c

실패(5로 시작)

다이제스트가 000으로 시작

hello1

91e9240f415223982edc345532630710e94a7f52cd5f48f5ee1afc555078f0ab

실패(9로 시작)

다이제스트가 000으로 시작

hello2

87298cc2f31fba73181ea2a9e6ef10dce21ed95e98bdac9c4e1504ea16f486e4

실패(8로 시작)

다이제스트가 000으로 시작

hello10284

0006bc9ad4253c42e32b546dc17e5ea3fedaecdabef371b09906cea9387e8695

10,285번째 시도에서 통과

다이제스트가 0000으로 시작

hello60067

0000e49eab06aa7a6b3aef7708991b91a7e01451fd67f520b832b89b18f4e7de

60,068번째 시도에서 통과

이 소규모 모의 탐색에서는 0이 하나 추가될 때마다 평균 시도 횟수가 16배씩 늘어납니다. 0이 세 개인 규칙은 평균적으로 약 4,096번의 시도가 필요하고, 0이 네 개인 규칙은 약 65,536번이 필요합니다. 하지만 통과한 두 행에서 볼 수 있듯이 실제 한 번의 탐색은 더 많을 수도, 더 적을 수도 있습니다: 10,285는 4,096보다 많고, 60,068은 65,536보다 적습니다. 이러한 결과 중 하나를 검증하는 데는 SHA-256 연산 단 한 번이면 충분합니다.

비트코인의 실제 탐색 규모는 이보다 훨씬 큽니다. 블록당 예상 해시 횟수는 대략 네트워크 난이도에 2의 32제곱을 곱한 값입니다. 2026년 10월 기준으로 이 값은 블록당 평균 500섹틸리언(500 sextillion) 회 이상의 해시에 해당하며, 네트워크 난이도가 조정될 때마다 이 수치는 달라집니다. 1섹틸리언은 1 뒤에 0이 21개 붙은 숫자입니다.

블록의 작업을 검증하는 비용은 그것을 만들어내는 비용보다 훨씬 저렴합니다. 노드란 비트코인 네트워크상의 컴퓨터로, 블록이 네트워크 규칙에 부합하는지 검증합니다. 블록의 작업을 검증하기 위해 노드는 블록 헤더의 더블 SHA-256 해시를 단 한 번 다시 계산하여 목표값과 비교합니다. 블록을 생성하는 데는 그만큼 많은 시도가 필요했지만, 검증하는 데는 해시 연산 한 번이면 됩니다. 바로 이 간극이 이 작업을 ‘증명’으로 만드는 핵심입니다.

작업 증명은 중앙 기관 없이 노드들이 하나의 체인에 합의하게 한다

두 명의 채굴자가 거의 동시에 유효한 블록을 찾을 수 있으며, 이 경우 네트워크에는 서로 경쟁하는 체인 버전이 남게 됩니다. 작업 증명은 모든 노드에게 선택 규칙을 제공합니다: 노드는 가장 많은 작업량이 쌓인 체인, 즉 다시 만들어 내기가 가장 어려운 체인을 따릅니다. 누구나 그 작업량을 검증할 수 있기 때문에, 어떤 체인이 유효한지 결정할 중앙 기관이 필요하지 않습니다.

각 블록은 이전 블록의 해시를 담고 있으므로, 과거의 블록을 바꾸려면 그 블록은 물론 그 뒤에 이어진 모든 블록의 작업을 다시 수행해야 합니다. 작업 증명은 과거 기록을 다시 쓰는 데 큰 비용이 들도록 설계되어 있으며, 특정 블록을 변경하는 비용은 그 뒤에 블록이 추가될수록 더욱 커집니다.

작업 증명은 동일한 BTC를 두 번 사용하려는 시도인 이중 지불 문제에도 관련이 있습니다. 이미 블록에 포함된 결제를 되돌리려면 해당 작업을 다시 수행해야 합니다.

채굴자는 보조금과 수수료를 받고, 네트워크 난이도가 속도를 조절한다

비트코인에서는 네트워크가 유효하다고 인정한 블록을 만든 채굴자가 블록 보상을 받습니다. 이 보상은 두 부분으로 구성됩니다: 새로 발행되는 BTC인 블록 보조금, 그리고 해당 블록에 포함된 거래들의 사용자가 지불하는 거래 수수료입니다. 2026년 10월 기준으로, 2024년 4월의 최근 반감기 이후 채굴자에게 지급되는 보조금은 블록당 3.125 BTC입니다.

블록 보조금은 210,000블록마다 절반으로 줄어드는데, 이를 반감기라고 부르며 대략 4년마다 발생합니다. 절반으로 줄어드는 것은 보조금뿐이며, 수수료는 영향을 받지 않습니다.

비트코인 프로토콜은 2,016블록마다 네트워크 난이도를 조정합니다. 각 블록 헤더에 기록된 시간을 이용해 해당 블록들이 생성되는 데 걸린 시간을 측정하고, 이를 2주에 해당하는 1,209,600초와 비교합니다. 그런 다음 블록이 평균적으로 약 10분마다 생성되도록 목표값을 비례적으로 재조정합니다. 한 번의 조정으로 네트워크 난이도는 최대 4배까지만 오르거나 내릴 수 있습니다.

해시레이트란 네트워크상의 기기들이 초당 연산하는 총 해시 횟수를 말합니다. 해시레이트가 상승하면 블록은 보통 10분보다 빠르게 생성되는 경향을 보이고, 다음 조정에서 네트워크 난이도가 올라갑니다. 블록 생성이 너무 느려지면 조정을 통해 네트워크 난이도가 낮아집니다. 이 조정은 오직 블록 생성 시간만을 측정하며, 채굴자 수를 세지도, BTC 가격을 참고하지도 않습니다.

비트코인의 10분 블록 생성 시간은 평균값일 뿐, 각 블록마다 보장되는 수치는 아닙니다. 블록 생성에 대한 통계적 모델에 따르면, 약 63%의 블록이 이전 블록 이후 10분 이내에 생성됩니다.

작업 증명은 지분 증명과 어떻게 다른가?

작업 증명과 지분 증명(Proof of Stake)은 모두 블록체인에 다음 블록을 추가할 참여자를 결정하는 합의 메커니즘입니다. 블록체인이란 순서대로 연결된 블록들로 이루어진 공유 기록입니다. 작업 증명은 이 권한을 연산 작업과 연결합니다: 채굴자는 블록이 목표값을 충족할 때까지 해싱을 반복합니다.

지분 증명은 이 권한을 참여자가 담보로 묶어 둔 암호화폐, 즉 참여자가 블록 추가에 참여하는 동안 묶여 있는 코인과 연결합니다. 부정 행위를 시도하는 참여자는 불이익(페널티)을 받을 수 있습니다.

두 메커니즘의 차이는 참여자가 무엇을 걸고 참여하는가에 있습니다: 작업 증명에서는 연산 작업을, 지분 증명에서는 잠긴 코인을 겁니다.

작업 증명은 왜 전력을 소비하는가?

비트코인 채굴이 전력을 소비하는 이유는 작업 증명이 실제 연산이고, 연산을 수행하는 기기는 전력을 소모하기 때문입니다. 이 비용은 정의 자체에 내포되어 있습니다: 작업 증명을 만들어내려면 시행착오가 필요하며, 비트코인에서는 기기들이 바로 이 시행착오를 수행합니다.

기기가 계산하는 모든 해시는 어느 정도의 전력을 사용하므로, 전체 해시 수가 많아질수록 일반적으로 소모되는 전력도 늘어납니다. 더 많은 기기가 네트워크에 참여하면 블록은 더 빠르게 생성되는 경향이 있고, 다음 조정에서 네트워크 난이도가 상승하며, 이후 각 블록은 평균적으로 더 많은 해시를 필요로 하게 됩니다.

일부 정책 입안자와 전력망 계획자들은 미국 내 암호화폐 채굴자들이 사용하는 전력이 비용, 안정성, 탄소 배출에 미치는 영향에 대해 우려를 제기해 왔습니다. 비트코인의 전력 사용량에 대한 공개 추정치는 산출 방식과 대상 기간에 따라 다르게 나타납니다.

유효한 해시는 노력이 투입되었음을 보여줄 뿐, 거래가 유효함을 의미하지 않는다

목표값 이하의 해시는 누군가 작업을 수행했음을 보여줄 뿐, 블록 안의 거래가 유효한지에 대해서는 아무것도 말해주지 않습니다. 완전 노드(full node)는 블록 안의 모든 거래가 유효하고 아직 사용되지 않았을 때만 그 블록을 승인하며, Bitcoin Core와 같은 노드 소프트웨어는 아무리 많은 작업이 뒷받침되어 있어도 보조금과 수수료의 합을 초과하는 금액을 주장하는 블록은 거부합니다.

작업 증명이 기록을 영구적으로 만드는 것도 아닙니다. 다만 기록을 다시 쓰는 데 비용이 들도록 만들 뿐입니다. 네트워크 해시레이트의 대부분을 장악한 측은 최근 거래 기록을 수정하고 새로운 거래의 승인을 막을 수 있습니다. 확인(confirmation), 즉 거래가 기록된 블록 위에 쌓이는 블록 수가 늘어날수록 그 기록을 되돌리는 비용은 커지지만, 가능성 자체가 사라지는 것은 아닙니다.

작업 증명은 노력 자체에 대해 보상하지도 않습니다. 프로토콜 수준에서, 승인된 블록으로 이어지지 않은 해싱은 아무리 많은 전력을 소비했더라도 블록 보상을 받지 못합니다.

2025년 11월 27일

GoMining 뉴스

관심이 있으신가요?