raghavpathak30/PRIVAdex

GitHub: raghavpathak30/PRIVAdex

基于Microsoft SEAL 4.1的FHE暗池DEX撮合引擎原型,采用BFV+CKKS混合方案实现加密订单匹配,防止MEV攻击和订单流泄露。

Stars: 0 | Forks: 0

# PrivaDEX DarkPool PrivaDEX DarkPool 是一个保护隐私的 DEX 撮合引擎原型,它使用 Microsoft SEAL 4.1 并采用 BFV + CKKS 混合设计,对加密订单执行撮合:BFV 处理精确的整数相等性(价格匹配),而 CKKS 支持用于交易量/滑点路径的近似算术运算。项目已完成了全部 16 个实现步骤,14/14 个 ctest 测试通过,并且解决了审计后的加固阻碍。 ## 为什么这很重要 公共内存池的订单流会泄露买卖意图,并造成抢跑攻击面。该项目展示了一个实用的加密撮合流水线,其中明文订单值永远不会在服务器端的撮合路径中暴露。 ## 威胁模型要点 (T-01 至 T-08) - T-01 被动窃听者:仅密文的传输和存储。 - T-02 恶意撮合引擎:引擎不持有密钥。 - T-03 抢跑者/MEV 观察者:加密的订单簿状态。 - T-04 槽位关联:带有随机旋转的订单级槽位致盲。 - T-05 匹配模式泄漏:固定节奏 + 虚拟订单协议。 - T-06 重放:带有持久服务器端重放防护的单调随机数。 - T-07 参数不匹配:加载时进行 `parms_id` 验证。 - T-08 时序关联:恒定窗口匹配策略。 有关完整的规范性详细信息,请参见 [DARKPOOL_SPEC_v2.md](DARKPOOL_SPEC_v2.md)。 ## 混合 BFV + CKKS 的基本原理 - BFV 路径:用于相等性 (`bid == ask`) 的精确整数语义,现已强化为低深度求值(相减 -> 平方 -> 钳位),具有确定性的输出语义,即相等 => 1,不相等 => 0。 - CKKS 路径:用于连续值计算(例如,交易量/滑点)的近似算术,包括 27 次符号多项式求值。 - 这种分离在需要的地方保持了精确比较的正确性,同时为实值操作保留了实用的表达能力。 ## 密码学参数 (SEAL 4.1) - 多项式模度:`n = 16384` - CKKS 系数模量: - 27 次路径:`{60,40,40,40,40,60}` - 15 次快速路径:`{60,40,40,40,60}` - BFV 系数模量:`{60,30,30,30,60}` - Galois 密钥集: - CKKS:`{1,2,4,8,16,32,64,128,256,512}` - BFV:`{1,2,4,8,16,32,64,128,256}` ## 性能概览 最新基准性能门结果 (`N=100`): - 平均值:`38.5274 ms` - p95:`41.502 ms` - p99:`45.164 ms` - 性能门:`p99 < 150 ms` (通过) 详细的方法论和性能门定义请参见 [BENCHMARK.md](BENCHMARK.md)。 ## 构建说明 前置条件: - CMake (>= 3.20) - C++17 工具链 (GCC/Clang) - Python 3.10+ - gRPC + protoc - Microsoft SEAL 4.1.x 构建: ``` cmake -S . -B build cmake --build build -j ``` 运行测试: ``` ctest --test-dir build --output-on-failure ``` 预期状态:`14/14 tests PASS`。 ## 架构指引 关于完整的 17 跳加密数据生命周期、槽位布局、密钥保管模型和时序分解,请参见 [ARCHITECTURE.md](ARCHITECTURE.md)。 ## 仓库地图 - [he_core](he_core):FHE 核心和上下文定义 - [matching_server](matching_server):gRPC 服务和撮合路径 - [trader_client](trader_client):Python 客户端和结算桥接 - [proto](proto):协议约定 - [benchmarks](benchmarks):延迟基准测试工具 - [contracts](contracts):结算合约存根和部署辅助工具 - [evidence](evidence):用于审查的基准测试/分析产物 ## fhEVM 移植 阶段 A 引入了 [contracts/PrivaDEXDarkPool.fhEVM.sol](contracts/PrivaDEXDarkPool.fhEVM.sol),这是 SEAL BFV 相等性匹配路径的链上 fhEVM 转换版本。它将核心匹配原语从 BFV 相等性求值移植到 `TFHE.eq()`,并使用 `TFHE.select()` 计算加密的匹配数量,同时保留了用于匹配最终确定的授权结算者执行控制。 当前的加密订单字段类型为 `euint32`。这意味着买价/卖价/数量域必须符合 `uint32` 边界;如果池的 tick 或数量范围超出此范围,则应在后续阶段将合约迁移到更宽的加密整数类型。 ### 步骤 15 E2E 验证模式 使用这两个目标将本地开发者行为与严格的 CI 行为分开: - `make e2e-test` - 使用本地 RPC/部署连接并运行 `tests/test_e2e_settlement.py`。 - 在普通的 Hardhat 节点(无 TFHE 运行时)上,测试预期为 **Skipped**,原因:缺少 fhEVM 预编译合约。 - `make e2e-test-fhevm` - 针对 TFHE 预编译合约地址 `0x000000000000000000000000000000000000005d` 运行严格的起飞前 RPC 检查。 - 如果该地址处的 `eth_getCode` 为空 (`0x`/`0x0`),它将直接硬失败并提示: `CRITICAL: Target RPC does not support TFHE precompiles. Use 'fhevm-hardhat' node to run this test.` - 如果起飞前检查通过,它将使用 `REQUIRE_FHEVM=1` 运行相同的 pytest,这会将运行时缺失条件转化为 **Failed** 测试(不允许跳过)。 解读: - `e2e-test` 中 **Skipped**:本地开发环境未启用 fhevm。 - `e2e-test-fhevm` 中 **Failed**:回归或 fhevm CI 运行时配置错误。
标签:Bash脚本, BFV方案, CISA项目, CKKS方案, DeFi, FHE, fhEVM, Microsoft SEAL, Python工具, SEAL 4.1, Web3, 全同态加密, 加密匹配, 加密货币, 区块链, 去中心化交易所, 安全多方计算, 密码学, 手动系统调用, 抗MEV, 抗抢跑, 暗池, 流动性, 混合加密, 网络安全, 蓝队防御, 订单撮合引擎, 逆向工具, 防御绕过, 隐私保护, 隐私计算, 隐蔽交易意图, 零知识证明