input: Write a function to implement a simple blockchain system in Python by defining a Block class and related functions to create and print the blockchain, given a list of transactions.
  
  ### Function Implementation:
  
  import hashlib
  import json
  from datetime import datetime
  
  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()
  
      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()
  
  def create_genesis_block():
      # Manually construct a block with index zero and arbitrary previous hash
      return Block(0, datetime.now(), "Genesis Block", "0")
  
  def next_block(last_block, data):
      this_index = last_block.index + 1
      this_timestamp = datetime.now()
      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]
  
      # 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
      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}")
  
  # Example usage:
  blockchain_transactions = ["First transaction", "Second transaction", "Third transaction"]
  blockchain = create_blockchain(blockchain_transactions)
  print_blockchain(blockchain)
  
  
  ### Assertions:
  assert create_blockchain(["First transaction", "Second transaction", "Third transaction"])[0].hash == create_blockchain(["First transaction", "Second transaction", "Third transaction"])[0].hash
  assert create_blockchain(["First transaction", "Second transaction", "Third transaction"])[1].data == "Second transaction"
  assert create_blockchain(["First transaction", "Second transaction", "Third transaction"])[2].index == 2
output: 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}")