区块链与私链关系_区块链私有链行业链

小鼎阳 184 0

今天给各位分享区块链与私链关系的知识,其中也会对区块链私有链行业链进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

什么是“区块链”?

区块链有两个含义区块链与私链关系

1、区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术区块链与私链关系的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益区块链与私链关系的数学算法。

2、区块链是比特币的底层技术区块链与私链关系,像一个数据库账本区块链与私链关系,记载所有的交易记录。这项技术也因其安全、便捷的特性逐渐得到了银行与金融业的关注。

狭义来讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。

广义来讲,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式。

共识算法系列之一:私链的raft算法和联盟链的 pbft 算法

对数据顺序达成一致共识是很多共识算法要解决的本质问题

Fabic的pbft算法实现

现阶段的共识算法主要可以分成三大类:公链,联盟链和私链

私链,所有节点可信

联盟链,存在对等的不信任节点

私链:私链的共识算法即区块链这个概念还没普及时的传统分布式系统里的共识算法,比如 zookeeper 的 zab 协议,就是类 paxos 算法的一种。私链的适用环境一般是不考虑集群中存在作恶节点,只考虑因为系统或者网络原因导致的故障节点。

联盟链:联盟链中,经典的代表项目是 Hyperledger 组织下的 Fabric 项目, Fabric0.6 版本使用的就是 pbft 算法。联盟链的适用环境除了需要考虑集群中存在故障节点,还需要考虑集群中存在作恶节点。对于联盟链,每个新加入的节点都是需要验证和审核的。

公链:公链不仅需要考虑网络中存在故障节点,还需要考虑作恶节点,这一点和联盟链是类似的。和联盟链最大的区别就是,公链中的节点可以很自由的加入或者退出,不需要严格的验证和审核。

在公有链中用的最多的是pow算法和pos算法,这些算法都是参与者的利益直接相关,通过利益来制约节点诚实的工作,解决分布式系统中的拜占庭问题。拜占庭容错算法是一种状态机副本复制算法,通过节点间的多轮消息传递,网络内的所有诚实节点就可以达成一致的共识。

使用拜占庭容错算法不需要发行加密货币,但是只能用于私有链或者联盟链,需要对节点的加入进行权限控制;不能用于公有链,因为公有链中所有节点都可以随意加入退出,无法抵挡女巫攻击(sybil attack)

raft 算法包含三种角色,分别是:跟随者( follower ),候选人(candidate )和领导者( leader )。集群中的一个节点在某一时刻只能是这三种状态的其中一种,这三种角色是可以随着时间和条件的变化而互相转换的。

raft 算法主要有两个过程:一个过程是领导者选举,另一个过程是日志复制,其中日志复制过程会分记录日志和提交数据两个阶段。raft 算法支持最大的容错故障节点是(N-1)/2,其中 N 为 集群中总的节点数量。

国外有一个动画介绍raft算法介绍的很透彻,链接地址为: 。这个动画主要包含三部分内容,第一部分介绍简单版的领导者选举和日志复制的过程,第二部分内容介绍详细版的领导者选举和日志复制的过程,第三部分内容介绍的是如果遇到网络分区(脑裂),raft 算法是如何恢复网络一致的。

pbft 算法的提出主要是为了解决拜占庭将军问题

要让这个问题有解,有一个 十分重要的前提 ,那就是 信道必须是可靠的 。如果信道不能保证可靠,那么拜占庭问题无解。关于信道可靠问题,会引出两军问题。两军问题的结论是,在一个不可靠的通信链路上试图通过通信以达成一致是基本不可能或者十分困难的。

拜占庭将军问题最早是由 Leslie Lamport 与另外两人在 1982 年发表的论文《The Byzantine Generals Problem 》提出的, 他证明了在将军总数大于 3f ,背叛者为f 或者更少时,忠诚的将军可以达成命令上的一致,即 3f+1=n 。算法复杂度为 o(n^(f+1)) 。而 Miguel Castro (卡斯特罗)和 Barbara Liskov (利斯科夫)在1999年发表的论文《 Practical Byzantine Fault Tolerance 》中首次提出 pbft 算法,该算法容错数量也满足 3f+1=n ,算法复杂度为 o(n^2)。

首先我们先来思考一个问题,为什么 pbft 算法的最大容错节点数量是(n-1)/3,而 raft 算法的最大容错节点数量是(n-1)/2 ?

对于raft算法,raft算法的的容错只支持容错故障节点,不支持容错作恶节点。什么是故障节点呢?就是节点因为系统繁忙、宕机或者网络问题等其它异常情况导致的无响应,出现这种情况的节点就是故障节点。那什么是作恶节点呢?作恶节点除了可以故意对集群的其它节点的请求无响应之外,还可以故意发送错误的数据,或者给不同的其它节点发送不同的数据,使整个集群的节点最终无法达成共识,这种节点就是作恶节点。

raft 算法只支持容错故障节点,假设集群总节点数为n,故障节点为 f ,根据小数服从多数的原则,集群里正常节点只需要比 f 个节点再多一个节点,即 f+1 个节点,正确节点的数量就会比故障节点数量多,那么集群就能达成共识。因此 raft 算法支持的最大容错节点数量是(n-1)/2。

对于 pbft 算法,因为 pbft 算法的除了需要支持容错故障节点之外,还需要支持容错作恶节点。假设集群节点数为 N,有问题的节点为 f。有问题的节点中,可以既是故障节点,也可以是作恶节点,或者只是故障节点或者只是作恶节点。那么会产生以下两种极端情况:

第一种情况,f 个有问题节点既是故障节点,又是作恶节点,那么根据小数服从多数的原则,集群里正常节点只需要比f个节点再多一个节点,即 f+1 个节点,确节点的数量就会比故障节点数量多,那么集群就能达成共识。也就是说这种情况支持的最大容错节点数量是 (n-1)/2。

第二种情况,故障节点和作恶节点都是不同的节点。那么就会有 f 个问题节点和 f 个故障节点,当发现节点是问题节点后,会被集群排除在外,剩下 f 个故障节点,那么根据小数服从多数的原则,集群里正常节点只需要比f个节点再多一个节点,即 f+1 个节点,确节点的数量就会比故障节点数量多,那么集群就能达成共识。所以,所有类型的节点数量加起来就是 f+1 个正确节点,f个故障节点和f个问题节点,即 3f+1=n。

结合上述两种情况,因此 pbft 算法支持的最大容错节点数量是(n-1)/3

pbft 算法的基本流程主要有以下四步:

客户端发送请求给主节点

主节点广播请求给其它节点,节点执行 pbft 算法的三阶段共识流程。

节点处理完三阶段流程后,返回消息给客户端。

客户端收到来自 f+1 个节点的相同消息后,代表共识已经正确完成。

为什么收到 f+1 个节点的相同消息后就代表共识已经正确完成?从上一小节的推导里可知,无论是最好的情况还是最坏的情况,如果客户端收到 f+1 个节点的相同消息,那么就代表有足够多的正确节点已全部达成共识并处理完毕了。

3.算法核心三阶段流程

算法的核心三个阶段分别是 pre-prepare 阶段(预准备阶段),prepare 阶段(准备阶段), commit 阶段(提交阶段)

流程的对比上,对于 leader 选举这块, raft 算法本质是谁快谁当选,而 pbft 算法是按编号依次轮流做主节点。对于共识过程和重选 leader 机制这块,为了更形象的描述这两个算法,接下来会把 raft 和 pbft 的共识过程比喻成一个团队是如何执行命令的过程,从这个角度去理解 raft 算法和 pbft 的区别。

一个团队一定会有一个老大和普通成员。对于 raft 算法,共识过程就是:只要老大还没挂,老大说什么,我们(团队普通成员)就做什么,坚决执行。那什么时候重新老大呢?只有当老大挂了才重选老大,不然生是老大的人,死是老大的鬼。

对于 pbft 算法,共识过程就是:老大向我发送命令时,当我认为老大的命令是有问题时,我会拒绝执行。就算我认为老大的命令是对的,我还会问下团队的其它成员老大的命令是否是对的,只有大多数人 (2f+1) 都认为老大的命令是对的时候,我才会去执行命令。那什么时候重选老大呢?老大挂了当然要重选,如果大多数人都认为老大不称职或者有问题时,我们也会重新选择老大。

四、结语

raft 算法和 pbft 算法是私链和联盟链中经典的共识算法,本文主要介绍了 raft 和 pbft 算法的流程和区别。 raft 和 pbft 算法有两点根本区别:

raft 算法从节点不会拒绝主节点的请求,而 pbft 算法从节点在某些情况下会拒绝主节点的请求 ;

raft 算法只能容错故障节点,并且最大容错节点数为 (n-1)/2 ,而 pbft 算法能容错故障节点和作恶节点,最大容错节点数为 (n-1)/3 。

pbft算法是通过投票来达成共识,可以很好的解决包括分叉等问题的同时提升效率。但仅仅比较适合于联盟链私有链,因为两两节点之间通信量是O(n^2)(通过优化可以减少通信量),一般来说不能应用于超过100个节点。

pbft有解的前提是 信道必须是可靠的 ,存在的问题是 可扩展性(scalability)差

部分来自:

区块链在设计上就是为了BFT

大健康家区块链的应用应该使用公有链还是私有链

这取决于大健康家区块链的应用场景。如果需要更多的安全性和隐私性区块链与私链关系,那么私有链是更好的选择区块链与私链关系;如果需要更多的可扩展性和可信度区块链与私链关系,那么公有链是更好的选择。

区块链私钥、公钥和地址是什么关系?

区块链私钥,公钥和地址三者之间的关系是私钥生成公钥,公钥转化成为地址。所以私钥是最重要的。这三者之间是不可逆的,地址不能生成公钥,公钥也不能转化成为私钥。

首先先跟大家说明一下什么是私钥,私钥就是钱包根据密码学原理生成的一串字符,创建钱包时通过各种算法生成的随机数。私钥的作用相当于在区块链上的一个身份,你在区块链上的资半存储在你身份之中,也就是存储在你私钥身份下面的地址里,所以谁掌握了私钥,就掌握了在该身份下地址里的数字资产。私钥相当于银行卡密码,一定要离线保管好,防止被盗。

其次是公钥,公钥相当于就是区块链记账的一个交易记录,交易发生后记录入区块链中,是公开的,并且不可篡改,因为在区块链中,每发生一笔交易都要广播到区块中,大家进行记账。例如张三给王五买牛,现实生活中只是他们两人的事,牛的成交价格只要他们达成协议就可以成交了,跟全村人没有关系,他俩的交易记录由于没有公开所以不叫公钥。但在区块链中,张三给王五买牛的价格除了他们俩人达成协议以外,全村人都要进行记账,全村人记完账交易才完成,那么全村人所记的记录就叫公钥。

再次是区块链地址,它通常是由26至35个字符的字母和数字字符串组成,区块链地址主要来源于公钥,区块链地址相当于我们平时使用的银行卡卡号,是可以公开给任何人的,没有安全限制,主要作用就是用于接收和发送区块链上的数字资产。

区块链技术现在处于初期发展阶段,但因其具有去中心化、安全性、不可篡改等特性,今后的生活工作中可能会产生杀手级别的落地应用而备受各国重视。本文仅供参考,欢迎留言讨论。

公有链,私有链与联盟链有何不同

根据用户需求和场景应用不同,区块链分为公有链(Public Blockchain)、私有链(Private Blockchain)以及联盟链(Consortium Blockchain)三大类。

公有链去中心化程度。这种以比特币以及以太坊为代表的公有区块链,不受第三方机构控制,世界上所有的人都可读取链上的数据记录、参与交易以及竞争新区块的记账权等。

程序开发者无权干涉用户,各参与者(即节点)可自由加入以及退出网络,并按照意愿进行相关操作。

私有区块链则完全相反,该网络的写入权限由某个组织或者机构全权控制,数据读取权限受组织规定,要么对外开放、要么具有一定程度的访问限制。

简单来说,可以将其理解为一个弱中心化或者多中心化的系统。由于参与节点具有严格限制且少;与公有链相比,私有链达成共识的时间相对较短、交易速度更快、效率更高、成本更低。

而联盟链则是介于公有链以及私有链之间的区块链,可实现“部分去中心化”。

链上各个节点通常有与之相对应的实体机构或者组织;参与者通过授权加入网络并组成利益相关联盟,共同维护区块链运行。

从某种程度上来说,联盟链也属于私有链的范畴,只是私有化程度有所不同而已。为此其同样具有成本较低、效率较高的特点,适用于不同实体间的交易、结算等B2B交易。

总的来说,公有链的进入门槛最低,而私有链以及联盟链则在开放程度上有所限制。

金窝窝区块链技术中的私有链的特点是什么?

金窝窝分析区块链中私有链区块链与私链关系的几个特征有如下区块链与私链关系

1-交易速度快区块链与私链关系

2-为隐私提供更好区块链与私链关系的保障;

3-交易成本大幅降低甚至为零;

4-有利于保护其基本区块链与私链关系的产品或数据不被破坏。

区块链与私链关系的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于区块链私有链行业链、区块链与私链关系的信息别忘了在本站进行查找喔。

标签: #区块链与私链关系

  • 评论列表

留言评论