Build Your First Privacy-Preserving App on Midnight Network

Published: (December 14, 2025 at 05:34 PM EST)
2 min read
Source: Dev.to

Source: Dev.to

If you’ve been curious about privacy‑first blockchain applications, the Midnight Network (MN) is an exciting playground. With MN, you can build DApps that use Zero‑Knowledge Proofs (ZKPs) to protect sensitive data while still interacting with the blockchain in a verifiable way. The magic? Selective disclosure—users can prove specific information without exposing everything.

Quick Start with create-mn-app

The create-mn-app CLI scaffolds Midnight Network applications with zero configuration. It comes pre‑configured with TypeScript, hot reloading, and wallet generation. Dependencies for Node.js, Docker, and the Compact compiler are managed automatically.

npx create-mn-app my-app
cd my-app
npm run setup

Available templates

  • Hello World – Message storage with ZKPs
  • Counter DApp – Increment/decrement with ZKPs
  • Other templates like Bulletin Board, DEX, and Midnight Kitties are in development.

Manual Setup

Prerequisites

  • Node.js ≥ 20.x (install via NVM)
  • Basic command‑line knowledge
  • Code editor (e.g., Visual Studio Code)
nvm install 20

Create Your Project

mkdir my-mn-app
cd my-mn-app
npm init -y
mkdir src contracts
touch contracts/hello-world.compact

Define the Smart Contract

pragma language_version 0.17;

// Ledger to store your data
export ledger message: Opaque;

// Circuit to update the ledger
export circuit storeMessage(customMessage: Opaque): [] {
  message = disclose(customMessage);
}

disclose is required to intentionally make the data public. Compact enforces privacy by default.

Compile the Smart Contract

compact compile contracts/hello-world.compact contracts/managed/hello-world

The compilation generates:

  • contract/ – Compiled contract artifacts
  • keys/ – Cryptographic keys for ZKPs
  • zkir/ – Zero‑Knowledge Intermediate Representation
  • compiler/ – Intermediate files for building

With this setup, you can start building privacy‑preserving DApps on Midnight Network. Users can interact securely while sensitive data stays private. The combination of Compact contracts + ZKPs ensures scalable, secure, and verifiable privacy on‑chain.

Next Steps

In the upcoming parts of this series, we’ll dive into how to deploy an MN app and then explore how to interact with an MN app. Stay tuned to continue building privacy‑preserving DApps on the Midnight Network! 🌌

Back to Blog

Related posts

Read more »