import hashlib
import time

class Blockchain:
    def __init__(self):
        self.chain = []
        self.add_block("Genesis Block", "1")

    def add_block(self, data, previous_hash):
        block = {
            "index": len(self.chain) + 1,
            "time": time.time(),
            "data": data,
            "previous_hash": previous_hash
        }

        block["hash"] = hashlib.sha256(
            str(block).encode()
        ).hexdigest()

        self.chain.append(block)


class Client:
    def __init__(self, name):
        self.name = name

    def send(self, blockchain, receiver, amount):
        data = f"{self.name} -> {receiver}: {amount} toys"
        blockchain.add_block(data, blockchain.chain[-1]["hash"])


# Create blockchain
blockchain = Blockchain()

# Create 3 clients
alice = Client("Alice")
bob = Client("Bob")
charlie = Client("Charlie")

# Transactions
alice.send(blockchain, "Bob", 10)
bob.send(blockchain, "Charlie", 5)
charlie.send(blockchain, "Alice", 7)

# Display blockchain
for block in blockchain.chain:
    print("Block:", block["index"])
    print("Data:", block["data"])
    print("Hash:", block["hash"])
    print("Previous Hash:", block["previous_hash"])
    print("----------------")