在 Midnight Network 上构建您的第一个隐私保护应用
Source: Dev.to
如果你对隐私优先的区块链应用感兴趣,Midnight Network(MN)是一个令人兴奋的实验场。使用 MN,你可以构建使用零知识证明(ZKPs)来保护敏感数据,同时仍以可验证的方式与区块链交互的 DApp。其核心魔法是什么?选择性披露——用户可以在不暴露全部信息的情况下证明特定信息。
使用 create-mn-app 快速入门
create-mn-app CLI 可以在零配置的情况下搭建 Midnight Network 应用。它预装了 TypeScript、热重载和钱包生成。Node.js、Docker 以及 Compact 编译器的依赖会自动管理。
npx create-mn-app my-app
cd my-app
npm run setup
可用模板
- Hello World – 使用 ZKP 的消息存储
- Counter DApp – 使用 ZKP 的增减计数
- 其他模板如公告板、DEX 和 Midnight Kitties 正在开发中。
手动设置
前置条件
- Node.js ≥ 20.x(通过 NVM 安装)
- 基本的命令行使用经验
- 代码编辑器(例如 Visual Studio Code)
nvm install 20
创建项目
mkdir my-mn-app
cd my-mn-app
npm init -y
mkdir src contracts
touch contracts/hello-world.compact
定义智能合约
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 用于有意将数据公开。Compact 默认强制隐私。
编译智能合约
compact compile contracts/hello-world.compact contracts/managed/hello-world
编译后会生成:
contract/– 编译后的合约产物keys/– ZKP 的加密密钥zkir/– 零知识中间表示compiler/– 构建过程中的中间文件
有了这些准备,你就可以开始在 Midnight Network 上构建隐私保护的 DApp。用户可以安全交互,而敏感数据保持私密。Compact 合约 + ZKP 的组合确保了链上隐私的可扩展性、安全性和可验证性。
后续步骤
在本系列的后续章节中,我们将深入探讨如何 部署 MN 应用,以及如何 交互 MN 应用。敬请期待,继续在 Midnight Network 上构建隐私保护的 DApp! 🌌