func NewMultiAppConn(clientCreator ClientCreator, handshaker Handshaker) *multiAppConn {
	multiAppConn := &multiAppConn{
		handshaker:    handshaker,
		clientCreator: clientCreator,
	}
	multiAppConn.BaseService = *cmn.NewBaseService(nil, "multiAppConn", multiAppConn)
	return multiAppConn
}
Make all necessary abci connections to the application
package proxy
import (
	"github.com/pkg/errors"
	cmn "github.com/tendermint/tendermint/libs/common"
)
type AppConns interface {
	cmn.Service
	Mempool() AppConnMempool
	Consensus() AppConnConsensus
	Query() AppConnQuery
}
func NewAppConns(clientCreator ClientCreator, handshaker Handshaker) AppConns {
	return NewMultiAppConn(clientCreator, handshaker)
}
type Handshaker interface {
	Handshake(AppConns) error
}
type multiAppConn struct {
	cmn.BaseService
	handshaker Handshaker
	mempoolConn   *appConnMempool
	consensusConn *appConnConsensus
	queryConn     *appConnQuery
	clientCreator ClientCreator
}