code: func (n *Network) CreateChannelFail(channelName string, o *Orderer, p *Peer, additionalSigners ...interface{}) {
  	channelCreateTxPath := n.CreateChannelTxPath(channelName)
  
  	for _, signer := range additionalSigners {
  		switch t := signer.(type) {
  		case *Peer:
  			sess, err := n.PeerAdminSession(t, commands.SignConfigTx{
  				File: channelCreateTxPath,
  			})
  			Expect(err).NotTo(HaveOccurred())
  			Eventually(sess, n.EventuallyTimeout).Should(gexec.Exit(0))
  		case *Orderer:
  			sess, err := n.OrdererAdminSession(t, p, commands.SignConfigTx{
  				File: channelCreateTxPath,
  			})
  			Expect(err).NotTo(HaveOccurred())
  			Eventually(sess, n.EventuallyTimeout).Should(gexec.Exit(0))
  		default:
  			panic("unknown signer type, expect Peer or Orderer")
  		}
  	}
  
  	createChannelFail := func() int {
  		sess, err := n.PeerAdminSession(p, commands.ChannelCreate{
  			ChannelID:   channelName,
  			Orderer:     n.OrdererAddress(o, ListenPort),
  			File:        channelCreateTxPath,
  			OutputBlock: "/dev/null",
  		})
  		Expect(err).NotTo(HaveOccurred())
  		return sess.Wait(n.EventuallyTimeout).ExitCode()
  	}
  
  	Eventually(createChannelFail, n.EventuallyTimeout).ShouldNot(Equal(0))
  }
docs: // CreateChannelFail will submit an existing create channel transaction to the
  // specified orderer, but expect to FAIL. The channel transaction must exist
  // at the location returned by CreateChannelTxPath.
  //
  // The orderer must be running when this is called.