code: func NewProvider() (ledger.PeerLedgerProvider, error) {
  	logger.Info("Initializing ledger provider")
  	// Initialize the ID store (inventory of chainIds/ledgerIds)
  	idStore := openIDStore(ledgerconfig.GetLedgerProviderPath())
  	ledgerStoreProvider := ledgerstorage.NewProvider()
  	// Initialize the history database (index for history of values by key)
  	historydbProvider := historyleveldb.NewHistoryDBProvider()
  	logger.Info("ledger provider Initialized")
  	provider := &Provider{idStore, ledgerStoreProvider,
  		nil, historydbProvider, nil, nil, nil, nil, nil, nil}
  	return provider, nil
  }
docs: // NewProvider instantiates a new Provider.
  // This is not thread-safe and assumed to be synchronized be the caller