input: 
  def create_blockchain() -> Blockchain:
      """ Creates a simple blockchain with basic functionalities such as creating a block, 
      getting the current timestamp, and hashing a block.
      >>> blockchain = create_blockchain()
      >>> blockchain.create_block(5, '0')
      {'block_number': 1, 'timestamp': <current_timestamp>, 'nonce': 5, 'previous_hash': '0'}
      >>> blockchain.hash_block({'block_number': 1, 'timestamp': <current_timestamp>, 'nonce': 5, 'previous_hash': '0'})
      '<encoded_hash>'
      """
      return Blockchain()
  
output:     
      class Blockchain:
          def __init__(self):
              self.chain = []
              self.current_block = None
          
          def create_block(self, nonce: int, previous_hash: str) -> dict:
              block = {
                  'block_number': len(self.chain) + 1,
                  'timestamp': self.get_current_timestamp(),
                  'nonce': nonce,
                  'previous_hash': previous_hash
              }
              self.current_block = block
              self.chain.append(block)
              return block
          
          def get_current_timestamp(self) -> str:
              return datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
          
          def hash_block(self, block: dict) -> str:
              block_string = json.dumps(block, sort_keys=True).encode()
              return hashlib.sha256(block_string).hexdigest()
  