#multiformats #p2p #multi-format

nightly bin+lib iprs

Inter planetary specifications in rust-lang

1 unstable release

0.0.4 Oct 11, 2020

#1399 in Encoding

MIT license

315KB
6K SLoC

Documentation

Multiformats

A collection of protocols which aim to future-proof systems, today. They do this mainly by enhancing format values with self-description. This allows interoperability, protocol agility, and helps us avoid lock in.

The self-describing aspects of the protocols have a few stipulations:

  • They MUST be in-band (with the value); not out-of-band (in context).
  • They MUST avoid lock-in and promote extensibility.
  • They MUST be compact and have a binary-packed representation.
  • They MUST have a human-readable representation.

Unsigned-varint

VARiable INTeger format used in all the multiformats. The encoding is:

  • Unsigned integers are serialized 7 bits at a time, starting with the least significant bits.
  • The most significant bit (msb) in each output byte indicates if there is a continuation byte (msb = 1).
  • There are no signed integers.
  • Integers are minimally encoded.

Refer unsigned-varint spec for details.

Multibase

Base encoding is converting binary-data to plain-text. There are several base-encoding definitions that can convert binary-data to a small subset of, typically, ASCII code. Purpose,

  • Printable character set.
  • A bridge to backward-compatibility.
  • When a channel cannot, do-not, allow binary data.

Refer multibase for details.

Multicodec

Multicodec is an agreed-upon codec table. It is designed for use in binary representations, such as keys or identifiers (i.e CID). Find the canonical table of multicodecs at table.csv.

Refer multicodec spec for details.

Reference:

List of active multiformat specification(s).

There are other implementations that can suite your need better:

Dependencies

~9–23MB
~332K SLoC