input: Write a function that constructs a simple blockchain system in Python and provides functionalities to create the blockchain, print the blockchain, and define the Block class. The function should not take any input and return the blockchain.
  
  assert create_blockchain() == ["Block(0, timestamp, Genesis Block, 00000000000000000000000000000)", "Block(1, timestamp, data1, hash1)", "Block(2, timestamp, data2, hash2)"]
  assert print_blockchain() == None
  assert create_blockchain() == ["Block(0, timestamp, Genesis Block, 00000000000000000000000000000)", "Block(1, timestamp, data1, hash1)", "Block(2, timestamp, data2, hash2)"]
output: 
  def create_blockchain():
      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):
              return f"hash{self.index}"
          
          def __repr__(self):
              return f"Block({self.index}, {self.timestamp}, {self.data}, {self.previous_hash})"
      
      blockchain = []
      blockchain.append(Block(0, "timestamp", "Genesis Block", "00000000000000000000000000000"))
      blockchain.append(Block(1, "timestamp", "data1", blockchain[0].hash))
      blockchain.append(Block(2, "timestamp", "data2", blockchain[1].hash))
      
      return [str(block) for block in blockchain]
  
  def print_blockchain():
      blockchain = create_blockchain()
      for block in blockchain:
          print(block)
  