go-hamt-ipld
go-hamt-ipld copied to clipboard
An implementation of a HAMT using ipld
Ref: https://github.com/whyrusleeping/cbor-gen/pull/92
This PR is a direct continuation of the excellent work done by @aschmahmann here: https://github.com/filecoin-project/go-hamt-ipld/pull/103. It ties things off by working with a `GetMany` go-ipld-cbor store introduced in https://github.com/ipfs/go-ipld-cbor/pull/97, making...
This is an implementation of a parallel traversal of the HAMT. It's mostly copied from https://github.com/ipfs/go-unixfs/blob/323bb63cafa93c5bdd10170f35b96327760d7c1a/hamt/hamt.go#L402. There are a few pieces of this that are obviously wrong or non-optimal (e.g....
* The structure of the `ipld.NodePrototype` is a bit janky. Would be interested in suggestions on how to make that cleaner. * This doesn't support the fully life-cycle of `NodeBuilder`/`NodeAssembler`,...
WIP using and extending existing benchmarks to help tune filecoin hamt parameters.
As of https://github.com/filecoin-project/go-amt-ipld/pull/38 the AMT stores the bitwidth in the root node. Knowledge of the bitwidth is necessary to correctly interpret the blocks, so storing it makes the structure more...
Is it ok that an inconsistently setup HAMT will cause a panic? The pointer returned [here](https://github.com/ipfs/go-hamt-ipld/blob/master/hamt.go#L81) is dereferenced without nil checking. An inconsistent setup is actually checked earlier within the...
In https://github.com/ipld/specs/pull/282 I'm claiming that the `map` (`bitfield`) is addressed here in the same way as the specification, and therefore the reference implementation for the IPLD HashMap. The [spec](https://github.com/ipld/specs/blob/master/data-structures/hashmap.md) currently...
Should have usages and examples and a description of the algorithm, benchmark results, etc
There are several parameters in the hamt that we can tweak depending on what our desired outcomes are. Let's start by brainstorming the metrics, then we can build benchmarks to...