input: Write a function to create a basic blockchain using only the core Python modules. The function should include methods to initialize the blockchain, create a new block, get the current timestamp, and hash a block. The function should also include appropriate test cases to verify its functionality.
  assert Blockchain().hash_block({}) == 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'
  assert Blockchain().create_block(0, '0')['block_number'] == 1
  assert isinstance(Blockchain()._current_timestamp(), int) == True
  assert len(Blockchain().chain) == 0
output: def __init__(self):
      self.chain = []
      self.current_transactions = []
      self.new_block(previous_hash='1', proof=100)
  
  def create_block(self, proof, previous_hash):
      block = {
          'block_number': len(self.chain) + 1,
          'timestamp': self._current_timestamp(),
          'transactions': self.current_transactions,
          'proof': proof,
          'previous_hash': previous_hash or self.hash_block(self.chain[-1]),
      }
      self.current_transactions = []
      self.chain.append(block)
      return block
  
  def _current_timestamp(self):
      return int(time.time())
  
  def hash_block(self, block):
      block_string = json.dumps(block, sort_keys=True).encode()
      return hashlib.sha256(block_string).hexdigest()