input: Write a function to create a basic blockchain in Python using only the core modules. The function should initialize an empty chain and a list of transactions. It should also include methods to create a new block and hash a block using the SHA-256 algorithm.
  
  
  import hashlib
  import json
  import time
  
  class Blockchain:
  
      def __init__(self):
          self.chain = []
          self.transactions = []
  
      def create_block(self, nonce, previous_hash):
          block = {
              'block_number': len(self.chain) + 1,
              'timestamp': self._current_timestamp(),
              'nonce': nonce,
              'previous_hash': previous_hash
          }
          self.chain.append(block)
          return block
  
      def _current_timestamp(self):
          return round(time.time() * 1000)
  
      def hash_block(self, block):
          string_object = json.dumps(block, sort_keys=True)
          block_string = string_object.encode()
          raw_hash = hashlib.sha256(block_string)
          hex_hash = raw_hash.hexdigest()
          return hex_hash
  
  
  assert isinstance(Blockchain(), Blockchain) == True
  assert Blockchain().create_block(1, "0")['block_number'] == 1
  assert len(Blockchain().chain) == 0
  assert len(Blockchain().transactions) == 0
  
output: def __init__(self):
      self.chain = []
      self.transactions = []
  
  def create_block(self, nonce, previous_hash):
      block = {
          'block_number': len(self.chain) + 1,
          'timestamp': self._current_timestamp(),
          'nonce': nonce,
          'previous_hash': previous_hash
      }
      self.chain.append(block)
      return block
  
  def _current_timestamp(self):
      return round(time.time() * 1000)
  
  def hash_block(self, block):
      string_object = json.dumps(block, sort_keys=True)
      block_string = string_object.encode()
      raw_hash = hashlib.sha256(block_string)
      hex_hash = raw_hash.hexdigest()
      return hex_hash