input: Write a function to create a basic blockchain in Python using only the core modules. The function should include methods to initialize the blockchain, create new blocks, and hash blocks. If the input is not applicable, return the created blockchain object.
  assert create_blockchain() is not None
  assert hasattr(create_blockchain(), 'chain')
  assert hasattr(create_blockchain(), 'transactions')
  assert hasattr(create_blockchain(), 'create_block')
  assert hasattr(create_blockchain(), 'hash_block')
output: class Block:
      def __init__(self, index, previous_hash, transactions):
          self.index = index
          self.previous_hash = previous_hash
          self.transactions = transactions
          self.timestamp = time.time()
          self.hash = self.calculate_hash()
  
      def calculate_hash(self):
          block_string = f"{self.index}{self.previous_hash}{self.timestamp}{self.transactions}"
          return hashlib.sha256(block_string.encode()).hexdigest()
  
  class Blockchain:
      def __init__(self):
          self.chain = [self.create_genesis_block()]
          self.transactions = []
  
      def create_genesis_block(self):
          return Block(0, "0", ["Genesis Block"])
  
      def create_block(self, transactions):
          new_block = Block(len(self.chain), self.chain[-1].hash, transactions)
          self.chain.append(new_block)
          return new_block
  
      def hash_block(self, block):
          return block.hash
  
  def create_blockchain():
      return Blockchain()