func NewProvider(channelID string, cfgServiceProvider config.SidetreeService, offLedgerProvider common.OffLedgerClientProvider) *Provider {
	p := &Provider{
		channelID:         channelID,
		cfgService:        cfgServiceProvider,
		offLedgerProvider: offLedgerProvider,
	}
	p.cache = gcache.New(0).LoaderFunc(func(namespace interface{}) (i interface{}, err error) {
		return p.createClient(namespace.(string))
	}).Build()
	return p
}
NewProvider returns a new operation store client provider
package store
import (
	"crypto"
	"hash"
	"github.com/bluele/gcache"
	commonledger "github.com/hyperledger/fabric/common/ledger"
	mh "github.com/multiformats/go-multihash"
	"github.com/trustbloc/fabric-peer-ext/pkg/collections/client"
	"github.com/trustbloc/sidetree-fabric/pkg/config"
	"github.com/trustbloc/sidetree-fabric/pkg/context/common"
)
type Provider struct {
	channelID         string
	cfgService        config.SidetreeService
	offLedgerProvider common.OffLedgerClientProvider
	cache             gcache.Cache
}