code: def sync_blockchain( working_dir, bt_opts, last_block, server_state, expected_snapshots={}, **virtualchain_args ):
      
      
      subdomain_index = server_state['subdomains']
      atlas_state = server_state['atlas']
      
      # make this usable even if we haven't explicitly configured virtualchain 
      impl = sys.modules[__name__]
      log.info("Synchronizing database {} up to block {}".format(working_dir, last_block))
  
      # NOTE: this is the only place where a read-write handle should be created,
      # since this is the only place where the db should be modified.
      new_db = BlockstackDB.borrow_readwrite_instance(working_dir, last_block, expected_snapshots=expected_snapshots)
  
      # propagate runtime state to virtualchain callbacks
      new_db.subdomain_index = subdomain_index
      new_db.atlas_state = atlas_state
      
      rc = virtualchain.sync_virtualchain(bt_opts, last_block, new_db, expected_snapshots=expected_snapshots, **virtualchain_args)
      
      BlockstackDB.release_readwrite_instance(new_db, last_block)
  
      return rc
docs: synchronize state with the blockchain.
      Return True on success
      Return False if we're supposed to stop indexing
      Abort on error