Parad0x-Labs/Dark-Null-Protocol

GitHub: Parad0x-Labs/Dark-Null-Protocol

Dark-Null-Protocol 是一个基于 Solana 和 Groth16 零知识证明的隐私结算协议,通过链上不可链接性为 AI 代理支付和隐私敏感场景提供证据优先的私密结算方案。

Stars: 5 | Forks: 1

# Dark Null Protocol:规范的公共 Devnet 轨道 **基于 Solana 的私密结算,专为 AI 代理支付打造 —— 而非混币器。** 在 Solana 上收发资金并实现链上不可链接性:提款在加密学上与其资金来源的存款无法关联。数学证明了提款的有效性,而无需揭示其来自哪笔存款。(存款金额和存款人在链上依然可见 —— 具体的隐私边界请参阅 [`SECURITY_MODEL.md`](./SECURITY_MODEL.md)。) ![Status: Canonical Root](https://img.shields.io/badge/Status-Canonical_Root-00C2A8?style=flat-square) ![Proofs: Groth16](https://img.shields.io/badge/Proofs-Groth16-111827?style=flat-square) ![License: MIT](https://img.shields.io/badge/License-MIT-0F172A?style=flat-square)

Parad0x Labs

**基于 Solana 的私密结算研究,发布时不做任何超出代码库实际证明的夸大宣传。** Dark Null 的公共优势在于证据的密集度:根验证器、电路工件、清单、IDL、SDK 和可复现的证明测试均同时发布。该代码库旨在让严肃的声明可追溯至代码和哈希,而非仅仅是一场作秀。 此代码库现在拥有一个规范的公共根: - 一个程序 ID:`2stas3cZYnBiWpndcTXQDGLXwfQ7kjEYYrW52DsUAcxF` - 一个根清单:[`MANIFEST.json`](./MANIFEST.json) - 一个网络映射:[`NETWORKS.json`](./NETWORKS.json) - 一个根 IDL:[`idl/paradox.json`](./idl/paradox.json) - 一个根电路包:[`circuits/null_proof.circom`](./circuits/null_proof.circom)、[`circuits/null_proof_final.zkey`](./circuits/null_proof_final.zkey)、[`circuits/null_proof_js/null_proof.wasm`](./circuits/null_proof_js/null_proof.wasm)、[`circuits/vk.json`](./circuits/vk.json) - 一个根验证器路径:[`src/lib.rs`](./src/lib.rs) + [`src/verifying_key.rs`](./src/verifying_key.rs) - 一个已发布的安全模型:[`SECURITY_MODEL.md`](./SECURITY_MODEL.md) - 一个配置证据文件:[`CEREMONY.md`](./CEREMONY.md) - 一个公共声明账本:[`docs/CLAIMS_LEDGER.md`](./docs/CLAIMS_LEDGER.md) 历史分支和工件包仍然保持发布,但它们不再是主要的集成目标。 **搜索标签:** `solana`、`zk-snarks`、`zero-knowledge proofs`、`groth16`、`circom`、`bn254`、`privacy payments`、`anchor`、`snarkjs`、`solana program` ## 🕶️ 为什么这对你很重要 区块链上的资金默认是公开的 —— 任何人都可以看到谁向谁付款以及金额多少。Dark Null 解决了这个问题: - 🧾 **私密收据** —— 证明发生了一笔付款,而无需暴露金额或交易对手。 - 🏢 **保护你的优势** —— 将供应商、薪酬和交易流隐匿于公共账本之外。 - 🔍 **依然可验证** —— 发布的证明意味着“私密”绝不等于“盲目相信我们”。 专为需要带有证据且私密结算支付的应用和团队构建。*(处于审计前阶段 —— 请参阅下方的状态。)* ### 这如何融入 Parad0x 技术栈 Parad0x Labs 在 Solana 上构建 Web0 —— 能够自我结算的货币与代理。**你在这里:🕶️ 隐私 —— x402 轨道上的保护罩:同样的结算过程,但不附带付款人信息。** | 层级 | 代码库 | 功能 | |---|---|---| | 💸 支付 | [dna-x402](https://github.com/Parad0x-Labs/dna-x402) | x402 轨道:报价 → 支付 → 验证 → 收据 → anchor | | 🛠️ 构建 | [dna-x402-builders](https://github.com/Parad0x-Labs/dna-x402-builders) | 托管工具包:将任何 API/机器人转变为付费代理 | | 🕶️ 隐私 | **Dark-Null-Protocol**(此代码库) | Groth16 隐私结算,已发布的证明 | | 🗜️ 数据 | [liquefy](https://github.com/Parad0x-Labs/liquefy) | 优于 Zstd 的列式压缩 | | 🛡️ 审计 | [liquefy-openclaw-integration](https://github.com/Parad0x-Labs/liquefy-openclaw-integration) | 飞行记录仪:24 个引擎 + Solana 锚定审计追踪 | | 🎬 媒体 | [nebula-media](https://github.com/Parad0x-Labs/nebula-media) | 携带证明的媒体压缩 —— 场景感知 + 链上收据 | | 🧠 本地 AI | [nulla-local](https://github.com/Parad0x-Labs/nulla-local) | 本地优先的代理运行时 —— 你的机器,你的记忆 | **查看实际应用**(运行在这些轨道上的消费级应用):**[parad0xlabs.com](https://parad0xlabs.com)** ## 市场定位 Dark Null 是紧凑、证据优先的 Solana 隐私结算轨道: - `256-byte` 当前的 `groth16-solana` 验证器 ABI - `128-byte` 压缩证明目标 - 带有稳定哈希检查的规范工件清单 - 可复现的 Groth16 证明流程 - 明确的可信设置证据,在最终设置证据存在之前设有主网阻塞机制 - 受绑定 payout 的 v2 提款路径,证明金额、接收方 token 账户和 mint - 阻止不支持的主网声明的公共发布门控 有关发布文案和定位,请阅读 [`docs/LAUNCH_NARRATIVE.md`](./docs/LAUNCH_NARRATIVE.md)。有关发布门控,请阅读 [`docs/MAINNET_READINESS.md`](./docs/MAINNET_READINESS.md) 和 [`docs/MAINNET_RUNBOOK.md`](./docs/MAINNET_RUNBOOK.md)。 有关已交付与被阻塞声明的边界,请阅读 [`docs/CLAIMS_LEDGER.md`](./docs/CLAIMS_LEDGER.md)。 如需进行外部审查,请使用 [`docs/AUDITOR_HANDOFF.md`](./docs/AUDITOR_HANDOFF.md) 中的单一交接数据包。 有关明确未经审计、设限的主网测试通道,请阅读 [`docs/MAINNET_OPEN_BETA.md`](./docs/MAINNET_OPEN_BETA.md)。 有关链下服务运营和 x402 收据边界,请阅读 [`docs/OFFCHAIN_SWARM.md`](./docs/OFFCHAIN_SWARM.md)、[`docs/DNA_X402_INTEGRATION.md`](./docs/DNA_X402_INTEGRATION.md) 和 [`docs/PRIVATE_X402_PAYMENTS.md`](./docs/PRIVATE_X402_PAYMENTS.md)。 有关公共 DNA x402 工作区映射,请阅读 [`docs/DNA_X402_PUBLIC_WORKSPACE_MAP.md`](./docs/DNA_X402_PUBLIC_WORKSPACE_MAP.md)。 有关前沿研究工作,请阅读 [`docs/2030_PRIMITIVES.md`](./docs/2030_PRIMITIVES.md)。 ## 一键引导 ``` sh scripts/bootstrap.sh ``` 这将安装 npm 依赖项并运行公共代码库检查。 如果你想要扩展验证路径: ``` FULL_VALIDATION=1 sh scripts/bootstrap.sh ``` ## 规范网络选择 ``` npm run config:devnet npm run config:localnet ``` 获取机器可读的输出: ``` npm run config:json:devnet ``` 规范默认配置也位于 [`.env.example`](./.env.example) 中。 ## npm SDK ``` npm install @dark-null/protocol ``` 用于基于 Anchor 的集成: ``` npm install @dark-null/protocol @coral-xyz/anchor @solana/web3.js ``` ## 规范内容 | 领域 | 根路径 | |---|---| | 程序绑定 | [`MANIFEST.json`](./MANIFEST.json), [`Anchor.toml`](./Anchor.toml), [`src/lib.rs`](./src/lib.rs) | | 网络配置 | [`NETWORKS.json`](./NETWORKS.json), [`.env.example`](./.env.example), [`scripts/network-config.mjs`](./scripts/network-config.mjs) | | 验证器 | [`src/verifying_key.rs`](./src/verifying_key.rs), [`circuits/vk.json`](./circuits/vk.json) | | 电路工件 | [`circuits/null_proof.circom`](./circuits/null_proof.circom), [`circuits/null_proof_final.zkey`](./circuits/null_proof_final.zkey), [`circuits/null_proof_js/null_proof.wasm`](./circuits/null_proof_js/null_proof.wasm) | | 证明编码 | 256 字节当前的 `groth16-solana` 验证器 ABI;128 字节压缩证明目标 | | 私密 x402 收据 | [`swarm/x402.mjs`](./swarm/x402.mjs), [`docs/PRIVATE_X402_PAYMENTS.md`](./docs/PRIVATE_X402_PAYMENTS.md), DNA 签名收据包装器 | | 审计员交接 | [`docs/AUDITOR_HANDOFF.md`](./docs/AUDITOR_HANDOFF.md) | | 可信设置证据 | [`CEREMONY.md`](./CEREMONY.md), [`scripts/check-ceremony-evidence.mjs`](./scripts/check-ceremony-evidence.mjs) | | 公共 IDL | [`idl/paradox.json`](./idl/paradox.json) | | JavaScript SDK | [`sdk/index.mjs`](./sdk/index.mjs), [`sdk/index.d.ts`](./sdk/index.d.ts) | | Python 助手客户端 | [`client/dark_client.py`](./client/dark_client.py) | | 规范证明流程测试 | [`tests/canonical-proof-flow.test.mjs`](./tests/canonical-proof-flow.test.mjs) | ## 历史内容 | 领域 | 历史路径 | |---|---| | 提升的来源分支 | [`historical/null-mint`](./historical/null-mint) | | 归档的玩具公共根 | [`historical/root-toy-prototype`](./historical/root-toy-prototype) | | 较早的完整周期工件包 | [`LIVE_TEST_RESULTS.md`](./LIVE_TEST_RESULTS.md), [`full_cycle_results.json`](./full_cycle_results.json) | ## 此代码库确实证明了什么 - 根目录中发布了一个真实的 Groth16 验证器路径 - 根电路、zkey、wasm 和 vk 在内部是一致的 - 完整的本地验证通道可通过 `npm run test:all` 复现 - 根 devnet/localnet 选择现在通过一个发布的配置界面进行解析 - 当前根源中不再允许任何签名者更新根 - 有界的根、叶子(leaf)和 nullifier 存储现在会安全失败,而不是静默覆盖 - 旧的 `prepare_phantom_withdraw` 路径会安全失败,而不是针对无证明绑定的参数进行支付 - `prepare_phantom_withdraw_v2` 会验证提升后的八信号证明,绑定金额/接收方 token/mint,记录 nullifier,并从金库 token 账户中进行支付 - DNA x402 签名收据可以封装到 Dark Null 私密收据信封中,而无需存储原始资源 URL 或原始支付标头 - 该代码库拥有一个规范的公共根路径,而不是占位符根加上侧边分支 - 私密 x402 收据 DAG 将每个收据哈希链接到前一个节点,且不存储原始 URL(6 个测试通过) - 顺序 Groth16 批量结算端到端验证真实证明,并拒绝同一批次内的重复 nullifier(10 个测试,通过 snarkjs/BN254 生成真实证明) - ZK 访问收据原型仅在提供有效的 Groth16 证明时颁发访问权限,而不记录付款人身份(20 个测试通过) - Piano PIR 访问模式原型检索索引条目时不泄露查询了哪个条目(15 个测试通过) - BDHKE 盲 token 发放原型生成的 token 无法追溯至兑换调用(19 个测试通过) - 规范的 devnet 程序 `2stas3cZYnBiWpndcTXQDGLXwfQ7kjEYYrW52DsUAcxF` 已验证可在 devnet(插槽 468,709,388)上执行;`npm run check:x402:devnet` 通过 - 六个 x402 集成程序已在 devnet 上部署并经过 e2e 验证:silent-pay (`9C9F9Y8…`)、fiat-oracle (`DjHQxF5…`)、threshold-fed (`C6M8Nux…`)、accumulator (`7VWjpxe…`)、inference (`23yVqL6…`)、payment-stream (`C5uhvm1…`) - 完整的六程序集成演示在 devnet 上端到端通过(`node scripts/demo-x402-dark-null.mjs`) ## 主网门控 上述所有程序均在 devnet 上。清除这些门控将解锁主网部署声明: - 对根 ZK 程序和 `prepare_phantom_withdraw_v2` 支付路径进行第三方审计 - 提交至 `MAINNET_EVIDENCE.json` 的主网部署证据 - 针对 BN254 电路的已认可可信设置证据 - 为特权根更新者(`RootAuthorityConfig` PDA)定义的密钥托管模型 - 确认所有历史程序 ID 映射到当前发布的文件 仅在配置中将 `devnet` 切换为 `mainnet` 是不够的。 ## 验证流程 1. 运行 `sh scripts/bootstrap.sh`。 2. 运行 `npm run config:devnet` 或 `npm run config:localnet`。 3. 阅读 [`MANIFEST.json`](./MANIFEST.json)、[`NETWORKS.json`](./NETWORKS.json) 和 [`docs/PROGRAM_IDS.md`](./docs/PROGRAM_IDS.md)。 4. 运行 `npm run check:claims`。 5. 运行 `npm run check:swarm`。 6. 运行 `npm run check:x402`。 7. 运行 `npm run check:ceremony`。 8. 运行 `npm run test:all`。 9. 当 RPC 访问可用时,运行 `npm run check:x402:devnet`。 10. 运行 `npm run check:mainnet:evidence`,并预期在 `MAINNET_EVIDENCE.json` 变为真实数据之前它会失败。 11. 运行 `npm run check:mainnet:beta`,并预期在 `MAINNET_BETA_EVIDENCE.json` 变为真实数据之前它会失败。 12. 运行 `npm run check:mainnet`,并预期在 [`docs/MAINNET_READINESS.md`](./docs/MAINNET_READINESS.md) 中的阻塞问题被清除之前它会失败。 ## 前沿原语(共 20 个) Dark Null 的研究通道涵盖了针对机器和人类支付的携带证明的私密结算。跨越四个层级的二十个原语 —— 这些是受门控的研究原语,而非发布声明 —— 在 [`docs/2030_PRIMITIVES.md`](./docs/2030_PRIMITIVES.md) 中相应的证据门控被清除之前,均不属于生产声明。 ### 已交付的原型代码 (6) 运行测试;未部署到生产环境。 | 原语 | 测试证明的内容 | |---|---| | Dark Null x402 隐私扩展 | 私密 x402 意图 → 收据 → 收据 DAG 流;任何存储字段中均无原始 URL 或付款人身份 | | 收据 DAG / 仅追加私密收据 | SHA256 链接的收据链,其中每个节点对前一个节点进行哈希;6 个测试 | | 递归结算批次 | 使用真实证明进行端到端 Groth16 批量验证;拒绝重复的 nullifier;10 个测试 | | ZK 访问收据 | 证明门控访问:出示 Groth16 证明,获取资源;不记录身份;20 个测试 | | 访问模式隐私 | 私密信息检索:获取索引条目而不泄露检索了哪个条目;15 个测试 | | BDHKE 盲收据 token | 盲 Diffie-Hellman 密钥交换 token 发放;token 与兑换调用不可链接;19 个测试 | ### Devnet 程序 (6) —— 接入 x402 部署在 devnet 上的原生 Solana 程序;每个程序都有通过 e2e 测试,并通过 [`integration/programs.mjs`](./integration/programs.mjs) + [`integration/x402-hooks.mjs`](./integration/x402-hooks.mjs) 接入 x402 支付栈。运行 [`scripts/demo-x402-dark-null.mjs`](./scripts/demo-x402-dark-null.mjs) 查看所有六个程序在一次代理会话中触发。 | 原语 | 程序 ID (devnet) | 链上程序的功能 | |---|---|---| | 静默支付轨道 | `9C9F9Y8icd7tsnet4HtQU4LTkQMuAWWXAT97rR2eG6wV` | BIP352 风格 ECDH 隐秘地址派生 + 扫描;付款人地址不跨调用重用 —— 非完整 BIP352;无链上扫描器 | | 法币结算预言机 | `DjHQxF5pcZBqZtXX9niFpJsGuAUBs77v4dssuAdyFR4b` | `secp256k1_recover` 验证预言机对 `SHA256(payment_id ‖ amount ‖ recipient)` 的签名;防重放收据 PDA —— 预言机证明,而非 zkTLS | | 阈值盲铸联邦 | `C6M8Nuxo1hj9QjPGAfYSXNwkDQEeRVuGZS4FqtjAQuVJ` | 通过 Shamir + Lagrange 实现的 k-of-n BDHKE;记录带有防重放保护的联邦发放 —— 无 DKG 或每个签名者的 DLEQ 证明 | | 收据承诺累加器 | `7VWjpxe2bBHChzMsqvPS8ZFJBRLaGkWTzM3Wrm36tnBd` | 滚动 `SHA256(prev_commitment ‖ receipt_hash)` 带有终结门控;一个根证明会话中的所有收据 —— SHA256 累加器,而非 Nova 折叠 | | 预言机证明推理收据 | `23yVqL6UopoXLv3UihSKQ6EEpuxztWSKcHyKwdC9gM3v` | `secp256k1_recover` 验证预言机对 `SHA256(model_hash ‖ input_hash ‖ output_hash)` 的签名;将计算绑定到 x402 支付 —— 预言机证明,而非 EZKL ZK 电路 | | 私密流式小额支付 | `C5uhvm1SUxrZdzKAc3ZDHkVJbmrt7ntjhai6F7QHK6uP` | 支付通道:`OpenChannel` 为 PDA 注入资金,链下 tick 追踪每次调用的花费,`CloseChannel` 结算确切的累计金额 —— 无隐藏速率加密 | **x402 集成** ([`integration/x402-hooks.mjs`](./integration/x402-hooks.mjs)): - `makeAccumulatorHook` —— 插入式 `onReceiptFinalized`,将每个 x402 收据哈希提交至链上滚动根;一个根证明整个会话 - `makeInferenceHook` —— 在每次 AI API 调用后,在链上记录预言机证明的推理收据;客户端可以验证运行了哪个模型 - `StreamingSession` —— 将流式通道封装为按次调用的 tick 计费;会话 `settle()` 执行单次链上关闭 ### 研究阶段 (7) 仅包含设计和规范 —— 无生产代码。 | 原语 | 预期交付内容 | |---|---| | 压缩匿名性 / Nullifier 状态 | 使用稀疏承诺,链上匿名集存储从 O(N) 缩小到 O(log N) | | 携带证明的中继集群 | 链下证明者和索引节点携带任何人都可以审计的可验证执行收据 | | 临时私密支付会话 | 一个共享密钥,多笔私密支付 —— 链上无持久支付通道 | | 终结性感知 / Alpenglow 就绪收据 | 收据包含最终确认的插槽哈希,而不是估计的插槽 | | MPC 密封定价 / 私密拍卖 | 通过多方安全计算在链下协商价格;只有结算在链上进行 | | 感知 MEV 的私密结算路由 | 在不披露支付路径或金额的情况下绕过抢跑路由 | | x402 集市私密信誉收据 | 在结算后对付费 API 评分 —— 而不将审查者的身份与评级联系起来 | ### 阻塞中 (1) | 原语 | 阻塞因素 | |---|---| | 机密 Token-2022 链接隐私 | Token-2022 机密转账扩展审计完成及 SIMD 稳定 | 关于所有 20 个原语的完整规范、激活阻塞因素及禁用的营销用语:[`docs/2030_PRIMITIVES.md`](./docs/2030_PRIMITIVES.md)。 ``` frontier_primitives: status: 6_prototype_code_6_devnet_programs_7_research_1_blocked base_delivered: - groth16_verifier_path - payout_bound_withdraw_v2 - manifest_locked_artifacts - private_x402_receipt_primitives prototypes: - dark_null_x402_privacy_extension - receipt_dag_append_only - recursive_settlement_batches - zk_access_receipts - piano_pir_access_pattern_privacy - bdhke_blind_receipt_tokens devnet_programs: - silent_payment_rails: 9C9F9Y8icd7tsnet4HtQU4LTkQMuAWWXAT97rR2eG6wV - fiat_settlement_oracle: DjHQxF5pcZBqZtXX9niFpJsGuAUBs77v4dssuAdyFR4b - threshold_blind_mint_federation: C6M8Nuxo1hj9QjPGAfYSXNwkDQEeRVuGZS4FqtjAQuVJ - receipt_commitment_accumulator: 7VWjpxe2bBHChzMsqvPS8ZFJBRLaGkWTzM3Wrm36tnBd - oracle_attested_inference_receipt: 23yVqL6UopoXLv3UihSKQ6EEpuxztWSKcHyKwdC9gM3v - private_streaming_micropayments: C5uhvm1SUxrZdzKAc3ZDHkVJbmrt7ntjhai6F7QHK6uP research: - compressed_anonymity_state - proof_carrying_relayer_swarm - ephemeral_private_sessions - finality_aware_alpenglow_receipts - mpc_sealed_pricing - mev_aware_routes - x402_bazaar_private_reputation blocked: - confidential_token2022_linkage ``` ## 致集成商和代理构建者 | 如果你需要... | 将 Dark Null 用于... | |---|---| | 面向隐私的结算研究 | 存款流程、根更新、证明工件验证以及源码/安全审查 | | 公共代码审查 | 根 Rust 程序、电路、客户端助手、SDK、IDL 和历史证据 | | 机器速度的按请求 API 支付 | 使用 `dna-x402` 进行 HTTP 协商,并使用此代码库的私密 x402 收据原语进行 Dark Null 结算绑定 | 大型代理商务工作区位于 [`Parad0x-Labs/dna-x402`](https://github.com/Parad0x-Labs/dna-x402):包含 346 个 Cargo 工作区成员、17 个 Solana 程序条目、TypeScript x402 包、NULL Miner SDK、构建界面和 Dark Null 集成 crate。代码库映射位于 [`docs/DNA_X402_PUBLIC_WORKSPACE_MAP.md`](./docs/DNA_X402_PUBLIC_WORKSPACE_MAP.md)。 ## 审查状态 - 尚未完成任何第三方审计。 - 代码库在 [`INTERNAL_REVIEW.md`](./INTERNAL_REVIEW.md) 中包含了内部技术审查摘要。 - 规范根现在受 [`MANIFEST.json`](./MANIFEST.json) 绑定。 - 当前的源码安全模型记录在 [`SECURITY_MODEL.md`](./SECURITY_MODEL.md) 中。 - 历史程序 ID 被编目在 [`docs/PROGRAM_IDS.md`](./docs/PROGRAM_IDS.md) 中,而不是被暗示为同一个发布版本。

NULL — Parad0x Labs open source systems

## 许可证 当前在此代码库中的所有内容均根据 MIT 许可证发布。请参阅 [`LICENSE`](./LICENSE)。
标签:Groth16, Rust, Solana, 区块链, 可视化界面, 数据可视化, 智能合约, 暗色界面, 网络流量审计, 自定义脚本, 逆向工具, 隐私计算, 零知识证明