2016년 12월 1일 목요일

Satoshi Nakamoto의 비트코인 논문 번역 및 주석(Bitcoin: A Peer-to-Peer Electronic Cash System) - 4. 작업증명(Proof-of-Work)

지금부터 사토시 나카모토의 논문을 번역하고 나름대로 어려운 부분에 대해서는 해설을 붙여보도록 하겠다. 나의 이 노력이 Bitcoin 에 대해 알고싶어 하는 사람들에게 도움이 되었으면 좋겠다.

(*밑줄 표시가 되어있는 단어에 마우스를 대면 해당 용어의 설명 혹은 이해를 위한 주석이 나타납니다.)
(**아래 번역된 논문은, 번역을 자연스럽게 하기 위해 의역한 부분이 많으며, 주석은 이해를 쉽게 하기 위해 덧붙인 100% 제 의견입니다.)


<목차>
9. 값의 결합과 분리 (작성중)
10. 개인정보 (작성중)
11. 계산 (작성중)
12. 결론 및 참고문헌(작성중)

-----------------------------------------------------------------

비트코인: P2P 전자화폐 시스템

Satoshi Nakamoto
satoshin@gmx.com
www.bitcoin.org

4. 작업증명(Proof-of-work)

  P2P를 기초로 하여 분산 타임스탬프 서버를 구현하기 위해서, 우리는 신문이나 유즈넷 포스트 같은 방식보다는 Adam Back's Hashcash [6]와 비슷한 작업증명 시스템이 필요하다. 작업증명은 SHA-256과 같은 방법으로 해시되었을 때, 그 해시의 bit값이 0으로 시작하는지 탐색하는 행위를 한다. 평균적으로 작업은 0 bit의 개수에 따라 기하급수적(exponential)으로 증가하고, 검증은 단 한번의 해시를 수행함으로써 쉽게 행할 수 있다.
  타임스탬프 네트워크를 구성하기 위하여, 우리는 0bit를 포함한 해시를 생성 할 수 있는 값을 찾을 때까지 블록 내의 임시토큰(nonce)을 증가시키는 작업증명을 구현한다. 일단 CPU의 자원을 사용하여 작업증명을 수행해버리면, 그 블록은 다시 작업증명을 수행하는 것 외에는 변경할 방법이 없다. 추후에 생기는 블록은 체인 형태로 이전 블록에 연결되고, 그렇게 되면 한 블록을 바꾸기 위해 그 후에 생성되어 연결된 모든 블록을 다시 작업해야 한다.

  작업증명은 또한 어떠한 체인이 다수의 노드들의 바르다고 판단한 체인인지 어떻게 알 것인가라는 문제를 해결할 수 있다. 만약 그 다수의 판단이라는 것이 한 IP당 한 표 행사에 기반한다면, 그것은 많은 아이피를 할당받은 누군가에 의해 뒤집힐 수 있다. 그리하여 작업증명은 필연적으로 한 CPU당 한 표로 갈 수밖에 없다. 다수의 판단은 가장 큰 작업증명 노력이 들어간 가장 긴 체인으로 대표된다. 만약 다수의 CPU 자원이 정직한 노드들에 의해 통제된다면, 그 정직한 노드들이 통제하는 체인은 어떤 다른 경쟁자보다 빠르게 길어질 것이다. 과거의 블록을 수정하기 위해서는 해당 블록과 그 블록 뒤로 이어진 모든 블록에 대한 작업증명을 다시 수행해야 하고, 그것이 가장 긴 노드의 길이를 넘어서야 한다. 우리는 추후의 장에서 더 긴 체인을 따라 잡으려는 느린 공격자가 블록이 추가 됨에 따라 기하급수적으로 약화되는 확률을 보여줄 것이다.
  시간이 지날수록 하드웨어의 속도가 빨라지고, 네트워크에 참여하는 노드가 많아지는 것에 대응하기 위해 작업증명의 난이도는 시간당 생성되는 평균 블록수에 따른 이동 평균(moving average)에 의해 결정된다. 블록 생성 속도가 빠르면 빠를 수록 난이도는 증가한다.

-----------------------------------------------------------------

<목차>
9. 값의 결합과 분리 (작성중)
10. 개인정보 (작성중)
11. 계산 (작성중)
12. 결론 및 참고문헌(작성중)