如果出块节点需要账本,账本同步会成为新的性能瓶颈,账本存储也会影响 PoS 的去中心化。 是否有不需要账本就能验证余额的方式? 第一个思路转变:把查找账本的方式改为证明账本的方式。这需要借助于密码学来完成。 第二个思路转变:把证明账本状态的方式改为证明交易行为的方式,实现无状态和无需账本的记账。这需要借助于密码学来完成。 密码学的工具有很多,当有了目标后,需要根据应用需求选择和组合适当的工具形成方案,并对方案进行优化。 附:可聚合子向量承诺 在文章中我们用自然语言描述了 aSVC 的工作,如果你感兴趣,可以通过 aSVC 的 API 定义来更清晰地了解它。如下图所示:第一个红框是初始化时生成承诺 c,第二个红框是根据交易更新 c;第一个绿框是初始化时生成证明π(i),第二个绿框是根据交易更新π(i);蓝框是出块节点用 c 和π(i) 做验证。 在上述过程中,最核心的工作是根据交易引发的变动把旧的 c 变成新的 c,把旧的π(i) 变成新的π(i)。不但要能够完成更新,且这种更新的开销是可以被接受的,这是 aSVC 要解决的关键问题。我们以 c 的更新为例来介绍 aSVC 是如何做的。 如前文所述,c 承诺的是 V,从 c 到新 c,实际上就是从承诺 V 到承诺一个新的 V。对 V 来说,它是由一系列的点构成的,(地址 1,余额 1)是一个点,(地址 2,余额 2)是另一个点……(地址 100,余额 100)是第 100 个点。 借助于拉格朗日插值法,可以把这一系列的点变成一个多项式(该多项式代表的曲线经过所有这些点),这意味着可以把对一系列点的承诺变成对一个多项式的承诺;从 c 到新 c,也就等价于从承诺一个多项式到承诺另一个多项式。 而多项式有着各种神奇的属性,对多项式及多项式变换的承诺可以是小的、快速的。那么通过这种从点到多项式的转化,就可以把 c 的更新开销变为可接受的。 但这只是对 aSVC 方案思路的一个简单、片面的介绍,在该方案中还使用了诸多其他工具和方法,而且它依然在追求更好的设计。如果你想更多的了解它,可以去阅读原论文,其中的 3.1 节和 4.1 节是最有助于理解整篇论文的部分。 (责任编辑:admin) |