{"content":{"title":"历史证明 POH：区块链的时钟","body":"## 对 Solana 核心创新的高层次解释\r\n\r\n![](https://img.learnblockchain.cn/attachments/migrate/1736299460308)\r\n\r\nSolana 是世界上性能最强的无许可区块链。在当前的 Solana 测试网版本中，由 200 个物理独立节点组成的网络在运行 GPU 时能够支持每秒超过 50,000 笔交易的持续吞吐量。要实现这一点，需要实施多项优化和新技术，结果是网络容量的突破，标志着区块链发展的新阶段。\r\n\r\n## 使 Solana 网络成为可能的 8 项关键创新：\r\n\r\n*   [**历史证明（POH）**](https://medium.com/solana-labs/proof-of-history-a-clock-for-blockchain-cf47a61a9274) — 一种共识前的时钟；\r\n*   [**塔式拜占庭容错（Tower BFT）**](https://medium.com/solana-labs/tower-bft-solanas-high-performance-implementation-of-pbft-464725911e79) — 一种 POH 优化版的 PBFT；\r\n*   [**Turbine**](https://medium.com/solana-labs/turbine-solanas-block-propagation-protocol-solves-the-scalability-trilemma-2ddba46a51db) — 一种区块传播协议；\r\n*   [**Gulf Stream**](https://medium.com/solana-labs/gulf-stream-solanas-mempool-less-transaction-forwarding-protocol-d342e72186ad) — 无内存池的交易转发协议；\r\n*   [**Sealevel**](https://medium.com/solana-labs/sealevel-parallel-processing-thousands-of-smart-contracts-d814b378192) — 并行智能合约运行时；\r\n*   [**Pipelining **](https://solana.com/pipelining-in-solana-the-transaction-processing-unit/) — 用于验证优化的交易处理单元\r\n*   [**云崩（Cloudbreak）**](https://medium.com/solana-labs/cloudbreak-solanas-horizontally-scaled-state-architecture-9a86679dcbb1) — 水平扩展的账户数据库；以及\r\n*   [**复制者（Replicators）**](https://medium.com/solana-labs/replicators-solanas-solution-to-petabytes-of-blockchain-data-storage-ef79db053fa1) — 分布式账本存储\r\n\r\n\r\n分布式系统中最困难的问题之一是时间的一致性。事实上，有人[争辩](https://grisha.org/blog/2018/01/23/explaining-proof-of-work/)比特币的工作量证明算法最*基本*的特征是作为系统的去中心化时钟。在 [Solana](https://solana.com/?utm_source=medium&utm_campaign=proof_of_history)，我们相信**历史证明**提供了解决方案，我们在此基础上建立了一个区块链。\r\n\r\n去中心化网络通过可信的中心化时间解决方案解决了这个问题。例如， [谷歌的 Spanner](https://static.googleusercontent.com/media/research.google.com/en//archive/spanner-osdi2012.pdf) 在其数据中心之间使用同步原子时钟。谷歌的工程师将这些时钟同步到非常高的精度并不断维护。\r\n\r\n在像区块链这样的对抗性系统中，这个问题更加棘手。网络中的节点不能信任外部时间源或消息中出现的任何时间戳。[Hashgraph](https://www.hederahashgraph.com/) 例如，通过“中位数”时间戳解决了这个问题。网络看到的每条消息由超大多数节点签名和时间戳。消息的中位数时间戳是 Hashgraph 所称之为的“公平”排序。每条消息必须传递给系统中超大多数节点，然后在消息收集到足够的签名后，整个集合需要传播到整个网络。正如你所想象的，这真的很*慢*。\r\n\r\n如果你可以简单地信任编码在消息中的时间戳会怎么样？大量的分布式系统优化将突然可以使用。比如：\r\n\r\n> “同步时钟很有趣，因为它们可以用来提高分布式算法的性能。它们使得可以通过本地计算代替通信。”\r\n> \r\n> — [Liskov, B.分布式系统中同步时钟的实际使用](http://www.dainf.cefetpr.br/~tacla/SDII/PracticalUseOfClocks.pdf)\r\n\r\n在我们的案例中，这意味着一个高吞吐量，高性能的区块链\r\n\r\n# 历史证明\r\n\r\n如果你可以证明消息发生在某个事件之前和之后，而不是信任时间戳，会怎么样？当你用《纽约时报》的封面拍照时，你便创造了一个证明，证明你的照片是在那份报纸发布之后拍摄的，或者你有某种方式影响《纽约时报》的出版。通过历史证明，你可以创建一个历史记录，证明某个事件在特定时间发生。\r\n\r\n![](https://img.learnblockchain.cn/attachments/migrate/1736299460426 \"历史证明时间戳\")\r\n\r\n\r\n\r\n历史证明是一个高频[可验证延迟函数](https://www.youtube.com/watch?v=qUoagL7OZ1k) 。可验证延迟函数需要特定数量的顺序步骤进行评估，但产生一个可以高效且公开验证的唯一输出。\r\n\r\n我们具体的实现使用了一个顺序的抗预映像哈希，它不断地在自身上运行，前一个输出用作下一个输入。定期记录计数和当前输出。\r\n\r\n对于 SHA256 哈希函数，这个过程无法并行化，除非通过使用 2¹²⁸个核心进行暴力破解。\r\n\r\n因此，我们可以确定，每次生成的计数之间实际时间已经过去，并且每个计数记录的顺序与现实时间中是相同的。\r\n\r\n## 时间的上限\r\n\r\n![](https://img.learnblockchain.cn/attachments/migrate/1736299460431)\r\n\r\n将消息记录到历史证明序列中\r\n\r\n数据可以通过将数据的哈希附加到上一个生成的状态来插入到序列中。**状态**、**输入数据**和**计数**都会被公开。附加输入会导致所有未来的输出发生不可预测的变化。它仍然是无法并行化的，只要哈希函数具有抗预映像性和碰撞性，就无法创建一个能够在未来生成所需哈希值的输入，或创建具有相同哈希值的替代历史。我们可以证明，在任何两个附加操作之间经过了时间。我们可以证明，数据是在附加之前某个时间创建的。就像我们知道《纽约时报》中发布的事件发生在报纸编写之前。\r\n\r\n## 时间的下限\r\n\r\n![](https://img.learnblockchain.cn/attachments/migrate/1736299460440)\r\n\r\n具有历史证明的时间下限\r\n\r\n输入到历史证明中的内容可以有对历史证明本身的引用。回溯引用可以作为用户签名的签名消息的一部分插入，因此在没有用户私钥的情况下无法修改。这就像在背景中拍摄《纽约时报》报纸的照片一样。因为这条消息包含**0xdeadc0de**哈希，我们知道它是在计数**510144806912**创建之后生成的。\r\n\r\n但由于该消息也被插入到历史证明流中，就好像你在背景中拍摄《纽约时报》的照片，第二天《纽约时报》发布了那张照片。我们知道这张照片的内容在特定日期之前和之后存在。\r\n\r\n\r\n## 验证\r\n\r\n虽然记录的序列只能在单个 CPU 核心上生成，但输出可以并行验证。\r\n\r\n![](https://img.learnblockchain.cn/attachments/migrate/1736299461359)\r\n\r\n并行验证\r\n\r\n每个记录的切片可以在单独的核心上从头到尾进行验证，所需时间为生成所需时间的 1/(核心数量)。因此，现代 GPU（具有 4000 个核心）可以在 0.25 毫秒内验证一秒钟的数据。\r\n\r\n## ASICs\r\n\r\n每个 CPU 不是都不同吗，有些比其他的快得多？我们如何信任由 SHA256 循环生成的“时间”是准确的？\r\n\r\n这个话题值得单独写一篇文章，但长话短说，我们并不太在乎某些 CPU 比其他的快，如果 ASIC 比网络上可用的 CPU 快更是如此。最重要的是，ASIC 的速度有一个有限的界限。\r\n\r\n我们使用 SHA256，得益于比特币，已经进行了大量研究以使这个加密哈希函数变得快速。通过使用更大的芯片面积（如查找表）或展开它而不影响时钟速度，无法加速此函数。英特尔和 AMD 都在发布可以在 1.75 个周期内完成 SHA256 完整轮次的消费级芯片。\r\n\r\n因此，我们可以相当确定自定义 ASIC 不会快 100 倍，更不用说 1000 倍，最有可能的是在网络可用速度的 30%以内。我们可以构建利用这个界限的协议，只允许攻击者有一个非常有限、易于检测且短暂的拒绝服务攻击机会。更多内容将在下一篇文章中讨论！\r\n\r\n原文：https://medium.com/solana-labs/proof-of-history-a-clock-for-blockchain-cf47a61a9274"},"author":{"user":"https://learnblockchain.cn/people/25120","address":null},"history":"bafkreid7k2xgvm5ix4h2da6km4xk5te4kc4xykjkfhubcbw5hze44hrgnm","timestamp":1736303592,"version":1}