InterPlanetary Linked Data
Note that, as in many IPFS repositories, most of the work is happening in the issues or in active pull requests. Go take a look!
There are a variety of systems that use merkle-tree and hash-chain inspired datastructures (e.g. git, bittorrent, IPFS, tahoe-lafs, sfsro). IPLD defines:
- merkle-links: the core unit of a merkle-graph
- merkle-dag: any graphs whose edges are merkle-links.
- merkle-paths: unix-style paths for traversing merkle-dags with named merkle-links
- IPLD Data Model: a flexible, JSON-based data model for representing merkle-dags.
- IPLD Serialized Formats: a set of formats in which IPLD objects can be represented, for example JSON, CBOR, CSON, YAML, Protobuf, XML, RDF, etc.
- IPLD Canonical Format: a deterministic description on a serialized format that ensures the same logical object is always serialized to the exact same sequence of bits. This is critical for merkle-linking, and all cryptographic applications.
In short: JSON documents with named merkle-links that can be traversed.
IPLD is a multifaceted, distributed effort.
- specs - The specifications for IPLD
- cid - Self-describing content-addressed identifiers for distributed systems
IPLD has multiple types of implementations, some of which have been written in multiple languages.
- js-ipld-dag-cbor - JavaScript implementation of the IPLD spec.
- js-ipld-dag-pb - JavaScript Implementation of the MerkleDAG Nodes with Protobuf.
- js-ipld-eth-block - JavaScript Implementation of the IPLD format - Ethereum Block
- go-ipld-btc
- go-ipld-zcash
- go-ipld-cbor
- go-ipld-git
- go-ipld-node
- interface-ipld-format - A interface you can follow to implement a valid IPLD format, resolvable through the IPLD Resolver (available in IPFS)
- js-ipld-resolver - JavaScript implementation of the IPLDService
- Go: ipfs/go-ipld - The Go implementation of IPLD (deprecated).
Are you working on your own implementation in another language? Open an issue in this repository to discuss it with others, find help, and coordinate efforts. Eventually, we can move it to the organization if you like, add it above, and mention it on the website.
- js-ipld-cli - Interact with IPLD on the command line
Please contribute! Look at the issues!
Check out our contributing document for more information on how we work, and about contributing in general. Please be aware that all interactions related to IPLD are subject to the IPFS Code of Conduct.
Small note: If editing the README, please conform to the standard-readme specification.
This repository is mainly documents. All of these are licensed under a CC-BY-SA 3.0 license, © 2016 Protocol Labs Inc.