input: 
  def create_blockchain():
      """Create a basic blockchain system in Python. This function initializes a blockchain
      and provides methods to add blocks and retrieve the entire blockchain in JSON format.
  
      >>> blockchain = create_blockchain()
      >>> blockchain.add_block({'timestamp': '2023-10-01 12:00:00', 'data': 'First Block'})
      >>> blockchain.add_block({'timestamp': '2023-10-01 12:01:00', 'data': 'Second Block'})
      >>> blockchain.get_chain()
      '[{
        "index": 0,
        "timestamp": "2023-10-01 12:00:00",
        "data": "First Block",
        "previous_hash": null,
        "hash": "hash_of_first_block"
      },
      {
        "index": 1,
        "timestamp": "2023-10-01 12:01:00",
        "data": "Second Block",
        "previous_hash": "hash_of_first_block",
        "hash": "hash_of_second_block"
      }]'
      """
  
output:     
      class Blockchain:
          def __init__(self):
              self.chain = []
              self.create_genesis_block()
  
          def create_genesis_block(self):
              genesis_block = {
                  'index': 0,
                  'timestamp': '2023-10-01 12:00:00',
                  'data': 'Genesis Block',
                  'previous_hash': None,
                  'hash': 'hash_of_genesis_block'
              }
              self.chain.append(genesis_block)
  
          def add_block(self, block_data):
              previous_block = self.chain[-1]
              new_block = {
                  'index': len(self.chain),
                  'timestamp': block_data['timestamp'],
                  'data': block_data['data'],
                  'previous_hash': previous_block['hash'],
                  'hash': f'hash_of_block_{len(self.chain)}'
              }
              self.chain.append(new_block)
  
          def get_chain(self):
              import json
              return json.dumps(self.chain, indent=2)
  
      return Blockchain()
  