code: func Register(params *Params) error {
  	if _, ok := registeredNets[params.Net]; ok {
  		return ErrDuplicateNet
  	}
  	registeredNets[params.Net] = struct{}{}
  	pubKeyHashAddrIDs[params.PubKeyHashAddrID] = struct{}{}
  	scriptHashAddrIDs[params.ScriptHashAddrID] = struct{}{}
  	hdPrivToPubKeyIDs[params.HDPrivateKeyID] = params.HDPublicKeyID[:]
  
  	// A valid Bech32 encoded segwit address always has as prefix the
  	// human-readable part for the given net followed by '1'.
  	bech32SegwitPrefixes[params.Bech32HRPSegwit+"1"] = struct{}{}
  	return nil
  }
docs: // Register registers the network parameters for a Bitcoin network.  This may
  // error with ErrDuplicateNet if the network is already registered (either
  // due to a previous Register call, or the network being one of the default
  // networks).
  //
  // Network parameters should be registered into this package by a main package
  // as early as possible.  Then, library packages may lookup networks or network
  // parameters based on inputs and work regardless of the network being standard
  // or not.