code: func (c *Challenge) PreSolve(authz acme.Authorization) error {
  	domain := challenge.GetTargetedDomain(authz)
  	log.Infof("[%s] acme: Preparing to solve DNS-01", domain)
  
  	chlng, err := challenge.FindChallenge(challenge.DNS01, authz)
  	if err != nil {
  		return err
  	}
  
  	if c.provider == nil {
  		return fmt.Errorf("[%s] acme: no DNS Provider configured", domain)
  	}
  
  	// Generate the Key Authorization for the challenge
  	keyAuth, err := c.core.GetKeyAuthorization(chlng.Token)
  	if err != nil {
  		return err
  	}
  
  	err = c.provider.Present(authz.Identifier.Value, chlng.Token, keyAuth)
  	if err != nil {
  		return fmt.Errorf("[%s] acme: error presenting token: %s", domain, err)
  	}
  
  	return nil
  }
docs: // PreSolve just submits the txt record to the dns provider.
  // It does not validate record propagation, or do anything at all with the acme server.