code: func (o *Orderer) SendBroadcast(ctx reqContext.Context, envelope *fab.SignedEnvelope) (*common.Status, error) {
  	conn, err := o.conn(ctx)
  	if err != nil {
  		rpcStatus, ok := grpcstatus.FromError(err)
  		if ok {
  			return nil, errors.WithMessage(status.NewFromGRPCStatus(rpcStatus), "connection failed")
  		}
  
  		return nil, status.New(status.OrdererClientStatus, status.ConnectionFailed.ToInt32(), err.Error(), nil)
  	}
  	defer o.releaseConn(ctx, conn)
  
  	broadcastClient, err := ab.NewAtomicBroadcastClient(conn).Broadcast(ctx)
  	if err != nil {
  		rpcStatus, ok := grpcstatus.FromError(err)
  		if ok {
  			err = status.NewFromGRPCStatus(rpcStatus)
  		}
  		return nil, errors.Wrap(err, "NewAtomicBroadcastClient failed")
  	}
  
  	responses := make(chan common.Status)
  	errs := make(chan error, 1)
  
  	go broadcastStream(broadcastClient, responses, errs)
  
  	err = broadcastClient.Send(&common.Envelope{
  		Payload:   envelope.Payload,
  		Signature: envelope.Signature,
  	})
  	if err != nil {
  		return nil, errors.Wrap(err, "failed to send envelope to orderer")
  	}
  	if err = broadcastClient.CloseSend(); err != nil {
  		logger.Debugf("unable to close broadcast client [%s]", err)
  	}
  
  	return wrapStreamStatusRPC(responses, errs)
  }
docs: // SendBroadcast Send the created transaction to Orderer.