本文主要是介绍Solana白皮书中文翻译(1),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
作者:Anatoly Yakovenko(anatoly@solana.io)
翻译:tangenter.eth
摘要
本文提出了一种新的区块链架构,其基础是一种能够验证链上事件发生的先后顺序及时间间隔的新共识算法,称作工作历史证明(Proof of History,PoH)。PoH算法能够将不可信任的时间间隔数据打包为区块链账本——一种只允许添加数据的数据结构。与工作量证明(Proof of Work,PoW)和权益证明(Proof of Stake,PoS)这些原有的共识算法相比较,PoH可减少具备拜占庭容错机制(Byzantine Fault Tolerant)的复制状态机(Replicated State Machine)在传递信息时的开销,从而使传输时长降到秒级以下。与此同时,根据PoH账本能够保存时间间隔数据的特点,本文还提出了两种算法,首先是一种可从任意大小的分区恢复数据的PoS算法,其次是一种高效的复制证明算法(Proof of Replication,PoRep)。PoRep和PoH的组合能够抵御伪造区块链账本上时间(事件的排列顺序)和存储内容的欺诈行为。本文将展示,在速度为1Gbps的网络环境和当今的硬件条件下,该协议的每秒数据吞吐量(TPS)可以达到71万次。
1,引言
区块链技术的本质是具备容错性的复制状态机。目前可用的一系列公链并不依赖于时间,换句话说,它们的运行机制不假定参与者们能够各自维持完全相同的本地时间。区块链网络上的每个节点通常仅参考它们自己的时钟,对网络中其余参与者的时钟毫无了解。缺乏可信的时间来源导致无法使用时间戳来确定是否保留某条消息,因为不能保证网络中的每个参与者都做出相同的选择。这里介绍的PoH算法旨在创建具有可验证时间间隔数据(即消息和事件之间的间隔时长)的区块链账本。在预期中,网络上的每个节点都可以依靠账本上的时间间隔数据而不必完全信任其余节点。
2,内容概述
以下是本文剩余部分的内容:
第3节介绍本系统的总体设计;
第4节描述工作历史证明算法;
第5节描述摘要中提及的PoS算法;
第6节描述摘要中提及的高效PoRep算法;
第7节分析系统架构和性能限制;
第7.5节将描述一种适用于高性能GPU的智能合约引擎。
3,网络设计
如图一所示,在任何给定时间都有一个被指定为Leader的系统节点负责生成PoH序列,从而为整个网络提供具备一致性的可验证时间间隔数据。Leader节点还负责把用户发出的信息组织成有序序列,使系统中的其他节点可以高效处理这些信息,以最大限度地提高数据吞吐量。它对存储在RAM中的当前状态执行操作,然后将操作数据和终止状态的签名发布到被称作验证者的复制器节点。验证者在它们手中的状态副本上执行相同的操作,并公开计算出的终止状态签名作为确认。每次公开确认都将被共识算法用作确定状态的投票。
在未分片状态下的任何给定时间点,网络中都有且仅有一个Leader。每个验证者节点都具有与Leader节点相同的硬件能力,并且能够通过基于PoS算法的选举来成为Leader。选举的具体过程将在5.6小节中介绍。
由于CAP定理(CAP theorem)的存在,一致性在分片中的优先级几乎总是高于可用性。在分片较大的情况下,本文提出了一种从任意大小的分片恢复对网络的整体控制的机制。5.12小节对该机制进行了详细阐释。
4,工作历史证明
工作历史证明是一系列计算流程,它提供了确认两个事件之间的时间间隔的加密方法。由于它使用加密安全函数,所以无法从输入推测输出,必须完整执行算法才能得到输出。该函数在单个处理器上按顺序运行,将上一次的输出作为这一次的输入,并定期记录当前输出值以及被调用的总次数。接下来,通过在独立处理器上检查序列中的每个分段,输出值可以被外部计算机并行地重新计算和验证。数据(或者数据的哈希值)可附加在函数的状态上,从而将它添加到序列当中。当状态、索引或数据被添加到序列中时,一个时间戳将生成,它可以保证这些数据是在序列中的下一个哈希值生成之前创建的。该设计同时支持横向扩展,因为多个生成器可以通过将它们各自的状态混合到彼此的序列中来互相同步。横向扩展的具体方法将在4.4小节进行讨论。
4.1 具体描述
该系统按如下方式工作:对于一个不运行便无法预测其输出的加密哈希函数(例如SHA256,RIPEMD等哈希函数),我们从某个随机初始值开始运行此函数,并将每次运行的输出作为输入再次传递给同一函数,同时记录该函数被调用的次数和每次调用后的输出。选择的随机初始值可以是任何字符串,比如当天的《纽约时报》头版标题。如下所示:
PoH序列 | ||
---|---|---|
索引 | 操作 | 输出哈希值 |
1 | sha256(”随机初始值”) | hash1 |
这篇关于Solana白皮书中文翻译(1)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!