μ译林——【NIST区块链技术综述】系列连载06

in #cn5 years ago

翻译:子轩 校对:Neo MA

2018年8月,美国国家标准与技术研究院(NIST)发布了"Blockchain Technology Overview"一文,较为全面、客观地梳理了区块链技术。文章颇具价值,μNEST将其译成中文,以飨读者,并用十期进行系列连载。本期为系列连载的第六期,继续介绍三种区块链共识模型:轮询调度共识模型、权威证明/身份证明共识模型(PoA/PoI)、消逝时间证明共识模型(PoET),并结合上期内容对几种共识模型进行了比较。最后,提出账本冲突的概念及其解决方法。

4.3轮询调度共识模型

轮询调度共识模型被用在一些许可链网络中。该共识模型中各节点轮流创建新区块。在分布式的系统架构中轮询调度共识历史悠久。为了解决各节点轮流出块时某一节点失灵的情况,系统会设置一个出块的时间限制以保证其他节点的正常运转,而失灵的节点并不会阻碍整个链的新区块的创建。这保证了没有一个节点能够生成大多数的区块。该共识模型的优势在于方法简单直接,不用解答密码学的难题,对算力要求也很低。

轮询调度需要各节点间的信任,因此不适用于绝大多数加密货币所使用的公链。恶意节点会持续新增节点以增加创建新块的几率。最坏的情况是,他们甚至可以摧毁现有区块链网络的正常运行。

4.4权威证明/身份证明(PoA/PoI)共识模型

权威证明共识模型依赖出块节点之间一定程度的信任,这和他们在现实世界中的身份信息是关联的。各出块节点在区块链网络中的身份信息必须是已证明和可查验的(例如,已被验证过的身份证件被记录在区块链中),因为出块节点是在用其身份或信誉作担保来发布新块。区块链网络用户根据出块节点的行为可直接影响他们的声誉。用户们不认同的行为会让出块节点的信誉降低;相反,被认同的行为会令他们信誉增加。信誉越低,创建区块的几率越小。因此对出块节点来说,保持良好的信誉很有必要。需要注意的是,该共识模型仅适用于高互信水平的许可链中。

4.5消逝时间证明(PoET)共识模型

在PoET共识模型中,出块节点向各自的计算机系统请求一个由安全硬件生成的等待时间。安全硬件时间源(secure hardware time source)生成一个随机的等待时间并将其返回到出块节点软件上。出块节点接收到分配的随机时间并在这段时间内处于休眠状态。一旦出块节点从休眠状态中醒来,就可以生成新区块并向网络中发布,提醒其他节点有新块的出现。任何处于休眠状态的节点均停止等待,然后重复上述整个过程。

该模型需要确保等待时间的随机性,以防恶意的出块节点用最短默认等待时间出块从而控制系统。同时,该共识模型要求每个出块节点等够实际时长而不要提早开始。这些要求可以通过在一些计算机处理器的可信执行环境(TEE)中执行相应软件来满足(例如英特尔的SGX系列处理器,AMD的平台安全处理器(PSP),或是ARM的TrustZone)。

经验证的可信软件可以在安全执行环境中运行而不会被外部程序篡改。出块节点可以向安全环境中运行的软件查询随机时间并耐心等过这段时间。在等够被分配的时间后,出块节点可以申请签名凭证作为已满足等待要求的证明。出块节点发布区块时会附上该签名凭证。

4.6共识模型对比矩阵
表格.png

4.7账本冲突及解决方法

如上文所讨论,一些区块链可能会出现多个区块在大致相同的时间被创建。这会导致在一些特定的时候出现某一区块链存在不同版本的情况,这个问题必须被快速解决以保证区块链网络内的一致性。本小节我们将讨论几种常见的处理方式。

在分布式网络中,有些系统会出现滞后于信息或出现替代信息的情况,这取决于节点间的网络延迟与节点群之间的距离。考虑到开放程度和参与竞争的出块节点的数量,公链网络中更易出现冲突。区块链网络中的共识在很大程度是用来解决数据冲突的。

举例来说:

节点a生成了区块n-A,其中包含了第1、2、3个交易记录,并向其他节点扩散。

节点b生成了区块n-B,其中包含了第1、2、4个交易记录,并向其他节点扩散。

这时,冲突出现了。

新块n的发布将在网络中出现分歧,因为:

区块A包含第3个交易但不包含第4个交易。

区块B包含第4个交易但不包含第3个交易。

冲突会导致不同区块链版本的短暂性存在,如图4所示。这些不同的版本并不是错的,相反它们都包含了每个出块节点所获得的信息。相互竞争的区块各自包含不同的交易,因此区块A上的交易记录或许见证了并未发生在区块B中数字资产的转移。如果该区块链网络用加密货币进行交易,那么就可能出现部分加密货币同时处于已用和未用两种状态,这取决于哪个版本的区块链最终被认可。

图4:账本冲突.png
图4:账本冲突

冲突通常很快就会解决。依据接受“较长链”的原则,大部分区块链网络会等到下一个区块的发布,然后选择将那条链作为“官方认证的”区块链。如图5所示,由于接纳了下一个有效区块,包含区块B的链成为了“官方认证的”链。任何记录在区块A(现在成了孤块)但未出现在区块B中的交易被悬置,并返回到悬置的交易池中(用来存放所有未被纳入区块的交易)。由于并不存在一个中心服务器,这些悬置的交易将被保存在各个本地节点中。

图5.png
图5:包含区块B的链上添加了下一个区块,包含区块A的链则被放弃了

由于存在区块被重写的可能性,因此直到另外几个区块在包含相关交易记录的区块之后相继生成,交易通常才会被认为是已确认的。由于区块是可被替代的,因此对某个区块的接受是概率性的而非确定性的。越多区块创建在已发布的节点后,初始区块被重写的可能性就越低。

理论上,在基于PoW的区块链网络中,如果一个节点拥有足够强大的算力,就可以从创始区块开始并创造了一条比现存更长的链,由此抹去链上所有历史记录。由于需要消耗巨大的资源,这种情况在现实中并不会发生。同时,一些区块链将较早的特定区块上锁,通过创建检查点的方式保证上述情形不会发生。

联系我们

homepage.png
Homepage:iotee.io

facebook.png
Facebook:NESTchain

twitter.png
Twitter:@miuNEST

telegram.png
Telegram:@miuNEST

reddit.png
Reddit:r/miuNEST

medium.png
Medium:r/miuNEST

steemit.png
Steemit:μNEST

公众号二维码.png
微信公众号二维码

扫码添加小助手.gif

Coin Marketplace

STEEM 0.28
TRX 0.13
JST 0.032
BTC 63041.44
ETH 2985.81
USDT 1.00
SBD 3.61