The IPLD Data Model
Last updated
Last updated
IPLD defines a Data Model that details the forms that data can take in memory, and through which a codec transforms that memory to and from encoded bytes.
Like the JSON data model, the IPLD Data Model includes data which include Booleans, Strings, Ints, Floats, Null, Lists and Maps, but also adds and (CIDs).
The Data Model is how we reason about data moving through the various statesāin-memory, programmatic access and manipulation, and serialization to and from bytes for storage or transfers.
The data model defines a common representation of basic types that are easily representable by common programming languages and found in the most common and successful serialization formats.
Read more about the Data Model at
IPLD data is quantified in terms of nodes and blocks. A node is a point in a graph, while a block is a collective unit of data that is serialized and hashed to generate a content address (CIDs). Blocks typically include many nodes.
If we define an example block of data using JSON:
We can see 5 nodes:
The enclosing map
The key (the string "a"
)
The list
The first list value (the string "b"
)
The second list value (the string "c"
)
We refer to the different kinds of representable data in the Data Model as "kinds": Booleans, Strings, Ints, Floats, Null, Bytes, Lists, Maps and Links.
The 'recursive kinds' are Maps and Lists (since they can contain other kinds).
Read more about Nodes and their relationship to other IPLD concepts at
We use the term "kinds" here to disambiguate this from "types", which is a term we use at the level.
Read more about IPLD Kinds and specifics of what we expect regarding their bounds and representation at