input: 
  from typing import List
  
  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.hash_block()
  
      # Create the hash of the block contents
      def hash_block(self):
          sha = hashlib.sha256()
          sha.update((str(self.index) +
                      str(self.timestamp) +
                      str(self.data) +
                      str(self.previous_hash)).encode('utf-8'))
          return sha.hexdigest()
  
  # Create the genesis block
  def create_genesis_block():
      return Block(0, "01/01/2023", "Genesis Block", "0")
  
  # Create the next block in the chain
  def next_block(previous_block, data):
      this_index = previous_block.index + 1
      this_timestamp = "01/01/2023"
      this_data = data
      this_hash = previous_block.hash
      return Block(this_index, this_timestamp, this_data, this_hash)
  
  # Create the blockchain
  blockchain = [create_genesis_block()]
  blockchain_transactions = ["Transaction1", "Transaction2", "Transaction3"]
  
  # Add blocks for each item in the list of transactions
  previous_block = blockchain[0]
  
  for i in range(1, len(blockchain_transactions)):
      block_to_add = next_block(previous_block, blockchain_transactions[i])
      blockchain.append(block_to_add)
      previous_block = block_to_add
  
  # Print the blockchain
  for block in blockchain:
      print(f"Block #{block.index} [Data: {block.data}, Timestamp: {block.timestamp}, Hash: {block.hash}, PreviousHash: {block.previous_hash}]")
  
output:     for i in range(1, len(blockchain_transactions)):
          block_to_add = next_block(previous_block, blockchain_transactions[i])
          blockchain.append(block_to_add)
          previous_block = block_to_add
  
      # Print the blockchain
      for block in blockchain:
          print(f"Block #{block.index} [Data: {block.data}, Timestamp: {block.timestamp}, Hash: {block.hash}, PreviousHash: {block.previous_hash}]")