분류 전체보기 172

[해석서]Bitcoin: A Peer-to-Peer Electronic Cash System - 9. 금액의 결합과 분할

비트코인에서의 거래는 일반적인 거래에서 표현하는 방법과 좀 다릅니다. 이번 절에서는 그러한 내용을 다룹니다. 아래는 논문 본문입니다. 9. 금액의 결합과 분할 코인들을 개별로 처리할 수도 있겠으나 그런 경우, 송금되는 모든 단위별로 거래를 분리해야 하기에 현실적이지 않다. 금액에 대해 쪼개고 합치는 것이 가능하게 하도록, 거래는 복수의 입금과 출금으로 구성된다. 일반적으로 입금은, 이전 거래로부터 받은 큰 금액의 단일 입금이거나, 소액으로 이루어진 여러 입금 값들로 구성되고, 출금은 최대 2개의 출금 값으로 구성된다. 출금 값 중 하나는 상대방에게 주는 지불이고, 만약 입력값대비 잔액이 발생한다면, 송금자 자신에게 되돌리는 출금이 발생한다. 한 거래가 여러 거래들과 연관되고, 그 거래들은 더 많은 거래들..

[해석서]Bitcoin: A Peer-to-Peer Electronic Cash System - 8. 지불 입증 간소화

비트코인에서 거래가 발생했을 때, 이에 대한 입증을 하려면, 원칙적으로는 거래정보를 담고 있는 모든 블록들을 가지고 있어야 합니다. 이렇게 모든 정보를 가진 노드를 풀 노드(Full Node)라고 합니다. 1번블록에 거래 A->B가, 5번 블록에 B->C가 있을 때, B->C에 대한 거래가 올바른 지를 검증하기 위해서는, B에게로의 거래였던 선행거래가 담겨있는 1번블록을 봐야하는 것입니다. 풀 노드와 달리, 블록내 거래정보가 없는 블록헤더로만 구성된 블록들을 가지고 있는 '가벼운 노드'인 라이트 노드(Light Node)들도 있습니다. 스마트 폰 등 저장 메모리를 적게 써야하는 기기들이 이런 라이트 노드들이 되는데, 이 노드들이 어떤 거래에 대한 검증을 하려면 풀 노드의 도움을 받아야 합니다, 이 때 앞..

[해석서]Bitcoin: A Peer-to-Peer Electronic Cash System - 7. 디스크공간 회수

7. 디스크 공간 회수 코인에 대한 가장 최근 거래가 충분한 수의 블록에 묻히면, 디스크 공간을 절약하기 위해, 그 거래 이전에 발생했던 거래들은 삭제해도 된다. 이미 계산된 블록 해시값이 훼손되지 않으면서 이러한 것이 가능하게 하도록, 거래들의 해시값으로 머클트리(Merkle Tree)를 구성하고[7][2][5], 블록의 해시에는 머클트리의 최상부 루트(root)만 포함되게 한다. 이렇게 함으로써 오래된 블록의 경우는, 트리의 일부 가지를 쳐 낼 수 있기에 크기가 작아질 수 있다. 자식 노드의 해시들은 저장될 필요가 없다. 거래데이터가 없이 블록헤더 단독으로는 크기가 80바이트이다. 만약 블록이 매 10분마다 생성한다고 가정하면, 80바이트 x 6 x 24 x 365 = 4.2MB 정도의 데이터가 매년..

[해석서]Bitcoin: A Peer-to-Peer Electronic Cash System - 6. 인센티브

이번 절은, 블록생성에 대한 대가로 주어지는 인센티브(보상)에 대한 얘기입니다. 인센티브 관례상, 블록에 포함된 거래 중 첫 번째 거래는, 해당 블록 생성자에게 새로운 코인이 발행돼서 주어지는, 특별한 거래로 이루어진다. 이렇게 함으로써, 네트워크를 지탱하고 있는 노드들에게 인센티브를 줄 수 있고 또한, 코인을 발행하는 중앙 기관 없이도 신규 코인을 발행해서 유통될 수 있게 된다. 지속해서 일정한 양의 신규 코인을 발행하는 것은, 금을 유통할 수 있게 광부들이 자원을 소비하는 것과 유사하다. 이 경우에는 CPU 동작과 전력이 소비된다. 지금까지 논문을 읽었다면 느끼고 있을 사실이, 이 블록체인망이 유지되기 위해서는 거래를 검증하고 블록을 생성할 성실한 노드들이 많아야한다는 것입니다. 이 노드들은 블록을 ..

[해석서]Bitcoin: A Peer-to-Peer Electronic Cash System - 5. 네트워크

이번 장은 거래들이 발생해서, 각 노드들로 구성된 블록체인 네트워크에 전달되서, 어떻게 블록이 생성되는 지에 대한 설명입니다. 논문 본문을 보겠습니다. 5. 네트워크 네트워크의 동작은 다음과 같은 과정으로 이루어진다: 1) 새로운 거래들은 모든 노드에 브로드캐스트된다. 2) 각 노드는 새로운 거래들을 모아 블록에 넣는다. 3) 각 노드는 해당 블록에 대한 작업증명을 찾는 과정을 수행한다. 4) 어떤 노드가 작업증명을 찾았다면, 해당 블록을 모든 노드에게 브로드캐스트한다. 5) 노드들은, 브로드캐스트 받은 블록에 대해서, 블록 내 모든 거래가 유효하고 중복 사용되지 않았을 때, 해당 블록을 승인한다. 6) 노드들은, 그들이 해당 블록을 승인했다는 것을, 해당 블록의 해시를 이용해서 그다음 블록생성을 시작함..