KEEP!T History: 블록체인史 (15) 사토시의 해법, 작업증명

in #kr3 years ago (edited)


keepit_logo_history_2.png


블록체인史

사토시의 해법, 작업증명


안녕하세요! KEEP!T입니다.
이전 칼럼에 이어서 이중지불을 방지하기 위한 합의 알고리즘, 작업증명에 대해 알아보겠습니다.

1.비잔틴 장군 문제

분산 네트워크 연구에서는 오래 전부터 하나의 난제가 존재했습니다. 바로 '비잔틴 장군 문제'입니다. 1982년 레슬리 램포트, 쇼스탁, 피스가 마이크로소프트의 의뢰를 받아 공동으로 연구한 논문에서 이들은 분산 네트워크 환경에서 발생할 수 있는 통신 문제와 그 해결법을 다룹니다. 이 논문의 제목이 '비잔틴 장군 문제'인데, 여기서 적 도시에 대한 공격을 앞 둔 비잔틴 장군들의 합의 과정을 예시로 듭니다. 성 하나를 포위하고 있는 장군들은 서로 지리적으로 떨어져 있고, 동시에 통신할 수가 없습니다. 게다가 이 중에는 배신자가 있어 통신 메시지를 위조할 위험도 있지요. 정해진 시간에 동시에 출병해야 이 성을 함락할 수 있고, 배신자가 있다고 가정하면, 통신 메시지는 어떻게 전달해야 하며, 충직한 장군의 수는 몇 명 이상이어야 할까요?

wsi-imageoptim-consensus3-e1539048033719.png
https://masterthecrypto.com/guide-to-consensus-algorithms-what-is-consensus-mechanism/

논문에서는 다음과 같은 두 가지 해결책을 제시합니다.

  1. 각 장군이 인접한 장군에게 구두 메시지(oral message)를 전달할 경우엔 2/3 이상의 충직한 장군이 필요합니다.

  2. 각 장군이 인접한 장군에게 위조가 불가능한 서명 메시지(signed message)를 전달할 경우엔 1/2 이상의 충직한 장군이 필요합니다.

이는 동시에 이 두 조건을 제외하면 분산 네트워크 환경에서 합의에 이를 방법이 없다는 점을 증명한 것이기도 합니다. 그래서 '비잔틴 장군 문제'는 각각 통신을 주고 받는 네트워크의 연결점, 즉 노드가 서로 떨어져 있는 분산 네트워크 환경에서 합의에 이르기가 얼마나 어려운지를 증명한 연구라 할 수 있습니다.

2.사토시가 제시한 해법, 작업증명

이 네트워크는 거래(transaction)들을 해시(hash) 기반의 작업증명(proof-of-work) 체인(chain)에 해싱하여 타임스탬프(timestamp)를 찍음으로써, 그 작업증명을 다시 하지 않고는 변경할 수 없는 기록을 만든다.
(...)
일단 연산 작업을 통해 작업증명을 완성했다면 이 작업을 다시 하지 않고서는 블록은 변경될 수가 없다. 블록들이 체인으로 연결되기 때문에 하나의 블록을 변경하기 위해서는 그 이후 모든 블록들에 대한 작업증명을 다시 해야 한다.
-사토시 나카모토

사토시 또한 서로 신뢰하기 힘든 P2P 분산 네트워크에서 누군가가 배신, 즉 이중지불을 할 수 있을 거란 고민을 했을 것입니다. 사토시는 이에 대한 해법으로 '작업증명(Proof Of Work)'이란 합의 알고리즘을 가지고 나왔습니다. 작업증명이란 '블록을 생성하기 위한 채굴자들의 노력'입니다.

블록을 생성하기 위해서는 '논스(nonce)'라는 임의(random)의 값을 찾아야 하는데, 이는 각 블록마다 무작위로 생성되기에 일일이 0부터 하나하나 대입을 해서 맞출 수 밖에는 없습니다. 거의 단순반복노동의 끝판왕이라 할 수 있죠. 이를 위해 세계 각지의 채굴자들은 ASIC와 같은 높은 컴퓨팅 파워를 지닌 채굴기를 동원해 블록을 찾으려는 경쟁적 노력을 합니다. 블록을 생성하려는 이 경쟁적 노력에 엄청난 컴퓨팅 파워가 투입되기에, 작업증명을 통해 생성된 블록은 그 자체로 많은 노력(컴퓨팅 파워)과 비용(전기)이 들어간 작업의 결과물임을 증명받습니다.

ASIC(Application-Specific Integrated Circuit): 반도체 업체가 사용자의 주문에 맞춰 제작해 주는 주문형 반도체를 말한다. 범용성이 높은 표준 집적 회로와는 달리, 고객이나 사용자가 요구하는 특정한 기능을 갖도록 제작된 집적 회로다. 채굴에 특화된 ASIC는 그래픽 카드 대비 수만 배 이상 빠른 연산력을 가진다.

앞선 칼럼에서 설명하였듯, 비트코인 네트워크에서는 채굴자들이 평균 10분 간 쌓인 거래들을 하나의 블록으로 모은 후 이를 각 노드에 전파(broadcast)하여 이중지불이 있었는지 검증받습니다. 이후 이 블록이 6번 검증받으면 블록체인이란 원장(ledger)에 연결되고 최종적으로 청산됩니다. 한번 블록체인에 연결되면 이 블록은 이후에 연결되는 모든 블록에 대한 작업증명을 다시 하지 않는 이상 위변조할 수 없습니다. 이 작업증명이란 노력 덕분에 블록체인은 원장이 위변조되지 않았다는 무결성을 입증할 수 있습니다. 작업증명에는 막대한 컴퓨팅 파워가 투입되는데, 악의를 품은 채굴자가 이 컴퓨팅 파워의 과반을 독점하기란 불가능에 가깝기 때문입니다. 작업증명이란 합의 알고리즘을 통해 비트코인 네트워크는 정직한 노드들이 컴퓨팅 파워의 절반만 차지하더라도, 작업증명의 결과인 블록체인을 신뢰할 수 있게 된 것입니다.

사토시는 암호학 메일링 리스트에서 자신이 비잔틴 장군 문제를 풀었다고 주장했습니다. 그러나 사실 비잔틴 장군 문제에서 제시한 해법이 동기식 네트워크에 적용되는 모델이라면, 사토시가 제시한 해법은 비동기식 네트워크에 적용되는 모델이라 할 수 있습니다. 전제조건이 다른 모델인 것이죠. 하지만 사토시가 이전 세대 암호화폐 연구에서 많은 영향을 받은 것처럼 비잔틴 장군 문제에 대해서도 연구한 것만은 분명해 보입니다. 작업증명 역시 사토시의 머리속에서 갑자기 등장한 것이 아니라 분산 네트워크의 오랜 난제였던 합의 알고리즘에 대한 고민에서 출발한 것입니다.

동기식: 동기 신호에 따라 전체적인 시스템이 동작하도록 하는 방식. 통일된 표준 시간이 없는 작업증명 모델에선 각 노드가 신호를 주고받으며 개별적으로 작업을 수행하는 비동기식으로 일한다.

3. 블록체인에 왜 암호화폐가 필요할까?

그렇다면 이쯤에서 '블록체인에 왜 암호화폐가 필요한가'에 대한 근원적 질문을 던질 필요가 있습니다. 그 답 역시 사실은 작업증명 속에 들어 있습니다. 작업증명이 블록을 생성하기 위한 채굴자들의 노력이라면, 왜 채굴자들은 그 비싼 채굴기와 전기비를 들여가며 블록을 생성하려는 걸까요? 그 이유는 블록 생성이 곧 화폐 발행과 연계되어 있기 때문입니다. 2018년 현재 비트코인에선 새로 생성되는 블록마다 12.5비트코인이 발행됩니다. 그리고 새롭게 발행된 비트코인은 블록 채굴자에게 보상으로 주어집니다. 이는 '우리 모두'가 채굴에 참여할 수 있다는 점에서 화폐발행권을 네트워크 스스로에 주는 전략임과 동시에, 화폐를 발행하기 위해 우리가 작업증명에 참여하도록 유도하는 전략이기도 합니다. '화폐발행권'과 연계된 '경제적 유인(incentive)'. 이제야 작업증명의 비밀이 풀리는 순간입니다. 작업증명이란 묘수가 많은 사람들을 비트코인 네트워크에 참여하게 만든 것입니다.

작업증명에는 한가지 비밀이 더 있습니다. 바로 블록체인의 보안성을 유지하는데도 기여한다는 사실입니다. 작업증명에는 컴퓨팅 파워라는 노력이 들어가는데, 만일 이중지불을 하려는 채굴자가 있다면 컴퓨팅 파워의 과반을 확보하는 것도 힘들 뿐더러, 자신의 경제적 이익에도 도움이 되지 않습니다. 채굴자에게 그정도의 컴퓨팅 파워가 있다면 이중지불을 시도하는 편보다 차라리 그냥 채굴을 하는 편이 훨씬 이익이 되기 때문입니다. 이렇게 잘 짜여진 경제 구조는 많은 사람들을 비트코인 네트워크에 참여시킴과 동시에 블록체인의 보안성에 기여합니다. 사토시의 경제 구조 설계가 돋보이는 대목이자, 왜 작업증명이 블록체인의 심장인지 알 수 있는 대목입니다.

다음 화가 블록체인사의 최종화가 될 예정입니다. 그럼 마지막 칼럼으로 찾아뵙겠습니다. 감사합니다.

blockchainnomad


블록체인史 시리즈

경제적 배경편
KEEP!T History: 블록체인史 (1) 월 스트리트 점령은 비트코인으로부터
KEEP!T History: 블록체인史 (2) 글로벌 경제 네트워크라는 화두
KEEP!T History: 블록체인史 (3) 신뢰의 문제에 도전하는 블록체인

사상적 배경편
KEEP!T History: 블록체인史 (4) 약자에게 프라이버시를, 강자에게 투명성을
KEEP!T History: 블록체인史 (5) 암호화폐의 탄생
KEEP!T Histroy: 블록체인史 (6) 어둠의 세력이 키운 익명화폐
KEEP!T History: 블록체인史 (7) 익명화폐 변천사
KEEP!T History: 블록체인史 (8) 영지식 증명 이해하기
KEEP!T History: 블록체인史 (9) 사이퍼펑크 선언문

학문적 배경편
KEEP!T History: 블록체인史 (10) 전쟁 속에서 태동한 암호학
KEEP!T History: 블록체인史 (11) 에니그마의 비밀을 풀어낸 앨런 튜링 [1]
KEEP!T History: 블록체인史 (12) 에니그마의 비밀을 풀어낸 앨런 튜링 [2]
KEEP!T History: 블록체인史 (13) 비트코인의 329번째 장례식
KEEP!T History: 블록체인史 (14) 블록체인의 탄생

Keepit 저작권 로고.gif
Keepit 저작권 로고2.png
이 저작물은 크리에이티브 커먼즈 저작자표시-비영리-변경금지 4.0 국제 라이선스에 따라 이용할 수 있습니다.