Various Blockstore implementations are available.

Implementations

Example: BaseBlockstore

Provides a complete implementation of the Blockstore interface. You must implement .get, .put, etc.

import { BaseBlockstore } from 'blockstore-core/base'

class MyCustomBlockstore extends BaseBlockstore {
put (key, val, options) {
// store a block
}

get (key, options) {
// retrieve a block
}

// ...etc
}

Example: MemoryBlockstore

A simple Blockstore that stores blocks in memory.

import { MemoryBlockstore } from 'blockstore-core/memory'

const store = new MemoryBlockstore()

Example: BlackHoleBlockstore

A Blockstore that does not store any blocks.

import { BlackHoleBlockstore } from 'blockstore-core/black-hole'

const store = new BlackHoleBlockstore()

Example: TieredBlockstore

A tiered blockstore wraps one or more blockstores and will query each in parallel to retrieve a block - the operation will succeed if any wrapped store has the block.

Writes are invoked on all wrapped blockstores.

import { TieredBlockstore } from 'blockstore-core/tiered'

const store = new TieredBlockstore([
store1,
store2,
// ...etc
])

Example: IdentityBlockstore

An identity blockstore is one that deals exclusively in Identity CIDs - this is a special CID with the codec 0x00 where the multihash digest is the data that makes up the block.

import { IdentityBlockstore } from 'blockstore-core/identity'
import { CID } from 'multiformats/cid'

const blockstore = new IdentityBlockstore()

blockstore.has(CID.parse('QmFoo')) // false

blockstore.has(CID.parse('bafkqac3imvwgy3zao5xxe3de')) // true

References

Re-exports BaseBlockstore
Re-exports BlackHoleBlockstore
Re-exports MemoryBlockstore
Re-exports TieredBlockstore