비트코인 백서를 읽고 간단한 번역을 해보려고 한다.
블록체인의 워낙 근본적인 내용을 담고 있기 때문에 꼭 한번은 읽어봐야하는 논문이다.
Bitcoin: A Peer-to-Peer Electronic Cash System
Satochi Nakamoto
satoshi@gmx.com
Abstract. 진정 순수한 의미에서의 peer 2 peer 형태의 전자 화폐는 금융 기관의 개입없이 타인에게 전송될 수 있다.
전자서명이 그 해결법 중 일부를 제시한다. 그러나 이중지불을 막기 위해서 제 3자의 개입이 필요하게 된다면 이 또한 우리가 원했던 주요한 이점이 사라지게 된다. 그래서 우리는 peer 2 peer network를 활용하여 이중지불의 해결방법을 제시하고자 한다. 네트워크는 해시기반의 작업증명의 지속되는 체인 속의 트랜잭션을 해싱함으로써 해당 트랜잭션에 대한 시간적 로그를 기록 가능하게 만든다. 작업증명을 다시하지 않는 이상 바꿀 수 없는 기록을 새기는 것이다. 가장 킨 체인은 증명된 일련의 작업들의 증거로써 활용되기도 하지만 동시에 그것이 가장 큰 CPU풀로부터 생성되었다는 것을 의미하기도 한다.
가장 큰 CPU 파워를 가지고 있는 측이 네트워크를 공격하려는 측과 협력하지 않는 이상 그들은 항상 attackers들을 압도할 것이며 이로 인햏 가장 긴 체인을 형성하게 될 것이다. 네트워크는 그 자체로 작은 구조만을 필요로 한다. 메시지는 best effort를 통해 메시지 상에 전파될 것이며 노드들은 그들이 없는 동안에 있었던 기록을 담은 작업증명의 체인을 받아들이면서 마음대로 네트워크에 들어오고 나갈 수 있을 것이다.
1. Introduction
인터넷의 상업은 전자결제를 위해서 제3자의 존재로써 금융기관에 거의 독점적으로 의존하게 되었다 시스템은 대부분의 거래의 경우 제대로 동작하지만, 아직도 신뢰 기반의 모델에서 오는 약점으로 인해 취약하다.금융 기관이 분쟁 조정을 피할 수 없기 때문에 실질적으로 완전하게 비가역적인 거래는 사실 불가능하다. 중개 비용은 거래의 비용을 증가시킨다. 최소한의 실질적인 거래 사이즈를 제한시키고 작은 일반적인 거래의 가능성을 줄이면서, 취소 불가능한 서비스에 대해서 취소 불가능한 거래를 할 수 없게 하는 것에 대한 큰 비용이 드는 것을 의미한다. 철회에 대한 가능성을 위해 신뢰에 대한 필요성은 퍼져나간다. 판매자들은 고객들이 필요없을 수도 있는 정보를 제공하며 그들을 귀찮게 만들어야 한다. 일정 수준의 사기는 일정 부분 피할 수 없는 것으로 여겨진다. 이런 비용과 지불의 불확실함은 물리적 화폐를 사용한 대면 거래에서 피할 수 있다. 하지만 제 3자 없는 온라인 상에서의 해당 메커니즘은 존재하지 않는다.
필요한 것은 제 3자의 개입없이도 서로 원하는 두 대상 간에 직접적으로 거래를 할 수 있는 신뢰 기반이 아니라 암호학적 작업에 근거한 전자 화폐 시스템이다. 실질적 컴퓨터 연산 상으로 복구할 수 없는 트랜잭션은 판매자를 사기로부터 방지할 수 있을 것이다. 또한 통상적인 에스크로 메커니즘이 구매자를 보호할 수 있을 것이다. 이 논문에서는 시간 순서상으로 정렬된 트랜잭션을 작업 가능한 작업으로 생성하는 peer 2 peer의 분산 타임스탬프 서버를 활용하여 이중 지불 문제를 해결하는 것에 대해 알아본다. 해당 시스테은 attacker의 그룹보다 더 집약적인 CPU 파워를 지닌 정직한 노드가 더 많을 동안은 안전할 것이다.
2. Transactions
우리는 전자 코인을 일종의 디지털서명의 체인으로 정의한다. 각 소유자는 이전 트랜잭션과 다음 소유주의 공개키에 대해 해시를 함으로써 전자서명을 진행하고 그것을 코인의 마지막에 추가함으로써 다음으로 전송할 수 있다. 수취인은 해당 서명을 검증함으로써 체인의 소유주를 확인할 수 있다.
물론 문제는 수취인이 소유주 중 누군가가 이것을 중복 지불한 것에 대해 검증할 수 없다는 것이다. 통상적인 해결방법은 제 3자의 중앙 기관을 도입하거나 조폐국을 도입함으로써 이중 지불을 체크할 수 있을 것이다. 각 트랜잭션 이후에 코인은 조폐국으로 반환되어야 하고 그들은 새로운 코인을 발행한다. 그래서 조폐국에서 발행한 코인만이 이중 지불되지 않았음을 확인할 수 있을 것이다. 이 방안에는 문제가 있다. 전체 화폐 시스템이 오직 이 조폐국에 의해 마치 회사처럼 소유되어 운영된다는 점이다. 즉 은행처럼 모든 거래가 그들을 거쳐야만 한다는 뜻이다.
우리는 수취인으로 하여금 이전 소유주가 그 이전에 트랜잭션에 서명하지 않았다는 것을 알 수 있게 해줘야 한다. 우리의 목적대로 가장 먼저 시작된 트랜잭션은 집계된다. 그래서 우리는 이후의 시도되는 중복 지불에 대해 고려하지 않아도 된다. 트랜잭션의 부재를 확인할 유일한 방법은 모든 트랜잭션을 알고 있는 것이다. 조폐국 기반의 모델에서는 조쳬국이 모든 트랜잭션을 알고 있고 어느 트랜잭션이 가장 먼저인지 결정한다. 이 것을 신뢰 대상없이 이루기 위해서는 트랜잭션은 반드시 공개적으로 공표되어야 한다. 그래서 우리는 참여자들이 받은 트랜잭션에 대한 순서를 하나의 기록으로써 합의할 수 있는 시스템이 필요하다. 수취인은 매 거래마다 과반수의 노드들이 그것이 처음 사용된 트랜잭션이라고 알려줄 수 있는 증명을 필요로 한다.
3. Timestamp Server
우리가 제안하는 해결방안은 타임스탬프 서버로부터 시작한다. 타임스탬프 서버는 Usnet post의 신문처럼 타임스탬핑되고 넓게 공표되어야할 블록의 아이템을 해쉬함으로써 운영된다. 타임스탬프는 데이터가 해당 시점에 해시 계산에 들어가기 위해 존재했음을 증명해준다. 각 타임스탬프는 해시 안에 이전의 타임스탬프를 포함하면서 체인을 형성하고 각각의 추가적인 타임스탬프가 이전의 타임스탬프들을 보충하여 증명하게 된다.
4. Proof of work
5. Network
6. Incentive
7. Reclaiming Disk Spce
8. Simplified Payment Verification
9. Combining and Splitting Value
10. Privavy
11. Calculations
12. Conclusion
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.
[7] R.C. Merkle, "Protocols for public key cryptosystems," In Proc. 1980 Symposium on Security and Privacy, IEEE Computer Society, pages 122-133, April 1980. [8] W. Feller, "An introduction to probability theory and its applications," 1957.
개인적인 견해:
읽어주셔서 감사합니다.
'Blockchain' 카테고리의 다른 글
[Blockchain] 블록체인 확장성 이슈 관련 영상 요약 (0) | 2022.10.31 |
---|---|
[Blockchain] Base64 인코딩과 디코딩 (0) | 2022.10.31 |
[Blockchain] 블록체인과 P2P네트워크 그리고 분산 시스템 (0) | 2022.10.29 |
[Blockchain] MerkleTree 코드 분석 및 구현 with Java (0) | 2022.10.27 |
[Blockchain] 블록체인 논문 모음 (0) | 2021.03.15 |