Skip to content

[Tutorial] Designing Public vs. Private State: What Goes Where and Why #292

@Olanetsoft

Description

@Olanetsoft

Type of Content

Tutorial

Summary

Framework for deciding what goes in the public ledger vs private state. Cover exported vs non-exported ledger fields, the implications of disclose(), shielded vs unshielded token choices, and common mistakes (accidentally disclosing Merkle paths that reveal position, disclosing intermediate values that leak private state). Include decision trees for common dApp patterns.

Target Audience

Developers

Deliverables

  1. Written tutorial (1,500-2,500 words) covering:
    • Exported vs non-exported ledger fields
    • Implications of disclose()
    • Shielded vs unshielded token choices
    • Common mistakes: accidental Merkle path disclosure, intermediate value leaks
    • Decision trees for common dApp patterns

Requirements:

Relevant Links

Submission Process

This is an Eclipse bounty. Bounties are not first-come, first-served. Anyone can submit. The best valid submission wins.

  1. Work on your submission independently.
  2. Share your published link in this issue thread.
  3. When ready, comment "Ready for review" explicitly.
  4. One review cycle: feedback, revision, approve or reject.

Publishing: Dev.to is the default platform for blog posts and tutorials. Some contributions may also go directly into the Midnight docs. Other platforms (Medium, Hashnode, personal blog) work too.

Promotion: Share on X/LinkedIn with #MidnightforDevs and tag @midnightntwrk.

Policies

AI-Generated Content: Submissions are checked for AI content. Substantially AI-generated work will be disqualified.

Code Must Compile: Any Compact code must compile. Non-compiling code means immediate disqualification.

Terms: By submitting, you agree to the Bounty Program Terms. Payouts in NIGHT tokens after KYC via SumSub.

Tier 1 (Light) - $300-$500 (paid in NIGHT tokens)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions