code: func (p *Provider) Init() error {
  
  	ctx := log.With(context.Background(), log.Str(log.ProviderName, "acme"))
  	logger := log.FromContext(ctx)
  
  	if p.ACMELogging {
  		legolog.Logger = fmtlog.New(logger.WriterLevel(logrus.InfoLevel), "legolog: ", 0)
  	} else {
  		legolog.Logger = fmtlog.New(ioutil.Discard, "", 0)
  	}
  
  	if len(p.Configuration.Storage) == 0 {
  		return errors.New("unable to initialize ACME provider with no storage location for the certificates")
  	}
  	p.Store = NewLocalStore(p.Configuration.Storage)
  
  	var err error
  	p.account, err = p.Store.GetAccount()
  	if err != nil {
  		return fmt.Errorf("unable to get ACME account : %v", err)
  	}
  
  	// Reset Account if caServer changed, thus registration URI can be updated
  	if p.account != nil && p.account.Registration != nil && !isAccountMatchingCaServer(ctx, p.account.Registration.URI, p.CAServer) {
  		logger.Info("Account URI does not match the current CAServer. The account will be reset.")
  		p.account = nil
  	}
  
  	p.certificates, err = p.Store.GetCertificates()
  	if err != nil {
  		return fmt.Errorf("unable to get ACME certificates : %v", err)
  	}
  
  	// Init the currently resolved domain map
  	p.resolvingDomains = make(map[string]struct{})
  
  	return nil
  }
docs: // Init for compatibility reason the BaseProvider implements an empty Init