code: func newCheckpointFromStr(checkpoint string) (chaincfg.Checkpoint, error) {
  	parts := strings.Split(checkpoint, ":")
  	if len(parts) != 2 {
  		return chaincfg.Checkpoint{}, fmt.Errorf("unable to parse "+
  			"checkpoint %q -- use the syntax <height>:<hash>",
  			checkpoint)
  	}
  
  	height, err := strconv.ParseInt(parts[0], 10, 32)
  	if err != nil {
  		return chaincfg.Checkpoint{}, fmt.Errorf("unable to parse "+
  			"checkpoint %q due to malformed height", checkpoint)
  	}
  
  	if len(parts[1]) == 0 {
  		return chaincfg.Checkpoint{}, fmt.Errorf("unable to parse "+
  			"checkpoint %q due to missing hash", checkpoint)
  	}
  	hash, err := chainhash.NewHashFromStr(parts[1])
  	if err != nil {
  		return chaincfg.Checkpoint{}, fmt.Errorf("unable to parse "+
  			"checkpoint %q due to malformed hash", checkpoint)
  	}
  
  	return chaincfg.Checkpoint{
  		Height: int32(height),
  		Hash:   hash,
  	}, nil
  }
docs: // newCheckpointFromStr parses checkpoints in the '<height>:<hash>' format.