This repository provides a mechanism for constructing multiple, isolated, IPFS storage instances (blockstore, filestore, DAGService) on top of a single go-datastore instance.
You may want to familiarize yourself with various IPFS storage layer components:
go get "github.com/filecoin-project/go-multistore"`
Initialize multistore:
var ds datastore.Batching
multiDs, err := multistore.NewMultiDstore(ds)
Create new store:
next := multiDs.Next()
store, err := multiDs.Get(store)
// store will have a blockstore, filestore, and DAGService
List existing store indexes:
indexes := multiDs.List()
Delete a store (will delete all data in isolated store without touching the rest of the datastore):
var index int
err := multiDs.Delete(index)
Shutdown (make sure everything is closed):
multiDs.Close()
Issues and PRs are welcome! Please first read the background reading and CONTRIBUTING guide, and look over the current code. PRs against master require approval of at least two maintainers.
Day-to-day discussion takes place in the #fil-components channel of the Filecoin project chat. Usage or design questions are welcome.
The filecoin-project has a community repo with more detail about our resources and policies, such as the Code of Conduct.
This repository is dual-licensed under Apache 2.0 and MIT terms.
Copyright 2020. Protocol Labs, Inc.