An implementation of BlockStore that wraps some other implementation of
same. It forwards most behavior to its wrapped implementation, except when
reading blocks. In that case, if a block cannot be found locally, it will
attempt to fail-over by requesting the block from a configured IPFS gateway
API. If the block is found, it is added to local storage and then returned
as normal
A generic interface for interacting with an IPFS-like backend where it may
be desirable to syndicate sphere data to. Although the interface was
designed after a small subset of the capabilities of IPFS Kubo, it is
intended to be general enough to apply to other IPFS implementations.