import hashlib
import time

def demo_miner(block_number, transactions, previous_hash, difficulty):
    """
    Упрощенная модель процесса майнинга.
    difficulty: количество нулей, с которых должен начинаться хеш.
    """
    prefix = '0' * difficulty
    nonce = 0

    print(f'Майнинг блока {block_number} начат...')
    start_time = time.time()

    while True:
        # Формируем строку из данных блока и переменной nonce
        text = str(block_number) + transactions + previous_hash + str(nonce)

        # Вычисляем SHA-256 хеш
        hash_result = hashlib.sha256(text.encode('utf-8')).hexdigest()

        # Проверяем, соответствует ли хеш заданной сложности
        if hash_result.startswith(prefix):
            total_time = time.time() - start_time
            print(f'Блок найден! Nonce: {nonce}')
            print(f'Хеш: {hash_result}')
            print(f'Время: {total_time:.2f} секунд')
            return hash_result

        nonce += 1

# Пример данных
example_transactions = "Alice -> Bob: 0.5 BTC, Charlie -> Dave: 0.1 BTC"
prev_block_hash = "00000000000000000007d0d981880117639d338c466b07449553f192b49b2521"
difficulty_level = 5  # Попробуйте увеличить это число, чтобы замедлить процесс

demo_miner(1, example_transactions, prev_block_hash, difficulty_level)