input: 
  def create_basic_blockchain() -> Blockchain:
      """
      Create and return an instance of a basic blockchain using only the core modules in Python.
      >>> blockchain = create_basic_blockchain()
      >>> assert isinstance(blockchain, Blockchain)
      """
  
output:     
      class Block:
          def __init__(self, index, previous_hash, timestamp, data, hash):
              self.index = index
              self.previous_hash = previous_hash
              self.timestamp = timestamp
              self.data = data
              self.hash = hash
  
      class Blockchain:
          def __init__(self):
              self.chain = [self.create_genesis_block()]
  
          def create_genesis_block(self):
              return Block(0, "0", time.time(), "Genesis Block", self.calculate_hash(0, "0", time.time(), "Genesis Block"))
  
          def calculate_hash(self, index, previous_hash, timestamp, data):
              return hashlib.sha256(f"{index}{previous_hash}{timestamp}{data}".encode()).hexdigest()
  
          def add_block(self, data):
              previous_block = self.chain[-1]
              index = previous_block.index + 1
              timestamp = time.time()
              hash = self.calculate_hash(index, previous_block.hash, timestamp, data)
              new_block = Block(index, previous_block.hash, timestamp, data, hash)
              self.chain.append(new_block)
  
      import time
      import hashlib
  
      blockchain = Blockchain()
      return blockchain
  