input: def create_blockchain(blockchain_transactions: list) -> list:
      """ Builds a simple blockchain system in Python. 
      The function initializes the blockchain with a genesis block, 
      then adds new blocks for each item in the provided list of transactions.
      Each block contains an index, a timestamp, data, and a hash of the previous block.
      
      Example:
      >>> create_blockchain([{"sender": "Alice", "receiver": "Bob", "amount": 10}, {"sender": "Bob", "receiver": "Charlie", "amount": 5}])
      [
          Block(index=0, timestamp='2023-01-01 00:00:00', data='Genesis Block', previous_hash='0', hash='4e90e23a3cd5bcd4d670152190464a72d0f9d50b85a7a3dbc087fd6a22e60ae3'),
          Block(index=1, timestamp='2023-01-01 00:00:10', data={"sender": "Alice", "receiver": "Bob", "amount": 10}, previous_hash='4e90e23a3cd5bcd4d670152190464a72d0f9d50b85a7a3dbc087fd6a22e60ae3', hash='bf97f8f034e25fa3b3f86e8d8b4f2b1ce61e9c5f5b5e9f8b1f3d3f4a9b0f6b2f'),
          Block(index=2, timestamp='2023-01-01 00:00:20', data={"sender": "Bob", "receiver": "Charlie", "amount": 5}, previous_hash='bf97f8f034e25fa3b3f86e8d8b4f2b1ce61e9c5f5b5e9f8b1f3d3f4a9b0f6b2f', hash='9c5e7f5f2e6e5f7f5f5f7f5f5f7f5f5f7f5f5f7f5f5f5f5f5f5f7f5f5f7f5f5f')
      ]
      """
output:     from hashlib import sha256
      from time import strftime, gmtime
  
      class Block:
          def __init__(self, index, timestamp, data, previous_hash):
              self.index = index
              self.timestamp = timestamp
              self.data = data
              self.previous_hash = previous_hash
              self.hash = self.calculate_hash()
  
          def calculate_hash(self):
              block_string = f"{self.index}{self.timestamp}{self.data}{self.previous_hash}".encode()
              return sha256(block_string).hexdigest()
  
      blockchain = []
      genesis_block = Block(0, strftime("%Y-%m-%d %H:%M:%S", gmtime()), "Genesis Block", "0")
      blockchain.append(genesis_block)
  
      for i, transaction in enumerate(blockchain_transactions):
          new_block = Block(i + 1, strftime("%Y-%m-%d %H:%M:%S", gmtime()), transaction, blockchain[-1].hash)
          blockchain.append(new_block)
  
      return blockchain