tnzx-project/tnzx-pool-demo
GitHub: tnzx-project/tnzx-pool-demo
一个基于加密货币矿池协议(Stratum)实现数据隐写与隐蔽通信的概念验证项目,旨在演示如何在挖矿流量中安全地嵌入和传递秘密信息。
Stars: 0 | Forks: 0
# TNZX VS3 — 矿池演示与代理概念验证
[Visual Stratum协议](https://github.com/tnzx-project/tnzx-protocol)的概念验证实现。展示了两种部署模式:
1. **VS3代理** (`poc/`) — 位于任意矿机与标准矿池之间。从真实份额中提取封装数据,拦截幽灵份额,路由消息。矿池无需修改。
2. **VS3感知矿池** (`src/stratum-demo.js`) — 原生支持幽灵份额检测与消息路由的Stratum服务器。
两者共享相同的帧格式与编码方案。无外部依赖。需要Node.js 16+环境。
## 测试结果(2026-03-30)
所有测试均针对生产环境矿池进行。
| 测试项 | 矿池 | 链 | 编码 | 消息 | 结果 |
|--------|------|----|------|------|------|
| V1隐写 | HashVault | Monero | 每份额1字节(随机数最低有效位) | "I am safe. I love you." | **精确匹配** |
| V2隐写 | Braiins Pool | Bitcoin | 每份额3字节(随机数+附加随机数2) | "I am safe. I love you." | **精确匹配** |
| Alice-Bob通信 | HashVault | Monero | V3幽灵份额(每份额5字节) | "I am safe. Meet me at the bridge." | **精确匹配** |
| Alice↔Bob双向通信 | HashVault | Monero | V3幽灵份额(每份额5字节) | "I am safe..." ↔ "Tomorrow..." | **精确匹配** |
| Alice↔Bob HMAC验证 | HashVault | Monero | V3幽灵份额+HMAC标签 | "I am safe..." ↔ "Tomorrow..." | **精确匹配** |
带时间戳的完整记录:[`poc/results/`](poc/results/)
## 快速开始 — 代理模式(任意矿池)
```
# 在真实 Monero 矿池上进行 V1 封装证明
node poc/run-v1-proof.js
# 在真实 Bitcoin 矿池上进行 V2 封装证明
node poc/run-v2-proof.js
# 在真实矿池中进行 Alice-to-Bob 消息传递
node poc/run-alice-bob-proof.js
```
完整文档请参阅 [`poc/README.md`](poc/README.md)。
## 快速开始 — 矿池演示(自包含模式)
```
# 终端 1:启动矿池
node src/stratum-demo.js
# 终端 2:Bob 监听
node vs3-client.js listen
# 终端 3:Alice 发送
node vs3-client.js send "Hello Bob!"
```
代码详解请参阅 [`TECHNICAL_GUIDE.md`](TECHNICAL_GUIDE.md)。
## 交互式演示
**[查看消息流程演示](https://tnzx-project.github.io/tnzx-pool-demo/demo.html)** — 可视化展示完整的TNZX消息传递流程:矿门激活、X25519密钥交换、通过幽灵份额进行加密消息传递及确认应答。观察矿池如何仅看到不透明的 `0x05 ENCRYPTED` 帧,而Alice与Bob却在交换明文。无需服务器——直接在浏览器中运行。
## 系统架构
```
Model 1 — Proxy (no pool modification):
[Alice] --Stratum--> [VS3 Proxy] --Stratum--> [Any Standard Pool]
[Bob] --Stratum--> [VS3 Proxy] (pays both miners)
|
V1/V2 extraction from real shares
V3 ghost share interception
Message routing between miners
Model 2 — VS3-Aware Pool (native support):
[Alice] --Stratum--> [VS3 Pool] --routes--> [Bob]
|
Ghost share detection
Frame assembly
Job notification injection
```
## 编码配置方案
| 方案 | 每份额字节数 | 实现方式 | 隐蔽性 | 支持链 |
|------|-------------|----------|--------|--------|
| **V1** | 1 | 随机数最低有效位半字节(真实份额) | 最高 | 任意链 |
| **V2** | 3 | V1方案+附加随机数2(真实份额) | 最高 | 比特币 |
| **V3** | 5 | 幽灵份额(哨兵字节0xAA) | 较低 | 门罗币 |
V1和V2方案完全绑定于有效载荷——将数据嵌入可通过完整工作量证明验证的真实份额中。V3方案是可选的带宽优化方案,但存在可检测的哨兵字节。
## 仓库结构
```
src/stratum-demo.js VS3-aware Stratum pool (~730 lines)
vs3-client.js VS3 ghost share client (plaintext)
vs3-chat.js E2E encrypted chat client (X25519 + XChaCha20)
demo-server.js Full demo: proxy → real pool + browser UI
demo-ui.html Browser interface for the demo
test-ghost.js Upload path test
lib/
e2e.js E2E encryption (X25519 ECDH + XChaCha20-Poly1305)
xchacha20.js XChaCha20-Poly1305 (vendored from tnzx-protocol ref-impl)
vs3-frame.js Shared frame encoding utilities
poc/
vs3-proxy.js VS3 middleware proxy (~830 lines)
test-vs3-proxy.js Proxy interception test
test-hmac-sentinel.js HMAC rotating sentinel test (Appendix D)
test-dpi-steganalysis.js Chi-squared DPI indistinguishability test
run-v1-proof.js V1 proof on real Monero pool
run-v2-proof.js V2 proof on real Bitcoin pool
run-alice-bob-proof.js Bidirectional messaging proof
results/ Timestamped transcripts
proxy/
index.js Standalone proxy package entry point
bin/vs3-proxy-cli.js CLI for deploying the proxy
examples/ Quick-start guide and usage examples
TECHNICAL_GUIDE.md Pool demo code walkthrough
```
## 协议规范
完整规范、设计文档、参考实现(客户端加密+隐写编码器)及测试向量:
[tnzx-project/tnzx-protocol](https://github.com/tnzx-project/tnzx-protocol)
本矿池演示实现了协议的*矿池端*。`tnzx-protocol` 中的参考实现了*客户端*(端到端加密、封装编码、矿门验证)。两者共同构成完整的VS3技术栈。
## 开源许可
LGPL-2.1
标签:Bitcoin, CMS安全, DNS 反向解析, GNU通用公共许可证, HMAC认证, JavaScript, MITM代理, Monero, Node.js, POC, Stratum协议, 加密货币挖矿, 协议实现, 双向通信, 安全通信, 数据可视化, 数据封装, 概念验证, 消息传递, 矿池, 矿池代理, 网络安全, 自定义脚本, 隐写术, 隐私保护, 隐蔽通道