29 lines
4.5 KiB
Markdown
29 lines
4.5 KiB
Markdown
---
|
||
title: 同步
|
||
---
|
||
|
||
快速、可靠的同步是 Solana 实现超高吞吐量的最大原因。 同步到包含大量交易的传统区块链被称为区块。 通过在区块上同步,某笔交易只能在一个被称为“区块时间”的时间范围内完成。 工作量证明共识的区块时间通常非常大 \(~10分钟\) 才能最大限度地减少多个验证节点同时生成一个新有效区块的概率。 权益证明共识则不存在这样的限制,但它缺乏可靠的时间戳,验证节点无法决定进入区块的顺序。 最常见的做法是通过 [挂钟时间戳](https://en.bitcoin.it/wiki/Block_timestamp) 来标记每个区块。 由于时钟偏差和网络延迟的波动,时间戳只能保持一两小时的准确性。 要是该系统顺利运行,它们会增长区块时间,以便合理地确定每个区块上的中位时间戳总在不断增加。
|
||
|
||
Solana 采取了非常独特的做法,称为 _历史证明_ 或 _PoH_。 带有加密证明“时间戳”的领导节点能够证明自上次确认以来,确实已经过了一段时间。 所有哈希到证明中的数据肯定都是在证明之前发生的。 然后该节点将新区块分享给验证节点,它们能够验证这些证据。 区块可以按照任何顺序甚至延迟好几年才传到验证节点那里。 通过这种可靠的同步保证,Solana 能够将区块分解成更小的批量交易,称为 _条目(entries)_。 在达成任何共识之前,条目都会实时传输给验证节点。
|
||
|
||
在技术的角度,Solana 从来都没有发送 _区块_, 但是会使用这个词语来描述验证节点对条目进行投票,最终取得 _确认_。 这样,Solana 的确认时间就可以达到媲美两天苹果设备之间传输的速度。 当前的实现区块时间为 800 毫秒。
|
||
|
||
在这个模式下,条目很快就能传输到验证节点,因为领导节点可以将一组有效的交易归入条目。 验证节点早在投票其有效性之前就处理了这些条目。 以乐观的方式处理交易, 从收到最后一个条目到节点可以投票的期间,实际上不存在延迟。 如果对某个事件 **无法** 达成共识,节点只需要简单地回滚其状态。 这种优化处理技术早在 1981 年就发明了,被称为 [Optimistic Concurrency Control(最优同值控制)](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.65.4735)。 它也可以应用到区块链结构中,其中一个集群对代表整个账本的哈希进行投票,直到达到某个 _区块高度_。 Solana 通过使用最后一个条目的 PoH 哈希来轻松实现这一点。
|
||
|
||
## 与 VDF 的关系
|
||
|
||
Solana 在 2017 年 11 月首次介绍了历史证明技术在区块链中的使用。 次年 6 月, 斯坦福阐述了类似的技术,称为 [verifiable delay function(可验证延迟函数)](https://eprint.iacr.org/2018/601.pdf) 或简称为 _VDF_。
|
||
|
||
VDF 的一个优势是验证所需时间非常短。 Solana 验证其延迟函数的方法它与创建所需的时间成正比。 拆分超过 4000 个核心 GPU,它足以满足 Solana 的性能需要,但如果您请教上述论文的作者,他们可能会跟说 Solana 的方法在算法上很慢 \([因此](https://github.com/solana-labs/solana/issues/388)\),不应该叫作 VDF。 我们的观点是 VDF 一词应当指可证明的延迟方程,而不一定要满足某些性能特征。 在这个问题解决之前,Solana 很可能会继续在其特定的应用程序 VDF 使用 PoH 一词。
|
||
|
||
PoH 与 VDF 之间的另一个区别是,VDF 仅用于跟踪时间。 另一方面,PoH 的哈希区块链包括应用程序观察到的任何数据的哈希部分。 这些数据是一把双刃剑。 一方面,数据提供了“证明历史”――数据在哈希之后肯定是存在的。 另一方面,这意味着当数据被哈希的_时候_,应用程序可以通过更改它来操纵区块链。 因此,PoH 区块链并不是一个很好的随机数来源,但是没有这种数据的 VDF 却非常合适。 例如,Solana 的 [领导人轮换算法](synchronization.md#leader-rotation),只来源于 VDF _高度_ ,而不是该高度的哈希值。
|
||
|
||
## 与共识机制的关系
|
||
|
||
历史证明不是一个共识机制,它用于改进 Solana 权益证明共识的性能。 它还用于改进数据平面协议的性能。
|
||
|
||
## 关于历史证明的更多信息
|
||
|
||
- [水时钟类比](https://medium.com/solana-labs/proof-of-history-explained-by-a-water-clock-e682183417b8)
|
||
- [历史证明概述](https://medium.com/solana-labs/proof-of-history-a-clock-for-blockchain-cf47a61a9274)
|