input: from typing import Dict, List
  
  
  def validate_blockchain(blockchain: 'Blockchain') -> bool:
      """
      Validate the given blockchain by checking if each block's hash is correctly 
      calculated and if the previous_hash of each block matches the hash of the 
      previous block.
      
      >>> # Create a new blockchain and add some blocks
      >>> block_data1 = {'timestamp': '2023-01-01 12:00:00', 'data': 'Transaction 1'}
      >>> block_data2 = {'timestamp': '2023-01-02 12:00:00', 'data': 'Transaction 2'}
      >>> my_blockchain = Blockchain()
      >>> my_blockchain.add_block(block_data1)
      >>> my_blockchain.add_block(block_data2)
      >>> validate_blockchain(my_blockchain)
      True
      """
      chain = blockchain.chain
      
      for i in range(1, len(chain)):
          current_block = chain[i]
          previous_block = chain[i - 1]
          
          # Check if the previous_hash of the current block matches the hash of the previous block
          if current_block.previous_hash != previous_block.hash:
              return False
          
          # Check if the block's own hash is correctly calculated
          if current_block.hash != sha256(f'{current_block.index}{current_block.timestamp}{current_block.data}{current_block.previous_hash}'):
              return False
      
      return True
output:     chain = blockchain.chain
      
      for i in range(1, len(chain)):
          current_block = chain[i]
          previous_block = chain[i - 1]
          
          # Check if the previous_hash of the current block matches the hash of the previous block
          if current_block.previous_hash != previous_block.hash:
              return False
          
          # Check if the block's own hash is correctly calculated
          if current_block.hash != sha256(f'{current_block.index}{current_block.timestamp}{current_block.data}{current_block.previous_hash}'.encode()).hexdigest():
              return False
      
      return True