비트코인 백서의 내용 중 2 트랜잭션과 관련된 내용은 다음과 같습니다.

  • 전자 코인은 디지털 서명의 체인으로 정의됩니다.
  • 각 소유자는 이전 거래의 해시와 다음 소유자의 공개 키에 디지털 서명을 하고 이를 코인의 끝에 추가하여 코인을 다음 소유자에게 전송합니다.
  • 이중 지불 문제를 해결하기 위해 신뢰할 수 있는 중앙 기관 또는 조폐국을 도입하여 모든 거래에서 이중 지불을 확인하는 것이 일반적입니다.
  • 하지만 비트코인에서는 중앙 기관이 없기 때문에 거래가 공개적으로 발표되고, 참여자들이 주문이 접수된 단일 내역에 동의할 수 있는 시스템이 필요합니다.
  • 수취인은 각 트랜잭션 시점에 대다수의 노드가 가장 먼저 받은 트랜잭션이라는 데 동의했다는 증거가 필요합니다.

다음은 원문입니다.
2. 트랜잭션

전자 코인은 디지털 서명의 체인으로 정의합니다. 각 소유자는 이전 거래의 해시와 다음 소유자의 공개 키에 디지털 서명을 하고 이를 코인의 끝에 추가하여 코인을 다 음 소유자에게 전송합니다. 수취인은 서명을 확인하여 소유권 체인을 확인할 수 있 습니다.

물론 문제는 수취인이 소유자 중 한 명이 코인을 이중으로 지출하지 않았는지 확인할 수 없다는 것입니다. 일반적인 해결책은 신뢰할 수 있는 중앙 기관 또는 조폐국을 도입하여 모든 거래에서 이중 지출을 확인하는 것입니다. 각 거래 후에는 코인을 조폐국에 반환하여 새 코인을 발행해야 하며, 조폐국에서 직접 발행한 코인만 이중 지출이 발생하지 않는다고 신뢰할 수 있습니다. 이 솔루션의 문제점은 전체 화폐 시스템의 운명이 조폐국을 운영하는 회사에 달려 있으며, 모든 거래가 은행처럼 조폐국을 거쳐야 한다는 것입니다. 수취인이 이전 소유자가 이전 거래에 서명하지 않았다는 사실을 알 수 있는 방법이 필요합니다. 저희의 목적상 가장 빠른 거래가 중요한 거래이므로 나중에 이중 지출 시도가 있더라도 상관하지 않습니다. 거래가 없음을 확인하는 유일한 방법은 모든 거래를 인지하는 것입니다. 조폐국 기반 모델에서는 조폐국이 모든 거래를 인식하고 어떤 거래가 먼저 도착했는지 결정했습니다. 신뢰할 수 있는 당사자 없이 이 작업을 수행하려면 거래가 공개적으로 발표되어야 하며[1], 참여자들이 주문이 접수된 단일 내역에 동의할 수 있는 시스템이 필요합니다. 수취인은 각 트랜잭션 시점에 대다수의 노드가 가장 먼저 받은 트랜잭션이라는 데 동의했다는 증거가 필요합니다.

이처럼 비트코인 백서에서는 이중 지불 문제를 해결하기 위한 문제 제기를 하며 이와 관련 3 에서 타임스탬프 서버를 제안합니다. 이 서버는 거래가 발생한 시간을 기록하여 거래가 언제 발생했는지를 알려주는 역할을 합니다. 이 서버는 중앙 기관이 아니라 분산된 네트워크에 의해 운영되며, 거래가 발생한 시간은 해당 거래가 최초로 노드에게 전달된 시간으로 기록됩니다. 이를 통해 수취인은 해당 거래가 언제 발생했는지를 확인할 수 있으며, 이를 바탕으로 이전 거래가 존재하지 않는지 확인할 수 있습니다.

원문:

  1. 타임스탬프 서버
    저희가 제안하는 솔루션은 타임스탬프 서버에서 시작됩니다. 타임스탬프 서버는 타임스탬프를 찍을 항목 블록의 해시를 가져와 신문이나 유즈넷 게시물과 같이 해시를 널리 게시하는 방식으로 작동합니다[2-5]. 타임스탬프는 해시에 들어가기 위해 해당 데이터가 그 당시에 존재했음을 증명합니다. 각 타임스탬프는 해시에 이전 타임스탬프를 포함하여 체인을 형성하며, 추가 타임스탬프는 그 이전의 타임스탬프를 강화합니다.


비트코인 백서는 분산형 타임스탬프 서버를 구현하기 위해 작업 증명 시스템을 사용해야 함을 언급합니다. 작업 증명은 해시가 0비트로 시작되는 값을 스캔하는 작업을 포함하며, 타임스탬프 네트워크에서는 블록의 논스를 증가시켜 작업 증명을 구현합니다. 작업 증명을 통해 다수결 의사 결정에서 대표성을 결정하는 문제도 해결할 수 있으며, 가장 많은 작업 증명 노력이 투자된 체인이 가장 긴 체인으로 대표됩니다. 작업 증명 난이도는 시간당 평균 블록 수를 대상으로 하는 이동 평균에 의해 결정됩니다.

원문:

  1. 작업 증명


    원문:

분산형 타임스탬프 서버를 P2P 기반으로 구현하려면 신문이나 유즈넷 게시물이 아닌 아담 백의 해시캐시[6]와 유사한 작업 증명 시스템을 사용해야 합니다. 작업 증명은 SHA-256과 같이 해시될 때 해시가 0비트로 시작되는 값을 스캔하는 작업을 포함합니다. 평균적으로 필요한 작업은 필요한 0비트 수에서 기하급수적으로 증가하며, 단일 해시를 실행하여 검증할 수 있습니다.
타임스탬프 네트워크의 경우, 블록의 해시에 필요한 0비트를 제공하는 값이 발견될 때까지 블록의 논스를 증가시키는 방식으로 작업 증명을 구현합니다. 작업 증명을 만족시키기 위해 CPU의 노력이 소비된 후에는 작업을 다시 실행하지 않고는 블록을 변경할 수 없습니다. 이후 블록은 그 뒤에 체인으로 연결되므로, 블록을 변경하려면 그 뒤에 있는 모든 블록을 다시 실행해야 합니다.

작업 증명은 다수결 의사 결정에서 대표성을 결정하는 문제도 해결합니다. 만약 과반수가 1 IP 주소 1 투표를 기반으로 한다면, 많은 IP를 할당할 수 있는 사람이라면 누구라도 이를 전복시킬 수 있습니다. 작업 증명은 본질적으로 1-CPU 1표입니다. 다수의 결정은 가장 긴 체인으로 대표되며, 가장 많은 작업 증명 노력이 투자된 체인으로 표시됩니다. 대부분의 CPU 파워가 정직한 노드에 의해 제어되는 경우, 정직한 체인은 가장 빠르게 성장하며 경쟁 체인을 앞지르게 됩니다. 공격자가 과거 블록을 수정하려면 해당 블록과 그 이후의 모든 블록에 대한 작업 증명을 다시 수행한 다음 정직한 노드의 작업 증명을 따라잡아 능가해야 합니다. 이후 블록이 추가될수록 느린 공격자가 따라잡을 확률은 기하급수적으로 줄어든다는 것을 보여드리겠습니다.시간이 지남에 따라 증가하는 하드웨어 속도와 노드 운영에 대한 다양한 관심을 보상하기 위해 작업 증명 난이도는 시간당 평균 블록 수를 대상으로 하는 이동 평균에 의해 결정됩니다. 블록이 너무 빨리 생성되면 난이도가 증가합니다.


5.네트워크에 대한 내용은 다음과 같습니다. 비트코인의 네트워크는 새로운 트랜잭션이 모든 노드에 브로드캐스트되고, 각 노드는 이를 블록으로 수집하며 어려운 작업 증명을 찾아 블록을 생성합니다. 이후 블록이 모든 노드에 브로드캐스트되고, 노드는 블록에 포함된 모든 트랜잭션이 유효한지 확인합니다. 노드는 항상 가장 긴 체인을 올바른 체인으로 간주하며, 더 긴 체인이 나타나면 다른 브랜치에서 작업하던 노드는 이를 받아들이게 됩니다. 새로운 트랜잭션 브로드캐스트가 모든 노드에 도달할 필요는 없으며, 많은 노드에 도달하면 블록에 포함될 수 있습니다. 블록 브로드캐스트는 메시지 누락에 관대하며, 노드가 블록을 수신하지 못한 경우에는 블록을 요청할 수 있습니다.

  1. 네트워크
    네트워크를 실행하는 단계는 다음과 같습니다:
    1) 새로운 트랜잭션이 모든 노드에 브로드캐스트됩니다.
    2) 각 노드는 새로운 트랜잭션을 블록으로 수집합니다.
    3) 각 노드는 블록에 대한 어려운 작업 증명을 찾기 위해 노력합니다.
    4) 노드가 작업 증명을 찾으면 모든 노드에 블록을 브로드캐스트합니다.
    5) 노드는 블록에 포함된 모든 트랜잭션이 유효하고 아직 소비되지 않은 경우에만 블록을 수락합니다.
    6) 노드는 수락한 블록의 해시를 이전 해시로 사용하여 체인의 다음 블록을 생성하는 작업을 수행함으로써 블록에 대한 수락을 표현합니다.
    노드는 항상 가장 긴 체인을 올바른 체인으로 간주하고 이를 확장하기 위해 계속 노력합니다. 두 노드가 동시에 서로 다른 버전의 다음 블록을 브로드캐스트하는 경우, 일부 노드는 둘 중 하나를 먼저 수신할 수 있습니다. 이 경우 노드는 먼저 수신한 블록을 작업하지만, 더 길어질 경우를 대비해 다른 브랜치를 저장합니다. 다음 작업 증명이 발견되고 한 브랜치가 더 길어지면 동점이 깨지며, 다른 브랜치에서 작업하던 노드는 더 긴 브랜치로 전환합니다.
    새로운 트랜잭션 브로드캐스트가 반드시 모든 노드에 도달할 필요는 없습니다. 많은 노드에 도달하기만 하면 얼마 지나지 않아 블록에 포함될 것입니다. 블록 브로드캐스트는 메시지 누락에 대해서도 관대합니다. 노드가 블록을 수신하지 못한 경우, 다음 블록을 수신하고 블록을 놓쳤다는 것을 알게 되면 블록을 요청합니다.