用途:Midnight.js 是 Midnight Network 的 TypeScript SDK,用于构建 DApp。资料称其官方 SDK 页面“coming soon”,内容基于官方 Counter CLI 教程与 1AM 起步模板。
主要能力:提供合约部署与调用(deployContract、findDeployedContract、submitCallTx);提供商配置(MidnightProviders、WalletProvider、MidnightProvider、createProofProvider);索引用 GraphQL 公共数据(indexerPublicDataProvider);零知识配置加载(FetchZkConfigProvider、NodeZkConfigProvider);HTTP 证明服务器(httpClientProofProvider);LevelDB 私有状态(levelPrivateStateProvider);网络 ID 设置(setNetworkId、getNetworkId);钱包 SDK 集成(WalletFacade、HDWallet、ShieldedWallet、UnshieldedWallet、DustWallet、地址格式)以及 ledger-v8 事务与密钥相关类型。
必要用法:在任何 SDK 操作前调用 setNetworkId,取值如 'preprod'、'preview'、'mainnet'、'undeployed'。提供了各网络的索引器 HTTP/WS 与 RPC 端点。合约需预编译一次,Node.js 用 NodeZkConfigProvider 从文件系统加载 ZK 资产,浏览器用 FetchZkConfigProvider 通过 fetch 加载。Node.js 需在最顶部设置 globalThis.WebSocket(来自 ws 包),否则钱包同步的 GraphQL 订阅不可用。钱包同步使用 RxJS,例如等待 state.isSynced;DUST 为非转移性费用资源,需先注册 NIGHT UTXO 才能随时间生成。
适用场景:构建 Midnight 上的 DApp,包括无头 Node.js 钱包和浏览器钱包(1AM 模板)两类。
限制:资料提及 DUST 余额在部署失败后归零、pendingCoins 与 availableCoins 异常、NIGHT 已注册但 DUST 为 0 等故障排查项;还存在钱包 SDK signRecipe 硬编码 'pre-proof' 导致“Failed to clone intent”的已知问题,资料给出手动签名的规避方式。价格、收费、完整安装命令等未提供。