compact-core:compact-ledger

Model on-chain state for Compact contracts using ledger types and ADT structures.

37|9|Updated Feb 25, 2026
One-click install
npx skills add https://github.com/devrelaicom/midnight-expert --skill compact-core-compact-ledger
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: compact-core:compact-ledger
Source: https://github.com/devrelaicom/midnight-expert/tree/main/plugins/compact-core/skills/compact-ledger
Command: npx skills add https://github.com/devrelaicom/midnight-expert --skill compact-core-compact-ledger

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

This skill helps developers design and reason about on-chain state in Compact by guiding ledger declarations, ADT selection, constructor initialization, and privacy/disclosure patterns, reducing mistakes and enabling correct, private state handling.

Core Features & Use Cases

  • Ledger type design: selecting Counter, Map, Set, List, MerkleTree, HistoricMerkleTree for common scenarios
  • Privacy and visibility: understanding disclosure rules, on-chain visibility, and private membership proofs (MerkleTree/ zswap patterns)
  • Construction patterns: sealed fields, constructor initialization, helper circuits, and nested ADT strategies

Quick Start

Define a new ledger state and initialize it in the constructor using disclosed values and default() patterns.

Frequently Asked Questions about compact-core:compact-ledger

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I design on-chain ledger state for Compact contracts?

Design on-chain ledger state in Compact by selecting appropriate ledger types like Counter, Map, Set, List, MerkleTree, or HistoricMerkleTree based on your contract's data requirements, then initializing them in the constructor with disclosed values and default() patterns.

What are the privacy and disclosure rules for Compact ledger state?

Compact ledger state privacy rules govern on-chain visibility, allowing non-sensitive data to remain transparent while enforcing private state handling through disclosure rules, MerkleTree patterns, and zswap private membership proofs for sensitive information.

How do I initialize a constructor with sealed fields and nested ADTs in Compact?

Initialize Compact constructors with sealed fields by applying constructor initialization patterns, leveraging helper circuits, and structuring nested ADTs to ensure correct visibility rules and safe defaults for on-chain state.

When should I use a MerkleTree vs a HistoricMerkleTree for on-chain state?

Use a MerkleTree for standard private membership proofs in on-chain state, whereas a HistoricMerkleTree is suited for scenarios requiring historical state tracking alongside privacy and disclosure patterns in Compact contracts.

Can I manage private state with transparent on-chain behavior in Compact?

Yes, Compact supports managing private state with transparent on-chain behavior by applying design patterns that separate sensitive data using privacy rules and zswap patterns while maintaining disclosure for non-sensitive ledger data.