비트코인 최초의 논문; 사토시 나카모토의 P2P 전자화폐 시스템; Bitcoin: A P2P Electronic Cash System

in #kr6 years ago (edited)
안녕하세요^^ 오늘은 ฿ 코인 스토리로, 사토시 나카모토의 최초의 비트코인 논문을 번역했습니다 암호화폐 생태계의 시작을 알렸던 이 논문은 워낙 유명해서 많은 분들이 번역한 자료가 있겠지만, 공부를 위해 스스로 해보았습니다 생각보다 철학적인 내용도 많이 포함하고 있어서 놀랐습니다 원문의 느낌을 최대한 살리기 위해 원문에 있는 이미지 외에는 사용을 하지 않았으며 사전 지식이 필요한 용어들도 추가 설명이나 의역 없이 원문 그대로 표현했습니다 문단 나누기와 제목 배치 등도 원문을 최대한 따랐습니다 해석이 필요한 용어나 중요한 이론들은 앞으로 코인 스토리에서 다룰 예정입니다 이 논문은 1부, 2부로 나눠서 포스팅하겠습니다 감사합니다

1부


  1. 서론
  2. 트랜잭션
  3. 타임스탬프 서버
  4. 작업증명(POW)
  5. 네트워크
  6. 인텐시브

Bitcoin: A Peer-to-Peer Electronic Cash System

1000x1.png

Satoshi Nakamoto
번역: @phuzion7
www.bitcoin.org

요약, 전자 화폐의 순수한 P2P(peer to peer) 버전은 금융 기관을 거치지 않고도 한쪽에서 다른 쪽으로 직접 보내는 온라인 지불을 가능하게 한다 디지털 서명(digital signatures)은 그 해법의 일부를 제공하지만, 여전히 이중 지불(double-spending) 방지를 위해 신뢰받는 제3자가 필요하다면 중요한 이점은 사라진다 우리는 이중 지불 문제에 대해서 P2P 네트워크를 이용한 하나의 해법을 제공한다 네트워크는 해시-기반(hash-based) 작업증명(proof-of-work)의 연속된 체인 안에서 그들을 해싱(hashing) 함으로써 트랜잭션의 시간과 데이터 정보를 기록(timestamp) 한다 가장 긴 체인(the longest chain)은 일련의 사건들을 증명할 뿐만 아니라, 가장 큰 CPU 파워의 연합(pool)에서 비롯된 것임을 증명하는 역할을 한다 과반수 CPU 파워가 네트워크를 공격하는데 협조하지 않는 노드(node, 채굴자)들로 제어되는 한, 그들은 가장 긴 체인을 생성하고 공격자들 보다 앞설 것이다 네트워크 자체는 최소한의 구조(structure)만을 필요로 한다 메시지들은 최선을 다해 전파되고, 노드(miner)들은 의지에 따라 네트워크를 떠나고 재접속할 수 있으며, 그들이 떠나 있을 동안 일어난 일을 증명하기 위해서는 가장 긴 작업증명 체인(the longest proof-of-work chain)을 수용하면 된다

1 서론


인터넷 상거래는 대부분 전자 결제를 처리하기 위해 신뢰받는 제3자로서 역할을 하는 금융 기관(financial institutions)에 전적으로 의존해 왔다 그 시스템이 대부분의 거래(transaction)에서 충분히 잘 작동하지만, 신뢰 기반 모델의 태생적 결점으로 인해서 여전히 고통을 겪는다 완전하게 불가역적인 거래(non-reversible transactions)는 사실 가능하지 않은데, 금융 기관이 분쟁 조정을 피할 수 없기 때문이다 중재 비용은 거래 비용을 증가시키며, 실질적인 거래 규모의 최소한도를 제한한다 그리고 일상적인 소액 거래의 가능성을 차단하며 불가역 서비스를 위한 불가역 결제 처리 능력의 상실로 상당한 비용이 발생한다 결제 취소(reverse)의 가능성으로, 신뢰의 필요성이 커진다 상인들은 필요 이상으로 많은 정보를 얻으려고 그들을 괴롭히는 고객들을 경계해야 한다 어느 정도 비율의 사기는 피할 수 없는 것으로 받아들여진다 이러한 비용과 결제의 불확실성은 개인이 직접 물리적 화폐를 사용함으로써 피할 수 있지만, 신뢰받는 기관 없이 통신 채널(communications channel)을 통해서 결제를 처리하는 메커니즘은 존재하지 않는다

필요한 것은 신뢰 기관 대신에 암호화 증명(cryptographic proof)에 기초한 전자 결제 시스템이다 이것은 원하는 두 당사자가 신뢰할 수 있는 제3자를 필요로 하지 않고도 서로 직접 거래를 가능하게 한다 컴퓨터를 사용한 결제 취소가 불가능한 거래(transaction)는 사기로부터 판매자를 보호할 것이며, 일상적인 에스크로(escrow) 메커니즘은 쉽게 구매자를 보호하는 도구가 될 수 있다 본 논문에서, 우리는 컴퓨터를 사용한 연대순 거래의 증명을 생성하기 위해 P2P 분산 타임스탬프(timestamp) 서버를 이용하여 이중 지불(double-spending) 문제에 대한 해결책을 제시한다 이 시스템은 정직한 노드(miner)들이 단결하여 공격자 노드에 협력하는 어떤 그룹보다 더 많은 CPU 파워를 제어하는 한 안전하다

2 Transactions


우리는 전자 코인(electronic coin)을 체인의 디지털 서명(chain of digital signatures)으로 정의한다 각 소유자는 앞의 트랜잭션과 다음 소유자 공개 키의 해시(Hash)를 디지털적으로 서명하고 이것들을 코인의 끝에 첨부해서 그 코인을 다음 사람에게 전송한다 수취인(payee)은 체인의 소유권을 증명하기 위해서 그 서명을 확인할 수 있다

Screen Shot 2018-06-08 at 12.43.59 AM .png

이 과정에서 문제는 수취인이 소유자들 중에 하나가 코인을 이중 지불을 했는지 확인할 수 없다는 것이다 일반적인 해결책은 중앙권력(central authority), 또는 조폐국(mint)을 도입해서 이중 지불을 위해 모든 거래(transaction)를 확인하는 것이다 각각의 거래 이후에, 코인은 새로운 코인을 발행하기 위해 조폐국으로 되돌아가야 한다 그리고 조폐국에서 직접 발행된 코인들만이 이중 지불이 아닌 것으로 신뢰된다 이 해결책이 가진 문제는 전체 화폐 시스템의 운명이 조폐국을 운영하는 회사에 달려있다는 것인데, 바로 은행같이 모든 거래가 그들을 거쳐야 한다

우리는 수취인이 이전 소유자가 어떤 더 이른 거래도 서명하지 않았다는 것을 알 수 있는 방법이 필요하다 우리의 목적을 위해서, 가장 빠른 거래를 기록으로 간주한다, 따라서 우리는 나중의 이중 지불 시도는 신경 쓸 필요가 없다 거래가 없음을 확인하는 유일한 방법은 모든 거래를 인지하는 것이다 조폐국 기반 모델에서는, 조폐국이 모든 거래들을 인지하고 있고 어떤 것이 첫 번째로 수취되었는지 결정한다 신뢰 기관 없이 이것을 수행하기 위해서는, 트랜잭션은 반드시 공개적으로 발표되어야 하며[1], 그리고 우리는 참여자들이 그들이 받은 주문의 단일한 기록에 대해서 합의하기 위한 시스템이 필요하다 수취인은 각 트랜잭션 당시에, 대다수의 노드(miner)들이 그것이 첫 번째로 수령한 것이라고 합의한 증명이 필요하다

3 Timestamp Server


우리가 제안하는 해법은 타임스탬프 서버로 시작한다 타임스탬프 서버는 타임스탬프 될 항목들의 블록 해시를 가져와서 그 해시를 널리 공표함으로써 작동한다 신문이나 또는 Usenet post 같은 것이다[2-5] 타임스탬프는 데이터가 해시에 들어가기 위해서 당시에 분명히 존재해야만 했음을 증명한다 각 타임스탬프는 해시 안에 이전 타임스탬프를 포함하고, 체인을 형성하며, 각각의 추가된 타임스탬프는 그 이전의 것들을 보강한다

Screen Shot 2018-06-08 at 12.45.35 AM .png

4 Proof-of-work


P2P 기반 위에서 분산 타임스탬프 서버를 수행하기 위해서, 우리는 신문이나 Usenet post의 방식보다는, Adam Back’s Hashcash[6]와 비슷한 작업증명(proof-of-work) 시스템을 사용해야 한다 작업증명은 SHA-256 같은 함수로 해시되었을 때, zero 비트로 시작하는 해시값을 찾는 작업이 필요하다 요구되는 평균 작업은 필요한 zero 비트의 수에 따라서 기하급수적으로 증가하며 단 한 번의 해시 수행으로 증명될 수도 있다

우리의 타임스탬프 네트워크(timestamp network)를 위해서, 우리는 그 블록의 해시에 주어진 요구되는 zero 비트(bits) 값을 찾을 때까지 블록 안에서 임시값(nonce)를 증가시켜서 작업증명을 수행한다 일단 CPU 동작(CPU effort)이 작업 증명(proof-of-work)을 만족시키는 데 소비되면, 그 블록은 작업을 다시 하지 않는 한 변경될 수 없다 나중에 블록들이 그 뒤에 연결(chained) 되면, 그 블록을 변경하기 위한 작업은 그 뒤의 모든 블록들의 재작업을 포함한다

Screen Shot 2018-06-07 at 8.13.33 PM .png

또한 작업증명(proof-of-work)은 과반수 의사 결정으로 대표를 결정하는 방식으로 문제를 해결한다 만약 과반수가 1-IP 주소당 1투표(one-IP-address-one-vote)에 기초했다면, 그것은 많은 IP를 할당할 수 있는 누군가에 의해서 파괴될 수 있다 작업증명은 본질적으로 1-CPU-1-vote 이다 과반수 결정은 가장 긴 체인으로 표현되며, 그것에 투자된 가장 큰 작업증명 작업량(effort)을 가진다 과반수 CPU 파워가 정직한 노드(node, 채굴자)들에 의해 제어된다면, 그 정직한 체인은 가장 빠르게 성장해서 어떤 경쟁 체인도 능가할 것이다 지난 블록의 일부를 수정하기 위해서는, 한 공격자(attacker)가 그 블록과 그 뒤의 모든 블록들의 작업증명을 다시 해야만 하며 그런 다음 정직한 노드들의 작업을 따라잡아서 능가해야 한다 연속해서 블록들이 추가될 때 우리는 더 느린 공격자가 따라잡을 가능성이 기하급수적으로 감소하는 것을 나중에 보여줄 것이다

장기간에 걸친 노드 운영에서 하드웨어 속도 증가와 다양한 이해관계에 대한 보상을 위해, 작업증명 난이도(difficulty)는 시간당 평균 블록 수를 목표로 하는 이동 평균에 의해 결정된다 블록이 너무 빨리 생성되면, 난이도는 증가한다

5 Network


네트워크를 실행하는 단계는 다음을 따른다:

  1. 새로운 트랜잭션들이 모든 노드(miner) 들에 전파된다
  2. 각 노드는 새로운 트랜잭션들을 하나의 블록에 모은다
  3. 각 노드는 그 블록을 위한 난이도의 작업증명을 찾기 위해 노력한다
  4. 하나의 노드가 작업증명을 찾으면, 그 블록을 모든 노드들에 전파한다
  5. 노드들은 그 안에 모든 트랜잭션들이 유효하고 이미 지불되지 않은 경우에만 그 블록을 인정한다
  6. 노드들은 체인에 다음 블록을 생성하는 작업으로 그 블록의 수용을 표현하며, 그 승인된 블록의 해시를 (다음 블록의)이전 해시로써 사용한다

노드들은 항상 가장 긴 체인을 올바른 것으로 간주하며 그것을 확장하는 작업을 계속 수행할 것이다 만일 두 개의 노드가 동시에 다른 버전의 다음 블록을 전파(broadcasts) 했다면, 일부 노드들은 하나 또는 다른 블록을 먼저 받을 수 있다 이 경우에는, 그들이 먼저 받은 블록을 수행하지만 다른 분지(branch)가 더 길어질 경우를 대비해서 그것을 저장한다 그 결속은 다음 작업 증명이 발견되고 하나의 분지가 더 길어질 때 끊어질 것이다; 그럼 다른 분지에서 수행하던 노드들은 더 긴 체인으로 전환할 것이다

새로운 트랜잭션 전파(broadcasts)가 모든 노드들에 도달할 필요는 없다 그들이 많은 노드들에 전파되는 한, 그들은 오래지 않아 블록에 들어갈 것이다 또한 블록 전파는 누락된 메시지를 용인한다 만약 한 노드가 블록 하나를 받지 못했다면, 다음 블록이 전달되고 하나가 누락된 것을 알았을 때 그것을 요청할 것이다

6 Incentive


합의(convention)에 따라, 블록의 첫 번째 트랜잭션은 그 블록 생성자가 갖게 되는 새로운 코인을 시작하는 스페셜 트랜잭션이다 이것은 네트워크를 유지하기 위해 노드들에게 인센티브로 주어지며, 코인을 유통하기 위해 처음에 분배되는 방법을 제공한다 코인을 발행할 중앙 권력이 없기 때문이다 일정량 새로운 코인이 꾸준히 추가되는 것은 금을 순환시키기 위해 자원을 소비하는 금 채굴자와 비슷하다 우리의 경우는, CPU 시간과 전기가 소비된다

인센티브는 트랜잭션 수수료로 제공될 수도 있다 만약 트랜잭션의 출력값(output value)이 입력값(input value)보다 적다면, 그 차이가 그 트랜잭션을 포함하는 블록의 인센티브 값에 추가되는 트랜잭션 수수료이다 일단 예정된 수의 모든 코인이 유통되고 나면, 인센티브는 완전히 트랜잭션 수수료로 변경되며 완전하게 인플레이션에서 자유로워진다

인센티브는 노드들이 정직함을 유지하도록 장려할 수 있을 것이다 만약 탐욕스러운 공격자가 모든 정직한 노드들보다 더 많은 CPU 파워를 모을 수 있다면, 그가 지불한 금액을 도로 훔쳐 사람들을 속이는 데 그것을 사용할 것인지, 아니면 새로운 코인을 생성하는 데 그것을 사용할지를 결정해야만 할 것이다 공격자는 시스템과 자신의 부의 정당성을 훼손하는 것보다 규칙을 지키는 것이 더 이익이 된다는 것을 알아야 한다 다른 모든 사람들의 연합보다 그가 더 많은 새 코인을 얻을 수 있는 그런 규칙이다

References


[1] W. Dai, “b-money,” http://www.weidai.com/bmoney.txt, 1998.
[2] H. Massias, X.S. Avila, and J.-J. Quisquater, “Design of a secure timestamping service with minimal trust requirements,” In 20th Symposium on Information Theory in the Benelux, May 1999.
[3] S. Haber, W.S. Stornetta, “How to time-stamp a digital document,” In Journal of Cryptology, vol 3, no 2, pages 99-111, 1991.
[4] D. Bayer, S. Haber, W.S. Stornetta, “Improving the efficiency and reliability of digital time-stamping,” In Sequences II: Methods in Communication, Security and Computer Science, pages 329-334, 1993.
[5] S. Haber, W.S. Stornetta, “Secure names for bit-strings,” In Proceedings of the 4th ACM Conference on Computer and Communications Security, pages 28-35, April 1997.
[6] A. Back, “Hashcash - a denial of service counter-measure,” http://www.hashcash.org/papers/hashcash.pdf, 2002

1000x1.png

Screen Shot 2018-05-13 at 7.50.25 PM .png

최근글 ✏️

Sort:  

#203
2018-6-7

쫘아악 읽어보았습니다. 전에도 다른곳에 읽어 봤지만
역시 저에게 이 논문은 영어로 읽어도 어렵고
한국어로 읽어도 어렵습니다. ㅎㅎㅎ
보팅 리스팀 합니다.

감사합니다^^ 말씀대로 처음 볼 때는 도통 먼 소린지 ... 다른 자료들을 통해서 해시의 의미와
가장 작은 해시값을 만드는 nonce를 찾는 과정 등을 익힌 후에야 이 논문이 이해가 되더라고요
길이도 짧고 전문 분야 논문이라서 이 분야 종사자 아니고서는 한 번에 이해하는 건 힘든 일 같습니다^^

짱짱맨 호출에 출동했습니다!!

좋은 주말 보내세요~

사토시 논문 2부는 여기서 보세요

Coin Marketplace

STEEM 0.30
TRX 0.11
JST 0.033
BTC 64243.42
ETH 3152.93
USDT 1.00
SBD 4.28