[비트코인] 1. 백서(Whitepaper) 읽기 – 1) 요약

블록체인 기술과 개발에 관련한 공부의 일환으로 비트코인 분석을 먼저 수행하려 합니다.

비트코인 백서와 개발된 소스코드, 동작 방식을 분석함으로써 블록체인이 동작하는 네트워크 환경과 기술을 학습하는 것에 목적을 두고 있습니다. 비트코인 분석을 마치고 난 후에는, BlockChain 서비스의 코어를 개발할 수 있는 배경 지식을 갖출 수 있을 것으로 기대됩니다.

백서Whitepaper를 읽고 이해하는 방식은, 백서의 중요 내용 중 영어 원문을 먼저 기술하고 번역과 관련 내용 정리를 덧붙이려고 합니다. 백서 내용 중 모호하게 번역될 수 있는 단어와 용어들은 영어를 함께 명시할 예정입니다.

백서의 전문을 확인하고자 하는 경우에는 아래의 링크로 다운로드 받아볼 수 있습니다.

– Bitcoin Whitepaper : https://bitcoin.org/bitcoin.pdf

– 비트코인 백서 한글판 : https://cryptokiwi.kr/currency?id=btc&category=3&content_id=228

Bitcoin: A Peer-to-Peer Electronic Cash System (Satoshi Nakamoto)

비트코인 백서의 제목을 확인하면, 비트코인이 무엇인지에 대한 힌트를 제공받을 수 있습니다. 점대점Peer-to-Peer 사이의 전자화페Electronic Cash 시스템이라 말하고 있습니다. 흔히 비트코인을 화폐로 정의하고, 실물 화폐의 자리를 차지 하느냐 마느냐가 투자자들 사이에선 중요 이슈였으나 비트코인의 태생은 전자화폐 시스템입니다.

실물 경제에서 전자화폐카드, 인터넷뱅킹 등와 실물화폐지폐, 동전 등의 경계가 모호해지면서 실물화폐가 사라질 수도 있다는 전망이 나오고 있지만, 아직까지는 실물화폐만의 장점이 있기 때문에 비트코인 혹은 다른 Cryptocurrency 가 유일무이한 화폐가 될거란 전망은 먼 이야기 처럼 느껴집니다.

Abstract. A purely peer-to-peer version of electronic cash would allow online payments to be send directly from one party to another without going through a financial institution.

요약. 완전한 P2P 방식의 전자 화폐는 금융 기관을 통하지 않고 개별 당사자가 다른 당사자에게 직접적으로 온라인 지불을 가능하게 한다.

Peer-to-peer, 흔히 우리가 P2P 라 불르는 방식은 낯선 개념은 아닙니다. IT 영역과 먼 삶을 살았다고 하더라도 당나귀나 Torrent 같은 P2P 파일 전송 시스템은 접해보았을 겁니다.

일반적으로 네트워크의 연결이 구성되는 방식은 서버 기반Server-Based 입니다. 하나의 서비스를 제공하는 서버가 있고, 사용자가 그 중앙으로 접속하는 방식이죠. 반면 P2P 에서는 서비스를 구성하는 중앙의 서버 역할을 개별 컴퓨터들이 맡습니다. 즉, 하나의 망혹은 서비스 단위)에 속해 있는 개별 자산컴퓨터 혹은 서버들이 하나하나 중앙의 서버 역할을 맡는 것입니다. 모두가 동등한 역할을 수행하기 때문에 Peer 라 불릴 수 있는 것이고, 서로가 필요한 서비스와 데이터를 주고 받으면서 Peer-to-peer 네트워크를 구성하게 됩니다. Torrent 의 경우에는 주고 받는 것이 동영상이나 파일 등의 데이터이고, 비트코인의 경우에는 금융거래 기록이 됩니다.

정리해보면, peer-to-peer 버전의 전자화페Electronic cash는 온라인의 지불기록online payments을 중앙의 서버 역할을 하는 금융기관을 거치지 않고, 하나의 개별 대상이 다른 개별 대상에게 전송하는 것을 가능하게 만듭니다.

Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending.

전자서명Digital signatures 이 해결책의 일부를 제공하지만, 이중지불double-spending을 방지하기 위해 신뢰받는 제3자trusted third party가 요구되는 경우 주요 혜택을 잃게 된다.

전자서명은 인터넷 상에서 내가 나임을 증명해주는 수단 중의 하나입니다. 온라인 상에서 거래를 수행할 때, 내 신원을 확인받고 거래가 내 의지에 의해 일어남을 증명해주는 방법인 것이죠. 하지만 이중지불 문제를 해결해 주는 수단은 아닙니다.

이중지불은 온리인 송금이나 거래에서 중요 이슈 중의 하나 입니다. 실물 화폐에선 없는 돈을 또 만들어낼 수 없으므로, 동일한 돈은 한 번만 사용할 수 있습니다. 하지만 온라인 세상 속에서 돈이란, 그저 한 줄의 숫자(데이터)이기 때문에 두번 세번 사용하는 것이 가능해집니다. 방법을 알기만 한다면요.

실물이 아닌 온라인 상의 데이터가 여러 번 사용되는 사례를 최근 뉴스에서도 찾아볼 수 있습니다.

(출처 : 머니투데이 http://m.mt.co.kr/renew/view.html?no=2018040611343401528)

삼성증권 직원의 실수로 0이 잘못 붙은 수량의 우리사주 배당금이 사원들에게 지급되었고, 일부 사원들은 실제 판매를 통해 현금으로 변경까지 했던 사고 였습니다.

대부분의 기사들은 삼성증권 직원들의 윤리 문제로 사건을 분석하였지만, 몇몇 블로거 분들을 실제하는 자산인지 검증하지 못한 시스템 결함을 지적해주셨습니다.

이처럼 온라인 상의 데이터로 존재하는 돈들이 이미 쓰인 것은 아닌지, 진짜 존재하는지 확인하기 위해서 신뢰받는 제3자를 개입시키게 됩니다. 보통은 은행과 같은 금융기관입니다. 하지만 제 3자 개입이 이중지불 문제를 완전히 해결해 주지는 못합니다. 위의 사례처럼 제3자 기관의 실수로 이중지불 문제가 발생하는 경우도 있을 수 있으며, 그 외 여러가지 온라인 거래의 장점들이 제3자가 존재함으로써 사라지기도 하기 때문입니다.

We propose a solution to the double-spending problem using a peer-to-peer network. The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work.

우리는 이중지불 문제의 해결책으로 P2P 네트워크 사용으로 제안한다. 네트워크가 계속 작동하는 해시 기반hash-based의 작업증명proof-of-work 체인안에 해싱을 통해 트렌젝션transactions을 시간과 함께 기록함으로써, 저장된 기록은 PoW를 다시 수행하지 않고는 변경되지 않도록 만든다.

우선 timestamp의 정의를 명확히 하고 넘어가야 할 것 같습니다. 네이버 사전을 통해 확인 시 타임스탬프는 문서를 보내거나 받은 시각을 문서에 찍는 도장을 뜻합니다. 비트코인에서 명시하는 timestamp 도 단지 시간을 기록한다는 의미가 아닌, 거래기록인 트랜젝션transactions과 그 기록이 발생한 시간을 함께 기록한다는 의미이며 이 때 시간기록과 거래기록을 합치는 방식으로 해싱hashing을 사용합니다. 해싱은 일반향 암호화 알고리즘을 통해 평문을 암호화 하는 과정을 뜻하는데, 한 번 암호화가 되면 암호문을 평문으로 복호화할 수 없는 방식입니다.

비트코인은 거래기록과 발생 시각을 되돌릴 수 없는 암호문으로 만들어, 공격자가 거래 기록이나 시간을 변조할 수 없도록 만듭니다. 그리고 해당 기록을 해시 기반의 PoW 체인에 저장함으로써 저장된 데이터 자체도 PoW 의 체인 데이터를 모두 다시 생성하지 않는한 변조할 수 없도록 만드는 방식을 체택합니다.

The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power.

가장 긴 체인은 일련의 이벤트들을 증명할 뿐한 아니라 그 기록이 CPU 파워를 가장 많이 가지고 있는 집단으로부터 온다는 것을 증명한다.

As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they’ll generate the longest chain and outpace attackers.

네트워크 내의 다수의 CPU 파워를 담당하는 노드들nodes이 공격에 참여하지 않는 이상,  그 노드들이 가장 긴 체인을 생성하고 공격자들을 앞지를 것이다.

PoWProof-of-Work 방식은 컴퓨터 자원을 소모하는 방식입니다. 이 때 주로 소모되는 컴퓨터 자원이 CPU 인데, 현재는 GPU 가 PoW 방식에 효율이 더 좋은 것으로 밝혀져서 많은 수의 그래픽 카드들이 PoW 작업에 사용되고 있습니다. 이로 인해 한 때는 그래픽 카드 품귀현상이 발생하기도 했었습니다.

사실 비트코인에서 체인이 여러개가 존재하는 것은 아닙니다. 그런데 왜 가장 긴 체인이란 용어를 썼을까요? 이는 두 가지 체인이 있는 경우를 생각해 보는 것으로 이해해 볼 수 있습니다. 정상적으로 맨 처음부터 만들어진 하나의 체인이 있고, 공격자가 중간 데이터를 변조하여 그 후부터 만들어진 그보다 짧은 체인이 있다고 생각해 볼 수 있습니다. 앞서 말한 것처럼 공격자가 트랜젝션transaction 하나를 변조하려면 그 후에 영향을 받는 모든 데이터를 변조해야 합니다. 그렇게 해서 만들어진 게 짧은 체인이죠. 그럼 네트워크 상에 갑자기 두 개의 체인이 생기게 됩니다. 네트워크 참여자들은 어떤 게 신뢰받을 수 있는 체인인지 구분해야만 하는 거지요. 두 개의 체인을 가지고 갈 수는 없으니까요.

이 때 더 긴 체인이 이전부터 네트워크에 참여하고 있다고 파악하고, 가장 긴 체인을 신뢰하게 됩니다. 가장 긴 체인은 가장 많은 컴퓨터 파워가 들어간 결과물이고, 가장 오랜 시간 축적된 데이터들인 것이지요. 그리고 지금 이시간에도 공격자가 하나의 체인 블록을 만들 때, 그보다 더 많은 자원을 가진 다수의 노드들nodes이 더 긴 체인을 만들어 냄으로써 공격자들을 따돌릴 수 있는 것입니다.

The network itself requires minimal structure. Messages are broadcast on a best effort basis, and nodes can leave and rejoin the network at will, accepting the longest proof-of-work chain as proof of what happened while they were gone.

네트워크 자체는 최소한의 구조structure만 요구한다. 메시지는 모집주선best effort basis방식으로 브로드케스트broadcast되고, 노드들은nodes 은 네크워크를 자기 의지에 따라 떠나고 다시 참여할 수 있으며, 떠나있는 동안에 어떤 일이 있었는지에 대한 증명으로 가장 긴 PoW 체인을 받아들인다.

모집주선best effort basis 란 증권발행의 한 방법으로, 유가증권에 대한 절차 자체를 제 3자인 발행기관에 위탁하는 방법입니다. 발행기관은 판매할 수 있는 모든 증권을 판매하고, 판매하지 못하는 증권에 대해서는 발행처에 반환함으로써 미판매분에 대한 위험은 발행처가 감수하는 방법입니다.

이를 비트코인에 적용하여 생각해 보면, 트랜젝션transactions 의 당사자들이 메시지의 형태로 네트워크 전체에 기록을 뿌리게 되고 그 기록에 대한 처리는 발행기관의 역할을 수행하는 노드들nodes 이 가능한 범위에서 체인에 올리는 방식으로 처리하게 됩니다. 다만 처리되지 않은 트랜젝션transactions 에 대해서는 거래 당사자들이 책임을 지게 되는 것으로 이해할 수 있습니다.

발행기관, 즉 작업증명Proof-of-Work 를 수행하는 노드들nodes은 언제든 네트워크에 참여할 수 있습니다. 24시간 내내 네트워크의 일원으로 작업증명 과정에 참여하는 것입니다. 하지만 자의나 타의에 의해 네트워크에 미참여를 하게 되는 것도 문제가 없습니다. 언제든 네트워크에서 빠졌다가 다시 참여할 때 가장 긴 체인의 데이터를 받아 들임으로써, 미참여 기간동안에 발생한 내역을 확인 할 수 있기 때문입니다.

처음에는 하나의 글에서 비트코인 백서 내용을 전체 설명하는 것을 목표로 했는데, 부연 설명을 달다 보니 요약만으로도 길이 너무 길어졌습니다. 그래서 백서의 각 파트별로 내용을 나누어 포스팅 하려 합니다.

요약은 중요한 개념들이 한 데 모여 있어, 전체 영어 구문을 다 분석하였으나 이 후부터는 중요한 구문만을 분석할 예정입니다. 그럼, 다음 글에서 뵙겠습니다.

Leave a Reply

avatar
  Subscribe  
Notify of