filecoin-project / venus

Filecoin Full Node Implementation in Go
https://venus.filecoin.io
Other
2.06k stars 461 forks source link

Document go-hamt-ipld CHAMP implementation #1268

Closed whyrusleeping closed 4 years ago

whyrusleeping commented 6 years ago

Description

We should document the details of the HAMT/CHAMP implementation we are using so that others can implement a compatible library in other languages (and even use it for other projects too).

This should likely be its own document, for now it can go in go-hamt-ipld as a file called spec.md.

I'm not yet sure how the structure of the document should look, but if you take this up, feel free to write it up as you see fit, and we can reorganize later.

Acceptance criteria

Someone should be able to, without looking at any go code, implement a fully compatible HAMT library from the spec document.

Risks + pitfalls

Where to begin

https://github.com/ipfs/go-hamt-ipld

Note: I can likely pick this one up if nobody else wants to, but I would very much appreciate a second set of eyes on the algorithms and datastructures. Having me write the canonical code and spec feels like a good way to bake in bad assumptions.

whyrusleeping commented 5 years ago

https://github.com/ipfs/go-hamt-ipld/issues/21