func (c *channel) NewQueryExecutor() (driver.QueryExecutor, error) {
	return c.vault.NewQueryExecutor()
}
NewQueryExecutor gives handle to a query executor.
A client can obtain more than one 'QueryExecutor's for parallel execution.
Any synchronization should be performed at the implementation level if required
package generic
import (
	"github.com/golang/protobuf/proto"
	"github.com/hyperledger/fabric-protos-go/common"
	"github.com/hyperledger/fabric-protos-go/peer"
	"github.com/hyperledger/fabric/protoutil"
	"github.com/hyperledger-labs/fabric-smart-client/platform/fabric/driver"
)
func (c *channel) NewRWSet(txid string) (driver.RWSet, error) {
	return c.vault.NewRWSet(txid)
}
func (c *channel) GetRWSet(txid string, rwset []byte) (driver.RWSet, error) {
	return c.vault.GetRWSet(txid, rwset)
}
func (c *channel) GetEphemeralRWSet(rwset []byte) (driver.RWSet, error) {
	return c.vault.InspectRWSet(rwset)
}