Реализовать механизм блокчейна для простого приложения.

Реализация механизма блокчейна для простого приложения

Задание: Разработать базовую структуру блокчейна, которая позволит вести непрерывную цепочку данных с помощью хэширования.

import hashlib
import json
from time import time

class Blockchain:
    def __init__(self):
        self.chain = []
        self.pending_transactions = []
        self.new_block(previous_hash="The Times 03/Jan/2009 Chancellor on brink of second bailout for banks", proof=100)

    def new_block(self, proof, previous_hash=None):
        block = {
            'index': len(self.chain) + 1,
            'timestamp': time(),
            'transactions': self.pending_transactions,
            'proof': proof,
            'previous_hash': previous_hash or self.hash(self.chain[-1]),
        }
        self.pending_transactions = []
        self.chain.append(block)
        return block

    def new_transaction(self, sender, recipient, amount):
        self.pending_transactions.append({
            'sender': sender,
            'recipient': recipient,
            'amount': amount,
        })
        return self.last_block['index'] + 1

    @property
    def last_block(self):
        return self.chain[-1]

    @staticmethod
    def hash(block):
        string_object = json.dumps(block, sort_keys=True)
        block_string = string_object.encode()
        raw_hash = hashlib.sha256(block_string)
        hex_hash = raw_hash.hexdigest()
        return hex_hash

# Пример использования
blockchain = Blockchain()
t1 = blockchain.new_transaction("Satoshi", "Mike", '5 BTC')
t2 = blockchain.new_transaction("Mike", "Satoshi", '1 BTC')
blockchain.new_block(12345)

print("Blockchain:", blockchain.chain)

Результат выполнения кода

Блокчейн успешно создан и инициализирован с начальным блоком. Транзакции были добавлены и зарегистрированы в новом блоке блокчейна.

В этом примере мы создали простой блокчейн, который начинается с генезис-блока и позволяет добавлять транзакции и блоки. Это основа для более сложных систем блокчейна, которые могут включать более сложные механизмы валидации и консенсуса.

Категория: Практические упражнения Python | Добавил: Admin (03.05.2024)
Просмотров: 23 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: