IPLD is a set of standards and implementations for creating decentralized data-structures that are universally addressable and linkable. These structures will allow us to do for data what URLs and links did for HTML web pages.
- Enter IPLD
- Docs
- Examples and Tutorials
- Tools
- Implementations
- New implementations
- Glossary
- Contribute
- License
Watch the Merkle Forest Talk
- ProtoSchool Tutorials:
- P2P data links with content addressing - An introduction to CIDs and the IPFS DAG API
- Blogging on the Decentralized Web - An intermediate coding challenge using CIDs to build and update a complex web of data with the IPFS DAG API
- Traversing IPLD graphs using the
ipfs dag
API: ipfs/js-ipfs/examples/traverse-ipld-graphs - IPLD search index for wikipedia-on-ipfs.org: magik6k/distributed-wiki-search
- Git IPLD/IPFS remote: magik6k/git-remote-ipld
- Using the Git IPLD plugin in go-ipfs: ipfs/go-ipfs/docs/plugins.md
- IPLD graph builder: ipld/js-ipld-graph-builder
- CLI for interacting with IPLD: tableflip/ipld-explorer-cli
- CID inspector: cid-utils.ipfs.team
Package | JavaScript | Go | Java |
---|---|---|---|
CID | ipld/js-cid | ipfs/go-cid | ipld/java-cid |
IPLD Node interface | ipld/interface-ipld-format | ipfs/go-ipld-format | |
IPLD Resolver | ipld/js-ipld-resolver | wip: ipfs/go-ipld-format#8 | |
CBOR (default) | ipld/js-ipld-dag-cbor | ipfs/go-ipld-cbor | ipld/java-ipld-cbor |
Merkledag/Protobuf (legacy) | ipld/js-ipld-dag-pb | wip: ipfs/go-ipld-format#8 | |
Raw | ipld/js-ipld-raw | wip: ipfs/go-ipld-format#8 | |
Unixfs v2 (planning: ipfs/unixfs-v2) | |||
Git | ipld/js-ipld-git | ipfs/go-ipld-git | |
Bitcoin | ipfs/go-ipld-btc | ||
Zcash | ipfs/go-ipld-zcash | ||
Ethereum | ipld/js-ipld-ethereum | ipfs/go-ipld-eth | |
Bencode | ipld/js-ipld-bencode | ||
Torrent info | ipld/js-ipld-torrent-info | ||
Torrent file | ipld/js-ipld-torrent-file | ||
IPLD Selectors (experimental) | ipld/js-ipld-selector |
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.
There are a variety of systems that use merkle-tree / content-addressing / hash-link / hash-chain inspired datastructures: e.g. Git, BitTorrent, IPFS, Tahoe-LAFS, SFS).
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-inspired, self-describing structured 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.
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 3.0 Unported License, © 2016 Protocol Labs Inc.