从零开始学区块链(4)

摘要:
公共链PoW应该仍然是最佳选择。1.Paxos算法家族Lamport于1998年提出了Paxos协议,然后添加了几个Paxos的改进版本,形成了Paxo协议家族,而Paxos有一个共同点,即在工程上不容易实现。

转自:区块链大师

1. 传统分布式一致性算法和区块链共识过程的异同点

相同点:

  • Append only(只能增加)

  • 强调序列化

  • 少数服从多数原则

  • 分离覆盖的问题:即长链覆盖短链区块,多节点覆盖少数节点日志



不同点:

    • 传统分布式一致性算法大多不考虑拜占庭容错(Byzanetine Paxos除外),即假设所有节点只发生宕机、网络故障等非人为问题,并不考虑恶意节点篡改数据的问题;

    • 传统分布式一致性算法是面向日志(数据库)的,即更通用的情况,而区块链共识模型面向交易的,所以严格来说,传统分布式一致性算法应该处于区块链共识模型的下面一层。

2. 区块链共识模型与传统一致性算法的关系


考虑上面的不同点,结合私有链和行业链的性质,我们有:

  • 私有链:封闭生态的存储网络,所有节点都是可信任的,如某大型集团内部多数公司。

  • 行业链:半封闭生态的交易网络,存在对等的不信任节点,如房地产行业A、B、C、D公司。

  • 公有链:开放生态的交易网络,这层主要是为行业链和私有链提供全球交易网络。

由于私有链是封闭生态的存储网络,也就是说使用传统分布式一致性模型应该是最优的;

由于联盟行业链其半封闭半开放特性,使用Delegated Proof of XXX 是最优的,可以考虑以传统一致性算法作为基础加入拜占庭容错/安全防护机制进行改进。

公有链PoW应该仍然是最优的选择。

从零开始学区块链(4)第1张

传统分布式一致性算法介绍 

本文主要讨论主流的Paxos算法家族和Raft算法,这里抛砖引玉,网络上有关两者的资料非常丰富,大家可自行搜索查阅。

1. Paxos 算法家族

1998年Lamport提出Paxos算法,后续又增添多个改进版本的Paxos形成Paxos协议家族,且Paxos都有共同点是不容易工程实现。

  • Classic Paxos :LeaderLess,又名Basic Paxos,以下均为Paxos的变种,基于CAP定律,侧重了不同方向。

  • Cheap Paxos

  • Egalitarian Paxos : conflicts rare

  • Fast Paxos : Leader only when needed ,conflicts common

  • Multi-Paxos :Leader driven

  • Byzanetine Paxos



"Byzantine Paxos adds an extra message (Verify) which acts to distribute knowledge and verify the actions of the other processors".Lamport 在2011年的论文《Leaderless Byzanetine Paxos》中表示不清楚实践中是否有效,考虑Paxos本身实现的难度,此方案工程角度不是最优,但是系统角度应该是最好的。

本小节Ref:

Wikipedia_Paxos

Leaderless Byzanetine Paxos



2 Raft 算法

这是一个非常友好的算法,容易理解、实现,不过它是Strong Leadership的,也就是说,

任意包含Leader的时刻,Leader拥有完全记账权,如果此Leader节点是恶意的,后果不堪设想。

且leadership的一致性算法都有个通病,吞吐量受单个节点的限制,这点在Raft身上体现尤甚。

Raft算法简介:https://raft.github.io/

Raft算法动态演示:http://thesecretlivesofdata.com/raft/


3. 其他

VRR(Viewstamped Replication Revisited)
这也是一个基于leadership的一致性算法,相比上述其他算法,它的优点是延迟最小。



三、常见区块链共识模型介绍

转载自这里:https://bitsharestalk.org/index.php?topic=4031.0

这是DPoS的白皮书,主要介绍了DPos,但也囊括了其他共识模型的介绍。



免责声明:文章转载自《从零开始学区块链(4)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Web挖掘技术3.1Linux内核的配置和编译下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

CRC原理及其逆向分析方法

CRC原理及其逆向破解方法: 介绍: 这篇短文包含CRC原理介绍和其逆向分析方法,很多程序员和破解者不是很清楚了解CRC的工作原理,而且几乎没人知道如何逆向分析它的方法,事实上它是非常有用的.首先,这篇教程教你一般如何计算CRC,你可以将它用在数据代码保护中.第二,主要是介绍如何逆向分析CRC-32,你可以以此来分析程序中的CRC保护(象反病毒编码).当然有...

常见的聚类算法

常见的聚类算法 1. K-Means(K均值)聚类 算法步骤: (1) 首先我们选择一些类/组,并随机初始化它们各自的中心点。中心点是与每个数据点向量长度相同的位置。这需要我们提前预知类的数量(即中心点的数量)。 (2) 计算每个数据点到中心点的距离,数据点距离哪个中心点最近就划分到哪一类中。 (3) 计算每一类中中心点作为新的中心点。 (4) 重复以上步...

Go -- LFU类(缓存淘汰算法)(转)

1.LFU类 1.1.LFU 1.1.1.原理 LFU(LeastFrequentlyUsed)算法根据数据的历史访问频率来淘汰数据,其核心思想是“如果数据过去被访问多次,那么将来被访问的频率也更高”。 1.1.2.实现 LFU的每个数据块都有一个引用计数,所有数据块按照引用计数排序,具有相同引用计数的数据块则按照时间排序。 具体实现如下: 1.新加...

区块链的共识算法:整体介绍 及 分叉 的通俗讲解(一)

本文不做一般入门的区块链描述讲解。着重简述讲解: 区块链的分叉 共识算法 目录 前言 简单过一下区块链 通俗讲解共识 共识算法PoW 区块链分叉 硬分叉的出现 软分叉的出现 参考 前言 由于最近的开发工作是与以太坊公链相关的去中心化交易所,项目两个多月之久,对区块链相关的知识内容了解了一些,故择文以记录之,但求文字通俗易懂,无纰漏。因自...

【北邮人论坛帖子备份】【心得】关于找实习的一些准备

作者:Nroskill 时间:Wed Feb 27 00:16:18 2019 昨天在论坛发了几个内推的帖子,结果收到私信和邮件收了30+,大多数都是问该怎么准备找实习的,所以我把一些常见的问题的答案写了出来,也方便其他同学参考。 楼主今年研三,方向后台C++,上学期开学的时候其实写过一个帖子,内容是: 今天又收到一个学弟的咨询,因为之前也回复过一部分同学...

OpenCV图像旋转算法

采用最近邻插值算法的实现代码为:<span style="font-size:14px;">cv::Mat matSrc = cv::imread("lena.jpg", 2 | 4); if (matSrc.empty()) return; const double degree = 45; double angle = degre...