작업증명이 해결하는 문제
디지털 원장은 복사하기 쉽고 편집하기도 쉽다. 누구나 자유롭게 거래를 추가할 수 있다면, 같은 코인을 두 번 쓸 수도 있다 — 고전적인 "이중지불" 문제다. 중앙 운영자가 없는 시스템에서는 일부 참여자가 부정직하거나 오프라인 상태일 때조차, 독립적인 참여자들이 어떤 거래가 어떤 순서로 일어났는지에 동의할 방법이 필요하다.
디지털 화폐의 초기 시도들은 장부를 관리할 신뢰받는 제3자에 의존했다. 2008년 백서에 설명된 비트코인의 설계는 그 신뢰받는 제3자를 공개 경쟁으로 대체했다. 참여자들은 실제 자원을 들여 블록을 덧붙이고, 네트워크는 승리하는 체인을 고르기 위한 공유 규칙을 따른다. 합의는 권위가 아니라 비용과 수학에서 생겨난다.
채굴자들이 실제로 계산하는 것
각 후보 블록에는 거래 묶음, 이전 블록에 대한 참조, 그리고 논스(nonce)라 불리는 작고 바꿀 수 있는 숫자가 담겨 있다. 채굴자들은 이 데이터를 SHA-256 해시 함수에 통과시키는데, 이 함수는 어떤 입력이든 고정된 길이의 예측 불가능해 보이는 출력으로 바꾼다. 목표는 특정 목표값보다 낮은 해시를 만들어내는 입력을 찾는 것이다 — 실제로는 특정 개수의 0으로 시작하는 해시다.
해시 출력은 예측하거나 역산할 수 없기 때문에, 조건을 충족하는 해시를 찾는 유일한 방법은 시행착오다. 논스를 바꾸고, 다시 해시하고, 이를 초당 수십억 번 반복한다. 그 무차별 대입 탐색이 "작업(work)"이다. 그것은 의도적으로 수행하기 어렵게 되어 있지만, 다른 누구에게나 확인하기는 아주 쉽다 — 단 한 번의 해시 계산으로 답이 유효한지 확인된다. 이 비대칭성(만들기는 어렵고 검증하기는 쉬움)이 작업증명의 핵심이다.
난이도와 약 10분의 리듬
비트코인은 평균적으로 약 10분마다 새 블록이 생성되는 것을 목표로 한다. 더 많은 연산 능력(해시레이트)이 네트워크에 합류하면 블록이 더 빨리 나오는 경향이 생기므로, 프로토콜은 평균 속도를 일정하게 유지하기 위해 난이도 — 목표 해시가 얼마나 낮아야 하는지 — 를 주기적으로 조정한다. 대략 2주마다(2,016블록마다) 각 노드는 최근의 블록 생성 시간으로부터 난이도를 다시 계산한다.
이 자기조정 때문에 더 많은 채굴 능력이 장기적으로 더 빠른 블록 생성을 의미하지는 않는다. 그것은 주로 같은 일정한 블록 흐름을 지키기 위해 더 많은 작업이 소모되고 있음을 의미한다. 개별 블록의 정확한 시점은 무작위이므로, 10분은 장기 평균이지 정해진 일정이 아니다.
블록에서 합의로: 가장 긴 유효한 체인
유효한 블록을 찾는 것은 이야기의 절반에 불과하다. 두 채굴자가 거의 같은 순간에 블록을 찾았을 때, 노드들은 여전히 하나의 역사에 동의해야 한다. 규칙은 노드들이 축적된 작업증명의 총량이 가장 큰 유효한 체인을 따른다는 것이다 — 흔히 "가장 긴 체인"으로 요약되지만, 실제로는 누적 작업량이 가장 무거운 체인이다.
모든 풀 노드는 각 블록을 비트코인의 규칙에 비추어 독립적으로 검증한다. 유효한 서명, 이중지불이 없을 것, 올바른 블록 보상, 그리고 목표를 충족하는 해시다. 규칙을 어기는 블록은 얼마나 많은 작업이 들어갔든 상관없이 그냥 거부된다. 일시적인 불일치(포크)는 다음 블록이 한쪽 가지를 연장하면서 해소되고, 정직한 채굴자들은 그쪽으로 수렴한다. 받아들여진 체인 위에 쌓는 곳에 보상이 있기 때문이다.
이것이 왜 네트워크를 지키는가
과거의 거래를 다시 쓰려면 공격자는 그 블록과 그 이후의 모든 블록에 대해 작업증명을 다시 해야 하고, 그런 다음 정직한 네트워크 전체를 앞질러 더 긴 체인을 만들어야 한다. 거래가 깊이 묻힐수록 다시 해야 할 작업은 더 많아진다 — 이것이 상인들이 흔히 여러 번의 확인(confirmation)을 기다리는 이유다. 비용은 네트워크의 총 해시레이트에 비례해 커진다.
이것이 "51% 공격"의 배후에 있는 직관이다. 해시 파워의 과반을 통제하면 누군가 최근 거래를 재정렬하거나 검열할 수 있게 될 여지가 있다. 그러나 그 하드웨어를 확보하고 가동하는 데는 비용이 많이 들고, 서명을 위조하거나 코인을 직접 훔칠 수는 없으며, 눈에 띄는 공격은 공격자가 자원을 들여 채굴하고 있는 바로 그 자산의 가치를 훼손할 수 있다. 인센티브는 정직하게 참여하는 것이 대체로 공격하는 것보다 더 이익이 되도록 맞춰져 있다. 여기서의 보안은 경제적이고 확률적이며, 절대적인 보장이 아니다.
상충관계와 더 넓은 논쟁
작업증명의 강점 — 실제적이고 외부적인 비용 — 은 가장 흔한 비판의 원천이기도 하다. 바로 에너지 소비다. 비트코인의 전력 사용량 추정치는 크게 엇갈리고 시간이 지나면서 변하며, 일부 채굴자가 사용하는 방치된(stranded), 잉여, 또는 재생 가능 에너지의 비중이 커지면서 그림은 더 복잡해진다. 합리적인 사람들 사이에서도 의견이 갈리고 구체적인 내용은 바뀐다. 단 하나의 수치보다는 최신의 신뢰할 만한 출처를 확인하는 것이 좋다.
지분증명(proof of stake)과 같은 대안적 합의 설계는 연산 대신 경제적 담보를 사용함으로써 훨씬 적은 에너지로 일부 다른 네트워크를 지킨다. 그것들은 다른 가정과 상충관계를 수반하며, 그것들을 공정하게 비교하는 것은 그 자체로 하나의 주제다. 비트코인에 관해서라면 작업증명이 여전히 그 메커니즘이며, 그 보안과 발행 일정은 그것에 묶여 있다.