Explore Merkle DAGs at ProtoSchool

by Teri Chadbourne on 2021-01-14

The ProtoSchool team is pleased to announce the launch of a shiny new multiple-choice tutorial on Merkle DAGs, the cornerstone of our freshly launched IPLD (InterPlanetary Data) course. 🎉

This new content is inspired by feedback on our Decentralized Data Structures tutorial, which originally explored both content addressing and data structures. Based on learner feedback, we’ve split the content in two! You’ll now find the majority of our original content in our rebranded tutorial, Content Addressing on the Decentralized Web, which highlights the key differences in how data is shared and retrieved on the centralized web and decentralized web. Meanwhile, our brand new tutorial, Merkle DAGs: Structuring Data for the Distributed Web, is chock full of new content exploring the intricacies of the magical data structure that much of the decentralized web relies on.

Merkle DAG diagram

In IPFS, as across the decentralized web, content addressing enables us to securely locate and identify data stored by peers. The Content Identifiers (CIDs) we often use to link to individual files, or pieces of data, can also be used to express complex webs of data in their entirety, when we structure that data as content-addressable Merkle DAGs. Merkle DAGs, structured using schemas provided by IPLD, are key to the interoperability of IPFS, libp2p, Filecoin, and other distributed protocols. In this new code-free ProtoSchool tutorial, we take a deep dive into the properties that make Merkle DAGs the backbone of the distributed web, and explore the many benefits that the data structure unlocks, from verifiability to distributability to deduplication. Check it out!

Introducing our IPLD course

In 2020, ProtoSchool introduced collections of tutorials on specific distributed web protocols. Our Merkle DAG tutorial is the cornerstone of our newly launched IPLD Course, which includes both JavaScript coding challenges and code-free content.

If you’re a developer, we encourage you to get hands on with Merkle DAGs through our two coding tutorials that explore the Javascript implementation of the IPFS DAG API:

‍👩🏾‍💻 In P2P Data Links with Content Addressing, you’ll use the DAG API to add data objects to IPFS and link between them.

‍👨🏻‍💻 In the more advanced Blogging on the Decentralized Web, you’ll use the same API to encode relationships between authors, posts, and tags, as you create a fictional blog, watching CIDs change as you reshape the data structure.

More on Merkle DAGs

Prefer your learning in video format? Check out these presentations on the superpowers of Merkle DAGs:

🎬 Content-Addressed Distributed Data Structures (SpeakeasyJS Meetup 2020): In this talk, Rod Vagg of the IPLD team explains how to build complex and very large data data structures on top of content addressing.

🎬 How Merkle Trees Enable the Decentralized Web (!!Con 2017): This session by Tara Vancil explores what make the Merkle Tree the backbone of decentralized software like Git, BitTorrent, ZFS, and Ethereum.

🎬 Understanding How IPFS Deals with Files (IPFS Camp 2019): This presentation by Alan Shaw and Mikeal Rogers offers a deep dive on key IPFS concepts like immutability, content addressing, hashing, the anatomy of CIDs, what the heck a Merkle DAG is, and how chunk size affects file imports. It also covers the joys and pitfalls of the Mutable File System (MFS), the layer of abstraction in IPFS that lets you work with immutable files and directories as if you were using a traditional name-based file system.

Video: Content-Addressed Distributed Data Structures Video: How Merkle Trees Enable the Distributed Web Video: Understanding How IPFS Deals with Files

Help us improve ProtoSchool

ProtoSchool is a team effort, and we depend on folks in the IPFS and dweb community to outline new content, add new features, fix bugs, catch typos, and test-drive new tutorials like this one. There are many ways to contribute to the project, no matter your background, and our new multiple-choice format makes it super easy to create new tutorials without any coding experience. In fact, the awesome Mitch Wagner, who created our latest tutorial, built it with the help of our user-friendly ProtoWizard CLI!

Screenshot of ProtoWizard CLI

One of the easiest ways to help is by sharing your feedback as you explore our tutorials. You’ll find a link at the bottom of every lesson to help you submit your suggestions.

We can’t wait to hear what you think of the new Merkle DAG tutorial!