code: func Marshal(md *ConfigMetadata) ([]byte, error) {
  	copyMd := proto.Clone(md).(*ConfigMetadata)
  	for _, c := range copyMd.Consenters {
  		// Expect the user to set the config value for client/server certs to the
  		// path where they are persisted locally, then load these files to memory.
  		clientCert, err := ioutil.ReadFile(string(c.GetClientTlsCert()))
  		if err != nil {
  			return nil, fmt.Errorf("cannot load client cert for consenter %s:%d: %s", c.GetHost(), c.GetPort(), err)
  		}
  		c.ClientTlsCert = clientCert
  
  		serverCert, err := ioutil.ReadFile(string(c.GetServerTlsCert()))
  		if err != nil {
  			return nil, fmt.Errorf("cannot load server cert for consenter %s:%d: %s", c.GetHost(), c.GetPort(), err)
  		}
  		c.ServerTlsCert = serverCert
  	}
  	return proto.Marshal(copyMd)
  }
docs: // Marshal serializes this implementation's proto messages. It is called by the encoder package
  // during the creation of the Orderer ConfigGroup.