code: func (pool *TxPool) checkMinedTxs(ctx context.Context, hash common.Hash, number uint64, txc txStateChanges) error {
  	// If no transactions are pending, we don't care about anything
  	if len(pool.pending) == 0 {
  		return nil
  	}
  	block, err := GetBlock(ctx, pool.odr, hash, number)
  	if err != nil {
  		return err
  	}
  	// Gather all the local transaction mined in this block
  	list := pool.mined[hash]
  	for _, tx := range block.Transactions() {
  		if _, ok := pool.pending[tx.Hash()]; ok {
  			list = append(list, tx)
  		}
  	}
  	// If some transactions have been mined, write the needed data to disk and update
  	if list != nil {
  		// Retrieve all the receipts belonging to this block and write the loopup table
  		if _, err := GetBlockReceipts(ctx, pool.odr, hash, number); err != nil { // ODR caches, ignore results
  			return err
  		}
  		rawdb.WriteTxLookupEntries(pool.chainDb, block)
  
  		// Update the transaction pool's state
  		for _, tx := range list {
  			delete(pool.pending, tx.Hash())
  			txc.setState(tx.Hash(), true)
  		}
  		pool.mined[hash] = list
  	}
  	return nil
  }
docs: // checkMinedTxs checks newly added blocks for the currently pending transactions
  // and marks them as mined if necessary. It also stores block position in the db
  // and adds them to the received txStateChanges map.