SuperAPI AI 工具集

example-hello-world

编程与开发

查看项目

更新于 10-16 10:15

技能介绍

用途

本技能用于从零生成一个完整、可运行的 Midnight Network Hello World DApp。它覆盖项目中的每一个文件,包括 Compact 合约、TypeScript 工具、测试脚本、Docker 配置以及包管理设置,所有代码与官方的 example-hello-world 参考实现保持一致。

主要能力

  • 生成 Compact 智能合约 hello-world.compact,包含 ledger message 与 storeMessage circuit。
  • 生成 TypeScript 支持文件:网络配置、钱包封装、Provider 构建器与测试。
  • 使用 vitest 编写无头 Node.js 测试,覆盖合约部署与 storeMessage 调用。
  • 使用 @midnight-ntwrk/testkit-js 的 FluentWalletBuilder 创建钱包。
  • 使用 @midnight-ntwrk/midnight-js-contracts 的 deployContract 与 submitCallTx 进行合约部署与调用。
  • 提供 Docker compose 配置以启动完整本地栈。

使用方式

项目结构为 hello-world-local,其中 contracts 目录存放合约与编译产物,src 目录存放配置、钱包、Provider 与测试文件,根目录包含 compose.yml、package.json、tsconfig.json 与 vitest.config.ts。

前置要求包括 Node.js 22+、Docker,以及通过官方安装脚本安装 Compact 编译器。安装完成后需将 $HOME/.local/bin/env 加入当前 shell。

常用命令包括:compile 编译合约,test 运行测试,test:local 在本地网络运行测试,env:up 启动本地栈,env:down 关闭本地栈,validate 执行启动、测试并关闭的完整流程。

合约需在 contracts 目录下手动创建,并通过 compact compile 命令编译,编译输出至 managed/hello-world 目录。测试使用静态种子 ALICE_SEED 保证可复现,privateStateStoreName 使用 Date.now() 实现测试隔离。使用 vitest 运行 ESM 时需要设置 NODE_OPTIONS='--experimental-vm-modules'。

适用场景

适合希望快速搭建 Midnight Network 本地开发环境、了解 DApp 项目结构、验证合约部署与调用流程的开发者。

限制

本技能仅支持本地网络 'local',传入其他网络会抛出错误。文档中列出的包版本为特定日期的快照,使用前应根据官方支持矩阵确认当前兼容版本,且不应安装 @latest。contracts/managed 目录由编译器生成,不应手动创建或编辑。文档中的部分版本与兼容性细节以官方支持矩阵为准。