区块链私链如何变成公链?

如何通俗解释区块链?

“区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。 如果说蒸汽机释放了人们的生产力,电力解决了人们基本的生活需求,互联网彻底改变了信息传递的方式,那么区块链作为构造信任的机器,将可能彻底改变整个人类社会价值传递的方式。”

刚刚接触区块链,有太多太多需要了解和知道的基础知识,大家先不要着急,今天给大家科普这些知识。今天咱们一起先来看看公链、私链、联盟链以及侧链到底是什么吧。

一、 什么是区块链?

区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。其具有去中心化、公开透明、不可篡改、分布式存储、智能合约等特点。简言之,区块链就是一个分布式的公共账本技术。大家可以查看这个账本的内容,并参与账本的维护与更新。

二、 公链、私链和联盟链的区别

区块链根据去中心化的程度,可以分为公链、私链和联盟链。

公链——完全去中心化,所有用户都可以读取、写入;

联盟链——部分去中心化,写入参与者被提前筛选,读写权限由被选定的参与者们决定;

私链——部分去中心化,写入权限仅在一个组织手里,读写权限由该组织决定;

公链是完全去中心化的,链上数据都是公开透明的,不可更改,任何人都可以通过交易或挖矿读取和写入数据。其典型代表就是比特币区块链,在比特币区块链上,任何人都可以在其链上进行交易,并且查看链上的所有交易信息。比如说虎妞可以在链上查看自己BTC地址的转出、转入信息(具体操作请点击【实操指南】充值提现迟迟未到账,别着急);大家也可以看到中本聪是否有从他的BTC地址中提取比特币(前提是知道中本聪的BTC地址)。

联盟链是部分去中心化的,其开放程度和去中心化程度是有所限制的。其参与者是被提前筛选出来或者直接指定的,数据库的读取权限可能是公开的,也可能像写入权限一样只限于系统的参与者。前阵子用于日韩国际汇款及日本本国银行间汇款的瑞波区块链,就是一个联盟链。它为加入联盟的金融机构提供跨境支付服务,只有该联盟内的成员,获得多数联盟成员的同意后,才有资格在其链上写入数据。同时,其链上数据是对所有人开放,还是对一部分人开放,也由其联盟决定。

私链跟联盟链类似,其开放程度和去中心化程度是有所限制的,其读写权,记账权由组织决定。与联盟链最大的不同在于,联盟链是为一个联盟,比如一个行业服务的;而私链则是为一个组织,比如一家公司内部服务。据每日新闻最新的报道,日本最大的金融机构——三菱UFJ集团打算发行自己的代币(MUFG),用以解决电子货币转账在不经过银行的情况下,转账金额不能超过100万日元(约6万多RMB)的问题。在该场景中,三菱UFJ集团使用的就是为公司内部服务的私链。

三、 侧链

“侧链”从严格上来说,其本身并不是区块链,可以理解为区块链的一种扩展协议。早期“侧链”是为了解决比特币区块链技术的限制问题,先锁定主链上的资产,然后将锁定的那部分资产在侧链上做参数修改(如修改,并进行自由交易和转换。例如修改10分钟记一次账、区块大小1M限制等,赋予侧链上自己的交易定义。

当前闪电网络就是基于侧链技术做了些扩展,达到快速转账和交易的目的。接下来简单介绍下闪电网络是怎么运作的。

若AB经常交易,就可以在AB间建立一个含有2个比特币的通道,AB各发送1个比特币到多重签名地址,然后将这些币暂时锁在主链上。

只要AB为交易签名,这两个币就可以在双方中免费发来发去。能免费的原因是这2个比特币根本没有移动,只是在区块链之外,交易了币的所有权。当最后关闭通道时,交易才会被写到区块链上,双方就可以拿到属于自己的那部分币。

在闪电网络上,不是建立通道的AB之间转账时,比如说 A支付给没有建立通道的D时,可以通过就近的节点传播,从A➡B➡C➡D,A只需要支付小额的手续费给B、C即可。如果BC之间已经建立通道了的话,又可以省掉一笔手续费。需要注意的是,如果在主链上操作这个步骤,需要全网所有节点同步这个信息,其手续费就要高很多,速度也会慢很多;而在闪电网络上,因为只需要传播ABCD这几个节点,所以速度会快很多,手续费也会便宜很多。

简单归纳下侧链的特性:

1. 侧链是一种扩展协议,为了解决主链(如比特币区块链)技术的限制问题;

2. 一般先锁定主链上的资产,然后将锁定的那部分资产在侧链上做参数修改;

3. 用以实现低手续费、高转账速度等目的。

区块链私链如何变成公链?

共识算法系列之一:私链的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

区块链三大公链是什么?

区块链的三大公链指的是BTC,ETH,ADA

区块链公链也被称之为区块链共有链,公链的意思就是说任何人都可以在任何时间读取系统中的数据,公链往往都是完全去中心化的,这样的特点让所有人和机构都不能控制或是篡改链上的数据。

拓展资料:

区块链是一个信息技术领域的术语。从本质上讲,它是一个共享数据库,存储于其中的数据或信息,具有“不可伪造”“全程留痕”“可以追溯”“公开透明”“集体维护”等特征。基于这些特征,区块链技术奠定了坚实的“信任”基础,创造了可靠的“合作”机制,具有广阔的运用前景。

类型

1、公有区块链

公有区块链(Public Block Chains)是指:世界上任何个体或者团体都可以发送交易,且交易能够获得该区块链的有效确认,任何人都可以参与其共识过程。公有区块链是最早的区块链,也是应用最广泛的区块链,各大bitcoins系列的虚拟数字货币均基于公有区块链,世界上有且仅有一条该币种对应的区块链。

2、联合(行业)区块链

行业区块链(Consortium Block Chains):由某个群体内部指定多个预选的节点为记账人,每个块的生成由所有的预选节点共同决定(预选节点参与共识过程),其他接入节点可以参与交易,但不过问记账过程(本质上还是托管记账,只是变成分布式记账,预选节点的多少,如何决定每个块的记账者成为该区块链的主要风险点),其他任何人可以通过该区块链开放的API进行限定查询。

3、私有区块链

私有区块链(Private Block Chains):仅仅使用区块链的总账技术进行记账,可以是一个公司,也可以是个人,独享该区块链的写入权限,本链与其他的分布式存储方案没有太大区别。传统金融都是想实验尝试私有区块链,而公链的应用例如bitcoin已经工业化,私链的应用产品还在摸索当中。

区块链中的公链是什么?

公链也称“公有链”,即指全世界任何人都可以随时进入到系统中读取数据、发送可确认交易、竞争记账的区块链。公有链通常被认为是“完全去中心化”的,因为没有任何个人或者机构可以控制或篡改其中数据的读写。而从应用上说,区块链公有链则主要包括比特币、以太坊、超级账本、大多数山寨币以及智能合约,其中区块链公有链的始祖则为比特币区块链,具有以下特点:

1、代码开源

代码上传到github,每个人都可以通过下载得到完整的区块链数据,接受大众的考验。

2、完全去中心化

任何人都可以成为一个节点,每一个节点都是公开的,每个人都可以参与区块链的计算,任何节点都不是永久的,而是阶段性的,任何中心对节点都不具有强制性。任何人都可读取的、且能发送交易,而且交易能够在区块链上得到有效的确认,任何人都可参与其中共识过程。共识过程决定某个区块可以添加到区块链中,以及确切的当前状态。每个人都可以从中得到经济奖励,和在共识过程中所作的贡献成正比。这些公有链通常被认为是“完全意义上的去中心化”。

3、开发去中心化应用

程序开发者通过此公链,可以很方便地开发出去中心化应用。公有链可以保护用户权益免受程序开发者的影响。

区块链的链分类

前两天有朋友微信上问了许多关于区块链的一些问题,其中一个问题就是区块链的这个链怎么去分类。区块链目前可以分为四类:公链,私链,联盟链以及侧链。北京木奇移动技术有限公司,专业的区块链外包开发公司,欢迎洽谈合作。下面带大家了解区块链这几个链各自的特点以及如何应用,希望对大家有所帮助。

1.公链——人人可参与

公链是指任何人都可读取的、任何人都能发送交易且交易能获得有效确认的、任何人都能参与其中共识过程的区块链。

公链采取了采取工作量证明机制(POW)、权益证明机制(POS)、股份授权证明机制(DPOS)等方式,并将经济奖励和加密数字验证结合了起来,并建立一个原则就是每个人从中可获得的经济奖励与工作量成正比。这些区块链通常被认为是完全去中心化的。

特性:

1. 开源,由于整个系统的运作规则公开透明,这个系统是开源系统;2. 保护用户免受开发者的影响,在公有链中程序开发者无权干涉用户,所以区块链可以保护使用他们开发的程序的用户;3.访问门槛低,任何拥有足够技术能力的人都可以访问,也就是说,只要有一台能够联网的计算机就能够满足访问的条件;4.所有数据默认公开,尽管所有关联的参与者都隐藏自己的真实身份,这种现象十分的普遍。他们通过他们的公共性来产生自己的安全性,在这里每个参与者可以看到所有的账户余额和其所有的交易活动。

案例:公有链中有许多我们熟悉的身影:BTC, ETH, EOS, AE, ADA等

2.私链——权利掌握在少数人手里

私链是指其写入权限仅在一个组织手里的区块链。读取权限或者对外开放,或者被任意程度地进行了限制。相关的应用囊括数据库管理、审计、甚至一个公司,尽管在有些情况下希望它能有公共的可审计性,但在很多的情形下,公共的可读性并非是必须的。

特性:

1. 交易速度快,一个私链的交易速度可以比任何其他的区块链都快,甚至接近了并不是一个区块链的常规数据库的速度。这是因为就算少量的节点也都具有很高的信任度,并不需要每个节点来验证一个交易。2. 隐私性好,给隐私更好的保障私有链使得在那个区块链上的数据隐私政策像在另一个数据库中似的完全一致;不用处理访问权限和使用所有的老办法,但至少说,这个数据不会公开地被拥有网络连接的任何人获得。3.交易成本低交易成本大幅降低甚至为零私有链上可以进行完全免费或者至少说是非常廉价的交易。如果一个实体机构控制和处理所有的交易,那么他们就不再需要为工作而收取费用。

案例:Linux基金会、R3CEV Corda平台以及Gem Health网络的超级账本项目(Hyperledger project)或在开发或在使用私链。

3.联盟链——部分去中心化

联盟链开放程度和去中心化程度是有所限制的。其参与者是被提前筛选出来或者直接指定的,数据库的读取权限可能是公开的,也可能像写入权限一样只限于系统的参与者。

特性:

1. 交易成本低,交易只需被几个受信的高算力节点验证就可以了,而无需全网确认;2. 节点容易连接,若是出了问题,联盟链可以迅速通过人工干预来修复,并允许使用共识算法减少区块时间,从而更快完成交易;3.灵活,如果需要的话,运行私有区块链的共同体或公司可以很容易地修改该区块链的规则,还原交易,修改余额等。

案例:瑞波用于日韩国际汇款及日本本国银行间汇款建立了联盟链,同时之前火过一阵子的迅雷链克也是一种半开放的联盟链。

4.侧链——拓展协议

侧链”从严格上来说,其本身并不是区块链,可以理解为区块链的一种扩展协议。早期“侧链”是为了解决比特币区块链技术的限制问题。侧链就像是一条条通路,将不同的区块链互相连接在一起,以实现区块链的扩展。侧链完全独立于比特币区块链,但是这两个账本之间能够“互相操作”,实现交互。

特性:

1. 独立性,侧链架构的好处是代码和数据独立,不增加主链的负担,避免数据过度膨胀。 侧链有独立的区块链,有独立的受托人或者说见证人,同时也有独立的节点网络,就是说一个侧链产生的区块只会在所有安装了该侧链的节点之间进行广播。2.灵活性,侧链所有的区块链参数是可以定制的,简单的比如区块间隔、区块奖励、交易费的去向等,高级用户还可以修改共识算法。

案例:LSK, RDN, ARDR等币种是利用的侧链技术。

对于目前整个数字货币领域而言,今年可能仍然是底层公有链项目的竞争大赛,原因是目前公链作为区块链的基础设施还是存在明显的不足,尚且无法实现真正的安全、可靠和高效。这也明显制约着整个区块链产业的发展。

什么是公链

公链也称“公有链”,而公有链是指全世界任何人都可读取、发送交易且交易能获得有效确认的、也可以参与其中共识过程的区块链。根据区块链网络中心化程度的不同,分化出3种不同应用场景下的区块链:

1、全网公开,无用户授权机制的区块链,称为公有链;

2、允许授权的节点加人网络,可根据权限查看信息,往往被用于机构间的区块链,称为联盟链或行业链;

3、所有网络中的节点都掌握在一家机构手中,称为私有链。

扩展资料:

根据区块链网络中心化程度的不同,分化出3种不同应用场景下的区块链:

(1)全网公开,无用户授权机制的区块链,称为公有链;

(2)允许授权的节点加人网络,可根据权限查看信息,往往被用于机构间的区块链,称为联盟链或行业链;

(3)所有网络中的节点都掌握在一家机构手中,称为私有链。

联盟链和私有链也统称为许可链,公有链称为非许可链。

参考资料来源:百度百科-公有链

以上内容为新媒号(sinv.com.cn)为大家提供!新媒号,坚持更新大家所需的区块链知识。希望您喜欢!

版权申明:新媒号所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,不声明或保证其内容的正确性,如发现本站有涉嫌抄袭侵权/违法违规的内容。请发送邮件至 k2#88.com(替换@) 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023-03-08 21:40
下一篇 2023-03-08 21:40

相关推荐

发表回复

登录后才能评论