분류 Python

Python을 사용하여 자신의 블록 체인을 만드는 방법

컨텐츠 정보

  • 조회 434 (작성일 )

본문

파이썬을 사용하여 자신 만의 암호 화폐를 만드는 방법


현재 암호 화폐의 등장으로 블록 체인은 기술 세계에서 화제가 되고 있습니다. 이 기술은 보안을 보장하고 분산화를 시행하며 여러 산업, 특히 금융 산업에 대한 프로세스를 가속화하는 능력으로 인해 많은 관심을 끌었습니다. 


기본적으로 블록 체인은 디지털 자산의 소유 및 전송을 돌이킬 수 없게 문서화하고 인증하는 공개 데이터베이스입니다. 비트 코인 및 이더 리움과 같은 디지털 통화는 이 개념을 기반으로 합니다. 블록 체인은 애플리케이션 기능을 변환하는 데 사용할 수 있는 흥미로운 기술입니다.


최근에 우리는 정부, 조직 및 개인이 블록 체인 기술을 사용하여 자체 암호 화폐를 생성하고 남는 것을 피하고 있습니다. 특히 페이스 북이 천칭 자리 (Libra)라고 하는 자체 암호 화폐를 제안했을 때,이 발표는 전 세계적으로 많은 물을 자극했습니다.


소송을 수행하고 자신의 버전의 암호 해독을 만들 수 있다면 어떨까요?


나는 이것에 대해 생각하고 암호를 만드는 알고리즘을 개발하기로 결정했습니다.


나는 cryptocurrency fccCoin을 호출하기로 결정했습니다.


이 튜토리얼에서는 디지털 통화를 구축하는 데 사용한 단계별 프로세스를 설명합니다 (Python 프로그래밍 언어의 객체 지향 개념을 사용했습니다).


다음은 fccCoin을 만들기 위한 블록 체인 알고리즘의 기본 청사진입니다.


class Block:

    def __init__():

    #first block class

        pass
    
    def calculate_hash():
    
    #calculates the cryptographic hash of every block
        
    
class BlockChain:
    
    def __init__(self):
     # constructor method
    pass
    
    def construct_genesis(self):
        # constructs the initial block
        pass

    def construct_block(self, proof_no, prev_hash):
        # constructs a new block and adds it to the chain
        pass

    @staticmethod
    def check_validity():
        # checks whether the blockchain is valid
        pass

    def new_data(self, sender, recipient, quantity):
        # adds a new transaction to the data of the transactions
        pass

    @staticmethod
    def construct_proof_of_work(prev_proof):
        # protects the blockchain from attack
        pass
   
    @property
    def last_block(self):
        # returns the last block in the chain
        return self.chain[-1]

이제 무슨 일이 일어나고 있는지 설명해 드리겠습니다…


1. 첫 번째 블록 class 만들기 


블록 체인은 서로 연결된 여러 블록으로 구성되어 있습니다.


블록 체인은 하나의 블록이 변조 되면 체인의 나머지 부분이 유효하지 않게 됩니다.


위의 개념을 적용하면서 다음과 같은 초기 블록 클래스를 만들었습니다.


import hashlib
import time

class Block:

    def __init__(self, index, proof_no, prev_hash, data, timestamp=None):
        self.index = index
        self.proof_no = proof_no
        self.prev_hash = prev_hash
        self.data = data
        self.timestamp = timestamp or time.time()

    @property
    def calculate_hash(self):
        block_of_string = "{}{}{}{}{}".format(self.index, self.proof_no,
                                              self.prev_hash, self.data,
                                              self.timestamp)

        return hashlib.sha256(block_of_string.encode()).hexdigest()

    def __repr__(self):
        return "{} - {} - {} - {} - {}".format(self.index, self.proof_no,
                                               self.prev_hash, self.data,
                                               self.timestamp)

위의 코드에서 볼 수 있듯이 __init __ () 함수를 정의했습니다.이 함수는 다른 Python 클래스와 마찬가지로 Block 클래스가 시작될 때 실행될 것입니다.



초기화 함수에 다음 매개 변수를 제공했습니다.

  • self— 이것은 Block 클래스의 인스턴스를 참조하여 클래스와 관련된 메소드와 속성에 액세스 할 수 있게 합니다.
  • index-블록 체인 내에서 블록의 위치를 ​​추적합니다.
  • proof_no-이것은 새로운 블록을 만드는 동안 생성 된 수입니다 (마이닝 이라고 함).
  • prev_hash— 체인 내 이전 블록의 해시를 나타냅니다.
  • data — 구매 수량과 같이 완료된 모든 거래에 대한 기록을 제공합니다.
  • timestamp — 거래에 대한 타임 스탬프를 배치합니다.