2016년 12월 12일 월요일

Satoshi Nakamoto의 비트코인 논문 번역 및 주석(Bitcoin: A Peer-to-Peer Electronic Cash System) - 9. 금액의 결합과 분리

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

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




<목차>
10. 개인정보 (작성중)
11. 계산 (작성중)
12. 결론 및 참고문헌(작성중)

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

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

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

9. 금액의 결합과 분리

  비록 화폐들을 개별적으로 다루는 것이 가능할지라도, 각각의 화폐를 전달할 때마다 다른 트랜잭션으로 처리하는 것은 거추장스러울 수 있다. 금액을 합치거나 분리하기 위해, 트랜잭션은 다수의 입력과 다수의 출력을 가질 수 있다. 하나의 트랜잭션에는 보통 이전 트랜잭션의 더 큰 금액으로 부터의 입력이나, 여러 작은 금액이 합쳐진 다수의 입력이 있을 수 있고, 출력은 최대 2가지로 하나는 지불 금액, 하나는 전송자에게 돌아가는 잔액(거스름돈)이 될 수 있다.

  트랜잭션의 정보가 몇몇개의 트랜잭션에 의존하고, 또 그 트랜잭션이 더 많은 트랜잭션에 의존하여, 트랜잭션의 정보가 넓게 퍼지는 것은 문제가 되지 않는다. 모든 트랜잭션의 정보가 담긴 완전한 사본을 추출할 필요가 없기 때문이다.



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

<목차>
10. 개인정보 (작성중)
11. 계산 (작성중)
12. 결론 및 참고문헌(작성중)

2016년 12월 6일 화요일

Satoshi Nakamoto의 비트코인 논문 번역 및 주석(Bitcoin: A Peer-to-Peer Electronic Cash System) - 8. 간소화 된 지불 증명

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

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




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

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

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

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

8. 간소화 된 지불 증명(Simplified Payment Verification)

  전체 네트워크 노드를 사용하지 않고도 지불을 증명하는 것이 가능하다. 사용자는 가장 긴 체인의 헤더블록 복사본을 가지고 있기만 하면 된다. 그 헤더블록의 복사본은 자신이 가장 긴 체인을 가지고 있고, 원하는 트랜잭션이 포함되어 있는 블록과 연결된 Merkle트리의 가지를 얻었다고 확신할 때까지 다른 노드들에게 질의하면서 얻을 수 있다. 사용자는 트랜잭션을 스스로 직접 확인 할 수는 없지만, 해당 트랜잭션이 들어있는 블록을 가장 긴 체인에 놓아보면서, 그 블록이 가장 긴 체인에 받아들여졌고 그 뒤에 다른 블록들이 이어지고 있다는 사실을 지불 증명이라 생각할 수 있다.


  이러한 증명방식은 정직한 노드들에의해 네트워크가 통제되고 있는 한은 신뢰할만 하지만, 만약 공격자들이 네트워크에서 정직한 노드들 보다 우세한 자원을 가지고 있다면 더 취약한 방식이라고 볼 수 있다. 이러한 간소화된 방식은 네트워크의 노드들이 스스로 트랜잭션을 증명할 수 있는 한편, 공격자들이 만들어낸 트랜잭션에 의해 농락당할 수 있는 가능성이 충분하다. 공격자가 네트워크에서 다른 모든 정직한 노드들에 비해 우세한 자원을 가지고 있다면 말이다. 이러한 문제로부터 시스템을 보호하기 위한 한가지 전략은 노드들이 비정상적인 블록을 감지 했을 때, 그들로부터의 경고를 받고 사용자들의 소프트웨어는 전체 블록과 경고받은 트랜잭션을 받아 비정상적인 부분을 확인하도록 하는 것이다. 빈번한 지불을 받는 사업은 아마도 여전히 더 독립되고 보안과 더 빠른 증명을 위한 그들만의 노드를 운영하기를 원할지도 모른다.

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

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

2016년 12월 5일 월요일

Satoshi Nakamoto의 비트코인 논문 번역 및 주석(Bitcoin: A Peer-to-Peer Electronic Cash System) - 7. 디스크 공간 처리

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

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

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

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

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

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

7. 디스크 공간 처리(Reclaiming Disk Space)

  일단 전자화폐에 담겨있는 최근의 트랜잭션 정보가 충분한 블록들 사이에 묻히면, 이전에 활용된 트랜잭션은 디스크 공간을 절약하기 위해 버려질 수 있다. 블록해시 정보를 손상입히지 않고 이 것을 가능하게 하기위해, 트랜잭션들은 블록해시의 root만을 가진채로 Merkle Tree[7][2][5]에 해시된다. 오래된 블록들은 루트노드를 제외한 하위 노드들을 잘라냄으로써 공간을 더 절약할 수 있다. 자식노드의 해시들은 저장될 필요가 없다.



   트랜잭션을 포함하지 않는 블록 헤더는 약 80바이트정도 된다. 만약 블록이 매 10분마다 생성된다고 가정하면, 1년마다 사용하는 저장공간은 80byte * 6 * 24 * 365 = 4.2MB 씩 늘어나게 된다. 2008년까지 일반적으로 파는 컴퓨터는 2GB의 램을 가지고 있고, Moore's Law 에서는 현재 메모리의 성장을 1년에 1.2GB로 보고 있다. 만약 블록 헤더들을 모두 메모리에 저장한다고 해도 저장공간 자체는 크게 문제가 되지 않을 것이다.

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

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

2016년 12월 2일 금요일

Satoshi Nakamoto의 비트코인 논문 번역 및 주석(Bitcoin: A Peer-to-Peer Electronic Cash System) - 6. 보상(Incentive)

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

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


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

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

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

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

6. 보상(Incentive)

  관습적으로, 한 블록에서의 첫번째 트랜잭션은 블록 생성자에게 주어지는 새 전자화폐가 시작되는 특별한 트랜잭션으로 한다. 이것은 네트워크를 유지하기 위해 노드에게 주어지는 보상으로써, 우리의 시스템에는 화폐를 발행하기위한 중앙 기관이 없기 때문에 전자화폐를 시장에 풀기위한 한가지 방법이 된다. 새로운 전자화폐의 일정량을 꾸준히 발행하는 것은 금을 채굴하는 사람이 돈을 투자하여, 채굴한 금을 시장에 푸는 것과 비슷하다. 우리의 경우에는 CPU 자원과 전력을 투자한다고 볼 수 있다.
  보상은 또한 트랜잭션을 발생하는 요금으로도 생성 될 수 있다. 만약 트랜잭션 수행하여 전달된 화폐의 금액이 투입한 금액보다 적다면, 이 금액의 차이는 트랙잭션 사용료로 볼 수 있고, 그 트랜잭션 사용료는 보상으로써 블록에 기록된다. 일단 미리 정해진 양의 화폐가 시장에 풀리면, 블록생성에 대한 보상은 전부 트랜잭션 사용료로 전환되고, 시장에 풀린 전체 화폐량은 완전히 고정된다.
  보상은 노드들이 정직하게 네트워크를 사용하도록 돕는 역할을 하게 될 것이다. 만약 악의적인 목적을 가진 공격자가 다른 모든 정직한 노드들의 CPU 자원의 합보다 큰 CPU 자원을 모을 수 있다면, 그 공격자는 사람들을 속여 그의 지불을 다시 빼앗는 방법과 그 CPU 자원을 이용해 새로운 코인을 만드는 데 사용하는 방법 중에 하나를 선택해야하는 상황에 닥칠 것이다. 공격자는 시스템의 룰을 지키며 CPU 자원을 사용하는 것이 본인에게 더 이익이 됨을 깨달아야 한다. 시스템의 룰은 다른 모든 사람들을 합친 것보다 더 많은 새 코인을 생성하는 것이, 시스템의 신뢰성을 떨어트리고 자신의 재산의 가치를 하락 시키는 것보다 더 유리하다고 생각하게 할 것이다.


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

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

Satoshi Nakamoto의 비트코인 논문 번역 및 주석(Bitcoin: A Peer-to-Peer Electronic Cash System) - 5. 네트워크

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

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

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

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

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

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

5. 네트워크

  네트워크를 작동시키기 위한 단계는 아래와 같다.
  1. 새로운 트랜잭션들은 모든 노드들에게 전달된다.
  2. 각 노드는 새로운 트랜잭션들을 블록에 모은다.
  3. 각 노드들은 블록을 생성하기 위해 작업증명 작업을 수행한다.
  4. 한 노드가 작업증명에 대한 해답을 찾으면, 그 블록은 모든 노드들에게 전달된다.
  5. 노드들은 작업증명이 끝난 블록의 트랜잭션 정보가 모두 유효하고, 중복사용되지 않았다면, 블록을 받아들인다.
  6. 노드들은 이렇게 받아들인 블록을 체인에 연결하고 그 다음 블록을 생성하는 작업으로 이행함으로써, 정상적으로 블록을 받아들였음을 암묵적으로 표현한다.
  노드들은 항상 가장 긴 체인을 올바른 체인으로 생각하고, 그 가장 긴 체인을 확장하기 위해 작업한다. 만약 두 노드가 동시에 작업증명의 해답을 찾아서, 그 두 블록을 다른 모든 노드들에게 전달했다면, 노드들은 둘 중에 한 블록을 먼저 받게되고, 각 노드의 먼저 받게 되는 블록이 서로 다르게 될 것이다. 이러한 경우 노드는 먼저 받은 노드를 가장 긴 체인으로 받아들여 작업하고, 다른 블록은 그 쪽이 더 길어질 경우를 대비하여 보관해 놓는다. 이렇게 두 갈래로 갈라진 체인은, 다음 작업증명 해답이 발견되면서 한 쪽 가지의 길이가 더 길어지게 된다. 그렇게 되면 다른 쪽 노드에서 작업하고 있던 노드들은 자신의 작업하려는 체인을 더 긴 체인쪽으로 변경한다.
  새로운 트랜잭션은 반드시 모든 노드에 전달 될 필요는 없다. 새로운 트랜잭션은 보다 많은 노드에 전달되는 한, 길어지기 전에 블록에 들어가게 될 것이다. 즉, 이러한 블록 전달 방식은 메세지 손실에도 강하다는 것을 알 수 있다. 만약 노드가 블록을 전달 받지 못하면, 다음 블록을 받았을 때, 해당 노드는 이전의 블록이 손실 됬음을 알 수 있고, 받지 못한 블록을 요청할 것이다.


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

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

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. 결론 및 참고문헌(작성중)

Satoshi Nakamoto의 비트코인 논문 번역 및 주석(Bitcoin: A Peer-to-Peer Electronic Cash System) - 3. 타임스탬프 서버

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

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


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

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

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

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

3. 타임스탬프 서버

  우리의 제시하는 솔루션은 타임스탬프 서버로 부터 시작된다. 타임스탬프 서버는 타임스탬프가 찍혀야 하는 각 아이템의 블록에 대한 해시를 가지고, 그 해시를 다른 노드들에 전달(publish)하는 방식으로 작동한다. 이것은 마치 신문이나 유즈넷 포스트(Usenet Post)[2][3][4][5]와도 같다. 타임스탬프는 해시 내에 들어간 그 데이터가 그 당시에 분명히 존재했다는 것을 증명한다. 각각의 타임스탬프는 이전의 타임스탬프를 포함한 해시를 가지고 있고, 체인을 형성하여, 이전의 타임스탬프들의 안전성을 강화한다.



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

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