历史证明:区块链时钟

深度解析:Solana的核心创新
Solana是世界上性能最好的免证区块链。在Solana测试网的当前迭代中,当使用GPU运行时,由200个物理上不同的节点组成的网络支持每秒超过50,000个事务的持续吞吐量。要实现这一目标,需要实现一些优化和新技术,其结果是网络容量的突破,标志着区块链开发进入了一个新阶段。
有7项关键创新使得Solana网络成为可能:
历史证明 (POH):共识之前的时序;
Tower BFT:PBFT 的 PoH 优化版本;
Turbine:区块传播协议;
Gulf Stream :快速事务转发协议;
Pipeline VM :并行智能合约运行时;
Cloudbreak :水平缩放的帐户数据库;
复制器 :分布式帐本存储
分布式系统中最困难的问题之一是时间协议。事实上,一些人认为 Bitcoin的共识机制算法最本质的功能是作为系统的分散时钟。在Solana,我们相信历史证明提供了这个解决方案,并在此基础上构建了一个区块链。
去中心化网络通过可信的、集中的定时解决方案解决了这个问题。例如,谷歌的 Spanner在其数据中心之间使用同步原子钟。谷歌的工程师将这些时钟同步到非常高的精度,并不断地对他们进行维护。
在区块链这样的对抗性系统中,这个问题更加困难。网络中的节点不能信任消息中出现的外部时间源或任何时间戳。例如,Hashgraph使用“中值”时间戳解决了这个问题。网络所看到的每条消息都由网络的绝对多数进行签名和时间戳。消息的时间戳中值是Hashgraph所称的“公平”排序。每个消息都必须传输到系统中的绝对多数节点,然后在消息收集到足够的签名之后,需要将整个集合传播到整个网络。你可以想象,这真的很慢。
如果您可以简单地信任编码到消息中的时间戳呢?大量的分布式系统优化会突然出现在您的面前。如。
同步时钟很有趣,因为它们可以用来提高分布式算法的性能。它们使得用本地计算代替通信成为可能。”
— Liskov, B. 同步时钟在分布式系统中的实际应用
在我们的示例中,这意味着高吞吐量、高性能区块链
历史的证明(PoH)
如果您可以证明消息发生在事件之前和之后的某个时间点,而不是信任时间戳,该怎么办?当你用《纽约时报》的封面拍照时,你是在证明你的照片是在那份报纸出版后拍摄的,或者你有某种方式影响了《纽约时报》的出版。有了历史证明,您可以创建一个历史记录来证明某个事件在特定的时间点发生过。
历史的证明时间戳
历史的证明时间戳
历史证明是一个高频可验证的时滞函数。一个可验证的延迟函数需要特定数量的顺序步骤来评估,生成一个惟一的输出,该输出可以有效地公开验证。
我们的特定实现使用一个连续的抗预映像散列,该散列连续地运行自身,将前面的输出用作下一个输入。定期记录计数和当前的输出。
对于SHA256哈希函数,这个过程在使用 2¹²⁸ 内核进行非暴力攻击的情况下不能并行运行。
然后我们可以确定生成时每个计数器之间的实时性,并且每个计数器记录的顺序与实时的顺序相同。
时间上限
将消息记录到历史证明序列中
通过将数据的哈希值附加到前面生成的状态,可以将数据插入序列。状态、输入数据和计数都已发布。附加输入会导致所有未来的输出发生不可预测的变化。并行化仍然是不可能的,而且只要哈希函数是预映像和抗冲突的,就不可能创建一个在将来生成所需哈希的输入,或者创建具有相同哈希的替代历史。我们可以证明任意两个追加操作之间的时间间隔。我们可以证明数据是在添加之前创建的。正如我们所知,发表在《纽约时报》上的事件发生在该报纸出版之前。
时间下限
历史证明的时间下限
历史证明的输入可以追溯到历史本身的证明。反向引用可以作为带有用户签名的已签名消息的一部分插入,因此在没有用户私钥的情况下不能对它进行修改。这就像以《纽约时报》为背景拍照一样。因为这个消息包含0xdeadc0de散列,所以我们知道它是在创建了数据 510144806912之后生成的。
但是,由于这条消息也被插入到历史证明流中,就好像您以《纽约时报》为背景拍摄了一张照片,第二天《纽约时报》就发布了这张照片。我们知道这张照片的内容存在于某一天之前和之后。
验证
虽然所记录的序列只能在单个CPU内核上生成,但是可以并行地验证输出。
每个记录的切片都可以从开始到结束在单独的内核上进行验证,所需时间为1/(内核数量)。因此,一个拥有4000个核心的现代GPU可以在0.25毫秒内验证一秒。
ASICS
每个CPU不是都不一样吗?有些CPU比其他CPU快得多。您如何相信由SHA256循环生成的“时间”是准确的呢?
这个主题值得写一篇文章,但是长话短说,我们并不太关心一些CPU是否比其他CPU更快,以及ASIC是否比网络上可用的CPU更快。最重要的是ASIC的速度是有限的。
我们使用的是SHA256,多亏了Bitcoin,在使这个加密哈希函数快速方面已经有了重大的研究。这个功能是不可能通过使用更大面积的芯片加速,如 Look Up Table,或展开它而不影响时钟速度。英特尔和AMD都在发布的消费芯片,可以在1.75个周期内完成完整的SHA256。
正因为如此,我们非常确定自定义ASIC的速度不会比原来快100倍,更不用说1000倍了,而且可能都不会超过网络可用速度的30%。我们可以构造利用这个界限的协议,并且只允许攻击者进行非常有限的、容易检测到的和短暂的拒绝服务攻击机会。这在下一篇文章中将详细介绍!
代码
solana-labs/solana
solana — High Performance Blockchaingithub.com
如果你喜欢Rust和Cuda,并且想建立世界上最快的区块链,请联系我们hello@solana.com
Solana对历史证明的实现,以及Tower BFT、复制证明和Gulf Stream等创新,共同创造了世界上性能最好的区块链。Solana的测试网今天是实时的。您可以在http://explorer.solana.com/上看到它。出于成本考虑,我们只运行少数几个节点。但是,我们已经在许多实例上将它扩展到超过200个物理上不同的节点(不在共享硬件上),这些节点跨越了AWS、GCE和Azure上的23个数据中心,用于基准测试。
运行时今天运行正常,开发人员现在就可以在testnow上部署代码。开发人员现在可以在C语言中构建智能合约,我们正在积极地开发Rust工具链。Rust将成为Solana智能合约开发的旗舰语言。Rust工具链作为Solana Javascript SDK的一部分公开可用,我们正在进一步迭代软件开发工具包。
Solana将很快推出一个公开测试版,鼓励验证器通过Tour de SOL运行节点(类似于 Cosmos 的 Game of Stakes ),这向公众提出了一个挑战,即在测试Solana网络的极限的同时,还要为此获得令牌。