합의의 대부: 작업증명(PoW) 완벽 가이드

Author logo
Patrick Dike-Ndulue
Post image

핵심 인사이트

이 글은 작업증명(PoW)의 기원과 발전 과정을 살펴보고, 자원 남용 방지 도구에서 비트코인 분산 블록체인의 기반으로 자리 잡기까지의 흐름을 설명해요. PoW가 채굴자가 연산 퍼즐을 풀어 거래를 안전하게 처리하고 이중 지불을 막는 원리를 소개하며, 확장성과 에너지 소비 문제도 짚어요. 이러한 한계를 극복하기 위해 블록체인 레이어와 새로운 합의 방식이 등장해 효율성을 높이면서도 보안성과 탈중앙성을 유지하려는 노력이 이어지고 있음을 설명합니다.

오늘날 분산 네트워크에는 다양한 합의 방식이 있지만, 그 시작은 바로 작업증명(PoW)이었어요. PoW가 어떻게 탄생했고, 어떻게 작동하며, Web3의 핵심 알고리즘으로 여전히 쓰이는 이유를 함께 살펴볼게요.

처음에 작업증명은 분산 네트워크의 기반으로 고안된 것이 아니었어요. 암호화폐와도 무관했고, 사실 '공유 자원' 사용자를 각종 남용에서 보호하기 위해 만들어졌죠. 1993년에 제시된 이 개념의 창시자들은 복잡한 계산을 요구해 자원 접근을 제한하는 방식을 제안했어요. 이때 계산 결과는 누구나 쉽고 빠르게 검증할 수 있도록 했죠.

실제 적용이 가능한 첫 사례는 5년 뒤에 나왔어요. Adam Back이 Hashcash 프로젝트를 만들며, 대량 스팸메일을 막기 위해 암호학을 활용했죠. 이메일을 보내기 전, 보낸 사람은 'SHA(x) 해시값이 N개의 앞자리 0비트를 포함하는 x값'을 찾아야 했고, 그 결과(작업증명)를 메일 헤더에 첨부해야 했어요.

메일이 수신자에게 도달하려면, 보낸 사람이 암호학 문제를 풀었는지 검증해야 해요. 이는 미리 준비된 라벨로 SHA-1 한 번만 계산하면 아주 빠르게 확인할 수 있죠. 이 라벨은 문제 풀이 전 발급돼 시스템 참가자 모두에게 공개돼요. 그래서 몇 통만 보낼 때는 문제가 없지만, 대량 메일을 보내려면 상당한 컴퓨팅 파워가 필요해요.

익숙하게 느껴지지 않나요? 이 개념이 2008년 Satoshi Nakamoto가 비트코인과 작업증명 기반 블록체인을 만들 때 사용됐어요.

PoW 블록체인은 어떻게 작동할까요?

Nakamoto의 핵심 아이디어(실제 인물인지 개발자 그룹인지는 아직 불분명)는 제3자에 의존하지 않는 탈중앙 전자화폐 시스템을 만드는 것이었어요. 즉, 은행 같은 중개자 없이 직접 송금이 가능하도록 한 것이죠.

거래 정보는 시스템 참가자들에게 분산된 장부(레지스트리)에 저장돼요. 거래를 묶어 '블록' 단위로 기록하는데, 블록마다 용량 제한이 있어요. 각 블록에는 이전 블록 정보가 반드시 포함돼야 하고, 모든 데이터를(거래 내역, 이전 블록 해시, 타임스탬프 등) 하나의 고유 코드(해시)로 변환해 저장해요. 이때 사용하는 해시 함수가 비트코인에서는 SHA-256이에요. 체인 관리는 '풀 노드'가, 새 블록 생성은 '마이너 노드'가 담당해요.

여기서 중요한 점은, 같은 데이터셋에서는 항상 동일한 해시값이 나오고, 아주 작은 변경만 있어도 완전히 다른 해시가 생성된다는 거예요.

앞서 말한 대로, 마이너는 블록을 체인에 추가하려면 해당 블록의 해시를 계산해야 해요. 이 자체는 오래 걸리지 않지만, 네트워크는 2,016블록마다 난이도를 조정해 문제 풀이가 너무 빨리 끝나지 않도록 해요. 이 주기는 약 2주에 해당하며, 블록 생성 시간을 약 10분으로 맞춰 블록체인의 안정적 운영을 돕죠.

실제 과정은 이렇습니다. 마이너는 블록을 입력값으로 받아 해시를 계산해요. 그런데 네트워크는 이 해시값이 특정 값보다 낮아야 한다고 요구해요. 해시는 바꿀 수 없다고 했는데, 어떻게 가능할까요? 여기서 '논스(nonce, 한 번만 쓰는 수)'가 등장해요. 마이너는 논스를 바꿔가며 해시를 반복 계산하고, 목표 난이도보다 해시값이 크면 논스를 다시 바꿔 계산해요. 이 과정을 반복해 목표값 이하의 해시가 나오면 성공! 이 과정은 수백만 번 반복될 수 있어요.

작업의 규모를 실감할 수 있도록 아래 숫자를 참고해 보세요:

115792089237316195423570985008687907853269984665640564039457584007913129639936

이것이 SHA-256 해시의 가능한 조합 수예요. 우주의 별 개수보다 1,150억 배나 많아요.

거래의 흐름

이제 실제 거래가 어떻게 처리되는지 살펴볼게요. 예를 들어 BTC를 누군가에게 보낸다고 해요. 개인 키로 거래를 생성·서명한 뒤 네트워크로 전송하면, 풀 노드가 거래의 유효성을 확인하고 문제가 없으면 네트워크로 전달해요. 다른 노드들도 검증 후, 미확인 거래(멤풀) 큐에 넣어요.

마이너는 멤풀에서 거래를 모아(수수료가 높은 거래를 우선 선택) 블록에 담고, 연산을 시작해요. 누군가 문제를 먼저 풀면, 풀 노드가 해답을 검증하고 맞으면 마이너에게 보상을 줘요. 이때 블록은 '채굴됨'으로 인정돼 블록체인에 추가되고, 정보가 전체 네트워크에 전파돼요. 이후 마이너들은 다음 블록 작업을 시작하죠. 한편, 내 거래가 포함된 블록 뒤에 블록이 더 많이 쌓일수록 거래의 확정도(신뢰도)가 높아져요.

쉽게 말해, 거래가 정당하다고 인정받으려면 네트워크 내 대부분 노드가 해당 블록이 올바르게 계산됐다고 동의해야 해요.

이 모든 과정이 꼭 필요할까요?

Nakamoto 이전에도 탈중앙 시스템을 만들려는 시도는 있었지만, 작업증명 합의 방식을 적용한 것은 Nakamoto가 처음이었어요. 이 방식이 없으면, 한 사용자가 시스템이 거래를 확정하기 전에 같은 자산을 두 번 쓰는 '이중 지불' 문제를 해결할 수 없죠. 마이너는 멤풀에서 거래를 받을 때마다 이중 지불 여부를 확인해요.

PoW 블록체인에서는 두 마이너가 동시에 같은 블록을 채굴하는 경우도 있어요. 이는 악의적인 행동이 아닐 수도 있고, 거의 동시에 계산을 마쳤거나, 한쪽이 이미 채굴된 정보를 제때 받지 못해 발생할 수 있어요. 이 경우 잘못된 블록에서 분기된 '병렬 체인'이 생기는데, 합의 메커니즘은 두 체인을 비교해 더 긴 쪽을 정식 블록체인으로 인정해요.

문제점과 한계

PoW의 가장 큰 한계는 확장성 문제예요. 예를 들어 비트코인 블록체인은 초당 약 7건의 거래만 처리할 수 있어요. 이 때문에 트래픽이 몰리면 멤풀이 가득 차고, 처리 수수료가 낮은 거래는 몇 시간, 심하면 며칠씩 지연될 수 있어요. 블록을 더 크게 하거나 더 빨리 채굴하면 속도를 높일 수 있을 것 같지만, 그렇게 하면 대형 마이너나 채굴 풀만 살아남아 네트워크의 탈중앙성이 약해져요.

처리 시간을 줄이면, 네트워크 노드들이 합의에 도달하기 전에 새 블록이 생길 위험이 있어요. 이 경우 블록체인에 '분기'가 많아지고, 이중 지불 위험도 커져요.

이 모든 것은 '블록체인 트릴레마'라는 개념으로 설명돼요. 탈중앙성, 보안성, 확장성 중 두 가지만 동시에 만족시킬 수 있다는 거죠. PoW의 한계를 극복하기 위해 블록체인 레이어가 등장했어요. 메인 시스템 위에서 작동해 거래 처리 속도를 높여줘요.

또한 PoW와 함께 동작하는 새로운 합의 프로토콜도 개발되고 있어요. 예를 들어 Kaspa는 PoW를 네트워크 보안 메커니즘으로 사용하면서, 블록을 블록체인이 아닌 방향성 비순환 그래프(DAG)로 묶어 마이너들이 여러 블록을 병렬로 처리할 수 있게 해요.

더 현실적인 문제도 있어요. 블록체인에 컴퓨팅 파워가 쌓일수록 계산 난이도와 채굴에 필요한 에너지도 함께 증가해요.

Author logo
작가 Patrick Dike-Ndulue

Senior editor covering crypto, onchain equities, and technology.

Author logo
검토자: Rukkayah Jigam

Writer & editor covering digital assets and product updates.