概述
TrustMesh 是一种基于涌现动力学的共识架构。其目标是使整个网络在每一轮中最终收敛于一个单一提案。任何节点都可以提出提案,通过局部交互和动态收敛,网络会选择一个唯一的提案。在整个过程中,任何节点都不需要了解任何全局信息;区块之间互不引用,节点完全基于局部信息做出反应。
当前的概念验证 (PoC) 表明,即使在随机分配信誉的对抗性条件下,该系统仍然展现出清晰的吸引子并能可靠地收敛。PoC 实现可在此处获取: TrustMesh
核心概念
圆形的
在 TrustMesh 中,轮次是完整共识过程的基本单元。TrustMesh 有意不规定轮次必须如何推进。(在概念验证阶段,轮次的推进由固定的时间窗口驱动,以确保可观察性。)
如果不需要强一致性,则各轮迭代可以并行执行。每一轮最终都会产生有效的历史记录(即,永远不会被剪枝或丢弃的共识结果)。在这种语义模型中,不存在需要解决或剪枝的分支。
名声
信誉是 TrustMesh 的核心概念,系统的安全性直接依赖于它。信誉存储在每个节点的本地观察信誉表 (LORT)中,并且必须绑定到可验证的身份(例如,公钥)。虽然使用了“信誉”一词,但它并不代表主观声望。为了防止信誉演变为全球权威,TrustMesh 强制执行以下设计约束:
本地隐私
节点的信誉表不得与任何外部方共享、广播、复制或导出。仅观测推导
所有信誉值必须完全来自节点自身直接观察到的行为,而不是从第三方推荐或外部信誉信息源导入。以目标为导向的规则构建
信誉更新规则必须根据网络的具体用途和服务模型来定义。
共识过程
1. 提案生成
在每一轮开始时,节点构建并广播提案。节点不会对自己的提案进行评分,因为自评分无法提供任何有意义的信息,反而会引入攻击面。然而,系统需要一个初始扰动;否则,所有提案的得分都将保持为零。
因此,接收节点可以应用一个可配置的基础分数,这在概念上等同于假设提议者为其自己的提议分配一个初始分数。(在概念验证中,这通过允许提议者使用不可变值进行自我评分和自我签名而得到简化;这可以无损地映射回基础分数机制。)
每个节点在每一轮中都可以提出有效的提案。TrustMesh 完全消除了领导者和投票者之间的区别:所有节点都拥有提案权和提案评分权。
2. 提案接收与评分
节点收到提案后,会检查其签名集,并根据其本地信誉表对每个评分签名应用信誉权重稀释(未知节点的权重为零)。所有稀释后的分数之和即为该节点此时针对该提案的本地得分。
该评分过程完全依赖于本地信息,不需要任何全局视角。
在当前的概念验证中,采用线性加权。请参考以下本地信誉表:
| 姓名 | 名声 | 分数 |
|---|---|---|
| 节点A | 2677 | 500 |
| NodeB | 7906 | 1000 |
| NodeC | 3845 | 490 |
总声誉值为:
2677 + 7906 + 3845 = 14428由此得到的权重和加权贡献率为:
| 姓名 | 重量 | 加权分数 |
|---|---|---|
| 节点A | 2677 / 14428 ≈ 0.19 | 500 × 0.19 = 95 |
| NodeB | 7906 / 14428 ≈ 0.55 | 1000 × 0.55 = 550 |
| NodeC | 3845 / 14428 ≈ 0.27 | 490 × 0.27 = 132.3 |
最终得到的本地得分是:
95 + 550 + 132.3 = 777.3然后,该节点将自身的评分签名添加到提案中并进行广播。其他节点独立地重复相同的过程。
在PoC评分模型中,局部提议得分理论上是单调递增的。缺失的签名贡献为零。得分必须为非负数。对于同一个提议,节点只接受大于或等于其先前得分的更新;低于先前得分的更新将被视为过时并被忽略。根据这些规则,签名集的增长和更新只能增加或保持局部得分不变。
3. 最终同步与终止
当网络高度收敛且仅存在微小的视角偏差时(在概念验证中,这由一个固定的时间窗口决定),选择局部得分最高的提议作为获胜提议并存储。这是最简单的终止方式。
由于局部视角差异,某些节点可能仍然会选择不同的获胜者。最终的同步机制可以消除这种残余偏差。为了更好地观察自然收敛过程,该机制并未在概念验证中实现,仅供理论参考。
在最终同步阶段,每个节点广播一个本地获胜者,并停止评分。节点收集来自其他节点的获胜者公告,并使用本地权重对其进行排名,排名中排除自身先前选择的获胜者。如果排名第一的获胜者发生变化,则会广播更新后的公告。一旦排名稳定,排名第一的方案即被最终确定并存储。
实验结果
下图展示了在随机信誉、30 个节点、每轮 60 秒、平均 8 个邻居节点的情况下,经过 31 轮测试的 PoC 结果。每个节点每轮提交一个提案,信誉在每轮开始时重新随机化。
平均而言,30 个节点中有 26.61 个(88.7%)收敛到同一个提议。
这是仅使用本地信息实现的,没有同步投票或全球链式结构。在所有轮次中,获胜者的支持者人数都超过了其他所有提案支持者的总和。
这表明优势和多数统治地位得到了显著放大。即使多个方案同时存在,最终的获胜者也保持着压倒性的优势。
少数派聚类仅形成局部稳定点,不会破坏全局收敛。之前使用 21 个节点进行的实验表明,在相同的参数下,收敛概率较低。
这表明,随着网络规模的增长,TrustMesh 的稳定性可能会提高。
常问问题
问:TrustMesh 与 RAG 式共识系统类似吗?
答:不。TrustMesh 与 RAG、 IOTA和类似系统有着根本的不同。
RAG 和大多数基于 DAG 的系统旨在实现近似正确性和概率最优性。它们允许存在许多并行候选分支,但最终必须解决并丢弃其中很大一部分,从而产生实际的网络开销。
在 TrustMesh 中,每一轮都是一个完整且独立有效的共识过程。并行执行不会产生可剪枝的分支;每一轮都能产生可用的共识结果。
问:攻击者能否通过女巫身份积累声誉,然后将其“销毁”以进行攻击?
答:TrustMesh 从两个方面缓解了这个问题。
首先,声誉的提升与实际努力密切相关。
声誉完全是局部的;节点无法观察或控制任何全局声誉值。要想在众多节点上获得高声誉,行为者必须与许多独立的对等节点进行长期、持续且真实的互动。女巫身份无法通过自我肯定或内部循环快速提升声誉。声誉衰减机制(例如,基于时间的不活跃衰减)可能会进一步限制女巫身份的长期积累。
其次,声誉的影响力被有意削弱而不是增强。
声誉仅作为归一化权重参与计算。随着节点本地声誉表的增长,任何单个高声誉节点的边际影响力都会逐渐被稀释。与权益不同,声誉不赋予任何直接的领导权或决策权;它仅仅加速收敛并抑制女巫噪声。
因此,TrustMesh 中的声誉很难积累,也不可能转化为一次性攻击能力。
问:TrustMesh 如何处理双重支付?
答:这项工作侧重于不一致共识系统,而不是货币账簿。
在公证、执行结果选择或参数协议等场景中,跨轮重复包含是无害的且可去重的,因此不会出现双重支付的情况。
原则上,TrustMesh 可以通过额外的有效性检查来强制执行强一致性,但这需要全局排序或仲裁,破坏并行性,因此超出了范围。
对于货币系统而言,单一的线性历史记录仍然是一种高效且合理的设计。任何试图并行化交易状态的尝试最终都会通过仲裁或可信时间戳重新引入代价高昂的全局共识。强一致性是一种稀缺且成本高昂的资源,应尽可能减少其使用,并将其与不一致的执行层解耦。
问:TrustMesh能否快速惩罚恶意行为?
答:是的——比基于权益的系统更灵活。
因为声誉与金钱无关,所以其贬值规则可能更加敏感。
对于可通过密码学方法证明的不当行为(例如,同一轮中提交两次提案),节点可以广播证据。其他节点独立验证证据,并在本地降低违规节点的信誉值。无需全局惩罚、同步惩罚或系统回滚,从而保持并行性和推进进程。
征集参与者
如果您认为 TrustMesh 值得进一步研究,请帮助改进它。
这包括提出批评意见、提出理论挑战、进行实验复现、贡献代码,或者仅仅是与他人分享想法。
TrustMesh 仍处于探索阶段,其发展依赖于严谨的讨论和集体的努力。
邮箱: yangzhixun-@outlook.com
GitHub 代码库: GitHub - BinGo-Lab-Team/TrustMesh:TrustMesh:共识作为涌现,安全源于行为


