一种实验性的无服务器网络协议,用于在碎片化、低带宽网络中实现自主代理之间的弹性状态同步。基于 Merkle-CRDT 和 密码学身份 构建——无中心权威、无全局 DNS、始终可写。
| # | 版本 | 标题 | 链接 |
|---|---|---|---|
| 1 | v0.1.0 | Merkle-CRDT 协议(L1/L2) | ResearchGate |
| 2 | v0.2.0 | 认知层(L3) | ResearchGate |
| 3 | v0.3.0 | 相关性感知聚合(L3) | ResearchGate |
| 4 | v0.4.0 | 确定性语义拓扑(L3) | ResearchGate |
作者主页: ResearchGate · ResearchHub
| 层 | 版本 | 用途 |
|---|---|---|
| L1/L2 | v0.1.0 | Merkle-DAG CRDT、Ed25519 签名、Noise Protocol 传输、BFT 法定人数 |
| L3 | v0.2.0 | 认知层:整数对数几率、两遍信任传播、抗女巫攻击声誉 |
| L3 | v0.3.0 | 相关性感知聚合:针对相关传感器/LLM 的几何折扣 |
| L3 | v0.4.0 | 确定性语义拓扑:通过 256 位 SimHash 实现自主边生成 |
L3 v0.3.0 要求应用程序手动构建知识图谱(Supports/Contradicts 边)。v0.4.0 通过自主边生成消除了这一瓶颈:
QuantizedEmbedding([u64; 4])——一个在应用侧从规范嵌入模型计算出的 256 位 SimHash。max_k_nearest 上限将边密度限制为 O(N),防止信任传播爆炸。embedding_version: u32 为协议级模型升级隔离不相交的潜在空间。// Autonomous truth discovery: 10,000 claims → 50 ms scan, O(N) edges
// No floats. No coordination. No central authority.
let edges = auto_edge_generator.generate_edges(&epoch_claims);
L3 v0.2.0 假设所有证据来源在统计上独立(朴素贝叶斯)。当物理相关的传感器(例如,同一屋顶上的 100 个 IoT 设备)或语义相关的代理(例如,在同一数据集上微调的 LLM)报告一致的观察结果时,这会产生病态的过度自信。
v0.3.0 引入了 网格单元相关性折扣:
CorrelationCell(u64)——用于空间、语义或时间邻近性的离散坐标。discount_bps^rank / 10000^rank(默认 30%)。(temporal_grid, fingerprint, correlation_cell) 分桶,保证在完整集合上进行原子计算。correlation_cell: None 的声明行为与 v0.2.0 相同(零回归)。v0.5.0 中的破坏性变更。
correlation_cell: None不再意味着“独立、全权重”。隐瞒该字段曾严格有利——经测量,隐瞒比诚实披露多获得 70.3 倍收益,因此理性参与者从不声明单元,上述折扣被轻易选择退出。独立性现在必须被证实而非断言:未经验证的独立性受到限制,而由不同嵌入聚类支持的独立性仍以全权重累积。参见 新特性 下的 L3 部分以及aimp_node/tests/insider_asymmetry.rs。
// 100 co-located sensors, 70% confidence each:
// v0.2.0 (naive): 100 × 847 = 84,700 milli-log-odds → ~100% (hyper-confident)
// v0.3.0 (30%): 847 × Σ(0.3^i) ≈ 1,207 milli-log-odds → ~77% (realistic)
aimp_node/ Rust reference implementation (Cargo workspace member)
src/
crdt/ Merkle-DAG engine, actor model, arena allocator, quorum consensus
crypto/ Ed25519 identity, BLAKE3 hashing, zero-trust firewall
network/ UDP gossip, Noise Protocol XX sessions, per-peer rate limiting
protocol/ Wire format (MessagePack), typed payload enum
epistemic.rs L3 Epistemic Layer (v0.3.0): log-odds, trust propagation, correlation discounting
semantic_topology.rs L3 Semantic Topology (v0.4.0): SimHash embeddings, auto-edge generation
decision_engine.rs Pluggable deterministic decision engine (trait + rule engine + hot-reload)
error.rs Unified AimpError type hierarchy
dashboard/ Ratatui TUI
config.rs Dynamic configuration with validation
event/ Structured logging + Prometheus metrics (counters + histograms)
tests/ Integration tests
benches/ Criterion benchmarks
aimp_testbed/ Python SDK (aimp-client) + CLI tool + chaos testing
deploy/ Systemd service, Firecracker microVM, install script
formal/ TLA+ convergence + quorum safety + belief convergence specification
docs/ Paper 1 (Typst source + PDF)
v0.2.0/ Paper 2: Epistemic Layer (Typst source + PDF)
v0.3.0/ Paper 3: Correlation-Aware Aggregation (Typst source + PDF)
| 特性 | AIMP (Merkle-CRDT) | 传统 (Raft/Paxos) |
|---|---|---|
| 拓扑 | P2P 网格 / 去中心化 | 领导者 / 法定人数 |
| 可用性 | AP(始终可写) | CP(需要多数派) |
| 排序 | 因果(向量时钟) | 全序(顺序) |
| 完整性 | 密码学(Merkle-DAG) | 基于日志 |
| 硬件 | 边缘/IoT 优化 | 数据中心级 |
tokio::mpsc 实现零共享状态 CRDT 的 Actor 模型DecisionEngine trait,带 RuleEngine 实现aimp_rules.json 热重载规则(无需重启)Payload 枚举(编译时安全)/health 端点,带子检查和 HTTP 状态码SystemEvent 日志,带 TUI 仪表板AimpError 类型层次结构(不再使用 Box<dyn Error>)使用 Criterion 在 Apple Silicon(M 系列)上测量,单线程,fast-crypto 模式:
| 操作 | 时间 | 吞吐量 |
|---|---|---|
append_mutation(100 次操作) | 41.8 µs | ~2.4M 变更/秒 |
get_merkle_root(缓存) | 4.8 ns | O(1) |
| BLAKE3 哈希(1 KB) | 925 ns | ~1.08 GB/s |
| MessagePack 序列化 / 反序列化 | 204 / 210 ns | — |
| Ed25519 签名(ring) | 9.3 µs | ~108K 操作/秒 |
| Ed25519 验证 | 25.0 µs | ~40K 操作/秒 |
模拟 5 节点集群,带反熵同步(进程内,Apple Silicon):
| 场景 | 结果 |
|---|---|
| 吞吐量(5 节点 x 1000 变更,带 Ed25519 签名) | 96,289 变更/秒 |
| 收敛(5 个分歧节点,各 250 DAG) | 0.68 ms(1 轮同步) |
| 分区/合并(2 组,每组 30 变更,完全合并) | 0.21 ms |
| 加密热路径(每条消息签名 + 验证) | 45.0 µs → 最大 22K 消息/秒 |
| rate_limit=50/秒 时的加密预算 | 0.23% 利用率 |
在模拟丢包、延迟和分区下的收敛(5 节点,每节点 50 变更):
| 条件 | 已收敛 | 轮数 |
|---|---|---|
| 基线(0% 丢包) | 是 | 1 |
| 10% 丢包 | 是 | 2 |
| 30% 丢包 | 是 | 2 |
| 50% 丢包 | 是 | 2 |
| 20% 丢包 + 100ms 延迟 + 30ms 抖动 | 是 | 2 |
| 分区(10 轮)然后合并 | 是 | 1 |
| 分区(50 轮)然后以 20% 丢包合并 | 是 | 1 |
| 80% 丢包(压力) | 是 | 4 |
AIMP 在几轮反熵内可收敛至约 80% 丢包,优雅降级。
Docker ARM64 Linux,带 RPi 级资源限制: