블록체인 기술은 여러 개인들과 조직들의 공동 작업으로 발전해왔습니다. 하지만 가장 잘 알려진 블록체인 기술은 비트코인의 블록체인입니다. 사토시 나카모토는 2008년 비트코인 백서(Bitcoin White Paper)를 공개하며 블록체인 기술을 세상에 알렸습니다.

소개 이유: 비트코인 White Paper는 2008년에 발표된 이후로 10년이 지났지만, 여전히 유효한 내용을 담고 있습니다. 물론 비트코인 생태계는 지속적으로 발전하고 있으며 기술적인 발전도 이루어지고 있기 때문에, 이후에 발표된 논문이나 개선 사항들이 추가된 것은 사실입니다. 하지만, 비트코인 White Paper는 여전히 중요한 역사적인 문서로서, 분산원장 기술의 초석을 담고 있는 문서입니다. 따라서, 비트코인 White Paper를 이해하고 학습하는 것은 여전히 매우 중요합니다.

다음은 원문의 링크입니다.
Bitcoin: A Peer-to-Peer Electronic Cash System

해당 White Paper에서는 블록체인의 핵심 개념과 작동 방식, 그리고 비트코인 거래 과정에서의 보안 등에 대한 내용이 설명되어 있습니다. 또한 분산형 거래 시스템이 왜 중요한지, 그리고 이러한 시스템이 어떤 문제를 해결할 수 있는지에 대한 내용도 포함되어 있습니다.

이 White Paper는 비트코인이 발표된 후에도 여러 가지 블록체인 기반 프로젝트에서 참고되고 있으며, 블록체인 기술을 이해하는 데 중요한 문서 중 하나입니다.

사토시 나카모토(Satoshi Nakamoto)는 비트코인의 창시자로 알려져 있습니다. 그러나 이 사람의 실제 정체는 여전히 알려지지 않았습니다. 가명을 사용한 이유는 사토시 나카모토가 개인정보 보호와 익명성을 중요시했기 때문으로 추정됩니다. 또한, 비트코인을 개발한 초기에는 이 기술에 대한 인식과 이해가 부족하여 불법적인 용도로 사용될 가능성을 우려하여 실명을 사용하지 않았을 수도 있습니다.

여기서는 함께 이 문서를 한국어로 번역해 소개해 드리겠습니다.

문서의 첫 부분에서는 Abstract 로서 초록으로 내용을 소개합니다.
이 글은 블록체인 기술의 핵심 아이디어를 설명합니다. 블록체인은 중앙 기관 없이도 안전하게 거래를 할 수 있는 기술로, 두 당사자가 직접 송금할 수 있습니다. 이를 위해 블록체인은 P2P 네트워크를 사용하며, 각 거래는 해시 기반 작업 증명을 통해 변경할 수 없는 기록으로 남습니다. 이 기록은 가장 긴 체인이며, 가장 큰 CPU 파워 풀에서 발생했다는 증거이기도 합니다. 이러한 체인을 형성하기 위해서는 최소한의 구조만 필요하며, 노드는 언제든지 네트워크에서 들어가거나 나올 수 있습니다. 이를 통해 블록체인은 안전하고 투명한 거래를 할 수 있는 기술로 자리 잡게 되었습니다.

원문 :

비트코인: P2P 전자 현금 시스템
사토시 나카모토
satoshin@gmx.com
www.bitcoin.org
요약. 순수한 P2P 버전의 전자 현금을 사용하면 온라인에서 금융 기관을 거치지 않고 한 당사자에서 다른 당사자로 직접 송금할 수 있습니다.
금융 기관. 디지털 서명은 솔루션의 일부를 제공하지만, 신뢰할 수 있는 제3자가 여전히 필요한 경우 주요 이중 지출을 방지하기 위해 신뢰할 수 있는 제3자가 여전히 필요하다면 이점이 사라집니다.
저희는 P2P 네트워크를 사용하여 이중 지출 문제에 대한 해결책을 제안합니다.
네트워크는 트랜잭션을 지속적인 체인에 해싱하여 타임스탬프를 찍습니다.
해시 기반 작업 증명, 재실행 없이는 변경할 수 없는 기록 형성 변경할 수 없는 기록을 형성합니다. 가장 긴 체인은 목격된 이벤트의 순서를 증명할 뿐만 아니라
이벤트의 순서를 증명할 뿐만 아니라, 가장 큰 CPU 파워 풀에서 발생했다는 증거이기도 합니다. 대부분의 네트워크를 공격하기 위해 협력하지 않는 노드에 의해 대부분의 CPU 파워가 제어되는 한 가장 긴 체인을 생성하고 공격자를 앞지르게 됩니다. 네트워크 자체는네트워크 자체는 최소한의 구조만 필요합니다. 메시지는 최선을 다해 브로드캐스트되며 기반으로 메시지가 전송되며, 노드는 네트워크에서 마음대로 탈퇴했다가 다시 참여할 수 있습니다.
가장 긴 작업 증명 체인을 네트워크에서 떠났다가 다시 참여할 수 있습니다.

1.소개 부분
내용 요약:이 글은 인터넷 상거래에서 신뢰 기반 모델의 약점과 이를 보완할 수 있는 암호화 증명 기반의 전자 결제 시스템에 대해 소개하고 있습니다. 기존의 전자 결제 시스템은 신뢰할 수 있는 제3자를 필요로 하지만, 이로 인해 거래 비용이 증가하고 소액 거래가 어렵고 사기 등의 문제가 발생합니다. 암호화 증명 기반의 전자 결제 시스템은 신뢰할 수 있는 제3자 없이 거래를 처리하며, 이를 위해 P2P 분산 타임스탬프 서버를 사용하여 거래의 시간 순서를 계산적 증명으로 보호합니다. 이 시스템은 공격자 노드보다 더 많은 CPU 성능을 제어하는 정직한 노드가 협력하는 한 안전합니다.

원문:

  1. 소개
    인터넷 상거래는 전자 결제를 처리하는 신뢰할 수 있는 제3자 역할을 하는 금융 기관에 거의 전적으로 의존하게 되었습니다. 이 시스템은 대부분의 거래에서 충분히 잘 작동하지만, 신뢰 기반 모델의 내재적인 약점을 여전히 안고 있습니다. 금융 기관이 분쟁 중재를 피할 수 없기 때문에 완전히 되돌릴 수 없는 거래는 실제로 불가능합니다. 중재 비용은 거래 비용을 증가시켜 실질적인 최소 거래 규모를 제한하고 소액 소액 거래의 가능성을 차단하며, 비가역적 서비스에 대한 비가역적 결제 기능의 상실로 인해 더 큰 비용이 발생합니다. 되돌릴 수 있는 가능성으로 인해 신뢰에 대한 필요성이 확산됩니다. 판매자는 고객을 경계해야 하며, 고객에게 필요한 것보다 더 많은 정보를 번거롭게 요구할 수 있습니다. 일정 비율의 사기는 피할 수 없는 것으로 받아들여집니다. 실물 화폐를 사용하면 이러한 비용과 결제의 불확실성을 피할 수 있지만, 신뢰할 수 있는 상대방 없이 통신 채널을 통해 결제할 수 있는 메커니즘은 존재하지 않습니다.
    신뢰 대신 암호화 증명을 기반으로 하는 전자 결제 시스템이 필요하며, 이를 통해 신뢰할 수 있는 제3자 없이도 의향이 있는 두 당사자가 서로 직접 거래할 수 있습니다. 전산적으로 되돌릴 수 없는 거래는 판매자를 사기로부터 보호하고, 구매자를 보호하기 위해 일상적인 에스크로 메커니즘을 쉽게 구현할 수 있습니다. 이 백서에서는 P2P 분산 타임스탬프 서버를 사용하여 거래의 시간 순서에 대한 계산적 증명을 생성하는 이중 지출 문제에 대한 해결책을 제안합니다. 이 시스템은 정직한 노드가 협력하는 공격자 노드 그룹보다 더 많은 CPU 성능을 집단적으로 제어하는 한 안전합니다.

*실습

다음은 위의 요약과 서문을 기반으로 한 블록체인 제작 챗gpt용 프롬프트 입력 입니다

“러스트로 블록체인을 만들어줘. P2P 버전의 전자 현금을 사용 이중 지출 문제에 대한 해결책을 제안한다. 네트워크는 트랜잭션을 지속적인 체인에 해싱하여 타임스탬프 가장 긴 작업 증명 체인을 구현한다.”

제작 코드

extern crate chrono;
extern crate sha2;

use chrono::prelude::*;
use sha2::{Sha256, Digest};

struct Transaction {
    sender: String,
    recipient: String,
    amount: f32,
}

struct Block {
    timestamp: i64,
    transactions: Vec<Transaction>,
    previous_hash: Vec<u8>,
    hash: Vec<u8>,
    nonce: u32,
}

impl Block {
    fn new(transactions: Vec<Transaction>, previous_hash: Vec<u8>) -> Block {
        let timestamp = Utc::now().timestamp();
        let mut block = Block {
            timestamp,
            transactions,
            previous_hash,
            hash: vec![0; 32],
            nonce: 0,
        };
        block.hash = block.calculate_hash();
        block
    }

    fn calculate_hash(&mut self) -> Vec<u8> {
        let mut hasher = Sha256::new();
        hasher.update(format!("{}{:?}{}", self.timestamp, self.transactions, self.previous_hash));
        let mut hash_result = vec![0; 32];
        hasher.finalize(&mut hash_result);
        hash_result
    }

    fn mine_block(&mut self, difficulty: u32) {
        let target = vec![0; difficulty as usize];
        while &self.hash[..difficulty as usize] != target {
            self.nonce += 1;
            self.hash = self.calculate_hash();
        }
        println!("Block mined: {:?}", self);
    }
}

fn main() {
    let mut blockchain = vec![];
    let genesis_block = Block::new(vec![Transaction { sender: String::from("Genesis"), recipient: String::from("Alice"), amount: 100.0 }], vec![]);
    blockchain.push(genesis_block);
    let mut previous_block = blockchain[0].clone();
    let difficulty = 3;

    for i in 1..=5 {
        let transactions = vec![Transaction { sender: String::from("Alice"), recipient: String::from("Bob"), amount: 10.0 }];
        let mut new_block = Block::new(transactions, previous_block.hash.clone());
        new_block.mine_block(difficulty);
        blockchain.push(new_block.clone());
        previous_block = new_block;
    }
}

실행하기

cargo new bitcoinwhitepaper

이 명령어는 bitcoinwhitepaper라는 이름의 새로운 Rust 프로젝트를 생성합니다. 이제 bitcoinwhitepaper 폴더에 들어가서 src/main.rs 파일을 열어 위에서 작성한 코드를 복사하여 붙여넣고, 저장합니다.

이제 터미널에서 다음과 같은 명령어를 입력해 프로그램을 실행할 수 있습니다:

cargo run

실행 후 종속성 추가 등 오류는 해당 오류 메세지를 챗gpt에게 물어보시면서 해결하시면 됩니다.