input: Write a function to create a simple blockchain system in Python that includes a Block class with methods for initializing a block and hashing its contents, a function to create the blockchain starting with a genesis block, and a function to print the blockchain. The blockchain should be constructed by adding blocks to the chain based on a provided list of transactions.
  
  
  import hashlib
  import json
  
  # Define the Block class
  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 blockchain
  def create_blockchain(blockchain_transactions):
   blockchain = [create_genesis_block()]
   previous_block = blockchain[0]
  
   # Add blocks for each item in the list of transactions
   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
  def print_blockchain(blockchain):
   for block in blockchain:
   block_index = str(block.index)
   block_timestamp = str(block.timestamp)
   block_data = str(block.data)
   block_hash = block.hash
   print(f'Block Index: {block_index}, Timestamp: {block_timestamp}, Data: {block_data}, Hash: {block_hash}')
  
  assert create_blockchain([{"data": "transaction1"}, {"data": "transaction2"}]) is not None
  assert print_blockchain(create_blockchain([{"data": "transaction1"}, {"data": "transaction2"}])) is None
  assert create_genesis_block().hash == Block(0, "01/01/2020", "Genesis Block", "0").hash_block()
  
output: 
  def create_genesis_block():
      return Block(0, "01/01/2020", "Genesis Block", "0")
  
  def next_block(last_block, data):
      this_index = last_block.index + 1
      this_timestamp = "01/01/2020"
      this_data = data
      this_hash = last_block.hash
      return Block(this_index, this_timestamp, this_data, this_hash)
  
  def create_blockchain(blockchain_transactions):
      blockchain = [create_genesis_block()]
      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
      return blockchain
  
  def print_blockchain(blockchain):
      for block in blockchain:
          block_index = str(block.index)
          block_timestamp = str(block.timestamp)
          block_data = str(block.data)
          block_hash = block.hash
          print(f'Block Index: {block_index}, Timestamp: {block_timestamp}, Data: {block_data}, Hash: {block_hash}')
  