Owners: @Thomas Lavaur @David Rusu

Reviewers: 🟢@Giacomo Pasini 🟢@Mehmet 🟢@Álvaro Castro-Castilla

Introduction

Unlike a typical blockchain, where a single ledger would track all notes, Nomos partitions the ledger across zones. The partitioned ledgers will be maintained locally by Native zones, but enforced globally as a common format to enable certain properties and functionalities otherwise not possible (such as PACTs, see Private Atomic Cross-zone Transactions (PACTs) ). Each Native zone manages its own ledger partition and defines its own application. Despite this separation, global ledger rules ensure zones can confidently process notes originating from other ledger partitions. The common ledger is also directly used by the Mantle through the Mantle ledger. The Mantle ledger enforces additional constraints and restrains interactions on its partition of the ledger, favoring efficiency while keeping the model described in this document.

References

The following documents provide the necessary background for related topics:

  1. What a note is.

    Notes

  2. How the update requests of the ledger are built.

    Transactions

  3. How we chose the representation of the ledger.

    Preliminary Research: Ledger Representation

    Preliminary Research: Mutator Sets and their Application to Scalable Privacy

  4. How Ledger updates are verified and coordinated by Nomos Bedrock.

    Preliminary Research: Bedrock Mantle Specification (Native Zones)

Overview

The Zone Ledger is composed of two sets, the commitment set and the nullifier set. The commitment set holds every note that has been created in a zone, and the nullifier set maintains a record of every note that has been spent in a zone. Bundles are used to update the Zone Ledger and the rules governing these updates are enforced in The Ledger proof.

The Commitment Set is represented as an MMR (see Merkle Mountain Ranges (MMR)). This representation is used to achieve state compression.

The Nullifier Set is represented as an Indexed Merkle Tree (IMT, see Preliminary Research: Sparse Merkle Tree vs Indexed Merkle Tree).

The Ledger proof governs the evolution of these two sets by applying bundles to the ledger state. The newly created commitments from each bundle are added to the commitment set and the spent nullifiers are inserted into the nullifier set after verifying their non-membership.

Commitment Set