BIKENZO

작업증명 쉽게 이해하기: 비트코인은 어떻게 합의에 도달하는가

작업증명은 비트코인 채굴자들이 후보 블록을 난이도 목표에 도달할 때까지 반복적으로 해시하고, 이후 네트워크가 축적된 작업량이 가장 많은 유효한 체인을 따르는 과정으로 — 이를 통해 역사를 다시 쓰는 것이 경제적으로 비싸지고, 낯선 사람들이 중앙 권위 없이 하나의 공유 원장에 동의할 수 있게 된다.

비트코인의 핵심 문제는 겉보기에는 단순하다. 서로를 알지도 신뢰하지도 않는 수천 대의 컴퓨터가 은행도, 서버도, 심판도 없이 누가 무엇을 소유하는지에 대한 하나의 순서화된 기록에 어떻게 동의할 수 있는가? 작업증명이 비트코인의 답이다. 그것은 전기와 컴퓨팅 하드웨어를 새 블록을 제안하기 위한 비용으로 바꾸는 메커니즘이자, 모두가 독립적으로 "진짜" 체인을 인식할 수 있게 하는 규칙이다. 이 글은 작업증명이 실제로 무엇을 계산하는지, 어떻게 합의를 만들어내는지, 그리고 왜 이 구조가 공격하기 어려운지를 설명한다. 이것은 교육적 배경 설명이며, 조언이 아니다.

작업증명이 해결하는 문제

디지털 원장은 복사하기 쉽고 편집하기도 쉽다. 누구나 자유롭게 거래를 추가할 수 있다면, 같은 코인을 두 번 쓸 수도 있다 — 고전적인 "이중지불" 문제다. 중앙 운영자가 없는 시스템에서는 일부 참여자가 부정직하거나 오프라인 상태일 때조차, 독립적인 참여자들이 어떤 거래가 어떤 순서로 일어났는지에 동의할 방법이 필요하다.

디지털 화폐의 초기 시도들은 장부를 관리할 신뢰받는 제3자에 의존했다. 2008년 백서에 설명된 비트코인의 설계는 그 신뢰받는 제3자를 공개 경쟁으로 대체했다. 참여자들은 실제 자원을 들여 블록을 덧붙이고, 네트워크는 승리하는 체인을 고르기 위한 공유 규칙을 따른다. 합의는 권위가 아니라 비용과 수학에서 생겨난다.

채굴자들이 실제로 계산하는 것

각 후보 블록에는 거래 묶음, 이전 블록에 대한 참조, 그리고 논스(nonce)라 불리는 작고 바꿀 수 있는 숫자가 담겨 있다. 채굴자들은 이 데이터를 SHA-256 해시 함수에 통과시키는데, 이 함수는 어떤 입력이든 고정된 길이의 예측 불가능해 보이는 출력으로 바꾼다. 목표는 특정 목표값보다 낮은 해시를 만들어내는 입력을 찾는 것이다 — 실제로는 특정 개수의 0으로 시작하는 해시다.

해시 출력은 예측하거나 역산할 수 없기 때문에, 조건을 충족하는 해시를 찾는 유일한 방법은 시행착오다. 논스를 바꾸고, 다시 해시하고, 이를 초당 수십억 번 반복한다. 그 무차별 대입 탐색이 "작업(work)"이다. 그것은 의도적으로 수행하기 어렵게 되어 있지만, 다른 누구에게나 확인하기는 아주 쉽다 — 단 한 번의 해시 계산으로 답이 유효한지 확인된다. 이 비대칭성(만들기는 어렵고 검증하기는 쉬움)이 작업증명의 핵심이다.

난이도와 약 10분의 리듬

비트코인은 평균적으로 약 10분마다 새 블록이 생성되는 것을 목표로 한다. 더 많은 연산 능력(해시레이트)이 네트워크에 합류하면 블록이 더 빨리 나오는 경향이 생기므로, 프로토콜은 평균 속도를 일정하게 유지하기 위해 난이도 — 목표 해시가 얼마나 낮아야 하는지 — 를 주기적으로 조정한다. 대략 2주마다(2,016블록마다) 각 노드는 최근의 블록 생성 시간으로부터 난이도를 다시 계산한다.

이 자기조정 때문에 더 많은 채굴 능력이 장기적으로 더 빠른 블록 생성을 의미하지는 않는다. 그것은 주로 같은 일정한 블록 흐름을 지키기 위해 더 많은 작업이 소모되고 있음을 의미한다. 개별 블록의 정확한 시점은 무작위이므로, 10분은 장기 평균이지 정해진 일정이 아니다.

블록에서 합의로: 가장 긴 유효한 체인

유효한 블록을 찾는 것은 이야기의 절반에 불과하다. 두 채굴자가 거의 같은 순간에 블록을 찾았을 때, 노드들은 여전히 하나의 역사에 동의해야 한다. 규칙은 노드들이 축적된 작업증명의 총량이 가장 큰 유효한 체인을 따른다는 것이다 — 흔히 "가장 긴 체인"으로 요약되지만, 실제로는 누적 작업량이 가장 무거운 체인이다.

모든 풀 노드는 각 블록을 비트코인의 규칙에 비추어 독립적으로 검증한다. 유효한 서명, 이중지불이 없을 것, 올바른 블록 보상, 그리고 목표를 충족하는 해시다. 규칙을 어기는 블록은 얼마나 많은 작업이 들어갔든 상관없이 그냥 거부된다. 일시적인 불일치(포크)는 다음 블록이 한쪽 가지를 연장하면서 해소되고, 정직한 채굴자들은 그쪽으로 수렴한다. 받아들여진 체인 위에 쌓는 곳에 보상이 있기 때문이다.

이것이 왜 네트워크를 지키는가

과거의 거래를 다시 쓰려면 공격자는 그 블록과 그 이후의 모든 블록에 대해 작업증명을 다시 해야 하고, 그런 다음 정직한 네트워크 전체를 앞질러 더 긴 체인을 만들어야 한다. 거래가 깊이 묻힐수록 다시 해야 할 작업은 더 많아진다 — 이것이 상인들이 흔히 여러 번의 확인(confirmation)을 기다리는 이유다. 비용은 네트워크의 총 해시레이트에 비례해 커진다.

이것이 "51% 공격"의 배후에 있는 직관이다. 해시 파워의 과반을 통제하면 누군가 최근 거래를 재정렬하거나 검열할 수 있게 될 여지가 있다. 그러나 그 하드웨어를 확보하고 가동하는 데는 비용이 많이 들고, 서명을 위조하거나 코인을 직접 훔칠 수는 없으며, 눈에 띄는 공격은 공격자가 자원을 들여 채굴하고 있는 바로 그 자산의 가치를 훼손할 수 있다. 인센티브는 정직하게 참여하는 것이 대체로 공격하는 것보다 더 이익이 되도록 맞춰져 있다. 여기서의 보안은 경제적이고 확률적이며, 절대적인 보장이 아니다.

상충관계와 더 넓은 논쟁

작업증명의 강점 — 실제적이고 외부적인 비용 — 은 가장 흔한 비판의 원천이기도 하다. 바로 에너지 소비다. 비트코인의 전력 사용량 추정치는 크게 엇갈리고 시간이 지나면서 변하며, 일부 채굴자가 사용하는 방치된(stranded), 잉여, 또는 재생 가능 에너지의 비중이 커지면서 그림은 더 복잡해진다. 합리적인 사람들 사이에서도 의견이 갈리고 구체적인 내용은 바뀐다. 단 하나의 수치보다는 최신의 신뢰할 만한 출처를 확인하는 것이 좋다.

지분증명(proof of stake)과 같은 대안적 합의 설계는 연산 대신 경제적 담보를 사용함으로써 훨씬 적은 에너지로 일부 다른 네트워크를 지킨다. 그것들은 다른 가정과 상충관계를 수반하며, 그것들을 공정하게 비교하는 것은 그 자체로 하나의 주제다. 비트코인에 관해서라면 작업증명이 여전히 그 메커니즘이며, 그 보안과 발행 일정은 그것에 묶여 있다.

FAQ

작업증명을 쉬운 말로 하면 무엇인가요?
그것은 조건을 충족하는 결과를 찾을 때까지 데이터를 해시 함수에 통과시켜, 어렵고 무작위적인 추측 퍼즐을 풀려고 컴퓨터들이 경쟁하는 시스템입니다. 이 퍼즐은 푸는 데 비용이 많이 들지만 다른 모두에게는 검증하기 쉬워서, 낯선 사람들의 네트워크가 서로 신뢰하지 않고도 새 블록에 동의할 수 있게 합니다.
작업증명은 어떻게 이중지불을 막나요?
거래는 블록 안에서 순서가 정해지고, 네트워크는 축적된 작업량이 가장 많은 유효한 체인을 따릅니다. 같은 코인을 두 번 쓰려면 공격자는 해당 블록의 작업을 다시 하고 정직한 네트워크 전체를 앞질러야 하는데 — 확인(confirmation)이 쌓일수록 이는 감당할 수 없을 만큼 비싸집니다.
작업증명은 채굴과 같은 것인가요?
둘은 밀접하게 연결되어 있지만 동일하지는 않습니다. 작업증명은 규칙이자 퍼즐이고, 채굴은 그 작업을 하는 활동 — 유효한 블록을 찾기 위해 하드웨어를 가동하는 것 — 입니다. 채굴자는 성공하면 새로 발행된 비트코인과 거래 수수료로 보상받습니다.
51% 공격이란 무엇인가요?
그것은 단일 주체가 네트워크 해싱 파워의 절반 이상을 통제하여, 최근 거래를 재정렬하거나 차단할 수 있게 될 가능성이 있는 시나리오를 가리킵니다. 서명을 위조하거나 기존 코인을 훔칠 수는 없으며, 비용이 많이 들고 자멸적입니다. 성공적인 공격이 공격자가 채굴하고 있는 것의 가치를 훼손할 수 있기 때문입니다.
비트코인은 왜 그렇게 많은 에너지를 쓰나요?
그 에너지 사용은 의도적입니다. 현실의 비용이야말로 역사를 다시 쓰는 것을 비싸게 만드는 것이고, 그것이 보안의 원천이기 때문입니다. 총소비량 추정치는 제각각이고 시간이 지나면서 변하며, 잉여 또는 재생 가능 전력의 비중은 지역마다 다릅니다 — 수치는 최신의 신뢰할 만한 출처에 비추어 확인하는 것이 가장 좋습니다.
작업증명은 BIKENZO 같은 유동성 터미널과 어떤 관련이 있나요?
그것은 시장 데이터를 읽는 방식을 바꾸지는 않지만, 비트코인이 무엇인지 설명하는 데 도움이 됩니다. 즉, 회사가 아니라 작업으로 지켜지는 네트워크라는 것입니다. BIKENZO는 맥락을 위해 글로벌 유동성 지수(Global Liquidity Index)를 비트코인 가격과 대비해 그리는 데이터 도구입니다. 작업증명을 이해하는 것은 배경지식이고, 터미널은 단지 시장 맥락을 보여줄 뿐입니다. 그것은 조언이 아니라 맥락을 제공합니다 — 결정은 당신이 합니다.

A Bitcoin liquidity terminal. Global central-bank liquidity, plotted against the Bitcoin price, in one screen.

미리보기 요청