These describe roots & nodes of a merkle tree, not the underlying
data. In the case of CommP and CommD they are binary merkle trees
using sha2-256-trunc2. For CommR they are novel structure merkle
trees using poseidon-bls12_381-a2-fc1.
All nodes of the respective merkle trees could also be described
using this codec if required, all the way to base data. It is
anticipated that the primary use will be restricted to the roots.
Ref: https://github.com/multiformats/multicodec/pull/161Closes: #161Closes: #167
Reserving the 0xb400 range for Poseidon variants, allowing FIL to
iterate on the `fcX` extension of the name where they stay with
BLS12-381 and arity=2. High security variant is for extra circuits
that are usable in case new attacks arise from the standard variant.
Ref: https://github.com/multiformats/multicodec/pull/161
Ref: https://eprint.iacr.org/2019/458.pdf
* Renamed from blake3-256 to blake3. We only need a single code because shorter hashes are just prefixes of longer hashes.
* Changed the code to 0x0202. This will turn into a two byte code, the previous code was 3 bytes when encoded. The other blake algorithms are in the 3 byte range because we needed _many_ codes.
That way, we can always tell if something is a path or something else.
We may also be able to take advantage of this later to combine a few
concepts and get rid of the "multiaddrs look like paths but are totally not"
problem. However, we can think about that later. This PR just reserves the code
so we don't run into problems later.
* Remove the distinction between string/binary multiaddrs. Instead, the "string"
will *also* be a valid binary multiaddr.
* Define a new multipath spec to combine multiaddrs and other paths.
Related to: https://github.com/multiformats/multiaddr/issues/70